/* Animações Globais */
@keyframes pulse-glow {
    0% { 
        filter: drop-shadow(0 0 10px var(--primary-green));
        transform: scale(1);
    }
    100% { 
        filter: drop-shadow(0 0 25px var(--primary-pink));
        transform: scale(1.05);
    }
}

@keyframes title-glow {
    0% { 
        text-shadow: 0 0 10px var(--primary-green);
    }
    100% { 
        text-shadow: 0 0 20px var(--primary-pink);
    }
}

@keyframes scan {
    0% { left: -100%; }
    100% { left: 100%; }
}

@keyframes pulse-border {
    0%, 100% { opacity: 0.3; }
    50% { opacity: 1; }
}

@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

@keyframes shine {
    0% { 
        transform: translateX(-100%) translateY(-100%) rotate(45deg); 
    }
    100% { 
        transform: translateX(100%) translateY(100%) rotate(45deg); 
    }
}

@keyframes rotate-gradient {
    0% {
        transform: rotate(0deg);
    }
    100% {
        transform: rotate(360deg);
    }
}

@keyframes fade-in {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes slide-in-right {
    from {
        opacity: 0;
        transform: translateX(50px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes slide-in-left {
    from {
        opacity: 0;
        transform: translateX(-50px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes bounce-in {
    0% {
        opacity: 0;
        transform: scale(0.3);
    }
    50% {
        opacity: 1;
        transform: scale(1.05);
    }
    70% {
        transform: scale(0.9);
    }
    100% {
        opacity: 1;
        transform: scale(1);
    }
}

/* Utilitários de animação */
.animate-fade-in {
    animation: fade-in 0.6s ease-out forwards;
}

.animate-slide-in-right {
    animation: slide-in-right 0.5s ease-out forwards;
}

.animate-slide-in-left {
    animation: slide-in-left 0.5s ease-out forwards;
}

.animate-bounce-in {
    animation: bounce-in 0.7s cubic-bezier(0.68, -0.55, 0.265, 1.55) forwards;
}

/* Delays para animações em sequência */
.delay-100 { animation-delay: 0.1s; }
.delay-200 { animation-delay: 0.2s; }
.delay-300 { animation-delay: 0.3s; }
.delay-400 { animation-delay: 0.4s; }
.delay-500 { animation-delay: 0.5s; }

/* Animações para notificações de sessão */
@keyframes slideIn {
    from {
        opacity: 0;
        transform: translateX(100%);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes slideOut {
    from {
        opacity: 1;
        transform: translateX(0);
    }
    to {
        opacity: 0;
        transform: translateX(100%);
    }
}

/* Animação de progresso otimizado */
@keyframes progress-optimized {
    0% {
        transform: translateX(-100%);
        background: linear-gradient(90deg, transparent, var(--primary-green), transparent);
    }
    50% {
        background: linear-gradient(90deg, transparent, var(--primary-pink), transparent);
    }
    100% {
        transform: translateX(100%);
        background: linear-gradient(90deg, transparent, var(--primary-green), transparent);
    }
}