: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:0 32px 32px}.app-header{border-bottom:1px solid var(--border);margin-bottom:24px;padding:16px 0}.app-nav{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:24px;display:flex}.app-nav h1{margin:0;font-size:22px}.app-nav-links{gap:4px;display:flex}.app-nav-links a{color:var(--text);border-radius:6px;padding:8px 14px;font-size:15px;text-decoration:none}.app-nav-links a:hover{background:var(--code-bg)}.app-nav-links a.active{background:var(--accent-bg);color:var(--accent)}.back-link{color:var(--accent);cursor:pointer;background:0 0;border:none;margin-bottom:16px;padding:0;font-size:15px;text-decoration:none;display:inline-block}.back-link:hover{text-decoration:underline}.link-button{color:var(--accent);cursor:pointer;text-align:left;background:0 0;border:none;padding:0;font-size:15px}.link-button: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;width:100%;color:inherit;border-radius:8px;flex-direction:column;gap:4px;padding:16px;text-decoration:none;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],.form-card input[type=search],.form-card input[type=number],.form-card select,.form-card textarea{border:1px solid var(--border);border-radius:6px;padding:8px 12px;font-family:inherit;font-size:16px}.filter-card{grid-template-columns:2fr 1fr 1fr auto;align-items:end;gap:12px;max-width:none;margin-bottom:24px;display:grid}.filter-card label{flex-direction:column;gap:4px;font-size:14px;display:flex}button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:10px 16px;font-size:15px;text-decoration:none;display:inline-block}button.secondary{background:var(--code-bg);color:var(--text)}button.danger{color:#fff;background:#dc2626}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,.status.status-active{color:#166534;background:#dcfce7}.status.review,.status.invalid,.status.status-needs_review{color:#991b1b;background:#fee2e2}.status.fallback-factor,.status.status-preview,.status.status-draft{color:#854d0e;background:#fef9c3}.status.status-deprecated,.status.status-cancelled{color:#3730a3;background:#e0e7ff}.status.status-retired,.status.status-committed{color:#374151;background:#f3f4f6}.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)}.library-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:24px;display:flex}.library-header h2{margin:0}.library-header-actions{gap:8px;display:flex}.material-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:24px;display:flex}.material-header h2{margin:0 0 4px}.material-header-actions{flex-wrap:wrap;gap:8px;display:flex}.tabs{border-bottom:1px solid var(--border);gap:4px;margin-bottom:16px;display:flex}.tab{color:var(--text);background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;padding:8px 14px}.tab.active{color:var(--accent);border-bottom-color:var(--accent)}.audit-grid{grid-template-columns:1fr 1fr;gap:32px;display:grid}.audit-grid dl{grid-template-columns:max-content 1fr;gap:4px 16px;margin:0;display:grid}.audit-grid dt{color:var(--text-h);font-weight:500}.audit-grid dd{margin:0}.mode-toggle{gap:16px;display:flex}.mode-toggle label{align-items:center;gap:6px;font-size:15px;display:flex}.checkbox-row{flex-direction:row;align-items:center;gap:8px;font-size:15px;display:flex}.preview-actions{gap:8px;margin:16px 0;display:flex}.review-batch{margin-bottom:24px}.review-batch-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.review-batch-header h3{margin:0 0 4px;font-size:17px}.review-batch .table-wrapper{margin-bottom:0}
