/* JH Technology Public React Shell 1.0.8 */
html.jht-spa-busy{cursor:progress}
/* No mantener transform/will-change en el host: un ancestro transformado altera
   position:fixed, stacking y animaciones de modales. Solo se acelera durante la entrada. */
.jht-spa-route-enter{animation:jhtSpaRouteEnter .32s cubic-bezier(.22,.61,.36,1) both;will-change:opacity}
@keyframes jhtSpaRouteEnter{from{opacity:.08}to{opacity:1}}
.jht-spa-progress{position:fixed;z-index:2147483000;left:0;top:0;width:100%;height:2px;pointer-events:none;opacity:0;transition:opacity .12s ease}
.jht-spa-progress::before{content:"";display:block;height:100%;width:35%;background:currentColor;transform:translateX(-120%)}
.jht-spa-progress.is-active{opacity:.48;color:var(--jht-primary,#2563eb)}
.jht-spa-progress.is-active::before{animation:jhtSpaProgress .75s ease-in-out infinite}
@keyframes jhtSpaProgress{0%{transform:translateX(-120%)}100%{transform:translateX(390%)}}
.jht-spa-auth-host{min-height:clamp(520px,70vh,860px)}
/* Los portales clonados se dejan fuera del main para no heredar overflow/stacking. */
[data-jht-spa-portal="1"]{isolation:auto}
@media(prefers-reduced-motion:reduce){.jht-spa-route-enter{animation:none!important}.jht-spa-progress::before{animation:none!important;width:100%;transform:none!important}}
