/* ==========================================================================
   ÍNDICE DE ESTILOS
   ==========================================================================
   01. FUENTES Y VARIABLES
   02. RESET Y BASES
   03. ELEMENTOS GLOBALES (Preloader, Marquee, Botones)
   04. NAVEGACIÓN (Navbar)
   05. HERO SECTION (Exhibición y Logo Principal)
   06. LINEUP SECTION (Bandas, Animaciones, Parallax)
   07. PLAYLIST SECTION (Spotify Hardware)
   08. TICKETS SECTION
   09. FOOTER
   ========================================================================== */

/* ==========================================================================
   01. FUENTES Y VARIABLES
   ========================================================================== */
@font-face {
    font-family: 'Benguiat';
    src: url('../assets/fonts/ITC\ Benguiat\ Bold.otf');
    font-weight: bold;
    font-style: normal;
}

:root {
    /* Paleta de Colores Extraída */
    --color-magenta: #AD2658;
    --color-purple:  #3E1B62;
    --color-teal:    #026359;
    --color-orange:  #C74E23;
    --color-red:     #AD3226;
    
    /* Fondos y Neutros */
    --bg-deep: #0a0710;    
    --bone-white: #fdfcdc; 
    --black: #000000;
    
    /* Tipografías */
    --font-display: 'Archivo Black', sans-serif;
    --font-body: 'DM Sans', sans-serif;
}

/* ==========================================================================
   02. RESET Y BASES
   ========================================================================== */
* { 
    margin: 0; 
    padding: 0; 
    box-sizing: border-box; 
}

html { 
    scroll-behavior: smooth; 
}

body { 
    background-color: var(--bg-deep); 
    color: var(--bone-white); 
    font-family: var(--font-body); 
    overflow-x: hidden; 
}

/* ==========================================================================
   SCROLLBAR PERSONALIZADA (ESTILO PASTILLA FLOTANTE)
   ========================================================================== */
/* 1. Grosor general de la barra (Más fina y estilizada) */
::-webkit-scrollbar {
    width: 12px; 
}

/* 2. El carril de fondo */
::-webkit-scrollbar-track {
    background-color: var(--bg-deep); 
    border-left: 1px dashed rgba(255, 255, 255, 0.15); /* Línea punteada muy sutil */
}

/* 3. La barrita que mueves (El pulgar) */
::-webkit-scrollbar-thumb {
    background-color: var(--color-magenta); /* El magenta brilla mejor sobre el fondo oscuro */
    border-radius: 10px; /* Forma redondita de pastilla */
    
    /* EL TRUCO DE FLOTACIÓN: Borde del mismo color que el fondo para crear un espacio vacío */
    border: 3px solid var(--bg-deep); 
}

/* 4. Efecto interactivo al pasar el cursor */
::-webkit-scrollbar-thumb:hover {
    background-color: var(--color-orange); /* Cambia al naranja agresivo al tocarla */
}
/* Regla global para prevenir bordes fantasma en imágenes */
img {
    border: none;
    outline: none;
    -webkit-user-drag: none;
}

/* ==========================================================================
   03. ELEMENTOS GLOBALES (Preloader, Marquee, Botones)
   ========================================================================== */

/* ==========================================================================
   PRELOADER BRUTALISTA (ESTÁTICO + NOTAS FLOTANTES)
   ========================================================================== */
#preloader {
    position: fixed; top: 0; left: 0; width: 100%; height: 100vh;
    background-color: var(--bg-deep, #2a164d); /* Tu morado profundo */
    display: flex; justify-content: center; align-items: center;
    z-index: 9999;
    transition: transform 0.8s cubic-bezier(0.77, 0, 0.175, 1); /* Salida elegante */
}

/* El telón se levanta */
#preloader.preloader-hidden {
    transform: translateY(-100%);
}

.loader-center {
    text-align: center;
    position: relative;
    z-index: 2;
    display: flex;
    flex-direction: column;
    align-items: center;
}

/* --- CONTENEDOR DEL STICKER Y LAS NOTAS --- */
.loader-sticker-wrapper {
    position: relative;
    display: inline-block; 
}

/* --- EL STICKER (QUIETO COMO ROCA) --- */
.loader-sticker.static {
    width: 180px; /* Respeté tu ajuste de 180px */
    height: auto;
    filter: drop-shadow(6px 6px 0px rgba(0,0,0,0.8));
    animation: none; /* Adiós al rebote, el jaguar descansa */
}

/* --- LAS NOTAS MUSICALES VIRTUALES (ESTILO STICKER ROBUSTO) --- */
.magic-note {
    position: absolute;
    /* Ajuste de coordenadas: Apuntando justo arriba de la cola/hongo del jaguar */
    top: -5px; 
    right: 80px; 
    
    color: #fceea7; /* Un amarillo clarito para que resalte, o puedes usar tu #5c9eed */
    font-family: var(--font-display), 'Arial Black', sans-serif; /* Fuente súper gruesa */
    font-size: 2.2rem; /* Más grandes y robustas */
    font-weight: 900;
    
    /* EL TRUCO DEL STICKER: Borde negro y sombra dura */
    -webkit-text-stroke: 2px #111111; /* Borde de dibujo */
    text-shadow: 4px 4px 0px rgba(0,0,0,1); /* Sombra brutalista */
    
    opacity: 0;
    pointer-events: none;
    z-index: 10;
}

