/* ── ML Intelligence Dashboard ── */
.intel-nav {
margin-bottom: 12px;
font-size: 0.9em;
}
.intel-nav a {
color: #0645ad;
text-decoration: none;
}
.intel-nav a:hover {
text-decoration: underline;
}
.intel-subtitle {
color: #666;
font-size: 0.95em;
margin-bottom: 16px;
}
.intel-loading {
color: #888;
font-style: italic;
padding: 20px;
}
.intel-empty {
padding: 24px;
background: #fafafa;
border: 1px solid #ddd;
text-align: center;
margin: 20px 0;
color: #666;
}
.intel-empty h2 {
color: #444;
margin-bottom: 8px;
}
.intel-empty code {
background: #eee;
padding: 2px 6px;
font-size: 0.95em;
}
/* ── Summary cards ── */
.intel-summary-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
gap: 12px;
margin: 16px 0 24px;
}
.intel-summary-card {
border: 1px solid #ccc;
padding: 12px 14px;
background: #fafafa;
text-align: center;
}
.intel-summary-value {
font-size: 1.8em;
font-weight: bold;
color: #333;
line-height: 1.1;
}
.intel-summary-label {
font-size: 0.85em;
color: #666;
text-transform: uppercase;
letter-spacing: 0.04em;
margin-top: 4px;
}
.intel-summary-detail {
font-size: 0.78em;
color: #888;
margin-top: 4px;
}
/* ── Tabs ── */
.intel-tabs {
display: flex;
gap: 0;
border-bottom: 2px solid #333;
margin: 0 0 16px;
flex-wrap: wrap;
}
.intel-tab {
padding: 8px 18px;
font-size: 0.92em;
font-family: Georgia, serif;
background: #eee;
border: 1px solid #ccc;
border-bottom: none;
cursor: pointer;
margin-bottom: -2px;
color: #555;
}
.intel-tab:hover {
background: #ddd;
}
.intel-tab.active {
background: #fff;
border-bottom: 2px solid #fff;
color: #222;
font-weight: bold;
}
/* ── Committee insights grid ── */
.committee-insights-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: 1em;
}
.committee-insight-card {
border: 1px solid #d5d5d5;
border-radius: 6px;
padding: 1em;
background: #fafafa;
}
.committee-insight-card h3 {
margin: 0 0 0.2em 0;
font-size: 1em;
color: #1a5276;
}
.committee-insight-list {
margin: 0.5em 0 0;
padding-left: 1.5em;
}
.committee-insight-list li {
margin-bottom: 0.5em;
font-size: 0.9em;
line-height: 1.4;
}
.committee-insight-stat {
display: inline-block;
margin-left: 0.3em;
font-weight: 600;
color: #2d8659;
}
.committee-insight-detail {
display: block;
font-size: 0.82em;
color: #777;
}
.committee-routing-tag {
font-weight: normal;
font-size: 0.85em;
color: #888;
}
/* ── Influence labels (High/Moderate/Low) on trust-badge ── */
.intel-trust-high {
background: #d4edda;
color: #155724;
border: 1px solid #c3e6cb;
}
.intel-trust-low {
background: #f8d7da;
color: #721c24;
border: 1px solid #f5c6cb;
}
/* ── Value assessment badges ── */
.value-badge {
display: inline-block;
font-size: 0.75em;
font-weight: bold;
padding: 2px 8px;
border-radius: 3px;
}
.value-undervalued {
background: #e6f5ec;
color: #1a6b3c;
border: 1px solid #2d8659;
}
.value-fairly-valued {
background: #f5f5f5;
color: #666;
border: 1px solid #ccc;
}
.value-overvalued {
background: #fde8e8;
color: #8b2020;
border: 1px solid #b04040;
}
/* ── Outcome badges ── */
.intel-outcome {
display: inline-block;
font-size: 0.8em;
font-weight: bold;
padding: 1px 6px;
text-transform: uppercase;
letter-spacing: 0.03em;
}
.intel-outcome-advance {
background: #d4edda;
color: #155724;
border: 1px solid #c3e6cb;
}
.intel-outcome-stuck {
background: #f8d7da;
color: #721c24;
border: 1px solid #f5c6cb;
}
/* ── Destination badges (v6: predicted destination) ── */
.dest-badge {
display: inline-block;
font-size: 0.78em;
font-weight: 700;
padding: 2px 8px;
border-radius: 3px;
letter-spacing: 0.02em;
white-space: nowrap;
}
.dest-law {
background: #d4edda;
color: #155724;
border: 1px solid #a3d9a5;
}
.dest-floor {
background: #fff3cd;
color: #856404;
border: 1px solid #ffeaa7;
}
.dest-passed {
background: #cce5ff;
color: #004085;
border: 1px solid #99caff;
}
.dest-governor {
background: #d1ecf1;
color: #0c5460;
border: 1px solid #b8daff;
}
.dest-stuck {
background: #f8d7da;
color: #721c24;
border: 1px solid #f5c6cb;
}
.dest-became-law {
background: #28a745;
color: #fff;
border: 1px solid #1e7e34;
}
.dest-vetoed {
background: #6c757d;
color: #fff;
border: 1px solid #545b62;
}
.intel-forecast-label {
font-size: 0.8em;
color: #888;
font-style: italic;
}
.intel-flag {
display: inline-block;
font-size: 0.8em;
font-weight: bold;
padding: 1px 6px;
background: #f8d7da;
color: #721c24;
border: 1px solid #f5c6cb;
}
.intel-normal {
font-size: 0.8em;
color: #888;
}
tr.forecast {
font-style: italic;
color: #777;
}
tr.anomaly-flagged {
background: #fff5f5;
}
/* ── Filters ── */
.intel-filters {
margin: 8px 0 12px;
padding: 8px 12px;
background: #fafafa;
border: 1px solid #ddd;
font-size: 0.88em;
}
.intel-filters label {
margin-right: 16px;
cursor: pointer;
}
.intel-filters input[type="checkbox"] {
margin-right: 4px;
}
/* ── ML table filter bar (unified search + keywords) ── */
.intel-filter-bar {
margin: 8px 0 12px;
padding: 10px 12px;
background: #fafafa;
border: 1px solid #ddd;
font-size: 0.9em;
}
.intel-filter-search {
display: block;
width: 100%;
max-width: 560px;
padding: 8px 12px;
font-size: 1em;
border: 1px solid #999;
background: #fff;
}
.intel-filter-search:focus {
outline: 1px solid #0645ad;
outline-offset: 0;
}
.intel-filter-hint {
display: block;
margin-top: 6px;
color: #666;
font-size: 0.85em;
}
.intel-filters-grouped {
display: flex;
flex-wrap: wrap;
gap: 16px 24px;
align-items: baseline;
}
.intel-filter-group {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 4px 12px;
}
.intel-filter-group-label {
font-weight: bold;
color: #444;
margin-right: 4px;
font-size: 0.9em;
}
.intel-filter-group label {
margin-right: 0;
}
/* ── Trust badges ── */
.intel-trust-badge {
display: inline-block;
font-size: 0.75em;
font-weight: bold;
padding: 2px 8px;
text-transform: uppercase;
letter-spacing: 0.04em;
}
.intel-trust-high,
.intel-trust-good {
background: #d4edda;
color: #155724;
}
.intel-trust-moderate,
.intel-trust-fair {
background: #fff3cd;
color: #856404;
}
.intel-trust-low,
.intel-trust-poor {
background: #f8d7da;
color: #721c24;
}
.intel-trust-unknown {
background: #e2e3e5;
color: #383d41;
}
.intel-trust-big {
margin: 8px 0;
}
.intel-trust-big .intel-trust-badge {
font-size: 1.1em;
padding: 4px 14px;
}
/* ── Quality grid ── */
.intel-quality-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 16px;
margin: 12px 0;
}
.intel-quality-card {
border: 1px solid #ccc;
padding: 14px;
background: #fafafa;
}
.intel-quality-card h3 {
font-size: 1em;
margin-bottom: 8px;
border-bottom: 1px solid #ddd;
padding-bottom: 4px;
}
.intel-quality-card h4 {
font-size: 0.9em;
margin: 8px 0 4px;
color: #444;
}
.quality-section ul {
list-style: none;
padding: 0;
margin: 0;
font-size: 0.88em;
}
.quality-section li {
padding: 2px 0;
}
.quality-good::before {
content: "\2713 ";
color: #4a9;
}
.quality-warn::before {
content: "\26A0 ";
color: #c80;
}
.model-selected {
background: #e8f5e9;
}
/* ── Coalition cards ── */
.coalition-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: 14px;
margin: 12px 0;
}
.coalition-card {
border: 1px solid #ccc;
padding: 12px 14px;
background: #fafafa;
}
.coalition-cross-party {
border-left: 4px solid #a60;
background: #fffaf0;
}
.coalition-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 8px;
}
.coalition-header h3 {
font-size: 1em;
margin: 0;
}
.coalition-size {
font-size: 0.85em;
color: #666;
}
.coalition-party-bar {
display: flex;
height: 22px;
border: 1px solid #ccc;
overflow: hidden;
margin-bottom: 6px;
}
.party-dem {
background: #3366aa;
color: #fff;
font-size: 0.75em;
line-height: 22px;
text-align: center;
min-width: 30px;
}
.party-rep {
background: #cc3333;
color: #fff;
font-size: 0.75em;
line-height: 22px;
text-align: center;
min-width: 30px;
}
.coalition-cross-label {
font-size: 0.78em;
color: #a60;
font-weight: bold;
text-transform: uppercase;
letter-spacing: 0.04em;
margin-bottom: 6px;
}
.coalition-members-toggle {
margin-top: 6px;
}
.coalition-members-toggle summary {
cursor: pointer;
font-size: 0.85em;
color: #0645ad;
}
.party-tag {
display: inline-block;
font-size: 0.8em;
font-weight: bold;
padding: 1px 6px;
}
.party-D {
background: #d0ddf0;
color: #234;
}
.party-R {
background: #f0d0d0;
color: #432;
}
/* ── Pipeline stage bars ── */
.pipeline-stage-cell {
min-width: 110px;
}
.pipeline-bar-container {
width: 100%;
height: 12px;
background: #eee;
border: 1px solid #ccc;
margin-bottom: 2px;
}
.pipeline-bar {
height: 100%;
}
.pipeline-active {
background: linear-gradient(90deg, #4a9 0%, #48a 100%);
}
.pipeline-signed {
background: #2a7;
}
.pipeline-vetoed {
background: #a33;
}
.pipeline-label {
font-size: 0.75em;
color: #555;
}
/* ── Stuck status badges ── */
.stuck-badge {
display: inline-block;
font-size: 0.72em;
font-weight: bold;
padding: 1px 6px;
text-transform: uppercase;
letter-spacing: 0.03em;
white-space: nowrap;
}
.stuck-dead {
background: #e2e3e5;
color: #555;
}
.stuck-stagnant {
background: #f8d7da;
color: #721c24;
}
.stuck-slow {
background: #fff3cd;
color: #856404;
}
.stuck-pending {
background: #fff9e6;
color: #7a6b00;
}
.stuck-new {
background: #cce5ff;
color: #004085;
}
.stuck-law {
background: #d4edda;
color: #155724;
}
.stuck-advancing {
background: #d1ecf1;
color: #0c5460;
}
.stuck-ok {
background: #f0f0f0;
color: #888;
}
/* ── Lifecycle badges ── */
.lifecycle-badge {
display: inline-block;
font-size: 0.72em;
padding: 2px 7px;
border-radius: 3px;
font-weight: 600;
letter-spacing: 0.03em;
white-space: nowrap;
}
.lifecycle-open {
background: #d1ecf1;
color: #0c5460;
}
.lifecycle-passed {
background: #d4edda;
color: #155724;
}
.lifecycle-vetoed {
background: #f8d7da;
color: #721c24;
}
.lifecycle-dead {
background: #e2e3e5;
color: #555;
}
/* Closed bills get a subtle muted row style */
.closed-bill {
opacity: 0.75;
}
/* Vetoed outcome badge */
.intel-outcome-vetoed {
background: #f8d7da;
color: #721c24;
display: inline-block;
font-size: 0.78em;
padding: 2px 7px;
border-radius: 3px;
font-weight: 600;
}
.confidence-actual {
color: #aaa;
font-style: italic;
}
/* Low-confidence rows: subtle amber left border */
.low-confidence {
border-left: 3px solid #e0a800;
background: #fffcf0;
}
/* Low-confidence label in confidence cell */
.confidence-low {
color: #856404;
}
.confidence-low-label {
display: inline-block;
background: #fff3cd;
color: #856404;
font-size: 0.72em;
font-weight: 600;
padding: 1px 5px;
border-radius: 3px;
margin-left: 3px;
vertical-align: middle;
}
/* ── Forecast confidence labels ── */
.forecast-conf {
display: inline-block;
font-size: 0.72em;
font-weight: 600;
padding: 1px 5px;
border-radius: 3px;
margin-top: 2px;
vertical-align: middle;
}
.forecast-high {
background: #d4edda;
color: #155724;
}
.forecast-medium {
background: #fff3cd;
color: #856404;
}
.forecast-low {
background: #f8d7da;
color: #721c24;
}
/* ── Sortable table headers ── */
.sortable {
cursor: pointer;
user-select: none;
position: relative;
}
.sortable:hover {
background: #e8e8e8;
}
.sort-arrow {
font-size: 0.7em;
color: #555;
}
/* ── Days idle indicators ── */
.days-critical {
color: #c00;
font-weight: bold;
}
.days-warn {
color: #a60;
font-weight: bold;
}
.days-fresh {
color: #888;
}
.days-stale {
font-size: 0.88em;
}
/* ── Coalition focus tags ── */
.coalition-focus-tags {
display: flex;
flex-wrap: wrap;
gap: 4px;
margin-bottom: 8px;
}
.focus-tag {
display: inline-block;
font-size: 0.72em;
font-weight: bold;
padding: 2px 8px;
background: #e8eef5;
color: #345;
border: 1px solid #c0cde0;
text-transform: uppercase;
letter-spacing: 0.03em;
}
.coalition-stats {
display: flex;
gap: 12px;
font-size: 0.82em;
color: #555;
margin-bottom: 8px;
flex-wrap: wrap;
}
.coalition-stats strong {
color: #333;
}
/* ══════════════════════════════════════════════════════════════
Intelligence Story Pages
══════════════════════════════════════════════════════════════ */
/* ── Confidence banner ── */
.intel-confidence-banner {
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 8px;
padding: 10px 14px;
background: #f4f7fa;
border: 1px solid #d0d8e0;
border-radius: 6px;
margin-bottom: 1.5em;
font-size: 0.88em;
}
.intel-confidence-left,
.intel-confidence-right {
display: flex;
align-items: center;
gap: 8px;
flex-wrap: wrap;
}
.intel-confidence-label {
font-weight: 600;
color: #333;
}
.intel-confidence-detail {
color: #666;
}
