/* StockSphere loader + inline spinner. Needs the markup in loader-*.html / spinner.html */
.ss-loader{--ss-bg:#fff;--ss-fg:#1f2a30;position:fixed;inset:0;z-index:99999;display:flex;align-items:center;justify-content:center;background:var(--ss-bg);color:#30bc95;opacity:1;transition:opacity .4s ease}
@media(prefers-color-scheme:dark){.ss-loader{--ss-bg:#0e1316;--ss-fg:#e6edf0}}
.ss-loader.ss-dark{--ss-bg:#0e1316;--ss-fg:#e6edf0}
.ss-loader.ss-light{--ss-bg:#fff;--ss-fg:#1f2a30}
.ss-loader.ss-contained{position:absolute}
.ss-loader.ss-hide{opacity:0;pointer-events:none}
.ss-wrap{display:flex;flex-direction:column;align-items:center;gap:20px;text-align:center}
.ss-icon{display:block;width:96px;height:96px;overflow:visible}
.ss-spinner{display:inline-block;width:24px;height:24px;vertical-align:-.35em;color:#30bc95}
.ss-text{font:600 13px/1.2 Poppins,"Nunito Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;color:var(--ss-fg)}
.ss-text strong{display:block;margin-bottom:8px;font-size:30px;font-weight:600;letter-spacing:-.02em}
.ss-text b{color:#30bc95}
.ss-text i{font-style:normal;opacity:.5;margin:0 4px}

/* 1.6s loop: draw 0-50%, arrowhead pop 50-69%, glow, hold, fade out */
.ss-icon{animation:ss-fade 1.6s linear infinite}
.ss-draw{stroke-dasharray:1 2;animation:ss-draw 1.6s ease-in-out infinite}
.ss-head{transform-box:fill-box;transform-origin:40% 68%;animation:ss-pop 1.6s linear infinite}
.ss-text{animation:ss-word 1.6s ease-in-out infinite}
@keyframes ss-draw{0%{stroke-dashoffset:1}50%,100%{stroke-dashoffset:0}}
@keyframes ss-pop{
0%,50%{transform:scale(0);animation-timing-function:cubic-bezier(.34,1.56,.64,1)}
69%{transform:scale(1);filter:drop-shadow(0 0 0 #30bc9500)}
78%{filter:drop-shadow(0 0 10px #30bc95)}
88%,100%{transform:scale(1);filter:drop-shadow(0 0 0 #30bc9500)}}
@keyframes ss-fade{0%,87.5%{opacity:1}100%{opacity:0}}
@keyframes ss-word{0%,35%{opacity:0;transform:translateY(6px)}55%,87.5%{opacity:1;transform:none}100%{opacity:0}}

@media(prefers-reduced-motion:reduce){
.ss-draw,.ss-head,.ss-text{animation:none}
.ss-draw{stroke-dashoffset:0}
.ss-icon{animation:ss-soft 2s ease-in-out infinite alternate}}
@keyframes ss-soft{from{opacity:.45}to{opacity:1}}