/* Ajustamos la posición individual para que salgan como una estela desde la cola */
.note-1 { 
    animation: floatSticker 2s ease-in infinite; 
    animation-delay: 0s; 
    right: 75px; 
    top: -10px; 
}
.note-2 { 
    animation: floatSticker 2s ease-in infinite; 
    animation-delay: 0.7s; 
    right: 60px; 
    top: -5px; 
    font-size: 1.6rem; /* Variamos tamaños */
}
.note-3 { 
    animation: floatSticker 2s ease-in infinite; 
    animation-delay: 1.4s; 
    right: 90px; 
    top: -15px; 
    font-size: 2.8rem; /* Una nota gigante */
}
/* --- EL NÚMERO GIGANTE --- */
.loader-massive-number {
    font-family: var(--font-display);
    
    /* EL AJUSTE: 
       Mínimo: 4rem (para celulares)
       Fluidez: 8vw (crece más lento en pantallas medianas)
       Máximo: 7.5rem (ya no llega a los 12rem en monitores grandes) */
    font-size: clamp(4rem, 8vw, 7.5rem); 
    
    color: var(--bone-white);
    margin: -10px 0 20px 0;
    line-height: 1;
    letter-spacing: -2px;
    
    /* Sombra brutalista dura (Ligeramente reducida para que encaje con el nuevo tamaño) */
    text-shadow: 4px 4px 0px var(--color-orange, #ff5500),
                 8px 8px 0px rgba(0,0,0,0.5);
}

/* --- LA BARRA DE PROGRESO FÍSICA (DISEÑO BRUTALISTA MEJORADO) --- */
.loader-bar-box {
    width: 340px;
    height: 38px; /* Más gruesa e imponente */
    border: 4px solid var(--bone-white); /* Borde claro, grueso y rudo */
    background-color: var(--black); /* Fondo negro para que resalte la barra */
    padding: 4px; /* Espacio interno para que la barra no toque los bordes */
    margin-bottom: 25px;
    
    /* El truco del 3D: Sombra doble (Magenta + Negro) */
    box-shadow: 6px 6px 0px var(--color-magenta), 
               12px 12px 0px rgba(0,0,0,0.8);
}

.loader-bar-fill {
    height: 100%;
    width: 0%; /* Empieza vacía, se llena con JS */
    
    /* Efecto de rayas diagonales "Cinta de Peligro / Indie" */
    background-image: repeating-linear-gradient(
        -45deg,
        var(--color-teal),
        var(--color-teal) 15px,
        var(--color-orange) 15px,
        var(--color-orange) 30px
    );
    background-size: 60px 100%;
    
    /* Hacemos que las rayas se muevan como una cinta transportadora */
    animation: moveStripes 0.8s linear infinite;
    
    /* Le ponemos una "pared" blanca a la punta de la barra que va avanzando */
    border-right: 4px solid var(--bone-white); 
    transition: width 0.1s linear;
}

/* --- TEXTO TIPO CONSOLA --- */
.loader-status {
    font-family: var(--font-body);
    font-size: 1.2rem;
    color: var(--bone-white);
    letter-spacing: 4px;
    text-transform: uppercase;
    font-weight: 700;
}

.blink {
    color: var(--color-orange);
    animation: blinker 1s step-end infinite;
}
/* --- ANIMACIÓN DE LAS RAYAS --- */
@keyframes moveStripes {
    0% { background-position: 0 0; }
    100% { background-position: 60px 0; }
}

/* --- ANIMACIONES KEYFRAMES --- */
@keyframes blinker {
    50% { opacity: 0; }
}

/* --- LA ANIMACIÓN: BURBUJEANDO DESDE LA COLA --- */
@keyframes floatSticker {
    0% { 
        /* Nacen chiquitas y escondidas en la cola */
        transform: translateY(0) scale(0.2) rotate(-15deg); 
        opacity: 0; 
    }
    15% {
        /* Aparecen rápido (efecto pop) */
        opacity: 1;
    }
    80% { 
        opacity: 1; 
    }
    100% { 
        /* Flotan hacia arriba, crecen a su tamaño normal y giran */
        transform: translateY(-70px) scale(1) rotate(25deg); 
        opacity: 0; 
    }
}

/* --- RESPONSIVE --- */
@media (max-width: 768px) {
    .loader-bar-box { width: 80vw; }
    .loader-status { font-size: 0.9rem; }
}

/* --- Marquee (Cintas de texto) --- */
.marquee-container { 
    background-color: #f95e59; color: #000000; 
    padding: 10px 0; border-bottom: 3px solid var(--black); overflow: hidden; 
    white-space: nowrap; display: flex; width: 100vw; 
}
.top-marquee { position: relative; z-index: 1001; }
.mid-marquee { background-color: #87af1b; color: var(--bone-white); border-top: 3px solid var(--black); }

.marquee-content { 
    display: flex; animation: scrollMarquee 20s linear infinite; 
    font-family: var(--font-display); font-size: 1.2rem; letter-spacing: 2px; 
}
.marquee-content.reverse { animation: scrollMarqueeRev 20s linear infinite; }
.marquee-content span { padding: 0 20px; }

@keyframes scrollMarquee { 0% { transform: translateX(0); } 100% { transform: translateX(-50%); } }
@keyframes scrollMarqueeRev { 0% { transform: translateX(-50%); } 100% { transform: translateX(0); } }
/* --- Botones --- */
.btn-brutal { 
    display: inline-block; font-family: var(--font-display); font-size: 1.1rem; 
    letter-spacing: 2px; text-decoration: none; background-color: var(--color-orange); 
    color: var(--bone-white) !important; padding: 10px 20px; border: 3px solid var(--black); 
    box-shadow: 4px 4px 0px var(--color-magenta); transition: all 0.2s; cursor: pointer; 
}
.btn-brutal:hover { 
    transform: translate(3px, 3px); box-shadow: 1px 1px 0px var(--color-magenta); 
    background-color: var(--color-magenta); 
}
.nav-btn { padding: 6px 15px; font-size: 0.9rem; }

.btn-glass-sm {
    display: inline-block; font-family: var(--font-display); font-size: 1rem; 
    color: var(--bone-white); text-decoration: none; padding: 16px 36px; 
    letter-spacing: 2px; background: rgba(255, 255, 255, 0.05); 
    backdrop-filter: blur(8px); border: 1px solid rgba(255, 255, 255, 0.2); 
    border-radius: 40px; transition: all 0.3s ease;
}
.btn-glass-sm:hover {
    background: var(--color-magenta); border-color: var(--color-magenta); 
    color: var(--bone-white); transform: translateY(-3px); 
    box-shadow: 0 10px 20px rgba(173, 38, 88, 0.3);
}

.btn-neo {
    display: inline-block; font-family: var(--font-display); font-size: 1.8rem;
    letter-spacing: 3px; text-decoration: none; color: var(--black) !important;
    background-color: var(--bone-white); padding: 15px 40px;
    border: 4px solid var(--black); border-radius: 5px 25px 5px 25px; 
    box-shadow: 8px 8px 0px var(--color-purple); transition: all 0.3s ease;
    cursor: pointer; text-transform: uppercase;
}
.btn-neo:hover {
    background-color: var(--color-orange); transform: translate(2px, 2px);
    box-shadow: 2px 2px 0px var(--color-purple);
}

/* ==========================================================================
   04. NAVEGACIÓN (Navbar)
   ========================================================================== */
.navbar { 
    display: flex; justify-content: space-between; align-items: center; 
    padding: 20px 40px; background-color: transparent; 
    border-bottom: 3px solid transparent; position: fixed; 
    top: 0; left: 0; width: 100%; z-index: 1000; box-shadow: none; 
    transition: all 0.4s ease; 
}
.navbar.scrolled {
    background-color: var(--bg-deep); border-bottom: 3px solid var(--black); 
    box-shadow: 0 4px 15px rgba(0,0,0,0.5); padding: 15px 40px; 
}

.navbar .logo { 
    font-family: var(--font-display); font-size: 2rem; color: var(--bone-white); 
    letter-spacing: 2px; text-shadow: 3px 3px 0px var(--color-magenta); 
}
.navbar nav ul { list-style: none; display: flex; gap: 25px; align-items: center; }
.navbar nav ul li a { 
    color: var(--bone-white); text-decoration: none; font-weight: 700; 
    font-size: 1rem; transition: 0.2s; 
}
.navbar nav ul li a:hover { color: var(--color-orange); }

/* Logo de Imagen en Navbar */
.logo-link { display: flex; align-items: center; justify-content: center; text-decoration: none; }
.nav-logo-img { 
    height: 38px; width: auto; background: transparent;
    transition: transform 0.3s ease, filter 0.3s ease;
    filter: drop-shadow(0px 4px 6px rgba(0,0,0,0.6)); 
}
.logo-link:hover .nav-logo-img { 
    transform: scale(1.05); filter: drop-shadow(0px 4px 10px var(--color-magenta)); 
}

@media (max-width: 900px) {
    .navbar { flex-direction: column; gap: 15px; padding: 15px; }
}
@media (max-width: 768px) {
    .nav-logo-img { height: 35px; }
}
/* ==========================================================================
   FECHA DEL HERO (INDIE FEST - Animación sincronizada)
   ========================================================================== */

/* 1. Contenedor Principal (Fusionado y limpio) */
.hero-date-display {
    font-family: var(--font-display);
    font-size: clamp(1.2rem, 3vw, 1.2rem);
    color: var(--bone-white); 
    margin: -40px 0 15px 0; /* Mantiene tu ajuste para pegarlo al logo */
    text-align: center;
    letter-spacing: 4px; 
    font-weight: 800;
    text-shadow: 2px 2px 0px rgba(0, 0, 0, 0.9);
    
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
}

/* 2. Color Rosita SOLO para separadores */
.hero-date-display .date-separator {
    color: #ffffff !important; 
    margin: 0 10px; /* Le da aire a las diagonales */
    font-weight: 400;
}

/* 3. ESTADO INICIAL (Ocultos mientras carga la página) */
.hero-date-display span {
    display: inline-block !important; 
    opacity: 0; 
}

/* ==========================================================================
   4. ANIMACIÓN (SE ACTIVA SOLO CUANDO TERMINA EL PRELOADER)
   ========================================================================== */
.hero-exhibition.is-loaded .hero-date-display span {
    animation: datePopUp 0.8s cubic-bezier(0.34, 1.56, 0.64, 1) forwards !important;
}

/* Tiempos escalonados sincronizados con tu logo y textos */
.hero-exhibition.is-loaded .hero-date-display span:nth-child(1) { animation-delay: 0.6s !important; } /* 17 */
.hero-exhibition.is-loaded .hero-date-display span:nth-child(2) { animation-delay: 0.7s !important; } /* / */
.hero-exhibition.is-loaded .hero-date-display span:nth-child(3) { animation-delay: 0.8s !important; } /* OCT */
.hero-exhibition.is-loaded .hero-date-display span:nth-child(4) { animation-delay: 0.9s !important; } /* / */
.hero-exhibition.is-loaded .hero-date-display span:nth-child(5) { animation-delay: 1.0s !important; } /* 2026 */

/* 5. Fotogramas clave */
@keyframes datePopUp {
    0% {
        opacity: 0;
        transform: translateY(30px) scale(0.8) rotate(-5deg);
    }
    100% {
        opacity: 1;
        transform: translateY(0) scale(1) rotate(0deg);
    }
}
/* ==========================================================================
   05. HERO SECTION (Exhibición, Logo Principal y Entrada Cinemática)
   ========================================================================== */
   /* ==========================================================================
   FECHA DEL HERO (INDIE FEST)
   ========================================================================== */
.hero-date-display {
    font-family: var(--font-display);
    font-size: clamp(1.2rem, 3vw, 1.2rem);
    
    /* El icónico rosita del festival */
    color: #ffffff; 
    
    margin: 1px 0 15px 0;
    text-align: center;
    letter-spacing: 1px; 
    margin-top: -40px;
    font-weight: 800;
    
    /* Le subí un pelito la oscuridad a la sombra para que el rosa reviente más */
    text-shadow: 2px 2px 0px rgba(0, 0, 0, 0.9); 
}

/* El rosita icónico va SOLO en los separadores */
.hero-date-display .date-separator {
    color: #ffffff; 
    margin: 0 0px;
    font-weight: 400;
}
.hero-exhibition {
    position: relative; width: 100%; height: 100vh; overflow: hidden;
    background-color: var(--black); display: flex; justify-content: center; align-items: center;
}

.bg-video-full {
    position: absolute; top: 50%; left: 50%; min-width: 100%; min-height: 100%;
    width: auto; height: auto; transform: translateX(-50%) translateY(-50%);
    object-fit: cover; z-index: 1;
}

.video-overlay-exhibition {
    position: absolute; top: 0; left: 0; width: 100%; height: 100%;
    background: radial-gradient(circle, rgba(10, 7, 16, 0.3) 0%, rgba(10, 7, 16, 0.7) 100%);
    z-index: 2;
}

/* ==========================================================================
   COLUMNAS LATERALES (Mérida, Yucatán y Volumen)
   ========================================================================== */
.side-text {
    position: absolute; top: 85px; bottom: 50px; z-index: 3;
    display: flex; align-items: center; justify-content: center; padding: 0 30px;
}
.side-text span {
    font-family: var(--font-display); /* Tipografía brutalista */
    font-size: 0.95rem; 
    font-weight: 400; 
    letter-spacing: 8px; /* Extra espacio para estilo industrial */
    color: rgba(255, 255, 255, 0.5); 
    text-transform: uppercase;
    writing-mode: vertical-rl; 
    transform: rotate(180deg); 
}

/* ESTADOS INICIALES: Ocultos mientras carga la página */
.left-side { 
    left: 0; border-right: 1px solid rgba(255,255,255,0.1); 
    opacity: 0; 
}
.right-side { 
    right: 0; border-left: 1px solid rgba(255,255,255,0.1); 
    opacity: 0; 
}

/* ==========================================================================
   CONTENIDO CENTRAL HERO
   ========================================================================== */
.hero-content-exhibition, .hero-content-brutal {
    position: relative; z-index: 4; text-align: center; max-width: 800px; padding: 0 40px;
}

.hero-logo-container { margin-bottom: 25px; display: flex; justify-content: center; }

.hero-main-logo {
    max-width: 100%; width: 450px; height: auto;
    filter: drop-shadow(0px 10px 20px rgba(0, 0, 0, 0.8));
    opacity: 0; 
}

.exhibition-title {
    font-family: var(--font-display); font-size: 8rem; color: var(--bone-white);
    line-height: 0.9; margin: 0 0 20px 0; text-shadow: 0px 10px 20px rgba(0,0,0,0.6);
}

.massive-title-center {
    font-family: var(--font-display); font-size: 9rem; line-height: 0.85;
    color: var(--bone-white); text-shadow: 5px 5px 0px #444444, 10px 10px 0px var(--black);
    margin-bottom: 40px; text-transform: uppercase; -webkit-text-stroke: 1px var(--black);
}

.italic-accent { font-style: italic; color: var(--color-orange); padding-left: 40px; }

/* --- NUEVO: Fecha y Lema Central ("Este Nuevo Ritmo") --- */
.hero-date {
    font-family: var(--font-display);
    font-size: 1.4rem;
    color: var(--color-orange); /* Color de contraste del festival */
    letter-spacing: 4px;
    text-transform: uppercase;
    line-height: 1.4;
    margin: 15px auto 10px auto;
    text-shadow: 2px 2px 0px var(--black);
    opacity: 0; /* Inicia oculto para la animación */
}

.hero-date span {
    color: var(--bone-white); 
    font-size: 1.2rem;
}

/* --- ACTUALIZADO: Descripción Central --- */
.exhibition-subtitle {
    font-family: 'Benguiat', var(--font-body), serif; /* Toque retro/indie */
    font-size: 1.3rem; 
    color: #e0e0e0;
    letter-spacing: 1px; 
    text-transform: none; 
    margin: 0 auto 30px auto;
    max-width: 500px; 
    line-height: 1.4; 
    text-shadow: 2px 2px 4px rgba(0,0,0,0.9);
    opacity: 0;
}

/* Botón base */
.hero-content-exhibition .btn-glass-sm {
    opacity: 0;
}
/* ==========================================================================
   ESTADOS ANIMADOS (Se activan SOLAMENTE cuando el preloader termina)
   ========================================================================== */

/* El logo entra desenfocado y escalado desde la niebla */
.hero-exhibition.is-loaded .hero-main-logo {
    animation: heroRevealLogo 1.5s cubic-bezier(0.2, 0.8, 0.2, 1) forwards;
}

/* El texto sube con un retraso de 0.5s */
.hero-exhibition.is-loaded .exhibition-subtitle {
    animation: heroRevealText 1.2s cubic-bezier(0.2, 0.8, 0.2, 1) 0.5s forwards;
}

/* El botón sube justo después del texto (0.8s) */
.hero-exhibition.is-loaded .hero-content-exhibition .btn-glass-sm {
    animation: heroRevealText 1.2s cubic-bezier(0.2, 0.8, 0.2, 1) 0.8s forwards;
}

/* Las columnas entran desde los lados, más tarde (1.6s) para cerrar la escena */
.hero-exhibition.is-loaded .left-side {
    animation: heroRevealLeft 1.5s cubic-bezier(0.2, 0.8, 0.2, 1) 1.6s forwards;
}

.hero-exhibition.is-loaded .right-side {
    animation: heroRevealRight 1.5s cubic-bezier(0.2, 0.8, 0.2, 1) 1.6s forwards;
}

/* ==========================================================================
   KEYFRAMES DE LA COREOGRAFÍA HERO
   ========================================================================== */
@keyframes heroRevealLogo {
    0% { opacity: 0; transform: scale(1.1) translateY(20px); filter: blur(10px); }
    100% { opacity: 1; transform: scale(1) translateY(0); filter: blur(0px); }
}

@keyframes heroRevealText {
    0% { opacity: 0; transform: translateY(30px); }
    100% { opacity: 1; transform: translateY(0); }
}

/* Entra deslizándose desde fuera de la pantalla izquierda hacia el centro */
@keyframes heroRevealLeft {
    0% { opacity: 0; transform: translateX(-50px); }
    100% { opacity: 1; transform: translateX(0); }
}

/* Entra deslizándose desde fuera de la pantalla derecha hacia el centro */
@keyframes heroRevealRight {
    0% { opacity: 0; transform: translateX(50px); }
    100% { opacity: 1; transform: translateX(0); }
}

/* ==========================================================================
   MEDIA QUERIES HERO
   ========================================================================== */
@media (max-width: 1000px) {
    .exhibition-title { font-size: 6rem; }
}
@media (max-width: 900px) {
    .hero-main-logo { width: 500px; }
    .massive-title-center { font-size: 5rem; text-shadow: 3px 3px 0px var(--black), 6px 6px 0px var(--color-orange); }
}
@media (max-width: 768px) {
    .side-text { display: none; }
    .exhibition-title { font-size: 5rem; }
    .italic-accent { padding-left: 0; }
    .exhibition-subtitle { font-size: 0.9rem; letter-spacing: 2px; }
    .hero-main-logo { width: 85%; }
}
/* ==========================================================================
   06. LINEUP SECTION (Bandas, Animaciones, Parallax)
   ========================================================================== */
.lineup-section { 
    width: 100%; display: block; padding: 0;
    background-color: var(--bg-deep); /* Asegurando fondo por defecto */
}

.lineup-wrapper {
    position: relative; width: 100%; max-width: 100%; margin: 0; 
    container-type: inline-size; overflow: hidden; background-color: #ff91f4;
}

/* Configuración de PNGs (Soluciona bordes extraños) */
.lineup-poster-img,
.lineup-bg-img,
.lineup-logo-img,
.lineup-plants-img {
    width: 100%; max-width: 100%; height: auto; display: block;
    object-fit: contain; border: none; outline: none; background: transparent;
    box-shadow: none; 
}

/* ==========================================================================
   CAPA DE TEXTO LINEUP
   ========================================================================== */
.lineup-text-overlay {
    position: absolute; 
    top: 16%; 
    left: 0;       /* Lo pegamos a la orilla izquierda */
    width: 100%;   /* Le damos todo el ancho disponible para que las palabras largas quepan */
    display: flex; flex-direction: column; justify-content: center;
    align-items: center; gap: 0.1cqw; z-index: 10; 
}

/* Tipografía Base de Bandas */
.l-row {
    margin: 0; color: #000000; font-family: 'Benguiat', 'Playfair Display', serif;
    font-weight: 900; 
    font-size: 2.3cqw; /* ¡Restaurado a tu tamaño original! */
    line-height: 0.70; letter-spacing: 0px;
    text-transform: uppercase; 
    
    /* LA CLAVE: Obliga a toda la fila a quedarse en un solo renglón, protegiendo al punto */
    white-space: nowrap; 
    
    opacity: 0; transform: translateY(25px); 
    transition: transform 0.8s cubic-bezier(0.215, 0.610, 0.355, 1), opacity 0.8s ease-out;
}

/* Como la última fila tiene nombres muy largos, la encogemos un poco para que quepa perfecta */
.lineup-text-overlay .l-row:nth-child(4) {
    font-size: 2.3cqw; 
}

/* ==========================================================================
   1. ICONOS LATERALES (Estados Iniciales Escondidos)
   ========================================================================== */
.side-icon {
    position: absolute;
    z-index: 15;
    opacity: 0;
    
    /* Agregamos 'scale' y 'filter' de 0.3s para que al QUITAR el mouse regrese suavemente */
    transition: 
        opacity 0.8s ease, 
        transform 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275), 
        scale 0.3s ease, 
        filter 0.3s ease;
}

.icon-qr {
    top: 18%; 
    left: 3%; 
    width: 10cqw; 
    transform: translateX(-100px); 

}

.icon-wolf {
    top: 18%; 
    right: 3%; 
    width: 10cqw; 
    transform: translateX(100px); 
    filter: drop-shadow(4px 4px 0px rgba(0,0,0,0.6));
}

/* ==========================================================================
   2. ACTIVADOR DE ANIMACIÓN (Entran al centro)
   ========================================================================== */
.lineup-wrapper.animar .side-icon {
    opacity: 1;
    transform: translateX(0); 
    
    transition: 
        opacity 0.8s ease 3.8s, /* Empieza a los 3.7s */
        transform 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275) 3.7s, /* Empieza a los 3.7s */
        scale 0.3s ease 0s, 
        filter 0.3s ease 0s;
}
/* ==========================================================================
   3. EFECTO HOVER (INTERACTIVIDAD FLUIDA)
   ========================================================================== */
