:root{--ux-loader:#0d6efd;--ux-loader-glow:rgba(13,110,253,.8);--ux-skeleton-base:#e8edf3;--ux-skeleton-shine:#f8fafc}
.ux-page-progress{position:fixed;z-index:2147483647;top:0;left:0;width:0;height:3px;pointer-events:none;opacity:0;background:linear-gradient(90deg,#0d6efd,#45a3ff,#7b61ff);box-shadow:0 0 8px var(--ux-loader-glow),0 0 18px var(--ux-loader-glow);transform:translateZ(0);transition:width .22s ease,opacity .25s ease}
.ux-page-progress::after{content:"";position:absolute;right:0;top:-2px;width:90px;height:7px;border-radius:100%;background:#fff;filter:blur(5px);opacity:.8}
.ux-page-progress.is-visible{opacity:1}.ux-page-progress.is-starting{width:24%}.ux-page-progress.is-working{width:72%;transition-duration:3.5s}.ux-page-progress.is-finishing{width:100%;transition-duration:.18s}.ux-page-progress.is-hidden{opacity:0}
html.ux-navigating{cursor:progress}html.ux-navigating body{pointer-events:none}html.ux-navigating a,html.ux-navigating button,html.ux-navigating input{cursor:progress!important}
.ux-button-loading{position:relative!important;pointer-events:none!important;opacity:.82!important}.ux-button-loading::before{content:"";display:inline-block;width:1em;height:1em;margin-right:.55em;vertical-align:-.15em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:ux-spin .65s linear infinite}
img.ux-image-loading{color:transparent;background:linear-gradient(100deg,var(--ux-skeleton-base) 20%,var(--ux-skeleton-shine) 40%,var(--ux-skeleton-base) 60%);background-size:250% 100%;animation:ux-shimmer 1.25s ease-in-out infinite;opacity:.72}
img.ux-image-ready{animation:ux-image-in .25s ease both}img.ux-image-error{background:#eef1f5;opacity:.55}
.ux-skeleton{position:relative;overflow:hidden;color:transparent!important;border-color:transparent!important;background:var(--ux-skeleton-base)!important}.ux-skeleton::after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.75),transparent);animation:ux-skeleton-slide 1.25s infinite}
.ux-network-status{position:fixed;z-index:2147483646;right:16px;bottom:78px;max-width:320px;padding:10px 14px;border-radius:10px;background:#202938;color:#fff;font-size:.85rem;box-shadow:0 9px 25px rgba(0,0,0,.18);transform:translateY(18px);opacity:0;pointer-events:none;transition:.25s}.ux-network-status.show{transform:none;opacity:1}.ux-network-status.offline{background:#9b2c2c}
@keyframes ux-spin{to{transform:rotate(360deg)}}@keyframes ux-shimmer{to{background-position:-250% 0}}@keyframes ux-skeleton-slide{to{transform:translateX(100%)}}@keyframes ux-image-in{from{opacity:.35}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.ux-page-progress,.ux-network-status{transition:none}.ux-button-loading::before,.ux-image-loading,.ux-skeleton::after{animation:none}}
