:root{color:#17212b;font-synthesis:none;text-rendering:optimizelegibility;background:#edf1f5;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{min-height:100vh;margin:0;overflow:hidden}button,input,select{font:inherit}button,select{color:#17212b;background:#fff;border:1px solid #c9d3df;border-radius:6px;min-height:34px}button{padding:0 12px;font-weight:700}button:disabled{color:#99a6b4;background:#eef2f6}input{color:#17212b;background:#fff;border:1px solid #c9d3df;border-radius:6px;width:100%;min-width:0;height:34px;padding:0 9px}input[type=range]{accent-color:#2563eb;background:0 0;border:0;height:30px;padding:0}.app-shell{grid-template-rows:minmax(300px,48vh) minmax(360px,52vh);height:100vh;display:grid;overflow:hidden}.viewer-panel{z-index:5;background:#dfe6ee;min-height:0;padding:12px;position:sticky;top:0}.viewer-frame{background:#f8fafc;border:1px solid #b9c5d2;border-radius:8px;grid-template-rows:auto 1fr;height:100%;display:grid;overflow:hidden}.viewer-toolbar{color:#506174;justify-content:space-between;align-items:center;gap:12px;min-height:36px;padding:0 12px;font-size:.82rem;font-weight:700;display:flex;position:relative}.viewer-toolbar-info{align-items:center;gap:12px;min-width:0;display:flex}.viewer-menu{position:relative}.viewer-menu-button{min-width:32px;min-height:28px;padding:0 8px;font-size:1rem;line-height:1}.viewer-menu-popover{z-index:10;background:#fff;border:1px solid #c9d3df;border-radius:8px;gap:4px;min-width:124px;padding:6px;display:grid;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 8px 24px #0f172a29}.viewer-menu-popover button{justify-content:flex-start;min-height:30px;padding:0 10px}.dialog-backdrop{z-index:20;background:#0f172a57;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.part-dialog{background:#fff;border:1px solid #c9d3df;border-radius:8px;gap:12px;width:min(360px,100%);padding:14px;display:grid;box-shadow:0 18px 48px #0f172a3d}.part-dialog header{align-items:center;min-height:28px;display:flex}.part-dialog h2{color:#243447;margin:0;font-size:1rem;line-height:1.2}.dialog-message{color:#334155;margin:0;font-weight:700;line-height:1.5}.dialog-field{color:#435365;gap:6px;font-size:.82rem;font-weight:800;display:grid}.dialog-field input,.dialog-field select{width:100%;min-height:34px}.dialog-actions{justify-content:flex-end;gap:8px;display:flex}.dialog-actions button{min-width:72px;min-height:32px;padding:0 12px}.final-face.face-top,.face-swatch.face-top{fill:#2563eb2e}.final-outline.face-top,.face-swatch.face-top{stroke:#2563eb}.final-face.face-right,.face-swatch.face-right{fill:#dc26262e}.final-outline.face-right,.face-swatch.face-right{stroke:#dc2626}.final-face.face-front,.face-swatch.face-front{fill:#eab3083d}.final-outline.face-front,.face-swatch.face-front{stroke:#d69e00}.viewer-frame>svg{touch-action:manipulation;width:100%;height:100%;min-height:0}.tri-view{background:#f8fafc}.face-plan{cursor:pointer;outline:none}.face-plan-bg{fill:#fff;stroke:#c8d3df;stroke-width:1.2px;vector-effect:non-scaling-stroke}.face-plan-surface{fill:#fff}.face-plan-grid{pointer-events:none;fill:url(#grid)}.face-plan.active .face-plan-bg{stroke-width:3px}.face-plan.face-top.active .face-plan-bg{stroke:#2563eb}.face-plan.face-right.active .face-plan-bg{stroke:#dc2626}.face-plan.face-front.active .face-plan-bg{stroke:#d69e00}.face-axis{stroke:#bac6d3;stroke-width:.5px;vector-effect:non-scaling-stroke}.constraint-mask{pointer-events:none;fill:#6b728042}.constraint-mask.x{stroke:#4b55635c;stroke-width:.4px}.constraint-mask.y{fill:#6b728052;stroke:#4b556366;stroke-width:.4px}.face-plan-label{pointer-events:none;text-anchor:middle;fill:#17212b;font-size:11px;font-weight:900}.area-lock-button{cursor:pointer;outline:none}.area-lock-button rect{fill:#fff;stroke:#9aa8b8;stroke-width:1px;vector-effect:non-scaling-stroke}.area-lock-button text{pointer-events:none;fill:#435365;text-anchor:middle;font-size:9px;font-weight:900}.area-lock-button.locked rect{fill:#17212b;stroke:#17212b}.area-lock-button.locked text{fill:#fff}.area-lock-button.disabled{cursor:help;opacity:.5}.iso-preview{cursor:pointer}.iso-preview-frame{fill:#fff;stroke:#c8d3df;stroke-width:1px}.iso-preview.selected .iso-preview-frame,.iso-preview.expanded .iso-preview-frame{stroke:#17212b;stroke-width:3px}.iso-preview polygon,.iso-preview path{stroke:none;stroke-width:0;stroke-linejoin:round}.iso-preview-top{fill:#86a8f5}.iso-preview-front{fill:#f1cc55}.iso-preview-right{fill:#ee8a8a}.iso-preview-left{fill:#f3bbbb}.iso-preview-back{fill:#f7dfa0}.iso-preview-bottom{fill:#b6c9f7}.iso-preview-side{fill:#d7dde5}.iso-preview-cut-side{fill:#edf1f5}.iso-preview.grid-on polygon,.iso-preview.grid-on path{stroke:#3341559e;stroke-width:.55px}.iso-preview-outline-edge{fill:none;stroke:#17212b;stroke-width:1.1px;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.iso-preview.expanded .iso-preview-outline-edge{stroke-width:1.35px}.iso-preview.transparent .iso-preview-top{fill:#2563eb24}.iso-preview.transparent .iso-preview-front{fill:#eab30829}.iso-preview.transparent .iso-preview-right{fill:#dc262624}.iso-preview.transparent .iso-preview-left,.iso-preview.transparent .iso-preview-back,.iso-preview.transparent .iso-preview-bottom{fill:#ffffff04}.iso-preview.transparent .iso-preview-side{fill:#64748b14}.iso-preview.transparent .iso-preview-cut-side{fill:#ffffff09}.iso-preview.transparent.grid-on polygon,.iso-preview.transparent.grid-on path{stroke:#17212b6b}.iso-preview text{pointer-events:none;text-anchor:middle;fill:#506174;font-size:9px;font-weight:900}.iso-preview.expanded text{font-size:11px}.assembly-view .face-plan-bg,.assembly-view .iso-preview-frame{fill:#fff}.assembly-projection-surface{fill-opacity:.22;stroke-opacity:.72;stroke-width:.75px;vector-effect:non-scaling-stroke;pointer-events:none}.assembly-iso-surface{fill-opacity:.74;stroke-opacity:.48;stroke-width:.35px;stroke-linejoin:round;cursor:pointer}.assembly-hit-area{fill:#0000;stroke:#0000;stroke-width:1.8px;vector-effect:non-scaling-stroke;cursor:pointer}.assembly-hit-area.selected{stroke:#17212b;stroke-dasharray:3 2}.rotation-panel{background:#f9fbfd;border:1px solid #d1d9e3;border-radius:8px;margin:12px 0 0;padding:8px}.rotation-header{color:#435365;margin-bottom:8px;font-size:.78rem;font-weight:900}.rotation-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.rotation-field{color:#506174;grid-template-rows:auto 32px auto;gap:4px;font-size:.78rem;font-weight:800;display:grid}.rotation-field>span{text-align:center}.rotation-actions{grid-template-rows:repeat(4,30px);grid-template-columns:minmax(76px,auto) minmax(0,1fr) minmax(64px,auto);align-items:stretch;gap:8px;margin-top:10px;display:grid}.rotation-reset{grid-area:1/1;min-height:32px;padding:0 8px}.view-net{grid-area:1/2/span 4;grid-template-rows:repeat(4,30px);grid-template-columns:repeat(3,minmax(54px,1fr));gap:4px;display:grid}.view-net button{min-height:30px;padding:0 5px;font-size:.72rem}.view-top{grid-area:1/2}.view-left{grid-area:2/1}.view-front{grid-area:2/2}.view-right{grid-area:2/3}.view-bottom{grid-area:3/2}.view-back{grid-area:4/2}.transparent-toggle,.grid-toggle,.edge-toggle{color:#435365;background:#fff;border:1px solid #c9d3df;border-radius:6px;justify-content:center;align-items:center;gap:6px;min-height:30px;padding:0 8px;font-size:.78rem;font-weight:900;display:inline-flex}.transparent-toggle input,.grid-toggle input,.edge-toggle input{width:16px;height:16px;padding:0}.transparent-toggle{grid-area:1/3;justify-self:stretch}.grid-toggle,.edge-toggle{grid-column:3;justify-self:stretch}.grid-toggle{grid-row:2}.edge-toggle{grid-row:3}.final-outline{fill:none;stroke-linejoin:round;stroke-width:2.9px;vector-effect:non-scaling-stroke}.shape-preview{cursor:pointer;fill:#0000;stroke:#0000;stroke-width:1.2px;vector-effect:non-scaling-stroke}.shape-preview.add,.shape-preview.cut{fill:#0000;stroke:#0000}.shape-preview.selected{fill:#11182714;stroke:#111827;stroke-dasharray:2 1.6;stroke-width:1.6px}.control-panel{overscroll-behavior:contain;background:#fff;border-top:1px solid #b9c5d2;min-height:0;padding:14px;overflow:auto}.url-automation-status{color:#1e3a8a;background:#eff6ff;border:1px solid #93c5fd;border-radius:6px;gap:4px;margin:0 0 12px;padding:10px;font-size:.8rem;line-height:1.45;display:grid}.url-automation-status.loading{color:#713f12;background:#fefce8;border-color:#facc15}.url-automation-status.error{color:#7f1d1d;background:#fff5f5;border-color:#f0a5a5}.url-automation-status button{justify-self:start;margin-top:4px}.url-automation-shell{background:#fff;place-items:center;min-height:100dvh;display:grid}.url-automation-minimal-status{color:#64748b;font-size:.72rem}.url-automation-minimal-status.error{color:#991b1b}.app-credit{color:#94a3b8;text-align:center;margin:18px 0 2px;font-size:.68rem;font-weight:700;line-height:1.2}.control-header{justify-content:space-between;align-items:end;gap:12px;margin-bottom:12px;display:flex}.eyebrow{color:#66788a;letter-spacing:.08em;text-transform:uppercase;margin:0 0 3px;font-size:.72rem;font-weight:800}h1{margin:0;font-size:1.35rem;line-height:1.15}.header-actions{flex-wrap:nowrap;justify-content:flex-end;gap:6px;display:flex}.header-actions button{min-height:32px;padding:0 10px}.active-toggle{color:#fff;background:#17212b;border-color:#17212b}.document-controls{grid-template-columns:minmax(120px,max-content);align-items:end;gap:8px;margin-bottom:12px;display:grid}.area-lock-feedback{color:#7f1d1d;background:#fff5f5;border:1px solid #f0a5a5;border-radius:6px;gap:8px;margin:0 0 12px;padding:10px;display:grid}.area-lock-feedback>strong{font-size:.9rem}.area-lock-feedback p{margin:0;font-size:.8rem;line-height:1.5}.area-lock-violation{border-top:1px solid #fecaca;gap:3px;padding-top:7px;font-size:.78rem;line-height:1.45;display:grid}.area-lock-violation b{color:#991b1b}.area-lock-violation small{color:#9f3030;font-size:.74rem}.active-face-control{color:#435365;gap:4px;font-weight:800;display:grid}.active-face-control span{font-size:.75rem}.face-label{background:#fff;border:2px solid;border-radius:6px;place-items:center;min-width:44px;min-height:34px;display:inline-grid}.face-label.face-top{color:#2563eb}.face-label.face-right{color:#dc2626}.face-label.face-front{color:#b98900}.document-controls label{color:#435365;grid-template-columns:auto minmax(72px,1fr) auto;align-items:center;gap:8px;font-weight:700;display:grid}.shape-list{gap:8px;display:grid}.shape-card{background:#f9fbfd;border:1px solid #d1d9e3;border-radius:8px;padding:8px}.shape-card.selected{border-color:#17212b;box-shadow:inset 4px 0 #17212b}.shape-card-top,.shape-actions{align-items:center;gap:6px;display:flex}.shape-card-top{margin-bottom:8px}.shape-title{text-align:left;text-overflow:ellipsis;white-space:nowrap;background:0 0;flex:0 0 76px;min-width:0;padding:0 8px;overflow:hidden}.mode-select{flex:0 0 64px}.dimension-toggle{flex:0 0 56px;min-height:34px;padding:0 8px}.shape-actions{margin-left:auto}.shape-actions button{min-width:34px;padding:0 8px}.shape-actions .danger{min-width:48px}#dimension-arrow path{fill:#17212b}.shape-dimensions{pointer-events:none}.dimension-line line{fill:none;stroke:#17212b;stroke-width:.75px;vector-effect:non-scaling-stroke}.dimension-line text{fill:#17212b;paint-order:stroke;stroke:#fff;stroke-width:2.2px;stroke-linejoin:round;text-anchor:middle;dominant-baseline:central;font-size:5px;font-weight:900}.shape-dimensions.cut .dimension-line line,.shape-dimensions.cut .dimension-line text{stroke-opacity:.9}.dimension-line.shape-size line{stroke-dasharray:1.8 1.2}.shape-control-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.control-field{color:#506174;grid-template-rows:auto 76px auto;gap:6px;min-width:0;font-size:.78rem;font-weight:800;display:grid}.control-field.empty{visibility:hidden}.control-field>span{text-align:center;line-height:1}.control-field input[type=range]{align-self:center}.control-field.axis-x input[type=range]{width:100%}.control-field.axis-y input[type=range]{writing-mode:vertical-lr;direction:rtl;justify-self:center;width:30px;height:76px}.control-field.axis-y{grid-template-rows:auto 76px;grid-template-columns:minmax(0,1fr) 52px}.control-field.axis-y>span{grid-column:1/3}.control-field.axis-y .number-field{align-self:center}.number-field{color:#506174;gap:4px;font-size:.78rem;font-weight:800;display:grid}.number-field.compact span{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.number-field.compact input{text-align:right;height:30px;padding:0 6px}.danger{color:#8f2f24;border-color:#d8a49c}.selection-note{color:#506174;margin:12px 0 0;font-size:.9rem;font-weight:700}.assembly-panel{gap:12px;display:grid}.assembly-view-controls{margin-top:0}.assembly-view-actions{grid-template-rows:repeat(4,30px);grid-template-columns:minmax(76px,auto) minmax(0,1fr);align-items:stretch;gap:8px;margin-top:10px;display:grid}.assembly-view-actions>button{grid-area:1/1;min-height:32px;padding:0 8px}.assembly-view-actions .view-net{grid-area:1/2/span 4}.assembly-load-panel .saved-part-actions{grid-template-columns:minmax(0,1fr)}.assembly-note{color:#66788a;margin:0;font-size:.78rem;font-weight:800;line-height:1.45}.danger-text{color:#b91c1c}.assembly-active-face{width:fit-content}.assembly-view-label{color:#17212b}.assembly-list{gap:8px;display:grid}.assembly-card{background:#f9fbfd;border:1px solid #d1d9e3;border-radius:8px;gap:8px;padding:8px;display:grid}.assembly-card.selected{border-color:#17212b;box-shadow:inset 4px 0 #17212b}.assembly-card-top{grid-template-columns:minmax(0,1fr) 38px auto;align-items:center;gap:6px;display:grid}.assembly-title{text-align:left;background:0 0;justify-content:flex-start;align-items:center;gap:8px;min-width:0;padding:0 8px;display:inline-flex;overflow:hidden}.assembly-title span:last-child{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.assembly-color-dot{border:1px solid #0f172a38;border-radius:50%;flex:0 0 14px;width:14px;height:14px}.assembly-color-input{width:38px;min-width:38px;height:34px;padding:3px}.assembly-section-label{color:#506174;font-size:.78rem;font-weight:900}.assembly-position-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.assembly-position-grid.three-axis{grid-template-columns:repeat(3,minmax(0,1fr))}.assembly-rotation-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.assembly-rotation-field{grid-template-rows:auto 32px auto}.output-panel{gap:12px;display:grid}.output-header{justify-content:space-between;align-items:end;gap:12px;display:flex}.output-tabs{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;display:grid}.output-tabs button{min-height:34px}.output-tabs button.active{color:#fff;background:#17212b;border-color:#17212b}.output-content{gap:10px;display:grid}.part-storage-panel{background:#f8fafc;border:1px solid #d1d9e3;border-radius:8px;grid-template-columns:minmax(0,1fr);gap:8px;padding:10px;display:grid}.part-storage-panel h2{color:#17212b;margin:0;font-size:.9rem;line-height:1.2}.load-panel{background:#fff}.load-sections{gap:12px;display:grid}.part-name-field,.saved-part-field,.json-file-field,.json-paste-field{color:#435365;gap:5px;font-size:.78rem;font-weight:800;display:grid}.json-paste-field textarea{resize:vertical;color:#d6e2f0;background:#111827;border:1px solid #c7d1dc;border-radius:6px;width:100%;min-width:0;padding:10px;font:.76rem/1.45 ui-monospace,SFMono-Regular,Consolas,monospace}.json-file-field input[type=file]{color:#334155;width:100%;min-width:0;font:inherit;background:#fff;border:1px solid #c7d1dc;border-radius:6px;padding:7px}.load-note,.json-import-status{color:#66788a;margin:0;font-size:.78rem;font-weight:700;line-height:1.45}.json-import-status.success{color:#166534}.json-import-status.error{color:#b91c1c}.help-copy{color:#526477;margin:0;font-size:.84rem;line-height:1.6}.ai-prompt-actions{justify-content:flex-start;display:flex}.ai-prompt-actions button{min-height:34px;padding:0 12px}.ai-prompt-details{background:#f8fafc;border:1px solid #d1d9e3;border-radius:6px}.ai-prompt-details summary{color:#334155;cursor:pointer;padding:9px 10px;font-size:.82rem;font-weight:800}.ai-prompt-details pre{white-space:pre-wrap;color:#334155;border-top:1px solid #d1d9e3;max-height:280px;margin:0;padding:10px;font:.74rem/1.5 ui-monospace,SFMono-Regular,Consolas,monospace;overflow:auto}.saved-part-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;display:grid}.saved-part-actions button{min-height:32px;padding:0 10px}.web-save-warning{color:#b91c1c;margin:0;font-size:.78rem;font-weight:800;line-height:1.45}.output-actions{flex-wrap:wrap;justify-content:flex-start;gap:8px;display:flex}.output-actions button{min-width:76px;min-height:32px;padding:0 12px}.stl-resolution-control{color:#334155;grid-template-columns:auto minmax(0,1fr) 44px;align-items:center;gap:10px;min-height:34px;font-size:13px;display:grid}.stl-resolution-control strong{text-align:right;color:#17212b;font-size:13px}.output-placeholder{color:#66788a;border:1px dashed #c9d3df;border-radius:8px;place-items:center;min-height:120px;font-weight:800;display:grid}.json-view{color:#d6e2f0;background:#111827;border:1px solid #d1d9e3;border-radius:8px;margin:0;padding:12px;font-size:.78rem;line-height:1.5;overflow:auto}.help-panel{color:#334155;gap:12px;font-size:.88rem;line-height:1.55;display:grid}.help-panel h2{color:#17212b;margin:0;font-size:.96rem;line-height:1.2}.help-panel ol,.help-panel ul{margin:0;padding-left:20px}.help-panel li+li{margin-top:4px}@media (width>=840px){.app-shell{grid-template-rows:100vh;grid-template-columns:minmax(0,1fr) 420px}.viewer-panel{padding:18px;position:static}.control-panel{border-top:0;border-left:1px solid #b9c5d2;padding:18px}}@media (width<=520px){.app-shell{grid-template-rows:minmax(250px,43vh) minmax(380px,57vh)}.control-header,.document-controls{grid-template-columns:1fr}.control-header{display:grid}.header-actions{justify-content:flex-start}.document-controls button{width:100%}.shape-card-top{grid-template-columns:minmax(56px,1fr) 62px 52px auto;display:grid}.shape-title{flex-basis:auto}.shape-control-grid{gap:6px}.control-field{grid-template-rows:auto 68px auto}.control-field.axis-y input[type=range]{height:68px}.control-field.axis-y{grid-template-rows:auto 68px;grid-template-columns:minmax(0,1fr) 44px}}
