.anim-idle{animation:bob 2s ease-in-out infinite}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.anim-touched{animation:touched .4s ease-out}@keyframes touched{0%{transform:scale(1);filter:brightness(1)}50%{transform:scale(1.15);filter:brightness(1.8)}to{transform:scale(1);filter:brightness(1)}}.anim-collected{animation:collected .7s ease-out forwards;pointer-events:none}@keyframes collected{0%{transform:translateY(0) scale(1) rotate(0);opacity:1}25%{transform:translateY(-60px) scale(1.15) rotate(15deg);opacity:1}50%{transform:translateY(-80px) scale(1.1) rotate(-10deg);opacity:.9}75%{transform:translateY(-40px) scale(.8) rotate(5deg);opacity:.5}to{transform:translateY(-20px) scale(.3) rotate(0);opacity:0}}.score-popup{animation:scorePopup .9s ease-out forwards;pointer-events:none;position:absolute;color:#fff;font-weight:700;font-size:20px;font-family:system-ui,sans-serif;text-shadow:0 2px 4px rgba(0,0,0,.7),0 0 10px rgba(255,215,0,.6);z-index:10}@keyframes scorePopup{0%{transform:translateY(0) scale(1);opacity:1}50%{transform:translateY(-40px) scale(1.2);opacity:1}to{transform:translateY(-70px) scale(.8);opacity:0}}.anim-hurt{animation:hurt .3s ease-out}@keyframes hurt{0%{filter:brightness(1)}25%{filter:brightness(3) hue-rotate(30deg)}to{filter:brightness(1)}}.anim-invulnerable{animation:blink .15s steps(1) infinite}@keyframes blink{0%,49%{opacity:1}50%,to{opacity:.3}}.anim-shield{box-shadow:0 0 12px 4px #66ccff80;border-radius:50%}.anim-power-flash{animation:powerFlash .5s ease-out}@keyframes powerFlash{0%{filter:brightness(1)}30%{filter:brightness(2.5) saturate(2)}to{filter:brightness(1)}}.anim-speed{filter:blur(.5px)}.anim-sparkle{animation:sparkle 1.5s ease-in-out infinite}@keyframes sparkle{0%,to{filter:brightness(1)}50%{filter:brightness(1.4)}}
