:root{--color-primary:#0d7377;--color-primary-dark:#095b5e;--color-primary-light:#e0f2f1;--color-accent:#b45309;--color-accent-dark:#92400e;--color-bg:#f0f3f6;--color-bg-subtle:#f7f9fb;--color-bg-hover:#eef2f5;--color-surface:#fff;--color-text:#1f2937;--color-text-secondary:#545d6c;--color-text-tertiary:#6b7280;--color-text-placeholder:#6b7280;--color-border:#d8dde4;--color-border-strong:#aab3c0;--color-grid-dot:#dfe5eb;--color-error:#b91c1c;--color-error-soft-bg:#fee2e2;--color-success:#047857;--color-success-soft-bg:#d1fae5;--color-warning:#b45309;--color-warning-soft-bg:#fef3c7;--color-focus:#0d7377;--color-focus-shadow:#0d737759;--color-toolbar:#1a1d23;--color-toolbar-text:#e5e7eb;--color-toolbar-muted:#9ca3af;--color-toolbar-accent:#0d7377;--color-toolbar-hover:#ffffff14;--color-toolbar-separator:#ffffff26;--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:"SF Mono", ui-monospace, "SFMono-Regular", "Cascadia Code", "Consolas", "Liberation Mono", monospace;font:14px/1.5 var(--font-sans);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--color-primary:#2dd4d4;--color-primary-dark:#14a3a8;--color-primary-light:#1a3a3c;--color-bg:#111318;--color-bg-subtle:#1a1d24;--color-bg-hover:#242830;--color-surface:#1e2028;--color-text:#f1f5f9;--color-text-secondary:#c4cdd9;--color-text-tertiary:#9aa3b1;--color-text-placeholder:#9aa3b1;--color-border:#3a424f;--color-border-strong:#5a6478;--color-grid-dot:#2a313d;--color-error:#fca5a5;--color-error-soft-bg:#3b1a1a;--color-success:#6ee7b7;--color-success-soft-bg:#14322a;--color-warning:#fcd34d;--color-warning-soft-bg:#3a2a10;--color-focus:#2dd4d4;--color-focus-shadow:#2dd4d473;--color-toolbar:#0d0f14;--color-toolbar-text:#d1d5db;--color-toolbar-muted:#6b7280}}[data-theme=dark]{--color-primary:#2dd4d4;--color-primary-dark:#14a3a8;--color-primary-light:#1a3a3c;--color-bg:#111318;--color-bg-subtle:#1a1d24;--color-bg-hover:#242830;--color-surface:#1e2028;--color-text:#f1f5f9;--color-text-secondary:#c4cdd9;--color-text-tertiary:#9aa3b1;--color-text-placeholder:#9aa3b1;--color-border:#3a424f;--color-border-strong:#5a6478;--color-grid-dot:#2a313d;--color-error:#fca5a5;--color-error-soft-bg:#3b1a1a;--color-success:#6ee7b7;--color-success-soft-bg:#14322a;--color-warning:#fcd34d;--color-warning-soft-bg:#3a2a10;--color-focus:#2dd4d4;--color-focus-shadow:#2dd4d473;--color-toolbar:#0d0f14;--color-toolbar-text:#d1d5db;--color-toolbar-muted:#6b7280}[data-theme=light]{--color-primary:#0d7377;--color-primary-dark:#095b5e;--color-primary-light:#e0f2f1;--color-bg:#f0f3f6;--color-bg-subtle:#f7f9fb;--color-bg-hover:#eef2f5;--color-surface:#fff;--color-text:#1f2937;--color-text-secondary:#545d6c;--color-text-tertiary:#6b7280;--color-text-placeholder:#6b7280;--color-border:#d8dde4;--color-border-strong:#aab3c0;--color-grid-dot:#dfe5eb;--color-error:#b91c1c;--color-error-soft-bg:#fee2e2;--color-success:#047857;--color-success-soft-bg:#d1fae5;--color-warning:#b45309;--color-warning-soft-bg:#fef3c7;--color-focus:#0d7377;--color-focus-shadow:#0d737759;--color-toolbar:#1a1d23;--color-toolbar-text:#e5e7eb;--color-toolbar-muted:#9ca3af}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%}body{min-height:100vh;margin:0;padding:0}#root{text-align:left;border:none;width:100%;max-width:100%;min-height:auto;margin:0;display:block}img,svg{max-width:100%;display:block}button,input,select,textarea{font:inherit;color:inherit}a{color:inherit;text-decoration:none}h1,h2,h3,h4,h5,h6{margin:0;font-weight:500}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow);border-radius:4px}input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible,.row-action:focus-visible,.edge-btn:focus-visible,.export-popup-options button:focus-visible,.export-popup-close:focus-visible,.material-save:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}@media (forced-colors:active){:root{--color-bg:Canvas;--color-bg-subtle:Canvas;--color-bg-hover:Canvas;--color-surface:Canvas;--color-text:CanvasText;--color-text-secondary:CanvasText;--color-text-tertiary:CanvasText;--color-border:CanvasText;--color-border-strong:CanvasText;--color-focus:Highlight;--color-focus-shadow:transparent}.btn,.row-action,.edge-btn,.export-popup-options button,.export-popup-close,.pwa-action,.panel,.stat-warning,.stat-success{forced-color-adjust:none;border:1px solid canvastext!important}.icon,.toast-dot,.pwa-status-dot,.diagram-info>span,.legend-swatch{forced-color-adjust:auto}:focus-visible{outline-offset:2px;box-shadow:none!important;outline:3px solid highlight!important}}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-secondary)}::selection{background:var(--color-primary);color:#fff}::placeholder{color:var(--color-text-placeholder);opacity:1}.app-layout{background:var(--color-bg);flex-direction:column;height:100dvh;min-height:560px;display:flex;overflow:hidden}.btn{border:1px solid var(--color-border);background:var(--color-surface);min-height:32px;color:var(--color-text);font:600 12px/1.2 var(--font-sans);cursor:pointer;border-radius:7px;justify-content:center;align-items:center;gap:6px;padding:5px 12px;transition:background .12s,border-color .12s;display:inline-flex}.btn:hover:not(:disabled){border-color:var(--color-border-strong);background:var(--color-bg-subtle)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.42;cursor:not-allowed}.btn-sm{min-height:32px;padding:4px 10px;font-size:12px}.btn-xs{gap:5px;min-height:32px;padding:4px 10px;font-size:12px}.btn-primary{border-color:var(--color-primary);background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){border-color:var(--color-primary-dark);background:var(--color-primary-dark)}.btn-secondary{background:var(--color-bg-subtle)}.btn-danger{border-color:var(--color-error);background:var(--color-error);color:#fff}.btn-danger:hover:not(:disabled){background:#7f1d1d;border-color:#7f1d1d}[data-theme=dark] .btn-danger{background:var(--color-error);border-color:var(--color-error);color:#1e2028}.btn-warning{border-color:var(--color-warning);background:var(--color-warning);color:#fff}.btn-warning:hover:not(:disabled){background:#7c2d12;border-color:#7c2d12}[data-theme=dark] .btn-warning{background:var(--color-warning);border-color:var(--color-warning);color:#1e2028}.btn-icon{min-width:32px;min-height:32px;color:var(--color-text-secondary);background:0 0;border-color:#0000;padding:5px}.btn-icon:hover:not(:disabled){color:var(--color-text);background:var(--color-bg-hover)}.top-toolbar{z-index:50;min-height:48px;color:var(--color-toolbar-text);background:linear-gradient(100deg,#131820 0%,#182028 60%,#10262a 100%);border-bottom:1px solid #ffffff14;align-items:center;gap:12px;padding:6px 10px;display:flex}.toolbar-left,.toolbar-center,.toolbar-right{align-items:center;gap:4px;min-width:0;display:flex}.toolbar-left{gap:9px}.toolbar-center{flex:1;justify-content:center}.toolbar-right{justify-content:flex-end}.toolbar-brand{letter-spacing:-.3px;color:#f1f5f9;text-overflow:ellipsis;white-space:nowrap;max-width:220px;margin:0;font-size:14px;font-weight:800;overflow:hidden}.toolbar-project-name{color:#d5dfea;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:1px solid #0000;border-left-color:#ffffff24;border-radius:6px;outline:0;width:170px;max-width:200px;height:32px;padding:4px 10px;font-size:12px;overflow:hidden}.toolbar-project-name:hover{background:#ffffff0a;border-color:#ffffff1f}.toolbar-project-name:focus{color:#fff;background:#ffffff12;border-color:#2dd4bf73}.toolbar-project-name:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.toolbar-sep{background:#ffffff1f;width:1px;height:18px;margin:0 3px}.top-toolbar .toolbar-btn{color:#e5e7eb;background:0 0;border-color:#0000;min-height:36px;padding:5px 11px;font-size:12px}.top-toolbar .toolbar-btn:hover:not(:disabled){background:#ffffff17;border-color:#ffffff26}.top-toolbar .toolbar-btn:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.top-toolbar .toolbar-btn.btn-accent{color:#082f2f;background:linear-gradient(135deg,#2dd4d4,#14a3a8);border-color:#2dd4d4;min-width:108px;font-weight:700}.top-toolbar .toolbar-btn.btn-accent:hover:not(:disabled){filter:brightness(1.05)}[data-theme=dark] .top-toolbar .toolbar-btn.btn-accent{color:#082f2f}.toolbar-export-menu{display:inline-flex;position:relative}.toolbar-export-menu summary{list-style:none}.toolbar-export-menu summary::-webkit-details-marker{display:none}.toolbar-dropdown{z-index:100;border:1px solid var(--color-border);background:var(--color-surface);border-radius:9px;width:200px;padding:5px;position:absolute;top:calc(100% + 6px);left:0;box-shadow:0 14px 36px #0f172a38}.toolbar-dropdown button{width:100%;min-height:32px;color:var(--color-text);text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;padding:8px 10px;font-size:12px;display:flex}.toolbar-dropdown button:hover:not(:disabled){background:var(--color-bg-hover)}.toolbar-dropdown button:disabled,.is-disabled{opacity:.42;pointer-events:none}.export-popup-backdrop{z-index:5000;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#080f19b8;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.export-popup{border:1px solid var(--color-border);background:var(--color-surface);width:min(360px,100%);color:var(--color-text);border-radius:14px;overflow:hidden;box-shadow:0 24px 70px #0006}.export-popup-header{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:14px 16px;font-size:16px;display:flex}.export-popup-close{background:var(--color-bg-hover);width:40px;height:40px;color:var(--color-text);cursor:pointer;border:0;border-radius:8px;place-items:center;font-size:25px;line-height:1;display:grid}.export-popup-close:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.export-popup-options{gap:8px;padding:12px;display:grid}.export-popup-options button{border:1px solid var(--color-border);background:var(--color-bg);width:100%;min-height:48px;color:var(--color-text);text-align:left;cursor:pointer;border-radius:9px;align-items:center;gap:12px;padding:11px 14px;font:600 14px/1.2 inherit;display:flex}.export-popup-options button:hover{border-color:var(--color-primary);background:var(--color-bg-hover)}.export-popup-options button:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-color:var(--color-focus)}.workbench{flex:1;grid-template-columns:clamp(410px,30vw,540px) minmax(0,1fr) clamp(285px,20vw,340px);gap:8px;min-height:0;padding:8px;display:grid;overflow:hidden}.panel-left,.panel-center,.panel-right{min-width:0;min-height:0}.panel-center{flex-direction:column}.panel-left{overscroll-behavior:contain;flex-direction:column;gap:8px;display:flex;overflow:hidden auto}.panel-right{overscroll-behavior:contain;flex-direction:column;gap:8px;display:flex;overflow-y:auto}.panel-center{display:flex;overflow:hidden}.parts-panel{flex:1 1 0;min-height:140px}.stock-panel{flex:0 auto;min-height:0;max-height:38%}.options-panel{flex:none}.pwa-bar{border-bottom:1px solid var(--color-border);background:var(--color-bg-subtle);color:var(--color-text);flex-wrap:wrap;align-items:center;gap:8px;padding:6px 12px;font-size:12px;display:flex}.pwa-status{align-items:center;gap:6px;display:inline-flex}.pwa-status-dot{background:var(--color-text-tertiary);border-radius:50%;width:9px;height:9px}.pwa-status--online .pwa-status-dot{background:var(--color-success);box-shadow:0 0 0 3px #04785733}.pwa-status--offline .pwa-status-dot{background:var(--color-error);box-shadow:0 0 0 3px #b91c1c38}.pwa-status--offline{color:var(--color-error);font-weight:600}.pwa-action{border:1px solid var(--color-border);background:var(--color-surface);min-height:32px;color:var(--color-text);cursor:pointer;border-radius:999px;align-items:center;gap:5px;padding:4px 12px;font-size:12px;transition:background .15s,border-color .15s;display:inline-flex}.pwa-action:hover{background:var(--color-bg-hover);border-color:var(--color-border-strong)}.pwa-action:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.pwa-action--accent{color:#fff;background:var(--color-primary);border-color:var(--color-primary)}.pwa-action--accent:hover{background:var(--color-primary-dark);border-color:var(--color-primary-dark)}.pwa-ios-steps{color:var(--color-text);flex-direction:column;gap:6px;margin:8px 0 0;padding-left:22px;font-size:13px;line-height:1.45;display:flex}.pwa-ios-steps li{padding-left:4px}.panel{border:1px solid var(--color-border);background:var(--color-surface);border-radius:9px;flex-direction:column;flex:none;min-width:0;min-height:0;display:flex;overflow:hidden}.panel-center>.panel{flex:1}.panel-header{border-bottom:1px solid var(--color-border);background:var(--color-bg-subtle);justify-content:space-between;align-items:center;gap:8px;min-height:36px;padding:4px 6px 4px 10px;display:flex}.panel-header h2,.panel-header h3{color:var(--color-text);white-space:nowrap;align-items:center;gap:6px;margin:0;font-size:12px;font-weight:700;display:flex}.panel-header .icon{color:var(--color-primary);flex:none}.panel-header .btn-primary .icon{color:currentColor}.panel-unit-badge{border:1px solid var(--color-primary);background:var(--color-primary-light);min-height:20px;color:var(--color-primary-dark);font:700 10px var(--font-mono);letter-spacing:.2px;border-radius:999px;align-items:center;padding:1px 6px;display:inline-flex}.column-unit{display:none}.panel-body{flex:1;min-height:0;padding:8px;overflow:auto}.parts-panel .panel-body,.stock-panel .panel-body{padding:0;overflow:hidden auto}.options-panel .panel-body{padding:4px 10px 8px;overflow:visible}.empty-hint{color:var(--color-text);text-align:center;margin:0;padding:22px 10px;font-size:12px}.empty-state{min-height:200px;color:var(--color-text);flex-direction:column;justify-content:center;align-items:center;gap:10px;display:flex}.empty-state .icon{opacity:.6}.empty-state p{text-align:center;max-width:280px;margin:0;font-size:13px}.table-scroll{min-height:0}.entry-table{border-collapse:collapse;table-layout:fixed;width:100%;font-size:12px}.entry-table .col-num{width:68px}.entry-table .col-qty{width:52px}.entry-table .col-actions{width:110px}.entry-table th{z-index:2;border-bottom:1px solid var(--color-border);background:var(--color-bg-subtle);color:var(--color-text-secondary);text-align:left;letter-spacing:.4px;text-transform:uppercase;white-space:nowrap;text-overflow:ellipsis;padding:7px 6px;font-size:12px;font-weight:700;position:sticky;top:0;overflow:hidden}.entry-table th:nth-child(2),.entry-table th:nth-child(3),.entry-table th:nth-child(4){text-align:right}.entry-table th:nth-child(2),.entry-table td:nth-child(2){border-left:1px solid var(--color-bg-subtle)}.entry-table td{border-bottom:1px solid var(--color-bg-subtle);vertical-align:middle;padding:4px 6px}.entry-table tbody tr:hover td{background:var(--color-bg-hover)}.entry-table tbody tr.is-expanded td{background:var(--color-primary-light)}.cell-text-input,.num-cell-input{width:100%;min-width:0;height:32px;color:var(--color-text);background:0 0;border:1px solid #0000;border-radius:5px;outline:0;padding:3px 6px;font-size:12px}.cell-text-input:hover,.num-cell-input:hover{border-color:var(--color-border)}.cell-text-input:focus,.num-cell-input:focus{border-color:var(--color-primary);background:var(--color-surface)}.cell-text-input:focus-visible,.num-cell-input:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px}.cell-text-input::placeholder{color:var(--color-text-placeholder);opacity:1}.num-cell-input{text-align:right;font:600 12px var(--font-mono);font-variant-numeric:tabular-nums;padding-right:0}td.row-actions{white-space:nowrap}.row-actions{text-align:right}.row-action{width:32px;height:32px;color:var(--color-text-secondary);cursor:pointer;vertical-align:middle;background:0 0;border:1px solid #0000;border-radius:6px;place-items:center;margin-left:2px;padding:0;display:inline-grid}.row-action:hover{color:var(--color-text);background:var(--color-bg-subtle);border-color:var(--color-border)}tr.is-expanded .row-action:hover{background:#0d737724}.row-action--danger:hover{color:var(--color-error);background:var(--color-error-soft-bg)}.row-action:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px}.detail-row td{border-bottom:1px solid var(--color-border);background:var(--color-bg-subtle);padding:8px 10px 10px}.detail-row:hover td{background:var(--color-bg-subtle)!important}.detail-grid{flex-wrap:wrap;align-items:flex-end;gap:8px 12px;display:flex}.detail-field{flex-direction:column;gap:3px;min-width:0;display:flex}.detail-field>span{color:var(--color-text-secondary);letter-spacing:.4px;text-transform:uppercase;font-size:12px;font-weight:700}.detail-field--material{flex:130px}.detail-field--cost{flex:0 0 100px}.detail-field--grain{flex:0 130px}.detail-field select,.detail-field .text-field{border:1px solid var(--color-border);background:var(--color-surface);height:32px;color:var(--color-text);border-radius:6px;padding:4px 8px;font-size:12px}.detail-field select:focus-visible,.detail-field .text-field:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px;border-color:var(--color-focus)}.detail-field select:focus,.detail-field .text-field:focus{border-color:var(--color-primary);outline:0}.detail-check{min-height:32px;color:var(--color-text);cursor:pointer;align-items:center;gap:6px;padding-bottom:0;font-size:12px;display:flex}.detail-edge{flex:100%}.detail-help{max-width:200px;color:var(--color-text-secondary);font-size:12px;line-height:1.35;display:block}.detail-check-group{flex-direction:column;flex:170px;gap:3px;display:flex}.detail-check-group .detail-check{padding-bottom:0}.field-control{flex-direction:column;gap:3px;min-width:0;display:flex}.field-label{color:var(--color-text-secondary);letter-spacing:.3px;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;font-size:12px;font-weight:700;line-height:1;overflow:hidden}.numeric-shell{border:1px solid var(--color-border);background:var(--color-surface);border-radius:6px;align-items:center;min-width:0;height:32px;display:flex}.numeric-shell:focus-within{border-color:var(--color-focus);box-shadow:0 0 0 3px var(--color-focus-shadow)}.numeric-input{width:100%;min-width:0;color:var(--color-text);font:600 12px var(--font-mono);background:0 0;border:0;outline:0;padding:4px 8px}.numeric-suffix{color:var(--color-text-tertiary);font:600 12px var(--font-sans);padding-right:6px}.text-field{width:100%;min-width:0}.material-select{cursor:pointer}.material-add-row{grid-template-columns:minmax(110px,1fr) 32px 32px;align-items:center;gap:4px;display:grid}.material-add-row .text-field{height:32px}.material-save{color:var(--color-success)}.material-add-row .row-action:disabled{opacity:.4;cursor:not-allowed}.option-row{border-bottom:1px solid var(--color-bg-subtle);justify-content:space-between;align-items:center;gap:10px;min-height:36px;display:flex}.option-row>label{color:var(--color-text-secondary);font-size:12px;font-weight:550}.option-row select,.option-row input[type=number]{border:1px solid var(--color-border);background:var(--color-surface);max-width:130px;height:32px;color:var(--color-text);border-radius:6px;padding:4px 8px;font-size:12px}.option-input-with-unit{border:1px solid var(--color-border);background:var(--color-surface);border-radius:6px;align-items:center;width:94px;height:32px;display:flex;overflow:hidden}.option-input-with-unit:focus-within{border-color:var(--color-focus);box-shadow:0 0 0 3px var(--color-focus-shadow)}.option-row .option-input-with-unit input[type=number]{width:100%;min-width:0;height:30px;color:var(--color-text);background:0 0;border:0;border-radius:0;outline:0;padding:4px 5px 4px 8px;font-size:12px}.option-input-unit{color:var(--color-text-tertiary);font:600 11px var(--font-mono);padding-right:7px}.option-row select:focus-visible,.option-row input:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px;border-color:var(--color-focus)}.option-row .input-narrow{width:72px}.checkbox-row label{cursor:pointer;align-items:center;gap:8px;font-size:12px;display:flex;color:var(--color-text)!important}.collapse-toggle{border:0;border-top:1px solid var(--color-border);width:100%;min-height:36px;color:var(--color-primary);letter-spacing:.3px;text-align:left;text-transform:uppercase;cursor:pointer;background:0 0;align-items:center;gap:6px;padding:5px 2px;font-size:12px;font-weight:700;display:flex}.collapse-toggle:hover{color:var(--color-primary-dark)}.collapse-toggle:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.advanced-options{padding-top:2px}.edge-banding-block{flex-direction:column;gap:6px;display:flex}.edge-banding-heading{align-items:baseline;gap:8px;display:flex}.edge-banding-heading strong{color:var(--color-text);font-size:12px}.edge-banding-heading span{color:var(--color-text-secondary);font-size:12px}.edge-banding-editor{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.edge-sides,.edge-details{align-items:flex-end;gap:6px;display:flex}.edge-btn{border:1px solid var(--color-border);background:var(--color-surface);width:32px;height:32px;color:var(--color-text-secondary);cursor:pointer;border-radius:6px;place-items:center;font-size:12px;font-weight:700;display:grid}.edge-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.edge-btn.active{border-color:var(--color-primary);background:var(--color-primary);color:#fff}.edge-btn:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.edge-color-label,.edge-thickness-label{color:var(--color-text-secondary);flex-direction:column;align-items:flex-start;gap:3px;font-size:12px;display:flex}.edge-thickness-control{color:var(--color-text-secondary);align-items:center;gap:6px;font-size:12px;display:flex}.edge-color-input{border:1px solid var(--color-border);background:var(--color-surface);border-radius:6px;width:32px;height:32px;padding:1px}.edge-thickness-input{border:1px solid var(--color-border);background:var(--color-surface);text-align:right;width:64px;height:32px;font:600 12px var(--font-mono);border-radius:6px;padding:4px 6px}.diagram-panel{flex:1;min-height:0}.diagram-body{background:radial-gradient(circle at 1px 1px,var(--color-grid-dot) 1px,transparent 0);background-size:20px 20px;flex-direction:column;align-items:center;gap:10px;min-height:0;padding:12px;display:flex}.diagram-body--continuous{scroll-behavior:smooth;align-items:stretch;overflow-y:auto}.sheet-plan{border-bottom:2px solid var(--color-border);flex-direction:column;gap:8px;width:100%;padding:0 0 18px;display:flex}.sheet-plan:last-child{border-bottom:0;padding-bottom:4px}.sheet-plan-heading{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;display:flex}.sheet-plan-heading>*{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);border-radius:999px;padding:4px 10px;font-size:12px}.sheet-plan-heading strong{color:var(--color-text);font-weight:700}.sheet-canvas-wrap{border-radius:8px;width:100%;overflow:auto}.diagram-sheet-summary{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;width:100%;margin:0;padding:0;display:flex}.diagram-sheet-summary-count{border:1px solid var(--color-border);background:var(--color-bg-subtle);color:var(--color-text);font:600 10px var(--font-sans);border-radius:999px;align-items:center;padding:3px 9px;display:inline-flex}.diagram-sheet-summary-hint{color:var(--color-text-tertiary);font-size:10px}.diagram-empty{justify-content:center}.diagram-controls{align-items:center;gap:6px;display:flex}.diagram-counter{min-width:48px;color:var(--color-text);text-align:center;font:600 12px var(--font-mono)}.swipe-hint{color:var(--color-text-secondary);font-size:12px;display:none}.diagram-info{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;width:100%;display:flex}.diagram-info>span{border:1px solid var(--color-border);background:var(--color-surface);border-radius:999px;padding:4px 10px;font-size:12px}.diagram-sheet-label{color:var(--color-text);font-weight:700}.diagram-dim{color:var(--color-text);font-family:var(--font-mono);font-weight:600}.diagram-waste{color:var(--color-warning);font-weight:700}.cut-svg{border:1px solid var(--color-border-strong);background:#fff;border-radius:8px;max-height:calc(100dvh - 205px);padding:6px;box-shadow:0 8px 26px #0f172a1a}.diagram-legend{width:100%;padding:0 2px;font-size:12px}.legend-toggle{min-height:32px;color:var(--color-text);cursor:pointer;align-items:center;gap:6px;padding:4px 0;font-weight:600;display:flex}.legend-toggle:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.legend-items{flex-wrap:wrap;gap:4px;padding:5px 0;display:flex}.legend-item{border:1px solid var(--color-border);background:var(--color-surface);border-radius:6px;align-items:center;gap:4px;padding:4px 8px 4px 4px;font-size:12px;display:inline-flex}.legend-swatch{border:1px solid var(--color-border-strong);border-radius:3px;width:12px;height:12px}.legend-label{color:var(--color-text);font-weight:650}.legend-dim{color:var(--color-text);font:500 12px var(--font-mono)}.stats-list{margin:0;display:grid}.stats-list>div{border-bottom:1px solid var(--color-bg-subtle);grid-template-columns:1fr auto;align-items:center;gap:8px;min-height:30px;padding:4px 0;display:grid}.stats-list>div:last-child{border-bottom:0}.stats-list dt{color:var(--color-text);font-size:12px}.stats-list dd{color:var(--color-text);font:650 12px var(--font-mono);margin:0}.stats-list dd.is-bad{color:var(--color-error);font-weight:700}.stats-list dd.is-good{color:var(--color-success);font-weight:700}.sheet-breakdown{border-top:1px solid var(--color-border);margin-top:8px;padding-top:6px}.sheet-breakdown summary{min-height:32px;color:var(--color-text);cursor:pointer;align-items:center;gap:6px;font-size:12px;font-weight:600;display:flex}.sheet-breakdown summary:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.sheet-breakdown summary span{color:var(--color-text-secondary);font-family:var(--font-mono)}.sheet-breakdown-list{gap:6px;padding-top:6px;display:grid}.sheet-stat-row{border:1px solid var(--color-border);background:var(--color-bg-subtle);border-radius:7px;grid-template-columns:1fr auto;gap:4px 10px;padding:8px 10px;font-size:12px;display:grid}.sheet-stat-row strong{color:var(--color-text);font-size:12px}.sheet-stat-row span{color:var(--color-text-secondary);font-size:12px}.sheet-yield{text-align:right}.yield-track{background:var(--color-border);border-radius:3px;grid-column:1/-1;height:6px;overflow:hidden}.yield-track span{background:var(--color-primary);height:100%;display:block}.stat-warning,.stat-success{border-radius:7px;align-items:center;gap:8px;margin-top:8px;padding:8px 12px;font-size:12px;font-weight:600;display:flex}.stat-warning{color:var(--color-warning);background:var(--color-warning-soft-bg);border:1px solid var(--color-warning)}.stat-success{color:var(--color-success);background:var(--color-success-soft-bg);border:1px solid var(--color-success)}.stat-warning .icon,.stat-success .icon{flex:none}.stale-banner{color:#92400e;background:#fffbeb;border:1px solid #fbbf24;border-radius:8px;flex:none;align-items:center;gap:10px;margin:0 8px 8px;padding:8px 10px;font-size:11.5px;font-weight:600;display:flex}.stale-banner-icon{color:#b45309;justify-content:center;align-items:center;display:inline-flex}.stale-banner-message{flex:1;min-width:0}.stale-banner-action{white-space:nowrap}.stale-banner-dismiss{color:inherit;cursor:pointer;background:0 0;border:0;border-radius:4px;padding:2px 6px;font-size:16px;line-height:1}.stale-banner-dismiss:hover{background:#0000000f}[data-theme=dark] .stale-banner{color:#fbbf24;background:#b4530926;border-color:#b45309}[data-theme=dark] .stale-banner-icon{color:#fbbf24}[data-theme=dark] .stale-banner-dismiss:hover{background:#ffffff14}.cut-instructions{flex-direction:column;gap:7px;padding:8px;display:flex}.cut-order-hint{color:var(--color-text);margin:0 0 1px;font-size:12px}.cut-sheet-group{border:1px solid var(--color-border);background:var(--color-surface);border-radius:7px;overflow:hidden}.cut-sheet-group>summary{background:var(--color-bg-subtle);color:var(--color-text);cursor:pointer;min-height:32px;padding:8px 10px;font-size:12px;font-weight:700}.cut-sheet-group>summary:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.cut-step-list{gap:0;margin:0;padding:0;list-style:none;display:grid}.cut-step{border-top:1px solid var(--color-bg-subtle);grid-template-columns:28px minmax(0,1fr);align-items:start;gap:8px;padding:8px 10px;display:grid}.cut-step-number{background:var(--color-primary-light);width:26px;height:26px;color:var(--color-primary-dark);font:700 12px var(--font-mono);border-radius:50%;place-items:center;display:grid}.cut-step-copy{flex-direction:column;gap:2px;min-width:0;display:flex}.cut-step-copy strong,.cut-step-copy span{color:var(--color-text);font-size:12px;line-height:1.4}.table-wrap{border:1px solid var(--color-border);border-radius:7px;width:100%;overflow:auto}.data-table{border-collapse:separate;border-spacing:0;width:100%;font-size:12px}.data-table th{z-index:1;border-bottom:1px solid var(--color-border);background:var(--color-bg-subtle);color:var(--color-text);text-align:left;letter-spacing:.3px;text-transform:uppercase;white-space:nowrap;padding:7px 8px;font-size:12px;font-weight:700;position:sticky;top:0}.data-table td{border-bottom:1px solid var(--color-bg-subtle);color:var(--color-text);padding:6px 8px}.data-table tr:last-child td{border-bottom:0}.data-table tbody tr:hover{background:var(--color-bg-hover)}.cell-mono{font:500 12px var(--font-mono)}.col-center{text-align:center}.pagination{justify-content:center;align-items:center;gap:8px;padding-top:7px;display:flex}.page-info{color:var(--color-text);font:600 12px var(--font-mono)}.modal-backdrop{z-index:1000;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0f172a8c;justify-content:center;align-items:center;padding:20px;animation:.15s fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{border:1px solid var(--color-border-strong);background:var(--color-surface);border-radius:12px;max-width:92vw;max-height:88dvh;animation:.18s slideUp;overflow:auto;box-shadow:0 24px 70px #0f172a59}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.confirm-dialog{width:400px;padding:20px}.confirm-header{align-items:center;gap:9px;margin-bottom:10px;display:flex}.confirm-header h3{margin:0;font-size:15px}.confirm-message{color:var(--color-text);margin:0 0 18px;font-size:13px;line-height:1.5}.confirm-actions{justify-content:flex-end;gap:8px;display:flex}.settings-modal{width:540px}.settings-header{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.settings-header h2{margin:0;font-size:16px}.settings-body{max-height:62dvh;padding:4px 18px 12px;overflow:auto}.settings-body fieldset{border:0;border-bottom:1px solid var(--color-bg-subtle);margin:0;padding:11px 0}.settings-body legend{color:var(--color-text);margin-bottom:6px;padding:0;font-size:12px;font-weight:700}.settings-footer{border-top:1px solid var(--color-border);background:var(--color-bg-subtle);justify-content:flex-end;padding:11px 18px;display:flex}.radio-group{flex-wrap:wrap;gap:10px;display:flex}.radio-label,.checkbox-label{color:var(--color-text);cursor:pointer;align-items:center;gap:8px;font-size:12px;display:flex}.radio-label input,.checkbox-label input{width:16px;height:16px}.select-full,.field-row input,.input-narrow{border:1px solid var(--color-border);background:var(--color-surface);min-height:32px;color:var(--color-text);border-radius:7px;padding:4px 8px;font-size:12px}.select-full:focus-visible,.field-row input:focus-visible,.input-narrow:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px;border-color:var(--color-focus)}.select-full{width:100%}.field-row{gap:12px;display:flex}.field-row label{color:var(--color-text-secondary);flex-direction:column;flex:1;gap:4px;font-size:12px;display:flex}.field-row input{width:100%}.settings-number-unit{border:1px solid var(--color-border);background:var(--color-surface);border-radius:7px;align-items:center;min-height:32px;display:flex}.settings-number-unit input{border:0}.settings-number-unit span{color:var(--color-text-tertiary);font:600 11px var(--font-mono);padding-right:8px}.input-narrow{width:80px}.visually-hidden{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.toast-container{z-index:1100;pointer-events:none;flex-direction:column;align-items:center;gap:8px;display:flex;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.toast{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);pointer-events:auto;text-align:left;border-radius:10px;align-items:center;gap:8px;max-width:calc(100vw - 32px);padding:10px 14px;font-size:12px;font-weight:500;animation:.2s toastIn;display:inline-flex;box-shadow:0 8px 24px #0f172a38}.toast-prefix{color:var(--color-text);font-weight:700}.toast-dot{background:var(--color-primary);border-radius:50%;flex:none;width:10px;height:10px}.toast--success{border-color:var(--color-success)}.toast--success .toast-dot{background:var(--color-success)}.toast--success .toast-prefix{color:var(--color-success)}.toast--error{border-color:var(--color-error)}.toast--error .toast-dot{background:var(--color-error)}.toast--error .toast-prefix{color:var(--color-error)}.toast--info{border-color:var(--color-primary)}.toast--info .toast-dot{background:var(--color-primary)}.toast--info .toast-prefix{color:var(--color-primary)}@keyframes toastIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media (width<=720px){.toast-container{bottom:16px;left:12px;right:12px;transform:none}.toast{width:100%}}@media (width<=1180px){.app-layout{height:auto;min-height:100dvh;overflow:auto}.workbench{grid-template-columns:minmax(290px,330px) minmax(0,1fr);overflow:visible}.panel-left{overflow:visible}.parts-panel,.stock-panel{flex:none;max-height:none}.panel-center{min-height:520px}.panel-right{grid-column:1/-1;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));display:grid;overflow:visible}.top-toolbar{flex-wrap:wrap;row-gap:4px}.toolbar-center{flex-basis:100%;order:3;justify-content:flex-start;overflow-x:auto}.toolbar-right{margin-left:auto}.toolbar-project-name{max-width:130px}}@media (width<=720px){.top-toolbar{gap:7px;padding:5px 7px;position:sticky;top:0}.toolbar-brand{max-width:92px;font-size:13px}.toolbar-project-name{display:none}.top-toolbar .toolbar-btn{min-width:44px;min-height:44px;padding:6px 10px;font-size:12px}.top-toolbar .btn-label{display:none}.top-toolbar .toolbar-btn.btn-accent{min-width:48px;min-height:44px}.workbench{flex-direction:column;gap:8px;padding:8px;display:flex}.panel-left{order:1}.panel-center{order:2;min-height:0}.panel-right{order:3;display:flex}.diagram-body--continuous{flex-direction:column;align-items:stretch;gap:12px;padding:10px 6px 14px;overflow:hidden visible}.swipe-hint,.diagram-counter,.diagram-controls .btn{display:none}.sheet-plan{border-bottom:2px solid var(--color-border);flex:none;width:100%;min-width:0;max-width:100%;padding-bottom:14px}.sheet-plan-heading{justify-content:flex-start;gap:4px;position:static}.sheet-plan-heading>*{padding:3px 7px;font-size:11px}.sheet-canvas-wrap{overflow:hidden}.cut-svg{width:100%;max-width:100%;padding:3px;display:block}.diagram-legend,.diagram-sheet-summary{display:none}.entry-table{display:block}.entry-table colgroup,.entry-table thead{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.entry-table tbody{gap:6px;padding:6px;display:grid}.entry-table tbody>tr:not(.detail-row){border:1px solid var(--color-border);background:var(--color-surface);border-radius:8px;grid-template-columns:repeat(3,minmax(0,1fr)) 88px;display:grid;overflow:hidden}.entry-table tbody>tr:not(.detail-row)>td{border:0;min-width:0;padding:4px 7px;display:flex}.entry-table .entry-label-cell{grid-column:1/-1;border-bottom:1px solid var(--color-bg-subtle)!important}.entry-table .entry-value-cell{flex-direction:column;gap:1px}.entry-table .entry-value-cell:before{content:attr(data-label);color:var(--color-text-secondary);text-transform:uppercase;font-size:10px;font-weight:700}.entry-table .entry-actions-cell{grid-area:2/4;justify-content:flex-end;align-items:flex-end;gap:0;padding:0!important}.cell-text-input,.num-cell-input{height:36px;font-size:14px}.entry-label-cell .cell-text-input{font-size:15px;font-weight:700}.num-cell-input{text-align:left;padding:0}.row-action{width:44px;height:44px;margin-left:0}.detail-row{margin-top:-6px;display:block}.detail-row td{border:1px solid var(--color-border);border-top:0;border-radius:0 0 8px 8px;display:block}.row-action--dup{display:none}.num-cell-input{font-size:14px}.detail-field select,.detail-field .text-field,.detail-field .numeric-shell{height:44px;font-size:14px}.detail-check{min-height:44px;padding-bottom:0}.edge-btn{width:44px;height:44px;font-size:13px}.edge-color-input{width:44px;height:44px}.edge-thickness-input{width:72px;height:44px}.option-row{min-height:48px}.option-row select,.option-row input[type=number]{height:44px;font-size:14px}.option-input-with-unit{width:96px;height:44px}.option-row .option-input-with-unit input[type=number]{height:42px;font-size:14px}.btn,.btn-xs,.btn-sm{min-height:44px}.pwa-action{min-height:32px}.cut-svg{max-height:420px}.settings-modal{border-radius:0;width:100%;max-width:100%;height:100%;max-height:100dvh}.settings-body{max-height:calc(100dvh - 126px)}.modal-backdrop{padding:0}.confirm-dialog{width:calc(100vw - 32px);margin:16px}.stat-warning,.stat-success{font-size:13px}}.workbench-mode{border-bottom:1px solid var(--color-border);background:var(--color-bg-subtle);justify-content:center;align-items:center;gap:8px;min-height:42px;padding:6px 12px;display:flex}.mode-selector{border:1px solid var(--color-border);background:var(--color-surface);border-radius:999px;align-items:stretch;gap:2px;padding:3px;display:inline-flex}.mode-selector-btn{min-height:28px;color:var(--color-text-secondary);font:600 12px/1.2 var(--font-sans);cursor:pointer;background:0 0;border:0;border-radius:999px;align-items:center;gap:6px;padding:4px 12px;transition:background .12s,color .12s;display:inline-flex}.mode-selector-btn:hover:not(:disabled):not(.is-active){background:var(--color-bg-hover);color:var(--color-text)}.mode-selector-btn.is-active{background:var(--color-primary);color:#fff}.mode-selector-btn:disabled{opacity:.4;cursor:not-allowed}.mode-selector-icon{align-items:center;display:inline-flex}.mode-selector-label{white-space:nowrap}.cuts-panel--stepper{border-color:var(--color-primary)}.cut-stepper-active{border:1px solid var(--color-primary);background:var(--color-bg-subtle);border-radius:9px;flex-direction:column;gap:10px;padding:10px;display:flex}.cut-stepper-meta{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.cut-stepper-counter{background:var(--color-primary);color:#fff;height:24px;font:700 11px var(--font-mono);border-radius:999px;align-items:center;padding:2px 10px;display:inline-flex}.cut-stepper-sheet{border:1px solid var(--color-border);background:var(--color-surface);height:24px;color:var(--color-text-secondary);font:600 10.5px var(--font-mono);border-radius:999px;align-items:center;padding:2px 10px;display:inline-flex}.cut-stepper-instruction{border:1px dashed var(--color-primary);background:var(--color-surface);border-radius:8px;grid-template-columns:30px minmax(0,1fr);align-items:center;gap:9px;padding:8px 10px;display:grid}.cut-stepper-instruction .cut-step-number{width:28px;height:28px;font-size:11px}.cut-stepper-instruction strong{color:var(--color-text);font-size:12px;line-height:1.4}.cut-stepper-controls{grid-template-columns:1fr 1.4fr 1fr;gap:6px;display:grid}.cut-stepper-controls .btn{white-space:normal;min-width:0;min-height:36px;padding-inline:4px;font-size:11px;line-height:1.15}.cut-stepper-controls .btn-accent{background:linear-gradient(135deg,#0f8f94,#0d7377);border-color:#0d7377}.cut-stepper-controls .btn-accent:disabled{opacity:.4}.cut-stepper-complete{color:#047857;text-align:center;background:#ecfdf5;border-radius:7px;margin:0;padding:6px 10px;font-size:11px;font-weight:600}[data-theme=dark] .cut-stepper-complete{color:#34d399;background:#34d3991f}.cut-stepper-list{border:1px solid var(--color-border);background:var(--color-surface);border-radius:8px}.cut-stepper-list>summary{background:var(--color-bg-subtle);color:var(--color-text);cursor:pointer;border-radius:8px;padding:7px 9px;font-size:10.5px;font-weight:700}.cut-stepper-list[open]>summary{border-bottom:1px solid var(--color-border);border-radius:8px 8px 0 0}.cut-step{cursor:pointer}.cut-step.is-active{background:#0d73771f}.cut-step.is-done .cut-step-number{color:#047857;background:#d1fae5}.cut-step.is-done strong{color:var(--color-text-secondary);text-decoration:line-through}[data-theme=dark] .cut-step.is-active{background:#0d73773d}[data-theme=dark] .cut-step.is-done .cut-step-number{color:#34d399;background:#34d3992e}.diagram-panel[data-stepper-active=true] .cut-svg{background:#fffdf7}[data-cut-active=true] line{filter:drop-shadow(0 0 2px #ff572299)}.diagram-sheet-order li[data-cut-active=true]{border-color:var(--color-primary);background:#0d73771f}.diagram-sheet-order li[data-cut-done=true]{opacity:.55}.diagram-sheet-order li[data-cut-done=true] strong{text-decoration:line-through}[data-theme=dark] .diagram-sheet-order li[data-cut-active=true]{background:#0d737747}
