.lab{--ink:#181818;--muted:#8a8a80;--line:#e2e2dc;--paper:#f7f7f4;--red:#d0342c;--green:#167d4a;--amber:#e08a2e;--blue:#2f6fd0;--warn:#f0d3cf;--lab-top:64px;--lab-panel:320px;background:var(--paper);min-height:100vh;color:var(--ink);font:14px/1.5 ui-sans-serif,-apple-system,Helvetica Neue,sans-serif}.lab *{box-sizing:border-box}.lab-top{z-index:5;min-height:var(--lab-top);border-bottom:1px solid var(--line);background:#fff;flex-wrap:wrap;align-items:center;gap:12px 18px;padding:10px 20px;display:flex;position:sticky;top:0}.lab-title{flex-direction:column;min-width:120px;display:flex}.lab-eyebrow{letter-spacing:-.01em;font-size:13px;font-weight:700}.lab-sub{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;max-width:160px;font-size:11px;overflow:hidden}.lab-text{align-items:center;gap:8px;display:flex}.lab-text-input{border:1px solid var(--line);letter-spacing:.04em;width:150px;height:36px;color:var(--ink);background:#fff;border-radius:8px;padding:0 12px;font:600 18px/1 ui-sans-serif,-apple-system,Helvetica Neue,sans-serif}.lab-text-input:focus{outline:2px solid var(--ink);outline-offset:-1px}.lab-glyphs{gap:5px;display:flex}.lab-glyph{border:1px solid var(--line);min-width:34px;height:34px;color:var(--ink);cursor:pointer;background:#fff;border-radius:8px;padding:0 8px;font:600 17px/1 ui-sans-serif,-apple-system,Helvetica Neue,sans-serif}.lab-glyph.wide{letter-spacing:.04em;font-size:13px}.lab-glyph.active{background:var(--ink);color:#fff;border-color:var(--ink)}.lab-mode{border:1px solid var(--ink);border-radius:999px;flex:none;display:flex;overflow:hidden}.lab-seg{color:var(--ink);font:inherit;cursor:pointer;white-space:nowrap;background:#fff;border:0;padding:7px 16px;font-size:13px;font-weight:600}.lab-seg.active{background:var(--ink);color:#fff}.lab-seg.small{padding:4px 10px;font-size:12px;font-weight:500}.lab-segs{border:1px solid var(--line);border-radius:999px;width:max-content;max-width:100%;display:flex;overflow:hidden}.lab-segs .lab-seg+.lab-seg{border-left:1px solid var(--line)}.lab-segs .lab-seg:disabled{color:var(--muted);cursor:default}.lab-quick{flex-wrap:wrap;gap:6px;margin-left:6px;display:flex}.lab-font{align-items:center;gap:12px;margin-left:auto;display:flex}.lab-primary{white-space:nowrap;background:var(--ink);color:#fff;font:inherit;cursor:pointer;border:0;border-radius:999px;padding:8px 16px;font-weight:600}.lab-quiet{white-space:nowrap;border:1px solid var(--line);color:var(--ink);font:inherit;cursor:pointer;background:#fff;border-radius:999px;padding:5px 12px;font-size:12px}.lab-quiet:hover{border-color:#c9c9c1}.lab-quiet:disabled{opacity:.4;cursor:default}.lab-body{grid-template-columns:minmax(0, 1fr) var(--lab-panel);align-items:start;gap:16px;padding:16px 20px;display:grid}.lab-stage{top:calc(var(--lab-top) + 16px);min-width:0;height:calc(100vh - var(--lab-top) - 32px);border:1px solid var(--line);background:#fff;border-radius:10px;place-items:center;padding:12px;display:grid;position:sticky;overflow:hidden}.lab-stage svg{width:100%;height:100%;max-height:calc(100vh - var(--lab-top) - 56px);cursor:grab;touch-action:none}.lab-stage svg:active{cursor:grabbing}.lab-drop{color:var(--muted);text-align:center;line-height:1.8}.lab-drop code{background:var(--paper);border-radius:4px;padding:2px 6px;font:12.5px ui-monospace,monospace}.lab-error{color:var(--red);text-align:center;font-size:12.5px}.lab-monoline{fill:var(--ink);fill-rule:nonzero}.lab-final .lab-stage{background:#fff}.lab-source{fill:none;stroke:var(--red);stroke-width:1.2px;opacity:.8}.lab-ir path{fill:none;stroke-width:1.8px;stroke-linecap:round}.lab-ir .straight{stroke:var(--green)}.lab-ir .curved,.lab-ir .measured{stroke:var(--blue)}.lab-ir .reconstructed{stroke:#1a9c4b;stroke-width:2.8px}.lab-ir .kept{stroke:var(--red);stroke-width:2.8px}.lab-rebuilt .reconstructed{stroke:#22c55e;stroke-width:3.4px}.lab-attachments .zone{fill:#d0342c0a;stroke:var(--red);stroke-width:1px;stroke-dasharray:4 3}.lab-attachments .disk{fill:none;stroke:var(--red);stroke-width:.8px;opacity:.6}.lab-attachments .anchor{fill:var(--red)}.lab-cuts line{stroke:var(--green);stroke-width:1.6px;stroke-dasharray:6 4}.lab-nodes .junction,.lab-nodes .terminal{fill:var(--amber)}.lab-pen path{fill:var(--blue);fill-opacity:.12;stroke:var(--blue);stroke-width:1.2px}.lab-pen-marks line{stroke:var(--red);stroke-width:1.2px;stroke-linecap:butt}.lab-widths .measured{fill:none;stroke:var(--red);stroke-width:1px;stroke-dasharray:3 3}.lab-widths .fitted{fill:none;stroke:var(--blue);stroke-width:1.4px}.lab-panel{top:calc(var(--lab-top) + 16px);max-height:calc(100vh - var(--lab-top) - 32px);flex-direction:column;gap:12px;display:flex;position:sticky;overflow-y:auto}.lab-card{border:1px solid var(--line);background:#fff;border-radius:10px;padding:14px 16px}.lab-row{align-items:center;gap:12px;margin-bottom:14px;display:flex}.lab-row .lab-label{flex:none;margin:0}.lab-label{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:8px;font-size:10.5px;font-weight:600}.lab-hint{color:var(--muted);text-transform:none;letter-spacing:0;font-size:11px;font-weight:400}p.lab-hint{margin:8px 0 0;line-height:1.5}.lab-axis{margin-top:10px}.lab-axis-head{align-items:center;gap:10px;margin-bottom:4px;display:flex}.lab-axis-head .lab-label{flex:1;margin:0}.lab-axis-head output{font-variant-numeric:tabular-nums;font:600 15px ui-monospace,monospace}.lab-axis-head output.bad{color:var(--red)}.lab-slider{width:100%;accent-color:var(--ink);border-radius:999px}.lab-range{color:var(--muted);margin:4px 0 0;font:11px ui-monospace,monospace}.lab-presets{flex-wrap:wrap;gap:6px;margin-top:14px;display:flex}.lab-preset{border:1px solid var(--line);color:var(--ink);font:inherit;cursor:pointer;background:#fff;border-radius:999px;padding:4px 10px;font-size:12px}.lab-preset:hover{border-color:#c9c9c1}.lab-preset.active{background:var(--ink);color:#fff;border-color:var(--ink)}.lab-fold summary,.lab-more summary{cursor:pointer;color:var(--muted);font-size:12px;list-style:none}.lab-fold summary:before,.lab-more summary:before{content:"▸ ";font-size:10px}.lab-fold[open] summary:before,.lab-more[open] summary:before{content:"▾ "}.lab-fold summary.lab-label{margin-bottom:0}.lab-fold[open] summary.lab-label{margin-bottom:12px}.lab-block{border-top:1px solid var(--line);padding:10px 0}.lab-block:first-of-type{border-top:0;padding-top:0}.lab-toggles{gap:6px;display:grid}.lab-toggles label{cursor:pointer;align-items:center;gap:9px;font-size:12.5px;display:flex}.lab-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font:11.5px ui-monospace,monospace}.lab-table th,.lab-table td{text-align:left;white-space:nowrap;border-bottom:1px solid var(--line);padding:3px 4px}.lab-table thead th{color:var(--muted);font-size:10.5px;font-weight:500}.lab-table tbody th{font:700 14px ui-sans-serif,sans-serif}.lab-table td.bad{color:var(--red);font-weight:700}.lab-metrics{gap:5px;margin:0;display:grid}.lab-metrics div{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.lab-metrics dt{color:var(--muted);font-size:12px}.lab-metrics dd{font-variant-numeric:tabular-nums;text-align:right;margin:0;font:12px ui-monospace,monospace}.lab-metrics dd.bad{color:var(--red);font-weight:700}.lab-list{color:var(--muted);margin:6px 0 0;padding-left:16px;font:11px/1.6 ui-monospace,monospace}.lab-more{border-top:1px solid var(--line);margin-top:12px;padding-top:10px}.lab-note{color:var(--muted);margin:10px 0 0;font-size:11.5px;line-height:1.6}.lab-note b{color:var(--ink)}@media (max-width:1100px){.lab-top{flex-wrap:wrap}.lab-body{grid-template-columns:1fr}.lab-stage{height:auto;min-height:50vh;position:static}.lab-stage svg{height:auto}.lab-panel{max-height:none;position:static}}.lab-pen-editor{border:1px solid var(--line);touch-action:none;background:#fff;border-radius:8px;width:100%;height:auto;display:block}.lab-pen-editor.idle{opacity:.5}.lab-pen-editor .axis{stroke:var(--line);stroke-width:1px}.lab-pen-editor .section{fill:#181818e6;stroke:none}.lab-pen-editor .ghost{fill:none;stroke:var(--muted);stroke-width:1px;stroke-dasharray:3 3}.lab-pen-editor .handle{cursor:grab}.lab-pen-editor .handle .hit{fill:#0000}.lab-pen-editor .handle circle:not(.hit){fill:#fff;stroke:var(--red);stroke-width:2px}.lab-pen-editor .handle:hover circle:not(.hit){fill:var(--red)}.lab-pieces path{fill:none;stroke:var(--blue);stroke-width:.5px;stroke-opacity:.8}.lab-favs{flex-direction:column;gap:4px;margin:8px 0 0;padding:0;list-style:none;display:flex}.lab-favs li{align-items:center;gap:4px;display:flex}.lab-fav-name{text-align:left;border:1px solid var(--line);min-width:0;color:var(--ink);font:inherit;cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:#fff;border-radius:8px;flex:1;padding:5px 10px;font-size:12px;overflow:hidden}.lab-fav-name:hover{border-color:#c9c9c1}.lab-favs li.active .lab-fav-name{background:var(--ink);color:#fff;border-color:var(--ink)}.lab-fav-act{color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;padding:4px 8px;font-size:11px}.lab-fav-act:hover{color:var(--ink);border-color:var(--line)}.lab-badge{background:var(--amber);color:#fff;letter-spacing:.08em;text-transform:uppercase;vertical-align:middle;border-radius:999px;margin-right:8px;padding:2px 8px;font:600 10px/1.6 ui-sans-serif,system-ui,sans-serif;display:inline-block}.lab-known ul{color:var(--ink);margin:6px 0 0;padding-left:18px;font-size:12px;line-height:1.5}.lab-known li+li{margin-top:3px}
/*$vite$:1*/