/* Single source of truth for design tokens — consolidates what were previously
 * 14 separate inline :root blocks (one per HTML page) that had already started
 * to drift. gm.html specifically had diverged onto its own --ink/--paper/--card
 * palette instead of the --navy/--gold/--gray system every other page uses, and
 * declared --gold twice in the same block (a real bug, not a style choice).
 * Every variable name below is preserved exactly as currently used across all
 * 14 pages, so linking this file and deleting each page's local :root block is
 * a text-identical, non-visual-breaking change — verify visually afterward
 * anyway, but nothing should move.
 * --text-*, --space-*, and --radius-* are new additions: nothing in the current
 * CSS references them yet (today's font-sizes and spacing are hardcoded pixel
 * values scattered inline). They exist for the redesign work to build on top of
 * — start using them in new/redesigned CSS, don't need to retrofit old CSS to
 * use them in this pass. */

/* What: one Google Fonts load for Fraunces + Geist (opsz / 400–600). */
@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600&family=Geist:wght@400;500;600&display=swap');

:root {
  /* Brand */
  --navy: #0F1F3D;
  --navy-mid: #1B3A6B;
  --navy-2: #13284B;
  --navy-light: #243F72;
  --gold: #C9A84C;
  --gold-light: #E8C96A;
  --gold-pale: #FBF6EA;
  --gold-soft: rgba(200,162,74,0.12);

  /* Surfaces */
  --cream: #FAFAF7;
  --paper: #F6F3EC;
  --white: #FFFFFF;
  --card: #FFFDF8;

  /* Neutrals */
  --gray-50:  #FAFAF9;
  --gray-100: #F5F5F3;
  --gray-200: #E8E8E5;
  --gray-300: #D8D8D3;
  --gray-400: #9A9A95;
  --gray-500: #73736E;
  --gray-600: #6B6B67;
  --gray-700: #454542;
  --gray-800: #2E2E2B;
  --gray-900: #1A1A18;
  --gray-light: #D8DDE5;

  /* Semantic status — the two naming systems that currently coexist (red/orange/
     amber/green vs. critical/high/medium/low) now point at the same underlying
     values instead of being two independently-maintained palettes */
  --red: #C0392B;
  --red-light: #FDECEA;
  --orange: #D35400;
  --orange-light: #FEF0E7;
  --amber: #B8860B;
  --amber-light: #FEF9E7;
  --green: #1A6B3C;
  --green-light: #E8F5ED;
  --overdue-bg: #fef2f2;
  --critical: #9C2F2F;
  --high: #B06B00;
  --medium: #39537A;
  --low: #4D7A5F;

  /* Borders / text */
  --line: rgba(15,31,61,0.12);
  --line-strong: rgba(15,31,61,0.2);
  --ink: oklch(0.24 0.02 262);
  --muted: #65708A;

  /* Semantic aliases (used by report.html/gm.html) */
  --color-border-tertiary: var(--gray-200);
  --color-background-primary: var(--white);
  --color-text-primary: var(--gray-900);
  --color-text-secondary: var(--gray-600);
  --color-text-tertiary: var(--gray-400);

  /* Layout — Chapter 1 v3 ink rail. Later pages inherit the shell. */
  --sidebar-w: 248px;

  /* ---- NEW: type scale — 6 steps, replaces ~18 ad hoc font-sizes ---- */
  --text-xs:   12px;  /* meta, timestamps, chip labels — the floor, nothing smaller */
  --text-sm:   14px;  /* secondary body text */
  --text-base: 16px;  /* default body */
  --text-lg:   20px;  /* card/section titles */
  --text-xl:   28px;  /* page headings */
  --text-2xl:  40px;  /* hero numbers only */
  --font-weight-regular: 400;
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;

  /* ---- NEW: spacing scale ---- */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 24px;
  --space-6: 32px;
  --space-8: 48px;

  /* ---- NEW: radius ---- */
  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 16px;

  /* ---- Chapter 1 v3: pale premium ivory + navy/blue/gold identity.
     Forest-green is retired. --navy stays #0F1F3D for WCAG rail contrast. ---- */
  --standing-ivory: oklch(0.977 0.012 88);
  --standing-paper: oklch(0.992 0.007 88);
  --brass: oklch(0.71 0.108 82);
  --observed: oklch(0.335 0.058 259);
  --modelled: oklch(0.52 0.06 248);
  --forecast: oklch(0.55 0.07 285);
  --scenario: oklch(0.6 0.06 320);
  --recommendation: oklch(0.6 0.1 80);
  --decision: oklch(0.4 0.06 292);
  --commitment: oklch(0.45 0.07 210);
  --outcome: oklch(0.45 0.09 150);
  --current: oklch(0.47 0.128 252);
  --positive: oklch(0.5 0.09 150);
  --caution: oklch(0.66 0.11 68);
  --held: oklch(0.55 0.045 258);
  --blocked: oklch(0.5 0.13 26);
  --hairline: rgba(15, 31, 61, 0.12);
  --focus-ring: 2px solid var(--gold);
  --radius-editorial: 8px;
  /* What: serif = Fraunces, sans = Geist; lining figures so "1" ≠ "I". */
  --font-serif: 'Fraunces', Georgia, serif;
  --font-sans: 'Geist', ui-sans-serif, system-ui, sans-serif;
}

/* What: lining + tabular nums on product surfaces that load tokens.css. */
body {
  font-variant-numeric: lining-nums;
}
.tabular-nums,
.exec-num {
  font-variant-numeric: lining-nums tabular-nums;
}
