/* Solo vista previa: sin modificaciones de la portada publicada. */
.halloween-layer{isolation:isolate;z-index:4;--cycle:45s;--intro:3s}
.halloween-moon{position:absolute;left:65%;top:19%;width:6.4%;aspect-ratio:1;transform:translate(-50%,-50%);pointer-events:none}
.moon-disc{position:absolute;inset:0;border-radius:50%;overflow:hidden;isolation:isolate;background:#c7d0df}
.moon-texture{position:absolute;display:block;max-width:none;pointer-events:none;user-select:none}
/* Las dos imágenes originales tienen centros y radios distintos. Se alinean
   mediante CSS dentro del mismo disco circular; no se editan sus píxeles. */
.moon-white,.moon-warm{width:136.043%;height:136.043%;left:-19.632%;top:-16.871%}
.moon-expression,.moon-expression-light{width:131.602%;height:131.602%;left:-9.94%;top:-15.43%}
.moon-white{opacity:1}
.moon-warm{filter:sepia(1) saturate(3.1) hue-rotate(350deg) brightness(1.04);opacity:0;animation:moon-warming var(--cycle) ease-in-out var(--intro) infinite both}
.moon-expression{opacity:0;animation:moon-face var(--cycle) ease-in-out var(--intro) infinite both}
.moon-expression-light{mix-blend-mode:screen;filter:brightness(1.35);opacity:0;animation:moon-expression-glow var(--cycle) ease-in-out var(--intro) infinite both}
.moon-halo{position:absolute;inset:-45%;border-radius:50%;background:radial-gradient(circle,#b2c8ef16 25%,#91b9ef0b 40%,transparent 69%);pointer-events:none}
.moon-halo-amber{background:radial-gradient(circle,#ffac5142 26%,#f5742025 43%,transparent 69%);opacity:0;animation:moon-halo var(--cycle) ease-in-out var(--intro) infinite both}
@keyframes moon-warming{0%{opacity:0}6.667%{opacity:.96}17.778%,26.667%{opacity:.4}38%{opacity:.7}44.444%,100%{opacity:0}}
@keyframes moon-face{0%,6.667%{opacity:0}17.778%,26.667%{opacity:1}44.444%,100%{opacity:0}}
@keyframes moon-expression-glow{0%,13.333%{opacity:0}17.778%,26.667%{opacity:.32}38%,100%{opacity:0}}
@keyframes moon-halo{0%{opacity:0}7%{opacity:.35}17.778%,26.667%{opacity:.88}44.444%,100%{opacity:0}}
.halloween-sky{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.bat-art{fill:#080b13;opacity:.85}
.bat-wing{transform-box:fill-box;animation:wing-left .31s ease-in-out infinite alternate}
.bat-wing-left{transform-origin:100% 60%}.bat-wing-right{transform-origin:0% 60%;animation-name:wing-right}
.bat-b .bat-wing{animation-duration:.37s;animation-delay:-.14s}.bat-c .bat-wing{animation-duration:.28s;animation-delay:-.09s}.bat-d .bat-wing{animation-duration:.43s;animation-delay:-.31s}
@keyframes wing-left{from{transform:scaleY(1) rotate(-5deg)}to{transform:scaleY(.32) rotate(13deg)}}
@keyframes wing-right{from{transform:scaleY(1) rotate(5deg)}to{transform:scaleY(.32) rotate(-13deg)}}
.bat-flight{animation:bat-visibility 29s ease-in-out -11s infinite}.bat-b{animation-duration:37s;animation-delay:-21s}.bat-c{animation-duration:43s;animation-delay:-31s}.bat-d{animation-duration:53s;animation-delay:-8s}
@keyframes bat-visibility{0%,100%{opacity:0}10%,88%{opacity:1}}
.ambient-light{position:absolute;width:6%;aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;mix-blend-mode:screen;background:radial-gradient(circle,#ffd38c63 0%,#ff922e25 22%,transparent 65%);opacity:.27;animation:torch-breathe 13.7s linear infinite}
.ambient-light::after{content:'';position:absolute;inset:0;border-radius:inherit;background:radial-gradient(circle,#ffcc7140 0%,#ff921528 28%,transparent 64%);opacity:0;animation:lunar-echo var(--cycle) ease-in-out var(--intro) infinite both}
.torch-a{left:3%;top:39.5%}.torch-b{left:11%;top:37.5%;animation-duration:19.3s;animation-delay:-5.6s}.torch-c{left:20.5%;top:46%;width:4%;animation-duration:17.1s;animation-delay:-9.2s}
.pumpkin{width:4.5%;background:radial-gradient(circle,#ffd66561 0%,#ff9d2524 21%,transparent 63%);animation-name:pumpkin-breathe;animation-duration:23.9s}
.pumpkin-a{left:11.6%;top:64.7%;animation-delay:-4.2s}.pumpkin-b{left:95.2%;top:64%;animation-duration:29.1s;animation-delay:-17s}.pumpkin-c{left:88.8%;top:85.5%;animation-duration:31.7s;animation-delay:-8.3s}
@keyframes torch-breathe{0%,100%{opacity:.2}7%{opacity:.29}13%{opacity:.21}26%{opacity:.34}34%{opacity:.23}48%{opacity:.31}57%{opacity:.25}63%{opacity:.35}79%{opacity:.22}91%{opacity:.3}}
@keyframes pumpkin-breathe{0%,100%{opacity:.17}19%{opacity:.3}27%{opacity:.24}42%{opacity:.34}59%{opacity:.22}78%{opacity:.28}86%{opacity:.19}}
@keyframes lunar-echo{0%,7%{opacity:0}17.778%,26.667%{opacity:.24}44.444%,100%{opacity:0}}
.halloween-layer:not(.halloween-ready) *,.halloween-layer:not(.halloween-ready) *::after,.halloween-layer.halloween-paused *,.halloween-layer.halloween-paused *::after{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){.halloween-layer *,.halloween-layer *::after{animation:none!important}.halloween-sky{display:none}.moon-warm,.moon-expression,.moon-expression-light,.moon-halo-amber{opacity:0}.ambient-light{opacity:.2}.ambient-light::after{opacity:0}}
/* Referencias estáticas opcionales para comparar posición y diámetro. */
.halloween-frame-white *,.halloween-frame-white *::after,.halloween-frame-terror *,.halloween-frame-terror *::after{animation:none!important}
.halloween-frame-white .moon-warm,.halloween-frame-white .moon-expression,.halloween-frame-white .moon-expression-light,.halloween-frame-white .moon-halo-amber{opacity:0}
.halloween-frame-terror .moon-warm{opacity:.4}.halloween-frame-terror .moon-expression{opacity:1}.halloween-frame-terror .moon-expression-light{opacity:.32}.halloween-frame-terror .moon-halo-amber{opacity:.88}

