: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;--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;--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);width:220px;min-width:0;color:var(--text);background:0 0;border:1px solid #0000;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{gap:8px;margin-left:auto;display:flex}.app-body{flex:1;grid-template-columns:auto 1fr 300px;min-height:0;display:grid}.toolbar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;gap:4px;padding:8px 6px;display:flex}.tool-button{width:56px;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:2px;padding:8px 4px;font-size:18px;display:flex}.tool-button:hover{background:var(--surface-sunken);border-color:var(--border)}.tool-button:disabled{opacity:.4;cursor:default;background:0 0;border-color:#0000}.tool-label{font-size:11px}.tool-icon-text{font-family:Georgia,Times New Roman,serif;font-weight:700;line-height:1.2}.toolbar-group{border-top:1px solid var(--border);flex-direction:column;gap:4px;margin-top:8px;padding-top:8px;display:flex}.workspace{background:var(--canvas-bg);flex-direction:column;min-width:0;min-height:0;display:flex;position:relative}.view-toggle{z-index:1;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}.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}