.lineup-wrapper.animar .icon-qr:hover,
.lineup-wrapper.animar .icon-wolf:hover {
    scale: 1.05; 

    cursor: pointer;
}
/* ==========================================================================
   ANIMACIÓN HOVER 3: ERROR DE IMPRESIÓN (GLITCH ANALÓGICO)
   ========================================================================== */
.band {
    position: relative;
    display: inline-block; 
    cursor: pointer;
    /* Transición rapidísima (0.05s) para que el cambio se sienta como un "corte" crudo */
    transition: color 0.05s ease, text-shadow 0.05s ease;
}

/* Hover de Bandas Secundarias */
.band:hover {
    color: var(--bone-white); 
    
    /* CERO transformaciones. La caja se queda quieta. 
       El impacto lo da la sombra dividida: Turquesa a la izquierda, Magenta a la derecha */
    text-shadow: 
        -4px 0px 0px var(--color-teal),
         4px 0px 0px var(--color-magenta); 
         
    z-index: 25; 
}

.dot { 
    font-size: 2.5cqw !important; 
    color: #000000; 
    margin: 0 0cqw; 
    user-select: none; 
}

/* ==========================================================================
   ESPECIAL HEADLINER (AUSTIN TV)
   ========================================================================== */
.headliner-row { margin-bottom: 0.2cqw; }

