@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap');

:root{
  --ink:#06080a;
  --panel:#0b1116;
  --panel-2:#101820;
  --grid:#27313b;
  --grid-2:#3a4652;
  --text:#d9e2ec;
  --muted:#8794a3;
  --cyan:#7dd3fc;
  --green:#5eead4;
  --red:#fb7185;
  --amber:#fbbf24;
  --blue:#93c5fd;
  --purple:#b58cff;
}

html, body{
  min-height:100%;
  background:var(--ink) !important;
}

body, .app-root{
  color:var(--text);
  font-family:'Inter',system-ui,sans-serif;
}

.app-root{
  min-height:100vh;
  background:
    linear-gradient(180deg, rgba(125,211,252,.06), rgba(0,0,0,0) 210px),
    repeating-linear-gradient(0deg, rgba(255,255,255,.014), rgba(255,255,255,.014) 1px, transparent 1px, transparent 5px),
    var(--ink);
}

.app-header{
  display:flex;
  justify-content:space-between;
  align-items:stretch;
  gap:18px;
  padding:18px 28px 14px;
  border-bottom:1px solid var(--grid);
  background:#090d11;
}

.brand-block{
  max-width:900px;
}

.brand-kicker{
  color:var(--cyan);
  font-size:12px;
  font-weight:800;
  margin-bottom:8px;
  text-transform:uppercase;
}

.brand-title{
  color:var(--text);
  font-size:28px;
  line-height:1.08;
  font-weight:800;
  margin:0;
}

.brand-sub{
  color:var(--muted);
  font-size:13px;
  margin-top:10px;
  max-width:820px;
  line-height:1.5;
}

.header-console{
  min-width:260px;
  background:rgba(7,16,19,.82);
  border:1px solid var(--grid);
  border-radius:6px;
  padding:12px;
  box-shadow:0 0 0 1px rgba(0,229,255,.04) inset;
}

.status-pill{
  display:inline-flex;
  align-items:center;
  width:100%;
  border:1px solid var(--grid-2);
  border-radius:4px;
  padding:8px 10px;
  color:var(--text);
  font-size:12px;
  font-weight:800;
  text-transform:uppercase;
  background:rgba(0,229,255,.08);
}

.status-pill.live{
  border-color:rgba(52,245,139,.55);
  color:var(--green);
}

.status-pill.sample{
  border-color:rgba(255,209,102,.65);
  color:var(--amber);
}

.header-meta{
  color:var(--muted);
  font-size:12px;
  margin-top:8px;
}

.signal-strip{
  display:grid;
  grid-template-columns:repeat(4, minmax(0, 1fr));
  gap:10px;
  padding:10px 28px 2px;
}

.signal-chip{
  min-height:46px;
  border:1px solid var(--grid);
  border-radius:3px;
  background:#0b1116;
  color:var(--cyan);
  font-family:Consolas,'Courier New',monospace;
  font-weight:700;
  font-size:16px;
  display:flex;
  flex-direction:column;
  justify-content:center;
  padding:8px 12px;
}

.signal-chip span{
  color:var(--muted);
  font-family:'Inter',system-ui,sans-serif;
  font-size:11px;
  font-weight:700;
  text-transform:uppercase;
  margin-top:3px;
}

.tabs-wrap{
  padding:14px 28px 8px;
}

.main-tabs{
  border-bottom:1px solid var(--grid);
}

.main-tabs .nav-link{
  color:var(--muted) !important;
  border:none !important;
  border-radius:2px 2px 0 0 !important;
  font-weight:800;
  font-size:12px;
  padding:10px 12px;
}

.main-tabs .nav-link.active{
  background:var(--panel) !important;
  color:var(--cyan) !important;
  border:1px solid var(--grid) !important;
  border-bottom:1px solid var(--panel) !important;
}

.tab-surface{
  padding-top:16px;
}

.kpi-grid{
  display:grid;
  grid-template-columns:repeat(5, minmax(0, 1fr));
  gap:10px;
  margin-bottom:10px;
}

.kpi-card{
  min-height:92px;
  border:1px solid var(--grid);
  border-radius:3px;
  background:var(--panel);
  padding:10px;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
}

.kpi-label{
  color:var(--muted);
  font-size:11px;
  font-weight:800;
  text-transform:uppercase;
}

.kpi-value{
  font-family:Consolas,'Courier New',monospace;
  font-size:24px;
  line-height:1.05;
  font-weight:800;
  margin:8px 0;
  overflow-wrap:anywhere;
}

.tone-cyan{ color:var(--cyan); }
.tone-green{ color:var(--green); }
.tone-red{ color:var(--red); }
.tone-amber{ color:var(--amber); }
.tone-blue{ color:var(--blue); }

.kpi-sub{
  color:var(--muted);
  font-size:12px;
  line-height:1.35;
}

.two-col{
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:10px;
  margin-bottom:10px;
  align-items:start;
}

.two-col.equal-row{
  align-items:stretch;
}

.two-col.equal-row > .panel{
  height:100%;
}

.two-col.wide-left{
  grid-template-columns:minmax(0, 1.15fr) minmax(0, .85fr);
}

.two-col.command-analytics-row{
  grid-template-columns:minmax(0, 1.3fr) minmax(0, .7fr);
}

.tracker-controls{
  display:grid;
  grid-template-columns:minmax(280px, 1fr) minmax(180px, 260px);
  gap:10px;
  margin-bottom:10px;
}

