.page-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:16px 0 20px}.page-heading>div{display:flex;align-items:baseline;gap:22px}.page-heading h1{font:var(--font-display)}.workbench{background:var(--panel);border:1px solid #dce1e9;border-radius:8px;overflow:clip}.routes-bar{min-height:50px;padding:5px 16px;display:flex;gap:16px;align-items:center;justify-content:space-between}.route-tabs{display:flex;gap:8px;overflow-x:auto;min-width:0;scrollbar-width:thin}.route-chip{display:flex;flex-shrink:0;align-items:center;border-radius:7px;background:#fff}.route-chip:has(button[aria-pressed=true]){background:#e8ecf2}.route-chip button{display:flex;align-items:center;gap:9px;color:var(--muted);padding:8px 12px 8px 2px;min-height:38px;font:var(--font-label)}.route-chip button b{font:var(--font-label)}.route-chip button span{max-width:130px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.route-chip button[aria-pressed=true]{color:var(--route)}.route-enable{display:flex;width:38px;height:38px;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0}.route-enable input{accent-color:var(--route);width:15px;height:15px;cursor:pointer}.map-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:46px;padding:5px 16px;background:#f5f6f8}.model-switch{background:transparent}.model-switch button{padding:5px 15px}.map-canvas{position:relative;flex:1;display:flex;flex-direction:column;background:#142238}#geo-map{flex:1;display:flex;flex-direction:column}.map-corner{position:absolute;bottom:16px;left:18px;display:flex;gap:18px;color:#fff;pointer-events:none;font:var(--font-label)}.truth-key{color:#fff}.map-result{display:flex;align-items:center;gap:16px;padding:12px 20px;min-height:76px}.map-result>div{display:grid;gap:2px}#area-label{color:var(--muted);font:var(--font-label)}#area-value{font:var(--font-display)}#truth-status{color:var(--muted);margin-left:auto;max-width:190px;font:var(--font-label)}.empty-map{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#142238;color:#fff;pointer-events:none}.empty-map h2{font:var(--font-display)}.empty-orbit:after{content:"";position:absolute;width:38px;height:38px;border:1px solid #ffffff;border-radius:50%;top:6px;left:17px}.inspector-heading{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.inspector-heading h2{font:var(--font-label)}#route-premise,#timing-batch{color:var(--muted);font:var(--font-label)}#timing-batch{margin-left:auto}.route-badge{display:inline-flex;align-items:center;justify-content:center;min-width:25px;height:25px;padding:0 4px;border-radius:6px;background:#e8ecf2;color:var(--active-route);font:var(--font-label)}.journey{margin:22px 0 16px;--before-exit:50%}.network-chain{display:flex;align-items:flex-start}.path-node{flex:0 0 64px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px}.path-node i{display:grid;place-items:center;width:36px;height:36px;font-style:normal;border-radius:50%;background:#e8ecf2;color:#607088;font:var(--font-label)}.path-node i svg{width:21px;height:21px}.path-node b{font:var(--font-label)}.path-node[data-entity=user] i{background:#202b3d;color:#fff}.path-node[data-entity=exit] i{background:#e8ecf2;color:var(--active-route)}.path-link{flex:1;border-top:1px solid #dce1e9;margin:18px -8px 0;position:relative}.journey[data-mode=unknown] .path-link{border-top-style:dashed}.path-link:after{content:"";position:absolute;right:0;top:-3px;width:5px;height:5px;border-right:1px solid #dce1e9;border-top:1px solid #dce1e9;transform:rotate(45deg)}.journey-readings{display:grid;grid-template-columns:var(--before-exit) minmax(0,1fr);margin:12px 32px 0;row-gap:18px}.path-reading{position:relative;display:flex;flex-direction:column;text-align:center;align-items:center;padding:12px 3px 0;min-width:0}.path-reading:before{content:"";position:absolute;inset:0 0 auto;height:6px;border:1px solid #dce1e9;border-top:0}.path-reading output{white-space:nowrap;font:var(--font-display)}.path-reading>span{color:var(--muted);margin-top:3px;font:var(--font-label)}.path-reading small{color:var(--muted);font:var(--font-label)}.residual-reading{grid-column:1;grid-row:1;color:var(--active-route)}.tcp-reading{grid-column:2;grid-row:1}.app-reading{grid-column:1/-1;grid-row:2}.journey[data-mode=end-to-end] .app-reading,.journey[data-mode=unknown] .app-reading{grid-row:3}.app-reading output{font:var(--font-display)}.journey[data-mode=end-to-end] .tcp-reading,.journey[data-mode=unknown] .tcp-reading{grid-column:1/-1;grid-row:2}.journey[data-mode=unknown] .tcp-reading:before{display:none}.journey[data-mode=direct] .journey-readings{grid-template-columns:1fr}.distance-outcome{padding:16px;margin-top:22px;background:#e8ecf2;border-radius:10px;display:grid;gap:5px}.distance-outcome>span{color:var(--muted);font:var(--font-label)}.distance-outcome strong{font:var(--font-display)}.distance-outcome small{color:var(--muted);font:var(--font-label)}.distance-outcome small:empty{display:none}#distance-details h3{margin-top:20px;font:var(--font-label)}.signal-note{color:#607088;margin-top:14px;font:var(--font-label)}.signal-note:empty{display:none}#curve-route{color:var(--active-route);font:var(--font-label)}#support-curve{width:100%;margin:8px 0}#support-curve text{fill:#607088;font:inherit}.simulation-controls,.capture-options{display:flex;flex-wrap:wrap;gap:16px;align-items:end;margin:16px 0}.simulation-controls label,.capture-options label,.field-label{display:grid;gap:6px;color:var(--muted);flex:1 1 120px;font:var(--font-label)}.simulation-controls select,.simulation-controls input,.capture-options select,.capture-options input{width:100%}.formula{font:inherit;overflow-wrap:anywhere}.muted{color:var(--muted);font:var(--font-label)}.warning{color:#b5424b;margin-top:10px;font:var(--font-label)}.warning:empty{display:none}.citation{margin:18px 0;font:var(--font-label)}.citation p{margin:12px 0}.citation a,.references a{color:var(--accent);text-decoration:none}.references article{padding:16px 0;scroll-margin-top:15px;overflow-wrap:anywhere}.references h3{margin-top:22px;font:var(--font-body)}.references small{display:block;color:var(--muted);margin:5px 0 10px}.assumptions p{margin:14px 0;font:var(--font-label)}.assumptions h3{margin-top:18px;font:var(--font-body)}.metadata{overflow-wrap:anywhere;color:var(--muted);font:var(--font-label)}.capture-panel{margin:0 0 20px}.capture-actions{display:flex;flex-wrap:wrap;gap:20px;align-items:center}.capture-status{display:flex;align-items:center;gap:20px;margin-left:auto}#progress-label{color:var(--muted);font:var(--font-label)}progress{width:100%;height:4px;accent-color:var(--accent);margin-top:16px;display:block}.session-actions{display:flex;flex-wrap:wrap;gap:10px;margin:20px 0}.session-actions+.muted{margin-bottom:24px}.file-label{position:relative;overflow:hidden}.file-label input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%}.file-label:focus-within{outline:2px solid var(--accent);outline-offset:3px}.lab-toolbar{display:flex;align-items:center;gap:16px;margin-bottom:16px}.connection-switch,.model-switch{display:flex;gap:3px;background:transparent;padding:3px;border-radius:8px}.connection-switch button,.model-switch button{padding:8px 16px;color:var(--muted);border-radius:6px;font:var(--font-label)}.connection-switch button[aria-pressed=true],.model-switch button[aria-pressed=true]{color:var(--text);background:#e8ecf2}.map-panel{min-width:0;background:#f5f6f8}.map-timing{position:absolute;top:16px;left:18px;display:flex;gap:6px}.map-timing>div{display:grid;gap:2px;text-align:left;background:#142238;color:#fff;padding:6px 10px;border-radius:6px;border:0;min-width:110px}.map-timing>div{border-color:#fff;color:#fff;background:#293c55}.map-timing span{font:var(--font-label)}.map-timing strong{font:var(--font-display)}.map-timing>div:focus-visible{outline-color:#fff}.map-result{justify-content:space-between;align-items:center;padding:18px 22px}.map-result>div{min-width:0}.map-result #route-inspector{flex:1}.map-result .area-result{margin-left:auto}.distance-outcome{padding:0;margin:0;background:none}.distance-outcome strong,#area-value{font:var(--font-display)}#truth-status{margin:0;max-width:none}.calculation-layout{display:grid;grid-template-columns:1fr 1fr;align-items:start;gap:24px;margin-top:24px}.study-section{padding:20px 0;background:transparent;border-radius:0;scroll-margin-top:24px;min-width:0}.study-section h2{margin-bottom:20px;font:var(--font-display)}.study-section h3{margin:18px 0 12px;font:var(--font-body)}.study-section>p,.timing-panel>p{margin:14px 0}.study-section>p:empty,.timing-panel>p:empty{display:none}.section-heading{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}.responder{font:var(--font-body)}.journey{max-width:540px;margin:28px auto}.numeric-formula{font:var(--font-display)}#timing-details .inspector-heading{color:var(--muted);font:var(--font-label)}.workbench[data-empty=true] .map-toolbar,.workbench[data-empty=true] .map-result,.workbench[data-empty=true] .routes-bar,.workbench[data-empty=true] .map-corner,.workbench[data-empty=true] .map-navigation{display:none}.workbench[data-empty=true] .geo-stage{height:320px}@media(max-width:850px){.calculation-layout{grid-template-columns:1fr;gap:16px;margin-top:16px}}@media(max-width:600px){.page-heading{padding:12px 0 20px}.page-heading h1{font:var(--font-display)}.lab-toolbar{gap:8px}.connection-switch button{padding:8px 12px}.routes-bar{padding:5px 10px;gap:10px}.route-tabs{gap:5px}.route-chip button{min-height:44px;padding-right:9px}.route-chip button span{max-width:65px}.route-enable{width:34px;height:44px}.routes-bar>.text-button{font:var(--font-label)}.map-toolbar{padding:8px 10px;gap:8px}.model-switch button{padding:5px 9px;font:var(--font-label)}.map-toolbar>.text-button{font:var(--font-label)}.map-timing{top:12px;left:12px}.map-timing>div{min-width:105px;padding:6px 8px}.map-timing strong{font:var(--font-display)}.map-corner{bottom:12px;left:12px;max-width:185px;font:var(--font-label)}.map-result{padding:16px;gap:16px;flex-wrap:wrap}.map-result #route-inspector{flex-basis:100%}.map-result .area-result{margin-left:0}.distance-outcome strong,#area-value{font:var(--font-display)}.study-section{padding:16px 0}.capture-actions{gap:12px 18px}.capture-actions #progress-label{width:100%}.field-label select{max-width:100%}}.lab-toolbar{align-items:center;flex-wrap:wrap}#connection-note{flex:1 1 300px;color:var(--muted);margin:0}.capture-actions{gap:12px}#progress-label:empty{display:none}#view[data-page=measure] .geo-stage{height:clamp(440px,calc(100dvh - 240px),740px)}#view[data-page=measure] .calculation-layout{grid-template-columns:1fr}@media(max-width:600px){#view[data-page=measure] .geo-stage{height:480px}.connection-switch button{padding:8px 12px}}.geo-stage{position:relative;background:#142238;overflow:hidden;height:clamp(360px,calc(100dvh - 360px),530px)}.world-map{width:100%;height:100%;position:absolute;inset:0;touch-action:pan-y}.land{fill:#293c55;stroke:#455a73;stroke-width:.65}.graticule{stroke:#455a73;stroke-width:.5;fill:none;opacity:.55}.heat,.intersection,.boundaries,.geo-paths,.geo-marks{pointer-events:none}.geo-handles{position:absolute;inset:0;pointer-events:none}.geo-node{position:absolute;transform:translate(-50%,-50%);border:1px solid var(--route);color:#fff;background:#142238;border-radius:8px;min-width:34px;min-height:34px;padding:5px 8px;touch-action:none;pointer-events:auto;cursor:grab;white-space:nowrap;font:var(--font-label)}.geo-node:active{cursor:grabbing}.geo-node[data-active=true]{background:var(--route);color:#fff}.geo-node[data-enabled=false]{border-style:dashed}.geo-node:disabled{cursor:default;opacity:.8}.geo-node:focus-visible{outline:2px solid white;outline-offset:3px}@media(max-width:600px){.geo-stage{height:360px}.geo-node{min-width:36px;min-height:36px;padding:5px 7px;font:var(--font-label)}}.geo-delays{position:absolute;inset:0;pointer-events:none}.geo-delay{position:absolute;transform:translate(-50%,-50%);display:grid;gap:1px;text-align:center;color:#fff;padding:6px 10px;border-radius:6px;background:#142238;white-space:nowrap}.geo-delay strong{font:var(--font-display)}.geo-delay span{color:#fff;font:var(--font-label)}.geo-node[data-route=S]{background:#fff;color:#202b3d;border-color:#fff}.radius-control,.radius-edge,.radius-grip{touch-action:none}.radius-edge{outline:none;fill:none;stroke:transparent;stroke-width:24px;pointer-events:stroke;cursor:ew-resize}.radius-edge:focus-visible{stroke:var(--route);stroke-width:3px;outline:none}.radius-grip{fill:#fff;stroke:var(--route);stroke-width:2px;pointer-events:all;cursor:ew-resize}.radius-reading{position:absolute;transform:translate(-50%,-50%);font:var(--font-label);color:#fff;background:#142238;padding:3px 6px;pointer-events:none;white-space:nowrap}span.geo-node{cursor:default}.records-layout{display:grid;grid-template-columns:240px minmax(0,1fr);gap:24px;align-items:start;margin:20px 0}.batch-list{display:flex;flex-direction:column;gap:8px;max-height:80dvh;overflow:auto;position:sticky;top:16px}.batch-list a{padding:8px;display:grid;grid-template-columns:1fr auto;gap:6px;text-align:left}.batch-list span{color:var(--muted);overflow-wrap:anywhere;font:var(--font-label)}.batch-list time{grid-column:1/-1;font:var(--font-body);color:var(--muted)}.record-detail{padding:0 24px;min-width:0}.record-detail h2{font:var(--font-display)}.batch-readings{display:flex;flex-wrap:wrap;gap:20px 40px;margin:24px 0}.batch-readings>div{display:grid;gap:5px}.batch-readings span{color:var(--muted);font:var(--font-label)}.batch-readings strong{font:var(--font-display)}.record-metadata{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:24px 0}.record-metadata dt{color:var(--muted);font:var(--font-label)}.record-metadata dd{margin:3px 0 0;overflow-wrap:anywhere;font:var(--font-label)}.sample-list{margin:28px 0}.sample-list h3{margin-bottom:16px;font:var(--font-body)}.sample-list ol{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(125px,1fr));gap:8px}.sample-list li{padding:8px 0;display:grid;gap:3px}.sample-list strong{font:var(--font-body)}.sample-list li span,.sample-list time{color:var(--muted);font:var(--font-label)}.records-empty{min-height:280px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px}.records-layout:has(.records-empty){grid-template-columns:1fr}.records-layout:has(.records-empty) .batch-list{display:none}.research-page{padding:0;max-width:980px}.research-page>section{margin-bottom:40px;scroll-margin-top:24px}.research-page h2{margin-bottom:20px;font:var(--font-display)}.research-page h3{margin:24px 0 12px}.research-page p{margin:16px 0}.citation{display:flex;flex-wrap:wrap;gap:12px}@media(max-width:700px){.records-layout{grid-template-columns:1fr;gap:16px}.batch-list{position:static;flex-direction:row;max-height:none}.batch-list a{flex-shrink:0}.record-detail{padding:0}.record-metadata{grid-template-columns:1fr}.research-page{padding:0}.page-heading{flex-wrap:wrap}}.research-layout{display:grid;grid-template-columns:minmax(0,1fr) 180px;align-items:start;gap:40px}.research-outline{position:sticky;top:28px;display:grid;gap:4px;padding-top:16px}.research-outline a{padding:8px 12px;border-left:2px solid transparent;color:var(--muted)}.research-outline a[aria-current=location]{border-color:var(--accent);color:var(--accent)}@media(max-width:850px){.research-layout{grid-template-columns:1fr;gap:20px}.research-outline{position:static;grid-row:1;display:flex;flex-wrap:wrap;gap:4px 12px;padding:0}.research-outline a{padding:5px 0;border-left:0;border-bottom:2px solid transparent}}.batch-list a[aria-current=true]{background:#e8ecf2}:root{--font-stack:"Segoe UI","Microsoft YaHei",sans-serif;--font-label:400 12px/1.6 var(--font-stack);--font-body:400 14px/1.6 var(--font-stack);--font-display:600 22px/1.3 var(--font-stack);color-scheme:light;--bg:#f5f6f8;--panel:#fff;--line:#dce1e9;--text:#202b3d;--muted:#607088;--accent:#3269d5;font-family:Segoe UI,Microsoft YaHei,sans-serif;font-synthesis:none;-webkit-font-smoothing:antialiased}*{box-sizing:border-box;letter-spacing:0;font-variant-numeric:tabular-nums!important}[hidden]{display:none!important}html{background:var(--bg)}body{margin:0;min-height:100dvh;background:var(--bg);color:var(--text);font:var(--font-body)}button,input,select{font:inherit;color:inherit}button{cursor:pointer;background:none;border:0}button,a,input,select{touch-action:manipulation;-webkit-tap-highlight-color:transparent}button:disabled,input:disabled,select:disabled{cursor:not-allowed;opacity:.45}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}h1,h2,h3{font:var(--font-display)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:not(.radius-edge):focus-visible{outline:2px solid var(--accent);outline-offset:3px}input,select{min-width:0;border:1px solid #dce1e9;border-radius:7px;background:#fff;padding:9px 11px}input[type=checkbox]{appearance:none;width:17px;height:17px;margin:0;padding:0;display:grid;place-items:center;background:#fff;border:1.5px solid #dce1e9;border-radius:4px}input[type=checkbox]:checked{background:var(--route,var(--accent));border-color:var(--route,var(--accent))}input[type=checkbox]:after{content:"";width:8px;height:5px;border-left:2px solid white;border-bottom:2px solid white;transform:translateY(-1px) rotate(-45deg);opacity:0}input[type=checkbox]:checked:after{opacity:1}b,strong{font:inherit}small{font:var(--font-label)}svg{display:block}.site{max-width:1440px;margin:auto;padding:0 40px 24px}.topbar{height:64px;display:flex;align-items:center;gap:36px}.brand{display:flex;align-items:center;gap:9px;font:var(--font-display)}.brand svg{width:26px;height:26px;fill:none;stroke:var(--accent);stroke-width:1.5}.brand-dot{color:var(--accent);margin-left:-9px}.topbar nav{display:flex;gap:5px;color:var(--muted)}.topbar nav a{padding:6px 12px;border-bottom:2px solid transparent;font:var(--font-label)}.topbar nav a[aria-current=page]{color:var(--accent);border-bottom-color:var(--accent)}.language{margin-left:auto;min-height:40px;padding:8px;color:var(--muted);font:var(--font-label)}.button,.primary{display:inline-flex;justify-content:center;align-items:center;gap:8px;min-height:32px;padding:5px 12px;border:1px solid #dce1e9;border-radius:8px;background:#fff;cursor:pointer;font:var(--font-label)}.button:hover,.primary:hover{background:#e8ecf2}.text-button{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:40px;color:var(--muted);padding:6px 4px;white-space:nowrap;cursor:pointer;font:var(--font-label)}.text-button:hover{color:var(--text)}.text-button svg{width:14px;height:14px}.icon-button{width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;flex-shrink:0;color:var(--muted);font:var(--font-display)}.icon-button:hover{background:#e8ecf2}.icon-button svg{width:20px;height:20px}.danger{color:#b5424b}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:1000px){.site{padding:0 24px 24px}}@media(max-width:700px){.site{padding:0 16px 20px}.topbar{height:64px;gap:16px}.brand{font:var(--font-display)}.brand svg{width:23px;height:23px}.topbar nav{margin-left:auto}.topbar nav a{padding:5px 9px;font:var(--font-label)}.language{margin-left:0;padding:6px 0 6px 8px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}@media(max-width:600px){.topbar{height:auto;padding:10px 0;display:grid;grid-template-columns:1fr auto;gap:10px}.topbar nav{grid-column:1/-1;grid-row:2;width:100%;margin:0;justify-content:space-between}.topbar nav a{padding:6px 10px}.language{grid-column:2;grid-row:1}}.brand img{width:32px;height:32px;border-radius:8px}@media(max-width:600px){.button,.primary{min-height:44px}}