.band.headliner {
    font-size: 4.5cqw !important; 
    letter-spacing: -12px !important; 
    -webkit-text-stroke: 0cqw #000000; 
    line-height: 0.8; 
    display: inline-block; 
    white-space: nowrap; 
}
.band.headliner .char { display: inline-block; }

/* Curvatura Letra por Letra (INTACTA) */
.band.headliner .char:nth-child(1) { transform: translateY(0.35cqw) rotate(-4deg); } 
.band.headliner .char:nth-child(2) { transform: translateY(0.05cqw) rotate(-1deg); } 
.band.headliner .char:nth-child(3) { transform: translateY(-0.1cqw) rotate(0deg); }  
.band.headliner .char:nth-child(4) { transform: translateY(-0.2cqw) rotate(0deg); }  
.band.headliner .char:nth-child(5) { transform: translateY(-0.2cqw) rotate(0deg); }  
.band.headliner .char:nth-child(6) { transform: translateY(-0.1cqw) rotate(1deg); }  
.band.headliner .char:nth-child(7) { transform: translateY(0); } 
.band.headliner .char:nth-child(8) { transform: translateY(0.1cqw) rotate(2deg); }   
.band.headliner .char:nth-child(9) { transform: translateY(0.4cqw) rotate(5deg); }   

.headliner-row .dot { 
    font-size: 4.8cqw !important; 
    vertical-align: middle; 
    position: relative; 
    top: -0.8cqw; 
    margin: 0 1cqw !important; 
}

/* Hover Especial Headliner */
.band.headliner:hover {
    color: transparent; /* Hace la tipografía invisible por dentro */
    -webkit-text-stroke: 2px var(--black); /* Borde negro fuerte */
    
    /* En lugar de moverse, proyecta un bloque de color sólido que "jala" la vista */
    text-shadow: 6px 6px 0px var(--color-orange);
}



.lineup-plants-img {
    position: absolute; bottom: 0; left: 0; width: 100%; z-index: 20; pointer-events: none; 
    transform-origin: bottom center; transform: translateY(100%);
    transition: transform 1.2s cubic-bezier(0.25, 1.1, 0.5, 1);
}

/* Animaciones de Entrada (Coreografía) */
.lineup-logo-img {
    position: absolute; bottom: 0.5%; left: 50%; width: 100%; z-index: 5; pointer-events: none;
    opacity: 0; filter: blur(20px); transform: translate(-50%, 40px) scale(0.92);
    transform-origin: bottom center;
    
    /* MAGIA AQUÍ: Cambiamos 1.4s por 2.5s para que la transición sea larguísima y muy suave */
    transition: opacity 2s ease-out, filter 2s ease-out, transform 2s cubic-bezier(0.25, 1, 0.5, 1); 
}
.lineup-plants-img {
    position: absolute; bottom: 0; left: 0; width: 100%; z-index: 20; pointer-events: none; 
    transform-origin: bottom center; transform: translateY(100%);
    /* INTACTO */
    transition: transform 1.2s cubic-bezier(0.25, 1.1, 0.5, 1);
}

