.cas-page-loader {
    position: fixed;
    inset: 0;
    z-index: 2147483647;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    background: rgba(241, 247, 255, 0.94);
    backdrop-filter: blur(5px);
    -webkit-backdrop-filter: blur(5px);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 240ms ease, visibility 0s linear 240ms;
}

html.cas-page-loading,
html.cas-page-loading body {
    overflow: hidden !important;
}

html.cas-page-loading .cas-page-loader {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transition-delay: 0s;
}

.cas-page-loader-card {
    width: min(360px, 92vw);
    padding: 32px 28px 28px;
    text-align: center;
    color: #173c78;
    background: rgba(255, 255, 255, 0.96);
    border: 1px solid rgba(54, 111, 187, 0.18);
    border-radius: 22px;
    box-shadow: 0 22px 55px rgba(20, 58, 112, 0.18);
}

.cas-page-loader-animation {
    position: relative;
    width: 88px;
    height: 88px;
    margin: 0 auto 20px;
}

.cas-page-loader-ring {
    position: absolute;
    border-style: solid;
    border-radius: 50%;
}

.cas-page-loader-ring-outer {
    inset: 0;
    border-width: 4px;
    border-color: #d6e8ff #3169b4 #d6e8ff #3169b4;
    animation: cas-page-loader-spin 1.15s linear infinite;
}

.cas-page-loader-ring-inner {
    inset: 11px;
    border-width: 3px;
    border-color: #64a8ef transparent #64a8ef transparent;
    animation: cas-page-loader-spin-reverse 0.9s linear infinite;
}

.cas-page-loader-heart {
    position: absolute;
    inset: 22px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #214d91;
    font-size: 25px;
    border-radius: 50%;
    background: #eef6ff;
    box-shadow: 0 0 0 7px rgba(79, 145, 221, 0.09);
    animation: cas-page-loader-pulse 1.25s ease-in-out infinite;
}

.cas-page-loader-title,
.cas-page-loader-subtitle {
    margin: 0;
    font-family: "Segoe UI", Arial, sans-serif;
}

.cas-page-loader-title {
    color: #173c78;
    font-size: 18px;
    font-weight: 700;
    letter-spacing: 0.01em;
}

.cas-page-loader-subtitle {
    margin-top: 7px;
    color: #6780a3;
    font-size: 13px;
    font-weight: 400;
}

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

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

@keyframes cas-page-loader-pulse {
    0%, 100% { transform: scale(0.94); }
    50% { transform: scale(1.06); }
}

@media (max-width: 480px) {
    .cas-page-loader-card {
        padding: 28px 20px 24px;
        border-radius: 18px;
    }

    .cas-page-loader-animation {
        width: 78px;
        height: 78px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cas-page-loader,
    .cas-page-loader-ring,
    .cas-page-loader-heart {
        animation: none !important;
        transition: none !important;
    }
}
