/* ───────────────────────────────────────────────────────────
   Sonora · Typography
   Newsreader (humanist serif)  · display & headings
   IBM Plex Sans               · UI & body
   IBM Plex Mono               · data, numerals, tracked labels
   ─────────────────────────────────────────────────────────── */

:root {
  /* ── Families ─────────────────────────────────────────────── */
  /* Display/headings — Humanist Academic Gravitas (Harding / SFI register) */
  --font-serif: 'Source Serif 4', 'Iowan Old Style', Georgia, serif;
  /* Editorial italic voice — ledes, pull quotes, marginalia */
  --font-serif-editorial: 'Newsreader', 'Iowan Old Style', Georgia, serif;
  --font-sans:  'IBM Plex Sans', system-ui, -apple-system, sans-serif;
  --font-mono:  'IBM Plex Mono', ui-monospace, 'SFMono-Regular', Menlo, monospace;

  /* ── Type scale (px) — close-stepped for data density ─────── */
  --text-2xs:  11px;
  --text-xs:   12px;
  --text-sm:   13px;
  --text-base: 15px;
  --text-md:   17px;
  --text-lg:   20px;
  --text-xl:   25px;
  --text-2xl:  31px;
  --text-3xl:  39px;
  --text-4xl:  52px;
  --text-5xl:  68px;
  --text-6xl:  92px;

  /* ── Weights ──────────────────────────────────────────────── */
  --weight-regular: 400;
  --weight-medium:  500;
  --weight-semi:    600;
  --weight-bold:    700;

  /* ── Line heights ─────────────────────────────────────────── */
  --leading-solid:  1.0;
  --leading-tight:  1.12;
  --leading-snug:   1.28;
  --leading-normal: 1.5;
  --leading-relax:  1.65;

  /* ── Tracking ─────────────────────────────────────────────── */
  --tracking-tight:  -0.02em;
  --tracking-normal: 0;
  --tracking-wide:   0.04em;
  --tracking-label:  0.14em;  /* uppercase mono eyebrow labels */
  --tracking-mono:   0.01em;

  /* ── Semantic roles ───────────────────────────────────────── */
  --display-font:    var(--font-serif);
  --display-weight:  var(--weight-regular);
  --display-leading: var(--leading-tight);
  --display-tracking: var(--tracking-tight);

  --heading-font:    var(--font-serif);
  --heading-weight:  var(--weight-medium);

  --body-font:       var(--font-sans);
  --body-size:       var(--text-base);
  --body-leading:    var(--leading-relax);

  --label-font:      var(--font-mono);
  --label-size:      var(--text-2xs);
  --label-weight:    var(--weight-medium);
  --label-tracking:  var(--tracking-label);

  --data-font:       var(--font-mono);
  --data-tracking:   var(--tracking-mono);
}

/* ── Reusable utility roles ─────────────────────────────────── */
.son-eyebrow {
  font-family: var(--label-font);
  font-size: var(--label-size);
  font-weight: var(--label-weight);
  letter-spacing: var(--label-tracking);
  text-transform: uppercase;
  color: var(--text-muted);
}

.son-data {
  font-family: var(--data-font);
  letter-spacing: var(--data-tracking);
  font-variant-numeric: tabular-nums;
  font-feature-settings: 'tnum' 1, 'zero' 1;
}

/* Editorial italic — the Newsreader voice for ledes & pull quotes */
.son-editorial {
  font-family: var(--font-serif-editorial);
  font-style: italic;
  font-weight: 400;
  letter-spacing: 0;
}
