.spinner-overlay{position:fixed;inset:0;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:10001;animation:fadeIn .2s ease-out}.spinner-overlay.hidden{display:none}.spinner-container{background:#fff;border-radius:16px;padding:40px;box-shadow:0 20px 60px #0000004d;display:flex;flex-direction:column;align-items:center;gap:20px;animation:scaleIn .3s ease-out;min-width:200px}.spinner{width:60px;height:60px;position:relative}.spinner-circle{width:100%;height:100%;border:4px solid #f3f4f6;border-top-color:#2563eb;border-radius:50%;animation:spin .8s linear infinite}.spinner-dots{display:flex;gap:8px;align-items:center;justify-content:center}.spinner-dot{width:12px;height:12px;background:#2563eb;border-radius:50%;animation:dotBounce 1.4s infinite ease-in-out both}.spinner-dot:nth-child(1){animation-delay:-.32s}.spinner-dot:nth-child(2){animation-delay:-.16s}.spinner-dot:nth-child(3){animation-delay:0s}.spinner-pulse{width:60px;height:60px;position:relative}.spinner-pulse:before,.spinner-pulse:after{content:"";position:absolute;inset:0;border:3px solid #2563eb;border-radius:50%;animation:pulse 2s cubic-bezier(.4,0,.2,1) infinite}.spinner-pulse:after{animation-delay:1s}.spinner-ring{width:60px;height:60px;position:relative}.spinner-ring:after{content:"";display:block;width:52px;height:52px;margin:4px;border-radius:50%;border:4px solid #2563eb;border-color:#2563eb transparent #2563eb transparent;animation:ring 1.2s linear infinite}.spinner-dual-ring{width:60px;height:60px}.spinner-dual-ring:after{content:"";display:block;width:52px;height:52px;margin:4px;border-radius:50%;border:5px solid;border-color:#2563eb transparent #10b981 transparent;animation:dualRing 1.2s linear infinite}.spinner-bouncing-balls{display:flex;gap:6px;align-items:flex-end;height:60px}.spinner-ball{width:14px;height:14px;background:#2563eb;border-radius:50%;animation:bounce 1.4s infinite ease-in-out both}.spinner-ball:nth-child(1){animation-delay:-.32s;background:#2563eb}.spinner-ball:nth-child(2){animation-delay:-.16s;background:#3b82f6}.spinner-ball:nth-child(3){animation-delay:0s;background:#60a5fa}.spinner-gradient{width:60px;height:60px;border-radius:50%;background:conic-gradient(from 0deg,#2563eb,#3b82f6,#60a5fa,#93c5fd,#2563eb);animation:spin 1s linear infinite;position:relative}.spinner-gradient:before{content:"";position:absolute;inset:4px;background:#fff;border-radius:50%}.spinner-text{color:#1f2937;font-size:16px;font-weight:500;text-align:center;animation:textPulse 1.5s ease-in-out infinite}.spinner-subtext{color:#6b7280;font-size:13px;text-align:center;margin-top:-8px}.spinner-icon{width:60px;height:60px;border-radius:50%;display:flex;align-items:center;justify-content:center;animation:scaleIn .3s ease-out}.spinner-icon.success{background:#d1fae5;color:#10b981}.spinner-icon.error{background:#fee2e2;color:#ef4444}.spinner-icon svg{width:32px;height:32px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes dotBounce{0%,80%,to{transform:scale(0);opacity:.5}40%{transform:scale(1);opacity:1}}@keyframes pulse{0%{transform:scale(.8);opacity:1}50%{transform:scale(1.2);opacity:.5}to{transform:scale(1.4);opacity:0}}@keyframes ring{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes dualRing{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes bounce{0%,80%,to{transform:translateY(0)}40%{transform:translateY(-30px)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes textPulse{0%,to{opacity:1}50%{opacity:.6}}.spinner-container.theme-success .spinner-circle{border-top-color:#10b981}.spinner-container.theme-success .spinner-dot,.spinner-container.theme-success .spinner-ball{background:#10b981}.spinner-container.theme-success .spinner-pulse:before,.spinner-container.theme-success .spinner-pulse:after{border-color:#10b981}.spinner-container.theme-error .spinner-circle{border-top-color:#ef4444}.spinner-container.theme-error .spinner-dot,.spinner-container.theme-error .spinner-ball{background:#ef4444}.spinner-container.theme-error .spinner-pulse:before,.spinner-container.theme-error .spinner-pulse:after{border-color:#ef4444}.spinner-container.theme-warning .spinner-circle{border-top-color:#f59e0b}.spinner-container.theme-warning .spinner-dot,.spinner-container.theme-warning .spinner-ball{background:#f59e0b}.spinner-container.theme-warning .spinner-pulse:before,.spinner-container.theme-warning .spinner-pulse:after{border-color:#f59e0b}@media (max-width: 768px){.spinner-container{padding:32px 24px;min-width:160px}.spinner{width:50px;height:50px}.spinner-text{font-size:15px}.spinner-subtext{font-size:12px}}@media (prefers-reduced-motion: reduce){.spinner-circle,.spinner-ring:after,.spinner-dual-ring:after,.spinner-gradient{animation-duration:2s}.spinner-dot,.spinner-ball{animation:none}.spinner-pulse:before,.spinner-pulse:after{animation-duration:3s}}
