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

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

@keyframes glowPulse {
    0%, 100% { opacity: 0.5; transform: translate(-50%, -50%) scale(1); }
    50% { opacity: 0.8; transform: translate(-50%, -50%) scale(1.2); }
}

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

@keyframes progressShimmer {
    0% { background-position: 0% 0%; }
    100% { background-position: 200% 0%; }
}

@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

@keyframes nodeSlideIn {
    from {
        opacity: 0;
        transform: translateX(-20px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes fastestGlow {
    0%, 100% { box-shadow: 0 0 12px rgba(16, 185, 129, 0.4); }
    50% { box-shadow: 0 0 25px rgba(16, 185, 129, 0.6); }
}

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

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

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

.glass-card {
    animation: cardFadeIn 0.8s cubic-bezier(0.16, 1, 0.3, 1);
}

.logo {
    animation: logoFloat 4s ease-in-out infinite;
}

.logo-glow {
    animation: glowPulse 3s ease-in-out infinite;
}

.status-indicator {
    animation: statusPulse 2s ease-in-out infinite;
}

.progress-bar {
    animation: progressShimmer 3s linear infinite;
}

.loader-circle {
    animation: spin 1s linear infinite;
}

.loader-circle:nth-child(2) {
    animation: spin 1.2s linear infinite reverse;
}

.node-card {
    animation: nodeSlideIn 0.5s cubic-bezier(0.16, 1, 0.3, 1) backwards;
}

.node-card.fastest .node-icon {
    animation: fastestGlow 2s ease-in-out infinite;
}

.fastest-tag {
    animation: tagPulse 1.5s ease-in-out infinite;
}

.redirect-section {
    animation: panelSlideUp 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}

.timer-number {
    animation: timerPulse 1s ease-in-out infinite;
}
