/* Suru Yako themes. Set <html data-theme="signal|patchbay|riso|scope|concrete">.
   Components use ONLY these semantic tokens (never a hex), so a theme is just this block.
   Default: signal. The user's choice is saved to their profile (User.theme) and mirrored in localStorage.

   Token reference
   --bg / --bgsize / --bgsolid   page background (may include a texture layer) / its tile size / plain colour
   --panel, --border, --line, --bw   card fill, card border shorthand, rule colour, border width
   --radius / --sradius / --bradius  card / stamp+chip / button corner radius
   --ink / --mute                text / secondary text (all pairs pass 4.5:1 on --bgsolid)
   --display, --dweight, --dstretch, --dwdth, --dcase   display face (venue names, big numbers) and its weight, width, case
   --ui / --mono / --btnfont     body face / labels+dates+stamps face / button face
   --hero, --herosize, --heroshadow   hero number colour, size on phone, treatment (glow, riso misregistration)
   --lead / --rebook             stage stamp colours for Lead and Rebook (extend: --talking, --deal, --booked, --parked)
   --btnbg, --btnfg, --btnshadow, --rebookbtn, --rebookbtnfg   primary and rebook buttons
   --proofbg, --prooffg, --proofborder   the "booked X, date" proof chip
   Theme extras: scope shows a scanline overlay (.t-scan); riso headlines use --heroshadow for the pink offset.
*/

:root[data-theme="signal"], :root:not([data-theme]) {
  --bg:radial-gradient(420px 300px at 80% -10%,rgba(185,168,255,.16),transparent 65%),#080a14;
  --bgsize:auto;
  --bgsolid:#080a14;
  --panel:#131829;
  --border:1px solid #262e4d;
  --line:#262e4d;
  --bw:1px;
  --radius:16px;
  --sradius:999px;
  --bradius:999px;
  --ink:#e9ebff;
  --mute:#8b91b8;
  --display:'Instrument Serif',Georgia,serif;
  --dweight:400;
  --dstretch:100%;
  --dwdth:100;
  --dcase:none;
  --ui:Geist,system-ui,sans-serif;
  --mono:'Geist Mono',monospace;
  --btnfont:Geist,sans-serif;
  --hero:#e9ebff;
  --herosize:84px;
  --heroshadow:none;
  --lead:#b9a8ff;
  --rebook:#ff5fa2;
  --btnbg:#e9ebff;
  --btnfg:#080a14;
  --btnshadow:none;
  --rebookbtn:#e9ebff;
  --rebookbtnfg:#080a14;
  --proofbg:rgba(185,168,255,.08);
  --prooffg:#cfd3f5;
  --proofborder:1px solid rgba(185,168,255,.3);
  --talking:#58b4ff;
  --deal:#ffb347;
  --booked:#4fe0a5;
  --parked:#6c7397;
}

:root[data-theme="patchbay"] {
  --bg:#141518;
  --bgsize:auto;
  --bgsolid:#141518;
  --panel:#1d1f23;
  --border:1px solid #2c2f35;
  --line:#3a3e46;
  --bw:1px;
  --radius:6px;
  --sradius:3px;
  --bradius:4px;
  --ink:#e6e3da;
  --mute:#a9aeb8;
  --display:'Barlow Condensed',sans-serif;
  --dweight:700;
  --dstretch:100%;
  --dwdth:100;
  --dcase:uppercase;
  --ui:'JetBrains Mono',monospace;
  --mono:'Barlow Condensed',sans-serif;
  --btnfont:'Barlow Condensed',sans-serif;
  --hero:#ffd23f;
  --herosize:80px;
  --heroshadow:0 0 14px rgba(255,210,63,.45);
  --lead:#36c5f0;
  --rebook:#ff7a1a;
  --btnbg:#e6e3da;
  --btnfg:#141518;
  --btnshadow:0 3px 0 #9d998e;
  --rebookbtn:#ff7a1a;
  --rebookbtnfg:#141518;
  --proofbg:#141518;
  --prooffg:#cfccc3;
  --proofborder:1px solid #2c2f35;
  --talking:#36c5f0;
  --deal:#ffd23f;
  --booked:#7bd88f;
  --parked:#6b7079;
}

