:root {
  /* families live in fonts.css: --font-sans, --font-mono */

  /* ---------- Size ramp (1.26 ratio, editorial) ---------- */
  --text-2xs: 10px;
  --text-xs: 11px;
  --text-sm: 13px;
  --text-base: 15px;
  --text-md: 17px;
  --text-lg: 21px;
  --text-xl: 27px;
  --text-2xl: 34px;
  --text-3xl: 44px;
  --text-4xl: 58px;
  --text-5xl: 76px;
  --text-6xl: 104px;

  /* ---------- Weight ---------- */
  --weight-light: 300;
  --weight-regular: 400;
  --weight-medium: 500;
  --weight-semibold: 600;
  --weight-bold: 700;

  /* ---------- Leading ---------- */
  --leading-tight: 1;
  --leading-display: 1.04;
  --leading-heading: 1.14;
  --leading-snug: 1.35;
  --leading-body: 1.55;
  --leading-loose: 1.7;

  /* ---------- Tracking. Display tightens, mono labels open up ---------- */
  --tracking-display: -0.032em;
  --tracking-heading: -0.018em;
  --tracking-normal: -0.006em;
  --tracking-wide: 0.02em;
  --tracking-label: 0.09em; /* mono caps labels + indices */

  /* ---------- Composite roles ---------- */
  --type-display: var(--weight-medium) var(--text-5xl) / var(--leading-display) var(--font-sans);
  --type-h1: var(--weight-medium) var(--text-3xl) / var(--leading-heading) var(--font-sans);
  --type-h2: var(--weight-medium) var(--text-2xl) / var(--leading-heading) var(--font-sans);
  --type-h3: var(--weight-medium) var(--text-xl) / var(--leading-snug) var(--font-sans);
  --type-h4: var(--weight-semibold) var(--text-md) / var(--leading-snug) var(--font-sans);
  --type-lead: var(--weight-regular) var(--text-lg) / var(--leading-snug) var(--font-sans);
  --type-body: var(--weight-regular) var(--text-base) / var(--leading-body) var(--font-sans);
  --type-body-sm: var(--weight-regular) var(--text-sm) / var(--leading-body) var(--font-sans);
  --type-ui: var(--weight-medium) var(--text-sm) / 1.2 var(--font-sans);
  --type-mono: var(--weight-regular) var(--text-sm) / 1.45 var(--font-mono);
  --type-label: var(--weight-medium) var(--text-xs) / 1.1 var(--font-mono);
  --type-index: var(--weight-regular) var(--text-2xs) / 1 var(--font-mono);
}
