.loading-spinner{display:inline-flex;align-items:center;justify-content:center}.loading-spinner--inline{vertical-align:middle;margin-right:.5rem}.loading-spinner__svg{width:var(--spinner-size, 24px);height:var(--spinner-size, 24px);animation:loading-spinner-rotate 1s linear infinite}.loading-spinner__track{opacity:.2;color:var(--spinner-color, var(--primary, #3B82F6))}.loading-spinner__indicator{color:var(--spinner-color, var(--primary, #3B82F6));animation:loading-spinner-dash 1.5s ease-in-out infinite;transform-origin:center}@keyframes loading-spinner-rotate{to{transform:rotate(360deg)}}@keyframes loading-spinner-dash{0%{stroke-dasharray:1,62.8;stroke-dashoffset:0}50%{stroke-dasharray:31.4,31.4;stroke-dashoffset:-15.7}to{stroke-dasharray:1,62.8;stroke-dashoffset:-62.8}}.loading-overlay-container{position:relative}.loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;background:#ffffffd9;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:10;border-radius:inherit}.loading-overlay__message{font-size:.875rem;color:var(--gray-600, #4B5563)}[data-theme=dark] .loading-overlay,.dark .loading-overlay{background:#111827d9}[data-theme=dark] .loading-overlay__message,.dark .loading-overlay__message{color:var(--gray-400, #9CA3AF)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .loading-overlay{background:#111827d9}:root:not([data-theme=light]) .loading-overlay__message{color:var(--gray-400, #9CA3AF)}}.inline-loading{display:inline-flex;align-items:center;gap:.5rem;color:var(--gray-600, #4B5563)}[data-theme=dark] .inline-loading,.dark .inline-loading{color:var(--gray-400, #9CA3AF)}@media (prefers-reduced-motion: reduce){.loading-spinner__svg{animation:none}.loading-spinner__indicator{animation:none;stroke-dasharray:31.4 31.4}.loading-spinner{animation:loading-spinner-pulse 1.5s ease-in-out infinite}@keyframes loading-spinner-pulse{0%,to{opacity:1}50%{opacity:.5}}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}
