:root{--bg:#0d1013;--glass:#13161bc2;--glass-solid:#15181df2;--raise:#ffffff0a;--hover:#ffffff0f;--press:#ffffff1a;--line:#ffffff12;--line-2:#ffffff21;--ink:#eef1f4;--ink-2:#aeb6bf;--ink-3:#737c87;--down:#ff7a59;--up:#63adff;--warn:#f2b84b;--ok:#53c48a;--r-xl:18px;--r:12px;--r-sm:8px;--ease:cubic-bezier(.16, 1, .3, 1);--shadow:0 18px 40px -18px #000000b3, 0 2px 8px #00000040;--font:var(--font-geist), var(--font-sans), "Noto Sans TC", "Microsoft JhengHei", "PingFang TC", system-ui, sans-serif;--mono:var(--font-mono), ui-monospace, "Cascadia Mono", monospace;--pl:384px;--pr:12px;--pb:12px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:var(--ink);font-family:var(--font)}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;margin:0;overflow:hidden}body{-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums;font-size:13.5px;line-height:1.5}button,input,select{font:inherit;color:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}h1,h2,h3,p{margin:0}:focus-visible{outline-offset:2px;border-radius:8px;outline:2px solid #ffffffb3}::selection{background:#fff3}kbd{font-family:var(--mono);color:var(--ink-3);border:1px solid var(--line-2);white-space:nowrap;background:#ffffff08;border-bottom-width:2px;border-radius:5px;padding:0 5px;font-size:10.5px;line-height:16px}.skip{z-index:100;background:var(--glass-solid);border-radius:6px;padding:6px 10px;position:fixed;top:8px;left:-999px}.skip:focus{left:8px}.icon{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:16px;height:16px}.glass{background:var(--glass);-webkit-backdrop-filter:blur(20px)saturate(1.35);backdrop-filter:blur(20px)saturate(1.35);border:1px solid var(--line);box-shadow:inset 0 1px 0 #ffffff0d, var(--shadow)}.app{position:fixed;inset:0}.stage{background:var(--bg);position:absolute;inset:0}.stage .map{position:absolute;inset:0}.maplibregl-canvas-container.maplibregl-interactive{cursor:crosshair}.maplibregl-canvas-container.maplibregl-interactive:active{cursor:grabbing}.btn{border-radius:var(--r);height:38px;color:var(--ink);border:1px solid var(--line);background:var(--glass);transition:background .25s var(--ease), border-color .25s var(--ease), transform .15s var(--ease), opacity .2s;justify-content:center;align-items:center;gap:7px;padding:0 14px;font-weight:550;display:inline-flex}.btn:hover{border-color:var(--line-2);background:#262a31d9}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.35;cursor:default;transform:none}.btn.icon-only{width:38px;padding:0}.btn.solid{background:var(--ink);color:#0d1013;border-color:var(--ink)}.btn.solid:hover{background:#fff}.btn.ghost{background:0 0}.btn.ghost:hover{background:var(--hover)}.btn.sm{border-radius:9px;height:30px;padding:0 11px;font-size:12.5px}.icon-btn{width:30px;height:30px;color:var(--ink-3);transition:background .2s var(--ease), color .2s var(--ease), transform .15s var(--ease);background:0 0;border:0;border-radius:9px;flex:none;place-items:center;display:grid}.icon-btn:hover,.icon-btn.on{background:var(--hover);color:var(--ink)}.icon-btn:active{transform:scale(.92)}.seg{border:1px solid var(--line);background:#00000047;border-radius:11px;gap:2px;padding:3px;display:inline-flex}.seg button{color:var(--ink-2);white-space:nowrap;transition:background .25s var(--ease), color .25s var(--ease);background:0 0;border:0;border-radius:8px;padding:5px 13px;font-weight:500}.seg button:hover{color:var(--ink)}.seg button.on{color:var(--ink);background:#ffffff1f;font-weight:600;box-shadow:inset 0 1px #ffffff14}.seg.full{width:100%;display:flex}.seg.full button{flex:1;padding:6px 4px;font-size:12.5px}.topbar{z-index:30;border-radius:15px;align-items:center;gap:14px;height:48px;padding:0 6px 0 10px;display:flex;position:absolute;top:12px;left:12px}.brand{align-items:center;gap:10px;display:flex}.brand .mark{width:32px;height:32px;box-shadow:0 0 0 1px var(--line-2);border-radius:8px;display:block}.brand .mark svg{border-radius:8px;display:block}.brand-text{align-items:baseline;gap:6px;display:flex}.brand-text b{letter-spacing:.04em;font-size:15.5px;font-weight:700}.brand-text em{color:var(--ink-2);letter-spacing:-.01em;font-size:13px;font-style:normal;font-weight:500}.top-actions{z-index:30;gap:8px;display:flex;position:absolute;top:12px;right:12px}.top-actions .btn{border-radius:15px;height:48px;padding:0 16px}.top-actions .btn.icon-only{width:48px}.search-btn{height:48px;color:var(--ink-3);min-width:260px;transition:border-color .25s var(--ease), color .25s var(--ease);border-radius:15px;align-items:center;gap:10px;padding:0 12px 0 15px;display:flex}.search-btn span{text-align:left;flex:1}.search-btn:hover{color:var(--ink-2);border-color:var(--line-2)}.panel{z-index:20;border-radius:var(--r-xl);width:360px;transition:transform .5s var(--ease), opacity .35s var(--ease);flex-direction:column;display:flex;position:absolute;top:72px;bottom:12px;left:12px;overflow:hidden}.panel.closed{opacity:0;pointer-events:none;transform:translate(calc(-100% - 24px))}.panel-toggle{z-index:21;top:84px;left:calc(var(--pl) - 6px);width:26px;height:40px;color:var(--ink-3);transition:left .5s var(--ease), color .2s;border-left:0;border-radius:0 10px 10px 0;place-items:center;padding:0;display:grid;position:absolute}.panel-toggle:hover{color:var(--ink)}.panel-toggle.closed{left:0}.tabs{border:1px solid var(--line);background:#00000047;border-radius:11px;grid-template-columns:repeat(3,1fr);margin:10px 10px 0;padding:3px;display:grid;position:relative}.tabs button{z-index:1;color:var(--ink-3);transition:color .25s var(--ease);background:0 0;border:0;justify-content:center;align-items:center;gap:6px;padding:6px 0;font-weight:550;display:flex;position:relative}.tabs button:hover,.tabs button.on{color:var(--ink)}.tab-ink{width:calc(33.3333% - 2px);transition:transform .45s var(--ease);background:#ffffff1c;border-radius:8px;position:absolute;top:3px;bottom:3px;left:3px;box-shadow:inset 0 1px #ffffff14}.count{background:var(--down);color:#1a0d09;min-width:18px;height:18px;font-size:11px;font-weight:700;font-family:var(--mono);border-radius:9px;place-items:center;padding:0 5px;display:grid}.panel-body{scrollbar-width:thin;scrollbar-color:#ffffff1f transparent;animation:fade-up .4s var(--ease);flex:1;padding:16px 16px 20px;overflow-y:auto}.panel-foot{border-top:1px solid var(--line);color:var(--ink-3);padding:10px 16px 12px;font-size:11.5px;line-height:1.55}@keyframes fade-up{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.area-head h1{letter-spacing:.01em;font-size:24px;font-weight:700;line-height:1.2}.area-head p{color:var(--ink-3);margin-top:4px;font-size:12px}.kpis{grid-template-columns:1fr 1fr;gap:8px;margin:14px 0 22px;display:grid}.kpi{border-radius:var(--r);background:var(--raise);border:1px solid var(--line);flex-direction:column;gap:1px;padding:11px 12px 10px;display:flex}.kpi span{color:var(--ink-3);font-size:11.5px}.kpi b{letter-spacing:-.02em;align-items:baseline;gap:4px;font-size:23px;font-weight:650;line-height:1.25;display:flex}.kpi b small{color:var(--ink-3);letter-spacing:0;font-size:12px;font-weight:500}.kpi em{color:var(--ink-3);white-space:nowrap;text-overflow:ellipsis;font-size:11px;font-style:normal;overflow:hidden}b.down{color:var(--down)}b.up{color:var(--up)}b.ok{color:var(--ok)}.section-title{color:var(--ink-2);letter-spacing:.06em;align-items:center;gap:8px;margin:22px 0 10px;font-size:12px;font-weight:600;display:flex}.section-title:first-child{margin-top:0}.section-title span{font-family:var(--mono);color:var(--ink-3);font-size:11px;font-weight:500}.lede{color:var(--ink-3);text-wrap:pretty;margin:0 0 12px;font-size:12px;line-height:1.65}.fine{color:var(--ink-3);margin-top:8px;font-size:11.5px;line-height:1.6}.empty{text-align:center;color:var(--ink-3);border:1px dashed var(--line-2);border-radius:var(--r);padding:22px 14px;font-size:12.5px}.error-box{border-radius:var(--r-sm);color:var(--down);background:#ff7a591f;margin-bottom:12px;padding:10px 12px;font-size:12.5px}.skeleton{flex-direction:column;gap:10px;display:flex}.skeleton i,.skeleton .kpis i{background:linear-gradient(90deg,#ffffff0a 25%,#ffffff17 50%,#ffffff0a 75%) 0 0/300% 100%;border-radius:8px;height:14px;animation:1.4s linear infinite shimmer;display:block}.skeleton .kpis{margin:4px 0 8px}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-200% 0}}.findings{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.findings li{animation:fade-up .45s var(--ease) both;animation-delay:calc(var(--i) * 35ms)}.findings button{text-align:left;border-radius:var(--r);width:100%;transition:background .2s var(--ease), border-color .2s var(--ease);background:0 0;border:1px solid #0000;align-items:flex-start;gap:11px;padding:10px;display:flex}.findings button:hover{background:var(--hover);border-color:var(--line)}.findings button:active{background:var(--press)}.badge{color:#0d1013;width:22px;height:22px;font-size:11.5px;font-weight:700;font-family:var(--mono);border-radius:7px;flex:none;place-items:center;margin-top:1px;display:grid}.findings .body{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.findings .meta{color:var(--ink-3);letter-spacing:.04em;font-size:11px}.findings b{font-size:13.5px;font-weight:600;line-height:1.4}.findings .text{color:var(--ink-3);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12px;line-height:1.55;display:-webkit-box;overflow:hidden}.val{font-family:var(--mono);flex:none;padding-top:2px;font-size:12.5px;font-weight:600}.val.down{color:var(--down)}.val.up{color:var(--up)}.chips{scrollbar-width:none;gap:6px;margin-bottom:10px;padding-bottom:2px;display:flex;overflow-x:auto}.chips button{border:1px solid var(--line);background:var(--raise);color:var(--ink-2);transition:all .2s var(--ease);white-space:nowrap;border-radius:9px;flex:none;align-items:center;gap:7px;padding:5px 10px;font-size:12.5px;display:inline-flex}.chips button:hover{border-color:var(--line-2);color:var(--ink)}.chips button.on{background:var(--ink);border-color:var(--ink);color:#0d1013;font-weight:600}.chips i{border-radius:2px;width:12px;height:3px}.status-filter{grid-template-columns:repeat(4,1fr);gap:4px;margin-bottom:10px;display:grid}.status-filter button{border:1px solid var(--line);color:var(--ink-3);transition:all .2s var(--ease);white-space:nowrap;background:0 0;border-radius:9px;justify-content:center;align-items:center;gap:5px;padding:6px 4px;font-size:11.5px;display:flex}.status-filter button b{font-family:var(--mono);color:var(--ink-2);font-weight:600}.status-filter button:hover{color:var(--ink);background:var(--hover)}.status-filter button.on{color:var(--ink);border-color:var(--line-2);background:#ffffff1a}.light{border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.light.alert{background:var(--down);box-shadow:0 0 0 3px #ff7a592e,0 0 10px #ff7a5999}.light.watch{background:var(--warn);box-shadow:0 0 0 3px #f2b84b26}.light.ok{background:var(--ok);box-shadow:0 0 0 3px #53c48a1f}.list-tools{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:6px;display:flex}.select{color:var(--ink-3);align-items:center;gap:6px;font-size:12px;display:inline-flex;position:relative}.select select{appearance:none;border:1px solid var(--line);background:var(--raise);color:var(--ink);cursor:pointer;border-radius:9px;padding:5px 28px 5px 10px;font-size:12.5px}.select select:hover{border-color:var(--line-2)}.select select option{background:#1b1f25}.select .icon{pointer-events:none;width:13px;height:13px;color:var(--ink-3);position:absolute;right:8px}.sections{margin:0 -6px;padding:0;list-style:none}.sections button{text-align:left;width:100%;transition:background .15s var(--ease);background:0 0;border:0;border-radius:10px;grid-template-rows:auto auto;grid-template-columns:14px 1fr auto;align-items:center;gap:1px 10px;padding:9px 8px;display:grid}.sections li+li button{border-top:1px solid var(--line);border-radius:0}.sections li:hover+li button,.sections li:hover button{border-color:#0000}.sections button:hover{background:var(--hover);border-radius:10px}.sections .where b{margin-right:7px;font-size:13px;font-weight:600}.sections .where em{color:var(--ink-3);font-size:12px;font-style:normal;font-family:var(--mono)}.sections .nums{font-size:12.5px;font-weight:600;font-family:var(--mono);gap:10px;display:flex}.sections .muted{color:var(--ink-3);font-weight:500}.sections .why{color:var(--ink-3);grid-column:2/4;font-size:11.5px}.val-card{border:1px solid var(--line);border-radius:var(--r);background:var(--raise);margin-bottom:8px;padding:12px}.val-head{justify-content:space-between;align-items:baseline;margin-bottom:8px;display:flex}.val-head b{font-size:13px;font-family:var(--mono);font-weight:600}.val-head em{color:var(--ink-3);font-size:12px;font-style:normal}.val-grid{grid-template-columns:1fr 132px;align-items:center;gap:10px;display:grid}.stats2{grid-template-columns:1fr 1fr;gap:6px;display:grid}.val-grid .stats2{grid-template-columns:1fr}.stats2>div,.stats3>div{flex-direction:column;display:flex}.stats2 span,.stats3 span{color:var(--ink-3);font-size:11.5px}.stats2 b{letter-spacing:-.02em;font-size:21px;font-weight:650;line-height:1.25}.stats2 em,.stats3 em{color:var(--ink-3);font-size:11px;font-style:normal}.scatter{width:132px;height:132px;display:block}.scatter .frame{fill:#0003;stroke:var(--line)}.scatter .diag{stroke:var(--ink-3);stroke-dasharray:3 3}.scatter .axis0{stroke:var(--line-2)}.scatter circle{fill:var(--ink);fill-opacity:.85;stroke:#0d1013;stroke-width:1px}.scatter text{fill:var(--ink-3);font-size:9px;font-family:var(--mono)}.method{color:var(--ink-2);flex-direction:column;gap:10px;margin:0;padding:0;font-size:12.5px;line-height:1.6;list-style:none;display:flex}.method b{color:var(--ink);font-size:12.5px;display:block}.dock{z-index:15;left:var(--pl);bottom:var(--pb);width:318px;transition:left .5s var(--ease), bottom .5s var(--ease);position:absolute}.dock-card{border-radius:16px;padding:8px 12px 10px}.dock-head{align-items:center;gap:2px;margin:0 -4px 6px;display:flex}.layer-pick{text-align:left;min-width:0;transition:background .2s var(--ease);background:0 0;border:0;border-radius:9px;flex:1;align-items:center;gap:8px;padding:6px 8px;font-size:13.5px;font-weight:600;display:flex}.layer-pick span{white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.layer-pick .icon:last-child{width:14px;height:14px;color:var(--ink-3)}.layer-pick:hover,.layer-pick.on{background:var(--hover)}.legend{padding:0 2px}.ramp{border-radius:4px;height:8px;box-shadow:inset 0 0 0 1px #ffffff0f}.ramp-ticks{color:var(--ink-2);font-size:11px;font-family:var(--mono);justify-content:space-between;margin-top:4px;display:flex}.ramp-note{color:var(--ink-3);justify-content:space-between;gap:8px;font-size:11px;display:flex}.cats{color:var(--ink-2);gap:3px;max-height:150px;margin:0;padding:0 2px;font-size:11.5px;list-style:none;display:grid;overflow-y:auto}.cats li{align-items:center;gap:7px;display:flex}.cats i{border-radius:3px;flex:none;width:10px;height:10px}.desc{border-top:1px solid var(--line);color:var(--ink-2);animation:fade-up .3s var(--ease);margin-top:8px;padding-top:8px;font-size:12px;line-height:1.6}.opacity{color:var(--ink-3);align-items:center;gap:10px;margin-top:9px;padding:0 2px;font-size:11.5px;display:flex}.opacity input{appearance:none;cursor:pointer;background:linear-gradient(90deg, #ffffff8c var(--v), #ffffff1f var(--v));border-radius:2px;flex:1;height:4px}.opacity input::-webkit-slider-thumb{appearance:none;background:var(--ink);width:14px;height:14px;transition:transform .15s var(--ease);border-radius:50%;box-shadow:0 1px 4px #00000080}.opacity input::-webkit-slider-thumb:hover{transform:scale(1.2)}.opacity input::-moz-range-thumb{background:var(--ink);border:0;border-radius:50%;width:14px;height:14px}.popover{background:var(--glass-solid);transform-origin:0 100%;width:100%;max-height:min(520px,100dvh - 200px);animation:pop .35s var(--ease);scrollbar-width:thin;border-radius:16px;padding:6px;position:absolute;bottom:calc(100% + 8px);left:0;overflow-y:auto}@keyframes pop{0%{opacity:0;transform:translateY(8px)scale(.97)}to{opacity:1;transform:none}}.pop-group{padding:6px 6px 8px}.pop-group+.pop-group{border-top:1px solid var(--line)}.pop-group h3{color:var(--ink-3);letter-spacing:.06em;margin:2px 4px 6px;font-size:11px;font-weight:600}.pop-row{text-align:left;width:100%;color:var(--ink-2);transition:background .15s var(--ease), color .15s;background:0 0;border:0;border-radius:9px;align-items:center;gap:10px;padding:7px 8px;display:flex}.pop-row:hover{background:var(--hover);color:var(--ink)}.pop-row.on{color:var(--ink);background:#ffffff1a;font-weight:600}.pop-row .name{flex:1;font-size:12.5px;line-height:1.35}.swatch{border-radius:3px;flex:none;width:30px;height:8px;box-shadow:inset 0 0 0 1px #ffffff14}.toggle{cursor:pointer;border-radius:8px;align-items:center;gap:10px;padding:6px 4px;display:flex}.toggle:hover{background:var(--hover)}.toggle input{opacity:0;pointer-events:none;position:absolute}.toggle .track{width:28px;height:16px;transition:background .25s var(--ease);background:#ffffff24;border-radius:8px;flex:none;position:relative}.toggle .track:after{content:"";width:12px;height:12px;transition:transform .3s var(--ease), background .25s;background:#c9ced4;border-radius:50%;position:absolute;top:2px;left:2px}.toggle input:checked+.track{background:var(--ink)}.toggle input:checked+.track:after{background:#0d1013;transform:translate(12px)}.toggle input:focus-visible+.track{outline-offset:2px;outline:2px solid #ffffffb3}.toggle .label{color:var(--ink);flex-direction:column;font-size:12.5px;line-height:1.3;display:flex}.toggle .label em{color:var(--ink-3);font-size:11px;font-style:normal}.routes{color:var(--ink-2);flex-wrap:wrap;gap:4px 12px;margin:8px 4px 0;font-size:11.5px;display:flex}.routes span{align-items:center;gap:6px;display:inline-flex}.routes i{border-radius:2px;flex:none;width:12px;height:3px}.map-ctrl{z-index:15;right:var(--pr);bottom:var(--pb);transition:right .5s var(--ease), bottom .5s var(--ease);border-radius:13px;flex-direction:column;display:flex;position:absolute;overflow:hidden}.map-ctrl button{width:38px;height:36px;color:var(--ink-2);background:0 0;border:0;place-items:center;transition:background .2s,color .2s;display:grid}.map-ctrl button+button{border-top:1px solid var(--line)}.map-ctrl button:hover{background:var(--hover);color:var(--ink)}.map-ctrl button:active{background:var(--press)}.maplibregl-ctrl-bottom-right{right:calc(var(--pr) + 44px);bottom:calc(var(--pb) - 10px);transition:right .5s var(--ease), bottom .5s var(--ease)}.maplibregl-ctrl-scale{font-family:var(--mono);color:var(--ink-2)!important;background:#0d10138c!important;border-color:#ffffff73!important;font-size:10.5px!important}.maplibregl-ctrl-attrib{color:var(--ink-3)!important;background:#0d101399!important;font-size:10px!important}.maplibregl-ctrl-attrib a{color:var(--ink-2)!important}.maplibregl-ctrl-attrib.maplibregl-compact{min-height:22px}.maplibregl-ctrl-attrib-button{filter:invert()opacity(.6)}.readout{z-index:12;pointer-events:none;opacity:0;border:1px solid var(--line-2);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);white-space:nowrap;will-change:transform;background:#0d1013d1;border-radius:9px;align-items:baseline;gap:6px;padding:5px 9px;transition:opacity .15s;display:flex;position:absolute;top:0;left:0}.readout b{font-family:var(--mono);color:var(--ink);font-size:14px;font-weight:600}.readout b.down{color:var(--down)}.readout b.up{color:var(--up)}.readout span{color:var(--ink-2);font-size:11px;font-family:var(--mono)}.readout em{color:var(--ink-3);font-size:10.5px;font-style:normal}.pulse-marker{pointer-events:none;width:16px;height:16px;position:relative}.pulse-marker b{background:#fff;border-radius:50%;position:absolute;inset:3px;box-shadow:0 0 0 2px #0d1013,0 0 12px #fff9}.pulse-marker i{animation:ring 2.2s var(--ease) infinite;border:2px solid #ffffffd9;border-radius:50%;position:absolute;inset:0}.pulse-marker i+i{animation-delay:1.1s}@keyframes ring{0%{opacity:1;transform:scale(.6)}to{opacity:0;transform:scale(3.4)}}.tp-popup .maplibregl-popup-content{font-family:var(--font);color:var(--ink);border:1px solid var(--line-2);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#111419f0;border-radius:11px;padding:9px 12px;font-size:12px;line-height:1.55}.tp-popup .maplibregl-popup-tip{display:none}.tip b{margin-bottom:3px;font-size:12.5px;font-weight:600;display:block}.tip p{color:var(--ink-2);font-family:var(--font)}.tip p span{color:var(--ink-3);margin-right:8px}.tip em{color:var(--ink-3);margin-top:4px;font-size:11px;font-style:normal;display:block}.loading{top:72px;left:calc(var(--pl) + (100vw - var(--pl) - var(--pr)) / 2);z-index:25;color:var(--ink-2);animation:fade-up .3s var(--ease);border-radius:20px;align-items:center;gap:9px;padding:7px 14px;font-size:12.5px;display:flex;position:absolute;transform:translate(-50%)}.spinner{border:2px solid #ffffff26;border-top-color:var(--ink);border-radius:50%;width:13px;height:13px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.hint{z-index:14;bottom:calc(var(--pb) + 4px);left:calc(var(--pl) + 330px);right:calc(var(--pr) + 52px);width:max-content;max-width:calc(100vw - var(--pl) - var(--pr) - 400px);color:var(--ink-2);pointer-events:none;animation:fade-up .6s var(--ease) .6s both;white-space:nowrap;border-radius:20px;align-items:center;gap:7px;margin:0 auto;padding:7px 14px;font-size:12px;display:flex;position:absolute;overflow:hidden}.hint span{color:var(--ink-3)}.hint .icon{width:14px;height:14px}.toast{z-index:60;animation:fade-up .3s var(--ease);border-radius:12px;max-width:80%;padding:9px 15px;font-size:13px;position:absolute;top:72px;left:50%;transform:translate(-50%)}.caption-wrap{z-index:26;top:72px;left:var(--pl);right:var(--pr);pointer-events:none;transition:left .5s var(--ease), right .5s var(--ease);justify-content:center;padding:0 12px;display:flex;position:absolute}.caption{pointer-events:auto;width:min(580px,100%);animation:fade-up .5s var(--ease);border-radius:16px;padding:13px 16px 12px}.caption-head{align-items:center;gap:12px;display:flex}.caption .step{font-family:var(--mono);color:var(--ink);white-space:nowrap;font-size:13px;font-weight:600}.caption .step i{color:var(--ink-3);margin-left:3px;font-style:normal;font-weight:500}.caption-head b{letter-spacing:.01em;flex:1;font-size:15.5px}.caption p{color:var(--ink-2);text-wrap:pretty;margin:8px 0 10px;font-size:13.5px;line-height:1.75}.caption-nav{align-items:center;gap:8px;display:flex}.present .caption-nav{margin-top:8px}.caption-nav .dots{gap:5px;margin-right:auto;display:flex}.caption-nav .dots i{width:6px;height:6px;transition:width .45s var(--ease), background .45s var(--ease);background:#ffffff29;border-radius:3px}.caption-nav .dots i.past{background:#fff6}.caption-nav .dots i.on{background:var(--ink);width:22px}.caption-nav .btn{border-radius:9px;height:32px;font-size:12.5px}.inspector{z-index:22;border-radius:var(--r-xl);scrollbar-width:thin;scrollbar-color:#ffffff1f transparent;background:var(--glass-solid);opacity:0;pointer-events:none;width:404px;transition:transform .55s var(--ease), opacity .35s var(--ease);position:absolute;top:72px;bottom:12px;right:12px;overflow-y:auto;transform:translate(calc(100% + 24px))}.inspector.open{opacity:1;pointer-events:auto;transform:none}.ins-body{animation:fade-up .4s var(--ease);padding:16px 18px 18px}.ins-head{justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:12px;display:flex}.ins-head .kicker{color:var(--ink-3);letter-spacing:.06em;font-size:11.5px;font-weight:600}.ins-head h2{letter-spacing:-.01em;margin-top:2px;font-size:21px;font-weight:650;line-height:1.3}.ins-head p{color:var(--ink-3);margin-top:5px;font-size:11.5px;line-height:1.6}.stats3{grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:6px;margin-bottom:4px;display:grid}.stats3>div{background:var(--raise);border:1px solid var(--line);border-radius:11px;padding:9px 11px}.stats3 b{letter-spacing:-.02em;font-size:21px;font-weight:650;line-height:1.3}.inspector h3{color:var(--ink);align-items:baseline;gap:8px;margin:18px 0 2px;font-size:12.5px;font-weight:600;display:flex}.inspector h3 span{color:var(--ink-3);font-size:11.5px;font-weight:400}.note{color:var(--ink-2);text-wrap:pretty;margin:8px 0;font-size:12px;line-height:1.65}.note.dim{color:var(--ink-3)}.row-actions{flex-wrap:wrap;gap:8px;margin:12px 0 2px;display:flex}.table{border-collapse:collapse;width:100%;margin-top:6px;font-size:12.5px}.table th,.table td{border-bottom:1px solid var(--line);text-align:right;font-family:var(--mono);padding:7px 4px}.table th:first-child,.table td:first-child{text-align:left;font-family:var(--font)}.table th{color:var(--ink-3);font-weight:500;font-family:var(--font);font-size:11.5px}.profile-panel{z-index:21;left:var(--pl);right:var(--pr);border-radius:var(--r-xl);background:var(--glass-solid);height:268px;animation:rise .5s var(--ease);transition:left .5s var(--ease), right .5s var(--ease);flex-direction:column;padding:10px 14px 8px;display:flex;position:absolute;bottom:12px}@keyframes rise{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}.panel-head{align-items:center;gap:10px;display:flex}.panel-head .dot{border-radius:50%;flex:none;width:10px;height:10px}.panel-head .select select{font-weight:600}.panel-head .fine{white-space:nowrap;text-overflow:ellipsis;flex:1;margin:0;overflow:hidden}.palette-backdrop{z-index:80;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#05070973;justify-content:center;align-items:flex-start;padding-top:14vh;animation:.2s fade;display:flex;position:fixed;inset:0}@keyframes fade{0%{opacity:0}}.palette{background:var(--glass-solid);width:min(600px,100vw - 32px);animation:pop-down .35s var(--ease);border-radius:18px;overflow:hidden}@keyframes pop-down{0%{opacity:0;transform:translateY(-8px)scale(.98)}to{opacity:1;transform:none}}.palette-input{border-bottom:1px solid var(--line);height:56px;color:var(--ink-3);align-items:center;gap:10px;padding:0 16px;display:flex}.palette-input input{color:var(--ink);background:0 0;border:0;outline:0;flex:1;font-size:15.5px}.palette-input input::placeholder{color:var(--ink-3)}.palette-list{scrollbar-width:thin;max-height:min(420px,60vh);margin:0;padding:6px;list-style:none;overflow-y:auto}.palette-list h3{color:var(--ink-3);letter-spacing:.06em;margin:10px 10px 4px;font-size:11px;font-weight:600}.palette-list button{text-align:left;width:100%;color:var(--ink-2);background:0 0;border:0;border-radius:10px;align-items:center;gap:10px;padding:9px 10px;display:flex}.palette-list button span{flex:1}.palette-list button em{color:var(--ink-3);font-size:11.5px;font-style:normal}.palette-list button.on{color:var(--ink);background:#ffffff17}.palette-list button .icon{width:14px;height:14px;color:var(--ink-3)}.palette-empty{text-align:center;color:var(--ink-3);padding:26px 16px;font-size:13px}.chart{margin:6px 0 0;position:relative}.chart svg{width:100%;height:auto;display:block;overflow:visible}.chart .grid{stroke:#ffffff0f}.chart .axis0{stroke:#ffffff38}.chart .tick{fill:var(--ink-3);font-size:10.5px;font-family:var(--mono)}.chart .unit{fill:var(--ink-3);font-size:10px}.chart .crosshair{stroke:var(--ink);stroke-width:1px;stroke-dasharray:2 3;opacity:.5}.chart .span-down{fill:var(--down);opacity:.12}.chart .span-up{fill:var(--up);opacity:.12}.chart-legend{color:var(--ink-2);flex-wrap:wrap;gap:4px 14px;margin-top:2px;font-size:11.5px;display:flex}.chart-legend span{align-items:center;gap:6px;display:inline-flex}.chart-legend i{border-radius:2px;flex:none;width:14px;height:3px}.chart-legend i.dashed{background-size:5px 3px;background-image:linear-gradient(90deg,currentColor 60%,#0000 0)!important}.chart-legend b{color:var(--ink);font-weight:600;font-family:var(--mono)}.chart-legend .swatch-down{background:var(--down);opacity:.3;width:14px;height:10px}.tooltip{pointer-events:none;color:var(--ink);border:1px solid var(--line-2);white-space:nowrap;z-index:2;box-shadow:var(--shadow);background:#080a0cf0;border-radius:9px;flex-direction:column;gap:2px;padding:6px 9px;font-size:11.5px;display:flex;position:absolute;top:4px;transform:translate(-50%)}.tooltip b{font-family:var(--mono)}.tooltip span{align-items:center;gap:6px;display:flex}.tooltip i{border-radius:2px;width:8px;height:8px}.tooltip em{color:var(--ink-3);font-style:normal}.profile{flex:1;min-height:0}.present .top-actions,.present .map-ctrl{display:none}.present .maplibregl-ctrl-bottom-right{right:calc(var(--pr) - 4px)}.narrow .panel{width:auto;top:64px;left:8px;right:8px}.narrow .topbar{top:8px;left:8px}.narrow .brand-text em{display:none}.narrow .top-actions{top:8px;right:8px}.narrow .search-btn{justify-content:center;width:48px;min-width:0;padding:0}.narrow .search-btn span,.narrow .search-btn kbd,.narrow .top-actions .btn:not(.icon-only){display:none}.narrow .inspector{width:auto;height:62dvh;top:auto;left:8px;right:8px;transform:translateY(calc(100% + 24px))}.narrow .inspector.open{transform:none}.narrow .dock{width:calc(100vw - 70px);max-width:318px;left:8px}.narrow .hint{display:none}@media (max-width:1180px){.search-btn{min-width:0}.search-btn span{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}@media (max-height:560px){.hint,.ramp-note,.panel-foot{display:none}}.facts{grid-template-columns:84px 1fr;gap:7px 10px;margin:12px 0 4px;font-size:12.5px;display:grid}.facts dt{color:var(--ink-3)}.facts dd{color:var(--ink);margin:0;line-height:1.5}.facts dd em{color:var(--ink-3);font-size:11.5px;font-style:normal;display:block}.stage .pane{position:absolute;inset:0;overflow:hidden}.app.c2 .pane.main{right:50%}.app.c2 .pane.p1{left:50%}.app.c4 .pane.main{bottom:50%;right:50%}.app.c4 .pane.p1{bottom:50%;left:50%}.app.c4 .pane.p2{top:50%;right:50%}.app.c4 .pane.p3{top:50%;left:50%}.app.c2 .pane+.pane,.app.c4 .pane.p1,.app.c4 .pane.p3{border-left:1px solid #000}.app.c4 .pane.p2,.app.c4 .pane.p3{border-top:1px solid #000}.pane-label{z-index:13;border-radius:11px;padding:0;position:absolute;top:72px;left:12px}.app.c4 .pane.p2 .pane-label,.app.c4 .pane.p3 .pane-label{top:12px}.app.c2 .pane.p1 .pane-label,.app.c4 .pane.p1 .pane-label{top:72px;left:12px}.pane-label select{background:0 0;border:0;padding:8px 32px 8px 12px;font-size:13px;font-weight:600}.pane-label .icon{right:10px}.ghost-cursor{pointer-events:none;width:22px;height:22px;position:relative}.ghost-cursor i{position:absolute;inset:0}.ghost-cursor i:before,.ghost-cursor i:after{content:"";background:#fff;position:absolute;box-shadow:0 0 0 1px #0009}.ghost-cursor i:before{width:2px;height:22px;top:0;left:10px}.ghost-cursor i:after{width:22px;height:2px;top:10px;left:0}.ghost-cursor b{font-family:var(--mono);border:1px solid var(--line-2);color:var(--ink);white-space:nowrap;background:#0d1013d9;border-radius:6px;padding:2px 6px;font-size:12.5px;position:absolute;top:14px;left:18px}.ghost-cursor b.down{color:var(--down)}.ghost-cursor b.up{color:var(--up)}.views{border-radius:15px;align-items:center;height:48px;padding:5px}.views button{border-radius:10px;place-items:center;width:38px;height:36px;padding:0;display:grid}.app.c2 .dock,.app.c4 .dock,.narrow .views{display:none}.chart .band rect{fill:#fff;opacity:.07}.chart .band line{stroke:#fff;stroke-dasharray:3 3;opacity:.6}.chart .band text{fill:var(--ink);font-size:10.5px;font-family:var(--mono)}.map-ctrl button.on{background:var(--ink);color:#0d1013}.profile-panel.measure{height:auto;min-height:64px}.profile-panel.measure .panel-head>b{font-size:13.5px}.measure-body{grid-template-columns:220px 1fr;align-items:center;gap:14px;margin-top:6px;display:grid}.measure-stats{flex-direction:column;gap:6px;display:flex}.measure-stats>div{background:var(--raise);border:1px solid var(--line);border-radius:10px;flex-direction:column;padding:7px 10px;display:flex}.measure-stats span{color:var(--ink-3);font-size:11px}.measure-stats b{font-size:18px;font-weight:650;font-family:var(--mono);letter-spacing:-.02em}.measure-stats em{color:var(--ink-3);font-size:10.5px;font-style:normal}.measure-chart{min-width:0}.measure-note{margin:4px 0 0}.welcome-backdrop{align-items:flex-start;padding-top:8vh}.welcome{background:var(--glass-solid);width:min(720px,100vw - 32px);max-height:84vh;animation:pop-down .45s var(--ease);scrollbar-width:thin;border-radius:20px;padding:22px 24px 18px;overflow-y:auto}.welcome header{align-items:flex-start;gap:14px;display:flex}.welcome header .mark svg{box-shadow:0 0 0 1px var(--line-2);border-radius:10px;display:block}.welcome header>div{flex:1}.welcome h1{letter-spacing:.02em;font-size:21px;font-weight:700}.welcome header p{color:var(--ink-2);text-wrap:pretty;margin-top:4px;font-size:13.5px;line-height:1.7}.guide{grid-template-columns:1fr 1fr;gap:10px;margin:18px 0 8px;padding:0;list-style:none;display:grid}.guide li{background:var(--raise);border:1px solid var(--line);animation:fade-up .5s var(--ease) both;animation-delay:calc(var(--i) * 60ms + .12s);border-radius:14px;gap:12px;padding:12px 14px;display:flex}.guide .g-icon{width:32px;height:32px;color:var(--ink);background:#ffffff12;border-radius:10px;flex:none;place-items:center;display:grid}.guide b{font-size:14px}.guide p{color:var(--ink-2);text-wrap:pretty;margin-top:3px;font-size:12.5px;line-height:1.65}.welcome-data{color:var(--ink-3);margin:6px 2px 0;font-size:12px}.terms-toggle{color:var(--ink-2);background:0 0;border:0;align-items:center;gap:6px;margin-top:10px;padding:4px 2px;font-size:12.5px;display:inline-flex}.terms-toggle:hover{color:var(--ink)}.terms{animation:fade-up .35s var(--ease);grid-template-columns:1fr 1fr;gap:8px 16px;margin:6px 0 0;display:grid}.terms dt{color:var(--ink);font-size:12.5px;font-weight:600}.terms dd{color:var(--ink-3);margin:2px 0 0;font-size:12px;line-height:1.6}.welcome footer{flex-wrap:wrap;align-items:center;gap:10px;margin-top:18px;display:flex}.welcome footer .fine{margin:0 0 0 auto}@media (max-width:640px){.guide,.terms{grid-template-columns:1fr}}
