.page-loader {
    display: none;
    position: fixed;
    inset: 0;
    z-index: 2000;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: 1rem;
    padding: 1.5rem;
    background: rgb(255 255 255 / 94%);
    color: #212529;
    font: 600 1.1rem system-ui, sans-serif;
    text-align: center;
    cursor: wait;
}

.is-page-loading .page-loader {
    display: flex;
}

.page-loader__spinner {
    width: 3rem;
    height: 3rem;
    border: .3rem solid #cfe2ff;
    border-top-color: #0064b1;
    border-radius: 50%;
    animation: page-loader-spin .8s linear infinite;
}

@keyframes page-loader-spin {
    to { transform: rotate(360deg); }
}

@media (prefers-reduced-motion: reduce) {
    .page-loader__spinner {
        animation: none;
    }
}

@media print {
    .page-loader {
        display: none !important;
    }
}
