/**
 * CSS Animations - All @keyframes consolidated
 * Extracted from poker.css for maintainability
 *
 * Note: Card animations moved to components/card-animations.css
 */

@keyframes overlay-fade-in {
    0% { opacity: 0; }
    100% { opacity: 1; }
}

@keyframes winFlash {
    0% { opacity: 0; }
    8% { opacity: 1; }
    25% { opacity: 0.85; }
    100% { opacity: 0; }
}

@keyframes potCelebrate {
    0% { transform: scale(1); }
    40% { transform: scale(1.08); }
    100% { transform: scale(1); }
}

@keyframes allInPlayerPulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.85; }
}

@keyframes allInLabelPulse {
    0%, 100% { transform: translateX(-50%) scale(1); }
    50% { transform: translateX(-50%) scale(1.05); }
}

/* runoutCardGlow, flopRevealGlow moved to components/card-animations.css */

@keyframes dangerPulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.6; }
}

@keyframes heroModalIn {
    from {
        opacity: 0;
        transform: scale(0.95) translateY(10px);
    }
    to {
        opacity: 1;
        transform: scale(1) translateY(0);
    }
}

@keyframes celebrationFadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes celebrationFadeOut {
    from { opacity: 1; }
    to { opacity: 0; }
}

/* cardPopIn moved to components/card-animations.css */

@keyframes iconBounce {
    0% {
        opacity: 0;
        transform: scale(0.5) translateY(-10px);
    }
    60% {
        transform: scale(1.15);
    }
    100% {
        opacity: 1;
        transform: scale(1) translateY(0);
    }
}

@keyframes coinRewardIn {
    0% {
        opacity: 0;
        transform: translateY(10px);
    }
    100% {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes coinSpin {
    0% {
        transform: rotateY(0deg) scale(0.5);
    }
    50% {
        transform: rotateY(180deg) scale(1.2);
    }
    100% {
        transform: rotateY(360deg) scale(1);
    }
}

@keyframes confettiFall {
    0% {
        opacity: 1;
        transform:
            translateY(var(--start-y, 40vh))
            translateX(var(--start-x, 0px))
            rotate(0deg)
            scale(1);
    }
    100% {
        opacity: 0;
        transform:
            translateY(calc(var(--start-y, 40vh) + 60vh))
            translateX(calc(var(--start-x, 0px) + var(--drift-x, 0px)))
            rotate(var(--rotation, 720deg))
            scale(0.5);
    }
}

@keyframes toastSlideUp {
    from {
        opacity: 0;
        transform: translateX(-50%) translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateX(-50%) translateY(0);
    }
}

@keyframes activeDotPulse {
    0%, 100% { transform: scale(1); opacity: 1; }
    50% { transform: scale(1.15); opacity: 0.85; }
}

@keyframes pulseSeat {
    0%, 100% { opacity: 0.7; }
    50% { opacity: 1; }
}

@keyframes activeGlowPulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.9; }
}

@keyframes toActBounce {
    0%, 100% { transform: translateX(-50%) translateY(0); }
    50% { transform: translateX(-50%) translateY(-2px); }
}

/* cardsFold, cardsFoldFast moved to components/card-animations.css */

@keyframes chipFlyToPot {
    0% {
        opacity: 1;
        transform: scale(1) translateZ(0);
    }
    80% {
        opacity: 1;
        transform: scale(0.8) translateZ(0);
    }
    100% {
        opacity: 0;
        transform: scale(0.5) translateZ(0);
    }
}

