.gacha-scene{position:relative;isolation:isolate;overflow:hidden;width:100%;height:100%;background:#8ed8ef;pointer-events:none;--light:#46f5ff}
.controls[hidden]{display:none}
.gacha-scene img{display:block;max-width:none;user-select:none;-webkit-user-drag:none}
.gacha-plate{position:absolute;left:0;top:-100px;width:100%;height:calc(100% + 100px);object-fit:cover;object-position:50% 50%}
.gacha-altar{position:absolute}
.gacha-stone{position:absolute;inset:0;width:100%;height:100%}
.gacha-glyph{position:absolute;left:8%;top:-10%;width:84%;height:110%;object-fit:fill}
.gacha-engraving{transition:opacity .5s}
.gacha-light{opacity:0;transition:opacity .55s}
.gacha-scene.charged .gacha-engraving{opacity:0}
.gacha-scene.charged .gacha-light{opacity:1}
.gacha-glow-track{position:absolute;inset:0;animation:gacha-breathe 2.8s ease-in-out infinite}
.gacha-aura{position:absolute;left:-7%;top:-24%;width:114%;height:132%;background:radial-gradient(ellipse at 50% 51%,transparent 25%,var(--light) 45%,transparent 69%);opacity:0;transition:opacity .6s;mix-blend-mode:screen}
.gacha-scene.charged .gacha-aura{opacity:.22}
.gacha-motes{position:absolute;inset:0;opacity:0;transition:opacity .5s}
.gacha-scene.charged .gacha-motes{opacity:1}
.gacha-scene.anticipating{--light:#f2f5ff}
.gacha-scene.anticipating .gacha-engraving{animation:gacha-anticipate-glyph .72s ease-in-out infinite alternate}
.gacha-scene.anticipating .gacha-aura{opacity:.16;animation:gacha-anticipate-aura .82s ease-in-out infinite alternate}
.gacha-scene.anticipating .gacha-motes{opacity:.65}
.gacha-mote{position:absolute;border-radius:50%;background:radial-gradient(circle,#fff 0 9%,var(--light) 22%,transparent 70%);animation:gacha-rise var(--duration) ease-in-out infinite;animation-delay:var(--delay)}
.gacha-flash{position:absolute;left:-30%;top:-105%;width:160%;height:260%;opacity:0;background:radial-gradient(ellipse at 50% 60%,#fff 0%,var(--light) 14%,transparent 55%);mix-blend-mode:screen}
.gacha-scene.summoning .gacha-flash{animation:gacha-reveal 3s ease-in-out both}
.gacha-scene.summoning .gacha-glow-track{animation:gacha-charge 3s ease-in-out both}
.gacha-scene.paused *{animation-play-state:paused!important}
@keyframes gacha-breathe{0%,100%{opacity:.8}50%{opacity:1}}
@keyframes gacha-rise{0%{opacity:0;transform:translate(0,10px) scale(.5)}20%{opacity:.9}75%{opacity:.5}100%{opacity:0;transform:translate(var(--drift),var(--rise)) scale(.2)}}
@keyframes gacha-reveal{0%,48%{opacity:0;transform:scale(.5)}65%{opacity:.1}75%{opacity:.8;transform:scale(1)}100%{opacity:0;transform:scale(1.12)}}
@keyframes gacha-charge{0%{opacity:.15}45%{opacity:.7}65%{opacity:1}76%{opacity:1}100%{opacity:.85}}
@keyframes gacha-anticipate-glyph{from{filter:brightness(1);opacity:.75}to{filter:brightness(1.85) drop-shadow(0 0 12px var(--light));opacity:1}}
@keyframes gacha-anticipate-aura{from{transform:scale(.94);opacity:.08}to{transform:scale(1.04);opacity:.2}}
@media(prefers-reduced-motion:reduce){.gacha-scene *{animation:none!important;transition:none!important}.gacha-scene .gacha-mote{opacity:.35}.gacha-scene .gacha-flash{display:none}}
