/* Keep artwork and motion in the same coordinate system at every viewport. */
.hero-art{top:50%;height:auto;aspect-ratio:3/2;transform:translateY(-50%)}
.hero-art>img{aspect-ratio:3/2;object-fit:fill}
.dragon-eye{left:72.55%;top:29.9%;width:2.4%;height:2.25%;border-radius:8% 70% 65% 80%;transform-origin:center;animation:none}
.dragon-eye:after{content:'';position:absolute;inset:0;background:linear-gradient(150deg,#56767b,#0b191d 70%);transform-origin:top;transform:scaleY(0);animation:eyelid 9s ease-in-out infinite}
@keyframes eyelid{0%,44%,50%,91%,97%,100%{transform:scaleY(0)}47%,94%{transform:scaleY(1)}}
.dragon-eye>span{inset:12% 18%;background:radial-gradient(ellipse at 65% 50%,#bdffff,#01a8be 38%,#0c3035 80%);filter:none}
/* Energy gathers at the eye before a thick turquoise laser fires. */
.dragon-eye>span{animation:eye-charge 13s ease-in-out infinite}
@keyframes eye-charge{0%,55%,74%,100%{opacity:.5;box-shadow:0 0 0 transparent}60%{opacity:.9;box-shadow:0 0 12px #01ddeb}63%,65%{opacity:1;box-shadow:0 0 22px #7affff,0 0 38px #01a8be}69%{opacity:.65;box-shadow:0 0 5px #01a8be}}
.dragon-laser{left:73.9%;top:30.7%;width:34%;height:2.8%;background:none;opacity:1;animation:none;transform:translateY(-50%) rotate(-6deg);filter:none;mix-blend-mode:screen;pointer-events:none}
.dragon-laser:before{content:'';position:absolute;left:0;top:50%;width:13%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#f0ffff 0 9%,#9affff 15%,#01ddeb 26%,#01a8be88 43%,transparent 70%);filter:drop-shadow(0 0 12px #01ddeb);opacity:0;animation:eye-laser-charge 13s ease-in-out infinite}
.dragon-laser:after{content:'';position:absolute;inset:0;border-radius:999px;background:linear-gradient(180deg,transparent,#01a8be 14%,#4cffff 34%,#efffff 46% 54%,#4cffff 66%,#01a8be 86%,transparent);box-shadow:0 0 8px #6fffffcc,0 0 22px #01ddeb99;mask-image:linear-gradient(90deg,#000 0% 78%,transparent 100%);transform-origin:0 50%;opacity:0;animation:eye-thick-laser 13s ease-out infinite}
.laser-haze{left:73.9%;top:30.7%;width:36%;height:8%;border:0;border-radius:50%;background:radial-gradient(ellipse at 20% 50%,#01ddeb99,transparent 72%);box-shadow:none;filter:blur(8px);opacity:0;transform:translateY(-50%) rotate(-6deg);transform-origin:left center;animation:eye-laser-aura 13s ease-in-out infinite;pointer-events:none;mix-blend-mode:screen;z-index:3}
@keyframes eye-laser-charge{0%,55%,75%,100%{opacity:0;transform:translate(-50%,-50%) scale(.2)}60%{opacity:.45;transform:translate(-50%,-50%) scale(.55)}63%,65%{opacity:1;transform:translate(-50%,-50%) scale(1.15)}69%{opacity:.85;transform:translate(-50%,-50%) scale(.9)}74%{opacity:0;transform:translate(-50%,-50%) scale(.4)}}
@keyframes eye-thick-laser{0%,63%,75%,100%{opacity:0;transform:scale(0,.35)}64.5%{opacity:1;transform:scale(1,1)}67%{opacity:.9;transform:scale(1,.92)}69%{opacity:1;transform:scale(1,1.05)}74%{opacity:0;transform:scale(1,.2)}}
@keyframes eye-laser-aura{0%,63%,75%,100%{opacity:0}65%,69%{opacity:.8}74%{opacity:0}}
.custom-cover{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.event-cover{width:100%;height:auto;max-height:600px;object-fit:cover;margin-bottom:45px}
.footer-image{background:none}
.footer-scene{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.mountain-glint{opacity:0;animation:mountain-shimmer var(--mountain-cycle) ease-in-out var(--mountain-delay) infinite}
.mountain-glint image{filter:brightness(1.85) saturate(1.2)}
@keyframes mountain-shimmer{0%,38%,76%,100%{opacity:0}49%{opacity:.25}58%{opacity:.85}67%{opacity:.3}}
.tower-energy{mix-blend-mode:screen}
.tower-core{opacity:0;filter:blur(7px);animation:tower-flare 8.5s ease-in-out infinite}
.tower-light-wave{opacity:0;animation:tower-light-wave 8.5s cubic-bezier(.2,.55,.35,1) infinite;will-change:transform,opacity}
.tower-wash{opacity:0;animation:tower-wash 8.5s ease-out infinite}
@keyframes tower-flare{0%,7%,45%,100%{opacity:0;r:20}11%{opacity:.35;r:35}15%{opacity:.9;r:60}26%{opacity:.3;r:70}43%{opacity:0;r:85}}
@keyframes tower-light-wave{0%,12%,100%{opacity:0;transform:translateX(1300px)}18%{opacity:.6}30%{opacity:.5}52%{opacity:0;transform:translateX(-2400px)}}
@keyframes tower-wash{0%,13%,58%,100%{opacity:0}21%{opacity:.55}36%{opacity:.24}56%{opacity:0}}
@media(max-width:980px){.hero-art{top:50%}}
@media(max-width:640px){.hero-art{top:auto;bottom:0;transform:none;height:auto}}

/* The point leaves a tapered, gradually fading afterglow along its route. */
.cube-traces{overflow:visible;mix-blend-mode:screen;pointer-events:none}
.cube-traces .neon-track path{fill:none;stroke-linecap:round;animation:var(--travel-animation) var(--travel-duration) linear var(--travel-delay) infinite;stroke-dashoffset:12;opacity:1}
.cube-traces .neon-wake{filter:blur(.45px) drop-shadow(0 0 4px #01ddeb) drop-shadow(0 0 10px #01a8be)}
.cube-traces .neon-wake path{stroke-linecap:butt;stroke-dasharray:8.1 1991.9;animation-delay:var(--wake-delay)}
.cube-traces .neon-track .neon-head{stroke:#e4ffff;stroke-width:7;stroke-dasharray:.01 1999.99;filter:drop-shadow(0 0 4px #baffff) drop-shadow(0 0 10px #01e4ef)}

/* Local glow boosts the existing blue edges without flashing the whole image. */
.cube-glint{opacity:.08;animation:cube-shimmer 12s ease-in-out var(--glint-delay) infinite}
.cube-glints ellipse{fill:url(#cube-neon-bloom)}
.cube-traces .cube-glints path{fill:none;stroke:#6dffff;stroke-width:3;stroke-dasharray:none;animation:none;opacity:1;filter:drop-shadow(0 0 7px #01ddeb) drop-shadow(0 0 20px #01a8be)}
@keyframes cube-shimmer{0%,42%,76%,100%{opacity:.08}52%{opacity:.38}60%{opacity:.92}68%{opacity:.22}}
@media(max-width:640px){
 .cube-traces .neon-track .neon-head{stroke-width:9}
}
@media(prefers-reduced-motion:reduce){
 .cube-traces .neon-track{display:none}
 .cube-glint{opacity:.12;animation:none}
 .dragon-laser,.laser-haze{display:none}
 .mountain-glint{animation:none;opacity:0}
 .tower-energy{display:none}
}