.tracker-input,
.tracker-dropdown,
.compact-dropdown,
.tracker-dropdown .Select-control,
.tracker-dropdown button,
.tracker-dropdown .dash-dropdown-trigger{
  min-height:44px;
  border:1px solid var(--grid-2) !important;
  border-radius:4px !important;
  background:#051114 !important;
  color:var(--text) !important;
  font-size:13px;
  font-weight:700;
}

.tracker-input{
  width:100%;
  padding:0 13px;
  outline:0;
}

.tracker-input:focus{
  border-color:var(--cyan) !important;
  box-shadow:0 0 0 1px rgba(0,229,255,.18);
}

.tracker-dropdown .Select-placeholder,
.tracker-dropdown .Select-value-label,
.tracker-dropdown .Select-input input,
.tracker-dropdown,
.tracker-dropdown *,
.tracker-dropdown button,
.tracker-dropdown button *,
.tracker-dropdown .dash-dropdown-trigger,
.tracker-dropdown .dash-dropdown-trigger *,
.tracker-dropdown .dash-dropdown-grid-container{
  color:var(--text) !important;
  background:#051114 !important;
}

.feed-kpi-grid{
  grid-template-columns:repeat(4, minmax(0, 1fr));
}

.latest-feed-panel{
  border:1px solid #d8dee7;
  border-radius:6px;
  background:#f8fafc;
  color:#111827;
  overflow:hidden;
  box-shadow:0 16px 42px rgba(0,0,0,.28);
}

.latest-feed-title{
  height:48px;
  display:flex;
  align-items:center;
  justify-content:center;
  border-bottom:1px solid #d8dee7;
  background:#ffffff;
  color:#111827;
  font-size:18px;
  font-weight:800;
}

.latest-feed-controls{
  display:grid;
  grid-template-columns:auto minmax(120px, 180px) minmax(360px, 1fr) auto;
  gap:10px;
  align-items:center;
  padding:10px 12px;
  border-bottom:1px solid #d8dee7;
  background:#f8fafc;
}

.latest-label{
  color:#111827;
  font-size:12px;
  font-weight:700;
  margin:0;
}

.latest-select,
.latest-select button,
.latest-select .dash-dropdown-trigger{
  min-height:38px !important;
  border:1px solid #cbd5e1 !important;
  border-radius:6px !important;
  background:#fff !important;
  color:#111827 !important;
  font-size:12px !important;
}

.latest-select *,
.latest-select button *{
  color:#111827 !important;
  background:#fff !important;
}

.latest-checks{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:14px;
  color:#111827;
  font-size:12px;
}

.latest-checks label{
  display:inline-flex;
  align-items:center;
  gap:6px;
  margin:0;
  white-space:nowrap;
}

.latest-checks input{
  accent-color:#2563eb;
}

.latest-refresh{
  min-height:36px;
  border:1px solid #cbd5e1;
  border-radius:6px;
  background:#fff;
  color:#111827;
  padding:0 12px;
  font-size:12px;
  font-weight:800;
}

.latest-refresh:hover,
.latest-refresh:focus{
  border-color:#2563eb;
  color:#2563eb;
  outline:0;
}

.latest-status{
  grid-column:1 / -1;
  color:#64748b;
  font-size:11px;
  line-height:1.35;
  overflow-wrap:anywhere;
}

.latest-search-row{
  padding:10px 12px;
  background:#f8fafc;
  border-bottom:1px solid #d8dee7;
}

.latest-search{
  width:100%;
  height:40px;
  border:1px solid #cbd5e1;
  border-radius:6px;
  background:#fff;
  color:#111827;
  font-size:13px;
  padding:0 12px;
  outline:0;
}

.latest-search:focus{
  border-color:#2563eb;
  box-shadow:0 0 0 3px rgba(37,99,235,.12);
}

.tweet-feed-list{
  display:flex;
  flex-direction:column;
}

.latest-feed-scroll{
  max-height:720px;
  overflow-y:auto;
  background:#f8fafc;
}

.latest-feed-scroll::-webkit-scrollbar{
  width:12px;
}

.latest-feed-scroll::-webkit-scrollbar-track{
  background:#e5e7eb;
}

.latest-feed-scroll::-webkit-scrollbar-thumb{
  background:#8b939f;
  border-radius:999px;
  border:3px solid #e5e7eb;
}

.tweet-card{
  min-width:0;
  border:0;
  border-bottom:1px solid #d8dee7;
  border-radius:0;
  background:#fff;
  color:#111827;
  padding:12px 14px;
  display:flex;
  flex-direction:column;
  gap:9px;
}

.tweet-card-head{
  display:grid;
  grid-template-columns:42px minmax(0, 1fr) auto;
  gap:10px;
  align-items:start;
}

.tweet-avatar{
  width:42px;
  height:42px;
  border-radius:50%;
  object-fit:cover;
  border:1px solid #d8dee7;
  background:#e2e8f0;
}

.tweet-avatar-initial{
  display:grid;
  place-items:center;
  color:#2563eb;
  font-size:18px;
  font-weight:900;
}

.tweet-card-head-copy,
.tweet-card-identity{
  min-width:0;
  display:flex;
  flex-wrap:wrap;
  align-items:baseline;
  column-gap:6px;
  row-gap:2px;
}

.tweet-card-name{
  color:#334155;
  font-size:14px;
  font-weight:800;
  line-height:1.15;
  overflow-wrap:anywhere;
}

.tweet-card-handle,
.tweet-card-seat,
.tweet-card-time,
.tweet-candidate-name{
  color:#64748b;
  font-size:12px;
  font-weight:600;
  margin-left:0;
  overflow-wrap:anywhere;
}

.tweet-profile-line{
  display:flex;
  flex-wrap:wrap;
  gap:4px;
  margin-top:2px;
}

