body:has(.ws,.pv)>.chrome,body:has(.ws,.pv)>footer.chrome{display:none}main:has(.ws,.pv){max-width:none;padding:0}.ws{--rail:400px;--inspector:320px;height:100dvh;display:grid;grid-template-rows:48px minmax(0,1fr);background:var(--bg);color:var(--text-primary);font-size:13px;overflow:hidden}.btn-danger,.btn-ghost,.btn-primary,.btn-secondary{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:32px;padding:0 12px;border-radius:var(--radius-sm);border:1px solid transparent;font:inherit;font-weight:560;font-size:13px;line-height:1;white-space:nowrap;cursor:pointer;transition:background var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease),transform 80ms var(--ease)}.btn-danger:active:not(:disabled),.btn-ghost:active:not(:disabled),.btn-primary:active:not(:disabled),.btn-secondary:active:not(:disabled){transform:translateY(.5px) scale(.99)}.btn-danger:disabled,.btn-ghost:disabled,.btn-primary:disabled,.btn-secondary:disabled{cursor:not-allowed;opacity:1;color:var(--text-disabled);background:var(--surface-sunken);border-color:var(--border-subtle);box-shadow:none}.btn-primary{background:var(--accent);border-color:color-mix(in srgb,var(--accent) 80%,black);color:var(--accent-ink);box-shadow:inset 0 1px 0 rgb(255 255 255/18%),0 1px 2px rgb(20 24 28/14%)}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-secondary{background:var(--surface);border-color:var(--border-strong);color:var(--text-primary);box-shadow:var(--shadow-1)}.btn-secondary:hover:not(:disabled){background:var(--surface-hover);border-color:color-mix(in srgb,var(--text-muted) 60%,var(--border-strong))}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover:not(:disabled){background:var(--surface-hover);color:var(--text-primary)}.btn-danger{background:var(--danger-soft);border-color:color-mix(in srgb,var(--danger) 30%,transparent);color:var(--danger)}.btn-danger:hover:not(:disabled){background:color-mix(in srgb,var(--danger-soft) 70%,var(--danger) 12%)}.btn-sm{min-height:28px;padding:0 9px;font-size:12px;gap:5px}.btn-lg{min-height:44px;padding:0 18px;font-size:15px;border-radius:var(--radius)}.btn-primary kbd,.btn-secondary kbd{margin-left:2px;background:rgb(255 255 255/16%);border-color:rgb(255 255 255/22%);color:inherit}.btn-secondary kbd{background:var(--surface-sunken);border-color:var(--border)}.btn-secondary kbd,kbd{color:var(--text-muted)}kbd{display:inline-flex;align-items:center;height:18px;padding:0 5px;border:solid var(--border);border-width:1px 1px 2px;border-radius:var(--radius-xs);background:var(--surface);font:500 10.5px/1 var(--font);letter-spacing:.02em;white-space:nowrap}.icon-btn,.tb-icon{display:inline-grid;place-items:center;width:30px;height:30px;min-height:0;padding:0;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);cursor:pointer;transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}.icon-btn:hover:not(:disabled),.tb-icon:hover:not(:disabled){background:var(--surface-hover);color:var(--text-primary)}.icon-btn:disabled,.tb-icon:disabled{color:var(--text-disabled);cursor:not-allowed;background:transparent}.tb-icon[aria-pressed=true]{color:var(--text-primary);background:var(--surface-active)}.icon-btn{width:26px;height:26px}.spin{width:14px;height:14px;border-radius:50%;border:2px solid;border-right:2px solid transparent;animation:spin .7s linear infinite;flex:0 0 auto}@keyframes spin{to{transform:rotate(1turn)}}:where(.ws,.pv,.overlay) :focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-radius:var(--radius-xs)}.muted{color:var(--text-muted)}.mono{font-family:var(--mono);font-size:.95em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.chip{display:inline-grid;place-items:center;min-width:22px;height:20px;background:var(--text-primary);color:var(--surface);font:650 11px/1 var(--mono)}.chip,.tag{padding:0 6px;border-radius:var(--radius-xs)}.tag{display:inline-flex;align-items:center;height:18px;margin-left:6px;font-size:11px;font-weight:600;background:var(--surface-sunken);color:var(--text-secondary)}.tag-warn{background:var(--warning-soft);color:var(--warning)}.tb{display:flex;align-items:center;gap:6px;padding:0 10px 0 8px;background:var(--surface);border-bottom:1px solid var(--border);min-width:0;position:relative;z-index:5}.tb-brand{display:grid;place-items:center;width:32px;height:32px;border-radius:var(--radius-sm);text-decoration:none}.tb-brand:hover{background:var(--surface-hover)}.tb-divider{width:1px;height:20px;background:var(--border);margin:0 4px;flex:0 0 auto}.tb-job{display:flex;align-items:baseline;gap:10px;min-width:0}.tb-job-name{width:auto;min-width:6ch;max-width:28ch;field-sizing:content;min-height:30px;padding:0 8px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;font:600 14px/1 var(--font-display);letter-spacing:-.01em;color:var(--text-primary)}.tb-job-name:hover{border-color:var(--border)}.tb-job-name:focus{border-color:var(--accent);box-shadow:var(--ring);background:var(--surface)}.tb-job-meta{color:var(--text-muted);font-size:12px;white-space:nowrap;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tb-status{display:inline-flex;align-items:center;gap:7px;height:24px;padding:0 9px;margin-left:6px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--text-secondary);font-size:12px;font-weight:560;white-space:nowrap}.tb-status .dot{width:7px;height:7px;border-radius:50%;background:var(--text-muted)}.tb-status[data-tone=busy] .dot{background:var(--accent);animation:pulse 1.1s var(--ease) infinite}.tb-status[data-tone=ok]{color:var(--success);border-color:color-mix(in srgb,var(--success) 30%,var(--border))}.tb-status[data-tone=ok] .dot{background:var(--success)}.tb-status[data-tone=warn]{color:var(--warning);border-color:color-mix(in srgb,var(--warning) 35%,var(--border));background:var(--warning-soft)}.tb-status[data-tone=warn] .dot{background:var(--warning)}.tb-status[data-tone=danger]{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 35%,var(--border))}.tb-status[data-tone=danger] .dot{background:var(--danger)}@keyframes pulse{50%{opacity:.35}}.tb-spacer{flex:1 1;min-width:8px}.tb-command{display:inline-flex;align-items:center;gap:8px;height:30px;min-height:0;padding:0 6px 0 9px;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);font:inherit;font-size:12px;cursor:pointer;transition:border-color var(--t-fast) var(--ease)}.tb-command,.tb-command:hover{background:var(--surface-sunken)}.tb-command:hover{border-color:var(--border-strong);color:var(--text-secondary)}.tb-optimize{margin-left:6px;min-width:128px}.tb-optimize[data-busy=true]{cursor:progress}@media (max-width:1240px){.tb-command kbd,.tb-command span,.tb-optimize kbd{display:none}}@media (max-width:1020px){.tb-job-meta{display:none}}.ws-body{display:grid;grid-template-columns:var(--rail) minmax(0,1fr) var(--inspector);min-height:0;transition:grid-template-columns var(--t-slow) var(--ease)}.ws[data-rail=hidden] .ws-body{grid-template-columns:0 minmax(0,1fr) var(--inspector)}.ws[data-inspector=hidden] .ws-body{grid-template-columns:var(--rail) minmax(0,1fr) 0}.ws[data-rail=hidden][data-inspector=hidden] .ws-body{grid-template-columns:0 minmax(0,1fr) 0}.ws-rail{grid-column:1}.ws-center{grid-column:2}.ws-inspector{grid-column:3}.ws-inspector,.ws-rail{background:var(--surface);overflow:hidden auto;min-width:0;scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}.ws-rail{border-right:1px solid var(--border);display:flex;flex-direction:column}.ws-inspector{border-left:1px solid var(--border)}.ws[data-inspector=hidden] .ws-inspector,.ws[data-rail=hidden] .ws-rail{visibility:hidden}@media (max-width:1180px){.ws{--rail:340px;--inspector:300px}}@media (max-width:980px){.ws-body,.ws[data-rail] .ws-body{grid-template-columns:0 minmax(0,1fr) 0;position:relative}.ws-inspector,.ws-rail{position:absolute;top:0;bottom:0;z-index:6;box-shadow:var(--shadow-3)}.ws-rail{left:0;width:min(380px,92vw)}.ws-inspector{right:0;width:min(340px,92vw)}.ws[data-inspector=hidden] .ws-inspector,.ws[data-rail=hidden] .ws-rail{display:none}}.rp{border-bottom:1px solid var(--border-subtle);flex:0 0 auto}.rp[data-grow=true]{flex:1 0 auto}.rp-head{gap:4px;padding:0 8px 0 4px;height:38px;position:-webkit-sticky;position:sticky;top:0;background:var(--surface);z-index:2}.rp-head,.rp-toggle{display:flex;align-items:center}.rp-toggle{justify-content:flex-start;gap:6px;flex:1 1;min-width:0;height:30px;min-height:0;padding:0 6px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-primary);font:inherit;cursor:pointer;text-align:left}.rp-toggle:hover{background:var(--surface-hover)}.ins-title,.rp-title{font-weight:640;font-size:12px;letter-spacing:.01em}.ins-meta,.rp-count{margin-left:auto;color:var(--text-muted);font-size:11.5px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.ins-chev{color:var(--text-muted);transition:transform var(--t) var(--ease);flex:0 0 auto}[aria-expanded=false]>.ins-chev{transform:rotate(-90deg)}.rp-actions{display:flex;gap:1px}.rp-body{padding:0 12px 12px}.rp-tools{display:flex;align-items:center;margin-bottom:8px}.rp-empty{color:var(--text-secondary);margin:4px 0 0;font-size:12.5px}.rp-empty p{margin:0 0 8px}.rp-empty-actions{display:flex;gap:6px;margin-bottom:8px}.field-search{display:flex;align-items:center;gap:6px;flex:1 1;height:28px;padding:0 8px;margin:0;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-sunken);color:var(--text-muted);font-weight:400;transition:border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}.field-search:focus-within{border-color:var(--accent);box-shadow:var(--ring);background:var(--surface)}.field-search input{border:0;background:transparent;min-height:0;padding:0;box-shadow:none!important;font-size:12.5px;color:var(--text-primary)}.grid-wrap{margin:0 -12px;overflow:visible}table.grid{display:table;width:100%;border-collapse:collapse;margin:0;font-size:12.5px;table-layout:fixed}.grid th{position:-webkit-sticky;position:sticky;top:38px;z-index:1;height:26px;padding:0 4px;background:var(--surface);border-bottom:1px solid var(--border);color:var(--text-muted);font-size:10.5px;font-weight:650;letter-spacing:.06em;text-transform:uppercase;text-align:left;border-radius:0}.grid td{height:30px;padding:0 2px;border-bottom:1px solid var(--border-subtle);vertical-align:middle}.grid td:first-child,.grid th:first-child{padding-left:12px}.grid td:last-child,.grid th:last-child{padding-right:8px}.grid tbody tr{transition:background var(--t-fast) var(--ease);box-shadow:inset 2px 0 0 transparent}.grid tbody tr:hover,.grid tbody tr[data-hovered=true]{background:var(--surface-hover)}.grid tbody tr[data-selected=true]{background:var(--accent-soft);box-shadow:inset 2px 0 0 var(--selection)}.grid tbody tr[data-state=impossible]{box-shadow:inset 2px 0 0 var(--danger)}.grid tbody tr[data-state=unassigned],.grid tbody tr[data-state=warning]{box-shadow:inset 2px 0 0 var(--warning)}.c-check{width:30px}.c-code{width:36px}.c-num{width:58px}.c-qty{width:38px}.c-mat{width:70px}.c-rot{width:24px;text-align:center}.c-del{width:26px}input.cell,select.cell{width:100%;height:26px;min-height:0;padding:0 6px;border:1px solid transparent;border-radius:var(--radius-xs);background:transparent;color:var(--text-primary);font:inherit;font-size:12.5px;box-shadow:none;transition:border-color var(--t-fast) var(--ease),background var(--t-fast) var(--ease)}input.cell:hover:not(:disabled),select.cell:hover:not(:disabled){border-color:var(--border);background:var(--surface)}input.cell:focus,select.cell:focus{outline:none;border-color:var(--accent);background:var(--surface);box-shadow:var(--ring)}input.cell:disabled{color:var(--text-disabled);background:transparent}.num,input.num{font-family:var(--mono);font-size:12px;text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}select.cell{padding-right:2px}button.code{display:inline-grid;place-items:center;min-width:24px;height:20px;min-height:0;padding:0 5px;border:1px solid var(--border-strong);border-radius:var(--radius-xs);background:var(--surface);color:var(--text-primary);font:650 11px/1 var(--mono);cursor:pointer}button.code:hover{border-color:var(--selection);color:var(--selection);background:var(--surface)}tr[data-selected=true] button.code{background:var(--selection);border-color:var(--selection);color:var(--accent-ink)}.row-del{display:grid;place-items:center;width:22px;height:22px;min-height:0;padding:0;border:0;border-radius:var(--radius-xs);background:transparent;color:var(--text-muted);opacity:0;cursor:pointer;transition:opacity var(--t-fast) var(--ease)}.materials li:hover .row-del,.row-del:focus-visible,tr:hover .row-del{opacity:1}.row-del:hover{background:var(--danger-soft);color:var(--danger)}.rowmsg{font-size:11px;padding:0 6px 4px;line-height:1.3}.rowmsg[data-tone=danger]{color:var(--danger)}.rowmsg[data-tone=warning]{color:var(--warning)}.add-row{display:flex;align-items:center;gap:6px;width:calc(100% + 24px);margin:0 -12px;height:32px;min-height:0;padding:0 12px;border:0;border-bottom:1px solid var(--border-subtle);border-radius:0;background:transparent;color:var(--text-secondary);font:inherit;font-size:12.5px;cursor:pointer;text-align:left}.add-row:hover:not(:disabled){background:var(--surface-hover);color:var(--accent)}.add-row .muted{margin-left:auto;font-size:11px}.materials{list-style:none;margin:0;padding:0;display:grid;grid-gap:6px;gap:6px}.materials li{border:1px solid var(--border-subtle);border-radius:var(--radius-sm);padding:4px;background:var(--surface)}.mat-row{display:flex;gap:4px;align-items:center}.mat-ref{max-width:76px;font-weight:600}.mat-props{padding-top:2px}.mat-props select.cell{max-width:96px;color:var(--text-secondary)}.mat-field{display:flex;align-items:center;gap:4px;margin:0;font-size:11px;font-weight:600;color:var(--text-muted)}.mat-field input.cell{width:64px}.mat-check{margin-left:auto;padding-right:4px;cursor:pointer}.settings{display:grid;grid-gap:12px;gap:12px}.setting{display:grid;grid-gap:4px;gap:4px;margin:0;font-weight:400;color:inherit}.setting>span{font-size:11.5px;font-weight:640;color:var(--text-secondary)}.setting small,.setting-note{color:var(--text-muted);font-size:11.5px;line-height:1.4}.setting input,.setting select{min-height:30px;font-size:12.5px}.setting-pair{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.seg{padding:2px;gap:2px;border-radius:var(--radius-sm);background:var(--surface-sunken);border:1px solid var(--border-subtle)}.seg,.seg button{display:inline-flex}.seg button{align-items:center;gap:6px;height:26px;min-height:0;padding:0 10px;border:0;border-radius:calc(var(--radius-sm) - 2px);background:transparent;color:var(--text-secondary);font:inherit;font-size:12px;font-weight:560;cursor:pointer;transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}.seg button:hover{color:var(--text-primary);background:transparent}.seg button[data-active=true]{background:var(--surface);color:var(--text-primary);box-shadow:var(--shadow-1),0 0 0 1px var(--border)}.seg-full{display:flex}.seg-full button{flex:1 1;justify-content:center}.ws-center{max-width:none;margin:0;padding:0;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;grid-template-areas:"toolbar" "strip" "canvas" "status";min-width:0;min-height:0;background:var(--canvas)}.ct{grid-area:toolbar;display:flex;align-items:center;gap:8px;height:44px;padding:0 10px;background:var(--surface);border-bottom:1px solid var(--border);min-width:0}.ct-sep{width:1px;height:20px;background:var(--border)}.ct-spacer{flex:1 1}.stepper{display:inline-flex;align-items:center;gap:2px;height:30px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 2px}.stepper button{display:grid;place-items:center;width:24px;height:24px;min-height:0;padding:0;border:0;border-radius:var(--radius-xs);background:transparent;color:var(--text-secondary);cursor:pointer}.stepper button:hover:not(:disabled){background:var(--surface-hover);color:var(--text-primary)}.stepper button:disabled{color:var(--text-disabled);background:transparent}.stepper-value{padding:0 6px;font-size:12px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.stepper-value strong{font-family:var(--mono)}.toggles{gap:2px}.toggle,.toggles{display:inline-flex}.toggle{align-items:center;gap:6px;height:30px;min-height:0;padding:0 9px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);font:inherit;font-size:12px;font-weight:540;cursor:pointer;transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}.toggle:hover{background:var(--surface-hover);color:var(--text-primary)}.toggle[aria-pressed=true]{color:var(--text-primary);background:var(--surface-sunken);border-color:var(--border-subtle)}@media (max-width:1420px){.toggle span{display:none}.toggle{padding:0 7px}}.ct-find{display:flex;align-items:center;gap:6px;width:220px;height:30px;padding:0 8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-sunken);color:var(--text-muted)}.ct-find:focus-within{border-color:var(--accent);box-shadow:var(--ring);background:var(--surface)}.ct-find input{border:0;background:transparent;min-height:0;padding:0;font-size:12.5px;box-shadow:none!important}@media (max-width:1300px){.ct-find{width:160px}}.kpis{grid-area:strip;display:grid;grid-template-columns:auto auto minmax(180px,1.4fr) auto auto auto;background:var(--surface);border-bottom:1px solid var(--border)}.kpi{display:flex;flex-direction:column;justify-content:center;gap:2px;min-width:0;padding:8px 16px;border:0;border-right:1px solid var(--border-subtle);border-radius:0;background:transparent;color:inherit;font:inherit;text-align:left;min-height:0;animation:rise var(--t-slow) var(--ease-out) both}.kpi:last-child{border-right:0}.kpi-hot{cursor:default;transition:background var(--t-fast) var(--ease)}.kpi-hot:focus-visible,.kpi-hot:hover{background:var(--surface-hover)}.kpi-k{display:flex;align-items:center;gap:6px;color:var(--text-muted);font-size:10.5px;font-weight:650;letter-spacing:.06em;text-transform:uppercase}.kpi-k,.kpi-v{white-space:nowrap}.kpi-v{font:620 19px/1.15 var(--font-display);letter-spacing:-.015em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.kpi-v small{font-size:12px;font-weight:500;color:var(--text-secondary);letter-spacing:0}.kpi-v-sm{font-size:15px}.kpi-and,.kpi-sub{color:var(--text-muted)}.kpi-sub{font-size:11px;white-space:nowrap}@keyframes rise{0%{opacity:0;transform:translateY(3px)}}.util{display:grid;grid-template-columns:auto 1fr;align-items:center;grid-gap:10px;gap:10px}.util-v{font:620 19px/1.15 var(--font-display);letter-spacing:-.015em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;min-width:70px}.util-v small{font-size:11px;color:var(--text-muted);font-weight:500}.util-track{position:relative;height:6px;border-radius:3px;background:var(--surface-sunken);overflow:hidden;box-shadow:inset 0 0 0 1px var(--border-subtle)}.util-fill{position:absolute;inset:0 auto 0 0;border-radius:3px;background:var(--text-primary);transition:width .6s var(--ease-out);animation:grow .7s var(--ease-out) both}@keyframes grow{0%{width:0!important}}@media (max-width:1300px){.kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.kpi{border-bottom:1px solid var(--border-subtle)}}.ws-canvas-wrap{grid-area:canvas;position:relative;min-height:0;overflow:hidden}.empty-state{width:min(440px,100%);padding:28px 28px 24px;border-radius:var(--radius-lg);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-2);text-align:left;animation:rise var(--t-slow) var(--ease-out)}.empty-state h2{margin:0 0 14px;font:650 17px var(--font-display);letter-spacing:-.015em}.empty-state p{margin:10px 0 0;font-size:12.5px;line-height:1.5}.empty-state .btn-primary{margin-top:18px;width:100%;min-height:38px}.empty-art{position:relative;width:76px;height:52px;margin-bottom:16px;border:1.5px solid var(--stock-edge);border-radius:3px;background:repeating-linear-gradient(45deg,var(--waste-hatch) 0 1px,var(--waste) 1px 5px)}.empty-art span{position:absolute;background:var(--piece-0);border:1px solid var(--piece-edge)}.empty-art span:first-child{left:0;top:0;width:44%;height:58%}.empty-art span:nth-child(2){left:46%;top:0;width:30%;height:58%;background:var(--piece-1)}.empty-art span:nth-child(3){left:0;top:62%;width:62%;height:38%;background:var(--piece-2)}.empty-art span:nth-child(4){left:44%;top:0;width:1.5px;height:100%;background:var(--kerf);border:0}.empty-steps{list-style:none;margin:0;padding:0;display:grid;grid-gap:10px;gap:10px}.empty-steps li{display:grid;grid-template-columns:20px 1fr;grid-gap:10px;gap:10px;align-items:start}.empty-steps strong{display:block;font-size:13px;font-weight:600}.empty-steps small{display:block;color:var(--text-muted);font-size:12px;line-height:1.4}.empty-check{display:grid;place-items:center;width:18px;height:18px;margin-top:1px;border-radius:50%;border:1.5px solid var(--border-strong);color:var(--surface)}.empty-steps li[data-done=true] .empty-check{background:var(--success);border-color:var(--success)}.empty-steps li[data-done=true] strong{color:var(--text-secondary)}.working-art{width:76px;height:52px;margin-bottom:16px;border:1.5px solid var(--stock-edge);border-radius:3px;position:relative;overflow:hidden;background:var(--stock-fill)}.working-art span{position:absolute;top:0;bottom:0;width:2px;background:var(--kerf);box-shadow:0 0 8px var(--kerf);animation:sweep 1.3s var(--ease) infinite alternate}@keyframes sweep{0%{left:8%}to{left:90%}}.stages{list-style:none;margin:0;padding:0;display:grid;grid-gap:7px;gap:7px}.stages li{display:flex;align-items:center;gap:10px;color:var(--text-muted);font-size:12.5px}.stage-dot{width:9px;height:9px;border-radius:50%;border:1.5px solid var(--border-strong)}.stages li[data-state=done]{color:var(--text-secondary)}.stages li[data-state=done] .stage-dot{background:var(--success);border-color:var(--success)}.stages li[data-state=active]{color:var(--text-primary);font-weight:600}.stages li[data-state=active] .stage-dot{border-color:var(--accent);background:var(--accent);box-shadow:0 0 0 4px var(--accent-soft);animation:pulse 1.1s var(--ease) infinite}.refused-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:var(--radius);background:var(--danger-soft);color:var(--danger);margin-bottom:14px}.refused-detail{color:var(--text-primary);font-size:13px!important;padding:10px 12px;border-radius:var(--radius-sm);background:var(--surface-sunken);border:1px solid var(--border-subtle);word-break:break-word}.stale{position:absolute;top:34px;left:50%;transform:translateX(-50%);z-index:3;display:flex;align-items:center;gap:10px;padding:6px 6px 6px 12px;border-radius:var(--radius);background:var(--warning-soft);border:1px solid color-mix(in srgb,var(--warning) 35%,transparent);color:var(--warning);box-shadow:var(--shadow-2);font-size:12.5px;white-space:nowrap;animation:pop var(--t) var(--ease-out)}.stale span{color:var(--text-primary)}.processing{position:absolute;top:34px;right:12px;z-index:3;gap:8px;padding:6px 12px;border-radius:var(--radius);background:var(--surface-raised);border:1px solid var(--border);box-shadow:var(--shadow-2);color:var(--accent);font-size:12.5px;font-weight:560}.processing,.sb{display:flex;align-items:center}.sb{grid-area:status;gap:0;height:26px;padding:0 4px;background:var(--surface);border-top:1px solid var(--border);color:var(--text-muted);font-size:11.5px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;overflow:hidden}.sb-cell{padding:0 10px;border-right:1px solid var(--border-subtle);white-space:nowrap}.sb-cell:last-child{border-right:0}.sb-readout{font-family:var(--mono);color:var(--text-secondary)}.sb-spacer{flex:1 1}.ins{border-bottom:1px solid var(--border-subtle)}.ins-head{display:flex;justify-content:flex-start;align-items:center;gap:6px;width:100%;height:38px;min-height:0;padding:0 12px 0 8px;border:0;border-radius:0;background:transparent;color:var(--text-primary);font:inherit;cursor:pointer;text-align:left}.ins-head:hover{background:var(--surface-hover)}.ins-body{padding:2px 14px 14px;animation:rise var(--t) var(--ease-out)}.ins-empty{margin:0;color:var(--text-muted);font-size:12.5px;line-height:1.5}.ins-h{margin:0 0 2px;font:650 15px/1.3 var(--font-display)}.ins-h,.ins-size{letter-spacing:-.01em}.ins-size{font:620 18px/1.3 var(--mono);margin-bottom:10px}.ins-note{margin:10px 0 0;color:var(--text-muted);font-size:11.5px;line-height:1.45}.ins-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}.kvs{margin:6px 0 0;grid-gap:0;gap:0}.kv,.kvs{display:grid}.kv{grid-template-columns:96px 1fr;grid-gap:8px;gap:8px;padding:5px 0;border-bottom:1px dashed var(--border-subtle);font-size:12.5px}.kv:last-child{border-bottom:0}.kv dt{color:var(--text-muted)}.kv dd{margin:0;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;min-width:0;overflow-wrap:anywhere}.instances,.issues,.remnants,.stocklist{list-style:none;margin:8px 0 0;padding:0}.instances li button{display:grid;grid-template-columns:34px 72px 1fr;grid-gap:6px;gap:6px;align-items:center;width:100%;min-height:0;height:28px;padding:0 6px;border:0;border-radius:var(--radius-xs);background:transparent;color:var(--text-primary);font:inherit;font-size:12px;text-align:left;cursor:pointer}.instances li button:hover{background:var(--surface-hover)}.stocklist{margin:0 -8px;display:grid;grid-gap:1px;gap:1px}.stocklist button{display:grid;grid-template-columns:28px 1fr 74px;grid-gap:8px;gap:8px;align-items:center;width:100%;min-height:0;padding:6px 8px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--text-primary);font:inherit;text-align:left;cursor:pointer;transition:background var(--t-fast) var(--ease)}.stocklist button:hover{background:var(--surface-hover)}.stocklist button[data-active=true]{background:var(--accent-soft);border-color:color-mix(in srgb,var(--selection) 30%,transparent)}.sl-id{font:700 11px var(--mono);color:var(--text-secondary)}.sl-main{display:grid;min-width:0}.sl-size{font:600 12px var(--mono)}.sl-size,.sl-sub{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sl-sub{font-size:11px;color:var(--text-muted)}.sl-util{display:grid;grid-gap:3px;gap:3px;justify-items:end}.sl-pct{font:600 11.5px var(--mono)}.sl-track{width:100%;height:3px;border-radius:2px;background:var(--surface-sunken);overflow:hidden}.sl-track span{display:block;height:100%;background:var(--text-secondary)}.seq{list-style:none;margin:0 -8px;padding:0;max-height:320px;overflow-y:auto}.seq li{display:grid;grid-template-columns:26px 1fr auto;grid-gap:8px;gap:8px;align-items:center;padding:5px 8px;border-radius:var(--radius-xs);font-size:12px;cursor:default}.seq li:hover,.seq li[data-active=true]{background:var(--blade-soft)}.seq-n{font:700 10.5px var(--mono);color:var(--kerf)}.seq-op{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.seq-len{color:var(--text-secondary);font-size:11.5px}.recon+.recon{margin-top:14px;padding-top:12px;border-top:1px solid var(--border-subtle)}.recon h4{margin:0;font-size:12px;font-weight:650;text-transform:capitalize}.recon-bad,.recon-ok{display:flex;align-items:center;gap:6px;margin:8px 0 0;font-size:12px;font-weight:560}.recon-ok{color:var(--success)}.recon-bad{color:var(--danger)}.remnants li{display:grid;grid-template-columns:16px 1fr auto;grid-gap:8px;gap:8px;align-items:center;padding:4px 0;font-size:12px}.issues{display:grid;grid-gap:6px;gap:6px;margin:0}.issues li{display:grid;grid-template-columns:16px 1fr;grid-gap:8px;gap:8px;padding:8px 10px;border-radius:var(--radius-sm);border:1px solid var(--border-subtle);font-size:12px}.issues li[data-tone=danger]{background:var(--danger-soft);border-color:color-mix(in srgb,var(--danger) 25%,transparent)}.issues li[data-tone=danger]>svg{color:var(--danger)}.issues li[data-tone=warn]{background:var(--warning-soft);border-color:color-mix(in srgb,var(--warning) 25%,transparent)}.issues li[data-tone=warn]>svg{color:var(--warning)}.issues li>svg{margin-top:1px}.issues strong{font-weight:620}.issues p{margin:2px 0 0;color:var(--text-secondary);line-height:1.4}.issues .pre{white-space:pre-line}.issue-fix{color:var(--text-primary)!important}.overlay{position:fixed;inset:0;z-index:50;display:grid;place-items:start center;padding-top:12vh;background:color-mix(in srgb,var(--text-primary) 22%,transparent);animation:fade var(--t) var(--ease)}@keyframes fade{0%{opacity:0}}.palette{width:min(600px,calc(100vw - 32px));border-radius:var(--radius-lg);background:var(--surface-raised);border:1px solid var(--border);box-shadow:var(--shadow-3);overflow:hidden;animation:pop var(--t) var(--ease-out)}.palette-search{display:flex;align-items:center;gap:10px;padding:0 14px;height:50px;border-bottom:1px solid var(--border);color:var(--text-muted)}.palette-search input{border:0;background:transparent;min-height:0;padding:0;font-size:15px;color:var(--text-primary);box-shadow:none!important}.palette-list{list-style:none;margin:0;padding:6px;max-height:min(420px,60vh);overflow-y:auto}.palette-group{padding:10px 10px 4px;font-size:10.5px;font-weight:650;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}.palette-item{display:flex;align-items:center;gap:10px;height:36px;padding:0 10px;border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer}.palette-item[data-active=true]{background:var(--accent-soft);color:var(--text-primary)}.palette-item[aria-disabled=true]{opacity:.45;cursor:not-allowed}.palette-label{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.palette-empty{padding:18px 12px;color:var(--text-muted)}.sheet{width:min(680px,calc(100vw - 32px));max-height:80vh;display:grid;grid-template-rows:auto minmax(0,1fr);border-radius:var(--radius-lg);background:var(--surface-raised);border:1px solid var(--border);box-shadow:var(--shadow-3);overflow:hidden;animation:pop var(--t) var(--ease-out)}.sheet-head{display:flex;align-items:center;justify-content:space-between;padding:12px 12px 12px 18px;border-bottom:1px solid var(--border)}.sheet-head h2{margin:0;font:650 15px var(--font-display)}.sheet-body{padding:16px 18px 20px;overflow-y:auto}.shortcuts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:18px 28px;gap:18px 28px}.shortcuts h3{margin:0 0 8px;font-size:10.5px;font-weight:650;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}.shortcuts dl{margin:0;display:grid;grid-gap:6px;gap:6px}.shortcuts dl div{display:grid;grid-template-columns:100px 1fr;grid-gap:10px;gap:10px;align-items:center;font-size:12.5px}.shortcuts dd{margin:0}.ws-modal-backdrop{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:24px;background:color-mix(in srgb,var(--text-primary) 22%,transparent);animation:fade var(--t) var(--ease)}.ws-modal{width:min(760px,100%);max-height:86vh;display:grid;grid-template-rows:auto minmax(0,1fr);border-radius:var(--radius-lg);background:var(--surface-raised);border:1px solid var(--border);box-shadow:var(--shadow-3);overflow:hidden;animation:pop var(--t) var(--ease-out)}.ws-modal-head{display:flex;align-items:center;gap:10px;padding:12px 14px 12px 18px;border-bottom:1px solid var(--border)}.ws-modal-head h2,.ws-modal-head h3{margin:0;font:650 15px var(--font-display)}.ws-modal-body{padding:16px 18px;overflow:auto}.ws-btn{display:inline-flex;align-items:center;gap:6px;min-height:30px;padding:0 11px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-primary);font:inherit;font-size:12.5px;font-weight:560;cursor:pointer}.ws-btn:hover:not(:disabled){background:var(--surface-hover);border-color:var(--border-strong)}.ws-btn:disabled{opacity:.5;cursor:not-allowed}.ws-btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.ws-btn-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.ws-table{width:100%;font-size:12.5px}.ws-cell-input{min-height:28px;font-size:12.5px}.ws-rowmsg{font-size:11.5px;color:var(--warning)}.ws-warning{padding:8px 10px;border-radius:var(--radius-sm);background:var(--warning-soft);color:var(--warning);font-size:12.5px;margin:8px 0}.pv{height:100dvh;display:grid;grid-template-rows:auto minmax(0,1fr) auto;background:var(--bg);color:var(--text-primary)}.pv-head{display:flex;align-items:center;gap:28px;padding:12px 20px;background:var(--surface);border-bottom:1px solid var(--border)}.pv-k{display:block;font-size:11px;font-weight:650;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}.pv-n{font:700 30px/1 var(--mono);letter-spacing:-.02em}.pv-n small{font:500 15px var(--font);color:var(--text-muted);letter-spacing:0}.pv-what{display:grid}.pv-what strong{font:650 18px var(--font-display)}.pv-what span{font:500 15px var(--mono);color:var(--text-secondary)}.pv-stat span:last-child{font:650 20px var(--mono)}.pv-body{display:grid;grid-template-columns:minmax(0,1fr) 380px;min-height:0}.pv-canvas{position:relative;min-height:0}.pv-steps{display:grid;grid-template-rows:auto minmax(0,1fr);background:var(--surface);border-left:1px solid var(--border);min-height:0}.pv-steps-head{display:flex;justify-content:space-between;align-items:baseline;padding:14px 18px 10px;font-weight:650;font-size:14px;border-bottom:1px solid var(--border-subtle)}.pv-steps-head small{font-weight:400}.pv-steps ol{list-style:none;margin:0;padding:8px;overflow-y:auto}.pv-steps li{display:grid;grid-template-columns:38px 1fr auto;grid-gap:12px;gap:12px;align-items:center;padding:10px;border-radius:var(--radius);cursor:pointer;border:1px solid transparent}.pv-steps li:hover{background:var(--surface-hover)}.pv-steps li[data-active=true]{background:var(--blade-soft);border-color:color-mix(in srgb,var(--kerf) 40%,transparent)}.pv-steps li[data-done=true]{color:var(--text-muted)}.pv-step-n{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;border:1.5px solid var(--kerf);color:var(--kerf);font:700 13px var(--mono)}li[data-done=true] .pv-step-n{background:var(--success);border-color:var(--success);color:var(--surface)}.pv-step-main{display:grid;min-width:0}.pv-step-title{font-size:16px;font-weight:620}.pv-step-detail{font-size:13px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pv-step-measure{font:650 16px var(--mono)}.pv-foot{display:flex;align-items:center;gap:10px;padding:12px 20px;background:var(--surface);border-top:1px solid var(--border)}.pv-now{flex:1 1;display:flex;align-items:baseline;gap:14px;padding:0 14px;min-width:0}.pv-now-title{font:650 22px var(--font-display);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pv-now-measure{font:650 22px var(--mono);color:var(--kerf)}.cv[data-mode=production] .cv-piece-name{font-weight:650}.print-plan{display:none}@media print{@page{size:letter landscape;margin:10mm}:root{color-scheme:light}body{background:#fff}.overlay,.pv,.ws,nextjs-portal{display:none!important}.print-plan{display:block;color:#000;font:10pt/1.35 var(--font)}.pp-page{page-break-after:always;break-after:page}.pp-page:last-child{page-break-after:auto;break-after:auto}.pp-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;padding-bottom:8px;margin-bottom:12px;border-bottom:2px solid #000}.pp-brand{font-size:9pt;letter-spacing:.06em;text-transform:uppercase;color:#444}.pp-head h1{margin:2px 0 0;font-size:20pt}.pp-meta{display:grid;grid-template-columns:repeat(4,auto);grid-gap:4px 18px;gap:4px 18px;margin:0}.pp-meta dt{font-size:8pt;text-transform:uppercase;letter-spacing:.05em;color:#555}.pp-meta dd{margin:0;font-weight:600}.print-plan h2{font-size:13pt;margin:14px 0 6px}.pp-table{width:100%;border-collapse:collapse;font-size:9pt;margin:0 0 8px}.pp-table td,.pp-table th{border:1px solid #999;padding:3px 6px;text-align:left;background:#fff;color:#000}.pp-table th{background:#eee;font-size:8pt;text-transform:uppercase;letter-spacing:.04em}.pp-table tr{page-break-inside:avoid;break-inside:avoid}.pp-mono{font-family:var(--mono)}.pp-check{width:40px}.pp-stock-head{display:flex;align-items:baseline;gap:18px;padding-bottom:6px;margin-bottom:8px;border-bottom:2px solid #000}.pp-stock-head h2{margin:0;font-size:16pt}.pp-stock-head small{font-size:10pt;font-weight:400;color:#555}.pp-svg{display:block;width:100%;max-height:120mm}.pp-note{margin:2px 0 6px;font-size:8.5pt;color:#444}.pp-columns{display:grid;grid-template-columns:1fr 1fr;align-items:start;grid-gap:12px;gap:12px;margin-top:8px}.pp-stock{fill:#fff;stroke:none}.pp-hatch{stroke:#bbb;stroke-width:1}.pp-edge{fill:none;stroke:#000;stroke-width:1.5}.pp-piece{fill:#eef1f6;stroke:#000;stroke-width:.8}.pp-remnant{fill:#e6f4ec;stroke:#2e8a5c;stroke-width:.8;stroke-dasharray:5 3}.pp-kerf{fill:#000}.pp-code,.pp-dims,.pp-drop,.pp-overall,.pp-pos{text-anchor:middle;dominant-baseline:central;fill:#000}.pp-code{font:700 12px var(--font)}.pp-dims{font:500 10px var(--mono)}.pp-drop{font:600 11px var(--mono);fill:#333}.pp-pos{font:500 10px var(--mono);text-anchor:end;fill:#444}.pp-overall{font:600 11px var(--mono)}}@media (prefers-reduced-motion:reduce){.overlay *,.pv *,.ws *{animation:none!important}}.menu{position:relative}.menu-panel{position:absolute;right:0;top:calc(100% + 6px);z-index:20;width:270px;padding:5px;border-radius:var(--radius-md);background:var(--surface-raised);border:1px solid var(--border);box-shadow:var(--shadow-3);animation:pop var(--t) var(--ease-out)}.menu-group{padding:8px 9px 4px;font-size:10.5px;font-weight:650;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}.menu-panel a,.menu-panel button{display:grid;grid-template-columns:18px 1fr;grid-column-gap:9px;column-gap:9px;align-items:center;width:100%;min-height:0;padding:7px 9px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-primary);font:inherit;font-size:13px;font-weight:540;text-align:left;text-decoration:none;cursor:pointer}.menu-panel a:focus-visible,.menu-panel a:hover,.menu-panel button:focus-visible,.menu-panel button:hover{background:var(--surface-hover)}.menu-panel small{grid-column:2;color:var(--text-muted);font-size:11.5px;font-weight:400}.menu-panel svg{color:var(--text-secondary)}.tb-saved{color:var(--text-muted);font-size:11.5px;white-space:nowrap;transition:opacity var(--t) var(--ease)}.tb-saved[data-state=idle]{opacity:0}.tb-saved[data-state=unavailable]{color:var(--warning)}@media (max-width:1180px){.tb-saved{display:none}}@media (max-width:640px){.tb{gap:2px;padding:0 6px}.tb [aria-label="Keyboard shortcuts"],.tb [aria-label="Print cutting plan"],.tb [aria-label="Production view"],.tb-command,.tb-divider,.tb-job-meta,.tb-saved{display:none}.tb-job-name{max-width:11ch;font-size:13px}.tb-status{margin-left:2px;padding:0 7px;font-size:11px}.tb-optimize{min-width:0;padding:0 10px}.ct{overflow-x:auto;scrollbar-width:none;gap:6px}.ct-find,.ct-sep,.ct-spacer{display:none}.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.kpi{padding:6px 10px;border-bottom:1px solid var(--border-subtle);min-width:0;overflow:hidden}.kpi-wide{grid-column:1/-1}.kpi-v,.util-v{font-size:16px}.kpi-v-sm{font-size:13px}.kpi-sub,.sb-cell:not(.sb-readout){display:none}}.ws{--rail:540px}.grid-parts .c-code{width:34px}.grid-parts .c-num{width:62px}.grid-parts .c-code{width:30px}.grid-parts .c-qty{width:36px}.grid-parts .c-mat{width:64px}.c-on{width:28px;text-align:center}.c-grain{width:52px}.c-grain select.cell{font-family:var(--mono);font-size:12px}.grid tbody tr[data-enabled=false] td:not(.c-on):not(.c-del){opacity:.42}.grid tbody tr[data-state=disabled]{box-shadow:inset 2px 0 0 var(--border-strong)}.rowmsg-row td{height:auto;border-bottom:1px solid var(--border-subtle);padding-top:0}.grid tbody tr:has(+.rowmsg-row) td{border-bottom:0}.rowmsg-row .rowmsg{padding:0 6px 6px}@media (max-width:1180px){.ws{--rail:460px}}.btn-xs{min-height:24px;padding:0 8px;font-size:12px}.rp-tools{flex-wrap:wrap;gap:6px}.rp-tools .field-search{flex:1 1 140px}.grid tbody tr[data-enabled=false] td:not(.c-on):not(.c-del):not(.c-sel){opacity:.6}.grid tbody tr[data-enabled=false] td{background:var(--surface-sunken)}.c-sel{width:24px;text-align:center}.c-on input,.c-sel input{width:15px;height:15px;accent-color:var(--accent);cursor:pointer}.grid-parts .c-grain{width:104px}.grid-parts .c-grain select.cell{font-family:inherit;font-size:12px}.c-edge{width:40px}.bulk{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin:0 10px 8px;padding:6px 6px 6px 10px;border-radius:var(--radius-md);background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 30%,transparent);animation:pop var(--t) var(--ease-out)}.bulk-count{font-weight:650;margin-right:4px;color:var(--accent)}.bulk-menu{height:24px;max-width:128px;padding:0 6px;font-size:12px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text-primary)}.bulk-danger{color:var(--danger)}.bulk-close{margin-left:auto}.row-save{display:grid;place-items:center;width:24px;height:24px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);opacity:0;cursor:pointer}.materials li:hover .row-save,.row-save:focus-visible{opacity:1}.row-save:hover{color:var(--accent);background:var(--surface-hover)}@media (hover:none){.row-save{opacity:1}}.eb{position:relative}.eb-cell{display:grid;place-items:center;width:34px;height:26px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;cursor:pointer}.eb-cell:hover,.eb-cell[aria-expanded=true]{border-color:var(--border);background:var(--surface)}.eb-cell:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.eb-cell:disabled{cursor:default;opacity:.35}.eb-glyph-body{fill:var(--surface);stroke:var(--border-strong);stroke-width:1}.eb-glyph-edge{stroke:transparent;stroke-width:3;stroke-linecap:round}.eb-glyph-edge[data-on=true]{stroke:var(--band)}.eb-pop{position:absolute;right:0;top:calc(100% + 4px);z-index:30;width:252px;padding:12px;border-radius:var(--radius-md);background:var(--surface-raised);border:1px solid var(--border);box-shadow:var(--shadow-3);animation:pop var(--t) var(--ease-out)}.eb-pop-head{display:flex;justify-content:space-between;gap:8px;margin-bottom:10px;font-size:12px}.eb-diagram{position:relative;padding:16px 0 6px 18px}.eb-dim{position:absolute;font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted)}.eb-dim-w{top:0;left:50%;transform:translateX(-50%)}.eb-dim-l{left:0;top:50%;transform:translate(-30%,-50%) rotate(-90deg)}.eb-panel{display:grid;grid-template-columns:14px 1fr 14px;grid-template-rows:14px 72px 14px;grid-template-areas:". top ." "left face right" ". bottom ."}.eb-panel-face{grid-area:face;display:grid;place-items:center;padding:4px;overflow:hidden;font-size:11px;color:var(--text-secondary);text-align:center;background:var(--piece-0);border:1px solid var(--piece-edge)}.eb-edge{border:0;padding:0;border-radius:3px;background:var(--surface-sunken);cursor:pointer}.eb-edge-top{grid-area:top;margin:0 0 3px}.eb-edge-bottom{grid-area:bottom;margin:3px 0 0}.eb-edge-left{grid-area:left;margin:0 3px 0 0}.eb-edge-right{grid-area:right;margin:0 0 0 3px}.eb-edge:hover{background:color-mix(in srgb,var(--band) 30%,var(--surface-sunken))}.eb-edge[aria-pressed=true]{background:var(--band)}.eb-edge:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.eb-presets{display:grid;grid-template-columns:1fr 1fr;grid-gap:4px;gap:4px;margin-top:10px}.eb-presets button{min-height:26px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-primary);font-size:12px;cursor:pointer}.eb-presets button[data-active=true]{border-color:var(--band);color:var(--band);font-weight:600}.eb-note{margin:10px 0 0;font-size:11px;line-height:1.45;color:var(--text-muted)}.clear{position:relative}.clear-pop{position:absolute;right:0;top:calc(100% + 6px);z-index:30;width:200px;padding:10px 12px;border-radius:var(--radius-md);background:var(--surface-raised);border:1px solid var(--border);box-shadow:var(--shadow-3);animation:pop var(--t) var(--ease-out)}.clear-pop p{margin:0 0 10px;font-weight:600}.clear-actions{display:flex;justify-content:flex-end;gap:6px}.ws-toast{position:fixed;left:50%;bottom:44px;z-index:60;transform:translateX(-50%);display:flex;align-items:center;gap:10px;max-width:min(640px,calc(100vw - 32px));padding:8px 8px 8px 14px;border-radius:var(--radius-md);background:var(--text-primary);color:var(--surface);box-shadow:var(--shadow-3);font-size:13px;animation:pop var(--t) var(--ease-out)}.ws-toast[data-tone=error]{background:var(--danger);color:#fff}.ws-toast-undo{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border:0;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--surface) 18%,transparent);color:inherit;font-weight:650;cursor:pointer}.ws-toast-close{display:grid;place-items:center;width:24px;height:24px;border:0;border-radius:var(--radius-sm);background:transparent;color:inherit;opacity:.7;cursor:pointer}.tb-optimize-count{min-width:20px;padding:0 6px;border-radius:999px;background:color-mix(in srgb,var(--accent-ink) 22%,transparent);font-size:11.5px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;line-height:18px;text-align:center}.setting-head{display:flex;align-items:center;gap:6px}.info-btn{display:grid;place-items:center;width:20px;height:20px;border:0;border-radius:999px;background:transparent;color:var(--text-muted);cursor:pointer}.info-btn:hover,.info-btn[aria-expanded=true]{color:var(--accent);background:var(--accent-soft)}.setting-effort,.setting-explain{margin:6px 0 0;font-size:12px;line-height:1.5;color:var(--text-secondary)}.seg-effort button{display:grid;grid-gap:1px;gap:1px;padding:5px 4px;line-height:1.15}.seg-effort button small{font-size:10.5px;font-weight:450;color:var(--text-muted)}.seg-effort button[data-active=true] small{color:inherit;opacity:.8}.setting-details{margin-top:6px;font-size:12px}.setting-details summary{cursor:pointer;color:var(--text-muted)}.setting-details dl{display:grid;grid-template-columns:auto 1fr;grid-gap:4px 10px;gap:4px 10px;margin:8px 0 0}.setting-details dt{color:var(--text-muted)}.setting-details dd{margin:0}.sl-modal{width:min(460px,100%)}.sl-modal[data-wide=true]{width:min(600px,100%)}.sl-form,.sl-load{display:grid;grid-gap:12px;gap:12px}.sl-field{display:grid;grid-gap:5px;gap:5px;font-weight:600}.sl-field input{height:34px;padding:0 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-primary);font:inherit;font-weight:400}.sl-field input:focus-visible{outline:2px solid var(--accent);border-color:var(--accent)}.sl-note{margin:0;font-size:12px}.sl-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}.sl-manage{margin-right:auto}.sl-search{width:100%}.sl-lists{max-height:46vh;overflow:auto}.sl-group{margin:4px 0;font-size:10.5px;font-weight:650;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}.sl-rows{list-style:none;margin:0 0 8px;padding:0}.sl-row,.sl-rows{display:grid;grid-gap:2px;gap:2px}.sl-row{width:100%;padding:8px 10px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--text-primary);text-align:left;cursor:pointer}.sl-row:hover{background:var(--surface-hover)}.sl-row[data-chosen=true]{border-color:var(--accent);background:var(--accent-soft)}.sl-row-name{font-weight:600}.sl-row-meta{font-size:12px;color:var(--text-muted)}.sl-empty{display:grid;justify-items:center;grid-gap:8px;gap:8px;padding:18px 8px;text-align:center;color:var(--text-secondary)}.sl-empty p{margin:0;max-width:34ch}.sl-mode{display:flex;flex-wrap:wrap;gap:6px 16px;margin:0;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm)}.sl-mode legend{padding:0 4px;font-size:12px;color:var(--text-muted)}.sl-check,.sl-mode label{display:inline-flex;align-items:center;gap:6px;font-size:13px}.sl-loading{margin:0}@media (max-width:640px){.bulk-menu{max-width:none;flex:1 1 40%}.eb-cell{width:40px;height:32px}.c-on input,.c-sel input{width:18px;height:18px}}@media print{.pp-band line{stroke:#000;stroke-width:2.4;stroke-linecap:round}.print-plan h2 small{font-weight:400;font-size:11px}}.bulk .icon-btn,.eb-cell,.eb-edge,.info-btn,.row-save,.ws-toast-close,.ws-toast-undo{min-height:0}.floating{z-index:80;font-size:13px;color:var(--text-primary)}.grid-parts .c-grain{width:88px}.band-props{flex-wrap:nowrap}.band-price[aria-invalid=true]{border-color:var(--danger,#c0392b)}.eb-material{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:12px}.eb-material select{flex:1 1;min-width:0}.pp-band-line{display:block;font-size:.92em}.band-props input.cell{flex:1 1;min-width:0}.ws-rail{container:rail/inline-size}@media (max-width:1180px){.ws{--rail:400px}}@container rail (max-width: 500px){.grid-parts thead{position:absolute;width:1px;height:1px;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%)}.grid-parts tbody,table.grid.grid-parts{display:block;width:100%}.grid-parts tbody tr:not(.rowmsg-row){display:grid;grid-template-columns:24px 34px repeat(4,minmax(0,1fr)) 28px;grid-template-areas:"sel code desc desc desc desc del" "len len  len  wid  wid  qty  qty" "mat mat  mat  grain grain on edge";grid-gap:4px 6px;gap:4px 6px;padding:8px 6px;border-bottom:1px solid var(--border);align-items:end}.grid-parts tbody td{display:block;width:auto;height:auto;border:0;padding:0;min-width:0}.grid-parts td[data-cell=sel]{grid-area:sel;align-self:center}.grid-parts td[data-cell=code]{grid-area:code;align-self:center}.grid-parts td[data-cell=desc]{grid-area:desc}.grid-parts td[data-cell=del]{grid-area:del;align-self:center}.grid-parts td[data-cell=len]{grid-area:len}.grid-parts td[data-cell=wid]{grid-area:wid}.grid-parts td[data-cell=qty]{grid-area:qty}.grid-parts td[data-cell=mat]{grid-area:mat}.grid-parts td[data-cell=grain]{grid-area:grain}.grid-parts td[data-cell=on]{grid-area:on;text-align:center}.grid-parts td[data-cell=edge]{grid-area:edge}.grid-parts td[data-label]:before{content:attr(data-label);display:block;margin-bottom:2px;font-size:10.5px;font-weight:600;letter-spacing:.02em;color:var(--text-tertiary,var(--text-secondary))}.grid-parts td[data-cell] .cell,.grid-parts td[data-cell] select{width:100%;max-width:none}.grid-parts td[data-cell=del] .row-del{opacity:1}.grid-parts .rowmsg-row,.grid-parts .rowmsg-row td{display:block}.grid-parts .rowmsg-row td:first-child{display:none}}.setting-offcuts{margin:10px 0 0;padding:0;border:0}.setting-offcuts>legend{grid-column:1/-1;padding:0;margin-bottom:4px;font-size:12px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--text-secondary)}