/* tokens.css — design primitives, locked per brief 02-design.md and v3-build-spec.md
   OKLCH palette. No #000, no #fff. Hue 240 (cold blue) for ink and neutrals.
   No green at any chroma. Refer to /brief/02-design.md before adding.
*/

/* TYPOGRAPHY — v3 commitment.
   General Sans (Indian Type Foundry, free for commercial via Fontshare).
   Geist Mono (Vercel, free via Google Fonts).
   Production-upgrade path: ABC Diatype + ABC Diatype Mono (Dinamo, ~$1.5-3K). */
@import url('https://api.fontshare.com/v2/css?f[]=general-sans@400,500,600,700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Geist+Mono:wght@400;500&display=swap');

:root {
  /* INK & NEUTRALS — cold blue bias */
  --color-ink:           oklch(14% 0.012 240);   /* body, nav, hero headlines */
  --color-ink-soft:      oklch(28% 0.012 240);   /* sub-heads, secondary text */
  --color-ash:           oklch(52% 0.008 240);   /* tertiary, captions, meta */
  --color-mist:          oklch(88% 0.006 240);   /* hairlines, dividers */

  /* SURFACES */
  --color-paper:         oklch(96% 0.004 95);    /* primary page background */
  --color-paper-cool:    oklch(98% 0.003 240);   /* inverted cards, layered surfaces */

  /* ACCENT — the single committed moment */
  --color-steel:         oklch(55% 0.08 230);    /* CTAs, data emphasis, active state */
  --color-steel-deep:    oklch(42% 0.10 230);    /* hover/active for steel */

  /* SIGNALS — restricted to system meaning */
  --color-amber-signal:  oklch(72% 0.14 75);     /* regulatory flags, live-state. <2% screen presence */
  --color-ember:         oklch(58% 0.18 35);     /* reserved drenched moment, max twice per page */

  /* TYPE STACKS — General Sans + Geist Mono, with graceful fallbacks. */
  --font-sans: "General Sans", "Helvetica Neue", "Helvetica", "Arial", system-ui, sans-serif;
  --font-mono: "Geist Mono", ui-monospace, "SF Mono", "Menlo", "Monaco", "Consolas", monospace;

  /* TYPE SCALE — fluid clamp(), modular ratio ≥1.25 */
  --type-display: clamp(3rem, 7vw, 7rem);          /* hero only */
  --type-headline: clamp(2rem, 4vw, 3.5rem);       /* section titles */
  --type-title: clamp(1.25rem, 2vw, 1.5rem);       /* sub-section */
  --type-lead: 1.1875rem;                          /* 19px */
  --type-body: 1.0625rem;                          /* 17px */
  --type-supporting: 0.875rem;                     /* 14px */
  --type-label: 0.75rem;                           /* 12px */
  --type-mono: 0.8125rem;                          /* 13px */

  /* SPACING — brand pacing, 4px-step deliberately skipped */
  --space-xs: 8px;
  --space-sm: 16px;
  --space-md: 24px;
  --space-lg: 32px;
  --space-xl: 48px;
  --space-2xl: 80px;
  --space-3xl: 120px;
  --space-4xl: 160px;

  /* CONTAINER */
  --container-max: 1440px;
  --container-pad: 64px;
  --container-pad-tablet: 32px;
  --container-pad-mobile: 24px;

  /* PROSE */
  --prose-max: 68ch;
  --editorial-max: 800px;

  /* RADIUS — subtle modern soft corners, kept restrained */
  --radius-none: 0;
  --radius-sm: 2px;
  --radius-md: 6px;     /* buttons, chips, inputs */
  --radius-lg: 10px;    /* panels, sheets, output cells */
  --radius-xl: 14px;    /* cards, picture frames */

  /* HAIRLINES */
  --hairline: 1px solid var(--color-mist);

  /* ELEVATION — two-tier; panels stay flat, cards lift on hover.
     Shadow color derived from ink, low alpha, no separate shadow hue. */
  --shadow-panel: none;
  --shadow-card:
    0 1px 2px oklch(14% 0.012 240 / 0.05),
    0 8px 24px -12px oklch(14% 0.012 240 / 0.10);
  --shadow-card-hover:
    0 2px 4px oklch(14% 0.012 240 / 0.06),
    0 14px 32px -12px oklch(14% 0.012 240 / 0.16);

  /* MOTION */
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);      /* expo-out, primary */
  --ease-inout: cubic-bezier(0.65, 0, 0.35, 1);   /* orchestrated reveals */
  --ease-press: cubic-bezier(0.32, 0.72, 0, 1);   /* Apple interaction curve, press feedback */
  --dur-fast: 150ms;
  --dur-press: 200ms;
  --dur-base: 400ms;
  --dur-slow: 1200ms;

  /* Z-INDEX */
  --z-nav: 100;
  --z-modal: 200;
}
