/* Rich miniature scenes; motion is active only around the visible viewport. */
.gallery-cover .icon-cover::before,.gallery-cover .icon-cover::after{display:none}
.game-card .gallery-cover::before{opacity:.2}
.game-card .gallery-cover::after{opacity:.3}
.gallery-cover .icon-cover{background:#08121d;overflow:hidden;border-color:#7892a755;box-shadow:inset 0 0 0 1px #cedde512,0 8px 20px #0005}
.gallery-cover .cover-art{padding:0;filter:none;overflow:hidden}
.game-card:hover .gallery-cover .cover-art{filter:brightness(1.1);transform:scale(1.025)}
.cover-art .ca-motion{transform-box:fill-box;transform-origin:center;animation-play-state:paused!important;animation-delay:var(--lag,0s)}
.cover-art.cover-visible .ca-motion{animation-play-state:running!important}
.gallery-motion-paused .cover-art .ca-motion{animation-play-state:paused!important}
.ca-glimmer{animation:coverGlimmer 3.4s ease-in-out infinite}
.ca-hover{animation:coverHover 5s ease-in-out infinite}
.ca-drift{animation:coverDrift 8s ease-in-out infinite}
.ca-breathe{animation:coverBreathe 4.5s ease-in-out infinite}
.ca-swim{animation:coverSwim 7s ease-in-out infinite}
.ca-sway{animation:coverSway 5s ease-in-out infinite;transform-origin:50% 100%!important}
.ca-bubble{animation:coverBubble 4s linear infinite}
.ca-current{animation:coverCurrent 14s ease-in-out infinite}
.ca-plume{animation:coverPlume 5s ease-in-out infinite}
.ca-smoke{animation:coverSmoke 7s ease-in-out infinite}
.ca-flicker{animation:coverFlicker 1.1s ease-in-out infinite alternate;transform-origin:50% 100%!important}
.ca-thrust{animation:coverFlicker .9s ease-in-out infinite alternate;transform-origin:50% 0!important}
.ca-stance{animation:coverStance 3.8s ease-in-out infinite}
.ca-drive{animation:coverDrive 3.6s ease-in-out infinite}
.ca-flipper{animation:coverFlipper 2.6s ease-in-out infinite}
.ca-pinball{animation:coverPinball 3.2s linear infinite}
.ca-marble{animation:coverMarble 6s ease-in-out infinite}
.ca-paddle{animation:coverPaddle 3.8s ease-in-out infinite}
.ca-pong{animation:coverPong 4s linear infinite}
.ca-bolt{animation:coverBolt 2s ease-out infinite}
.ca-shock{animation:coverShock 4.8s ease-out infinite}
.ca-crawl{animation:coverCrawl 6s ease-in-out infinite}
.ca-invader{animation:coverInvader 4s steps(4) infinite}
.ca-firework{animation:coverFirework 4.2s ease-out infinite}
.ca-rotor{animation:coverRotor .5s ease-in-out infinite alternate}
.ca-slash{animation:coverSlash 4.5s ease-out infinite}
.ca-swing{animation:coverSwing 4.8s ease-in-out infinite}
@keyframes coverGlimmer{0%,100%{opacity:.35}45%{opacity:1}60%{opacity:.7}}
@keyframes coverHover{0%,100%{transform:translateY(1px)}50%{transform:translateY(-1.8px)}}
@keyframes coverDrift{0%,100%{transform:translate(-1px,1px) rotate(-5deg)}50%{transform:translate(1.7px,-1px) rotate(7deg)}}
@keyframes coverBreathe{0%,100%{transform:scale(.96);opacity:.8}50%{transform:scale(1.04);opacity:1}}
@keyframes coverSwim{0%,100%{transform:translate(-4px,1px) rotate(-2deg)}50%{transform:translate(5px,-1px) rotate(2deg)}}
@keyframes coverSway{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}
@keyframes coverBubble{0%{transform:translateY(4px);opacity:0}20%{opacity:.7}100%{transform:translateY(-13px);opacity:0}}
@keyframes coverCurrent{0%,100%{transform:rotate(-7deg) scale(.96)}50%{transform:rotate(8deg) scale(1.03)}}
@keyframes coverPlume{0%,100%{transform:translateY(1px) scaleX(.97);opacity:.7}50%{transform:translateY(-2px) scaleX(1.08);opacity:.95}}
@keyframes coverSmoke{0%,100%{transform:skewX(-4deg) scaleX(.94)}50%{transform:skewX(5deg) scaleX(1.05)}}
@keyframes coverFlicker{from{transform:scaleY(.75) scaleX(.95);opacity:.65}to{transform:scaleY(1.08) scaleX(1.05);opacity:1}}
@keyframes coverStance{0%,100%{transform:translateY(1px) rotate(-1deg)}50%{transform:translateY(-.6px) rotate(1deg)}}
@keyframes coverDrive{0%,100%{transform:translate(-.6px,.5px)}50%{transform:translate(.6px,-.3px)}}
@keyframes coverFlipper{0%,45%,100%{transform:rotate(0)}50%,62%{transform:rotate(-16deg)}}
@keyframes coverPinball{0%,100%{transform:translate(0,0)}30%{transform:translate(9px,-12px)}65%{transform:translate(-15px,-4px)}}
@keyframes coverMarble{0%,100%{transform:translate(-4px,2px)}50%{transform:translate(6px,-3px)}}
@keyframes coverPaddle{0%,100%{transform:translateY(-4px)}50%{transform:translateY(5px)}}
@keyframes coverPong{0%,100%{transform:translate(-29px,9px)}50%{transform:translate(27px,-10px)}}
@keyframes coverBolt{0%{transform:translateY(6px);opacity:0}20%{opacity:1}85%,100%{transform:translateY(-8px);opacity:0}}
@keyframes coverShock{0%{transform:scale(.45);opacity:0}25%{opacity:.9}100%{transform:scale(1.25);opacity:0}}
@keyframes coverCrawl{0%,100%{transform:translateX(-3px)}50%{transform:translateX(3px)}}
@keyframes coverInvader{0%,100%{transform:translateX(-3px)}50%{transform:translateX(3px)}}
@keyframes coverFirework{0%,12%{transform:scale(.2);opacity:0}20%{opacity:1}85%,100%{transform:scale(1.2);opacity:0}}
@keyframes coverRotor{from{transform:scaleX(.5);opacity:.5}to{transform:scaleX(1);opacity:1}}
@keyframes coverSlash{0%,50%{transform:translate(-8px,6px);opacity:0}65%{opacity:1}85%,100%{transform:translate(5px,-4px);opacity:0}}
@keyframes coverSwing{0%,100%{transform:rotate(-6deg)}50%{transform:rotate(6deg)}}
@media(prefers-reduced-motion:reduce){.cover-art .ca-motion{animation:none!important}.game-card:hover .gallery-cover .cover-art{transform:none}}
