/* AUTOGENERATED by design/generate-tokens.mjs — DO NOT EDIT.
 * Source of truth: design/tokens.json
 * Regenerate: npm run tokens:build
 * Verified in CI by tests/unit/tokens-sync.test.ts */

/* ---------------------------------------------------------------------------
 * Theme-invariant tokens
 * ------------------------------------------------------------------------- */
:root {
  --palette-bone-0: #FCFAF5;
  --palette-bone-50: #F7F4EC;
  --palette-bone-100: #F0EBDD;
  --palette-bone-200: #E4DCC8;
  --palette-bone-300: #D2C8B0;
  --palette-bone-400: #B3A78C;
  --palette-bone-500: #8E8368;
  --palette-ink-300: #9AA3A0;
  --palette-ink-400: #7C8683;
  --palette-ink-500: #5A635F;
  --palette-ink-600: #3E4844;
  --palette-ink-700: #2A322F;
  --palette-ink-800: #1C2220;
  --palette-ink-900: #121615;
  --palette-ink-950: #0B0E0D;
  --palette-verdigris-100: #DCEFE8;
  --palette-verdigris-200: #B5DFD2;
  --palette-verdigris-400: #5FB79F;
  --palette-verdigris-500: #3E9280;
  --palette-verdigris-600: #2F7A69;
  --palette-verdigris-700: #1F6B58;
  --palette-verdigris-800: #0F5A4A;
  --palette-verdigris-900: #0A3F35;
  --palette-verdigris-950: #082B25;
  --palette-amber-100: #F8ECC6;
  --palette-amber-300: #E0B25C;
  --palette-amber-500: #B8860B;
  --palette-amber-600: #A9760A;
  --palette-amber-700: #96660A;
  --palette-amber-800: #8A4B00;
  --palette-amber-900: #6B4A0A;
  --palette-clay-300: #E8927F;
  --palette-clay-700: #A33A2A;
  --palette-clay-800: #8C2F22;
  --palette-slate-teal-300: #8FC3CB;
  --palette-slate-teal-700: #3C6E75;
  --palette-slate-teal-800: #2F585E;
  --palette-absolute-white: #FFFFFF;
  --palette-absolute-black: #000000;
  --font-display: Fraunces, 'Iowan Old Style', 'Palatino Linotype', Georgia, serif;
  --font-sans: 'IBM Plex Sans', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif;
  --font-mono: 'IBM Plex Mono', ui-monospace, 'SFMono-Regular', 'Cascadia Mono', Menlo, monospace;
  --text-2xs-size: 11px;
  --text-2xs-line: 16px;
  --text-xs-size: 12px;
  --text-xs-line: 18px;
  --text-sm-size: 13px;
  --text-sm-line: 20px;
  --text-base-size: 15px;
  --text-base-line: 24px;
  --text-md-size: 17px;
  --text-md-line: 26px;
  --text-lg-size: 21px;
  --text-lg-line: 30px;
  --text-xl-size: 26px;
  --text-xl-line: 34px;
  --text-2xl-size: 33px;
  --text-2xl-line: 40px;
  --display-sm-size: clamp(38px, 3.4vw, 46px);
  --display-sm-line: 1.08;
  --display-md-size: clamp(48px, 4.6vw, 64px);
  --display-md-line: 1.02;
  --display-lg-size: clamp(64px, 6.4vw, 88px);
  --display-lg-line: 0.98;
  --type-display-letter-spacing: -0.02em;
  --type-body-measure: 68ch;
  --type-allcaps-letter-spacing: 0.08em;
  --space-0: 2px;
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
  --space-7: 32px;
  --space-8: 40px;
  --space-9: 48px;
  --space-10: 64px;
  --space-11: 80px;
  --space-12: 96px;
  --space-13: 128px;
  --radius-none: 0;
  --radius-xs: 1px;
  --radius-sm: 2px;
  --radius-md: 3px;
  --radius-lg: 6px;
  --radius-full: 999px;
  --border-hairline: 1px;
  --border-strong: 1px;
  --border-keyline: 2px;
  --border-focus: 2px;
  --border-focus-offset: 2px;
  --dur-instant: 90ms;
  --dur-fast: 140ms;
  --dur-base: 200ms;
  --dur-slow: 320ms;
  --dur-overlay: 240ms;
  --dur-overlay-exit: 180ms;
  --dur-reveal: 420ms;
  --ease-out: cubic-bezier(.2,.8,.2,1);
  --ease-in-out: cubic-bezier(.4,0,.2,1);
  --ease-evidence: cubic-bezier(.16,1,.3,1);
  --elevation-overlay-shadow: 0 24px 56px -24px rgb(11 14 13 / .38);
  --elevation-overlay-scrim: rgb(11 14 13 / .52);
}

