@keyframes cell-reveal {
    0% {
        transform: scale(0);
        opacity: 0;
    }
    60% {
        transform: scale(1.15);
    }
    100% {
        transform: scale(1);
        opacity: 1;
    }
}

@keyframes cell-highlight {
    0%, 100% {
        box-shadow: none;
    }
    50% {
        box-shadow: 0 0 12px rgba(255, 255, 255, 0.6);
    }
}

@keyframes shake {
    0%, 100% { transform: translateX(0); }
    20% { transform: translateX(-8px); }
    40% { transform: translateX(8px); }
    60% { transform: translateX(-6px); }
    80% { transform: translateX(6px); }
}

@keyframes fly-up {
    0% {
        opacity: 1;
        transform: translateX(-50%) translateY(0);
    }
    100% {
        opacity: 0;
        transform: translateX(-50%) translateY(-80px);
    }
}

@keyframes pulse-glow {
    0%, 100% {
        box-shadow: 0 0 0 0 rgba(233, 69, 96, 0.4);
    }
    50% {
        box-shadow: 0 0 0 8px rgba(233, 69, 96, 0);
    }
}

@keyframes pop-in {
    0% {
        transform: scale(0.5);
        opacity: 0;
    }
    70% {
        transform: scale(1.1);
    }
    100% {
        transform: scale(1);
        opacity: 1;
    }
}

@keyframes slide-up {
    from {
        transform: translateY(20px);
        opacity: 0;
    }
    to {
        transform: translateY(0);
        opacity: 1;
    }
}

@keyframes confetti-fall {
    0% {
        transform: translateY(0) rotate(0deg);
        opacity: 1;
    }
    100% {
        transform: translateY(100vh) rotate(720deg);
        opacity: 0;
    }
}

.anim-reveal {
    animation: cell-reveal 0.3s ease forwards;
}

.anim-highlight {
    animation: cell-highlight 0.4s ease;
}

.anim-shake {
    animation: shake 0.4s ease;
}

.anim-fly-up {
    animation: fly-up 1s ease forwards;
}

.anim-pop-in {
    animation: pop-in 0.4s ease forwards;
}

.anim-slide-up {
    animation: slide-up 0.3s ease forwards;
}

.confetti-particle {
    position: fixed;
    width: 10px;
    height: 10px;
    border-radius: 2px;
    animation: confetti-fall linear forwards;
    z-index: 200;
    pointer-events: none;
}
