.spinner .graphic{animation:loading-spinner 1s linear infinite}.spinner p{margin:.5em 0}.spinner.page-loader{display:flex;flex-direction:column;align-items:center}@keyframes loading-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.loading-component{display:flex;align-items:center;justify-content:center;gap:.5rem;text-align:center}.loading-component .loading-spinner{flex-shrink:0}.loading-component .loading-message{animation:loading-message-fade-in 90ms ease-out 50ms both;font-size:1rem;color:var(--color-text-primary,#333)}.loading-component.loading-page{padding:2rem 1rem;min-height:calc(100vh - 200px);flex-direction:column;gap:1rem}.loading-component.loading-page .loading-message{font-size:1.125rem;font-weight:500}.loading-component.loading-inline{padding:.5rem;min-height:auto;gap:.5rem}.loading-component.loading-inline .loading-message{font-size:.875rem}.loading-component.loading-minimal{padding:.25rem;gap:.25rem;min-height:auto}.loading-component.loading-minimal .loading-message{font-size:.875rem}.loading-component.loading-fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;background-color:hsla(0,0%,100%,.9);z-index:1000;flex-direction:column;gap:1rem;min-height:100vh}.loading-component.loading-fullscreen .loading-message{font-size:1.125rem;font-weight:500}@keyframes loading-message-fade-in{0%{opacity:0}to{opacity:1}}@media(prefers-reduced-motion:reduce){.loading-component .loading-message{animation:none}}