:root{--bg:#f6f4f0;--surface:#fff;--surface-sunken:#efece6;--border:#d9d4ca;--text:#1f1d1a;--text-muted:#6b665d;--accent:#b5562b;--accent-text:#fff;--danger:#b3261e;--focus:#2f6fdb;--radius:6px;--gap:12px;--warning:#9a6200;--canvas-bg:#e9e5dd;--canvas-stock:#f3e3c6;--canvas-stock-edge:#b89b6a;--canvas-grid:#785a281f;--canvas-grid-major:#785a2847;--canvas-path:#2b2721;--canvas-axis-x:#c0392b;--canvas-axis-y:#2e8b57;--canvas-rapid:#8a8378;--canvas-toolpath-1:#1f6fd1;--canvas-toolpath-2:#b0388f;--canvas-toolpath-3:#1a8a6a;--cut-on:#7a4fb8;--cut-outside:#b5562b;--cut-inside:#17806f;--cut-pocket:#a86d00;--cut-chamfer:#2f68ad;--cut-drill:#a3324a;--accent-soft:#b5562b1f;--font:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#1b1a18;--surface:#262421;--surface-sunken:#1f1e1b;--border:#3d3a35;--text:#ece8e1;--text-muted:#a39d92;--accent:#e07a48;--accent-text:#1b1a18;--danger:#f2756b;--focus:#7aa7ff;--warning:#f0b44c;--canvas-bg:#141311;--canvas-stock:#3a3125;--canvas-stock-edge:#6e5b40;--canvas-grid:#ffe6be12;--canvas-grid-major:#ffe6be29;--canvas-path:#f1ece4;--canvas-axis-x:#ff6b5b;--canvas-axis-y:#5fd38d;--canvas-rapid:#8f887c;--canvas-toolpath-1:#6aa8ff;--canvas-toolpath-2:#f07acb;--canvas-toolpath-3:#4fd1a8;--cut-on:#b896ef;--cut-outside:#e07a48;--cut-inside:#4cc7b2;--cut-pocket:#f0b44c;--cut-chamfer:#7fb0f0;--cut-drill:#f07890;--accent-soft:#e07a4829;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:14px/1.45 var(--font)}h1,h2{margin:0}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.muted{color:var(--text-muted)}.small{font-size:12px}.spacer{flex:1}.button{font:inherit;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);cursor:pointer;padding:6px 14px}.button:hover:not(:disabled){background:var(--surface-sunken)}.button:disabled{opacity:.5;cursor:not-allowed}.button-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:600}.button-primary:hover:not(:disabled){background:var(--accent);filter:brightness(1.08)}.button-quiet{color:var(--text-muted);background:0 0;border-color:#0000}.icon-button{border-radius:var(--radius);width:32px;height:32px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;font-size:20px;line-height:1}.icon-button:hover{background:var(--surface-sunken)}.settings-form{flex-direction:column;gap:16px;display:flex}fieldset{gap:var(--gap);border:none;flex-direction:column;margin:0;padding:0;display:flex}legend{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);padding:0 0 4px;font-size:13px;font-weight:600}.field-row{gap:var(--gap);grid-template-columns:repeat(auto-fit,minmax(100px,1fr));display:grid}.field{flex-direction:column;gap:4px;min-width:0;display:flex}.field label{font-weight:500}.field input,.field select,.field textarea{font:inherit;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-sunken);width:100%;color:var(--text);padding:6px 8px}.field-invalid input{border-color:var(--danger)}.input-with-unit{align-items:center;gap:6px;display:flex}.unit{color:var(--text-muted);white-space:nowrap;font-size:12px}.code-input{resize:vertical;font-family:var(--mono)!important;font-size:12px!important}.field-hint{color:var(--text-muted);font-size:12px}.field-error{color:var(--danger);font-size:12px}.segmented{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:2px;display:inline-flex;box-shadow:0 2px 8px #00000014}.segment{font:inherit;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 12px}.segment-active{background:var(--accent);color:var(--accent-text)}.modal-backdrop{z-index:100;background:#0006;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-direction:column;width:min(640px,100%);max-height:calc(100vh - 32px);display:flex;box-shadow:0 12px 40px #00000040}.modal-header,.modal-footer{align-items:center;gap:8px;padding:12px 16px;display:flex}.modal-header{border-bottom:1px solid var(--border);justify-content:space-between}.modal-header h2{font-size:16px}.modal-body{padding:16px;overflow-y:auto}.modal-footer{border-top:1px solid var(--border)}.toast{z-index:10;border-radius:var(--radius);color:#fff;cursor:pointer;max-width:min(560px,100vw - 32px);padding:10px 16px;position:fixed;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 6px 20px #0003}.toast-error{background:var(--danger)}.toast-info{background:var(--text);color:var(--bg)}.app-shell{flex-direction:column;height:100%;display:flex}.app-header{align-items:center;gap:var(--gap);background:var(--surface);border-bottom:1px solid var(--border);padding:8px 16px;display:flex}.job-name{font:inherit;border-radius:var(--radius);min-width:90px;color:var(--text);background:0 0;border:1px solid #0000;flex:0 220px;padding:4px 8px}.job-name:hover,.job-name:focus{border-color:var(--border);background:var(--surface-sunken)}.app-logo{width:28px;height:28px}.mobile-gate-logo{align-self:center;width:96px;height:96px}.app-name{letter-spacing:.02em;align-items:center;gap:8px;font-size:18px;font-weight:700;display:flex}.app-header-actions{flex:none;align-items:center;gap:8px;margin-left:auto;display:flex}.project-buttons{border-right:1px solid var(--border);gap:4px;padding-right:8px;display:flex}@media (width<=1279px){.app-header .button-text,.app-name-text{display:none}}.app-header .button{align-items:center;gap:6px;display:inline-flex}.app-body{flex:1;min-height:0;display:grid;position:relative}.app-body-easy{grid-template-columns:1fr 300px}.app-body-pro{grid-template-columns:250px 1fr 300px}.workspace{background:var(--canvas-bg);grid-template-columns:minmax(0,1fr);min-width:0;min-height:0;display:grid}.workspace-canvas,.workspace-3d{flex-direction:column;min-width:0;min-height:0;display:flex;position:relative}.split-divider{cursor:col-resize;background:var(--border);touch-action:none;width:6px}.split-divider:hover,.split-divider:focus-visible{background:var(--accent);outline:none}.canvas-toolbar .segment{white-space:nowrap}.segment-toggle{font:inherit;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);cursor:pointer;padding:5px 12px;font-size:13px}.segment-toggle-on{border-color:var(--accent);background:var(--accent);color:var(--accent-text)}.canvas-toolbar{z-index:1;gap:8px;display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%)}.canvas-container{flex:1;min-height:0;position:relative;overflow:hidden}.canvas-zoom{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);align-items:center;gap:2px;padding:2px;display:flex;position:absolute;bottom:12px;right:12px}.button-small{padding:3px 10px;font-size:12px}.sidebar{background:var(--surface);border-left:1px solid var(--border);flex-direction:column;gap:20px;padding:16px;display:flex;overflow-y:auto}.panel{flex-direction:column;gap:16px;display:flex}.panel-heading{flex-direction:column;gap:4px;display:flex}.panel-title{text-overflow:ellipsis;white-space:nowrap;font-size:15px;overflow:hidden}.link-button{color:var(--accent);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:0;font-size:13px}.link-button:hover{text-decoration:underline}.button-danger{color:var(--danger);align-self:flex-start}.checkbox{cursor:pointer;align-items:center;gap:8px;display:flex}.advanced summary{cursor:pointer;margin-bottom:8px;font-weight:500}.advanced[open]{flex-direction:column;gap:8px;display:flex}.badge{background:var(--surface-sunken);color:var(--text-muted);border-radius:999px;margin-left:6px;padding:1px 6px;font-size:11px}.mobile-gate{text-align:center;flex-direction:column;justify-content:center;gap:12px;min-height:100%;padding:24px 16px;display:flex}.mobile-gate h1{font-size:28px}.grid-controls{border-right:1px solid var(--border);align-items:center;gap:6px;margin-right:4px;padding:0 8px 0 6px;font-size:12px;display:flex}.grid-controls select{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:6px;padding:3px 4px}.stock-3d{flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.stock-3d-canvas{flex:1;min-height:0;overflow:hidden}.stock-3d-canvas canvas{display:block}.stock-3d-status{border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);color:var(--text-muted);padding:4px 12px;font-size:12px;position:absolute;top:12px;right:12px}.stock-3d-bar{border-top:1px solid var(--border);background:var(--surface);flex-wrap:wrap;align-items:center;gap:16px;padding:8px 12px;display:flex}.stock-3d-notes{flex-wrap:wrap;gap:4px 16px;margin:0;padding:0;list-style:none;display:flex}.stock-3d-loose{color:var(--warning);font-weight:600}.origin-picker{border:1px solid var(--canvas-stock-edge);background:var(--canvas-stock);border-radius:4px;grid-template-columns:repeat(3,1fr);width:120px;height:80px;padding:6px;display:grid}.origin-dot{border:2px solid var(--canvas-stock-edge);background:var(--surface);cursor:pointer;border-radius:50%;place-self:center;width:14px;height:14px;padding:0}.origin-dot-active{border-color:var(--accent);background:var(--accent)}.checks{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.check{gap:8px;font-size:13px;display:flex}.check .link-button{color:inherit}.check-icon{width:18px;height:18px;color:var(--surface);border-radius:50%;flex:none;place-items:center;font-size:11px;font-weight:700;display:grid}.check-error .check-icon{background:var(--danger)}.check-warning .check-icon{background:var(--warning)}.checks-ok{color:var(--canvas-axis-y);margin:0}.preview-bar{background:var(--surface);border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:12px 24px;padding:10px 16px;display:flex}.stats{gap:20px;margin:0;display:flex}.stats dt{color:var(--text-muted);font-size:11px}.stats dd{font-variant-numeric:tabular-nums;margin:0;font-weight:600}.scrubber{flex:1;align-items:center;gap:8px;min-width:160px;display:flex}.scrubber input{flex:1}.modal-wide{width:min(900px,100%)}.trace-layout{flex-wrap:wrap;gap:20px;display:flex}.trace-preview{border:1px solid var(--border);border-radius:var(--radius);background:#fff;max-width:100%}.trace-controls{flex-direction:column;flex:1;gap:16px;min-width:220px;display:flex}.range-label{align-items:baseline;gap:8px;display:flex}.range-value{color:var(--text-muted);font-variant-numeric:tabular-nums;margin-left:auto}input[type=range]{width:100%;accent-color:var(--accent)}input[type=checkbox]{accent-color:var(--accent)}.bit-library{flex-direction:column;gap:10px;display:flex}.panel-subtitle{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin:4px 0 0;font-size:13px}.bit-list{border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.bit-list li{justify-content:space-between;align-items:center;gap:12px;padding:8px 12px;display:flex}.bit-list li+li{border-top:1px solid var(--border)}.bit-actions{gap:12px;display:flex}.form-actions{justify-content:flex-end;gap:8px;display:flex}.align-buttons{gap:4px;display:flex}.align-buttons .icon-button{border:1px solid var(--border);place-items:center;display:grid}.button-row{flex-wrap:wrap;gap:6px;display:flex}.field-label{font-weight:500}.segmented-flat{box-shadow:none;display:flex}.segmented-flat .segment{flex:1;padding:5px 4px;font-size:12px}.icon{flex:none}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.ribbon{background:var(--surface);border-bottom:1px solid var(--border)}.ribbon-tabs{background:var(--surface-sunken);border-bottom:1px solid var(--border);gap:2px;padding:0 12px;display:flex}.ribbon-tab{font:inherit;color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #0000;border-bottom-width:2px;border-radius:6px 6px 0 0;margin-bottom:-1px;padding:7px 16px 6px;font-size:13px}.ribbon-tab:hover{color:var(--text)}.ribbon-tab[aria-selected=true]{border-color:var(--border);border-bottom:2px solid var(--accent);background:var(--surface);color:var(--text);font-weight:600}.ribbon-body{align-items:stretch;padding:6px 8px 0;display:flex;overflow-x:auto}.ribbon-group{border-right:1px solid var(--border);flex-direction:column;padding:0 6px;display:flex}.ribbon-group:last-child{border-right:none}.ribbon-buttons{flex:1;gap:2px;display:flex}.ribbon-group-label{letter-spacing:.04em;text-align:center;color:var(--text-muted);padding:2px 0 5px;font-size:10.5px}.ribbon-button{min-width:60px;font:inherit;border-radius:var(--radius);color:var(--text);cursor:pointer;background:0 0;border:1px solid #0000;flex-direction:column;align-items:center;gap:3px;padding:6px 6px 4px;display:flex}.ribbon-button:hover:not(:disabled){background:var(--surface-sunken);border-color:var(--border)}.ribbon-button:disabled{opacity:.4;cursor:default}.ribbon-button[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft)}.ribbon-label{white-space:nowrap;font-size:11.5px;line-height:1.2}.mode-switch{align-items:center;gap:6px;margin-right:8px;display:flex}.mode-label{font:inherit;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:2px;font-size:12px;font-weight:600}.mode-label-on{color:var(--text)}.switch{border:1px solid var(--border);background:var(--surface-sunken);cursor:pointer;border-radius:11px;width:40px;height:22px;padding:0;transition:background .15s;position:relative}.switch:after{content:"";background:var(--text-muted);border-radius:50%;width:16px;height:16px;transition:transform .15s,background .15s;position:absolute;top:2px;left:2px}.switch[aria-checked=true]{border-color:var(--accent);background:var(--accent-soft)}.switch[aria-checked=true]:after{background:var(--accent);transform:translate(18px)}.switch:disabled,.mode-label:disabled{opacity:.45;pointer-events:none}.mode-switch-blocked{cursor:not-allowed}.header-pickers{gap:8px;min-width:0;display:flex}.picker{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);min-width:140px;color:var(--text-muted);flex:0 210px;align-items:center;gap:6px;padding:0 4px 0 8px;display:flex}.picker select{min-width:0;font:inherit;color:var(--text);cursor:pointer;background:0 0;border:none;flex:1;padding:4px 2px}.toolpath-pane{background:var(--surface);border-right:1px solid var(--border);overflow-y:auto}.pane-head{z-index:1;background:var(--surface);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:10px 12px;display:flex;position:sticky;top:0}.pane-title{letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);font-size:12px;font-weight:600}.pane-hint{border-radius:var(--radius);background:var(--surface-sunken);color:var(--text-muted);margin:10px;padding:10px;font-size:12px;line-height:1.45}.toolpath-groups,.toolpath-rows{margin:0;padding:0;list-style:none}.toolpath-groups{padding:6px 8px 0}.toolpath-step{border:1px dashed var(--border);border-radius:var(--radius);color:var(--text-muted);align-items:center;gap:8px;margin:6px 0 2px;padding:7px 9px;font-size:12px;line-height:1.3;display:flex}.toolpath-step b{color:var(--text)}.toolpath-step-flip{border-style:solid;border-color:var(--accent);background:var(--accent-soft)}.toolpath-face{letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);margin:12px 4px 0;font-size:11px;font-weight:600}.toolpath-groups>li:first-child .toolpath-face{margin-top:4px}.toolpath-group-head{align-items:center;gap:8px;padding:8px 4px 4px;display:flex}.file-number{background:var(--text);width:20px;height:20px;color:var(--surface);border-radius:50%;flex:none;place-items:center;font-size:11px;font-weight:700;display:grid}.toolpath-group-name{flex-direction:column;flex:1;min-width:0;line-height:1.25;display:flex}.toolpath-group-name b{font-size:13px}.toolpath-group-name small{color:var(--text-muted);font-size:11px}.toolpath-row{border-radius:var(--radius);border:1px solid #0000;align-items:center;margin-left:10px;display:flex;position:relative}.toolpath-row:hover{background:var(--surface-sunken)}.toolpath-row[aria-current=true]{border-color:var(--accent);background:var(--accent-soft)}.toolpath-select{min-width:0;font:inherit;text-align:left;color:var(--text);cursor:pointer;background:0 0;border:none;flex:1;align-items:center;gap:8px;padding:7px 8px;display:flex}.toolpath-name{flex-direction:column;flex:1;min-width:0;line-height:1.25;display:flex}.toolpath-name b{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;overflow:hidden}.toolpath-name small{color:var(--text-muted);font-size:11px}.toolpath-depth{font:11px var(--mono);color:var(--text-muted);font-variant-numeric:tabular-nums}.problem-dot{border-radius:50%;flex:none;width:8px;height:8px}.problem-error{background:var(--danger)}.problem-warning{background:var(--warning)}.row-actions{opacity:0;gap:1px;padding-right:4px;display:flex}.toolpath-row:hover .row-actions,.toolpath-row:focus-within .row-actions,.toolpath-row[aria-current=true] .row-actions,.toolpath-group-head:hover .row-actions,.toolpath-group-head:focus-within .row-actions{opacity:1}.mini-button{width:22px;height:22px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;place-items:center;padding:0;display:grid}.mini-button:hover:not(:disabled){background:var(--surface);color:var(--text)}.mini-button:disabled{opacity:.3;cursor:default}@media (hover:none){.row-actions{opacity:1}}.panel-title-row{align-items:center;gap:10px;min-width:0;display:flex}.panel-title-text{flex-direction:column;min-width:0;display:flex}.cut-badge{background:var(--surface-sunken);border-radius:8px;flex:none;place-items:center;width:36px;height:36px;display:grid}.cut-says{border-radius:var(--radius);background:var(--surface-sunken);margin:0;padding:10px 12px;font-size:13px;line-height:1.45}.applies-to{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.chip{font:inherit;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);cursor:pointer;padding:2px 9px}.chip:hover{border-color:var(--accent)}.cut-choices{grid-template-columns:1fr 1fr;gap:8px;display:grid}.cut-choice{font:inherit;text-align:left;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:8px;flex-direction:column;align-items:flex-start;gap:3px;padding:10px;display:flex}.cut-choice:hover:not([aria-disabled=true]){border-color:var(--accent)}.cut-choice b{font-size:13px}.cut-choice small{color:var(--text-muted);font-size:11.5px;line-height:1.3}.cut-choice[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft)}.cut-choice[aria-disabled=true]{opacity:.55;cursor:not-allowed;color:var(--text-muted)}.cut-choice[aria-disabled=true] small{color:var(--warning)}.object-toolpaths{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.toolpath-chip{width:100%;font:inherit;text-align:left;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);cursor:pointer;grid-template-columns:auto 1fr;align-items:center;column-gap:8px;padding:6px 8px;display:grid}.toolpath-chip>:first-child{grid-row:span 2}.toolpath-chip:hover{border-color:var(--accent)}.add-cut-buttons{flex-wrap:wrap;gap:6px;display:flex}.easy-gate{z-index:20;background:#00000040;place-items:center;padding:16px;display:grid;position:absolute;inset:0}.easy-gate-card{border:1px solid var(--border);background:var(--surface);border-radius:10px;flex-direction:column;gap:12px;max-width:400px;padding:20px 22px;display:flex;box-shadow:0 12px 40px #00000040}.easy-gate-card h2{align-items:center;gap:8px;font-size:16px;display:flex}.easy-gate-card p{color:var(--text-muted);margin:0}@media (prefers-reduced-motion:reduce){.switch,.switch:after{transition:none}}
