:root {
  /* Black Ticket palette: ink, paper, one signal colour. */
  --ink-0: oklch(9% 0.004 270);
  --ink-1: oklch(13% 0.005 270);
  --ink-2: oklch(18% 0.006 270);
  --ink-3: oklch(25% 0.007 270);
  --ink-4: oklch(36% 0.008 270);
  --paper: oklch(96% 0.006 80);
  --paper-2: oklch(78% 0.008 80);
  --paper-3: oklch(58% 0.008 80);
  --signal: oklch(68% 0.23 32);
  --signal-deep: oklch(52% 0.21 32);
  --signal-soft: oklch(68% 0.23 32 / 0.16);
  --ok: oklch(78% 0.17 150);
  --line: oklch(100% 0 0 / 0.1);
  --line-strong: oklch(100% 0 0 / 0.2);

  /* heat ramp, cheap → expensive */
  --heat-0: oklch(45% 0.02 260);
  --heat-1: oklch(60% 0.09 70);
  --heat-2: oklch(72% 0.17 50);
  --heat-3: oklch(68% 0.23 32);

  --font-display: 'Archivo', system-ui, sans-serif;
  --font-mono: 'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, monospace;

  --text-xs: 0.72rem;
  --text-sm: 0.82rem;
  --text-base: clamp(0.95rem, 0.9rem + 0.25vw, 1.05rem);
  --text-lg: clamp(1.15rem, 1rem + 0.6vw, 1.5rem);
  --text-xl: clamp(1.6rem, 1.2rem + 1.6vw, 2.6rem);
  --text-hero: clamp(3rem, 1.2rem + 9vw, 10.5rem);

  --gutter: clamp(16px, 4vw, 56px);
  --space-1: 0.25rem; --space-2: 0.5rem; --space-3: 0.75rem; --space-4: 1rem;
  --space-6: 1.5rem; --space-8: 2rem; --space-12: 3rem; --space-16: 4rem;
  --space-section: clamp(3.5rem, 2rem + 6vw, 8rem);

  --radius-xs: 3px; --radius-sm: 6px; --radius-md: 10px; --radius-lg: 18px;
  --dur-fast: 140ms; --dur: 260ms; --dur-slow: 600ms;
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --nav-h: 64px;
}
