/* OLYMPUS · cinematic motion pass · avoids changing existing layout transforms */
.ohero {--ol-cinema-blue:rgba(65,166,255,.48)}
.ohero__zeus{animation:olZeusBreath 7.5s ease-in-out infinite,olZeusCharge 4.8s ease-in-out infinite;transform-origin:52% 45%;will-change:filter,translate}
.ohero__logo{animation:oheroLogoIn .9s cubic-bezier(.16,1,.3,1) both,olLogoEnergy 5.2s ease-in-out 1s infinite;will-change:filter,translate}
.ohero__roulette{animation:olRelicFloat 9s ease-in-out infinite;will-change:translate,filter}
.ohero__sky img{animation:oheroDrift 28s ease-in-out infinite alternate,olSkyMood 12s ease-in-out infinite}
.ohero__brand::before{content:"";position:absolute;inset:-12% -9%;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 50% 46%,rgba(240,179,67,.13),transparent 68%);animation:olBrandAura 5.2s ease-in-out infinite}
.ohero__title{filter:drop-shadow(0 0 8px rgba(255,194,91,.13))}
.ohero__cta{animation:olCtaHalo 4s ease-in-out infinite}
.ohero__fog{animation:olFogBreath 9s ease-in-out infinite}
@keyframes olZeusBreath{0%,100%{translate:0 0}50%{translate:0 -9px}}
@keyframes olZeusCharge{0%,100%{filter:drop-shadow(0 0 34px rgba(57,138,255,.32)) drop-shadow(0 20px 36px rgba(0,0,0,.5)) saturate(1.05)}48%{filter:drop-shadow(0 0 62px rgba(74,179,255,.63)) drop-shadow(0 15px 40px rgba(0,0,0,.5)) saturate(1.17)}52%{filter:drop-shadow(0 0 78px rgba(145,221,255,.78)) drop-shadow(0 15px 40px rgba(0,0,0,.5)) saturate(1.22)}}
@keyframes olLogoEnergy{0%,100%{translate:0 0;filter:drop-shadow(0 3px 0 rgba(90,45,0,.75)) drop-shadow(0 10px 18px rgba(0,0,0,.75)) drop-shadow(0 0 18px rgba(255,190,70,.33))}50%{translate:0 -4px;filter:drop-shadow(0 3px 0 rgba(90,45,0,.75)) drop-shadow(0 12px 22px rgba(0,0,0,.8)) drop-shadow(0 0 35px rgba(255,205,103,.75))}}
@keyframes olRelicFloat{0%,100%{translate:0 0;filter:drop-shadow(0 20px 40px rgba(0,0,0,.6)) saturate(1.08)}50%{translate:0 -13px;filter:drop-shadow(0 28px 44px rgba(0,0,0,.65)) drop-shadow(0 0 16px rgba(246,188,86,.24)) saturate(1.15)}}
@keyframes olSkyMood{0%,100%{filter:saturate(1.08) contrast(1.06) brightness(.84)}50%{filter:saturate(1.14) contrast(1.08) brightness(.94)}}
@keyframes olBrandAura{0%,100%{opacity:.5;transform:scale(.96)}50%{opacity:1;transform:scale(1.07)}}
@keyframes olCtaHalo{0%,100%{filter:drop-shadow(0 0 2px rgba(255,198,81,.12))}50%{filter:drop-shadow(0 0 12px rgba(255,198,81,.42))}}
@keyframes olFogBreath{0%,100%{opacity:.83}50%{opacity:1}}
/* Lobby: alive but refined; cards remain individually clickable. */
@media (hover:hover) and (pointer:fine){
.gcard{transform-style:preserve-3d;transition:transform .48s cubic-bezier(.18,.8,.22,1),filter .48s ease}
.gcard:hover{transform:perspective(900px) translateY(-9px) rotateX(1.8deg) scale(1.014);filter:drop-shadow(0 14px 20px rgba(31,129,255,.24))}
.gcard__open{position:relative}
.gcard__open::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(110deg,transparent 20%,rgba(255,226,150,.14) 47%,transparent 65%);transform:translateX(-140%);transition:transform .8s ease}
.gcard:hover .gcard__open::after{transform:translateX(130%)}
.gcard:hover .gcard__open img{transform:scale(1.055);filter:brightness(1.11) saturate(1.14)}
.sports-showcase--single:hover .sports-single-image{transform:scale(1.025);filter:brightness(1.09) saturate(1.06)}
}
/* Modal appears with depth instead of popping abruptly. */
.reg[open] .reg__panel{animation:olModalArrival .38s cubic-bezier(.16,1,.3,1) both}
@keyframes olModalArrival{from{opacity:.3;transform:translateY(16px) scale(.975);filter:blur(5px)}to{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}}
/* Make the bonus panel feel like a stage while retaining its original wheel mechanics. */
.ol-bonus-dialog{border-color:rgba(248,203,111,.8);box-shadow:0 0 65px rgba(52,137,255,.32),0 0 12px rgba(241,183,71,.2),0 28px 95px rgba(0,0,0,.85)}
#ol-bonus-mount .ol-calculator__panel{position:relative}
#ol-bonus-mount .ol-calculator__panel::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background:radial-gradient(ellipse at 50% 28%,rgba(31,127,255,.12),transparent 70%);animation:olBrandAura 6s ease-in-out infinite}
@media(prefers-reduced-motion:reduce){.ohero__zeus,.ohero__logo,.ohero__roulette,.ohero__sky img,.ohero__brand::before,.ohero__cta,.ohero__fog,.reg[open] .reg__panel,#ol-bonus-mount .ol-calculator__panel::before{animation:none!important}.gcard:hover,.sports-showcase--single:hover .sports-single-image{transform:none!important}.gcard__open::after{display:none}}
