/* pro-charts.css — theme-agnostic chart/map styling. Colors from --ch-* / --f-* vars set per theme. */
.ch-area{width:100%;height:34px;display:block;margin-top:8px}
.ch-prog{height:8px;border-radius:6px;background:var(--ch-track);position:relative;margin-top:10px}
.ch-prog>i{position:absolute;inset:0 auto 0 0;border-radius:6px;background:var(--ch-fill);box-shadow:var(--ch-fill-glow,none)}
.ch-prog>u{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--ch-target);border-radius:2px}
.ch-stack{display:flex;height:9px;border-radius:5px;overflow:hidden;margin-top:9px}
.ch-stack>i{display:block}
.ch-donutwrap{display:flex;align-items:center;gap:12px;margin-top:6px}
.ch-dnum{font-family:var(--f-num);font-weight:700;font-size:15px;fill:var(--ch-ink)}
.ch-dleg{display:flex;flex-direction:column;gap:3px;min-width:0}
.ch-dleg>div{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--ch-mut)}
.ch-dleg i{width:8px;height:8px;border-radius:2px;flex:none}
.ch-dleg b{margin-left:auto;color:var(--ch-ink);font-variant-numeric:tabular-nums;font-weight:600;font-family:var(--f-num)}
.ch-d2{display:flex;flex-direction:column;justify-content:center}
.ch-d2v{font-family:var(--f-num);font-weight:700;font-size:19px;color:var(--ch-ink);line-height:1}
.ch-d2l{font-size:10px;color:var(--ch-mut);margin-top:3px;text-transform:uppercase;letter-spacing:.05em}
.ch-ring{display:block}
.ch-vb{display:flex;align-items:stretch;gap:14px;height:60px;margin-top:8px;padding:0 2px}
.ch-vbcol{flex:1;display:flex;flex-direction:column;align-items:center;min-width:0}
.ch-vbtop{flex:1;width:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;min-height:0}
.ch-vbv{font-family:var(--f-num);font-size:11.5px;font-weight:700;color:var(--ch-ink);line-height:1;margin-bottom:3px}
.ch-vbbar{width:66%;max-width:40px;border-radius:3px 3px 0 0;min-height:3px}
.ch-vbc{font-family:var(--f-mono);font-size:8px;color:var(--ch-mut);text-transform:uppercase;letter-spacing:.02em;margin-top:5px;white-space:nowrap}
.ch-hbars{display:flex;flex-direction:column;gap:7px;margin-top:8px}
.ch-hb{display:flex;align-items:center;gap:9px;font-size:11.5px}
.ch-hbn{width:78px;color:var(--ch-mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ch-hbt{flex:1;height:8px;border-radius:5px;background:var(--ch-track);overflow:hidden}
.ch-hbt>i{display:block;height:100%;background:var(--ch-fill);border-radius:5px}
.ch-hb b{width:38px;text-align:right;font-variant-numeric:tabular-nums;color:var(--ch-ink);font-family:var(--f-num);font-weight:600}
.ch-fun{display:flex;flex-direction:column;gap:4px;margin-top:9px}
.ch-frow{display:flex;align-items:center;gap:9px}
.ch-fl{width:82px;font-size:11.5px;color:var(--ch-mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ch-fbwrap{flex:1;display:flex;justify-content:center}
.ch-frow i{height:16px;border-radius:3px;display:block;min-width:6px}
.ch-fv{width:46px;text-align:right;font-family:var(--f-num);font-weight:700;font-size:13px;font-variant-numeric:tabular-nums;color:var(--ch-ink)}
.ch-dual{width:100%;height:52px;display:block;margin-top:6px}
.ch-gi{margin-top:12px}
.ch-gilabels{display:flex;justify-content:space-between;font-size:8px;color:var(--ch-mut);font-family:var(--f-mono);margin-bottom:5px;letter-spacing:.04em}
.ch-gitrack{height:10px;border-radius:6px;position:relative;background:linear-gradient(90deg,#20BD44 0,#20BD44 44%,#E9C250 50%,#E9C250 71%,#FD5656 78%,#FD5656 100%);opacity:.9}
.ch-gimark{position:absolute;top:-2px;width:3px;height:14px;border-radius:2px;transform:translateX(-50%);box-shadow:0 0 0 1.6px var(--ch-panel)}

/* world map */
.worldmap{width:100%;height:100%;display:block}
.wm-base{}
.wm-c{fill:var(--ch-country);stroke:var(--ch-country-s);stroke-width:.4;vector-effect:non-scaling-stroke}
.wm-uzb{fill:var(--ch-uzb-fill);stroke:var(--ch-uzb-s);stroke-width:.9;vector-effect:non-scaling-stroke;filter:var(--ch-uzb-glow,none)}
/* dash in USER units (no non-scaling-stroke): otherwise the fixed-pixel dash breaks into a gap when the map zooms on select. Width is kept constant across zoom by scaling stroke-width in setVB(). */
.wm-arc{fill:none;stroke-linecap:round;stroke-dasharray:var(--len);stroke-dashoffset:var(--len);animation:wmdraw 1.7s cubic-bezier(.4,0,.2,1) forwards;filter:var(--ch-arc-glow,none)}
.wm-c[data-src]{cursor:pointer}
.wm-c.wm-sel{fill-opacity:.5;stroke:var(--ch-node);stroke-width:1;stroke-opacity:.85;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 4px var(--ch-node))}
@keyframes wmdraw{to{stroke-dashoffset:0}}
/* source countries: faint interior wash only. No bright outline — outlines on big/wrapping countries (RUS spans the whole map, USA/Alaska) drew stray lines across the frame. Magnitude lives on the disc, not the fill. */
.wm-inv{fill-opacity:.32}
.wm-node{fill:var(--ch-node);fill-opacity:.82;stroke:#fff;stroke-opacity:.28;stroke-width:.5;vector-effect:non-scaling-stroke;filter:var(--ch-node-glow,none)}
.wm-node0{fill:var(--ch-mut);opacity:.5}
.wm-lab0{opacity:.5}
.wm-lv0{fill:var(--ch-mut)}
.wm-uznode{fill:var(--ch-uzb-node);filter:var(--ch-node-glow,none)}
.wm-uzpulse{fill:none;stroke:var(--ch-uzb-node);stroke-width:.7;opacity:.6;animation:wmping 2.8s ease-out infinite}
@keyframes wmping{0%{r:3;opacity:.6}100%{r:15;opacity:0}}
.wm-lab{font-family:var(--f-mono);font-size:var(--wm-fs,9px);fill:var(--ch-label);paint-order:stroke;stroke:var(--ch-halo);stroke-width:calc(var(--wm-fs,9px)*.34);font-weight:600}
.wm-lv{fill:var(--ch-arc2);font-weight:700}
.wm-uztag{font-family:var(--f-mono);font-size:calc(var(--wm-fs,9px)*.92);font-weight:700;fill:var(--ch-uzb-node);paint-order:stroke;stroke:var(--ch-halo);stroke-width:calc(var(--wm-fs,9px)*.34)}

/* uz choropleth */
.uzmap{width:100%;height:100%;display:block}
.uzmap path{stroke:var(--ch-uz-stroke);stroke-width:.8;cursor:pointer;transition:fill .3s,opacity .1s}
.uzmap path:hover{opacity:.82}
.uz-lab{font-family:var(--f-mono);font-size:7.6px;fill:var(--ch-uz-lab);pointer-events:none;paint-order:stroke;stroke:var(--ch-halo);stroke-width:2px}
