:root{--bg: #fbfbf9;--bg-panel: rgba(255, 255, 255, .94);--ink: #1d2329;--muted: #5b6672;--line: rgba(0, 0, 0, .12);--accent: #2f5fc4;color-scheme:light}:root[data-theme=dark]{--bg: #11161c;--bg-panel: rgba(20, 27, 35, .94);--ink: #e8edf2;--muted: #9aa6b2;--line: rgba(255, 255, 255, .14);--accent: #8fb0ff;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;height:100%}body{background:var(--bg);color:var(--ink);font:14px/1.45 Avenir Next,Segoe UI,system-ui,-apple-system,sans-serif;overflow:hidden}#app{position:relative;width:100%;height:100%}.tree-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}#tree{position:relative;display:block;width:100%;height:100%;cursor:grab;touch-action:none;font-family:inherit}#tree:active{cursor:grabbing}#status{position:absolute;inset:0;display:grid;place-items:center;margin:0;color:var(--muted);pointer-events:none}#status:empty{display:none}.panel{position:absolute;z-index:3;background:var(--bg-panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 2px 10px #0000001f}.controls{top:52px;left:12px;width:260px;padding:10px 12px;display:grid;gap:8px;max-height:calc(100% - 112px - var(--strips, 0px));overflow:auto;overscroll-behavior:contain}#trend-list{grid-template-columns:1fr 1fr;column-gap:8px}#trend-list label{font-size:12px;gap:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#trend-list .sw{width:8px;height:8px}.controls header{display:grid;gap:1px}.controls header strong{font-size:15px}#counts{color:var(--muted);font-size:12px}input[type=search]{font:inherit;color:inherit;width:100%;padding:5px 8px;border-radius:7px;border:1px solid var(--line);background:transparent}details summary{cursor:pointer;color:var(--muted);font-size:12.5px}fieldset{border:0;margin:6px 0 0;padding:0;display:grid;gap:2px}legend{padding:0;margin-bottom:2px;color:var(--muted);font-size:12px}fieldset label,.check{display:flex;align-items:center;gap:6px;cursor:pointer;font-size:13px}.sw{display:inline-block;width:11px;height:11px;border-radius:3px;flex:none}.sw.line{width:18px;height:0;border-top:1.6px solid var(--muted);border-radius:0}.sw.line.dash{border-top-style:dashed}.sw.line.dot{border-top-style:dotted}.row{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.actions button{font:inherit;color:inherit;padding:4px 10px;border-radius:6px;border:1px solid var(--line);background:transparent;cursor:pointer}.actions button:hover{border-color:var(--accent)}.actions a{color:var(--accent);font-size:13px;text-decoration:none}.hint{margin:0;color:var(--muted);font-size:12px}.detail{display:grid;gap:3px}.detail>label:first-child{font-size:12.5px;color:var(--muted);display:flex;justify-content:space-between}#detail-count{font-variant-numeric:tabular-nums}#detail{width:100%;margin:2px 0 0;accent-color:var(--accent)}.detail .ends{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-top:-2px}#trends .hint{margin:6px 0 0}#display .opts{display:grid;gap:5px;margin:6px 0}#display .opts label,#trends .layout{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:6px;font-size:12.5px;color:var(--muted)}#display select,#trends select{font:inherit;font-size:12.5px;color:var(--ink);background:transparent;border:1px solid var(--line);border-radius:6px;padding:2px 4px}#toggle-controls{display:none;top:52px;left:12px;width:40px;height:40px;cursor:pointer;font-size:18px;color:var(--ink)}.legend{left:12px;bottom:calc(12px + var(--strips, 0px));padding:6px 12px;font-size:12.5px;max-width:280px}.legend ul{list-style:none;margin:6px 0 2px;padding:0;display:grid;gap:3px}.legend li{display:flex;align-items:center;gap:7px}.legend li.head{margin-top:4px;color:var(--muted);font-size:11.5px;text-transform:uppercase;letter-spacing:.04em}.legend ul{max-height:calc(100vh - 140px - var(--strips, 0px));overflow:auto}button.link{display:block;font:inherit;font-size:12.5px;color:var(--accent);background:none;border:0;padding:4px 0 0;cursor:pointer}#display .check{margin-top:3px}.info{top:52px;right:12px;width:340px;max-height:calc(100% - 64px - var(--strips, 0px));overflow:auto;padding:12px 14px 14px;overscroll-behavior:contain}.info h2{margin:0 24px 6px 0;font-size:18px}.info h3{margin:14px 0 4px;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);display:flex;align-items:center;gap:6px}.info .kind{margin:0;color:var(--muted);font-size:12px}.info dl{display:grid;grid-template-columns:auto 1fr;gap:3px 10px;margin:8px 0}.info dt{color:var(--muted)}.info dd{margin:0}.info p{margin:6px 0}.info ul{margin:0;padding-left:18px}.info ul.efforts,.info ul.frontier{list-style:none;padding:0;display:grid;gap:6px}.info .note{color:var(--muted);font-size:12.5px}.info a{color:var(--accent)}.info .tag{font-size:11px;padding:0 6px;border-radius:8px;border:1px solid var(--line);color:var(--muted)}.info .tag.ongoing{color:#2a9d8f;border-color:#2a9d8f}.info .tag.abandoned{color:#c2534b;border-color:#c2534b}.info .close{position:absolute;top:6px;right:8px;border:0;background:none;font-size:22px;line-height:1;cursor:pointer;color:var(--muted)}.info .chart{width:100%;height:auto}.chart .grid{stroke:var(--line)}.chart .ylab{font-size:9px;text-anchor:end;dominant-baseline:central;fill:var(--muted)}.chart .xlab{font-size:9px;text-anchor:middle;fill:var(--muted)}.chart circle{fill:var(--accent)}.chart .fit{stroke:var(--ink);stroke-width:1.2;opacity:.6}.chart .fit.ext{stroke-dasharray:4 3}.info .rate{font-size:12.5px}.chart .ms{stroke:var(--muted);stroke-dasharray:2 3;opacity:.7}.chart .ms.on{stroke:var(--accent);stroke-dasharray:none;opacity:1}.chart .mslab{font-size:9px;text-anchor:end;fill:var(--muted)}.chart .mslab.on{fill:var(--accent);font-weight:600}.info .criterion{margin:10px 0;padding:6px 10px 2px;border-left:3px solid var(--accent);background:color-mix(in srgb,var(--accent) 7%,transparent);border-radius:0 6px 6px 0}.info .criterion h3{margin-top:2px}.info .threshold{margin:4px 0 8px}.info ul.series{list-style:none;padding:0;display:grid;gap:4px;margin:6px 0;font-size:12.5px}.info ul.series li{display:flex;gap:8px;align-items:baseline}.info details.forecasts>summary{margin:8px 0 2px;font-size:12px;text-transform:uppercase;letter-spacing:.04em}.info ul.scenarios{list-style:none;padding:0;display:grid;gap:6px;margin:6px 0}.info ul.scenarios li{display:flex;gap:8px;align-items:baseline;font-size:13px}.info ol.routes{list-style:none;padding:0;display:grid;gap:7px}.info ol.routes li{display:flex;gap:8px;align-items:baseline}.info ol.routes .sw{transform:translateY(1px)}#tooltip{position:absolute;z-index:4;pointer-events:none;padding:3px 8px;border-radius:6px;background:var(--bg-panel);border:1px solid var(--line);font-size:12.5px;white-space:nowrap}#tooltip span{color:var(--muted)}@media(max-width:1000px){#toggle-controls{display:block}.controls{display:none;top:100px}body.controls-open .controls{display:grid}}body.folded #toggle-controls{display:block}body.folded .controls{display:none;top:100px}body.folded.controls-open .controls{display:grid}@media(max-width:640px){.legend{max-width:calc(100% - 24px)}.info{left:8px;right:8px;top:auto;bottom:calc(8px + var(--strips, 0px));width:auto;max-height:55%}}.sw.ramp{width:46px}.info .badge{display:inline-block;font-size:11.5px;padding:0 7px;border-radius:8px;color:#fff;background:var(--c);white-space:nowrap}.info ul.resources{list-style:none;padding:0;display:grid;gap:6px}.info ul.parts{list-style:none;padding:0;display:grid;gap:3px;margin:4px 0;font-size:12.5px}.info ul.parts li{display:flex;gap:8px;align-items:center}.info .bar{width:60px;height:6px;border-radius:3px;background:var(--line);flex:none;overflow:hidden}.info .bar span{display:block;height:100%;background:var(--accent)}.info table.t{width:100%;border-collapse:collapse;font-size:12.5px;margin:6px 0}.info table.t th{text-align:left;font-weight:600;color:var(--muted);font-size:11.5px;border-bottom:1px solid var(--line);padding:2px 4px}.info table.t td{padding:3px 4px;border-bottom:1px solid color-mix(in srgb,var(--line) 50%,transparent);vertical-align:top}.info table.est td:not(:first-child),.info table.est th:not(:first-child){text-align:right}.info table.est td:first-child{width:44%}.info.wide{width:440px}@media(max-width:720px){.info.wide{width:auto}}.chart.effort a{cursor:pointer}.chart.effort a:hover>*{stroke:var(--ink);stroke-width:1.6}.info p.note .bar{display:inline-block;vertical-align:middle}.info ul.checklist{list-style:none;padding:0;display:grid;gap:5px}.info ul.checklist li{display:flex;gap:8px;align-items:baseline}.info ul.checklist .box{flex:none;width:13px;height:13px;border:1.4px solid var(--muted);border-radius:3px;font-size:10px;line-height:11px;text-align:center;transform:translateY(2px)}.info ul.checklist li.done .box{background:var(--accent);border-color:var(--accent);color:#fff}.hint.links{margin-top:4px}.hint.links a,.info .suggest a{color:var(--accent)}
