/* DuelVerse motion — visual only, transform/opacity only. */
.mg-confetti-canvas{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:9999}
.mg-ring{position:fixed;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;border:3px solid #a78bfa;box-shadow:0 0 12px rgba(167,139,250,.8);pointer-events:none;z-index:9998;animation:mgRing .6s ease-out forwards}
@keyframes mgRing{to{transform:scale(3.2);opacity:0}}
.mg-fly{position:fixed;pointer-events:none;z-index:9998;display:grid;place-items:center;will-change:transform,opacity}
.mg-fly .pc,.mg-fly .dk-piece{pointer-events:none}
.mg-pulse{animation:mgPulse .6s ease}
@keyframes mgPulse{30%{transform:scale(1.08)}}
.mg-hop{animation:mgHop .18s ease}
@keyframes mgHop{40%{transform:translateY(-22%) scale(1.12)}}
.capture-float,.mg-score-float{animation:floatUp 1.15s ease-out forwards}
.mg-score-float{position:absolute;z-index:6;font-weight:800;font-size:1.3rem;color:var(--accent-2,#a78bfa);text-shadow:0 2px 10px rgba(0,0,0,.7);pointer-events:none}
/* Ludo: richer dice tumble inside the existing .45s shake envelope */
.die.rolling{animation:mgDice .42s ease}
@keyframes mgDice{20%{transform:rotate(-14deg) translateY(-6px) scale(1.06)}55%{transform:rotate(11deg) translateY(2px)}80%{transform:rotate(-6deg)}}
.die .pip{transition:opacity .05s}
.ludo-board .token{transition:transform .15s ease}
/* Whot: deal/play flip + slide-in (render happens on turn events) */
#pile-top .wcard{animation:mgFlip .32s ease both}
.card-fan .wcard{animation:mgDeal .25s ease both}
.card-fan .wcard:nth-child(2n){animation-delay:.03s}.card-fan .wcard:nth-child(3n){animation-delay:.06s}
@keyframes mgFlip{from{transform:rotateY(80deg) translateY(-6px);opacity:.3}to{transform:rotateY(0)}}
@keyframes mgDeal{from{transform:translateY(10px);opacity:.25}to{transform:translateY(0)}}
/* Chess/Draughts pieces settle smoothly; trays fade new captures via .mg-pulse */
.tray .pc{transition:opacity .2s}
.dk-piece{will-change:transform}
@media (prefers-reduced-motion:reduce){
.die.rolling,.mg-hop,.mg-pulse,#pile-top .wcard,.card-fan .wcard{animation:none!important}
.mg-ring{display:none}}
