/* ==========================================================================
   LOADER.CSS - Bulletproof Rotating Spinner
   ========================================================================== */

/* Full-screen Overlay */
.page-loader {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(255, 255, 255, 0.95);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    z-index: 100000;
    opacity: 1;
    visibility: visible;
    transition: opacity 0.4s ease, visibility 0.4s ease;
}

[data-theme="dark"] .page-loader,
[data-theme="midnight"] .page-loader {
    background: rgba(15, 23, 42, 0.95);
}

[data-theme="high-contrast"] .page-loader {
    background: #000;
}

.page-loader.hidden {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

/* ==========================================================================
   GUARANTEED ROTATING SPINNER
   ========================================================================== */
.loader-spinner {
    width: 48px;
    height: 48px;
    border: 4px solid #e0e0e0;
    border-top: 4px solid #6366f1;
    border-radius: 50%;
    -webkit-animation: spin360 0.8s linear infinite;
    -moz-animation: spin360 0.8s linear infinite;
    -o-animation: spin360 0.8s linear infinite;
    animation: spin360 0.8s linear infinite;
}

[data-theme="dark"] .loader-spinner,
[data-theme="midnight"] .loader-spinner {
    border-color: #334155;
    border-top-color: #818cf8;
}

[data-theme="high-contrast"] .loader-spinner {
    border-color: #333;
    border-top-color: #ffff00;
}

@-webkit-keyframes spin360 {
    from {
        -webkit-transform: rotate(0deg);
    }

    to {
        -webkit-transform: rotate(360deg);
    }
}

@-moz-keyframes spin360 {
    from {
        -moz-transform: rotate(0deg);
    }

    to {
        -moz-transform: rotate(360deg);
    }
}

@-o-keyframes spin360 {
    from {
        -o-transform: rotate(0deg);
    }

    to {
        -o-transform: rotate(360deg);
    }
}

@keyframes spin360 {
    from {
        transform: rotate(0deg);
    }

    to {
        transform: rotate(360deg);
    }
}

/* Text */
.loader-message {
    margin-top: 20px;
    font-size: 14px;
    font-weight: 600;
    color: #334155;
    letter-spacing: 0.05em;
}

[data-theme="dark"] .loader-message,
[data-theme="midnight"] .loader-message {
    color: #f1f5f9;
}

[data-theme="high-contrast"] .loader-message {
    color: #ffff00;
}