/* Insights design system — BASE tokens (audience-neutral). © 2026 TR3HSE LLC.
   The taxonomy + neutral defaults: color chrome, type, space, elevation, motion.
   A per-source theme (themes/<source>.css) overrides only the audience tokens —
   chiefly --accent. Cascade: tokens.base.css → themes/<source>.css → components.css.
   Extracted verbatim from Hacker News Insights' tokens.css (the design source of
   truth); only --accent is neutralized here and re-set per source in the theme. */
:root{
  color-scheme:dark light;

  /* color — neutral chrome */
  --bg:#0b0b0d; --ink:#f3f4f7; --ink-2:#b4b9c5; --ink-3:#8b909c;
  --glass:rgba(255,255,255,.045); --glass-2:rgba(255,255,255,.03);
  --glass-hi:rgba(255,255,255,.08);   /* specular edge highlight — one token, adapts per scheme */
  --stroke:rgba(255,255,255,.10); --stroke-2:rgba(255,255,255,.065);
  --btn:#f3f4f7; --btn-ink:#15161a;
  /* color — data accent: NEUTRAL fallback; themes/<source>.css sets the real hue */
  --accent:#8a90a0; --accent-soft:rgba(138,144,160,.16);

  /* elevation + glass */
  --shadow:0 18px 50px rgba(0,0,0,.45); --shadow-sm:0 6px 20px rgba(0,0,0,.3);
  --glow:radial-gradient(85% 55% at 50% -12%,rgba(255,255,255,.05),transparent 56%);
  --blur:blur(14px) saturate(1.4);   /* saturate = liquid-glass vibrancy; lighter blur keeps stacked layers cheap */

  /* type */
  --font:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text","Helvetica Neue",Arial,sans-serif;
  --fs-h1:clamp(32px,6vw,56px); --fs-h2:clamp(19px,3vw,25px); --fs-h3:.969rem;
  --fs-lead:clamp(15.5px,2.3vw,18px); --fs-body:.906rem; --fs-meta:.719rem;
  --fs-eyebrow:.75rem; --fs-stat:clamp(23px,3.6vw,29px); --fs-caveat:.75rem;  /* rem → honors Dynamic Type; caveat floored to 12px */

  /* space · radius · layout */
  --sp-1:6px; --sp-2:10px; --sp-3:16px; --sp-4:24px; --sp-5:36px; --sp-6:48px;
  --r:18px; --r-sm:12px; --r-lg:24px; --maxw:1760px;   /* detailed dashboards can use ultrawide space; prose stays ch-capped */
  --edge:7px;   /* nav padding (--sp-3=16) − breakout (10) + border (1) → brand/links sit 7px inside .wrap */
  --page-pad:clamp(14px,3.2vw,48px);
  --layout-gap:clamp(12px,1.5vw,24px);
  --card-min:min(100%,260px);

  /* THE GRID — one standard everywhere: an 8-column horizontal structure on an 8px baseline unit.
     Every multi-item region is a .grid; children span whole columns (.col-N); vertical rhythm is a
     multiple of --u. Enforced by design-system/tests.py. See components.css `.grid`. */
  --u:8px;                 /* baseline unit — all layout rhythm (section gaps, grid gaps) is N·--u */
  --cols:8;                /* columns in the layout grid */
  --gutter:var(--sp-3);    /* 16px = 2·--u — the column gutter (and row gap) */

  /* motion system — three durations, three curves; everything animates through these */
  --dur-fast:.16s; --dur:.4s; --dur-slow:.6s;
  --ease:cubic-bezier(.22,.61,.36,1);     /* default in/out */
  --ease-out:cubic-bezier(.16,1,.3,1);    /* entrances (decelerate) */
  --ease-spring:cubic-bezier(.34,1.56,.64,1); /* delight, used sparingly */
  /* semantic motion aliases — components describe intent, not arbitrary timing */
  --motion-enter:var(--dur-slow); --motion-exit:var(--dur-fast);
  --motion-state:var(--dur); --motion-stagger:70ms;
  --motion-distance-sm:6px; --motion-distance-md:18px;
  --rise-2:#ff6f5e;--rise-1:#ff9a73;--fall-1:#74b4ee;--fall-2:#56a3f0;  /* diverging data scale (momentum up/down tiers) */
  --kind-fix:#c8861a;--kind-data:#56a3f0;  /* changelog kind badges */
  --ceiling-0:#6d1f34;--ceiling-100:#a84747;--ceiling-200:#c77b4d;
  --ceiling-300:#d4ae63;--ceiling-400:#69a78f; /* FAA authorization-height scale */
}
@media (prefers-color-scheme: light){
  :root{
    --bg:#f3f4f7; --ink:#16181d; --ink-2:#4e5460; --ink-3:#6c707b;
    --glass:rgba(255,255,255,.62); --glass-2:rgba(255,255,255,.48); --glass-hi:rgba(255,255,255,.9);
    --stroke:rgba(20,24,33,.09); --stroke-2:rgba(20,24,33,.06);
    --btn:#16181d; --btn-ink:#fff;
    --accent:#5b616e; --accent-soft:rgba(91,97,110,.10);   /* neutral fallback; theme overrides */
    --shadow:0 18px 40px rgba(20,24,33,.10); --shadow-sm:0 6px 18px rgba(20,24,33,.06);
    --glow:radial-gradient(85% 55% at 50% -12%,#ffffff,transparent 58%);
    --rise-2:#c0330d;--rise-1:#bd5a18;--fall-1:#2c6fb5;--fall-2:#1c5b98;
  --kind-data:#1c5b98;
}
}

/* © 2026 TR3HSE LLC. All rights reserved. Proprietary — see LICENSE. */
/* Hacker News skin — HN orange anchors identity; a compact analytical spectrum gives
   comparisons and interaction states distinct, repeatable identities without turning
   sequential encodings into a rainbow. */
:root{
  --accent:#ff7a1a;--accent-soft:rgba(255,122,26,.16);
  --series-2:#4dabf7;--series-2-soft:rgba(77,171,247,.15);
  --series-3:#b197fc;--series-3-soft:rgba(177,151,252,.15);
  --series-4:#ff6b9a;--series-4-soft:rgba(255,107,154,.15);
  --series-5:#38d9a9;--series-5-soft:rgba(56,217,169,.15);
  --glow:radial-gradient(60% 42% at 12% -8%,rgba(255,122,26,.12),transparent 62%),radial-gradient(50% 36% at 88% -10%,rgba(177,151,252,.08),transparent 64%);
}
@media (prefers-color-scheme: light){
  :root{
    --accent:#b84200;--accent-soft:rgba(184,66,0,.10);
    --series-2:#0869a9;--series-2-soft:rgba(8,105,169,.10);
    --series-3:#6d28d9;--series-3-soft:rgba(109,40,217,.09);
    --series-4:#be185d;--series-4-soft:rgba(190,24,93,.09);
    --series-5:#087f5b;--series-5-soft:rgba(8,127,91,.09);
    --glow:radial-gradient(60% 42% at 12% -8%,rgba(255,122,26,.10),transparent 62%),radial-gradient(50% 36% at 88% -10%,rgba(109,40,217,.055),transparent 64%);
  }
}