/* ---------------------------------------------------------------------------
 * Light theme (explicit default)
 * ------------------------------------------------------------------------- */
:root,
[data-theme="light"] {
  color-scheme: light;
  --color-surface-ground: #FCFAF5;
  --color-surface-plane: #FFFFFF;
  --color-surface-slab: #F7F4EC;
  --color-surface-inset: #F0EBDD;
  --color-surface-void: #121615;
  --color-text-primary: #0E1513;
  --color-text-secondary: #3B4743;
  --color-text-muted: #6B7671;
  --color-text-accent: #0F5A4A;
  --color-text-on-accent: #FFFFFF;
  --color-border-hairline: #E4DCC8;
  --color-border-keyline: #1F6B58;
  --color-border-strong: #8E8368;
  --color-accent: #0F5A4A;
  --color-accent-hover: #0A3F35;
  --color-accent-pressed: #082B25;
  --color-accent-focus-ring: #1F6B58;
  --color-attention-border: #B8860B;
  --color-attention-text: #8A4B00;
  --color-critical-text: #8C2F22;
  --color-critical-border: #A33A2A;
  --color-success-text: #0F5A4A;
  --color-info-text: #2F585E;
  --color-info-border: #3C6E75;
}

/* ---------------------------------------------------------------------------
 * Dark theme (explicit choice wins)
 * ------------------------------------------------------------------------- */
[data-theme="dark"] {
  color-scheme: dark;
  --color-surface-ground: #121615;
  --color-surface-plane: #1C2220;
  --color-surface-slab: #2A322F;
  --color-surface-inset: #0B0E0D;
  --color-surface-void: #0B0E0D;
  --color-text-primary: #F2EFE6;
  --color-text-secondary: #C4C8C2;
  --color-text-muted: #9AA3A0;
  --color-text-accent: #6FD3B8;
  --color-text-on-accent: #08211B;
  --color-border-hairline: #2A322F;
  --color-border-keyline: #2F7A69;
  --color-border-strong: #5A635F;
  --color-accent: #6FD3B8;
  --color-accent-hover: #8FE0C9;
  --color-accent-pressed: #4FB79B;
  --color-accent-focus-ring: #7FE8CB;
  --color-attention-border: #E0B25C;
  --color-attention-text: #E0B25C;
  --color-critical-text: #E8927F;
  --color-critical-border: #E8927F;
  --color-success-text: #5FB79F;
  --color-info-text: #8FC3CB;
  --color-info-border: #8FC3CB;
}

/* ---------------------------------------------------------------------------
 * System default: applied ONLY when the visitor has expressed no preference.
 * An explicit data-theme="light" therefore survives a dark OS setting.
 * ------------------------------------------------------------------------- */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    color-scheme: dark;
    --color-surface-ground: #121615;
    --color-surface-plane: #1C2220;
    --color-surface-slab: #2A322F;
    --color-surface-inset: #0B0E0D;
    --color-surface-void: #0B0E0D;
    --color-text-primary: #F2EFE6;
    --color-text-secondary: #C4C8C2;
    --color-text-muted: #9AA3A0;
    --color-text-accent: #6FD3B8;
    --color-text-on-accent: #08211B;
    --color-border-hairline: #2A322F;
    --color-border-keyline: #2F7A69;
    --color-border-strong: #5A635F;
    --color-accent: #6FD3B8;
    --color-accent-hover: #8FE0C9;
    --color-accent-pressed: #4FB79B;
    --color-accent-focus-ring: #7FE8CB;
    --color-attention-border: #E0B25C;
    --color-attention-text: #E0B25C;
    --color-critical-text: #E8927F;
    --color-critical-border: #E8927F;
    --color-success-text: #5FB79F;
    --color-info-text: #8FC3CB;
    --color-info-border: #8FC3CB;
  }
}

/* ---------------------------------------------------------------------------
 * Density presets
 * ------------------------------------------------------------------------- */
[data-density="comfortable"] {
  --density-row-pad-y: 20px;
  --density-row-pad-x: 24px;
  --density-section-gap: 96px;
}

[data-density="compact"] {
  --density-row-pad-y: 12px;
  --density-row-pad-x: 16px;
  --density-section-gap: 64px;
}

/* ---------------------------------------------------------------------------
 * Reduced motion: honoured at the token layer, so no component can opt out
 * accidentally and none has to remember (design brief §3.5.7).
 * ------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  :root {
    --dur-instant: 1ms;
    --dur-fast: 1ms;
    --dur-base: 1ms;
    --dur-slow: 1ms;
    --dur-overlay: 1ms;
    --dur-overlay-exit: 1ms;
    --dur-reveal: 1ms;
  }
}