/* Activadores de Animación */
.lineup-plants-img.animar { 
    transform: translateY(0); 
    transition-delay: 2.2s; 
}
.lineup-logo-img.animar { 
    opacity: 1; filter: blur(0px); transform: translate(-50%, 0) scale(1); 
    transition-delay: 3s; 
}
.lineup-wrapper.animar .l-row:nth-child(1) { opacity: 1; transform: translateY(0); transition-delay: 1.2s; }
.lineup-wrapper.animar .l-row:nth-child(2) { opacity: 1; transform: translateY(0); transition-delay: 1.45s; }
.lineup-wrapper.animar .l-row:nth-child(3) { opacity: 1; transform: translateY(0); transition-delay: 1.7s; }
.lineup-wrapper.animar .l-row:nth-child(4) { opacity: 1; transform: translateY(0); transition-delay: 1.95s; }

/* Post-Animación (Parallax) */
.lineup-wrapper.parallax-ready .lineup-plants-img,
.lineup-wrapper.parallax-ready .lineup-logo-img,
.lineup-wrapper.parallax-ready .lineup-text-overlay {
    transition: none !important;
}

@media (max-width: 900px) {
    .headliner { font-size: 3.5rem; }
    .mid { font-size: 2.5rem; }
    .under { font-size: 1.8rem; }
}

/* ==========================================================================
   07. PLAYLIST SECTION (ESTILO STICKER POP + FONDO 2 COLORES)
   ========================================================================== */
.playlist-section { 
    padding: 100px 40px; 
    position: relative; 
    overflow: hidden;
    
    /* El fondo de 2 colores que te gustaba, pero menos oscuro */
    background-color: #3b2459; /* Una base morada más clara y vibrante */
    background-image: 
        radial-gradient(circle at 20% 50%, rgba(173, 38, 88, 0.7) 0%, transparent 65%), /* Luz magenta intensa */
        radial-gradient(circle at 80% 50%, rgba(2, 99, 89, 0.7) 0%, transparent 65%);   /* Luz turquesa intensa */
        
    border-top: 8px solid var(--black); 
    border-bottom: 8px solid var(--black); 
}

.playlist-grid { 
    display: grid; 
    grid-template-columns: 1fr 1fr; 
    gap: 60px; 
    max-width: 1100px; 
    margin: 0 auto; 
    align-items: center; 
    position: relative; 
    z-index: 2; 
}

/* --- TÍTULO --- */
.title-3d-rust { 
    /* AQUÍ EL CAMBIO: Forzamos tu fuente personalizada primero */
    font-family: 'Benguiat', var(--font-display), serif; 
    
    font-size: 5.5rem; 
    line-height: 0.95; 
    color: #4FC3F7; 
    text-transform: uppercase; 
    margin-bottom: 20px;
    transform: rotate(-3deg); 
    -webkit-text-stroke: 2.5px var(--bone-white);
    text-shadow: 8px 8px 0px #E91E63; 
}

/* --- TEXTO DE DESCRIPCIÓN ("Dale play a la playlist...") --- */
.playlist-desc { 
    /* Cambiamos la fuente a Benguiat */
    font-family: 'Benguiat', var(--font-body), sans-serif; 
    font-size: 1.3rem; 
    font-weight: normal; /* Benguiat ya es bold, así que podemos quitar el 800 */
    color: var(--bone-white); 
    margin-bottom: 25px; 
    max-width: 90%;
    line-height: 1.4;
    text-shadow: 2px 2px 0px rgba(0,0,0,0.5); 
}

/* --- TEXTO DE UBICACIÓN Y FECHA ("MÉRIDA, YUCATÁN...") --- */
.playlist-location {
    /* Cambiamos la fuente a Benguiat */
    font-family: 'Benguiat', var(--font-display), sans-serif; 
    font-size: 2.2rem; 
    
    color: #8BC34A; /* Verde vibrante */
    -webkit-text-stroke: 1.5px var(--bone-white); 
    text-shadow: 4px 4px 0px var(--black); 
    letter-spacing: 2px;
}
/* --- REPRODUCTOR ESTILO POLAROID / STICKER --- */
.spotify-container { 
    display: flex; 
    justify-content: center; 
    /* Eliminamos el transform: rotate(2deg) para que quede 100% derecho */
}

.spotify-frame {
    position: relative; 
    width: 100%; 
    max-width: 450px; 
    background-color: var(--bone-white); 
    padding: 20px; 
    border: 6px solid var(--black); 
    border-radius: 20px; 
    box-shadow: 12px 12px 0px rgba(0,0,0,1);
}

.hardware-badge {
    position: absolute; 
    top: -25px; 
    left: 50%; 
    transform: translateX(-50%) rotate(-4deg); 
    background-color: #FF7EB3; 
    color: var(--black);
    font-family: var(--font-display); 
    font-size: 1.2rem; 
    padding: 8px 25px;
    border: 3px solid var(--black); 
    border-radius: 30px; 
    box-shadow: 4px 4px 0px var(--black);
    letter-spacing: 2px; 
    z-index: 10;
}

/* --- RESPONSIVE --- */
@media (max-width: 900px) {
    .playlist-grid { grid-template-columns: 1fr; gap: 50px; text-align: center; }
    .title-3d-rust { font-size: 4rem; transform: rotate(0deg); }
    .playlist-desc { margin: 0 auto 25px auto; }
    .spotify-container { transform: rotate(0deg); }
}


/* ==========================================================================
   ANIMACIONES ON-SCROLL (PLAYLIST SECTION)
   ========================================================================== */

/* --- 1. ESTADOS INICIALES (Ocultos antes del scroll) --- */
.playlist-info h2,
.playlist-info .playlist-desc,
.playlist-info .playlist-location {
    opacity: 0;
    transform: translateY(-40px); /* Empiezan un poco más arriba */
}

.spotify-frame {
    opacity: 0;
    /* Efecto "Slap": Empieza un 15% más grande y rotado hacia la derecha */
    transform: scale(1.15) rotate(12deg); 
}

/* Ocultamos los stickers para usar keyframes de aparición */
.sticker-badge, 
.sticker-hongo-globos {
    opacity: 0;
}

/* --- 2. ESTADOS ANIMADOS (Cuando entra en pantalla - VERSIÓN LENTA) --- */

/* Textos (Frenado en seco más suave y prolongado) */
.playlist-section.is-visible .playlist-info h2,
.playlist-section.is-visible .playlist-info .playlist-desc,
.playlist-section.is-visible .playlist-info .playlist-location {
    /* Aumentamos la duración a 1 segundo para una caída majestuosa */
    transition: opacity 0.8s ease-out, transform 1s cubic-bezier(0.2, 0.8, 0.2, 1);
}

.playlist-section.is-visible .playlist-info h2 {
    opacity: 1; transform: translateY(0); 
    transition-delay: 0.2s; /* Inicia casi al instante */
}
.playlist-section.is-visible .playlist-info .playlist-desc {
    opacity: 1; transform: translateY(0); 
    transition-delay: 0.6s; /* Espera a que el título baje */
}
.playlist-section.is-visible .playlist-info .playlist-location {
    opacity: 1; transform: translateY(0); 
    transition-delay: 1.0s; /* Aparece un segundo después */
}

/* Reproductor Spotify (Entrada controlada) */
.playlist-section.is-visible .spotify-frame {
    opacity: 1; 
    transform: scale(1) rotate(0deg); 
    /* Aumentamos la duración de la rotación a 0.8s */
    transition: opacity 0.6s ease-out, transform 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275);
    transition-delay: 1.4s; /* Entra cuando los textos ya están acomodados */
}

/* --- 3. STICKER POPS (Aparición elástica relajada) --- */

/* El sticker cuadrado de arriba */
.playlist-section.is-visible .sticker-badge {
    /* Retrasamos su aparición hasta el segundo 2.0 y hacemos que el "pop" dure más (0.7s) */
    animation: popBadge 0.7s cubic-bezier(0.175, 0.885, 0.32, 1.4) 2.0s forwards;
}

/* ==========================================================================
   EASTER EGG: CHICA GLOBOS (Se activa con JS al hacer hover)
   ========================================================================== */

/* 1. Estado inicial (Oculto) */
.sticker-hongo-globos {
    opacity: 0;
    transform: scale(0) rotate(20deg); 
}

/* 2. Estado revelado (Cuando JS le inyecta esta clase) */
.sticker-hongo-globos.is-revealed {
    /* Hace su explosión y luego se queda flotando infinito */
    animation: 
        popGlobos 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.4) forwards,
        floatSticker3 8s ease-in-out 0.6s infinite forwards;
}

