:root{--ink:var(--cb-text);--muted:var(--cb-text-muted);--line:var(--cb-line);--accent:var(--cb-blue);--paper:var(--cb-panel);--bg:var(--cb-bg);--danger:var(--cb-red)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.65 system-ui,-apple-system,"Segoe UI","Microsoft YaHei",sans-serif}header{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:15px 4vw;border-bottom:1px solid var(--line);background:var(--cb-panel)}.brand{font-size:20px;font-weight:800;letter-spacing:-.4px}.brand span{font-weight:500;font-size:15px;margin-left:9px}a{color:var(--accent);text-decoration:none}nav{display:flex;gap:22px}main{max-width:1680px;margin:auto;padding:30px 3vw}h1{font-size:31px;line-height:1.3;margin:2px 0 12px}h2{font-size:19px;margin:0}h3{font-size:15px;margin:20px 0 8px}p{margin:8px 0 14px}.heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:18px}.eyebrow{font-size:11px;letter-spacing:2px;color:var(--accent);font-weight:750;margin-bottom:9px}.tag{padding:7px 13px;border:1px solid var(--line);border-radius:24px;white-space:nowrap;font-size:12px;background:var(--cb-panel)}.notice{background:var(--cb-blue-soft);border:1px solid var(--cb-line);padding:11px 14px;border-radius:8px;margin:12px 0}.notice.error{color:var(--cb-red);background:var(--cb-red-soft);border-color:var(--cb-red)}.workspace{display:grid;grid-template-columns:minmax(460px,1.1fr) minmax(400px,1fr);gap:20px;align-items:start}.panel{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:21px;min-width:0;box-shadow:0 5px 24px #1b353509}.row{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.row h2,.row h3{margin-right:auto}.input-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;margin:16px 0}.input-grid .check{grid-column:1/-1}.check{display:flex;align-items:center;gap:7px}.check input{width:auto}label{display:block;font-size:13px;color:var(--cb-text-muted)}input,select,textarea,button{font:inherit}input,select,textarea{width:100%;border:1px solid var(--cb-line);border-radius:6px;background:var(--cb-panel);color:var(--ink);padding:8px;margin-top:4px}textarea{font:12px/1.6 ui-monospace,Consolas,monospace;resize:vertical}input:focus,select:focus,textarea:focus,button:focus-visible{outline:2px solid var(--cb-focus);outline-offset:1px}button{padding:7px 11px;border:1px solid var(--cb-line);border-radius:6px;background:var(--cb-panel-soft);color:var(--ink);cursor:pointer}button:hover{background:var(--cb-blue-soft)}button.primary{background:var(--accent);color:var(--cb-panel);border-color:var(--accent);padding:10px 18px}button:disabled{opacity:.5;cursor:not-allowed}input:disabled,select:disabled,textarea:disabled{background:var(--cb-panel-soft)}.table-scroll{max-width:100%;overflow:auto}table{width:100%;border-collapse:collapse;font-size:12px}th,td{text-align:left;padding:7px 6px;border-bottom:1px solid var(--cb-line);vertical-align:middle}th{font-weight:650;color:var(--muted);white-space:nowrap}td input,td select{min-width:65px;margin:0;padding:6px}td input[type=checkbox]{width:17px;height:17px;min-width:0;accent-color:var(--accent)}.roads{min-width:670px}.roads td:nth-child(4){min-width:100px}.roads td:nth-child(7){min-width:135px}td button{white-space:nowrap;font-size:11px;padding:5px 7px}.muted,.legend,footer{color:var(--muted);font-size:12px}.sample{padding:9px 12px;border-radius:6px;background:var(--cb-orange-soft);color:var(--cb-orange-ink);font-weight:600}.schematic{font-size:13px;font-weight:650;color:var(--accent);margin-bottom:3px}.legend{font-size:11px;margin-top:0}details{margin:20px 0 8px}summary{cursor:pointer;color:var(--accent);font-size:13px}.runbar{margin-top:21px}.empty{padding:32px 0;text-align:center;color:var(--muted)}#network{display:block;width:100%;min-height:290px;border:1px solid var(--cb-line);border-radius:8px;background:var(--cb-bg)}.road{stroke:#9aaea4;stroke-width:2;fill:none}.road.closed{stroke:#b55f58;stroke-dasharray:7 5}.road.route{stroke:var(--cb-green-ink);stroke-width:5}.road-label{font-size:12px;fill:var(--cb-text-muted);paint-order:stroke;stroke:var(--cb-bg);stroke-width:5px;stroke-linejoin:round}.junction{fill:var(--cb-panel);stroke:#6a8d7b;stroke-width:2}.junction.route{fill:var(--cb-green-soft);stroke:var(--cb-green-ink);stroke-width:3}.node-id{font-size:12px;fill:var(--cb-text);text-anchor:middle;font-weight:650}.node-name{font-size:12px;fill:var(--cb-text-muted);text-anchor:middle}.total{display:flex;align-items:baseline;gap:10px;margin:16px 0}.total strong{font-size:30px;color:var(--accent)}.path{overflow-wrap:anywhere;font-weight:600}.output ul{padding-left:20px;color:var(--muted);font-size:12px}pre{white-space:pre-wrap;overflow-wrap:anywhere;font:11px/1.6 ui-monospace,Consolas,monospace;max-height:350px;overflow:auto;background:var(--cb-panel-soft);padding:12px}footer{margin:20px 0}form#auth{display:flex;gap:12px;align-items:end;margin:15px 0}form#auth label{flex:1}[hidden]{display:none!important}@media(max-width:1080px){.workspace{grid-template-columns:1fr}.heading{align-items:flex-start}.output{order:-1}#network{min-height:260px;max-height:480px}}@media(max-width:650px){main{padding:20px 12px}.panel{padding:15px}.heading{display:block}h1{font-size:26px}.tag{display:inline-block;margin-bottom:8px}header{padding:13px}.brand span{display:none}nav{gap:13px;font-size:12px}.input-grid{grid-template-columns:1fr 1fr}.input-grid label:first-child{grid-column:1/-1}.row{gap:7px}.row h2{width:100%}button{font-size:12px}.table-scroll{margin:0 -3px}}
/* Route highlights remain green; workbench actions use the shared blue. */
body { font-family: var(--cb-font); font-size: var(--cb-fs-md); line-height: 1.6; }
.panel { box-shadow: var(--cb-shadow-sm); }
button.primary { color: var(--cb-on-accent); }
button.primary:hover:enabled { background: var(--cb-blue-strong); }
input, select, textarea { background: var(--cb-bg); }
button, input, select, textarea { border-radius: var(--cb-radius-sm); }
.notice { color: var(--cb-text); }
.notice.error { color: var(--cb-red); }
