/* Полный набор стилей прелоадера (дублирует critical inline в head). */
html.grad-loader-active {
    overflow: hidden;
}

html.grad-no-loader #grad-page-loader {
    display: none !important;
}

.grad-page-loader {
    position: fixed;
    inset: 0;
    z-index: 2147483000;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(165deg, #ffffff 0%, #f7f4fc 42%, #ebe4f8 100%);
    transition: opacity 0.42s cubic-bezier(0.23, 1, 0.32, 1),
        visibility 0.42s cubic-bezier(0.23, 1, 0.32, 1);
}

.grad-page-loader--hide {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

.grad-page-loader__inner {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 14px;
    padding: 24px;
    text-align: center;
}

.grad-page-loader__logo {
    width: 64px;
    height: 64px;
    object-fit: contain;
    animation: grad-loader-pulse 1.35s ease-in-out infinite;
}

.grad-page-loader__title {
    margin: 0;
    font-family: 'Manrope', system-ui, sans-serif;
    font-size: 1.05rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    color: #1a0f2e;
}

.grad-page-loader__bar {
    width: min(220px, 72vw);
    height: 4px;
    border-radius: 999px;
    background: rgba(91, 33, 182, 0.12);
    overflow: hidden;
}

.grad-page-loader__bar > span {
    display: block;
    width: 42%;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, #5b21b6, #a78bfa);
    animation: grad-loader-bar 1.1s ease-in-out infinite;
}

@keyframes grad-loader-pulse {
    0%,
    100% {
        transform: scale(1);
        opacity: 0.92;
    }
    50% {
        transform: scale(1.06);
        opacity: 1;
    }
}

@keyframes grad-loader-bar {
    0% {
        transform: translateX(-120%);
    }
    100% {
        transform: translateX(320%);
    }
}

@media (prefers-reduced-motion: reduce) {
    .grad-page-loader__logo,
    .grad-page-loader__bar > span {
        animation: none;
    }

    .grad-page-loader {
        transition: none;
    }
}
