/* Halloween: a seasonal layer over whichever theme you use, while <html> has season-halloween (30–31 October;
   core.js switches it on and off by date, Settings ▸ Appearance can turn seasonal themes off). Midnight purple
   with parchment text and a soft pumpkin glow; bats and a spider web as decoration (static/core.js adds them).
   The orange "needs you" light keeps its own colour so alerts still stand out. */
html.season-halloween {
  --canvas: #15101d; --surface: #201830; --ink: #f1e6d2; --muted: #b4a6c6; --faint: #85779a;
  --line: #3a2c4d; --line-soft: #2b2139;
  --rail: #0e0a14; --rail-hover: #1d1529; --rail-active: #2a1f3a; --rail-ink: #f1e6d2; --rail-muted: #9b8cb0;
  --accent: #b07cff; --accent-ink: #120c1a; --accent-soft: rgba(176, 124, 255, .16);
  --bad: #ff6b6b; --bad-soft: rgba(255, 107, 107, .14);
  --key: linear-gradient(#2a2040, #1f172f);
  --key-shadow: inset 0 1px 0 rgba(255, 255, 255, .06), inset 0 -2px 0 rgba(0, 0, 0, .35), 0 1px 3px rgba(0, 0, 0, .5);
  --pumpkin: #ff8a1f;
  color-scheme: dark;
}
html.season-halloween body {
  background:
    radial-gradient(1200px 500px at 85% -10%, rgba(255, 138, 31, .10), transparent 60%),
    radial-gradient(900px 600px at 5% 110%, rgba(176, 124, 255, .10), transparent 60%),
    radial-gradient(rgba(241, 230, 210, .05) 1px, transparent 1.2px) 0 0 / 18px 18px,
    var(--canvas);
}
html.season-halloween ::selection { background: rgba(176, 124, 255, .35); }
html.season-halloween .panel, html.season-halloween .agenda-card, html.season-halloween .ibx,
html.season-halloween .item.on { box-shadow: 0 0 0 1px var(--line), 0 6px 24px rgba(255, 138, 31, .05); }
html.season-halloween h1.title { text-shadow: 0 0 18px rgba(255, 138, 31, .35); }
html.season-halloween input, html.season-halloween textarea, html.season-halloween select {
  background: #181225; color: var(--ink); border-color: var(--line);
}
html.season-halloween .btn.primary { background: linear-gradient(#ff9a3d, #f07a12); color: #1a0f05; border-color: #c45f08; }
html.season-halloween a { color: #c9a2ff; }
html.season-halloween .tag, html.season-halloween .pill { background: rgba(176, 124, 255, .14); color: var(--ink); }

/* The decoration layer: never in the way of a click */
.halloween-fx { position: fixed; inset: 0; pointer-events: none; z-index: 1; overflow: hidden; }
.halloween-fx .web { position: absolute; top: -6px; right: -6px; width: 150px; height: 150px; opacity: .22; }
.halloween-fx .bat { position: absolute; top: 12%; left: -60px; width: 34px; height: 18px; opacity: .55;
  animation: hw-fly 22s linear infinite; }
.halloween-fx .bat svg { width: 100%; height: 100%; animation: hw-flap .35s ease-in-out infinite alternate; transform-origin: center; }
.halloween-fx .bat:nth-child(2) { top: 26%; animation-duration: 28s; animation-delay: -9s; width: 24px; opacity: .4; }
.halloween-fx .bat:nth-child(3) { top: 8%; animation-duration: 35s; animation-delay: -20s; width: 20px; opacity: .3; }
.halloween-fx .pumpkin { position: absolute; left: 18px; bottom: 18px; width: 44px; opacity: .9; filter: drop-shadow(0 0 10px rgba(255, 138, 31, .55)); }
@keyframes hw-fly {
  0% { transform: translate(0, 0); } 25% { transform: translate(28vw, 6vh); } 50% { transform: translate(56vw, -2vh); }
  75% { transform: translate(84vw, 5vh); } 100% { transform: translate(110vw, 0); }
}
@keyframes hw-flap { from { transform: scaleY(1); } to { transform: scaleY(.55); } }
@media (prefers-reduced-motion: reduce) { .halloween-fx .bat { display: none; } }

/* Places where the themes use fixed light colours: make them night-friendly too */
html.season-halloween .btn { border-color: var(--line); color: var(--ink); }
html.season-halloween .btn:hover { border-color: #5a4672; }
html.season-halloween .btn.quiet { color: var(--muted); }
html.season-halloween .seg { background: #181225; border-color: var(--line); }
html.season-halloween .seg a { color: var(--muted); background: transparent; }
html.season-halloween .seg a.on { background: #2f2446; color: var(--ink); box-shadow: none; }
html.season-halloween .cal-day.on, html.season-halloween .wk-head.today b { background: var(--pumpkin); color: #1a0f05; }
html.season-halloween .cal-day.today, html.season-halloween .wk-head.today span { color: var(--pumpkin); }
html.season-halloween .wk-col.today { background: rgba(255, 138, 31, .05); }
html.season-halloween .btn:not(.primary):not(.quiet), html.season-halloween .btn.icon:not(.quiet) {
  background: linear-gradient(#2a2040, #1f172f); color: var(--ink); border-color: var(--line);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .06), inset 0 -2px 0 rgba(0, 0, 0, .35), 0 1px 3px rgba(0, 0, 0, .5);
}

/* The Hardware theme writes some light colours directly: give those the night look too */
html.season-halloween #listCol { background: rgba(26, 19, 38, .94); border-color: var(--line); }
html.season-halloween .item.on { background: #2a2040; box-shadow: inset 3px 0 0 var(--pumpkin); }
html.season-halloween .item:hover { background: #221a33; }
html.season-halloween .msg.user { background: #2f2446; color: var(--ink); }
html.season-halloween .md :not(pre) > code { background: #2a2040; color: #f3d9b1; }
html.season-halloween .md pre { background: #120d1b; border-color: var(--line); }
html.season-halloween .cu-bar { background: #2a2040; }
html.season-halloween .claude-panel { background: var(--surface); border-left-color: var(--line); box-shadow: -6px 0 16px rgba(0, 0, 0, .4); }
html.season-halloween ::-webkit-scrollbar-thumb { background: #3b2e50; border: 3px solid transparent; background-clip: padding-box; }
html.season-halloween .cal-day { color: var(--ink); }
html.season-halloween .cal-day.other, html.season-halloween .cal-day.muted { color: var(--faint); }
html.season-halloween input:focus, html.season-halloween select:focus, html.season-halloween textarea:focus {
  background: #1d1530; color: var(--ink); outline: 2px solid rgba(176, 124, 255, .4); border-color: var(--accent); }
html.season-halloween ::placeholder { color: var(--faint); }
html.season-halloween .pill { background: rgba(176, 124, 255, .14); color: var(--ink); }
html.season-halloween .pill.good { background: rgba(63, 207, 115, .14); color: #7fe0a3; }
html.season-halloween .section > h3::before, html.season-halloween .pj-sec h3::before { background: var(--pumpkin); }
html.season-halloween .section > h3::after, html.season-halloween .pj-sec h3::after { border-top-color: var(--line); }
html.season-halloween .claude-panel .composer, html.season-halloween .claude-panel .cp-foot { background: transparent; }

/* Infected Hulk (static/hulk.js draws the zombie version): glowing eyes, a dripping mouth, a toxic-green rage */
html.season-halloween .hulk[data-form="hulk"] .hk-eye { filter: drop-shadow(0 0 1.5px #d7ff3c); }
html.season-halloween .hulk[data-form="hulk"] svg { filter: drop-shadow(0 2px 3px rgba(0, 0, 0, .4)) drop-shadow(0 0 6px rgba(166, 227, 90, .35)); }
html.season-halloween .hulk.rage[data-form="hulk"] svg { filter: drop-shadow(0 2px 3px rgba(0, 0, 0, .4)) drop-shadow(0 0 9px rgba(166, 227, 90, .8)); }
html.season-halloween .hk-drool { animation: hw-drool 2.4s ease-in-out infinite; transform-box: fill-box; transform-origin: 50% 0; }
html.season-halloween .hk-grr { color: #a6e35a; }
@keyframes hw-drool { 0%, 60% { transform: scaleY(.6); opacity: .9; } 85% { transform: scaleY(1.4); opacity: 1; } 100% { transform: scaleY(.6); opacity: .6; } }
@media (prefers-reduced-motion: reduce) { html.season-halloween .hk-drool { animation: none; } }