/* --- KEYFRAMES DE APARICIÓN --- */
@keyframes popBadge {
    0% { opacity: 0; transform: translateX(-50%) scale(0) rotate(-20deg); }
    100% { opacity: 1; transform: translateX(-50%) scale(1) rotate(-4deg); }
}

@keyframes popGlobos {
    0% { opacity: 0; transform: scale(0) rotate(20deg); }
    100% { opacity: 1; transform: scale(1) rotate(0deg); }
}

/* ==========================================================================
   STICKERS FLOTANTES (PLAYLIST SECTION)
   ========================================================================== */
.floating-sticker {
    position: absolute;
    /* pointer-events en none evita que los stickers estorben si el usuario 
       quiere darle clic a algo en el reproductor de Spotify */
    pointer-events: none; 
    /* Le damos una sombra sólida y negra a los PNGs para que parezcan recortes */
    filter: drop-shadow(6px 6px 0px rgba(0, 0, 0, 0.9)); 
}

/* --- Sticker 1: Chica Hongo Cuadrada --- 
   (Movida a la esquina superior izquierda del reproductor) */
.sticker-hongo-cara {
    top: 22%;      /* Bájalo o súbelo ajustando este porcentaje */
    left: 47%;     /* Mueve el sticker de izquierda a derecha con este valor */
    width: 190px;
    z-index: 20;   /* Súper importante: esto obliga al sticker a montarse SOBRE el reproductor */
    animation: floatSticker1 6s ease-in-out infinite;
}

/* --- Sticker 2: Chica Enredadera --- 
   (Movida a la esquina inferior izquierda) */
.sticker-hongo-vines {
    top: auto;      /* Reseteamos la posición de arriba */
    right: auto;    /* Reseteamos la posición de la derecha */
    
    bottom: 5%;     /* Lo anclamos abajo. Sube o baja este % a tu gusto */
    left: 2%;       /* Lo anclamos a la izquierda. Sube el % si lo quieres más al centro */
    
    width: 180px;
    z-index: 1;     /* Lo dejamos en 1 para que si choca con el texto, quede por detrás y no estorbe la lectura */
    animation: floatSticker2 7s ease-in-out infinite;
}

/* --- Sticker 3: Chica Globos Cocodrilo/Flamingo --- 
   (Abajo a la derecha, pisando la esquina del reproductor de Spotify) */
.sticker-hongo-globos {
    bottom: 30px;  /* Ajusta este número si quieres que suba o baje más */
    right: 10%;    /* Lo anclamos a la derecha. Ajusta este número para moverlo a los lados */
    left: auto;    /* IMPORTANTE: Anula el 'left' que tenía antes para que no haya conflicto */
    width: 180px;  
    z-index: 20;   /* Nivel altísimo para garantizar que tape el marco y la sombra negra */
    animation: floatSticker3 8s ease-in-out infinite;
}

/* --- ANIMACIONES DE LEVITACIÓN INDEPENDIENTES --- */
/* Cada sticker tiene su propio ritmo y rotación para que no parezcan robots */
@keyframes floatSticker1 {
    0%, 100% { transform: translateY(0) rotate(-15deg); }
    50% { transform: translateY(-15px) rotate(-10deg); }
}

@keyframes floatSticker2 {
    0%, 100% { transform: translateY(0) rotate(15deg); }
    50% { transform: translateY(-20px) rotate(20deg); }
}

@keyframes floatSticker3 {
    0%, 100% { transform: translateY(0) rotate(-5deg); }
    50% { transform: translateY(-15px) rotate(0deg); }
}

@media (max-width: 1000px) {
    /* En móvil lo bajamos un poco más para que quede cerca del reproductor */
    .sticker-hongo-cara { width: 120px; top: 45%; left: 5%; opacity: 0.9; z-index: 20; }
    
    /* Actualizamos la chica enredadera para móvil */
    .sticker-hongo-vines { 
        width: 120px; 
        top: auto; 
        right: auto; 
        bottom: 2%; 
        left: -2%; 
        opacity: 0.7; /* Un poco transparente para no robar atención en pantallas chicas */
    }
    .sticker-hongo-globos { width: 160px; right: 2%; left: auto; bottom: 5px; opacity: 0.9; }
}
/* ==========================================================================
   NUEVO STICKER BADGE (Sticker cuadrado estático)
   ========================================================================== */
.sticker-badge {
    position: absolute;
    /* Lo subimos para que muerda el borde negro superior del reproductor */
    top: -30px; 
    left: 50%;
    
    /* Lo centramos exactamente donde estaba la etiqueta rosa y lo inclinamos */
    transform: translateX(-50%) rotate(0deg); 
    
    width: 210px; /* Tamaño ideal para que se vea masivo pero no tape Spotify */
    z-index: 20;
    
    /* Sombra negra dura que lo hace parecer un recorte pegado encima */
    filter: drop-shadow(8px 8px 0px rgba(0,0,0,1));
    pointer-events: none;
    
    /* SIN ANIMACIÓN: Se queda completamente fijo y estático */
}

/* Ajuste para celulares */
@media (max-width: 900px) {
    .sticker-badge {
        width: 130px;
        top: -45px;
    }
}
/* ==========================================================================
   08. TICKETS SECTION (INTERACTIVA Y BRUTALISTA)
   ========================================================================== */
.list-tickets-section {
    padding: 120px 20px 170px; background-color: var(--bg-deep); position: relative; overflow: hidden;
}

.list-header { text-align: center; margin-bottom: 60px; position: relative; z-index: 2; }
.list-title {
    font-family: 'Benguiat'; font-size: 6rem; color: var(--bone-white);
    margin: 0; letter-spacing: 5px; text-shadow: 4px 4px 0px rgba(0,0,0,0.8);
}

.tickets-list-container {
    max-width: 1100px; margin: 0 auto; display: flex; flex-direction: column;
    gap: 25px; position: relative; z-index: 2;
}

/* --- ESTRUCTURA FILA (AHORA ES UN ENLACE <a>) --- */
.ticket-row {
    display: flex; justify-content: space-between; align-items: center; padding: 30px 40px;
    background-color: rgba(10, 7, 16, 0.6); backdrop-filter: blur(5px);
    border: 1px solid rgba(255,255,255,0.1); border-left: 6px solid; 
    transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); gap: 40px;
    
    /* Propiedades clave para el nuevo modo botón */
    text-decoration: none; 
    cursor: pointer;
    position: relative; 
}

/* Estilos de Color por Tipo */
.row-general { border-left-color: var(--color-teal); }
.row-general:hover {
    background-color: rgba(2, 99, 89, 0.1); border-color: var(--color-teal);
    transform: translateX(10px); box-shadow: -10px 10px 0px rgba(2, 99, 89, 0.2);
}

.row-vip { border-left-color: var(--color-magenta); }
.row-vip:hover {
    background-color: rgba(173, 38, 88, 0.1); border-color: var(--color-magenta);
    transform: translateX(10px); box-shadow: -10px 10px 0px rgba(173, 38, 88, 0.2);
}

.row-all-access { border-left-color: var(--color-orange); }
.row-all-access:hover {
    background-color: rgba(217, 88, 41, 0.1); border-color: var(--color-orange);
    transform: translateX(10px); box-shadow: -10px 10px 0px rgba(217, 88, 41, 0.2);
}

/* ==========================================================================
   ANIMACIONES DE SCROLL (REVEAL)
   ========================================================================== */

/* 1. Título: Viene desde arriba */
.reveal-slide-down {
    opacity: 0;
    transform: translateY(-50px);
    transition: all 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275); /* Efecto de rebote ligero */
    font-family: 'Benguiat'!important;
}

/* 2. Boletos: Vienen desde abajo */
.reveal-fade-up {
    opacity: 0;
    transform: translateY(80px);
    transition: all 0.6s cubic-bezier(0.25, 0.8, 0.25, 1);
    font-family: 'Benguiat';
}

/* 3. La clase que JS agregará para hacerlos visibles */
.reveal-slide-down.is-visible,
.reveal-fade-up.is-visible {
    opacity: 1;
    transform: translateY(0);
}

