.top-loader {
    position: fixed;
    top: 0;
    inset-inline: 0;
    height: 3px;
    z-index: 11000;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.18s ease;
}

.top-loader.is-active {
    opacity: 1;
}

.top-loader__track {
    position: relative;
    width: 100%;
    height: 100%;
    overflow: hidden;
    background: rgba(10, 88, 202, 0.08);
}

.top-loader__bar {
    position: absolute;
    inset-block: 0;
    inset-inline-start: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, #0A58CA 0%, #0D7CFF 55%, #38bdf8 100%);
    transform: scaleX(0);
    transform-origin: right center;
    transition: transform 0.22s ease;
    box-shadow: 0 0 10px rgba(13, 124, 255, 0.45);
}

.top-loader__glow {
    position: absolute;
    inset-block: -2px;
    width: 120px;
    height: calc(100% + 4px);
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.75), transparent);
    opacity: 0;
    animation: none;
}

.top-loader.is-active .top-loader__glow {
    opacity: 1;
    animation: top-loader-glow 1.1s ease-in-out infinite;
}

.top-loader.is-complete .top-loader__bar {
    transition: transform 0.18s ease;
}

.top-loader.is-boot .top-loader__bar {
    animation: top-loader-boot 1.2s ease-in-out infinite;
}

@keyframes top-loader-glow {
    0% {
        inset-inline-start: -120px;
    }
    100% {
        inset-inline-start: calc(100% + 40px);
    }
}

@keyframes top-loader-boot {
    0% {
        transform: scaleX(0.08);
    }
    50% {
        transform: scaleX(0.45);
    }
    100% {
        transform: scaleX(0.12);
    }
}

@supports (top: env(safe-area-inset-top)) {
    .front-layout-body .top-loader {
        top: env(safe-area-inset-top, 0);
    }
}

@media (prefers-reduced-motion: reduce) {
    .top-loader__glow,
    .top-loader.is-boot .top-loader__bar {
        animation: none;
    }

    .top-loader__bar {
        transition: none;
    }
}
