/*
================================================================================
GIMNASIO INTERNACIONAL - ANIMACIONES Y EFECTOS VISUALES
================================================================================
Archivo: css/animations.css
Descripción: Animaciones CSS modernas, transiciones y efectos visuales
Autor: Desarrollo Web Especializado
Fecha: Junio 2025
================================================================================
*/

/* ===== CONFIGURACIÓN BASE DE ANIMACIONES ===== */
:root {
    /* Duraciones de Animación */
    --anim-fast: 0.2s;
    --anim-normal: 0.3s;
    --anim-slow: 0.5s;
    --anim-very-slow: 1s;
    --anim-ultra-slow: 2s;
    
    /* Easing Functions Avanzadas */
    --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
    --ease-out-back: cubic-bezier(0.34, 1.56, 0.64, 1);
    --ease-in-back: cubic-bezier(0.6, -0.28, 0.735, 0.045);
    --ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
    --ease-elastic: cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

/* ===== RESPETO POR PREFERENCIAS DE ACCESIBILIDAD ===== */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
    
    /* Mantener solo animaciones esenciales para UX */
    .loading-spinner {
        animation: spin 1s linear infinite;
    }
}

/* ===== KEYFRAMES - ANIMACIONES BÁSICAS ===== */

/* Fade In con slide desde abajo */
@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(40px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Fade In con slide desde arriba */
@keyframes fadeInDown {
    from {
        opacity: 0;
        transform: translateY(-40px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Fade In simple */
@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

/* Zoom In con bounce */
@keyframes zoomInBounce {
    0% {
        opacity: 0;
        transform: scale(0.3);
    }
    50% {
        opacity: 1;
        transform: scale(1.05);
    }
    70% {
        transform: scale(0.95);
    }
    100% {
        opacity: 1;
        transform: scale(1);
    }
}

/* Slide Down para header */
@keyframes slideDown {
    from {
        transform: translateY(-100%);
        opacity: 0;
    }
    to {
        transform: translateY(0);
        opacity: 1;
    }
}

/* ===== KEYFRAMES - ANIMACIONES DE ATENCIÓN ===== */

/* Pulse suave */
@keyframes pulse {
    0%, 100% {
        transform: scale(1);
        opacity: 1;
    }
    50% {
        transform: scale(1.05);
        opacity: 0.9;
    }
}

/* Pulse intenso para CTAs */
@keyframes pulseIntense {
    0%, 100% {
        transform: scale(1);
        box-shadow: 0 0 0 0 rgba(37, 211, 102, 0.7);
    }
    50% {
        transform: scale(1.02);
        box-shadow: 0 0 0 15px rgba(37, 211, 102, 0);
    }
}

/* Heartbeat para elementos críticos */
@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);
    }
}

/* Bounce */
@keyframes bounce {
    0%, 20%, 50%, 80%, 100% {
        transform: translateY(0);
    }
    40% {
        transform: translateY(-15px);
    }
    60% {
        transform: translateY(-8px);
    }
}

/* Bounce suave */
@keyframes bounceSoft {
    0%, 100% {
        transform: translateY(0);
    }
    50% {
        transform: translateY(-8px);
    }
}

/* Wiggle para elementos de urgencia */
@keyframes wiggle {
    0%, 100% {
        transform: rotate(0deg);
    }
    25% {
        transform: rotate(-2deg);
    }
    75% {
        transform: rotate(2deg);
    }
}

/* Shake para alertas */
@keyframes shake {
    0%, 100% {
        transform: translateX(0);
    }
    10%, 30%, 50%, 70%, 90% {
        transform: translateX(-3px);
    }
    20%, 40%, 60%, 80% {
        transform: translateX(3px);
    }
}

/* Flash para elementos de urgencia */
@keyframes flash {
    0%, 50%, 100% {
        opacity: 1;
    }
    25%, 75% {
        opacity: 0.7;
        transform: scale(1.02);
    }
}

/* Glow effect */
@keyframes glow {
    0%, 100% {
        box-shadow: 0 0 10px rgba(251, 191, 36, 0.3);
    }
    50% {
        box-shadow: 0 0 25px rgba(251, 191, 36, 0.6),
                    0 0 35px rgba(251, 191, 36, 0.4);
    }
}

/* ===== KEYFRAMES - NÚMEROS Y CONTADOR ===== */

/* Pulse para números del countdown */
@keyframes numberPulse {
    0%, 100% {
        transform: scale(1);
        color: inherit;
    }
    50% {
        transform: scale(1.1);
        color: var(--accent-gold);
        text-shadow: 0 0 15px rgba(251, 191, 36, 0.5);
    }
}

/* Flip para cambio de números */
@keyframes flipNumber {
    0% {
        transform: rotateY(0);
    }
    50% {
        transform: rotateY(-90deg);
    }
    100% {
        transform: rotateY(0);
    }
}

/* Count up effect */
@keyframes countUp {
    from {
        transform: translateY(30px) scale(0.8);
        opacity: 0;
    }
    to {
        transform: translateY(0) scale(1);
        opacity: 1;
    }
}

/* ===== KEYFRAMES - EFECTOS DE FONDO ===== */

/* Rotación lenta */
@keyframes rotate {
    from {
        transform: rotate(0deg);
    }
    to {
        transform: rotate(360deg);
    }
}

/* Float para elementos flotantes */
@keyframes float {
    0%, 100% {
        transform: translateY(0px);
    }
    50% {
        transform: translateY(-12px);
    }
}

/* Float con rotación */
@keyframes floatRotate {
    0%, 100% {
        transform: translateY(0px) rotate(0deg);
    }
    33% {
        transform: translateY(-10px) rotate(1deg);
    }
    66% {
        transform: translateY(-5px) rotate(-1deg);
    }
}

/* Gradient shift para fondos */
@keyframes gradientShift {
    0% {
        background-position: 0% 50%;
    }
    50% {
        background-position: 100% 50%;
    }
    100% {
        background-position: 0% 50%;
    }
}

/* Shimmer effect */
@keyframes shimmer {
    0% {
        background-position: -200% 0;
    }
    100% {
        background-position: 200% 0;
    }
}

/* Partículas flotando */
@keyframes particleFloat {
    0% {
        transform: translateY(0) translateX(0) rotate(0deg);
        opacity: 0.7;
    }
    33% {
        transform: translateY(-20px) translateX(10px) rotate(120deg);
        opacity: 1;
    }
    66% {
        transform: translateY(-10px) translateX(-5px) rotate(240deg);
        opacity: 0.8;
    }
    100% {
        transform: translateY(0) translateX(0) rotate(360deg);
        opacity: 0.7;
    }
}

/* ===== KEYFRAMES - LOADING Y SPINNER ===== */

/* Spinner básico */
@keyframes spin {
    0% {
        transform: rotate(0deg);
    }
    100% {
        transform: rotate(360deg);
    }
}

/* Pulse loader */
@keyframes pulseLoader {
    0%, 100% {
        transform: scale(1);
        opacity: 1;
    }
    50% {
        transform: scale(1.2);
        opacity: 0.3;
    }
}

/* Dots bounce */
@keyframes dotsBounce {
    0%, 80%, 100% {
        transform: scale(0);
        opacity: 0.5;
    }
    40% {
        transform: scale(1);
        opacity: 1;
    }
}

/* ===== KEYFRAMES - BORDES Y EFECTOS ===== */

/* Border glow animado */
@keyframes borderGlow {
    0%, 100% {
        border-color: rgba(251, 191, 36, 0.3);
        box-shadow: 0 0 10px rgba(251, 191, 36, 0.3);
    }
    50% {
        border-color: rgba(251, 191, 36, 0.8);
        box-shadow: 0 0 25px rgba(251, 191, 36, 0.6),
                    0 0 35px rgba(251, 191, 36, 0.3);
    }
}

/* Scale in */
@keyframes scaleIn {
    0% {
        transform: scale(0);
        opacity: 0;
    }
    100% {
        transform: scale(1);
        opacity: 1;
    }
}

/* Scale out */
@keyframes scaleOut {
    0% {
        transform: scale(1);
        opacity: 1;
    }
    100% {
        transform: scale(0);
        opacity: 0;
    }
}

/* ===== APLICACIÓN DE ANIMACIONES A ELEMENTOS ===== */

/* Loading screen */
.loading-screen {
    animation: fadeIn var(--anim-normal) var(--ease-in-out);
}

.loading-screen.hidden {
    animation: fadeOut var(--anim-normal) var(--ease-in-out);
}

@keyframes fadeOut {
    from { opacity: 1; }
    to { opacity: 0; }
}

.loading-spinner {
    animation: spin 1s linear infinite;
}

.loading-text {
    animation: pulse var(--anim-ultra-slow) infinite;
}

/* Banner de urgencia */
.urgency-banner {
    animation: slideDown var(--anim-slow) var(--ease-out-back);
}

.spots-counter {
    animation: heartbeat 2s infinite;
    animation-delay: 1s;
}

/* Header */
.header {
    animation: slideDown var(--anim-slow) var(--ease-in-out) 0.3s both;
}

.logo {
    animation: fadeIn var(--anim-slow) var(--ease-in-out) 0.5s both;
}

.nav-links li {
    animation: fadeInDown var(--anim-normal) var(--ease-out-back);
    animation-fill-mode: both;
}

.nav-links li:nth-child(1) { animation-delay: 0.1s; }
.nav-links li:nth-child(2) { animation-delay: 0.2s; }
.nav-links li:nth-child(3) { animation-delay: 0.3s; }
.nav-links li:nth-child(4) { animation-delay: 0.4s; }
.nav-links li:nth-child(5) { animation-delay: 0.5s; }

.nav-whatsapp {
    animation: bounce var(--anim-ultra-slow) infinite;
    animation-delay: 1.5s;
}

/* Hero section */
.hero-content {
    animation: fadeInUp var(--anim-very-slow) var(--ease-out-back) 0.8s both;
}

.hero-title {
    animation: fadeInUp var(--anim-very-slow) var(--ease-out-back) 1s both;
}

.hero-subtitle {
    animation: fadeInUp var(--anim-very-slow) var(--ease-out-back) 1.2s both;
}

.urgency-alert {
    animation: flash 3s infinite, wiggle 2s infinite;
    animation-delay: 2s, 3s;
}

.price-tag {
    animation: zoomInBounce var(--anim-very-slow) var(--ease-bounce) 1.4s both,
               glow 4s infinite;
    animation-delay: 0s, 2s;
}

.hero-btn {
    animation: fadeInUp var(--anim-very-slow) var(--ease-out-back) 1.6s both,
               pulseIntense 3s infinite;
    animation-delay: 0s, 3s;
}

.scroll-indicator {
    animation: fadeInUp var(--anim-very-slow) var(--ease-in-out) 2s both;
}

.scroll-arrow {
    animation: bounce var(--anim-ultra-slow) infinite;
    animation-delay: 3s;
}

/* Hero background effects */
.hero-background {
    background: linear-gradient(135deg, var(--primary-blue) 0%, var(--primary-red) 100%);
    background-size: 400% 400%;
    animation: gradientShift 8s ease infinite;
}

.hero-background::before {
    animation: particleFloat 15s ease-in-out infinite;
}

/* Countdown section */
.countdown-content {
    animation: fadeInUp var(--anim-very-slow) var(--ease-in-out) 0.5s both;
}

.countdown-title {
    animation: fadeInUp var(--anim-slow) var(--ease-out-back) 0.7s both;
}

.countdown-timer {
    animation: fadeInUp var(--anim-slow) var(--ease-in-out) 0.9s both;
}

.countdown-box {
    animation: fadeInUp var(--anim-slow) var(--ease-out-back);
    animation-fill-mode: both;
    transition: all var(--anim-normal) var(--ease-in-out);
}

.countdown-box:nth-child(1) { animation-delay: 0.1s; }
.countdown-box:nth-child(2) { animation-delay: 0.2s; }
.countdown-box:nth-child(3) { animation-delay: 0.3s; }
.countdown-box:nth-child(4) { animation-delay: 0.4s; }

.countdown-number {
    animation: numberPulse 2s infinite;
    transition: all var(--anim-normal) var(--ease-in-out);
}

.countdown-box:hover {
    animation: float var(--anim-very-slow) infinite;
}

.countdown-message {
    animation: glow 3s infinite, fadeInUp var(--anim-slow) var(--ease-in-out) 1.1s both;
}

.countdown-btn {
    animation: fadeInUp var(--anim-slow) var(--ease-out-back) 1.3s both,
               bounce var(--anim-ultra-slow) infinite;
    animation-delay: 0s, 2s;
}

/* Benefits section */
.section-title {
    animation: fadeInUp var(--anim-slow) var(--ease-in-out);
}

.benefit-card {
    animation: fadeInUp var(--anim-slow) var(--ease-out-back);
    animation-fill-mode: both;
    transition: all var(--anim-normal) var(--ease-in-out);
}

.benefit-card:nth-child(1) { animation-delay: 0.1s; }
.benefit-card:nth-child(2) { animation-delay: 0.2s; }
.benefit-card:nth-child(3) { animation-delay: 0.3s; }
.benefit-card:nth-child(4) { animation-delay: 0.4s; }

.benefit-icon {
    animation: bounceSoft var(--anim-ultra-slow) infinite;
    transition: all var(--anim-normal) var(--ease-in-out);
}

.benefit-card:hover {
    animation: float var(--anim-very-slow) infinite;
}

.benefit-card:hover .benefit-icon {
    animation: bounce 0.6s var(--ease-bounce);
}

/* Gallery section */
.gallery-item {
    animation: fadeInUp var(--anim-slow) var(--ease-in-out);
    animation-fill-mode: both;
    transition: all var(--anim-normal) var(--ease-in-out);
}

.gallery-item:nth-child(1) { animation-delay: 0.1s; }
.gallery-item:nth-child(2) { animation-delay: 0.2s; }
.gallery-item:nth-child(3) { animation-delay: 0.3s; }

.gallery-item img {
    transition: all var(--anim-slow) var(--ease-in-out);
}

.gallery-overlay {
    transition: all var(--anim-normal) var(--ease-in-out);
}

/* Course info section */
.info-item {
    animation: fadeInUp var(--anim-slow) var(--ease-out-back);
    animation-fill-mode: both;
    transition: all var(--anim-normal) var(--ease-in-out);
}

.info-item:nth-child(1) { animation-delay: 0.1s; }
.info-item:nth-child(2) { animation-delay: 0.2s; }
.info-item:nth-child(3) { animation-delay: 0.3s; }
.info-item:nth-child(4) { animation-delay: 0.4s; }

.info-icon {
    animation: float var(--anim-ultra-slow) infinite;
}

.info-btn {
    animation: fadeInUp var(--anim-slow) var(--ease-out-back) 0.5s both,
               pulse 3s infinite;
    animation-delay: 0s, 1s;
}

/* Final CTA section */
.cta-title {
    animation: fadeInUp var(--anim-slow) var(--ease-out-back) 0.3s both;
}

.spots-remaining {
    animation: zoomInBounce var(--anim-very-slow) var(--ease-bounce) 0.5s both,
               glow 4s infinite;
    animation-delay: 0s, 1s;
}

.spots-number {
    animation: heartbeat 2s infinite;
    animation-delay: 1s;
}

.stat-item {
    animation: fadeInUp var(--anim-slow) var(--ease-out-back);
    animation-fill-mode: both;
}

.stat-item:nth-child(1) { animation-delay: 0.1s; }
.stat-item:nth-child(2) { animation-delay: 0.2s; }
.stat-item:nth-child(3) { animation-delay: 0.3s; }

.btn-primary {
    animation: fadeInUp var(--anim-slow) var(--ease-out-back) 0.7s both,
               pulseIntense 4s infinite;
    animation-delay: 0s, 2s;
}

.btn-secondary {
    animation: fadeInUp var(--anim-slow) var(--ease-out-back) 0.9s both;
}

.guarantee {
    animation: fadeInUp var(--anim-slow) var(--ease-in-out) 1.1s both;
}

/* Footer */
.footer {
    animation: fadeIn var(--anim-very-slow) var(--ease-in-out);
}

.footer-whatsapp {
    animation: pulse 3s infinite;
    animation-delay: 1s;
}

/* Floating WhatsApp */
.floating-whatsapp {
    animation: floatRotate 4s ease-in-out infinite,
               pulseIntense 5s infinite;
    animation-delay: 0s, 2s;
    transition: all var(--anim-normal) var(--ease-in-out);
}

.floating-whatsapp:hover {
    animation: bounce 0.6s var(--ease-bounce);
}

/* Popup modal */
.popup-overlay {
    transition: all var(--anim-normal) var(--ease-in-out);
}

.popup-content {
    transition: all var(--anim-normal) var(--ease-out-back);
}

.popup-overlay.active .popup-content {
    animation: zoomInBounce var(--anim-slow) var(--ease-bounce);
}

.spots-alert {
    animation: flash 2s infinite;
}

.popup-btn {
    animation: pulseIntense 3s infinite;
    animation-delay: 0.5s;
}

/* ===== EFECTOS HOVER Y DE INTERACCIÓN ===== */

/* Hover effects para botones */
.hero-btn:hover,
.countdown-btn:hover,
.info-btn:hover,
.btn-primary:hover,
.btn-secondary:hover,
.nav-whatsapp:hover,
.footer-whatsapp:hover,
.popup-btn:hover {
    animation: pulse 0.6s var(--ease-bounce);
}

/* Hover effects para cards */
.benefit-card:hover {
    animation: float var(--anim-very-slow) infinite;
}

.gallery-item:hover {
    animation: float var(--anim-very-slow) infinite;
}

.info-item:hover {
    animation: float var(--anim-very-slow) infinite;
}

/* Focus effects */
.hero-btn:focus,
.countdown-btn:focus,
.info-btn:focus,
.btn-primary:focus,
.btn-secondary:focus,
.nav-whatsapp:focus,
.footer-whatsapp:focus,
.popup-btn:focus {
    animation: pulse 0.6s var(--ease-bounce);
}

/* ===== ANIMACIONES ESPECÍFICAS DE URGENCIA ===== */

/* Cuando quedan pocos cupos */
.low-spots .spots-counter {
    animation: flash 1s infinite, shake 0.5s infinite;
}

.low-spots .urgency-banner {
    animation: flash 1.5s infinite;
}

.low-spots .spots-number {
    animation: shake 1s infinite, flash 1.5s infinite;
}

/* Cuando quedan muy pocas horas */
.critical-time .countdown-box {
    animation: shake 0.5s infinite, borderGlow 1s infinite;
}

.critical-time .countdown-number {
    animation: flash 0.8s infinite, shake 1s infinite;
}

.critical-time .countdown-message {
    animation: flash 1s infinite;
    background: var(--error-red) !important;
}

/* ===== ANIMACIONES DE SCROLL ===== */

/* Intersection Observer animations */
.animate-on-scroll {
    opacity: 0;
    transform: translateY(50px);
    transition: all var(--anim-slow) var(--ease-out-back);
}

.animate-on-scroll.in-view {
    opacity: 1;
    transform: translateY(0);
}

.animate-on-scroll.slide-left {
    transform: translateX(-50px);
}

.animate-on-scroll.slide-left.in-view {
    transform: translateX(0);
}

.animate-on-scroll.slide-right {
    transform: translateX(50px);
}

.animate-on-scroll.slide-right.in-view {
    transform: translateX(0);
}

.animate-on-scroll.zoom-in {
    transform: scale(0.8);
}

.animate-on-scroll.zoom-in.in-view {
    transform: scale(1);
}

/* Delays escalonados */
.animate-on-scroll:nth-child(1) { transition-delay: 0.1s; }
.animate-on-scroll:nth-child(2) { transition-delay: 0.2s; }
.animate-on-scroll:nth-child(3) { transition-delay: 0.3s; }
.animate-on-scroll:nth-child(4) { transition-delay: 0.4s; }
.animate-on-scroll:nth-child(5) { transition-delay: 0.5s; }

/* ===== OPTIMIZACIONES DE PERFORMANCE ===== */

/* GPU Acceleration para animaciones críticas */
.hero-content,
.countdown-box,
.floating-whatsapp,
.benefit-card,
.gallery-item,
.popup-content {
    will-change: transform;
    transform: translateZ(0);
    backface-visibility: hidden;
}

/* Contenimiento de layers */
.benefit-card,
.gallery-item,
.info-item {
    contain: layout style paint;
}

/* ===== ANIMACIONES RESPONSIVAS ===== */

/* Reducir animaciones en móviles para performance */
@media (max-width: 768px) {
    .hero-background {
        animation-duration: 12s;
    }
    
    .floating-whatsapp {
        animation-duration: 6s;
    }
    
    .countdown-number {
        animation-duration: 3s;
    }
    
    /* Simplificar animaciones complejas */
    .benefit-card:hover,
    .gallery-item:hover,
    .info-item:hover {
        animation: none;
        transform: translateY(-5px);
    }
}

/* Solo en dispositivos con capacidad de hover */
@media (hover: hover) {
    .benefit-card:hover .benefit-icon {
        animation: bounce 0.6s var(--ease-bounce);
    }
    
    .floating-whatsapp:hover {
        animation: heartbeat 1s, floatRotate 4s ease-in-out infinite;
    }
}

/* ===== ANIMACIONES DE ESTADO ===== */

/* Estados de error */
@keyframes errorShake {
    0%, 100% { transform: translateX(0); }
    10%, 30%, 50%, 70%, 90% { transform: translateX(-3px); }
    20%, 40%, 60%, 80% { transform: translateX(3px); }
}

.error-state {
    animation: errorShake 0.6s ease-in-out;
}

/* Estados de éxito */
@keyframes successPulse {
    0% { 
        transform: scale(1);
        background-color: var(--success-green);
    }
    50% { 
        transform: scale(1.05);
        box-shadow: 0 0 25px rgba(37, 211, 102, 0.6);
    }
    100% { 
        transform: scale(1);
        background-color: var(--success-green);
    }
}

.success-state {
    animation: successPulse 1s ease-in-out;
}

/* ===== MICROINTERACCIONES ===== */

/* Ripple effect para botones */
.hero-btn,
.countdown-btn,
.info-btn,
.btn-primary,
.btn-secondary {
    position: relative;
    overflow: hidden;
}

.hero-btn::after,
.countdown-btn::after,
.info-btn::after,
.btn-primary::after,
.btn-secondary::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 0;
    height: 0;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.3);
    transform: translate(-50%, -50%);
    transition: width 0.6s, height 0.6s;
}

