@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=Manrope:wght@400;500;600;650;700;750;800&display=swap";:root{font-family:DM Sans,sans-serif;color:#26392e;background:#f5f6f2;font-synthesis:none;font-weight:400;--green: #355d43;--green-2: #557846;--accent: #7a9864;--muted: #858f82;--soft: #f1f4ec;--line: #e6e9e1;--warn: #af704f;--warn-bg: #faf3ee;--amber: #c38b54}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:background .15s,color .15s,border-color .15s}button:disabled{cursor:not-allowed;opacity:.45}a{transition:color .15s}button:focus-visible,a:focus-visible,summary:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #a0bd8b;outline-offset:3px}svg.lucide{width:17px;height:17px;stroke-width:1.7;flex-shrink:0}header{height:84px;padding:0 4.3%;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;background:#fafbf8}.brand{display:flex;align-items:center;gap:12px;color:#263c2f;text-decoration:none;font-family:Manrope,sans-serif;font-size:24px;font-weight:800;letter-spacing:-1px}.brand>.lucide{background:var(--green);color:#fff;width:39px;height:39px;padding:9px;border-radius:11px;stroke-width:1.5}.brand-light{font-weight:450}.brand small{display:block;font-family:DM Sans,sans-serif;letter-spacing:1.8px;font-size:8px;font-weight:500;margin-top:4px;color:#7e8a7d}.header-right{display:flex;gap:22px;align-items:center}.printer-pill{display:flex;gap:8px;align-items:center;font-size:12px;background:#eef2e9;border:1px solid #e1e7da;padding:8px 13px;border-radius:20px}.printer-pill b{width:6px;height:6px;border-radius:50%;background:#6b8d50}.quiet{border:0;background:transparent;color:#5f6d59;font-size:12.5px;padding:8px 10px;border-radius:6px}.quiet:hover,.quiet.selected{background:#edf1e8}.github{color:#85907e;border-left:1px solid var(--line);padding-left:22px}main{max-width:1500px;margin:auto;padding:40px 4.3% 0}.heading{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:28px}.eyebrow{font-size:10px;letter-spacing:2px;color:#7a8c6b;font-weight:650}h1{font-family:Manrope,sans-serif;font-size:36px;letter-spacing:-1.4px;font-weight:650;margin:10px 0;line-height:1.25}h1 span{color:var(--accent)}.heading p{font-size:14px;color:#7b8478;margin:0}.local{display:flex;align-items:center;gap:6px;font-size:11px;color:#7f887a;padding-bottom:3px}.local svg{width:13px}.workspace{display:grid;grid-template-columns:340px minmax(0,1fr);gap:24px;align-items:start}.controls{display:flex;flex-direction:column;gap:16px}.card{border:1px solid #e4e7de;border-radius:12px;background:#fff;box-shadow:0 1px 2px #2532200a}.controls .card{padding:20px}.section-title{display:flex;gap:10px;align-items:center}.step{display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:600;color:#6f8263;background:var(--soft);width:26px;height:26px;border-radius:7px;flex-shrink:0}h2{font-size:14px;font-weight:650;margin:0;letter-spacing:-.1px}.tag{font-size:8px;letter-spacing:.8px;color:#7f8e71;background:var(--soft);padding:4px 7px;border-radius:4px;margin-left:auto;font-weight:600}.hint{font-size:11.5px;line-height:1.65;color:#7f887a;margin:13px 0 0}.note{display:flex;gap:7px;margin-top:16px;color:#848d7d;font-size:11px;line-height:1.6}.note svg{width:13px;height:13px;margin-top:3px}.tabs{display:flex;background:#f3f5ef;padding:4px;border-radius:8px;margin:18px 0 14px;gap:4px}.tabs button{font-size:12px;color:#7b8577;border:none;border-radius:6px;background:transparent;flex:1;padding:9px 5px}.tabs button svg{width:14px;height:14px}.tabs button.active{background:#fff;color:#3f5842;box-shadow:0 1px 5px #0000000f}.dropzone{border:1px dashed #c3d0b6;background:#fafcf7;display:flex;flex-direction:column;width:100%;border-radius:8px;padding:22px 8px 18px;gap:6px;color:#7a8e6e}.dropzone>svg{height:27px;width:27px;margin-bottom:4px;stroke-width:1.25}.dropzone strong{font-size:13px;font-weight:550;color:#4f6148}.dropzone span{font-size:12px;color:#858e7f}.dropzone u{text-decoration:none;color:#5d7a4f;font-weight:550}.dropzone small{font-size:10px;margin-top:6px;color:#979f90}.dropzone:hover,.dropzone.dragging{background:#f0f6e9;border-color:#829e6e}.file-row{margin-top:12px;display:flex;align-items:center;gap:10px;padding:10px 12px;background:#f6f7f3;border:1px solid #eceee7;border-radius:7px}.file-row>svg{color:#8b9e7f;width:16px}.file-row div{flex:1;min-width:0}.file-row strong{display:block;font-size:12px;font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-row small{font-size:10.5px;color:#868f80;display:block;margin-top:3px}.icon-button{border:none;background:transparent;padding:6px;color:#7f8977;border-radius:6px}.icon-button:hover{background:#edf1e8}.icon-button svg{width:14px;height:14px}.text-label{font-size:12px;color:#6f7a69}textarea{resize:vertical;width:100%;border:1px solid #dce3d3;border-radius:7px;margin-top:8px;padding:12px;font-size:16px;color:#3f4f39;background:#fcfdf9}textarea:focus{outline:none;border-color:#95ab85;box-shadow:0 0 0 3px #edf3e7}.fields{margin-top:16px;gap:12px}.two{display:grid;grid-template-columns:1fr 1fr}.field{display:block;min-width:0}.field>span{display:flex;align-items:center;gap:6px;font-size:11.5px;color:#66725f;margin-bottom:6px}.field>div{border:1px solid #e0e5d8;border-radius:6px;padding:0 10px;height:38px;display:flex;align-items:center;background:#fcfdfa;min-width:0;transition:border-color .15s,box-shadow .15s}.field input{min-width:0;width:100%;outline:none;border:none;background:transparent;color:#36452f;font-size:13px;font-variant-numeric:tabular-nums;-moz-appearance:textfield}.field input::-webkit-inner-spin-button,.field input::-webkit-outer-spin-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0}.field>div:focus-within{border-color:#95ab85;box-shadow:0 0 0 3px #edf3e7}.field small{font-size:10.5px;color:#98a08f}.field em{display:block;font-style:normal;font-size:10.5px;color:#959d8d;margin-top:5px;line-height:1.4}.badge{display:inline-flex;align-items:center;justify-content:center;width:17px;height:17px;border-radius:50%;background:var(--green);color:#fff;font-size:9.5px;font-weight:700}.select-label{font-size:11.5px;display:block;color:#66725f;margin-top:18px}select{display:block;width:100%;background:#fcfdfa;border:1px solid #e0e5d8;border-radius:6px;height:38px;padding:0 10px;color:#3f4f39;font-size:13px;margin-top:6px}#measure{margin:14px -4px 0;background:#f9faf6;border:1px solid #eef0ea;border-radius:9px;padding:8px 6px 2px}.measure-svg{display:block;width:100%;height:auto;font-family:DM Sans,sans-serif}.m-plate{fill:#d9dfd2}.m-paper{fill:#fffefb;stroke:#d3d8cc;stroke-width:.8}.m-head{fill:#45584a}.m-nozzle{fill:#a9805a}.m-mount{fill:#b9c6ad}.m-pen{fill:#e8c477;stroke:#c9a356;stroke-width:.8}.m-pen-tip{fill:#3b3b3b}.m-ref{stroke:#557846;stroke-width:.8;stroke-dasharray:3 2.5}.m-ref.faint{stroke:#b9c4b0}.m-arrow{stroke:#557846;stroke-width:1.1}.m-arrow.strong{stroke:var(--green);stroke-width:1.4}.m-badge{fill:var(--green)}.m-badge-t{fill:#fff;font-size:9px;font-weight:700}.m-small{font-size:8.5px;fill:#5f6d58}.m-small.light{fill:#e9efe3}.m-small.strong{font-weight:650;fill:var(--green);font-size:9.5px}.m-tiny{font-size:7px;fill:#8b9585}.derived{display:grid;grid-template-columns:1fr 1fr;margin-top:14px;border:1px solid #e1e8d9;background:#f4f8ef;border-radius:8px}.derived>div{padding:10px 12px}.derived>div+div{border-left:1px solid #e1e8d9}.derived small{display:block;font-size:9px;letter-spacing:.9px;color:#6f8263;font-weight:600}.derived strong{display:block;font-family:Manrope,sans-serif;font-size:18px;font-weight:650;color:var(--green);margin-top:3px;font-variant-numeric:tabular-nums}details{margin-top:16px;border-top:1px solid var(--line);padding-top:12px}summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:550;color:#56664e;padding:6px 0;border-radius:5px}summary::-webkit-details-marker{display:none}summary span{flex:1}summary svg{width:14px;height:14px}summary .chev{transition:transform .2s}details[open] summary .chev{transform:rotate(180deg)}h3.sub{font-size:10px;letter-spacing:1px;text-transform:uppercase;color:#7e8f72;font-weight:650;margin:20px 0 -4px}.right-column{min-width:0;display:flex;flex-direction:column;gap:20px}.preview{overflow:hidden}.preview-bar{min-height:60px;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 18px;border-bottom:1px solid var(--line)}.segmented{display:flex;background:#f3f5ef;padding:3px;border-radius:8px;gap:3px}.segmented button{border:0;background:transparent;color:#6f7a69;font-size:12.5px;padding:8px 13px;border-radius:6px}.segmented button svg{width:15px;height:15px}.segmented button.active{background:#fff;color:#2f4c37;font-weight:550;box-shadow:0 1px 5px #0000000f}.canvas-wrap{background:#f9faf6;background-image:radial-gradient(#dfe4d8 .7px,transparent .7px);background-size:12px 12px;display:flex;align-items:center;justify-content:center;padding:18px 24px 6px}.canvas-wrap>svg{width:100%;max-height:600px;min-height:320px;font-family:DM Sans,sans-serif;user-select:none;-webkit-user-select:none}.bed{fill:#e9ece5;stroke:#cdd3c9;stroke-width:.6}.keepout{fill:#e6c7b7;opacity:.8}.keepout-label{font-size:3.6px;fill:#986647;font-weight:600;letter-spacing:.3px}.paper{fill:#fffefb;stroke:#d6dad0;stroke-width:.4}.paper-margin{fill:none;stroke:#e7e2d4;stroke-width:.3;stroke-dasharray:1 1.2}.paper-label{font-size:3.4px;fill:#a3a998;letter-spacing:.4px;font-weight:600}.reach{fill:none;stroke:#839b74;stroke-dasharray:2 2;stroke-width:.5}.overhang{stroke:#b57c54;stroke-width:.4;stroke-dasharray:.8 1}.overhang-label{font-size:2.8px;fill:#b57c54;letter-spacing:.4px;font-weight:600}.m-chip{fill:#355d43}.m-small.strong.chip{fill:#fff}.provisional{background:#f8f4ea;color:#7d6a45;padding:8px 10px;border-radius:6px}.start-mark{stroke:var(--amber);stroke-width:.5;fill:#fff8ef}.axis text{fill:#8d9687;font-size:4.2px;font-variant-numeric:tabular-nums}.dim line{stroke:#6b7d61;stroke-width:.35}.dim-bg{fill:#f9faf6}.dim text{font-size:4.4px;fill:#4c5e45;font-weight:650;letter-spacing:.2px}.front-label{font-size:3.8px;fill:#8d9687;letter-spacing:.8px;font-weight:600}.art{fill:none;stroke:#3d654a;stroke-width:.38;stroke-linecap:round;stroke-linejoin:round}.art.invalid{stroke:#b57c54}.selection{fill:none;stroke:#6f9461;stroke-width:.35;stroke-dasharray:1.6 1.2;opacity:.75}.selection.active{opacity:1;stroke:var(--green);fill:#355d430a}.corner{fill:#fff;stroke:#557846;stroke-width:.35}.size-bg{fill:#355d43}.size-label{font-size:3.6px;fill:#fff;font-weight:600;font-variant-numeric:tabular-nums}.snap{stroke:#d0763f;stroke-width:.35;stroke-dasharray:1.2 1}.travel{stroke:var(--amber);stroke-width:.4;stroke-dasharray:1.3 1.3;fill:none}#art-handle{fill:transparent;cursor:grab;touch-action:none;outline:none}#preview.dragging #art-handle{cursor:grabbing}#art-handle:focus-visible{stroke:#a0bd8b;stroke-width:1;stroke-dasharray:none;fill:#a0bd8b14}#art-handle:hover{fill:#355d4308}.iso-bed{fill:#e9ece5;stroke:#cdd3c9;stroke-width:.8}.iso-grid{stroke:#dce0d9;stroke-width:.5}.iso-keepout{fill:#e6c7b7;opacity:.85}.iso-paper{fill:#fffefb;stroke:#cfd4c8;stroke-width:.6}.iso-art polyline{fill:none;stroke:#3d654a;stroke-width:.6;stroke-linejoin:round}.iso-edge{stroke:#7b8b70;stroke-width:1;fill:none}.iso-edge.hidden{stroke:#b6bfae;stroke-dasharray:4 4}.iso-dim{stroke:#6b7d61;stroke-width:.7}.iso-dim-label{font-size:11px;fill:#4c5e45;font-weight:650}.iso-axis{font-size:9px;fill:#8d9687;font-weight:600;letter-spacing:1px}.iso-callout{font-size:9.5px;fill:#4c5e45;font-weight:550}.iso-hotend{stroke:#45584a;stroke-width:7;stroke-linecap:round}.iso-nozzle{fill:#a9805a}.iso-mount{stroke:#9fb090;stroke-width:4;stroke-linecap:round}.iso-pen{stroke:#d8b25e;stroke-width:4;stroke-linecap:round}.iso-tip{fill:#3b3b3b}.iso-drop{stroke:var(--amber);stroke-width:1;stroke-dasharray:3 2}.iso-shadow{fill:#3d654a55}.legend{display:flex;align-items:center;flex-wrap:wrap;gap:8px 18px;padding:12px 22px 16px;background:#f9faf6;font-size:11px;color:#6f7a69}.legend>span{display:flex;align-items:center;gap:6px}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--green-2)}.dot.dashed{background:transparent;border:1px dashed #8eaa78;border-radius:1px;width:9px;height:9px}.dot.gray{background:#fffefb;border:1px solid #d3d7cd;border-radius:2px}.dot.start{background:#fff8ef;border:1.5px solid var(--amber)}.dot.keep{background:#e6c7b7;border-radius:2px}.dot.overhang{background:transparent;border-left:1.5px dashed #b57c54;border-radius:0;width:3px}.dot.pen{background:#d8b25e;border-radius:2px}.legend .bed-size{margin-left:auto;color:#8f9886}.placement{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 20px;align-items:end;padding:16px 22px 18px;border-top:1px solid var(--line)}.place-title{display:flex;gap:10px;align-items:flex-start;align-self:center}.place-title>svg{color:var(--green-2);margin-top:2px}.place-title b{display:block;font-size:13px;font-weight:650}.place-title small{display:block;font-size:11.5px;color:#7f887a;margin-top:3px;line-height:1.5}.place-fields{display:flex;gap:10px;align-items:flex-end}.place-fields .field{width:112px}.place-fields .secondary{height:38px;padding:0 14px}.place-readout{grid-column:1 / -1;margin:0;font-size:11px;color:#848d7d;font-variant-numeric:tabular-nums}.place-readout:empty{display:none}.metrics{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);padding:20px 4px}.metrics>div{padding:0 22px;border-right:1px solid var(--line)}.metrics>div:last-child{border:0}.metrics small{display:block;font-size:9px;letter-spacing:1.1px;color:#7f8e71;font-weight:600}.metrics strong{font-family:Manrope,sans-serif;display:block;font-size:22px;font-weight:550;letter-spacing:-.5px;margin-top:6px;color:#4a6141;font-variant-numeric:tabular-nums}.export{padding:22px}.export-heading{display:flex;align-items:center;justify-content:space-between}.status{font-size:11px;font-weight:550;color:#8f7647;background:#f8f4ea;padding:6px 10px;border-radius:5px}.status.ready{color:#3f6a43;background:#eff5e9}.export-copy{font-size:12.5px;color:#7b8575;margin:12px 0 16px;line-height:1.6}.check{display:flex;align-items:flex-start;gap:10px;font-size:12px;line-height:1.6;color:#5f6c58;margin:10px 0;padding:10px 12px;border:1px solid #edf0e8;border-radius:8px;cursor:pointer}.check:has(input:checked){background:#f4f8ef;border-color:#d6e2cb}.check input{margin:3px 0 0;accent-color:var(--green);width:15px;height:15px;flex-shrink:0}.export-actions{display:flex;gap:12px;margin-top:18px}.primary,.secondary{padding:13px 17px;border-radius:7px;font-size:12.5px;font-weight:550}.primary{background:#365d43;color:#fff;border:1px solid #365d43;flex:1}.primary:hover:not(:disabled){background:#244a32}.secondary{background:#fff;border:1px solid #d6dfcc;color:#4f6447}.secondary:hover:not(:disabled){background:#f5f8f0}.export-actions svg{width:15px;height:15px}.export-foot{display:flex;align-items:center;justify-content:center;gap:6px;font-size:11px;color:#8a9480;margin-top:13px}.export-foot svg{width:13px;height:13px}.export .hint{font-size:11px;text-align:center}.full{width:100%;margin-top:14px}.error,.validation-error{font-size:12px;color:var(--warn);line-height:1.6}.error:empty{display:none}.validation-error{padding:8px 11px;background:var(--warn-bg);border-radius:6px;margin:8px 0}footer{display:flex;justify-content:space-between;align-items:center;padding:27px 0;font-size:11px;color:#8f9884}footer>span{display:flex;align-items:center;gap:7px}footer svg{width:12px!important;height:12px!important}footer b{font-weight:400;margin:0 3px;color:#b7bfae}dialog{border:1px solid #dde5d4;border-radius:16px;padding:35px;max-width:640px;color:#4f6147;box-shadow:0 20px 100px #16241730}dialog::backdrop{background:#1d2d2355;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}dialog h2{font-family:Manrope,sans-serif;font-size:23px;margin:15px 0}dialog p,dialog li{font-size:13px;line-height:1.75;color:#67745f}dialog li{margin-bottom:10px}dialog ol{padding-left:20px}dialog h3{font-size:14px;margin-top:24px}dialog a{color:#547744}dialog .close{float:right}dialog .close svg{width:19px;height:19px}[hidden]{display:none!important}@media(min-width:1500px){.workspace{grid-template-columns:360px minmax(0,1fr)}.canvas-wrap>svg{max-height:640px}}@media(max-width:1100px){.local{display:none}.workspace{grid-template-columns:300px minmax(0,1fr);gap:17px}.controls .card{padding:16px}.canvas-wrap{padding:14px 10px 4px}.legend{padding:12px 14px;font-size:10.5px;gap:6px 12px}.metrics>div{padding:0 14px}.metrics strong{font-size:19px}.placement{grid-template-columns:1fr;padding:14px}.export-actions{flex-direction:column}}@media(max-width:760px){header{height:70px;padding:0 18px}.brand{font-size:20px}.brand>.lucide{width:33px;height:33px;padding:8px}.brand small{font-size:6px}.header-right{gap:8px}.printer-pill,.github{display:none}main{padding:26px 14px 0}.heading{margin-bottom:22px}h1{font-size:29px}.heading p{font-size:13px;max-width:300px;line-height:1.6}.workspace{grid-template-columns:1fr}.right-column{display:contents}.preview{order:-1}.workspace{gap:16px}.controls .card{padding:18px}.preview-bar{padding:10px 12px}.segmented button{padding:8px 10px;font-size:12px}.canvas-wrap{padding:10px 4px 2px}.canvas-wrap>svg{min-height:0}.place-fields{flex-wrap:wrap}.place-fields .field{flex:1;width:auto;min-width:100px}.place-fields .secondary{flex-basis:100%}.metrics>div{padding:0 12px}.metrics small{font-size:8px}.metrics strong{font-size:18px}.export-actions{flex-direction:row}.export-actions button{padding:12px 10px;font-size:12px}footer{align-items:flex-start;gap:14px;flex-direction:column}dialog{padding:24px;max-width:calc(100vw - 24px)}}
