:root{--ink: #1d1f22;--ink-2: #5d6168;--ink-3: #8b9097;--line: #e3e3df;--bg: #efefec;--panel: #fbfbfa;--accent: #e2541b;--accent-soft: #fde9df;--bad: #c42b2b;font:14px/1.4 ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}html,body{margin:0;height:100%}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;background:none;padding:0;-webkit-tap-highlight-color:transparent}button:disabled{cursor:not-allowed;opacity:.4}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}svg.lucide{width:16px;height:16px;stroke-width:1.8;flex-shrink:0}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}[hidden]{display:none!important}#app{height:100vh;height:100dvh;display:flex;flex-direction:column}.bar{height:48px;flex:none;display:flex;align-items:center;justify-content:space-between;padding:0 12px 0 18px}.mark{font-weight:650;letter-spacing:-.2px;display:flex;align-items:center;gap:9px}.mark b{width:10px;height:10px;border-radius:50%;background:var(--accent)}.bar nav{display:flex;gap:2px}.ghost{height:32px;padding:0 10px;border-radius:8px;color:var(--ink-2)}.ghost:hover{background:#e2e2de;color:var(--ink)}.stage{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 296px;gap:0}.canvas{position:relative;min-width:0;min-height:0;display:flex;align-items:center;justify-content:center;padding:8px 8px 12px 12px}.canvas.drop{outline:2px dashed var(--accent);outline-offset:-8px}#preview,#iso{width:100%;height:100%;display:block;touch-action:none;user-select:none;-webkit-user-select:none}.seg{position:absolute;top:12px;left:16px;z-index:1;display:flex;background:#e2e2de;border-radius:9px;padding:2px}.seg button{height:28px;padding:0 10px;border-radius:7px;color:var(--ink-2);font-size:13px}.seg button[aria-pressed=true]{background:#fff;color:var(--ink);box-shadow:0 1px 2px #0002}.seg.small{position:static}.seg.small button{width:34px;padding:0}.empty{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);margin:0;color:var(--ink-3);pointer-events:none;font-size:15px}.iso-note{position:absolute;bottom:16px;left:50%;transform:translate(-50%);margin:0;font-size:12px;color:var(--ink-3)}.bed{fill:#fff;stroke:#d4d4cf;stroke-width:.4}.grid-line{stroke:#eeeeea;stroke-width:.3}.grid-major{stroke:#dededa;stroke-width:.4}.unreachable{fill:#8b909714}.axis text{font-size:5.5px;fill:var(--ink-3)}.item .art{fill:none;stroke:var(--ink);stroke-width:1.2px;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.item .art path{vector-effect:non-scaling-stroke}.item.invalid .art{stroke:var(--bad)}.hit{fill:transparent;cursor:grab;outline:none}.dragging .hit{cursor:grabbing}.frame{fill:none;stroke:var(--accent);stroke-width:1.2px;vector-effect:non-scaling-stroke;pointer-events:none}.stem{stroke:var(--accent);stroke-width:1.2px;vector-effect:non-scaling-stroke;pointer-events:none}.handle{fill:#fff;stroke:var(--accent);stroke-width:1.5px;vector-effect:non-scaling-stroke}.handle.corner{cursor:nwse-resize}.handle.edge{cursor:ew-resize}.handle.rot{cursor:grab;fill:var(--accent)}.guide{stroke:var(--accent);stroke-width:1px;stroke-dasharray:4 3;vector-effect:non-scaling-stroke}.size-tag rect{fill:var(--ink)}.size-tag text{fill:#fff;font-size:11px;font-variant-numeric:tabular-nums}.panel{background:var(--panel);border-left:1px solid var(--line);padding:14px;display:flex;flex-direction:column;gap:12px;overflow-y:auto}.add{display:grid;grid-template-columns:1fr 1fr;gap:8px}.add button{height:40px;border-radius:10px;background:#fff;border:1px solid var(--line);font-weight:550}.add button:hover{border-color:var(--ink-3)}.group{display:flex;flex-direction:column;gap:8px;padding-top:12px;border-top:1px solid var(--line)}.group h2{margin:0;font-size:12px;font-weight:600;color:var(--ink-2)}textarea:focus-visible{outline:0;border-color:var(--accent)}textarea{width:100%;resize:vertical;min-height:64px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;font-size:15px}select{height:34px;flex:1;border:1px solid var(--line);border-radius:8px;background:#fff;padding:0 8px}.row{display:flex;gap:8px;align-items:center}.sel-head{display:flex;align-items:center;gap:4px}.sel-head strong{flex:1;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.icon{width:30px;height:30px;border-radius:7px;color:var(--ink-2)}.icon:hover{background:#ececea;color:var(--ink)}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:6px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.num{display:flex;align-items:center;height:34px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:0 8px;gap:6px;min-width:0}.num:focus-within{border-color:var(--accent)}.num span{color:var(--ink-3);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.num input{flex:1;min-width:0;border:0;outline:0;background:none;text-align:right;font-variant-numeric:tabular-nums;padding:0}.num small{color:var(--ink-3);font-size:11px}.lock{height:34px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink-3)}.lock[aria-pressed=true]{color:var(--accent)}.lock[aria-pressed=true] .lucide-lock-open,.lock[aria-pressed=false] .lucide-lock{display:none}.pen-foot{display:grid;grid-template-columns:1fr 1fr;gap:6px;align-items:center}.readout{font-size:12px;color:var(--ink-2);text-align:right}.readout b{color:var(--ink);font-variant-numeric:tabular-nums}#validation:empty{display:none}#validation p,#preflight-errors p{margin:0 0 4px;color:var(--bad);font-size:12.5px}.error{margin:-4px 0 0;color:var(--bad);font-size:12.5px}.error:empty{display:none}.primary{height:42px;border-radius:10px;background:var(--ink);color:#fff;font-weight:600;padding:0 16px}.primary:not(:disabled):hover{background:#000}.panel .primary{margin-top:auto;flex:none}.secondary{height:42px;border-radius:10px;background:#fff;border:1px solid var(--line);font-weight:550;padding:0 14px}dialog{border:0;border-radius:14px;padding:18px;width:min(440px,calc(100vw - 24px));color:var(--ink);box-shadow:0 20px 60px #0003}dialog::backdrop{background:#1d1f2240}dialog header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}dialog h2{margin:0;font-size:17px}dialog h3{margin:14px 0 6px;font-size:12px;font-weight:600;color:var(--ink-2)}.sheet{margin:0 0 0 auto;height:100vh;max-height:100vh;border-radius:0;width:min(360px,100vw)}.sheet .secondary{margin-top:18px;width:100%}.facts{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:0 0 12px}.facts div{background:#f3f3f1;border-radius:8px;padding:6px 8px}.facts dt{font-size:11px;color:var(--ink-3)}.facts dd{margin:0;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}#preflight-errors:empty{display:none}#preflight-errors{margin-bottom:8px}.check{display:flex;gap:10px;align-items:flex-start;padding:8px 0;font-size:13px;color:var(--ink-2);cursor:pointer}.check input{margin:2px 0 0;width:17px;height:17px;accent-color:var(--accent);flex:none}.check b{color:var(--ink);font-weight:600}.actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.fine{font-size:12px;color:var(--ink-3);margin:10px 0 0}.fine a,.link{color:var(--ink-2);text-decoration:underline;font-size:inherit}.steps{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:8px;color:var(--ink-2)}.iso-bed{fill:#fff;stroke:#cfcfca;stroke-width:.6}.iso-grid{stroke:#ececea;stroke-width:.5}.iso-edge{stroke:#b9bcc1;stroke-width:.8;fill:none}.iso-edge.hidden{stroke-dasharray:4 4;stroke:#d3d5d8}.iso-art polyline{fill:none;stroke:var(--ink);stroke-width:.8}.iso-head line{stroke-width:2.5;stroke-linecap:round}.iso-hotend,.iso-mount{stroke:#8b9097}.iso-pen{stroke:var(--accent)}.iso-drop{stroke:var(--accent);stroke-dasharray:2 3;stroke-width:1!important}.iso-tip{fill:var(--accent)}.iso-label{font-size:11px;fill:var(--ink-3)}@media(max-width:760px){#app{height:auto;min-height:100dvh}.stage{grid-template-columns:minmax(0,1fr)}.canvas{height:calc(min(100vw,70dvh) + 42px);padding:42px 6px 6px}.seg{top:8px;left:10px}.panel{border-left:0;border-top:1px solid var(--line);overflow:visible}.bar .ghost span{display:none}.facts{grid-template-columns:repeat(2,1fr)}}
