/* Hallmark · tokens · theme: Brutal (editorial genre)
 * axes — paper band: light (L 96%) · display style: display-heavy · accent hue: warm (55°)
 * Portable design system. Every colour and font in styles.css references a token from here.
 */

:root {
  /* ---- Type families — 2+1 rule ---------------------------------------
   * display  Bricolage Grotesque  headings, wordmark, hero
   * body     IBM Plex Sans        prose, UI, forms
   * mono     Geist Mono           OUTLIER — one role only: machine/technical data
   * -------------------------------------------------------------------- */
  --font-display: "Bricolage Grotesque", ui-sans-serif, sans-serif;
  --font-body: "IBM Plex Sans", ui-sans-serif, system-ui, sans-serif;
  --font-mono: "Geist Mono", ui-monospace, monospace;

  /* ---- Type scale — 1.25 major third ---------------------------------- */
  --text-xs: 0.64rem;
  --text-sm: 0.8rem;
  --text-base: 1rem;
  --text-md: 1.25rem;
  --text-lg: 1.5625rem;
  --text-xl: 1.9531rem;
  --text-2xl: 2.4414rem;
  --text-3xl: 3.0518rem;
  --text-4xl: 3.8147rem;
  /* Brutal is an aggressive-display theme: 6.5rem ceiling, for statements ≤ 50 chars only. */
  --text-display: clamp(2.75rem, 8.5vw, 6.5rem);
  --text-display-s: clamp(2.25rem, 5.5vw, 4rem);

  /* ---- Colour — OKLCH, warm anchor hue 65 ------------------------------ */
  --color-paper: oklch(96% 0.008 75);
  --color-paper-2: oklch(92.5% 0.011 75);
  --color-paper-3: oklch(88% 0.013 75);
  --color-rule: oklch(78% 0.011 72);
  --color-rule-2: oklch(68% 0.013 70);
  --color-neutral: oklch(52% 0.011 70);
  --color-muted: oklch(42% 0.013 68);
  --color-ink-2: oklch(30% 0.014 66);
  --color-ink: oklch(17% 0.014 65);

  /* Accent — signal orange. The colour of the machines and the hi-vis. ≤ 3% of any viewport. */
  --color-accent: oklch(62% 0.19 55);
  --color-accent-ink: oklch(16% 0.02 60); /* text colour when accent fills a surface */

  --color-focus: oklch(34% 0.14 52); /* ≥ 3:1 against paper AND against accent */
  --color-error: oklch(48% 0.19 27);
  --color-success: oklch(45% 0.12 148);

  /* Overlays — modifiers, not palette colours. Two stops only. */
  --overlay-ink-soft: color-mix(in srgb, var(--color-ink) 35%, transparent);
  --overlay-ink-strong: color-mix(in srgb, var(--color-ink) 90%, transparent);

  /* ---- Space — 4pt scale ---------------------------------------------- */
  --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: 2.5rem;
  --space-2xl: 4rem;
  --space-3xl: 6rem;
  --space-4xl: 9rem;
  --page-gutter: clamp(1.125rem, 4vw, 4rem);

  /* ---- Rules — brutal weights ------------------------------------------ */
  --rule-hair: 1px;
  --rule-thick: 3px;
  --rule-slab: 10px;

  --radius-none: 0; /* Brutal has no rounded corners. */

  /* ---- 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;

  /* ---- Z-index — six named levels -------------------------------------- */
  --z-base: 1;
  --z-raised: 10;
  --z-dropdown: 100;
  --z-sticky: 200;
  --z-modal: 400;
  --z-toast: 500;
  --z-tooltip: 600;
}
