/* Hallmark · genre: modern-minimal · macrostructure: instrument-panel
 * theme: custom dark-committed · nav: N3 side-rail
 * pre-emit critique: P5 H5 E5 S5 R5 V4
 * The single source of truth. Adding a colour means adding a token here first.
 */

:root {
  /* ---- surfaces: elevation is lightness, never shadow ---- */
  --ground:      oklch(15.5% 0.012 250);
  --surface:     oklch(19.5% 0.012 250);
  --surface-2:   oklch(23.5% 0.013 250);
  --surface-3:   oklch(28%   0.014 250);
  --line:        oklch(31%   0.015 250);
  --line-soft:   oklch(25%   0.013 250);
  --scrim:       oklch(8%    0.010 250 / 0.62);

  /* ---- ink ---- */
  --ink:         oklch(94%   0.008 250);
  --ink-dim:     oklch(74%   0.010 250);
  --muted:       oklch(58%   0.012 250);

  /* ---- interactive: the ONLY non-status colour ---- */
  --signal:      oklch(70%   0.135 245);
  --signal-weak: oklch(30%   0.055 245);

  /* ---- status: every coloured pixel means one of these ---- */
  --ok:          oklch(74%   0.155 158);
  --ok-weak:     oklch(27%   0.055 158);
  --bad:         oklch(68%   0.190  25);
  --bad-weak:    oklch(27%   0.070  25);
  --warn:        oklch(80%   0.145  75);
  --warn-weak:   oklch(28%   0.060  75);

  /* ---- type ---- */
  --font-ui:   system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
  --font-data: ui-monospace, "SF Mono", "Cascadia Code", "JetBrains Mono", Consolas, monospace;

  --text-xs:   0.6875rem;
  --text-sm:   0.8125rem;
  --text-base: 0.875rem;
  --text-md:   1rem;
  --text-lg:   1.25rem;
  --text-xl:   1.75rem;
  --text-2xl:  2.25rem;

  /* ---- 4pt space scale ---- */
  --space-1:  4px;
  --space-2:  8px;
  --space-3:  12px;
  --space-4:  16px;
  --space-5:  20px;
  --space-6:  24px;
  --space-8:  32px;
  --space-10: 40px;
  --space-12: 64px;

  /* ---- line + radius ---- */
  --rule:      1px;
  --radius-sm: 4px;
  --radius-md: 6px;
  --radius-lg: 10px;

  /* ---- motion: three primitives, no more ---- */
  --dur-fast: 120ms;
  --dur-base: 180ms;
  --ease-out:    cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);

  /* ---- named z scale, never 9999 ----
   * The scrim sits BELOW the drawer it dims. Getting this backwards makes the
   * whole drawer inert — every click lands on the scrim and dismisses it —
   * which is invisible in code review and obvious the moment a real browser
   * tries to press a button. Caught that way; the order is now load-bearing.
   */
  --z-base:    1;
  --z-sticky:  10;
  --z-overlay: 20;
  --z-drawer:  30;
  --z-toast:   40;
}
