:root{--bg:#f4f6f8;--panel:#fff;--panel-soft:#f8fafb;--ink:#18212f;--muted:#687384;--line:#d8dee6;--line-strong:#c5ced9;--brand:#253858;--accent:#0f766e;--accent-strong:#0b5f59;--warn:#a15c00;--warn-bg:#fff3d8;--success:#14784f;--success-bg:#e5f4ec;--danger:#b42318;--danger-bg:#fdebe8;--blue:#2463a6;--blue-bg:#e8f1fb;--surface-muted:#f2f5f7;--shadow:0 18px 48px #18212f1a}*{box-sizing:border-box}html,body{min-height:100%}body{background:linear-gradient(90deg, #18212f09 1px, transparent 1px), linear-gradient(180deg, #18212f09 1px, transparent 1px), var(--bg);color:var(--ink);background-size:28px 28px;margin:0;font-family:IBM Plex Sans,Aptos,Segoe UI,sans-serif}button,input,select,textarea{font:inherit}button{letter-spacing:0}h1,h2,h3,p{margin:0}.auth-shell{place-items:center;min-height:100vh;padding:28px;display:grid}.auth-card{border:1px solid var(--line);border-top:5px solid var(--accent);width:min(420px,100%);box-shadow:var(--shadow);background:#fffffff5;border-radius:8px;gap:22px;padding:30px;display:grid}.auth-brand{justify-content:center;display:flex}.auth-brand img{width:228px;height:auto}.auth-kicker{color:var(--brand);text-align:center;font-family:IBM Plex Sans Condensed,IBM Plex Sans,sans-serif;font-size:18px;font-weight:800}.auth-form,.resolve-form{gap:14px;display:grid}.auth-form label,.field{gap:7px;display:grid}.auth-form span,.field span{color:var(--muted);text-transform:uppercase;font-size:12px;font-weight:800}.auth-form input,.field input,.field select,.field textarea{border:1px solid var(--line);width:100%;min-height:42px;color:var(--ink);background:#fff;border-radius:6px;padding:0 12px}.field textarea{resize:vertical;min-height:118px;padding:11px 12px}.auth-form input:focus,.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent);outline:0;box-shadow:0 0 0 3px #0f766e21}.auth-form button,.primary-action,.secondary-action{background:var(--accent);color:#fff;cursor:pointer;border:0;border-radius:6px;min-height:42px;padding:0 16px;font-weight:850}.auth-form button:hover,.primary-action:hover,.secondary-action:hover{background:var(--accent-strong)}.auth-form button:disabled,.primary-action:disabled,.secondary-action:disabled,.module-tabs button:disabled,.table-action:disabled,.pagination-controls button:disabled{cursor:not-allowed;opacity:.58}.auth-error,.system-message{color:var(--danger);font-size:14px;font-weight:800}.shell{min-height:100vh}.topbar{z-index:20;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#fffffff0;justify-content:space-between;align-items:center;gap:20px;padding:12px 24px;display:flex;position:sticky;top:0}.brand-lockup{align-items:center;gap:16px;min-width:0;display:flex}.brand-lockup img{width:164px;height:auto}.brand-lockup div{border-left:1px solid var(--line);gap:2px;min-width:0;padding-left:16px;display:grid}.brand-lockup span,.user-strip span,.panel-title p{color:var(--muted);letter-spacing:0;text-transform:uppercase;font-size:11px;font-weight:850}.brand-lockup strong{text-overflow:ellipsis;white-space:nowrap;font-family:IBM Plex Sans Condensed,IBM Plex Sans,sans-serif;font-size:18px;overflow:hidden}.user-strip{align-items:center;gap:12px;display:flex}.user-strip div{text-align:right;gap:2px;display:grid}.ghost-button,.close-button,.table-action{border:1px solid var(--line-strong);min-height:34px;color:var(--brand);cursor:pointer;background:#fff;border-radius:6px;padding:0 12px;font-size:13px;font-weight:800}.ghost-button:hover,.close-button:hover,.table-action:hover{border-color:var(--accent);color:var(--accent-strong)}.table-action.danger{color:var(--danger)}.workspace{gap:18px;width:min(1280px,100%);margin:0 auto;padding:24px;display:grid}.operations-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.summary-tile{border:1px solid var(--line);background:var(--panel);border-radius:8px;align-content:space-between;min-height:86px;padding:14px;display:grid}.summary-tile span{color:var(--muted);text-transform:uppercase;font-size:12px;font-weight:800}.summary-tile strong{font-family:IBM Plex Sans Condensed,IBM Plex Sans,sans-serif;font-size:30px;line-height:1}.summary-tile.warn{border-top:3px solid var(--warn)}.summary-tile.success{border-top:3px solid var(--success)}.summary-tile.locked{background:#f0f3f6}.module-tabs{border:1px solid var(--line);background:var(--panel);border-radius:8px;grid-template-columns:repeat(4,minmax(0,1fr));padding:4px;display:grid}.module-tabs button{min-height:46px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;place-items:center;padding:4px 10px;font-weight:900;display:grid}.module-tabs button.active{background:var(--brand);color:#fff}.module-tabs small{color:inherit;font-size:11px;font-weight:650}.system-message{background:var(--danger-bg);border:1px solid #f2c7c1;border-radius:6px;padding:10px 12px}.upload-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}.panel{border:1px solid var(--line);background:#fffffff5;border-radius:8px;padding:18px;box-shadow:0 10px 28px #18212f0e}.upload-card{align-content:start;gap:16px;display:grid}.disabled-card{background:#f2f5f7}.panel-header.with-controls{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.panel-title{gap:4px;margin-bottom:16px;display:grid}.panel-title h1{font-family:IBM Plex Sans Condensed,IBM Plex Sans,sans-serif;font-size:24px;line-height:1.05}.panel-title span{color:var(--muted);font-size:14px}.dropzone{border:1px dashed var(--line-strong);background:linear-gradient(180deg, #0f766e0b, transparent), var(--panel-soft);cursor:pointer;text-align:center;border-radius:8px;place-items:center;min-height:178px;padding:22px;display:grid}.dropzone.dragging{border-color:var(--accent);box-shadow:inset 0 0 0 2px #0f766e26}.dropzone input{opacity:0;width:1px;height:1px;position:absolute}.drop-token{border:1px solid var(--line);width:48px;height:48px;color:var(--accent);background:#fff;border-radius:8px;place-items:center;font-size:12px;font-weight:950;display:grid}.dropzone strong{margin-top:10px;font-size:17px}.dropzone small{color:var(--muted)}.queued-files,.rejected-list,.task-list{gap:8px;display:grid}.queued-files{border:1px solid var(--line);background:var(--panel-soft);border-radius:8px;padding:10px}.queued-header,.queued-file,.rejected-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.queued-header{border-bottom:1px solid var(--line);padding-bottom:8px}.queued-header button,.queued-file button{color:var(--accent);cursor:pointer;background:0 0;border:0;font-size:13px;font-weight:850}.queued-file,.rejected-row{border:1px solid var(--line);background:#fff;border-radius:7px;padding:10px}.queued-file div{min-width:0}.queued-file strong,.rejected-row strong,.file-cell{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.queued-file span,.rejected-row span,.subtle{color:var(--muted);margin-top:3px;font-size:12px;display:block}.rejected-list{background:var(--danger-bg);border:1px solid #f1c0ba;border-radius:8px;margin-bottom:12px;padding:10px}.table-wrap{overflow-x:auto}.compact-table th,.compact-table td{padding:10px}table{border-collapse:collapse;width:100%;font-size:14px}th,td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:12px 10px}th{color:var(--muted);text-transform:uppercase;white-space:nowrap;font-family:IBM Plex Sans Condensed,IBM Plex Sans,sans-serif;font-size:12px;font-weight:900}td{max-width:260px}.status-badge{color:#556171;white-space:nowrap;background:#edf1f5;border-radius:999px;align-items:center;min-height:26px;padding:0 9px;font-size:12px;font-weight:900;display:inline-flex}.status-badge.uploaded,.status-badge.pending,.status-badge.queued,.status-badge.processing,.status-badge.running{background:var(--blue-bg);color:var(--blue)}.status-badge.processed,.status-badge.succeeded,.status-badge.ready_for_submission,.status-badge.submitted,.status-badge.resolved,.status-badge.linked{background:var(--success-bg);color:var(--success)}.status-badge.review_required,.status-badge.submission_processing,.status-badge.missing_dependencies,.status-badge.open,.status-badge.missing{background:var(--warn-bg);color:var(--warn)}.status-badge.failed,.status-badge.submission_failed,.status-badge.rejected{background:var(--danger-bg);color:var(--danger)}.epod-submission-cell{justify-items:start;gap:4px;display:grid}.epod-submission-cell>span:not(.status-badge){max-width:150px;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:800;overflow:hidden}.action-row,.drawer-actions,.filter-pills,.browser-controls,.segmented-control{flex-wrap:wrap;gap:8px;display:flex}.browser-controls{justify-content:flex-end;max-width:860px}.browser-search{gap:5px;min-width:210px;max-width:260px}.browser-search input{border:1px solid var(--line);min-height:32px;color:var(--ink);background:#fff;border-radius:6px;padding:0 10px;font-size:13px}.browser-search input:focus{border-color:var(--accent);outline:0;box-shadow:0 0 0 3px #0f766e21}.filter-pills{justify-content:flex-end}.filter-pills button,.segmented-control button{border:1px solid var(--line);min-height:32px;color:var(--muted);cursor:pointer;background:#fff;padding:0 11px;font-size:12px;font-weight:850}.filter-pills button{border-radius:999px}.segmented-control{border:1px solid var(--line);border-radius:6px;gap:0;overflow:hidden}.segmented-control button{border:0;border-right:1px solid var(--line);border-radius:0}.segmented-control button:last-child{border-right:0}.filter-pills button.active,.segmented-control button.active{border-color:var(--brand);background:var(--brand);color:#fff}.file-browser-summary{grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:10px;margin-bottom:12px;display:grid}.file-browser-summary>div:not(.metric-pill){border:1px solid var(--line);background:var(--panel-soft);border-radius:8px;align-content:space-between;min-height:74px;padding:12px;display:grid}.file-browser-summary span{color:var(--muted);text-transform:uppercase;font-size:12px;font-weight:800}.file-browser-summary strong{color:var(--ink);font-family:IBM Plex Sans Condensed,IBM Plex Sans,sans-serif;font-size:22px}.empty-state{border:1px dashed var(--line-strong);background:var(--panel-soft);min-height:112px;color:var(--muted);text-align:center;border-radius:8px;place-items:center;padding:18px;display:grid}.pagination-bar{border:1px solid var(--line);background:var(--panel-soft);border-radius:8px;justify-content:space-between;align-items:center;gap:12px;margin-top:12px;padding:10px 12px;display:flex}.pagination-bar.compact{background:#fff;margin-top:0}.pagination-bar span,.pagination-controls strong{color:var(--muted);text-transform:uppercase;font-size:12px;font-weight:850}.pagination-controls{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.pagination-controls button{border:1px solid var(--line-strong);min-height:32px;color:var(--brand);cursor:pointer;background:#fff;border-radius:6px;padding:0 11px;font-size:12px;font-weight:850}.pagination-controls button:hover:not(:disabled){border-color:var(--accent);color:var(--accent-strong)}.restricted-panel{min-height:220px}.drawer-backdrop,.modal-backdrop{z-index:50;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#18212f70;justify-content:flex-end;display:flex;position:fixed;inset:0}.modal-backdrop{z-index:60}.drawer{background:#fff;border-left:1px solid #d8dee6e6;grid-template-rows:auto minmax(0,1fr);width:min(520px,100%);height:100%;animation:.18s ease-out drawer-in;display:grid;overflow:hidden;box-shadow:-18px 0 58px #18212f2e}.drawer.wide{width:min(760px,100%)}.drawer-header,.preview-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;padding:16px 18px;display:flex}.drawer-header p,.preview-header p{color:var(--accent);text-transform:uppercase;margin-bottom:4px;font-size:12px;font-weight:900}.drawer-header h2,.preview-header h2{text-overflow:ellipsis;white-space:nowrap;font-family:IBM Plex Sans Condensed,IBM Plex Sans,sans-serif;font-size:22px;overflow:hidden}.drawer-body{align-content:start;gap:16px;padding:18px;display:grid;overflow:auto}.drawer-body h3{color:var(--brand);font-family:IBM Plex Sans Condensed,IBM Plex Sans,sans-serif;font-size:17px}.batch-status-card,.batch-hero{border:1px solid #0f766e33;border-left:4px solid var(--accent);background:linear-gradient(#f8fcfb,#fff);border-radius:8px;justify-content:space-between;align-items:flex-start;gap:18px;padding:15px 16px;display:flex}.batch-status-card span,.batch-hero span,.batch-metrics span,.metric-pill span,.section-heading span,.cement-link-main span{color:var(--muted);font-size:12px;font-weight:800}.batch-status-card span,.batch-hero span,.batch-metrics span,.metric-pill span,.section-heading span{text-transform:uppercase}.batch-status-card strong,.batch-hero strong{color:var(--ink);margin-top:5px;font-family:IBM Plex Sans Condensed,IBM Plex Sans,sans-serif;font-size:22px;display:block}.batch-status-card p,.batch-hero p{color:var(--muted);margin-top:6px;font-size:14px;line-height:1.45}.next-step-callout{border:1px solid #a15c0047;border-left:4px solid var(--warn);background:var(--warn-bg);border-radius:8px;gap:4px;padding:12px 14px;display:grid}.next-step-callout span{color:#7a4500;text-transform:uppercase;font-size:11px;font-weight:850}.next-step-callout strong{color:var(--ink);font-size:15px}.next-step-callout p{color:#5c3900;font-size:13px;line-height:1.45}.next-step-callout.compact{border-left-width:3px;padding:10px 12px}.batch-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.metric-pill{border:1px solid var(--line);background:var(--panel-soft);border-radius:8px;align-content:space-between;min-height:74px;padding:12px;display:grid}.metric-pill strong{font-family:IBM Plex Sans Condensed,IBM Plex Sans,sans-serif;font-size:28px;line-height:1}.metric-pill.success{background:var(--success-bg);color:var(--success);border-color:#14784f3d}.metric-pill.warn{background:var(--warn-bg);color:var(--warn);border-color:#a15c0042}.batch-metrics{grid-template-columns:1.7fr .65fr .65fr;gap:10px;display:grid}.batch-metrics div{border:1px solid var(--line);background:var(--panel-soft);border-radius:8px;min-width:0;padding:12px}.batch-metrics strong{overflow-wrap:anywhere;color:var(--ink);margin-top:6px;font-size:14px;display:block}.drawer-section{gap:10px;display:grid}.compact-action{min-height:36px;padding:8px 12px}.submission-section{border-top:1px solid var(--line);padding-top:14px}.submission-latest,.submission-row{border:1px solid var(--line);background:#fff;border-radius:8px;justify-content:space-between;align-items:flex-start;gap:12px;padding:12px;display:flex}.submission-latest span,.submission-row span{color:var(--muted);font-size:12px;font-weight:800}.submission-latest>div,.submission-row>div:first-child{gap:4px;min-width:0;display:grid}.submission-latest strong,.submission-row strong{color:var(--ink);font-size:14px}.submission-latest p,.submission-row p{color:var(--muted);overflow-wrap:anywhere;font-size:13px;line-height:1.4}.submission-list{gap:8px;display:grid}.submission-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.section-heading{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.info-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.info-grid div,.value-block{border:1px solid var(--line);background:var(--panel-soft);border-radius:8px;padding:11px}.info-grid span,.value-block span{color:var(--muted);text-transform:uppercase;margin-bottom:5px;font-size:11px;font-weight:850;display:block}.info-grid strong{overflow-wrap:anywhere}.review-message{border-left:3px solid var(--warn);background:var(--warn-bg);color:#5c3900;padding:10px 12px;font-size:14px}.review-message.neutral{border-left-color:var(--line-strong);background:var(--surface-muted);color:var(--muted)}.invoice-number-editor{gap:10px;display:grid}.invoice-chip-list{flex-wrap:wrap;gap:8px;display:flex}.invoice-chip{border:1px solid var(--line);background:var(--surface-muted);min-height:32px;color:var(--ink);border-radius:6px;align-items:center;gap:7px;padding:0 10px;font-size:12px;font-weight:800;display:inline-flex}.invoice-chip span{color:var(--muted);font-size:13px;line-height:1}.invoice-chip:hover:not(:disabled){border-color:var(--danger);color:var(--danger)}.invoice-candidates{border:1px solid var(--line);background:#fff;border-radius:6px;gap:8px;padding:10px;display:grid}.invoice-candidates>div:first-child{color:var(--muted);text-transform:uppercase;justify-content:space-between;align-items:center;gap:10px;font-size:12px;font-weight:800;display:flex}.invoice-candidates strong{color:var(--brand)}.value-block pre{max-height:190px;color:var(--ink);white-space:pre-wrap;margin:0;font-size:13px;line-height:1.45;overflow:auto}.mini-table{border:1px solid var(--line);border-radius:8px;display:grid;overflow:hidden}.mini-table div{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}.mini-table div:last-child{border-bottom:0}.mini-table span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.issue-list{gap:8px;display:grid}.issue-list div{border:1px solid var(--line);border-left:3px solid var(--warn);background:var(--warn-bg);border-radius:8px;gap:4px;padding:11px 12px;display:grid}.issue-list strong{color:var(--ink);font-size:14px}.issue-list span{color:#5c3900;font-size:13px;line-height:1.45}.cement-link-list{gap:8px;display:grid}.batch-link-row{border:1px solid var(--line);background:#fff;border-radius:8px;justify-content:space-between;align-items:center;gap:14px;min-height:58px;padding:11px 12px;transition:border-color .14s,background-color .14s,box-shadow .14s;display:flex}.batch-link-row:hover{box-shadow:0 8px 22px #18212f12}.batch-link-row.attention{background:#fffaf0;border-color:#a15c0059}.cement-link-main{gap:3px;min-width:0;display:grid}.cement-link-main strong{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.cement-link-main span{text-overflow:ellipsis;white-space:nowrap;text-transform:none;overflow:hidden}.cement-link-meta{flex-wrap:wrap;gap:6px;min-width:0;display:flex}.cement-link-meta span{border:1px solid var(--line);background:var(--panel-soft);max-width:100%;color:var(--muted);border-radius:999px;padding:3px 8px;font-size:12px;font-weight:750;line-height:1.2}.cement-link-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.task-list button{border:1px solid var(--line);color:var(--ink);cursor:pointer;text-align:left;background:#fff;border-radius:7px;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}.task-list strong{color:var(--muted);font-size:12px}.batch-review-backdrop{justify-content:center;align-items:center;padding:20px}.batch-review-modal{background:#fff;border:1px solid #d8dee6e6;border-radius:8px;grid-template-rows:auto minmax(0,1fr);width:min(560px,100%);max-height:min(720px,92vh);animation:.16s ease-out modal-in;display:grid;overflow:hidden;box-shadow:0 24px 80px #18212f3d}.batch-review-body{align-content:start;gap:14px;padding:16px;display:grid;overflow:auto}.review-values{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.modal-backdrop{justify-content:center;place-items:center;padding:14px;display:grid}.preview-modal{background:#fff;border-radius:8px;grid-template-rows:auto minmax(0,1fr);width:min(1440px,98vw);height:min(960px,96vh);display:grid;overflow:hidden;box-shadow:0 28px 90px #0000004d}.preview-modal iframe{background:#f1f3f5;border:0;width:100%;height:100%}@keyframes drawer-in{0%{opacity:0;transform:translate(18px)}to{opacity:1;transform:translate(0)}}@keyframes modal-in{0%{opacity:0;transform:translateY(10px)scale(.985)}to{opacity:1;transform:translateY(0)scale(1)}}@media (max-width:920px){.topbar,.user-strip,.brand-lockup,.panel-header.with-controls,.browser-controls,.pagination-bar{flex-direction:column;align-items:flex-start}.brand-lockup div{border-left:0;padding-left:0}.user-strip div{text-align:left}.operations-summary,.upload-grid,.info-grid,.batch-summary-grid,.review-values,.batch-metrics,.file-browser-summary{grid-template-columns:1fr}.batch-status-card,.batch-link-row{flex-direction:column;align-items:flex-start}.workspace{padding:16px}.module-tabs{grid-template-columns:1fr}.drawer,.drawer.wide{width:100%}.browser-search{width:100%;max-width:none}.pagination-controls{justify-content:flex-start}}