/* 4. Efecto cascada (Stagger): Hacemos que los boletos entren uno por uno */
.ticket-row:nth-child(1).reveal-fade-up { transition-delay: 0.1s; }
.ticket-row:nth-child(2).reveal-fade-up { transition-delay: 0.3s; }
.ticket-row:nth-child(3).reveal-fade-up { transition-delay: 0.5s; }
/* ==========================================================================
   COLUMNAS (INFO, PRECIO Y BENEFICIOS)
   ========================================================================== */
.t-row-info { 
    min-width: 260px; 
    display: flex;
    flex-direction: column;
    justify-content: center;
}

/* Convertimos la fase en una etiqueta (badge) elegante */
.t-row-phase {
    display: inline-block; 
    font-family: var(--font-body); 
    font-size: 0.75rem;
    font-weight: 700; 
    letter-spacing: 2px; 
    margin-bottom: 12px;
    
    /* Diseño de etiqueta */
    padding: 5px 12px;
    border-radius: 4px;
    background-color: rgba(255, 255, 255, 0.05); /* Fondo muy sutil */
    width: fit-content;
}

/* Colores dinámicos para el texto de la etiqueta */
.phase-gen { color: var(--color-teal); }
.phase-vip { color: var(--color-magenta); }
.phase-all { color: var(--color-orange); }

/* Título del boleto */
.t-row-info h3 { 
    font-family: var(--font-display); 
    font-size: 3.5rem; 
    color: var(--bone-white); 
    margin: 0 0 8px 0; /* Espacio abajo para respirar */
    line-height: 1; 
}

/* Precio */
.t-row-price { 
    font-family: var(--font-display); 
    font-size: 2.5rem; 
    color: var(--bone-white); 
    margin: 0; 
    line-height: 1; 
    white-space: nowrap; 
}
.t-row-price span { 
    font-size: 1.2rem; 
    color: #888; 
}

/* ==========================================
   COLUMNA DE BENEFICIOS (Con línea separadora)
   ========================================== */
.t-row-benefits { 
    flex-grow: 1; 
    
    /* Creamos una separación visual limpia */
    padding-left: 35px;
    margin-left: 10px;
    border-left: 1px solid rgba(255, 255, 255, 0.1); 
}

.t-row-benefits p { 
    font-family: var(--font-body); 
    font-size: 1.05rem; 
    color: #d4d4d4; 
    line-height: 1.6; 
    margin: 0; 
    max-width: 90%; /* Evita que el texto choque con el botón de comprar */
}

/* ==========================================================================
   INTERACCIÓN HOVER: EFECTO TARJETA DESLIZABLE + BOTÓN PASTILLA
   ========================================================================== */

/* Aseguramos que la fila sea el límite de profundidad para esconder el sticker */
.ticket-row {
    position: relative;
    z-index: 1; 
}

/* --- BASE: CONTENEDOR DE ACCIÓN Y LÍNEA PUNTEADA --- */
.interactive-action {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 220px;
    
    /* La línea de recorte del boleto (efecto desprendible) */
    border-left: 2px dashed rgba(255, 255, 255, 0.2); 
    padding-left: 30px; 
    margin-left: 20px;
}

/* --- BASE: EL BOTÓN PASTILLA ("COMPRAR") --- */
.stub-btn {
    font-family: var(--font-display);
    font-size: 1.4rem;
    color: var(--bone-white);
    background-color: transparent;
    border: 2px solid var(--bone-white);
    border-radius: 50px; /* Forma redondita de pastilla */
    
    padding: 10px 25px;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
    white-space: nowrap;
}

/* --- EL STICKER (Escondido detrás como una carta) --- */
.ticket-sticker {
    position: absolute;
    /* Lo anclamos cerca del borde derecho de la caja */
    right: -20px; 
    top: 50%;
    margin-top: -65px; /* Mitad de su altura (130px) */
    
    width: 130px;
    
    /* El truco de magia: z-index negativo lo esconde DETRÁS de la caja del ticket */
    z-index: -1; 
    pointer-events: none; 
    
    /* ESTADO INICIAL: Metido hacia la izquierda (detrás del botón) y transparente */
    opacity: 0;
    transform: translateX(-60px) rotate(0deg);
    filter: drop-shadow(6px 6px 0px rgba(0,0,0,0.8));
    
    /* Transición suave y un poco elástica */
    transition: all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.2);
}

/* ==========================================================================
   ESTRUCTURA FILA (CON FONDO EN ::BEFORE PARA ESCONDER EL STICKER)
   ========================================================================== */
.ticket-row {
    display: flex; justify-content: space-between; align-items: center; padding: 30px 40px;
    transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); gap: 40px;
    text-decoration: none; cursor: pointer; position: relative;
    z-index: 1; /* Creamos el contexto base */
    
    /* IMPORTANTE: La caja real es transparente para conservar el tamaño exacto sin estorbar */
    background-color: transparent !important;
    border: 1px solid transparent; 
    border-left: 6px solid transparent;
}

/* EL FONDO FALSO (Aquí vive el color, el blur y los bordes visibles a z-index -1) */
.ticket-row::before {
    content: ""; position: absolute;
    /* Cubrimos exactamente los bordes transparentes de arriba */
    top: -1px; right: -1px; bottom: -1px; left: -6px;
    
    background-color: rgba(10, 7, 16, 0.6);
    backdrop-filter: blur(5px);
    border: 1px solid rgba(255,255,255,0.1); 
    border-left: 6px solid;
    
    z-index: -1; /* El fondo va atrás del texto */
    transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
}

/* ==========================================================================
   ESTILOS Y EVENTOS HOVER POR TIPO (CONTENEDOR Y FONDO)
   ========================================================================== */
.row-general::before { border-left-color: var(--color-teal); }
.ticket-row.row-general:hover { transform: translateX(10px); }
.ticket-row.row-general:hover::before {
    background-color: rgba(2, 99, 89, 0.1); border-color: var(--color-teal);
    box-shadow: -10px 10px 0px rgba(2, 99, 89, 0.2);
}

.row-vip::before { border-left-color: var(--color-magenta); }
.ticket-row.row-vip:hover { transform: translateX(10px); }
.ticket-row.row-vip:hover::before {
    background-color: rgba(173, 38, 88, 0.1); border-color: var(--color-magenta);
    box-shadow: -10px 10px 0px rgba(173, 38, 88, 0.2);
}

.row-all-access::before { border-left-color: var(--color-orange); }
.ticket-row.row-all-access:hover { transform: translateX(10px); }
.ticket-row.row-all-access:hover::before {
    background-color: rgba(217, 88, 41, 0.1); border-color: var(--color-orange);
    box-shadow: -10px 10px 0px rgba(217, 88, 41, 0.2);
}

/* ==========================================================================
   CONTENEDOR DE ACCIÓN Y LÍNEA PUNTEADA (Ajustado a la marca roja)
   ========================================================================== */
.interactive-action {
    position: relative;
    display: flex;
    align-items: center;
    
    /* 1. Alineamos el botón a la izquierda (pegado a la línea punteada) */
    justify-content: flex-start; 
    
    /* 2. Hacemos la caja más ancha para empujar la línea hasta tu marca roja */
    width: 360px; 
    
    /* La línea de recorte del boleto */
    border-left: 2px dashed rgba(255, 255, 255, 0.2); 
    padding-left: 30px; /* Separación de la línea al botón */
    margin-left: -20px!important;
}

.stub-btn {
    font-family: var(--font-display);
    font-size: 1.4rem;
    color: var(--bone-white);
    background-color: transparent;
    border: 2px solid var(--bone-white);
    border-radius: 50px; /* Forma de pastilla */
    
    padding: 10px 25px;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
    white-space: nowrap;
}

/* Efectos del Botón al hacer Hover en la fila */
.ticket-row.row-general:hover .stub-btn {
    background-color: var(--color-teal); border-color: var(--color-teal);
    color: var(--bone-white); transform: scale(1.05); box-shadow: 4px 4px 0px rgba(0,0,0,1);
}
.ticket-row.row-vip:hover .stub-btn {
    background-color: var(--color-magenta); border-color: var(--color-magenta);
    color: var(--bone-white); transform: scale(1.05); box-shadow: 4px 4px 0px rgba(0,0,0,1);
}
.ticket-row.row-all-access:hover .stub-btn {
    background-color: var(--color-orange); border-color: var(--color-orange);
    color: var(--black); transform: scale(1.05); box-shadow: 4px 4px 0px rgba(0,0,0,1);
}

