#loader{position:fixed;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,var(--color-surface) 0%,var(--color-surface-alt) 100%);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:var(--z-loader);opacity:1;visibility:visible;transition:opacity .6s cubic-bezier(.4,0,.2,1),visibility .6s cubic-bezier(.4,0,.2,1)}#loader.hidden{opacity:0;visibility:hidden;pointer-events:none}.loader-globe{position:relative;width:72px;height:72px}.loader-globe svg{width:100%;height:100%;animation:pulse-globe 2.4s ease-in-out infinite}.loader-ring{position:absolute;top:-12px;right:-12px;bottom:-12px;left:-12px;border:1.5px solid transparent;border-top-color:var(--color-navy);border-radius:50%;animation:spin 1.4s linear infinite}.loader-ring:before{content:"";position:absolute;top:6px;right:6px;bottom:6px;left:6px;border:1.5px solid transparent;border-top-color:var(--color-navy-muted);border-radius:50%;animation:spin 2s linear infinite reverse}.loader-text{margin-top:28px;font-size:var(--text-sm);font-weight:var(--font-medium);letter-spacing:var(--tracking-widest);text-transform:uppercase;color:var(--color-navy);opacity:.7}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse-globe{0%,to{opacity:.6;transform:scale(1)}50%{opacity:1;transform:scale(1.02)}}.spinner{display:inline-block;position:relative}.spinner-sm{width:16px;height:16px}.spinner-md{width:24px;height:24px}.spinner-lg{width:48px;height:48px}.spinner-xl{width:64px;height:64px}.spinner:before{content:"";display:block;width:100%;height:100%;border:3px solid var(--color-navy);box-sizing:border-box;animation:cypher-spin 3s cubic-bezier(.16,1,.3,1) infinite}.spinner:after{content:"";position:absolute;top:25%;left:25%;width:50%;height:50%;background-color:var(--color-gold);animation:cypher-pulse 1.5s ease-in-out infinite alternate}.spinner-white:before{border-color:#fff}.spinner-white:after{background-color:#fffc}.spinner-gray:before{border-color:var(--color-text-secondary)}.spinner-gray:after{background-color:var(--color-text-muted)}@keyframes cypher-spin{0%{transform:rotate(0)}25%{transform:rotate(90deg)}50%{transform:rotate(180deg)}75%{transform:rotate(270deg)}to{transform:rotate(360deg)}}@keyframes cypher-pulse{0%{transform:scale(.8);opacity:.6}to{transform:scale(1.1);opacity:1}}.loader-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--loader-overlay-bg);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:var(--z-modal);opacity:0;visibility:hidden;transition:opacity var(--transition-smooth),visibility var(--transition-smooth)}.loader-overlay.loader-visible{opacity:1;visibility:visible}.loader-overlay.loader-transparent{background:var(--loader-overlay-bg-transparent)}.loader-content{text-align:center}.loader-message{margin-top:var(--space-4);font-size:var(--text-sm);color:var(--color-text-secondary);font-weight:var(--font-medium)}body.loader-active{overflow:hidden}.inline-loader{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-8);gap:var(--space-3)}.inline-loader-message{font-size:var(--text-sm);color:var(--color-text-muted)}.is-loading{position:relative;min-height:100px}.skeleton-container{display:flex;flex-direction:column;gap:var(--space-2)}.skeleton{background:linear-gradient(90deg,var(--color-border) 25%,var(--color-surface-alt) 50%,var(--color-border) 75%);background-size:200% 100%;animation:skeleton-shimmer 1.5s ease-in-out infinite}.skeleton-text{height:1em;border-radius:var(--radius-sm);width:100%}.skeleton-circle{border-radius:50%}.skeleton-rect{border-radius:var(--radius-md)}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.btn-loading{position:relative;color:transparent!important}.btn-loading:after{content:"";position:absolute;width:16px;height:16px;top:50%;left:50%;margin-left:-8px;margin-top:-8px;border:2px solid transparent;border-top-color:currentColor;border-radius:50%;animation:spin .75s linear infinite}.btn-loading.btn-primary:after{border-top-color:#fff}.btn-loading.btn-secondary:after{border-top-color:var(--color-text-secondary)}.btn-loading.btn-success:after{border-top-color:#fff}.progress-bar{width:100%;height:4px;background:var(--color-border);border-radius:var(--radius-full);overflow:hidden}.progress-bar-fill{height:100%;background:var(--color-navy);border-radius:var(--radius-full);transition:width var(--transition-smooth)}.progress-bar-indeterminate .progress-bar-fill{width:30%;animation:progress-indeterminate 1.5s ease-in-out infinite}@keyframes progress-indeterminate{0%{transform:translate(-100%)}to{transform:translate(400%)}}.pulse-loader{display:flex;gap:var(--space-1);align-items:center}.pulse-dot{width:8px;height:8px;border-radius:50%;background:var(--color-navy);animation:pulse-dot 1.4s ease-in-out infinite both}.pulse-dot:nth-child(1){animation-delay:-.32s}.pulse-dot:nth-child(2){animation-delay:-.16s}@keyframes pulse-dot{0%,80%,to{transform:scale(.6);opacity:.5}40%{transform:scale(1);opacity:1}}@media (prefers-reduced-motion: reduce){.loader-ring{animation:spin 1.4s linear infinite!important}.loader-ring:before{animation:spin 2s linear infinite reverse!important}.skeleton{animation:skeleton-shimmer 1.5s ease-in-out infinite!important}.btn-loading:after{animation:spin .75s linear infinite!important}.progress-bar-indeterminate .progress-bar-fill{animation:progress-indeterminate 1.5s ease-in-out infinite!important}.pulse-dot{animation:pulse-dot 1.4s ease-in-out infinite both!important}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