.tweet-candidate-name{
  margin-left:0;
  color:#475569;
}

.tweet-open-link{
  border:1px solid #d8dee7;
  border-radius:4px;
  color:#2563eb;
  font-size:11px;
  font-weight:900;
  padding:5px 8px;
  text-decoration:none;
}

.tweet-open-link:hover{
  border-color:#2563eb;
  color:#1d4ed8;
}

.tweet-card-text{
  color:#667085;
  font-size:14px;
  line-height:1.5;
  white-space:pre-wrap;
  overflow-wrap:anywhere;
}

.tweet-media-grid{
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:6px;
}

.tweet-media-grid.single-media{
  grid-template-columns:1fr;
}

.tweet-media{
  width:100%;
  max-height:520px;
  object-fit:cover;
  border-radius:6px;
  border:1px solid #d8dee7;
  background:#e2e8f0;
}

.tweet-badge-row{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
}

.tweet-badge{
  display:inline-flex;
  align-items:center;
  min-height:24px;
  border:1px solid #d8dee7;
  border-radius:4px;
  padding:4px 7px;
  font-size:10px;
  font-weight:900;
  text-transform:uppercase;
  line-height:1.1;
}

.tweet-badge-cyan{ color:#0369a1; border-color:#bae6fd; background:#f0f9ff; }
.tweet-badge-green{ color:#047857; border-color:#a7f3d0; background:#ecfdf5; }
.tweet-badge-red{ color:#be123c; border-color:#fecdd3; background:#fff1f2; }
.tweet-badge-amber{ color:#92400e; border-color:#fde68a; background:#fffbeb; }
.tweet-badge-blue{ color:#1d4ed8; border-color:#bfdbfe; background:#eff6ff; }

.tweet-funding-row{
  display:grid;
  grid-template-columns:repeat(4, minmax(0, 1fr));
  gap:6px;
}

.tweet-fund-chip{
  min-width:0;
  border:1px solid #e2e8f0;
  border-radius:4px;
  padding:7px;
  background:#f8fafc;
}

.tweet-fund-chip span{
  display:block;
  color:#64748b;
  font-size:9px;
  font-weight:900;
  text-transform:uppercase;
  line-height:1.15;
}

.tweet-fund-chip b{
  display:block;
  color:#111827;
  font-family:Consolas,'Courier New',monospace;
  font-size:14px;
  margin-top:3px;
  overflow-wrap:anywhere;
}

.tweet-ai-summary{
  color:#334155;
  font-size:12px;
  line-height:1.4;
  border-top:1px solid #e2e8f0;
  padding-top:9px;
}

.tweet-profile-fact{
  color:#64748b;
  font-size:11px;
  line-height:1.35;
}

/* Feed card mode: keep the useful controls, but make the feed feel native to the dashboard. */
.latest-feed-panel{
  border:1px solid var(--grid);
  border-radius:6px;
  background:var(--panel);
  color:var(--text);
  overflow:visible;
  box-shadow:0 0 0 1px rgba(125,211,252,.04) inset;
}

.latest-feed-controls,
.latest-search-row{
  display:none !important;
}

.latest-feed-title{
  height:auto;
  justify-content:flex-start;
  border-bottom:1px solid var(--grid);
  background:#0b1116;
  color:var(--cyan);
  font-size:15px;
  padding:12px;
  text-transform:uppercase;
  letter-spacing:0;
}

.latest-feed-controls{
  grid-template-columns:auto minmax(160px, 220px) minmax(320px, 1fr) auto;
  gap:10px;
  padding:12px;
  border-bottom:1px solid var(--grid);
  background:#0b1116;
}

.latest-label{
  color:var(--muted);
  font-size:11px;
  font-weight:900;
  text-transform:uppercase;
}

.latest-select,
.latest-select button,
.latest-select .dash-dropdown-trigger{
  min-height:40px !important;
  border:1px solid var(--grid-2) !important;
  border-radius:4px !important;
  background:#061014 !important;
  color:var(--text) !important;
  font-size:12px !important;
}

.latest-select *,
.latest-select button *{
  color:var(--text) !important;
  background:#061014 !important;
}

.latest-checks{
  color:var(--text);
  font-size:12px;
  gap:12px;
}

.latest-checks input{
  accent-color:var(--cyan);
}

.latest-refresh{
  min-height:40px;
  border:1px solid var(--grid-2);
  border-radius:4px;
  background:#061014;
  color:var(--cyan);
  font-size:12px;
  text-transform:uppercase;
}

.latest-refresh:hover,
.latest-refresh:focus{
  border-color:var(--cyan);
  color:var(--text);
}

.latest-status{
  color:var(--muted);
  font-size:11px;
  padding-top:2px;
}

.latest-search-row{
  padding:12px;
  background:#0b1116;
  border-bottom:1px solid var(--grid);
}

.latest-search{
  height:40px;
  border:1px solid var(--grid-2);
  border-radius:4px;
  background:#061014;
  color:var(--text);
}

.latest-search:focus{
  border-color:var(--cyan);
  box-shadow:0 0 0 1px rgba(125,211,252,.18);
}

.latest-feed-scroll{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(360px, 1fr));
  gap:10px;
  max-height:none;
  overflow:visible;
  padding:12px;
  background:#070c10;
}

.tweet-card{
  border:1px solid var(--grid);
  border-radius:6px;
  background:linear-gradient(180deg, rgba(16,24,32,.98), rgba(8,14,18,.98));
  color:var(--text);
  padding:12px;
  gap:10px;
  box-shadow:0 10px 24px rgba(0,0,0,.22);
}

.tweet-card-head{
  grid-template-columns:44px minmax(0, 1fr) auto;
}

.tweet-avatar{
  width:44px;
  height:44px;
  border:1px solid rgba(125,211,252,.42);
  background:#05090c;
}

.tweet-avatar-initial{
  color:var(--cyan);
  background:#05090c;
}

.tweet-card-name{
  color:var(--text);
  font-size:14px;
}

.tweet-card-handle,
.tweet-card-seat,
.tweet-card-time,
.tweet-candidate-name{
  color:var(--muted);
  font-size:11px;
}

.tweet-card-text{
  color:#c6d2df;
  font-size:13px;
  line-height:1.45;
}

.tweet-open-link{
  border:1px solid var(--grid-2);
  color:var(--cyan);
  background:#061014;
}

.tweet-media{
  max-height:260px;
  object-fit:cover;
  border:1px solid var(--grid);
  background:#05090c;
}

.tweet-funding-row{
  grid-template-columns:repeat(2, minmax(0, 1fr));
}

.tweet-fund-chip{
  border:1px solid rgba(132,167,179,.18);
  background:#091219;
}

.tweet-fund-chip span{
  color:var(--muted);
}

.tweet-fund-chip b{
  color:var(--amber);
}

.tweet-ai-summary{
  color:#d9e2ec;
  border-top:1px solid rgba(132,167,179,.16);
}

.tweet-profile-fact{
  color:var(--muted);
}

.tweet-insight-grid{
  display:flex;
  flex-direction:column;
  gap:10px;
  padding:12px;
  background:#070c10;
}

.arc-panel .dash-graph{
  min-height:520px;
}

.insight-table .dash-table-container{
  min-height:260px;
}

.tracker-dropdown,
.tracker-dropdown button{
  width:100%;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:0 12px !important;
  box-shadow:none !important;
}

.tracker-dropdown:focus,
.tracker-dropdown[aria-expanded="true"],
.tracker-dropdown button:focus,
.tracker-dropdown button[aria-expanded="true"]{
  border-color:var(--cyan) !important;
  box-shadow:0 0 0 1px rgba(0,229,255,.18) !important;
  outline:0 !important;
}

.tracker-dropdown .Select-menu-outer{
  border:1px solid var(--grid-2);
  background:#051114;
  color:var(--text);
}

.tracker-dropdown .VirtualizedSelectOption{
  background:#051114;
  color:var(--text);
}

.tracker-dropdown .VirtualizedSelectFocusedOption{
  background:#0b2228;
  color:var(--cyan);
}

.tracker-dropdown [role="listbox"],
.tracker-dropdown [role="menu"],
.tracker-dropdown .dash-dropdown-menu,
.tracker-dropdown .dash-dropdown-options{
  border:1px solid var(--grid-2) !important;
  background:#051114 !important;
  color:var(--text) !important;
}

[role="listbox"][id^="radix-"],
[role="menu"][id^="radix-"],
[id^="radix-"] [role="option"],
[data-radix-popper-content-wrapper] [role="listbox"],
[data-radix-popper-content-wrapper] [role="menu"],
[data-radix-popper-content-wrapper] [role="option"]{
  background:#051114 !important;
  color:var(--text) !important;
}

.tracker-dropdown [role="option"],
.tracker-dropdown .dash-dropdown-option{
  background:#051114 !important;
  color:var(--text) !important;
}

.tracker-dropdown [role="option"]:hover,
.tracker-dropdown .dash-dropdown-option:hover,
[id^="radix-"] [role="option"]:hover,
[data-radix-popper-content-wrapper] [role="option"]:hover{
  background:#0b2228 !important;
  color:var(--cyan) !important;
}

.candidate-card-grid{
  display:grid;
  grid-template-columns:repeat(4, minmax(0, 1fr));
  gap:10px;
  margin-bottom:10px;
}

.candidate-card{
  min-width:0;
  min-height:286px;
  border:1px solid var(--grid);
  border-radius:6px;
  background:linear-gradient(180deg, rgba(11,23,27,.98), rgba(5,13,16,.98));
  padding:12px;
  display:flex;
  gap:12px;
  align-items:flex-start;
}

.candidate-card-img{
  flex:0 0 82px;
  width:82px;
  height:82px;
  border-radius:50%;
  object-fit:cover;
  border:2px solid var(--cyan);
  background:#02090b;
  box-shadow:0 0 20px rgba(0,229,255,.16);
}

.candidate-card-initial{
  display:grid;
  place-items:center;
  color:var(--cyan);
  font-size:34px;
  font-weight:900;
}

.candidate-card-copy{
  min-width:0;
  flex:1;
}

.candidate-card-name{
  color:var(--text);
  font-size:16px;
  line-height:1.12;
  font-weight:900;
  overflow-wrap:anywhere;
}

.candidate-card-seat{
  color:var(--muted);
  font-size:11px;
  font-weight:900;
  text-transform:uppercase;
  margin-top:4px;
}

.candidate-card-total{
  color:var(--muted);
  font-size:10px;
  font-weight:900;
  letter-spacing:0;
  text-transform:uppercase;
  margin:10px 0;
}

.candidate-card-total strong{
  display:block;
  color:var(--amber);
  font-family:Consolas,'Courier New',monospace;
  font-size:22px;
  line-height:1.05;
  margin-top:2px;
}

.candidate-card-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  border-top:1px solid rgba(132,167,179,.14);
  padding:7px 0;
  color:var(--muted);
  font-size:11px;
  font-weight:800;
}

.candidate-card-row b{
  color:var(--text);
  font-family:Consolas,'Courier New',monospace;
  font-size:13px;
}

.candidate-card-committees{
  color:var(--cyan);
  font-size:11px;
  line-height:1.35;
  font-weight:800;
  margin-top:7px;
  overflow-wrap:anywhere;
}

.empty-state{
  grid-column:1 / -1;
  border:1px solid var(--grid);
  border-radius:6px;
  background:var(--panel);
  color:var(--muted);
  padding:20px;
  font-size:13px;
  font-weight:800;
}

.panel{
  border:1px solid var(--grid);
  border-radius:6px;
  background:var(--panel);
  padding:12px;
  min-width:0;
  box-shadow:0 0 0 1px rgba(0,229,255,.035) inset;
  display:flex;
  flex-direction:column;
}

.panel-head{
  display:flex;
  flex-direction:column;
  justify-content:flex-start;
  align-items:flex-start;
  gap:4px;
  margin-bottom:10px;
  min-height:0;
}

.panel-title{
  color:var(--text);
  font-size:14px;
  font-weight:800;
}

.panel-sub{
  color:var(--muted);
  font-size:12px;
  max-width:min(760px, 100%);
  text-align:left;
  line-height:1.35;
}

.plot-panel .panel-head{
  justify-content:flex-start;
  min-height:48px;
  margin-bottom:6px;
}

.plot-panel-copy{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  margin-left:0;
  max-width:100%;
  text-align:left;
}

.plot-panel .panel-title{
  display:block;
  color:var(--cyan);
  font-size:16px;
  line-height:1.15;
}

.plot-panel .panel-sub{
  max-width:100%;
  margin-top:4px;
  text-align:left;
}

.js-plotly-plot .plotly .modebar{
  display:none;
}

.dash-graph{
  min-height:340px;
  width:100%;
  flex:0 0 auto;
}

.portrait-row{
  grid-template-columns:minmax(0, 1.05fr) minmax(0, .95fr);
}

.portrait-viz{
  position:relative;
  width:100%;
  min-height:620px;
  overflow:hidden;
  border:1px solid rgba(0,229,255,.12);
  border-radius:4px;
  background:
    radial-gradient(circle at 50% 48%, rgba(0,229,255,.08), transparent 46%),
    linear-gradient(180deg, rgba(11,23,27,.55), rgba(3,5,6,.2));
}

.portrait-viz svg{
  display:block;
  width:100%;
  height:100%;
  min-height:620px;
}

.portrait-tooltip{
  position:absolute;
  z-index:8;
  width:min(330px, calc(100% - 24px));
  pointer-events:none;
  opacity:0;
  transform:translateY(8px) scale(.98);
  transform-origin:top left;
  background:
    linear-gradient(180deg, rgba(7,16,19,.98), rgba(2,8,10,.98));
  border:1px solid rgba(0,229,255,.5);
  border-radius:6px;
  color:var(--text);
  padding:12px;
  box-shadow:0 20px 46px rgba(0,0,0,.62), 0 0 28px rgba(0,229,255,.12);
  font-size:12px;
  line-height:1.35;
  transition:opacity .16s ease, transform .16s ease;
}

.portrait-tooltip.is-visible{
  opacity:1 !important;
  transform:translateY(0) scale(1) !important;
}

.portrait-tooltip-head{
  display:grid;
  grid-template-columns:62px minmax(0, 1fr);
  gap:10px;
  align-items:center;
  padding-bottom:10px;
  border-bottom:1px solid rgba(132,167,179,.16);
}

.portrait-tooltip-img{
  width:62px;
  height:62px;
  border-radius:50%;
  object-fit:cover;
  border:2px solid var(--green);
  background:#071013;
  box-shadow:0 0 18px rgba(52,245,139,.22);
}

.portrait-tooltip-initials{
  display:grid;
  place-items:center;
  color:var(--cyan);
  font-weight:900;
  font-size:20px;
}

.portrait-tooltip-title{
  min-width:0;
}

.portrait-tooltip strong{
  display:block;
  color:var(--cyan);
  font-size:15px;
  line-height:1.1;
  margin-bottom:5px;
  white-space:normal;
}

.portrait-tooltip em{
  display:inline-flex;
  max-width:100%;
  color:var(--green);
  font-style:normal;
  font-size:10px;
  font-weight:900;
  letter-spacing:.04em;
  text-transform:uppercase;
}

.portrait-tooltip-total{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin:10px 0;
  padding:10px;
  border:1px solid rgba(0,229,255,.22);
  border-radius:4px;
  background:rgba(0,229,255,.06);
}

.portrait-tooltip-total b{
  color:var(--amber);
  font-size:18px;
  line-height:1;
}

.portrait-tooltip-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
  margin-bottom:8px;
}

.portrait-tooltip-grid > div,
.portrait-tooltip-row{
  border:1px solid rgba(132,167,179,.16);
  border-radius:4px;
  background:rgba(255,255,255,.025);
  padding:8px;
}

.portrait-tooltip-grid b,
.portrait-tooltip-row b{
  display:block;
  color:var(--text);
  font-size:13px;
  margin-top:2px;
}

.portrait-tooltip-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-bottom:8px;
}

.portrait-tooltip-row b{
  margin-top:0;
}

.portrait-tooltip-committees{
  padding-top:2px;
}

.portrait-tooltip-committees p{
  margin:4px 0 0;
  color:var(--text);
  font-size:11px;
  line-height:1.35;
}

.portrait-tooltip span{
  color:var(--muted);
  font-size:10px;
  font-weight:800;
  text-transform:uppercase;
}

.portrait-viz g.is-hovered > circle{
  filter:drop-shadow(0 0 8px rgba(0,229,255,.75));
  stroke-width:4px;
}

.resize-signal{
  display:none;
}

.dash-table-container{
  color:var(--text);
  width:100%;
}

.dash-table-container .dash-spreadsheet-container{
  border-radius:4px;
  overflow:hidden;
  width:100%;
}

.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner th,
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner td{
  vertical-align:middle;
  text-align:left;
}

.dash-table-container .dash-cell-value{
  line-height:1.25;
}

.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="committee"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="recipient"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="candidate"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="donor"],
.table-shell{
  width:100%;
  min-width:0;
}

