.app-loading-bar {
    position: fixed;
    z-index: 2147483647;
    top: 0;
    right: 0;
    left: 0;
    height: 3px;
    overflow: hidden;
    pointer-events: none;
    opacity: 0;
    background: rgba(7, 89, 165, .12);
    transform: translateY(-100%);
    transition: opacity .16s ease, transform .16s ease;
}

.app-loading-bar.is-active {
    opacity: 1;
    transform: translateY(0);
}

.app-loading-bar__indicator {
    position: absolute;
    top: 0;
    bottom: 0;
    left: -38%;
    width: 38%;
    border-radius: 0 999px 999px 0;
    background: linear-gradient(90deg, transparent 0, #0b6ed1 34%, #20b9de 72%, #65d8b3 100%);
    box-shadow: 0 0 10px rgba(11, 110, 209, .72);
    animation: ficharnet-loading-sweep 1.65s cubic-bezier(.42, 0, .58, 1) infinite;
    will-change: transform;
}

@keyframes ficharnet-loading-sweep {
    from { transform: translateX(0); }
    to { transform: translateX(375%); }
}

@media (min-width: 900px) {
    .app-loading-bar { height: 4px; }
}

/* Movimiento reducido (sistema o ajuste del portal del trabajador): barra fija, sin barrido.
   Con !important porque el portal fuerza animation-duration a .01ms y el barrido parpadearía. */
@media (prefers-reduced-motion: reduce) {
    .app-loading-bar { transition: opacity .1s linear; }
    .app-loading-bar__indicator {
        left: 0;
        width: 100%;
        animation: none !important;
        background: #0b6ed1;
    }
}

body.worker-reduce-motion .app-loading-bar__indicator {
    left: 0;
    width: 100%;
    animation: none !important;
    background: #0b6ed1;
}
