.app-region { position: relative; }
.route-visual-copy { position: absolute; right: auto; bottom: auto; pointer-events: none !important; user-select: none; overflow: hidden; }
.route-visual-copy * { pointer-events: none !important; }
.route-transitioning > .render-stage { will-change: opacity, transform; }
.route-transitioning > .route-visual-copy { will-change: opacity; }
.route-local-result { will-change: opacity; }
.route-progress { position: fixed; top: 0; left: 0; right: 0; height: 3px; z-index: 120; pointer-events: none; overflow: hidden; opacity: 0; transition: opacity 140ms ease-out; }
.route-progress.is-visible { opacity: 1; }
.route-progress::after { content: ''; display: block; height: 100%; width: 38%; background: var(--ka-primary, #426b87); animation: route-wait 1.25s ease-in-out infinite; animation-play-state: paused; }
.route-progress.is-visible::after { animation-play-state: running; }
.route-load-error { position: sticky; top: 0; z-index: 5; }
@keyframes route-wait { from { transform: translateX(-110%); } to { transform: translateX(370%); } }
@media(prefers-reduced-motion:reduce) { .route-progress::after { animation: none; width: 100%; opacity: .65; } .route-progress { transition: none; } }
