.mon { --c-accent:#f59f2e; --c-accent-soft:#fdf1df; --c-navy:#00063d; --c-ok:#009e11; --c-warn:#c77700; --c-danger:#c0271b; --c-line: var(--bs-border-color, #dfe3ea); --c-soft: var(--bs-tertiary-bg, #f6f7f9); --c-row-hover:#e7ecf2; --c-muted:#6b7585; font-size:.85rem; color: var(--bs-body-color) }
.mon .card { box-shadow:0 1px 3px rgba(0,0,0,.06); border:1px solid var(--c-line); border-radius:5px }
.status-dot { display:inline-block; width:8px; height:8px; border-radius:50%; vertical-align:middle; flex-shrink:0 }
.cov-track { height:10px; background:var(--c-soft); border-radius:5px; display:flex; overflow:hidden }
.cov-seg { height:100% }
a.cov-seg { transition:filter .1s ease }
a.cov-seg:hover { filter:brightness(.85) }
.mon-table { width:100%; border-collapse:collapse; font-size:.82rem }
.mon-table thead th { text-align:left; font-size:.66rem; text-transform:uppercase; letter-spacing:.05em; color:var(--c-muted); font-weight:700; padding:.3rem .55rem; border-bottom:2px solid var(--c-line) }
.mon-table td { padding:.32rem .55rem; border-bottom:1px solid var(--c-soft); vertical-align:top }
.mon-table tbody tr:hover td { background:var(--c-row-hover) }
.mon-src { color:var(--c-muted); white-space:nowrap }
.mon-table.compact td, .mon-table.compact thead th { padding:.24rem .55rem; font-size:.75rem; line-height:1.45 }
.mon-table.compact td { vertical-align:middle }
.mon-table.cozy td, .mon-table.cozy thead th { padding:.22rem .55rem; line-height:1.35 }
.mon-table.cozy .src-meta { margin-top:.02rem }
.gt { display:grid; font-size:.75rem; grid-auto-rows:minmax(1.75rem, auto); overflow-x:auto }
.gt-h, .gt-c { display:flex; align-items:center; gap:.35rem; padding:.15rem .55rem; border-bottom:1px solid var(--c-soft); white-space:nowrap; min-width:0; overflow:hidden }
.gt-c .btn { padding:.12rem .55rem; font-size:.75rem; line-height:1.2 }
.gt-h { position:sticky; top:0; z-index:2; font-size:.66rem; text-transform:uppercase; letter-spacing:.05em; color:var(--c-muted); font-weight:700; border-bottom:2px solid var(--c-line); background:var(--vantedge-secondary) }
.gt-row { display:contents }
.gt-row:hover > .gt-c { background:var(--c-row-hover) }
.gt-row[hx-get] { cursor:pointer }
.gt-ellip { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis }
.gt-empty { grid-column:1 / -1; padding:1.4rem; text-align:center; color:var(--c-muted) }
.gt--excluded { grid-template-columns:minmax(6rem,max-content) minmax(8rem,1fr) max-content minmax(7rem,max-content) max-content max-content }
.gt--review, .gt--items { grid-template-columns:max-content minmax(6rem,max-content) minmax(8rem,1fr) max-content minmax(8rem,1fr) max-content max-content }
.gt--act-docs { grid-template-columns:minmax(10rem,1fr) max-content max-content max-content max-content max-content }
.gt--identity { grid-template-columns:minmax(12rem,1fr) minmax(7rem,max-content) minmax(7rem,max-content) max-content minmax(8rem,max-content) max-content max-content }
.gt--library-status { grid-template-columns:minmax(12rem,1fr) minmax(8rem,max-content) max-content max-content max-content max-content max-content }
.gt--library-status .version-panel { grid-column:1 / -1 }
.gt--audit-coverage { grid-template-columns:max-content minmax(5rem,1fr) max-content; grid-auto-rows:minmax(1.15rem,auto); font-size:.7rem }
.gt--audit-coverage .gt-c { padding:.02rem .4rem; border-bottom:0 }
.gt--extraction { grid-template-columns:max-content minmax(4rem,1fr) max-content max-content; grid-auto-rows:minmax(1.15rem,auto); font-size:.7rem }
.act-chart { height:clamp(180px, 24vh, 290px) }
.gt--waiting { grid-template-columns:minmax(10rem,1fr) repeat(4, minmax(5rem,8rem)) }
.gt-num { justify-content:flex-end; text-align:right; font-variant-numeric:tabular-nums }
.gt--extraction .gt-c { padding:.02rem .4rem; border-bottom:0 }
.filter-toggle { display:inline-flex; align-items:center; gap:.3rem; cursor:pointer; font-size:.72rem; color:var(--c-muted); white-space:nowrap }
.band-toggle { display:inline-flex; align-items:center; gap:.4rem; cursor:pointer; font-size:.72rem; color:var(--c-muted); white-space:nowrap; user-select:none; border:1px solid var(--c-line); border-radius:4px; padding:.15rem .5rem; line-height:1.5 }
.band-toggle:hover { background:var(--c-soft) }
.band-toggle input { margin:0 }
.band-toggle:has(input:checked) { color:var(--bs-body-color); font-weight:600; border-color:var(--c-muted) }
.sort-header { cursor:pointer; user-select:none }
.sort-header:hover { color:var(--bs-body-color) }
.sort-icon { opacity:.3 }
.sort-header.active .sort-icon { opacity:1 }
.filter-pill { display:inline-flex; align-items:center; gap:.25rem; cursor:pointer; user-select:none; border:1px solid var(--c-line); border-radius:1rem; padding:.02rem .45rem; line-height:1.5; background:var(--c-soft); font-size:.7rem; transition:all .15s }
.filter-pill.active { outline:2px solid currentColor; outline-offset:-1px }
.version-panel { border:1px solid var(--c-line); margin:0 .5rem .25rem }
.gt--act-projects { grid-template-columns:minmax(10rem,1fr) minmax(8rem,1.1fr) max-content max-content max-content max-content }
.gt--proj-targets { grid-template-columns:minmax(10rem,1fr) max-content minmax(7rem,max-content) max-content minmax(8rem,1fr) }
.act-tile { border:1px solid var(--c-line); border-radius:5px; padding:.35rem .7rem; height:100% }
.act-tile .fs-4 { font-size:1.35rem !important; line-height:1.25 }
.act-panel { border:1px solid var(--c-line); border-radius:5px; padding:.6rem .85rem }
.kv { display:grid; grid-template-columns:max-content 1fr; column-gap:1.25rem; row-gap:.2rem; margin:0 }
.kv dt { color:var(--c-muted); font-weight:600; font-size:.75rem }
.kv dd { margin:0; font-size:.82rem }
.mon-table tbody tr[hx-get]:hover td { background:var(--c-row-hover) }
.mon-table .status-dot { width:11px; height:11px }
.src-status { display:inline-flex; align-items:center; gap:.4rem; white-space:nowrap }
.mon-scroll { padding-bottom:1.5rem }
.mon-nf-scroll { max-height:32rem; overflow-y:auto }
.mon-add { width:1.65rem; height:1.65rem; padding:0; border-radius:50%; display:inline-flex; align-items:center; justify-content:center; font-size:1.15rem; font-weight:600; line-height:1 }
#doc-search-results { max-height:14rem; overflow:auto }
.mon .vt-tabs { position:sticky; top:0; z-index:5; background:#fff; margin:0 -1rem 1rem; padding:.75rem 1rem 0 }
.mon [hx-get] { cursor:pointer }
.mon summary { cursor:pointer }
.mon summary::marker { color:var(--c-muted) }
.src-row { display:grid; grid-template-columns:1.4rem 1.7fr 2.4fr 1.4fr auto; align-items:center; gap:1rem; min-height:3.1rem; padding:.45rem .6rem; border-bottom:1px solid var(--c-soft) }
.src-row:hover { background:var(--c-row-hover) }
.src-check { margin:0; display:flex; align-items:center; cursor:pointer }
.src-check input { cursor:pointer }
.src-name { font-weight:600; color:var(--c-navy); text-decoration:none; cursor:pointer }
.src-name:hover { text-decoration:underline }
.src-meta { color:var(--c-muted); font-size:.75rem; margin-top:.1rem }
.src-row.health-ok .status-dot, .mon .status-dot.health-ok { background:var(--c-ok) }
.src-row.health-failing .status-dot, .mon .status-dot.health-failing { background:var(--c-danger) }
.src-row.health-silent .status-dot, .mon .status-dot.health-silent { background:var(--c-warn) }
.src-row.health-never .status-dot, .mon .status-dot.health-never { background:var(--c-muted) }
.src-row.health-unverified .status-dot, .mon .status-dot.health-unverified { background:var(--c-warn) }
.mon .status-dot.st-triage { background:var(--c-warn) }
.mon .status-dot.st-review { background:var(--c-accent) }
.mon .status-dot.st-rejected, .mon .status-dot.st-error { background:var(--c-danger) }
.mon .status-dot.st-running, .mon .status-dot.st-queued { background:var(--c-accent) }
.mon .status-dot.st-new_instrument, .mon .status-dot.st-in_force { background:var(--c-ok) }
.mon .status-dot.st-no_match, .mon .status-dot.st-pending { background:var(--c-muted) }
.src-runs { display:flex; gap:3px }
.src-runs .pill { width:12px; height:20px; border-radius:2px; background:var(--c-muted) }
.src-runs .pill.success { background:var(--c-ok) }
.src-runs .pill.error { background:var(--c-danger) }
.src-runs .pill.unchanged { background:#cdd3dc }
.src-never { color:var(--c-muted); font-size:.75rem }
.mon-empty { color:var(--c-muted); padding:1.4rem; text-align:center; font-size:.82rem }
.filter-bar { display:flex; flex-wrap:wrap; align-items:center; gap:.4rem }
.filter-menu { min-width:15rem; max-height:20rem; overflow-y:auto; padding:.25rem; font-size:.82rem }
.filter-opt { display:flex; align-items:center; gap:.5rem; margin:0; padding:.22rem .5rem; border-radius:.25rem; cursor:pointer; white-space:nowrap }
.filter-opt:hover { background:var(--c-row-hover) }
.filter-chips { display:flex; flex-wrap:wrap; gap:.35rem; margin-top:.5rem }
.filter-chip { display:inline-flex; align-items:center; gap:.45rem; text-decoration:none; background:var(--c-navy); color:#fff; border:0; border-radius:1rem; padding:.12rem .65rem; font-size:.75rem }
.filter-chip:hover { filter:brightness(1.18); color:#fff }
.chart { display:flex; gap:.45rem }
.chart-y { display:flex; flex-direction:column; justify-content:space-between; align-items:flex-end; font-size:.66rem; color:var(--c-muted); font-variant-numeric:tabular-nums; padding-bottom:1.2rem }
.chart-plot { flex:1; min-width:0 }
.chart-bars { display:flex; align-items:flex-end; gap:.2rem; height:4.5rem; border-bottom:1px solid var(--c-line); background-image:linear-gradient(to top, var(--c-soft) 1px, transparent 1px); background-size:100% 25% }
.chart-col { flex:1; min-width:0; display:flex; align-items:flex-end; height:100% }
.chart-bar { width:100%; min-height:2px; background:var(--c-accent); border-radius:2px 2px 0 0; pointer-events:none; transition:filter .1s ease }
.chart-col:hover .chart-bar { filter:brightness(.85) }
.chart-stack { width:100%; height:100%; display:flex; flex-direction:column; justify-content:flex-end }
.chart-seg { width:100%; transition:filter .1s ease }
.chart-seg.seg-nf { background:var(--c-accent) }
.chart-seg.seg-doc { background:var(--c-navy) }
.chart-seg.seg-matched { background:var(--c-ok) }
.chart-seg.seg-poll { background:var(--c-accent) }
.chart-seg:hover { filter:brightness(.85) }
.chart-legend { font-size:.72rem; color:var(--c-muted); display:inline-flex; align-items:center; gap:.3rem }
.chart-key { display:inline-block; width:10px; height:10px; border-radius:2px }
.chart-x { display:flex; gap:.2rem; margin-top:.15rem }
.chart-xc { flex:1; min-width:0; text-align:center; font-size:.66rem; color:var(--c-muted); line-height:1.25; container-type:inline-size }
.chart-xname { display:none }
@container (min-width: 2.1em) {
  .chart-xname { display:inline }
}
.chart-mon { display:block; font-weight:700; color:var(--c-navy); white-space:nowrap }
.filter-bar .ts-wrapper { flex:0 1 auto; width:auto; min-width:9rem; max-width:24rem; margin:0 }
.filter-bar .ts-control { min-height:31px; padding:1px 6px; font-size:.75rem; border-color:var(--c-line); flex-wrap:nowrap; overflow:hidden }
.filter-bar .ts-control .item { font-size:.72rem; white-space:nowrap }
.filter-bar .flt-range { width:15rem; cursor:pointer; background:#fff }
.filter-clear { align-self:center; font-size:.75rem; color:var(--c-muted); text-decoration:underline; cursor:pointer; white-space:nowrap }
.filter-clear:hover { color:var(--c-navy) }
.mon-fig { font-size:1.5rem; font-weight:600; color:var(--c-navy); line-height:1.15 }
.gt--candidates { overflow-x:auto }
.gt--candidates .gt-c { min-width:0; white-space:normal }
.gt--candidates .gt-row:has(.form-check-input:checked) { background:var(--c-row-hover) }
.gt--cov-summary { grid-template-columns:minmax(12rem,max-content) 1fr }
.gt--cov-priority { grid-template-columns:max-content minmax(8rem,max-content) max-content minmax(10rem,1fr) }
.gt--cov-group { grid-template-columns:minmax(10rem,1fr) max-content minmax(6rem,max-content) minmax(8rem,max-content) }
.gt--cov-extra { grid-template-columns:minmax(10rem,1fr) max-content }
.select2-container--default .select2-results__option--highlighted[aria-selected] { background-color:#00063d }
.select2-container--default .select2-results__option[aria-selected=true] { background-color:#e7ecf2; color:inherit }
.daterangepicker td.active, .daterangepicker td.active:hover { background-color:#00063d }
.daterangepicker td.in-range { background-color:#e7ecf2 }
.daterangepicker .ranges li.active { background-color:#00063d }
.daterangepicker .drp-buttons .btn.applyBtn { background-color:#00063d; border-color:#00063d }
#mon-content.htmx-request { opacity:.5; transition:opacity .12s ease; pointer-events:none }
.chart--tall .chart-bars { height:7rem }
.latest-row { display:grid; grid-template-columns:1.4rem minmax(0,1fr) max-content; align-items:center; gap:.6rem; padding:.34rem .75rem; border-bottom:1px solid var(--c-soft); text-decoration:none; color:var(--c-navy); font-size:.8rem }
.latest-row:hover { background:var(--c-row-hover) }
.latest-row .text-truncate { font-weight:600; color:var(--c-navy) }
.gt--newsfeed { grid-template-columns:max-content minmax(6rem,1fr) minmax(9rem,1.4fr) minmax(6rem,1fr) max-content max-content max-content }
.gt--newsfeed-pub { grid-template-columns:minmax(6rem,1fr) minmax(9rem,1.4fr) minmax(6rem,1fr) max-content max-content max-content }
.nf-type { width:13.5rem; font-size:.72rem; padding:.1rem 1.7rem .1rem .5rem; height:1.75rem; min-height:0; background-position:right .55rem center }
/* The newsfeed row is a bordered <article> with inline labelled facts, not a .gt grid (see
   feed_row.html / feed.html). Its few non-utility rules live in feed.html; .src-html below still
   normalises the imported HTML in its expanded panel. */
.src-html { overflow-x:auto; overflow-wrap:anywhere }
.src-html * { max-width:none !important; width:auto !important }
.src-html b, .src-html strong { font-weight:400 }
.src-html :is(h1, h2, h3, h4) :is(b, strong) { font-weight:700 }
@media (min-width:992px) {
  .fill-col { flex:1 1 auto; min-height:0; display:flex; flex-direction:column }
  .fill-scroll { flex:1 1 auto; min-height:0; overflow-y:auto }
}
