/*
============================================
APERTURE SCIENCE - ANIMATIONS
Fichier: aperture-animations.css
Auteur: Emile SNYERS
Date: 2025-08-16
Version: 2.0
Licence: Creative Commons BY-NC 4.0

Description: Toutes les animations et effets visuels du framework
Keyframes, transitions et effets spéciaux Aperture Science
============================================
*/

/* === ANIMATIONS PRINCIPALES === */
@keyframes rotate {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

@keyframes pulse {
    0%, 100% { 
        transform: scale(1); 
        opacity: 1; 
    }
    50% { 
        transform: scale(1.2); 
        opacity: 0.7; 
    }
}

@keyframes scan {
    0% { left: -100%; }
    100% { left: 100%; }
}

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

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

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

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

@keyframes slideInRight {
    from { 
        opacity: 0; 
        transform: translateX(30px); 
    }
    to { 
        opacity: 1; 
        transform: translateX(0); 
    }
}

@keyframes rotateIn {
    from { 
        opacity: 0; 
        transform: rotate(-180deg) scale(0); 
    }
    to { 
        opacity: 1; 
        transform: rotate(0deg) scale(1); 
    }
}

@keyframes expandWidth {
    from { width: 0; }
    to { width: 100%; }
}

@keyframes shimmer {
    0% { left: -100%; }
    100% { left: 100%; }
}

@keyframes warningBlink {
    0%, 100% { 
        opacity: 1; 
        transform: scale(1); 
    }
    50% { 
        opacity: 0.3; 
        transform: scale(0.9); 
    }
}

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

@keyframes growHeight {
    from { 
        height: 0; 
        opacity: 0; 
    }
    to { 
        height: 100%; 
        opacity: 1; 
    }
}

@keyframes pulseGlow {
    0%, 100% { 
        box-shadow: 0 0 5px var(--aperture-orange); 
    }
    50% { 
        box-shadow: 0 0 20px var(--aperture-orange), 0 0 30px var(--aperture-orange); 
    }
}

@keyframes sweepRight {
    0% { left: -100%; }
    100% { left: 100%; }
}

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

@keyframes terminalBlink {
    0%, 50%, 100% { opacity: 1; }
    25%, 75% { opacity: 0.3; }
}

@keyframes stripeMove {
    0% { transform: translateX(0); }
    100% { transform: translateX(20px); }
}

@keyframes glowPulse {
    0%, 100% { 
        text-shadow: 0 0 5px rgba(255, 107, 53, 0.5); 
    }
    50% { 
        text-shadow: 0 0 20px rgba(255, 107, 53, 0.8), 0 0 30px rgba(78, 205, 196, 0.5); 
    }
}

@keyframes scanlineMove {
    0% { transform: translateY(0); }
    100% { transform: translateY(10px); }
}

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

@keyframes borderGlow {
    0%, 100% { opacity: 0; }
    50% { opacity: 0.5; }
}

@keyframes staticNoise {
    0%, 100% { opacity: 0.02; }
    50% { opacity: 0.08; }
}

/* === CLASSES UTILITAIRES === */
.glow-text {
    text-shadow: 0 0 10px currentColor;
    animation: glowPulse 2s ease-in-out infinite;
}

.animate-on-scroll {
    opacity: 0;
    transform: translateY(30px);
    transition: var(--transition-slow);
}

.animate-on-scroll.visible {
    opacity: 1;
    transform: translateY(0);
}

.rotate-on-hover {
    transition: var(--transition-fast);
}

.rotate-on-hover:hover {
    transform: rotate(5deg);
}

.scale-on-hover {
    transition: var(--transition-fast);
}

.scale-on-hover:hover {
    transform: scale(1.05);
}

.slide-on-hover {
    transition: var(--transition-fast);
}

.slide-on-hover:hover {
    transform: translateX(5px);
}

/*
============================================
FIN DU FICHIER: aperture-animations.css
Auteur: Emile SNYERS
Date: 2025-08-16
Version: 2.0

Toutes les animations du framework Aperture Science
pour créer une expérience utilisateur immersive et dynamique
============================================
*/
