/* SPA feedback: progress bar + soft page transitions */
#spa-progress {
    position: fixed; top: 0; left: 0; height: 3px; width: 0; opacity: 0;
    background: linear-gradient(90deg, #6c5ffc, #05c3fb);
    box-shadow: 0 0 8px rgba(108, 95, 252, .6);
    z-index: 100000; pointer-events: none;
    transition: width .25s ease, opacity .3s ease;
}
body.spa-loading { cursor: progress; }
#spa-content { transition: opacity .15s ease; }
#spa-content.is-loading { opacity: .55; pointer-events: none; }
#spa-content.spa-enter { animation: spaFadeIn .22s ease-out; }
@keyframes spaFadeIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
    #spa-content.spa-enter { animation: none; }
    #spa-content, #spa-progress { transition: none; }
}