.table-shell .dash-table-container{
  width:100%;
  min-width:0;
}

.dash-table-container .dash-spreadsheet-container{
  border:1px solid var(--grid);
  border-radius:4px;
  background:var(--panel);
}

.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner th{
  position:sticky !important;
  top:0 !important;
  z-index:8 !important;
  background:#02090b !important;
  box-shadow:0 1px 0 var(--grid), 0 0 12px rgba(0,229,255,.08);
}

.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner th .column-header-name{
  color:var(--cyan) !important;
  font-weight:900 !important;
}

.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="employer"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="occupation"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="state_full"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="period"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="registrant"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="client"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="issues"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="description"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="scope"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="official_name"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="official_committee_type"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="primary_channel"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="aggregate_scope"]{
  text-align:left !important;
}

.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="cycle"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="state"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="office"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="party"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="date"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="pdf_url"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="twitter"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="image_page"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="fec_id"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="committee_status"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="registered"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="source_url"]{
  text-align:center !important;
}

.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="amount"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="support_ie"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="direct_detail"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="transactions"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="lobbyists"],
.dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner [data-dash-column="recipient_disbursement_percent"]{
  text-align:right !important;
}

.dash-table-container [data-dash-column="cycle"]{
  min-width:72px !important;
  width:72px !important;
}

