:root {
  --bg: #f2f6fb;
  --surface: #ffffff;
  --surface-alt: #f7f9fc;
  --surface-muted: #eef3f8;
  --border: #d7e1ee;
  --border-strong: #c0cfdf;
  --text: #152338;
  --text-muted: #55657f;
  --heading: #0f1728;
  --primary: #2563eb;
  --primary-soft: #ecf3ff;
  --success: #0f8a54;
  --success-soft: #e8f7ef;
  --warning: #b46902;
  --warning-soft: #fff4e5;
  --danger: #c0352b;
  --danger-soft: #fff0ef;
  --purple: #6d5efc;
  --purple-soft: #f2efff;
  --shadow-sm: 0 8px 20px rgba(15, 23, 40, 0.04);
  --radius-lg: 16px;
  --radius-md: 12px;
}
html, body { background: var(--bg); color: var(--text); }
body { font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
h1,h2,h3,h4,h5,h6 { color: var(--heading); letter-spacing: -0.02em; }
a { color: var(--primary); text-decoration: none; }
a:hover { color: #1746c8; }
.page-shell { padding-bottom: 3rem; }
.app-topbar { background: rgba(255,255,255,.88); border-bottom: 1px solid var(--border); backdrop-filter: blur(14px); position: sticky; top: 0; z-index: 1000; }
.brand-lockup { display:flex; align-items:center; gap:.7rem; }
.brand-mark { width:42px; height:42px; border-radius:12px; background:linear-gradient(135deg,#3066f6,#7ea5ff); color:white; display:inline-flex; align-items:center; justify-content:center; font-weight:800; }
.brand-copy small { display:block; color:var(--text-muted); font-size:.79rem; }
.topnav { gap:.2rem; }
.topnav .nav-link { color: var(--text-muted); border-radius: 999px; padding: .5rem .82rem; font-weight: 700; }
.topnav .nav-link.active, .topnav .nav-link:hover { color: var(--primary); background: var(--primary-soft); }
.topbar-meta { display:flex; align-items:center; gap:.75rem; }
.app-chip { display:inline-flex; align-items:center; gap:.4rem; border-radius:999px; padding:.42rem .72rem; border:1px solid var(--border); background:var(--surface); color:var(--text-muted); font-weight:700; font-size:.88rem; }
.page-header { padding: 1.2rem 0 .8rem; }
.eyebrow { color:var(--primary); text-transform:uppercase; letter-spacing:.08em; font-size:.74rem; font-weight:800; margin-bottom:.3rem; }
.page-title { font-size: clamp(1.8rem, 3vw, 2.35rem); margin-bottom:.2rem; }
.page-subtitle { color: var(--text-muted); max-width: 76ch; margin-bottom:0; }
.panel,.summary-card,.metric-card,.action-card,.form-panel,.table-panel,.empty-state { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); box-shadow:var(--shadow-sm); }
.panel,.form-panel,.table-panel { padding: 1rem 1.05rem; }
.summary-card,.metric-card,.action-card { padding:.95rem 1rem; height:100%; }
.compact-grid { row-gap:.8rem; }
.metric-card { position:relative; overflow:hidden; }
.metric-card::after { content:""; position:absolute; top:0; right:0; width:88px; height:88px; background:radial-gradient(circle at center, rgba(37,99,235,.09), rgba(37,99,235,0)); }
.metric-label,.small-meta,.helper-text,.table-meta,.section-subtitle { color:var(--text-muted); }
.metric-label { font-size:.84rem; margin-bottom:.35rem; }
.metric-value { font-size:1.9rem; font-weight:800; line-height:1.05; color:var(--heading); }
.metric-helper { color:var(--text-muted); font-size:.83rem; margin-top:.35rem; }
.section-title { font-size:1.05rem; font-weight:800; margin-bottom:.1rem; }
.section-subtitle { font-size:.89rem; }
.small-caps { text-transform:uppercase; letter-spacing:.06em; color:var(--text-muted); font-size:.73rem; font-weight:800; }
.note-callout { border-left:4px solid var(--primary); background:var(--primary-soft); padding:.75rem .9rem; border-radius:12px; }
.progress-shell { width:100%; height:10px; background:var(--surface-muted); border-radius:999px; overflow:hidden; }
.progress-bar-custom { height:100%; background:linear-gradient(90deg,#2563eb,#7ea5ff); }
.status-pill { display:inline-flex; align-items:center; gap:.45rem; border-radius:999px; padding:.38rem .68rem; border:1px solid var(--border); background:var(--surface-alt); font-size:.81rem; font-weight:800; color:var(--text-muted); white-space:nowrap; }
.status-pill::before { content:""; width:8px; height:8px; border-radius:50%; background:#95a4b8; }
.status-pill.status-implemented,.status-pill.status-approved,.status-pill.status-assessment-ready,.status-pill.status-ready,.status-pill.status-validated,.status-pill.status-done,.status-pill.status-closed { color:var(--success); background:var(--success-soft); border-color:#b7e6ca; }
.status-pill.status-implemented::before,.status-pill.status-approved::before,.status-pill.status-assessment-ready::before,.status-pill.status-ready::before,.status-pill.status-validated::before,.status-pill.status-done::before,.status-pill.status-closed::before { background:var(--success); }
.status-pill.status-in-progress,.status-pill.status-needs-evidence,.status-pill.status-needs-refresh,.status-pill.status-needs-validation,.status-pill.status-awaiting-vendor,.status-pill.status-awaiting-reviewer,.status-pill.status-needs-documentation,.status-pill.status-remediation-planned,.status-pill.status-in-review,.status-pill.status-under-review,.status-pill.status-present,.status-pill.status-mock-review-complete,.status-pill.status-gap-assessment-in-progress,.status-pill.status-remediation-underway,.status-pill.status-scoping { color:var(--warning); background:var(--warning-soft); border-color:#f2d3a3; }
.status-pill.status-in-progress::before,.status-pill.status-needs-evidence::before,.status-pill.status-needs-refresh::before,.status-pill.status-needs-validation::before,.status-pill.status-awaiting-vendor::before,.status-pill.status-awaiting-reviewer::before,.status-pill.status-needs-documentation::before,.status-pill.status-remediation-planned::before,.status-pill.status-in-review::before,.status-pill.status-under-review::before,.status-pill.status-present::before,.status-pill.status-mock-review-complete::before,.status-pill.status-gap-assessment-in-progress::before,.status-pill.status-remediation-underway::before,.status-pill.status-scoping::before { background:var(--warning); }
.status-pill.status-open,.status-pill.status-high,.status-pill.status-critical,.status-pill.status-blocked,.status-pill.status-poam-open,.status-pill.status-finding-open,.status-pill.status-at-risk,.status-pill.status-insufficient,.status-pill.status-needs-decision,.status-pill.status-reviewer-validation-needed,.status-pill.status-rejected { color:var(--danger); background:var(--danger-soft); border-color:#f2c4c0; }
.status-pill.status-open::before,.status-pill.status-high::before,.status-pill.status-critical::before,.status-pill.status-blocked::before,.status-pill.status-poam-open::before,.status-pill.status-finding-open::before,.status-pill.status-at-risk::before,.status-pill.status-insufficient::before,.status-pill.status-needs-decision::before,.status-pill.status-reviewer-validation-needed::before,.status-pill.status-rejected::before { background:var(--danger); }
.status-pill.status-risk-accepted,.status-pill.status-supporting-scope,.status-pill.status-supporting-scope::before { color:var(--purple); background:var(--purple-soft); border-color:#d8d0ff; }
.status-pill.status-risk-accepted::before,.status-pill.status-supporting-scope::before { background:var(--purple); }
.status-pill.status-not-started,.status-pill.status-superseded,.status-pill.status-not-reviewed,.status-pill.status-out-of-scope { color:#60708a; background:var(--surface-muted); }
.status-pill.status-not-started::before,.status-pill.status-superseded::before,.status-pill.status-not-reviewed::before,.status-pill.status-out-of-scope::before { background:#74839b; }
.list-card { background:var(--surface-alt); border:1px solid var(--border); border-radius:var(--radius-md); padding:.9rem; }
.list-card + .list-card { margin-top:.65rem; }
.inline-metric { border-right:1px solid var(--border); padding-right:.85rem; margin-right:.85rem; }
.inline-metric:last-child { border-right:0; padding-right:0; margin-right:0; }
.inline-metric .label { display:block; color:var(--text-muted); font-size:.79rem; }
.inline-metric .value { display:block; color:var(--heading); font-weight:800; font-size:1.06rem; }
.form-label { font-size:.82rem; font-weight:800; color:var(--heading); }
.form-control,.form-select,textarea { border-radius:11px; border-color:var(--border-strong); color:var(--text); background:#fff; padding:.62rem .78rem; }
.form-control:focus,.form-select:focus,textarea:focus { border-color:rgba(37,99,235,.45); box-shadow:0 0 0 .2rem rgba(37,99,235,.12); }
.btn { border-radius:12px; font-weight:800; }
.btn-primary { background:var(--primary); border-color:var(--primary); }
.btn-primary:hover { background:#194acc; border-color:#194acc; }
.btn-outline-secondary { border-color:var(--border-strong); color:var(--text); }
.btn-outline-secondary:hover { background:var(--surface-muted); border-color:var(--border-strong); color:var(--text); }
.btn-soft { background:var(--primary-soft); border:1px solid #cfe0ff; color:var(--primary); }
.table-panel .table { margin-bottom:0; color:var(--text); }
.table-panel .table > :not(caption) > * > * { border-color:var(--border); padding-top:.7rem; padding-bottom:.7rem; vertical-align:top; }
.table-panel thead th { font-size:.76rem; text-transform:uppercase; letter-spacing:.07em; color:#60708a; }
.data-title { font-weight:800; color:var(--heading); }
.data-subtitle { display:block; color:var(--text-muted); font-size:.88rem; margin-top:.16rem; }
.empty-state { padding:1.6rem 1.2rem; text-align:center; }
.empty-icon { width:52px; height:52px; border-radius:16px; margin:0 auto .8rem; background:var(--primary-soft); color:var(--primary); display:flex; align-items:center; justify-content:center; font-size:1.2rem; font-weight:800; }
.filters-bar { background:var(--surface-alt); border:1px solid var(--border); border-radius:var(--radius-md); padding:.9rem; }
.sticky-column { position: sticky; top: 92px; }
.metric-mini { font-size:1.2rem; font-weight:800; }
@media (max-width: 991.98px) { .sticky-column { position: static; } }
