:root {
  --bg: #f4f6f9; --surface: #fff; --surface-alt: #f8fafc;
  --navy: #1a2744; --navy-light: #a8b8d8; --navy-mid: #2d4070;
  --border: #e1e8f0; --border-soft: #f0f4f8;
  /* a11y 2026-07-07: muted/subtle grays darkened to hold >= 4.5:1 on both the
     white surface and the #f4f6f9 page background (old #9ca3af was 2.5:1). */
  --text: #2c3e50; --text-muted: #5b6472; --text-subtle: #64707f; --text-body: #374151;
  --focus-ring: #1a2744;
  --green: #27ae60; --green-dark: #065f46; --green-bg: #d1fae5;
  --blue: #2471a3; /* was #2980b9 — darkened so white button text passes 4.5:1 */ --blue-bg: #dbeafe; --blue-text: #1e40af;
  --orange: #e67e22; --red: #e53e3e; --red-dark: #c53030;
  --red-text: #721c24; --red-bg: #f8d7da; --red-border: #f5c6cb;
  --amber: #92400e; --purple: #6d28d9; --purple-bg: #ede9fe;
  --trust-bg: #f0f4ff; --trust-border: #c7d4f0; --trust-text: #3b4fa8;
  --cite-bg: #f7fafc; --cite-border: #cbd5e0;
  --sent-bg: #c6f6d5; --sent-border: #9ae6b4; --sent-text: #1a6b3a;
  --model-bg: #fde8e8; --model-border: #f5c6c6; --model-text: #c0392b;
  --radius: 6px; --radius-lg: 8px;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link{position:absolute;left:-9999px;top:0;z-index:200;background:var(--navy);color:#fff;padding:10px 16px;border-radius:0 0 6px 0;font-size:0.875rem;font-weight:600;text-decoration:none}
.skip-link:focus{left:0}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;background:var(--bg);color:var(--text);min-height:100vh}

header{background:var(--navy);color:#fff;padding:16px 32px;display:flex;align-items:center;justify-content:space-between;gap:20px}
header h1{font-size:1.5rem;font-weight:700;letter-spacing:-0.5px}
header p{font-size:0.8rem;color:var(--navy-light);margin-top:2px}
.header-badge{background:var(--navy-mid);border:1px solid #3d5a94;color:var(--navy-light);padding:4px 10px;border-radius:4px;font-size:0.75rem}

.auth-menu-item{display:block;width:100%;text-align:left;padding:10px 14px;border:none;background:none;font-size:0.85rem;font-weight:500;color:var(--text-body);cursor:pointer}
.auth-menu-item:hover{background:var(--surface-alt)}

nav{background:var(--surface);border-bottom:2px solid var(--border);padding:0 32px;display:flex;overflow-x:auto}
.tab-btn{padding:12px 20px;border:none;background:none;font-size:0.875rem;font-weight:500;color:var(--text-muted);cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-2px;white-space:nowrap;transition:color 0.15s,border-color 0.15s}
.tab-btn:hover{color:var(--navy)}.tab-btn.active{color:var(--navy);border-bottom-color:var(--navy);font-weight:600}
.tab-btn:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px}

main{max-width:1280px;margin:0 auto;padding:24px 32px}
.tab-panel{display:none}.tab-panel.active{display:block}

.panel-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;flex-wrap:wrap;gap:10px}
.panel-header h2{font-size:1.15rem;font-weight:600;color:var(--navy)}
.panel-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}

.stat-bar{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:10px 18px;margin-bottom:18px;font-size:0.875rem;color:var(--text-muted)}
.stat-bar strong{color:var(--navy)}

