: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;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:40px;--space-8:48px;--shadow-sm:0 1px 2px #0f172a0f, 0 1px 3px #0f172a14;--shadow-md:0 4px 12px #0f172a14, 0 2px 6px #0f172a0f;--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;--text-xs:12px;--text-lg:16px;--tracking-title:-.01em;--leading-body:1.6;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;--shadow-sm:0 1px 3px #00000059, 0 1px 2px #0000004d;--shadow-md:0 6px 20px #0006, 0 3px 10px #00000052;--color-toolbar:#0d0f14;--color-toolbar-text:#d1d5db;--color-toolbar-muted:#6b7280;--color-toolbar-separator:#ffffff38}}[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;--shadow-sm:0 1px 3px #00000059, 0 1px 2px #0000004d;--shadow-md:0 6px 20px #0006, 0 3px 10px #00000052;--color-toolbar:#0d0f14;--color-toolbar-text:#d1d5db;--color-toolbar-muted:#6b7280;--color-toolbar-separator:#ffffff38}[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{letter-spacing:var(--tracking-title);margin:0;font-weight:500}.prose{line-height:var(--leading-body)}: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;box-shadow:0 0 0 4px var(--color-focus-shadow)}@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}.plan-sheet{flex-direction:column;display:flex}.plan-sheet-header{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:8px;padding:10px 12px 10px 16px;display:flex}.plan-sheet-title{align-items:center;gap:6px;margin:0;font-size:16px;font-weight:700;display:flex}.plan-sheet-header-actions{gap:8px;display:flex}.plan-sheet-header-btn{border:1px solid var(--color-border);background:var(--color-bg);width:44px;height:44px;color:var(--color-text);cursor:pointer;border-radius:8px;place-items:center;display:grid}.plan-sheet-header-btn:hover{border-color:var(--color-primary)}.plan-sheet-header-btn--danger:hover{color:#dc2626;border-color:#dc2626}.plan-sheet-header-btn:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-color:var(--color-focus)}.plan-sheet-body{gap:14px;padding:16px;display:grid}.plan-field,.plan-field-group{flex-direction:column;gap:4px;min-width:0;display:flex}.plan-field-label{color:var(--color-text-secondary);letter-spacing:.3px;text-transform:uppercase;font-size:11px;font-weight:700}.plan-field-input,.plan-field select{border:1px solid var(--color-border);background:var(--color-surface);width:100%;height:44px;color:var(--color-text);border-radius:8px;padding:8px 10px;font-size:16px}.plan-field-input:focus-visible,.plan-field select:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px;border-color:var(--color-focus)}.plan-field-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.plan-check{align-items:center;gap:10px;min-height:44px;font-size:15px;display:flex}.plan-check input{width:20px;height:20px}.plan-cut-size{border:1px solid var(--color-border);background:var(--color-bg);border-radius:8px;flex-direction:column;gap:2px;padding:10px 12px;display:flex}.plan-cut-size-label{color:var(--color-text-secondary);letter-spacing:.3px;text-transform:uppercase;font-size:11px;font-weight:700}.plan-cut-size-value{font:600 15px var(--font-mono)}.plan-sheet-actions{padding:12px 16px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--color-border);background:var(--color-surface);gap:10px;display:flex;position:sticky;bottom:0}.plan-sheet-actions .btn{flex:1 1 0;min-height:48px;font-size:15px}.plan-sheet .numeric-input,.plan-sheet .edge-thickness-input,.plan-sheet .option-row .option-input-with-unit input[type=number],.plan-sheet .option-row input[type=number]{font-size:16px}.plan-summary{flex-direction:column;gap:8px;display:flex}.plan-summary-row{border:1px solid var(--color-border);background:var(--color-surface);width:100%;min-height:52px;color:var(--color-text);text-align:left;cursor:pointer;border-radius:10px;align-items:center;gap:10px;padding:10px 14px;font:700 15px/1.2 inherit;display:flex}.plan-summary-row:hover{border-color:var(--color-primary)}.plan-summary-row:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-color:var(--color-focus)}.plan-summary-title{text-transform:uppercase;letter-spacing:.4px;flex:none}.plan-summary-detail{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--color-text-secondary);letter-spacing:.2px;flex:auto;font-size:13px;font-weight:600;overflow:hidden}.plan-summary-count{background:var(--color-primary);color:#fff;min-width:28px;font:700 13px/1.4 var(--font-mono);text-align:center;border-radius:999px;flex:none;padding:2px 8px}.plan-summary-chevron{color:var(--color-text-secondary);flex:none;font-size:18px;line-height:1}.plan-summary-items{gap:6px;margin:0;padding:0;list-style:none;display:grid}.plan-summary-item{border:1px solid var(--color-border);background:var(--color-surface);width:100%;min-height:48px;color:var(--color-text);text-align:left;cursor:pointer;border-radius:9px;align-items:center;gap:10px;padding:8px 14px;font-size:14px;display:flex}.plan-summary-item:hover{border-color:var(--color-primary)}.plan-summary-item:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-color:var(--color-focus)}.plan-summary-item-label{text-overflow:ellipsis;white-space:nowrap;flex:0 auto;min-width:0;font-weight:600;overflow:hidden}.plan-summary-item-meta{white-space:nowrap;min-width:0;color:var(--color-text-secondary);font:500 12px var(--font-mono);flex:auto;justify-content:flex-end;align-items:baseline;gap:8px;display:flex;overflow:hidden}.plan-summary-item-qty{color:var(--color-text);flex:none;font-weight:700}.plan-summary-empty{color:var(--color-text-secondary);margin:0;padding:2px 14px;font-size:13px}.plan-results{flex-direction:column;display:flex}.plan-results-summary{list-style:none}.plan-results-summary::-webkit-details-marker{display:none}.plan-results-summary .plan-summary-chevron{margin-left:auto;transition:transform .15s}.plan-results[open] .plan-results-summary .plan-summary-chevron{transform:rotate(90deg)}.plan-results-panes{flex-direction:column;gap:8px;margin-top:8px;display:flex}.plan-optimizing-overlay{z-index:10;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#ffffffa3;justify-content:center;align-items:center;padding:16px;display:flex;position:absolute;inset:0}[data-theme=dark] .plan-optimizing-overlay{background:#0f172a85}.plan-optimizing-overlay-card{border:1px solid var(--color-border);background:var(--color-surface);text-align:center;border-radius:12px;flex-direction:column;align-items:center;gap:12px;min-width:220px;max-width:320px;padding:20px 24px;display:flex;box-shadow:0 12px 32px #00000024}.plan-optimizing-spinner{border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;width:32px;height:32px;animation:.8s linear infinite plan-optimizing-spin}.plan-optimizing-label{color:var(--color-text);font:600 13px var(--font-sans)}.plan-optimizing-progress{background:var(--color-border);border-radius:999px;width:100%;height:8px;overflow:hidden}.plan-optimizing-progress-bar{background:var(--color-primary);height:100%;transition:width .2s}@keyframes plan-optimizing-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.plan-optimizing-spinner{animation:none}}@media (width<=720px){.plan-summary-row{min-height:44px;padding:8px 12px;font-size:14px}.plan-summary-item{min-height:44px;padding:6px 12px}.stats-panel .stats-list{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:12px}.stats-panel .stats-list>div{min-height:22px;padding:1px 0}.stats-panel .stats-list dt,.stats-panel .stats-list dd{font-size:11px}.stats-panel .sheet-breakdown{margin-top:4px;padding-top:4px}.stats-panel .stat-warning,.stats-panel .stat-success{margin-top:4px;padding:6px 10px}.stats-panel .panel-header,.cuts-panel .panel-header,.diagram-panel .panel-header{min-height:30px;padding:2px 4px 2px 8px}.cuts-panel .cut-instructions{gap:6px;padding:6px}.cuts-panel .cut-order-hint{margin-bottom:0}.cuts-panel .cut-sheet-group>summary{min-height:28px;padding:6px 10px}.cuts-panel .cut-step{gap:6px;padding:6px 10px}.cuts-panel .cut-step-number{width:22px;height:22px;font-size:11px}.cuts-panel .cut-step-copy strong{font-size:11.5px;line-height:1.3}.diagram-panel .diagram-body--continuous{gap:6px;padding:6px 4px 8px}}.cut-workspace{flex-direction:column;flex:1;gap:8px;min-height:0;padding:8px;display:flex;overflow:hidden}.cut-workspace-banner{border:1px solid var(--color-warning);background:var(--color-warning-soft-bg,#fef3c7);color:var(--color-text);border-radius:8px;align-items:center;gap:8px;padding:8px 10px;font-size:12px;font-weight:600;display:flex}.cut-workspace-banner-icon{color:var(--color-warning);flex:none;display:inline-flex}.cut-workspace-banner-text{flex:1;min-width:0}.cut-workspace-banner-cta{white-space:nowrap;flex:none}[data-theme=dark] .cut-workspace-banner{border-color:var(--color-warning);background:#fbbf242e}.cut-workspace-header{color:var(--color-text-secondary);font:700 12px var(--font-mono);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:2px 4px;display:flex}.cut-workspace-progressbar{background:var(--color-bg-hover);border-radius:999px;flex-basis:100%;height:3px;overflow:hidden}.cut-workspace-progressbar-fill{border-radius:inherit;background:var(--color-primary);height:100%;transition:width .2s;display:block}.cut-workspace-body{flex:1;grid-template-columns:minmax(0,1fr) clamp(300px,26vw,380px);gap:8px;min-height:0;display:grid}.cut-workspace-diagram{flex-direction:column;min-width:0;min-height:0;display:flex;overflow:hidden}.cut-workspace-diagram .diagram-panel{flex:1;min-height:0}.cut-workspace-side{overscroll-behavior:contain;flex-direction:column;gap:8px;min-width:0;min-height:0;display:flex;overflow-y:auto}.cut-workspace-bottom{flex-direction:column;gap:8px;display:flex}.cut-workspace-empty{flex:1;place-items:center;display:grid}.cuts-panel--stepper{border-color:var(--color-primary)}.cut-stepper-active{border:1px solid var(--color-primary);background:var(--color-bg-subtle);box-shadow:var(--shadow-sm);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}[data-theme=dark] .cut-stepper-counter{color:#082f2f}.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{flex-direction:column;gap:8px;display:flex}.cut-stepper-controls .btn{white-space:normal;min-width:0;min-height:44px;padding-inline:4px;font-size:11px;line-height:1.15}.cut-stepper-controls .btn-secondary{flex:1 1 0;min-width:44px;min-height:44px}.cut-stepper-controls .btn-accent{color:#fff;background:linear-gradient(135deg,#0f8f94,#0d7377);border-color:#0d7377;width:100%;min-height:52px}.cut-stepper-controls .cut-stepper-secondary{gap:6px;display:flex}.cut-stepper-controls .cut-stepper-secondary .btn{flex:1 1 0}.cut-stepper-controls:not(:has(.cut-stepper-secondary)){flex-flow:wrap}.cut-stepper-controls:not(:has(.cut-stepper-secondary)) .btn-accent{flex:100%}.cut-stepper-controls:not(:has(.cut-stepper-secondary)) .btn-secondary{flex:calc(50% - 3px)}.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}button.cut-step{border:0;border-top:1px solid var(--color-bg-subtle);width:100%;font:inherit;text-align:left;cursor:pointer;background:0 0;grid-template-columns:28px minmax(0,1fr);align-items:start;gap:8px;min-height:44px;padding:8px 10px;display:grid}button.cut-step:first-child{border-top:0}button.cut-step:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px;box-shadow:0 0 0 4px var(--color-focus-shadow) inset}.cut-step:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.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}.cut-terminal{border:1px solid var(--color-primary);text-align:center;background:#ecfdf5;border-radius:9px;flex-direction:column;gap:10px;padding:14px 10px;display:flex}.cut-terminal-text{color:#047857;margin:0;font-size:12px;font-weight:700}[data-theme=dark] .cut-terminal{background:#34d3991f}[data-theme=dark] .cut-terminal-text{color:#34d399}@media (width<=720px){.cut-workspace{overflow:visible}.cut-workspace-body{flex-direction:column;display:flex}.cut-workspace-diagram .diagram-panel{flex:none}.cut-workspace-side{overflow:visible}.cut-workspace-card,.cut-terminal{z-index:5;background:var(--color-bg);position:sticky;bottom:0}}@media (pointer:coarse){.cut-stepper-controls .btn{min-height:52px;padding:8px 6px;font-size:12px}.cut-stepper-controls .btn-accent{min-height:56px}.cut-stepper-instruction{gap:10px;padding:10px 12px}.cut-stepper-instruction .cut-step-number{width:32px;height:32px}.cut-workspace-header{padding:4px}}.assemble-workspace{background:var(--color-bg);flex:1;min-height:0;display:flex;overflow:auto}.assemble-workspace__inner{flex-direction:column;gap:14px;width:min(940px,100%);margin:0 auto;padding:18px 18px 28px;display:flex}.assemble-header{justify-content:space-between;align-items:center;gap:14px;display:flex}.assemble-header__meta{min-width:0}.assemble-title{color:var(--color-text);margin:0;font-size:18px;line-height:1.3}.assemble-subtitle{color:var(--color-text-secondary);margin:3px 0 0;font-size:12px}.assemble-actions{flex:none;gap:7px;display:flex}.assemble-notice{border:1px solid var(--color-warning);background:var(--color-warning-soft-bg);color:var(--color-warning);border-radius:8px;gap:4px;padding:10px 12px;font-size:12px;display:grid}.assemble-guide{border:1px solid var(--color-border);background:var(--color-surface);box-shadow:var(--shadow-sm);border-radius:12px;overflow:clip}.assemble-guide__toolbar{background:var(--color-bg-subtle);justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.assemble-progress-copy{white-space:nowrap}.assemble-progress-copy strong{color:var(--color-text);font-size:13px}.assemble-mode-switch{border:1px solid var(--color-border);background:var(--color-surface);border-radius:8px;gap:2px;padding:2px;display:inline-flex}.assemble-mode-switch button{min-height:32px;color:var(--color-text-secondary);font:600 11px var(--font-sans);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:5px 10px}.assemble-mode-switch button:hover{background:var(--color-bg-hover);color:var(--color-text)}.assemble-mode-switch button.is-active{background:var(--color-primary);color:#fff}[data-theme=dark] .assemble-mode-switch button.is-active{color:#082f2f}.assemble-mode-switch button:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.assemble-progress{background:var(--color-border);height:4px}.assemble-progress span{background:var(--color-primary);height:100%;transition:width .18s;display:block}.assemble-current-step{grid-template-columns:minmax(280px,.9fr) minmax(300px,1.1fr);gap:14px 20px;padding:20px;display:grid;position:relative}.assemble-current-step__number{background:var(--color-primary);color:#fff;width:38px;height:38px;font:700 14px var(--font-mono);border-radius:50%;place-items:center;display:grid;position:absolute;top:20px;left:20px}[data-theme=dark] .assemble-current-step__number{color:#082f2f}.assemble-current-step__heading{grid-column:1/-1;min-width:0;min-height:38px;padding-left:52px}.assemble-current-step__title-row{align-items:center;gap:8px;display:flex}.assemble-current-step__heading h3{color:var(--color-text);margin:0;font-size:18px;line-height:1.35}.assemble-current-step__repeat{background:var(--color-primary);color:#fff;font:800 13px var(--font-mono);border-radius:999px;flex:none;padding:3px 8px}[data-theme=dark] .assemble-current-step__repeat{color:#082f2f}.assemble-current-step__heading p{color:var(--color-text-secondary);margin:4px 0 0;font-size:13px;line-height:1.45}.assemble-current-step__heading .assemble-current-step__repeat-note{color:var(--color-primary-dark);font-size:12px;font-weight:650}.assemble-visual{grid-area:2/1;align-self:start;min-width:0}.assemble-figure{margin:0}.assemble-figure__stage{border:1px solid var(--color-border);background:var(--color-bg-subtle);border-radius:10px;width:fit-content;max-width:100%;margin-inline:auto;position:relative;overflow:hidden}.assemble-figure__stage img{-webkit-user-select:none;user-select:none;width:auto;max-width:100%;height:auto;max-height:min(36dvh,320px);display:block;position:static}.assemble-figure__stage svg{pointer-events:none;width:100%;height:100%;display:block;position:absolute;inset:0}.assemble-figure__legend{color:var(--color-text-secondary);flex-wrap:wrap;justify-content:center;gap:5px 12px;margin-top:7px;font-size:10px;line-height:1.35;display:flex}.assemble-figure__legend span{align-items:center;gap:5px;display:inline-flex}.assemble-figure__legend i{background:0 0;border:2px solid #b91c1c;border-radius:999px;width:11px;height:7px;display:inline-block}.assemble-figure__legend i.is-pocket{background:#fef3c7;border:1.5px solid #92400e;width:15px;height:8px;position:relative;transform:rotate(-18deg)}.assemble-figure__legend i.is-pocket:after{content:"";background:#5b2c0c;border-radius:999px;width:8px;height:3px;position:absolute;top:1.5px;right:1.5px}.assemble-figure__legend i.is-screw{background:#f8fafc;border:1.5px solid #334155;border-radius:50%;width:10px;height:10px;position:relative}.assemble-figure__legend i.is-screw:after{content:"";background:linear-gradient(90deg,#0000 42%,#334155 42% 58%,#0000 58%),linear-gradient(#0000 42%,#334155 42% 58%,#0000 58%);position:absolute;inset:2.5px 1px}.assemble-figure__legend i.is-nail{border-width:0 0 2px 2px;border-radius:0;width:8px;height:8px;transform:rotate(-45deg)}.assemble-figure__legend i.is-far{border-style:dashed}.assemble-seam{stroke:var(--color-text);stroke-width:2px;stroke-dasharray:7 5;fill:none;opacity:.7;vector-effect:non-scaling-stroke}.assemble-marker{stroke:#b91c1c;stroke-width:2.5px;fill:#fff;vector-effect:non-scaling-stroke}.assemble-marker--nail{fill:none}.assemble-marker.is-far{fill:none;stroke-dasharray:3 3;opacity:1}.assemble-marker--screw{fill:#f8fafc;stroke:#334155;stroke-width:1.7px}.assemble-marker--screw.is-far{fill:#f8fafc;stroke:#475569;stroke-dasharray:3 2}.is-far .assemble-seam{opacity:.42;stroke-dasharray:3 4}.assemble-screw-recess{fill:none;stroke:#334155;stroke-width:1.5px;stroke-linecap:round;vector-effect:non-scaling-stroke}.assemble-pocket-hole__rim{fill:#fef3c7;stroke:#92400e;stroke-width:1.5px;vector-effect:non-scaling-stroke}.assemble-pocket-hole__cavity{fill:#5b2c0c;stroke:#2f1608;stroke-width:.8px;vector-effect:non-scaling-stroke}.assemble-pocket-hole.is-far .assemble-pocket-hole__rim{fill:#fffbeb;stroke-dasharray:3 2}.assemble-pocket-hole.is-far .assemble-pocket-hole__cavity{opacity:.78}.assemble-anchor{paint-order:stroke;stroke:var(--color-surface);fill:var(--color-text);font-family:var(--font-sans);font-weight:800}.assemble-visual__loading,.assemble-visual__fallback{border:1px solid var(--color-border);min-height:260px;color:var(--color-text-secondary);text-align:center;border-radius:10px;place-items:center;gap:10px;padding:20px;font-size:12px;display:grid}.assemble-visual__skeleton{background:linear-gradient(100deg,var(--color-bg-subtle) 25%,var(--color-bg-hover) 40%,var(--color-bg-subtle) 55%);background-size:200% 100%;border-radius:8px;width:75%;height:180px;animation:1.4s infinite assemble-shimmer}@keyframes assemble-shimmer{to{background-position:-200% 0}}.assemble-instructions{grid-area:2/2;align-content:start;gap:16px;min-width:0;display:grid}.assemble-resources{grid-template-columns:1fr 1fr;gap:10px;display:grid}.assemble-resources section{border:1px solid var(--color-border);background:var(--color-bg-subtle);border-radius:8px;min-width:0;padding:10px 12px}.assemble-current-step h4{color:var(--color-text-secondary);letter-spacing:.35px;text-transform:uppercase;margin:0 0 7px;font-size:11px}.assemble-resources ul,.assemble-resources p{color:var(--color-text);margin:0;padding-left:17px;font-size:12px;line-height:1.5}.assemble-resources p{padding-left:0}.assemble-chips{flex-wrap:wrap;gap:5px;display:flex}.assemble-chips span{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);border-radius:999px;padding:3px 8px;font-size:12px}.assemble-action-list ol{gap:8px;margin:0;padding:0;list-style:none;display:grid}.assemble-action-list li{grid-template-columns:26px minmax(0,1fr);align-items:start;gap:9px;display:grid}.assemble-action-list li>span{background:var(--color-primary-light);width:24px;height:24px;color:var(--color-primary-dark);font:700 11px var(--font-mono);border-radius:6px;place-items:center;display:grid}.assemble-action-list p{color:var(--color-text);margin:2px 0 0;font-size:13px;line-height:1.5}.assemble-checks{border-left:3px solid var(--color-success);background:var(--color-success-soft-bg);border-radius:0 7px 7px 0;padding:10px 12px}.assemble-checks ul{color:var(--color-text);gap:4px;margin:0;padding-left:18px;font-size:12px;line-height:1.45;display:grid}.assemble-navigation{z-index:2;border-top:1px solid var(--color-border);background:var(--color-bg-subtle);grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:10px 14px;display:grid;position:sticky;bottom:0}.assemble-navigation>span{color:var(--color-success);text-align:center;font-size:12px;font-weight:700}.assemble-empty,.assemble-stale{text-align:center;flex:1;justify-content:center;align-items:center;min-height:280px;padding:24px;display:flex}.assemble-empty__inner,.assemble-stale__inner{flex-direction:column;align-items:center;gap:11px;max-width:560px;display:flex}.assemble-empty__title,.assemble-stale__title{color:var(--color-text);margin:0;font-size:18px}.assemble-empty__body,.assemble-stale__body{color:var(--color-text-secondary);margin:0;font-size:13px;line-height:1.55}.assemble-empty__tip{color:var(--color-text-tertiary);margin:0;font-size:12px;line-height:1.5}.assemble-empty__link{color:var(--color-primary);font-size:13px;font-weight:700;text-decoration:none}.assemble-empty__link:hover{text-decoration:underline}.assemble-empty__link:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}@media (width<=640px){.assemble-workspace__inner{padding:10px 8px calc(88px + env(safe-area-inset-bottom));gap:10px}.assemble-header{flex-direction:column;align-items:flex-start}.assemble-title{font-size:16px}.assemble-actions{width:100%}.assemble-actions .btn{flex:1;min-width:44px;padding-inline:9px}.assemble-guide__toolbar{flex-direction:column;align-items:stretch;padding:10px}.assemble-mode-switch{grid-template-columns:1fr 1fr;width:100%;display:grid}.assemble-mode-switch button{min-height:44px}.assemble-current-step{grid-template-columns:1fr;gap:12px;padding:14px 12px}.assemble-current-step__number{width:32px;height:32px;top:14px;left:12px}.assemble-current-step__heading{grid-column:1;padding-left:44px}.assemble-current-step__heading h3{font-size:16px}.assemble-visual,.assemble-instructions{grid-area:auto/1}.assemble-figure__stage img{max-height:min(32dvh,260px)}.assemble-visual__loading,.assemble-visual__fallback{min-height:220px}.assemble-resources{grid-template-columns:1fr}.assemble-navigation{right:8px;bottom:max(8px,env(safe-area-inset-bottom));z-index:30;border:1px solid var(--color-border);box-shadow:var(--shadow-lg);border-radius:10px;grid-template-columns:1fr 1fr;padding:8px;position:fixed;left:8px}.assemble-navigation>span{grid-area:1/1/auto/-1}.assemble-navigation>span:empty{display:none}.assemble-navigation .btn{width:100%;min-height:44px}}.app-layout{background:var(--color-bg);flex-direction:column;height:100dvh;min-height:560px;display:flex;position:relative;overflow:hidden}.btn{border:1px solid var(--color-border);background:var(--color-surface);min-width:44px;min-height:44px;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,transform .12s,filter .12s,box-shadow .12s;display:inline-flex}.btn:hover:not(:disabled){border-color:var(--color-border-strong);background:var(--color-bg-subtle);filter:brightness(1.02)}.btn:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.42;cursor:not-allowed}.btn-sm{min-width:44px;min-height:44px;padding:4px 10px;font-size:12px}.btn-xs{gap:5px;min-width:44px;min-height:44px;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-accent{border-color:var(--color-primary);background:var(--color-primary);color:#fff}.btn-accent: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}[data-theme=dark] .btn-primary,[data-theme=dark] .btn-accent,[data-theme=dark] .mode-selector-btn.is-active,[data-theme=dark] .edge-btn.active,[data-theme=dark] .pwa-action--accent{color:#082f2f}.btn-icon{min-width:44px;min-height:44px;color:var(--color-text-secondary);background:0 0;border-color:#0000;padding:5px;transition:background .12s,border-color .12s,color .12s,filter .12s}.btn-icon:hover:not(:disabled){filter:brightness(1.02)}.btn-icon:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.btn-icon:hover:not(:disabled){color:var(--color-text);background:var(--color-bg-hover)}.top-toolbar{z-index:50;align-items:center;gap:var(--space-3);min-height:48px;color:var(--color-toolbar-text);background:linear-gradient(100deg,#131820 0%,#182028 60%,#10262a 100%);border-bottom:1px solid #ffffff14;padding:6px 10px;display:flex}.toolbar-left,.toolbar-center,.toolbar-right{align-items:center;gap:var(--space-1);min-width:0;display:flex}.toolbar-left{gap:var(--space-2)}.toolbar-center{scrollbar-width:none;-webkit-overflow-scrolling:touch;flex:1;justify-content:safe center;overflow-x:auto}.toolbar-center::-webkit-scrollbar{display:none}.toolbar-right{justify-content:flex-end}.toolbar-brand{letter-spacing:-.3px;color:#f1f5f9;white-space:nowrap;margin:0;font-size:14px;font-weight:800}.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;box-shadow:0 0 0 4px var(--color-focus-shadow)}.toolbar-sep{background:var(--color-toolbar-separator);width:1px;height:18px;margin:0 3px}.top-toolbar .toolbar-btn{color:#e5e7eb;min-width:44px;min-height:44px;font-size:var(--text-xs);background:0 0;border-color:#0000;padding:5px 11px;transition:background .15s,border-color .15s,color .15s,filter .15s,box-shadow .15s}.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;box-shadow:0 0 0 4px var(--color-focus-shadow)}.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)}.top-toolbar .toolbar-btn.btn-accent:disabled{opacity:.42;filter:saturate(.3)brightness(.9)}.toolbar-center .toolbar-btn{white-space:nowrap;min-width:0;height:36px;min-height:36px;font:600 12px/1.2 var(--font-sans);border-radius:7px;flex:none;padding:6px 12px}.toolbar-center .toolbar-btn:not(.btn-accent){color:#e5e7eb;background:#ffffff0f;border-color:#ffffff24}.toolbar-center .toolbar-btn:not(.btn-accent):hover:not(:disabled){color:#fff;background:#ffffff1f;border-color:#ffffff38}.toolbar-center .toolbar-btn:not(.btn-accent):focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.toolbar-center .toolbar-btn.btn-accent{border-radius:7px;height:36px;min-height:36px}.toolbar-modes{align-items:center;display:flex}.toolbar-modes .mode-selector{background:#ffffff14;border-color:#fff3}.toolbar-modes .mode-selector-btn{color:#cbd5e1}.toolbar-modes .mode-selector-btn:hover:not(:disabled):not([aria-disabled=true]):not(.is-active){color:#fff;background:#ffffff24}.toolbar-modes .mode-selector-btn:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.toolbar-modes .mode-selector-btn.is-active:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.toolbar-modes .mode-selector-btn:disabled,.toolbar-modes .mode-selector-btn[aria-disabled=true]{opacity:.35}.top-toolbar .toolbar-github{text-decoration:none}[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}.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);font-size:var(--text-lg);justify-content:space-between;align-items:center;padding:14px 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;box-shadow:0 0 0 4px var(--color-focus-shadow)}.export-popup-options{gap:var(--space-2);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;box-shadow:0 0 0 4px var(--color-focus-shadow);border-color:var(--color-focus)}.toolbar-sheet-backdrop{align-items:flex-end;padding:0}.toolbar-sheet{border:1px solid var(--color-border);background:var(--color-surface);width:100%;max-height:82dvh;color:var(--color-text);padding-bottom:env(safe-area-inset-bottom);border-bottom:0;border-radius:16px 16px 0 0;animation:.18s slideUp;overflow:auto;box-shadow:0 -18px 60px #00000061}.toolbar-sheet-header{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:14px 16px;font-size:16px;display:flex}.toolbar-sheet-items{gap:var(--space-2);padding:12px;display:grid}.toolbar-sheet-items>button,.toolbar-sheet-items>a{border:1px solid var(--color-border);background:var(--color-bg);width:100%;min-height:52px;color:var(--color-text);text-align:left;cursor:pointer;border-radius:9px;align-items:center;gap:12px;padding:11px 14px;font:600 15px/1.2 inherit;text-decoration:none;display:flex}.toolbar-sheet-items>button:hover,.toolbar-sheet-items>a:hover{border-color:var(--color-primary);background:var(--color-bg-hover)}.toolbar-sheet-items>button:focus-visible,.toolbar-sheet-items>a:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow);border-color:var(--color-focus)}.toolbar-sheet-items>button:disabled{opacity:.42;cursor:not-allowed}.toolbar-sheet-pwa{border-top:1px solid var(--color-border);flex-wrap:wrap;gap:8px;padding-top:4px;display:flex}.toolbar-sheet-pwa .pwa-action{border-color:var(--color-border);background:var(--color-bg);min-height:52px;color:var(--color-text);padding:8px 14px}.toolbar-sheet-pwa .pwa-action--accent{border-color:var(--color-primary);background:var(--color-primary);color:#fff}.toolbar-sheet-pwa .pwa-status{color:var(--color-text-secondary);font-size:13px}.shortcuts-popup{border:1px solid var(--color-border);background:var(--color-surface);width:min(420px,100vw - 32px);color:var(--color-text);border-radius:14px;overflow:hidden;box-shadow:0 24px 70px #0006}.shortcuts-popup-header{border-bottom:1px solid var(--color-border);font-size:var(--text-lg);justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.shortcuts-list{gap:var(--space-3);margin:0;padding:14px 16px 16px;display:grid}.shortcuts-row{color:var(--color-text-secondary);align-items:center;gap:10px;font-size:13px;line-height:1.4;display:flex}.shortcuts-row dt{flex:none;align-items:center;gap:4px;display:flex}.shortcuts-row dd{margin:0}.shortcuts-row kbd{border:1px solid var(--color-border-strong);background:var(--color-bg);min-width:22px;height:22px;color:var(--color-text);font:600 11px/1 var(--font-mono);border-bottom-width:2px;border-radius:6px;justify-content:center;align-items:center;padding:0 6px;display:inline-flex}.modeler-mode-host{flex:1;min-width:0;min-height:0;display:flex;overflow:hidden}.modeler-mode-host>*{flex:1;min-width:0;min-height:0}.modeler-loading{color:var(--color-text-secondary);background:var(--color-bg);flex:1;align-content:center;place-items:center;gap:10px;font-size:14px;display:grid}.modeler-loading-spinner{border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;width:22px;height:22px;animation:.8s linear infinite modeler-spin}@keyframes modeler-spin{to{transform:rotate(360deg)}}@media (width<=720px){.modeler-mode-host{overflow:auto}}.workbench{gap:var(--space-2);min-height:0;padding:var(--space-2);flex:1;grid-template-columns:clamp(410px,30vw,540px) minmax(0,1fr) clamp(285px,20vw,340px);transition:gap .15s;display:grid;overflow:hidden}.panel-left,.panel-center,.panel-right{min-width:0;min-height:0}.panel-center{flex-direction:column}.panel-left{gap:var(--space-2);overscroll-behavior:contain;flex-direction:column;display:flex;overflow:hidden auto}.panel-right{gap:var(--space-2);overscroll-behavior:contain;flex-direction:column;display:flex;overflow-y:auto}.panel-center{display:flex;overflow:hidden}.panel-center>.plan-diagram-busy-wrapper{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.panel-left>.plan-inputs-busy-wrapper{gap:var(--space-2);flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.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-actions{align-items:center;gap:6px;display:inline-flex}.pwa-status{min-height:26px;color:var(--color-toolbar-text);white-space:nowrap;background:#ffffff17;border:1px solid #ffffff26;border-radius:999px;align-items:center;gap:6px;padding:3px 10px;font-size:12px;display:inline-flex}.pwa-status-dot{background:var(--color-text-tertiary);border-radius:50%;width:8px;height:8px}.pwa-action{min-height:30px;color:var(--color-toolbar-text);cursor:pointer;background:#ffffff17;border:1px solid #ffffff26;border-radius:999px;align-items:center;gap:5px;padding:3px 11px;font-size:12px;transition:background .15s,border-color .15s;display:inline-flex}.pwa-action:hover{background:#ffffff29;border-color:#ffffff47}.pwa-action:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.pwa-action--accent{color:#082f2f;background:linear-gradient(135deg,#2dd4d4,#14a3a8);border-color:#2dd4d4;font-weight:700}.pwa-action--accent:hover{filter:brightness(1.05)}.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);min-width:0;min-height:0;box-shadow:var(--shadow-sm);border-radius:10px;flex-direction:column;flex:none;transition:box-shadow .15s,border-color .15s;display:flex;overflow:hidden}.card{border:1px solid var(--color-border);background:var(--color-surface);box-shadow:var(--shadow-sm);border-radius:10px;transition:box-shadow .15s,border-color .15s}.panel:hover,.card:hover,.card--elevated,.panel--elevated{box-shadow:var(--shadow-md)}.panel-center>.panel{flex:1}.panel-header{justify-content:space-between;align-items:center;gap:var(--space-2);border-bottom:1px solid var(--color-border);background:var(--color-bg-subtle);min-height:36px;padding:4px 6px 4px 10px;transition:background .15s,border-color .15s;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{scrollbar-width:thin;scrollbar-color:var(--color-border) transparent;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{-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--color-border) transparent;min-height:0;overflow-x:hidden}.table-scroll::-webkit-scrollbar{height:6px}.table-scroll::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:999px}.entry-table{border-collapse:collapse;table-layout:fixed;width:100%;font-size:12px}.entry-table .col-num{width:72px}.entry-table .col-qty{width:56px}.entry-table .col-actions{width:108px}.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:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.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}.entry-actions-cell{padding-left:2px!important;padding-right:8px!important}.row-action{width:30px;height:30px;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:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.detail-row td{border-bottom:1px solid var(--color-border);background:var(--color-bg-subtle);padding:10px 12px}.detail-row:hover td{background:var(--color-bg-subtle)!important}.detail-grid{grid-template-columns:1fr 1fr;align-items:end;gap:10px 12px;display:grid}.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:11px;font-weight:700}.detail-field--material{min-width:0}.detail-grid--stock .detail-field--material{grid-column:1/-1}.detail-grid--stock .detail-field--grain{grid-column:1;min-width:0}.detail-grid--stock .detail-field--cost{grid-column:2;min-width:0}.detail-grid--parts .detail-field--material{grid-column:1;min-width:0}.detail-grid--parts .detail-field--grain{grid-column:2;min-width:0}.detail-grid--parts .detail-check--inline{min-height:28px;color:var(--color-text);cursor:pointer;grid-column:1/-1;justify-self:start;align-items:center;gap:6px;font-size:12px;display:inline-flex}.detail-grid--parts .detail-edge{grid-column:1/-1}.detail-field--cost .field-label{text-overflow:clip;white-space:normal;line-height:1.25;overflow:visible}.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:2px;box-shadow:0 0 0 4px var(--color-focus-shadow);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:28px;color:var(--color-text);cursor:pointer;align-items:center;gap:6px;padding-bottom:0;font-size:12px;display:flex}.detail-edge{grid-column:1/-1}.detail-help{display:none}.detail-allowance-help{max-width:none;color:var(--color-text-tertiary);grid-column:1/-1;margin-top:2px;font-size:11px;line-height:1.35;display:block}.detail-allowance-group{grid-column:1/-1;grid-template-columns:1fr 1fr;align-items:end;gap:8px 12px;display:grid}.detail-field--allowance{min-width:0}.detail-field--allowance .field-label{text-overflow:clip;white-space:normal;line-height:1.25;overflow:visible}.detail-cut-size{flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:6px;min-height:auto;padding:2px 0;display:flex}.detail-cut-size-label{color:var(--color-text-secondary);letter-spacing:.4px;text-transform:uppercase;font-size:11px;font-weight:700}.detail-cut-size-value{color:var(--color-text);font:600 12px var(--font-mono);white-space:nowrap;background:0 0;border-radius:0;padding: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:2px;box-shadow:0 0 0 4px var(--color-focus-shadow);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;box-shadow:0 0 0 4px var(--color-focus-shadow)}.advanced-options{padding-top:2px}.edge-banding-block{flex-direction:column;gap:6px;display:flex}.edge-banding-heading{align-items:center;gap:8px;display:flex}.edge-banding-heading strong{color:var(--color-text-secondary);letter-spacing:.3px;text-transform:uppercase;font-size:11px;font-weight:700}.edge-banding-editor{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.edge-sides,.edge-details{align-items:center;gap:6px;display:flex}.edge-btn{border:1px solid var(--color-border);background:var(--color-surface);width:26px;height:26px;color:var(--color-text-secondary);cursor:pointer;border-radius:6px;place-items:center;font-size:11px;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;box-shadow:0 0 0 4px var(--color-focus-shadow)}.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);white-space:nowrap}.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;box-shadow:0 0 0 4px var(--color-focus-shadow)}.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;box-shadow:0 0 0 4px var(--color-focus-shadow)}.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}.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;box-shadow:0 0 0 4px var(--color-focus-shadow)}.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);scrollbar-width:thin;scrollbar-color:var(--color-border) transparent;border-radius:7px;width:100%;overflow:auto}.table-wrap::-webkit-scrollbar{width:6px;height:6px}.table-wrap::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:999px}.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}.modal-backdrop.bottom-sheet-backdrop{align-items:flex-end;padding:0}.bottom-sheet{border:1px solid var(--color-border);background:var(--color-surface);width:100%;max-height:82dvh;color:var(--color-text);padding-bottom:env(safe-area-inset-bottom);border-bottom:0;border-radius:16px 16px 0 0;animation:.18s slideUp;overflow:auto;box-shadow:0 -18px 60px #00000061}@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:2px;box-shadow:0 0 0 4px var(--color-focus-shadow);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}.skip-link{z-index:100;background:var(--color-primary);color:#fff;font:600 14px var(--font-sans);border-radius:0 0 8px;padding:8px 12px;text-decoration:none;transition:transform .12s;position:absolute;top:0;left:0;transform:translateY(-100%)}.skip-link:focus{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow);transform:translateY(0)}.skip-link:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.focus-sentinel{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}#main:focus{outline:none}#main:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.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-action{border:1px solid var(--color-border-strong);background:var(--color-bg-subtle);min-height:26px;color:var(--color-primary-dark);font:700 12px var(--font-sans);cursor:pointer;border-radius:999px;flex:none;padding:3px 11px}.toast-action:hover{background:var(--color-bg-hover)}.toast-action:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.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<=1500px){.top-toolbar{flex-wrap:wrap;row-gap:4px}.toolbar-center{flex-basis:100%;order:3;justify-content:flex-start}.toolbar-right{margin-left:auto}}.top-toolbar .toolbar-center .toolbar-btn.btn-accent{z-index:2;position:sticky;right:0;box-shadow:-12px 0 14px -8px #0009}@media (width<=1180px){.app-layout{height:auto;min-height:100dvh;overflow:auto}.app-layout--model{height:100dvh;overflow:hidden}.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}.toolbar-project-name{max-width:130px}}@media (width<=1180px) and (orientation:portrait){.workbench{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"center center""left right"}.panel-left{grid-area:left}.panel-center{grid-area:center}.panel-right{grid-area:right}}@media (width<=720px){.app-layout--model{height:auto;overflow:auto}.top-toolbar{gap:2px 7px;padding:2px 7px;position:sticky;top:0}.toolbar-modes .mode-selector{padding:1px}.toolbar-project-name{text-overflow:ellipsis;flex:auto;width:110px;min-width:0;max-width:32vw;display:block;overflow:hidden}.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}.toolbar-left{flex:auto;min-width:0}.toolbar-modes{scrollbar-width:none;-webkit-overflow-scrolling:touch;flex:auto;order:0;justify-content:center;overflow-x:auto}.toolbar-modes::-webkit-scrollbar{display:none}.toolbar-modes .mode-selector{flex:none}.toolbar-right{flex:none;order:0;margin-left:0}.toolbar-primary{flex-basis:100%;order:1;display:flex}.toolbar-primary .btn{width:100%;min-height:44px}.top-toolbar .toolbar-primary .btn-label{display:inline}.top-toolbar .toolbar-primary .toolbar-btn.btn-accent{min-width:0}.workbench{flex-direction:column;gap:12px;padding:8px;display:flex}.panel-left{order:1;min-height:auto}.panel-center{order:2;min-height:auto}.panel-right{order:3;min-height:auto;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}.material-add-row{grid-template-columns:minmax(110px,1fr) 44px 44px}.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}.detail-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px 12px;display:grid}.detail-field--material,.detail-grid--parts .detail-field--material{grid-column:1/-1}.detail-field--grain,.detail-field--cost{min-width:0}.detail-check--inline{grid-column:1/-1;justify-self:start;min-width:0}.detail-edge,.detail-allowance-group{grid-column:1/-1}.detail-allowance-group{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px 12px;display:grid}.detail-field--allowance{min-width:0}.detail-cut-size,.detail-allowance-help{grid-column:1/-1;min-width:0}.detail-cut-size-value{max-width:100%;overflow:auto}.edge-banding-heading{flex-direction:column;align-items:flex-start;gap:2px}.edge-banding-heading span{line-height:1.35}.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}.detail-cut-size{flex-wrap:wrap;min-height:44px}.detail-cut-size-value{font-size:14px}.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,.mode-selector-btn,.pwa-action{min-height:44px}.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}}.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 .15s,color .15s,box-shadow .15s,filter .15s;display:inline-flex}.mode-selector-btn:hover:not(:disabled):not([aria-disabled=true]):not(.is-active){background:var(--color-bg-hover);color:var(--color-text)}.mode-selector-btn:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.mode-selector-btn.is-active{background:var(--color-primary);color:#fff}.mode-selector-btn.is-active:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.mode-selector-btn:disabled,.mode-selector-btn[aria-disabled=true]{opacity:.4;cursor:not-allowed}.mode-selector-wrap{scrollbar-width:none;-webkit-overflow-scrolling:touch;min-width:0;max-width:100%;display:inline-flex;position:relative;overflow-x:auto}.mode-selector-wrap::-webkit-scrollbar{display:none}.mode-selector-tooltip{z-index:30;border:1px solid var(--color-border-strong);background:var(--color-surface);max-width:min(260px,100vw - 24px);color:var(--color-text);white-space:normal;overflow-wrap:break-word;word-break:break-word;text-align:center;border-radius:7px;padding:6px 10px;font-size:12px;line-height:1.4;position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%);box-shadow:0 8px 24px #0f172a2e}.mode-selector-icon{align-items:center;display:inline-flex}.mode-selector-label{white-space:nowrap}@media (width<=900px){.mode-selector-label{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.mode-selector-btn{padding:4px 8px}}@media (width<=520px){.mode-selector{max-width:100%}.mode-selector-btn{justify-content:center;min-width:44px;min-height:44px;padding:4px 8px}}@media (width<=400px){.toolbar-left,.toolbar-modes{flex:0 auto}.toolbar-project-name{width:76px;max-width:24vw}.mode-selector-btn{padding-inline:6px}}@media (width<=480px){.table-scroll{-webkit-overflow-scrolling:touch;overflow-x:auto}.entry-table,.data-table{min-width:320px}.table-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}}.empty-cta{text-align:center;flex-direction:column;align-items:center;gap:8px;padding:24px 16px;display:flex}.empty-cta-title{color:var(--color-text);margin:0;font-size:14px;font-weight:700}.empty-cta-hint{max-width:260px;color:var(--color-text-secondary);margin:0;font-size:12px;line-height:1.4}.empty-cta-actions{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:4px;display:flex}.empty-cta .btn{min-height:40px}.skeleton{background:var(--color-bg-subtle);border-radius:4px;min-width:32px;animation:1.2s ease-in-out infinite skeleton-pulse;display:inline-block;color:#0000!important}.stats-list--skeleton dd.skeleton{text-align:center;min-width:44px}@keyframes skeleton-pulse{0%{opacity:1}50%{opacity:.45}to{opacity:1}}[data-testid=plan-inputs-busy-wrapper][aria-busy=true] .entry-table td,[data-testid=plan-diagram-busy-wrapper][aria-busy=true] .cut-svg,[data-testid=plan-inputs-busy-wrapper][aria-busy=true] .stats-list dd{animation:1.2s ease-in-out infinite skeleton-pulse}@media (prefers-reduced-motion:reduce){.skeleton,[aria-busy=true] .entry-table td,[aria-busy=true] .stats-list dd{animation:none}}.stats-list dd.is-accent{color:var(--color-accent);align-items:center;gap:4px;font-weight:700;display:inline-flex}.stats-list dd.is-bad,.stats-list dd.is-good{align-items:center;gap:4px;display:inline-flex}.toast-icon{flex:none;align-items:center;display:inline-flex}.toast-icon .icon{color:currentColor}.toast--success .toast-icon{color:var(--color-success)}.toast--error .toast-icon{color:var(--color-error)}.toast--info .toast-icon{color:var(--color-primary)}.entry-table tbody tr.is-even td{background:var(--color-bg-subtle)}.entry-table tbody tr.is-even.is-expanded td{background:var(--color-primary-light)}.entry-actions-cell{min-width:0}.num-cell-wrap{align-items:center;gap:2px;width:100%;display:flex}.num-cell-wrap .num-cell-input{flex:auto;min-width:36px}.num-cell-input{min-width:24px}.num-stepper{border:1px solid var(--color-border);background:var(--color-surface);width:24px;height:24px;color:var(--color-text);cursor:pointer;border-radius:6px;flex:none;place-items:center;font-size:12px;font-weight:700;display:none}.num-stepper:disabled{opacity:.35;cursor:not-allowed}.num-stepper:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-primary)}@media (width<=720px){.num-stepper{width:32px;height:32px;font-size:15px;display:grid}.num-cell-wrap{flex-wrap:wrap;gap:4px}.num-cell-wrap .num-cell-input{flex:100%;min-width:0;height:36px}}@media (width>=721px) and (pointer:coarse){.num-stepper{display:none}.num-cell-wrap .num-cell-input{min-height:36px}}@media (width>=721px) and (pointer:fine){.row-action{width:30px;height:30px}.entry-table .col-actions{width:108px}}.toolbar-optimize-icon{align-items:center;display:inline-flex}.toolbar-optimize-icon.is-spinning{animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.toolbar-optimize-progress{background:#ffffff40;border-radius:0 0 7px 7px;height:3px;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.toolbar-optimize-bar{background:#fff;height:100%;transition:width .2s;display:block}.top-toolbar .toolbar-btn.btn-accent{position:relative;overflow:hidden}.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}.pwa-update-banner{z-index:60;color:#fff;min-height:44px;font:600 13px/1.2 var(--font-sans);background:linear-gradient(135deg,#0d7377,#095b5e);justify-content:center;align-items:center;gap:10px;padding:8px 12px;display:flex;position:fixed;top:0;left:0;right:0;box-shadow:0 4px 14px #0f172a38}.pwa-update-banner span{text-align:center;flex:1;max-width:520px}.pwa-update-banner .pwa-banner-action{color:#082f2f;min-height:32px;font:700 12px var(--font-sans);cursor:pointer;background:#fff;border:1px solid #2dd4d4;border-radius:999px;align-items:center;gap:6px;padding:6px 14px;display:inline-flex}.pwa-update-banner .pwa-banner-action:hover{filter:brightness(1.05)}.pwa-update-banner .pwa-banner-action:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}.pwa-update-banner .pwa-banner-dismiss{color:#fff;cursor:pointer;background:0 0;border:1px solid #ffffff40;border-radius:8px;place-items:center;width:32px;height:32px;font-size:18px;display:grid}.pwa-update-banner .pwa-banner-dismiss:hover{background:#ffffff1f}.pwa-update-banner .pwa-banner-dismiss:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;box-shadow:0 0 0 4px var(--color-focus-shadow)}[data-theme=dark] .pwa-update-banner{background:linear-gradient(135deg,#14a3a8,#0d7377)}[data-theme=dark] .pwa-update-banner .pwa-banner-action{color:#082f2f}.app-layout:has(.pwa-update-banner) .top-toolbar{margin-top:44px}.pwa-offline-persistent{min-height:26px;color:var(--color-toolbar-text);white-space:nowrap;background:#ffffff17;border:1px solid #ffffff26;border-radius:999px;align-items:center;gap:6px;padding:3px 10px;font-size:12px;display:inline-flex}.pwa-offline-persistent .pwa-status-dot{background:var(--color-text-tertiary);border-radius:50%;width:8px;height:8px}.toolbar-right .pwa-offline-persistent{margin-right:4px}@media (forced-colors:active){.toolbar-project-name:focus-visible,.top-toolbar .toolbar-btn:focus-visible,.toolbar-modes .mode-selector-btn:focus-visible,.mode-selector-btn:focus-visible,.mode-selector-btn.is-active:focus-visible,.toolbar-modes .mode-selector-btn.is-active:focus-visible,.export-popup-close:focus-visible,.export-popup-options button:focus-visible,.toolbar-sheet-items>button:focus-visible,.toolbar-sheet-items>a:focus-visible,.pwa-action:focus-visible,.pwa-update-banner .pwa-banner-action:focus-visible,.pwa-update-banner .pwa-banner-dismiss:focus-visible,.cell-text-input:focus-visible,.num-cell-input:focus-visible,.row-action:focus-visible,.detail-field select:focus-visible,.detail-field .text-field:focus-visible,.option-row select:focus-visible,.option-row input:focus-visible,.collapse-toggle:focus-visible,.edge-btn:focus-visible,.legend-toggle:focus-visible,.sheet-breakdown summary:focus-visible,.cut-sheet-group>summary:focus-visible,.select-full:focus-visible,.field-row input:focus-visible,.input-narrow:focus-visible,.toast-action:focus-visible{outline-offset:2px;box-shadow:none!important;outline:3px solid highlight!important}.mode-selector-btn.is-active:focus-visible,.toolbar-modes .mode-selector-btn.is-active:focus-visible{outline-offset:3px!important}.pwa-status,.pwa-offline-persistent,.pwa-action,.pwa-update-banner{forced-color-adjust:none;border:1px solid canvastext!important}.pwa-status-dot{forced-color-adjust:auto}}
