/* ==========================================================================
   FlowTap - Animations & Dynamic Visual FX
   ========================================================================== */

@keyframes starPop {
    0% {
        transform: scale(0) rotate(-45deg);
        opacity: 0;
    }
    70% {
        transform: scale(1.35) rotate(15deg);
        opacity: 1;
    }
    100% {
        transform: scale(1) rotate(0deg);
        opacity: 1;
    }
}

@keyframes coinPulse {
    0% { transform: scale(1); }
    50% { transform: scale(1.2); }
    100% { transform: scale(1); }
}

@keyframes glowPulse {
    0%, 100% {
        opacity: 0.2;
        transform: scale(1);
    }
    50% {
        opacity: 0.35;
        transform: scale(1.08);
    }
}

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

.victory-icon {
    animation: victoryFloat 3s ease-in-out infinite;
}

.bg-ambient-top {
    animation: glowPulse 6s ease-in-out infinite alternate;
}

.bg-ambient-bottom {
    animation: glowPulse 8s ease-in-out infinite alternate-reverse;
}

/* Hint Badge Pulse - draws attention */
@keyframes badgePulse {
    0%, 100% {
        box-shadow: 0 2px 8px rgba(251, 191, 36, 0.4);
    }
    50% {
        box-shadow: 0 2px 14px rgba(251, 191, 36, 0.7);
    }
}

.btn-badge {
    animation: badgePulse 2.5s ease-in-out infinite;
}

/* Subtle float for bottom dock entrance */
@keyframes dockSlideUp {
    from {
        transform: translateY(20px);
        opacity: 0;
    }
    to {
        transform: translateY(0);
        opacity: 1;
    }
}

.bottom-dock {
    animation: dockSlideUp 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
}

.game-header {
    animation: dockSlideUp 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
}
