:root{color-scheme:light;--brand: #10468e;--brand-dark: #0b3670;--brand-text: #082d61;--body: #1f2328;--muted: #5f6e86;--page: #eef0f3;--panel: #ffffff;--line: #b8c5d8;--line-soft: #d6dde8;--danger: #a92525;--danger-bg: #fff1f1;--page-gutter: clamp(14px, 2vw, 34px);--panel-pad-x: clamp(18px, 3vw, 64px);--panel-pad-y: clamp(24px, 3vw, 46px)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--page);color:var(--body);font-family:Arial,Helvetica,sans-serif}.topbar{height:86px;background:var(--brand);box-shadow:0 2px #00000024}.topbar-inner,main{width:min(1920px,calc(100% - (var(--page-gutter) * 2)));margin:0 auto}.topbar-inner{height:100%;display:flex;align-items:center;justify-content:space-between}.topbar-link{background:#ffffff26;color:#fff;border:1px solid rgba(255,255,255,.4);border-radius:6px;padding:8px 16px;font-size:.875rem;font-weight:500;cursor:pointer;transition:background .15s}.topbar-link:hover{background:#ffffff40}main{margin-top:clamp(18px,3vw,46px);margin-bottom:clamp(18px,3vw,46px)}.brand{margin:0;color:#fff;font-family:Georgia,Times New Roman,serif;font-size:clamp(28px,3vw,38px);font-weight:800;line-height:1;letter-spacing:0}.panel{background:var(--panel);border:1px solid #e1e6ef;box-shadow:0 12px 28px #17253a24;min-height:430px;padding:var(--panel-pad-y) var(--panel-pad-x) clamp(32px,4vw,54px)}.eyebrow{margin:0 0 10px;color:#5d6f95;font-size:13px;font-weight:800;letter-spacing:1.6px;text-transform:uppercase}h2{margin:0;color:var(--brand-text);font-size:clamp(28px,3vw,38px);line-height:1.15;letter-spacing:0}.lede{max-width:min(1120px,100%);margin:16px 0 0;color:#252a31;font-size:16px;line-height:1.55}.toolbar{display:flex;flex-wrap:wrap;gap:14px;margin-top:26px}.template-link{color:var(--brand);font-size:14px;font-weight:800;text-decoration:none}.template-link:hover{color:var(--brand-dark);text-decoration:underline}.upload-form{display:grid;grid-template-columns:minmax(0,1fr) minmax(190px,244px);gap:20px;margin-top:62px}.file-input{position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip:rect(0,0,0,0)}.file-drop{min-height:178px;border:1px solid var(--line);background:#fff;box-shadow:0 2px 6px #142a5014;cursor:pointer;display:flex;align-items:center;padding:44px 34px}.file-summary{display:grid;grid-template-columns:86px minmax(0,1fr);gap:22px;align-items:center;width:100%}.file-badge{width:86px;height:86px;border:1px solid var(--line);background:#f4f7fb;color:var(--brand);display:grid;place-items:center;font-size:14px;font-weight:900}.file-name{display:block;color:var(--brand-text);font-size:23px;font-weight:900;line-height:1.2;overflow-wrap:anywhere}.file-size{display:block;margin-top:8px;color:var(--muted);font-size:15px}.controls{display:grid;grid-template-rows:82px 82px;gap:14px}button,.submit-link{appearance:none;border:1px solid var(--brand);border-radius:0;cursor:pointer;font-family:inherit;font-size:14px;font-weight:900;text-decoration:none}.clear-button{background:#fff;color:var(--brand-text)}.submit-button,.submit-link{background:var(--brand);color:#fff}.submit-button:disabled{background:#8da6c8;border-color:#8da6c8;cursor:not-allowed}.validate-button{background:#fff;color:var(--brand-text);border:2px solid var(--brand);font-weight:800}.validate-button:disabled{border-color:#8da6c8;color:#8da6c8;cursor:not-allowed}.notice{margin:0 0 22px;border:1px solid var(--line);background:#fff;color:var(--brand-text);padding:14px 18px;font-weight:800}.notice.error{border-color:#e1a3a3;background:var(--danger-bg);color:var(--danger)}.notice.success{border-color:#9cc3a5;background:#f0fff3}.notice.info{border-color:#7ab3e0;background:#eef6ff;color:#1a5a8c;font-weight:600}.notice.warning{border-color:#d8a642;background:#fff8e8;color:#7a5310}.mapping-form{margin-top:34px}.mapping-table-wrap{margin-top:22px;border:1px solid var(--line);overflow-x:auto}.mapping-table{width:100%;border-collapse:collapse;min-width:780px}.mapping-table th,.mapping-table td{border-bottom:1px solid var(--line-soft);padding:12px 14px;text-align:left;vertical-align:middle;font-size:14px}.mapping-table th{color:var(--brand-text);background:#f6f8fb;font-size:12px;letter-spacing:.8px;text-transform:uppercase}.mapping-table select{width:100%;min-height:38px;border:1px solid var(--line);background:#fff;color:var(--body);font:inherit;padding:0 8px}.status-pill{display:inline-flex;align-items:center;justify-content:center;min-height:24px;min-width:74px;padding:0 10px;border:1px solid var(--line);color:#46556b;background:#f7f9fc;font-size:12px;font-weight:800;line-height:1;text-transform:uppercase;border-radius:999px}.status-pill.exact{color:#1f6b43;background:#edf8f1;border-color:#a9d8bb}.status-pill.review{color:#87520d;background:#fff7e6;border-color:#efc978}.status-pill.ignored{color:#53657d;background:#f1f4f8;border-color:#c4cfdd}.status-pill.composite{color:#4b2a86;background:#f3edfc;border-color:#cbb6ee}.mapping-table tbody tr:has(.status-pill.exact){background:#fbfefc}.mapping-table tbody tr:has(.status-pill.review){background:#fffdf8}.mapping-table tbody tr:has(.status-pill.ignored){background:#fbfcfe}.mapping-table tbody tr:has(.status-pill.composite){background:#fdfbff}.mapping-hint{margin:6px 0 0;font-size:12px;line-height:1.4;color:#4b2a86}.mapping-actions{display:flex;gap:14px;justify-content:flex-end;margin-top:24px}.mapping-actions a,.mapping-actions button{min-height:48px;padding:0 18px;display:inline-flex;align-items:center;justify-content:center}.data-preview{margin-top:28px}.preview-note{color:var(--muted);font-size:14px;margin-top:8px}.complete-panel .complete-summary{margin-top:28px;padding:22px 24px;border:1px solid var(--line);background:#f9fbfd;font-size:15px;line-height:1.55}.complete-panel .complete-summary p{margin:0 0 12px}.complete-panel .complete-summary p:last-child{margin-bottom:0}.complete-counts{margin-top:16px}.complete-counts ul{margin:10px 0 0;padding-left:22px;color:var(--brand-text)}.complete-counts li{margin-bottom:6px}.review-toolbar{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}.review-toolbar .clear-button,.review-toolbar .submit-button{min-height:42px;padding:0 16px}.review-filter-bar{display:flex;align-items:center;gap:16px;margin-top:14px;padding:12px 16px;border:1px solid var(--line);background:#f9fbfd;border-radius:4px}.review-filter-bar .filter-label{display:flex;align-items:center;gap:10px;font-size:13px;font-weight:700;color:var(--brand-text)}.review-filter-bar .filter-label select{min-height:36px;min-width:260px;padding:0 8px;font:inherit;font-weight:400;border:1px solid var(--line);background:#fff}.review-filter-bar .filter-count{font-size:13px;color:var(--muted);font-weight:600}.selection-summary{margin:10px 0 0;color:var(--brand-text);font-size:14px;font-weight:700}.optional-fields-panel{margin-top:18px;padding:18px 20px;border:1px solid var(--line);background:#f9fbfd}.optional-fields-panel h4{margin:0 0 8px;color:var(--brand-text);font-size:16px}.optional-fields-note,.optional-field-help{margin:0 0 12px;color:var(--muted);font-size:14px;line-height:1.45}.optional-field-help{margin-bottom:0}.optional-fields-controls{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}.optional-field-label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:700;color:var(--brand-text)}.optional-field-label select,.optional-field-value{min-height:40px;min-width:min(280px,100%);border:1px solid var(--line);padding:0 10px;font:inherit;background:#fff}.preview-table th.col-optional,.preview-table td.col-optional{background:#f9fcff}.preview-table thead th.col-optional{background:#f0f6fc}.preview-table-wrap{margin-top:14px;border:1px solid var(--line);overflow:auto;max-height:min(62vh,720px);width:100%}.preview-table{width:max-content;min-width:100%;table-layout:fixed;border-collapse:separate;border-spacing:0}.preview-table th,.preview-table td{border-bottom:1px solid var(--line-soft);border-right:1px solid var(--line-soft);padding:7px 8px;font-size:13px;white-space:nowrap;text-align:left;overflow:hidden;text-overflow:ellipsis;box-sizing:border-box}.preview-table th.col-data-column{position:sticky;top:0;z-index:2;cursor:grab;vertical-align:top;background:#f6f8fb;box-shadow:0 1px 0 var(--line-soft)}.preview-table th.col-data-column.col-dragging{opacity:.55;cursor:grabbing}.preview-table th.col-data-column.col-drag-over{box-shadow:inset 0 0 0 2px var(--brand)}.col-header-label{display:block;padding-right:10px}.mandatory-marker{color:var(--danger);font-weight:700;margin-left:2px}.preview-table th.col-mandatory{border-bottom:2px solid var(--danger)}.col-resize-handle{position:absolute;top:0;right:0;width:8px;height:100%;cursor:col-resize;touch-action:none}.col-resize-handle:after{content:"";position:absolute;top:18%;bottom:18%;right:2px;width:2px;background:var(--line)}.col-resize-handle:hover:after,body.column-resizing .col-resize-handle:after{background:var(--brand)}body.column-resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}.preview-table thead th{position:sticky;top:0;background:#f6f8fb;color:var(--brand-text);box-shadow:0 1px 0 var(--line-soft)}.preview-table th.col-select,.preview-table td.col-select{min-width:0;width:52px;padding:7px 6px;text-align:center;vertical-align:middle}.preview-table th.col-copy-from,.preview-table td.col-copy-from{left:0}.preview-table th.col-apply-to,.preview-table td.col-apply-to{left:52px}.preview-table thead th.col-select{z-index:5}.preview-table thead th.col-copy-from,.preview-table thead th.col-apply-to{z-index:6}.preview-table tbody td.col-select{position:sticky;z-index:3;background:#fff}.preview-table tbody td.col-copy-from,.preview-table tbody td.col-apply-to{z-index:4}.preview-table tbody tr.row-selected-source td,.preview-table tbody tr.row-selected-source td.col-select{background:#eef4fc}.apply-to-header{display:inline-flex;flex-direction:column;align-items:center;gap:4px;white-space:normal;line-height:1.2}.select-radio,.select-checkbox{margin:0;cursor:pointer}.column-help{display:block;margin-top:3px;color:var(--muted);font-size:11px;font-weight:700;line-height:1.2;white-space:normal}.cell-input,.code-input{width:100%;min-width:0;min-height:34px;border:1px solid var(--line);padding:0 8px;font:inherit;background:#fff;text-overflow:ellipsis}select.cell-input{cursor:pointer;padding:0 4px}.auto-classified select.cell-input{background:#eef6ff;border-color:#7ab3e0;font-style:italic}.auto-classified:after{content:"auto";position:absolute;top:1px;right:4px;font-size:9px;color:#4a90c4;font-style:italic;pointer-events:none}.auto-classified{position:relative}.col-remove-header,.col-remove{width:36px;min-width:36px;max-width:36px;text-align:center;padding:0 2px}.remove-row-button,.restore-row-button{width:26px;height:26px;border:none;border-radius:3px;cursor:pointer;font-size:16px;line-height:1;display:inline-flex;align-items:center;justify-content:center}.remove-row-button{background:#fff1f1;color:var(--danger)}.remove-row-button:hover{background:#fdd}.restore-row-button{background:#eef6ff;color:var(--brand)}.restore-row-button:hover{background:#dbeeff}.excluded-rows-notice{display:flex;align-items:center;gap:12px;margin-top:12px;padding:10px 16px;background:#fff8e6;border:1px solid #e6c85c;border-radius:4px;font-size:13px;font-weight:600;color:#7a5d00}.restore-all-button{background:none;border:none;color:var(--brand);font-weight:700;font-size:13px;cursor:pointer;text-decoration:underline;padding:0}.empty-preview{margin-top:14px;border:1px solid var(--line);background:#f9fbfd;padding:28px}.empty-preview h4{color:var(--brand-text);font-size:18px;margin-bottom:8px}.empty-preview p{color:var(--muted);font-size:14px;line-height:1.5}.validation-list{margin:12px 0 0;color:var(--danger);font-size:14px;line-height:1.5}.validation-overflow{margin:8px 0 0;font-size:13px;font-style:italic}details.notice{padding:0}details.notice>summary{padding:14px 18px;cursor:pointer;display:flex;align-items:center;gap:10px;list-style:none;-webkit-user-select:none;user-select:none}details.notice>summary::-webkit-details-marker{display:none}details.notice>summary::marker{display:none;content:""}.error-summary-toggle{display:inline-block;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;padding:3px 8px;border:1px solid var(--danger);border-radius:3px;color:var(--danger);margin-left:auto;white-space:nowrap}details[open].notice .error-summary-toggle .toggle-show{display:none}details.notice:not([open]) .error-summary-toggle .toggle-hide{display:none}details.notice>.validation-list{margin:0;padding:0 18px 14px;max-height:240px;overflow-y:auto;border-top:1px solid #e1a3a3}.pager{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:14px}.pager-controls{display:flex;gap:10px}.pager button{min-height:38px;padding:0 14px;background:#fff;color:var(--brand-text)}@media(max-width:820px){.topbar-inner,main{width:calc(100% - 24px)}.panel{padding:24px 16px 28px}.upload-form{grid-template-columns:1fr;margin-top:36px}.controls{grid-template-rows:58px 58px}.mapping-actions{justify-content:stretch;flex-wrap:wrap}.mapping-actions a,.mapping-actions button{flex:1 1 180px}.preview-table{min-width:980px}}.review-tabs{display:flex;gap:0;border-bottom:2px solid #e2e8f0;margin-bottom:1.25rem}.review-tab{padding:.5rem 1.25rem;border:none;background:none;font-size:.9rem;font-weight:500;color:#64748b;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:color .15s,border-color .15s}.review-tab:hover{color:#334155}.review-tab-active{color:#1e40af;border-bottom-color:#1e40af}.reference-panel{padding:.5rem 0}.reference-panel h3{font-size:1.1rem;margin-bottom:.5rem}.reference-note{color:#64748b;font-size:.85rem;margin-bottom:1.25rem}.reference-section{margin-bottom:1.5rem;padding:1rem;background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px}.reference-section h4{font-size:.95rem;margin-bottom:.75rem;color:#1e293b}.reference-columns{display:flex;gap:2rem;flex-wrap:wrap}.reference-column h5{font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:#64748b;margin-bottom:.4rem}.reference-table{width:100%;border-collapse:collapse;font-size:.82rem;margin-bottom:1.5rem}.reference-table thead{position:sticky;top:0;z-index:1}.reference-table th{background:#f1f5f9;border:1px solid #e2e8f0;padding:.4rem .6rem;text-align:left;font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.03em;color:#475569;white-space:nowrap}.reference-table td{border:1px solid #e2e8f0;padding:.35rem .6rem;color:#334155}.reference-table tbody tr:hover{background:#f8fafc}.reference-table .code-cell{font-family:SF Mono,Fira Code,monospace;font-weight:500;white-space:nowrap}.reference-table .states-cell{font-size:.72rem;color:#64748b;max-width:260px;word-break:break-word}