.dash-table-container [data-dash-column="fec_id"]{
  min-width:118px !important;
  width:118px !important;
}

.dash-table-container [data-dash-column="state"],
.dash-table-container [data-dash-column="office"],
.dash-table-container [data-dash-column="pdf_url"],
.dash-table-container [data-dash-column="twitter"],
.dash-table-container [data-dash-column="image_page"],
.dash-table-container [data-dash-column="source_url"]{
  min-width:88px !important;
  width:88px !important;
}

.dash-table-container [data-dash-column="amount"],
.dash-table-container [data-dash-column="support_ie"],
.dash-table-container [data-dash-column="direct_detail"],
.dash-table-container [data-dash-column="date"],
.dash-table-container [data-dash-column="transactions"],
.dash-table-container [data-dash-column="lobbyists"],
.dash-table-container [data-dash-column="committee_status"],
.dash-table-container [data-dash-column="registered"],
.dash-table-container [data-dash-column="recipient_disbursement_percent"]{
  min-width:112px !important;
  width:112px !important;
}

.dash-table-container [data-dash-column="recipient"],
.dash-table-container [data-dash-column="name"],
.dash-table-container [data-dash-column="candidate"],
.dash-table-container [data-dash-column="donor"],
.dash-table-container [data-dash-column="committee"]{
  min-width:190px !important;
  width:190px !important;
}

