/* ══ RightCortex Arcade — THEME TOKENS ════════════════════════════════════
 *
 * Tokens only. No component rules, no selectors beyond :root and body.arcade.
 *
 * WHY THIS IS A SEPARATE FILE: stamp.html has its own inline stylesheet and
 * deliberately does not load arcade.css (that file's components would collide
 * with Stamp's own). But it DOES read these tokens — and because it never had
 * them, every var(--arc-gold) silently fell back to the arcade default and
 * every var(--arc-dot) (which has no fallback) went invalid-at-computed-value
 * time, so the collectible patterns rendered as `none` in ALL five themes.
 * Themes appeared not to work in Stamp at all. Tokens live here so all three
 * pages can share them without sharing components.
 *
 * Load this BEFORE arcade.css, and before any inline <style> that reads a token.
 */

/* ── THEME TOKENS ────────────────────────────────────────────────────────
 * Every themed rule below reads these, so a new theme is a token block plus a
 * cast in arcade-themes.js — no new CSS. `data-theme` is set on <body> by
 * arcade.js from the worn character's id.
 *
 * --arc-accent  primary neon (frames, headings)
 * --arc-gold    progress/score highlight
 * --arc-wall    heavy structural colour (Stamp's maze walls)
 * --arc-panel   panel background
 * --arc-scan    scanline strength — the screen texture
 * --arc-radius  how soft the furniture is; the factions differ in silhouette
 */
/* Defaults live on :root, NOT on body.arcade — the settings toggle renders while
   arcade mode is OFF (that is how you turn it on), and a token that resolves to
   nothing makes every color-mix() using it invalid. */
:root{
  --arc-accent:#00d4ff; --arc-gold:#ffd23f; --arc-wall:#2b45e8;
  --arc-panel:#0a121c; --arc-ink:#c3d3de; --arc-dim:#4a5a68;
  --arc-scan:rgba(255,255,255,.03); --arc-radius:6px;
  /* Overdue / danger. NOT --arc-gold: it must never read as a reward. */
  --arc-alert:#ff4d4d;
  --arc-font:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  /* The collectible. Each faction picks up something different, which is half of
     why the UI stopped reading as Pac-Man-with-new-paint. */
  --arc-dot:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Ccircle cx='6' cy='6' r='3.2' fill='%23ffd23f'/%3E%3C/svg%3E");
}
/* Forge — hot metal on gunmetal, hard edges. */
body.arcade[data-theme="forge"]{
  --arc-alert:#e8552f;
  --arc-dot:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M6,2.2 L9.5,4.3 L9.5,7.7 L6,9.8 L2.5,7.7 L2.5,4.3 Z' fill='%23d9a441'/%3E%3C/svg%3E");
  --arc-accent:#d9782a; --arc-gold:#d9a441; --arc-wall:#4a3a26;
  --arc-panel:#0f0d0c; --arc-scan:rgba(255,170,90,.028); --arc-radius:1px;
}
/* Aether — violet-gold light, soft and rounded. */
body.arcade[data-theme="aether"]{
  --arc-alert:#b8557f;
  --arc-dot:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M6,1.8 L8.6,6 L6,10.2 L3.4,6 Z' fill='%23c9b877'/%3E%3C/svg%3E");
  --arc-accent:#8f7fc4; --arc-gold:#c9b877; --arc-wall:#3d2f6b;
  --arc-panel:#0b0912; --arc-scan:rgba(180,160,230,.03); --arc-radius:3px;
}
/* Hive — bioluminescent green on deep purple, organic. */
body.arcade[data-theme="hive"]{
  --arc-alert:#d94f6a;
  --arc-dot:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cellipse cx='6' cy='6' rx='2.5' ry='3.6' fill='%23a8bf4a'/%3E%3C/svg%3E");
  --arc-accent:#7fa83a; --arc-gold:#a8bf4a; --arc-wall:#3a2044;
  --arc-panel:#0d0810; --arc-scan:rgba(140,190,80,.03); --arc-radius:10px;
}
/* Legion — olive drab and gunmetal, hard edges. Human infantry. */
body.arcade[data-theme="legion"]{
  --arc-alert:#c0392b;
  --arc-dot:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M6,2.2 L9.6,9.4 L6,7.6 L2.4,9.4 Z' fill='%23c9b26a'/%3E%3C/svg%3E");
  --arc-accent:#8fa87a; --arc-gold:#c9b26a; --arc-wall:#3f4a3a;
  --arc-panel:#0d100c; --arc-scan:rgba(180,200,160,.03); --arc-radius:2px;
}
