/* The Halloran — design tokens.
 * Palette and type from Dante's design/tokens.css (12 Nov 2026).
 * Custom properties only. @font-face lives in site.css (step 2).
 * Components use var(--accent) / var(--neon), never a hard-coded red.
 */
:root {
  /* Colour: monochrome */
  --ink:        #0B0B0C;
  --char:       #161617;
  --smoke:      #2B2B2E;
  --ash:        #5E5E63;
  --fog:        #A7A6A2;
  --bone:       #E9E6DF;
  --white:      #F7F5F0;

  /* The one accent: neon red (brass was tested and rejected). */
  --neon:       #E23B2E;
  --neon-hot:   #FF7A68;
  --neon-deep:  #8E1F18;
  --neon-off:   #4A1F1B;
  --accent:     var(--neon);

  /* Semantic */
  --bg:         var(--ink);
  --surface:    var(--char);
  --text:       var(--bone);
  --text-muted: var(--fog);
  --rule:       var(--smoke);
  --focus:      var(--neon);

  /* Type: two families only. Files are added in step 2. */
  --font-display: "Limelight", "Didot", "Bodoni 72", Georgia, serif;
  --font-sign:    var(--font-display);
  --font-type:    "Courier Prime", "Courier New", ui-monospace, monospace;
  --font-read:    Georgia, "Times New Roman", serif;

  --fs-micro:   0.75rem;
  --fs-small:   0.875rem;
  --fs-body:    1.125rem;
  --fs-lead:    1.375rem;
  --fs-h3:      clamp(1.5rem, 1.2rem + 1vw, 2rem);
  --fs-h2:      clamp(2rem, 1.4rem + 2.2vw, 3.25rem);
  --fs-h1:      clamp(2.75rem, 1.6rem + 4.6vw, 5.5rem);
  --fs-sign:    clamp(3.5rem, 1.5rem + 8vw, 9rem);

  --lh-body:    1.65;
  --lh-display: 1.02;
  --track-display: 0.14em;
  --track-sign:    0.18em;
  --track-label:   0.28em;
  --track-body:    0;
  --measure:    62ch;

  /* Space (8px base) */
  --s-1: 0.25rem;
  --s-2: 0.5rem;
  --s-3: 1rem;
  --s-4: 1.5rem;
  --s-5: 2rem;
  --s-6: 3rem;
  --s-7: 4.5rem;
  --s-8: 7.5rem;
  --section-pad: clamp(4.5rem, 3rem + 6vw, 10rem);

  /* Grid */
  --container: 1240px;
  --gutter:    clamp(1rem, 0.5rem + 2vw, 2rem);
  --columns:   12;

  /* Deco */
  --rule-hair:   1px;
  --rule-double: 3px;
  --frame-inset: 10px;
  --radius:      0;

  /* Texture: grain / dust (files in assets/textures/) */
  --grain-url:      url("../textures/grain-256.png");
  --grain-size:     256px;
  --grain-opacity:  0.05;  /* pulled back a touch; sign stays brightest */
  --grain-blend:    hard-light;  /* Dante's file says overlay, which cannot show on the Ink ground; see STATUS.md */
  --grain-steps:    8;
  --grain-duration: 0.9s;
  --dust-url:       url("../textures/dust-512.png");
  --dust-opacity:   0.18;

  /* Rain */
  --rain-drops:     120;
  --rain-angle:     -8deg;
  --rain-speed:     900;
  --rain-length:    18;
  --rain-opacity:   0.16;
  --rain-color:     233 230 223;

  /* Motion */
  --ease-film:    cubic-bezier(0.65, 0, 0.35, 1);
  --ease-out:     cubic-bezier(0.22, 1, 0.36, 1);
  --dur-fast:     160ms;
  --dur-base:     320ms;
  --dur-reel:     900ms;
  --flicker-max-hz: 3;

  /* Added in step 2 */
  --pitch:        #050505;             /* The Night Desk ground, one stop under Ink */
  --neon-core:    var(--white);        /* lit tube core; tinted from --accent below */
  --glow-neon:    0 0 0.04em var(--white), 0 0 0.17em var(--neon-hot), 0 0 0.46em var(--accent), 0 0 1em var(--neon-deep);
  --dur-ignite:   1.6s;
  --dur-stutter:  70ms;
  --dur-dip-out:  280ms;               /* page-to-page: fade to black */
  --dur-dip-in:   420ms;               /* page-to-page: fade up from black */
  --z-content:    1;
  --z-intro:      900;
  --z-dip:        950;
  --z-grain:      1000;
}

@supports (color: color-mix(in srgb, red, blue)) {
  :root { --neon-core: color-mix(in srgb, var(--accent) 12%, var(--white)); }
}

@media (prefers-reduced-motion: reduce) {
  :root { --grain-duration: 0s; --dur-reel: 0ms; --rain-drops: 0; }
}
