/* Hallmark · genre: atmospheric · theme: Terminal (austere — no blooms) · design-system: design.md · designed-as-app
 * axes: paper-band dark · display-style mono · accent-hue chromatic-other (phosphor)
 * Every colour / font / size used by main.css and the inline-SVG charts is a token here.
 */

@font-face {
  font-family: "JetBrains Mono";
  src: url("../fonts/jetbrains-mono-latin.woff2") format("woff2");
  font-weight: 100 800;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Geist";
  src: url("../fonts/geist-latin.woff2") format("woff2");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

:root {
  color-scheme: dark;

  /* ---- surfaces (anchor hue 150, tinted toward the phosphor accent) ---- */
  --color-paper:    oklch(14%   0.008 150);
  --color-paper-2:  oklch(17.5% 0.009 150);   /* lifted panel */
  --color-paper-3:  oklch(21%   0.010 150);   /* hover / highest */
  --color-rule:     oklch(29%   0.010 150);
  --color-rule-2:   oklch(38%   0.010 150);   /* stronger hairline / control border */

  /* ---- text ---- */
  --color-ink:      oklch(93%   0.008 150);
  --color-ink-2:    oklch(78%   0.010 150);   /* secondary */
  --color-muted:    oklch(62%   0.010 150);   /* meta, labels — ≥ 4.5:1 on paper */

  /* ---- accent: phosphor. ≤ 3 % of any view: prompt, focus, active, velocity, activity bars ---- */
  --color-accent:     oklch(85% 0.19 145);
  --color-accent-dim: oklch(52% 0.13 145);
  --color-accent-ink: oklch(16% 0.02 145);    /* text on an accent block */
  --color-focus:      oklch(85% 0.19 145);

  /* ---- status: reserved for severity / exploitation, always paired with a text label ---- */
  --color-crit:     oklch(66% 0.20 25);
  --color-high:     oklch(75% 0.16 55);
  --color-med:      oklch(85% 0.14 95);
  --color-low:      oklch(70% 0.02 150);
  --color-status-ink: oklch(15% 0.01 150);    /* text on a filled status block */

  /* ---- chart ramp (sequential, validated on the dark paper; dark = few, light = many) ---- */
  --chart-empty: oklch(19%  0.010 150);
  --chart-1:     oklch(40%  0.09  145);
  --chart-2:     oklch(51%  0.12  145);
  --chart-3:     oklch(62%  0.145 145);
  --chart-4:     oklch(74%  0.17  145);
  --chart-5:     oklch(86%  0.19  145);

  /* ---- type ---- */
  --font-mono:  "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;  /* display, data, IDs, nav */
  --font-prose: "Geist", ui-sans-serif, system-ui, sans-serif;                     /* summaries, prose only */

  --text-2xs: 0.6875rem;
  --text-xs:  0.75rem;
  --text-sm:  0.8125rem;
  --text-md:  0.9375rem;
  --text-lg:  1.125rem;
  --text-xl:  1.5rem;
  --text-2xl: 2rem;
  --text-3xl: clamp(2rem, 3vw + 1rem, 3rem);
  --text-figure: clamp(4.5rem, 10vw + 1rem, 9rem);   /* the Stat-Led hero figure */

  /* ---- space (4 pt scale) ---- */
  --space-3xs: 0.25rem;
  --space-2xs: 0.5rem;
  --space-xs:  0.75rem;
  --space-sm:  1rem;
  --space-md:  1.5rem;
  --space-lg:  2rem;
  --space-xl:  3rem;
  --space-2xl: 4.5rem;
  --space-3xl: 7rem;

  --page-max: 82rem;
  --page-gutter: clamp(1rem, 3vw, 2.5rem);

  /* ---- rules & shape ---- */
  --rule-hair: 1px;
  --rule-heavy: 2px;
  --radius: 0;

  /* ---- 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-fast: 120ms;
  --dur-short: 220ms;
  --dur-tick: 500ms;
}