.hero-btn:active::after,
.countdown-btn:active::after,
.info-btn:active::after,
.btn-primary:active::after,
.btn-secondary:active::after {
    width: 300px;
    height: 300px;
}

/* ===== ANIMACIONES ESPECIALES ===== */

/* Typing effect para textos especiales */
@keyframes typing {
    from { width: 0; }
    to { width: 100%; }
}

@keyframes blinkCursor {
    from, to { border-color: transparent; }
    50% { border-color: currentColor; }
}

.typing-effect {
    overflow: hidden;
    border-right: 2px solid;
    white-space: nowrap;
    animation: typing 3s steps(40, end),
               blinkCursor 0.75s step-end infinite;
}

/* Número de cupos con efecto especial */
.spots-counter.urgent,
.spots-number.urgent {
    animation: heartbeat 1s infinite, flash 2s infinite, glow 3s infinite;
    color: var(--error-red) !important;
    text-shadow: 0 0 15px rgba(244, 67, 54, 0.5);
}

/* Contador regresivo crítico */
.countdown-box.critical {
    animation: shake 0.5s infinite, borderGlow 1s infinite, flash 2s infinite;
    border-color: var(--error-red) !important;
    background: rgba(244, 67, 54, 0.1) !important;
}

.countdown-box.critical .countdown-number {
    animation: flash 0.8s infinite, heartbeat 1.5s infinite;
    color: var(--error-red) !important;
    text-shadow: 0 0 15px rgba(244, 67, 54, 0.5);
}

