*{box-sizing:border-box}html,body{margin:0;height:100%}body{font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px;color:#1f2937;background:#eef1f4;overscroll-behavior:none}#app{height:100%}input[type=number],input[type=text],input:not([type]),select{width:100%;padding:5px 8px;border:1px solid #d3d8de;border-radius:6px;background:#fff;font:inherit;font-size:13px;color:#1f2937}input:disabled{color:#b6bcc4;background:#f5f6f8}input:focus,select:focus{outline:2px solid #93b4f0;outline-offset:-1px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:5px 10px;border:1px solid #d3d8de;border-radius:6px;background:#fff;font:inherit;font-size:12.5px;color:#374151;cursor:pointer;white-space:nowrap}.btn:hover{background:#f1f3f6}.btn:disabled{color:#b6bcc4;cursor:default}.btn:disabled:hover{background:#fff}.btn.primary{background:#2563eb;border-color:#2563eb;color:#fff}.btn.primary:hover{background:#1d4ed8}.btn.danger{color:#b91c1c}.btn.danger:hover{background:#fceaea;border-color:#e5b5b5}.swatch{display:inline-block;width:14px;height:14px;border-radius:4px;border:1px solid rgba(0,0,0,.15);flex-shrink:0}.hint{margin:0;font-size:12.5px;color:#6b7280}.scene.svelte-r8xqwj{position:relative;flex:1;min-width:0;overflow:hidden}.scene.svelte-r8xqwj canvas{display:block}.scene.svelte-r8xqwj .dim-label{background:#1d4ed8eb;color:#fff;font-size:12px;font-weight:600;font-variant-numeric:tabular-nums;padding:2px 7px;border-radius:5px;white-space:nowrap;margin-top:-16px}.scene.svelte-r8xqwj .measure-label{background:#1f2937d9;color:#fff;font-size:11px;font-weight:600;font-variant-numeric:tabular-nums;padding:1px 6px;border-radius:5px;white-space:nowrap}.scene.svelte-r8xqwj .measure-label.selected{background:#1d4ed8eb}.tools.svelte-r8xqwj{position:absolute;top:10px;left:10px;display:flex;gap:6px}.tools.right.svelte-r8xqwj{left:auto;right:10px}.tool.svelte-r8xqwj{display:flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;border:1px solid #d3d8de;border-radius:6px;background:#ffffffe6;color:#4b5563;cursor:pointer}.tool.svelte-r8xqwj:hover{background:#fff;color:#111827}.tool.active.svelte-r8xqwj{background:#2563eb;border-color:#2563eb;color:#fff}.gizmo.svelte-r8xqwj{position:absolute;top:48px;right:10px;display:grid;grid-template-columns:repeat(3,15px);grid-auto-rows:15px;gap:2px}.face.svelte-r8xqwj{padding:0;border:1px solid #c8cfd6;border-radius:3px;background:#ffffffe6;cursor:pointer}.face.svelte-r8xqwj:hover{background:#dbeafe;border-color:#93b4f0}.measure-hint.svelte-r8xqwj{position:absolute;top:14px;left:50%;transform:translate(-50%);background:#ffffffd9;border:1px solid #dde1e6;border-radius:6px;padding:4px 12px;font-size:12px;color:#6b7280;white-space:nowrap;pointer-events:none}.empty-hint.svelte-r8xqwj{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:#6b7280;font-size:15px;pointer-events:none}.controls-hint.svelte-r8xqwj{position:absolute;bottom:10px;left:50%;transform:translate(-50%);background:#ffffffd9;border:1px solid #dde1e6;border-radius:6px;padding:4px 12px;font-size:12px;color:#6b7280;white-space:nowrap;pointer-events:none}.group.svelte-q2dh0f{margin-bottom:10px}h4.svelte-q2dh0f{display:flex;align-items:center;gap:6px;margin:0 0 4px;font-size:13px}.mat-name.svelte-q2dh0f{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.buy.svelte-q2dh0f{flex-shrink:0;font-size:11.5px;font-weight:500;color:#6b7280;font-variant-numeric:tabular-nums}.buy.link.svelte-q2dh0f{padding:0;border:none;background:none;font:inherit;font-size:11.5px;font-weight:500;color:#2563eb;cursor:pointer}.buy.link.svelte-q2dh0f:hover{text-decoration:underline}.nofit.svelte-q2dh0f{color:#dc2626}.cutrow.svelte-q2dh0f{display:flex;align-items:center;gap:8px;width:100%;padding:4px 8px;margin-bottom:2px;border:1px solid transparent;border-radius:5px;background:none;font:inherit;font-size:13px;font-variant-numeric:tabular-nums;color:#374151;text-align:left;cursor:pointer}.cutrow.svelte-q2dh0f:hover{background:#eef1f4}.cutrow.sel.svelte-q2dh0f{background:#e3ecfb;border-color:#b9cef2}.piece-row.svelte-q2dh0f{display:flex;align-items:center;gap:2px;margin-bottom:2px}.piece-row.svelte-q2dh0f .pick:where(.svelte-q2dh0f){flex:1;width:auto;margin-bottom:0}.piece-row.off.svelte-q2dh0f .pick:where(.svelte-q2dh0f){color:#9ca3af}.eye.svelte-q2dh0f{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:22px;height:22px;padding:0;border:none;border-radius:4px;background:none;color:#6b7280;cursor:pointer}.eye.svelte-q2dh0f:hover{background:#e2e6ea;color:#111827}.piece-row.off.svelte-q2dh0f .eye:where(.svelte-q2dh0f){color:#b6bcc4}.fixed.svelte-q2dh0f{color:#9ca3af}.qty.svelte-q2dh0f{min-width:26px;font-weight:600;color:#111827}.piece-name.svelte-q2dh0f{flex:1;min-width:0;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#6b7280;font-size:12px}aside.svelte-1nhzsi7{width:320px;flex-shrink:0;overflow-y:auto;background:#fafbfc;border-right:1px solid #e2e5e9}section.svelte-1nhzsi7{padding:14px 16px;border-bottom:1px solid #e9ecef}h3.svelte-1nhzsi7{margin:0 0 10px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#6b7280}.sec-head.svelte-1nhzsi7{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.sec-head.svelte-1nhzsi7 h3:where(.svelte-1nhzsi7){margin:0}.cut-opts.svelte-1nhzsi7{display:flex;align-items:center;gap:12px}.qty-label.svelte-1nhzsi7{display:flex;align-items:center;gap:5px;font-size:12px;color:#4b5563}.qty-label.svelte-1nhzsi7 input:where(.svelte-1nhzsi7){width:42px}.grouped-toggle.svelte-1nhzsi7{display:flex;align-items:center;gap:5px;font-size:12px;color:#4b5563;cursor:pointer}.grouped-toggle.svelte-1nhzsi7 input:where(.svelte-1nhzsi7){margin:0}.mat-row.svelte-1nhzsi7{display:flex;align-items:center;gap:8px;padding:5px 0}.mat-info.svelte-1nhzsi7{flex:1;min-width:0}.mat-name.svelte-1nhzsi7{font-weight:600;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-dims.svelte-1nhzsi7{font-size:11.5px;color:#6b7280;font-variant-numeric:tabular-nums}.menu-wrap.svelte-1nhzsi7{position:relative}.menu-btn.svelte-1nhzsi7{display:flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;border:none;border-radius:6px;background:none;color:#6b7280;cursor:pointer}.menu-btn.svelte-1nhzsi7:hover{background:#e2e6ea;color:#111827}.menu.svelte-1nhzsi7{position:absolute;right:0;top:calc(100% + 2px);z-index:10;min-width:110px;padding:4px;background:#fff;border:1px solid #d3d8de;border-radius:8px;box-shadow:0 6px 20px #0000001f}.menu.svelte-1nhzsi7 button:where(.svelte-1nhzsi7){display:flex;align-items:center;gap:7px;width:100%;padding:6px 8px;border:none;border-radius:5px;background:none;font:inherit;font-size:12.5px;color:#374151;text-align:left;cursor:pointer}.menu.svelte-1nhzsi7 button:where(.svelte-1nhzsi7):hover{background:#eef1f4}.menu.svelte-1nhzsi7 button.danger:where(.svelte-1nhzsi7){color:#b91c1c}.menu.svelte-1nhzsi7 button.danger:where(.svelte-1nhzsi7):hover{background:#fceaea}.mat-form.svelte-1nhzsi7{margin-top:8px;display:flex;flex-direction:column;gap:8px}.mat-form.svelte-1nhzsi7 input[type=color]:where(.svelte-1nhzsi7){width:36px;height:30px;padding:2px;border:1px solid #d3d8de;border-radius:6px;background:#fff}.dim-grid.svelte-1nhzsi7{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}.dim-grid.svelte-1nhzsi7 label:where(.svelte-1nhzsi7){display:flex;flex-direction:column;gap:3px;font-size:11px;font-weight:600;color:#6b7280}.fix-check.svelte-1nhzsi7{display:flex;align-items:center;gap:4px;font-weight:400}.fix-check.svelte-1nhzsi7 input:where(.svelte-1nhzsi7){margin:0}.row.svelte-1nhzsi7{display:flex;align-items:center;gap:8px;margin-top:12px}.wide.svelte-1nhzsi7{width:100%;margin-top:8px}aside.svelte-1iepqyw{width:280px;flex-shrink:0;overflow-y:auto;background:#fafbfc;border-left:1px solid #e2e5e9}section.svelte-1iepqyw{padding:14px 16px;border-bottom:1px solid #e9ecef}h3.svelte-1iepqyw{margin:0 0 10px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#6b7280}h4.svelte-1iepqyw{margin:12px 0 6px;font-size:12px;font-weight:600;color:#4b5563}.dim-grid.svelte-1iepqyw{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}.dim-grid.svelte-1iepqyw label:where(.svelte-1iepqyw){display:flex;flex-direction:column;gap:3px;font-size:11px;font-weight:600;color:#6b7280}.rot-grid.svelte-1iepqyw{display:flex;flex-direction:column;gap:6px}.rot-grid.svelte-1iepqyw label:where(.svelte-1iepqyw){display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600;color:#6b7280}.rot-grid.svelte-1iepqyw input:where(.svelte-1iepqyw){flex:1;min-width:0}.field.svelte-1iepqyw{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:600;color:#6b7280}.row.svelte-1iepqyw{display:flex;align-items:center;gap:8px;margin-top:12px}.measure-len.svelte-1iepqyw{font-size:18px;font-weight:600;font-variant-numeric:tabular-nums;color:#111827}.diagram.svelte-1dj7rm6{display:flex;flex-direction:column;height:100vh;background:#fff}header.svelte-1dj7rm6{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid #e2e5e9}h2.svelte-1dj7rm6{margin:0;font-size:15px;color:#111827}.sub.svelte-1dj7rm6{flex:1;font-size:12.5px;color:#6b7280;font-variant-numeric:tabular-nums}.bins.svelte-1dj7rm6{flex:1;display:flex;flex-wrap:wrap;align-items:flex-start;align-content:flex-start;gap:20px;padding:20px;overflow-y:auto}figure.svelte-1dj7rm6{width:230px;margin:0;break-inside:avoid}figure.board.svelte-1dj7rm6{width:100%;max-width:900px}figcaption.svelte-1dj7rm6{margin-bottom:4px;font-size:12px;color:#6b7280}svg.svelte-1dj7rm6{display:block;width:100%;height:auto}.stock.svelte-1dj7rm6{fill:#f3f4f6;stroke:#9ca3af;stroke-width:1px;vector-effect:non-scaling-stroke}.cut.svelte-1dj7rm6{stroke:#0006;stroke-width:1px;vector-effect:non-scaling-stroke}.kerf.svelte-1dj7rm6{stroke:#9ca3af;stroke-width:1px;stroke-dasharray:4 3;vector-effect:non-scaling-stroke}text.svelte-1dj7rm6{fill:#1f2937;text-anchor:middle;dominant-baseline:middle;font-family:inherit;font-variant-numeric:tabular-nums}.nofit.svelte-1dj7rm6{width:100%;margin:0;font-size:12.5px;color:#dc2626}footer.svelte-1dj7rm6{padding:8px 16px;border-top:1px solid #e9ecef;font-size:11.5px;color:#6b7280}@media print{.diagram.svelte-1dj7rm6{height:auto}.bins.svelte-1dj7rm6{overflow:visible}.no-print.svelte-1dj7rm6{display:none}}.dropdown.svelte-vtocc6{position:relative}.menu.svelte-vtocc6{position:absolute;left:0;top:calc(100% + 2px);z-index:10;min-width:180px;max-height:60vh;overflow-y:auto;padding:4px;background:#fff;border:1px solid #d3d8de;border-radius:8px;box-shadow:0 6px 20px #0000001f}.item.svelte-vtocc6{display:flex;align-items:center;gap:2px}.item.svelte-vtocc6 button:where(.svelte-vtocc6){border:none;border-radius:5px;background:none;font:inherit;cursor:pointer}.pick.svelte-vtocc6{flex:1;min-width:0;padding:6px 8px;font-size:12.5px;color:#374151;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pick.svelte-vtocc6:hover{background:#eef1f4}.del.svelte-vtocc6{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:26px;height:26px;padding:0;color:#6b7280}.del.svelte-vtocc6:hover{background:#fceaea;color:#b91c1c}.app.svelte-1n46o8q{display:flex;flex-direction:column;height:100vh}.app.hidden.svelte-1n46o8q{display:none}header.svelte-1n46o8q{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;background:#fff;border-bottom:1px solid #e2e5e9}.logo.svelte-1n46o8q{display:flex;align-items:center;gap:8px}.logo.svelte-1n46o8q a:where(.svelte-1n46o8q){display:flex;color:#6b7280}.logo.svelte-1n46o8q a:where(.svelte-1n46o8q):hover{color:#111827}h1.svelte-1n46o8q{margin:0;font-size:15px;font-weight:700;color:#111827}.header-controls.svelte-1n46o8q{display:flex;align-items:center;gap:16px}.proj.svelte-1n46o8q{display:flex;align-items:center;gap:6px}.proj.svelte-1n46o8q .name:where(.svelte-1n46o8q){width:160px}.btn.units.svelte-1n46o8q{min-width:62px}.seg.svelte-1n46o8q{display:flex;border:1px solid #d3d8de;border-radius:6px;overflow:hidden}.seg.svelte-1n46o8q button:where(.svelte-1n46o8q){border:none;background:#fff;padding:5px 12px;font:inherit;font-size:12.5px;color:#4b5563;cursor:pointer}.seg.svelte-1n46o8q button:where(.svelte-1n46o8q)+button:where(.svelte-1n46o8q){border-left:1px solid #d3d8de}.seg.svelte-1n46o8q button.active:where(.svelte-1n46o8q){background:#2563eb;color:#fff}.check.svelte-1n46o8q{display:flex;align-items:center;gap:6px;font-size:12.5px;color:#4b5563;cursor:pointer}.main.svelte-1n46o8q{flex:1;display:flex;min-height:0}
