/* =========================================================
   BAOCINE UI: KINETIC MOTION & ANIMATIONS
========================================================= */

/* Entrance Animation: Smooth float up and fade in */
.animate-fade-up {
    opacity: 0;
    animation: baoFadeUp 1s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

/* Staggered utility classes for lists (like performers or ticket tiers) */
.animate-stagger-1 { animation-delay: 0.1s; }
.animate-stagger-2 { animation-delay: 0.2s; }
.animate-stagger-3 { animation-delay: 0.3s; }
.animate-stagger-4 { animation-delay: 0.4s; }
.animate-stagger-5 { animation-delay: 0.5s; }

/* The Ambient Projector Orbs (Background lighting) */
.animate-float-slow {
    animation: baoFloat 12s infinite alternate cubic-bezier(0.4, 0, 0.2, 1);
}
.animate-float-slow-delayed {
    animation: baoFloat 12s infinite alternate cubic-bezier(0.4, 0, 0.2, 1);
    animation-delay: -6s;
}

/* Attention grabber for small icons or "Live Now" badges */
.animate-pulse-glow {
    animation: baoPulseGlow 2.5s infinite alternate;
}

/* KEYFRAMES */

@keyframes baoFadeUp {
    0% { 
        opacity: 0; 
        transform: translateY(40px) scale(0.98); 
    }
    99% { 
        opacity: 1; 
        transform: translateY(0) scale(1); 
    }
    100% { 
        opacity: 1; 
        transform: none; /* THE FIX: This breaks the cage and frees the sticky footer! */
    }
}

@keyframes baoFloat {
    0% { transform: translate(0, 0) scale(1); }
    100% { transform: translate(40px, -40px) scale(1.1); }
}

@keyframes baoPulseGlow {
    0% { 
        transform: scale(1); 
        filter: drop-shadow(0 0 4px rgba(255, 215, 0, 0.4)); 
    }
    100% { 
        transform: scale(1.08); 
        filter: drop-shadow(0 0 15px rgba(255, 215, 0, 0.8)); 
    }
}

/* View Transition classes for our Router.js */
.view-enter {
    animation: baoFadeUp 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.view-exit {
    opacity: 1;
    transition: opacity 0.3s ease, transform 0.3s ease;
    opacity: 0;
    transform: scale(0.98);
}