/* ============================================================
   BROADSHEET — design tokens
   A live front page for the market — warm newsprint by day,
   Bloomberg terminal by night. Drop this in any project and
   theme off the custom properties.
   ============================================================ */

:root {
  /* ---- Surfaces & ink (warm newsprint) ---- */
  --bs-paper:        #f4f0e7;  /* page background          */
  --bs-paper-2:      #fbf8f1;  /* raised card / inset      */
  --bs-ink:          #1b1712;  /* primary text, rules      */
  --bs-ink-2:        #6f6657;  /* secondary / body muted   */
  --bs-ink-3:        #978d79;  /* tertiary / captions      */
  --bs-hair:         #ddd6c6;  /* hairline rule            */
  --bs-hair-2:       #e8e2d4;  /* faint fill / track       */

  /* ---- Night canvas (the "After Hours" pole) ---- */
  --bs-night:        #0b0c12;  /* darkest                  */
  --bs-night-2:      #14151f;  /* raised on night          */
  --bs-bone:         #edeef5;  /* text on night            */

  /* ---- The traveling accent (live, retunes per desk) ---- */
  --bs-glow:         #3a4ec9;  /* current accent · "ink" tone (on paper) */
  --bs-glow-soft:    #6e7bff;  /* current accent · "glow" tone (on night) */

  /* ---- Desk hues: [ink on paper] / [glow on night] ---- */
  --bs-finance-ink:    #3a4ec9;  --bs-finance-glow:    #6e7bff;
  --bs-consumer-ink:   #a76a12;  --bs-consumer-glow:   #ffb23e;
  --bs-retail-ink:     #1d8a5b;  --bs-retail-glow:     #39e0a0;
  --bs-tech-ink:       #6a3fd0;  --bs-tech-glow:       #7c5cff;
  --bs-pharma-ink:     #0c887b;  --bs-pharma-glow:     #2bd7c4;
  --bs-media-ink:      #bd3a64;  --bs-media-glow:      #ff6b9a;
  --bs-aero-ink:       #2563c9;  --bs-aero-glow:       #3e8bff;
  --bs-auto-ink:       #9a3fd0;  --bs-auto-glow:       #c66bff;
  --bs-industrial-ink: #0e7fb0;  --bs-industrial-glow: #39d2ff;

  /* ---- Type families ---- */
  --bs-font-editorial: "Newsreader", Georgia, "Times New Roman", serif;  /* heads, body, FIGURES */
  --bs-font-chrome:    "Archivo", system-ui, -apple-system, sans-serif;  /* kickers, labels, nav, buttons */
  --bs-font-mono:      "JetBrains Mono", "SF Mono", ui-monospace, monospace; /* telemetry, IDs, timestamps */

  /* ---- Type scale (fluid; clamp(min, vw, max)) ---- */
  --bs-t-masthead: clamp(32px, 11vw,  132px);  /* nameplate            */
  --bs-t-lead:     clamp(32px, 4.3vw,  58px);  /* lead headline        */
  --bs-t-figure-l: clamp(48px, 6.4vw,  82px);  /* lead hero metric     */
  --bs-t-h1:       clamp(30px, 4.6vw,  52px);  /* dossier headline     */
  --bs-t-h2:       clamp(30px, 3.8vw,  50px);  /* section head         */
  --bs-t-card:     21px;                        /* card headline        */
  --bs-t-figure-m: 31px;                        /* card hero metric     */
  --bs-t-body:     17px;                        /* reading body         */
  --bs-t-body-s:   14px;                        /* dek / small body     */
  --bs-t-kicker:   11px;                        /* Archivo uppercase    */
  --bs-t-telemetry:11px;                        /* mono                 */

  /* ---- Weights ---- */
  --bs-w-editorial: 480;  /* Newsreader display weight (heads)  */
  --bs-w-figure:    500;  /* Newsreader figures                 */
  --bs-w-kicker:    700;  /* Archivo kickers                    */
  --bs-w-label:     600;  /* Archivo labels / buttons           */

  /* ---- Tracking (letter-spacing) ---- */
  --bs-ls-display:  -0.02em;  /* large editorial heads          */
  --bs-ls-head:    -0.015em;  /* medium heads                   */
  --bs-ls-kicker:   0.15em;   /* uppercase kickers              */
  --bs-ls-label:    0.10em;   /* uppercase labels / nav         */
  --bs-ls-mono:     0.04em;   /* telemetry                      */

  /* ---- Layout widths ---- */
  --bs-w-broadsheet: 1320px;  /* packed front page              */
  --bs-w-dispatch:   1080px;  /* league-table index             */
  --bs-w-read:        780px;  /* dossier / reading measure      */
  --bs-gutter:         28px;

  /* ---- Rules & radii ---- */
  --bs-rule-strong: 2px solid var(--bs-ink);   /* masthead / colophon top */
  --bs-rule-hair:   1px solid var(--bs-hair);  /* dividers                */
  --bs-radius:      2px;                        /* newsprint is barely round */

  /* ---- Motion grammar ---- */
  --bs-ease:        cubic-bezier(.2, .7, .2, 1); /* the house easing      */
  --bs-ease-spring: cubic-bezier(.34, 1.56, .64, 1); /* the arrival spring — one job: things landing */
  --bs-rise:        .55s;   /* card / row entrance                        */
  --bs-rise-in:     .5s;    /* dossier entrance                           */
  --bs-fade:        .7s;    /* masthead / view fade                       */
  --bs-stagger:     50ms;   /* per-item assemble step (grid)              */
  --bs-stagger-row: 40ms;   /* per-item assemble step (index)             */
  --bs-wire:        64s;    /* ticker marquee loop                        */
  --bs-glow-lerp:   0.09;   /* pointer-glow follower smoothing            */
}

/* Reduced motion is a first-class state, not an afterthought. */
@media (prefers-reduced-motion: reduce) {
  :root { --bs-rise: .001s; --bs-rise-in: .001s; --bs-fade: .001s; --bs-wire: 0s; }
}
