/* RSH AI — landing v3 design tokens. Theme-aware (light / matte-dark), liquid glass.
   Loaded before site.css on every page; site.css carries the rules, this file the vocabulary. */
:root, [data-theme="light"] {
  --bg: #eef0f6;
  --ink: #0c1322; --ink-60: rgba(12,19,34,0.68); --ink-40: rgba(12,19,34,0.46);
  --hairline: rgba(12,19,34,0.14);
  --blue: #0ea5e9; --blue-soft: rgba(14,165,233,0.2);
  --field-sheen: rgba(255,255,255,0.64); --field-blue: rgba(14,165,233,0.16); --field-depth: rgba(12,19,34,0.045);
  --glass-tint: rgba(255,255,255,0.08);
  --glass-border: rgba(12,19,34,0.22);
  --glass-spec: rgba(255,255,255,0.32); --glass-spec-2: rgba(12,19,34,0.10);
  --glass-shadow: rgba(13,20,50,0.16);
  --pill-bg: #0c1322; --pill-ink: #f4f7fd;
  --logo-filter: brightness(0); --logo-op: 0.66;
  --grotesk: "Space Grotesk", system-ui, sans-serif;
  --serif: "Instrument Serif", Georgia, serif;
}
/* One shared vocabulary for type and radius. The site had 39 distinct font sizes and 22
   distinct radii, a third of the spread being half-pixel steps (13.5 beside 13, 11.5 beside
   11) that read as drift rather than hierarchy. Every half-step rounds UP to the next step:
   rounding down shrank the copy across the whole site, and this reads airier at the sizes
   that carry actual reading. The video overlay files keep their own sizes - they are scaled
   against the player, not the page. */
:root {
  --fs-micro: 9px; --fs-tiny: 10px; --fs-small: 11px; --fs-body: 12px;
  --fs-lead: 13px; --fs-copy: 14px; --fs-sub: 15px; --fs-base: 16px; --fs-title: 17px;
  --r-xs: 6px; --r-sm: 10px; --r-md: 14px; --r-lg: 18px; --r-xl: 22px; --r-pill: 999px;
  /* hero-downloads.css and download-counter.css reach for --muted in five places and it was
     never declared, so `color: var(--muted)` was invalid at computed-value time and fell back
     to inherit - the "Download for" caption, the arch label and the download count all
     rendered at full ink instead of secondary. Aliased rather than renamed at the call sites
     so it stays theme-aware. */
  --muted: var(--ink-40);
}
/* Icon stroke weights are deliberately NOT normalised: the 2.4 and 2.6 glyphs are 15-16px
   renders of a 24px viewBox, so the heavier stroke is optical compensation that makes them
   match the 24px marks. Weight follows rendered size, not one global number. */
[data-theme="dark"] {
  /* Nexa dashboard near-black - one dark family across the whole platform. */
  --bg: #0a0a0d;
  --ink: #f0eee9; --ink-60: rgba(240,238,233,0.62); --ink-40: rgba(240,238,233,0.40);
  --hairline: rgba(255,255,255,0.11);
  --blue: #38bdf8; --blue-soft: rgba(56,189,248,0.22);
  --field-sheen: rgba(255,255,255,0.04); --field-blue: rgba(56,189,248,0.05); --field-depth: rgba(255,255,255,0.022);
  --glass-tint: rgba(255,255,255,0.03);
  --glass-border: rgba(244,248,255,0.16);
  --glass-spec: rgba(244,248,255,0.22); --glass-spec-2: rgba(0,0,0,0.24);
  --glass-shadow: rgba(0,0,0,0.42);
  --pill-bg: #eceff6; --pill-ink: #14161b;
  --logo-filter: brightness(0) invert(1); --logo-op: 0.82;
}
