/* Optional Halloween theme. Artwork: Microsoft Fluent Emoji (MIT). */
.footer-site{display:inline-flex;align-items:center;gap:5px}
.halloween-toggle{display:grid;place-items:center;flex-shrink:0;width:20px;height:22px;padding:1px;border:0;border-radius:50%;background:transparent;opacity:0;transition:opacity .2s}
.halloween-toggle img{width:18px;height:18px;object-fit:contain}
.footer-site:hover .halloween-toggle,.halloween-toggle:focus-visible{opacity:1}
.halloween .halloween-toggle{opacity:.85}
.halloween-scene,.halloween-swarm{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.halloween-scene{display:none;z-index:-1}
.halloween-swarm{z-index:6}
.spider-cursor{display:none}
.halloween{background:radial-gradient(ellipse at 50% 49%,#a951191c 0,#261a221a 38%,#090b12 80%)}
.halloween .vignette{background:radial-gradient(ellipse at center,transparent 35%,#090b1233 65%,#090b1299 100%)}
.halloween .halloween-scene{display:block}
.halloween-moon{position:absolute;right:8%;top:12%;width:clamp(44px,6vw,82px);height:auto;opacity:.7;filter:drop-shadow(0 0 28px #cdd4e11a)}
.halloween-pumpkin{position:absolute;left:4%;bottom:9%;width:clamp(70px,10vw,140px);height:auto;opacity:.9;filter:drop-shadow(0 12px 22px #0008)}
.halloween-ambient-bat{--wing-duration:.55s;--wing-phase:-.2s;position:absolute;right:5%;top:26%;width:clamp(30px,4vw,48px);height:auto;opacity:.58;transform:rotate(-12deg)}
.halloween-ambient-bat>.bat-art{display:block;width:100%;height:auto;overflow:visible}
.halloween .brand strong,.halloween .core>span{color:#ecc29a}
.halloween .brand i,.halloween .core>i{background:#e79853;box-shadow:0 0 8px #d87836}
.halloween .brand>span{background:#4c3932}
.halloween .motion-toggle{border-color:#594535;background:#17161b99}
.halloween .motion-toggle svg{stroke:#c7ad96}
.halloween .sound-toggle.sound-active{border-color:#9c623c;background:#30201a}
.halloween .sound-toggle.sound-active svg{stroke:#efb57d}
.halloween .core{background:radial-gradient(ellipse at 50% 25%,#352c2b,#15151e 50%,#0c1019 90%)}
.halloween .core-frame{background:linear-gradient(135deg,#ffe0b6,#c47a42 28%,#503a34 52%,#eba461 78%,#976243);filter:none}
.halloween .core-position:has(.core:hover) .core-frame,.halloween .core-position:has(.core:focus-visible) .core-frame{background:linear-gradient(135deg,#ffe4c2,#e89b56 50%,#ffce9a);filter:none}
.halloween .core-orbit{background:#8e603b77}
.halloween .core-orbit:after{background:#0d1018ee}
.halloween .core-aura{background:radial-gradient(ellipse,#db74262b,#8d583510 45%,transparent 70%)}
.halloween .node-surface{background:linear-gradient(140deg,#c2966699,#4e484c88 45%,#92694e99)}
.halloween .node-surface:before{background:radial-gradient(ellipse at var(--light-x,50%) var(--light-y,50%),#27212a,#0e1320 85%)}
.halloween .app-node:hover .node-surface,.halloween .app-node:focus-visible .node-surface{background:linear-gradient(135deg,#ffe0ba,#b77d4d 45%,#d0ad81)}
.halloween .app-node:hover .node-surface:before,.halloween .app-node:focus-visible .node-surface:before{background:radial-gradient(ellipse at var(--light-x,50%) var(--light-y,50%),#3b2a25,#131824 90%)}
.halloween footer{color:#83766f}
.halloween .footer-links a{color:#b4a197}
.halloween .footer-links a span{color:#d8a775}
.halloween .footer-links a:hover,.halloween .footer-links a:focus-visible{color:#ffe0b8}
/* Warm copper and ivory treatment, scoped to the optional theme. */
.halloween .node-logo,.halloween .brand>img,.halloween .brand>svg,.halloween .core>.core-brand,.halloween .core:hover>.core-brand{filter:sepia(1) saturate(1.6) hue-rotate(-16deg) brightness(1.15)}
.halloween .core>.core-brand{transition:none}
/* The artwork itself replaces the system pointer; it is never a follower. */
.halloween .ink-cursor{display:none}
.halloween .spider-cursor{display:block;position:absolute;left:var(--cursor-x);top:var(--cursor-y);width:42px;height:42px;transform:translate(-50%,-35%);opacity:0;pointer-events:none;filter:drop-shadow(0 2px 3px #0009);transition:opacity .1s}
.halloween .inkflow.is-active .spider-cursor{opacity:1}
.spider-cursor img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}
/* Each 3D bat follows a curved route from the core to a screen edge. */
.halloween-bat{position:absolute;width:var(--bat-size);height:var(--bat-size);opacity:0;animation:bat-flight var(--flight-duration) cubic-bezier(.16,.5,.42,1) var(--flight-delay) both;will-change:transform,opacity}
.halloween-bat .bat-art{display:block;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 3px 5px #0007)}
.bat-wing-fold{transform-box:view-box;transform-origin:0 0;animation:bat-wingbeat var(--wing-duration) ease-in-out var(--wing-phase) infinite;will-change:transform}
@keyframes bat-wingbeat{0%,100%{transform:scaleX(1)}45%{transform:scaleX(.16)}65%{transform:scaleX(.4)}}
@keyframes bat-flight{0%{opacity:0;transform:translate(-50%,-50%) scale(.35)}8%{opacity:1}40%{opacity:1;transform:translate(calc(var(--flight-x)*.38 - 50%),calc(var(--flight-y)*.35 + var(--flight-bend) - 50%)) rotate(var(--bat-turn)) scale(.9)}85%{opacity:1}100%{opacity:0;transform:translate(calc(var(--flight-x) - 50%),calc(var(--flight-y) - 50%)) rotate(calc(var(--bat-turn)*-1)) scale(1.1)}}
.paused .halloween-bat,.paused .bat-wing-fold{animation-play-state:paused}
@media(max-width:600px){.halloween-pumpkin{width:62px;left:3%;bottom:10%}.halloween-moon{width:46px;right:5%;top:13%}.halloween-ambient-bat{width:28px;right:5%;top:22%}}
@media(pointer:coarse){.halloween .spider-cursor{display:none}.halloween-toggle{width:18px}.footer-site{gap:2px}}
