/**
 * Top loading bar — fixed strip at viewport top (NProgress-style).
 * Scope: all rules live under .tt-tlb; safe to include on any public page.
 */

.tt-tlb {
    --tt-tlb-h: 3px;
    --tt-tlb-z: 1200;

    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    height: var(--tt-tlb-h);
    z-index: var(--tt-tlb-z);
    pointer-events: none;
    overflow: hidden;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.18s ease, visibility 0.18s ease;
}

.tt-tlb.tt-tlb--active {
    opacity: 1;
    visibility: visible;
}

.tt-tlb__fill {
    display: block;
    height: 100%;
    width: 100%;
    transform-origin: 0 50%;
    background: linear-gradient(
        90deg,
        #0ea5e9 0%,
        #6366f1 18%,
        #a855f7 36%,
        #ec4899 54%,
        #f97316 72%,
        #22c55e 88%,
        #0ea5e9 100%
    );
    background-size: 220% 100%;
    animation: tt-tlb-flow 1.35s linear infinite;
    box-shadow: 0 0 12px rgba(99, 102, 241, 0.45);
}

@keyframes tt-tlb-flow {
    0% {
        background-position: 0% 0%;
    }

    100% {
        background-position: 100% 0%;
    }
}

@media (prefers-reduced-motion: reduce) {
    .tt-tlb__fill {
        animation: none;
        background-position: 50% 0%;
    }
}
