@import "https://fonts.googleapis.com/css2?family=Geist:wght@100..900&display=swap";@import "https://fonts.googleapis.com/css2?family=Geist+Mono:wght@100..900&display=swap";.btn{border-radius:var(--radius-sm);white-space:nowrap;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;gap:8px;height:36px;padding:0 16px;font-size:13px;font-weight:500;transition:background .14s,border-color .14s,color .14s,opacity .14s;display:inline-flex}.btn:disabled{opacity:.5;pointer-events:none}.btn-lg{border-radius:var(--radius-sm);height:44px;padding:0 22px;font-size:14px}.btn-sm{height:32px;padding:0 12px;font-size:12px}.btn-primary{background:var(--primary);color:var(--on-primary);box-shadow:var(--shadow-sm)}.btn-primary:hover{background:var(--primary-hover)}.btn-primary:active{background:var(--primary-active)}.btn-secondary{background:var(--surface);color:var(--text-primary);border:1px solid var(--border)}.btn-secondary:hover{background:var(--surface-hover);border-color:var(--border-strong)}.btn-ghost{color:var(--primary);background:0 0;padding:0 10px}.btn-ghost:hover{background:var(--primary-tint)}.btn-danger{background:var(--error);color:#fff}.btn-danger:hover{background:var(--error-text)}.input{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;height:36px;color:var(--text-primary);padding:0 12px;font-size:14px;transition:border-color .14s,box-shadow .14s}.input::placeholder{color:var(--text-tertiary)}.input:focus{border-color:var(--primary);box-shadow:var(--focus-ring);outline:none}.input-with-icon{position:relative}.input-with-icon .input{padding-left:36px}.input-with-icon svg{color:var(--text-tertiary);pointer-events:none;position:absolute;top:50%;left:11px;transform:translateY(-50%)}.card{background:var(--surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);box-shadow:var(--shadow-card)}.pill{border-radius:var(--radius-full);letter-spacing:.01em;white-space:nowrap;border:1px solid #0000;align-items:center;gap:6px;height:22px;padding:0 9px 0 7px;font-size:11px;font-weight:600;display:inline-flex}.pill svg{width:13px;height:13px}.pill-matched{background:var(--success-tint);color:var(--success-text);border-color:var(--success-border)}.pill-flagged{background:var(--warning-tint);color:var(--warning-text);border-color:var(--warning-border)}.pill-unmatched{background:var(--error-tint);color:var(--error-text);border-color:var(--error-border)}.pill-neutral{background:var(--neutral-tint);color:var(--text-secondary);border-color:var(--neutral-border)}.spinner{border:2px solid;border-top-color:#0000;border-radius:50%;width:16px;height:16px;animation:.6s linear infinite spin;display:inline-block}.overlay{background:var(--scrim);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:100;justify-content:center;align-items:center;padding:24px;animation:.16s fade;display:flex;position:fixed;inset:0}@keyframes fade{0%{opacity:0}}.modal{background:var(--surface);border-radius:var(--radius-lg);width:100%;max-width:440px;box-shadow:var(--shadow-modal);padding:24px;animation:.18s cubic-bezier(.22,1,.36,1) pop}@keyframes pop{0%{opacity:0;transform:translateY(8px)scale(.98)}}.drawer-overlay{background:var(--scrim);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:100;animation:.16s fade;position:fixed;inset:0}.drawer{background:var(--surface);width:440px;max-width:92vw;box-shadow:var(--shadow-modal);z-index:101;flex-direction:column;animation:.24s cubic-bezier(.22,1,.36,1) slidein;display:flex;position:fixed;top:0;bottom:0;right:0}@keyframes slidein{0%{transform:translate(100%)}}.toaster{z-index:200;flex-direction:column;gap:10px;display:flex;position:fixed;bottom:24px;right:24px}.toast{background:var(--chrome-bg);min-width:280px;max-width:400px;color:var(--chrome-text);border-radius:var(--radius-md);box-shadow:var(--shadow-popover);align-items:flex-start;gap:10px;padding:12px 14px;font-size:13px;animation:.22s cubic-bezier(.22,1,.36,1) toastin;display:flex}@keyframes toastin{0%{opacity:0;transform:translateY(10px)}}.toast-success svg{color:#6ee7a0}.toast-error svg{color:#ff9a92}.toast-info svg{color:#d8d1c6}.conic-spinner{background:conic-gradient(from 0deg, #2b2a2800, var(--primary));border-radius:50%;flex-shrink:0;width:18px;height:18px;animation:.8s linear infinite spin;-webkit-mask:radial-gradient(farthest-side,#0000 calc(100% - 2.5px),#000 0);mask:radial-gradient(farthest-side,#0000 calc(100% - 2.5px),#000 0)}.page{padding:32px 40px 64px}.page-wide{max-width:1240px}.page-narrow{max-width:760px}.page-head{justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:22px;display:flex}.page-head .sub{color:var(--text-secondary);margin-top:4px;font-size:13px}.save-status{color:var(--text-tertiary);white-space:nowrap;align-items:center;gap:6px;font-size:12px;display:inline-flex}.save-status .dot{background:var(--success);border-radius:50%;width:6px;height:6px}.pt-toolbar{border-bottom:1px solid var(--border-subtle);align-items:center;gap:10px;padding:16px 20px;display:flex}.pt-count{color:var(--text-tertiary);white-space:nowrap;margin-left:auto;font-size:12px}.pt-count b{color:var(--text-secondary);font-weight:600}.pt-hrow,.pt-row{grid-template-columns:150px 132px 1fr 132px 96px 138px 24px;align-items:center;gap:8px;display:grid}.pt-hrow{border-bottom:1px solid var(--border-subtle);background:var(--surface);z-index:2;padding:9px 20px;position:sticky;top:0}.pt-hc{letter-spacing:.12em;text-transform:uppercase;color:var(--text-disabled);font-size:11px;font-weight:600}.pt-hc.r{text-align:right}.pt-row{border-bottom:1px solid var(--border-subtle);cursor:pointer;padding:11px 20px;transition:background .12s}.pt-row:hover{background:var(--row-hover)}.pt-row.needs{background:#fcfaf6}.pt-row.needs:hover{background:#f7f2ea}.pt-st{align-items:center;gap:8px;font-size:12px;font-weight:500;display:flex}.pt-st .dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.pt-st.ok{color:var(--success-text)}.pt-st.ok .dot{background:var(--success)}.pt-st.nd{color:var(--warning-text)}.pt-st.nd .dot{background:var(--warning)}.pt-sku{font-family:var(--font-mono);color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.pt-name{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:500;overflow:hidden}.pt-cat{color:var(--text-tertiary);margin-top:2px;font-size:12px}.pt-mk{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.pt-fob{font-family:var(--font-mono);text-align:right;font-variant-numeric:tabular-nums;font-size:13px}.pt-mg{flex-direction:column;align-items:flex-end;gap:5px;display:flex}.pt-mgv{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:13px}.pt-mgv.warn{color:var(--warning-text)}.pt-mgv.neg{color:var(--error-text)}.mini-meter{background:var(--surface-sunken);border-radius:2px;width:80px;height:3px;overflow:hidden}.mini-meter i{background:var(--primary);height:100%;display:block}.mini-meter i.warn{background:var(--warning)}.mini-meter i.neg{background:var(--error)}.dash{color:var(--text-disabled)}.pt-chev{color:var(--text-disabled);text-align:right}.chip{border:1px solid var(--border);border-radius:var(--radius-sm);height:32px;color:var(--text-secondary);background:var(--surface);cursor:pointer;white-space:nowrap;align-items:center;gap:6px;padding:0 12px;font-size:12px;font-weight:500;display:inline-flex}.chip:hover{border-color:var(--border-strong)}.chip .cv{color:var(--text-tertiary)}.chip.active{border-color:var(--border-strong);background:var(--surface-hover)}.menu-item{border-radius:var(--radius-xs);cursor:pointer;align-items:center;gap:8px;padding:8px 10px;font-size:13px;display:flex}.menu-item:hover{background:var(--row-hover)}.menu-item.sel{color:var(--text-primary);font-weight:500}.empty{text-align:center;color:var(--text-tertiary);flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:72px 24px;display:flex}.empty .ic{border-radius:var(--radius-md);background:var(--surface-sunken);width:48px;height:48px;color:var(--text-tertiary);place-items:center;display:grid}.wb{flex-direction:column;gap:18px;display:flex}.wb-back{color:var(--text-secondary);align-items:center;gap:6px;margin-bottom:4px;font-size:13px;display:inline-flex}.wb-back:hover{color:var(--text-primary)}.wb-card{background:var(--surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-card)}.wb-top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.wb-prod{align-items:center;gap:12px;display:flex}.wb-thumb{border-radius:var(--radius-sm);background:var(--surface-sunken);width:44px;height:44px;color:var(--text-disabled);flex-shrink:0;place-items:center;display:grid}.wb-sku{font-family:var(--font-mono);color:var(--text-tertiary);font-size:12px}.wb-pname{letter-spacing:-.01em;margin-top:1px;font-size:17px;font-weight:600}.seg{background:var(--surface-sunken);border-radius:var(--radius-full);padding:3px;display:inline-flex}.seg button{border-radius:var(--radius-full);color:var(--text-secondary);padding:6px 13px;font-size:12px;font-weight:500}.seg button.on{background:var(--surface);color:var(--text-primary);box-shadow:var(--shadow-sm)}.wb-band{padding:22px 26px 24px}.wb-band-head{justify-content:space-between;align-items:baseline;margin-bottom:18px;display:flex}.wb-groups{grid-template-columns:repeat(3,minmax(0,1fr));gap:0;display:grid}.wb-grp{border-left:1px solid var(--border-subtle);min-width:0;padding:0 24px}.wb-grp:first-child{border-left:none;padding-left:0}.wb-gname{letter-spacing:.13em;text-transform:uppercase;color:var(--text-disabled);margin-bottom:14px;font-size:11px;font-weight:600}.wb-f{min-width:0;margin-bottom:14px}.wb-f:last-child{margin-bottom:0}.wb-lab{color:var(--text-secondary);margin-bottom:6px;font-size:12px;font-weight:500}.wb-inp{border:1px solid var(--border);border-radius:var(--radius-sm);height:36px;font-family:var(--font-mono);font-variant-numeric:tabular-nums;background:var(--surface);align-items:center;gap:8px;min-width:0;padding:0 12px;font-size:14px;display:flex}.wb-inp input{min-width:0;font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--text-primary);background:0 0;border:none;outline:none;flex:1;font-size:14px}.wb-inp .u{color:var(--text-disabled);white-space:nowrap;font-size:12px}.wb-inp:focus-within{border-color:var(--primary);box-shadow:var(--focus-ring)}.wb-inp.need{border-color:var(--warning-border);background:var(--warning-tint)}.wb-inp.need input::placeholder{color:var(--warning-text);opacity:1}.wb-needmsg{color:var(--warning-text);margin-top:6px;font-size:11px}.wb-inp.derived{background:var(--canvas);border-style:dashed;justify-content:space-between}.wb-dtag{letter-spacing:.12em;color:var(--text-tertiary);border:1px solid var(--border);border-radius:4px;padding:1px 5px;font-size:9px;font-weight:600}.wb-seg2{background:var(--surface-sunken);border-radius:var(--radius-sm);height:36px;padding:3px;display:flex}.wb-seg2 button{color:var(--text-secondary);border-radius:6px;flex:1;justify-content:center;align-items:center;font-size:12px;font-weight:500;display:flex}.wb-seg2 button.on{background:var(--surface);color:var(--text-primary);box-shadow:var(--shadow-sm)}.wb-grid-wrap{padding:22px 26px 26px;overflow-x:auto}.wb-grid{grid-template-columns:190px repeat(4,minmax(150px,1fr));min-width:760px;display:grid}.wb-g{align-items:center;display:flex}.wb-ch{border-left:1px solid var(--border-subtle);text-align:right;padding:0 16px 14px}.wb-chname{letter-spacing:.11em;text-transform:uppercase;font-size:11px;font-weight:600}.wb-cur{font-family:var(--font-mono);color:var(--text-disabled);margin-top:4px;font-size:11px}.wb-chcap{color:var(--text-tertiary);margin-top:4px;font-size:10.5px;font-style:italic}.wb-rule{border-top:1px solid var(--border-subtle);grid-column:1/-1}.wb-rule.s{border-top:1.5px solid var(--border)}.wb-cell{text-align:right;border-left:1px solid var(--border-subtle);font-family:var(--font-mono);font-variant-numeric:tabular-nums}.wb-mlab{padding:16px 0 8px;font-size:13px;font-weight:600}.wb-mcell{padding:16px 16px 10px}.wb-margin{letter-spacing:-.01em;font-size:30px;font-weight:500;line-height:1}.wb-meter{background:var(--surface-sunken);border-radius:2px;height:4px;margin-top:11px;position:relative;overflow:hidden}.wb-meter i{background:var(--primary);border-radius:2px;height:100%;display:block}.wb-meter .tick{background:var(--border-strong);width:1px;height:8px;position:absolute;top:-2px}.wb-warn .wb-margin{color:var(--warning-text)}.wb-warn .wb-meter i{background:var(--warning)}.wb-neg .wb-margin{color:var(--error-text)}.wb-neg .wb-meter i{background:var(--error)}.wb-floor{font-family:var(--font-sans);color:var(--warning-text);justify-content:flex-end;align-items:center;gap:4px;margin-top:7px;font-size:11px;display:inline-flex}.wb-floor.neg{color:var(--error-text)}.wb-slab{color:var(--text-tertiary);padding:0 0 14px;font-size:12px}.wb-scell{font-family:var(--font-sans);color:var(--text-secondary);border-left:1px solid var(--border-subtle);text-align:right;padding:0 16px 14px;font-size:13px}.wb-plab{color:var(--text-secondary);padding:13px 0;font-size:13px;font-weight:500}.wb-pcell{padding:13px 16px;font-size:15px;font-weight:500}.wb-llab{padding:13px 0;font-size:13px;font-weight:600}.wb-lcell{padding:13px 16px;font-size:15px;font-weight:600}.wb-field{border:1px solid var(--primary);border-radius:var(--radius-sm);box-shadow:var(--focus-ring);justify-content:flex-end;align-items:center;gap:2px;min-width:88px;padding:5px 8px;display:inline-flex}.wb-field input{text-align:right;width:100%;font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--text-primary);background:0 0;border:none;outline:none}.wb-mcell .wb-field input{font-size:24px;font-weight:500}.wb-suggest{background:var(--canvas);border-radius:var(--radius-sm);min-width:100px;padding:8px 12px 10px;display:inline-block}.wb-suggest .ov{letter-spacing:.16em;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:3px;font-size:10px;font-weight:600}.wb-suggest .val{font-size:20px;font-weight:500;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.wb-bkhead{grid-column:1/-1;align-items:center;gap:10px;padding:16px 0 2px;display:flex}.wb-bkhead button{color:var(--text-secondary);border:1px solid var(--border);border-radius:var(--radius-xs);background:0 0;margin-left:auto;padding:4px 11px;font-size:12px}.wb-bkhead button:hover{border-color:var(--border-strong)}.wb-bklab{color:var(--text-tertiary);padding:7px 0;font-size:12px}.wb-bkcell{color:var(--text-secondary);text-align:right;border-left:1px solid var(--border-subtle);font-size:12px;font-family:var(--font-mono);font-variant-numeric:tabular-nums;padding:7px 16px}.wb-bkcell.na{color:var(--text-disabled)}.wb-collapsed .bk{display:none}.wb-need{font-family:var(--font-sans);color:var(--warning-text);font-size:12px}.apply-all{color:var(--text-secondary);text-underline-offset:2px;margin-top:6px;font-size:11px;text-decoration:underline;display:inline-block}@keyframes wbpulse{0%,55%{background:var(--row-selected)}to{background:0 0}}.wb-pulse{animation:.55s ease-out wbpulse}.mf-grid{grid-template-columns:repeat(2,1fr);align-items:start;gap:18px;display:grid}.mf-card{background:var(--surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:24px}.mf-name{font-size:16px;font-weight:600}.mf-count{color:var(--text-tertiary);margin-top:2px;font-size:12px}.mf-def{margin-top:18px}.mf-def+.mf-def{margin-top:16px}.mf-ov{letter-spacing:.13em;text-transform:uppercase;color:var(--text-disabled);margin-bottom:7px;font-size:11px;font-weight:600}.mf-foot{color:var(--text-tertiary);border-top:1px solid var(--border-subtle);margin-top:20px;padding-top:14px;font-size:12px}.as-sec{padding:20px 24px 6px}.as-rate{border-top:1px solid var(--border-subtle);justify-content:space-between;align-items:center;gap:16px;padding:14px 24px;display:flex}.as-rn{align-items:center;gap:10px;min-width:0;display:flex}.as-dirty{background:var(--warning);border-radius:50%;flex-shrink:0;width:7px;height:7px}.as-spacer{flex-shrink:0;width:7px}.as-rlab{font-size:14px;font-weight:500}.as-meta{color:var(--text-tertiary);margin-top:2px;font-size:12px}.as-rv{font-family:var(--font-mono);font-variant-numeric:tabular-nums;align-items:center;gap:10px;display:flex}.as-old{color:var(--text-disabled);font-size:13px;text-decoration:line-through}.as-arw{color:var(--text-disabled)}.as-val{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);align-items:center;gap:4px;min-width:96px;height:36px;padding:0 10px;display:flex}.as-val input{text-align:right;width:100%;font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--text-primary);background:0 0;border:none;outline:none;font-size:14px}.as-val .u{color:var(--text-disabled);font-size:12px}.as-val.dirty{border-color:var(--primary);box-shadow:var(--focus-ring)}.as-footbar{background:var(--warning-tint);border-top:1px solid var(--warning-border);border-radius:0 0 var(--radius-md) var(--radius-md);align-items:center;gap:16px;padding:14px 24px;display:flex;position:sticky;bottom:0}.as-fmsg{color:var(--warning-text);font-size:13px}.as-fmsg b{font-weight:600}.as-acts{gap:10px;margin-left:auto;display:flex}:root{--canvas:#f5f3ef;--surface:#fff;--surface-sunken:#ede8e0;--surface-hover:#f3f0ea;--border-subtle:#ece7df;--border:#dfd9cf;--border-strong:#ccc4b8;--text-primary:#2b2a28;--text-secondary:#645d53;--text-tertiary:#8c857a;--text-disabled:#b8b1a6;--primary:#2b2a28;--primary-hover:#201f1d;--primary-active:#141312;--primary-fg:#faf9f7;--on-primary:#faf9f7;--primary-tint:#efeae1;--primary-tint-hover:#e8e1d6;--primary-ring:#2b2a282e;--row-hover:#f3f0ea;--row-selected:#efeae1;--chrome-bg:#1c1a17;--chrome-surface:#2a2723;--chrome-surface-hover:#ffffff0a;--chrome-border:#302c27;--chrome-text:#f5f2ec;--chrome-text-mute:#a49c90;--chrome-icon-mute:#837b70;--success:#2e7d46;--success-text:#1e6338;--success-tint:#e8f2e7;--success-border:#c6dfc5;--warning:#be7a12;--warning-text:#855410;--warning-tint:#f8efd6;--warning-border:#ecd5a0;--error:#c4362e;--error-text:#a32a24;--error-tint:#fbe8e4;--error-border:#f0c5bd;--neutral:#6e685f;--neutral-tint:#eeeae2;--neutral-border:#dbd4c9;--shadow-sm:0 1px 2px #2d261e0f;--shadow-card:0 1px 2px #2d261e0d, 0 1px 3px #2d261e12;--shadow-popover:0 8px 24px #261f181a, 0 2px 6px #261f180f;--shadow-modal:0 24px 64px #1e181238, 0 8px 24px #1e18121f;--focus-ring:0 0 0 3px var(--primary-ring);--scrim:#1e181257;--radius-xs:6px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-full:999px;--font-sans:"Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:"Geist Mono", "SF Mono", ui-monospace, monospace}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--font-sans);color:var(--text-primary);background:var(--canvas);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:14px;line-height:1.55}.mono,.tnum{font-family:var(--font-mono);font-variant-numeric:tabular-nums}button{cursor:pointer;color:inherit;background:0 0;border:none;font-family:inherit}input,textarea,select{font-family:inherit;font-size:inherit;color:inherit}a{color:inherit;text-decoration:none}::selection{background:var(--primary-tint)}.t-display{letter-spacing:-.02em;font-size:28px;font-weight:600;line-height:1.15}.t-section{letter-spacing:-.01em;font-size:20px;font-weight:600;line-height:1.25}.t-card-title{font-size:16px;font-weight:600;line-height:1.3}.t-body-strong{font-weight:500}.t-label{font-size:13px;font-weight:500;line-height:1.4}.t-overline{letter-spacing:.16em;text-transform:uppercase;font-size:11px;font-weight:600;line-height:1.2}.t-caption{color:var(--text-secondary);font-size:12px;line-height:1.4}:focus-visible{box-shadow:var(--focus-ring);border-radius:var(--radius-xs);outline:none}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border-strong);border:3px solid var(--canvas);border-radius:999px}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.45}}.skeleton{background:var(--surface-sunken);border-radius:var(--radius-sm);animation:1.4s ease-in-out infinite pulse}
