/* GENERATED from brand-tokens.json (meta.version 2.0.1) — DO NOT EDIT.
   Regenerate: python3 Design/build-tokens.py
   REOI design tokens — one stylesheet imported by both the report
   head fragment and the website, so the two cannot drift. */

:root {
  /* color */
  --color-ink: #16181D;
  --color-ink-muted: #4C525C;
  --color-ink-faint: #858B95;
  --color-paper: #FAF9F7;
  --color-surface: #FFFFFF;
  --color-surface-sunken: #F2F1ED;
  --color-rule: #E4E2DC;
  --color-rule-strong: #C9C6BE;
  --color-accent: #1E3050;
  --color-accent-dark: #16233B;
  --color-accent-tint: #EDF0F5;
  --color-brass: #9A7B3F;
  --color-on-accent: #FFFFFF;
  --color-on-accent-muted: #D5DEEC;
  --color-on-accent-label: #9FB0CC;
  --color-rule-on-accent: rgba(255, 255, 255, 0.16);
  --color-scrim: rgba(22, 24, 29, 0.45);
  --color-success: #2E7050;
  --color-warning: #9A6A16;
  --color-danger: #A32A1E;
  --color-danger-tint: #F7EAE8;

  /* type — families */
  --font-display: Newsreader, 'Source Serif 4', Georgia, serif;
  --font-display-pdf: Georgia, 'Times New Roman', serif;
  --font-report-body: 'Source Serif 4', Georgia, serif;
  --font-report-body-pdf: Georgia, serif;
  --font-ui-body: Mulish, 'Avenir Next', 'Segoe UI', Roboto, sans-serif;
  --font-mono: 'IBM Plex Mono', ui-monospace, Menlo, monospace;

  /* type — figures (tabular lining numerals wherever numbers align) */
  --font-features-figures: 'tnum' 1, 'lnum' 1;

  /* type — scale (1.25 ratio, 16px base) */
  --text-2xs-size: 10px;
  --text-2xs-line: 14px;
  --text-xs-size: 12px;
  --text-xs-line: 16px;
  --text-sm-size: 14px;
  --text-sm-line: 20px;
  --text-base-size: 16px;
  --text-base-line: 26px;
  --text-lg-size: 20px;
  --text-lg-line: 28px;
  --text-xl-size: 25px;
  --text-xl-line: 32px;
  --text-2xl-size: 31px;
  --text-2xl-line: 38px;
  --text-3xl-size: 39px;
  --text-3xl-line: 46px;

  /* type — dense data sizes (headline numerals, chart labels; size-only) */
  --data-hero-size: 23px;
  --data-hero-sm-size: 19px;
  --data-figure-size: 18px;
  --data-figure-sm-size: 17px;
  --data-unit-size: 15px;
  --data-unit-sm-size: 13px;
  --data-note-size: 11.5px;
  --data-note-sm-size: 10.5px;
  --data-label-size: 9.5px;
  --data-label-sm-size: 9px;
  --data-label-xs-size: 8.5px;
  --data-label-2xs-size: 7.5px;

  /* type — weight */
  --weight-regular: 400;
  --weight-medium: 500;
  --weight-semibold: 600;
  --weight-bold: 700;

  /* space (4px base) */
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 24px;
  --space-6: 32px;
  --space-7: 48px;
  --space-8: 64px;
  --space-9: 96px;

  /* radius (web only) */
  --radius-sm: 4px;
  --radius-md: 8px;
  --radius-lg: 12px;

  /* shadow (web only — sm cards, modal modals, focus ring) */
  --shadow-sm: 0 1px 2px rgba(22, 24, 29, 0.06), 0 1px 3px rgba(22, 24, 29, 0.08);
  --shadow-lift: 0 6px 16px rgba(22, 24, 29, 0.12), 0 2px 5px rgba(22, 24, 29, 0.08);
  --shadow-modal: 0 12px 32px rgba(22, 24, 29, 0.18), 0 4px 12px rgba(22, 24, 29, 0.10);
  --shadow-focus: 0 0 0 3px rgba(30, 48, 80, 0.28);
  --shadow-bar: 0 -2px 10px rgba(22, 24, 29, 0.10);
}

/* ---------- night mode ----------
   Two blocks, deliberately (global CLAUDE.md §9): the media query paints on
   the FIRST frame from the OS preference with no JavaScript, and the
   data-theme attribute overrides it in BOTH directions. Roles are identical
   to :root above — only the values change, so no component needs a dark rule
   unless its structure differs.
   SCREEN ONLY, deliberately: report PDFs render through the same tokens.css,
   and an operator whose Mac is in dark mode would otherwise print a
   near-black report. Paper has no theme. */

