/* Loaders y Transiciones del Runtime */
.runtime-loader-initial {
    position: fixed; inset: 0; background: #FAFAF9; z-index: 99999;
    display: flex; align-items: center; justify-content: center;
    transition: opacity 0.5s ease; pointer-events: none;
}
.runtime-spinner {
    width: 40px; height: 40px; border: 3px solid #E5E5E5;
    border-top-color: #00AEEF; border-radius: 50%;
    animation: rt-spin 0.8s linear infinite;
}
@keyframes rt-spin { to { transform: rotate(360deg); } }

/* Progress Bar (Navegación SPA) */
#runtime-progress-bar {
    position: fixed; top: 0; left: 0; width: 100%; height: 3px;
    z-index: 100000; opacity: 0; transition: opacity 0.2s;
}
body.spa-loading #runtime-progress-bar { opacity: 1; }
body.spa-loading #runtime-progress-bar .bar {
    width: 100%; height: 100%; background: #00AEEF;
    animation: rt-load 1s infinite ease-in-out; transform-origin: left;
}
@keyframes rt-load { 0% { transform: scaleX(0); } 50% { transform: scaleX(0.5); } 100% { transform: scaleX(1); transform-origin: right; } }

/* Transición de Contenido */
#app-wrapper { transition: opacity 0.2s ease; }
body.spa-loading #app-wrapper { opacity: 0.6; pointer-events: none; }