:root{--bg:#101014;--panel:#18181f;--border:#2c2c36;--text:#d8d8e0;--muted:#8a8a96;--accent:#ffd400;--link:#8ab4f8;--gutter-width:78px;--tape-height:25px;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:13px}*{box-sizing:border-box}html,body{height:100%;margin:0;overflow:hidden}body{flex-direction:column;display:flex}#topbar{border-bottom:1px solid var(--border);background:var(--panel);align-items:center;gap:10px;padding:6px 12px;display:flex}#topbar h1{white-space:nowrap;margin:0 8px 0 0;font-size:14px;font-weight:600}#status{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.spacer{flex:1}button,.button,select,input[type=text],input[type=number]{font:inherit;color:var(--text);border:1px solid var(--border);background:#22222b;border-radius:4px;padding:4px 8px}button,.button{cursor:pointer;white-space:nowrap}button:hover,.button:hover{border-color:var(--muted)}button:disabled{opacity:.5;cursor:default}#main{flex:1;min-height:0;display:flex;position:relative}#controls{overscroll-behavior:contain;border-right:1px solid var(--border);background:var(--panel);flex:none;width:250px;padding:10px;overflow-y:auto}#controls.closed{display:none}#controls-head{z-index:1;background:var(--panel);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:8px;margin:-10px -10px 10px;padding:8px 10px;display:flex;position:sticky;top:0}#controls-head h2{margin:0;font-size:13px;font-weight:600}fieldset{border:1px solid var(--border);border-radius:4px;margin:0 0 10px;padding:6px 8px 8px}legend{color:var(--muted);padding:0 4px}legend:has(.section-toggle){padding:0}.section-toggle{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:3px;align-items:center;gap:5px;padding:0 4px;display:flex}.section-toggle:hover{color:var(--text);border:none}.section-toggle:before{content:"";border-top:3.5px solid #0000;border-bottom:3.5px solid #0000;border-left:4px solid;width:0;height:0;transition:transform .12s;transform:rotate(90deg)}fieldset.collapsed .section-toggle:before{transform:rotate(0)}fieldset.collapsed .section-body{display:none}fieldset.collapsed{padding-bottom:2px}#options label{grid-template-columns:78px 1fr;align-items:center;gap:6px;margin:4px 0;display:grid}#options input,#options select{width:100%;min-width:0}#options input.invalid{border-color:#e0483e}#options label.check-row{align-items:center;gap:6px;display:flex}#options label.check-row input[type=checkbox]{width:auto;accent-color:var(--accent);margin:0}#options.filter-off #section-filter .slider,#options.filter-off #section-filter label:not(.check-row){opacity:.55}#options.filter-off .filter-only{display:none}#filter-note{margin:6px 0 0}#filter-note:empty{display:none}.slider{margin:6px 0 8px}.slider-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.slider-head label{margin:0;display:block}.slider-head output{color:var(--text);font:12px ui-monospace,Menlo,Consolas,monospace}.slider-head output.auto{color:var(--muted)}#options input[type=range]{width:100%;accent-color:var(--accent);background:0 0;border:none;margin:3px 0 0;padding:0}#options input[type=range]:disabled{opacity:.4}#db-hint{margin:0}#options input.clamped{border-color:#ffb14a}.hint{color:var(--muted);font-size:12px}#diagnostics{color:var(--muted);margin:8px 0}#diagnostics ul{max-height:200px;padding-left:18px;font-size:12px;overflow:auto}#viewer{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}#tape-row{height:var(--tape-height);flex:none;display:flex}#tape-corner{width:var(--gutter-width);background:#16161c;flex:none}#tape{background:#16161c;flex:1;min-width:0;display:block}#strips-row{flex:none;display:flex}#strips-row[hidden]{display:none}#strips-corner{width:var(--gutter-width);background:#16161c;flex:none}#strips{background:#121218;flex:1;min-width:0;height:100%;display:block}#plot{flex:1;min-height:0;display:flex}#scheme-list{flex-direction:column;gap:2px;margin-bottom:6px;display:flex}#options .scheme-row{cursor:pointer;align-items:center;gap:6px;margin:0;padding:2px 0;display:flex}#options .scheme-row input[type=checkbox]{width:auto;margin:0}.scheme-swatch{border-radius:2px;flex:none;width:10px;height:10px}.scheme-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.scheme-remove{color:var(--muted);padding:0 6px;line-height:1.2}#add-scheme{margin-top:6px}#scheme-json{width:100%;min-width:380px;color:var(--text);border:1px solid var(--border);resize:vertical;background:#22222b;border-radius:4px;padding:6px;font:12px ui-monospace,Menlo,Consolas,monospace}#scheme-error:empty{display:none}#gutter{width:var(--gutter-width);background:#16161c;flex:none;display:block}#heat-wrap{cursor:crosshair;touch-action:none;background:#2a2a32;flex:1;min-width:0;position:relative;overflow:hidden}#heat-wrap.panning{cursor:grabbing}#heat-wrap.placing{cursor:cell}.button-row{gap:6px;margin:4px 0;display:flex}button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#111}#signal-shape,#check-status{margin:4px 0}#check-status:empty{display:none}#pin-list{margin:6px 0 0;padding-left:22px;font:12px ui-monospace,Menlo,Consolas,monospace}#pin-list:empty{display:none}#pin-list li{margin:2px 0}#pin-list li::marker{color:var(--accent)}#pin-list .pin-row{align-items:stretch;gap:4px;display:flex}#pin-list .pin-go{min-width:0;font:inherit;text-align:left;white-space:normal;flex:1;padding:2px 6px}#pin-list .pin-detail{color:var(--muted);margin-top:1px;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:11px;display:block}#pin-list .pin-remove{color:var(--muted);flex:none;padding:0 7px;font-size:14px;line-height:1}#pin-list .pin-remove:hover{color:#e0483e;border-color:#e0483e}#options.absolute-threshold .relative-only,#options:not(.absolute-threshold) .absolute-only{display:none}#options.check-off #signal-check label:not(.check-row),#options.check-off #signal-check .hint,#options.check-off #signal-check .button-row{opacity:.55}#heat,#overlay{width:100%;height:100%;display:block;position:absolute;inset:0}#overlay{pointer-events:none}#empty{cursor:default;z-index:3;justify-content:center;align-items:center;padding:16px;display:flex;position:absolute;inset:0}#empty[hidden]{display:none}#empty-card{text-align:center;border:1px dashed var(--border);background:#18181feb;border-radius:8px;flex-direction:column;align-items:center;gap:12px;max-width:360px;padding:28px 32px;display:flex}#empty-title{margin:0;font-size:15px}#empty-open{border-color:var(--muted);padding:8px 18px;font-size:14px}#empty-open[hidden]{display:none}#empty-note{color:var(--muted);margin:0;font-size:12px}#tooltip{pointer-events:none;color:#fff;white-space:pre-line;z-index:2;background:#000c;border:1px solid #555;border-radius:3px;max-width:calc(100% - 8px);padding:4px 6px;font:12px ui-monospace,Menlo,Consolas,monospace;position:absolute}#footer{color:var(--muted);border-top:1px solid var(--border);background:var(--panel);white-space:pre-wrap;flex:none;min-height:22px;padding:4px 10px;font:11px ui-monospace,Menlo,Consolas,monospace}#drop{color:var(--accent);border:3px dashed var(--accent);z-index:10;pointer-events:none;background:#000000b3;justify-content:center;align-items:center;font-size:24px;display:flex;position:fixed;inset:0}#drop[hidden]{display:none}dialog{color:var(--text);background:var(--panel);border:1px solid var(--border);border-radius:6px;min-width:320px}dialog::backdrop{background:#0009}dialog h2{margin:0 0 10px;font-size:14px}dialog p{margin:0 0 10px;line-height:1.5}dialog a{color:var(--link)}dialog code{color:var(--text);font:12px ui-monospace,Menlo,Consolas,monospace}#about-dialog{max-width:440px}dialog label{align-items:center;gap:8px;display:flex}dialog menu{justify-content:flex-end;gap:8px;margin:12px 0 0;padding:0;display:flex}.warning{color:#ffb14a}@media (width<=720px){#topbar{flex-wrap:wrap;gap:6px 8px}#topbar h1{display:none}#status{flex-basis:100%;order:1}#status:empty,.spacer{display:none}#controls{z-index:5;border-right:1px solid var(--border);width:min(300px,86vw);transition:transform .18s,visibility .18s;position:absolute;top:0;bottom:0;left:0;box-shadow:0 0 24px #0000008c}#controls.closed{visibility:hidden;display:block;transform:translate(-100%)}}@media (prefers-reduced-motion:reduce){#controls{transition:none}}
