/* =============================================
   ANIMATIONS.CSS - Animation Effects Only
   ============================================= */

/* Grid Movement Animation */
@keyframes gridMove {
    0% { transform: translate(0, 0); }
    100% { transform: translate(50px, 50px); }
}

/* Glass Card Shimmer Effect */
@keyframes shimmer {
    0%, 100% { transform: translateX(-100%); }
    50% { transform: translateX(100%); }
}

/* Glass Card Fast Entrance */
@keyframes glassFadeIn {
    0% {
        opacity: 0;
        transform: translateY(15px) scale(0.98);
    }
    100% {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

/* Terminal Cursor Blink */
@keyframes blink {
    0%, 50% { opacity: 1; }
    51%, 100% { opacity: 0; }
}

/* Button Hover Shine Effect */
@keyframes buttonShine {
    0% { left: -100%; }
    100% { left: 100%; }
}

/* Loading Spinner */
@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

/* Progress Bar Animation */
@keyframes progressBar {
    0% { width: 0%; }
    100% { width: 100%; }
}

/* Status Badge Pulse */
@keyframes pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.5; }
}

/* Floating Particles */
@keyframes float {
    0%, 100% { transform: translateY(0px) rotate(0deg); opacity: 0; }
    50% { transform: translateY(-100px) rotate(180deg); opacity: 1; }
}

/* Gradient Particles (Modern Subtle Effect) */
@keyframes gradientFloat {
    0%, 100% { 
        transform: translate(0, 0) scale(1);
        opacity: 0;
    }
    10% {
        opacity: 0.4;
    }
    50% { 
        transform: translate(var(--tx, 30px), var(--ty, -50px)) scale(1.2);
        opacity: 0.6;
    }
    90% {
        opacity: 0.3;
    }
}

/* Gradient particle styles will be added dynamically */
.gradient-particle {
    position: absolute;
    background: rgba(139, 92, 246, 0.28);
    border-radius: 50%;
    pointer-events: none;
    animation: gradientFloat linear infinite;
    filter: blur(2px);
    z-index: 0;
}

/* Scale Bounce Animation */
@keyframes scaleBounce {
    0% { transform: scale(1); }
    50% { transform: scale(1.05); }
    100% { transform: scale(1); }
}

/* Fade In Up */
@keyframes fadeInUp {
    0% { 
        opacity: 0; 
        transform: translateY(30px); 
    }
    100% { 
        opacity: 1; 
        transform: translateY(0); 
    }
}

/* Fade In Scale */
@keyframes fadeInScale {
    0% { 
        opacity: 0; 
        transform: scale(0.9); 
    }
    100% { 
        opacity: 1; 
        transform: scale(1); 
    }
}

/* Slide In From Right */
@keyframes slideInRight {
    0% { 
        opacity: 0; 
        transform: translateX(50px); 
    }
    100% { 
        opacity: 1; 
        transform: translateX(0); 
    }
}

/* Glow Pulse Effect */
@keyframes glowPulse {
    0%, 100% { 
        box-shadow: 0 0 5px rgba(139, 92, 246, 0.3); 
    }
    50% { 
        box-shadow: 0 0 20px rgba(139, 92, 246, 0.8); 
    }
}

/* Typing Animation */
@keyframes typing {
    from { width: 0; }
    to { width: 100%; }
}

/* Success Bounce */
@keyframes successBounce {
    0%, 20%, 60%, 100% { transform: translateY(0); }
    40% { transform: translateY(-10px); }
    80% { transform: translateY(-5px); }
}

/* Countdown Timer Animations */
@keyframes pulse {
    0%, 100% { 
        transform: scale(1); 
        opacity: 1; 
    }
    50% { 
        transform: scale(1.05); 
        opacity: 0.8; 
    }
}

@keyframes warning-blink {
    0%, 50% { 
        opacity: 1; 
    }
    25%, 75% { 
        opacity: 0.6; 
    }
}

@keyframes shake {
    0%, 100% { 
        transform: translateX(0); 
    }
    25% { 
        transform: translateX(-5px); 
    }
    75% { 
        transform: translateX(5px); 
    }
}