.master-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.master-file{min-height:190px;text-align:left;background:#fff;border:1px solid var(--line);border-radius:14px;padding:22px;box-shadow:0 8px 30px rgba(25,40,65,.07);display:flex;flex-direction:column;align-items:flex-start;transition:.18s;color:var(--text);cursor:pointer}.master-file:hover{transform:translateY(-2px);border-color:var(--accent)}.master-file>span{width:42px;height:42px;border-radius:11px;background:#eef4ff;color:var(--accent);display:grid;place-items:center;font-weight:800;margin-bottom:16px}.master-file b{font-size:17px}.master-file small{color:var(--muted);font-size:13px;margin:7px 0 18px}.master-file em{font-style:normal;color:var(--accent);font-weight:700;margin-top:auto}.master-search{height:38px;border:1px solid var(--line);border-radius:8px;padding:0 10px}.field textarea{min-height:80px;border:1px solid var(--line);border-radius:8px;padding:10px;font:inherit;resize:vertical}.bom-lines{display:grid;gap:9px;margin-bottom:12px}.bom-line{display:grid;grid-template-columns:2fr .7fr .7fr .7fr auto;gap:8px}.bom-line input,.bom-line select{min-width:0;height:40px;border:1px solid var(--line);border-radius:8px;padding:0 9px;background:#fff}.mix-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;align-items:end}.mix-total{min-height:68px;border:1px solid var(--line);border-radius:10px;background:var(--soft);padding:10px 12px;display:flex;flex-direction:column;justify-content:center}.mix-total span,.mix-total small{font-size:11px;color:var(--muted)}.mix-total b{font-size:20px;margin:2px 0}@media(max-width:900px){.master-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:720px){.master-grid{grid-template-columns:1fr}.bom-line{grid-template-columns:1fr 1fr}.bom-line .btn{grid-column:2}.mix-grid{grid-template-columns:1fr 1fr}}
.material-mix-table{display:grid;gap:8px}.material-mix-head,.material-mix-row{display:grid;grid-template-columns:minmax(240px,2fr) minmax(120px,.65fr);gap:10px;align-items:center}.material-mix-head{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:700}.material-mix-row select,.material-mix-row input{height:40px;border:1px solid var(--line);border-radius:8px;padding:0 10px;background:#fff}.material-mix-table .mix-total{margin-top:4px;max-width:310px}@media(max-width:720px){.material-mix-head,.material-mix-row{grid-template-columns:1fr}.material-mix-head{display:none}}
.auto-code{background:#f3f5f8!important;color:#374151!important;font-weight:800;letter-spacing:.08em;cursor:not-allowed}
.compact-stats .stat strong{font-size:20px}.entry-lines,.purchase-lines{display:grid;gap:9px;margin-bottom:12px}.entry-line{display:grid;grid-template-columns:2fr 1fr auto;gap:9px}.entry-line select,.entry-line input,.purchase-line select,.purchase-line input{height:40px;border:1px solid var(--line);border-radius:8px;padding:0 10px;background:#fff;min-width:0}.job-layout{grid-template-columns:minmax(0,.85fr) minmax(0,1.25fr)}.job-layout>*{min-width:0;overflow:hidden}.job-layout .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.job-layout .form-grid .wide{grid-column:span 2}.job-layout .field{min-width:0}.job-layout .field input,.job-layout .field select{display:block;width:100%;min-width:0;max-width:100%}.preview-card{background:#eef2f6;padding:18px}.locked-panel{min-height:430px;border:1px dashed #c4ccd7;border-radius:12px;display:grid;place-content:center;text-align:center;padding:30px;background:#f8fafc;color:var(--muted)}.locked-panel span{font-size:36px}.locked-panel h3{margin:12px 0 4px;color:var(--ink)}.locked-panel p{font-size:12px;max-width:280px}.print-sheet{background:#fff;border:1px solid #d8dee8;border-radius:10px;padding:24px;box-shadow:0 10px 30px rgba(15,23,42,.08)}.print-head{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:2px solid #17202d;padding-bottom:14px;margin-bottom:14px}.print-head b,.print-head span{display:block}.print-head b{font-size:18px}.print-head span{font-size:11px;letter-spacing:.12em;color:var(--muted);margin-top:3px}.print-head>div:last-child{text-align:right}.print-head small{display:block;color:var(--muted);font-size:10px}.print-head strong{font-size:20px}.print-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:18px}.print-meta div{border:1px solid var(--line);border-radius:8px;padding:10px}.print-meta span{display:block;text-transform:uppercase;font-size:9px;color:var(--muted);letter-spacing:.05em}.print-meta b{font-size:12px}.print-sheet h4{font-size:12px;margin:16px 0 7px}.signature-row{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;margin-top:55px}.signature-row span{border-top:1px solid #64748b;padding-top:6px;text-align:center;font-size:10px;color:var(--muted)}.purchase-line,.purchase-head{display:grid;grid-template-columns:2fr .75fr .75fr .9fr auto;gap:8px;align-items:center}.purchase-head{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:700;padding:0 8px}.purchase-line b{font-size:12px}.document-total{margin-right:auto;font-size:12px}.document-total b{display:block;font-size:19px}.nav-item{min-height:42px}.sidebar{overflow-y:auto}.demo-note{flex-shrink:0}
@media(max-width:1200px){.job-layout{grid-template-columns:1fr}.purchase-line,.purchase-head{grid-template-columns:1.5fr .75fr .75fr .9fr auto}}
@media(max-width:720px){.job-layout .form-grid{grid-template-columns:1fr}.job-layout .form-grid .wide{grid-column:auto}.entry-line,.purchase-line{grid-template-columns:1fr}.purchase-head{display:none}.purchase-line .btn{grid-column:auto}.print-meta{grid-template-columns:1fr 1fr}.signature-row{grid-template-columns:1fr 1fr}.compact-stats{grid-template-columns:1fr 1fr}}
.item-source-panel{border:1px solid #bfdbfe;background:#f8fbff;border-radius:12px;padding:16px}.item-source-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.item-source-head span:first-child{display:block;color:#2563eb;font-size:10px;font-weight:800;letter-spacing:.08em}.item-source-head b{display:block;margin-top:3px;font-size:14px}.item-source-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.item-source-facts div{min-width:0;border:1px solid #dbeafe;border-radius:8px;background:#fff;padding:9px}.item-source-facts span,.item-source-mix>span{display:block;color:var(--muted);font-size:9px;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.item-source-facts b{display:block;margin-top:3px;font-size:12px;overflow-wrap:anywhere}.item-source-mix{margin-top:10px;border-top:1px solid #dbeafe;padding-top:10px}.item-source-mix>div{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-bottom:1px dashed #dbeafe;font-size:12px}.item-source-mix>div:last-child{border-bottom:0}.item-source-mix strong{color:#2563eb}.item-source-mix small{display:block;margin-top:7px;color:var(--muted)}
@media(max-width:720px){.item-source-head{align-items:flex-start}.item-source-facts{grid-template-columns:1fr 1fr}}
@page{size:A4 portrait;margin:10mm}@media print{body.printing-job .sidebar,body.printing-job .topbar,body.printing-job .section-title,body.printing-job .content>*:not(.job-layout),body.printing-job .job-layout>.card:first-child,body.printing-job .no-print,body.printing-job .toast{display:none!important}body.printing-job .app-shell,body.printing-job main,body.printing-job .content,body.printing-job .job-layout,body.printing-job .preview-card{display:block!important;width:100%!important;max-width:none!important;margin:0!important;padding:0!important;background:white!important;border:0!important;box-shadow:none!important}body.printing-job #jobPrintArea{display:block!important;border:0!important;box-shadow:none!important;padding:10mm!important}.print-sheet table{min-width:0!important}.print-sheet th,.print-sheet td{font-size:10px}.print-sheet{page-break-inside:avoid}}

/* v22 Item Master -> Colour Recipe workflow */
.linked-recipe-card{border:1px solid var(--line);border-radius:12px;padding:14px;background:#fbfcfe;overflow:hidden}
.variant-panel-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:12px}
.variant-panel-head>div{display:grid;gap:3px}.variant-panel-head small{color:var(--muted);font-weight:400}.variant-table td:last-child{white-space:nowrap}.danger-lite{color:#b91c1c}
.v22-modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.48);z-index:9999;display:flex;align-items:center;justify-content:center;padding:24px;overflow:auto}
.v22-modal-card{width:min(920px,96vw);max-height:92vh;overflow:auto;background:#fff;border-radius:16px;box-shadow:0 24px 70px rgba(15,23,42,.25);padding:22px}
.v22-modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.v22-modal-head h3{margin:0 0 3px}.v22-modal-head p{margin:0;color:var(--muted)}
.v22-close{border:0;background:#f1f5f9;width:38px;height:38px;border-radius:50%;font-size:26px;line-height:1;cursor:pointer;color:#334155}.v22-modal-grid{margin-top:16px}
.v22-inline-mix{display:grid;gap:7px;border:1px solid var(--line);border-radius:10px;padding:10px;background:#fff}.v22-inline-mix>div{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 10px;border-bottom:1px solid #eef2f7}.v22-inline-mix>div:last-child{border-bottom:0}.v22-inline-mix span{display:grid;gap:2px}.v22-inline-mix small{color:var(--muted)}
/* Fix clipped Remove button in Colour Recipe raw-material rows */
.material-mix-row{grid-template-columns:minmax(0,1.55fr) minmax(230px,.85fr)!important;min-width:0}
.material-mix-row>div[style*="display:flex"]{display:grid!important;grid-template-columns:minmax(100px,1fr) max-content;gap:8px!important;min-width:0;align-items:center}
.material-mix-row>div[style*="display:flex"] input{min-width:0;width:100%}.material-mix-row .btn{white-space:nowrap;min-width:max-content}
@media(max-width:900px){.variant-panel-head{align-items:stretch;flex-direction:column}.variant-panel-head .btn{align-self:flex-start}}
@media(max-width:720px){.material-mix-row{grid-template-columns:1fr!important}.material-mix-row>div[style*="display:flex"]{grid-template-columns:minmax(0,1fr) max-content}.v22-modal-backdrop{padding:10px}.v22-modal-card{padding:15px}}

/* v23 Production Reconciliation */
.v23-four{grid-template-columns:repeat(4,1fr)}
.v23-reconcile{margin-top:8px;padding-top:2px;border-top:1px solid var(--line)}
.v23-ratio-input{width:105px;height:34px;border:1px solid #d9dee6;border-radius:7px;padding:0 8px;background:#fff}
.btn:disabled{opacity:.45;cursor:not-allowed;filter:none}
@media(max-width:900px){.v23-four{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.v23-four{grid-template-columns:1fr}}

/* v24 Controlled Over Production */
.v24-six{grid-template-columns:repeat(6,minmax(0,1fr))}
.v24-over-metric{border-color:#f59e0b!important;background:#fffbeb!important}
.v24-over-metric b{color:#b45309}
.v24-onplan{margin-top:16px;padding:12px 14px;border:1px solid #bbf7d0;border-radius:10px;background:#f0fdf4;color:#166534;font-size:12px}
.v24-over-card{margin-top:16px;padding:16px;border:1px solid #fbbf24;border-radius:12px;background:#fffdf5}
.v24-over-card .card-head{margin-bottom:12px}
.v24-over-metrics{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:14px}
.v24-danger-callout{border-color:#fecaca!important;background:#fef2f2!important;color:#991b1b!important}
.badge.red{background:#fee2e2;color:#991b1b}
@media(max-width:1180px){.v24-six{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:780px){.v24-six,.v24-over-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.v24-six,.v24-over-metrics{grid-template-columns:1fr}}

/* v25 Processed Component / Process Routing */
.v25-pc-rule{margin-bottom:14px}
.v25-route-preview{display:grid;grid-template-columns:1fr auto 1fr;gap:14px;align-items:center;margin:18px 0;padding:16px;border:1px solid var(--line);border-radius:12px;background:#fafcff}
.v25-route-preview span{padding:12px;border-radius:10px;background:#fff;border:1px solid var(--line);font-weight:700}
.v25-route-preview span small{display:block;color:var(--muted);font-size:10px;letter-spacing:.08em;margin-bottom:4px}
.v25-route-preview b{text-align:center;color:var(--accent)}
.route-arrow{font-size:18px;font-weight:800;color:var(--accent)}
.v25-job-route{border-left:4px solid var(--accent)}
td small{display:block;color:var(--muted);margin-top:3px}
@media(max-width:760px){.v25-route-preview{grid-template-columns:1fr}.v25-route-preview b{transform:none}}

/* v26 multi-user record locking */
.v26-lock-overlay{position:fixed;inset:0;background:rgba(15,23,42,.58);display:flex;align-items:center;justify-content:center;z-index:10000;padding:20px}
.v26-lock-dialog{width:min(520px,100%);background:#fff;border-radius:18px;padding:28px;box-shadow:0 24px 70px rgba(15,23,42,.3);text-align:center}
.v26-lock-icon{font-size:38px;margin-bottom:8px}
.v26-lock-dialog h3{margin:0 0 10px;font-size:22px}
.v26-lock-dialog p{margin:0 0 14px;color:var(--muted);line-height:1.55}
.v26-lock-note{text-align:left;background:#fff7ed;border:1px solid #fed7aa;border-radius:12px;padding:12px 14px;margin:0 0 18px;line-height:1.5;color:#7c2d12}
.v26-lock-lost{background:#fff1f2!important;border-color:#fecdd3!important;color:#9f1239!important;margin:14px 0}
[data-v26-lock-code]{display:inline-flex;min-width:88px}

/* v27 · SFG colour-wise stock */
.v27-stock-field{grid-column:1/-1}
.v27-stock-colour-panel{border:1px solid var(--line);border-radius:12px;padding:14px;background:#fff}
.v27-stock-colour-panel .variant-panel-head{margin-bottom:10px}
.v27-stock-colour-panel .variant-panel-head small{display:block;color:var(--muted);margin-top:4px;font-weight:400}
#v27SfgRule{grid-column:1/-1}
@media(max-width:900px){.v27-stock-colour-panel .variant-panel-head{align-items:flex-start;gap:10px;flex-direction:column}}

/* v28 - Item Part List / Product Structure */
.v28-bom-head,.bom-line.v28-bom-line{display:grid;grid-template-columns:minmax(280px,2.4fr) minmax(90px,.7fr) minmax(95px,.7fr) minmax(95px,.7fr) 96px;gap:10px;align-items:center}
.v28-bom-head{padding:0 8px 8px;color:var(--muted);font-size:12px;font-weight:700}
.v28-part-select{min-width:0}.v28-part-select>small{display:block;font-size:10px;font-weight:800;color:var(--muted);margin:0 0 4px}.v28-part-select select{width:100%}.v28-legacy-name{display:block!important;margin-top:4px!important;color:#92400e!important}
.v28-remove,.v28-delete{white-space:nowrap}.btn-danger{background:#b42318;color:#fff;border:1px solid #b42318}.btn-danger:hover{filter:brightness(.96)}
.v28-delete-confirm{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.v28-delete-confirm>span{font-size:12px;font-weight:700;color:#b42318}
.v28-structure-detail td{background:#f8fafc}.v28-structure-box{padding:12px 4px 6px}.v28-delete-card{margin-top:18px;border-color:#fecaca}
@media(max-width:900px){.v28-bom-head{display:none}.bom-line.v28-bom-line{grid-template-columns:1fr 1fr}.bom-line.v28-bom-line .v28-part-select{grid-column:1/-1}.bom-line.v28-bom-line .v28-remove{grid-column:1/-1;justify-self:start}}


/* v29 - corrected BOM-derived Item Part List + visible ERP version */
.erp-version{display:inline-flex;align-items:center;justify-content:center;margin-top:5px;padding:2px 7px;border-radius:999px;background:#dc2626;color:#fff!important;font-size:9px!important;font-style:normal;font-weight:800;letter-spacing:.06em;width:max-content}
.top-version{margin-top:0;padding:5px 9px;font-size:10px!important}
.v29-info{background:#f8fafc!important;border-color:#cbd5e1!important;color:#475569!important}
@media(max-width:720px){.top-version{display:none}}

/* v31 BOM colour control + Material Issue */
.v31-bom-head,.v31-bom-line{display:grid;grid-template-columns:minmax(260px,2.2fr) 95px 110px 90px minmax(210px,1.5fr) 92px;gap:10px;align-items:center}
.v31-bom-head{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:0 0 8px}
.v31-colour-rule{display:grid;grid-template-columns:1fr;gap:6px;min-width:0}.v31-colour-rule select{min-width:0;width:100%}
.v31-issue-table input,.v31-issue-table select,.v31-consume{min-width:105px;max-width:170px}
.v31-issue-table td small,.v31-reconcile td small,.v31-reconcile td b+small{display:block;color:var(--muted);margin-top:3px}
.v31-negative{color:#b91c1c;font-weight:700}.v31-positive{color:#047857}.v31-reconcile{margin-top:18px;border-top:1px solid var(--line);padding-top:2px}
@media(max-width:1150px){.v31-bom-head{display:none}.v31-bom-line{grid-template-columns:1fr 100px 110px;align-items:start}.v31-bom-line .v28-part-select,.v31-bom-line .v31-colour-rule{grid-column:1/-1}.v31-bom-line .v28-remove{grid-column:3}}

/* v33 complete colour-wise Job Card */
.v33-colour-plan{margin-top:16px;border-top:1px solid var(--line);padding-top:4px}
.v33-colour-qty{min-width:110px;width:120px}
.v33-colour-plan tfoot th{background:#f8fafc;border-top:2px solid var(--line)}
.danger-lite{color:#b91c1c!important;border-color:#fecaca!important}
@media(max-width:900px){.v33-colour-qty{min-width:90px;width:90px}}

/* v34 Monthly Planning + global module search */
.v34-plan-entry-line{grid-template-columns:minmax(320px,2fr) minmax(150px,.75fr) 90px}
.v34-plan-actions{display:flex;gap:6px;flex-wrap:wrap;min-width:180px}
.v34-zero-balance{color:#047857}
.v34-module-search{margin-left:auto;display:flex;align-items:center;gap:7px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:0 7px;height:40px;min-width:260px;box-shadow:0 1px 2px rgba(16,24,40,.03)}
.v34-module-search span{color:var(--muted);font-size:16px}.v34-module-search input{border:0;outline:0;height:36px;min-width:190px;flex:1;background:transparent;font-size:12px}.v34-module-search button{border:0;background:transparent;color:var(--muted);font-size:19px;line-height:1;cursor:pointer;padding:2px 5px}.v34-module-search button:hover{color:var(--accent)}
.section-title{flex-wrap:wrap}.section-title>.v34-module-search{order:3}
@media(max-width:850px){.v34-module-search{width:100%;min-width:0;order:3}.v34-plan-entry-line{grid-template-columns:1fr 130px 90px}}
@media(max-width:560px){.v34-plan-entry-line{grid-template-columns:1fr}.v34-plan-entry-line .btn{justify-self:start}}

/* v35 recursive BOM / routing Job Card explosion */
.v35-explosion-preview table small,.v35-searchable-row small{display:block;color:var(--muted);margin-top:2px}
.v35-searchable-row select,.v35-searchable-row input{min-width:145px;max-width:220px}
.v35-searchable-row td{vertical-align:top}

/* v40: module print + MC material requirement */
.v40-mc-materials details summary{cursor:pointer;padding:8px 0;color:var(--ink,#1f2937)}
.v40-module-print{margin-left:auto;white-space:nowrap}
.v40-print-toolbar{display:flex;justify-content:flex-end;margin-bottom:12px}
@media print{
  body.v40-print-current-module .sidebar,
  body.v40-print-current-module .topbar,
  body.v40-print-current-module .toast,
  body.v40-print-current-module .no-print,
  body.v40-print-current-module button{display:none!important}
  body.v40-print-current-module main{margin:0!important;width:100%!important;max-width:none!important}
  body.v40-print-current-module #view{padding:0!important;margin:0!important}
  body.v40-print-current-module .content{padding:0!important}
  body.v40-print-current-module .card{break-inside:avoid;box-shadow:none!important;border:1px solid #bbb!important}
  body.v40-print-current-module .table-wrap{overflow:visible!important}
  body.v40-print-current-module table{font-size:9pt!important;width:100%!important}
  body.v40-print-current-module input,
  body.v40-print-current-module select,
  body.v40-print-current-module textarea{border:0!important;background:transparent!important;color:#000!important}
  body.v40-print-current-module details{display:block!important}
  body.v40-print-current-module details>summary{display:none!important}
  body.v40-print-current-module details>*{display:block!important}
}

/* v49 Job Card controls */
.v49-manual-input{background:#fff!important;border:2px solid #93c5fd!important;box-shadow:0 0 0 2px rgba(59,130,246,.08);font-weight:700}
.v49-manual-input:focus{outline:none;border-color:#2563eb!important;box-shadow:0 0 0 3px rgba(37,99,235,.15)}
.v44-output-item select option.v49-released-option{color:#94a3b8;font-style:italic}

/* v51 Purchase Requirements / Draft PO */
[data-view="purchaseRequirements"] span:first-child{font-size:13px}
#view select{max-width:100%}
@media print{
  body.v40-print-current-module .sidebar,body.v40-print-current-module .topbar{display:none!important}
  body.v40-print-current-module main{margin:0!important;width:100%!important}
}
