/* =============================================================
   ANIMATIONS — @keyframes globales
   ============================================================= */

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

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

@keyframes spin {
    to { transform: rotate(360deg); }
}

@keyframes spinRev {
    to { transform: rotate(-360deg); }
}

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

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

@keyframes glowBlue {
    0%, 100% { box-shadow: 0 0 0 0 rgba(4,178,217,.5); }
    70%       { box-shadow: 0 0 0 14px rgba(4,178,217,0); }
}

@keyframes glowPink {
    0%, 100% { box-shadow: 0 0 0 0 rgba(217,24,114,.5); }
    70%       { box-shadow: 0 0 0 14px rgba(217,24,114,0); }
}

@keyframes glowGreen {
    0%, 100% { box-shadow: 0 0 0 0 rgba(5,146,18,.5); }
    70%       { box-shadow: 0 0 0 14px rgba(5,146,18,0); }
}

@keyframes shimLine {
    0%   { transform: translateX(-100%); }
    100% { transform: translateX(400%); }
}
