:root{font-family:var(--sans);color:var(--text)}body{background:var(--bg);margin:0}button,select,input{font:inherit;color:var(--text);font-size:13px}button,select{background:var(--paper);border:1px solid var(--line);cursor:pointer;border-radius:4px;padding:3px 10px}button:hover:not(:disabled),select:hover{background:var(--port)}button:disabled{opacity:.4;cursor:default}input{background:var(--paper);border:1px solid var(--ledOff);border-radius:4px;padding:4px 6px}input:focus,select:focus{outline:2px solid var(--accent);outline-offset:-1px}.app{grid-template-rows:auto 1fr 220px;grid-template-columns:230px 1fr 260px;height:100vh;display:grid}.toolbar{grid-column:1/4}.top{background:var(--paper);border-bottom:2px solid var(--line);align-items:center;gap:8px;padding:8px 12px;display:flex}.top .grow{flex:1}.brand{color:var(--line);letter-spacing:.02em;margin-right:4px;font-weight:700}.top .name{border-color:#0000;min-width:240px;font-weight:600}.top .name:hover{border-color:var(--ledOff)}.zoom{font-family:var(--mono);color:var(--muted);text-align:center;min-width:3.5em;font-size:12px}.notice{background:#fef9c3;border-bottom:1px solid #facc15;align-items:start;gap:8px;padding:6px 12px;display:flex}.notice pre{white-space:pre-wrap;font:inherit;flex:1;margin:0}h3{text-transform:uppercase;letter-spacing:.08em;color:var(--line);margin:0 0 8px;font-size:12px}.cat,.insp{background:var(--paper);padding:12px;overflow:auto}.cat{border-right:1px solid var(--ledOff)}.insp{border-left:1px solid var(--ledOff)}.cat input{box-sizing:border-box;width:100%}.cat ul{margin:8px 0;padding:0}.cat li{border:1px solid var(--ledOff);cursor:grab;background:var(--paper);border-radius:6px;margin:0 0 6px;padding:6px;list-style:none}.cat li:hover{border-color:var(--line)}.cat li b{font-family:var(--mono);color:var(--line);font-size:12px}.cat small{color:var(--muted);font-size:11px;display:block}.cat li svg{margin-bottom:4px;display:block}.rack{flex-direction:column;min-height:0;padding:8px 12px;display:flex;overflow:auto}.rack>svg{flex:auto;min-height:0}.rack svg g[role=button]:focus{outline:none}.tabs{flex-wrap:wrap;align-items:center;gap:4px;margin-bottom:6px;display:flex}.rackctl{border-left:1px solid var(--ledOff);color:var(--muted);align-items:center;gap:2px;margin-left:8px;padding-left:8px;font-size:12px;display:inline-flex}.rackctl button{padding:1px 6px}.racku{width:46px}.rackgap{color:var(--muted);margin-left:8px;font-size:12px}.rackgap input{width:56px}.tabs button.on{background:var(--line);color:#fff}.tabs .rackname{color:var(--line);width:140px;font-weight:600}.armed{color:var(--ok);margin-left:12px;font-weight:600}.tbl{background:var(--paper);border-top:2px solid var(--line);grid-column:1/4;overflow:auto}.cables{border-collapse:collapse;width:100%;font:12px var(--mono)}.cables th{background:var(--paper);color:var(--line);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--line);font-size:11px;position:sticky;top:0}.cables th,.cables td{text-align:left;border-bottom:1px solid #eef2f7;padding:4px 10px}.cables tbody tr{cursor:pointer}.cables tbody tr:hover{background:var(--bg)}.cables tr.sel{background:var(--port)}.insp label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:8px 0;font-size:11px;display:block}.insp input,.insp select{box-sizing:border-box;text-transform:none;width:100%;margin-top:2px}.insp p{font-family:var(--mono);font-size:12px}.err,.fatal{color:var(--bad)}.hint{color:var(--muted);font-size:12px}.print{display:none}@media print{.app,.fatal{display:none!important}.print{font-family:system-ui,sans-serif;display:block}.print section{break-after:page}.print section:last-child{break-after:auto}.print .cover{text-align:center;padding-top:30vh}.print svg{width:100%;max-height:24cm}.print .cables{border-collapse:collapse;width:100%;font-size:9pt}.print .cables th,.print .cables td{border:1px solid #999;padding:2px 4px}}