.dash-table-container [data-dash-column="party"],
.dash-table-container [data-dash-column="employer"],
.dash-table-container [data-dash-column="occupation"],
.dash-table-container [data-dash-column="state_full"],
.dash-table-container [data-dash-column="period"]{
  min-width:150px !important;
  width:150px !important;
}

.dash-table-container [data-dash-column="scope"]{
  min-width:210px !important;
  width:210px !important;
}

.dash-table-container [data-dash-column="primary_channel"]{
  min-width:150px !important;
  width:150px !important;
}

.dash-table-container [data-dash-column="description"],
.dash-table-container [data-dash-column="registrant"],
.dash-table-container [data-dash-column="client"],
.dash-table-container [data-dash-column="issues"],
.dash-table-container [data-dash-column="official_name"],
.dash-table-container [data-dash-column="official_committee_type"],
.dash-table-container [data-dash-column="aggregate_scope"]{
  min-width:240px !important;
  width:240px !important;
}

.dash-table-container [data-dash-column="year"]{
  min-width:78px !important;
  width:78px !important;
  text-align:center !important;
}

.dash-table-container [data-dash-column="period"]{
  min-width:180px !important;
  width:180px !important;
}

.dash-table-container [data-dash-column="registrant"],
.dash-table-container [data-dash-column="client"]{
  min-width:260px !important;
  width:260px !important;
}

.dash-table-container [data-dash-column="issues"]{
  min-width:320px !important;
  width:320px !important;
}

.compact-receipts-table .dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner th,
.compact-receipts-table .dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner td{
  padding:8px 5px !important;
  font-size:10px !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  white-space:nowrap !important;
}

.compact-receipts-table .dash-table-container .dash-cell-value{
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  white-space:nowrap !important;
}

.compact-receipts-table{
  width:100%;
}

.compact-receipts-table .dash-table-container{
  width:100%;
}

.compact-receipts-table .dash-table-container [data-dash-column="cycle"]{
  min-width:48px !important;
  width:48px !important;
  max-width:48px !important;
}

.compact-receipts-table .dash-table-container [data-dash-column="committee"]{
  min-width:88px !important;
  width:88px !important;
  max-width:88px !important;
}

.compact-receipts-table .dash-table-container [data-dash-column="donor"]{
  min-width:128px !important;
  width:128px !important;
  max-width:128px !important;
}

