:root{--c-bg:#f5f7fa;--c-surface:#fff;--c-surface-2:#f0f3f7;--c-border:#d9e0e8;--c-border-strong:#b8c2ce;--c-text:#1e2a36;--c-text-dim:#5b6b7b;--c-text-faint:#93a1b0;--c-primary:#1f6feb;--c-primary-hover:#185bc4;--c-primary-soft:#e3edfd;--c-draft:#b45309;--c-draft-bg:#fef3c7;--c-review:#1d4ed8;--c-review-bg:#dbeafe;--c-published:#15803d;--c-published-bg:#dcfce7;--c-archived:#4b5563;--c-archived-bg:#e5e7eb;--c-req:#1f6feb;--c-req-bg:#1f6feb;--c-opt:#1f6feb;--c-out:#7c3aed;--c-out-bg:#ede9fe;--c-tbd:#dc2626;--c-tbd-bg:#fee2e2;--c-na:#c3ccd6;--c-critical:#dc2626;--c-error:#ea580c;--c-warning:#d97706;--c-conflict:#a855f7;--c-dirty:#f59e0b;--shadow-1:0 1px 3px #14212e17;--shadow-2:0 6px 24px #14212e24;--radius:8px;--radius-sm:5px;--topbar-h:52px;--font:"Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;--mono:"Cascadia Code", "Consolas", monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);color:var(--c-text);background:var(--c-bg);font-size:14px}button{font-family:inherit}input,select,textarea{font-family:inherit;font-size:13px}h1,h2,h3{margin:0}.btn{border-radius:var(--radius-sm);border:1px solid var(--c-border-strong);background:var(--c-surface);color:var(--c-text);cursor:pointer;white-space:nowrap;align-items:center;gap:6px;padding:7px 14px;font-size:13px;font-weight:600;transition:background .12s,border-color .12s;display:inline-flex}.btn:hover:not(:disabled){background:var(--c-surface-2)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--c-primary);border-color:var(--c-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--c-primary-hover)}.btn-danger{border-color:var(--c-critical);color:var(--c-critical)}.btn-sm{padding:4px 10px;font-size:12px}.field{flex-direction:column;gap:4px;margin-bottom:12px;display:flex}.field label{color:var(--c-text-dim);font-size:12px;font-weight:600}.field input,.field select,.field textarea{border:1px solid var(--c-border-strong);border-radius:var(--radius-sm);background:var(--c-surface);color:var(--c-text);padding:7px 10px}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--c-primary-soft);border-color:var(--c-primary)}.field-row{gap:10px;display:flex}.field-row .field{flex:1}.badge{letter-spacing:.4px;text-transform:uppercase;border-radius:999px;padding:2px 10px;font-size:11px;font-weight:700;display:inline-block}.badge-draft{background:var(--c-draft-bg);color:var(--c-draft)}.badge-review{background:var(--c-review-bg);color:var(--c-review)}.badge-published{background:var(--c-published-bg);color:var(--c-published)}.badge-archived{background:var(--c-archived-bg);color:var(--c-archived)}.chip{border-radius:999px;align-items:center;gap:3px;padding:1px 8px;font-size:11px;font-weight:700;display:inline-flex}.chip-critical{background:var(--c-tbd-bg);color:var(--c-critical)}.chip-error{color:var(--c-error);background:#ffedd5}.chip-warning{background:var(--c-draft-bg);color:var(--c-warning)}.chip-ok{background:var(--c-published-bg);color:var(--c-published)}.login-page{background:linear-gradient(150deg,#eef3fa 0%,#dde7f3 100%);justify-content:center;align-items:center;height:100%;display:flex}.login-card{background:var(--c-surface);border:1px solid var(--c-border);width:360px;box-shadow:var(--shadow-2);border-radius:12px;padding:32px}.login-logo{color:var(--c-primary);margin-bottom:4px;font-size:26px;font-weight:800}.login-sub{color:var(--c-text-dim);margin-bottom:24px;font-size:13px}.login-error{background:var(--c-tbd-bg);color:var(--c-critical);border-radius:var(--radius-sm);margin-bottom:12px;padding:8px 12px;font-size:13px}.login-hint{color:var(--c-text-faint);text-align:center;margin-top:16px;font-size:12px}.shell{flex-direction:column;height:100%;display:flex}.topbar{height:var(--topbar-h);background:var(--c-surface);border-bottom:1px solid var(--c-border);box-shadow:var(--shadow-1);z-index:20;flex:none;align-items:center;gap:18px;padding:0 16px;display:flex}.topbar-logo{color:var(--c-primary);letter-spacing:-.3px;font-size:19px;font-weight:800}.topbar-spacer{flex:1}.topbar select{border:1px solid var(--c-border-strong);border-radius:var(--radius-sm);background:var(--c-surface);padding:5px 8px;font-size:13px}.topbar-company{color:var(--c-text-dim);align-items:center;gap:6px;font-size:13px;display:flex}.topbar-user{color:var(--c-text-dim);align-items:center;gap:8px;font-size:13px;display:flex}.avatar{background:var(--c-primary-soft);width:30px;height:30px;color:var(--c-primary);border-radius:50%;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:flex}.shell-body{flex:1;min-height:0;display:flex}.sidenav{background:var(--c-surface);border-right:1px solid var(--c-border);flex:none;width:216px;padding:14px 10px;overflow-y:auto}.sidenav-group{margin-bottom:18px}.sidenav-group-title{text-transform:uppercase;letter-spacing:.7px;color:var(--c-text-faint);padding:0 10px 6px;font-size:11px;font-weight:700}.sidenav a{border-radius:var(--radius-sm);color:var(--c-text-dim);margin-bottom:1px;padding:7px 10px;font-size:13.5px;text-decoration:none;display:block}.sidenav a:hover{background:var(--c-surface-2);color:var(--c-text)}.sidenav a.active{background:var(--c-primary-soft);color:var(--c-primary);font-weight:600}.main-content{flex-direction:column;flex:1;min-width:0;display:flex;overflow:auto}.page{padding:20px 24px}.page-header{align-items:center;gap:14px;margin-bottom:18px;display:flex}.page-title{font-size:20px;font-weight:700}.placeholder{text-align:center;max-width:420px;color:var(--c-text-dim);margin:60px auto}.placeholder-icon{margin-bottom:12px;font-size:42px}.placeholder h2{color:var(--c-text);margin-bottom:8px;font-size:18px}.table-card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);box-shadow:var(--shadow-1);overflow:hidden}.data-table{border-collapse:collapse;width:100%;font-size:13.5px}.data-table th{text-align:left;background:var(--c-surface-2);color:var(--c-text-dim);text-transform:uppercase;letter-spacing:.4px;border-bottom:1px solid var(--c-border);padding:10px 14px;font-size:12px}.data-table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.data-table th.sortable:hover{color:var(--c-text)}.data-table td{border-bottom:1px solid var(--c-border);padding:10px 14px}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr.clickable{cursor:pointer}.data-table tbody tr.clickable:hover{background:var(--c-primary-soft)}.code-text{font-family:var(--mono);font-size:12.5px}.irsaliye-no{color:var(--c-text);font-weight:700}.ws{flex-direction:column;height:100%;min-height:0;display:flex}.ws-header{background:var(--c-surface);border-bottom:1px solid var(--c-border);flex:none;padding:12px 18px 10px}.ws-title-row{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:10px;display:flex}.ws-title{font-size:17px;font-weight:700}.ws-version{color:var(--c-text-dim);font-weight:600}.ws-toolbar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.ws-dirty-info{color:var(--c-warning);margin-left:6px;font-size:12px;font-weight:600}.readonly-banner{background:var(--c-published-bg);color:var(--c-published);border-bottom:1px solid var(--c-border);padding:8px 18px;font-size:13px;font-weight:600}.readonly-banner.archived{background:var(--c-archived-bg);color:var(--c-archived)}.readonly-banner.review{background:var(--c-review-bg);color:var(--c-review)}.ws-main{flex:1;min-height:0;display:flex}.ws-grid-wrap{background:var(--c-surface);flex:1;min-width:0;overflow:auto}.matrix-table{border-collapse:separate;border-spacing:0;font-size:13px}.matrix-table th,.matrix-table td{border-bottom:1px solid var(--c-border);border-right:1px solid var(--c-border)}.matrix-table thead th{z-index:5;background:var(--c-surface-2);text-align:center;vertical-align:bottom;min-width:74px;padding:8px 6px;position:sticky;top:0}.matrix-table thead th.tree-head{z-index:6;text-align:left;min-width:240px;padding-left:12px;left:0}.col-code{font-size:12.5px;font-weight:700}.col-name{color:var(--c-text-dim);margin-top:2px;font-size:10.5px;font-weight:400;display:block}.col-gate{color:var(--c-published);margin-left:3px}.tree-cell{z-index:4;background:var(--c-surface);white-space:nowrap;text-overflow:ellipsis;min-width:240px;max-width:320px;padding:5px 8px 5px 6px;position:sticky;left:0;overflow:hidden}.tree-row-inner{align-items:center;gap:5px;display:flex}.tree-toggle{cursor:pointer;width:18px;height:18px;color:var(--c-text-dim);background:0 0;border:none;flex:0 0 18px;padding:0;font-size:10px}.tree-toggle.leaf{visibility:hidden}.node-type-tag{background:var(--c-surface-2);color:var(--c-text-faint);border-radius:4px;flex:none;padding:1px 5px;font-size:9.5px;font-weight:700}.node-code{font-family:var(--mono);font-size:12px;font-weight:600}.node-name{color:var(--c-text-dim);text-overflow:ellipsis;overflow:hidden}.mx-cell{text-align:center;cursor:pointer;background:var(--c-surface);-webkit-user-select:none;user-select:none;min-width:74px;height:34px;padding:0;position:relative}.mx-cell:hover{background:var(--c-primary-soft)}.mx-cell.selected{outline:2px solid var(--c-primary);outline-offset:-2px}.mx-cell.readonly{cursor:default}.mx-cell.val-critical{box-shadow:inset 3px 0 0 var(--c-critical)}.mx-cell.val-error{box-shadow:inset 3px 0 0 var(--c-error)}.mx-cell.val-warning{box-shadow:inset 3px 0 0 var(--c-warning)}.mx-cell.conflict{outline:2px solid var(--c-conflict);outline-offset:-2px}.cell-token{border-radius:4px;justify-content:center;align-items:center;min-width:26px;height:20px;padding:0 6px;font-size:11.5px;font-weight:700;line-height:1;display:inline-flex}.tok-R{background:var(--c-req-bg);color:#fff}.tok-O{color:var(--c-opt);border:1.5px solid var(--c-opt);background:0 0}.tok-D{background:var(--c-out-bg);color:var(--c-out);border:1px solid var(--c-out)}.tok-TBD{background:var(--c-tbd-bg);color:var(--c-tbd);border:1px solid var(--c-tbd)}.tok-NA{color:var(--c-na);background:0 0;font-weight:600}.tok-empty{color:var(--c-na)}.mx-cell.inherited .cell-token{opacity:.45}.inherit-arrow{color:var(--c-text-faint);margin-left:2px;font-size:10px}.override-corner{border-style:solid;border-width:0 8px 8px 0;border-color:transparent var(--c-primary) transparent transparent;width:0;height:0;position:absolute;top:0;right:0}.dirty-dot{background:var(--c-dirty);border-radius:50%;width:7px;height:7px;position:absolute;top:3px;left:3px}.side-panel{background:var(--c-surface);border-left:1px solid var(--c-border);flex:none;width:300px;padding:14px 16px;overflow-y:auto}.side-panel h3{margin-bottom:4px;font-size:14px}.side-panel-sub{color:var(--c-text-dim);margin-bottom:14px;font-size:12px}.side-panel-empty{color:var(--c-text-faint);text-align:center;margin-top:48px;font-size:13px}.side-panel-actions{flex-direction:column;gap:8px;margin-top:14px;display:flex}.inherit-info{border-radius:var(--radius-sm);background:var(--c-surface-2);color:var(--c-text-dim);margin-bottom:12px;padding:6px 10px;font-size:12px}.bottom-panel{border-top:1px solid var(--c-border);background:var(--c-surface);flex-direction:column;flex:none;height:220px;display:flex}.tab-bar{border-bottom:1px solid var(--c-border);flex:none;gap:2px;padding:0 12px;display:flex}.tab-bar button{color:var(--c-text-dim);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:9px 14px;font-size:13px;font-weight:600}.tab-bar button.active{color:var(--c-primary);border-bottom-color:var(--c-primary)}.tab-body{flex:1;padding:10px 16px;overflow-y:auto}.val-item{border-radius:var(--radius-sm);cursor:pointer;align-items:baseline;gap:8px;padding:6px 8px;font-size:13px;display:flex}.val-item:hover{background:var(--c-surface-2)}.val-code{font-family:var(--mono);flex:none;font-size:11.5px;font-weight:700}.val-empty{color:var(--c-text-faint);padding:12px 4px;font-size:13px}.log-item{border-bottom:1px solid var(--c-surface-2);padding:7px 4px;font-size:13px}.log-meta{color:var(--c-text-faint);font-size:11.5px}.task-item{border-bottom:1px solid var(--c-surface-2);align-items:center;gap:10px;padding:8px 4px;font-size:13px;display:flex}.task-status{border-radius:999px;flex:none;padding:2px 8px;font-size:10.5px;font-weight:700}.task-Open{background:var(--c-tbd-bg);color:var(--c-critical)}.task-InProgress{background:var(--c-review-bg);color:var(--c-review)}.task-Done{background:var(--c-published-bg);color:var(--c-published)}.task-desc{color:var(--c-text-dim);font-size:12px}.modal-backdrop{z-index:100;background:#0f192373;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--c-surface);width:640px;max-width:94vw;max-height:84vh;box-shadow:var(--shadow-2);border-radius:10px;flex-direction:column;display:flex}.modal-header{border-bottom:1px solid var(--c-border);justify-content:space-between;align-items:center;padding:14px 20px;display:flex}.modal-header h3{font-size:15px}.modal-close{cursor:pointer;color:var(--c-text-dim);background:0 0;border:none;font-size:18px}.modal-body{padding:16px 20px;overflow-y:auto}.modal-footer{border-top:1px solid var(--c-border);justify-content:flex-end;gap:8px;padding:12px 20px;display:flex}.import-summary{gap:8px;margin:12px 0;display:flex}.import-row-changed{background:var(--c-published-bg)}.import-row-error{background:var(--c-tbd-bg)}.pager{align-items:center;gap:10px;padding:10px 4px 4px;font-size:12.5px;display:flex}.cad-dropzone{border:2px dashed var(--c-border-strong);border-radius:var(--radius);text-align:center;color:var(--c-text-dim);background:var(--c-surface);margin-bottom:16px;padding:18px;font-size:13px;transition:border-color .12s,background .12s}.cad-dropzone.dragover{border-color:var(--c-primary);background:var(--c-primary-soft);color:var(--c-primary)}.cad-layout{align-items:flex-start;gap:16px;display:flex}.cad-table-wrap{flex:1;min-width:0}.data-table tbody tr.cad-row-active{background:var(--c-primary-soft)}.kind-badge{font-family:var(--mono);letter-spacing:.3px;background:var(--c-surface-2);color:var(--c-text-dim);border-radius:4px;padding:2px 8px;font-size:11px;font-weight:700;display:inline-block}.kind-STEP{background:var(--c-published-bg);color:var(--c-published)}.kind-DXF,.kind-DWG{background:var(--c-review-bg);color:var(--c-review)}.kind-SLDPRT,.kind-SLDASM{background:var(--c-out-bg);color:var(--c-out)}.kind-PDF{background:var(--c-draft-bg);color:var(--c-draft)}.cad-status{border-radius:999px;padding:2px 10px;font-size:11px;font-weight:700;display:inline-block}.cad-status-Uploaded{background:var(--c-surface-2);color:var(--c-text-dim)}.cad-status-Linked{background:var(--c-review-bg);color:var(--c-review)}.cad-status-Processing{background:var(--c-draft-bg);color:var(--c-draft)}.cad-status-Processed{background:var(--c-published-bg);color:var(--c-published)}.cad-status-Failed{background:var(--c-tbd-bg);color:var(--c-critical)}.bom-panel{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);width:420px;box-shadow:var(--shadow-1);flex:none;max-height:70vh;padding:12px 14px;overflow-y:auto}.bom-panel-header{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.bom-panel-header h3{text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.bom-panel-info{color:var(--c-text-dim);padding:12px 4px;font-size:13px}.bom-panel-error{background:var(--c-tbd-bg);color:var(--c-critical);border-radius:var(--radius-sm);padding:8px 12px;font-size:13px}.bom-tree{font-size:13px}.bom-row{border-radius:var(--radius-sm);white-space:nowrap;align-items:center;gap:6px;padding:4px;display:flex;overflow:hidden}.bom-row:hover{background:var(--c-surface-2)}.bom-row.assembly .bom-label{font-weight:700}.bom-icon{flex:none}.bom-label{text-overflow:ellipsis;overflow:hidden}.bom-qty{color:var(--c-text-dim);flex:none;font-weight:600}.bom-meta{color:var(--c-text-faint);flex:none;font-size:11.5px}.tree-picker{border:1px solid var(--c-border-strong);border-radius:var(--radius-sm);background:var(--c-surface);max-height:260px;padding:6px;overflow-y:auto}.tree-pick-row{border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;align-items:center;gap:6px;padding:4px 6px;display:flex;overflow:hidden}.tree-pick-row:hover{background:var(--c-surface-2)}.tree-pick-row.selected{background:var(--c-primary-soft)}.tree-pick-row input[type=radio]{flex:none;margin:0}.ptree-card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);box-shadow:var(--shadow-1);padding:8px;overflow:hidden}.ptree-row{border-radius:var(--radius-sm);white-space:nowrap;align-items:center;gap:8px;padding:5px 8px;display:flex}.ptree-row:hover{background:var(--c-surface-2)}.ptree-row .node-name{flex:0 auto}.ptree-actions{align-items:center;gap:6px;margin-left:auto;padding-left:12px;display:none}.ptree-row:hover .ptree-actions{display:inline-flex}.badge-s-draft{color:#4b5563;background:#e5e7eb}.badge-s-received,.badge-s-open{color:#1d4ed8;background:#dbeafe}.badge-s-quoting,.badge-s-confirmed{color:#4338ca;background:#e0e7ff}.badge-s-quoted,.badge-s-sent{color:#b45309;background:#fef3c7}.badge-s-won,.badge-s-accepted,.badge-s-ready{color:#15803d;background:#dcfce7}.badge-s-lost,.badge-s-rejected{color:#dc2626;background:#fee2e2}.badge-s-cancelled{color:#374151;background:#d1d5db}.badge-s-inproduction{color:#7c3aed;background:#ede9fe}.badge-s-shipped{color:#0f766e;background:#ccfbf1}.badge-s-closed{color:#475569;background:#e2e8f0}.badge-s-expired{color:#9d174d;background:#fce7f3}.rev-badge{background:var(--c-primary-soft);color:var(--c-primary);vertical-align:middle;border-radius:999px;margin-left:6px;padding:1px 7px;font-size:10.5px;font-weight:700;display:inline-block}.rev-badge-lg{padding:2px 9px;font-size:12px}.filter-chips{flex-wrap:wrap;gap:6px;margin-bottom:14px;display:flex}.filter-chip{border:1px solid var(--c-border-strong);background:var(--c-surface);color:var(--c-text-dim);cursor:pointer;border-radius:999px;padding:4px 12px;font-size:12.5px;font-weight:600;transition:background .12s,color .12s,border-color .12s}.filter-chip:hover{background:var(--c-surface-2)}.filter-chip.active{background:var(--c-primary);border-color:var(--c-primary);color:#fff}.search-form{align-items:center;gap:6px;display:flex}.search-input{border:1px solid var(--c-border-strong);border-radius:var(--radius-sm);background:var(--c-surface);width:240px;color:var(--c-text);padding:6px 10px}.search-input:focus{outline:2px solid var(--c-primary-soft);border-color:var(--c-primary)}.detail-card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);box-shadow:var(--shadow-1);margin-bottom:16px;padding:16px 18px}.detail-card-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.detail-card-head h3{font-size:14.5px}.detail-card .data-table{border:1px solid var(--c-border);border-radius:var(--radius-sm)}.detail-grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px 18px;font-size:13.5px;display:grid}.detail-label{text-transform:uppercase;letter-spacing:.4px;color:var(--c-text-faint);margin-bottom:2px;font-size:11px;font-weight:700;display:block}.inline-input{border:1px solid var(--c-border-strong);border-radius:var(--radius-sm);background:var(--c-surface);width:100%;color:var(--c-text);padding:5px 8px;font-size:13px}.inline-input:focus{outline:2px solid var(--c-primary-soft);border-color:var(--c-primary)}.inline-input.num{text-align:right}.line-actions{white-space:nowrap}.inline-lines-table td{padding:6px 8px}.rfq-modal-lines-head{justify-content:space-between;align-items:center;margin:14px 0 8px;display:flex}.rfq-modal-lines-head label{color:var(--c-text-dim);font-size:12px;font-weight:600}.totals-wrap{justify-content:flex-end;margin-top:14px;display:flex}.totals-panel{border:1px solid var(--c-border);border-radius:var(--radius-sm);background:var(--c-surface-2);min-width:300px;padding:10px 14px;font-size:13.5px}.totals-row{color:var(--c-text-dim);justify-content:space-between;gap:24px;padding:4px 0;display:flex}.totals-row.grand{border-top:1px solid var(--c-border-strong);color:var(--c-text);margin-top:6px;padding-top:8px;font-size:15px;font-weight:800}.notes-area{border:1px solid var(--c-border-strong);border-radius:var(--radius-sm);background:var(--c-surface);color:var(--c-text);resize:vertical;padding:8px 10px}.notes-area:focus{outline:2px solid var(--c-primary-soft);border-color:var(--c-primary)}.print-area{display:none}@media print{.topbar,.sidenav,.screen-only,.toast,.modal-backdrop{display:none!important}.shell,.shell-body,.main-content{height:auto!important;display:block!important;overflow:visible!important}body{background:#fff}.print-area{color:#111;padding:24px;font-size:12.5px;display:block}.print-header{border-bottom:2px solid #111;justify-content:space-between;align-items:flex-start;margin-bottom:16px;padding-bottom:12px;display:flex}.print-logo{letter-spacing:-.4px;font-size:26px;font-weight:800}.print-doc-title{text-align:right;font-size:16px;font-weight:800}.print-doc-no{font-size:13px;font-weight:600;font-family:var(--mono);margin-top:4px}.print-meta{border-collapse:collapse;margin-bottom:16px}.print-meta td{padding:3px 18px 3px 0}.print-meta td:nth-child(odd){color:#444;font-weight:700}.print-table{border-collapse:collapse;width:100%;margin-bottom:12px}.print-table th,.print-table td{text-align:left;border:1px solid #999;padding:5px 8px}.print-table th{text-transform:uppercase;background:#eee;font-size:11px}.print-table .num{text-align:right}.print-totals{flex-direction:column;align-items:flex-end;gap:2px;margin-bottom:18px;display:flex}.print-totals>div{justify-content:space-between;width:280px;padding:2px 0;display:flex}.print-totals .grand{border-top:2px solid #111;margin-top:4px;padding-top:6px;font-size:14px;font-weight:800}.print-terms p{margin:4px 0}}.badge-w-draft{color:#4b5563;background:#e5e7eb}.badge-w-released{color:#1d4ed8;background:#dbeafe}.badge-w-inprogress{color:#7c3aed;background:#ede9fe}.badge-w-completed{color:#15803d;background:#dcfce7}.badge-w-cancelled{color:#374151;background:#d1d5db}.badge-o-pending{color:#4b5563;background:#e5e7eb}.badge-o-started{color:#7c3aed;background:#ede9fe}.badge-o-paused{color:#b45309;background:#fef3c7}.badge-o-completed{color:#15803d;background:#dcfce7}.badge-o-skipped{color:#475569;background:#e2e8f0}.outsource-tag{letter-spacing:.4px;background:var(--c-out-bg);color:var(--c-out);border:1px solid var(--c-out);vertical-align:middle;border-radius:4px;margin-left:6px;padding:1px 6px;font-size:10px;font-weight:700;display:inline-block}.mbom-stage-tag{color:#0f766e;vertical-align:middle;white-space:nowrap;background:#ccfbf1;border:1px solid #99f6e4;border-radius:4px;margin-left:6px;padding:1px 6px;font-size:10px;font-weight:600;display:inline-block}.mbom-actual-tag{color:#6d28d9;vertical-align:middle;white-space:nowrap;background:#ede9fe;border-radius:999px;margin-left:4px;padding:1px 6px;font-size:10px;font-weight:700;display:inline-block}.capture-node{border:1px solid var(--c-border);border-radius:8px;margin-bottom:10px;padding:12px}.capture-node-head{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;display:flex}.capture-badge{border-radius:999px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.capture-badge-ok{color:#15803d;background:#dcfce7}.capture-badge-dev{color:#b45309;background:#fef3c7}.capture-badge-wait{color:#4b5563;background:#e5e7eb}.capture-order-diff{color:#b45309;font-weight:700}.wo-progress-cell{white-space:nowrap;align-items:center;gap:8px;display:flex}.wo-progress{background:var(--c-border);border-radius:999px;flex:none;width:90px;height:6px;overflow:hidden}.wo-progress-fill{background:var(--c-primary);border-radius:999px;height:100%;transition:width .25s}.op-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.queue-toolbar{align-items:center;gap:10px;margin-bottom:14px;display:flex}.queue-toolbar select{min-width:260px}.queue-refresh{color:var(--c-text-faint);font-size:12px}.shopfloor-table td{padding:14px 12px;font-size:15px}.shopfloor-table .btn{padding:10px 18px;font-size:15px}.shopfloor-table .badge{padding:4px 12px;font-size:12.5px}.muted{color:var(--c-text-dim)}.faint{color:var(--c-text-faint)}.spinner{text-align:center;color:var(--c-text-dim);padding:40px}.toast{background:var(--c-text);color:#fff;border-radius:var(--radius);box-shadow:var(--shadow-2);z-index:200;padding:10px 18px;font-size:13px;position:fixed;bottom:20px;right:20px}.badge-l-instock{color:#15803d;background:#dcfce7}.badge-l-shipped{color:#0f766e;background:#ccfbf1}.badge-l-cancelled{color:#374151;background:#d1d5db}.qty-positive{color:#15803d;font-weight:600}.qty-negative{color:#dc2626;font-weight:600}.trace-chain{flex-wrap:wrap;align-items:center;gap:14px;padding:4px 2px;display:flex}.trace-step{flex-direction:column;gap:2px;min-width:120px;display:flex}.trace-arrow{color:var(--c-text-faint);flex:none;font-size:18px}@media print{.lot-label{color:#111;box-sizing:border-box;page-break-inside:avoid;border:1.5px solid #111;border-radius:3mm;flex-direction:column;align-items:center;gap:2.5mm;width:100mm;height:100mm;padding:5mm 6mm;display:flex}.lot-label-head{letter-spacing:-.3px;border-bottom:1.5px solid #111;align-self:stretch;padding-bottom:2mm;font-size:15px;font-weight:800}.lot-label-qr svg{width:32mm;height:32mm;display:block}.lot-label-qr-fallback{width:32mm;height:32mm;font-family:var(--mono);text-align:center;word-break:break-all;box-sizing:border-box;border:1px dashed #999;justify-content:center;align-items:center;padding:2mm;font-size:8px;display:flex}.lot-label-no{font-family:var(--mono);letter-spacing:.5px;font-size:23px;font-weight:800}.lot-label-product{text-align:center;font-size:12.5px}.lot-label-product .lot-label-code{font-family:var(--mono);font-weight:700}.lot-label-meta{border-top:1px solid #999;justify-content:space-between;align-self:stretch;margin-top:auto;padding-top:2mm;font-size:12px;font-weight:600;display:flex}}.op-label{color:#111;box-sizing:border-box;page-break-inside:avoid;background:#fff;border:1.5px solid #111;border-radius:3mm;flex-direction:column;gap:2mm;width:100mm;height:60mm;margin:0 auto;padding:4mm 5mm;display:flex;overflow:hidden}.op-label-head{letter-spacing:-.3px;border-bottom:1.5px solid #111;align-self:stretch;padding-bottom:1.5mm;font-size:14px;font-weight:800}.op-label-body{flex:1;align-items:center;gap:5mm;min-height:0;display:flex}.op-label-fields{flex-direction:column;flex:1;gap:1.8mm;min-width:0;display:flex}.op-label-qr{flex:none}.op-label-qr svg{width:28mm;height:28mm;display:block}.op-label-qr-fallback{width:28mm;height:28mm;font-family:var(--mono);text-align:center;word-break:break-all;box-sizing:border-box;border:1px dashed #999;justify-content:center;align-items:center;padding:1.5mm;font-size:7px;display:flex}.op-label-row{justify-content:space-between;gap:4mm;font-size:11px;display:flex}.op-label-key{color:#444;flex:none;font-weight:700}.op-label-val{text-align:right;text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.op-label-val .code-text{font-family:var(--mono);font-weight:700}.op-print-root{display:none}@media print{body:has(.op-print-root)>#root{display:none!important}.op-print-root{display:block}}.badge-sh-draft{color:#4b5563;background:#e5e7eb}.badge-sh-shipped{color:#1d4ed8;background:#dbeafe}.badge-sh-delivered{color:#15803d;background:#dcfce7}.badge-sh-cancelled{color:#374151;background:#d1d5db}.badge-ed-draft{color:#4b5563;background:#e5e7eb}.badge-ed-queued{color:#b45309;background:#fef3c7}.badge-ed-sent{color:#0f766e;background:#ccfbf1}.badge-ed-accepted{color:#15803d;background:#dcfce7}.badge-ed-rejected{color:#dc2626;background:#fee2e2}.badge-ed-failed{color:#374151;background:#d1d5db}.badge-ed-cancelled,.badge-inv-draft{color:#4b5563;background:#e5e7eb}.badge-inv-issued{color:#1d4ed8;background:#dbeafe}.badge-inv-partiallypaid{color:#b45309;background:#fef3c7}.badge-inv-paid{color:#15803d;background:#dcfce7}.badge-inv-cancelled{color:#374151;background:#d1d5db}.acct-balance-debt{color:#dc2626;font-weight:700}.acct-balance-credit{color:#15803d;font-weight:700}.acct-balance-zero{color:var(--c-text-faint);font-weight:600}.edoc-provider{color:var(--c-text-dim);font-size:12px}@media print{.print-parties{justify-content:space-between;gap:24px;margin-bottom:16px;display:flex}.print-party{border:1px solid #999;border-radius:4px;flex:1;padding:8px 10px}.print-party h4{text-transform:uppercase;letter-spacing:.4px;color:#444;border-bottom:1px solid #ccc;margin:0 0 6px;padding-bottom:3px;font-size:11px}.print-party-line{margin:2px 0;font-size:12px}.print-sign-row{justify-content:space-between;gap:40px;margin-top:40px;display:flex}.print-sign-box{text-align:center;color:#444;border-top:1px solid #111;flex:1;padding-top:6px;font-size:11px}.print-amount-words{margin:10px 0 16px;font-size:12px;font-style:italic}}.ptree-layout{align-items:flex-start;gap:16px;display:flex}.ptree-layout .ptree-card{flex:46%;min-width:340px}.ptree-select{cursor:pointer;text-align:left;font:inherit;color:inherit;background:0 0;border:none;align-items:center;gap:8px;margin:0;padding:0;display:inline-flex}.ptree-row.selected{background:var(--c-primary-soft);box-shadow:inset 3px 0 0 var(--c-primary)}.insight-panel{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);min-width:380px;box-shadow:var(--shadow-1);flex:54%;padding:16px 18px}.insight-panel-empty{color:var(--c-text-faint);text-align:center;padding:48px 18px;font-size:13px}.insight-head{border-bottom:1px solid var(--c-border);align-items:center;gap:8px;margin-bottom:6px;padding-bottom:12px;display:flex}.insight-head .node-name{font-weight:600}.insight-section{border-bottom:1px solid var(--c-border);padding:14px 0}.insight-section:last-child{border-bottom:none}.insight-section-head{align-items:center;gap:8px;margin-bottom:10px;display:flex}.insight-section-head h3{text-transform:uppercase;letter-spacing:.4px;color:var(--c-text-dim);margin:0;font-size:13px}.geo-grid{grid-template-columns:1fr 1fr;gap:8px 18px;display:grid}.geo-metric{flex-direction:column;gap:2px;padding:4px 0;display:flex}.geo-metric-label{color:var(--c-text-faint);font-size:11.5px}.geo-metric-value{color:var(--c-text);font-size:13px;font-weight:500}.dxf-metrics{grid-template-columns:1fr 1fr;gap:8px 18px;display:grid}.suggest-list{margin:6px 0 0;padding:0;list-style:none}.suggest-list li{border-top:1px dashed var(--c-border);align-items:baseline;gap:8px;padding:6px 0;font-size:13px;display:flex}.suggest-list li:first-child{border-top:none}.suggest-seq{background:var(--c-primary-soft);min-width:24px;height:20px;color:var(--c-primary);border-radius:10px;flex:none;justify-content:center;align-items:center;padding:0 6px;font-size:11px;font-weight:600;display:inline-flex}.suggest-name{font-weight:600}.suggest-reason{color:var(--c-text-dim);text-align:right;margin-left:auto;font-size:12px}.notice-ok,.notice-warn{border-radius:var(--radius-sm);margin:8px 0;padding:8px 12px;font-size:13px}.notice-ok{background:var(--c-published-bg);color:var(--c-published)}.notice-warn{background:var(--c-draft-bg);color:var(--c-draft)}.notice-warn ul{margin:6px 0 0;padding-left:18px}.notice-warn li{margin:2px 0}.rate-select{max-width:240px;font-size:12.5px}.cost-table{font-size:12px}.cost-table th,.cost-table td{white-space:nowrap;padding:5px 8px}.cost-table tfoot td{border-top:2px solid var(--c-border-strong);background:var(--c-surface-2)}.cost-table tr.cost-grand td{background:var(--c-primary-soft);color:var(--c-primary);font-size:13px}.form-subheading{text-transform:uppercase;letter-spacing:.04em;color:var(--c-text-dim);border-top:1px solid var(--c-border);margin:14px 0 8px;padding-top:10px;font-size:12px;font-weight:600}.time-summary{flex-wrap:wrap;gap:16px;margin-top:10px;display:flex}.time-summary .time-summary-item{flex-direction:column;gap:2px;display:flex}.time-summary .time-summary-label{color:var(--c-text-dim);font-size:11px}.time-summary .time-summary-value{color:var(--c-primary);font-size:15px;font-weight:700}.wc-load-table{margin-top:10px;font-size:12px}.wc-load-table th,.wc-load-table td{white-space:nowrap;padding:5px 8px}.cad-chip{letter-spacing:.3px;background:var(--c-primary-soft);color:var(--c-primary);vertical-align:middle;border-radius:999px;margin-left:6px;padding:1px 6px;font-size:10.5px;font-weight:700;display:inline-block}.cad-hint{color:var(--c-text-faint);margin-top:2px;font-size:11px}.cad-price-summary{flex-wrap:wrap;align-items:stretch;gap:14px;margin-top:12px;display:flex}.cad-breakdown{border:1px solid var(--c-border);border-radius:var(--radius-sm);background:var(--c-surface-2);flex:320px;padding:8px 12px}.cad-breakdown>div{justify-content:space-between;gap:12px;padding:3px 0;font-size:12.5px;display:flex}.cad-breakdown-grand{border-top:1px solid var(--c-border-strong);margin-top:4px;font-weight:700;padding-top:6px!important}.cad-unit-price{border-radius:var(--radius-sm);background:var(--c-primary-soft);min-width:200px;color:var(--c-primary);flex-direction:column;flex:none;justify-content:center;gap:4px;padding:12px 16px;display:flex}.cad-unit-price-label{font-size:12px;font-weight:600}.cad-unit-price-value{font-size:22px;font-weight:700}.badge-manufactured{color:#1d4ed8;background:#dbeafe}.badge-purchased{color:#b45309;background:#fef3c7}.source-notice{color:#b45309;border-radius:var(--radius-sm);background:#fef3c7;margin:4px 0 10px;padding:8px 12px;font-size:13px}.purchase-price{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:4px 0;display:flex}.purchase-price-view,.purchase-price-edit{align-items:center;gap:8px;display:flex}.purchase-price-edit input{width:120px}.material-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:2px 0;display:flex}.material-current{align-items:center;gap:8px;min-width:0;display:flex}.material-weight{text-align:right;flex-direction:column;flex:none;gap:2px;display:flex}.material-chip{font-family:var(--mono);letter-spacing:.3px;background:var(--c-primary-soft);color:var(--c-primary);border-radius:999px;flex:none;padding:2px 8px;font-size:11.5px;font-weight:700;display:inline-block}.material-unassigned{background:var(--c-draft-bg);color:var(--c-draft);border-radius:var(--radius-sm);margin:4px 0;padding:8px 12px;font-size:13px}.material-editor{flex-direction:column;gap:8px;display:flex}.material-hint{color:var(--c-text-faint);margin:0;font-size:11.5px}.material-check{cursor:pointer;align-items:center;gap:8px;font-size:13px;display:flex}.material-actions{gap:8px;margin-top:2px;display:flex}.material-tag{font-family:var(--mono);background:var(--c-primary-soft);color:var(--c-primary);border-radius:4px;flex:none;padding:1px 6px;font-size:10.5px;font-weight:700;display:inline-block}.material-tag-none{color:var(--c-text-faint);flex:none;font-size:10.5px;font-style:italic}.route-editor{flex-direction:column;gap:10px;display:flex}.route-src{letter-spacing:.4px;text-transform:uppercase;border-radius:999px;padding:2px 10px;font-size:11px;font-weight:700;display:inline-block}.route-src-library{background:var(--c-published-bg);color:var(--c-published);box-shadow:inset 0 0 0 1px var(--c-published)}.route-src-rule{background:var(--c-surface-2);color:var(--c-text-dim)}.route-src-none{background:var(--c-tbd-bg);color:var(--c-tbd)}.route-master{color:var(--c-text-dim);flex-wrap:wrap;align-items:center;gap:8px;margin:0;font-size:12.5px;display:flex}.route-master-hint{color:var(--c-published);font-size:11.5px;font-weight:600}.route-list{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.route-step{border:1px solid var(--c-border);border-radius:var(--radius-sm);background:var(--c-surface);align-items:center;gap:8px;padding:6px 8px;font-size:13px;display:flex}.route-seq{background:var(--c-primary-soft);min-width:26px;height:20px;color:var(--c-primary);border-radius:10px;flex:none;justify-content:center;align-items:center;padding:0 6px;font-size:11px;font-weight:700;display:inline-flex}.route-step-code{flex:none;font-weight:700}.route-step-name{flex:auto;min-width:0;font-weight:600}.route-outsource{color:var(--c-text-dim);cursor:pointer;background:var(--c-surface-2);border-radius:999px;flex:none;align-items:center;gap:5px;padding:2px 8px;font-size:11.5px;display:inline-flex}.route-outsource.on{background:var(--c-out-bg);color:var(--c-out);font-weight:600}.route-outsource input{accent-color:var(--c-out)}.route-step-actions{flex:none;gap:4px;display:inline-flex}.route-btn{border:1px solid var(--c-border-strong);border-radius:var(--radius-sm);background:var(--c-surface);width:24px;height:24px;color:var(--c-text-dim);cursor:pointer;justify-content:center;align-items:center;font-size:13px;line-height:1;display:inline-flex}.route-btn:hover:not(:disabled){background:var(--c-surface-2);color:var(--c-text)}.route-btn:disabled{opacity:.4;cursor:not-allowed}.route-btn-remove{color:var(--c-critical);border-color:var(--c-border-strong)}.route-btn-remove:hover:not(:disabled){background:var(--c-tbd-bg);border-color:var(--c-critical)}.route-add{align-items:center;gap:8px;display:flex}.route-add select{border:1px solid var(--c-border-strong);border-radius:var(--radius-sm);background:var(--c-surface);color:var(--c-text);flex:auto;padding:6px 10px;font-size:12.5px}.route-actions{gap:8px;margin-top:2px;display:flex}.scope-selector{flex-direction:column;gap:4px;display:flex}.scope-options{flex-wrap:wrap;gap:6px;display:flex}.scope-option{border:1px solid var(--c-border-strong);color:var(--c-text-dim);cursor:pointer;border-radius:999px;align-items:center;gap:5px;padding:4px 10px;font-size:12px;display:inline-flex}.scope-option.active{border-color:var(--c-primary);background:var(--c-primary-soft);color:var(--c-primary);font-weight:600}.scope-option input{accent-color:var(--c-primary)}.scope-help{color:var(--c-text-faint);margin:0;font-size:11.5px}.data-table tbody tr.pm-row{cursor:pointer}.data-table tbody tr.pm-row:hover{background:var(--c-surface-2)}.data-table tbody tr.pm-row.selected{background:var(--c-primary-soft);box-shadow:inset 3px 0 0 var(--c-primary)}.pm-inline-edit{align-items:center;gap:8px;display:flex}.pm-inline-edit input{flex:1}.pm-usage{flex-direction:column;gap:12px;display:flex}.pm-usage-root{color:var(--c-text-dim);margin-bottom:4px;font-size:12px;font-weight:600}.pm-usage-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.pm-usage-row{border:1px solid var(--c-border);border-radius:var(--radius-sm,6px);background:var(--c-surface);align-items:center;gap:8px;padding:4px 8px;font-size:13px;display:flex}.viewer3d-box{border:1px solid var(--c-border);border-radius:var(--radius);background:linear-gradient(160deg,#eef2f7 0%,#e2e8f0 100%);width:100%;height:380px;position:relative;overflow:hidden}.viewer3d-msg{color:var(--c-text-dim);text-align:center;justify-content:center;align-items:center;padding:0 20px;font-size:13px;display:flex;position:absolute;inset:0}.viewer3d-overlay{border:1px solid var(--c-border);border-radius:var(--radius-sm);box-shadow:var(--shadow-1);background:#ffffffe6;align-items:center;gap:12px;padding:6px 10px;font-size:12px;display:flex;position:absolute;bottom:10px;left:10px}.viewer3d-toggle{cursor:pointer;align-items:center;gap:6px;font-weight:600;display:inline-flex}.viewer3d-legend{color:var(--c-text-dim);align-items:center;gap:6px;display:inline-flex}.viewer3d-swatch{background:#f59e0b;border-radius:3px;width:12px;height:12px;display:inline-block}.viewer3d-diag{border-radius:var(--radius-sm);color:#7a5b12;text-overflow:ellipsis;background:#fef3c7f5;border:1px solid #f0c36d;padding:5px 9px;font-size:11px;position:absolute;top:8px;left:8px;right:8px;overflow:hidden}.viewer3d-diag code{font-family:var(--mono);background:#0000000f;border-radius:3px;padding:0 3px}.viewer3d-btn{border:1px solid var(--c-border-strong);border-radius:var(--radius-sm);background:var(--c-surface);cursor:pointer;padding:3px 10px;font-size:11.5px;font-weight:700}.viewer3d-btn:hover:not(:disabled){background:var(--c-surface-2)}.viewer3d-btn:disabled{opacity:.45;cursor:not-allowed}.viewer3d-backdrop{z-index:900;background:#0f17208c;position:fixed;inset:0}.viewer3d-expanded{z-index:901;box-shadow:var(--shadow-2);background:linear-gradient(160deg,#eef2f7 0%,#e2e8f0 100%);height:auto!important;position:fixed!important;inset:28px!important}.wcl-note{background:var(--c-surface-2);border:1px solid var(--c-border);border-radius:var(--radius-sm);color:var(--c-text-dim);margin-bottom:14px;padding:10px 12px;font-size:12.5px}.wcl-table td{vertical-align:middle}.wcl-table tr.wcl-busy td{background:var(--c-surface)}.wcl-table tr.wcl-idle td{background:var(--c-surface-2);color:var(--c-text-dim)}.wcl-table tr.wcl-over td{border-left:3px solid var(--c-critical)}.wcl-table tr.wcl-over td:first-child{box-shadow:inset 3px 0 #0000}.wcl-type-badge{background:var(--c-primary-soft);color:var(--c-primary);vertical-align:middle;border-radius:999px;margin-left:8px;padding:1px 8px;font-size:11px;font-weight:700;display:inline-block}.wcl-remaining{flex-direction:column;align-items:flex-end;line-height:1.25;display:inline-flex}.wcl-remaining .faint{font-size:11.5px}.wcl-util{align-items:center;gap:10px;display:flex}.wcl-track{background:var(--c-border);border-radius:999px;flex:1;min-width:90px;height:10px;overflow:hidden}.wcl-fill{border-radius:999px;height:100%;transition:width .25s}.wcl-fill-green{background:var(--c-published)}.wcl-fill-amber{background:var(--c-warning)}.wcl-fill-red{background:var(--c-critical)}.wcl-util-meta{white-space:nowrap;flex-direction:column;align-items:flex-end;line-height:1.2;display:flex}.wcl-util-pct{font-size:13px;font-weight:700}.wcl-util-over{color:var(--c-critical)}.wcl-util-meta .faint{font-size:11.5px}.planner-metrics{grid-template-columns:repeat(5,minmax(140px,1fr));gap:10px;margin-bottom:14px;display:grid}.planner-metric{border:1px solid var(--c-border);border-radius:var(--radius-sm);background:var(--c-surface);justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.planner-metric span{color:var(--c-text-dim);font-size:12px}.planner-metric strong{font-size:22px}.planner-metric-warning{border-left:3px solid var(--c-warning)}.planner-metric-critical{border-left:3px solid var(--c-critical)}.planner-table-card{margin-bottom:18px}.planner-section-title{border-bottom:1px solid var(--c-border);justify-content:space-between;align-items:center;padding:12px 14px;display:flex}.planner-section-title>div{flex-direction:column;gap:2px;display:flex}.planner-section-title span{color:var(--c-text-dim);font-size:12px}.planner-load-title{border-bottom:0;padding:0 0 8px}.planner-risk{text-align:center;border-radius:999px;min-width:54px;padding:3px 8px;font-size:11px;font-weight:700;display:inline-block}.planner-risk-normal{color:var(--c-published);background:color-mix(in srgb, var(--c-published) 12%, transparent)}.planner-risk-warning{color:#8a5a00;background:color-mix(in srgb, var(--c-warning) 18%, transparent)}.planner-risk-critical{color:var(--c-critical);background:color-mix(in srgb, var(--c-critical) 12%, transparent)}.planner-order,.planner-date{flex-direction:column;gap:2px;display:flex}.planner-order span,.planner-date small{color:var(--c-text-dim);font-size:11.5px}.planner-date small{color:var(--c-critical)}.planner-suggestion{max-width:330px}@media (width<=1100px){.planner-metrics{grid-template-columns:repeat(2,minmax(140px,1fr))}.planner-table-card{overflow-x:auto}.planner-table{min-width:1050px}}
