/* ── tokens.css — canonical design-token file (3b sitting 1, v17.12.88) ──
   Single source of truth for BOTH shell themes. Loaded BEFORE shell.css
   (shell.html head); shell.css's former :root moved here verbatim.

   Vocabulary: shell's var names are canonical. The semantic accent family
   (--accent*) is the forward-looking set; --cyan/--cyan2/--cyan-dim/
   --cyan-glow are ALIASES kept so every existing consumer keeps resolving
   byte-identically — surface migration retires them lazily, do not add
   new consumers.

   Bare :root = dark (current shell look, zero visual delta at ship).
   [data-theme="light"] = the v4.1 landing design language (landing.html:18-27).
   Theme attribute is set pre-CSS by the inline script in shell.html <head>
   reading localStorage 'execbot_theme'; no stored value → no attribute → dark.

   Font tokens are DEFINE-ONLY this sitting — the ~80 font-family literals
   in shell.css migrate in later sittings.

   NOTE (updated 3d-1): the shell-settings.js injectCss :root fallback
   died in 2a and voice-css's :root --gold fallback died with the 2b
   voice-css migration (v17.12.90) — tokens.css is the sole owner of
   --green-dim/--gold/--muted2 on every shell surface. */

:root{
  /* surfaces */
  --bg:#141d30;--bg2:#1a2439;--surface:#182136;--surface2:#1e2942;--card:#1a2438;
  /* borders */
  --border:rgba(232,244,247,.10);--border2:rgba(232,244,247,.16);
  /* accent — semantic (canonical) */
  --accent:#00e5ff;          /* base accent */
  --accent-2:#18b8d8;        /* deep partner: gradients, hover text */
  --accent-bright:#00e5ff;   /* bright gradient end — dark palette tops out at base */
  --accent-dim:#0a3a47;      /* solid active-state / chip background */
  --accent-wash:rgba(0,229,255,.08);  /* soft tint: code bg, hover washes */
  --accent-glow:rgba(0,229,255,.45);  /* box-shadow glow color */
  --on-accent:#04121a;       /* ink on filled-accent surfaces */
  /* legacy aliases — existing consumers only; retire during surface migration */
  --cyan:var(--accent);--cyan2:var(--accent-2);--cyan-dim:var(--accent-dim);--cyan-glow:var(--accent-glow);
  /* brand wordmark pair (v17.17.28) — Exec = ink, Bot = accent, per canon */
  --brand-ink:#d8e7f5;--brand-accent:#00e5ff;
  /* brand mark strokes (v17.17.30) — frame ring + spine glyph, per canon */
  --mark-frame:#00e5ff;--mark-spine:#d8e7f5;
  /* status */
  --amber:#ffb830;--green:#00ff9c;--red:#ff4d6d;--violet:#8b7cff;--pink:#ff7eb6;
  --gold:#ffaa00;  /* promoted from the voice-css / shell-settings :root fallbacks (3b sitting 2a) */
  /* channel triplets (3b sitting 2a) — for the alpha variants outside the
     wash/glow set: rgba(var(--accent-rgb),.NN) keeps dark byte-identical
     while light re-hues automatically */
  --accent-rgb:0,229,255;--green-rgb:0,255,156;--amber-rgb:255,184,48;--red-rgb:255,77,109;--gold-rgb:255,170,0;
  --violet-rgb:139,124,255;--pink-rgb:255,126,182;  /* Arc A: specialist (violet) + send/logic (pink) node fills need triplets to theme */
  --green-dim:rgba(var(--green-rgb),.13);  /* promoted from shell-settings injectCss; re-resolves per theme via the triplet */
  /* ── automation cockpit — canvas token set (Arc A sitting 1, v17.12.97) ──
     Dark = the cockpit mock's literals verbatim (zero-delta vs the mock's look).
     Only the 3 genuinely-new hardcoded values (canvas-bg, grid, on-green) get a
     derived light value in [data-theme="light"] below — the rest ALIAS existing
     per-theme tokens (var() resolves lazily at use-time against the active
     theme), so light re-resolves for free. Edge hues use the status tokens
     (--accent/--violet/--green/--amber/--pink) via CSS classes — already themed. */
  --ck-canvas-bg:#12192b;          /* deep work-well behind the nodes */
  --ck-grid:rgba(0,229,255,.10);   /* faint accent dot-grid */
  --ck-node-bg-1:var(--card);      /* node gradient top */
  --ck-node-bg-2:var(--surface2);  /* node gradient bottom */
  --ck-node-border:var(--border2);
  --ck-node-sel:var(--accent);     /* selected / running ring */
  --ck-edge:var(--accent);         /* default edge stroke when no accent */
  --ck-port-bg:var(--bg);
  --ck-port-border:var(--border2);
  --ck-port-hot:var(--accent);     /* in-port lit while wiring */
  --ck-on-green:#032015;           /* ink on the green RUN button + done badge */
  /* text */
  --text:#dbe7f5;--text2:#8da4c4;--muted:#50617f;--muted2:#1a2a3a;
  /* elevation (shell had no shadow tokens; values lifted from its heaviest
     in-use dropdown/modal shadows: shell.css .pcard-menu / .cfgm) */
  --shadow:0 8px 24px rgba(0,0,0,.45);
  --shadow-lg:0 18px 60px rgba(0,0,0,.55);
  /* overlay scrim (3d-2) — modal backdrops. Dark = the settings modal's
     historical rgba(2,4,8,.85) verbatim (zero dark delta); light = ink-based
     neutral from the v4.1 family. */
  --scrim:rgba(2,4,8,.85);
  /* type (define-only this sitting) */
  --font-display:'Orbitron',sans-serif;
  --font-body:'Rajdhani',sans-serif;
  --font-mono:'JetBrains Mono',monospace;
}

