:root{color:#1f2933;background:#e7ebef;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{align-items:center;background:#fff;border:1px solid #c8d0d8;border-radius:6px;color:#25313d;cursor:pointer;display:inline-flex;gap:6px;justify-content:center;min-height:34px;padding:7px 10px}button:hover{background:#f3f6f8;border-color:#93a1af}button:disabled{background:#eef2f5;border-color:#d5dce3;color:#8a96a3;cursor:not-allowed}button.selected{background:#1f5f82;border-color:#1f5f82;color:#fff}.app-shell{display:grid;grid-template-columns:74px minmax(0,1fr) 340px;height:100vh;overflow:hidden}.panel{background:#f8fafb;border-color:#cfd6de;border-style:solid;color:#26323f;overflow-y:auto}.menu-rail{background:#f8fafb;border-right:1px solid #cfd6de;display:flex;flex-direction:column;padding:10px 7px;z-index:10}.rail-tabs{display:flex;flex-direction:column;gap:6px;width:100%}.rail-tab{flex-direction:column;font-size:10px;gap:4px;line-height:1.1;min-height:50px;padding:6px 4px;width:100%}.theme-toggle{margin-top:auto;min-height:40px;padding:7px;width:100%}.setup-drawer{border-width:0 0 0 1px;bottom:0;box-shadow:-8px 0 24px #1f293329;padding:16px 14px 24px;position:fixed;right:0;top:0;width:min(390px,calc(100vw - 74px));z-index:40}.setup-drawer-header{align-items:center;border-bottom:1px solid #d7dde3;display:flex;justify-content:space-between;margin-bottom:14px;padding-bottom:10px}.setup-drawer-header .panel-title{margin:0}.setup-drawer-close{min-height:32px;padding:5px;width:32px}.right-panel{border-width:0 0 0 1px;display:flex;flex-direction:column;gap:18px;padding:18px}.panel-title{color:#667381;font-size:12px;font-weight:700;letter-spacing:0;margin-bottom:14px}.project-list{display:grid;gap:8px}.project-item{justify-content:flex-start;width:100%}.project-detail{border-top:1px solid #d7dde3;margin-top:16px;padding-top:16px}.project-detail h2{font-size:14px;margin:0 0 12px}.setup-note{color:#5f6d7a;font-size:12px;line-height:1.4;margin:-4px 0 12px}.setup-field{display:grid;gap:7px;margin-bottom:10px}.setup-field span{color:#667381;font-size:12px;font-weight:700}.setup-field input,.setup-field select,.axis-input select{background:#fff;border:1px solid #c8d0d8;border-radius:6px;color:#17212b;height:34px;min-width:0;padding:6px 8px;width:100%}.setup-field small{color:#667381;font-size:11px;margin-top:-4px}.color-field input[type=color]{cursor:pointer;padding:3px}.cad-file-row{align-items:center;background:#f2f5f8;border:1px solid #d7dde3;border-radius:6px;color:#526170;display:grid;font-size:12px;gap:8px;grid-template-columns:1fr auto;margin-top:8px;min-width:0;padding:7px 8px}.cad-file-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cad-file-row button{min-height:26px;padding:4px 6px}.cad-import-error{color:#8a2424;font-size:12px;line-height:1.4;margin:8px 0 0}.setup-subsection-title{color:#667381;font-size:12px;font-weight:700;margin:14px 0 8px}.project-save-status{background:#eef3f6;border-left:3px solid #4d7189;color:#465764;font-size:12px;margin-bottom:12px;padding:8px 9px}.project-file-actions{display:grid;gap:8px;grid-template-columns:1fr 1fr}.project-file-message{border-left:3px solid #36825d;color:#315f4c;font-size:12px;line-height:1.4;margin:12px 0 0;padding:6px 8px}.project-file-message.error{border-left-color:#b74848;color:#8b3030}.project-cad-note{border-top:1px solid #d7dde3;margin-top:14px;padding-top:12px}.limit-header{color:#667381;display:grid;font-size:11px;font-weight:700;gap:8px;grid-template-columns:24px 1fr 1fr;margin-bottom:5px}.limit-row{align-items:center;display:grid;gap:8px;grid-template-columns:24px 1fr 1fr;margin-bottom:8px}.limit-row span{color:#667381;font-size:12px;font-weight:700}.limit-row input{border:1px solid #c8d0d8;border-radius:6px;font-variant-numeric:tabular-nums;height:34px;min-width:0;padding:6px 8px;width:100%}.machine-limit-fields{display:grid;gap:10px}.machine-model-mode{display:grid;gap:7px;grid-template-columns:repeat(2,minmax(0,1fr))}.gantry-spindle-settings{margin-top:12px}.machine-component-editor{border-bottom:1px solid #d7dde3;border-top:1px solid #d7dde3;margin-top:12px;padding:12px 0}.component-visual-row{align-items:center;display:grid;gap:10px;grid-template-columns:1fr 42px}.component-visual-row .toggle-control{margin:0}.component-color input{background:#fff;border:1px solid #c8d0d8;border-radius:5px;cursor:pointer;height:32px;padding:3px;width:42px}.machine-component-scale{margin-top:10px}.danger-action{color:#8a2424}.axis-direction-grid{display:grid;gap:8px;grid-template-columns:repeat(3,minmax(0,1fr))}.axis-direction-grid label{display:grid;gap:5px}.axis-direction-grid span{color:#667381;font-size:11px;font-weight:700}.axis-direction-grid select{background:#fff;border:1px solid #c8d0d8;border-radius:6px;color:#17212b;font-size:11px;height:34px;min-width:0;padding:4px}.axis-preview-list{display:grid;gap:9px}.axis-preview-row{align-items:center;display:grid;gap:8px;grid-template-columns:18px minmax(0,1fr) 54px}.axis-preview-row>span{color:#667381;font-size:12px;font-weight:700}.axis-preview-row input{min-width:0;width:100%}.axis-preview-row output{font-family:Cascadia Mono,Consolas,monospace;font-size:11px;font-variant-numeric:tabular-nums;text-align:right}.machine-setup-summary{background:#f2f5f8;border:1px solid #d7dde3;border-radius:6px;display:grid;font-size:12px;gap:6px 10px;grid-template-columns:auto 1fr;margin:14px 0 0;padding:9px}.machine-setup-summary dt{color:#667381}.machine-setup-summary dd{font-variant-numeric:tabular-nums;margin:0;text-align:right}.project-placeholder{align-items:center;background:#f2f5f8;border:1px solid #d7dde3;border-radius:6px;color:#667381;display:flex;font-size:12px;gap:8px;line-height:1.4;padding:10px}.workspace{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);min-width:0}.top-bar{align-items:center;background:#fff;border-bottom:1px solid #cfd6de;display:grid;gap:14px;grid-template-columns:auto minmax(0,1fr);min-height:56px;padding:8px 14px}.top-bar h1{font-size:16px;line-height:1.2;margin:0 0 2px;white-space:nowrap}.top-bar p{color:#5c6875;font-size:10px;margin:0;white-space:nowrap}.machine-summary{align-items:center;color:#384653;display:flex;font-size:10px;justify-content:flex-end;min-width:0;overflow:hidden;white-space:nowrap}.machine-summary span{padding:0 8px}.machine-summary span+span{border-left:1px solid #cfd6de}.viewport-frame{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);height:100%;min-height:420px;position:relative;width:100%}.viewport-toolbar{align-items:center;background:#fff;border-bottom:1px solid #cfd6de;display:flex;flex-wrap:wrap;gap:8px;padding:7px 12px}.viewport-view-modes{display:flex;gap:4px}.viewport-toolbar button{border-radius:4px;font-size:12px;height:34px}.viewport-fit{width:34px;padding:0}.viewport-scene{min-height:0;position:relative}.viewport{height:100%;position:relative;width:100%}.viewport canvas{display:block;position:absolute;top:0;right:0;bottom:0;left:0}.viewport-status{background:#f8fafbeb;border:1px solid #cfd6de;border-radius:6px;box-shadow:0 8px 20px #1f29331a;display:grid;font-size:12px;gap:7px;left:14px;min-width:160px;padding:9px;position:absolute;top:14px}.viewport-status div{display:grid;gap:10px;grid-template-columns:56px 1fr}.viewport-status span{color:#667381}.viewport-status strong{color:#25313d;font-weight:700}.viewport-status strong.cutting-yes{color:#16633b}.viewport-status strong.cutting-no{color:#667381}.viewport-setup-status{background:#f8fafbf0;border:1px solid;border-radius:6px;box-shadow:0 8px 20px #1f29331a;display:grid;gap:3px;min-width:180px;padding:9px;position:absolute;right:14px;top:14px}.viewport-setup-status strong{font-size:12px}.viewport-setup-status span{font-size:12px;line-height:1.35}.viewport-setup-ok{border-color:#b8d9c5;color:#16633b}.viewport-setup-error{border-color:#d99b9b;color:#8a2424}.viewport-alerts{display:grid;gap:7px;max-width:360px;position:absolute;right:14px;top:78px}.viewport-alert{background:#f8fafbf0;border:1px solid;border-radius:6px;box-shadow:0 8px 20px #1f29331a;display:grid;gap:3px;margin:0;padding:9px}.viewport-alert strong{font-size:12px}.viewport-alert span{font-size:12px;line-height:1.35}.viewport-alert-warning{border-color:#d8bc70;color:#765300}.viewport-alert-error{border-color:#d99b9b;color:#8a2424}.readout-section,.control-section{border-bottom:1px solid #d7dde3;padding-bottom:18px}.readout-section h2,.control-section h2{font-size:14px;margin:0 0 12px}.section-header{align-items:center;display:flex;gap:10px;justify-content:space-between;margin-bottom:12px}.section-header h2{flex-shrink:0;margin:0}.icon-command{font-size:12px;min-height:30px;padding:5px 8px}.command-row{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}.setup-check-status{align-items:center;border:1px solid;border-radius:999px;display:inline-flex;font-size:11px;font-weight:700;gap:5px;min-height:24px;padding:3px 8px}.setup-check-status-ok{background:#eef8f2;border-color:#b8d9c5;color:#16633b}.setup-check-status-warning{background:#fff8e6;border-color:#e7d4a4;color:#765300}.setup-check-status-error{background:#fff2f2;border-color:#e0b5b5;color:#8a2424}.setup-check-list{display:grid;gap:8px}.setup-check-item{align-items:flex-start;border:1px solid #d7dde3;border-radius:6px;display:grid;gap:8px;grid-template-columns:18px 1fr;padding:8px}.setup-check-item h3{color:#25313d;font-size:12px;margin:0 0 3px}.setup-check-item p{color:#526170;font-size:12px;line-height:1.35;margin:0}.setup-check-ok{background:#f7fbf8;color:#16633b}.setup-check-warning{background:#fffaf0;color:#765300}.setup-check-error{background:#fff6f6;color:#8a2424}.setup-check-info{background:#f5f8fa;color:#356072}.setup-issue-list{border-top:1px solid #d7dde3;display:grid;gap:6px;margin-top:12px;padding-top:10px}.setup-issue{font-size:12px;line-height:1.35;margin:0}.setup-issue-error{color:#8a2424}.setup-issue-warning{color:#765300}.setup-issue-info{color:#356072}.machine-status-readout{display:grid;gap:10px}.machine-status-readout .section-header{margin-bottom:0}.digital-position-layer{background:#111820;border:1px solid #2f3b45;border-radius:6px;box-shadow:inset 0 0 0 1px #ffffff0a;color:#dbe6ee;padding:9px}.digital-position-work{background:#0f2530;border-color:#24556a}.digital-layer-title{align-items:center;color:#93a6b5;display:flex;font-size:11px;font-weight:800;justify-content:space-between;letter-spacing:0;margin-bottom:7px}.digital-layer-title strong{color:#6fc6e9;font-family:Cascadia Mono,Consolas,monospace;font-size:10px}.digital-axis-grid{display:grid;gap:7px;grid-template-columns:repeat(3,minmax(0,1fr))}.digital-axis-cell{min-width:0}.digital-axis-cell span{color:#8da1b0;display:block;font-size:11px;font-weight:800;margin-bottom:3px}.digital-axis-cell strong{color:#f4f8fb;display:block;font-family:Cascadia Mono,Consolas,monospace;font-size:13px;font-variant-numeric:tabular-nums;font-weight:700;overflow-wrap:anywhere}.cnc-offset-strip{background:#182129;border:1px solid #34424d;border-radius:6px;color:#c7d5de;display:grid;font-family:Cascadia Mono,Consolas,monospace;font-size:10px;font-variant-numeric:tabular-nums;gap:5px;grid-template-columns:repeat(3,minmax(0,1fr));padding:7px;text-align:center}.machine-digital-metrics{background:#f2f5f8;border:1px solid #d7dde3;border-radius:6px;display:grid;font-size:12px;gap:7px 10px;grid-template-columns:auto 1fr;margin:0;padding:9px}.machine-digital-metrics dt{color:#667381;font-weight:700}.machine-digital-metrics dd{font-family:Cascadia Mono,Consolas,monospace;font-variant-numeric:tabular-nums;margin:0;text-align:right}.cutting-force-panel{display:grid;gap:9px}.cutting-force-panel .section-header{margin-bottom:0}.force-state{background:#e2e8ee;border-radius:999px;color:#3a4652;font-size:11px;font-weight:700;padding:3px 8px}.force-state-active{background:#d8eee2;color:#16633b}.force-graph{background:#111820;border:1px solid #2f3b45;border-radius:6px;display:block;height:130px;width:100%}.force-axis{stroke:#748494;stroke-width:1}.force-axis-muted{stroke:#3f4b57;stroke-width:1}.force-line{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.2}.force-line-x{stroke:#d14b4b}.force-line-y{stroke:#3d8ac6}.force-line-z{stroke:#b48a2c}.force-readout{display:grid;gap:7px;grid-template-columns:1fr 1fr}.force-readout-three{grid-template-columns:repeat(3,minmax(0,1fr))}.force-readout span{align-items:center;background:#f2f5f8;border:1px solid #d7dde3;border-radius:6px;color:#25313d;display:flex;font-family:Cascadia Mono,Consolas,monospace;font-size:12px;font-variant-numeric:tabular-nums;gap:6px;justify-content:center;min-width:0;padding:7px}.force-swatch{border-radius:999px;display:inline-block;height:9px;width:9px}.force-swatch-x{background:#d14b4b}.force-swatch-y{background:#3d8ac6}.force-swatch-z{background:#b48a2c}.force-model-readout{color:#526170;display:flex;font-family:Cascadia Mono,Consolas,monospace;font-size:11px;font-variant-numeric:tabular-nums;gap:10px;justify-content:space-between}.analysis-action{margin-top:0}.modal-backdrop{background:#1118206b;bottom:0;left:0;position:fixed;right:0;top:0;z-index:20}.analysis-modal{background:#f8fafb;border:1px solid #cfd6de;border-radius:8px;box-shadow:0 24px 70px #11182047;color:#26323f;max-width:880px;padding:16px;position:fixed;width:min(880px,calc(100vw - 24px))}.modal-drag-handle{cursor:move;-webkit-user-select:none;user-select:none}.modal-drag-handle button{cursor:pointer}.analysis-modal .force-graph{height:260px}.cutting-force-window{display:grid;gap:16px;grid-template-columns:280px minmax(0,1fr)}.force-parameter-panel{border-right:1px solid #d7dde3;padding-right:16px}.force-coefficient-grid{display:grid;gap:8px;grid-template-columns:1fr 1fr;margin-top:12px}.force-parameter-note{color:#5f6d7a;font-size:12px;line-height:1.4;margin:10px 0 0}.force-limit-list{display:grid;gap:7px;margin-top:10px}.force-limit-row{border:1px solid;border-radius:6px;display:grid;font-size:12px;gap:3px 8px;grid-template-columns:1fr auto;padding:7px}.force-limit-row span{color:#4f5e6d}.force-limit-row strong{font-size:11px;text-transform:uppercase}.force-limit-row small{font-family:Cascadia Mono,Consolas,monospace;font-size:11px;grid-column:1 / -1}.force-limit-pass{background:#f5faf7;border-color:#b8d9c5;color:#16633b}.force-limit-warning{background:#fff8e6;border-color:#e7d4a4;color:#765300}.state-pill{border-radius:999px;display:inline-flex;font-size:12px;font-weight:700;padding:3px 9px}.state-idle{background:#e2e8ee;color:#3a4652}.state-running{background:#d8eee2;color:#16633b}.state-paused{background:#fff0cc;color:#7a5500}.state-stopped{background:#f5d8d8;color:#8a2424}.axis-inputs{display:grid;gap:8px}.tool-offset-grid{display:grid;gap:8px;grid-template-columns:repeat(2,minmax(0,1fr))}.coordinate-zero-actions{display:grid;gap:7px;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:10px}.coordinate-zero-actions button{font-size:11px;min-width:0;padding:6px}.axis-input{align-items:center;display:grid;gap:10px;grid-template-columns:24px 1fr}.axis-input span{color:#667381;font-size:12px;font-weight:700}.axis-input input{border:1px solid #c8d0d8;border-radius:6px;font-variant-numeric:tabular-nums;height:34px;padding:6px 8px;width:100%}.setup-group{display:grid;gap:8px}.setup-group+.setup-group{margin-top:14px}.setup-group-title{color:#667381;font-size:12px;font-weight:700}.setup-input-wide-label{grid-template-columns:34px 1fr}.segmented-control{display:grid;gap:6px;grid-template-columns:repeat(5,minmax(0,1fr));margin-top:12px}.segmented-control button{font-size:12px;min-width:0;padding-left:4px;padding-right:4px;white-space:nowrap}.jog-coordinate-control{align-items:stretch;display:grid;gap:10px;grid-template-columns:minmax(0,1fr) 74px;margin-top:12px}.xy-jog-pad{display:grid;gap:6px;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(3,38px)}.xy-jog-pad button,.z-jog-pad button{font-size:12px;min-height:38px;min-width:0;padding:6px}.jog-y-plus{grid-column:2;grid-row:1}.jog-x-minus{grid-column:1;grid-row:2}.jog-x-plus{grid-column:3;grid-row:2}.jog-y-minus{grid-column:2;grid-row:3}.jog-origin{align-items:center;background:#eef2f5;border:1px solid #d5dce3;border-radius:6px;color:#667381;display:flex;font-size:12px;font-weight:700;grid-column:2;grid-row:2;justify-content:center}.z-jog-pad{display:grid;gap:6px;grid-template-rows:1fr 1fr}.button-grid{display:grid;gap:8px;grid-template-columns:1fr 1fr}.secondary-controls{margin-top:12px}.toggle-control{align-items:center;color:#526170;display:flex;font-size:12px;gap:8px;margin-top:12px}.toggle-control input{height:16px;width:16px}.wide-action{margin-top:12px;width:100%}.program-progress{margin-top:12px}.program-progress-label{color:#526170;display:flex;font-size:12px;justify-content:space-between;margin-bottom:6px}.progress-track{background:#dce3ea;border-radius:999px;height:8px;overflow:hidden}.progress-fill{background:#1f8f5f;height:100%;transition:width .12s linear}.gcode-panel{border-bottom:0}.hidden-file-input{display:none}.file-name{color:#526170;font-family:Cascadia Mono,Consolas,monospace;font-size:12px;margin:-4px 0 9px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gcode-editor{display:grid;gap:7px}.gcode-editor span{color:#667381;font-size:12px;font-weight:700}.gcode-editor textarea{background:#fff;border:1px solid #c8d0d8;border-radius:6px;color:#17212b;font-family:Cascadia Mono,Consolas,monospace;font-size:12px;line-height:1.45;min-height:180px;padding:9px;resize:vertical;width:100%}.gcode-summary{color:#4f5e6d;display:flex;font-size:12px;justify-content:space-between;margin-top:10px}.program-control-panel{display:grid;gap:8px;grid-template-columns:1fr 1fr;margin-top:12px}.program-control-panel button{font-size:12px;min-width:0;padding-left:8px;padding-right:8px}.program-control-start{background:#e9f6ef;border-color:#a9d0b8;color:#16633b;font-weight:700}.program-control-start:hover{background:#dff0e6;border-color:#83bd9a}.program-control-start:disabled{background:#eef2f5;border-color:#d5dce3;color:#8a96a3}.bounds-grid{background:#f5f8fa;border:1px solid #d7dde3;border-radius:6px;display:grid;font-size:12px;gap:6px 10px;grid-template-columns:auto 1fr;margin:10px 0 0;padding:8px}.bounds-grid dt{color:#667381}.bounds-grid dd{font-family:Cascadia Mono,Consolas,monospace;margin:0;text-align:right}.gcode-trace{background:#fff;border:1px solid #d7dde3;border-radius:6px;display:grid;font-family:Cascadia Mono,Consolas,monospace;font-size:11px;list-style:none;margin:10px 0 0;max-height:160px;overflow:auto;padding:4px 0}.program-window{min-height:180px}.gcode-trace li{display:grid;gap:8px;grid-template-columns:32px 1fr;line-height:1.5;min-width:0;padding:2px 8px}.gcode-trace li.selected-line{background:#eef6fb}.gcode-trace li.active-line{background:#d9edf7;color:#174f72;font-weight:700}.gcode-trace .line-number{color:#7d8995;text-align:right}.gcode-trace code{overflow:hidden;text-overflow:ellipsis;white-space:pre}.gcode-line-button{background:transparent;border:0;border-radius:4px;color:inherit;display:block;justify-content:flex-start;min-height:0;min-width:0;padding:0;text-align:left;width:100%}.gcode-line-button:hover{background:transparent;border-color:transparent}.gcode-word-g{color:#174f72;font-weight:700}.gcode-word-axis{color:#16633b}.gcode-word-offset{color:#7a5500}.gcode-word-machine{color:#7345a9}.gcode-word-comment{color:#7d8995}.toolpath-legend{display:grid;gap:6px;grid-template-columns:1fr 1fr;margin-top:10px}.toolpath-legend span{align-items:center;color:#526170;display:flex;font-size:12px;gap:6px}.legend-swatch{border-radius:999px;display:inline-block;height:8px;width:18px}.legend-rapid{background:#6b7280}.legend-feed{background:#1f8f5f}.legend-cw{background:#d1831f}.legend-ccw{background:#8b5cf6}.legend-selected{background:#e11d48}.gcode-warnings{background:#fff7df;border:1px solid #ead18c;border-radius:6px;color:#6e5207;font-size:12px;margin-top:10px;padding:8px}.gcode-warnings p{margin:0}.gcode-warnings p+p{margin-top:5px}@media(max-width:1050px){.app-shell{grid-template-columns:74px minmax(0,1fr);grid-template-rows:minmax(620px,1fr) auto;height:auto;min-height:100vh;overflow:visible}.right-panel{border-width:0 0 1px;grid-column:1 / -1;grid-row:2}.menu-rail{grid-column:1;grid-row:1}.workspace{grid-column:2;grid-row:1}.project-list{grid-template-columns:repeat(5,minmax(0,1fr))}.project-item{justify-content:center}.top-bar{gap:3px;grid-template-columns:1fr;padding-bottom:6px;padding-top:6px}.machine-summary{justify-content:flex-start;overflow-x:auto}.viewport-frame{height:580px;min-height:580px}.cutting-force-window{grid-template-columns:1fr}.force-parameter-panel{border-bottom:1px solid #d7dde3;border-right:0;padding-bottom:14px;padding-right:0}}@media(max-width:520px){.app-shell{grid-template-columns:1fr;grid-template-rows:auto minmax(620px,1fr) auto}.menu-rail{border-bottom:1px solid #cfd6de;border-right:0;grid-column:1;grid-row:1;padding:7px 10px;flex-direction:row;gap:8px}.rail-tabs{flex-direction:row;overflow-x:auto;padding-bottom:2px}.theme-toggle{flex:0 0 40px;margin-left:auto;margin-top:0;width:40px}.rail-tab{flex:0 0 64px;min-height:48px}.workspace{grid-column:1;grid-row:2}.right-panel{grid-column:1;grid-row:3}.setup-drawer{width:min(390px,100vw)}.viewport-scene{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto auto minmax(0,1fr)}.viewport-scene .viewport{grid-column:1 / -1;grid-row:3;min-height:0}.viewport-status,.viewport-setup-status,.viewport-alerts{position:static;min-width:0;max-width:none;margin:4px;box-shadow:none}.viewport-status{grid-column:1;grid-row:1}.viewport-setup-status{grid-column:2;grid-row:1;align-self:start}.viewport-alerts{grid-column:1 / -1;grid-row:2}.project-list,.segmented-control{grid-template-columns:repeat(2,minmax(0,1fr))}.button-grid{grid-template-columns:1fr}}:root[data-theme=dark]{background:#151a1f;color:#dce4ea;color-scheme:dark}:root[data-theme=dark] button{background:#242b31;border-color:#46515a;color:#dce4ea}:root[data-theme=dark] button:hover{background:#2d363d;border-color:#667681}:root[data-theme=dark] button:disabled{background:#20262b;border-color:#343d44;color:#707d86}:root[data-theme=dark] button.selected,:root[data-theme=dark] .rail-tab.selected{background:#1976a3;border-color:#3c9bca;color:#fff}:root[data-theme=dark] .panel,:root[data-theme=dark] .menu-rail,:root[data-theme=dark] .analysis-modal{background:#1b2126;border-color:#384249;color:#d7e0e6}:root[data-theme=dark] .setup-drawer{box-shadow:-10px 0 30px #0000006b}:root[data-theme=dark] .setup-drawer-header,:root[data-theme=dark] .project-detail,:root[data-theme=dark] .readout-section,:root[data-theme=dark] .control-section,:root[data-theme=dark] .setup-issue-list,:root[data-theme=dark] .project-cad-note,:root[data-theme=dark] .force-parameter-panel{border-color:#384249}:root[data-theme=dark] .machine-component-editor{border-color:#384249}:root[data-theme=dark] .top-bar,:root[data-theme=dark] .viewport-toolbar{background:#20272c;border-color:#3a454d}:root[data-theme=dark] .top-bar p,:root[data-theme=dark] .machine-summary,:root[data-theme=dark] .panel-title,:root[data-theme=dark] .setup-note,:root[data-theme=dark] .setup-field span,:root[data-theme=dark] .setup-field small,:root[data-theme=dark] .setup-subsection-title,:root[data-theme=dark] .limit-header,:root[data-theme=dark] .limit-row span,:root[data-theme=dark] .machine-setup-summary dt,:root[data-theme=dark] .axis-input span,:root[data-theme=dark] .setup-group-title,:root[data-theme=dark] .toggle-control,:root[data-theme=dark] .program-progress-label,:root[data-theme=dark] .file-name,:root[data-theme=dark] .gcode-editor span,:root[data-theme=dark] .gcode-summary,:root[data-theme=dark] .bounds-grid dt,:root[data-theme=dark] .toolpath-legend span,:root[data-theme=dark] .force-model-readout,:root[data-theme=dark] .force-parameter-note,:root[data-theme=dark] .force-limit-row span{color:#98a6b0}:root[data-theme=dark] .axis-direction-grid span,:root[data-theme=dark] .axis-preview-row>span{color:#98a6b0}:root[data-theme=dark] .setup-field input,:root[data-theme=dark] .setup-field select,:root[data-theme=dark] .axis-input input,:root[data-theme=dark] .axis-input select,:root[data-theme=dark] .limit-row input,:root[data-theme=dark] .gcode-editor textarea{background:#11171b;border-color:#46515a;color:#e6edf2}:root[data-theme=dark] .axis-direction-grid select,:root[data-theme=dark] .component-color input{background:#11171b;border-color:#46515a;color:#e6edf2}:root[data-theme=dark] .cad-file-row,:root[data-theme=dark] .machine-setup-summary,:root[data-theme=dark] .project-placeholder,:root[data-theme=dark] .machine-digital-metrics,:root[data-theme=dark] .force-readout span,:root[data-theme=dark] .bounds-grid,:root[data-theme=dark] .jog-origin{background:#222a30;border-color:#3d4850;color:#d7e0e6}:root[data-theme=dark] .cnc-offset-strip{background:#10171c;border-color:#3b4953}:root[data-theme=dark] .project-save-status{background:#202c33;border-left-color:#4c9ac2;color:#b9c8d1}:root[data-theme=dark] .viewport-status,:root[data-theme=dark] .viewport-setup-status,:root[data-theme=dark] .viewport-alert{background:#1b2126f0;box-shadow:0 8px 22px #0000004d}:root[data-theme=dark] .viewport-status span,:root[data-theme=dark] .viewport-status strong.cutting-no{color:#95a4ae}:root[data-theme=dark] .viewport-status strong{color:#eef4f7}:root[data-theme=dark] .viewport-status strong.cutting-yes,:root[data-theme=dark] .viewport-setup-ok,:root[data-theme=dark] .setup-check-ok,:root[data-theme=dark] .setup-issue-info{color:#72d6a7}:root[data-theme=dark] .viewport-setup-ok,:root[data-theme=dark] .setup-check-status-ok{border-color:#39785d}:root[data-theme=dark] .viewport-setup-error,:root[data-theme=dark] .viewport-alert-error,:root[data-theme=dark] .setup-issue-error,:root[data-theme=dark] .cad-import-error{color:#ff9898}:root[data-theme=dark] .viewport-alert-warning,:root[data-theme=dark] .setup-issue-warning{color:#f2c96d}:root[data-theme=dark] .setup-check-item{border-color:#3a454c}:root[data-theme=dark] .setup-check-item h3,:root[data-theme=dark] .setup-check-item p{color:inherit}:root[data-theme=dark] .setup-check-ok,:root[data-theme=dark] .force-limit-pass{background:#192b24;border-color:#376b55;color:#8bdab3}:root[data-theme=dark] .setup-check-warning,:root[data-theme=dark] .force-limit-warning,:root[data-theme=dark] .gcode-warnings{background:#30291a;border-color:#776234;color:#f0cd7c}:root[data-theme=dark] .setup-check-error{background:#321f22;color:#f2a0a7}:root[data-theme=dark] .setup-check-info{background:#1d2a31;color:#8bc4dd}:root[data-theme=dark] .digital-position-layer,:root[data-theme=dark] .force-graph{background:#0b1014;border-color:#36434b}:root[data-theme=dark] .digital-position-work{background:#0d242e;border-color:#26627b}:root[data-theme=dark] .state-idle,:root[data-theme=dark] .force-state{background:#303940;color:#c8d2d9}:root[data-theme=dark] .state-running,:root[data-theme=dark] .force-state-active{background:#19432f;color:#8ee1b6}:root[data-theme=dark] .state-paused{background:#493a18;color:#f5ce73}:root[data-theme=dark] .state-stopped{background:#492329;color:#ff9ea6}:root[data-theme=dark] .progress-track{background:#303940}:root[data-theme=dark] .gcode-trace{background:#0f1519;border-color:#3d4850;color:#d9e1e6}:root[data-theme=dark] .gcode-trace li.selected-line{background:#21333d}:root[data-theme=dark] .gcode-trace li.active-line{background:#173b4d;color:#bfe8fb}:root[data-theme=dark] .gcode-word-g{color:#65bde8}:root[data-theme=dark] .gcode-word-axis{color:#75d4a8}:root[data-theme=dark] .gcode-word-offset{color:#e8c36e}:root[data-theme=dark] .gcode-word-machine{color:#c49aef}:root[data-theme=dark] .gcode-word-comment,:root[data-theme=dark] .gcode-trace .line-number{color:#7f909a}:root[data-theme=dark] .program-control-start{background:#184b34;border-color:#3b8864;color:#a2e9c4}:root[data-theme=dark] .program-control-start:hover{background:#205d41;border-color:#55a77f}
