:root{--bg:#16181d;--panel:#1e2127;--panel-border:#2c3038;--text:#e6e8eb;--muted:#8a919c;--stock-stroke:#7a8494;--outside-dim:#08090c8c;--grid-minor:#262a32;--grid-major:#353b46;--cut:#e8e8e8;--ref:#7f9cb8;--accent:#4fc3f7;--hover:#ffd54f;--shadow:#9fa8da;--linked:#b8a35a;--warn:#ff5252;--snap:#ff9800;--kink:#ffb74d;--balance:#ce93d8;--rel-origin:#e879f9;--handle:#8d949e;--dimension:#a8dcf5;--dimension-halo:var(--bg);--ruler-tick:#4f5661;--ruler-tick-major:#7a8494;--ruler-label:var(--muted);--ruler-marker:var(--accent);--input-bg:#14161a;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{background:var(--bg);height:100%;color:var(--text);margin:0;font:13px/1.4 system-ui,sans-serif;overflow:hidden}.app{grid-template:"top top""main panel"1fr"footer footer"/1fr 280px;height:100%;display:grid}.top{background:var(--panel);border-bottom:1px solid var(--panel-border);grid-area:top}.main{grid-area:main;min-width:0;min-height:0;position:relative}.panel{background:var(--panel);border-left:1px solid var(--panel-border);grid-area:panel;overflow-y:auto}.footer{background:var(--panel);border-top:1px solid var(--panel-border);grid-area:footer}.canvas{cursor:crosshair;-webkit-user-select:none;user-select:none;touch-action:none;width:100%;height:100%;display:block}.canvas.resize{cursor:nwse-resize}.canvas *{pointer-events:none}.grid-minor{stroke:var(--grid-minor);stroke-width:1px}.grid-major{stroke:var(--grid-major);stroke-width:1px}.outside-stock{fill:var(--outside-dim)}.stock{fill:none;stroke:var(--stock-stroke);stroke-width:1.5px}.ruler-minor,.ruler-mid,.ruler-major{stroke:var(--ruler-tick);stroke-width:1px;shape-rendering:crispedges}.ruler-major{stroke:var(--ruler-tick-major)}.ruler-label{fill:var(--ruler-label);font-variant-numeric:tabular-nums;text-anchor:middle;dominant-baseline:central;font:10px system-ui,sans-serif}.ruler-marker{fill:var(--ruler-marker)}.seg{fill:none;stroke:var(--cut);stroke-width:1.5px}.seg.ref{stroke:var(--ref);stroke-dasharray:6 4}.seg.shadow{stroke:var(--shadow)}.seg.linked{stroke:var(--linked)}.seg.hover{stroke:var(--hover)}.seg.selected{stroke:var(--accent);stroke-width:2.5px}.seg.warn{stroke:var(--warn)}.hole circle{fill:none;stroke:var(--cut);stroke-width:1.5px}.hole path{stroke:var(--muted);stroke-width:1px}.hole.shadow circle{stroke:var(--shadow)}.hole.linked circle{stroke:var(--linked)}.hole.hover circle{stroke:var(--hover)}.hole.selected circle{stroke:var(--accent);stroke-width:2.5px}.hole.warn circle{stroke:var(--warn)}.text{fill:var(--cut);font-family:Helvetica,Arial,sans-serif}.text.shadow{fill:var(--shadow)}.text.linked{fill:var(--linked)}.text.selected{fill:var(--accent)}.text.warn{fill:var(--warn)}.node-dot{fill:var(--muted)}.node{fill:var(--bg);stroke:var(--cut);stroke-width:1.2px}.node.hover{stroke:var(--hover)}.node.selected{fill:var(--accent);stroke:var(--accent)}.node.warn{stroke:var(--warn)}.dim-chord{stroke:var(--dimension);stroke-width:2px;stroke-linecap:round;stroke-dasharray:0 5}.dim-label{fill:var(--dimension);font-variant-numeric:tabular-nums;text-anchor:middle;dominant-baseline:central;paint-order:stroke;stroke:var(--dimension-halo);stroke-width:4px;stroke-linejoin:round;font:11px system-ui,sans-serif}.handle line{stroke:var(--handle);stroke-width:1px}.handle circle{fill:var(--bg);stroke:var(--handle);stroke-width:1.2px}.handle.selected circle{fill:var(--accent);stroke:var(--accent)}.box-select{fill:#4fc3f714;stroke:var(--accent);stroke-dasharray:4 3}.snap-marker{fill:none;stroke:var(--snap);stroke-width:1.5px}.snap-guide{stroke:var(--snap);stroke-width:1px;stroke-dasharray:3 3;opacity:.8}.pen-preview path{fill:none;stroke:var(--accent);stroke-width:1.2px;stroke-dasharray:5 4}.pen-handle{stroke:var(--handle);stroke-width:1px}.rel-origin *{fill:none}.rel-origin-halo{stroke:var(--bg);stroke-width:4px}.rel-origin-mark{stroke:var(--rel-origin);stroke-width:1.5px}.panel-body{padding:12px 14px 24px}.panel h2{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 10px;font-size:13px}.panel h3{color:var(--muted);margin:16px 0 6px;font-size:12px;font-weight:600}.ref-section+.ref-section{border-top:1px solid var(--panel-border)}.section-toggle{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:4px;padding:0;display:flex}.section-toggle:hover{color:var(--text)}.section-toggle .caret{width:10px}.panel h4{color:var(--muted);margin:10px 0 2px;font-size:11px;font-weight:500}.chips{gap:4px;display:flex}.panel .chip{padding:2px 8px}.field{grid-template-columns:76px 1fr auto;align-items:center;gap:6px;margin:4px 0;display:grid}.field-label{color:var(--muted)}.field-unit{color:var(--muted);min-width:20px}.field input,.field select{background:var(--input-bg);width:100%;min-width:0;color:var(--text);border:1px solid var(--panel-border);font:inherit;font-variant-numeric:tabular-nums;border-radius:4px;padding:4px 6px}.field input:focus,.field select:focus{border-color:var(--accent);outline:none}.field input[readonly]{color:var(--muted);border-style:dashed}.field input.invalid{border-color:var(--warn)}.muted{color:var(--muted)}.topbar{flex-wrap:wrap;align-items:center;gap:6px 18px;padding:5px 12px;display:flex}.tb-group{align-items:center;gap:4px;display:flex}.tb-label{color:var(--muted);margin-right:4px}.tb-btn,.chip{background:var(--input-bg);color:var(--text);border:1px solid var(--panel-border);font:inherit;cursor:pointer;border-radius:4px;padding:3px 9px}.tb-btn:hover:not(:disabled),.chip:hover{border-color:var(--muted)}.tb-btn:disabled{color:var(--muted);opacity:.5;cursor:default}.chip.on{border-color:var(--accent);color:var(--accent);background:#4fc3f726}.tb-end{margin-left:auto}.topbar .field{grid-template-columns:auto 1fr auto;margin:0}.topbar .drill input{width:90px}.panel .divider{border:none;border-top:1px solid var(--panel-border);margin:18px -14px 14px}.bottombar{align-items:center;gap:16px;min-height:34px;padding:4px 12px;display:flex}.bottombar .status{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.bottombar .hint{color:var(--accent)}.readout{font-variant-numeric:tabular-nums;color:var(--muted);white-space:nowrap}.save-state{color:var(--muted);font-size:12px}.save-state.dirty{color:var(--hover)}.notice{min-width:0;color:var(--muted);white-space:nowrap;align-items:center;gap:6px;font-size:12px;display:flex}.notice>span{text-overflow:ellipsis;overflow:hidden}.notice.warn{color:var(--hover)}.notice-btn{background:var(--input-bg);color:var(--text);border:1px solid var(--panel-border);font:inherit;cursor:pointer;border-radius:4px;padding:0 6px}.notice-btn:hover{border-color:var(--muted)}.ctx-menu{z-index:10;background:var(--panel);border:1px solid var(--panel-border);border-radius:6px;min-width:180px;padding:4px;position:fixed;box-shadow:0 6px 20px #00000073}.ctx-menu.columns{grid-auto-flow:column;column-gap:4px;min-width:0;display:grid}.ctx-item{width:100%;color:var(--text);font:inherit;text-align:left;white-space:nowrap;cursor:default;background:0 0;border:none;border-radius:4px;align-items:center;padding:3px 8px;display:flex}.ctx-item:hover,.ctx-item.open{background:#4fc3f726}.ctx-check{width:1.2em;color:var(--accent)}.ctx-label{flex:1}.ctx-keys,.ctx-arrow{color:var(--muted);margin-left:24px;font-size:12px}.ctx-separator{background:var(--panel-border);height:1px;margin:4px 2px}.dialog{z-index:20;background:var(--panel);border:1px solid var(--panel-border);border-radius:8px;max-width:calc(100vw - 32px);position:fixed;left:50%;box-shadow:0 12px 40px #0000008c}.dialog-header{justify-content:space-between;align-items:baseline;margin-bottom:10px;display:flex}.dialog-header h2{margin:0;font-size:15px;font-weight:600}.keys{flex-wrap:wrap;justify-content:flex-end;gap:4px;display:inline-flex}kbd{background:var(--input-bg);border:1px solid var(--panel-border);color:var(--muted);font:inherit;white-space:nowrap;border-bottom-width:2px;border-radius:3px;padding:0 5px;font-size:12px}.palette{flex-direction:column;width:520px;max-height:70vh;display:flex;top:12vh;transform:translate(-50%)}.palette-input{background:var(--input-bg);color:var(--text);border:1px solid var(--accent);font:inherit;border-radius:4px;outline:none;margin:8px;padding:6px 10px;font-size:14px}.palette-list{margin:0;padding:0 4px 4px;list-style:none;overflow-y:auto}.palette-item{cursor:default;border-radius:4px;align-items:center;gap:12px;padding:4px 8px;display:flex}.palette-item.active{background:#4fc3f726}.palette-title{flex:1}.palette-empty{padding:2px 16px 10px}.library{flex-direction:column;width:620px;max-height:76vh;padding:14px 16px 12px;display:flex;top:12vh;transform:translate(-50%)}.library-list{margin:0;padding:0;list-style:none;overflow-y:auto}.library-row{border-radius:4px;align-items:center;gap:8px;padding:4px 6px;display:flex}.library-row:hover{background:#4fc3f714}.library-row.open{box-shadow:inset 2px 0 var(--accent)}.library-open{min-width:0;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;flex:1;align-items:center;gap:12px;padding:0;display:flex}.library-thumb{background:var(--bg);border-radius:3px;flex:none;width:132px;height:44px}.library-text{flex-direction:column;min-width:0;display:flex}.library-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.library-date{font-size:12px}.library-rename{background:var(--input-bg);min-width:0;color:var(--text);border:1px solid var(--accent);font:inherit;border-radius:4px;outline:none;flex:1;padding:3px 6px}.library-actions{flex:none;gap:4px;display:flex}.library-message{color:var(--hover);margin:8px 0 0}.library-footer{justify-content:flex-end;gap:8px;margin-top:12px;display:flex}.cheatsheet{width:1040px;max-height:calc(100vh - 32px);padding:14px 20px 8px;top:50%;overflow-y:auto;transform:translate(-50%,-50%)}.sheet-groups{columns:3 280px;column-gap:32px}.sheet-group{break-inside:avoid;margin-bottom:14px}.sheet-group h3{color:var(--accent);letter-spacing:.06em;text-transform:uppercase;margin:0 0 4px;font-size:11px;font-weight:600}.sheet-group table{border-collapse:collapse;width:100%}.sheet-group td{vertical-align:top;padding:2px 0}.sheet-group td:last-child{text-align:right;padding-left:12px}.kink{fill:none;stroke:var(--kink);stroke-width:1.5px;stroke-dasharray:3 2}.kink-hint{color:var(--kink)}.balance circle{fill:var(--bg);stroke:var(--balance);stroke-width:1.5px}.balance-fill{fill:var(--balance)}.popover{z-index:20;background:var(--panel);border:1px solid var(--panel-border);border-radius:8px;padding:10px 12px;position:fixed;box-shadow:0 12px 40px #0000008c}.settings{width:240px;top:44px;right:12px}
