.measure .seg{display:flex;gap:4px}.measure .seg button.on{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}.measure .hint{padding-top:0}.measure .profile{display:block;width:calc(100% - 16px);margin:0 8px;max-height:260px;cursor:crosshair}.measure .profile .air{fill:var(--viewport)}.measure .profile .material{fill:#8a7a62;stroke:#b9a582;stroke-width:.6}.measure .profile .topline{stroke:var(--muted);stroke-width:.8;stroke-dasharray:3 2}.measure .profile .dim line{stroke:var(--accent);stroke-width:.7}.measure .profile .dim text{fill:var(--accent);font:7px var(--mono);text-anchor:middle}.measure .profile .dim text.depth{fill:var(--fg)}.measure .profile .cursor{stroke:#ffd166;stroke-width:.7}.measure .runs{width:100%;border-collapse:collapse;margin:6px 0 10px;font:11px var(--mono);font-variant-numeric:tabular-nums}.measure .runs th{color:var(--muted);font:10px var(--ui);text-align:right;padding:2px 4px;border-bottom:1px solid var(--line)}.measure .runs td{text-align:right;padding:2px 4px}.measure .runs th:first-child,.measure .runs td:first-child{padding-left:10px}.measure .runs .kind{color:var(--muted);text-align:left;font-family:var(--ui);white-space:nowrap}.measure-label{position:absolute;left:0;top:0;z-index:3;pointer-events:none;padding:2px 6px;border-radius:3px;background:#000000b3;color:#ffd166;font:11px var(--mono);white-space:nowrap}.measure .distances tr.lit td{background:#ffd16624}.measure .distances .remove{padding:0 2px}.measure-label.distance-pin{color:#e88a5f}.measure-label.distance-pin.lit{color:#ffd166;outline:1px solid #ffd166}:root{--bg: #15191e;--panel: #1d2228;--raised: #262c34;--line: #333b45;--fg: #dfe4ea;--muted: #8c96a3;--accent: #5fb0e8;--accent-fg: #0d1a24;--error: #f0605d;--warning: #e9b949;--current: #24384a;--viewport: #1b1f24;--ui: "IBM Plex Sans", system-ui, sans-serif;--mono: "IBM Plex Mono", ui-monospace, monospace;color-scheme:dark}@media (prefers-color-scheme: light){:root:not([data-theme=dark]){--bg: #eef1f4;--panel: #f8f9fb;--raised: #ffffff;--line: #d3d9e0;--fg: #1b2129;--muted: #5d6874;--accent: #1f6fae;--accent-fg: #ffffff;--error: #c93a37;--warning: #a8780c;--current: #d6e8f7;color-scheme:light}}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--fg);font:13px/1.4 var(--ui);overflow:hidden}button{font:inherit;color:var(--fg);background:var(--raised);border:1px solid var(--line);border-radius:4px;padding:3px 10px;cursor:pointer}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.5;cursor:default}button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}button.primary{background:var(--accent);color:var(--accent-fg);border-color:var(--accent);min-width:64px}button.link{background:none;border:none;color:var(--accent)}.muted{color:var(--muted)}.small{font-size:11px}.card{background:var(--panel);border:1px solid var(--line);border-radius:6px;box-shadow:0 4px 16px #00000040}.panelhead{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);border-bottom:1px solid var(--line)}.app{display:grid;height:100%;grid-template:"top top top" auto "side stage right" 1fr / 300px minmax(0,1fr) 340px}.topbar{grid-area:top;display:flex;justify-content:space-between;align-items:center;padding:6px 12px;border-bottom:1px solid var(--line);background:var(--panel)}.file,.actions{display:flex;gap:10px;align-items:center}.side{grid-area:side;overflow-y:auto;min-height:0;border-right:1px solid var(--line);background:var(--panel)}.stage{grid-area:stage;position:relative;min-height:0;min-width:0}.viewport{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--viewport)}.viewport canvas{display:block}.float{position:absolute;z-index:2}.tr{top:10px;right:10px;width:240px}.bc{left:50%;transform:translate(-50%);bottom:24px;padding:8px 10px}.transport{display:flex;gap:6px;align-items:center}.playback{display:grid;gap:6px;width:min(720px,calc(100% - 32px));box-sizing:border-box}.transport select{font:inherit;color:var(--fg);background:var(--raised);border:1px solid var(--line);border-radius:4px;padding:3px 4px}.runto{display:flex;gap:4px;margin-left:auto}.runto input{width:64px;font:12px var(--mono);color:var(--fg);background:var(--raised);border:1px solid var(--line);border-radius:4px;padding:3px 6px}.scrubber{position:relative}.scrubber input{width:100%;margin:0;accent-color:var(--accent)}.scrubber .marks{position:absolute;left:0;right:0;top:-4px;height:4px;pointer-events:none}.scrubber .mark{position:absolute;width:3px;height:8px;margin-left:-1px;border-radius:1px}.scrubber .mark.error{background:var(--error)}.scrubber .mark.warning{background:var(--warning)}.right{grid-area:right;display:grid;grid-template-rows:3fr 2fr;min-height:0;min-width:0;border-left:1px solid var(--line);background:var(--panel)}.program,.issuepane{display:flex;flex-direction:column;min-height:0}.issuepane{border-top:1px solid var(--line)}.gcode{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;font:12px/18px var(--mono)}.gline{position:absolute;left:0;right:0;display:grid;grid-template-columns:14px 52px minmax(0,1fr);cursor:pointer}.gline:hover:not(.current){background:var(--raised)}.gline .code{white-space:pre-wrap;overflow-wrap:anywhere;padding-right:8px}.gline.past{color:var(--muted)}.gline.current{background:var(--current);color:var(--fg)}.gline .num{color:var(--muted);text-align:right;padding-right:10px;font-variant-numeric:tabular-nums}.gutter{display:grid;place-items:center}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex:none}.dot.error{background:var(--error)}.dot.warning{background:var(--warning);border-radius:1px;transform:rotate(45deg) scale(.85)}.issues{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;list-style:none;margin:0;padding:0}.issue{display:grid;grid-template-columns:12px auto minmax(0,1fr);gap:6px;align-items:baseline;padding:6px 10px;border-bottom:1px solid var(--line)}.issue .message{min-width:0;overflow-wrap:anywhere}.issue .where{font-family:var(--mono);font-size:12px;color:var(--accent);background:none;border:none;padding:0;text-align:left;white-space:nowrap}.issue .where:hover{text-decoration:underline}.readout{padding:8px 10px;display:grid;gap:2px}.readout .axis{display:grid;grid-template-columns:16px 1fr 1fr;gap:8px;text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums}.readout .axis .label{text-align:left}.readout .label{color:var(--muted)}.readout .meta{margin-top:4px}.setup-section{border-bottom:1px solid var(--line)}.fields{display:grid;gap:6px;padding:8px 10px 12px}.fields .label{color:var(--muted);font-size:11px;display:flex;justify-content:space-between;align-items:baseline;margin-top:4px}.vec3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.vec3 label{display:flex;align-items:center;gap:4px;min-width:0}.vec3 input{min-width:0;width:100%;font:12px var(--mono);color:var(--fg);background:var(--raised);border:1px solid var(--line);border-radius:4px;padding:3px 5px}.vec3 input:focus{outline:none;border-color:var(--accent)}.origin{display:flex;gap:12px;align-items:center}.origin-grid{display:grid;grid-template-columns:repeat(3,22px);grid-template-rows:repeat(3,22px);gap:4px;padding:6px;border:1px dashed var(--line);border-radius:4px}.origin-grid button{padding:0;border-radius:50%;width:22px;height:22px}.origin-grid button.on,.face button.on{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}.face{display:flex;gap:4px}button.link.small{padding:0;font-size:11px}table.tools{width:100%;border-collapse:collapse;font-size:11px;table-layout:fixed}table.tools th{color:var(--muted);font-weight:400;text-align:left;padding:0 2px}table.tools th:first-child{width:30px}table.tools th:nth-child(2){width:30%}table.tools th:last-child{width:18px}table.tools td{padding:1px 2px}table.tools input,table.tools select,#starting-tool{min-width:0;width:100%;font:11px var(--mono);color:var(--fg);background:var(--raised);border:1px solid var(--line);border-radius:4px;padding:2px 3px}table.tools input:focus{outline:none;border-color:var(--accent)}table.tools input{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}table.tools input::-webkit-inner-spin-button,table.tools input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.row-actions{display:flex;justify-content:space-between}.tools-used{list-style:none;display:flex;flex-wrap:wrap;gap:4px 10px;margin:0;padding:0;font:12px var(--mono)}.tools-used .missing{color:var(--error, #d05050)}.triple{display:grid;gap:6px}.pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.pair label,label.pair{display:grid;gap:2px;min-width:0}.pair input,input.text{min-width:0;width:100%;font:12px var(--mono);color:var(--fg);background:var(--raised);border:1px solid var(--line);border-radius:4px;padding:3px 5px}input.text[aria-invalid=true]{border-color:var(--error, #d05050)}.guess{color:var(--warning, #c99a2e);font-size:10px;font-weight:600;cursor:help}.advanced summary{cursor:pointer}.advanced[open] summary{margin-bottom:4px}.label.check input{margin:0;vertical-align:middle}button.link:disabled{color:var(--muted);cursor:default}.notice{border:1px solid var(--warning, #c99a2e);border-radius:4px;padding:6px 8px;color:var(--fg);background:var(--raised)}.side>.notice{margin:8px 10px}.stats{display:grid;grid-template-columns:auto 1fr;gap:3px 10px;margin:0;padding:8px 10px;font-size:12px}.stats dt{color:var(--muted)}.stats dt.sub{padding-left:10px}.stats dd{margin:0;text-align:right;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.pad{padding:8px 10px;margin:0}.readout .axis.rate{grid-template-columns:auto 1fr}.cc{top:50%;left:50%;transform:translate(-50%,-50%)}.analysis{display:grid;gap:6px;padding:10px 12px;width:260px}.analysis .bar{display:grid;grid-template-columns:repeat(3,1fr);gap:3px}.analysis .segment{height:6px;border-radius:3px;background:var(--raised);overflow:hidden}.analysis .segment>span{display:block;height:100%;background:var(--accent)}select.resolution{font:12px var(--ui);color:var(--fg);background:var(--raised);border:1px solid var(--line);border-radius:4px;padding:3px 4px}
