:root{--loading-spin-speed:1s;--loading-dot-speed:1.4s;--loading-pulse-speed:1.5s;--loading-shimmer-speed:1.5s;--loading-dot-size:8px;--loading-spinner-size:24px;--loading-color:var(--primary, #6366F1);--loading-bg:rgba(255, 255, 255, 0.9);--loading-shimmer-bg:linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%)}@keyframes spin{from{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes dotPulse{0%,100%,80%{transform:scale(.6);opacity:.5}40%{transform:scale(1);opacity:1}}@keyframes pulse{0%,100%{transform:scale(1);opacity:.7}50%{transform:scale(1.2);opacity:1}}@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{from{opacity:1}to{opacity:0}}@keyframes slideInFromRight{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes slideOutToRight{from{transform:translateX(0);opacity:1}to{transform:translateX(100%);opacity:0}}@keyframes dotFade{0%,100%,70%{opacity:.15}35%{opacity:1}}.animate-spin{animation:spin var(--loading-spin-speed) linear infinite}.animate-pulse{animation:pulse var(--loading-pulse-speed) ease-in-out infinite}.animate-shimmer{animation:shimmer var(--loading-shimmer-speed) linear infinite;background:var(--loading-shimmer-bg);background-size:200% 100%}.animate-fade-in{animation:fadeIn .3s ease-out}.animate-fade-out{animation:fadeOut .3s ease-out}@media (prefers-color-scheme:dark){:root{--loading-bg:rgba(30, 30, 30, 0.9);--loading-shimmer-bg:linear-gradient(90deg, #2a2a2a 25%, #3a3a3a 50%, #2a2a2a 75%)}}.dark-mode{--loading-bg:rgba(30, 30, 30, 0.9);--loading-shimmer-bg:linear-gradient(90deg, #2a2a2a 25%, #3a3a3a 50%, #2a2a2a 75%)}@media (prefers-reduced-motion:reduce){.animate-fade-in,.animate-fade-out,.animate-pulse,.animate-shimmer,.animate-spin,.loading-dots span,.loading-pulse,.loading-skeleton,.loading-spinner,[class*=loading-]{animation-duration:0s!important;animation-iteration-count:1!important;transition-duration:0s!important}}