/* ========================================
   TURISMO FOZ - ANIMAÇÕES OTIMIZADAS
   ======================================== */

/* ANIMAÇÕES ESSENCIAIS */
@keyframes fadeInUp {
    from { opacity: 0; transform: translateY(30px); }
    to { opacity: 1; transform: translateY(0); }
}

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

@keyframes gradientText {
    0%, 100% { background-position: 0% 50%; }
    50% { background-position: 100% 50%; }
}

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

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

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

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

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

@keyframes zoomIn {
    from { opacity: 0; transform: scale(0.8); }
    to { opacity: 1; transform: scale(1); }
}

@keyframes glow {
    0%, 100% { box-shadow: 0 0 20px rgba(0, 212, 255, 0.3); }
    50% { box-shadow: 0 0 30px rgba(0, 212, 255, 0.6); }
}

@keyframes shake {
    0%, 100% { transform: translateX(0); }
    10%, 30%, 50%, 70%, 90% { transform: translateX(-5px); }
    20%, 40%, 60%, 80% { transform: translateX(5px); }
}

@keyframes heartbeat {
    0%, 100% { transform: scale(1); }
    14% { transform: scale(1.1); }
    28% { transform: scale(1); }
    42% { transform: scale(1.1); }
    70% { transform: scale(1); }
}

@keyframes rubberBand {
    0% { transform: scale(1); }
    30% { transform: scaleX(1.25) scaleY(0.75); }
    40% { transform: scaleX(0.75) scaleY(1.25); }
    50% { transform: scaleX(1.15) scaleY(0.85); }
    65% { transform: scaleX(0.95) scaleY(1.05); }
    75% { transform: scaleX(1.05) scaleY(0.95); }
    100% { transform: scale(1); }
}

/* ANIMAÇÕES ESPECÍFICAS DO HERO */
@keyframes heroParticles {
    0%, 100% { transform: translateY(0px) rotate(0deg); }
    50% { transform: translateY(-20px) rotate(180deg); }
}

@keyframes badgeGlow {
    0%, 100% { text-shadow: 0 0 10px rgba(255, 215, 0, 0.5); }
    50% { text-shadow: 0 0 20px rgba(255, 215, 0, 0.8); }
}

@keyframes titleShine {
    0%, 100% { background-position: 0% 50%; }
    50% { background-position: 100% 50%; }
}

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

/* ANIMAÇÕES DE MODAL */
@keyframes modalSlideIn {
    from {
        opacity: 0;
        transform: scale(0.8) translateY(-50px);
    }
    to {
        opacity: 1;
        transform: scale(1) translateY(0);
    }
}

@keyframes modalSlideOut {
    from {
        opacity: 1;
        transform: scale(1) translateY(0);
    }
    to {
        opacity: 0;
        transform: scale(0.8) translateY(-50px);
    }
}

/* ANIMAÇÕES DE CARREGAMENTO */
@keyframes loadingSpinner {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

@keyframes loadingPulse {
    0%, 100% { opacity: 0.4; }
    50% { opacity: 1; }
}

/* MICRO-ANIMAÇÕES */
@keyframes microBounce {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.05); }
}

@keyframes microSlide {
    0%, 100% { transform: translateX(0); }
    50% { transform: translateX(5px); }
}

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

/* CLASSES DE ANIMAÇÃO */
.animate-fade-in { animation: fadeIn 0.6s ease forwards; }
.animate-slide-in-left { animation: slideInLeft 0.6s ease forwards; }
.animate-slide-in-right { animation: slideInRight 0.6s ease forwards; }
.animate-zoom-in { animation: zoomIn 0.6s ease forwards; }
.animate-float { animation: float 3s ease-in-out infinite; }
.animate-pulse { animation: pulse 2s infinite; }
.animate-glow { animation: glow 2s ease-in-out infinite; }
.animate-shake { animation: shake 0.5s ease-in-out; }
.animate-heartbeat { animation: heartbeat 1.5s ease-in-out infinite; }
.animate-rubber-band { animation: rubberBand 1s ease-in-out; }

/* CLASSES UTILITÁRIAS */
.loading-spinner { animation: loadingSpinner 1s linear infinite; }
.loading-pulse { animation: loadingPulse 1.5s ease-in-out infinite; }
.micro-bounce { animation: microBounce 0.3s ease-in-out; }
.micro-slide { animation: microSlide 0.3s ease-in-out; }

/* ANIMAÇÕES STAGGERED */
.stagger-1 { animation: staggerFadeIn 0.6s ease-out 0.1s both; }
.stagger-2 { animation: staggerFadeIn 0.6s ease-out 0.2s both; }
.stagger-3 { animation: staggerFadeIn 0.6s ease-out 0.3s both; }
.stagger-4 { animation: staggerFadeIn 0.6s ease-out 0.4s both; }
.stagger-5 { animation: staggerFadeIn 0.6s ease-out 0.5s both; }
.stagger-6 { animation: staggerFadeIn 0.6s ease-out 0.6s both; }

/* DELAYS DE ANIMAÇÃO */
.delay-1 { animation-delay: 0.1s; }
.delay-2 { animation-delay: 0.2s; }
.delay-3 { animation-delay: 0.3s; }
.delay-4 { animation-delay: 0.4s; }
.delay-5 { animation-delay: 0.5s; }