:root{--bg: #0e1a22;--panel: #13222c;--panel-2: #1a2d39;--line: #27404f;--text: #e6eef3;--muted: #8ea4b3;--accent: #4fd1a5;--accent-2: #fbbf24;--bad: #f87171;--warn: #fbbf24;--good: #4ade80;--radius: 8px;color-scheme:dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--text);overflow:hidden}body{display:grid;grid-template-columns:1fr 330px;grid-template-rows:auto 1fr;grid-template-areas:"top top" "stage panel"}button,input,select,textarea{font:inherit;color:inherit}button{background:var(--panel-2);border:1px solid var(--line);border-radius:6px;padding:5px 10px;cursor:pointer;white-space:nowrap}button:hover{border-color:var(--muted)}button.on{background:#1f4a45;border-color:var(--accent)}button.primary{background:var(--accent);color:#062018;border-color:var(--accent);font-weight:600}.topbar{grid-area:top;display:flex;align-items:center;gap:12px;padding:6px 12px;background:var(--panel);border-bottom:1px solid var(--line);min-width:0}.brand{font-weight:700;white-space:nowrap}.brand .sub{color:var(--muted);font-weight:400;margin-left:6px}.actions{display:flex;gap:6px;overflow-x:auto;margin-left:auto;scrollbar-width:none}.stage{grid-area:stage;position:relative;min-width:0;min-height:0}#view{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:crosshair;display:block}.helm-controls{position:absolute;right:12px;bottom:12px;display:flex;gap:12px;align-items:flex-end;pointer-events:none}.helm-controls,.topbar,.line-card .btns{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}.helm-controls button{touch-action:manipulation}.thruster button{touch-action:none}.helm-controls>*{pointer-events:auto;background:#0a1620cc;border:1px solid var(--line);border-radius:var(--radius);padding:8px 10px}.throttle{display:flex;flex-direction:column;align-items:center;gap:4px;width:74px}.throttle input{writing-mode:vertical-lr;direction:rtl;height:150px;width:28px;accent-color:var(--accent)}.throttle .lbl{font-size:11px;color:var(--muted)}.throttle output{font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap;font-size:13px}.throttle-quick{display:flex;flex-direction:column;gap:4px;width:100%}.throttle-quick button{font-size:12px;padding:3px 4px}.wheel{width:250px;display:flex;flex-direction:column;gap:6px}.wheel input{width:100%;accent-color:#f87171}.wheel output{text-align:center;font-variant-numeric:tabular-nums}.wheel-lbl{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--muted)}.wheel-lbl button{font-size:12px;padding:2px 8px}.thruster{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--muted);gap:6px}.slip-steer{display:flex;flex-direction:column;gap:4px;border-top:1px solid var(--line);padding-top:6px}.slip-steer input{width:100%;accent-color:#fbbf24}.ease-row{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}.ease-row input{flex:1;accent-color:#fbbf24}.slip-steer output{text-align:center;font-size:12px}.crew-warn{color:#fbbf24;font-weight:600}.thruster button.active{background:#3b2f6b;border-color:#a78bfa}.banner{position:absolute;top:14px;left:50%;transform:translate(-50%);background:#14532deb;border:1px solid var(--good);padding:10px 18px;border-radius:var(--radius);font-weight:600;max-width:calc(100% - 32px);text-align:center}.panel{grid-area:panel;background:var(--panel);border-left:1px solid var(--line);overflow-y:auto;padding:4px 12px 12px;display:flex;flex-direction:column;min-height:0}.panel section{padding:8px 0;border-bottom:1px solid var(--line)}.panel h2{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:4px 0 8px}.target{margin:0 0 4px;font-weight:600;color:var(--accent)}.best{margin:0 0 8px;font-size:12px;color:var(--accent-2)}.checklist{list-style:none;margin:0 0 8px;padding:0;font-size:13px}.checklist li{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 6px;padding:2px 0}.checklist .mark{width:1.1em;text-align:center;font-weight:700}.checklist li.done{color:var(--good)}.checklist li.open .mark{color:var(--muted)}.checklist .lbl{flex:1}.checklist .extra{font-size:11px;color:var(--accent-2);font-variant-numeric:tabular-nums}.checklist li.done .extra{color:var(--good)}.task-msg{margin:0 0 8px;font-size:13px;color:var(--text);min-height:1.2em}.kv{display:grid;grid-template-columns:1fr auto;gap:3px 10px;font-size:13px}.kv span{color:var(--muted)}.kv b{font-variant-numeric:tabular-nums;text-align:right;font-weight:600}.kv.small{font-size:12px}.rudder-gauge{position:relative;height:8px;background:var(--panel-2);border-radius:4px;margin-top:10px;overflow:hidden}.rudder-gauge div{position:absolute;top:0;bottom:0;background:#f87171}.rudder-gauge .mid{position:absolute;left:50%;top:0;bottom:0;width:1px;background:var(--muted)}.hint{font-size:12px;color:var(--muted);margin:0 0 8px}.hint.active{color:var(--accent-2)}.fender-btns{display:grid;grid-template-columns:1fr 1fr;gap:6px}.fender-btns button{font-size:12px;padding:4px 6px}.fender-btns+.fender-btns{margin-top:6px}.fender-btns button:disabled{opacity:.45;cursor:default}.line-card{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);padding:6px 8px;margin-bottom:6px;font-size:12px}.line-card.sel{border-color:var(--accent-2)}.line-card .head{display:flex;justify-content:space-between;gap:6px;cursor:pointer}.line-card .meta{color:var(--muted);margin:2px 0 6px;font-variant-numeric:tabular-nums}.tension{height:4px;background:#0b151c;border-radius:2px;overflow:hidden;margin-bottom:6px}.tension div{height:100%;background:linear-gradient(90deg,#4ade80,#fbbf24,#f87171)}.line-card .btns{display:flex;gap:4px;flex-wrap:wrap}.line-card .btns button{font-size:11px;padding:2px 6px}.line-card .btns button.on{background:#4a3a12;border-color:var(--accent-2)}.line-card .btns button.release{margin-left:auto;border-color:#7f3a3a}.log-section{flex:1;border-bottom:none!important}.log{list-style:none;margin:0;padding:0;font-size:12px;max-height:220px;overflow-y:auto}.log li{padding:2px 0;color:var(--muted)}.log li .t{font-variant-numeric:tabular-nums;margin-right:6px;opacity:.7}.log li.warn{color:var(--warn)}.log li.bad{color:var(--bad)}.log li.good{color:var(--good)}dialog{background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:12px;padding:18px 20px;width:min(760px,calc(100vw - 24px));max-height:calc(100vh - 24px)}dialog::backdrop{background:#0000008c}dialog h2{margin:0 0 12px}dialog h3{font-size:14px;margin:12px 0 4px;color:var(--accent)}dialog menu{display:flex;justify-content:flex-end;gap:8px;padding:0;margin:16px 0 0}.help-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;font-size:14px}.help-grid ul{padding-left:18px;margin:4px 0}.help-grid li{margin:3px 0}kbd{background:var(--panel-2);border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;padding:0 5px;font-size:12px}.form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px 14px}.form-grid label,.preset-row{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--muted)}.form-grid input,.form-grid select,.preset-row select,textarea{background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:5px 7px;color:var(--text)}fieldset{border:1px solid var(--line);border-radius:var(--radius);margin:12px 0 0;padding:8px 12px 12px}legend{color:var(--accent);font-size:13px;padding:0 4px}.presets{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:14px;font-size:12px;color:var(--muted)}.errors{color:var(--bad);font-size:13px;min-height:1em}textarea{width:100%;font-family:ui-monospace,Menlo,monospace;font-size:12px;margin:8px 0}details summary{cursor:pointer;color:var(--muted);margin-top:8px}.row{display:flex;gap:8px}@media(max-width:900px){body{grid-template-columns:1fr;grid-template-rows:auto 1fr 38vh;grid-template-areas:"top" "stage" "panel"}.panel{border-left:none;border-top:1px solid var(--line)}.brand .sub{display:none}.form-grid{grid-template-columns:1fr 1fr}.help-grid{grid-template-columns:1fr}.wheel{width:180px}.throttle input{height:110px}}@media(max-width:480px){.helm-controls{left:8px;right:8px;bottom:8px;justify-content:space-between}.wheel{flex:1;width:auto}}[hidden]{display:none!important}.task-title{margin:0 0 2px;font-weight:700}.task-title .diff{color:var(--accent-2);margin-right:6px;letter-spacing:1px}.task-brief-box{font-size:12px;color:var(--muted);margin:0 0 6px}.task-brief-box summary{margin:0}.task-brief-box p{margin:4px 0 0}.task-btns{display:flex;gap:6px;margin-bottom:8px}.task-btns button{font-size:12px;padding:4px 8px}dialog.wide{width:min(900px,calc(100vw - 24px))}.tasks-top{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.task-progress{color:var(--accent-2);font-weight:600}.task-filter{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.filter-row{display:flex;flex-wrap:wrap;gap:6px;width:100%}.task-filter button{font-size:12px}.task-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px;max-height:calc(100vh - 240px);overflow-y:auto;padding-right:2px}.task-card{background:var(--panel-2);border:1px solid var(--line);border-left:4px solid var(--line);border-radius:var(--radius);padding:8px 10px;display:flex;flex-direction:column;gap:5px;font-size:13px}.task-card.d1{border-left-color:#4ade80}.task-card.d2{border-left-color:#a3e635}.task-card.d3{border-left-color:#fbbf24}.task-card.d4{border-left-color:#fb923c}.task-card.d5{border-left-color:#f87171}.task-card.active{outline:2px solid var(--accent)}.task-head{display:flex;align-items:baseline;gap:8px}.task-head .diff{color:var(--accent-2);letter-spacing:1px;font-size:11px;white-space:nowrap}.task-head b{flex:1}.task-best{color:var(--accent-2);white-space:nowrap;font-size:12px}.task-open{color:var(--muted);font-size:12px}.task-sum{color:var(--text);font-size:12px}.task-brief{color:var(--muted);font-size:12px}.task-foot{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:auto}.tags{display:flex;flex-wrap:wrap;gap:4px}.tag{font-size:10px;color:var(--muted);border:1px solid var(--line);border-radius:10px;padding:0 6px}.banner button{margin-left:10px}.prepared{list-style:none;margin:6px 0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:12px}.prepared li{display:flex;align-items:center;gap:6px;border:1px dashed var(--line);border-radius:var(--radius);padding:4px 6px}.prepared li span{flex:1}.prepared button{font-size:11px;padding:2px 6px}.prep-hint{margin:8px 0 4px}.bench-wrap{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-start}table.bench{border-collapse:collapse;font-size:12px;flex:1 1 380px}table.bench th,table.bench td{border-bottom:1px solid var(--line);padding:4px 6px;text-align:left;vertical-align:top}table.bench td.num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}table.bench tr.off td{color:#fbbf24}table.bench .basis{color:var(--muted);font-size:11px;margin-top:2px}table.bench .src a{color:#7dd3fc}.bench-sketch{background:#0a162099;border:1px solid var(--line);border-radius:var(--radius)}#bench-box figure{margin:0}#bench-box figcaption{font-size:11px;color:var(--muted)}
