:root{
/* ---- Families. Three roles, no overlap. ---- */
--font-display:'Montserrat',system-ui,-apple-system,'Segoe UI',sans-serif;
--font-body:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
--font-mono:'IBM Plex Mono',ui-monospace,Menlo,Consolas,monospace;

/* ---- Weights. Montserrat ships 500 and 600 only — there is no ExtraLight,
   Light, or ExtraBold in the locked pairing. Plex ships 400/500/600. ---- */
--fw-regular:400; /* @kind font */
--fw-medium:500; /* @kind font */
--fw-semibold:600; /* @kind font */

/* ---- Roles. Each names its face, weight, size, tracking. ---- */
/* Display — Montserrat SemiBold, 40-64px, tracking -2%.
   Negative tracking is what makes Montserrat read premium rather than default. */
--type-display:clamp(40px,4.5vw,64px);
--ls-display:-0.024em; /* @kind font */
--lh-display:1.05; /* @kind font */

/* Subhead — Montserrat Medium/SemiBold, 20-30px, tracking -1%.
   MONTSERRAT STOPS HERE. */
--type-h2:clamp(24px,2.9vw,32px);
--type-h3:20px;
--type-h4:16.5px;
--ls-heading:-0.012em; /* @kind font */
--lh-heading:1.12; /* @kind font */

/* Text / long-form — IBM Plex Sans, 16-18px, line-height 1.6, tracking 0.
   Max 68 characters per line. Never tracked. Never Montserrat. */
--type-body-lg:18px;
--type-body:16.5px;
--type-body-sm:14.5px;
--type-caption:13px;
--ls-body:0em; /* @kind font */
--lh-body:1.62; /* @kind font */
--measure-max:68ch; /* @kind spacing */

/* Eyebrow / label — IBM Plex Mono 500, uppercase, 10-12px, tracking +14%.
   THE ONLY PLACE WIDE TRACKING IS ALLOWED. Fixes finding 08. */
--type-eyebrow:11px;
--type-label:10.5px;
--ls-eyebrow:0.14em; /* @kind font */
--ls-label:0.16em; /* @kind font */

/* Data / figures — IBM Plex Mono 400-500, 12-15px, tabular numerals. */
--type-data:13px;
--type-data-lg:15px;
--numeric-tabular:tabular-nums; /* @kind font */
}
