/* L2 Unified Dynamic Loader — shared visual loader for all frontend async states. */
.l2-unified-loader{width:100%;min-height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;padding:22px 16px;box-sizing:border-box;text-align:center;color:#20324a;font-family:Vazirmatn,system-ui,sans-serif;}
.l2-unified-loader--dialog{min-height:300px;padding:28px;}
.l2-unified-loader--compact{min-height:116px;padding:18px 12px;}
.l2-unified-loader__orbit{position:relative;width:84px;height:84px;display:grid;place-items:center;margin-bottom:2px;flex:none}
.l2-unified-loader--dialog .l2-unified-loader__orbit{width:112px;height:112px}
.l2-unified-loader--compact .l2-unified-loader__orbit{width:72px;height:72px}
.l2-unified-loader__ring{position:absolute;inset:0;border-radius:50%;border:2px solid transparent;pointer-events:none;box-sizing:border-box}
.l2-unified-loader__ring--a{border-top-color:#2f6fd0;border-right-color:rgba(47,111,208,.18);animation:l2UnifiedSpin 1.15s linear infinite}
.l2-unified-loader__ring--b{inset:8px;border-bottom-color:#e55353;border-left-color:rgba(229,83,83,.16);animation:l2UnifiedSpinReverse 1.7s linear infinite}
.l2-unified-loader__ring--c{inset:17px;border-top-color:#7aa8e9;border-left-color:rgba(122,168,233,.18);animation:l2UnifiedSpin 2.25s linear infinite}
.l2-unified-loader__core{position:relative;z-index:1;width:46px;height:46px;display:grid;place-items:center;border-radius:15px;background:#fff;box-shadow:0 8px 28px rgba(35,75,126,.15),0 0 0 1px rgba(47,111,208,.08);animation:l2UnifiedFloat 1.9s ease-in-out infinite;overflow:hidden}
.l2-unified-loader--dialog .l2-unified-loader__core{width:56px;height:56px;border-radius:18px}
.l2-unified-loader--compact .l2-unified-loader__core{width:40px;height:40px;border-radius:13px}
.l2-unified-loader__core img{width:30px;height:30px;object-fit:contain;display:block}
.l2-unified-loader--dialog .l2-unified-loader__core img{width:34px;height:34px}
.l2-unified-loader--compact .l2-unified-loader__core img{width:27px;height:27px}
.l2-unified-loader__fallback{font-size:18px;font-weight:950;letter-spacing:-1px;line-height:1;color:#2f6fd0}
.l2-unified-loader__fallback i{font-style:normal;color:#e55353}
.l2-unified-loader__title{margin-top:2px;color:#1e3048;font:900 13px/1.8 Vazirmatn,system-ui,sans-serif}
.l2-unified-loader--dialog .l2-unified-loader__title{font-size:15px}
.l2-unified-loader__desc{max-width:300px;color:#8190a3;font:500 10px/1.9 Vazirmatn,system-ui,sans-serif}
.l2-unified-loader__dots{display:flex;align-items:center;justify-content:center;gap:5px;min-height:8px;margin-top:1px}
.l2-unified-loader__dots i{width:5px;height:5px;border-radius:50%;background:#7aa8e9;animation:l2UnifiedPulse 1s ease-in-out infinite}
.l2-unified-loader__dots i:nth-child(2){animation-delay:.14s}
.l2-unified-loader__dots i:nth-child(3){animation-delay:.28s}
@keyframes l2UnifiedSpin{to{transform:rotate(360deg)}}
@keyframes l2UnifiedSpinReverse{to{transform:rotate(-360deg)}}
@keyframes l2UnifiedFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
@keyframes l2UnifiedPulse{0%,100%{opacity:.3;transform:scale(.78)}50%{opacity:1;transform:scale(1)}}
@media(max-width:640px){.l2-unified-loader{padding-left:12px;padding-right:12px}.l2-unified-loader--dialog{min-height:270px;padding:20px}.l2-unified-loader__desc{max-width:250px}}
@media(prefers-reduced-motion:reduce){.l2-unified-loader__ring,.l2-unified-loader__core,.l2-unified-loader__dots i{animation:none!important}.l2-unified-loader__dots i{opacity:.8}}
