/* Decorative layer cannot receive input or enlarge the scrollable document. */
.halloween-effects{position:fixed;inset:0;overflow:hidden;pointer-events:none!important;z-index:45;contain:strict}
.halloween-effects *{pointer-events:none!important}
.halloween-effects-nav{flex-wrap:wrap}
.halloween-effects-toggle{min-height:44px;max-width:100%;border:1px solid #a58cb7;border-radius:999px;background:#2b1837;color:#efdfce;padding:8px 12px;font:inherit;cursor:pointer}
.halloween-effects-toggle:focus-visible{outline:2px solid #e6c68b;outline-offset:2px}
.halloween-burst{position:absolute;width:0;height:0;--light:#c9a5ed;--accent:#efdaac;animation:fx-lifetime .75s linear}
.halloween-burst.fx-pumpkin{--light:#efa756;--accent:#ffe0a0}
.halloween-burst.fx-candle{--light:#e9be81;--accent:#fff0c8}
.halloween-burst.fx-moon{--light:#ccd9ee;--accent:#eff4fc}
.halloween-burst.fx-raven{--light:#624971;--accent:#9989ae}
.halloween-burst.fx-book,.halloween-burst.fx-map{--light:#e8ce94;--accent:#d5b8eb}
.fx-ring{position:absolute;left:-15px;top:-15px;width:30px;height:30px;border:1px solid var(--light);border-radius:50%;animation:fx-ring .65s ease-out both}
.fx-map .fx-ring{border-style:dashed;outline:1px solid var(--accent);outline-offset:5px}
.fx-frame .fx-ring{width:20px;height:20px;left:-10px;top:-10px}
.halloween-burst i{position:absolute;left:-2px;top:-2px;width:4px;height:4px;background:var(--accent);border-radius:50%;animation:fx-particle .7s ease-out both}
.halloween-burst i:nth-child(even){background:var(--light);width:3px;height:3px}
.fx-book i{border-radius:0}.fx-candle i{width:2px;height:5px}
.halloween-ghost{position:absolute;width:26px;height:33px;background:#e4dbf0;border-radius:50% 50% 25% 25%;opacity:0;animation:fx-ghost 1.4s ease-out both}
.halloween-ghost:after{content:'';position:absolute;bottom:-3px;left:0;width:100%;height:8px;background:inherit;clip-path:polygon(0 0,100% 0,100% 100%,75% 45%,50% 100%,25% 45%,0 100%)}
.halloween-ghost i:before,.halloween-ghost i:after{content:'';position:absolute;top:11px;width:3px;height:5px;border-radius:50%;background:#5c426d}
.halloween-ghost i:before{left:7px}.halloween-ghost i:after{right:7px}
@keyframes fx-ring{from{transform:scale(.3);opacity:.75}to{transform:scale(2);opacity:0}}
@keyframes fx-particle{from{transform:translate(0,0);opacity:.8}to{transform:translate(var(--dx),var(--dy)) rotate(var(--turn));opacity:0}}
@keyframes fx-lifetime{from{opacity:1}to{opacity:0}}
@keyframes fx-ghost{0%{opacity:0;transform:translate(-50%,0) scale(.85)}12%{opacity:.65}65%{opacity:.55;transform:translate(-50%,-12px) rotate(5deg)}100%{opacity:0;transform:translate(-50%,-25px) rotate(-4deg)}}

/* Hold-to-play focus persists until release; decorations never intercept input. */
.halloween-touch-dialog-layer{position:absolute;inset:0;overflow:hidden;pointer-events:none!important;z-index:6;contain:paint}
.halloween-touch-dialog-layer *{pointer-events:none!important}
/* Small input cue, not the main attraction; the companion is displaced from a finger. */
.halloween-touch-aura{position:absolute;width:30px;height:30px;margin:-15px 0 0 -15px;border-radius:50%;background:radial-gradient(circle,#ffecc7b3 0 18%,#af7cde66 38%,transparent 76%);box-shadow:0 0 12px 3px #bc88e855}
.halloween-touch-aura::before{content:'';position:absolute;inset:5px;border:1px solid #f6dfb8a3;border-radius:50%;animation:halloween-finger-ring 2.2s linear infinite}
.halloween-touch-aura::after{display:none}
.halloween-touch-sigil{position:absolute;inset:11px;display:block;transform:rotate(45deg);border:1px solid #fff0d2;box-shadow:0 0 6px #fbdbaa88;animation:halloween-finger-sigil 1.15s ease-in-out infinite alternate}
.halloween-touch-ghost{position:absolute;z-index:2;width:58px;height:76px;transform:translate(-50%,-50%);filter:drop-shadow(0 3px 9px #bd86ef77);transition:left .065s linear,top .065s linear}
.halloween-touch-ghost-body{position:absolute;inset:5px 5px 9px;background:linear-gradient(155deg,#fffdf4 7%,#f0e9fa 53%,#ceb9e9 100%);border:1px solid #fff9eb;border-radius:47% 47% 18% 18%;box-shadow:inset -7px -6px 13px #ab84ca55,0 0 15px #c9a1ef88;animation:halloween-companion-float 2.2s ease-in-out infinite}
.halloween-touch-ghost-body::after{content:'';position:absolute;left:-1px;right:-1px;bottom:-5px;height:12px;background:#d9c8ee;clip-path:polygon(0 0,100% 0,100% 100%,78% 48%,55% 100%,30% 48%,0 100%)}
.halloween-touch-ghost-eyes::before,.halloween-touch-ghost-eyes::after{content:'';position:absolute;top:23px;width:6px;height:9px;background:#493455;border-radius:50%;animation:halloween-companion-blink 5.3s ease-in-out infinite}
.halloween-touch-ghost-eyes::before{left:13px}.halloween-touch-ghost-eyes::after{right:13px}
.halloween-touch-ghost.halloween-touch-releasing .halloween-touch-ghost-body{animation:none}
@keyframes halloween-companion-float{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-6px) rotate(4deg)}}
@keyframes halloween-companion-blink{0%,44%,48%,100%{transform:scaleY(1)}46%{transform:scaleY(.12)}}
.halloween-touch-spark{position:absolute;width:9px;height:9px;margin:-4px 0 0 -4px;border:1px solid #ffedb9;border-radius:2px;transform:rotate(45deg);background:#ffe9aa;box-shadow:0 0 10px 3px #e1aeffad;animation:halloween-finger-spark 1.25s ease-out both}
.halloween-touch-releasing{animation:halloween-finger-release .42s ease-out forwards!important}
@keyframes halloween-finger-ring{0%{transform:scale(.75);opacity:.6}55%{transform:scale(1.28);opacity:1}100%{transform:scale(.75);opacity:.6}}
@keyframes halloween-finger-spin{to{transform:rotate(360deg)}}
@keyframes halloween-finger-sigil{from{opacity:.65;scale:.9}to{opacity:1;scale:1.15}}
@keyframes halloween-finger-spark{0%{opacity:1;transform:translate(0,0) rotate(45deg) scale(.65)}55%{opacity:.95}100%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(170deg) scale(.15)}}
@keyframes halloween-finger-release{from{opacity:1;scale:1}to{opacity:0;scale:.65}}
