@keyframes bubble-pop{0%{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.3)}to{opacity:0;transform:scale(0)}}.bubble-popping{animation:.3s ease-out forwards bubble-pop}@keyframes bubble-fall{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(100px)}}.bubble-falling{animation:.5s ease-in forwards bubble-fall}@keyframes shooter-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.shooter-ready{animation:1s ease-in-out infinite shooter-pulse}@keyframes score-pop{0%{transform:scale(1)}50%{color:#22c55e;transform:scale(1.2)}to{transform:scale(1)}}.score-updated{animation:.3s ease-out score-pop}@keyframes emoji-shuffle{0%{transform:scale(1)rotate(0)}25%{transform:scale(1.1)rotate(-10deg)}50%{transform:scale(1.2)rotate(10deg)}75%{transform:scale(1.1)rotate(-5deg)}to{transform:scale(1)rotate(0)}}.emoji-shuffling{animation:.4s ease-in-out emoji-shuffle}@keyframes game-over-shake{0%,to{transform:translate(0)}25%{transform:translate(-5px)}75%{transform:translate(5px)}}.game-over-shake{animation:.3s ease-in-out game-over-shake}@keyframes trajectory-fade{0%,to{opacity:.3}50%{opacity:.6}}.trajectory-dot{animation:1s ease-in-out infinite trajectory-fade}.btn-game:hover{transform:translateY(-2px);box-shadow:0 4px 12px #00000026}.btn-game:active{transform:translateY(0)}@keyframes canvas-glow{0%,to{box-shadow:0 0 20px #3b82f64d}50%{box-shadow:0 0 30px #3b82f680}}.canvas-playing{animation:2s ease-in-out infinite canvas-glow}
