.globe3d{background:var(--bg);width:100%;height:100%;position:relative;overflow:hidden}.globe3d-canvas,.globe3d-labels{position:absolute;inset:0}.globe3d-canvas canvas{display:block}.globe3d-labels{pointer-events:none;overflow:hidden}.globe3d .city-label{-webkit-user-select:none;user-select:none;pointer-events:none;width:0;height:0;transition:opacity .25s}.globe3d .city-label>span{font:500 10px/1 var(--font);letter-spacing:.14em;text-transform:uppercase;color:var(--fg);white-space:nowrap;text-shadow:var(--glow);transition:color .2s;position:absolute;top:-5px;left:14px}.globe3d .city-label>span:before{content:"";opacity:.6;border-top:1px solid;width:9px;margin-right:4px;position:absolute;top:50%;right:100%}.globe3d .city-label.primary>span{color:var(--accent-2);font-size:11px;font-weight:700}.globe3d .city-label.selected>span{color:var(--accent-2);font-weight:700}.globe3d .city-logo{height:calc(15px * var(--logo-scale,1));width:auto;max-width:calc(46px * var(--logo-scale,1));object-fit:contain;vertical-align:calc(-3px * var(--logo-scale,1));padding:calc(2px * var(--logo-scale,1)) calc(3px * var(--logo-scale,1));background:var(--logo-chip);border-radius:3px;margin-right:5px;display:inline-block}.globe3d .city-logo.mono{font-size:calc(9px * var(--logo-scale,1));letter-spacing:.08em;font-weight:700;line-height:calc(11px * var(--logo-scale,1));color:var(--logo-ink);padding:calc(2px * var(--logo-scale,1)) calc(4px * var(--logo-scale,1))}.globe3d .city-label .alt,.globe3d .logos-3d .city-logo:not(.mono){display:none}.globe3d .logos-3d .city-label .alt{font-style:normal;display:inline}.globe3d .logos-bare .city-logo{background:0 0}.globe3d .labels-3d .city-label{display:none}.globe3d .city-label .place{letter-spacing:.1em;opacity:.7;margin-top:3px;font-size:9px;font-weight:400;display:none}.globe3d .labels-place .city-label .place:not(:empty){display:block}.globe3d .city-logo.mark{width:calc(20px * var(--logo-scale,1));height:calc(15px * var(--logo-scale,1));padding:0;position:relative}.globe3d .city-logo.mark:before{content:"";inset:calc(2.5px * var(--logo-scale,1));background-color:var(--logo-ink);-webkit-mask:var(--mark) center / contain no-repeat;-webkit-mask:var(--mark) center / contain no-repeat;mask:var(--mark) center / contain no-repeat;position:absolute}.dock{--dock-size:min(20vw, 20vh);z-index:40;width:var(--dock-size);height:var(--dock-size);transition:width .35s cubic-bezier(.4,0,.2,1),height .35s cubic-bezier(.4,0,.2,1);position:fixed}.dock.bottom-right{right:var(--ds-s5,20px);bottom:var(--ds-s5,20px)}.dock.bottom-left{left:var(--ds-s5,20px);bottom:var(--ds-s5,20px)}.dock.top-right{right:var(--ds-s5,20px);top:var(--ds-s5,20px)}.dock.expanded{--dock-size:min(46vw, 62vh)}.dock-frame{border:1px solid var(--ds-line,#dbd7ca);border-radius:var(--ds-r-lg,10px);width:100%;height:100%;box-shadow:var(--ds-shadow-md,0 6px 20px #23261e17);background:var(--ds-raised,#fbfaf5);position:relative;overflow:hidden}.dock[data-theme=cyberpunk] .dock-frame{clip-path:polygon(0 0,calc(100% - 12px) 0,100% 12px,100% 100%,12px 100%,0 calc(100% - 12px));border-color:#00f0ff59;border-radius:0;box-shadow:0 0 24px #00f0ff2e}.dock[data-theme=classic] .dock-frame{border-color:#a0bedc47}.dock-chrome{pointer-events:none;font-family:var(--ds-font-mono,ui-monospace, monospace);flex-direction:column;justify-content:space-between;display:flex;position:absolute;inset:0}.dock-chrome header,.dock-chrome footer{letter-spacing:var(--ds-track-label,.1em);text-transform:uppercase;align-items:center;gap:6px;padding:6px 8px;font-size:9px;display:flex}.dock-chrome footer{justify-content:space-between;position:relative}.dock-chrome header,.dock-chrome footer{text-shadow:0 1px 2px var(--dock-halo,#f4f1eaf2), 0 0 6px var(--dock-halo,#f4f1eaf2)}.dock-chrome h3{letter-spacing:var(--ds-track-label,.1em);color:var(--ds-ink-2,#55584c);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:9px;font-weight:500;overflow:hidden}.dock-chrome .dot{background:var(--ds-pos,#4c7a3e);width:5px;height:5px;box-shadow:0 0 0 3px var(--ds-pos-weak,#e3ead5);border-radius:50%;flex:none}.dock-chrome .meta{color:var(--ds-ink-3,#8b8878);letter-spacing:.02em;text-overflow:ellipsis;white-space:nowrap;font-size:8.5px;overflow:hidden}.dock-chrome .tools{opacity:0;pointer-events:auto;gap:4px;transition:opacity .2s;display:flex;position:absolute;bottom:6px;right:8px}.dock:hover .tools,.dock:focus-within .tools{opacity:1}.dock-chrome button{cursor:pointer;width:18px;height:18px;color:var(--ds-ink-2,#55584c);background:var(--ds-raised,#fbfaf5);border:1px solid var(--ds-line,#dbd7ca);border-radius:var(--ds-r-sm,4px);place-items:center;padding:0;font-size:9px;line-height:1;display:grid}.dock-chrome button:hover{color:var(--ds-ink-inverse,#f1efe4);background:var(--ds-green,#3e5233);border-color:var(--ds-green,#3e5233)}.dock[data-theme=cyberpunk],.dock[data-theme=classic]{--dock-halo:#04030ee6}.dock[data-theme=cyberpunk] h3,.dock[data-theme=classic] h3,.dock[data-theme=cyberpunk] .meta,.dock[data-theme=classic] .meta{color:#c9f7ff}.dock[data-theme=cyberpunk] .dot{background:#ff2fd0;box-shadow:0 0 8px #ff2fd0}.dock[data-theme=cyberpunk] button,.dock[data-theme=classic] button{color:#c9f7ff;background:#060216cc;border-color:#00f0ff59;border-radius:0}.dock[data-theme=cyberpunk] button:hover{color:#04010c;background:#00f0ff}@media (width<=640px){.dock{--dock-size:132px}.dock.expanded{--dock-size:min(88vw, 60vh)}}.dock-chrome button.off{opacity:.5;text-decoration:line-through}.dock-chrome button.on{color:var(--ds-ink-inverse,#f1efe4);background:var(--ds-green,#3e5233);border-color:var(--ds-green,#3e5233)}.dock[data-theme=cyberpunk] .dock-chrome button.on,.dock[data-theme=classic] .dock-chrome button.on{color:#04010c;background:#00f0ff;border-color:#00f0ff}:root{--ds-bg:#e4e0d5;--ds-surface:#f4f1ea;--ds-raised:#fbfaf5;--ds-sunken:#ece8de;--ds-overlay:#1c1e166b;--ds-ink:#23261e;--ds-ink-2:#55584c;--ds-ink-3:#8b8878;--ds-ink-inverse:#f1efe4;--ds-line:#dbd7ca;--ds-line-2:#c6c1b0;--ds-green:#3e5233;--ds-green-hover:#34462b;--ds-green-press:#2a3a23;--ds-green-weak:#e5e9d8;--ds-green-line:#c3ccaf;--ds-panel:#3b4a2c;--ds-panel-ink:#edecdd;--ds-pos:#4c7a3e;--ds-pos-weak:#e3ead5;--ds-neg:#b23b2e;--ds-neg-weak:#f1e2dc;--ds-warn:#a6772b;--ds-warn-weak:#f0e7ce;--ds-info:#3e5c9a;--ds-info-weak:#e2e5ee;--ds-cat-olive:#75742c;--ds-cat-teal:#3c7a70;--ds-cat-blue:#3e5c9a;--ds-cat-plum:#6a4e97;--ds-cat-rust:#a65a32;--ds-font-display:var(--font-display), "Space Grotesk", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--ds-font-mono:var(--font-mono), "Roboto Mono", ui-monospace, "SFMono-Regular", "SF Mono", Menlo, Consolas, monospace;--ds-font-ui:var(--font-ui), "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--ds-text-label:11px;--ds-text-xs:12px;--ds-text-sm:13px;--ds-text-md:15px;--ds-text-lg:18px;--ds-text-xl:22px;--ds-text-2xl:28px;--ds-display:34px;--ds-weight-reg:400;--ds-weight-med:500;--ds-weight-bold:700;--ds-track-label:.1em;--ds-track-tight:.01em;--ds-icon-stroke:1;--ds-r-xs:2px;--ds-r-sm:4px;--ds-r-md:6px;--ds-r-lg:10px;--ds-r-xl:16px;--ds-r-pill:999px;--ds-border:1px solid var(--ds-line);--ds-shadow-sm:0 1px 2px #23261e0d;--ds-shadow-md:0 6px 20px #23261e17;--ds-s1:4px;--ds-s2:8px;--ds-s3:12px;--ds-s4:16px;--ds-s5:20px;--ds-s6:24px;--ds-s8:32px}*{box-sizing:border-box}body{background:var(--ds-bg);color:var(--ds-ink);font-family:var(--ds-font-mono);font-size:var(--ds-text-sm);-webkit-font-smoothing:antialiased;margin:0;line-height:1.5}.page{min-height:100vh}.label{font-size:var(--ds-text-label);text-transform:uppercase;letter-spacing:var(--ds-track-label);color:var(--ds-ink-3)}.topbar{justify-content:space-between;align-items:center;gap:var(--ds-s4);padding:var(--ds-s3) var(--ds-s6);background:var(--ds-surface);border-bottom:var(--ds-border);display:flex}.wordmark{font-family:var(--ds-font-display);font-weight:var(--ds-weight-bold);letter-spacing:.06em;text-transform:uppercase}.wordmark span{font-family:var(--ds-font-mono);font-weight:var(--ds-weight-reg);text-transform:none;letter-spacing:0;color:var(--ds-ink-3);margin-left:var(--ds-s2);font-size:var(--ds-text-xs)}.topbar nav{align-items:center;gap:var(--ds-s2);display:flex}.label.rule{margin-left:var(--ds-s3);padding-left:var(--ds-s3);border-left:var(--ds-border)}.chip{font-family:var(--ds-font-mono);font-size:var(--ds-text-label);text-transform:uppercase;letter-spacing:var(--ds-track-label);padding:5px var(--ds-s3);color:var(--ds-ink-2);background:var(--ds-raised);border:var(--ds-border);border-radius:var(--ds-r-md);cursor:pointer}.chip:hover{background:var(--ds-green-weak);border-color:var(--ds-green-line)}.chip.on{color:var(--ds-ink-inverse);background:var(--ds-green);border-color:var(--ds-green)}main{max-width:1080px;padding:var(--ds-s8) var(--ds-s6) 25vh;margin:0 auto}h1{margin:0 0 var(--ds-s2);font-family:var(--ds-font-display);font-size:var(--ds-display);font-weight:var(--ds-weight-bold);letter-spacing:var(--ds-track-tight)}.lede{max-width:62ch;margin:0 0 var(--ds-s8);color:var(--ds-ink-2)}.kpis{gap:var(--ds-s4);margin-bottom:var(--ds-s8);grid-template-columns:repeat(auto-fit,minmax(190px,1fr));display:grid}.kpi{gap:var(--ds-s1);padding:var(--ds-s4);background:var(--ds-raised);border:var(--ds-border);border-radius:var(--ds-r-lg);flex-direction:column;display:flex}.kpi b{font-size:var(--ds-text-xl);font-weight:var(--ds-weight-med);font-variant-numeric:tabular-nums}.kpi em{font-style:normal;font-size:var(--ds-text-xs);color:var(--ds-ink-3)}.kpi em.pos{color:var(--ds-pos)}.kpi em.neg{color:var(--ds-neg)}.kpi em.warn{color:var(--ds-warn)}.table-wrap{background:var(--ds-raised);border:var(--ds-border);border-radius:var(--ds-r-lg);overflow:hidden}.table-head{padding:var(--ds-s3) var(--ds-s4);background:var(--ds-sunken);border-bottom:var(--ds-border);justify-content:space-between;display:flex}table{border-collapse:collapse;width:100%}th{padding:var(--ds-s2) var(--ds-s4);text-align:left;font-size:var(--ds-text-label);font-weight:var(--ds-weight-med);text-transform:uppercase;letter-spacing:var(--ds-track-label);color:var(--ds-ink-3);border-bottom:var(--ds-border)}td{padding:var(--ds-s3) var(--ds-s4);border-bottom:1px solid var(--ds-line)}tr:last-child td{border-bottom:0}tbody tr:hover{background:var(--ds-green-weak)}tr.primary td{font-weight:var(--ds-weight-med)}.num{font-variant-numeric:tabular-nums;color:var(--ds-ink-2)}.tag{margin-left:var(--ds-s2);letter-spacing:var(--ds-track-label);color:var(--ds-neg);background:var(--ds-neg-weak);border-radius:var(--ds-r-sm);padding:1px 6px;font-size:10px}.right{text-align:right}
