/* ====================
   LOADER EXPOSICIÓN (UNIFICADO)
   ==================== */

#loading {
    height: 100%;
    width: 100vw;
    background-color: var(--color-bg-off-white);
    /* Combined Spotlight + Background */
    background: 
        radial-gradient(
            circle at 50% 45%, 
            rgba(255, 255, 255, 0.8) 0%, 
            rgba(240, 240, 240, 0) 70%
        ),
        var(--color-bg-off-white);
    color: black;
    z-index: 20000;
    display: grid;
    align-items: center;
    justify-content: center;
    position: fixed;
    top: 0;
    left: 0;
    
    /* Cinematic Atmospheric Dissolve Reveal */
    opacity: 1;
    transform: translateZ(0); /* Force GPU acceleration */
    filter: blur(0px);
    transition: 
        opacity 1.2s cubic-bezier(0.23, 1, 0.32, 1),
        transform 1.2s cubic-bezier(0.23, 1, 0.32, 1),
        filter 1.2s cubic-bezier(0.23, 1, 0.32, 1);
    will-change: opacity, transform, filter;
    backface-visibility: hidden;
    perspective: 1000px;
}

/* Material Texture for the Loader Wall */
#loading::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-image: url('../../img/texture.webp');
    background-repeat: repeat;
    background-size: 512px;
    mix-blend-mode: multiply;
    opacity: 0.4;
    z-index: -1;
    pointer-events: none;
}

/* Estado de Revelado: Disolución a Blanco (Usado al finalizar la carga) */
#loading.revelar-galeria {
    opacity: 0 !important;
    transform: scale(1.02) translateZ(0) !important; 
    filter: blur(2px); /* Lower blur for performance */
    pointer-events: none;
}

/* Overlay de Destello (Flare) para simular sobreexposición (Más ligero que filter:brightness) */
#loading::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: white;
    opacity: 0;
    transition: opacity 0.8s ease-out;
    z-index: 1;
    pointer-events: none;
}

#loading.revelar-galeria::after {
    opacity: 0.6; /* Fuerza del destello de luz */
}

/* Estado de Entrada (Usado para Destello a Blanco en Navegación) */
#loading.entrando {
    display: grid !important;
    opacity: 1 !important;
    transform: scale(1) !important;
    filter: blur(0px) !important;
}

#loading.entrando .loader-content {
    opacity: 0; /* Ocultar contenido durante el flash de navegación */
}

/* Utilidad Rapida para Navegación Electrónica */
#loading.rapido {
    transition-duration: 0.4s !important;
}

/* Home Loader Background */
#loading.home-loader {
    background-color: var(--color-bg-light);
}

/* Loader Content Container */
.loader-content {
    text-align: center;
    position: relative;
    z-index: 10;
}

/* Typography & Staggered Animations */
.loading {
    font-family: var(--fuente);
    font-size: clamp(3rem, 10vw, 5.5rem);
    margin: 0;
    letter-spacing: -0.02em;
    text-transform: uppercase;
    
    /* Reveal State */
    opacity: 0;
    transform: perspective(1000px) translateZ(-20px);
    filter: blur(5px);
    transition: 
        opacity 2.0s cubic-bezier(0.23, 1, 0.32, 1),
        transform 2.0s cubic-bezier(0.23, 1, 0.32, 1),
        filter 2.0s cubic-bezier(0.23, 1, 0.32, 1);
}

.loading.visible {
    opacity: 1;
    transform: perspective(1000px) translateZ(0px);
    filter: blur(0px);
}

.loader-artist-name {
    font-family: 'Poppins', sans-serif;
    font-weight: 500;
    letter-spacing: 0.3em;
    color: var(--color-text-secondary);
    text-transform: uppercase;
    font-size: 0.9rem;
    margin-bottom: 0.5rem;
    
    /* Stagger Start */
    opacity: 0;
    transform: perspective(1000px) translateZ(-10px);
    transition: 
        opacity 1s ease-out 0.2s,
        transform 1s ease-out 0.2s;
}

.loader-artist-name.visible {
    opacity: 1;
    transform: perspective(1000px) translateZ(0);
}

.loader-subtitle {
    font-family: 'Poppins', sans-serif;
    font-weight: 400;
    letter-spacing: 0.2em;
    color: var(--color-text-muted);
    text-transform: uppercase;
    font-size: 0.75rem;
    margin-top: 1rem;
    
    /* Stagger Start */
    opacity: 0;
    transform: perspective(1000px) translateZ(-10px);
    transition: 
        opacity 1s ease-out 0.5s,
        transform 1s ease-out 0.5s;
}

.loader-subtitle.visible {
    opacity: 1;
    transform: perspective(1000px) translateZ(0);
}

/* Progress Line (Elite Minimalist Design) */
.loader-line {
    position: fixed;
    bottom: 0;
    left: 0;
    height: 3px;
    background: linear-gradient(to right, #000, #333);
    width: 0%;
    transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 -2px 10px rgba(0,0,0,0.1);
}

/* HOME LOADER SPECIFICS (NUMEN BRANDING) */
#loading.home-loader {
    background-color: var(--color-bg-light);
}

.loader-logo {
    font-size: clamp(4rem, 15vw, 8rem);
    color: #000;
    margin: 0;
    opacity: 0;
    transform: perspective(1000px) translateZ(-50px);
    filter: blur(8px);
    transition: 
        opacity 1.5s ease-out,
        transform 1.5s cubic-bezier(0.23, 1, 0.32, 1),
        filter 1.5s ease-out;
}

.loader-logo.visible {
    opacity: 1;
    transform: perspective(1000px) translateZ(0px);
    filter: blur(0px);
    color: var(--color2);
    text-shadow: 0px 10px 30px rgba(0,0,0,0.15);
}

.loader-frase {
    font-family: 'Poppins', sans-serif;
    font-size: 0.8rem;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.25em;
    color: var(--color-text-muted);
    margin-top: 1.5rem;
    
    opacity: 0;
    transform: translateY(10px);
    transition: 
        opacity 1.2s ease-out 0.6s,
        transform 1.2s ease-out 0.6s;
}

.loader-frase.visible {
    opacity: 1;
    transform: translateY(0);
}

/* Mobile Adjustments */
@media (max-width: 768px) {
    .loading { font-size: 3rem; }
    .loader-artist-name { font-size: 0.75rem; letter-spacing: 0.2em; }
    .loader-subtitle { font-size: 0.65rem; }
}