/* ==========================================================================
   SETTINGS · TYPOGRAPHY — the type contract. The invariant rule of the system:
   SERIF SPEAKS · GROTESQUE LABELS · MONO COUNTS. Newsreader is the reading
   voice, Hanken Grotesk the furniture, IBM Plex Mono every figure that means
   something. Body ~19px / 1.65 with oldstyle, tabular-where-it-counts figures.
   ========================================================================== */

:root {
  /* — Families (self-hosted in 03-generic, with robust system fallbacks) — */
  --font-serif:     'Newsreader', Georgia, 'Times New Roman', 'Iowan Old Style', serif;
  --font-grotesque: 'Hanken Grotesk', system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
  --font-mono:      'IBM Plex Mono', ui-monospace, 'SFMono-Regular', Menlo, Consolas, 'Liberation Mono', monospace;

  /* Semantic roles — components ask for the JOB, not the family */
  --font-reading:   var(--font-serif);     /* the long column, titles, prose */
  --font-furniture: var(--font-grotesque); /* kickers, nav, captions, labels */
  --font-data:      var(--font-mono);       /* numerals, scores, indices, ISO */

  /* — Type scale (19px reading base; rem-relative; headings fluid) — */
  --text-3xs:  0.6875rem; /* 11px — figure numbers, serials, fine print */
  --text-2xs:  0.75rem;   /* 12px — small-caps kickers, captions */
  --text-xs:   0.8125rem; /* 13px — furniture, table data, footnotes */
  --text-sm:   0.9375rem; /* 15px — secondary prose, metadata */
  --text-base: 1.1875rem; /* 19px — the reading column */
  --text-md:   1.375rem;  /* 22px — standfirst / lead, h4 */
  --text-lg:   1.75rem;   /* 28px — h3 */
  --text-xl:   clamp(2rem, 1.4rem + 2.4vw, 2.5rem);   /* h2 */
  --text-2xl:  clamp(2.6rem, 1.7rem + 3.6vw, 3.4rem); /* h1 */
  --text-3xl:  clamp(3rem, 1.6rem + 5.4vw, 4.75rem);  /* masthead title */

  /* — Line height — */
  --leading-solid:   1;
  --leading-tight:   1.12;  /* display titles */
  --leading-snug:    1.28;  /* sub-heads, standfirst */
  --leading-normal:  1.45;  /* furniture, tables */
  --leading-relaxed: 1.65;  /* the reading body — the sacred measure */

  /* — Weight (Newsreader & Hanken Grotesk both variable) — */
  --weight-light:    300;
  --weight-regular:  400;
  --weight-medium:   500;
  --weight-semibold: 600;
  --weight-bold:     700;

  /* — Tracking — small-caps furniture wants air; reading wants none — */
  --tracking-tight:     -0.012em;
  --tracking-normal:     0;
  --tracking-wide:       0.02em;
  --tracking-caps:       0.085em; /* the standard small-caps kicker */
  --tracking-caps-wide:  0.16em;  /* masthead issue line, mastheads */

  /* — OpenType feature sets (applied through --feat-* below) — */
  --feat-oldstyle:  'onum' 1, 'pnum' 1;            /* prose: oldstyle proportional */
  --feat-tabular:   'tnum' 1, 'lnum' 1;            /* data: tabular lining */
  --feat-smallcaps: 'smcp' 1, 'c2sc' 1, 'cpsp' 1;  /* true small caps where available */

  /* — Drop cap sizing (the versal) — */
  --dropcap-lines:  3;
  --dropcap-size:   3.4em;
}
