.spinner-overlay{z-index:var(--z-dropdown-portal);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.spinner-overlay.fullscreen{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);position:fixed;background:#0f172abf!important}body.dark .spinner-overlay.fullscreen{background:#0f172ad1!important}.spinner-content{flex-direction:column;align-items:center;gap:1.75rem;padding:1.5rem;animation:.35s spinner-pop;display:flex}.spinner-orbit{flex-shrink:0;justify-content:center;align-items:center;width:120px;height:120px;display:flex;position:relative}.spinner-ring{pointer-events:none;border:2px solid #0000;border-radius:50%;position:absolute}.spinner-ring--1{border-top-color:var(--primary,#2563eb);animation:1.1s linear infinite spinner-orbit-spin;inset:0}.spinner-ring--2{border-top-color:#0ea5e9;border-right-color:#0ea5e933;animation:1.7s linear infinite reverse spinner-orbit-spin;inset:10px}.spinner-ring--3{border-width:1.5px;border-bottom-color:var(--blue-300,#93c5fd);animation:.85s linear infinite spinner-orbit-spin;inset:20px}.spinner-orbit__img{z-index:1;object-fit:contain;width:60px;height:60px;animation:2.4s ease-in-out infinite spinner-img-pulse;position:relative}.spinner-orbit__dot{z-index:1;background:var(--primary,#2563eb);width:10px;height:10px;box-shadow:0 0 12px var(--primary,#2563eb);border-radius:50%;animation:1.4s ease-in-out infinite spinner-dot-pulse;position:relative}.spinner-message{letter-spacing:.01em;text-align:center;color:var(--text-muted,var(--text-secondary,#64748b));-webkit-font-smoothing:antialiased;max-width:min(90vw,420px);margin:0;font-size:1rem;font-weight:400;line-height:1.45}.spinner-overlay.fullscreen .spinner-message{color:#cbd5e1;text-shadow:0 1px 10px #00000059}@keyframes spinner-pop{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@keyframes spinner-orbit-spin{to{transform:rotate(360deg)}}@keyframes spinner-img-pulse{0%,to{opacity:.85;filter:drop-shadow(0 0 6px #2563eb66)}50%{opacity:1;filter:drop-shadow(0 0 14px #2563ebbf)}}@keyframes spinner-dot-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.5)}}.spinner-enter-active,.spinner-leave-active{transition:opacity .3s cubic-bezier(.4,0,.2,1)}.spinner-enter-from,.spinner-leave-to{opacity:0}
