:root{--text:#4b5563;--text-h:#111827;--bg:#f9fafb;--card-bg:#fff;--border:#e5e7eb;--code-bg:#f3f4f6;--accent:#4f46e5;--accent-bg:#e0e7ff;--accent-border:#818cf8;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5}#root{min-height:100vh}body{margin:0}h1,h2,h3{color:var(--text-h);margin:0 0 12px}h2{font-size:22px}h3{font-size:18px}p{margin:0 0 12px}section{margin-bottom:24px}.app{text-align:left;max-width:1200px;margin:0 auto;padding:24px 32px}.app-header{border-bottom:1px solid var(--border);margin-bottom:24px;padding-bottom:16px}.app-header h1{cursor:pointer;margin:0;font-size:28px}.back-link{color:var(--accent);cursor:pointer;background:0 0;border:none;margin-bottom:16px;padding:0;font-size:15px}.back-link:hover{text-decoration:underline}.card{background:var(--card-bg);border:1px solid var(--border);border-radius:8px;padding:16px}.card-list{gap:12px;margin:0;padding:0;list-style:none;display:grid}.card-list li{margin:0}.card-button{text-align:left;background:var(--card-bg);border:1px solid var(--border);cursor:pointer;border-radius:8px;flex-direction:column;gap:4px;width:100%;padding:16px;display:flex}.card-button:hover{border-color:var(--accent-border)}.form-card{flex-direction:column;gap:12px;max-width:480px;margin-bottom:24px;display:flex}.form-card label{flex-direction:column;gap:4px;font-size:14px;display:flex}.form-card input[type=text]{border:1px solid var(--border);border-radius:6px;padding:8px 12px;font-size:16px}button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:10px 16px;font-size:15px}button:disabled{opacity:.6;cursor:not-allowed}.error{color:#dc2626;background:#fef2f2;border:1px solid #fecaca;border-radius:6px;margin:16px 0;padding:12px}.empty{color:var(--text);font-style:italic}.muted{color:var(--text);font-size:14px}.upload-card{max-width:640px;margin-bottom:32px}.file-input{cursor:pointer;align-items:center;gap:12px;display:inline-flex}.file-input input[type=file]{display:none}.file-input span{border:1px dashed var(--border);border-radius:6px;padding:10px 16px}.file-input:hover span{border-color:var(--accent-border)}.run-summary{flex-direction:column;align-items:flex-start;gap:8px;margin-top:16px;display:flex}.summary-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:16px;margin-bottom:32px;display:grid}.summary-card{background:var(--card-bg);border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:4px;padding:16px;display:flex}.summary-value{color:var(--text-h);font-size:24px;font-weight:600}.summary-label{color:var(--text);font-size:14px}.table-wrapper{border:1px solid var(--border);border-radius:8px;margin-bottom:32px;overflow-x:auto}.line-item-table{border-collapse:collapse;width:100%;font-size:14px}.line-item-table th,.line-item-table td{border-bottom:1px solid var(--border);text-align:left;padding:10px 12px}.line-item-table th{background:var(--code-bg);color:var(--text-h);font-weight:500}.line-item-table tbody tr:last-child td{border-bottom:none}.status{text-transform:uppercase;border-radius:4px;padding:2px 8px;font-size:12px;font-weight:500;display:inline-block}.status.ok{color:#166534;background:#dcfce7}.status.review,.status.invalid{color:#991b1b;background:#fee2e2}.status.fallback-factor{color:#854d0e;background:#fef9c3}.candidate{align-items:center;gap:8px;margin-bottom:4px;display:flex}.role{text-transform:uppercase;background:var(--code-bg);color:var(--text-h);border-radius:4px;padding:2px 6px;font-size:11px}.role.selected{background:var(--accent-bg);color:var(--accent)}