.compact-receipts-table .dash-table-container [data-dash-column="employer"]{
  min-width:96px !important;
  width:96px !important;
  max-width:96px !important;
}

.compact-receipts-table .dash-table-container [data-dash-column="occupation"]{
  min-width:82px !important;
  width:82px !important;
  max-width:82px !important;
}

.compact-receipts-table .dash-table-container [data-dash-column="state"],
.compact-receipts-table .dash-table-container [data-dash-column="pdf_url"]{
  min-width:50px !important;
  width:50px !important;
  max-width:50px !important;
}

.compact-receipts-table .dash-table-container [data-dash-column="amount"],
.compact-receipts-table .dash-table-container [data-dash-column="date"]{
  min-width:76px !important;
  width:76px !important;
  max-width:76px !important;
}

.compact-receipts-table .dash-table-container .dash-spreadsheet-container,
.compact-receipts-table .dash-table-container .dash-spreadsheet-inner,
.compact-receipts-table .dash-table-container table{
  width:100% !important;
  max-width:100% !important;
}

.compact-receipts-table .dash-table-container .dash-spreadsheet-container{
  overflow-x:hidden !important;
  overflow-y:auto !important;
}

.compact-flow-table .dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner th,
.compact-flow-table .dash-table-container .dash-spreadsheet-container .dash-spreadsheet-inner td{
  padding:8px 5px !important;
  font-size:10px !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  white-space:nowrap !important;
}

.compact-flow-table .dash-table-container .dash-cell-value{
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  white-space:nowrap !important;
}

.compact-flow-table .dash-table-container .dash-spreadsheet-container,
.compact-flow-table .dash-table-container .dash-spreadsheet-inner,
.compact-flow-table .dash-table-container table{
  width:100% !important;
  max-width:100% !important;
}

.compact-flow-table .dash-table-container .dash-spreadsheet-container{
  overflow-x:hidden !important;
  overflow-y:auto !important;
}

.compact-flow-table .dash-table-container [data-dash-column="cycle"]{
  min-width:44px !important;
  width:44px !important;
  max-width:44px !important;
}

.compact-flow-table .dash-table-container [data-dash-column="committee"]{
  min-width:66px !important;
  width:66px !important;
  max-width:66px !important;
}

.compact-flow-table .dash-table-container [data-dash-column="recipient"],
.compact-flow-table .dash-table-container [data-dash-column="candidate"]{
  min-width:96px !important;
  width:96px !important;
  max-width:96px !important;
}

.compact-flow-table .dash-table-container [data-dash-column="party"]{
  min-width:62px !important;
  width:62px !important;
  max-width:62px !important;
}

.compact-flow-table .dash-table-container [data-dash-column="state"],
.compact-flow-table .dash-table-container [data-dash-column="pdf_url"]{
  min-width:44px !important;
  width:44px !important;
  max-width:44px !important;
}

.compact-flow-table .dash-table-container [data-dash-column="amount"],
.compact-flow-table .dash-table-container [data-dash-column="date"]{
  min-width:70px !important;
  width:70px !important;
  max-width:70px !important;
}

.compact-flow-table .dash-table-container [data-dash-column="description"]{
  min-width:96px !important;
  width:96px !important;
  max-width:96px !important;
}

.dash-table-container ::-webkit-scrollbar{
  height:10px;
  width:10px;
}

.dash-table-container ::-webkit-scrollbar-track{
  background:#02090b;
  border:1px solid var(--grid);
}

.dash-table-container ::-webkit-scrollbar-thumb{
  background:var(--grid-2);
  border-radius:6px;
}

.dash-table-container ::-webkit-scrollbar-thumb:hover{
  background:var(--cyan);
}

.dash-table-container a{
  color:var(--cyan);
  font-weight:700;
}

.dash-table-container .previous-next-container{
  display:flex !important;
  align-items:center;
  justify-content:flex-end;
  gap:6px;
  min-height:42px;
  padding:8px 10px !important;
  border:1px solid var(--grid);
  border-top:0;
  border-radius:0 0 4px 4px;
  background:linear-gradient(180deg, rgba(5,18,22,.98), rgba(3,10,13,.98));
  color:var(--muted);
  font-size:12px;
  font-weight:800;
}

.dash-table-container .previous-next-container > *{
  flex:0 0 auto;
}

.dash-table-container .previous-next-container button,
.dash-table-container .previous-next-container .page-number,
.dash-table-container .previous-next-container input{
  height:30px !important;
  min-width:30px;
  border:1px solid rgba(0,229,255,.32) !important;
  border-radius:4px !important;
  background:rgba(0,229,255,.07) !important;
  color:var(--text) !important;
  box-shadow:none !important;
  font-weight:900 !important;
}

.dash-table-container .previous-next-container .page-number{
  display:inline-flex !important;
  align-items:center;
  justify-content:center;
  gap:6px;
  width:auto !important;
  min-width:74px !important;
  padding:0 9px !important;
  color:var(--cyan) !important;
  letter-spacing:0;
}

.dash-table-container .previous-next-container .current-page-container{
  display:inline-flex !important;
  align-items:center;
  min-width:0 !important;
}

.dash-table-container .previous-next-container .current-page-shadow{
  display:none !important;
}

.dash-table-container .previous-next-container input.current-page{
  pointer-events:none;
  user-select:none;
  caret-color:transparent;
  appearance:textfield;
  width:18px !important;
  min-width:18px !important;
  height:auto !important;
  padding:0 !important;
  margin:0 !important;
  border:0 !important;
  outline:0 !important;
  background:transparent !important;
  color:var(--cyan) !important;
  text-align:right !important;
  font:inherit !important;
}

