/* Astra 2 Halloween — layered on top of /art/astra2/astra.css */
:root.halloween{
  --bg:#07040d; --surface:#100a19; --text:#f7efe6; --muted:#b7a6c4; --line:#2c1f3d; --field:#120b1d;
  --accent:#ff8a1f; --active:#3a1d12; --card-text:#f7efe6;
  --c-games:#b56cff; --c-music:#ff5fa8; --c-audio:#ff8a1f; --c-ai:#8be05a; --c-files:#ffc14d; --c-download:#a77bff; --c-tools:#ff8a1f;
  --pumpkin:#ff8a1f; --pumpkin-deep:#c2510c; --potion:#8be05a; --hex:#7c4dbd; --bone:#f7efe6;
}
:root.halloween[data-theme=light]{
  --bg:#f6eee5; --surface:#fffaf4; --text:#2a1a26; --muted:#6e5a64; --line:#e6d6c7; --field:#fbf3ea;
  --accent:#c2510c; --active:#ffe6d0; --card-text:#f7efe6;
}
.halloween ::selection{background:#c2510c;color:#fff}
.halloween button:focus-visible,.halloween a:focus-visible{outline-color:var(--pumpkin)}

/* --- header: hat on the logo, slime under the bar --- */
.halloween .head{border-bottom-color:transparent}
.hw-brand{position:relative;display:inline-block;line-height:0}
.hw-hat{position:absolute;width:34px;height:26px;left:3px;top:-17px;transform:rotate(-14deg);pointer-events:none;filter:drop-shadow(0 2px 3px #0008)}
.halloween .wordmark span{color:var(--pumpkin)}
.hw-cweb{position:absolute;top:100%;width:min(300px,30vw);height:auto;pointer-events:none;opacity:.62;filter:drop-shadow(0 0 1px #0008)}
.hw-cweb-l{left:0}.hw-cweb-r{right:0;transform:scaleX(-1)}
:root.halloween[data-theme=light] .hw-cweb{filter:invert(1) brightness(.35);opacity:.32}
.halloween .search input:focus{border-color:var(--pumpkin);box-shadow:0 0 0 3px #ff8a1f22}
.halloween .chip.on{background:linear-gradient(105deg,#e2640f,#7c3fc4)}
.halloween .reset{background:var(--pumpkin-deep)}
.halloween .toast{background:#1d1028;border-color:#ff8a1f88}

/* --- sky: moon and fog behind everything --- */
.hw-moon{position:absolute;right:2.5vw;top:84px;width:172px;height:172px;border-radius:50%;
  background:url(/art/halloween/moon.webp?v=3) center/100% 100% no-repeat;
  filter:drop-shadow(0 0 22px #ffd9902e) drop-shadow(0 0 70px #ff8a1f26);opacity:.92}
.hw-moon i{display:none}
.hw-moon::before{content:"";position:absolute;inset:-60%;border-radius:50%;pointer-events:none;
  background:radial-gradient(circle,#ffcf7a22 0,#ff8a1f10 38%,transparent 62%);animation:hwMoonGlow 7s ease-in-out infinite alternate}
.hw-moon::after{content:"";position:absolute;left:-30%;top:34%;width:150%;height:22%;border-radius:50%;pointer-events:none;
  background:linear-gradient(90deg,transparent,#0b0714bb 35%,#0b0714dd 60%,transparent);filter:blur(9px);animation:hwMoonCloud 38s linear infinite}
@keyframes hwMoonGlow{from{opacity:.55;transform:scale(.96)}to{opacity:1;transform:scale(1.04)}}
@keyframes hwMoonCloud{0%{transform:translateX(-120%)}100%{transform:translateX(120%)}}
@media (prefers-reduced-motion:reduce){.hw-moon::before,.hw-moon::after{animation:none}}
:root.halloween[data-theme=light] .hw-moon{opacity:.5;box-shadow:0 0 50px 10px #ffb34a33}
.halloween .ambient{background:#07040d}
:root.halloween[data-theme=light] .ambient{background:#f6eee5}
.hw-fog{position:fixed;left:-20%;right:-20%;bottom:-40px;height:220px;pointer-events:none;
  background:radial-gradient(ellipse 40% 60% at 20% 70%,#b9a6d61c,transparent 70%),radial-gradient(ellipse 35% 55% at 70% 80%,#b9a6d618,transparent 70%);
  filter:blur(6px)}
.hw-fog-b{bottom:-70px;opacity:.7;transform:scaleX(-1)}
:root[data-effects=on] .hw-fog-a{animation:hwFog 38s ease-in-out infinite alternate}
:root[data-effects=on] .hw-fog-b{animation:hwFog 52s ease-in-out infinite alternate-reverse}
@keyframes hwFog{from{translate:-6% 0}to{translate:6% 0}}
:root.halloween[data-theme=light] .hw-fog{opacity:.5}

/* --- heading: cobweb and the countdown --- */
.halloween .catalog-heading{position:relative}
.hw-web{position:absolute;right:-6px;top:-34px;width:170px;height:170px;opacity:.42;pointer-events:none;transform:scaleX(-1)}
:root.halloween[data-theme=light] .hw-web{filter:invert(1) brightness(.35);opacity:.25}
.hw-count{display:inline-flex;align-items:center;gap:7px;margin-inline:12px 8px;padding:5px 11px 5px 7px;border-radius:999px;
  font-size:12.5px;font-weight:600;color:#ffd7ad;background:linear-gradient(100deg,#ff8a1f30,#7c4dbd2e);border:1px solid #ff8a1f55;white-space:nowrap;vertical-align:middle}
.hw-count svg{width:20px;height:20px;stroke:none}
:root.halloween[data-theme=light] .hw-count{color:#8a3608;background:#ffe2c6;border-color:#f0a46a}

/* --- cards: same Astra 2 art, a candle-lit grade and a few webs --- */
.halloween .card{background:#0b0612}
.halloween .card-shade{background:linear-gradient(90deg,#0a0412c4 0%,#0d051690 38%,#12061a30 65%,#0a041205 100%),linear-gradient(0deg,#1a070066,transparent 45%),linear-gradient(200deg,#ff8a1f14,transparent 45%)}
.halloween .card-art img{filter:saturate(.92) sepia(.12) hue-rotate(-8deg)}
.halloween .card:hover,.halloween .card:focus-within{box-shadow:0 0 0 1px color-mix(in srgb,var(--glow) 25%,transparent),0 10px 40px #ff8a1f26,0 0 26px color-mix(in srgb,var(--glow) 18%,transparent)}
.halloween .favorite[aria-pressed=true]{color:#ffd0a0;background:#4a1f0c9e}
.halloween .favorite[aria-pressed=true] svg{fill:var(--pumpkin);stroke:#ffd0a0}
.halloween .kind{color:#d9b48f}

/* --- creatures: Blender-rendered sprite sheets driven by halloween.js --- */
.hw-stage{position:fixed;inset:0;z-index:25;pointer-events:none;overflow:hidden}
.hw-thread{position:absolute;height:1px;background:linear-gradient(90deg,rgba(235,238,255,.85),rgba(255,255,255,.6));transform-origin:0 50%;pointer-events:none;box-shadow:0 0 2px rgba(200,210,255,.6)}
.hw-sp{position:absolute;left:0;top:0;will-change:transform;background-repeat:no-repeat;pointer-events:none;transform-origin:50% 50%}
.hw-click{pointer-events:auto;cursor:pointer}
.hw-shadow{position:absolute;left:0;top:0;height:16px;border-radius:50%;background:radial-gradient(closest-side,#000a,#0000);pointer-events:none}
.hw-zombie,.hw-zombie1a,.hw-zombie1p,.hw-zombie2,.hw-zombie2a,.hw-skeleton,.hw-vampire,.hw-scarecrow{filter:drop-shadow(0 0 1px #000) drop-shadow(0 -2px 10px #7c4dbd38)}
.hw-ghost{mix-blend-mode:screen;filter:drop-shadow(0 0 18px #9fc2ff66)}
.hw-witch{filter:drop-shadow(0 0 12px #ff8a1f33)}
.hw-bat,.hw-batside{filter:drop-shadow(0 0 1.5px #ffc08acc) drop-shadow(0 0 10px #ff6a2a66)}
.hw-spider{filter:drop-shadow(0 6px 6px #0009)}
.hw-cat,.hw-catwash,.hw-catwalk,.hw-catpick{filter:drop-shadow(0 -2px 12px #7c4dbd55)}
.hw-z{position:absolute;pointer-events:none;color:#e9dcff;font:italic 800 16px/1 'Golos Text',system-ui,sans-serif;text-shadow:0 0 8px #9b7cff,0 1px 2px #000}
.hw-pumpkin{filter:drop-shadow(0 0 22px #ff8a1f77)}
.hw-dust{position:absolute;width:5px;height:5px;border-radius:50%;background:#ffe9a8;box-shadow:0 0 8px 2px #ffb04a,0 0 2px #fff;pointer-events:none}
.hw-thread{position:absolute;top:0;width:1px;background:linear-gradient(#ffffff00,#e9e2f2cc);pointer-events:none}
.hw-say{position:absolute;left:0;top:0;z-index:3;max-width:min(240px,70vw);width:max-content;text-align:center;white-space:normal;
  background:#f7efe6f2;color:#1b1026;font:700 14.5px/1.25 'Golos Text',system-ui,'Segoe UI','Noto Sans',sans-serif;padding:7px 11px;border-radius:13px;
  box-shadow:0 6px 22px #000a,0 0 0 1px #ffffff22;pointer-events:none;opacity:0;transition:opacity .35s;will-change:transform}
.hw-say::after{content:"";position:absolute;left:50%;bottom:-6px;margin-left:-6px;border:6px solid transparent;border-bottom:0;border-top-color:#f7efe6f2}
.hw-say-ghost{background:#cfe0ffe6;color:#0d1a33;box-shadow:0 0 18px #9fc2ff99}.hw-say-ghost::after{border-top-color:#cfe0ffe6}
.hw-say-witch{background:#ffe7c4f2}.hw-say-witch::after{border-top-color:#ffe7c4f2}
.hw-say-zombie{background:#e2f2d4f2}.hw-say-zombie::after{border-top-color:#e2f2d4f2}
.hw-say-vampire{background:#ffd9dcf2;color:#3a0610}.hw-say-vampire::after{border-top-color:#ffd9dcf2}
.hw-puff{position:absolute;border-radius:50%;background:radial-gradient(circle,#d9d2e6cc,#8b7ca855 45%,#0000 70%);pointer-events:none;filter:blur(2px)}
:root.halloween[data-theme=light] .hw-ghost{mix-blend-mode:normal;filter:drop-shadow(0 0 2px #1b1026) drop-shadow(0 0 14px #5b7bd0aa)}
.hw-credits{max-width:1600px;margin:0 auto;padding:6px 34px 18px;font-size:12px;color:var(--muted)}
.hw-credits summary{cursor:pointer;width:max-content;opacity:.75}
.hw-credits ul{margin:8px 0 0;padding-inline-start:18px;line-height:1.7}
.hw-credits a{color:inherit;text-decoration:underline;text-underline-offset:2px}

@media (max-width:700px){
  .hw-moon{width:96px;height:96px;top:150px;right:5vw}
  .hw-web{width:96px;height:96px;top:-18px}
  .hw-count{margin-inline:8px 4px;font-size:11.5px}
}
@media (prefers-reduced-motion:reduce){.hw-stage{display:none}.hw-fog{animation:none!important}}
:root[data-effects=off] .hw-stage{display:none}

/* --- creatures on the cards, things they carry, landing dust --- */
.hw-prop{filter:drop-shadow(0 2px 3px #000a);opacity:0;z-index:7}
.hw-gore{position:absolute;left:0;top:0;pointer-events:none}
.hw-grit{position:absolute;border-radius:50%;background:radial-gradient(circle,#d8cde6b0,#8b7ca844 55%,#0000 72%);pointer-events:none}
.hw-smoke{background:radial-gradient(circle,#2b1a3ccc,#0d0814aa 52%,#0000 74%);filter:blur(3px)}
.hw-gfog{position:absolute;left:0;right:0;bottom:0;pointer-events:none;overflow:hidden}
.hw-gfog{background:linear-gradient(to top,rgba(88,92,150,.55),rgba(88,92,150,.22) 45%,transparent)}
.hw-gfog i{opacity:0;transition:opacity 1.2s;position:absolute;left:0;top:0;bottom:0;width:calc(100% + 2048px);background-repeat:repeat-x;background-size:2048px 100%;will-change:transform}
.hw-gfog i.on{opacity:1}
.hw-gfog-b{z-index:-1}.hw-gfog-m{z-index:5}.hw-gfog-f{z-index:6}
@keyframes hwFogRun{to{transform:translateX(-2048px)}}
:root.halloween[data-theme=light] .hw-gfog{opacity:.25!important;filter:brightness(.55)}

.hw-prop.hw-bonew{filter:saturate(.22) brightness(1.2) contrast(.92) drop-shadow(0 2px 2px #0009)}
.hw-prop.hw-armgrey{filter:saturate(.25) brightness(.78) hue-rotate(30deg) drop-shadow(0 2px 3px #000a)}

/* lightning */
.hw-bolt{position:absolute;left:0;top:0;pointer-events:none;z-index:8}
.hw-flash{position:absolute;inset:0;pointer-events:none;opacity:0;mix-blend-mode:screen;z-index:8}
:root.halloween[data-theme=light] .hw-flash{mix-blend-mode:normal}