/* ===== ANIMACIONES DE PARTÍCULAS ===== */

/* Partículas flotantes en hero */
.hero::after {
    content: '';
    position: absolute;
    width: 100%;
    height: 100%;
    background-image: 
        radial-gradient(3px 3px at 30px 40px, rgba(251, 191, 36, 0.4), transparent),
        radial-gradient(2px 2px at 80px 100px, rgba(255, 255, 255, 0.3), transparent),
        radial-gradient(1px 1px at 120px 60px, rgba(251, 191, 36, 0.5), transparent),
        radial-gradient(2px 2px at 200px 120px, rgba(255, 255, 255, 0.2), transparent);
    background-repeat: repeat;
    background-size: 250px 250px;
    animation: particleFloat 20s linear infinite;
    pointer-events: none;
    opacity: 0.8;
    z-index: -1;
}

/* ===== ANIMACIONES CONDICIONALES ===== */

/* Solo aplicar en dispositivos potentes */
@media (prefers-reduced-motion: no-preference) and (update: fast) {
    .hero-background {
        animation: gradientShift 8s ease infinite;
    }
    
    .floating-whatsapp {
        animation: floatRotate 4s ease-in-out infinite,
                   pulseIntense 5s infinite;
    }
}

/* Animaciones reducidas para dispositivos de baja potencia */
@media (prefers-reduced-motion: no-preference) and (update: slow) {
    .hero-background {
        animation-duration: 15s;
    }
    
    .floating-whatsapp {
        animation-duration: 8s;
    }
    
    .countdown-number {
        animation-duration: 4s;
    }
    
    /* Deshabilitar efectos de partículas */
    .hero::after {
        display: none;
    }
}