:root{--bg: #0f1419;--panel: #1a212b;--line: #2a3441;--text: #e6edf3;--muted: #8b98a9;--accent: #3b82f6;--danger: #ef4444;--warn: #f59e0b;--ok: #22c55e}*{box-sizing:border-box}body{margin:0;font-family:system-ui,Segoe UI,sans-serif;background:var(--bg);color:var(--text)}a{color:var(--accent);text-decoration:none}button{cursor:pointer;border:1px solid var(--line);background:var(--panel);color:var(--text);padding:8px 14px;border-radius:6px}button.primary,button.primary:hover{background:var(--accent);border-color:var(--accent);color:#fff}select,input{background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:6px 8px}.centered{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center}.brand{font-size:20px;font-weight:700;letter-spacing:.3px}.muted{color:var(--muted)}.error{color:var(--danger)}.confidential{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:1px}.app{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:24px;padding:12px 20px;border-bottom:1px solid var(--line);background:var(--panel)}.topbar nav{display:flex;gap:16px;flex:1}.topbar nav a{color:var(--muted);padding:6px 0}.topbar nav a.active{color:var(--text);border-bottom:2px solid var(--accent)}.topbar .user{display:flex;align-items:center;gap:12px}.add-user{display:flex;gap:10px;align-items:center;margin:14px 0;flex-wrap:wrap}.add-user input{min-width:260px}.entity-picker{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px}.entity-picker select{font-size:13px}main{flex:1;padding:24px;max-width:1200px;width:100%;margin:0 auto}footer.confidential{padding:12px;text-align:center}.page h1{font-size:22px}.proj-tabs{display:flex;gap:8px;margin-bottom:8px}.proj-tabs .tab{background:transparent;border:1px solid var(--line);color:var(--muted)}.proj-tabs .tab.active{background:var(--accent);border-color:var(--accent);color:#fff}.cards{display:flex;gap:14px;flex-wrap:wrap;margin:18px 0}.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px 22px;min-width:130px}.card-value{font-size:26px;font-weight:700}.card-label{color:var(--muted);font-size:13px}.card.danger .card-value{color:var(--danger)}.card.warn .card-value{color:var(--warn)}table.grid{width:100%;border-collapse:collapse;margin:10px 0 28px}table.grid th,table.grid td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top;font-size:14px}table.grid th{color:var(--muted);font-weight:600}.req{max-width:560px}.mono{font-family:ui-monospace,monospace;color:var(--muted);white-space:nowrap}.row-danger{background:#ef444414}.bar{background:var(--line);border-radius:6px;height:8px;width:140px;overflow:hidden}.bar-fill{background:var(--ok);height:100%}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;background:var(--line)}.v-satisfied{background:#22c55e33;color:var(--ok)}.v-partial{background:#f59e0b33;color:var(--warn)}.v-missing{background:#ef444433;color:var(--danger)}.v-expired{background:var(--danger);color:#fff}.comment{width:100%;min-width:180px}.doccount-btn{margin-right:8px;padding:2px 8px;font-variant-numeric:tabular-nums}.upload-btn{cursor:pointer;border:1px solid var(--line);border-radius:6px;padding:2px 8px;background:var(--panel)}.docs-row td{background:#ffffff05}.doc-list{list-style:none;margin:4px 0;padding:0}.doc-item{padding:4px 0;font-size:13px;border-bottom:1px solid var(--line)}.doc-head{display:flex;align-items:center;gap:10px}.findings-toggle{margin-left:auto;font-size:12px;color:var(--muted);padding:2px 8px}.doc-findings{margin:6px 0 8px 18px;display:flex;flex-direction:column;gap:6px}.finding-inline{display:flex;gap:8px;align-items:center;font-size:12px;padding:6px 8px;border:1px solid var(--line);border-radius:6px}.finding-inline.danger{border-color:var(--danger)}.assess{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:4px 0 12px;padding-bottom:10px;border-bottom:1px dashed var(--line)}.assess-btn{font-size:13px}.assess-result{display:flex;align-items:center;gap:8px;font-size:13px;flex-wrap:wrap}.assess-summary{color:var(--text)}.dot{width:8px;height:8px;border-radius:50%;background:var(--muted);flex:none}.dot.s-done{background:var(--ok)}.dot.s-analyzing,.dot.s-extracting{background:var(--warn)}.dot.s-pending{background:var(--muted)}.dot.s-error{background:var(--danger)}.live-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;margin-top:16px}.live-card{text-align:left;padding:16px;border-radius:10px;border:1px solid var(--line);background:var(--panel);cursor:pointer}.live-card.attn{border-left:4px solid var(--warn)}.live-card.ok{border-left:4px solid var(--ok)}.live-card-name{font-weight:700;font-size:15px;margin-bottom:6px}.live-card-stats{display:flex;flex-wrap:wrap;gap:6px;font-size:12px;color:var(--muted)}.live-card-stats .warn{color:var(--warn)}.live-card-stats .danger{color:var(--danger)}.back{margin-bottom:8px;background:transparent;border:none;color:var(--accent);padding:0}.live-upload{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:8px 0 18px;padding-bottom:12px;border-bottom:1px dashed var(--line)}.live-upload input,.live-upload select{min-width:120px}.live-upload .exp{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:13px}.upload-btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.upload-btn.disabled{opacity:.5;cursor:not-allowed}.mini{font-size:12px}.mono{font-family:ui-monospace,monospace}.timeline{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:8px;margin-top:8px}.tl-cell{border:1px solid var(--line);border-radius:8px;padding:8px;text-align:center}.tl-cell.present{border-color:var(--ok)}.tl-cell.missing{border-color:var(--danger);background:#ef44440f}.tl-period{font-size:12px;font-family:ui-monospace,monospace}.tl-docs a{text-decoration:none;margin:0 1px}.tl-missing{font-size:11px;color:var(--danger)}.findings{list-style:none;padding:0}.finding{display:flex;gap:10px;align-items:center;padding:10px;border:1px solid var(--line);border-radius:8px;margin-bottom:8px}.finding.danger{border-color:var(--danger)}
