/* Hallmark · genre: modern-minimal · macrostructure: Feature Stack · H7 hero knobs: clip=right, media=live HTML board, frame=hairline
 * theme: custom · vibe: "instrument panel, amber on ink, operator calm" · paper: oklch(16.7% 0.012 254) dark / oklch(97.2% 0.005 258) light
 * accent: oklch(81.1% 0.141 65) dark / oklch(71.1% 0.162 61) light · display: Geist 700 · body: Geist 400 · data: Geist Mono
 * axes: dark / geometric-sans / warm (amber) · nav: N13 inline ⌘K pill · footer: Ft5 Statement · enrichment: Tier A live HTML product board
 * studied: no · context: user-provided (audience, CTA, tone, theme route) · source of truth: supapad/docs/DESIGN-TOKENS.md
 * Neutrals stay cool (hue ~255) on purpose — they are the app's own values, not Hallmark's warm-tint default.
 */

@font-face {
  font-family: "Geist";
  src: url("/assets/fonts/geist.woff2") format("woff2");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Geist Mono";
  src: url("/assets/fonts/geist-mono.woff2") format("woff2");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}
/* Metric-matched fallback so the swap doesn't shift layout. */
@font-face {
  font-family: "Geist Fallback";
  src: local("Helvetica Neue"), local("Arial");
  size-adjust: 102%;
  ascent-override: 92%;
  descent-override: 22%;
  line-gap-override: 0%;
}