@media screen and (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --color-ink: #ECEEF2;
    --color-ink-muted: #A2AAB8;
    --color-ink-faint: #6B7484;
    --color-paper: #0E1117;
    --color-surface: #161A22;
    --color-surface-sunken: #1C2230;
    --color-rule: #252B37;
    --color-rule-strong: #333B4A;
    --color-accent: #93B0DE;
    --color-accent-dark: #B9CDEC;
    --color-accent-tint: #1B2434;
    --color-brass: #C7A45E;
    --color-on-accent: #0E1117;
    --color-on-accent-muted: #24314A;
    --color-on-accent-label: #2A3752;
    --color-rule-on-accent: rgba(255, 255, 255, 0.10);
    --color-scrim: rgba(0, 0, 0, 0.62);
    --color-success: #5FB489;
    --color-warning: #D2A24A;
    --color-danger: #E0796C;
    --color-danger-tint: #2C1815;
    --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.35), 0 1px 3px rgba(0, 0, 0, 0.45);
    --shadow-lift: 0 6px 16px rgba(0, 0, 0, 0.55), 0 2px 5px rgba(0, 0, 0, 0.45);
    --shadow-modal: 0 12px 32px rgba(0, 0, 0, 0.6), 0 4px 12px rgba(0, 0, 0, 0.5);
    --shadow-focus: 0 0 0 3px rgba(147, 176, 222, 0.35);
    --shadow-bar: 0 -2px 10px rgba(0, 0, 0, 0.45);
  }
}

:root[data-theme="dark"] {
  --color-ink: #ECEEF2;
  --color-ink-muted: #A2AAB8;
  --color-ink-faint: #6B7484;
  --color-paper: #0E1117;
  --color-surface: #161A22;
  --color-surface-sunken: #1C2230;
  --color-rule: #252B37;
  --color-rule-strong: #333B4A;
  --color-accent: #93B0DE;
  --color-accent-dark: #B9CDEC;
  --color-accent-tint: #1B2434;
  --color-brass: #C7A45E;
  --color-on-accent: #0E1117;
  --color-on-accent-muted: #24314A;
  --color-on-accent-label: #2A3752;
  --color-rule-on-accent: rgba(255, 255, 255, 0.10);
  --color-scrim: rgba(0, 0, 0, 0.62);
  --color-success: #5FB489;
  --color-warning: #D2A24A;
  --color-danger: #E0796C;
  --color-danger-tint: #2C1815;
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.35), 0 1px 3px rgba(0, 0, 0, 0.45);
  --shadow-lift: 0 6px 16px rgba(0, 0, 0, 0.55), 0 2px 5px rgba(0, 0, 0, 0.45);
  --shadow-modal: 0 12px 32px rgba(0, 0, 0, 0.6), 0 4px 12px rgba(0, 0, 0, 0.5);
  --shadow-focus: 0 0 0 3px rgba(147, 176, 222, 0.35);
  --shadow-bar: 0 -2px 10px rgba(0, 0, 0, 0.45);
}

/* ---------- paper wins ----------
   A page that stamps data-theme="dark" carries it into print too, so a
   report or brand guide rendered on a dark-mode machine would print
   near-black. Print re-asserts the day palette; there is no night on paper. */

@media print {
  :root[data-theme="dark"] {
    --color-ink: #16181D;
    --color-ink-muted: #4C525C;
    --color-ink-faint: #858B95;
    --color-paper: #FAF9F7;
    --color-surface: #FFFFFF;
    --color-surface-sunken: #F2F1ED;
    --color-rule: #E4E2DC;
    --color-rule-strong: #C9C6BE;
    --color-accent: #1E3050;
    --color-accent-dark: #16233B;
    --color-accent-tint: #EDF0F5;
    --color-brass: #9A7B3F;
    --color-on-accent: #FFFFFF;
    --color-on-accent-muted: #D5DEEC;
    --color-on-accent-label: #9FB0CC;
    --color-rule-on-accent: rgba(255, 255, 255, 0.16);
    --color-scrim: rgba(22, 24, 29, 0.45);
    --color-success: #2E7050;
    --color-warning: #9A6A16;
    --color-danger: #A32A1E;
    --color-danger-tint: #F7EAE8;
    --shadow-sm: 0 1px 2px rgba(22, 24, 29, 0.06), 0 1px 3px rgba(22, 24, 29, 0.08);
    --shadow-lift: 0 6px 16px rgba(22, 24, 29, 0.12), 0 2px 5px rgba(22, 24, 29, 0.08);
    --shadow-modal: 0 12px 32px rgba(22, 24, 29, 0.18), 0 4px 12px rgba(22, 24, 29, 0.10);
    --shadow-focus: 0 0 0 3px rgba(30, 48, 80, 0.28);
    --shadow-bar: 0 -2px 10px rgba(22, 24, 29, 0.10);
  }
}
