/* 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);
  /* The brand accent is ink, not a hue. It flips with the theme - near-black on paper,
     near-white on dark - so emphasis comes from weight and contrast rather than colour.
     `--accent-on` is what sits ON an accent fill; never hardcode #fff there or the pill
     goes white-on-white the moment the site is in dark mode. `--accent-fixed` is for the
     handful of surfaces that are dark in BOTH themes - the video player chrome - where the
     theme-flipping accent would turn black on black.
     Status keeps its hue: `--live` is the only one the site has, and colour there is the
     meaning, not decoration. */
  --accent: #0c1322; --accent-soft: rgba(12,19,34,0.16); --accent-on: #f4f7fd;
  --accent-fixed: #f0eee9; --live: #22c55e;
  --field-sheen: rgba(255,255,255,0.64); --field-accent: rgba(12,19,34,0.10); --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;
}
/* 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-split.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. */
/* Dark is the house default, so it must also cover a page with no data-theme at all - the
   split second before the inline head script runs, and a visitor with JS off. The :not()
   keeps light winning whenever light is actually asked for, and the block above stays the
   shared base so theme-neutral tokens (--accent-fixed, --live, --grotesk, type, radii) are
   still defined here. */
[data-theme="dark"], :root:not([data-theme="light"]) {
  /* 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);
  --accent: #f0eee9; --accent-soft: rgba(240,238,233,0.20); --accent-on: #14161b;
  --field-sheen: rgba(255,255,255,0.04); --field-accent: rgba(240,238,233,0.06); --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;
}