:root {
  /* ── Type ─────────────────────────────────────────── */
  --font-display: "Geist", "Geist Fallback", -apple-system, sans-serif;
  --font-body: "Geist", "Geist Fallback", -apple-system, sans-serif;
  --font-mono: "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;

  /* major third, 16px base */
  --text-2xs: 0.6875rem;  /* 11px — app section labels, mock UI only */
  --text-xs: 0.8rem;      /* 12.8 */
  --text-sm: 0.875rem;    /* 14 */
  --text-base: 1rem;      /* 16 */
  --text-md: 1.25rem;     /* 20 */
  --text-lg: 1.5625rem;   /* 25 */
  --text-xl: 1.9531rem;   /* 31 */
  --text-2xl: clamp(2rem, 2.2vw + 1.2rem, 2.9rem);
  --text-display: clamp(2.6rem, 2.9vw + 1.1rem, 4rem);

  --leading-tight: 1.04;
  --leading-snug: 1.2;
  --leading-body: 1.6;
  --tracking-display: -0.038em;
  --tracking-head: -0.025em;
  --tracking-label: 0.08em;

  /* ── Space (4pt) ─────────────────────────────────── */
  --space-3xs: 0.125rem;
  --space-2xs: 0.25rem;
  --space-xs: 0.5rem;
  --space-sm: 0.75rem;
  --space-md: 1rem;
  --space-lg: 1.5rem;
  --space-xl: 2rem;
  --space-2xl: 3rem;
  --space-3xl: 4rem;
  --space-4xl: 6rem;
  --space-5xl: 8rem;
  --page-gutter: clamp(1rem, 4vw, 3rem);
  --page-max: 76rem;
  --nav-height: 3.5rem;

  /* ── Radii (from the app: window 12 · card 11 · tile 9 · chip 6–8 · button 8–9) */
  --radius-window: 14px;
  --radius-card: 11px;
  --radius-tile: 9px;
  --radius-chip: 7px;
  --radius-btn: 9px;
  --radius-pill: 999px;
  --rule-hair: 1px;

  /* ── Motion ──────────────────────────────────────── */
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in: cubic-bezier(0.7, 0, 0.84, 0);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --dur-micro: 120ms;
  --dur-short: 220ms;
  --dur-long: 420ms;
  --dur-scene: 900ms;

  --z-sticky: 10;
  --z-nav: 50;
  --z-modal: 700;

  /* ── Colour · light (app "Light" appearance) ─────── */
  --color-paper: oklch(97.2% 0.005 258);          /* bg        #F4F6F9 */
  --color-paper-2: oklch(95.1% 0.007 261);        /* bgSidebar #ECEFF4 */
  --color-panel: oklch(99.5% 0.002 258);          /* panel (tinted, never #fff) */
  --color-panel-2: oklch(96.6% 0.006 255);        /* panel2    #F1F4F8 */
  --color-panel-hover: oklch(94.5% 0.009 258);    /* panelHover */
  --color-rule: oklch(91% 0.008 258);             /* line */
  --color-rule-strong: oklch(86% 0.011 258);      /* lineStrong */
  --color-ink: oklch(24.6% 0.022 257);            /* textPrimary */
  --color-ink-2: oklch(48.7% 0.026 250);          /* textMuted */
  --color-faint: oklch(51% 0.024 250);            /* textFaint, darkened for AA on paper */
  --color-disabled: oklch(75.4% 0.019 253);
  --color-accent: oklch(71.1% 0.162 61);          /* accentAmber #E8860B */
  --color-accent-strong: oklch(67.1% 0.157 60);
  --color-accent-text: oklch(52% 0.12 62);        /* amber as text on light */
  --color-on-accent: oklch(21.4% 0.024 66);       /* #21170D */
  --color-accent-hi: oklch(85.4% 0.118 72);       /* icon highlight #FFC274 */
  --color-health: oklch(61.9% 0.139 157);
  --color-health-text: oklch(50% 0.12 157);      /* health as small text on light */
  --color-warn: oklch(66.9% 0.138 81);
  --color-warn-text: oklch(52% 0.11 81);          /* warn as small text on light */
  --color-danger: oklch(57.9% 0.196 29);
  --color-info: oklch(55.3% 0.164 259);
  --color-focus: oklch(64% 0.2 58);
  --color-shadow: oklch(30% 0.03 258);
  --color-scrim: oklch(20% 0.02 258);
  --shadow-strength: 10%;
  --scrim-strength: 38%;
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --color-paper: oklch(16.7% 0.012 254);        /* #0B0F14 */
    --color-paper-2: oklch(19.9% 0.015 262);      /* #12161D */
    --color-panel: oklch(22% 0.02 258);           /* #151B24 */
    --color-panel-2: oklch(25.1% 0.029 261);      /* #1A2230 */
    --color-panel-hover: oklch(28.2% 0.029 257);  /* #202A38 */
    --color-rule: oklch(27.5% 0.018 258);
    --color-rule-strong: oklch(32.5% 0.02 258);
    --color-ink: oklch(96.9% 0.003 248);
    --color-ink-2: oklch(77.6% 0.021 257);
    --color-faint: oklch(63% 0.028 256);
    --color-disabled: oklch(48.9% 0.029 258);
    --color-accent: oklch(81.1% 0.141 65);        /* #FFAD55 */
    --color-accent-strong: oklch(78.1% 0.16 62);
    --color-accent-text: oklch(81.1% 0.141 65);
    --color-health: oklch(78.2% 0.151 160);       /* #48D597 */
    --color-health-text: oklch(78.2% 0.151 160);
    --color-warn: oklch(83.4% 0.128 80);
    --color-warn-text: oklch(83.4% 0.128 80);
    --color-danger: oklch(71.2% 0.181 23);
    --color-info: oklch(72.9% 0.142 256);
    --color-focus: oklch(84% 0.17 66);
    --color-shadow: oklch(8% 0.01 258);
    --color-scrim: oklch(8% 0.01 258);
    --shadow-strength: 55%;
    --scrim-strength: 62%;
  }
}
:root[data-theme="dark"] {
  --color-paper: oklch(16.7% 0.012 254);
  --color-paper-2: oklch(19.9% 0.015 262);
  --color-panel: oklch(22% 0.02 258);
  --color-panel-2: oklch(25.1% 0.029 261);
  --color-panel-hover: oklch(28.2% 0.029 257);
  --color-rule: oklch(27.5% 0.018 258);
  --color-rule-strong: oklch(32.5% 0.02 258);
  --color-ink: oklch(96.9% 0.003 248);
  --color-ink-2: oklch(77.6% 0.021 257);
  --color-faint: oklch(63% 0.028 256);
  --color-disabled: oklch(48.9% 0.029 258);
  --color-accent: oklch(81.1% 0.141 65);
  --color-accent-strong: oklch(78.1% 0.16 62);
  --color-accent-text: oklch(81.1% 0.141 65);
  --color-health: oklch(78.2% 0.151 160);
  --color-health-text: oklch(78.2% 0.151 160);
  --color-warn: oklch(83.4% 0.128 80);
  --color-warn-text: oklch(83.4% 0.128 80);
  --color-danger: oklch(71.2% 0.181 23);
  --color-info: oklch(72.9% 0.142 256);
  --color-focus: oklch(84% 0.17 66);
  --color-shadow: oklch(8% 0.01 258);
  --color-scrim: oklch(8% 0.01 258);
  --shadow-strength: 55%;
  --scrim-strength: 62%;
}

/* Derived tints — every one is built from a named token above. */
:root {
  --color-accent-soft: color-mix(in oklab, var(--color-accent) 15%, var(--color-panel));
  --color-health-soft: color-mix(in oklab, var(--color-health) 14%, var(--color-panel));
  --color-warn-soft: color-mix(in oklab, var(--color-warn) 14%, var(--color-panel));
  --color-danger-soft: color-mix(in oklab, var(--color-danger) 13%, var(--color-panel));
  --color-info-soft: color-mix(in oklab, var(--color-info) 13%, var(--color-panel));
  --color-shadow-soft: color-mix(in oklab, var(--color-shadow) var(--shadow-strength), transparent);
  --color-scrim-soft: color-mix(in oklab, var(--color-scrim) var(--scrim-strength), transparent);
  --color-nav: color-mix(in oklab, var(--color-paper) 82%, transparent);
}