/* ==========================================================================
   EL STICKER (LA TARJETA OCULTA)
   ========================================================================== */
.ticket-sticker {
    position: absolute;
    right: -85px; 
    top: 50%;
    margin-top: -95px; 
    width: 210px;
    
    /* ¡EL SECRETO!: -2 lo pone DETRÁS del fondo que está en -1 */
    z-index: -2; 
    pointer-events: none; 
    
    /* ESTADO INICIAL: Escondido detrás del ticket */
    opacity: 0;
    transform: translateX(-60px) rotate(0deg);
    filter: drop-shadow(6px 6px 0px rgba(0,0,0,0.8));
    
    transition: all 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.2);
}

/* El Sticker sale hacia la derecha revelándose por completo */
.ticket-row:hover .ticket-sticker {
    opacity: 1;
    transform: translateX(110px) rotate(0deg); 
}

/* ==========================================================================
   RESPONSIVE PARA TICKETS Y STICKERS
   ========================================================================== */
@media (max-width: 900px) {
    .ticket-row {
        flex-direction: column; text-align: center; padding: 30px 20px; gap: 20px;
        /* Los bordes transparentes reales cambian su orientación */
        border-left: 1px solid transparent; 
        border-top: 6px solid transparent; 
    }
    
    .ticket-row::before {
        /* Re-ajustamos la caja del fondo para cubrir el borde superior grueso */
        top: -6px; left: -1px; right: -1px; bottom: -1px;
        border-left: 1px solid rgba(255,255,255,0.1);
        border-top: 6px solid;
    }

    .row-general::before { border-top-color: var(--color-teal); border-left-color: transparent; }
    .row-vip::before { border-top-color: var(--color-magenta); border-left-color: transparent; }
    .row-all-access::before { border-top-color: var(--color-orange); border-left-color: transparent; }

    .ticket-row:hover { transform: translateY(-5px); }
    .ticket-row:hover::before { box-shadow: 0px 10px 0px rgba(0,0,0,0.5); }
    
    .interactive-action {
        width: 100%; /* Vuelve a tomar todo el ancho */
        justify-content: center; /* Centramos el botón de nuevo */
        margin-top: 10px;
        border-left: none;
        border-top: 2px dashed rgba(255, 255, 255, 0.2);
        padding-left: 0;
        padding-top: 30px;
        margin-left: 0;
    }
    
    /* En celular, el sticker sale hacia ARRIBA desde atrás de la caja */
    .ticket-sticker {
        right: 50%; margin-right: -65px; top: 0; margin-top: 0; 
        transform: translateY(20px) rotate(0deg);
    }
    
    .ticket-row:hover .ticket-sticker {
        transform: translateY(-80px) rotate(10deg); 
    }
}
/* ==========================================================================
   09. FOOTER MULTIFUNCIONAL (ESTILO BRUTALISTA)
   ========================================================================== */
.main-footer {
    position: relative;
    background-color: var(--black); 
    padding: 80px 40px 20px;
    border-top: 4px solid var(--bone-white); /* Línea gruesa arriba para separar del contenido */
    overflow: hidden;
}

.footer-grid {
    display: grid;
    /* Le damos más espacio a la columna del logo (2fr) y repartimos el resto */
    grid-template-columns: 2fr 1fr 1fr 1.5fr; 
    gap: 40px;
    max-width: 1200px;
    margin: 0 auto 60px;
    position: relative;
    z-index: 2;
}

/* --- COLUMNA 1: BRANDING --- */
.footer-logo {
    font-family: var(--font-display);
    font-size: 6rem; /* Logo masivo */
    color: var(--bone-white);
    line-height: 0.8;
    margin: 0 0 25px 0;
    text-shadow: 4px 4px 0px var(--color-orange); /* Sombra dura brutalista */
    letter-spacing: 2px;
}

.brand-details p {
    font-family: var(--font-body);
    font-size: 1.1rem;
    color: #aaaaaa;
    margin: 5px 0;
    letter-spacing: 2px;
    text-transform: uppercase;
}

/* --- ENCABEZADOS DE COLUMNA --- */
.footer-heading {
    font-family: var(--font-body);
    font-size: 1.1rem;
    color: #ff91f4;
    letter-spacing: 3px;
    margin-top: 0;
    margin-bottom: 25px;
    text-transform: uppercase;
    
    /* Subrayado de sección */
    border-bottom: 1px solid rgba(255, 255, 255, 0.2);
    padding-bottom: 10px;
    display: inline-block;
}

/* --- LISTAS Y ENLACES (EFECTO HOVER) --- */
.footer-list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.footer-list li {
    margin-bottom: 15px;
    font-family: var(--font-body);
    font-size: 1.1rem;
    color: #cccccc;
    transition: transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

.footer-link {
    color: inherit;
    text-decoration: none;
    display: inline-block;
    transition: color 0.3s ease;
}

/* Magia Interactiva: Desliza a la derecha y cambia de color al pasar el cursor */
.footer-list li:hover {
    transform: translateX(10px);
    color: var(--color-teal); 
}

/* --- NEWSLETTER --- */
.newsletter-desc {
    font-family: var(--font-body);
    font-size: 0.95rem;
    color: #aaaaaa;
    line-height: 1.5;
    margin-bottom: 25px;
}

.footer-form .input-group {
    display: flex;
    border-bottom: 2px solid var(--bone-white);
    transition: border-color 0.3s ease;
}

/* El borde inferior brilla cuando el usuario da clic para escribir */
.footer-form .input-group:focus-within {
    border-bottom-color: var(--color-orange); 
}

.footer-form input {
    background: transparent;
    border: none;
    color: var(--bone-white);
    font-family: var(--font-body);
    font-size: 1rem;
    padding: 10px 5px 10px 0;
    flex-grow: 1;
    outline: none;
}

.footer-form input::placeholder {
    color: #666666;
    letter-spacing: 1px;
}

.footer-form button {
    background: transparent;
    border: none;
    color: var(--color-orange);
    font-size: 1.2rem;
    cursor: pointer;
    padding: 0 10px;
    transition: transform 0.3s ease, color 0.3s ease;
}

/* El botón de flecha da un saltito y cambia de color */
.footer-form button:hover {
    transform: translateX(5px);
    color: var(--bone-white);
}

/* --- COPYRIGHT Y LÍNEA FINAL --- */
.footer-bottom {
    text-align: center;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
    padding-top: 25px;
    position: relative;
    z-index: 2;
}

.footer-bottom p {
    font-family: var(--font-body);
    font-size: 0.85rem;
    color: #666666;
    letter-spacing: 3px;
    line-height: 1.8;
}

/* Detalle para la frase que agregamos en el HTML */
.highlight-ruido {
    color: var(--color-orange);
    font-style: italic;
    font-weight: bold;
}

/* --- COLUMNA 1: BRANDING (NUEVO LOGO EN IMAGEN) --- */
.footer-logo-img {
    max-width: 100%; /* Evita que se salga de su columna */
    width: 320px; /* Tamaño ideal para que destaque sin estorbar */
    height: auto;
    margin-bottom: 25px; /* Espacio antes de las fechas */
    margin-left: -20px;
    
    /* Le aplicamos la misma sombra brutalista que tenía el texto */
    filter: drop-shadow(4px 4px 0px #ff91f4);
    
    /* Pequeña transición por si luego quieres animarlo */
    transition: transform 0.3s ease;
}

/* Un pequeño efecto hover opcional para el logo del footer */
.footer-logo-img:hover {
    transform: scale(1.02) rotate(-2deg);
}

.brand-details p {
    font-family: var(--font-body);
    font-size: 1.1rem;
    color: #aaaaaa;
    margin: 5px 0;
    letter-spacing: 2px;
    text-transform: uppercase;
}

/* --- RESPONSIVE PARA EL FOOTER --- */
@media (max-width: 900px) {
    .footer-grid {
        grid-template-columns: 1fr;
        gap: 50px;
        text-align: center;
    }

    .footer-heading {
        border-bottom: none; /* Quitamos el subrayado en móvil para limpiar */
    }

    .footer-list li:hover {
        transform: translateY(-5px); /* En móvil es mejor que salten hacia arriba */
    }

    .footer-logo {
        font-size: 5rem;
    }
}