@keyframes pulse-glow {
    0%, 100% { opacity: 0.3; transform: translate(-50%, -50%) scale(1); }
    50% { opacity: 0.6; transform: translate(-50%, -50%) scale(1.1); }
}

@keyframes flicker {
    0%, 95%, 100% { opacity: 1; }
    96% { opacity: 0.8; }
    97% { opacity: 1; }
    98% { opacity: 0.7; }
}

@keyframes spin { to { transform: rotate(360deg); } }

@keyframes cell-error {
    0%, 100% { transform: translateX(0); }
    20% { transform: translateX(-3px); }
    40% { transform: translateX(3px); }
    60% { transform: translateX(-2px); }
    80% { transform: translateX(2px); }
}

@keyframes snap-pulse {
    0% { box-shadow: 0 0 0 0 var(--green-glow-strong); }
    50% { box-shadow: 0 0 20px 4px var(--green-glow-strong); }
    100% { box-shadow: 0 0 0 0 transparent; }
}

@keyframes clear-glow {
    from { text-shadow: 0 0 40px var(--green-glow), 0 0 80px var(--green-glow); }
    to { text-shadow: 0 0 60px var(--green-glow-strong), 0 0 120px var(--green-glow); }
}

@keyframes pulse-reward {
    0% { box-shadow: 0 0 0 0 rgba(255, 215, 0, 0.6); }
    70% { box-shadow: 0 0 0 15px rgba(255, 215, 0, 0); }
    100% { box-shadow: 0 0 0 0 rgba(255, 215, 0, 0); }
}

@keyframes dropIn {
    0% { transform: translateY(-50px) scale(0.9); opacity: 0; }
    50% { opacity: 1; }
    100% { transform: translateY(0) scale(1); opacity: 1; }
}

@keyframes collapse-shake {
    0%, 100% { transform: translateX(0) rotate(0deg); }
    10%, 30%, 50%, 70%, 90% { transform: translateX(-4px) rotate(-1deg); }
    20%, 40%, 60%, 80% { transform: translateX(4px) rotate(1deg); }
}

@keyframes fall-down {
    0% { transform: translateY(0); opacity: 1; }
    100% { transform: translateY(600px); opacity: 0; }
}
