/* * UI Component: Preloader
 * Solid purple curtain that slides entirely to the right (translateX 100%) 
 * revealing the application underneath.
 */
#loader {
    position: fixed; 
    inset: 0; 
    z-index: 9999;
    /* ENTIRE OVERLAY IS PURPLE */
    background: var(--accent-purple, #9333ea); 
    display: flex; 
    justify-content: center; 
    align-items: center;
    /* Smooth slide-out to the right */
    transition: transform 0.8s cubic-bezier(0.7, 0, 0.2, 1);
}

#loader.fade-out { 
    /* Slides the solid block to the right edge */
    transform: translateX(100%); 
    pointer-events: none; 
}

.loader-content { 
    display: flex; 
    flex-direction: column; 
    align-items: center; 
    gap: 16px; 
    transition: opacity 0.3s ease;
}

#loader.fade-out .loader-content { 
    /* Fades out the inner text slightly faster than the curtain slides */
    opacity: 0; 
}

/* Adjusted colors for better contrast on solid purple background */
.loader-title { 
    font-size: 11px; 
    font-weight: 600; 
    letter-spacing: 4px; 
    color: #ffffff; 
    text-transform: uppercase; 
}

.loader-bar-bg { 
    width: 140px; 
    height: 2px; 
    background: rgba(0, 0, 0, 0.25); 
    border-radius: 4px; 
    overflow: hidden; 
    position: relative; 
}

.loader-bar-fill { 
    position: absolute; 
    top: 0; 
    left: 0; 
    height: 100%; 
    width: 0%; 
    background: #ffffff; 
    box-shadow: 0 0 10px rgba(255, 255, 255, 0.5); 
    transition: width 0.8s cubic-bezier(0.7, 0, 0.3, 1); 
}