.app-loader {
    inset: 0;
    position: fixed;
    z-index: 10000;
}

.app-loader__backdrop {
    align-items: center;
    backdrop-filter: blur(3px);
    background: rgba(25, 34, 49, .48);
    display: flex;
    height: 100%;
    justify-content: center;
    padding: 20px;
    width: 100%;
}

.app-loader__card {
    align-items: center;
    background: rgba(255, 255, 255, .98);
    border: 1px solid rgba(255, 255, 255, .75);
    border-radius: 16px;
    box-shadow: 0 20px 55px rgba(18, 28, 43, .24);
    display: flex;
    flex-direction: column;
    max-width: 330px;
    overflow: hidden;
    padding: 28px 32px 25px;
    position: relative;
    text-align: center;
    width: 100%;
}

.app-loader__card::before {
    background: linear-gradient(90deg, #eb4c93 0%, #b72eb1 52%, #7615c4 100%);
    content: '';
    height: 4px;
    left: 0;
    position: absolute;
    right: 0;
    top: 0;
}

.app-loader__brand {
    align-items: center;
    background: #fff0f6;
    border-radius: 50%;
    color: #d92c7f;
    display: flex;
    font-size: 14px;
    height: 34px;
    justify-content: center;
    margin-bottom: 15px;
    width: 34px;
}

.app-loader__spinner {
    align-items: center;
    display: flex;
    height: 48px;
    justify-content: center;
    margin-bottom: 13px;
    position: relative;
    width: 48px;
}

.app-loader__spinner::before,
.app-loader__spinner::after,
.app-loader__spinner span {
    border-radius: 50%;
    inset: 0;
    position: absolute;
}

.app-loader__spinner::before {
    border: 4px solid #f1d6e4;
    content: '';
}

.app-loader__spinner::after {
    animation: app-loader-spin .85s linear infinite;
    border: 4px solid transparent;
    border-right-color: #8b19bd;
    border-top-color: #e63f8c;
    content: '';
}

.app-loader__spinner span {
    background: #d92c7f;
    height: 6px;
    inset: 21px;
    width: 6px;
}

.app-loader__title {
    color: #17253a;
    font-size: 17px;
    font-weight: 800;
    line-height: 1.25;
    margin: 0 0 5px;
}

.app-loader__message {
    color: #7b8a9a;
    font-size: 12px;
    line-height: 1.45;
    margin: 0 0 18px;
}

.app-loader__progress {
    background: #edf0f4;
    border-radius: 999px;
    height: 4px;
    overflow: hidden;
    width: 100%;
}

.app-loader__progress span {
    animation: app-loader-progress 1.35s ease-in-out infinite;
    background: linear-gradient(90deg, #eb4c93, #8118c2);
    border-radius: inherit;
    display: block;
    height: 100%;
    transform: translateX(-100%);
    width: 55%;
}

body.app-loader-open {
    overflow: hidden;
}

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

@keyframes app-loader-progress {
    0% { transform: translateX(-115%); }
    55%, 100% { transform: translateX(210%); }
}

@media (prefers-reduced-motion: reduce) {
    .app-loader__spinner::after {
        animation-duration: 1.8s;
    }

    .app-loader__progress span {
        animation: none;
        transform: translateX(42%);
    }
}

@media (max-width: 480px) {
    .app-loader__card {
        max-width: 285px;
        padding: 25px 24px 22px;
    }
}