@keyframes vfp-enter {
    from { opacity: 0; transform: translate(-50%, -50%) scale(0.9); }
    to { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}

@keyframes vfp-exit {
    from { opacity: 1; transform: translate(-50%, -50%) scale(1); }
    to { opacity: 0; transform: translate(-50%, -50%) scale(0.95); }
}

@keyframes chipStackAppear {
    0% {
        opacity: 0;
        transform: translateY(-8px) scale(0.85);
    }
    60% {
        opacity: 1;
        transform: translateY(1px) scale(1.03);
    }
    100% {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

/* allInButtonPulse lives in shared/action-buttons.css */

@keyframes messageBounceIn {
    0% {
        opacity: 0;
        transform: translateX(-50%) scale(0.3);
    }
    50% {
        opacity: 1;
        transform: translateX(-50%) scale(1.1);
    }
    70% {
        transform: translateX(-50%) scale(0.95);
    }
    100% {
        transform: translateX(-50%) scale(1);
    }
}

@keyframes winnerGlow {
    0%, 100% { opacity: 0.6; }
    50% { opacity: 1; }
}

@keyframes loserShake {
    0%, 100% { transform: translateX(-50%); }
    20% { transform: translateX(calc(-50% + 5px)); }
    40% { transform: translateX(calc(-50% - 5px)); }
    60% { transform: translateX(calc(-50% + 3px)); }
    80% { transform: translateX(calc(-50% - 3px)); }
}

/* loadingPulse merged into pulseSeat (identical) */

/* btnActivate lives in shared/action-buttons.css */

@keyframes slideRevealUp {
    from { opacity: 0; transform: translateY(-6px); }
    to { opacity: 1; transform: translateY(0); }
}
/* blExpandSlideIn + metricPanelReveal merged into slideRevealUp (identical) */

@keyframes empty-float {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-8px); }
}

@keyframes leak-pulse {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.05); }
}

@keyframes leak-pulse-critical {
    0%, 100% { transform: scale(1); opacity: 0.85; }
    50% { transform: scale(1.08); opacity: 1; }
}

@keyframes slideRevealUp-md {
    from { opacity: 0; transform: translateY(-8px); }
    to { opacity: 1; transform: translateY(0); }
}
/* leak-body-in + vh-slide-in merged into slideRevealUp-md (identical, -8px variant) */

@keyframes spin360 {
    to { transform: rotate(360deg); }
}
/* Aliases removed: careerSpin, blSpinner, arena-start-spin, stateSpinnerRotate → spin360 */

/* cardFadeIn, cardReveal, cardFlip3D moved to components/card-animations.css */

@keyframes chipMove {
    from {
        opacity: 0;
        transform: scale(0.7) translateZ(-10px);
    }
    to {
        opacity: 1;
        transform: scale(1) translateZ(0);
    }
}

@keyframes potGrow {
    0% { transform: scale(1); }
    50% { transform: scale(1.1); }
    100% { transform: scale(1); }
}

@keyframes streetIndicatorFade {
    0% { opacity: 0.55; }
    50% { opacity: 0.95; }
    100% { opacity: 0.55; }
}

/* cardSlam moved to components/card-animations.css */

@keyframes allinPulse {
    0% {
        transform: scale(1);
        opacity: 0.8;
        border-color: rgba(239, 68, 68, 0.7);
    }
    100% {
        transform: scale(1.15);
        opacity: 0;
        border-color: rgba(239, 68, 68, 0.3);
    }
}

@keyframes allInFlash {
    0% { opacity: 0; }
    15% { opacity: 1; }
    100% { opacity: 0; }
}

@keyframes potTick {
    0% { transform: scale(1); }
    50% { transform: scale(1.06); color: var(--accent-light); }
    100% { transform: scale(1); }
}

@keyframes sparkleFloat {
    0% {
        opacity: 0;
        transform: translateY(0) scale(0.5);
    }
    20% {
        opacity: 1;
        transform: translateY(-8px) scale(1);
    }
    100% {
        opacity: 0;
        transform: translateY(-40px) scale(0.3);
    }
}

@keyframes timerUrgent {
    0%, 100% { opacity: 0.7; }
    50% { opacity: 1; }
}

@keyframes hotGlow {
    0%, 100% { text-shadow: 0 0 5px rgba(249, 115, 22, 0.5); }
    50% { text-shadow: 0 0 15px rgba(249, 115, 22, 0.8); }
}

@keyframes allInTextPulse {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.08); }
}

@keyframes avatarPickerFadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes avatarPickerSlideUp {
    from { opacity: 0; transform: translateY(20px) scale(0.97); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}

/* vh-slide-in merged into slideRevealUp-md */