.dash-table-container .previous-next-container input.current-page:focus{
  outline:0 !important;
  box-shadow:none !important;
}

.dash-table-container .previous-next-container .page-number > .last-page{
  display:inline-flex;
  align-items:center;
  color:var(--muted);
  padding-left:2px;
}

.dash-table-container .previous-next-container button{
  display:inline-grid !important;
  place-items:center;
  padding:0 !important;
  line-height:1 !important;
  cursor:pointer;
}

.dash-table-container .previous-next-container button svg{
  width:12px !important;
  height:12px !important;
}

.dash-table-container .previous-next-container button:hover:not(:disabled){
  border-color:var(--cyan) !important;
  background:rgba(0,229,255,.16) !important;
  color:var(--cyan) !important;
}

.dash-table-container .previous-next-container button:disabled{
  opacity:.32;
  cursor:not-allowed;
}

.methodology{
  color:var(--text);
  font-size:14px;
  line-height:1.65;
}

.methodology code,
.methodology pre{
  background:var(--ink);
  color:var(--green);
  border:1px solid var(--grid);
  border-radius:4px;
}

.app-footer{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:14px;
  color:var(--muted);
  font-size:12px;
  padding:20px 30px 26px;
  border-top:1px solid var(--grid);
  margin-top:18px;
}

.shadcn-controls{
  grid-template-columns:minmax(320px, 1fr) 184px;
  gap:12px;
  align-items:stretch;
  padding:6px;
  border:1px solid rgba(24,50,58,.82);
  border-radius:8px;
  background:linear-gradient(180deg, rgba(7,16,19,.94), rgba(4,10,13,.96));
  box-shadow:inset 0 1px 0 rgba(233,251,255,.04), 0 12px 24px rgba(0,0,0,.16);
}

.tracker-field{
  position:relative;
  min-width:0;
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:6px;
}

.tracker-field-label{
  margin:0;
  padding:0 2px;
  color:#8fa9b5;
  font-size:10px;
  font-weight:800;
  line-height:1;
  letter-spacing:0;
  text-transform:uppercase;
}

.shadcn-controls .tracker-input,
.shadcn-controls .tracker-select,
.shadcn-controls #candidate-state{
  min-height:40px !important;
  height:40px !important;
  border:1px solid rgba(132,167,179,.24) !important;
  border-radius:6px !important;
  background:#071216 !important;
  color:var(--text) !important;
  font-size:12px !important;
  font-weight:800 !important;
  transition:border-color .16s ease, box-shadow .16s ease, background .16s ease, transform .16s ease;
}

.shadcn-controls .tracker-input{
  padding:0 13px !important;
}

.shadcn-controls .tracker-select,
.shadcn-controls #candidate-state{
  width:100%;
  padding:0 34px 0 12px !important;
  appearance:none;
  background-color:#071216 !important;
  background-image:
    linear-gradient(45deg, transparent 50%, #7f98a3 50%),
    linear-gradient(135deg, #7f98a3 50%, transparent 50%) !important;
  background-position:
    calc(100% - 17px) 17px,
    calc(100% - 12px) 17px !important;
  background-size:5px 5px, 5px 5px !important;
  background-repeat:no-repeat !important;
}

.shadcn-controls .tracker-select option{
  background:#071216;
  color:var(--text);
  font-weight:800;
}

.shadcn-controls .tracker-input::placeholder{
  color:#657d88;
  font-weight:700;
}

.shadcn-controls .tracker-select:hover,
.shadcn-controls .tracker-input:hover{
  border-color:rgba(0,229,255,.42) !important;
  background:#09181d !important;
}

.shadcn-controls .tracker-input:focus,
.shadcn-controls .tracker-select:focus,
.shadcn-controls #candidate-state:focus{
  border-color:rgba(0,229,255,.72) !important;
  box-shadow:0 0 0 3px rgba(0,229,255,.12) !important;
  outline:0 !important;
}

@media (max-width:1200px){
  .kpi-grid{
    grid-template-columns:repeat(3, minmax(0, 1fr));
  }

  .candidate-card-grid{
    grid-template-columns:repeat(2, minmax(0, 1fr));
  }
}

@media (max-width:900px){
  .app-header{
    flex-direction:column;
    padding:20px 16px 12px;
  }

  .brand-title{
    font-size:28px;
  }

  .signal-strip,
  .kpi-grid,
  .tracker-controls,
  .candidate-card-grid,
  .two-col,
  .two-col.wide-left,
  .two-col.command-analytics-row{
    grid-template-columns:1fr;
  }

  .signal-strip{
    padding:10px 16px 0;
  }

  .tabs-wrap{
    padding:14px 16px 6px;
  }

  .panel-head{
    flex-direction:column;
  }

  .panel-sub{
    text-align:left;
  }

  .plot-panel .panel-head{
    align-items:flex-start;
  }

  .plot-panel-copy{
    align-items:flex-start;
    margin-left:0;
    max-width:100%;
    text-align:left;
  }

  .plot-panel .panel-sub{
    text-align:left;
  }

  .latest-feed-controls{
    grid-template-columns:1fr;
  }

  .latest-feed-scroll{
    grid-template-columns:1fr;
  }

  .shadcn-controls{
    grid-template-columns:1fr;
  }
}

@media (max-width:560px){
  .main-tabs .nav-link{
    padding:9px 10px;
    font-size:12px;
  }

  .kpi-value{
    font-size:26px;
  }

  .tweet-funding-row{
    grid-template-columns:1fr;
  }
}
