@keyframes spin-smooth{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes pulse-adaptive{0%,to{opacity:1}50%{opacity:.6}}@keyframes skeleton-shimmer{0%{background-position:-468px 0}to{background-position:468px 0}}.loading-spinner{animation:spin-smooth 1s linear infinite;transition:color .2s ease-in-out;color:#3b82f6}.dark .loading-spinner{color:#60a5fa}.loading-pulse{animation:pulse-adaptive 2s cubic-bezier(.4,0,.6,1) infinite}.loading-skeleton{background:linear-gradient(90deg,hsl(var(--muted)) 0,hsl(var(--muted)/.8) 50%,hsl(var(--muted)) 100%);background-size:468px 100%;animation:skeleton-shimmer 1.2s ease-in-out infinite}@media (prefers-color-scheme:dark){.loading-skeleton{background:linear-gradient(90deg,hsl(var(--muted)/.3) 0,hsl(var(--muted)/.6) 50%,hsl(var(--muted)/.3) 100%)}}.dark .loading-skeleton{background:linear-gradient(90deg,hsl(var(--muted)/.3) 0,hsl(var(--muted)/.6) 50%,hsl(var(--muted)/.3) 100%)}.loading-button{transition:all .2s ease-in-out}.loading-button:disabled{opacity:.6;cursor:not-allowed}.status-indicator{transition:background-color .2s ease-in-out,border-color .2s ease-in-out,color .2s ease-in-out}.progress-bar{transition:all .2s ease-in-out}.progress-bar[data-state=indeterminate]{background-image:linear-gradient(45deg,transparent 25%,hsl(var(--primary)/.5) 25%,hsl(var(--primary)/.5) 50%,transparent 50%,transparent 75%,hsl(var(--primary)/.5) 75%);background-size:1rem 1rem;animation:progress-indeterminate 1s linear infinite}@keyframes progress-indeterminate{0%{background-position-x:0}to{background-position-x:1rem}}.loading-overlay{backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);transition:backdrop-filter .2s ease-in-out}@media (max-width:640px){.loading-spinner{transform:scale(.9)}.loading-skeleton{border-radius:.375rem}}@media (prefers-contrast:high){.loading-spinner{color:currentColor}.loading-skeleton{background:currentColor;opacity:.3}}@media (prefers-reduced-motion:reduce){.loading-pulse,.loading-spinner{animation:none}.loading-skeleton{animation:none;background:hsl(var(--muted))}.progress-bar[data-state=indeterminate]{animation:none}}.loading-button:focus-visible{outline:2px solid hsl(var(--ring));outline-offset:2px}.loading-text{transition:color .2s ease-in-out}.dark .loading-text,.loading-text{color:hsl(var(--muted-foreground))}.loading-interactive:hover{background-color:hsl(var(--muted)/.8)}.dark .loading-interactive:hover{background-color:hsl(var(--muted)/.2)}