/* Spinner */
.lds-spinner{display:inline-block;position:relative}.lds-spinner div{animation:lds-spinner 1.2s linear infinite;transform-origin:20px 20px}.lds-spinner div:after{content:"";display:block;position:absolute;top:1px;left:9px;width:2.5px;height:9px;border-radius:20%;background:var(--loader-color,#0d6efd)}.lds-spinner div:nth-child(1){animation-delay:-1.1s;transform:rotate(0deg)}.lds-spinner div:nth-child(2){animation-delay:-1s;transform:rotate(30deg)}.lds-spinner div:nth-child(3){animation-delay:-.9s;transform:rotate(60deg)}.lds-spinner div:nth-child(4){animation-delay:-.8s;transform:rotate(90deg)}.lds-spinner div:nth-child(5){animation-delay:-.7s;transform:rotate(120deg)}.lds-spinner div:nth-child(6){animation-delay:-.6s;transform:rotate(150deg)}.lds-spinner div:nth-child(7){animation-delay:-.5s;transform:rotate(180deg)}.lds-spinner div:nth-child(8){animation-delay:-.4s;transform:rotate(210deg)}.lds-spinner div:nth-child(9){animation-delay:-.3s;transform:rotate(240deg)}.lds-spinner div:nth-child(10){animation-delay:-.2s;transform:rotate(270deg)}.lds-spinner div:nth-child(11){animation-delay:-.1s;transform:rotate(300deg)}.lds-spinner div:nth-child(12){animation-delay:0s;transform:rotate(330deg)}@keyframes lds-spinner{0%{opacity:1}100%{opacity:0}}
/* Bars */
.lds-bars{display:inline-block;position:relative}.lds-bars div{display:inline-block;position:absolute;left:4px;width:4px;background:var(--loader-color,#0d6efd);animation:lds-bars 1.2s cubic-bezier(0,.5,.5,1) infinite;border-radius:2px}.lds-bars div:nth-child(1){left:4px;animation-delay:-.24s}.lds-bars div:nth-child(2){left:12px;animation-delay:-.12s}.lds-bars div:nth-child(3){left:20px;animation-delay:0}.lds-bars div:nth-child(4){left:28px;animation-delay:-.12s}.lds-bars div:nth-child(5){left:36px;animation-delay:-.24s}@keyframes lds-bars{0%,100%{top:4px;height:16px}50%{top:0;height:24px}}
/* Dots */
.lds-dots{display:inline-block;position:relative}.lds-dots div{display:inline-block;position:absolute;width:8px;height:8px;border-radius:50%;background:var(--loader-color,#0d6efd);animation:lds-dots 1.4s ease-in-out infinite both}.lds-dots div:nth-child(1){left:4px;animation-delay:-.32s}.lds-dots div:nth-child(2){left:16px;animation-delay:-.16s}.lds-dots div:nth-child(3){left:28px;animation-delay:0}@keyframes lds-dots{0%,80%,100%{transform:scale(0)}40%{transform:scale(1)}}
/* Flip */
.lds-flip{display:inline-block;position:relative}.lds-flip div{display:inline-block;position:absolute;width:8px;height:8px;border-radius:2px;background:var(--loader-color,#0d6efd);animation:lds-flip 1.2s ease-in-out infinite both}.lds-flip div:nth-child(1){left:4px;animation-delay:-.4s}.lds-flip div:nth-child(2){left:14px;animation-delay:-.2s}.lds-flip div:nth-child(3){left:24px;animation-delay:0}.lds-flip div:nth-child(4){left:34px;animation-delay:-.4s}.lds-flip div:nth-child(5){left:44px;animation-delay:-.2s}@keyframes lds-flip{0%,100%{transform:perspective(20px) rotateY(0deg);opacity:1}50%{transform:perspective(20px) rotateY(180deg);opacity:.3}}
/* Hourglass */
.lds-hourglass{display:inline-block;position:relative}.lds-hourglass:after{content:"";display:block;border-radius:50%;width:0;height:0;margin:4px;box-sizing:border-box;border:16px solid var(--loader-color,#0d6efd);border-color:var(--loader-color,#0d6efd) transparent var(--loader-color,#0d6efd) transparent;animation:lds-hourglass 1.2s infinite}@keyframes lds-hourglass{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}
/* Logo pulse */
.lds-logo{display:inline-flex;flex-direction:column;align-items:center;gap:12px}.lds-logo .logo-pulse{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:var(--loader-color,#0d6efd);animation:logo-pulse 2s ease-in-out infinite;position:relative}.lds-logo .logo-pulse:before{content:'';position:absolute;inset:-6px;border-radius:18px;border:2px solid var(--loader-color,#0d6efd);opacity:.3;animation:logo-ring 2s ease-in-out infinite}.lds-logo .logo-pulse svg{width:24px;height:24px;color:#fff}.lds-logo .logo-text{font-size:11px;font-weight:600;letter-spacing:1px;color:var(--loader-color,#0d6efd);animation:logo-fade 2s ease-in-out infinite}@keyframes logo-pulse{0%,100%{transform:scale(1);box-shadow:0 0 0 0 rgba(13,110,253,.4)}50%{transform:scale(1.08);box-shadow:0 0 0 10px rgba(13,110,253,0)}}@keyframes logo-ring{0%,100%{transform:scale(1);opacity:.3}50%{transform:scale(1.15);opacity:.1}}@keyframes logo-fade{0%,100%{opacity:.4}50%{opacity:1}}
/* Orbit */
.lds-orbit{display:inline-block;position:relative;width:40px;height:40px}.lds-orbit .orbit-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:6px;height:6px;border-radius:50%;background:var(--loader-color,#0d6efd)}.lds-orbit .orbit-dot{position:absolute;width:4px;height:4px;border-radius:50%;background:var(--loader-color,#0d6efd);top:50%;left:50%;animation:orbit-spin 1.5s linear infinite}.lds-orbit .orbit-dot:nth-child(2){animation-delay:-.5s;opacity:.6;width:3px;height:3px}.lds-orbit .orbit-dot:nth-child(3){animation-delay:-1s;opacity:.3;width:2px;height:2px}@keyframes orbit-spin{0%{transform:translate(-50%,-50%) rotate(0deg) translateX(16px) rotate(0deg)}100%{transform:translate(-50%,-50%) rotate(360deg) translateX(16px) rotate(-360deg)}}
/* Progress */
.lds-progress{display:inline-block;position:relative;width:120px;height:4px;background:rgba(0,0,0,.08);border-radius:4px;overflow:hidden}.lds-progress div{position:absolute;top:0;left:0;height:100%;border-radius:4px;background:var(--loader-color,#0d6efd);animation:lds-progress 2s ease-in-out infinite;width:0}@keyframes lds-progress{0%{left:-30%;width:30%}50%{width:60%}100%{left:130%;width:30%}}
/* Pulse */
.lds-pulse{display:inline-block;position:relative}.lds-pulse div{display:inline-block;position:absolute;left:4px;width:8px;background:var(--loader-color,#0d6efd);animation:lds-pulse 1.2s cubic-bezier(0,.5,.5,1) infinite;border-radius:4px}.lds-pulse div:nth-child(1){left:4px;animation-delay:-.24s}.lds-pulse div:nth-child(2){left:16px;animation-delay:-.12s}.lds-pulse div:nth-child(3){left:28px;animation-delay:0}.lds-pulse div:nth-child(4){left:40px;animation-delay:-.12s}.lds-pulse div:nth-child(5){left:52px;animation-delay:-.24s}@keyframes lds-pulse{0%,100%{top:4px;height:32px}50%{top:12px;height:16px}}
/* Ring */
.lds-ring{display:inline-block;position:relative}.lds-ring div{box-sizing:border-box;display:block;position:absolute;width:24px;height:24px;margin:4px;border:3px solid var(--loader-color,#0d6efd);border-radius:50%;animation:lds-ring 1.2s cubic-bezier(.5,0,.5,1) infinite;border-color:var(--loader-color,#0d6efd) transparent transparent transparent}.lds-ring div:nth-child(1){animation-delay:-.45s}.lds-ring div:nth-child(2){animation-delay:-.3s}.lds-ring div:nth-child(3){animation-delay:-.15s}@keyframes lds-ring{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}
/* Ripple */
.lds-ripple{display:inline-block;position:relative}.lds-ripple div{position:absolute;border:2px solid var(--loader-color,#0d6efd);opacity:1;border-radius:50%;animation:lds-ripple 1.5s cubic-bezier(0,.2,.8,1) infinite}.lds-ripple div:nth-child(2){animation-delay:-.75s}@keyframes lds-ripple{0%{top:18px;left:18px;width:0;height:0;opacity:1}100%{top:-2px;left:-2px;width:40px;height:40px;opacity:0}}
/* Square */
.lds-square{display:inline-block;position:relative}.lds-square div{display:inline-block;position:absolute;left:4px;width:8px;background:var(--loader-color,#0d6efd);animation:lds-square 1.2s cubic-bezier(0,.5,.5,1) infinite;border-radius:1px}.lds-square div:nth-child(1){left:4px;animation-delay:-.24s}.lds-square div:nth-child(2){left:12px;animation-delay:-.12s}.lds-square div:nth-child(3){left:20px;animation-delay:0}.lds-square div:nth-child(4){left:28px;animation-delay:-.12s}.lds-square div:nth-child(5){left:36px;animation-delay:-.24s}@keyframes lds-square{0%,100%{top:4px;height:24px}50%{top:12px;height:8px}}
/* Scale helpers */
.loader-sm .lds-spinner,.loader-sm .lds-pulse,.loader-sm .lds-dots,.loader-sm .lds-ripple,.loader-sm .lds-bars,.loader-sm .lds-square,.loader-sm .lds-ring,.loader-sm .lds-hourglass,.loader-sm .lds-progress,.loader-sm .lds-logo,.loader-sm .lds-flip,.loader-sm .lds-orbit{transform:scale(.6)}.loader-lg .lds-spinner,.loader-lg .lds-pulse,.loader-lg .lds-dots,.loader-lg .lds-ripple,.loader-lg .lds-bars,.loader-lg .lds-square,.loader-lg .lds-ring,.loader-lg .lds-hourglass,.loader-lg .lds-progress,.loader-lg .lds-logo,.loader-lg .lds-flip,.loader-lg .lds-orbit{transform:scale(1.4)}