/* ── LIGHT — v4.1 landing values; gaps derived (see 3b sitting-1 report) ── */
[data-theme="light"]{
  /* surfaces: v4.1 paper scale. bg/card/bg2(=cream) verbatim; surface/surface2
     derived as two deeper cream steps (inputs / hover-active states) */
  --bg:#fbfaf7;--bg2:#f4f1ea;--surface:#efebe0;--surface2:#e7e2d4;--card:#ffffff;
  /* borders: v4.1 --line / --line2 verbatim */
  --border:rgba(27,26,23,.10);--border2:rgba(27,26,23,.17);
  /* accent: teal family mapped — teal→accent, teal-deep→accent-2,
     teal-bright→accent-bright, teal-wash→accent-wash, teal-wash2→accent-dim;
     glow derived inside v4.1's observed teal-shadow range (.24–.7) */
  --accent:#10b3cc;
  --accent-2:#0a7f93;
  --accent-bright:#38d6ea;
  --accent-dim:rgba(16,179,204,.20);
  --accent-wash:rgba(16,179,204,.10);
  --accent-glow:rgba(16,179,204,.40);
  --on-accent:#04323a;
  /* status: hues carried over from dark, darkened to hold AA (≥4.5:1)
     as text on --bg #fbfaf7 (derived — v4.1 defines no status colors) */
  --amber:#a16207;--green:#047857;--red:#be123c;--violet:#6d28d9;--pink:#be185d;
  --gold:#9a6200;  /* derived: gold hue darkened to AA (≈4.9:1) on --bg */
  --accent-rgb:16,179,204;--green-rgb:4,120,87;--amber-rgb:161,98,7;--red-rgb:190,18,60;--gold-rgb:154,98,0;
  --violet-rgb:109,40,217;--pink-rgb:190,24,93;  /* teal-family light violet/pink (match --violet #6d28d9 / --pink #be185d) */
  /* --green-dim needs no override — the :root definition re-resolves here via --green-rgb */
  /* cockpit canvas — only the 3 genuinely-new values need a light derivation;
     the aliases above re-resolve via the light tokens automatically. */
  --ck-canvas-bg:#eeeae0;          /* derived: warm paper one step below --bg2 so white/cream nodes read as raised */
  --ck-grid:rgba(27,26,23,.08);    /* derived: graph-paper ink dots (v4.1 --text rgb at 8%) */
  --ck-on-green:#ffffff;           /* derived: white ink on the darker light-theme green (#047857) */
  /* text: v4.1 ink scale verbatim; muted2 derived (faint tone below muted,
     mirroring its dark role as near-surface fine print) */
  --text:#1b1a17;--text2:#56544d;--muted:#8a877d;--muted2:#b5b1a4;
  /* elevation: v4.1 verbatim */
  --shadow:0 1px 2px rgba(27,26,23,.04), 0 10px 34px -16px rgba(27,26,23,.18);
  --shadow-lg:0 34px 70px -34px rgba(16,179,204,.32), 0 14px 34px -18px rgba(27,26,23,.16);
  /* overlay scrim: ink-based (v4.1 neutral family) */
  --scrim:rgba(27,26,23,.45);
  /* brand wordmark pair (v17.17.28) — cream surface ink + deep-teal accent */
  --brand-ink:#1b1a17;--brand-accent:#0a7f93;
  /* brand mark strokes (v17.17.30) — light teal frame + deep-ink spine, per canon (landing.html:716) */
  --mark-frame:#10b3cc;--mark-spine:#082f3c;
  /* type */
  --font-display:'Space Grotesk',sans-serif;
  --font-body:'Inter',system-ui,sans-serif;
  --font-mono:'JetBrains Mono',monospace;
}
