/* Dance Event Viewer palette collection. Thirteen user-selectable themes share the same
   layout, falling-ash effect, event functionality, and accessible UI states. The selected
   data-theme is set by js/theme-switch.js and remembered in localStorage("dev-theme"). */

/* ---- Moonlit Ember (default) ---- */
:root:not([data-theme]), :root[data-theme="ember"] {
  --bg:#0b0c15; --bg-raised:#151624; --bg-card:#1b1822; --border:#3d2b37;
  --text:#f6eadf; --text-dim:#a99ca5; --accent:#e8785b; --accent-pink:#db8d85;
  --accent-soft:#3b2027; --badge-warn-bg:#493323; --badge-warn-fg:#f3c58e;
  --chip-on-bg:#47252d; --chip-on-border:#e8785b; --danger:#f28c82;
  /* shared-effect colors — ember flavor */
  --page-bg:
    radial-gradient(circle at 72% 4%,rgba(92,43,62,.38) 0,transparent 34rem),
    radial-gradient(circle at 12% 55%,rgba(58,35,48,.22) 0,transparent 30rem),
    linear-gradient(180deg,#111421 0%,#0b0c15 58%,#080910 100%);
  --ash-a:#d98068; --ash-b:#9c7580; --ash-c:#e6aa87; --ash-glow:rgba(232,120,91,.22);
  --pulse-color:#e59a83; --pulse-shadow:0 0 6px rgba(232,120,91,.5),0 0 1px rgba(229,154,131,.9);
}

/* ---- Classic Blue (the site's original palette; --bg/--text/--accent/… inherit from
   styles.css :root, so only the shared-effect colors are declared here) ---- */
:root[data-theme="classic"] {
  --page-bg:
    radial-gradient(circle at 72% 4%,rgba(38,86,130,.40) 0,transparent 34rem),
    radial-gradient(circle at 12% 55%,rgba(28,58,96,.24) 0,transparent 30rem),
    linear-gradient(180deg,#101a2a 0%,#0e1420 58%,#0a0f18 100%);
  --ash-a:#5aa0e6; --ash-b:#7f88d0; --ash-c:#8fc6ef; --ash-glow:rgba(76,194,255,.24);
  --pulse-color:#7fc0ef; --pulse-shadow:0 0 6px rgba(76,194,255,.5),0 0 1px rgba(140,198,239,.9);
}

/* ---- Additional palettes (added 2026-07-18) ---- */
:root[data-theme="ennis"] {
  --bg:#17131b; --bg-raised:#2c252e; --bg-card:#2d1a22; --border:#584b51;
  --text:#ead8d2; --text-dim:#b8a196; --accent:#e3b3db; --accent-pink:#8488aa;
  --accent-soft:#432d40; --badge-warn-bg:#49333f; --badge-warn-fg:#e8c6d8;
  --chip-on-bg:#493348; --chip-on-border:#e3b3db; --danger:#f0929a;
  --page-bg:radial-gradient(circle at 72% 4%,rgba(59,44,60,.55) 0,transparent 34rem),linear-gradient(180deg,#22161e,#17131b 68%,#100d12);
  --ash-a:#e3b3db; --ash-b:#8488aa; --ash-c:#b8a196; --ash-glow:rgba(227,179,219,.24);
  --pulse-color:#d8abd1; --pulse-shadow:0 0 6px rgba(227,179,219,.5);
}
:root[data-theme="cybergum"] {
  --bg:#211923; --bg-raised:#3a2b3b; --bg-card:#2d4a54; --border:#65455f;
  --text:#ffd8ba; --text-dim:#eb8d9c; --accent:#20b8b6; --accent-pink:#d768b5;
  --accent-soft:#214f52; --badge-warn-bg:#5b3c40; --badge-warn-fg:#ffd8ba;
  --chip-on-bg:#244e52; --chip-on-border:#20b8b6; --danger:#ff7286;
  --page-bg:radial-gradient(circle at 72% 4%,rgba(79,36,77,.65) 0,transparent 34rem),linear-gradient(180deg,#2f2534,#211923 58%,#171d23);
  --ash-a:#eb8d9c; --ash-b:#20b8b6; --ash-c:#bc4a9b; --ash-glow:rgba(235,141,156,.25);
  --pulse-color:#eb8d9c; --pulse-shadow:0 0 6px rgba(235,141,156,.5);
}
:root[data-theme="crimson"] {
  --bg:#09010d; --bg-raised:#17001d; --bg-card:#270022; --border:#611033;
  --text:#f6e8ee; --text-dim:#c58298; --accent:#0ce6f2; --accent-pink:#ff2b62;
  --accent-soft:#123d49; --badge-warn-bg:#4f1429; --badge-warn-fg:#ffb6ca;
  --chip-on-bg:#143e49; --chip-on-border:#0ce6f2; --danger:#ff4b6f;
  --page-bg:radial-gradient(circle at 72% 4%,rgba(69,3,39,.7) 0,transparent 34rem),linear-gradient(180deg,#17001d,#09010d 70%,#030005);
  --ash-a:#ff0546; --ash-b:#0ce6f2; --ash-c:#9c173b; --ash-glow:rgba(255,5,70,.3);
  --pulse-color:#0ce6f2; --pulse-shadow:0 0 7px rgba(12,230,242,.58);
}
:root[data-theme="deadcity"] {
  --bg:#0c0a08; --bg-raised:#181410; --bg-card:#241e18; --border:#504234;
  --text:#d8d0c0; --text-dim:#a98b77; --accent:#d35b35; --accent-pink:#d09040;
  --accent-soft:#44251b; --badge-warn-bg:#4b3820; --badge-warn-fg:#efc47b;
  --chip-on-bg:#47271b; --chip-on-border:#d35b35; --danger:#e66b55;
  --page-bg:radial-gradient(circle at 72% 4%,rgba(53,42,32,.66) 0,transparent 34rem),linear-gradient(180deg,#181410,#0c0a08 68%,#070604);
  --ash-a:#b89880; --ash-b:#c04020; --ash-c:#718c3d; --ash-glow:rgba(192,64,32,.24);
  --pulse-color:#d09040; --pulse-shadow:0 0 6px rgba(208,144,64,.5);
}
:root[data-theme="bloodmoon"] {
  --bg:#130310; --bg-raised:#270721; --bg-card:#3c0921; --border:#64122e;
  --text:#f4d9df; --text-dim:#c17789; --accent:#ff353a; --accent-pink:#e0272b;
  --accent-soft:#54101f; --badge-warn-bg:#531a20; --badge-warn-fg:#ffc0c4;
  --chip-on-bg:#56111f; --chip-on-border:#ff353a; --danger:#ff676b;
  --page-bg:radial-gradient(circle at 72% 4%,rgba(82,11,32,.72) 0,transparent 34rem),linear-gradient(180deg,#270721,#130310 68%,#090106);
  --ash-a:#ff252b; --ash-b:#7d0f1f; --ash-c:#d3181c; --ash-glow:rgba(255,37,43,.3);
  --pulse-color:#ff6266; --pulse-shadow:0 0 7px rgba(255,37,43,.58);
}
:root[data-theme="hope"] {
  --bg:#150e10; --bg-raised:#272739; --bg-card:#393849; --border:#4f5964;
  --text:#e1e9eb; --text-dim:#9db0b4; --accent:#b7ced2; --accent-pink:#8e9caf;
  --accent-soft:#3a4650; --badge-warn-bg:#494431; --badge-warn-fg:#ddd2a8;
  --chip-on-bg:#3b4750; --chip-on-border:#b7ced2; --danger:#d98b8f;
  --page-bg:radial-gradient(circle at 72% 4%,rgba(57,56,73,.65) 0,transparent 34rem),linear-gradient(180deg,#272739,#150e10 70%,#0d090a);
  --ash-a:#9db5ba; --ash-b:#687688; --ash-c:#d8e0e2; --ash-glow:rgba(157,181,186,.25);
  --pulse-color:#b7ced2; --pulse-shadow:0 0 6px rgba(157,181,186,.5);
}
:root[data-theme="neonmoon"] {
  --bg:#000; --bg-raised:#211932; --bg-card:#2e2246; --border:#5f4886;
  --text:#eee9ff; --text-dim:#a78bd3; --accent:#70b9fb; --accent-pink:#fe279f;
  --accent-soft:#293d60; --badge-warn-bg:#4b3158; --badge-warn-fg:#f0b4ec;
  --chip-on-bg:#2b3f63; --chip-on-border:#70b9fb; --danger:#ff5d92;
  --page-bg:radial-gradient(circle at 72% 4%,rgba(95,72,134,.7) 0,transparent 34rem),linear-gradient(180deg,#1a1128,#08040e 62%,#000);
  --ash-a:#fe0094; --ash-b:#70b9fb; --ash-c:#8767bd; --ash-glow:rgba(254,0,148,.3);
  --pulse-color:#70b9fb; --pulse-shadow:0 0 7px rgba(112,185,251,.6);
}
:root[data-theme="monster"] {
  --bg:#2b0341; --bg-raised:#103b4f; --bg-card:#08785e; --border:#467f72;
  --text:#f2eb7c; --text-dim:#b8dc69; --accent:#ef75aa; --accent-pink:#42b7b8;
  --accent-soft:#5b275e; --badge-warn-bg:#605923; --badge-warn-fg:#fff59a;
  --chip-on-bg:#5a285e; --chip-on-border:#ef75aa; --danger:#ff83a4;
  --page-bg:radial-gradient(circle at 72% 4%,rgba(139,41,150,.72) 0,transparent 34rem),linear-gradient(180deg,#103b4f,#182743 54%,#2b0341);
  --ash-a:#de5b91; --ash-b:#89d63c; --ash-c:#289094; --ash-glow:rgba(222,91,145,.3);
  --pulse-color:#f2eb7c; --pulse-shadow:0 0 7px rgba(242,235,124,.52);
}
:root[data-theme="technobike"] {
  --bg:#101923; --bg-raised:#243d4b; --bg-card:#234b54; --border:#39747a;
  --text:#d8fff0; --text-dim:#83cdb4; --accent:#07ef5c; --accent-pink:#2fc995;
  --accent-soft:#185c42; --badge-warn-bg:#4a4920; --badge-warn-fg:#dfe986;
  --chip-on-bg:#185c42; --chip-on-border:#07ef5c; --danger:#ff7d73;
  --page-bg:radial-gradient(circle at 72% 4%,rgba(42,97,110,.7) 0,transparent 34rem),linear-gradient(180deg,#1d2938,#101923 70%,#0a1017);
  --ash-a:#07ef5c; --ash-b:#13b37e; --ash-c:#2a93a0; --ash-glow:rgba(7,239,92,.28);
  --pulse-color:#07ef5c; --pulse-shadow:0 0 7px rgba(7,239,92,.58);
}
:root[data-theme="baldur"] {
  --bg:#091118; --bg-raised:#172b35; --bg-card:#194146; --border:#426a6b;
  --text:#f5e8d1; --text-dim:#a9c9c3; --accent:#2cc0c1; --accent-pink:#e36c50;
  --accent-soft:#1d5254; --badge-warn-bg:#59412c; --badge-warn-fg:#f4ce91;
  --chip-on-bg:#1c5153; --chip-on-border:#2cc0c1; --danger:#f17a65;
  --page-bg:radial-gradient(circle at 72% 4%,rgba(38,62,67,.75) 0,transparent 34rem),linear-gradient(180deg,#172b35,#0f1b26 64%,#091118);
  --ash-a:#dd5639; --ash-b:#20a5a6; --ash-c:#f5e8d1; --ash-glow:rgba(32,165,166,.3);
  --pulse-color:#2cc0c1; --pulse-shadow:0 0 7px rgba(32,165,166,.58);
}
:root[data-theme="crimson4"] {
  --bg:#1b0326; --bg-raised:#300c30; --bg-card:#461436; --border:#71334d;
  --text:#eff9d6; --text-dim:#c79d95; --accent:#d26758; --accent-pink:#a53669;
  --accent-soft:#5a243c; --badge-warn-bg:#5a3b2b; --badge-warn-fg:#f1c69c;
  --chip-on-bg:#5a243c; --chip-on-border:#d26758; --danger:#ef756c;
  --page-bg:radial-gradient(circle at 72% 4%,rgba(122,28,75,.72) 0,transparent 34rem),linear-gradient(180deg,#300c30,#1b0326 68%,#100117);
  --ash-a:#ba5044; --ash-b:#7a1c4b; --ash-c:#eff9d6; --ash-glow:rgba(186,80,68,.3);
  --pulse-color:#d26758; --pulse-shadow:0 0 7px rgba(186,80,68,.58);
}

html,body { background:var(--bg); }
body {
  min-height:100vh;
  background-image:var(--page-bg);
  background-attachment:fixed;
}
#site-ash-layer { position:fixed; inset:0; z-index:0; overflow:hidden; pointer-events:none; }
#site-club-lights-layer {
  position:fixed; inset:0; z-index:0; overflow:hidden; pointer-events:none;
  mix-blend-mode:screen;
}
#site-club-lights-layer .club-beam {
  position:absolute; top:-28vh; width:22vw; min-width:150px; height:150vh;
  display:block; opacity:.075; transform-origin:50% 0;
  clip-path:polygon(44% 0,56% 0,100% 100%,0 100%);
  filter:blur(18px); will-change:transform,opacity;
}
.club-beam-a {
  left:-5vw; background:linear-gradient(to bottom,var(--accent),transparent 78%);
  animation:club-beam-left 15s ease-in-out -4s infinite alternate;
}
.club-beam-b {
  left:42vw; background:linear-gradient(to bottom,var(--accent-pink),transparent 80%);
  animation:club-beam-center 19s ease-in-out -11s infinite alternate;
}
.club-beam-c {
  right:-4vw; background:linear-gradient(to bottom,var(--ash-c),transparent 76%);
  animation:club-beam-right 17s ease-in-out -8s infinite alternate;
}
#club-light-bloom {
  position:absolute; left:50%; top:50%; width:74.8vmax; height:74.8vmax; display:block;
  border-radius:50%; opacity:0; transform:translate(-50%,-50%) scale(.62);
  background:radial-gradient(circle,var(--club-bloom-color,var(--accent)) 0,transparent 68%);
  filter:blur(12px); will-change:left,top,transform,opacity;
}
#club-light-bloom.is-shining { animation:club-light-bloom var(--club-bloom-time,950ms) ease-out both; }
@keyframes club-beam-left {
  from { transform:rotate(-18deg) translateX(-7vw); opacity:.035; }
  to { transform:rotate(26deg) translateX(17vw); opacity:.11; }
}
@keyframes club-beam-center {
  from { transform:rotate(19deg) translateX(-18vw); opacity:.03; }
  to { transform:rotate(-22deg) translateX(13vw); opacity:.095; }
}
@keyframes club-beam-right {
  from { transform:rotate(14deg) translateX(8vw); opacity:.025; }
  to { transform:rotate(-28deg) translateX(-17vw); opacity:.1; }
}
@keyframes club-light-bloom {
  0% { opacity:0; transform:translate(-50%,-50%) scale(.58); }
  28% { opacity:.195; }
  100% { opacity:0; transform:translate(-50%,-50%) scale(1.08); }
}
.site-header,#activity-rail,.source-tabs,.controls,.status-line,#results,.site-footer { position:relative; z-index:1; }
#site-ash-layer i {
  position:absolute; top:-12px; left:var(--x); width:var(--s); height:calc(var(--s) * .72); display:block;
  opacity:.23; background:var(--ash-a); clip-path:polygon(0 35%,70% 0,100% 58%,34% 100%);
  filter:drop-shadow(0 0 3px var(--ash-glow));
  animation:moonlit-ash-fall var(--t) linear var(--d) infinite; will-change:transform;
}
#site-ash-layer i:nth-child(3n) { background:var(--ash-b); opacity:.17; }
#site-ash-layer i:nth-child(4n) { background:var(--ash-c); opacity:.2; }
@keyframes moonlit-ash-fall {
  0% { transform:translate3d(-16px,-4vh,0) rotate(0deg); }
  46% { transform:translate3d(22px,51vh,0) rotate(184deg); }
  100% { transform:translate3d(-9px,108vh,0) rotate(372deg); }
}
.controls,.filter-panel,.card,.list-row,.cal-toolbar,.map-popup-card { box-shadow:0 20px 55px rgba(0,0,0,.24); }
/* Traveling toggle off-state: muted like every other toggle, so "off" doesn't read as
   glowing/on (2026-07-20, Sean — the warm --accent-pink outline looked active when off).
   On state = base .past-toggle[aria-pressed="true"], which wins on specificity. */
.traveling-toggle[aria-pressed="false"] { background:transparent; color:var(--text-dim); border-color:var(--border); }
.activity-msg { color:var(--pulse-color); text-shadow:var(--pulse-shadow); }
.leaflet-container { background:#10111b; color:var(--text); }

/* Low-poly panel creature: injected and timed by club-lights.js. It rises from behind
   the main controls panel, glances around, then ducks away without accepting clicks. */
.controls-panel-inner { position:relative; z-index:2; }
.view-tabs-row { position:relative; z-index:3; }
.panel-peeker {
  position:absolute; left:var(--peeker-x,50%); top:39px; z-index:1;
  width:68px; height:72px; pointer-events:none; opacity:0;
  transform:translate(-50%,48px) rotate(var(--peeker-tilt,0deg));
  transform-origin:50% 100%;
  transition:transform .72s cubic-bezier(.2,.85,.25,1.15),opacity .28s ease;
  filter:drop-shadow(0 5px 8px rgba(0,0,0,.46));
  will-change:transform,opacity;
}
.panel-peeker.is-peeking {
  opacity:1; transform:translate(-50%,-40px) rotate(var(--peeker-tilt,0deg));
}
.panel-peeker.is-peeking.is-over-tabs {
  transform:translate(-50%,-78px) rotate(var(--peeker-tilt,0deg));
}
.panel-peeker-head {
  position:absolute; left:5px; top:8px; width:58px; height:58px;
  clip-path:polygon(50% 0,89% 18%,100% 61%,72% 100%,28% 100%,0 61%,11% 18%);
  background:
    linear-gradient(145deg,transparent 0 48%,color-mix(in srgb,var(--accent-pink) 65%,#101018) 49% 68%,transparent 69%),
    linear-gradient(35deg,color-mix(in srgb,var(--accent) 74%,#fff) 0 34%,var(--accent) 35% 57%,color-mix(in srgb,var(--accent-pink) 64%,#111) 58% 100%);
  border-radius:36% 36% 44% 44%;
}
.panel-peeker-ear {
  position:absolute; top:1px; width:25px; height:29px;
  background:var(--accent-pink); clip-path:polygon(50% 0,100% 100%,0 76%);
}
.panel-peeker-ear.left { left:5px; transform:rotate(-16deg); }
.panel-peeker-ear.right { right:5px; transform:scaleX(-1) rotate(-16deg); }
.panel-peeker-eye {
  position:absolute; top:27px; z-index:2; width:13px; height:13px; border-radius:50%;
  background:var(--text); box-shadow:0 0 9px var(--accent);
  overflow:hidden;
}
.panel-peeker-eye.left { left:17px; }
.panel-peeker-eye.right { right:17px; }
.panel-peeker-eye::after {
  content:""; position:absolute; left:4px; top:4px; width:6px; height:6px;
  border-radius:50%; background:var(--bg); animation:panel-peeker-glance 1.15s ease-in-out infinite alternate;
}
.panel-peeker-snout {
  position:absolute; left:29px; top:46px; z-index:2; width:10px; height:7px;
  background:var(--bg); clip-path:polygon(50% 100%,0 0,100% 0);
}
@keyframes panel-peeker-glance {
  from { transform:translateX(-3px); }
  to { transform:translateX(2px); }
}
.anniversary-feature {
  --anniversary-bg-height:438px;
  width:753px; height:438px; margin:12px auto 18px;
  position:relative; overflow:visible; pointer-events:none;
  border:0; border-radius:0; background:transparent;
}
.anniversary-feature-flag,.anniversary-feature-words {
  position:absolute; left:0; width:100%; display:block;
  background-image:url("../assets/usa-250-anniversary-transparent.png");
  background-repeat:no-repeat; background-size:100% var(--anniversary-bg-height);
}
.anniversary-feature-flag {
  top:0; height:66%; background-position:center top;
  transform-origin:0 50%;
  animation:anniversary-flag-wave 1.35s ease-in-out infinite alternate;
  will-change:transform,filter;
}
.anniversary-feature-words {
  bottom:0; height:36%; background-position:center bottom;
  filter:
    brightness(1.28) saturate(1.12)
    drop-shadow(1px 0 0 #fff) drop-shadow(-1px 0 0 #fff)
    drop-shadow(0 1px 0 #fff) drop-shadow(0 -1px 0 #fff);
}
.site-header .anniversary-feature {
  position:relative; left:auto; top:auto; bottom:auto; z-index:4;
  width:min(753px,calc(100vw - 34px)); height:438px; margin:0 auto 18px;
}
@keyframes anniversary-flag-wave {
  from { transform:perspective(360px) rotateY(-2.4deg) skewY(-.7deg) scaleX(.992); filter:brightness(.96); }
  to { transform:perspective(360px) rotateY(3.2deg) skewY(.9deg) scaleX(1.012); filter:brightness(1.06); }
}
@media (max-width:600px) {
  #site-club-lights-layer .club-beam { width:34vw; opacity:.055; filter:blur(14px); }
  #club-light-bloom { width:98.6vmax; height:98.6vmax; }
  .panel-peeker { top:37px; transform:translate(-50%,42px) scale(.88) rotate(var(--peeker-tilt,0deg)); }
  .panel-peeker.is-peeking { transform:translate(-50%,-34px) scale(.88) rotate(var(--peeker-tilt,0deg)); }
  .panel-peeker.is-peeking.is-over-tabs { transform:translate(-50%,-84px) scale(.88) rotate(var(--peeker-tilt,0deg)); }
  .anniversary-feature { width:calc(100vw - 34px); margin:10px auto 14px; }
  .site-header .anniversary-feature {
    --anniversary-bg-height:auto;
    position:relative; left:auto; top:auto; bottom:auto;
    width:calc(100vw - 34px); height:auto; aspect-ratio:3/2;
    margin:10px auto 14px; z-index:1;
  }
}
@media (prefers-reduced-motion:reduce) {
  #site-ash-layer,#site-club-lights-layer,.panel-peeker { display:none; }
  .anniversary-feature-flag { animation:none; }
}