button.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border:none;border-radius:var(--radius);font-size:0.85rem;font-weight:600;cursor:pointer;transition:opacity 0.15s,transform 0.1s}
button.btn:hover:not(:disabled){opacity:0.88}button.btn:active:not(:disabled){transform:scale(0.98)}
button.btn:disabled{opacity:0.5;cursor:not-allowed}button.btn:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.btn-primary{background:var(--navy);color:#fff}.btn-success{background:#1e8449;color:#fff} /* was var(--green) #27ae60 — 2.9:1 with white text */
.btn-blue{background:var(--blue);color:#fff}.btn-dark{background:var(--sent-text);color:#fff}
.btn-outline{background:transparent;color:var(--navy);border:1px solid var(--navy)}
.btn-sm{padding:5px 10px;font-size:0.78rem}

.msg{padding:10px 14px;border-radius:var(--radius);font-size:0.875rem;margin-top:10px}
.msg-success{background:#d4edda;color:#155724;border:1px solid #c3e6cb}
.msg-error{background:var(--red-bg);color:var(--red-text);border:1px solid var(--red-border)}
.msg-info{background:#d1ecf1;color:#0c5460;border:1px solid #bee5eb}

.table-wrap{overflow-x:auto;border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--surface)}
table{width:100%;border-collapse:collapse;font-size:0.85rem}
thead th{background:var(--surface-alt);padding:10px 13px;text-align:left;font-weight:600;color:var(--text-body);border-bottom:1px solid var(--border);white-space:nowrap}
tbody tr{border-bottom:1px solid var(--border-soft)}tbody tr:last-child{border-bottom:none}
tbody tr:hover{background:#fafbfd}tbody td{padding:9px 13px;color:var(--text-body);vertical-align:top}
.bill-link{color:var(--navy);text-decoration:none;font-weight:500}
.bill-link:hover{text-decoration:underline}

.badge{display:inline-block;padding:2px 7px;border-radius:4px;font-size:0.72rem;font-weight:700;letter-spacing:0.3px}
.badge-model{background:var(--model-bg);color:var(--model-text);border:1px solid var(--model-border)}
.badge-official{background:var(--green-bg);color:var(--green-dark);border:1px solid #a7f3d0}
.badge-draft{background:#e2e8f0;color:#4a5568}
.badge-approved{background:var(--green-bg);color:var(--green-dark)}
.badge-sent{background:var(--sent-bg);color:var(--sent-text);border:1px solid var(--sent-border)}
.badge-low{background:#fef3c7;color:#92400e}.badge-high{background:var(--green-bg);color:var(--green-dark)}

.score-cell{font-weight:700}
.score-high{color:var(--green-dark)}.score-mid{color:var(--amber)}.score-low{color:var(--text-muted)}

.score-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px 18px;display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:start}
.score-card:hover{border-color:var(--navy-light)}
.score-card-num{font-size:2rem;font-weight:800;line-height:1;text-align:center;min-width:52px}
.score-card-title{font-weight:700;color:var(--navy);font-size:0.9rem;margin-bottom:3px}
.score-card-reason{font-size:0.82rem;color:var(--text-body);line-height:1.5;margin-bottom:8px}
.score-sub-bars{display:flex;gap:10px;flex-wrap:wrap}
.score-sub-bar{display:flex;align-items:center;gap:5px;font-size:0.72rem;color:var(--text-muted)}
.score-sub-bar-track{width:44px;height:5px;background:var(--border);border-radius:3px;overflow:hidden}
.score-sub-bar-fill{height:100%;border-radius:3px;background:var(--green)}

.control-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
select.client-select,input.search-input{padding:7px 11px;border:1px solid #d1d5db;border-radius:var(--radius);font-size:0.875rem;background:var(--surface);color:var(--navy);cursor:pointer}
select.client-select{min-width:200px}input.search-input{min-width:220px}
select.client-select:focus-visible,input.search-input:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}
/* a11y: generic visible focus for links, filter selects, textareas, inputs and
   role="button" cards/rows/graph nodes rendered by JS */
a:focus-visible,select:focus-visible,textarea:focus-visible,input:focus-visible,[role="button"]:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}

/* Briefs + Reports */
.brief-list{display:flex;flex-direction:column;gap:9px;margin-top:14px}
.brief-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px 18px;cursor:pointer;transition:border-color 0.15s,box-shadow 0.15s}
.brief-card:hover{border-color:var(--navy);box-shadow:0 2px 8px rgba(26,39,68,0.08)}
.brief-card.expanded{border-color:var(--navy)}
.brief-card-header{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.brief-card-meta{display:flex;align-items:center;gap:8px}
.brief-date{font-weight:600;color:var(--navy)}.brief-reading-time{font-size:0.78rem;color:var(--text-subtle)}
.brief-detail{margin-top:14px;display:none}.brief-card.expanded .brief-detail{display:block}

.trust-panel{background:var(--trust-bg);border:1px solid var(--trust-border);border-radius:var(--radius);padding:11px 14px;margin-bottom:12px;font-size:0.8rem;color:var(--trust-text)}
.trust-panel strong{display:block;margin-bottom:3px;color:var(--navy);font-size:0.82rem}
.ai-section{background:#fff8f0;border-left:4px solid var(--orange);border-radius:0 var(--radius) var(--radius) 0;padding:12px 14px;margin-bottom:12px}
.ai-section-label{font-size:0.72rem;font-weight:700;color:var(--model-text);letter-spacing:0.5px;margin-bottom:7px;text-transform:uppercase}
.brief-textarea{width:100%;min-height:260px;padding:10px;border:1px solid #d1d5db;border-radius:var(--radius);font-size:0.875rem;line-height:1.6;font-family:inherit;resize:vertical;background:var(--surface);color:var(--text)}
.brief-textarea:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px}
.brief-actions{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}

.empty-state{text-align:center;padding:44px 24px;color:var(--text-subtle);font-size:0.9rem}
.empty-state strong{display:block;font-size:0.95rem;color:var(--text-muted);margin-bottom:5px}

.loading-spinner{display:inline-block;width:13px;height:13px;border:2px solid rgba(255,255,255,0.4);border-top-color:#fff;border-radius:50%;animation:spin 0.7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:0.01ms!important;animation-iteration-count:1!important;transition-duration:0.01ms!important;scroll-behavior:auto!important}
}

.brief-blocked{background:var(--trust-bg);border:1px solid var(--trust-border);border-left:4px solid var(--navy);border-radius:var(--radius-lg);padding:20px 24px;margin-bottom:12px}
.brief-blocked-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.brief-blocked-icon{width:26px;height:26px;flex:0 0 26px;border-radius:50%;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;font-size:0.8rem;font-weight:700}
.brief-blocked h3{color:var(--navy);font-size:0.95rem;font-weight:700}
.brief-blocked p{font-size:0.875rem;color:var(--text-body);margin-bottom:5px;line-height:1.5}
.brief-blocked .block-reason{font-weight:600;color:var(--navy)}
.brief-blocked .block-detail{font-family:monospace;font-size:0.78rem;color:var(--text-muted);background:var(--surface);border:1px solid var(--border);padding:6px 10px;border-radius:4px;margin-top:6px}
.brief-blocked .block-footer{font-size:0.78rem;color:var(--text-muted);margin-top:10px;font-style:italic}

.state-off-season{background:#f0f4ff;border:2px solid #c7d4f0;border-radius:var(--radius-lg);padding:20px 24px;margin-bottom:12px;text-align:center}
.state-off-season .state-icon{font-size:2rem;margin-bottom:8px}
.state-off-season h3{color:#1e3a8a;font-size:0.95rem;font-weight:700;margin-bottom:6px}
.state-off-season p{font-size:0.85rem;color:var(--text-muted);line-height:1.6;max-width:480px;margin:0 auto}

.state-out-of-scope{background:#fef9ec;border:2px solid #fde68a;border-radius:var(--radius-lg);padding:20px 24px;margin-bottom:12px;text-align:center}
.state-out-of-scope .state-icon{font-size:2rem;margin-bottom:8px}
.state-out-of-scope h3{color:#92400e;font-size:0.95rem;font-weight:700;margin-bottom:6px}
.state-out-of-scope p{font-size:0.85rem;color:var(--text-muted);line-height:1.6;max-width:480px;margin:0 auto}

.citations-panel{background:var(--cite-bg);border:1px solid var(--cite-border);border-radius:var(--radius);padding:12px 14px;margin-top:12px;font-size:0.78rem}
.citations-panel-title{font-weight:700;color:var(--navy);margin-bottom:8px;font-size:0.82rem}
.citation-row{display:flex;gap:7px;align-items:flex-start;padding:5px 0;border-bottom:1px solid #e2e8f0}
.citation-row:last-child{border-bottom:none}
.citation-badge{flex-shrink:0;padding:2px 5px;border-radius:3px;font-size:0.68rem;font-weight:700;background:#e2e8f0;color:#4a5568}
.citation-claim{color:var(--text-body);flex:1}.citation-excerpt{color:#718096;font-style:italic;margin-top:1px}
.citation-link{color:var(--navy);text-decoration:none;font-weight:600}
.citation-link:hover{text-decoration:underline}
.cite-ok{color:var(--green-dark);font-weight:700}.cite-warn{color:var(--red-dark);font-weight:700} /* a11y: darkened from --green/--red for 4.5:1 on light panel */
.field-unverified{color:var(--model-text);font-style:italic;font-size:0.78rem}

/* Legislators */
.leg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;margin-top:14px}
.leg-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px 16px;transition:border-color 0.15s,box-shadow 0.15s;cursor:pointer}
.leg-card:hover{border-color:var(--navy);box-shadow:0 2px 6px rgba(26,39,68,0.08)}
.leg-card h3{font-size:0.95rem;font-weight:600;color:var(--navy);margin-bottom:4px}
.leg-meta{font-size:0.8rem;color:var(--text-muted);display:flex;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.leg-meta span{display:flex;align-items:center;gap:3px}
.party-d{color:#1a56a0;font-weight:700}.party-r{color:#b91c1c;font-weight:700}.party-other{color:#6b7280;font-weight:700}

.leg-detail-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px;flex-wrap:wrap}
.leg-official{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px;margin-bottom:16px}
.leg-official h3{font-size:0.9rem;font-weight:700;color:var(--navy);margin-bottom:10px;display:flex;align-items:center;gap:8px}
.leg-inferred{background:#fff8f0;border:1px solid #fde8cc;border-radius:var(--radius-lg);padding:16px;margin-bottom:16px}
.leg-inferred h3{font-size:0.9rem;font-weight:700;color:var(--model-text);margin-bottom:10px;display:flex;align-items:center;gap:8px}
.field-row{display:flex;gap:8px;margin-bottom:7px;font-size:0.875rem}
.field-label{font-weight:600;color:var(--text-muted);min-width:100px;flex-shrink:0}
.field-val{color:var(--text-body)}
.priorities-list{list-style:none;padding:0}.priorities-list li{padding:4px 0 4px 12px;border-left:3px solid var(--orange);margin-bottom:4px;font-size:0.875rem;color:var(--text-body)}

/* News */
.home-nav-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px 12px;text-align:center;cursor:pointer;transition:border-color 0.15s,box-shadow 0.15s;width:100%}
.home-nav-card:hover{border-color:var(--navy);box-shadow:0 2px 8px rgba(26,39,68,0.10)}
.home-stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px 16px;text-align:center}
.home-stat-num{font-size:2rem;font-weight:800;color:var(--navy);line-height:1}
.home-stat-label{font-size:0.78rem;color:var(--text-muted);margin-top:4px}
.news-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px 16px;margin-bottom:10px}
.news-source-chip{display:inline-flex;align-items:center;padding:5px 11px;border-radius:20px;font-size:0.78rem;font-weight:500;background:var(--surface);border:1px solid var(--border);color:var(--navy);text-decoration:none;transition:background 0.15s,border-color 0.15s}
.news-source-chip:hover{background:var(--navy);color:#fff;border-color:var(--navy)}
.news-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.news-title{font-size:0.95rem;font-weight:600;color:var(--navy);margin-bottom:4px}
.news-meta{font-size:0.78rem;color:var(--text-muted);display:flex;gap:10px;margin-bottom:8px}
.news-summary{font-size:0.875rem;color:var(--text-body);line-height:1.5}
.signal-bar{height:5px;border-radius:3px;background:var(--border);margin-top:8px;overflow:hidden}
.signal-fill{height:100%;border-radius:3px;background:linear-gradient(90deg,var(--amber),var(--green))}

/* ROI panel */
.roi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin-top:14px}
.roi-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px}
.roi-card .roi-num{font-size:2rem;font-weight:700;color:var(--navy);line-height:1.1;margin-bottom:4px}
.roi-card .roi-label{font-size:0.82rem;color:var(--text-muted)}
.roi-card .roi-note{font-size:0.72rem;color:var(--text-subtle);margin-top:4px;font-style:italic}

/* Filters row */
.filter-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:14px}
select.filter-select{padding:6px 10px;border:1px solid #d1d5db;border-radius:var(--radius);font-size:0.82rem;background:var(--surface);color:var(--navy)}

/* Clients tab */
.client-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px;transition:box-shadow 0.15s}
.client-card:hover{box-shadow:0 4px 16px rgba(0,0,0,0.09)}
.client-card-name{font-size:1.05rem;font-weight:700;color:var(--navy);margin-bottom:3px}
.client-card-desc{font-size:0.82rem;color:var(--text-muted);margin-bottom:14px;line-height:1.4}
.client-card-stats{display:flex;gap:20px;margin-bottom:16px;padding:10px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.client-stat{text-align:center}
.client-stat-num{font-size:1.5rem;font-weight:800;color:var(--navy);line-height:1}
.client-stat-label{font-size:0.68rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.05em;margin-top:2px}
.client-top-bill{font-size:0.8rem;color:var(--text-muted);margin-bottom:14px;min-height:18px}
.client-card-actions{display:flex;gap:8px;flex-wrap:wrap}
.client-detail-back{display:flex;align-items:center;gap:8px;margin-bottom:20px}
.client-detail-name{font-size:1.4rem;font-weight:800;color:var(--navy);margin-bottom:4px}
.client-detail-meta{font-size:0.85rem;color:var(--text-muted);margin-bottom:24px}
.client-detail-section{margin-bottom:32px}
.client-detail-section h3{font-size:1rem;font-weight:700;color:var(--navy);margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}

footer{margin-top:48px;padding:18px 32px;border-top:1px solid var(--border);font-size:0.78rem;color:var(--text-subtle);display:flex;gap:18px;flex-wrap:wrap;align-items:center}
footer a{color:var(--text-muted);text-decoration:none}footer a:hover{text-decoration:underline}

@media(max-width:700px){main{padding:14px}header{padding:12px 14px}nav{padding:0 8px}.tab-btn{padding:10px 12px;font-size:0.8rem}footer{padding:14px}.leg-grid{grid-template-columns:1fr}}