:root[data-theme="riso"] {
  --bg:radial-gradient(rgba(29,27,26,.08) .8px,transparent 1px),#f3eee2;
  --bgsize:5px 5px;
  --bgsolid:#f3eee2;
  --panel:#fbf7ee;
  --border:2px solid #1d1b1a;
  --line:#1d1b1a;
  --bw:2px;
  --radius:0;
  --sradius:0;
  --bradius:0;
  --ink:#1d1b1a;
  --mute:#5b5650;
  --display:Archivo,'Arial Narrow',sans-serif;
  --dweight:900;
  --dstretch:62%;
  --dwdth:62;
  --dcase:uppercase;
  --ui:Archivo,sans-serif;
  --mono:'Space Mono',monospace;
  --btnfont:Archivo,sans-serif;
  --hero:#0078bf;
  --herosize:110px;
  --heroshadow:5px 4px 0 #ff48b0;
  --lead:#00609a;
  --rebook:#c8146f;
  --btnbg:#1d1b1a;
  --btnfg:#f3eee2;
  --btnshadow:4px 4px 0 #ff48b0;
  --rebookbtn:#1d1b1a;
  --rebookbtnfg:#f3eee2;
  --proofbg:#ffe800;
  --prooffg:#1d1b1a;
  --proofborder:0;
  --talking:#00609a;
  --deal:#1d1b1a;
  --booked:#1d1b1a;
  --parked:#5b5650;
}

:root[data-theme="scope"] {
  --bg:radial-gradient(420px 520px at 50% 40%,#0b1a10,#040705 75%);
  --bgsize:auto;
  --bgsolid:#040705;
  --panel:rgba(70,255,143,.04);
  --border:1px solid rgba(70,255,143,.35);
  --line:rgba(70,255,143,.5);
  --bw:1px;
  --radius:10px;
  --sradius:4px;
  --bradius:6px;
  --ink:#b9f5cf;
  --mute:#3c9e66;
  --display:'IBM Plex Mono',monospace;
  --dweight:500;
  --dstretch:100%;
  --dwdth:100;
  --dcase:uppercase;
  --ui:'IBM Plex Mono',monospace;
  --mono:'IBM Plex Mono',monospace;
  --btnfont:'IBM Plex Mono',monospace;
  --hero:#46ff8f;
  --herosize:72px;
  --heroshadow:0 0 10px rgba(70,255,143,.6);
  --lead:#46ff8f;
  --rebook:#ffb000;
  --btnbg:#46ff8f;
  --btnfg:#040705;
  --btnshadow:0 0 16px rgba(70,255,143,.45);
  --rebookbtn:#ffb000;
  --rebookbtnfg:#040705;
  --proofbg:transparent;
  --prooffg:#b9f5cf;
  --proofborder:1px dashed rgba(70,255,143,.45);
  --talking:#46ff8f;
  --deal:#ffb000;
  --booked:#9dffc4;
  --parked:#3c9e66;
}

:root[data-theme="concrete"] {
  --bg:radial-gradient(260px 200px at 20% 15%,rgba(255,255,255,.18),transparent 70%),radial-gradient(300px 260px at 85% 70%,rgba(0,0,0,.10),transparent 70%),#aeaca6;
  --bgsize:auto;
  --bgsolid:#aeaca6;
  --panel:transparent;
  --border:2px solid #111;
  --line:#111;
  --bw:2px;
  --radius:0;
  --sradius:0;
  --bradius:0;
  --ink:#111;
  --mute:#3a3935;
  --display:Anton,Impact,sans-serif;
  --dweight:400;
  --dstretch:100%;
  --dwdth:100;
  --dcase:uppercase;
  --ui:'Inter Tight',sans-serif;
  --mono:'Inter Tight',sans-serif;
  --btnfont:'Inter Tight',sans-serif;
  --hero:#111;
  --herosize:96px;
  --heroshadow:none;
  --lead:#111;
  --rebook:#8c0c07;
  --btnbg:#111;
  --btnfg:#fff;
  --btnshadow:none;
  --rebookbtn:#c4160f;
  --rebookbtnfg:#fff;
  --proofbg:#fff;
  --prooffg:#111;
  --proofborder:2px solid #111;
  --talking:#111;
  --deal:#111;
  --booked:#111;
  --parked:#3a3935;
}

/* Riso: deal = yellow highlight fill, booked = solid black stamp (use --deal as text on #ffe800). Concrete: stages differ by fill (solid/outline) not hue; red only for urgent. */
@media (prefers-reduced-motion: reduce) { .t-scan { display: none !important; } }
