:root{--navy:#14233b;--blue:#2166d1;--blue-dark:#174da2;--surface:#fff;--canvas:#f4f7fb;--border:#d8e0eb;--text:#172033;--muted:#617087;--danger:#b42318;--danger-bg:#fff1f0;--success:#067647;--success-bg:#ecfdf3;--warning:#a15c00;--warning-bg:#fff8e8;--radius:12px;--shadow:0 8px 28px rgba(20,35,59,.08)}
*{box-sizing:border-box}html{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);background:var(--canvas)}body{margin:0;line-height:1.5}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:3px solid rgba(33,102,209,.3);outline-offset:2px}
.skip-link{position:absolute;left:-999px}.skip-link:focus{left:1rem;top:1rem;background:#fff;padding:.75rem;z-index:20}.topbar{background:var(--navy);color:#fff}.nav{max-width:1280px;margin:auto;min-height:64px;padding:0 24px;display:flex;align-items:center;gap:24px}.brand{font-weight:750;font-size:1.15rem;color:#fff}.brand:hover{text-decoration:none}.nav-links{display:flex;align-items:center;gap:18px;margin-left:auto}.nav-links a{color:#dfe8f5}.nav form{margin:0}.nav .link-button{color:#dfe8f5;background:none;border:0;padding:0;cursor:pointer}
.container{max-width:1280px;margin:auto;padding:32px 24px 64px}.container.narrow{max-width:760px}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:24px}.eyebrow{text-transform:uppercase;letter-spacing:.08em;font-size:.75rem;font-weight:750;color:var(--blue);margin:0 0 5px}h1{font-size:clamp(1.75rem,3vw,2.35rem);line-height:1.18;margin:0 0 8px}h2{font-size:1.2rem;margin:0 0 16px}p{margin:0 0 16px}.muted{color:var(--muted)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px;margin-bottom:24px}.card-header{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:18px}.grid{display:grid;gap:18px}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.field{display:flex;flex-direction:column;gap:7px}.field label,.field-label{font-weight:650}.required{color:var(--danger);font-weight:750}.help{font-size:.875rem;color:var(--muted)}input[type=text],input[type=password],input[type=file],select,textarea{width:100%;border:1px solid #b8c4d4;border-radius:8px;padding:10px 12px;background:#fff;color:var(--text)}input[type=file]{padding:14px;background:#f9fbfe;border-style:dashed}.form-errors{color:var(--danger);font-size:.875rem;margin:4px 0 0;padding-left:20px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:8px;padding:10px 16px;font-weight:700;cursor:pointer;text-decoration:none;min-height:42px}.btn:hover{text-decoration:none}.btn-primary{background:var(--blue);color:#fff}.btn-primary:hover{background:var(--blue-dark)}.btn-secondary{background:#fff;border-color:#b8c4d4;color:var(--text)}.btn-danger{background:var(--danger);color:#fff}.btn-small{padding:7px 10px;min-height:34px;font-size:.875rem}.actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:20px}
.alert{border-radius:9px;padding:13px 15px;margin-bottom:18px;border:1px solid}.alert-error,.error{color:var(--danger);background:var(--danger-bg);border-color:#f4b9b4}.alert-success,.success{color:var(--success);background:var(--success-bg);border-color:#a6e8c5}.alert-warning{color:var(--warning);background:var(--warning-bg);border-color:#f0d58b}.badge{display:inline-flex;border-radius:999px;padding:3px 9px;font-size:.78rem;font-weight:750;background:#edf2f8;color:#43546a}.badge.success{background:var(--success-bg);color:var(--success)}.badge.warning{background:var(--warning-bg);color:var(--warning)}.badge.danger{background:var(--danger-bg);color:var(--danger)}
.table-wrap{overflow:auto;border:1px solid var(--border);border-radius:10px;background:#fff}.data-table{width:100%;border-collapse:collapse;min-width:760px}.data-table th{background:#f7f9fc;color:#42526a;text-align:left;font-size:.78rem;text-transform:uppercase;letter-spacing:.045em;padding:11px 13px;border-bottom:1px solid var(--border);white-space:nowrap}.data-table td{padding:12px 13px;border-bottom:1px solid #e8edf4;vertical-align:top}.data-table tbody tr:last-child td{border-bottom:0}.data-table tbody tr:hover{background:#fafcff}.data-table tr.invalid{background:#fff8f7}.cell-stack{display:flex;flex-direction:column;gap:5px}.inline-form{display:flex;gap:6px;min-width:240px}.inline-form input{min-width:150px}.warning-list{color:var(--danger);font-size:.82rem;margin:5px 0 0;padding-left:18px}
.stepper{display:flex;gap:8px;margin-bottom:24px}.step{flex:1;background:#e8edf4;height:5px;border-radius:5px}.step.active{background:var(--blue)}.mapping-column{min-width:190px}.mapping-select.suggested{border-color:var(--blue);background:#f5f9ff}.sample-list{margin:0;padding-left:18px;color:var(--muted);font-size:.875rem}.bulk-toolbar{display:none;align-items:center;gap:12px;background:var(--navy);color:#fff;border-radius:10px;padding:11px 14px;margin-bottom:12px;position:sticky;top:8px;z-index:5}.bulk-toolbar.visible{display:flex}.bulk-toolbar .btn-secondary{margin-left:auto}.checkbox{width:18px;height:18px;accent-color:var(--blue)}
.empty{text-align:center;padding:48px 24px;color:var(--muted)}.status-row{display:flex;gap:16px;align-items:center;flex-wrap:wrap}.progress{height:8px;background:#e4eaf2;border-radius:8px;overflow:hidden;min-width:140px}.progress span{display:block;height:100%;background:var(--blue)}.login-shell{min-height:calc(100vh - 64px);display:grid;place-items:center;padding:32px 20px}.login-card{width:min(440px,100%)}.login-mark{width:48px;height:48px;border-radius:12px;background:var(--blue);color:#fff;display:grid;place-items:center;font-weight:800;margin-bottom:20px}
@media(max-width:800px){.nav{padding:0 16px}.nav-links{gap:12px;font-size:.9rem}.container{padding:24px 16px 48px}.grid.two,.grid.three{grid-template-columns:1fr}.page-header{display:block}.page-header .actions{margin-top:16px}.card{padding:18px}.inline-form{min-width:210px}.hide-mobile{display:none}}
@media(max-width:560px){.nav{flex-wrap:wrap;padding-top:12px;padding-bottom:12px}.nav-links{width:100%;margin:0;justify-content:space-between}.bulk-toolbar{align-items:flex-start;flex-wrap:wrap}.bulk-toolbar .btn-secondary{margin-left:0}.btn{width:100%}.actions .btn-small,.inline-form .btn{width:auto}}
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
/* Data-heavy SDS workflow */
.mapping-sheet{padding:16px}.excel-preview{max-height:62vh;overflow:auto;border:1px solid var(--border);border-radius:8px}.excel-grid{border-collapse:separate;border-spacing:0;min-width:max-content;font-size:.84rem}.excel-grid th,.excel-grid td{min-width:170px;max-width:300px;padding:7px 9px;border-right:1px solid var(--border);border-bottom:1px solid var(--border);background:#fff;overflow-wrap:anywhere}.excel-grid thead th{position:sticky;top:0;z-index:3;background:#edf2f8;vertical-align:top}.excel-grid .row-number{position:sticky;left:0;z-index:4;min-width:58px;width:58px;text-align:right;background:#edf2f8}.excel-grid .suggested-column{background:#f1f7ff}.excel-grid .detected-header td{font-weight:750;background:#fff7df}.column-letter{display:block;font-size:.72rem;color:var(--blue);font-weight:800}.original-header{display:block;min-height:38px;margin:3px 0}.confidence{display:block;font-size:.72rem;color:var(--blue);margin-top:4px}.confidence.unresolved{color:var(--muted)}.sticky-actions{position:sticky;bottom:10px;z-index:8;background:#fff;border:1px solid var(--border);border-radius:10px;padding:10px;box-shadow:var(--shadow)}
.review-wide{width:calc(100vw - 32px);max-width:none;margin-left:calc(50% - 50vw + 16px)}.review-wide .card{padding:14px}.review-table{min-width:3060px;font-size:.82rem;table-layout:fixed}.review-table th{position:sticky;top:0;z-index:4}.review-table td{padding:6px 8px}.review-table .editable-cell{width:100%;min-width:0;padding:6px 8px}.review-table th:nth-child(1){width:42px}.review-table th:nth-child(2){width:410px}.review-table th:nth-child(3){width:310px}.review-table th:nth-child(4){width:105px}.review-table th:nth-child(5){width:135px}.review-table th:nth-child(6){width:210px}.review-table th:nth-child(7){width:175px}.review-table th:nth-child(8){width:165px}.review-table th:nth-child(9){width:100px}.review-table th:nth-child(10){width:190px}.review-table th:nth-child(11){width:275px}.review-table th:nth-child(12){width:115px}.review-table th:nth-child(13){width:145px}.review-table th:nth-child(14){width:100px}.review-table th:nth-child(15){width:300px}.review-table th:nth-child(16){width:130px}.review-table th:nth-child(17){width:150px}.review-table th:last-child{right:0;z-index:6}.review-table .jesa-cell{min-width:410px;white-space:nowrap}.review-table .jesa-field{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;white-space:nowrap;text-overflow:clip;overflow:visible}.review-table .jesa-field.minority-destination{background:#eef4ff;border-color:#5686d8;box-shadow:inset 0 0 0 1px #8badde}.review-table .jesa-field.jesa-whitespace{background:var(--danger-bg)!important;border-color:var(--danger)!important;box-shadow:inset 0 0 0 1px var(--danger)!important}.review-table .review-actions{position:sticky;right:0;z-index:2;background:#fff}.review-table tr.invalid .review-actions{background:#fff8f7}.review-table .inline-form{min-width:170px}.review-table .inline-form input{min-width:100px;padding:6px}.review-toolbar{position:sticky;top:8px;z-index:8}.optional-source{display:none}.show-source .optional-source{display:table-cell}

.mapping-summary{position:sticky;top:4px;z-index:10;background:#fff;border:1px solid var(--border);padding:10px 14px;margin:8px 0;border-radius:8px}.table-choice{display:flex;gap:10px;align-items:center}.table-excluded .excel-preview{display:none}.table-excluded{opacity:.72}.excel-preview:fullscreen{max-height:none;height:100vh;background:#fff;padding:12px}.excel-grid td{white-space:normal}.excel-grid td[title]{cursor:help}.review-wide .mapping-sheet{margin-left:0;margin-right:0}.review-wide .excel-preview{height:calc(100vh - 290px);max-height:none}
.metric-bar{display:flex;gap:6px;overflow:auto;padding-bottom:8px}.metric-bar button{white-space:nowrap;border:1px solid var(--border);background:#f7f9fc;border-radius:7px;padding:7px 9px}.grid-controls{display:flex;gap:10px;align-items:end;flex-wrap:wrap}.review-wide .table-wrap{max-height:calc(100vh - 285px);overflow:auto}.review-wide .data-table thead th{position:sticky;top:0;z-index:4;background:#edf2f8}.review-wide .data-table td:first-of-type+td{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;min-width:410px}.unsaved{background:#fff8d8!important}
.metric-bar{display:flex;gap:6px;overflow:auto}.grid-controls{display:flex;gap:10px}.review-wide .table-wrap{max-height:calc(100vh - 275px);overflow:auto}.review-wide .data-table thead th{position:sticky;top:0;z-index:4;background:#edf2f8}.review-table td:nth-child(2){font-family:ui-monospace,SFMono-Regular,Consolas,monospace;min-width:410px}.unsaved{background:#fff5c2!important}
.review-table tr.row-modified td{background:#fffaf0}.row-feedback.success{color:#18794e}.row-feedback.error{color:#b42318}
/* Intentionally conspicuous and only rendered when APP_ENV=development. */
.development-banner {
  position: sticky;
  top: 0;
  z-index: 1000;
  padding: .5rem 1rem;
  background: #f5c518;
  color: #201700;
  border-bottom: 2px solid #8a6500;
  font-weight: 800;
  letter-spacing: .04em;
  text-align: center;
}
.logo-management{margin-bottom:24px}.logo-management-header{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:18px}.logo-management-header h2{margin:0}.logo-management-header>.muted{max-width:520px;margin:0;text-align:right}.logo-group-title{font-size:1rem;margin:0 0 10px}.supplier-group-title{margin-top:22px}.logo-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;align-items:stretch}.client-logo-grid{grid-template-columns:minmax(300px,400px)}.logo-card{display:flex;min-width:0;flex-direction:column;align-items:flex-start;padding:18px;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:0 3px 12px rgba(20,35,59,.05)}.logo-card-header{width:100%;padding-bottom:11px;border-bottom:1px solid #e8edf4}.logo-card-header h4{font-size:1.05rem;margin:0}.logo-card-subtitle{margin:2px 0 0;color:var(--muted);font-size:.82rem}.logo-metadata{width:100%;margin:12px 0 0}.logo-metadata div{display:grid;grid-template-columns:105px minmax(0,1fr);gap:10px;padding:3px 0;font-size:.84rem}.logo-metadata dt{font-weight:700;color:#43546a}.logo-metadata dd{min-width:0;margin:0;overflow-wrap:anywhere}.supplier-logo-card form{margin:0}
.logo-preview{width:200px;height:140px;max-width:100%;display:flex;align-items:center;justify-content:center;align-self:center;overflow:hidden;margin:16px auto;padding:10px;border:1px solid #e2e8f0;border-radius:8px;background:#f9fbfe}.logo-preview img,.logo-preview svg{display:block;max-width:100%;max-height:100%;width:auto!important;height:auto!important;object-fit:contain}.logo-preview figcaption{color:var(--muted);font-size:.82rem;text-align:center}.logo-actions{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap;width:100%;margin-top:auto;padding-top:2px}.logo-actions form{margin:0}.logo-upload-form{display:flex;align-items:flex-end;gap:8px;flex:1 1 230px}.logo-upload-form label{min-width:145px;flex:1;color:#43546a;font-size:.78rem;font-weight:700}.logo-upload-form input[type=file]{margin-top:4px;padding:7px;font-size:.78rem}.logo-actions .btn-danger{background:#fff;border-color:#e4aaa5;color:var(--danger)}
@media(max-width:800px){.logo-management-header{display:block}.logo-management-header>.muted{margin-top:6px;text-align:left}.logo-card-grid,.client-logo-grid{grid-template-columns:1fr}.logo-upload-form{flex-wrap:wrap}}

/* Compact workflow refinements */
.review-table th:nth-child(2){width:300px}.review-table th:nth-child(3){width:410px}.review-table th:nth-child(4){width:310px}.review-table th:nth-child(15){width:100px}.review-table th:nth-child(16){width:150px;right:0;z-index:6}.review-table th:nth-child(17){width:130px;right:auto}.review-table .jesa-cell{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;min-width:410px}.metric-filter{border:1px solid var(--border);border-radius:999px;background:#fff;padding:5px 10px;font-weight:750;cursor:pointer}.metric-filter.active{border-color:var(--blue);box-shadow:0 0 0 2px rgba(33,102,209,.18)}
.logo-card-grid{grid-template-columns:repeat(auto-fit,minmax(420px,1fr))}.logo-card{align-items:stretch;padding:16px}.logo-card-header{padding-bottom:8px}.logo-card-header h4{margin:0}.logo-preview-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;width:100%}.logo-preview-grid h5{margin:12px 0 4px;font-size:.78rem;color:#43546a}.compact-alert{font-size:.8rem;padding:8px;margin:6px 0 0}.po-management .compact-form{max-width:760px;margin-top:20px}.po-management .compact-form>.btn{margin-top:12px}
@media(max-width:800px){.logo-card-grid,.logo-preview-grid{grid-template-columns:1fr}}
.review-table .jesa-field.jesa-duplicate{background:#fff0d6;border-color:#d97706;box-shadow:inset 0 0 0 1px #d97706}.review-table .duplicate-suggestion{margin-top:7px;font-size:.9em}.review-table .duplicate-suggestion code{white-space:normal}
