/* ============================================================
   Keyframes
   ============================================================ */
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes spinSlow{to{transform:rotate(360deg)}}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
@keyframes bobble{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-6px) rotate(2deg)}}

@keyframes pop{0%{transform:scale(1)}40%{transform:scale(1.25)}100%{transform:scale(0);opacity:0}}
@keyframes shake{0%,100%{transform:translateX(0)}20%{transform:translateX(-6px)}40%{transform:translateX(6px)}60%{transform:translateX(-4px)}80%{transform:translateX(4px)}}
@keyframes glowPulse{0%,100%{filter:drop-shadow(0 0 4px #fff)}50%{filter:drop-shadow(0 0 14px #fff) brightness(1.2)}}

@keyframes popIn{0%{transform:scale(.6);opacity:0}100%{transform:scale(1);opacity:1}}
@keyframes starPop{0%{transform:scale(0) rotate(-40deg);opacity:0}70%{transform:scale(1.4)}100%{transform:scale(1);opacity:1}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes fadeOut{from{opacity:1}to{opacity:0}}

@keyframes bounceIn{0%{transform:scale(.2) translateY(80px);opacity:0}60%{transform:scale(1.1) translateY(-10px)}100%{transform:scale(1) translateY(0);opacity:1}}
@keyframes villainIn{0%{transform:translateX(-60px) rotate(-8deg);opacity:0}50%{transform:translateX(10px) rotate(4deg)}100%{transform:translateX(0) rotate(0);opacity:1}}

@keyframes fall{to{transform:translateY(105vh) rotate(540deg);opacity:.9}}
@keyframes dropFall{to{top:100%}}

/* gemas */
@keyframes explode{0%{transform:scale(1.15);opacity:1;filter:brightness(1.6)}100%{transform:scale(0);opacity:0}}
@keyframes idleBob{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-1.5px) rotate(.4deg)}}
@keyframes jelly{0%,100%{transform:scale(1,1)}25%{transform:scale(1.015,.985)}50%{transform:scale(.99,1.01)}75%{transform:scale(1.008,.992)}}
@keyframes land{0%{transform:scaleY(.72) scaleX(1.16)}45%{transform:scaleY(1.12) scaleX(.9)}72%{transform:scaleY(.96) scaleX(1.03)}100%{transform:scale(1)}}
@keyframes hintPulse{0%,100%{transform:scale(1);box-shadow:inset 0 6px 8px rgba(255,255,255,.45),inset 0 -7px 10px rgba(0,0,0,.45),0 0 0 0 var(--glow)}50%{transform:scale(1.12);box-shadow:inset 0 6px 8px rgba(255,255,255,.45),0 0 0 4px #fff,0 0 22px var(--glow)}}
@keyframes wrapPulse{0%,100%{transform:scale(1);box-shadow:inset 0 6px 8px rgba(255,255,255,.5),inset 0 -7px 10px rgba(0,0,0,.45),0 0 6px var(--glow)}50%{transform:scale(1.06);box-shadow:inset 0 6px 8px rgba(255,255,255,.5),0 0 22px #fff}}
@keyframes flashRed{0%,100%{transform:scale(1)}50%{transform:scale(1.12)}}

/* animações dos ícones */
@keyframes sunSpin{to{transform:rotate(360deg)}}
@keyframes turbineSpin{to{transform:rotate(360deg)}}
@keyframes waterBob{0%,100%{transform:translateY(-3%)}50%{transform:translateY(4%)}}
@keyframes flameFlicker{0%{transform:scaleY(1) scaleX(1) skewX(0)}100%{transform:scaleY(1.12) scaleX(.95) skewX(-3deg)}}
@keyframes oilPulse{0%,100%{transform:scale(1);filter:drop-shadow(0 2px 3px rgba(0,0,0,.5)) brightness(1)}50%{transform:scale(1.06);filter:drop-shadow(0 2px 3px rgba(0,0,0,.5)) brightness(1.18)}}
@keyframes coalEmber{0%,100%{transform:rotate(-2deg) scale(1);filter:drop-shadow(0 2px 3px rgba(0,0,0,.5)) brightness(.9)}50%{transform:rotate(2deg) scale(1.05);filter:drop-shadow(0 0 6px rgba(255,110,30,.85)) brightness(1.32)}}

/* fundo + brilho do tabuleiro */
@keyframes sceneDrift{0%{transform:scale(1.1) translate(0,0)}100%{transform:scale(1.16) translate(-2%,-2%)}}
@keyframes sheenSweep{0%{left:-70%}55%{left:160%}100%{left:160%}}
@keyframes iceBreak{0%{transform:scale(1);opacity:1;filter:brightness(1.4)}50%{transform:scale(1.15) rotate(4deg)}100%{transform:scale(.2) rotate(-8deg);opacity:0}}
@keyframes shardFly{0%{opacity:1;transform:translate(-50%,-50%) scale(1)}100%{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(.3)}}
@keyframes shock{0%{width:10px;height:10px;opacity:.9}100%{width:120px;height:120px;opacity:0}}
@keyframes megaPop{0%{opacity:0;transform:translate(-50%,-50%) scale(.4)}25%{opacity:1;transform:translate(-50%,-60%) scale(1.15)}70%{opacity:1;transform:translate(-50%,-90%) scale(1)}100%{opacity:0;transform:translate(-50%,-130%) scale(.9)}}
@keyframes bornFlash{0%{transform:scale(.2) rotate(-20deg);filter:brightness(3)}40%{transform:scale(1.45) rotate(8deg);filter:brightness(2)}65%{transform:scale(.92) rotate(-3deg)}100%{transform:scale(1) rotate(0);filter:brightness(1)}}

/* personagens nos resultados */
.cheer{animation:bobble 1s ease-in-out infinite}
.sad{animation:sadWobble 2s ease-in-out infinite;filter:grayscale(.4) drop-shadow(0 6px 10px rgba(0,0,0,.2))}
@keyframes sadWobble{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}

@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.05ms!important}
}
