/* CACHE: every page links this as /assets/tokens.css?v=2026-08-24. Hostinger
 * serves assets with max-age=604800, so WITHOUT a version in the URL a
 * returning visitor keeps the old CSS for a week and never sees a fix. Bump the
 * date on any change to tokens.css or page.css:
 *   grep -rln 'assets/tokens.css?v=' site | xargs sed -i '' 's/OLD/NEW/g'
 * promo.js carries its own token, tied to the offer (?v=89-4450), because the
 * failure it guards against is a price mismatch rather than a stale style.
 */
/* Design tokens. The ONE definition for the whole site.
 *
 * Before this file, eight pages each carried their own :root block and two of
 * them had already drifted: --text-dim was #6a8a82 on six pages and #8aa9a1 on
 * the two built most recently, and --border was 0.1 against 0.12. Unified on
 * the newer pair, which is both the direction the recent work took and the more
 * legible one — #8aa9a1 on the page background measures 7.78:1 against the old
 * 5.24:1 (WCAG AA needs 4.5:1 for body text).
 */
/* Space Mono's @ has a bowl so tight it reads as an 'a' at body size:
 * "loudpacket@gmail.com" looked like "loudpacketagmail.com" in the trial
 * form, where a misread costs a signup. unicode-range: U+0040 serves ONLY
 * the @ from Monaco, which has an open spiral. Every other glyph on the
 * site is still Space Mono, so the brand is untouched.
 */
@font-face {
  font-family: 'Open At';
  src: local('Monaco'), local('Menlo'), local('Consolas'), local('DejaVu Sans Mono');
  unicode-range: U+0040;
}

:root {
  --bg: #0a0a0f;
  --bg-subtle: #0e0e16;
  --bg-card: #11111a;

  --cyan: #3dffd8;
  --cyan-dim: #1a8a6e;
  --cyan-glow: rgba(61, 255, 216, 0.15);

  --text: #e0f0ec;
  --text-dim: #8aa9a1;

  --mono: 'Open At', 'Space Mono', 'SF Mono', 'Fira Code', monospace;
  --sans: -apple-system, BlinkMacSystemFont, system-ui, sans-serif;

  --border: rgba(61, 255, 216, 0.12);
}
