/* ============================================================ Pantograph — Typography tokens ------------------------------------------------------------ Two voices. Minimal, like the product: • Saira Condensed — THE primary face. Display, headings, UI, body, prose, eyebrows, scale numerals. Tall and narrow; reads as engraved instrument lettering. • IBM Plex Mono — code, terminals, the panto CLI, tabular numerals, anything "machine". --font-sans / --font-serif / --font-display all resolve to Saira Condensed, so role tokens and existing components keep working while the system runs on a single primary face. ============================================================ */ :root { /* Families — one primary face, one mono */ --font-primary: 'Saira Condensed', 'Arial Narrow', sans-serif; --font-mono: 'IBM Plex Mono', ui-monospace, 'SF Mono', Menlo, monospace; /* Aliases — all point at the primary face (legacy role names) */ --font-display: var(--font-primary); --font-sans: var(--font-primary); --font-serif: var(--font-primary); /* Type scale (1.250 major-third, rooted at 16px) */ --text-2xs: 0.6875rem; /* 11px — tick labels, legal */ --text-xs: 0.75rem; /* 12px — captions, eyebrows */ --text-sm: 0.875rem; /* 14px — secondary UI text */ --text-base: 1rem; /* 16px — body */ --text-md: 1.125rem; /* 18px — lead paragraph */ --text-lg: 1.375rem; /* 22px — h4 / card titles */ --text-xl: 1.75rem; /* 28px — h3 */ --text-2xl: 2.25rem; /* 36px — h2 */ --text-3xl: 3rem; /* 48px — h1 */ --text-4xl: 4rem; /* 64px — display */ --text-5xl: 5.5rem; /* 88px — hero display */ /* Weights */ --weight-regular: 400; --weight-medium: 500; --weight-semibold: 600; --weight-bold: 700; /* Line heights */ --leading-tight: 1.05; /* display */ --leading-snug: 1.25; /* headings */ --leading-normal: 1.5; /* UI / sans body */ --leading-relaxed: 1.7; /* serif prose */ --leading-mono: 1.6; /* code */ /* Letter spacing */ --tracking-label: 0.14em; /* ALL-CAPS engraved labels */ --tracking-tight: -0.01em; /* large display */ --tracking-normal: 0; /* ---- Semantic roles ---- */ --role-display: var(--weight-bold) var(--text-4xl)/var(--leading-tight) var(--font-display); --role-h1: var(--weight-bold) var(--text-3xl)/var(--leading-snug) var(--font-display); --role-h2: var(--weight-semibold) var(--text-2xl)/var(--leading-snug) var(--font-sans); --role-h3: var(--weight-semibold) var(--text-xl)/var(--leading-snug) var(--font-sans); --role-body: var(--weight-regular) var(--text-base)/var(--leading-normal) var(--font-sans); --role-prose: var(--weight-regular) var(--text-md)/var(--leading-relaxed) var(--font-primary); --role-code: var(--weight-regular) var(--text-sm)/var(--leading-mono) var(--font-mono); --role-label: var(--weight-semibold) var(--text-xs)/1 var(--font-display); }