/* ==========================================================================
   Theme v2 — "warm light" redesign (from the Ponneri/Home design canvas)
   Scoped to body.theme-v2 so pages opt in one at a time.
   Type: DM Serif Display (display) · Inter (text/UI) · JetBrains Mono (data)
   ========================================================================== */

body.theme-v2 {
  --v2-bg: #F1EDE8;
  --v2-card: #FFFFFF;
  --v2-ink: #231A18;
  --v2-ink-2: #4A3C38;
  --v2-muted: #6B5A55;
  --v2-line: #DDD3C8;
  --v2-line-strong: #C9BCAF;
  --v2-dark: #231616;
  --v2-berry: #A35563;
  --v2-berry-dark: #7F3C49;
  --v2-nav-bg: #EAE3DB;
  --v2-soft: #F7F3EF;
  --v2-hair: #EFE8E0;
  --v2-tint: #F5EEF0;
  --v2-row-hover: #F9F6F2;
  --v2-faint: #8A7A74;
  --v2-green-bg: #E2F1E8;
  --v2-green-fg: #17704A;
  --v2-berry-fill: #A35563;
  --v2-berry-fill-hover: #7F3C49;
  --v2-pill-bg: #231616;
  --v2-pill-fg: #F7F2EC;
  --v2-seg-on: #FFFFFF;
  --v2-hover: rgba(35, 22, 22, 0.07);
  --v2-hover-soft: rgba(35, 22, 22, 0.05);
  --v2-shadow: rgba(35, 22, 22, 0.1);
  --v2-card-border: #E4DBD1;
  --v2-sep: rgba(35, 22, 22, 0.08);
  --v2-sep-soft: rgba(35, 22, 22, 0.05);
  color-scheme: light;

  --font-display: 'DM Serif Display', Georgia, serif;
  --font-body: 'Inter', system-ui, sans-serif;
  --font-ui: 'Inter', system-ui, sans-serif;
  --font-heading: var(--font-display);
  --font-numbers: var(--font-display);
  --font-mono: 'JetBrains Mono', ui-monospace, monospace;

  /* neutralise the legacy palette (incl. .dark-mode on <html>) */
  --bg: var(--v2-bg);
  --surface: var(--v2-card);
  --surface-alt: #F7F3EF;
  --border: var(--v2-sep);
  --text: var(--v2-ink);
  --text-2: var(--v2-ink-2);
  --text-3: var(--v2-muted);
  --accent: var(--v2-berry);
  --primary: var(--v2-berry);

  background: var(--v2-bg);
  color: var(--v2-ink);
  font-family: var(--font-body);
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}

body.theme-v2 *:where(button, input, select, th, .nav-item, .btn, .tab-btn) {
  font-family: var(--font-body) !important;
}

/* ---- Header ------------------------------------------------------------ */
body.theme-v2 .datadood-topbar {
  display: none;
}

body.theme-v2 .header-group {
  background: var(--v2-dark);
  box-shadow: none;
  border: 0;
}

body.theme-v2 .global-header {
  background: var(--v2-dark);
  border: 0;
  box-shadow: none;
  color: #F7F2EC;
}

body.theme-v2 .global-header>.container {
  max-width: 1240px;
  padding: 14px 24px;
}

body.theme-v2 .global-header h1,
body.theme-v2 .global-header .desktop-title,
body.theme-v2 .global-header .mobile-title {
  font-family: var(--font-mono) !important;
  font-weight: 700 !important;
  font-size: 15px !important;
  letter-spacing: 0.12em !important;
  color: #F7F2EC !important;
  text-transform: uppercase;
}

body.theme-v2 .global-header .btn-share {
  width: 44px;
  height: 44px;
  border: 0;
  border-radius: 10px;
  background: transparent;
  color: #E9DFD4;
}

body.theme-v2 .global-header .btn-share:hover {
  background: rgba(255, 255, 255, 0.1);
}

body.theme-v2 #menuToggle {
  display: none;
}

body.theme-v2 .secondary-nav {
  background: var(--v2-nav-bg);
  border: 0;
  border-bottom: 1px solid var(--v2-sep);
  box-shadow: none;
}

body.theme-v2 .secondary-nav-content {
  max-width: 1240px;
  padding: 8px 24px;
  gap: 4px;
}

body.theme-v2 .secondary-nav .nav-section::before,
body.theme-v2 .secondary-nav .nav-section::after {
  display: none;
}

body.theme-v2 .nav-item {
  min-height: 40px;
  padding: 10px 16px;
  border-radius: 999px;
  font-size: 14px;
  font-weight: 600;
  color: var(--v2-ink-2);
  background: transparent;
  text-decoration: none;
  white-space: nowrap;
}

body.theme-v2 .nav-item .ni {
  display: none;
}

body.theme-v2 .nav-item:hover {
  background: var(--v2-hover);
  color: var(--v2-ink);
}

body.theme-v2 .nav-item.active {
  background: var(--v2-pill-bg);
  color: var(--v2-pill-fg);
  font-weight: 700;
}

body.theme-v2 .nav-item.active .ni {
  display: none;
}

/* ---- Page frame -------------------------------------------------------- */
body.theme-v2 .layout,
body.theme-v2 .main {
  background: transparent;
}

body.theme-v2 .page-content.container,
body.theme-v2 #page-home {
  max-width: 1240px;
  padding: 0 24px 64px;
  margin: 0 auto;
}

/* ---- Announcement ------------------------------------------------------ */
body.theme-v2 .bypoll-ticker-banner {
  margin-top: 20px;
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 12px 20px;
  background: var(--v2-card);
  border: 0;
  border-radius: 14px;
  box-shadow: none;
  color: var(--v2-ink);
  height: auto;
  overflow: visible;
  margin-bottom: 0;
}

body.theme-v2 .bypoll-ticker-badge {
  box-shadow: none;
  position: static;
  height: auto;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 4px 12px;
  border-radius: 999px;
  background: var(--v2-green-bg);
  color: var(--v2-green-fg);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  white-space: nowrap;
}

body.theme-v2 .bypoll-ticker-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #1E7F55;
  animation: none;
}

body.theme-v2 .bypoll-ticker-track-wrap {
  overflow: visible;
  flex: 1;
  mask-image: none;
  -webkit-mask-image: none;
}

body.theme-v2 .bypoll-ticker-content {
  animation: none !important;
  transform: none !important;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 16px;
  width: auto;
  padding: 0;
}

body.theme-v2 .bypoll-ticker-content .ticker-item {
  font-size: 15px;
  color: var(--v2-ink);
  white-space: normal;
}

body.theme-v2 .bypoll-ticker-content .ticker-sep {
  display: none;
}

body.theme-v2 .ticker-link {
  color: var(--v2-ink);
  text-decoration: none;
  border-bottom: 1px solid var(--v2-line-strong);
}

body.theme-v2 .ticker-cta {
  margin-left: auto;
  font-size: 14px;
  font-weight: 700;
  color: var(--v2-berry);
  text-decoration: none;
  white-space: nowrap;
}

/* ---- Hero -------------------------------------------------------------- */
body.theme-v2 .hung-assembly-card {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: wrap;
  gap: 48px !important;
  align-items: center !important;
  padding: 36px 0 32px !important;
  margin: 0 !important;
  background: transparent !important;
  border: 0 !important;
  border-bottom: 1px solid var(--v2-sep) !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  overflow: visible;
}

body.theme-v2 .hung-left-col {
  flex: 1 1 300px;
  width: auto;
  min-width: 0;
  align-items: flex-start;
  text-align: left;
}

body.theme-v2 .hung-actions {
  justify-content: flex-start;
}

body.theme-v2 .hung-right-col {
  flex: 1 1 300px;
  width: auto;
  max-width: 540px;
  min-width: 0;
  margin-left: auto;
}

body.theme-v2 .hung-eyebrow {
  font-size: 11px;
}

body.theme-v2 .hung-eyebrow,
body.theme-v2 .astat-label,
body.theme-v2 .assembly-today-card .astat-label {
  font-family: var(--font-body);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--v2-muted);
}

body.theme-v2 .hung-title {
  margin: 12px 0 0;
  font-family: var(--font-display) !important;
  font-weight: 700;
  font-size: clamp(36px, 4.4vw, 56px);
  line-height: 0.95;
  letter-spacing: -0.02em !important;
  color: var(--v2-ink);
}

body.theme-v2 .hung-desc {
  margin: 16px 0 0;
  max-width: 520px;
  font-size: 17px;
  line-height: 1.55;
  color: var(--v2-ink-2);
}

body.theme-v2 .hung-desc strong {
  color: var(--v2-ink);
}

body.theme-v2 .hung-actions {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  margin-top: 28px;
}

body.theme-v2 .hung-btn-primary,
body.theme-v2 .hung-btn-secondary {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 0 20px;
  border-radius: 10px;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-decoration: none;
}

body.theme-v2 .hung-btn-primary {
  background: var(--v2-berry-fill);
  color: #fff;
  border: 0;
}

body.theme-v2 .hung-btn-primary:hover {
  background: var(--v2-berry-fill-hover);
}

body.theme-v2 .hung-btn-secondary {
  background: transparent;
  color: var(--v2-ink);
  border: 1px solid var(--v2-line-strong);
}

body.theme-v2 .hung-btn-secondary:hover {
  background: var(--v2-hover-soft);
}

body.theme-v2 .hung-threshold-text,
body.theme-v2 .hung-threshold-line {
  color: var(--v2-ink);
  fill: var(--v2-ink);
  stroke: var(--v2-ink);
}

body.theme-v2 .hung-threshold-text {
  stroke: none;
}

body.theme-v2 .hung-center-num {
  fill: var(--v2-ink);
  font-family: var(--font-display);
  font-weight: 700;
}

body.theme-v2 .hung-badge-rect {
  stroke: var(--v2-line-strong);
}

body.theme-v2 .hung-badge-text {
  fill: var(--v2-muted);
  font-family: var(--font-body);
}

body.theme-v2 .hung-stat-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin-top: 24px;
}

body.theme-v2 .hung-stat-card {
  background: var(--v2-card);
  border: 0;
  border-radius: 14px;
  box-shadow: none;
  padding: 14px 16px;
}

body.theme-v2 .hung-stat-header {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  font-weight: 700;
  color: var(--v2-ink-2);
}

body.theme-v2 .hung-stat-card:nth-child(1) .hung-stat-header {
  color: #856400;
}

body.theme-v2 .hung-stat-card:nth-child(2) .hung-stat-header {
  color: #C6312E;
}

body.theme-v2 .hung-stat-card:nth-child(3) .hung-stat-header {
  color: #327835;
}

body.theme-v2 .hung-stat-dot {
  width: 10px;
  height: 10px;
  border-radius: 3px;
}

body.theme-v2 .hung-stat-val {
  font-family: var(--font-display) !important;
  font-size: 28px;
  font-weight: 700;
  line-height: 1.1;
  margin-top: 12px;
  color: var(--v2-ink);
}

body.theme-v2 .hung-stat-sub {
  font-size: 13px;
  color: var(--v2-muted);
}

/* ---- The Assembly today ------------------------------------------------ */
body.theme-v2 .assembly-today-card {
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  padding: 32px 0 !important;
  margin: 0 !important;
}

body.theme-v2 .assembly-today-header {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
  flex-wrap: wrap;
  padding: 0;
  border: 0;
}

body.theme-v2 .assembly-today-title,
body.theme-v2 .stats-banner-title {
  margin: 0;
  font-family: var(--font-display) !important;
  font-size: 22px;
  font-weight: 700;
  letter-spacing: 0 !important;
  color: var(--v2-ink);
}

body.theme-v2 .assembly-today-subtitle {
  font-size: 13px;
  color: var(--v2-muted);
}

body.theme-v2 .assembly-today-stats-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
  margin-top: 20px;
}

body.theme-v2 .astat-card {
  background: var(--v2-card);
  border: 0;
  border-radius: 16px;
  box-shadow: none;
  padding: 20px 22px;
}

body.theme-v2 .astat-val {
  font-family: var(--font-display) !important;
  font-size: 28px;
  font-weight: 700;
  line-height: 1.2;
  margin-top: 6px;
  color: var(--v2-ink);
}

body.theme-v2 .astat-val.astat-status {
  font-size: 22px;
  line-height: 1.1;
  margin-top: 10px;
}

body.theme-v2 .astat-denom {
  font-family: var(--font-body);
  font-size: 18px;
  font-weight: 600;
  color: var(--v2-muted);
}

body.theme-v2 .astat-sub {
  font-size: 13px;
  color: var(--v2-ink-2);
}

body.theme-v2 .astat-sub strong {
  color: var(--v2-ink);
}

body.theme-v2 .astat-link,
body.theme-v2 .comp-track-link {
  font-size: 13px;
  font-weight: 700;
  color: var(--v2-berry);
  text-decoration: none;
}

body.theme-v2 .comp-track-link {
  font-size: 14px;
}

body.theme-v2 .assembly-comp-card {
  margin-top: 16px;
  background: var(--v2-card);
  border: 0;
  border-radius: 20px;
  box-shadow: none;
  padding: 28px;
}

body.theme-v2 .comp-title {
  margin: 0;
  font-family: var(--font-body) !important;
  font-size: 16px;
  font-weight: 700;
  letter-spacing: 0;
}

body.theme-v2 .comp-total {
  font-size: 13px;
  color: var(--v2-muted);
}

body.theme-v2 .comp-bar {
  gap: 3px;
  height: 40px;
  border-radius: 10px;
  overflow: hidden;
}

body.theme-v2 .comp-seg {
  font-size: 14px;
  font-weight: 700;
}

body.theme-v2 .comp-seg.seg-tvk {
  background: #A67C00;
}

body.theme-v2 .comp-seg.seg-supp {
  background: #D9874A;
}

body.theme-v2 .comp-seg.seg-spa {
  background: #E53935;
}

body.theme-v2 .comp-seg.seg-admk {
  background: #43A047;
}

body.theme-v2 .comp-seg.seg-vac {
  background: #A89C92;
}

body.theme-v2 .comp-threshold-line {
  border-left: 2px dashed var(--v2-dark);
  background: none;
}

body.theme-v2 .comp-threshold-badge {
  background: transparent;
  color: var(--v2-ink);
  font-size: 12px;
  font-weight: 700;
}

body.theme-v2 .comp-cols-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
  margin-top: 28px;
}

body.theme-v2 .comp-col-topbar {
  height: 3px;
  border-radius: 2px;
  margin-bottom: 12px;
}

body.theme-v2 .comp-col-topbar-empty {
  background: #A89C92;
}

body.theme-v2 .comp-item-name {
  display: flex;
  align-items: center;
  gap: 6px;
}

body.theme-v2 .comp-item-dot {
  width: 8px;
  height: 8px;
  border-radius: 2px;
  flex: none;
}

body.theme-v2 .comp-col {
  background: transparent;
  border: 0;
  box-shadow: none;
  padding: 0;
}

body.theme-v2 .comp-col-heading {
  font-family: var(--font-body);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

body.theme-v2 .comp-col-total,
body.theme-v2 .comp-item-count {
  font-family: var(--font-mono) !important;
  font-weight: 700;
  letter-spacing: 0 !important;
}

body.theme-v2 .comp-col-total {
  font-size: 18px;
}

body.theme-v2 .comp-item-name {
  font-size: 15px;
  font-weight: 700;
  color: var(--v2-ink);
}

body.theme-v2 .comp-item-parties,
body.theme-v2 .comp-vacant-list {
  font-size: 13px;
  color: var(--v2-muted);
}

body.theme-v2 .comp-vacant-list {
  line-height: 1.6;
  color: var(--v2-ink-2);
}

/* ---- Vote in numbers --------------------------------------------------- */
body.theme-v2 .v2-section {
  padding: 8px 0 40px;
}

body.theme-v2 .v2-section-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
  flex-wrap: wrap;
}

body.theme-v2 .v2-h2 {
  margin: 0;
  font-family: var(--font-display) !important;
  font-size: 22px;
  font-weight: 700;
  letter-spacing: 0 !important;
  color: var(--v2-ink);
}

body.theme-v2 .v2-link {
  font-size: 14px;
  font-weight: 700;
  color: var(--v2-berry);
  text-decoration: none;
}

body.theme-v2 .v2-link:hover {
  color: var(--v2-berry-dark);
}

body.theme-v2 .v2-numbers {
  display: grid;
  grid-template-columns: 1.4fr repeat(3, minmax(0, 1fr));
  gap: 16px;
  margin-top: 20px;
}

body.theme-v2 .v2-tile {
  background: var(--v2-card);
  border-radius: 20px;
  padding: 24px;
}

body.theme-v2 .v2-tile--dark {
  background: var(--v2-dark);
  color: #F7F2EC;
}

body.theme-v2 .v2-eyebrow {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--v2-muted);
}

body.theme-v2 .v2-tile--dark .v2-eyebrow {
  color: #C9BCAF;
}

body.theme-v2 .v2-figure {
  font-family: var(--font-display);
  font-size: 28px;
  font-weight: 700;
  line-height: 1.1;
  margin-top: 6px;
}

body.theme-v2 .v2-figure--xl {
  font-size: 44px;
  line-height: 1;
  margin-top: 8px;
}

body.theme-v2 .v2-mono {
  font-family: var(--font-mono);
  font-size: 13px;
  color: var(--v2-muted);
  margin-top: 4px;
}

body.theme-v2 .v2-note {
  font-size: 13px;
  color: var(--v2-muted);
  margin-top: 4px;
}

body.theme-v2 .v2-tile--dark .v2-lede {
  font-size: 14px;
  color: #E9DFD4;
  margin-top: 6px;
}

body.theme-v2 .v2-tile--dark .v2-lede b {
  color: #8FD3AE;
}

body.theme-v2 .v2-bars {
  margin-top: 18px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  font-size: 13px;
}

body.theme-v2 .v2-bar-row {
  display: flex;
  align-items: center;
  gap: 10px;
}

body.theme-v2 .v2-bar-row--old {
  color: #C9BCAF;
}

body.theme-v2 .v2-bar-year {
  width: 36px;
  font-family: var(--font-mono);
}

body.theme-v2 .v2-bar-track {
  flex: 1;
  height: 10px;
  background: #3A2424;
  border-radius: 5px;
}

body.theme-v2 .v2-bar-fill {
  height: 10px;
  border-radius: 5px;
  background: #F7F2EC;
}

body.theme-v2 .v2-bar-row--old .v2-bar-fill {
  background: var(--v2-faint);
}

body.theme-v2 .v2-bar-val {
  width: 56px;
  text-align: right;
  font-family: var(--font-mono);
}

body.theme-v2 .v2-chips {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 16px;
}

body.theme-v2 .v2-chip {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 0 16px;
  border-radius: 999px;
  border: 1px solid var(--v2-line-strong);
  font-size: 14px;
  font-weight: 600;
  color: var(--v2-ink);
  text-decoration: none;
}

body.theme-v2 .v2-chip:hover {
  background: var(--v2-hover-soft);
}

/* ---- Explore ----------------------------------------------------------- */
body.theme-v2 .v2-explore {
  padding-top: 32px;
  border-top: 1px solid var(--v2-sep);
}

body.theme-v2 .v2-cards {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
  margin-top: 20px;
}

body.theme-v2 .v2-card {
  display: flex;
  flex-direction: column;
  gap: 10px;
  min-height: 150px;
  background: var(--v2-card);
  border-radius: 16px;
  padding: 20px;
  color: var(--v2-ink);
  text-decoration: none;
  transition: box-shadow 0.15s ease, transform 0.15s ease;
}

body.theme-v2 .v2-card:hover {
  box-shadow: 0 8px 24px var(--v2-shadow);
  transform: translateY(-2px);
}

body.theme-v2 .v2-card-icon {
  width: 44px;
  height: 44px;
  border-radius: 12px;
  background: var(--v2-tint);
  color: var(--v2-berry);
  display: flex;
  align-items: center;
  justify-content: center;
}

body.theme-v2 .v2-card-icon--green {
  background: var(--v2-green-bg);
  color: var(--v2-green-fg);
}

body.theme-v2 .v2-card-title {
  font-family: var(--font-display);
  font-size: 20px;
  font-weight: 700;
  line-height: 1.2;
}

body.theme-v2 .v2-card-desc {
  font-size: 14px;
  color: var(--v2-ink-2);
}

body.theme-v2 .v2-card-cta {
  margin-top: auto;
  font-size: 14px;
  font-weight: 700;
  color: var(--v2-berry);
}

/* ---- Footer ------------------------------------------------------------ */
body.theme-v2 .footer,
body.theme-v2 #footerEl {
  max-width: 1240px;
  margin: 0 auto;
  padding: 32px 24px 40px;
  border-top: 1px solid var(--v2-sep);
  background: transparent;
  color: var(--v2-muted);
  font-size: 13px;
  text-align: left;
}

body.theme-v2 .floating-mail-btn {
  background: var(--v2-berry-fill);
  color: #fff;
}

/* ---- Shared: inner pages ----------------------------------------------- */
body.theme-v2 .header-group {
  background: var(--v2-dark) !important;
  box-shadow: none;
}

body.theme-v2 .global-header {
  background: var(--v2-dark) !important;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

body.theme-v2 .layout {
  display: block;
}

body.theme-v2 .main {
  max-width: none;
  padding: 0;
  margin: 0;
}

body.theme-v2 .page-content.container {
  max-width: 1240px;
  margin: 0 auto;
  padding: 24px 24px 64px;
}

body.theme-v2 .page-header {
  margin-bottom: 20px;
}

body.theme-v2 .page-header h2,
body.theme-v2 .page-header h1 {
  font-family: var(--font-display) !important;
  font-size: 32px;
  font-weight: 700;
  line-height: 1.1;
  letter-spacing: -0.01em !important;
  color: var(--v2-ink);
}

body.theme-v2 .page-header p {
  font-size: 15px;
  line-height: 1.5;
  color: var(--v2-ink-2);
  margin-top: 8px;
  max-width: 640px;
}

body.theme-v2 .card,
body.theme-v2 .kpi,
body.theme-v2 .chart-card {
  background: var(--v2-card);
  border: 0;
  border-radius: 16px;
  box-shadow: none;
}

body.theme-v2 input[type="text"],
body.theme-v2 input[type="search"],
body.theme-v2 input:not([type]),
body.theme-v2 select {
  min-height: 40px;
  border-radius: 10px;
  border: 1px solid var(--v2-line-strong);
  background: var(--v2-card);
  color: var(--v2-ink);
  font-size: 14px;
}

body.theme-v2 input:focus-visible,
body.theme-v2 select:focus-visible,
body.theme-v2 button:focus-visible,
body.theme-v2 a:focus-visible {
  outline: 2px solid var(--v2-berry);
  outline-offset: 2px;
}

body.theme-v2 .tab-btn {
  font-size: 14px;
  font-weight: 600;
  color: var(--v2-ink-2);
}

body.theme-v2 .tab-btn.active {
  color: var(--v2-berry);
  font-weight: 700;
  border-color: var(--v2-berry);
}

body.theme-v2 .data-table th,
body.theme-v2 table th {
  font-family: var(--font-body) !important;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--v2-muted);
}

body.theme-v2 .data-table td {
  font-size: 14px;
}

body.theme-v2 .results-view-cards {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

body.theme-v2 .results-view-card {
  background: var(--v2-card) !important;
  color: var(--v2-ink) !important;
  border-radius: 16px;
  min-height: 84px;
  box-shadow: none !important;
  border-left: 4px solid var(--v2-berry);
  text-decoration: none;
}

body.theme-v2 .results-view-card span {
  font-family: var(--font-display) !important;
  font-size: 20px !important;
  font-weight: 700;
  color: var(--v2-ink) !important;
  letter-spacing: 0 !important;
  text-shadow: none !important;
}

body.theme-v2 .results-view-card.card-voteshare {
  border-left-color: #A67C00;
}

body.theme-v2 .page-content {
  min-width: 0;
}

body.theme-v2 .bypoll-seat-card,
body.theme-v2 .seat-watermark-mask {
  overflow: hidden;
}

body.theme-v2 .bypolls-table-wrap,
body.theme-v2 .table-wrap,
body.theme-v2 .table-container {
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

body.theme-v2 h1,
body.theme-v2 h2 {
  letter-spacing: 0;
}

body.theme-v2 .const-name,
body.theme-v2 .c-name {
  font-family: var(--font-display) !important;
  letter-spacing: -0.01em !important;
}

/* ==========================================================================
   Inner-page redesign: hero, segmented control, KPI tiles, tables, cards
   ========================================================================== */

/* Hero (every .page-header) */
body.theme-v2 .page-header {
  padding: 32px 0 8px;
  margin-bottom: 20px;
}

body.theme-v2 .page-header[data-eyebrow]::before {
  content: attr(data-eyebrow);
  display: block;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--v2-muted);
}

body.theme-v2 .page-header h2,
body.theme-v2 .page-header h1 {
  margin: 10px 0 0;
  font-size: clamp(36px, 4.4vw, 56px);
  line-height: 1;
  letter-spacing: -0.02em !important;
}

body.theme-v2 .page-header p {
  font-size: 17px;
  line-height: 1.55;
  margin-top: 14px;
  max-width: 600px;
  color: var(--v2-ink-2);
}

body.theme-v2 .page-header p strong {
  color: var(--v2-ink);
}

/* Segmented control */
body.theme-v2 .v2-seg,
body.theme-v2 .tabs-container {
  display: inline-flex;
  gap: 4px;
  padding: 4px;
  margin: 24px 0 24px;
  background: var(--v2-nav-bg);
  border-radius: 14px;
  border: 0;
  box-shadow: none;
  max-width: 100%;
  overflow-x: auto;
}

body.theme-v2 .page-header .v2-seg {
  margin-bottom: 0;
}

body.theme-v2 .v2-seg a,
body.theme-v2 .tabs-container .tab-btn {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 0 18px;
  border: 0;
  border-radius: 10px;
  background: transparent;
  font-size: 14px;
  font-weight: 600;
  color: var(--v2-ink-2);
  text-decoration: none;
  white-space: nowrap;
  cursor: pointer;
  box-shadow: none;
}

body.theme-v2 .tabs-container .tab-btn .iconify {
  display: none;
}

body.theme-v2 .v2-seg a:hover,
body.theme-v2 .tabs-container .tab-btn:hover {
  color: var(--v2-ink);
  background: rgba(255, 255, 255, 0.5);
}

body.theme-v2 .v2-seg a[aria-current="page"],
body.theme-v2 .tabs-container .tab-btn.active {
  background: var(--v2-seg-on);
  color: var(--v2-ink);
  font-weight: 700;
}

body.theme-v2 .tabs-container .tab-btn.active::after,
body.theme-v2 .tabs-container .tab-indicator,
body.theme-v2 .tab-slider {
  display: none;
}

/* KPI tiles (results .tcard, stats .kpi) */
body.theme-v2 .results-kpi-grid,
body.theme-v2 .kpi-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 16px;
  margin: 0 0 24px;
}

body.theme-v2 .tcard,
body.theme-v2 .kpi {
  background: var(--v2-card) !important;
  border: 0 !important;
  border-radius: 16px !important;
  box-shadow: none !important;
  padding: 20px 22px !important;
  min-width: 0;
}

body.theme-v2 .kpi,
body.theme-v2 .tcard {
  grid-column: auto !important;
}

body.theme-v2 .tcard::before,
body.theme-v2 .tcard::after,
body.theme-v2 .kpi::before,
body.theme-v2 .kpi::after {
  display: none !important;
}

body.theme-v2 .tcard-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

body.theme-v2 .tcard-icon-wrapper {
  display: none;
}

body.theme-v2 .tcard-label,
body.theme-v2 .kpi-label {
  font-size: 12px !important;
  font-weight: 600 !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase;
  color: var(--v2-muted) !important;
}

body.theme-v2 .tcard-value,
body.theme-v2 .kpi-value {
  font-family: var(--font-display) !important;
  font-size: 28px !important;
  font-weight: 700 !important;
  line-height: 1.15 !important;
  letter-spacing: 0 !important;
  color: var(--v2-ink) !important;
  margin-top: 6px;
}

body.theme-v2 .tcard-subtext,
body.theme-v2 .kpi-sub {
  font-size: 14px !important;
  line-height: 1.5;
  color: var(--v2-ink-2) !important;
  margin-top: 4px;
}

body.theme-v2 .tcard-subtext b {
  color: var(--v2-ink);
}

body.theme-v2 .tcard-footer {
  display: none;
}

body.theme-v2 .kpi-section-title,
body.theme-v2 .section-label {
  font-family: var(--font-body);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--v2-muted);
  margin: 8px 0 12px;
}

/* Filter bar */
body.theme-v2 .filter-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: center;
  padding: 0;
  margin: 0 0 16px;
  background: transparent;
  border: 0;
  box-shadow: none;
}

body.theme-v2 .filter-bar select,
body.theme-v2 .filter-bar input,
body.theme-v2 .select-styled,
body.theme-v2 .search-input-v2 {
  min-height: 44px;
  padding: 0 14px;
  border-radius: 12px;
  border: 1px solid var(--v2-line-strong);
  background: var(--v2-card);
  color: var(--v2-ink);
  font-size: 14px;
  min-width: 150px;
}

body.theme-v2 .filter-bar .search-input-v2 {
  flex: 1 1 240px;
  min-width: 200px;
}

/* Tables inside white card */
body.theme-v2 .bypolls-table-wrap,
body.theme-v2 .table-responsive {
  background: var(--v2-card);
  border: 0;
  border-radius: 20px;
  box-shadow: none;
  overflow-x: auto;
}

body.theme-v2 .data-table,
body.theme-v2 .bypolls-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 15px;
  background: transparent;
}

body.theme-v2 .data-table th,
body.theme-v2 .bypolls-table th {
  padding: 14px 12px;
  background: transparent !important;
  border: 0 !important;
  border-bottom: 1px solid var(--v2-sep) !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase;
  color: var(--v2-muted) !important;
}

body.theme-v2 .data-table td,
body.theme-v2 .bypolls-table td {
  padding: 14px 12px;
  border: 0;
  border-top: 1px solid var(--v2-sep);
  font-size: 15px;
  color: var(--v2-ink);
  background: transparent;
}

body.theme-v2 .data-table th:first-child,
body.theme-v2 .data-table td:first-child {
  padding-left: 24px;
}

body.theme-v2 .data-table th:last-child,
body.theme-v2 .data-table td:last-child {
  padding-right: 24px;
}

body.theme-v2 .data-table tbody tr:hover td,
body.theme-v2 .bypolls-table tbody tr:hover td {
  background: var(--v2-row-hover);
}

body.theme-v2 .data-table .numbers,
body.theme-v2 .numbers {
  font-family: var(--font-mono) !important;
  letter-spacing: 0 !important;
  font-variant-numeric: tabular-nums;
}

/* Margin bar in results table */
body.theme-v2 .v2-margin {
  display: flex;
  align-items: center;
  gap: 12px;
  justify-content: flex-end;
}

body.theme-v2 .v2-margin-bar {
  flex: 1;
  min-width: 60px;
  max-width: 220px;
  height: 8px;
  background: var(--v2-bg);
  border-radius: 4px;
  overflow: hidden;
}

body.theme-v2 .v2-margin-bar i {
  display: block;
  height: 8px;
  border-radius: 4px;
}

body.theme-v2 .v2-margin-num {
  font-family: var(--font-mono);
  font-size: 14px;
  width: 64px;
  text-align: right;
}

/* Cards in general */
body.theme-v2 .card,
body.theme-v2 .chart-card,
body.theme-v2 .stat-card {
  background: var(--v2-card) !important;
  border: 0 !important;
  border-radius: 20px !important;
  box-shadow: none !important;
}

body.theme-v2 .card-header {
  border: 0;
  background: transparent;
}

body.theme-v2 .card-header h3,
body.theme-v2 .card-title {
  font-family: var(--font-body) !important;
  font-size: 16px;
  font-weight: 700;
  letter-spacing: 0 !important;
  text-transform: none;
}

/* Constituency explorer cards */
body.theme-v2 .const-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 12px;
}

body.theme-v2 .const-card {
  background: var(--v2-card) !important;
  border: 0 !important;
  border-radius: 16px !important;
  box-shadow: none !important;
  padding: 16px !important;
  transition: box-shadow .15s ease, transform .15s ease;
}

body.theme-v2 .const-card:hover {
  box-shadow: 0 8px 24px var(--v2-shadow) !important;
  transform: translateY(-2px);
}

/* Office-bearer cards */
body.theme-v2 .bearer-card {
  background: var(--v2-card) !important;
  border: 0 !important;
  border-radius: 20px !important;
  box-shadow: none !important;
}

body.theme-v2 .bearer-card:hover {
  box-shadow: 0 8px 24px var(--v2-shadow) !important;
}

/* Misc chrome */
body.theme-v2 .footer,
body.theme-v2 #footerEl {
  text-align: center;
}

body.theme-v2 .active-bypolls-count-badge {
  font-size: 12px;
  font-weight: 700;
}

/* ---- Office bearers ---------------------------------------------------- */
body.theme-v2 .cabinet-summary-card,
body.theme-v2 .note-banner,
body.theme-v2 .info-note {
  background: var(--v2-card) !important;
  border: 0 !important;
  border-radius: 20px !important;
  box-shadow: none !important;
}

body.theme-v2 .cabinet-summary-wrap {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

body.theme-v2 .cabinet-party-card {
  background: var(--v2-bg) !important;
  border: 0 !important;
  border-radius: 12px !important;
  box-shadow: none !important;
  padding: 10px 14px !important;
  font-size: 13px;
}

body.theme-v2 .executive-hero {
  background: var(--v2-card) !important;
  border: 0 !important;
  border-radius: 20px !important;
  box-shadow: none !important;
  overflow: hidden;
  display: flex;
  flex-wrap: wrap;
  margin: 16px 0 24px;
}

body.theme-v2 .executive-hero .hero-img-container {
  flex: 0 0 220px;
  min-height: 240px;
  background: #F4ECD6;
}

body.theme-v2 .executive-hero .hero-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top;
}

body.theme-v2 .executive-hero .hero-content {
  flex: 1 1 320px;
  padding: 24px 28px;
}

body.theme-v2 .hero-name {
  font-family: var(--font-display) !important;
  font-size: 32px !important;
  font-weight: 700;
  line-height: 1.1;
  letter-spacing: -0.01em !important;
  margin: 12px 0 0;
}

body.theme-v2 .hero-title-badge,
body.theme-v2 .bearer-title,
body.theme-v2 .section-title-small,
body.theme-v2 .bearer-meta-label,
body.theme-v2 .bearer-portfolios-title {
  font-family: var(--font-body) !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  letter-spacing: 0.08em !important;
  text-transform: uppercase;
  color: var(--v2-muted) !important;
}

body.theme-v2 .hero-party-pill,
body.theme-v2 .bearer-badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.04em;
  box-shadow: none;
}

body.theme-v2 .badge-tvk {
  background: #A67C00 !important;
  color: #fff !important;
}

body.theme-v2 .portfolio-badges-wrap {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

body.theme-v2 .portfolio-tag {
  padding: 4px 10px;
  border-radius: 8px;
  background: var(--v2-bg);
  border: 0;
  font-size: 13px;
  color: var(--v2-ink-2);
}

body.theme-v2 .cabinet-grid,
body.theme-v2 .spotlight-grid,
body.theme-v2 .officials-grid,
body.theme-v2 .mla-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 12px;
}

body.theme-v2 .spotlight-grid {
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 16px;
}

body.theme-v2 .cabinet-grid .bearer-card {
  position: relative;
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  gap: 14px;
  padding: 16px !important;
  border-radius: 16px !important;
  min-height: 0;
}

body.theme-v2 .cabinet-grid .bearer-img-container {
  flex: none;
  width: 52px;
  height: 52px;
  border-radius: 50%;
  overflow: hidden;
  background: var(--v2-bg);
  margin: 0;
  padding: 0;
  border: 0;
}

body.theme-v2 .cabinet-grid .bearer-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top;
}

body.theme-v2 .cabinet-grid .bearer-content {
  min-width: 0;
  flex: 1;
  padding: 0;
  text-align: left;
}

body.theme-v2 .cabinet-grid .bearer-name {
  font-family: var(--font-body) !important;
  font-size: 15px;
  font-weight: 700;
  margin: 2px 0 6px;
  letter-spacing: 0 !important;
  text-align: left;
}

body.theme-v2 .cabinet-grid .bearer-badge {
  position: absolute;
  top: 12px;
  right: 12px;
}

body.theme-v2 .cabinet-grid .bearer-meta {
  gap: 2px;
  padding: 0;
  border: 0;
  margin: 0;
}

body.theme-v2 .cabinet-grid .bearer-meta-row {
  display: flex;
  gap: 8px;
  font-size: 13px;
}

body.theme-v2 .cabinet-grid .bearer-portfolios {
  margin-top: 8px;
  font-size: 14px;
  font-weight: 600;
  color: var(--v2-berry);
}

body.theme-v2 .bearer-img-container {
  background: linear-gradient(180deg, var(--v2-soft), var(--v2-soft));
}

body.theme-v2 .bearer-name {
  font-family: var(--font-display) !important;
  font-size: 22px;
  letter-spacing: -0.01em !important;
}

/* ---- By-polls ---------------------------------------------------------- */
body.theme-v2 .page-header.bypolls-header {
  display: flex;
  flex-wrap: wrap;
  gap: 32px;
  align-items: flex-end;
  padding: 32px 0 32px;
  margin-bottom: 0;
  border-bottom: 1px solid var(--v2-sep);
}

body.theme-v2 .bypolls-header .v2-hero-main {
  flex: 999 1 420px;
  min-width: 0;
}

body.theme-v2 .bypolls-header[data-eyebrow]::before {
  display: none;
}

body.theme-v2 .seat-card-main-row {
  flex-direction: column;
  align-items: stretch;
  gap: 14px;
}

body.theme-v2 .active-bypolls-grid {
  align-items: stretch;
}

body.theme-v2 .v2-countdown {
  flex: 1 1 340px;
  max-width: 420px;
  background: var(--v2-dark);
  color: #F7F2EC;
  border-radius: 20px;
  padding: 22px;
}

body.theme-v2 .v2-countdown-top {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #C9BCAF;
}

body.theme-v2 .v2-countdown-live {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: #8FD3AE;
}

body.theme-v2 .v2-countdown-live i {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #8FD3AE;
}

body.theme-v2 .v2-countdown-date {
  margin-top: 8px;
  font-family: var(--font-display);
  font-size: 24px;
  font-weight: 700;
}

body.theme-v2 .v2-countdown-grid {
  margin-top: 16px;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  text-align: center;
}

body.theme-v2 .v2-countdown-grid>div {
  background: #3A2424;
  border-radius: 12px;
  padding: 10px 4px;
}

body.theme-v2 .v2-countdown-grid b {
  display: block;
  font-family: var(--font-mono);
  font-size: 24px;
  font-weight: 700;
  line-height: 1.2;
}

body.theme-v2 .v2-countdown-grid span {
  display: block;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #C9BCAF;
  margin-top: 2px;
}

body.theme-v2 .v2-countdown-foot {
  margin-top: 12px;
  font-size: 13px;
  color: #C9BCAF;
}

body.theme-v2 .bypolls-separator {
  display: none;
}

body.theme-v2 .bypolls-kpi-strip {
  display: grid !important;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px !important;
  margin: 28px 0 !important;
  background: transparent !important;
  border: 0 !important;
  padding: 0 !important;
}

body.theme-v2 .bypolls-kpi-item {
  display: block !important;
  background: var(--v2-card) !important;
  border: 2px solid transparent !important;
  border-radius: 16px !important;
  box-shadow: none !important;
  padding: 18px 22px !important;
  cursor: pointer;
  text-align: left;
}

body.theme-v2 .bypolls-kpi-item.active {
  border-color: var(--v2-ink) !important;
}

body.theme-v2 .bypolls-kpi-icon {
  display: none !important;
}

body.theme-v2 .bypolls-kpi-val {
  font-family: var(--font-display) !important;
  font-size: 36px !important;
  font-weight: 700;
  line-height: 1.1;
}

body.theme-v2 .bypolls-kpi-lbl {
  font-size: 12px !important;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--v2-muted) !important;
  margin-top: 4px;
}

body.theme-v2 .active-bypolls-section {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  padding: 28px 0 0 !important;
  margin: 0 !important;
}

body.theme-v2 .active-bypolls-heading {
  font-family: var(--font-display) !important;
  font-size: 24px;
  font-weight: 700;
  letter-spacing: 0 !important;
  text-transform: none;
}

body.theme-v2 .active-bypolls-count-badge {
  background: var(--v2-green-bg) !important;
  color: var(--v2-green-fg) !important;
  border: 0 !important;
  border-radius: 999px;
  padding: 4px 12px;
}

body.theme-v2 .active-bypolls-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
  gap: 16px;
}

body.theme-v2 .bypoll-seat-card {
  background: var(--v2-card) !important;
  border: 0 !important;
  border-radius: 20px !important;
  box-shadow: none !important;
  color: var(--v2-ink);
  text-decoration: none;
  transition: box-shadow .15s ease, transform .15s ease;
}

body.theme-v2 .bypoll-seat-card:hover {
  box-shadow: 0 8px 24px var(--v2-shadow) !important;
  transform: translateY(-2px);
}

body.theme-v2 .seat-watermark-mask {
  display: none;
}

body.theme-v2 .seat-card-title {
  font-family: var(--font-display) !important;
  font-size: 26px !important;
  font-weight: 700;
  line-height: 1.1;
  letter-spacing: -0.01em !important;
  color: var(--v2-ink) !important;
}

body.theme-v2 .seat-card-district {
  font-size: 14px;
  color: var(--v2-muted);
}

body.theme-v2 .seat-context-strip {
  background: var(--v2-soft) !important;
  border: 0 !important;
  border-radius: 14px !important;
  padding: 14px !important;
}

body.theme-v2 .context-label {
  font-size: 11px !important;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--v2-muted) !important;
}

body.theme-v2 .seat-ac-tags,
body.theme-v2 .ac-pill {
  font-family: var(--font-mono) !important;
  border-radius: 6px;
  background: transparent !important;
  border: 1px solid var(--v2-line-strong) !important;
  color: var(--v2-ink-2) !important;
}

body.theme-v2 .seat-countdown-badge {
  background: var(--v2-green-bg) !important;
  color: var(--v2-green-fg) !important;
  border: 0 !important;
  border-radius: 999px;
}

body.theme-v2 .seat-card-action {
  border-top: 1px solid var(--v2-sep);
  color: var(--v2-berry);
  font-weight: 700;
}

body.theme-v2 .table-group-header-row td {
  background: var(--v2-soft) !important;
  padding: 10px 24px !important;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

body.theme-v2 .bypolls-table .const-link {
  font-weight: 700;
  color: var(--v2-berry);
  text-decoration: none;
}

/* ---- Constituency detail ---------------------------------------------- */
body.theme-v2 {
  --c-bg: var(--v2-bg);
  --c-surface: var(--v2-card);
  --c-surface-muted: var(--v2-soft);
  --c-line: var(--v2-hair);
  --c-line-soft: var(--v2-hair);
  --c-line-strong: var(--v2-line-strong);
  --c-ink: var(--v2-ink);
  --c-ink-2: var(--v2-ink-2);
  --c-ink-3: var(--v2-muted);
  --font-body: 'Inter', system-ui, sans-serif;
}

body.theme-v2 .c-card {
  border: 0;
  box-shadow: none;
  border-radius: 20px;
}

body.theme-v2 .c-figure {
  border: 0;
  box-shadow: none;
  border-radius: 16px;
  background: var(--v2-card);
}

body.theme-v2 .c-hero h1,
body.theme-v2 .c-hero-main h1 {
  font-size: clamp(36px, 4.4vw, 56px);
  line-height: 1;
  letter-spacing: -0.02em;
}

body.theme-v2 .c-lede {
  font-size: 17px;
  line-height: 1.55;
  color: var(--v2-ink-2);
}

body.theme-v2 .c-btn {
  border-radius: 12px;
  min-height: 44px;
  font-weight: 700;
  letter-spacing: 0.04em;
}

/* ---- District / alliances / misc -------------------------------------- */
body.theme-v2 #districtsGrid>* {
  background: var(--v2-card) !important;
  border: 0 !important;
  border-radius: 16px !important;
  box-shadow: none !important;
}

body.theme-v2 #districtsGrid h3,
body.theme-v2 #districtsGrid h4 {
  font-family: var(--font-display) !important;
  font-size: 20px;
  letter-spacing: 0 !important;
}

body.theme-v2 .alliance-mode-bar {
  margin: 0 0 20px;
}

body.theme-v2 .alliance-tabs {
  display: inline-flex;
  gap: 4px;
  padding: 4px;
  background: var(--v2-nav-bg);
  border-radius: 14px;
  border: 0;
}

body.theme-v2 .alliance-tab {
  min-height: 44px;
  padding: 0 16px;
  border: 0;
  border-radius: 10px;
  background: transparent;
  font-size: 14px;
  font-weight: 600;
  color: var(--v2-ink-2);
  cursor: pointer;
  box-shadow: none;
}

body.theme-v2 .alliance-tab.active {
  background: var(--v2-seg-on);
  color: var(--v2-ink);
  font-weight: 700;
}

body.theme-v2 .alliances-ledger-wrap,
body.theme-v2 .gov-formation-card {
  background: var(--v2-card);
  border: 0;
  border-radius: 20px;
  box-shadow: none;
}

body.theme-v2 .alliances-wrapper {
  padding-top: 0;
}

/* ---- Vote share pages (light) ------------------------------------------ */
body.theme-v2 .vs-layout {
  background: var(--v2-bg);
  font-family: var(--font-body);
}

body.theme-v2 .vs-layout::before {
  display: none;
}

body.theme-v2 .vs-title {
  color: var(--v2-muted);
}

body.theme-v2 .vs-title strong {
  color: var(--v2-ink);
}

body.theme-v2 .vs-subtitle {
  font-family: var(--font-display) !important;
  background: none;
  -webkit-text-fill-color: var(--v2-ink);
  color: var(--v2-ink);
  font-size: clamp(28px, 4vw, 40px);
  font-weight: 700;
  letter-spacing: -0.01em;
}

body.theme-v2 .vs-btn-primary {
  background: var(--v2-pill-bg);
  color: var(--v2-pill-fg);
  border-radius: 12px;
}

body.theme-v2 .vs-btn-primary:hover {
  background: #3A2424;
}

body.theme-v2 .vs-btn-secondary {
  color: var(--v2-ink-2);
}

body.theme-v2 .vs-bar-value {
  color: var(--v2-ink);
  font-family: var(--font-mono);
}

body.theme-v2 .vs-bar-label {
  color: var(--v2-ink-2);
}

body.theme-v2 .vs-nav-item {
  color: #A89C92;
}

body.theme-v2 .vs-nav-item:hover {
  color: var(--v2-ink-2);
}

body.theme-v2 .vs-nav-active {
  color: var(--v2-ink);
}

body.theme-v2 .vs-nav-btn {
  color: var(--v2-ink-2);
  border-color: var(--v2-line-strong);
}

body.theme-v2 .vs-nav-btn:hover {
  border-color: var(--v2-ink);
  color: var(--v2-ink);
  background: rgba(35, 22, 22, 0.05);
}

body.theme-v2 .vs-tldr-wrapper {
  background: var(--v2-line-strong);
}

body.theme-v2 .vs-tldr {
  background: var(--v2-card);
}

body.theme-v2 .vs-tldr-label {
  color: var(--v2-berry);
}

body.theme-v2 .vs-tldr-text {
  color: var(--v2-ink);
}

body.theme-v2 .vsb-hero h1,
body.theme-v2 .vsb-hero .vsb-title {
  background: none;
  -webkit-text-fill-color: var(--v2-ink);
  color: var(--v2-ink);
  font-family: var(--font-display) !important;
}

body.theme-v2 .vsb-page {
  color: var(--v2-ink);
}

body.theme-v2 .vsb-hero [class*="title"],
body.theme-v2 .vsb-hero h2 {
  background: none;
  -webkit-text-fill-color: var(--v2-ink);
  color: var(--v2-ink);
  font-family: var(--font-display) !important;
}

body.theme-v2 .vsb-hero p,
body.theme-v2 .vsb-legend-item,
body.theme-v2 .vsb-count,
body.theme-v2 .vsb-ac-no,
body.theme-v2 .vsb-electors-label,
body.theme-v2 .vsb-electors-val {
  color: var(--v2-muted);
}

body.theme-v2 .vsb-select,
body.theme-v2 .vsb-search {
  background: var(--v2-card);
  color: var(--v2-ink);
  border: 1px solid var(--v2-line-strong);
  border-radius: 12px;
}

body.theme-v2 .vsb-select option {
  background: var(--v2-card);
  color: var(--v2-ink);
}

body.theme-v2 .vsb-sort-btn {
  background: var(--v2-card);
  color: var(--v2-ink-2);
  border: 1px solid var(--v2-line-strong);
  border-radius: 12px;
}

body.theme-v2 .vsb-sort-btn.active,
body.theme-v2 .vsb-sort-btn:hover {
  border-color: var(--v2-berry);
  color: var(--v2-berry);
}

body.theme-v2 .vsb-row:hover {
  background: rgba(35, 22, 22, 0.04);
}

body.theme-v2 .vsb-ac-name {
  color: var(--v2-ink);
  font-weight: 700;
}

body.theme-v2 .vsb-bar-track {
  background: var(--v2-hair);
}

body.theme-v2 .vsb-tooltip {
  background: var(--v2-dark);
  color: #F7F2EC;
}

body.theme-v2 .vsb-view-btn {
  color: var(--v2-ink-2);
}

body.theme-v2 .vsb-view-btn.active {
  background: var(--v2-pill-bg);
  color: var(--v2-pill-fg);
}

body.theme-v2 .vs-view-btn {
  color: var(--v2-ink-2);
}

body.theme-v2 .vs-view-btn.active {
  background: var(--v2-pill-bg);
  color: var(--v2-pill-fg);
}

/* ---- MLAs -------------------------------------------------------------- */
body.theme-v2 .mla-controls {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin: 0 0 16px;
}

body.theme-v2 .mla-search {
  flex: 1 1 260px;
}

body.theme-v2 .mla-select {
  min-height: 44px;
  border-radius: 12px;
  border: 1px solid var(--v2-line-strong);
  background: var(--v2-card);
  color: var(--v2-ink);
  padding: 0 12px;
  font-size: 14px;
}

body.theme-v2 .mla-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
  gap: 12px;
}

body.theme-v2 .mla-card {
  background: var(--v2-card) !important;
  border: 0 !important;
  border-radius: 16px !important;
  box-shadow: none !important;
  padding: 16px;
  transition: box-shadow .15s ease, transform .15s ease;
}

body.theme-v2 .mla-card:hover {
  box-shadow: 0 8px 24px var(--v2-shadow) !important;
  transform: translateY(-2px);
}

body.theme-v2 .mla-card-name {
  font-family: var(--font-body) !important;
  font-size: 15px;
  font-weight: 700;
  letter-spacing: 0 !important;
  color: var(--v2-ink);
}

body.theme-v2 .mla-card-const {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--v2-muted);
}

body.theme-v2 .mla-card-ac {
  font-family: var(--font-mono) !important;
  font-size: 11px;
}

body.theme-v2 .mla-card-age {
  font-family: var(--font-mono) !important;
  font-size: 13px;
  color: var(--v2-muted);
}

body.theme-v2 .mla-card-party {
  font-size: 12px;
  font-weight: 700;
}

/* ---- By-poll detail ---------------------------------------------------- */
body.theme-v2 .seat-switcher-bar {
  background: transparent;
  border: 0;
  padding: 0;
}

body.theme-v2 .seat-switcher-label {
  font-family: var(--font-display) !important;
  font-size: 28px;
  letter-spacing: -0.01em;
}

body.theme-v2 .seat-pill-btn {
  min-height: 40px;
  border-radius: 999px;
  border: 1px solid var(--v2-line-strong);
  background: var(--v2-card);
  color: var(--v2-ink);
  font-size: 13px;
  font-weight: 700;
}

body.theme-v2 .seat-pill-btn.active {
  background: var(--v2-pill-bg);
  color: var(--v2-pill-fg);
  border-color: var(--v2-pill-bg);
}

body.theme-v2 .bypoll-hero {
  background: var(--v2-card) !important;
  border: 0 !important;
  border-radius: 20px !important;
  box-shadow: none !important;
}

body.theme-v2 .bypoll-hero .hero-title {
  font-family: var(--font-display) !important;
  font-size: clamp(34px, 4.4vw, 52px);
  font-weight: 700;
  letter-spacing: -0.02em !important;
  text-shadow: none;
  color: var(--v2-ink) !important;
  background: none;
  -webkit-text-fill-color: var(--v2-ink);
}

body.theme-v2 .hero-metric-card {
  background: var(--v2-soft) !important;
  border: 0 !important;
  border-radius: 14px !important;
  box-shadow: none !important;
}

body.theme-v2 .gender-ratio-box,
body.theme-v2 .data-table-card {
  background: var(--v2-card) !important;
  border: 0 !important;
  border-radius: 20px !important;
  box-shadow: none !important;
}

body.theme-v2 .data-table-title-group h3,
body.theme-v2 .data-table-title-group h2 {
  font-family: var(--font-display) !important;
  font-size: 24px;
  letter-spacing: 0 !important;
}

body.theme-v2 .data-table-modern th {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--v2-muted);
  background: transparent;
  border-bottom: 1px solid var(--v2-sep);
}

body.theme-v2 .data-table-modern td {
  border-top: 1px solid var(--v2-sep);
  font-size: 14px;
}

body.theme-v2 .detail-breadcrumb {
  font-size: 13px;
  color: var(--v2-muted);
}

/* ---- Mobile ------------------------------------------------------------ */
@media (max-width: 900px) {
  body.theme-v2 .assembly-today-stats-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  body.theme-v2 .v2-numbers {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  body.theme-v2 .v2-numbers>.v2-tile--dark {
    grid-column: 1 / -1;
  }

  body.theme-v2 .v2-cards {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  body.theme-v2 .comp-cols-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 640px) {
  body.theme-v2 .page-content.container {
    padding: 16px 16px 48px;
  }

  body.theme-v2 .page-header {
    padding-top: 20px;
  }

  body.theme-v2 .bypolls-kpi-strip {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px !important;
  }

  body.theme-v2 .bypolls-kpi-val {
    font-size: 28px !important;
  }

  body.theme-v2 .active-bypolls-grid {
    grid-template-columns: 1fr;
  }

  body.theme-v2 .v2-countdown {
    max-width: none;
    flex-basis: 100%;
  }

  body.theme-v2 .page-header h2,
  body.theme-v2 .page-header h1 {
    font-size: 34px;
  }

  body.theme-v2 .page-header p {
    font-size: 15px;
  }

  body.theme-v2 .v2-seg,
  body.theme-v2 .tabs-container {
    display: flex;
    margin: 16px 0;
  }

  body.theme-v2 .v2-seg a,
  body.theme-v2 .tabs-container .tab-btn {
    flex: 1 0 auto;
    justify-content: center;
    padding: 0 14px;
    font-size: 13px;
  }

  body.theme-v2 .tcard-value,
  body.theme-v2 .kpi-value {
    font-size: 24px !important;
  }

  body.theme-v2 .filter-bar select,
  body.theme-v2 .filter-bar input {
    flex: 1 1 100%;
  }

  body.theme-v2 .data-table th,
  body.theme-v2 .data-table td {
    padding: 12px 10px;
    font-size: 14px;
  }

  body.theme-v2 .results-view-cards {
    grid-template-columns: 1fr;
  }

  body.theme-v2 .global-header>.container,
  body.theme-v2 .secondary-nav-content,
  body.theme-v2 #page-home {
    padding-left: 16px;
    padding-right: 16px;
  }

  body.theme-v2 .global-header h1,
  body.theme-v2 .global-header .desktop-title,
  body.theme-v2 .global-header .mobile-title {
    font-size: 13px !important;
  }

  body.theme-v2 .bypoll-ticker-banner {
    flex-wrap: wrap;
    align-items: flex-start;
    padding: 12px 14px;
    gap: 8px;
  }

  body.theme-v2 .bypoll-ticker-track-wrap {
    flex: 1 1 100%;
    min-width: 0;
  }

  body.theme-v2 .bypoll-ticker-content {
    gap: 6px 12px;
  }

  body.theme-v2 .bypoll-ticker-content .ticker-item {
    font-size: 13px;
    line-height: 1.5;
  }

  body.theme-v2 .ticker-cta {
    margin-left: 0;
    font-size: 13px;
  }

  body.theme-v2 .hung-assembly-card {
    padding: 24px 0 24px !important;
    gap: 24px !important;
  }

  body.theme-v2 .hung-title {
    font-size: 34px;
  }

  body.theme-v2 .hung-desc {
    font-size: 15px;
  }

  body.theme-v2 .hung-btn-primary,
  body.theme-v2 .hung-btn-secondary {
    min-height: 44px;
    font-size: 13px;
  }

  body.theme-v2 .hung-stat-val {
    font-size: 24px;
  }

  body.theme-v2 .hung-stat-grid {
    gap: 8px;
  }

  body.theme-v2 .hung-stat-card {
    padding: 10px 12px;
  }

  body.theme-v2 .hung-stat-sub {
    font-size: 12px;
    overflow-wrap: anywhere;
  }

  body.theme-v2 .assembly-today-stats-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 10px;
  }

  body.theme-v2 .astat-card {
    padding: 14px;
  }

  body.theme-v2 .astat-val {
    font-size: 24px;
  }

  body.theme-v2 .astat-val.astat-status {
    font-size: 18px;
  }

  body.theme-v2 .assembly-comp-card {
    padding: 16px;
  }

  body.theme-v2 .comp-seg {
    font-size: 12px;
  }

  body.theme-v2 .assembly-today-title,
  body.theme-v2 .v2-h2 {
    font-size: 20px;
  }

  body.theme-v2 .v2-numbers {
    gap: 10px;
  }

  body.theme-v2 .v2-numbers>.v2-tile:last-child {
    grid-column: 1 / -1;
  }

  body.theme-v2 .v2-tile {
    padding: 16px;
    border-radius: 14px;
  }

  body.theme-v2 .v2-figure {
    font-size: 22px;
  }

  body.theme-v2 .v2-figure--xl {
    font-size: 36px;
  }

  body.theme-v2 .v2-chip {
    min-height: 40px;
    font-size: 13px;
    padding: 0 14px;
  }

  body.theme-v2 .v2-cards {
    grid-template-columns: 1fr;
    gap: 12px;
  }

  body.theme-v2 .v2-card {
    min-height: 0;
    padding: 16px;
  }

  body.theme-v2 .v2-card-title {
    font-size: 18px;
  }
}

/* ==========================================================================
   Secondary navigation (web + mobile) and the "More" sheet
   One pill bar under the header on every screen size. No floating bottom bar.
   ========================================================================== */
body.theme-v2 .secondary-nav {
  position: static !important;
  width: 100%;
  height: auto !important;
  display: block !important;
  padding: 0 !important;
  background: var(--v2-nav-bg) !important;
  border: 0 !important;
  border-bottom: 1px solid var(--v2-sep) !important;
  box-shadow: none !important;
  overflow: visible !important;
  pointer-events: auto !important;
}

body.theme-v2 .secondary-nav-content {
  position: relative;
  width: auto !important;
  max-width: 1240px !important;
  height: auto !important;
  margin: 0 auto !important;
  padding: 8px 24px !important;
  display: flex !important;
  flex-direction: row;
  align-items: center !important;
  gap: 4px !important;
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  overflow-x: auto !important;
  overflow-y: hidden !important;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
  scroll-snap-type: x proximity;
}

body.theme-v2 .secondary-nav-content::-webkit-scrollbar {
  display: none;
}

body.theme-v2 .secondary-nav .nav-section {
  display: flex !important;
  align-items: center;
  gap: 4px !important;
  flex: none;
}

body.theme-v2 .secondary-nav .nav-item {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 6px !important;
  flex: none !important;
  width: auto !important;
  min-width: 0 !important;
  height: 40px !important;
  padding: 0 16px !important;
  border: 0 !important;
  border-radius: 999px !important;
  background: transparent !important;
  color: var(--v2-ink-2) !important;
  font-family: var(--font-body) !important;
  font-size: 14px !important;
  font-weight: 600 !important;
  line-height: 1;
  text-decoration: none;
  white-space: nowrap;
  box-shadow: none !important;
  scroll-snap-align: start;
  transition: background .15s ease, color .15s ease;
}

body.theme-v2 .secondary-nav .nav-item span:not(.ni) {
  display: inline !important;
  font-size: inherit !important;
  font-weight: inherit !important;
}

body.theme-v2 .secondary-nav .nav-item .ni {
  display: none !important;
}

body.theme-v2 .secondary-nav .nav-item:hover {
  background: var(--v2-hover) !important;
  color: var(--v2-ink) !important;
  transform: none;
}

body.theme-v2 .secondary-nav .nav-item.active,
body.theme-v2 .secondary-nav .nav-item[aria-current="page"] {
  background: var(--v2-pill-bg) !important;
  color: var(--v2-pill-fg) !important;
  font-weight: 700 !important;
}

body.theme-v2 .secondary-nav .nav-item.active span:not(.ni) {
  font-weight: 700 !important;
}

body.theme-v2 .secondary-nav .nav-item:focus-visible {
  outline: 2px solid var(--v2-berry);
  outline-offset: 2px;
}

/* Stats stays in the bar on mobile now */
body.theme-v2 .secondary-nav-content [data-page="stats"],
body.theme-v2 .secondary-nav-content a[href*="stats.html"] {
  display: inline-flex !important;
}

/* More button: label + chevron */
body.theme-v2 .secondary-nav .nav-item-more {
  cursor: pointer;
  border: 1px solid var(--v2-line-strong) !important;
  background: transparent !important;
  margin-left: 4px;
}

body.theme-v2 .secondary-nav .nav-item-more .ni {
  display: inline-block !important;
  font-size: 16px !important;
  opacity: 0.8;
  margin: 0 !important;
}

body.theme-v2 .secondary-nav .nav-item-more .nav-more-icon-mobile {
  display: none !important;
}

body.theme-v2 .secondary-nav .nav-item-more.active,
body.theme-v2 #navMoreBtn.active {
  background: var(--v2-seg-on) !important;
  color: var(--v2-ink) !important;
  border-color: var(--v2-ink) !important;
}

body.theme-v2 #navMoreBtn.active .nav-more-icon-desktop {
  transform: rotate(180deg);
}

/* Header stays sticky as one unit; no bottom padding for a fixed bar any more */
body.theme-v2 .layout,
body.theme-v2 {
  padding-bottom: 0;
}

/* ---- "More" sheet ------------------------------------------------------ */
body.theme-v2 .nav-more-backdrop {
  background: rgba(35, 22, 22, 0.45);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

body.theme-v2 .nav-more-sheet {
  background: var(--v2-bg) !important;
  color: var(--v2-ink);
  border: 0 !important;
  box-shadow: 0 24px 60px -12px rgba(35, 22, 22, 0.35) !important;
  font-family: var(--font-body);
}

body.theme-v2 .nav-more-header {
  border-bottom: 1px solid var(--v2-sep) !important;
  background: transparent !important;
}

body.theme-v2 .nav-more-title {
  font-family: var(--font-display) !important;
  font-size: 24px;
  font-weight: 700;
  letter-spacing: -0.01em;
  color: var(--v2-ink) !important;
}

body.theme-v2 .nav-more-subtitle {
  font-size: 13px;
  color: var(--v2-muted) !important;
}

body.theme-v2 .nav-more-close {
  border-radius: 10px;
  background: transparent !important;
  color: var(--v2-ink-2) !important;
  border: 0 !important;
  min-width: 44px;
  min-height: 44px;
}

body.theme-v2 .nav-more-close:hover {
  background: var(--v2-hover) !important;
}

body.theme-v2 .nav-more-handle {
  background: var(--v2-line-strong) !important;
}

body.theme-v2 .nav-more-sec-title {
  font-family: var(--font-body);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--v2-muted) !important;
}

body.theme-v2 .nav-more-card {
  background: var(--v2-card) !important;
  border: 2px solid transparent !important;
  border-radius: 14px !important;
  box-shadow: none !important;
  min-height: 56px;
}

body.theme-v2 .nav-more-card:hover {
  border-color: var(--v2-line-strong) !important;
  transform: none;
}

body.theme-v2 .nav-more-card.active {
  background: var(--v2-card) !important;
  border-color: var(--v2-ink) !important;
}

body.theme-v2 .nav-more-icon-wrap {
  background: var(--v2-tint) !important;
  color: var(--v2-berry) !important;
  border-radius: 12px;
}

body.theme-v2 .nav-more-name {
  font-family: var(--font-body);
  font-size: 15px;
  font-weight: 700;
  color: var(--v2-ink) !important;
}

body.theme-v2 .nav-more-desc {
  font-size: 13px;
  color: var(--v2-muted) !important;
}

body.theme-v2 .nav-more-badge {
  background: var(--v2-green-bg) !important;
  color: var(--v2-green-fg) !important;
  border: 0 !important;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
}

body.theme-v2 .nav-more-text-link {
  color: var(--v2-ink-2) !important;
  font-size: 14px;
}

body.theme-v2 .nav-more-text-link.active {
  color: var(--v2-berry) !important;
  font-weight: 700;
}

@media (min-width: 769px) {
  body.theme-v2 .nav-more-sheet {
    border-radius: 20px !important;
    max-width: 1240px;
  }
}

@media (max-width: 768px) {
  body.theme-v2 .secondary-nav-content {
    padding: 6px 12px !important;
  }

  body.theme-v2 .secondary-nav .nav-item {
    padding: 0 14px !important;
    font-size: 13px !important;
  }

  body.theme-v2 .nav-more-sheet {
    border-radius: 24px 24px 0 0 !important;
  }

  body.theme-v2 .secondary-nav .nav-item-more .nav-more-icon-desktop {
    display: inline-block !important;
  }

  body.theme-v2 .nav-more-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  body.theme-v2 .nav-more-card {
    min-width: 0;
  }

  body.theme-v2 .nav-more-text {
    min-width: 0;
  }

  /* Keep the floating mail button clear of the sheet */
  body.theme-v2 .page-content {
    padding-block: 0;
  }
}

@media (max-width: 480px) {
  body.theme-v2 .nav-more-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* ---- KPI tiles: tinted gradient backgrounds ---------------------------- */
body.theme-v2 .kpi {
  --tint: var(--kpi-color, #A35563);
  background:
    linear-gradient(135deg,
      color-mix(in srgb, var(--tint) 16%, var(--v2-card)) 0%,
      color-mix(in srgb, var(--tint) 5%, var(--v2-card)) 100%) !important;
  border: 1px solid color-mix(in srgb, var(--tint) 35%, var(--v2-card)) !important;
  box-shadow: none !important;
}

body.theme-v2 .kpi .kpi-label {
  color: color-mix(in srgb, var(--tint) 55%, var(--v2-ink)) !important;
}

body.theme-v2 .tcard {
  --tint: #A35563;
}

body.theme-v2 .tcard-mostwin {
  --tint: #1E5AC8;
}

body.theme-v2 .tcard-majority {
  --tint: #A67C00;
}

body.theme-v2 .tcard-deposit {
  --tint: #D0202A;
}

body.theme-v2 .tcard-closest {
  --tint: #1E7F55;
}

body.theme-v2 .tcard {
  background:
    linear-gradient(135deg,
      color-mix(in srgb, var(--tint) 16%, var(--v2-card)) 0%,
      color-mix(in srgb, var(--tint) 5%, var(--v2-card)) 100%) !important;
  border: 1px solid color-mix(in srgb, var(--tint) 35%, var(--v2-card)) !important;
  box-shadow: none !important;
}

body.theme-v2 .tcard .tcard-label {
  color: color-mix(in srgb, var(--tint) 55%, var(--v2-ink)) !important;
}

body.theme-v2 .kpi:hover,
body.theme-v2 .tcard:hover {
  box-shadow: none !important;
  transform: none;
}

/* ==========================================================================
   Form controls: one style for every dropdown and search box
   ========================================================================== */
body.theme-v2 {
  --ctl-h: 44px;
  --ctl-radius: 12px;
  --ctl-border: var(--v2-line-strong);
  --chev: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236B5A55' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  --mag: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%236B5A55' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M21 21l-4.5-4.5'/%3E%3C/svg%3E");
}

/* shared box */
body.theme-v2 :is(select, input[type="text"], input[type="search"], input:not([type]), .search-input-v2, .select-styled, .mla-select, .mla-search, .vsb-select, .vsb-search) {
  box-sizing: border-box !important;
  height: var(--ctl-h) !important;
  min-height: var(--ctl-h) !important;
  padding: 0 14px !important;
  border: 1px solid var(--ctl-border) !important;
  border-radius: var(--ctl-radius) !important;
  background-color: var(--v2-card) !important;
  color: var(--v2-ink) !important;
  font-family: var(--font-body) !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  line-height: 1.2 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  box-shadow: none !important;
  outline: none;
  transition: border-color .15s ease, box-shadow .15s ease;
}

body.theme-v2 :is(select, input, .search-input-v2, .select-styled, .mla-select, .vsb-select, .vsb-search):hover {
  border-color: var(--v2-muted) !important;
}

body.theme-v2 :is(select, input, .search-input-v2, .select-styled, .mla-select, .vsb-select, .vsb-search):focus,
body.theme-v2 :is(select, input, .search-input-v2, .select-styled, .mla-select, .vsb-select, .vsb-search):focus-visible {
  border-color: var(--v2-berry) !important;
  box-shadow: 0 0 0 3px rgba(163, 85, 99, 0.18) !important;
  outline: none;
}

body.theme-v2 :is(select, input)::placeholder {
  color: var(--v2-faint);
  opacity: 1;
  font-weight: 400;
}

/* dropdowns: custom chevron */
body.theme-v2 :is(select, .select-styled, .mla-select, .vsb-select) {
  -webkit-appearance: none !important;
  appearance: none !important;
  padding-right: 38px !important;
  background-image: var(--chev) !important;
  background-repeat: no-repeat !important;
  background-position: right 12px center !important;
  background-size: 16px !important;
  cursor: pointer;
}

body.theme-v2 select option {
  background: var(--v2-card);
  color: var(--v2-ink);
  font-family: var(--font-body);
}

/* search boxes: magnifier */
body.theme-v2 :is(input[type="search"], .search-input-v2, .mla-search, .vsb-search, #constSearch, #resultsTableSearch, #vsSearchInput, #candListSearch) {
  padding-left: 40px !important;
  background-image: var(--mag) !important;
  background-repeat: no-repeat !important;
  background-position: 14px center !important;
  background-size: 18px !important;
}

body.theme-v2 input[type="search"]::-webkit-search-cancel-button {
  cursor: pointer;
}

/* layout of control rows */
body.theme-v2 :is(.filter-bar, .mla-controls, .vsb-toolbar) {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: center;
}

body.theme-v2 :is(.filter-bar, .mla-controls, .vsb-toolbar) :is(select, .select-styled, .mla-select, .vsb-select) {
  flex: 0 1 190px;
  min-width: 150px;
}

body.theme-v2 :is(.filter-bar, .mla-controls, .vsb-toolbar) :is(.search-input-v2, .mla-search, .vsb-search, input) {
  flex: 2 1 260px;
  min-width: 200px;
  max-width: none;
  width: auto;
}

body.theme-v2 .vs-layout .vsb-search,
body.theme-v2 #vsSearchInput {
  width: min(360px, 100%) !important;
}

@media (max-width: 640px) {
  body.theme-v2 :is(.filter-bar, .mla-controls, .vsb-toolbar) :is(select, .select-styled, .mla-select, .vsb-select) {
    flex: 1 1 calc(50% - 6px);
    min-width: 0;
  }

  body.theme-v2 :is(.filter-bar, .mla-controls, .vsb-toolbar) :is(.search-input-v2, .mla-search, .vsb-search, input) {
    flex: 1 1 100%;
    min-width: 0;
  }
}

/* ---- By-poll detail: hero metric cards -- tinted gradient, no border/shadow */
body.theme-v2 .hero-metrics-deck .hero-metric-card {
  --tint: #A35563;
  border: 0 !important;
  box-shadow: none !important;
  background: linear-gradient(135deg,
      color-mix(in srgb, var(--tint) 16%, var(--v2-card)) 0%,
      color-mix(in srgb, var(--tint) 5%, var(--v2-card)) 100%) !important;
}

body.theme-v2 .hero-metrics-deck .hero-metric-card.card-vacant {
  --tint: #A35563;
}

body.theme-v2 .hero-metrics-deck .hero-metric-card.card-electors {
  --tint: #1E5AC8;
}

body.theme-v2 .hero-metrics-deck .hero-metric-card.card-stations {
  --tint: #A67C00;
}

body.theme-v2 .hero-metrics-deck .hero-metric-card.card-candidates {
  --tint: #1E7F55;
}

body.theme-v2 .hero-metrics-deck .hero-metric-card:hover {
  box-shadow: none !important;
  transform: none;
}

/* ==========================================================================
   Header: fully opaque, nothing shows through or above it
   ========================================================================== */
body.theme-v2 .header-group {
  top: 0 !important;
  isolation: isolate;
  background: var(--v2-dark) !important;
}

/* extends the header colour upward so scrolled content can never peek above it */
body.theme-v2 .header-group::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 100%;
  height: 120px;
  background: var(--v2-dark);
  pointer-events: none;
}

body.theme-v2 .global-header {
  position: relative;
  z-index: 2;
  flex: none !important;
  height: auto !important;
  min-height: 56px;
  background: var(--v2-dark) !important;
}

body.theme-v2 .secondary-nav {
  flex: none !important;
  top: auto !important;
  bottom: auto !important;
  left: auto !important;
  right: auto !important;
  transform: none !important;
  margin: 0 !important;
}

body.theme-v2 .secondary-nav {
  position: relative !important;
  z-index: 1;
  background: var(--v2-nav-bg) !important;
}

/* sticky table heads must stay below the header */
body.theme-v2 th {
  z-index: 1;
}

/* ==========================================================================
   Tables on small screens: rows become cards (no sideways scrolling)
   ========================================================================== */
@media (max-width: 720px) {
  body.theme-v2 .global-header {
    min-height: 56px;
  }

  body.theme-v2 .global-header>.container {
    padding-top: 8px;
    padding-bottom: 8px;
  }

  body.theme-v2 :is(#resultsFullTable, .bypolls-table, #nominationsTable) {
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    table-layout: auto !important;
  }

  body.theme-v2 :is(#resultsFullTable, .bypolls-table, #nominationsTable) thead {
    display: none !important;
  }

  body.theme-v2 :is(#resultsFullTable, .bypolls-table, #nominationsTable) tbody {
    display: block !important;
    width: 100%;
  }

  body.theme-v2 :is(#resultsFullTable, .bypolls-table, #nominationsTable) tr {
    display: grid !important;
    column-gap: 10px;
    row-gap: 3px;
    padding: 14px 16px;
    border-top: 1px solid var(--v2-sep);
    align-items: center;
  }

  body.theme-v2 :is(#resultsFullTable, .bypolls-table, #nominationsTable) tbody tr:first-child {
    border-top: 0;
  }

  body.theme-v2 :is(#resultsFullTable, .bypolls-table, #nominationsTable) td {
    display: block !important;
    padding: 0 !important;
    border: 0 !important;
    min-width: 0;
    text-align: left;
    font-size: 14px;
    white-space: normal !important;
    background: transparent !important;
  }

  body.theme-v2 :is(#resultsFullTable, .bypolls-table, #nominationsTable) td[colspan] {
    grid-column: 1 / -1;
  }

  body.theme-v2 .bypolls-table-wrap,
  body.theme-v2 .data-table-responsive,
  body.theme-v2 .table-responsive {
    overflow: visible !important;
    height: auto !important;
    max-height: none !important;
  }

  /* Results: No | Constituency + candidate | Margin + party; alliance below */
  body.theme-v2 #resultsFullTable tr {
    grid-template-columns: 30px minmax(0, 1fr) auto;
  }

  body.theme-v2 #resultsFullTable td:nth-child(1) {
    grid-area: 1 / 1 / 3 / 2;
    align-self: start;
    font-family: var(--font-mono);
    font-size: 13px;
    color: var(--v2-faint);
    text-align: left !important;
  }

  body.theme-v2 #resultsFullTable td:nth-child(2) {
    grid-area: 1 / 2;
  }

  body.theme-v2 #resultsFullTable td:nth-child(3) {
    grid-area: 2 / 2;
    font-size: 13px;
    color: var(--v2-ink-2);
    font-weight: 600;
  }

  body.theme-v2 #resultsFullTable td:nth-child(5) {
    grid-area: 1 / 3;
    text-align: right !important;
  }

  body.theme-v2 #resultsFullTable td:nth-child(4) {
    grid-area: 2 / 3;
    text-align: right !important;
  }

  body.theme-v2 #resultsFullTable td:nth-child(4)>div {
    justify-content: flex-end !important;
  }

  body.theme-v2 #resultsFullTable td:nth-child(6) {
    grid-area: 3 / 2 / 4 / 4;
    text-align: left !important;
    margin-top: 4px;
  }

  body.theme-v2 #resultsFullTable .v2-margin-bar {
    display: none;
  }

  body.theme-v2 #resultsFullTable .v2-margin-num {
    width: auto;
    font-weight: 700;
  }

  /* By-polls: constituency + status, then previous MLA, then reason */
  body.theme-v2 .bypolls-table tr {
    grid-template-columns: minmax(0, 1fr) auto;
  }

  body.theme-v2 .bypolls-table td:nth-child(1) {
    grid-area: 1 / 1;
  }

  body.theme-v2 .bypolls-table td:nth-child(4) {
    grid-area: 1 / 2;
    text-align: right;
  }

  body.theme-v2 .bypolls-table td:nth-child(2) {
    grid-area: 2 / 1 / 3 / 3;
    margin-top: 4px;
  }

  body.theme-v2 .bypolls-table td:nth-child(3) {
    grid-area: 3 / 1 / 4 / 3;
    margin-top: 2px;
  }

  body.theme-v2 .bypolls-table tr.table-group-header-row {
    display: block !important;
    padding: 0;
    border-top: 0;
  }

  body.theme-v2 .bypolls-table tr.table-group-header-row td {
    padding: 10px 16px !important;
    background: var(--v2-soft) !important;
  }

  /* Nominations: # | name + party | gender + alliance; symbol below */
  body.theme-v2 #nominationsTable tr {
    grid-template-columns: 28px minmax(0, 1fr) auto;
  }

  body.theme-v2 #nominationsTable td:nth-child(1) {
    grid-area: 1 / 1 / 3 / 2;
    align-self: start;
    font-family: var(--font-mono);
    font-size: 13px;
    color: var(--v2-faint);
  }

  body.theme-v2 #nominationsTable td:nth-child(2) {
    grid-area: 1 / 2;
    font-weight: 700;
  }

  body.theme-v2 #nominationsTable td:nth-child(6) {
    grid-area: 1 / 3;
    text-align: right;
  }

  body.theme-v2 #nominationsTable td:nth-child(3) {
    grid-area: 2 / 2;
  }

  body.theme-v2 #nominationsTable td:nth-child(4) {
    grid-area: 2 / 3;
    text-align: right;
    font-size: 13px;
    color: var(--v2-muted);
  }

  body.theme-v2 #nominationsTable td:nth-child(5) {
    grid-area: 3 / 2 / 4 / 4;
    font-size: 13px;
    color: var(--v2-muted);
  }

  body.theme-v2 #nominationsTable td:nth-child(5)::before {
    content: "Symbol: ";
    font-weight: 600;
    letter-spacing: 0.02em;
  }

  /* Alliance ledger has merged cells, so it scrolls sideways inside its card with a hint */
  body.theme-v2 .scroller {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  body.theme-v2 .ledger-table {
    min-width: 720px;
    font-size: 13px;
  }

  body.theme-v2 .alliances-ledger-wrap::after {
    content: "Swipe sideways to see every column →";
    display: block;
    padding: 10px 16px 14px;
    font-size: 12px;
    color: var(--v2-muted);
  }

  /* filter rows */
  body.theme-v2 :is(.filter-bar, .mla-controls, .vsb-toolbar) :is(.search-input-v2, .mla-search, .vsb-search, input) {
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    flex: 1 1 100%;
  }
}

@media (max-width: 720px) {
  body.theme-v2 .alliance-tabs {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    width: 100%;
  }

  body.theme-v2 .alliance-tab {
    flex-direction: column;
    gap: 2px;
    padding: 8px 10px;
    min-height: 52px;
    text-align: center;
    font-size: 13px;
  }

  body.theme-v2 .alliance-tab .tab-label {
    font-size: 13px;
    font-weight: 700;
  }

  body.theme-v2 .alliance-tab .tab-badge {
    font-size: 10px;
    padding: 1px 8px;
    border-radius: 999px;
  }

  body.theme-v2 .alliance-mode-bar {
    margin-bottom: 12px;
  }
}


/* ==========================================================================
   DARK MODE  (html.dark-mode is toggled by the header button / OS setting)
   ========================================================================== */
html.dark-mode {
  background: #151010;
  color-scheme: dark;
}

html.dark-mode body.theme-v2 {
  color-scheme: dark;
  --v2-bg: #151010;
  --v2-card: #211818;
  --v2-ink: #F3ECE6;
  --v2-ink-2: #D3C7BE;
  --v2-muted: #A99A90;
  --v2-faint: #8F7F76;
  --v2-line: #3A2B2B;
  --v2-line-strong: #5B4848;
  --v2-dark: #0D0909;
  --v2-berry: #E4949F;
  --v2-berry-dark: #F2B1BA;
  --v2-berry-fill: #B35468;
  --v2-berry-fill-hover: #C9677C;
  --v2-nav-bg: #1C1414;
  --v2-soft: #2B2020;
  --v2-hair: #352727;
  --v2-tint: #3A2830;
  --v2-row-hover: #281D1D;
  --v2-green-bg: #173325;
  --v2-green-fg: #7FD3A8;
  --v2-pill-bg: #F3ECE6;
  --v2-pill-fg: #151010;
  --v2-seg-on: #3A2B2B;
  --v2-hover: rgba(255, 255, 255, 0.08);
  --v2-hover-soft: rgba(255, 255, 255, 0.05);
  --v2-shadow: rgba(0, 0, 0, 0.5);
  --v2-card-border: #3A2C2C;
  --v2-sep: rgba(255, 255, 255, 0.09);
  --v2-sep-soft: rgba(255, 255, 255, 0.06);
  --ctl-border: #5B4848;
  --chev: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23A99A90' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  --mag: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23A99A90' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M21 21l-4.5-4.5'/%3E%3C/svg%3E");
  /* legacy variables used by older rules */
  --bg: #151010;
  --surface: #211818;
  --surface-alt: #2B2020;
  --border: var(--v2-sep);
  --text: #F3ECE6;
  --text-2: #D3C7BE;
  --text-3: #A99A90;
}

/* header already dark: keep a visible edge against the dark page */
html.dark-mode body.theme-v2 .header-group {
  border-bottom: 1px solid #2A1E1E;
}

html.dark-mode body.theme-v2 .secondary-nav {
  border-bottom-color: #2A1E1E !important;
}

/* party text on tinted headings: lighter shades for contrast on dark */
html.dark-mode body.theme-v2 .hung-stat-card:nth-child(1) .hung-stat-header {
  color: #E8C24F;
}

html.dark-mode body.theme-v2 .hung-stat-card:nth-child(2) .hung-stat-header {
  color: #FF8F88;
}

html.dark-mode body.theme-v2 .hung-stat-card:nth-child(3) .hung-stat-header {
  color: #86D493;
}

html.dark-mode body.theme-v2 .hung-threshold-text,
html.dark-mode body.theme-v2 .hung-center-num {
  fill: var(--v2-ink);
}

html.dark-mode body.theme-v2 .badge-tvk {
  background: #A67C00 !important;
  color: #fff !important;
}

/* inputs / selects */
html.dark-mode body.theme-v2 :is(select, input[type="text"], input[type="search"], input:not([type]), .search-input-v2, .select-styled, .mla-select, .vsb-select, .vsb-search) {
  background-color: var(--v2-card) !important;
  color: var(--v2-ink) !important;
}

html.dark-mode body.theme-v2 :is(select, input)::placeholder {
  color: #8F7F76;
}

html.dark-mode body.theme-v2 select option {
  background: #211818;
  color: #F3ECE6;
}

/* tinted KPI tiles: deeper tint over the dark card */
html.dark-mode body.theme-v2 .kpi,
html.dark-mode body.theme-v2 .tcard {
  background: linear-gradient(135deg,
      color-mix(in srgb, var(--tint) 26%, var(--v2-card)) 0%,
      color-mix(in srgb, var(--tint) 8%, var(--v2-card)) 100%) !important;
  border-color: color-mix(in srgb, var(--tint) 45%, var(--v2-card)) !important;
}

html.dark-mode body.theme-v2 .kpi .kpi-label,
html.dark-mode body.theme-v2 .tcard .tcard-label {
  color: color-mix(in srgb, var(--tint) 45%, var(--v2-ink)) !important;
}

html.dark-mode body.theme-v2 .hero-metrics-deck .hero-metric-card {
  background: linear-gradient(135deg,
      color-mix(in srgb, var(--tint) 26%, var(--v2-card)) 0%,
      color-mix(in srgb, var(--tint) 8%, var(--v2-card)) 100%) !important;
}

html.dark-mode body.theme-v2 .hero-metric-card :is(.metric-label, [class*="label"], [class*="lbl"]) {
  color: var(--v2-ink-2);
}

/* tables & cards: legacy text colours inside rows */
html.dark-mode body.theme-v2 :is(.data-table, .bypolls-table, .data-table-modern) td {
  color: var(--v2-ink);
}

html.dark-mode body.theme-v2 :is(.const-card, .bearer-card, .mla-card, .bypoll-seat-card, .gender-ratio-box, .data-table-card) {
  background: var(--v2-card) !important;
  color: var(--v2-ink);
}

html.dark-mode body.theme-v2 .bearer-img-container {
  background: linear-gradient(180deg, #2E2222, #261B1B);
}

html.dark-mode body.theme-v2 .executive-hero .hero-img-container {
  background: #2E2616;
}

html.dark-mode body.theme-v2 .seat-countdown-badge,
html.dark-mode body.theme-v2 .active-bypolls-count-badge {
  background: var(--v2-green-bg) !important;
  color: var(--v2-green-fg) !important;
}

html.dark-mode body.theme-v2 .seat-context-strip,
html.dark-mode body.theme-v2 .hero-metric-card {
  color: var(--v2-ink);
}

html.dark-mode body.theme-v2 .v2-countdown {
  background: #0D0909;
  border: 1px solid #2A1E1E;
}

html.dark-mode body.theme-v2 .v2-tile--dark {
  background: #0D0909;
  border: 1px solid #2A1E1E;
}

html.dark-mode body.theme-v2 .v2-margin-bar,
html.dark-mode body.theme-v2 .vsb-bar-track {
  background: #2B2020;
}

/* More sheet */
html.dark-mode body.theme-v2 .nav-more-sheet {
  background: #1C1414 !important;
  color: var(--v2-ink);
}

html.dark-mode body.theme-v2 .nav-more-backdrop {
  background: rgba(0, 0, 0, 0.6);
}

html.dark-mode body.theme-v2 .nav-more-icon-wrap {
  background: var(--v2-tint) !important;
}

html.dark-mode body.theme-v2 .nav-more-card.active {
  border-color: var(--v2-ink) !important;
}

/* constituency page tokens */
html.dark-mode body.theme-v2 {
  --c-bg: #151010;
  --c-surface: #211818;
  --c-surface-muted: #2B2020;
  --c-line: var(--v2-sep);
  --c-line-soft: var(--v2-sep);
  --c-ink: #F3ECE6;
  --c-ink-2: #D3C7BE;
  --c-ink-3: #A99A90;
}

html.dark-mode body.theme-v2 .c-card,
html.dark-mode body.theme-v2 .c-figure {
  background: var(--v2-card);
}

/* charts (ApexCharts) text */
html.dark-mode body.theme-v2 .apexcharts-text,
html.dark-mode body.theme-v2 .apexcharts-legend-text {
  fill: #D3C7BE !important;
  color: #D3C7BE !important;
}

html.dark-mode body.theme-v2 .apexcharts-gridline {
  stroke: #352727;
}

/* 404 + misc */
html.dark-mode body.theme-v2 .footer,
html.dark-mode body.theme-v2 #footerEl {
  color: var(--v2-muted);
}

html.dark-mode body.theme-v2 img.party-flag-img {
  opacity: 0.95;
}

/* text colours that legacy rules left dark (both themes) */
body.theme-v2 .comp-title,
body.theme-v2 .comp-col-total,
body.theme-v2 .comp-item-count {
  color: var(--v2-ink) !important;
}

body.theme-v2 .comp-col:last-child .comp-col-heading {
  color: var(--v2-muted) !important;
}

body.theme-v2 .hung-btn-secondary {
  color: var(--v2-ink) !important;
  border-color: var(--v2-line-strong) !important;
  background: transparent !important;
}

body.theme-v2 .hung-btn-secondary:hover {
  background: var(--v2-hover-soft) !important;
}

body.theme-v2 .comp-seg-text {
  color: #fff;
}

body.theme-v2 .comp-seg.seg-supp .comp-seg-text {
  color: #231616;
}

/* constituency page party text colours, lifted for dark */
html.dark-mode body.theme-v2 {
  --inc: #6FA8F0;
  --ntk: #F0646A;
  --cpi: #F0646A;
  --cpim: #F0646A;
  --iuml: #4CC24C;
  --admk: #6FD07F;
  --dmk: #F27B6E;
  --tvk-text: #E8C24F;
  --bsp: #7C9BEA;
}

html.dark-mode body.theme-v2 .c-toggle {
  color: var(--v2-berry);
}

/* ==========================================================================
   Light mode contrast (WCAG AA 4.5:1 for text)
   ========================================================================== */
html:not(.dark-mode) body.theme-v2 {
  --tvk: #876600;
  /* constituency page: gold fills carrying white text */
}

html:not(.dark-mode) body.theme-v2 .c-rank {
  color: var(--v2-muted);
}

html:not(.dark-mode) body.theme-v2 .c-winner-band,
html:not(.dark-mode) body.theme-v2 .c-live-dot {
  color: #fff;
}

html:not(.dark-mode) body.theme-v2 .comp-seg.seg-tvk {
  background: #876600;
}

html:not(.dark-mode) body.theme-v2 .comp-seg.seg-admk {
  background: #43A047;
}

html:not(.dark-mode) body.theme-v2 .comp-seg.seg-spa {
  background: #E53935;
}

/* By-polls: status colours that were pale */
html:not(.dark-mode) body.theme-v2 .bypolls-kpi-item[data-filter="announced"] .bypolls-kpi-val,
html:not(.dark-mode) body.theme-v2 .table-group-title[style*="059669"],
html:not(.dark-mode) body.theme-v2 .poll-date {
  color: #047857 !important;
}

html:not(.dark-mode) body.theme-v2 .bypolls-kpi-item[data-filter="vacant"] .bypolls-kpi-val,
html:not(.dark-mode) body.theme-v2 .table-group-title[style*="ea580c"],
html:not(.dark-mode) body.theme-v2 .date-badge-vacant {
  color: #B3400A !important;
}

html:not(.dark-mode) body.theme-v2 .bypolls-kpi-item[data-filter="results"] .bypolls-kpi-val {
  color: #1D4ED8 !important;
}

html:not(.dark-mode) body.theme-v2 .context-val.reason-text,
html:not(.dark-mode) body.theme-v2 .reason-chip.chip-defect {
  color: #7E22CE !important;
}

html:not(.dark-mode) body.theme-v2 .reason-chip.chip-dual {
  color: #1D4ED8 !important;
}


/* ==========================================================================
   Card borders
   - white / solid cards: 1px tinted-grey border
   - gradient cards: 1px border in the matching tint
   ========================================================================== */
body.theme-v2 :is(.v2-tile:not(.v2-tile--dark), .v2-card, .astat-card, .hung-stat-card, .assembly-comp-card, .stats-banner-card,
  .card, .chart-card, .stat-card, .const-card, .bearer-card, .mla-card, .bypoll-seat-card, .bypoll-hero,
  .gender-ratio-box, .data-table-card, .bypolls-table-wrap, .table-responsive, .cabinet-summary-card,
  .executive-hero, .c-card, .c-figure, .alliances-ledger-wrap, .gov-formation-card, .results-view-card,
  .nav-more-card, .data-table-responsive, .tldr, .vs-tldr) {
  border: 1px solid var(--v2-card-border) !important;
}

body.theme-v2 #districtsGrid>* {
  border: 1px solid var(--v2-card-border) !important;
}

body.theme-v2 .bypolls-kpi-item:not(.active) {
  border-color: var(--v2-card-border) !important;
}

body.theme-v2 .results-view-card {
  border-left: 4px solid var(--v2-berry) !important;
}

body.theme-v2 .results-view-card.card-voteshare {
  border-left-color: #A67C00 !important;
}

body.theme-v2 .nav-more-card:hover {
  border-color: var(--v2-line-strong) !important;
}

body.theme-v2 .nav-more-card.active {
  border-color: var(--v2-ink) !important;
}

/* the inner white box of a card that already has a bordered parent stays borderless */
body.theme-v2 :is(.card, .c-card, .data-table-card, .executive-hero, .alliances-ledger-wrap) :is(.table-responsive, .data-table-responsive, .bypolls-table-wrap, .card) {
  border: 0 !important;
}

/* gradient cards: border in the equivalent tint */
body.theme-v2 .hero-metrics-deck .hero-metric-card {
  border: 1px solid color-mix(in srgb, var(--tint) 35%, var(--v2-card)) !important;
}

html.dark-mode body.theme-v2 .hero-metrics-deck .hero-metric-card {
  border-color: color-mix(in srgb, var(--tint) 45%, var(--v2-card)) !important;
}

/* Vote share bar list: very light row dividers */
body.theme-v2 #vsbList .vsb-row {
  border-bottom: 1px solid var(--v2-sep-soft);
}

body.theme-v2 #vsbList .vsb-row:last-child {
  border-bottom: 0;
}

/* ---- Gradient cards + pills: hung-stat-grid & assembly-today-stats-grid ---- */
body.theme-v2 .hung-stat-card:nth-child(1) {
  --tint: #A67C00;
}

body.theme-v2 .hung-stat-card:nth-child(2) {
  --tint: #E53935;
}

body.theme-v2 .hung-stat-card:nth-child(3) {
  --tint: #43A047;
}

body.theme-v2 .astat-card:nth-child(1) {
  --tint: #1E5AC8;
}

body.theme-v2 .astat-card:nth-child(2) {
  --tint: #6B5A55;
}

body.theme-v2 .astat-card:nth-child(3) {
  --tint: #A67C00;
}

body.theme-v2 .astat-card:nth-child(4) {
  --tint: #A35563;
}

body.theme-v2 .hung-stat-card,
body.theme-v2 .astat-card {
  background: linear-gradient(145deg,
      color-mix(in srgb, var(--tint) 16%, var(--v2-card)) 0%,
      color-mix(in srgb, var(--tint) 5%, var(--v2-card)) 100%) !important;
  border: 1px solid color-mix(in srgb, var(--tint) 35%, var(--v2-card)) !important;
  box-shadow: none !important;
}

body.theme-v2 .hung-stat-header,
body.theme-v2 .astat-card .astat-label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  background: linear-gradient(90deg,
      color-mix(in srgb, var(--tint) 30%, var(--v2-card)),
      color-mix(in srgb, var(--tint) 12%, var(--v2-card)));
  color: color-mix(in srgb, var(--tint) 60%, var(--v2-ink)) !important;
}

body.theme-v2 .astat-card .astat-label {
  margin-bottom: 2px;
}

body.theme-v2 .astat-card .astat-link {
  color: color-mix(in srgb, var(--tint) 60%, var(--v2-ink));
}

body.theme-v2 .hung-stat-header {
  white-space: nowrap;
  max-width: 100%;
}

body.theme-v2 .astat-card .astat-label {
  max-width: 100%;
  line-height: 1.3;
}

@media (max-width: 480px) {
  body.theme-v2 .hung-stat-header {
    padding: 3px 8px;
    font-size: 10.5px;
  }
}

/* astat labels: plain tinted text, no pill gradient */
body.theme-v2 .astat-card .astat-label {
  display: block;
  padding: 0;
  border-radius: 0;
  background: none !important;
  font-size: 12px;
  letter-spacing: 0.08em;
  margin-bottom: 0;
}

/* ---- Footer redesign --------------------------------------------------- */
body.theme-v2 .footer,
body.theme-v2 #footerEl {
  max-width: none;
  width: 100%;
  margin: 48px 0 0;
  padding: 0;
  background: var(--v2-nav-bg);
  border-top: 1px solid var(--v2-sep);
  text-align: left;
  color: var(--v2-ink-2);
  font-size: 13px;
}

body.theme-v2 .ft-wrap {
  max-width: 1240px;
  margin: 0 auto;
  padding: 40px 24px 28px;
}

body.theme-v2 .ft-top {
  display: flex;
  justify-content: space-between;
  gap: 40px;
  flex-wrap: wrap;
}

body.theme-v2 .ft-brand {
  max-width: 360px;
}

body.theme-v2 .ft-brand-name {
  font-family: var(--font-display);
  font-size: 22px;
  font-weight: 700;
  color: var(--v2-ink);
}

body.theme-v2 .ft-brand-desc {
  margin: 8px 0 16px;
  font-size: 14px;
  line-height: 1.55;
  color: var(--v2-ink-2);
}

body.theme-v2 .ft-socials {
  display: flex;
  gap: 10px;
}

body.theme-v2 .ft-social {
  width: 38px;
  height: 38px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--v2-card);
  border: 1px solid var(--v2-card-border);
  color: var(--v2-ink-2);
  transition: all .15s;
}

body.theme-v2 .ft-social svg {
  width: 17px;
  height: 17px;
}

body.theme-v2 .ft-social:hover {
  background: var(--v2-berry-fill);
  border-color: var(--v2-berry-fill);
  color: #fff;
}

body.theme-v2 .ft-nav {
  display: flex;
  gap: 56px;
}

body.theme-v2 .ft-col {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

body.theme-v2 .ft-col-title {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--v2-muted);
  margin-bottom: 2px;
}

body.theme-v2 .ft-col a {
  font-size: 14px;
  font-weight: 600;
  color: var(--v2-ink);
  text-decoration: none;
}

body.theme-v2 .ft-col a:hover {
  color: var(--v2-berry);
}

body.theme-v2 .ft-bottom {
  margin-top: 32px;
  padding-top: 20px;
  border-top: 1px solid var(--v2-sep);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}

body.theme-v2 .ft-legal {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 12px;
  color: var(--v2-muted);
}

body.theme-v2 .ft-right {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}

body.theme-v2 .ft-love {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  font-weight: 600;
  color: var(--v2-ink-2);
}

body.theme-v2 .ft-love img {
  height: 13px;
  width: auto;
}

body.theme-v2 .ft-refresh {
  font: inherit;
  font-size: 12px;
  font-weight: 700;
  padding: 7px 14px;
  border-radius: 999px;
  cursor: pointer;
  background: var(--v2-card);
  border: 1px solid var(--v2-card-border);
  color: var(--v2-ink);
}

body.theme-v2 .ft-refresh:hover {
  border-color: var(--v2-berry);
  color: var(--v2-berry);
}

@media (max-width: 720px) {
  body.theme-v2 .ft-wrap {
    padding: 32px 16px 24px;
  }

  body.theme-v2 .ft-top {
    flex-direction: column;
    gap: 28px;
  }

  body.theme-v2 .ft-nav {
    gap: 0;
    width: 100%;
  }

  body.theme-v2 .ft-col {
    flex: 1;
  }

  body.theme-v2 .ft-bottom {
    flex-direction: column;
    align-items: flex-start;
  }
}

body.theme-v2 .ft-wrap {
  padding-bottom: 80px;
}

body.theme-v2 .ft-legal {
  padding-right: 64px;
}

/* ==========================================================================
   Secondary nav v2: icon + label pills, grouped sections, More pinned right
   ========================================================================== */
body.theme-v2 .secondary-nav {
  position: sticky !important;
  top: 0;
  z-index: 40;
  background: color-mix(in srgb, var(--v2-nav-bg) 94%, transparent) !important;
  backdrop-filter: saturate(1.2) blur(10px);
  -webkit-backdrop-filter: saturate(1.2) blur(10px);
}

body.theme-v2 .secondary-nav-content {
  padding: 10px 24px !important;
  gap: 6px !important;
}

body.theme-v2 .secondary-nav .nav-section {
  gap: 4px !important;
  position: relative;
}

body.theme-v2 .secondary-nav .nav-section+.nav-section {
  margin-left: 6px;
  padding-left: 10px;
}

body.theme-v2 .secondary-nav .nav-section+.nav-section::before {
  content: "" !important;
  display: block !important;
  position: absolute;
  left: 0;
  top: 50%;
  width: 1px;
  height: 20px;
  transform: translateY(-50%);
  background: var(--v2-line-strong);
  opacity: .6;
}

body.theme-v2 .secondary-nav .nav-item {
  height: 38px !important;
  padding: 0 14px 0 12px !important;
  gap: 8px !important;
  font-size: 14px !important;
  font-weight: 600 !important;
  transition: background .18s ease, color .18s ease, box-shadow .18s ease, transform .18s ease;
}

body.theme-v2 .secondary-nav .nav-item:not(.nav-item-more) .ni {
  display: inline-block !important;
  width: 17px;
  height: 17px;
  font-size: 17px !important;
  opacity: .65;
  flex: none;
  transition: opacity .18s ease, color .18s ease;
}

body.theme-v2 .secondary-nav .nav-item:hover .ni {
  opacity: 1;
}

body.theme-v2 .secondary-nav .nav-item:hover {
  background: var(--v2-seg-on) !important;
  box-shadow: 0 1px 2px var(--v2-shadow) !important;
}

body.theme-v2 .secondary-nav .nav-item.active,
body.theme-v2 .secondary-nav .nav-item[aria-current="page"] {
  box-shadow: 0 2px 8px rgba(35, 22, 22, .22) !important;
}

body.theme-v2 .secondary-nav .nav-item.active .ni {
  display: inline-block !important;
  opacity: 1;
}

body.theme-v2 .secondary-nav .nav-item-more {
  margin-left: auto !important;
  border: 1px solid var(--v2-line-strong) !important;
  background: var(--v2-seg-on) !important;
  padding: 0 12px 0 16px !important;
  flex-direction: row-reverse;
}

body.theme-v2 .secondary-nav .nav-item-more:hover {
  border-color: var(--v2-ink) !important;
}

@media (max-width: 720px) {
  body.theme-v2 .secondary-nav-content {
    padding: 8px 16px !important;
    gap: 4px !important;
    -webkit-mask-image: linear-gradient(to right, transparent 0, #000 12px, #000 calc(100% - 28px), transparent 100%);
    mask-image: linear-gradient(to right, transparent 0, #000 12px, #000 calc(100% - 28px), transparent 100%);
  }

  body.theme-v2 .secondary-nav .nav-section+.nav-section {
    margin-left: 2px;
    padding-left: 6px;
  }

  body.theme-v2 .secondary-nav .nav-item {
    height: 36px !important;
    padding: 0 12px 0 10px !important;
    gap: 6px !important;
    font-size: 13px !important;
  }

  body.theme-v2 .secondary-nav .nav-item:not(.nav-item-more) .ni {
    width: 16px;
    height: 16px;
    font-size: 16px !important;
  }

  body.theme-v2 .secondary-nav .nav-item-more {
    margin-left: 6px !important;
    padding: 0 10px 0 12px !important;
  }
}

@media (max-width: 720px) {
  body.theme-v2 .secondary-nav-content {
    -webkit-mask-image: linear-gradient(to right, #000 0, #000 calc(100% - 28px), transparent 100%);
    mask-image: linear-gradient(to right, #000 0, #000 calc(100% - 28px), transparent 100%);
  }
}

/* ==========================================================================
   Mobile: app-style bottom tab bar (Home · Results · Constituency · Stats · More)
   ========================================================================== */
@media (max-width: 720px) {
  body.theme-v2 .secondary-nav {
    position: fixed !important;
    top: auto !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    z-index: 900;
    width: 100%;
    background: color-mix(in srgb, var(--v2-card) 92%, transparent) !important;
    backdrop-filter: saturate(1.3) blur(14px);
    -webkit-backdrop-filter: saturate(1.3) blur(14px);
    border: 0 !important;
    border-top: 1px solid var(--v2-sep) !important;
    box-shadow: 0 -6px 20px var(--v2-shadow) !important;
    padding: 0 0 env(safe-area-inset-bottom) !important;
  }

  body.theme-v2 .secondary-nav-content {
    display: grid !important;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 2px !important;
    padding: 6px 8px !important;
    max-width: none !important;
    overflow: visible !important;
    -webkit-mask-image: none;
    mask-image: none;
    scroll-snap-type: none;
  }

  body.theme-v2 .secondary-nav .nav-section {
    display: contents !important;
    margin: 0 !important;
    padding: 0 !important;
  }

  body.theme-v2 .secondary-nav .nav-section+.nav-section {
    margin: 0 !important;
    padding: 0 !important;
  }

  body.theme-v2 .secondary-nav .nav-section+.nav-section::before {
    display: none !important;
  }

  body.theme-v2 .secondary-nav .nav-item[data-page="office-bearers"],
  body.theme-v2 .secondary-nav .nav-item[data-page="bye-elections"] {
    display: none !important;
  }

  body.theme-v2 .secondary-nav .nav-item {
    flex-direction: column !important;
    justify-content: center !important;
    gap: 3px !important;
    height: 52px !important;
    width: 100% !important;
    padding: 0 2px !important;
    border-radius: 14px !important;
    font-size: 11px !important;
    font-weight: 600 !important;
    letter-spacing: .01em;
    box-shadow: none !important;
    background: transparent !important;
    color: var(--v2-muted) !important;
  }

  body.theme-v2 .secondary-nav .nav-item:hover {
    background: transparent !important;
    box-shadow: none !important;
  }

  body.theme-v2 .secondary-nav .nav-item:not(.nav-item-more) .ni {
    width: 22px;
    height: 22px;
    font-size: 22px !important;
    opacity: .85;
  }

  body.theme-v2 .secondary-nav .nav-item.active,
  body.theme-v2 .secondary-nav .nav-item[aria-current="page"] {
    background: var(--v2-tint) !important;
    color: var(--v2-berry) !important;
    box-shadow: none !important;
  }

  body.theme-v2 .secondary-nav .nav-item.active span:not(.ni) {
    font-weight: 700 !important;
  }

  body.theme-v2 .secondary-nav .nav-item-more {
    margin: 0 !important;
    border: 0 !important;
    background: transparent !important;
    flex-direction: column !important;
  }

  body.theme-v2 .secondary-nav .nav-item-more .nav-more-icon-desktop {
    display: none !important;
  }

  body.theme-v2 .secondary-nav .nav-item-more .nav-more-icon-mobile {
    display: inline-block !important;
    width: 22px;
    height: 22px;
    font-size: 22px !important;
  }

  body.theme-v2 .secondary-nav .nav-item-more.active,
  body.theme-v2 #navMoreBtn.active {
    background: var(--v2-tint) !important;
    color: var(--v2-berry) !important;
    border: 0 !important;
  }

  body.theme-v2 #navMoreBtn.active .nav-more-icon-desktop {
    transform: none;
  }

  body.theme-v2 {
    padding-bottom: calc(68px + env(safe-area-inset-bottom)) !important;
  }

  body.theme-v2 .floating-mail-btn {
    bottom: calc(80px + env(safe-area-inset-bottom)) !important;
  }

  body.theme-v2 .ft-wrap {
    padding-bottom: 32px;
  }
}

/* More button when the current page lives inside the More sheet */
body.theme-v2 .secondary-nav .nav-item-more.has-current:not(.active) {
  background: var(--v2-pill-bg) !important;
  color: var(--v2-pill-fg) !important;
  border-color: var(--v2-pill-bg) !important;
  position: relative;
}

body.theme-v2 .secondary-nav .nav-item-more.has-current::after {
  content: "";
  position: absolute;
  top: 7px;
  right: 8px;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--v2-berry);
}

@media (max-width: 720px) {
  body.theme-v2 .secondary-nav .nav-item-more.has-current:not(.active) {
    background: var(--v2-tint) !important;
    color: var(--v2-berry) !important;
    border: 0 !important;
  }

  body.theme-v2 .secondary-nav .nav-item-more.has-current::after {
    top: 6px;
    right: calc(50% - 18px);
    background: var(--v2-berry);
  }

  body.theme-v2 .secondary-nav .nav-item-more.has-current span:not(.ni) {
    font-weight: 700 !important;
  }
}

/* Mobile bottom bar: only the 4 primary tabs + More, whatever extra items a page ships with */
@media (max-width: 720px) {
  body.theme-v2 .secondary-nav .nav-item:not(.nav-item-more):not([data-page="home"]):not([data-page="results"]):not([data-page="constituencies"]):not([data-page="stats"]) {
    display: none !important;
  }

  body.theme-v2 .secondary-nav-content {
    grid-auto-flow: column;
    grid-template-rows: 1fr;
  }
}

/* More sheet: pages in a 2-column grid at every width, compact stacked cards on phones */
@media (max-width: 768px) {
  body.theme-v2 .nav-more-section:not(.nav-more-section-links) .nav-more-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 10px !important;
  }

  body.theme-v2 .nav-more-section:not(.nav-more-section-links) .nav-more-card {
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 10px !important;
    padding: 14px !important;
    min-height: 0;
  }

  body.theme-v2 .nav-more-section:not(.nav-more-section-links) .nav-more-card:nth-child(odd):last-child {
    grid-column: 1 / -1;
  }

  body.theme-v2 .nav-more-section:not(.nav-more-section-links) .nav-more-icon-wrap {
    width: 38px;
    height: 38px;
    flex: none;
  }

  body.theme-v2 .nav-more-section:not(.nav-more-section-links) .nav-more-name {
    font-size: 14px;
  }

  body.theme-v2 .nav-more-section:not(.nav-more-section-links) .nav-more-desc {
    font-size: 12px;
    line-height: 1.35;
  }
}

/* More sheet: no icon tiles on page cards */
body.theme-v2 .nav-more-icon-wrap {
  display: none !important;
}

@media (max-width: 768px) {
  body.theme-v2 .nav-more-section:not(.nav-more-section-links) .nav-more-card {
    gap: 4px !important;
    padding: 14px 16px !important;
  }
}

/* More sheet cards: no white fill. Mobile = mild stroke, desktop = plain rows with separators */
body.theme-v2 .nav-more-card,
body.theme-v2 .nav-more-card.active {
  background: transparent !important;
}

body.theme-v2 .nav-more-card.active .nav-more-name {
  color: var(--v2-berry) !important;
}

@media (max-width: 768px) {
  body.theme-v2 .nav-more-card {
    border: 1px solid var(--v2-sep) !important;
  }

  body.theme-v2 .nav-more-card:hover {
    border-color: var(--v2-line-strong) !important;
    background: var(--v2-hover-soft) !important;
  }

  body.theme-v2 .nav-more-card.active {
    border: 1px solid var(--v2-berry) !important;
  }
}

@media (min-width: 769px) {
  body.theme-v2 .nav-more-card {
    border: 0 !important;
    border-bottom: 1px solid var(--v2-sep) !important;
    border-radius: 0 !important;
    padding-left: 4px !important;
    padding-right: 4px !important;
  }

  body.theme-v2 .nav-more-card:hover {
    background: var(--v2-hover-soft) !important;
    border-bottom-color: var(--v2-sep) !important;
  }

  body.theme-v2 .nav-more-card.active {
    border-bottom: 1px solid var(--v2-berry) !important;
  }
}

@media (min-width: 769px) {

  html body.theme-v2 .nav-more-sheet .nav-more-card,
  html body.theme-v2 .nav-more-sheet .nav-more-card.active,
  html.dark-mode body.theme-v2 .nav-more-sheet .nav-more-card.active {
    border-top: 0 !important;
    border-left: 0 !important;
    border-right: 0 !important;
    border-bottom: 1px solid var(--v2-sep) !important;
    border-radius: 0 !important;
  }

  html body.theme-v2 .nav-more-sheet .nav-more-card.active,
  html.dark-mode body.theme-v2 .nav-more-sheet .nav-more-card.active {
    border-bottom-color: var(--v2-berry) !important;
  }
}

@media (max-width: 768px) {
  html body.theme-v2 .nav-more-sheet .nav-more-card {
    border: 1px solid var(--v2-sep) !important;
  }

  html body.theme-v2 .nav-more-sheet .nav-more-card.active,
  html.dark-mode body.theme-v2 .nav-more-sheet .nav-more-card.active {
    border: 1px solid var(--v2-berry) !important;
  }
}

/* Constituencies filter bar: search on top, district + category side by side */
html body.theme-v2 #constExplorerView .filter-bar {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

html body.theme-v2 #constExplorerView .filter-bar #constSearch {
  grid-column: 1 / -1;
  width: 100%;
  max-width: none;
  flex: none;
}

html body.theme-v2 #constExplorerView .filter-bar select {
  width: 100%;
  min-width: 0;
  max-width: none;
  flex: none;
}

/* ==========================================================================
   Page-to-page smoothness: cross-document view transitions, no entrance delay
   ========================================================================== */
@view-transition {
  navigation: auto;
}

@media (min-width: 721px) {
  body.theme-v2 .header-group {
    view-transition-name: site-header;
  }
}

@media (max-width: 720px) {
  body.theme-v2 .global-header {
    view-transition-name: site-header;
  }

  body.theme-v2 .secondary-nav {
    view-transition-name: site-nav;
  }
}

::view-transition-group(site-header),
::view-transition-group(site-nav) {
  animation-duration: 0s;
}

::view-transition-old(site-header),
::view-transition-new(site-header),
::view-transition-old(site-nav),
::view-transition-new(site-nav) {
  animation: none;
  mix-blend-mode: normal;
}

::view-transition-old(root) {
  animation: 120ms ease-out both v2-fade-out;
}

::view-transition-new(root) {
  animation: 200ms ease-out 40ms both v2-fade-in;
}

@keyframes v2-fade-out {
  to {
    opacity: 0;
  }
}

@keyframes v2-fade-in {
  from {
    opacity: 0;
  }
}

/* Content is visible immediately; the old 0.6s fade-in made every page feel late */
body.theme-v2 .animate-in {
  opacity: 1 !important;
  animation: none !important;
  transform: none !important;
}

@media (prefers-reduced-motion: reduce) {

  ::view-transition-old(root),
  ::view-transition-new(root) {
    animation: none;
  }
}

/* ==========================================================================
   By-polls page (per the Claude Design "By-polls" board)
   ========================================================================== */
/* Seat status cards + split bar */
body.theme-v2 .bk-status {
  padding: 28px 0 0;
}

body.theme-v2 .bk-status .bypolls-kpi-strip {
  margin: 0 !important;
}

body.theme-v2 .bypolls-kpi-item {
  border-radius: 16px !important;
}

body.theme-v2 .bk-lbl {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--v2-muted);
}

body.theme-v2 .bk-dot {
  width: 10px;
  height: 10px;
  border-radius: 3px;
  flex: none;
}

body.theme-v2 .bk-status .bypolls-kpi-val {
  font-size: 40px !important;
  margin-top: 6px;
  color: var(--v2-ink) !important;
}

body.theme-v2 .bk-sub {
  font-size: 13px;
  color: var(--v2-ink-2);
}

body.theme-v2 .bk-bar {
  display: flex;
  gap: 3px;
  height: 10px;
  margin-top: 16px;
  border-radius: 5px;
  overflow: hidden;
  background: var(--v2-hair);
}

body.theme-v2 .bk-bar>div {
  height: 100%;
}

/* Announced header */
body.theme-v2 .active-bypolls-section {
  padding-top: 32px !important;
}

body.theme-v2 .active-bypolls-header {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
  flex-wrap: wrap;
}

body.theme-v2 .active-bypolls-heading {
  font-size: 26px;
}

body.theme-v2 .active-bypolls-count-badge {
  background: none !important;
  color: var(--v2-muted) !important;
  padding: 0 !important;
  font-size: 13px;
  font-weight: 500;
}

/* Vacancy tracker */
body.theme-v2 .bypolls-table-wrap {
  margin-top: 40px;
  border-radius: 20px;
  overflow: hidden;
}

body.theme-v2 .bk-tracker-head {
  padding: 24px 28px 16px;
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
  flex-wrap: wrap;
}

body.theme-v2 .bk-h {
  margin: 0;
  font-family: var(--font-display);
  font-size: 26px;
  font-weight: 700;
}

body.theme-v2 .bk-legend {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  color: var(--v2-muted);
}

body.theme-v2 .bk-legend-bar {
  width: 18px;
  height: 6px;
  border-radius: 3px;
  background: var(--v2-line);
  position: relative;
  overflow: hidden;
  display: inline-block;
}

body.theme-v2 .bk-legend-bar i {
  position: absolute;
  inset: 0 40% 0 0;
  background: var(--v2-berry);
}

body.theme-v2 .bypolls-table {
  min-width: 900px;
}

body.theme-v2 .bypolls-table th:first-child,
body.theme-v2 .bypolls-table td:first-child {
  padding-left: 28px;
}

body.theme-v2 .bypolls-table th:last-child,
body.theme-v2 .bypolls-table td:last-child {
  padding-right: 28px;
  text-align: right;
}

body.theme-v2 .bypolls-table th.bk-col-window {
  width: 26%;
}

body.theme-v2 .bypolls-table td {
  vertical-align: middle;
  padding-top: 16px;
  padding-bottom: 16px;
}

body.theme-v2 .bypolls-table tr.table-group-header-row td {
  background: var(--v2-soft) !important;
  padding: 10px 28px !important;
  border-top: 1px solid var(--v2-sep);
  text-align: left !important;
}

body.theme-v2 .bypolls-table .table-group-title {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
}

body.theme-v2 .bypolls-table .ac-pill {
  font-family: var(--font-mono);
  font-size: 13px;
  color: var(--v2-faint);
  background: none !important;
  border: 0 !important;
  padding: 0 !important;
  min-width: 36px;
}

body.theme-v2 .bypolls-table .constituency-cell {
  display: flex;
  gap: 12px;
  align-items: center;
}

body.theme-v2 .bypolls-table .const-district {
  display: block;
  font-size: 13px;
  color: var(--v2-muted);
  margin-top: 2px;
}

body.theme-v2 .bypolls-table .mla-name {
  display: block;
  font-weight: 600;
}

body.theme-v2 .bk-party {
  display: block;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .06em;
  margin-top: 2px;
}

body.theme-v2 .bk-date {
  display: block;
  font-family: var(--font-mono);
  font-size: 14px;
}

body.theme-v2 .bypolls-table .reason-chip {
  margin-top: 2px;
  font-size: 13px;
  color: var(--v2-muted);
  background: none !important;
  border: 0 !important;
  padding: 0 !important;
}

body.theme-v2 .bk-track {
  height: 8px;
  background: var(--v2-hair);
  border-radius: 4px;
  overflow: hidden;
}

body.theme-v2 .bk-fill {
  height: 100%;
  border-radius: 4px;
}

body.theme-v2 .bk-track-meta {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  margin-top: 6px;
  font-size: 13px;
  color: var(--v2-muted);
}

body.theme-v2 .bk-track-meta b {
  font-family: var(--font-mono);
  color: var(--v2-ink);
}

body.theme-v2 .bk-status-pill {
  display: inline-block;
  padding: 5px 12px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 700;
  white-space: nowrap;
}

body.theme-v2 .bk-status-pill.is-ann {
  background: #E2F1E8;
  color: #17704A;
}

body.theme-v2 .bk-status-pill.is-wait {
  background: #FBE7DC;
  color: #A9441A;
}

html.dark-mode body.theme-v2 .bk-status-pill.is-ann {
  background: rgba(30, 127, 85, .22);
  color: #86D4A9;
}

html.dark-mode body.theme-v2 .bk-status-pill.is-wait {
  background: rgba(194, 80, 30, .25);
  color: #FFB48F;
}

/* Why seats fell vacant */
body.theme-v2 .bk-why {
  margin-top: 24px;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 16px;
}

body.theme-v2 .bk-card {
  background: var(--v2-card);
  border-radius: 20px;
  padding: 24px;
}

body.theme-v2 .bk-card-h {
  margin: 0;
  font-size: 16px;
  font-weight: 700;
  font-family: var(--font-body);
}

body.theme-v2 .bk-why-list {
  margin-top: 16px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

body.theme-v2 .bk-why-row {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  font-size: 14px;
  margin-bottom: 6px;
}

body.theme-v2 .bk-why-row b {
  font-family: var(--font-mono);
}

body.theme-v2 .bk-party-bar {
  margin-top: 16px;
  display: flex;
  gap: 3px;
  height: 32px;
  border-radius: 8px;
  overflow: hidden;
}

body.theme-v2 .bk-party-bar>div {
  color: #fff;
  font-size: 13px;
  font-weight: 700;
  display: flex;
  align-items: center;
  padding-left: 10px;
  white-space: nowrap;
  overflow: hidden;
}

body.theme-v2 .bk-party-note {
  margin: 12px 0 0;
  font-size: 14px;
  line-height: 1.5;
  color: var(--v2-ink-2);
}

body.theme-v2 #page-bye-elections {
  padding-bottom: 24px;
}

/* Mobile: tracker rows */
@media (max-width: 720px) {
  body.theme-v2 .bk-tracker-head {
    padding: 18px 16px 8px;
  }

  body.theme-v2 .bk-h {
    font-size: 22px;
  }

  body.theme-v2 .bypolls-table {
    min-width: 0;
  }

  body.theme-v2 .bypolls-table td:nth-child(1) {
    grid-area: 1 / 1;
    padding-left: 0;
  }

  body.theme-v2 .bypolls-table td:nth-child(5) {
    grid-area: 1 / 2;
    text-align: right;
    padding-right: 0;
  }

  body.theme-v2 .bypolls-table td:nth-child(2) {
    grid-area: 2 / 1 / 3 / 3;
    margin-top: 4px;
  }

  body.theme-v2 .bypolls-table td:nth-child(3) {
    grid-area: 3 / 1 / 4 / 3;
    margin-top: 2px;
  }

  body.theme-v2 .bypolls-table td:nth-child(4) {
    grid-area: 4 / 1 / 5 / 3;
    margin-top: 8px;
    text-align: left;
  }

  body.theme-v2 .bypolls-table tr.table-group-header-row td {
    padding: 10px 16px !important;
  }

  body.theme-v2 .bk-status .bypolls-kpi-val {
    font-size: 30px !important;
  }
}

body.theme-v2 .bypolls-table-wrap {
  height: auto !important;
  max-height: none !important;
  overflow-y: visible !important;
  overflow-x: auto;
}

body.theme-v2 .bypolls-table .const-link {
  color: var(--v2-ink);
}

body.theme-v2 .bypolls-table .const-link:hover {
  color: var(--v2-berry);
}

body.theme-v2 .bypolls-table .reason-chip,
body.theme-v2 .bypolls-table .reason-chip.chip-defect,
body.theme-v2 .bypolls-table .reason-chip.chip-dual {
  color: var(--v2-muted) !important;
}

body.theme-v2 .bk-h {
  font-family: 'DM Serif Display', Georgia, serif !important;
}

body.theme-v2 .bypolls-table .resignation-cell .reason-chip {
  color: var(--v2-muted) !important;
  font-weight: 500 !important;
}

body.theme-v2 .bypolls-table .resignation-cell .reason-chip.chip-defect {
  color: var(--v2-muted) !important;
}

/* Announced seat cards (By-polls board) with constituency-number watermark */
body.theme-v2 .active-bypolls-grid {
  grid-template-columns: repeat(auto-fit, minmax(380px, 1fr));
}

body.theme-v2 .bk-ann-card {
  position: relative;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  isolation: isolate;
  background: var(--v2-card);
  border: 1px solid var(--v2-card-border);
  border-radius: 20px;
  color: var(--v2-ink);
  text-decoration: none;
  transition: box-shadow .2s ease, transform .2s ease;
}

body.theme-v2 .bk-ann-card:hover {
  box-shadow: 0 8px 24px var(--v2-shadow);
  transform: translateY(-2px);
}

body.theme-v2 .bk-ann-wm {
  position: absolute;
  right: -6px;
  bottom: -34px;
  z-index: -1;
  pointer-events: none;
  user-select: none;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 150px;
  line-height: 1;
  letter-spacing: -0.04em;
  color: color-mix(in srgb, var(--v2-berry) 14%, transparent);
}

body.theme-v2 .bk-ann-top {
  padding: 22px 24px;
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: flex-start;
}

body.theme-v2 .bk-ann-meta {
  display: flex;
  gap: 8px;
  align-items: center;
  font-size: 12px;
  font-weight: 600;
  color: var(--v2-muted);
  letter-spacing: .06em;
  text-transform: uppercase;
}

body.theme-v2 .bk-ann-ac {
  font-family: var(--font-mono);
}

body.theme-v2 .bk-ann-res {
  padding: 2px 7px;
  border: 1px solid var(--v2-line-strong);
  border-radius: 6px;
  font-size: 11px;
}

body.theme-v2 .bk-ann-name {
  margin: 8px 0 0;
  font-family: 'DM Serif Display', Georgia, serif;
  font-size: 28px;
  font-weight: 700;
  line-height: 1.1;
}

body.theme-v2 .bk-ann-dist {
  margin-top: 4px;
  font-size: 14px;
  color: var(--v2-muted);
}

body.theme-v2 .bk-ann-poll {
  text-align: right;
  flex: none;
}

body.theme-v2 .bk-ann-poll-l {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--v2-muted);
}

body.theme-v2 .bk-ann-poll-d {
  font-family: var(--font-mono);
  font-size: 18px;
  font-weight: 700;
  color: #17704A;
  margin-top: 2px;
}

body.theme-v2 .bk-ann-cd {
  margin-top: 6px;
  background: none !important;
  border: 0 !important;
  padding: 0 !important;
  font-size: 12px;
  color: var(--v2-muted) !important;
}

body.theme-v2 .bk-ann-panel {
  margin: 0 24px;
  padding: 16px;
  background: color-mix(in srgb, var(--v2-card) 55%, var(--v2-bg));
  border-radius: 14px;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

body.theme-v2 .bk-ann-l {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--v2-muted);
}

body.theme-v2 .bk-ann-mla {
  margin-top: 4px;
  font-weight: 700;
  font-size: 15px;
}

body.theme-v2 .bk-ann-from {
  margin-top: 2px;
  font-size: 13px;
  font-weight: 700;
  color: #327835;
}

body.theme-v2 .bk-ann-chips {
  margin-top: 4px;
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 14px;
  font-weight: 700;
  color: var(--v2-muted);
}

body.theme-v2 .bk-chip {
  padding: 2px 8px;
  border-radius: 999px;
}

body.theme-v2 .bk-chip-from {
  background: #E3EFE5;
  color: #327835;
}

body.theme-v2 .bk-chip-to {
  background: #F4ECD6;
  color: #856400;
}

body.theme-v2 .bk-ann-why {
  margin-top: 4px;
  font-size: 13px;
  color: var(--v2-muted);
}

body.theme-v2 .bk-ann-foot {
  margin-top: 18px;
  padding: 0 24px;
  min-height: 56px;
  border-top: 1px solid var(--v2-sep);
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 14px;
  font-weight: 700;
  color: var(--v2-berry);
}

html.dark-mode body.theme-v2 .bk-chip-from {
  background: rgba(46, 125, 62, .25);
  color: #86D493;
}

html.dark-mode body.theme-v2 .bk-chip-to {
  background: rgba(168, 128, 0, .25);
  color: #E8C24F;
}

html.dark-mode body.theme-v2 .bk-ann-from {
  color: #86D493;
}

html.dark-mode body.theme-v2 .bk-ann-poll-d {
  color: #86D4A9;
}

@media (max-width: 720px) {
  body.theme-v2 .active-bypolls-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  body.theme-v2 .bk-ann-top {
    padding: 18px 18px 16px;
  }

  body.theme-v2 .bk-ann-name {
    font-size: 24px;
  }

  body.theme-v2 .bk-ann-panel {
    margin: 0 18px;
    grid-template-columns: 1fr;
    gap: 12px;
  }

  body.theme-v2 .bk-ann-foot {
    padding: 0 18px;
  }

  body.theme-v2 .bk-ann-wm {
    font-size: 120px;
    bottom: -26px;
  }
}

@media (max-width: 720px) {
  body.theme-v2 .bk-ann-top>div:first-child {
    min-width: 0;
    flex: 1 1 auto;
  }

  body.theme-v2 .bk-ann-poll {
    flex: 0 0 auto;
    max-width: 46%;
  }

  body.theme-v2 .bk-ann-poll-d {
    font-size: 15px;
  }

  body.theme-v2 .bk-ann-cd,
  body.theme-v2 .bk-ann-cd .countdown-timer {
    font-size: 11px !important;
    letter-spacing: 0 !important;
    white-space: nowrap;
  }
}

/* ==========================================================================
   By-poll detail page (Claude Design "By-poll detail" desktop + mobile boards)
   ========================================================================== */
body.theme-v2 .bd {
  max-width: 1240px;
  padding-bottom: 24px;
}

body.theme-v2 .bd-top {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  padding-top: 20px;
}

body.theme-v2 .bd-crumb {
  font-size: 13px;
  color: var(--v2-muted);
}

body.theme-v2 .bd-crumb a {
  color: var(--v2-muted);
  text-decoration: none;
}

body.theme-v2 .bd-crumb a:hover {
  color: var(--v2-berry);
}

body.theme-v2 .bd-crumb-cur {
  color: var(--v2-ink);
  font-weight: 600;
}

body.theme-v2 .bd-switch {
  display: inline-flex;
  gap: 4px;
  padding: 4px;
  background: var(--v2-nav-bg);
  border-radius: 14px;
}

body.theme-v2 .bd-switch .seat-pill-btn {
  min-height: 40px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 0 14px;
  border-radius: 10px;
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 600;
  color: var(--v2-ink-2) !important;
  cursor: pointer;
}

body.theme-v2 .bd-switch .seat-pill-btn.active {
  background: var(--v2-seg-on) !important;
  color: var(--v2-ink) !important;
  font-weight: 700;
}

body.theme-v2 .bd-sw-no {
  font-family: var(--font-mono);
  font-size: 13px;
  color: var(--v2-faint);
}

/* hero */
body.theme-v2 .bd-hero {
  position: relative;
  display: flex;
  flex-wrap: wrap;
  gap: 40px;
  align-items: flex-end;
  padding: 36px 0 40px;
  border-bottom: 1px solid var(--v2-sep);
}

body.theme-v2 .bd-hero-wm {
  display: none;
}

body.theme-v2 .bd-hero-main {
  flex: 999 1 520px;
  min-width: 0;
}

body.theme-v2 .bd-tags {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  font-size: 12px;
  font-weight: 600;
  color: var(--v2-muted);
  letter-spacing: .08em;
  text-transform: uppercase;
}

body.theme-v2 .bd-tag-live {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 3px 10px;
  border-radius: 999px;
  background: var(--v2-green-bg);
  color: var(--v2-green-fg);
  font-weight: 700;
}

body.theme-v2 .bd-tag-live i {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #1E7F55;
}

body.theme-v2 .bd-tag-ac {
  font-family: var(--font-mono);
}

body.theme-v2 .bd-tag-res {
  padding: 2px 8px;
  border: 1px solid var(--v2-line-strong);
  border-radius: 6px;
  font-size: 11px;
}

body.theme-v2 .bd-title {
  margin: 14px 0 0;
  font-family: 'DM Serif Display', Georgia, serif;
  font-weight: 700;
  font-size: clamp(48px, 8vw, 88px);
  line-height: .95;
  letter-spacing: -0.02em;
  color: var(--v2-ink);
}

body.theme-v2 .bd-lead {
  margin: 20px 0 0;
  font-size: 20px;
  line-height: 1.5;
  color: var(--v2-ink-2);
  max-width: 640px;
}

body.theme-v2 .bd-lead strong {
  color: var(--v2-ink);
}

body.theme-v2 .bd-count {
  flex: 1 1 360px;
  max-width: 420px;
}

body.theme-v2 .bd-count-foot {
  margin-top: 14px;
  display: flex;
  justify-content: space-between;
  gap: 8px;
  font-size: 13px;
  color: #C9BCAF;
}

body.theme-v2 .bd-count-foot b {
  color: #F7F2EC;
}

/* key facts */
body.theme-v2 .bd-facts {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
  padding: 32px 0;
}

body.theme-v2 .bd-fact {
  background: var(--v2-card);
  border: 1px solid var(--v2-card-border);
  border-radius: 16px;
  padding: 20px 22px;
}

body.theme-v2 .bd-l {
  font-size: 12px;
  font-weight: 600;
  color: var(--v2-muted);
  letter-spacing: .08em;
  text-transform: uppercase;
}

body.theme-v2 .bd-big {
  display: block;
  font-family: 'DM Serif Display', Georgia, serif;
  font-size: 36px;
  font-weight: 700;
  margin-top: 6px;
  line-height: 1.1;
}

body.theme-v2 .bd-big-row {
  display: flex;
  align-items: baseline;
  gap: 6px;
  flex-wrap: wrap;
}

body.theme-v2 .bd-s {
  font-size: 14px;
  color: var(--v2-ink-2);
}

body.theme-v2 .bd-s b {
  color: var(--v2-ink);
}

body.theme-v2 .bd-mut {
  color: var(--v2-muted);
}

body.theme-v2 .bd-gbar {
  display: flex;
  gap: 2px;
  height: 8px;
  border-radius: 4px;
  overflow: hidden;
  margin-top: 10px;
}

body.theme-v2 .bd-glegend {
  display: grid;
  grid-template-columns: auto 1fr auto;
  column-gap: 8px;
  row-gap: 2px;
  align-items: center;
  margin-top: 10px;
  font-size: 13px;
  color: var(--v2-ink-2);
}

body.theme-v2 .bd-glegend i {
  width: 8px;
  height: 8px;
  border-radius: 2px;
}

body.theme-v2 .bd-glegend b {
  font-family: var(--font-mono);
  color: var(--v2-ink);
}

/* columns + cards */
body.theme-v2 .bd-cols {
  display: flex;
  flex-wrap: wrap;
  gap: 24px;
  align-items: flex-start;
}

body.theme-v2 .bd-card {
  background: var(--v2-card);
  border: 1px solid var(--v2-card-border);
  border-radius: 20px;
  overflow: hidden;
}

body.theme-v2 .bd-cand {
  flex: 999 1 640px;
  min-width: 0;
}

body.theme-v2 .bd-may-card {
  flex: 1 1 380px;
  min-width: 0;
  padding: 24px;
}

body.theme-v2 .bd-card-head {
  padding: 24px 28px 12px;
}

body.theme-v2 .bd-h {
  margin: 0;
  font-family: 'DM Serif Display', Georgia, serif;
  font-size: 28px;
  font-weight: 700;
  color: var(--v2-ink);
}

body.theme-v2 .bd-h-sm {
  margin-top: 6px;
  font-size: 26px;
  line-height: 1.1;
}

body.theme-v2 .bd-note {
  margin: 4px 0 0;
  font-size: 13px;
  color: var(--v2-muted);
}

body.theme-v2 .bd-may {
  display: inline-block;
  padding: 0 6px;
  border-radius: 4px;
  background: var(--v2-tint);
  color: var(--v2-berry);
  font-weight: 700;
  font-size: 12px;
}

/* candidates table */
body.theme-v2 .bd-tablewrap {
  overflow-x: auto;
}

body.theme-v2 .bd-table {
  width: 100%;
  min-width: 620px;
  border-collapse: collapse;
  font-size: 15px;
}

body.theme-v2 .bd-table th {
  padding: 12px;
  text-align: left;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--v2-muted);
  background: transparent !important;
  border: 0 !important;
}

body.theme-v2 .bd-table th:first-child,
body.theme-v2 .bd-table td:first-child {
  padding-left: 28px;
  width: 32px;
}

body.theme-v2 .bd-table th:last-child,
body.theme-v2 .bd-table td:last-child {
  padding-right: 28px;
}

body.theme-v2 .bd-table td {
  padding: 14px 12px;
  border-top: 1px solid var(--v2-sep);
  vertical-align: top;
  color: var(--v2-ink);
  background: transparent;
}

body.theme-v2 .bd-table .bd-grp td {
  background: var(--v2-soft) !important;
  padding: 10px 28px !important;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--v2-muted);
}

body.theme-v2 .bd-no {
  font-family: var(--font-mono);
  font-size: 14px;
  color: var(--v2-faint) !important;
}

body.theme-v2 .bd-cn {
  font-weight: 700;
}

body.theme-v2 .bd-may-line {
  margin-top: 4px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  color: var(--v2-ink-2);
}

body.theme-v2 .bd-pchip {
  display: inline-block;
  padding: 2px 10px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 700;
}

body.theme-v2 .bd-ally {
  margin-left: 6px;
  font-size: 13px;
  color: var(--v2-muted);
}

body.theme-v2 .bd-sym {
  font-size: 14px;
  color: var(--v2-ink-2) !important;
}

body.theme-v2 .bd-r {
  text-align: right !important;
}

body.theme-v2 .bd-g {
  font-size: 13px;
  font-weight: 600;
}

body.theme-v2 .bd-g.f {
  color: #B0202A !important;
}

body.theme-v2 .bd-g.m {
  color: #1E5AC8 !important;
}

body.theme-v2 .bd-empty {
  text-align: center;
  padding: 3rem;
  color: var(--v2-muted);
}

body.theme-v2 .bd-cand-foot {
  border-top: 1px solid var(--v2-sep);
  padding: 8px 20px;
}

body.theme-v2 .bd-link-btn {
  min-height: 44px;
  padding: 0 8px;
  border: 0;
  background: transparent;
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 700;
  color: var(--v2-berry);
  cursor: pointer;
}

/* May card */
body.theme-v2 .bd-winner {
  margin-top: 16px;
  padding: 14px 16px;
  border-radius: 14px;
}

body.theme-v2 .bd-winner-l {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
}

body.theme-v2 .bd-winner-n {
  margin-top: 2px;
  font-size: 16px;
  font-weight: 700;
  color: #231A18;
}

body.theme-v2 .bd-winner-s {
  font-size: 14px;
  color: #4A3C38;
}

body.theme-v2 .bd-winner-s b {
  font-family: var(--font-mono);
  color: #231A18;
}

body.theme-v2 .bd-may-list {
  list-style: none;
  margin: 16px 0 0;
  padding: 0;
}

body.theme-v2 .bd-may-list li {
  padding: 12px 0;
  border-top: 1px solid var(--v2-sep);
}

body.theme-v2 .bd-may-row {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: baseline;
}

body.theme-v2 .bd-may-name {
  font-size: 15px;
  font-weight: 700;
}

body.theme-v2 .bd-may-party {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .06em;
}

body.theme-v2 .bd-mono {
  font-family: var(--font-mono);
  font-size: 13px;
}

body.theme-v2 .bd-may-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 6px;
}

body.theme-v2 .bd-track {
  flex: 1;
  height: 8px;
  background: var(--v2-hair);
  border-radius: 4px;
  overflow: hidden;
}

body.theme-v2 .bd-track>div {
  height: 100%;
  border-radius: 4px;
}

body.theme-v2 .bd-may-bar .bd-mono {
  min-width: 64px;
  text-align: right;
}

body.theme-v2 .bd-others {
  border-top: 1px solid var(--v2-sep);
}

body.theme-v2 .bd-others summary {
  min-height: 44px;
  display: flex;
  align-items: center;
  font-size: 14px;
  font-weight: 700;
  color: var(--v2-berry);
  cursor: pointer;
}

body.theme-v2 .bd-others ul {
  list-style: none;
  margin: 0 0 8px;
  padding: 0;
  font-size: 14px;
}

body.theme-v2 .bd-others li {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  padding: 6px 0;
}

html.dark-mode body.theme-v2 .bd-winner-n,
html.dark-mode body.theme-v2 .bd-winner-s b {
  color: #231A18;
}

/* mobile */
@media (max-width: 720px) {
  body.theme-v2 .bd-top {
    padding-top: 14px;
  }

  body.theme-v2 .bd-switch {
    width: 100%;
  }

  body.theme-v2 .bd-switch .seat-pill-btn {
    flex: 1;
    justify-content: center;
    padding: 0 8px;
  }

  body.theme-v2 .bd-hero {
    gap: 24px;
    padding: 24px 0 28px;
  }

  body.theme-v2 .bd-lead {
    font-size: 17px;
    margin-top: 14px;
  }

  body.theme-v2 .bd-count {
    max-width: none;
    flex-basis: 100%;
  }

  body.theme-v2 .bd-facts {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    padding: 20px 0;
  }

  body.theme-v2 .bd-fact {
    padding: 16px;
  }

  body.theme-v2 .bd-fact:nth-child(2) {
    grid-column: 1 / -1;
    order: 4;
  }

  body.theme-v2 .bd-big {
    font-size: 28px;
  }

  body.theme-v2 .bd-cols {
    gap: 14px;
  }

  body.theme-v2 .bd-cand,
  body.theme-v2 .bd-may-card {
    flex-basis: 100%;
  }

  body.theme-v2 .bd-may-card {
    padding: 16px;
  }

  body.theme-v2 .bd-card-head {
    padding: 18px 16px 8px;
  }

  body.theme-v2 .bd-h {
    font-size: 22px;
  }

  body.theme-v2 .bd-tablewrap {
    overflow: visible;
  }

  body.theme-v2 .bd-table,
  body.theme-v2 .bd-table tbody {
    display: block;
    min-width: 0;
    width: 100%;
  }

  body.theme-v2 .bd-table thead {
    display: none;
  }

  body.theme-v2 .bd-table tr {
    display: grid;
    grid-template-columns: 28px minmax(0, 1fr) auto;
    column-gap: 10px;
    row-gap: 4px;
    padding: 12px 16px;
    border-top: 1px solid var(--v2-sep);
    align-items: start;
  }

  body.theme-v2 .bd-table td {
    display: block;
    padding: 0 !important;
    border: 0 !important;
    width: auto !important;
  }

  body.theme-v2 .bd-table td.bd-no {
    grid-area: 1 / 1;
    padding-top: 2px !important;
  }

  body.theme-v2 .bd-table td.bd-cname {
    grid-area: 1 / 2;
  }

  body.theme-v2 .bd-table td.bd-r {
    grid-area: 1 / 3;
  }

  body.theme-v2 .bd-table td.bd-cparty {
    grid-area: 2 / 2 / 3 / 4;
  }

  body.theme-v2 .bd-table td.bd-sym {
    grid-area: 3 / 2 / 4 / 4;
    font-size: 13px;
  }

  body.theme-v2 .bd-table tr.bd-grp {
    display: block;
    padding: 0;
  }

  body.theme-v2 .bd-table .bd-grp td {
    padding: 10px 16px !important;
  }

  body.theme-v2 .bd-cand-foot {
    padding: 4px 8px;
  }
}

@media (max-width: 720px) {
  body.theme-v2 .bd-title {
    font-size: min(52px, 11.2vw);
    overflow-wrap: anywhere;
  }
}

@media (max-width: 720px) {
  body.theme-v2 .bd-table tr.bd-grp td {
    display: block;
    width: 100% !important;
    padding: 10px 16px !important;
  }

  body.theme-v2 .bd-table td::before {
    content: none !important;
    display: none !important;
  }
}

@media (max-width: 720px) {
  body.theme-v2 .bd-fact:nth-child(4) {
    grid-column: 1 / -1;
  }
}

/* By-poll detail: booth-wise leaders (sample until Form 20 JSON is added) */
body.theme-v2 .bd-booth {
  margin-top: 24px;
  padding: 28px;
  overflow: visible;
}

body.theme-v2 .bd-booth[hidden] {
  display: none;
}

body.theme-v2 .bd-booth-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 16px;
  flex-wrap: wrap;
}

body.theme-v2 .bd-booth-title {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

body.theme-v2 .bd-sample {
  padding: 3px 10px;
  border-radius: 999px;
  background: #FBE7DC;
  color: #A9441A;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
}

html.dark-mode body.theme-v2 .bd-sample {
  background: rgba(194, 80, 30, .25);
  color: #FFB48F;
}

body.theme-v2 .bd-filters {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

body.theme-v2 .bd-fbtn {
  min-height: 40px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 0 14px;
  border-radius: 999px;
  border: 1px solid var(--v2-line);
  background: var(--v2-card);
  color: var(--v2-ink);
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
}

body.theme-v2 .bd-fbtn i {
  width: 8px;
  height: 8px;
  border-radius: 2px;
}

body.theme-v2 .bd-fbtn.on {
  background: var(--v2-pill-bg);
  color: var(--v2-pill-fg);
  border-color: var(--v2-pill-bg);
}

body.theme-v2 .bd-booth-totals {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 16px;
  margin-top: 20px;
}

body.theme-v2 .bd-booth-totals>div {
  padding-top: 12px;
}

body.theme-v2 .bd-bt-row {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .06em;
}

body.theme-v2 .bd-bt-row b {
  font-family: 'DM Serif Display', Georgia, serif;
  font-size: 32px;
  color: var(--v2-ink);
  letter-spacing: 0;
}

body.theme-v2 .bd-booth-grid {
  display: grid;
  grid-template-columns: repeat(34, minmax(0, 1fr));
  gap: 3px;
  margin-top: 24px;
}

body.theme-v2 .bd-booth-grid span {
  aspect-ratio: 1;
  border-radius: 3px;
  transition: opacity .15s;
}

body.theme-v2 .bd-booth-axis {
  display: flex;
  justify-content: space-between;
  margin-top: 6px;
  font-family: var(--font-mono);
  font-size: 13px;
  color: var(--v2-muted);
}

body.theme-v2 .bd-booth-lists {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 24px;
  margin-top: 28px;
}

body.theme-v2 .bd-h3 {
  margin: 0;
  font-size: 16px;
  font-weight: 700;
  font-family: var(--font-body);
}

body.theme-v2 .bd-rank {
  list-style: none;
  margin: 8px 0 0;
  padding: 0;
}

body.theme-v2 .bd-rank li {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  padding: 10px 0;
  border-top: 1px solid var(--v2-sep);
  font-size: 14px;
}

@media (max-width: 720px) {
  body.theme-v2 .bd-booth {
    padding: 16px;
    margin-top: 14px;
  }

  body.theme-v2 .bd-booth-grid {
    grid-template-columns: repeat(20, minmax(0, 1fr));
    gap: 2px;
  }

  body.theme-v2 .bd-booth-totals {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
  }

  body.theme-v2 .bd-bt-row b {
    font-size: 24px;
  }

  body.theme-v2 .bd-booth-lists {
    gap: 18px;
  }

  body.theme-v2 .bd-rank li {
    flex-wrap: wrap;
  }
}

body.theme-v2 .bd-booth-grid span.bd-nodata {
  background: var(--v2-line);
}

body.theme-v2 .bd-loc {
  display: block;
  margin-top: 2px;
  font-size: 12px;
  color: var(--v2-muted);
  max-width: 46ch;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

@media (max-width: 720px) {
  body.theme-v2 .bd-loc {
    max-width: 100%;
    white-space: normal;
  }
}

/* Booth hover card */
.bd-tip {
  position: fixed;
  z-index: 2000;
  max-width: min(320px, calc(100vw - 16px));
  pointer-events: none;
  padding: 12px 14px;
  border-radius: 12px;
  background: #231616;
  color: #F7F2EC;
  box-shadow: 0 10px 30px rgba(35, 22, 22, .35);
  font-family: var(--font-body, 'Inter', sans-serif);
  font-size: 13px;
  line-height: 1.4;
}

.bd-tip[hidden] {
  display: none;
}

.bd-tip-no {
  font-family: 'JetBrains Mono', monospace;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: #C9BCAF;
}

.bd-tip-loc {
  margin-top: 2px;
  font-weight: 700;
  font-size: 13px;
}

.bd-tip-line {
  margin-top: 8px;
  display: flex;
  gap: 8px;
  align-items: flex-start;
}

.bd-tip-line i {
  width: 8px;
  height: 8px;
  border-radius: 2px;
  margin-top: 5px;
  flex: none;
}

.bd-tip-mut {
  color: #C9BCAF;
  font-weight: 500;
}

body.theme-v2 .bd-booth-grid span {
  cursor: pointer;
}

/* Results KPI cards: always 2x2 */
html body.theme-v2 .results-kpi-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

@media (max-width: 720px) {
  html body.theme-v2 .results-kpi-grid {
    gap: 10px;
    margin-bottom: 18px;
  }

  html body.theme-v2 .results-kpi-grid .tcard {
    padding: 14px !important;
  }
}

/* District cards: on mobile the card hugs its content instead of a fixed 550px box */
@media (max-width: 767px) {
  html body.theme-v2 #districtsGrid .district-card {
    height: auto !important;
    min-height: 0 !important;
    max-height: none !important;
    overflow: visible;
  }

  html body.theme-v2 #districtsGrid .district-card .district-table-container {
    flex: none;
    overflow: visible;
    max-height: none;
  }

  html body.theme-v2 #districtsGrid .district-card-header {
    min-height: 0;
  }
}

/* Vote share pages (redesign): card-in-card fixes */
html body.theme-v2 .vs2 .vs-tldr-wrapper {
  background: none;
}

html body.theme-v2 .vs2 .vs-tldr {
  background: var(--v2-soft);
}

html body.theme-v2 .vs2 .vs-nav-item {
  color: var(--v2-muted);
}

html body.theme-v2 .vs2 .vs-nav-btn {
  background: var(--v2-card);
}

html body.theme-v2 .vs2 .vs-nav-btn:hover {
  background: var(--v2-pill-bg);
  border-color: var(--v2-pill-bg);
  color: var(--v2-pill-fg);
}

html body.theme-v2 .vsb-card .vsb-search {
  width: auto !important;
}

html body.theme-v2 .vsb-card .vsb-select {
  background-color: var(--v2-card);
}

/* View switch (bar list <-> 3D view) */
body.theme-v2 .vs-switch {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-height: 44px;
  padding: 0 4px;
  text-decoration: none;
  color: var(--v2-ink);
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}

body.theme-v2 .vs-switch-track {
  position: relative;
  width: 44px;
  height: 26px;
  border-radius: 999px;
  background: var(--v2-line-strong);
  transition: background .2s ease;
  flex: none;
}

body.theme-v2 .vs-switch-track i {
  position: absolute;
  top: 3px;
  left: 3px;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 1px 3px rgba(35, 22, 22, .3);
  transition: transform .2s ease;
}

body.theme-v2 .vs-switch[aria-checked="true"] .vs-switch-track {
  background: var(--v2-berry-fill);
}

body.theme-v2 .vs-switch[aria-checked="true"] .vs-switch-track i {
  transform: translateX(18px);
}

body.theme-v2 .vs-switch:hover .vs-switch-track {
  filter: brightness(.95);
}

body.theme-v2 .vs-switch:focus-visible {
  outline: 2px solid var(--v2-berry);
  outline-offset: 2px;
  border-radius: 10px;
}

@media (max-width: 720px) {

  body.theme-v2 .vs2-top,
  body.theme-v2 .vsb-head {
    flex-direction: column;
    align-items: stretch;
  }

  body.theme-v2 .vs2-top .vs-switch,
  body.theme-v2 .vsb-head .vs-switch {
    justify-content: space-between;
    flex-direction: row-reverse;
    padding: 0 2px;
  }
}

/* ==========================================================================
   Results: "Every seat" table (Claude Design Results board)
   ========================================================================== */
body.theme-v2 .rs-tally {
  background: var(--v2-card);
  border: 1px solid var(--v2-card-border);
  border-radius: 20px;
  padding: 20px 24px;
  margin-bottom: 20px;
}

body.theme-v2 .rs-tally-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
  flex-wrap: wrap;
}

body.theme-v2 .rs-h3 {
  margin: 0;
  font-size: 16px;
  font-weight: 700;
  font-family: var(--font-body);
  color: var(--v2-ink);
}

body.theme-v2 .rs-hint {
  font-size: 13px;
  color: var(--v2-muted);
}

body.theme-v2 .rs-chips {
  margin-top: 14px;
  min-height: 28px;
}

body.theme-v2 .rs-split {
  display: flex;
  gap: 2px;
  height: 14px;
  border-radius: 7px;
  overflow: hidden;
  background: var(--v2-hair);
}

body.theme-v2 .rs-split>div {
  height: 100%;
}

body.theme-v2 .rs-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 14px;
}

body.theme-v2 .rs-pill {
  min-height: 40px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 0 14px;
  border-radius: 999px;
  border: 1px solid var(--v2-line);
  background: var(--v2-card);
  color: var(--v2-ink);
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  transition: border-color .15s, background .15s;
}

body.theme-v2 .rs-pill i {
  width: 8px;
  height: 8px;
  border-radius: 2px;
  flex: none;
}

body.theme-v2 .rs-pill span {
  font-family: var(--font-mono);
  font-weight: 500;
}

body.theme-v2 .rs-pill:hover {
  border-color: var(--v2-muted);
}

body.theme-v2 .rs-pill.on {
  background: var(--v2-pill-bg);
  color: var(--v2-pill-fg);
  border-color: var(--v2-pill-bg);
}

body.theme-v2 .rs-card {
  margin-top: 0;
}

body.theme-v2 .rs-head {
  padding: 20px 28px;
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  border-bottom: 1px solid var(--v2-sep);
}

body.theme-v2 .rs-h {
  margin: 0;
  font-family: 'DM Serif Display', Georgia, serif;
  font-size: 26px;
  font-weight: 700;
  color: var(--v2-ink);
}

body.theme-v2 .rs-filters {
  margin: 0 !important;
  flex: 1 1 auto;
  justify-content: flex-end;
}

body.theme-v2 .rs-scroll {
  overflow-x: auto;
}

body.theme-v2 #resultsFullTable {
  min-width: 820px;
}

body.theme-v2 #resultsFullTable th {
  padding: 14px 12px;
  text-align: left;
}

body.theme-v2 #resultsFullTable th.rs-c-ac,
body.theme-v2 #resultsFullTable td.rs-c-ac {
  width: 56px;
  padding-left: 28px;
  text-align: left;
}

body.theme-v2 #resultsFullTable th.rs-c-ally,
body.theme-v2 #resultsFullTable td.rs-c-ally {
  text-align: right;
  padding-right: 28px;
}

body.theme-v2 #resultsFullTable th.rs-c-margin {
  width: 30%;
}

body.theme-v2 #resultsFullTable td {
  vertical-align: middle;
  padding: 14px 12px;
}

body.theme-v2 #resultsFullTable td.rs-c-ac {
  font-family: var(--font-mono);
  font-size: 14px;
  font-weight: 500;
  color: var(--v2-faint);
}

body.theme-v2 .rs-name {
  font-weight: 700;
  color: var(--v2-ink);
}

body.theme-v2 .rs-district {
  font-size: 13px;
  color: var(--v2-muted);
  margin-top: 2px;
}

body.theme-v2 #resultsFullTable td.rs-c-winner {
  font-weight: 600;
  color: var(--v2-ink);
}

body.theme-v2 .rs-party {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .06em;
}

body.theme-v2 .rs-ally {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 700;
  white-space: nowrap;
  color: color-mix(in srgb, var(--ac) 70%, var(--v2-ink));
  background: color-mix(in srgb, var(--ac) 14%, var(--v2-card));
}

body.theme-v2 .rs-none {
  color: var(--v2-faint);
}

body.theme-v2 .rs-empty {
  text-align: center;
  padding: 3rem;
  color: var(--v2-muted);
}

body.theme-v2 .rs-foot {
  padding: 14px 28px;
  border-top: 1px solid var(--v2-sep);
  font-size: 13px;
  color: var(--v2-muted);
}

@media (max-width: 720px) {
  body.theme-v2 .rs-tally {
    padding: 16px;
    border-radius: 18px;
    margin-bottom: 14px;
  }

  body.theme-v2 .rs-pills {
    flex-wrap: nowrap;
    overflow-x: auto;
    margin: 14px -16px 0;
    padding: 0 16px 4px;
    scrollbar-width: none;
  }

  body.theme-v2 .rs-pills::-webkit-scrollbar {
    display: none;
  }

  body.theme-v2 .rs-pill {
    flex: none;
  }

  body.theme-v2 .rs-head {
    padding: 16px 16px 12px;
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
  }

  body.theme-v2 .rs-h {
    font-size: 22px;
  }

  body.theme-v2 .rs-foot {
    padding: 12px 16px;
  }

  body.theme-v2 .rs-scroll {
    overflow: visible;
  }

  html body.theme-v2 #resultsFullTable {
    min-width: 0;
  }

  html body.theme-v2 #resultsFullTable tr {
    grid-template-columns: minmax(0, 1fr) auto;
    row-gap: 2px;
    padding: 14px 16px;
  }

  html body.theme-v2 #resultsFullTable td.rs-c-name {
    grid-area: 1 / 1;
    font-size: 15px;
  }

  html body.theme-v2 #resultsFullTable td.rs-c-ac {
    grid-area: 1 / 2;
    width: auto;
    padding: 0 !important;
    text-align: right !important;
    font-size: 13px;
  }

  html body.theme-v2 #resultsFullTable td.rs-c-ac::before {
    content: "AC ";
  }

  html body.theme-v2 #resultsFullTable td.rs-c-winner {
    grid-area: 2 / 1;
    font-size: 13px;
    color: var(--v2-ink-2);
    font-weight: 600;
  }

  html body.theme-v2 #resultsFullTable td.rs-c-party {
    grid-area: 2 / 2;
    text-align: right !important;
  }

  html body.theme-v2 #resultsFullTable td.rs-c-margin {
    grid-area: 3 / 1 / 4 / 3;
    margin-top: 8px;
    text-align: left !important;
  }

  html body.theme-v2 #resultsFullTable td.rs-c-margin .v2-margin-bar {
    display: block;
  }

  html body.theme-v2 #resultsFullTable td.rs-c-ally {
    display: none !important;
  }

  html body.theme-v2 #resultsFullTable .rs-district {
    display: none;
  }

  html body.theme-v2 #resultsFullTable td.rs-c-name .rs-name::after {
    content: "";
  }
}

body.theme-v2 .rs-ac-lbl {
  display: none;
}

@media (max-width: 720px) {
  body.theme-v2 .rs-ac-lbl {
    display: inline;
  }

  html body.theme-v2 #resultsFullTable td.rs-c-ac::before {
    content: none;
  }

  body.theme-v2 .rs-filters {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
  }

  body.theme-v2 .rs-filters #resultsDistrictFilter,
  body.theme-v2 .rs-filters #resultsTableSearch {
    grid-column: 1 / -1;
  }

  body.theme-v2 .rs-filters select,
  body.theme-v2 .rs-filters input {
    width: 100% !important;
    min-width: 0 !important;
    flex: none !important;
  }

  html body.theme-v2 #resultsFullTable td.rs-c-margin .v2-margin {
    justify-content: flex-start;
    width: 100%;
  }

  html body.theme-v2 #resultsFullTable td.rs-c-margin .v2-margin-bar {
    max-width: none;
  }

  html body.theme-v2 #resultsFullTable td.rs-c-margin .v2-margin-num {
    width: auto;
    min-width: 56px;
    text-align: right;
  }
}

/* ==========================================================================
   Ministers: cabinet cards (readable layout + working photos)
   The legacy .bearer-img is absolutely positioned/transformed for a banner layout,
   which pushed the photo out of the small round frame. Reset it here.
   ========================================================================== */
html body.theme-v2 .cabinet-grid {
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: 16px;
}

html body.theme-v2 .cabinet-grid .bearer-card {
  display: grid;
  grid-template-columns: 64px minmax(0, 1fr);
  column-gap: 14px;
  row-gap: 2px;
  align-content: start;
  padding: 20px !important;
  border-radius: 18px !important;
  background: var(--v2-card) !important;
  border: 1px solid var(--v2-card-border) !important;
  box-shadow: none !important;
  transform: none;
}

html body.theme-v2 .cabinet-grid .bearer-card:hover {
  transform: none;
  border-color: var(--v2-line-strong) !important;
  box-shadow: 0 8px 24px var(--v2-shadow) !important;
}

html body.theme-v2 .cabinet-grid .bearer-content {
  display: contents;
}

html body.theme-v2 .cabinet-grid .bearer-img-container {
  grid-area: 1 / 1 / 3 / 2;
  align-self: start;
  position: relative;
  width: 64px;
  height: 64px;
  border-radius: 50%;
  overflow: hidden;
  margin: 0;
  padding: 0;
  border: 0;
  background: var(--v2-soft);
  display: block;
}

html body.theme-v2 .cabinet-grid .bearer-img,
html body.theme-v2 .cabinet-grid .bearer-card:hover .bearer-img {
  position: static !important;
  inset: auto !important;
  transform: none !important;
  width: 100% !important;
  height: 100% !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  object-fit: cover;
  object-position: center 12%;
  display: block;
  background: var(--v2-soft);
}

html body.theme-v2 .cabinet-grid .bearer-title {
  grid-area: 1 / 2;
  align-self: end;
  padding-right: 64px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--v2-muted);
}

html body.theme-v2 .cabinet-grid .bearer-name {
  grid-area: 2 / 2;
  align-self: start;
  margin: 0 0 0;
  font-family: var(--font-body) !important;
  font-size: 18px;
  line-height: 1.25;
  font-weight: 700;
  letter-spacing: 0 !important;
  color: var(--v2-ink);
  text-align: left;
}

html body.theme-v2 .cabinet-grid .bearer-badge {
  top: 18px;
  right: 18px;
  font-size: 11px;
  padding: 3px 10px;
  box-shadow: none;
}

html body.theme-v2 .cabinet-grid .bearer-meta {
  grid-area: 3 / 1 / 4 / 3;
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin: 16px 0 0;
  padding: 14px 0 0;
  border: 0;
  border-top: 1px solid var(--v2-sep);
}

html body.theme-v2 .cabinet-grid .bearer-meta-row {
  display: flex;
  flex-direction: column;
  gap: 3px;
  font-size: 14px;
}

html body.theme-v2 .cabinet-grid .bearer-meta-label {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--v2-muted);
}

html body.theme-v2 .cabinet-grid .bearer-meta-val {
  font-size: 14px;
  font-weight: 600;
  line-height: 1.4;
  color: var(--v2-ink) !important;
  text-align: left;
}

html body.theme-v2 .cabinet-grid .bearer-portfolios {
  grid-area: 4 / 1 / 5 / 3;
  margin: 14px 0 0;
  padding: 14px 0 0;
  border-top: 1px solid var(--v2-sep);
  font-weight: 400;
  color: var(--v2-ink);
}

html body.theme-v2 .cabinet-grid .bearer-portfolios-title {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--v2-muted);
  margin-bottom: 8px;
}

html body.theme-v2 .cabinet-grid .portfolio-badges-wrap {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

html body.theme-v2 .cabinet-grid .portfolio-tag {
  display: inline-block;
  padding: 5px 10px;
  border-radius: 8px;
  background: var(--v2-soft);
  color: var(--v2-ink-2);
  font-size: 13px;
  font-weight: 600;
  line-height: 1.3;
  border: 0;
}

@media (max-width: 720px) {
  html body.theme-v2 .cabinet-grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 12px;
  }

  html body.theme-v2 .cabinet-grid .bearer-card {
    padding: 16px !important;
  }

  html body.theme-v2 .cabinet-grid .bearer-name {
    font-size: 17px;
  }
}

/* Cabinet cards: light top-to-bottom gradient in the minister's party colour */
html body.theme-v2 .cabinet-grid .bearer-card {
  --pc: #A89C92;
}

html body.theme-v2 .cabinet-grid .bearer-card:has(.badge-tvk) {
  --pc: #A67C00;
}

html body.theme-v2 .cabinet-grid .bearer-card:has(.badge-dmk) {
  --pc: #E53935;
}

html body.theme-v2 .cabinet-grid .bearer-card:has(.badge-admk) {
  --pc: #43A047;
}

html body.theme-v2 .cabinet-grid .bearer-card:has(.badge-inc) {
  --pc: #4B9FC9;
}

html body.theme-v2 .cabinet-grid .bearer-card:has(.badge-vck) {
  --pc: #15607A;
}

html body.theme-v2 .cabinet-grid .bearer-card:has(.badge-iuml) {
  --pc: #006601;
}

body.theme-v2 .bearer-badge.badge-inc {
  background: #346F8C;
}

html body.theme-v2 .cabinet-grid .bearer-card {
  background: linear-gradient(180deg,
      color-mix(in srgb, var(--pc) 7%, var(--v2-card)) 0%,
      color-mix(in srgb, var(--pc) 1%, var(--v2-card)) 100%) !important;
  border: 1px solid color-mix(in srgb, var(--pc) 18%, var(--v2-card-border)) !important;
}

html body.theme-v2 .cabinet-grid .bearer-card:hover {
  border-color: color-mix(in srgb, var(--pc) 35%, var(--v2-card-border)) !important;
}

html body.theme-v2 .cabinet-grid .bearer-meta,
html body.theme-v2 .cabinet-grid .bearer-portfolios {
  border-top-color: color-mix(in srgb, var(--pc) 12%, var(--v2-sep));
}

html body.theme-v2 .cabinet-grid .portfolio-tag {
  background: color-mix(in srgb, var(--pc) 6%, var(--v2-soft));
}

html body.theme-v2 .cabinet-grid .bearer-img-container {
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--pc) 16%, var(--v2-card));
}

/* Party flags before party names */
.pflag {
  width: 16px;
  height: 16px;
  flex: none;
  object-fit: contain;
  border-radius: 3px;
  background: #fff;
  padding: 1px;
  margin-right: 6px;
  vertical-align: -3px;
  box-shadow: 0 0 0 1px rgba(35, 22, 22, .12);
  display: inline-block;
}

body.theme-v2 .bearer-badge {
  display: inline-flex;
  align-items: center;
}

body.theme-v2 .bearer-badge .pflag {
  margin-right: 5px;
}

body.theme-v2 .rs-pill .pflag {
  margin-right: 0;
  vertical-align: middle;
}

body.theme-v2 .rs-pill.on .pflag {
  box-shadow: 0 0 0 1px rgba(255, 255, 255, .35);
}

body.theme-v2 .bk-chip {
  display: inline-flex;
  align-items: center;
}

body.theme-v2 .bk-ann-from,
body.theme-v2 .bk-party {
  display: flex;
  align-items: center;
}

body.theme-v2 .bd-pchip {
  display: inline-flex;
  align-items: center;
}

/* ==========================================================================
   Constituency explorer cards (constituencies.html)
   ========================================================================== */
html body.theme-v2 .const-grid {
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: 16px;
}

html body.theme-v2 .const-card.cc {
  --pc: #A89C92;
  display: flex;
  flex-direction: column;
  padding: 0 !important;
  overflow: hidden;
  text-decoration: none;
  color: var(--v2-ink);
  background: var(--v2-card) !important;
  border: 1px solid var(--v2-card-border) !important;
  border-radius: 18px !important;
  box-shadow: none !important;
}

html body.theme-v2 .const-card.cc:hover {
  border-color: color-mix(in srgb, var(--pc) 45%, var(--v2-card-border)) !important;
  box-shadow: 0 10px 28px var(--v2-shadow) !important;
  transform: translateY(-2px);
}

html body.theme-v2 .cc-top {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  padding: 16px 18px 0;
}

html body.theme-v2 .cc-ac {
  font-family: var(--font-mono);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .06em;
  color: var(--v2-muted);
}

html body.theme-v2 .cc-cat {
  padding: 2px 8px;
  border-radius: 6px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .06em;
  border: 1px solid var(--v2-line-strong);
  color: var(--v2-ink-2);
}

html body.theme-v2 .cc-cat-sc {
  background: #FBE4E3;
  border-color: #F0C2BF;
  color: #B02A2A;
}

html body.theme-v2 .cc-cat-st {
  background: #E3ECF8;
  border-color: #BFD2EC;
  color: #1E5AA8;
}

html body.theme-v2 .cc-name {
  margin: 10px 0 0;
  padding: 0 18px;
  font-family: 'DM Serif Display', Georgia, serif;
  font-size: 22px;
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: -.01em;
  color: var(--v2-ink);
}

html body.theme-v2 .cc-dist {
  padding: 4px 18px 0;
  font-size: 13px;
  color: var(--v2-muted);
  text-transform: capitalize;
}

html body.theme-v2 .cc-elec {
  margin: 16px 18px 0;
  padding: 12px 0 16px;
  border-top: 1px solid var(--v2-sep);
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 8px;
}

html body.theme-v2 .cc-elec-l {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--v2-muted);
}

html body.theme-v2 .cc-elec-v {
  font-family: var(--font-mono);
  font-size: 16px;
  font-weight: 700;
  color: var(--v2-ink);
}

html body.theme-v2 .cc-win {
  margin-top: auto;
  padding: 12px 18px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  background: linear-gradient(180deg, color-mix(in srgb, var(--pc) 7%, var(--v2-card)), color-mix(in srgb, var(--pc) 12%, var(--v2-card)));
  border-top: 1px solid color-mix(in srgb, var(--pc) 18%, var(--v2-sep));
}

html body.theme-v2 .cc-win-l {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--v2-muted);
}

html body.theme-v2 .cc-win-p {
  display: inline-flex;
  align-items: center;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .04em;
  color: color-mix(in srgb, var(--pc) 75%, var(--v2-ink));
}

@media (max-width: 720px) {
  html body.theme-v2 .const-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }

  html body.theme-v2 .cc-top {
    padding: 12px 14px 0;
  }

  html body.theme-v2 .cc-name {
    padding: 0 14px;
    font-size: 18px;
    margin-top: 8px;
  }

  html body.theme-v2 .cc-dist {
    padding: 3px 14px 0;
    font-size: 12px;
  }

  html body.theme-v2 .cc-elec {
    margin: 12px 14px 0;
    padding: 10px 0 12px;
    flex-direction: column;
    gap: 2px;
  }

  html body.theme-v2 .cc-elec-v {
    font-size: 15px;
  }

  html body.theme-v2 .cc-win {
    padding: 10px 14px;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
  }
}

@media (max-width: 380px) {
  html body.theme-v2 .const-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}

html body.theme-v2 .cc-name {
  font-family: 'DM Serif Display', Georgia, serif !important;
  letter-spacing: -.01em !important;
  text-transform: none;
}

/* ==========================================================================
   Stats page: chart cards (the KPI grids keep their own tinted cards)
   ========================================================================== */
html body.theme-v2 #page-stats .charts-2col {
  display: grid;
  gap: 16px;
}

@media (max-width: 1023px) {
  html body.theme-v2 #page-stats .charts-2col {
    grid-template-columns: minmax(0, 1fr);
  }

  html body.theme-v2 #page-stats .charts-2col>* {
    grid-column: 1 / -1;
  }
}

html body.theme-v2 #page-stats .charts-2col>.card {
  min-width: 0;
}

html body.theme-v2 #page-stats .card {
  padding: 0 !important;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  background: var(--v2-card) !important;
  border: 1px solid var(--v2-card-border) !important;
  border-radius: 20px !important;
  box-shadow: none !important;
}

html body.theme-v2 #page-stats .card-header {
  padding: 20px 24px 0;
  margin: 0;
  border: 0;
  background: transparent;
}

html body.theme-v2 #page-stats .card-header h3 {
  margin: 0;
  font-family: 'DM Serif Display', Georgia, serif !important;
  font-size: 20px;
  font-weight: 700;
  line-height: 1.2;
  letter-spacing: -.005em !important;
  color: var(--v2-ink);
  text-transform: none;
}

html body.theme-v2 #page-stats .card-body {
  flex: 1;
  padding: 8px 16px 20px !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

html body.theme-v2 #page-stats .card-body>div {
  max-width: 100%;
}

@media (max-width: 720px) {
  html body.theme-v2 #page-stats .charts-2col {
    gap: 12px;
  }

  html body.theme-v2 #page-stats .card {
    border-radius: 18px !important;
  }

  html body.theme-v2 #page-stats .card-header {
    padding: 16px 16px 0;
  }

  html body.theme-v2 #page-stats .card-header h3 {
    font-size: 18px;
  }

  html body.theme-v2 #page-stats .card-body {
    padding: 4px 6px 14px !important;
  }
}

/* ==========================================================================
   Home: bye-poll announcement banner (slim, high-contrast, small text)
   ========================================================================== */
html body.theme-v2 .bypoll-ticker-banner {
  margin: 16px 0 0;
  padding: 8px 10px 8px 8px;
  gap: 12px;
  align-items: center;
  flex-wrap: nowrap;
  height: auto;
  background: linear-gradient(90deg, #231616 0%, #3A2424 100%);
  color: #F7F2EC;
  border: 1px solid #4A3030;
  border-radius: 14px;
  box-shadow: 0 6px 18px -8px rgba(35, 22, 22, .55);
  overflow: hidden;
}

html body.theme-v2 .bypoll-ticker-badge {
  flex: none;
  padding: 4px 10px;
  gap: 7px;
  border-radius: 999px;
  background: #F2B544;
  color: #231616;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
  box-shadow: none;
}

html body.theme-v2 .bypoll-ticker-dot {
  width: 7px;
  height: 7px;
  background: #B3261E;
  animation: v2BannerPulse 1.6s ease-in-out infinite;
}

@keyframes v2BannerPulse {

  0%,
  100% {
    box-shadow: 0 0 0 0 rgba(179, 38, 30, .55);
  }

  60% {
    box-shadow: 0 0 0 6px rgba(179, 38, 30, 0);
  }
}

html body.theme-v2 .bypoll-ticker-track-wrap {
  flex: 1 1 auto;
  min-width: 0;
  overflow: visible;
}

html body.theme-v2 .bypoll-ticker-content {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 4px 14px;
  width: 100%;
}

html body.theme-v2 .bypoll-ticker-content .ticker-item {
  font-size: 13px;
  line-height: 1.4;
  color: #E9DFD4;
  white-space: normal;
}

html body.theme-v2 .bypoll-ticker-content .ticker-item strong {
  color: #FFFFFF;
  font-weight: 700;
}

html body.theme-v2 .bypoll-ticker-content .ticker-link {
  color: #FFFFFF;
  border-bottom: 1px dotted rgba(255, 255, 255, .55);
}

html body.theme-v2 .bypoll-ticker-content .ticker-link:hover {
  border-bottom-color: #F2B544;
  color: #F2B544;
}

html body.theme-v2 .bypoll-ticker-content .ticker-cta {
  margin-left: 0;
  flex: none;
  padding: 5px 12px;
  border-radius: 999px;
  background: rgba(255, 255, 255, .12);
  color: #F2B544;
  font-size: 12px;
  font-weight: 700;
  white-space: nowrap;
  text-decoration: none;
  transition: background .15s;
}

html body.theme-v2 .bypoll-ticker-content .ticker-cta:hover {
  background: rgba(255, 255, 255, .22);
}

@media (max-width: 720px) {
  html body.theme-v2 .bypoll-ticker-banner {
    margin-top: 12px;
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
    padding: 10px 12px;
    border-radius: 14px;
  }

  html body.theme-v2 .bypoll-ticker-track-wrap {
    width: 100%;
    flex: none;
  }

  html body.theme-v2 .bypoll-ticker-content {
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
  }

  html body.theme-v2 .bypoll-ticker-content .ticker-item {
    font-size: 12.5px;
  }

  html body.theme-v2 .bypoll-ticker-content .ticker-cta {
    padding: 4px 10px;
    font-size: 12px;
  }
}

body.theme-v2 .bd-may-line .bd-may-pty {
  font-weight: 800;
  letter-spacing: .04em;
}

/* By-poll detail (mobile): calmer candidate rows */
@media (max-width: 720px) {
  body.theme-v2 .bd-table tr:not(.bd-grp) {
    grid-template-columns: 22px minmax(0, 1fr) auto;
    column-gap: 10px;
    row-gap: 6px;
    padding: 12px 16px;
    align-items: center;
  }

  body.theme-v2 .bd-table td.bd-no {
    grid-area: 1 / 1;
    align-self: start;
    padding-top: 3px !important;
    font-size: 12px;
    color: var(--v2-faint) !important;
  }

  body.theme-v2 .bd-table td.bd-cname {
    grid-area: 1 / 2;
    min-width: 0;
  }

  body.theme-v2 .bd-table .bd-cn {
    font-size: 15px;
    font-weight: 700;
    line-height: 1.3;
  }

  body.theme-v2 .bd-table .bd-may-line {
    margin-top: 3px;
    font-size: 12px;
    gap: 5px;
    color: var(--v2-muted);
  }

  body.theme-v2 .bd-table .bd-may {
    font-size: 10px;
    padding: 0 5px;
  }

  body.theme-v2 .bd-table td.bd-r {
    grid-area: 1 / 3;
    align-self: start;
    padding-top: 2px !important;
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    opacity: .9;
  }

  body.theme-v2 .bd-table td.bd-cparty {
    grid-area: 2 / 2 / 3 / 4;
    display: flex !important;
    align-items: center;
    flex-wrap: wrap;
    gap: 4px 8px;
  }

  body.theme-v2 .bd-table .bd-pchip {
    font-size: 12px;
    padding: 2px 9px;
  }

  body.theme-v2 .bd-table .bd-pchip .pflag {
    width: 13px;
    height: 13px;
    margin-right: 5px;
  }

  body.theme-v2 .bd-table .bd-ally {
    margin: 0;
    font-size: 12px;
    color: var(--v2-muted);
  }

  body.theme-v2 .bd-table td.bd-sym {
    grid-area: 3 / 2 / 4 / 4;
    font-size: 12px;
    color: var(--v2-muted) !important;
    line-height: 1.3;
  }

  body.theme-v2 .bd-table td.bd-sym::before {
    content: "Symbol · ";
    content: "Symbol · " !important;
    display: inline !important;
    color: var(--v2-faint);
    font-weight: 600;
  }

  body.theme-v2 .bd-table tr.bd-grp td {
    font-size: 11px;
    padding: 9px 16px !important;
  }
}

body.theme-v2 .bd-rank .bd-rank-no {
  font-weight: 800;
  color: var(--v2-ink);
}

body.theme-v2 .bd-rank .bd-rank-2nd {
  font-weight: 800;
  color: var(--v2-ink);
}

/* Booth rank lists: text left, votes always in a right-hand column (same in both lists, all widths) */
html body.theme-v2 .bd-rank li {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  column-gap: 14px;
  align-items: start;
  flex-wrap: nowrap;
}

html body.theme-v2 .bd-rank li>span:last-child {
  white-space: nowrap;
  text-align: right;
  align-self: start;
  padding-top: 1px;
}

html body.theme-v2 .bd-rank li>span:first-child {
  min-width: 0;
}

body.theme-v2 .bd-may {
  white-space: nowrap;
}

/* By-polls vacancy tracker (mobile): aligned 2-column card rows */
@media (max-width: 720px) {
  html body.theme-v2 #bypolls-table .bypolls-table tr:not(.table-group-header-row) {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    column-gap: 16px;
    row-gap: 12px;
    padding: 16px;
    align-items: start;
  }

  html body.theme-v2 #bypolls-table .bypolls-table td {
    padding: 0 !important;
    text-align: left;
  }

  html body.theme-v2 #bypolls-table .bypolls-table td:nth-child(1) {
    grid-area: 1 / 1;
    margin: 0;
  }

  html body.theme-v2 #bypolls-table .bypolls-table td:nth-child(5) {
    grid-area: 1 / 2;
    text-align: right !important;
    justify-self: end;
    margin: 0;
  }

  html body.theme-v2 #bypolls-table .bypolls-table td:nth-child(2) {
    grid-area: 2 / 1;
    margin: 0;
    padding-top: 12px !important;
    border-top: 1px solid var(--v2-sep);
  }

  html body.theme-v2 #bypolls-table .bypolls-table td:nth-child(3) {
    grid-area: 2 / 2;
    margin: 0;
    padding-top: 12px !important;
    border-top: 1px solid var(--v2-sep);
  }

  html body.theme-v2 #bypolls-table .bypolls-table td:nth-child(4) {
    grid-area: 3 / 1 / 4 / 3;
    margin: 0;
  }

  html body.theme-v2 #bypolls-table .bypolls-table td:nth-child(2)::before,
  html body.theme-v2 #bypolls-table .bypolls-table td:nth-child(3)::before {
    display: block !important;
    margin-bottom: 4px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--v2-muted);
  }

  html body.theme-v2 #bypolls-table .bypolls-table td:nth-child(2)::before {
    content: "Previous MLA" !important;
  }

  html body.theme-v2 #bypolls-table .bypolls-table td:nth-child(3)::before {
    content: "Vacated" !important;
  }

  html body.theme-v2 #bypolls-table .constituency-cell {
    display: block;
  }

  html body.theme-v2 #bypolls-table .constituency-cell .ac-pill {
    display: block;
    min-width: 0;
    margin-bottom: 2px;
    font-size: 11px;
    letter-spacing: .06em;
  }

  html body.theme-v2 #bypolls-table .constituency-cell .ac-pill::before {
    content: "AC ";
  }

  html body.theme-v2 #bypolls-table .const-link {
    font-size: 16px;
    line-height: 1.25;
    display: block;
  }

  html body.theme-v2 #bypolls-table .mla-cell .mla-name {
    font-size: 14px;
    line-height: 1.3;
  }

  html body.theme-v2 #bypolls-table .bk-date {
    font-size: 13px;
  }

  html body.theme-v2 #bypolls-table .resignation-cell .reason-chip {
    font-size: 12.5px;
  }

  html body.theme-v2 #bypolls-table .bk-status-pill {
    font-size: 12px;
    padding: 4px 10px;
  }

  html body.theme-v2 #bypolls-table .bk-track-meta {
    font-size: 12px;
  }

  html body.theme-v2 #bypolls-table .bypolls-table tr.table-group-header-row td {
    padding: 10px 16px !important;
  }
}

@media (max-width: 720px) {
  html body.theme-v2 #bypolls-table .bypolls-table tr.table-group-header-row td {
    padding: 12px 16px !important;
    background: var(--v2-soft) !important;
  }

  html body.theme-v2 #bypolls-table .table-group-title {
    padding: 0 !important;
    margin: 0 !important;
  }
}

@media (max-width: 720px) {
  html body.theme-v2 #bypolls-table .bypolls-table tr.table-group-header-row {
    padding: 0 !important;
    display: block !important;
  }
}
/* Home: note under the hung-assembly chart */
body.theme-v2 .hung-note { margin: 14px 0 0; font-size: 12.5px; line-height: 1.5; color: var(--v2-muted); max-width: 520px; }
body.theme-v2 .hung-note strong { color: var(--v2-ink-2); font-weight: 700; }
@media (max-width: 720px) { body.theme-v2 .hung-note { font-size: 12px; margin-top: 12px; } }

/* Home headline: highlighted terms with explainer tooltips */
body.theme-v2 .hung-title { line-height: 1.02; }
body.theme-v2 .hung-term {
  position: relative; display: inline; cursor: help; color: var(--v2-berry); font-style: italic;
  background: none; border-radius: 2px; padding: 0 .04em; outline: none; -webkit-tap-highlight-color: transparent;
}
body.theme-v2 .hung-term:focus-visible { box-shadow: 0 0 0 2px var(--v2-berry); }
body.theme-v2 .hung-tip {
  --shift: 0px;
  position: absolute; left: 0; top: calc(100% + 10px); z-index: 60; width: max-content; max-width: min(280px, calc(100vw - 32px));
  transform: translateX(var(--shift)) translateY(4px); opacity: 0; visibility: hidden; pointer-events: none; transition: opacity .15s ease, transform .15s ease, visibility .15s;
  padding: 12px 14px; border-radius: 12px; background: #231616; color: #F7F2EC; box-shadow: 0 12px 30px rgba(35, 22, 22, .35);
  font-family: var(--font-body); font-size: 13.5px; font-style: normal; font-weight: 500; line-height: 1.45; letter-spacing: 0; text-align: left; white-space: normal;
}
body.theme-v2 .hung-tip b { display: block; margin-bottom: 3px; font-size: 12px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: #F2B544; }
body.theme-v2 .hung-term:hover .hung-tip,
body.theme-v2 .hung-term:focus .hung-tip,
body.theme-v2 .hung-term:focus-within .hung-tip { opacity: 1; visibility: visible; transform: translateX(var(--shift)) translateY(0); }
@media (max-width: 720px) { body.theme-v2 .hung-title { line-height: 1.05; } }

/* Results: seat-wise result grid */
body.theme-v2 .rs-seatmap { background: var(--v2-card); border: 1px solid var(--v2-card-border); border-radius: 20px; padding: 20px 24px; margin-bottom: 20px; }
body.theme-v2 .rs-seatmap-head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; flex-wrap: wrap; }
body.theme-v2 .rs-seatgrid { display: grid; grid-template-columns: repeat(26, minmax(0, 1fr)); gap: 3px; margin-top: 16px; }
body.theme-v2 .rs-seatgrid span { aspect-ratio: 1; border-radius: 3px; cursor: pointer; transition: opacity .15s, transform .1s; }
body.theme-v2 .rs-seatgrid span:hover { transform: scale(1.18); position: relative; z-index: 1; }
body.theme-v2 .rs-seatmap-axis { display: flex; justify-content: space-between; margin-top: 6px; font-family: var(--font-mono); font-size: 12px; color: var(--v2-muted); }
body.theme-v2 .rs-seatlegend { display: flex; flex-wrap: wrap; gap: 6px 14px; margin-top: 12px; }
body.theme-v2 .rs-leg { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; color: var(--v2-ink-2); }
body.theme-v2 .rs-leg i { width: 9px; height: 9px; border-radius: 3px; flex: none; }
body.theme-v2 .rs-leg b { font-family: var(--font-mono); font-weight: 500; color: var(--v2-ink); }
@media (max-width: 720px) {
  body.theme-v2 .rs-seatmap { padding: 16px; border-radius: 18px; margin-bottom: 14px; }
  body.theme-v2 .rs-seatgrid { grid-template-columns: repeat(18, minmax(0, 1fr)); gap: 2px; }
  body.theme-v2 .rs-seatgrid span:hover { transform: none; }
}

/* Results: seat-wise grid and KPI cards side by side (1 x 1) on wide screens */
body.theme-v2 .rs-top { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 20px; align-items: stretch; margin-bottom: 20px; }
body.theme-v2 .rs-top > .rs-seatmap { margin-bottom: 0; display: flex; flex-direction: column; }
body.theme-v2 .rs-top > .results-kpi-grid { margin: 0; align-content: stretch; }
body.theme-v2 .rs-top .rs-seatgrid { grid-template-columns: repeat(18, minmax(0, 1fr)); }
@media (max-width: 1023px) {
  body.theme-v2 .rs-top { grid-template-columns: minmax(0, 1fr); gap: 14px; margin-bottom: 14px; }
}

/* Results: KPI cards as one column of four beside the seat grid (wide screens) */
@media (min-width: 1024px) {
  html body.theme-v2 .rs-top > .results-kpi-grid { grid-template-columns: minmax(0, 1fr); grid-auto-rows: 1fr; gap: 12px; }
  html body.theme-v2 .rs-top > .results-kpi-grid .tcard { padding: 14px 18px !important; gap: 4px; justify-content: center; }
}

/* Results: seat-wise grid sits directly on the page (no card background or border) */
html body.theme-v2 .rs-seatmap { background: none !important; border: 0 !important; box-shadow: none !important; padding-left: 0; padding-right: 0; }
@media (max-width: 720px) { html body.theme-v2 .rs-seatmap { padding: 4px 0 0; } }

/* Results: link card to the Stats page (replaces the KPI cards) */
body.theme-v2 .rs-statslink {
  display: flex; flex-direction: column; justify-content: center; gap: 10px; padding: 28px; text-decoration: none; color: var(--v2-ink);
  background: linear-gradient(145deg, color-mix(in srgb, var(--v2-berry) 14%, var(--v2-card)) 0%, color-mix(in srgb, var(--v2-berry) 4%, var(--v2-card)) 100%);
  border: 1px solid color-mix(in srgb, var(--v2-berry) 30%, var(--v2-card)); border-radius: 20px; transition: box-shadow .15s ease, transform .15s ease, border-color .15s ease;
}
body.theme-v2 .rs-statslink:hover { box-shadow: 0 10px 28px var(--v2-shadow); transform: translateY(-2px); border-color: color-mix(in srgb, var(--v2-berry) 50%, var(--v2-card)); }
body.theme-v2 .rs-statslink-eyebrow { font-size: 12px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--v2-berry); }
body.theme-v2 .rs-statslink-title { font-family: 'DM Serif Display', Georgia, serif; font-size: clamp(26px, 3vw, 36px); font-weight: 700; line-height: 1.1; letter-spacing: -.01em; }
body.theme-v2 .rs-statslink-text { font-size: 15px; line-height: 1.55; color: var(--v2-ink-2); max-width: 460px; }
body.theme-v2 .rs-statslink-cta { align-self: flex-start; margin-top: 6px; display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 20px; border-radius: 999px; background: var(--v2-berry-fill); color: #fff; font-size: 14px; font-weight: 700; }
body.theme-v2 .rs-statslink:hover .rs-statslink-cta { background: var(--v2-berry-hover); }
@media (max-width: 720px) {
  body.theme-v2 .rs-statslink { padding: 20px; border-radius: 18px; gap: 8px; }
  body.theme-v2 .rs-statslink-text { font-size: 14px; }
  body.theme-v2 .rs-statslink-cta { width: 100%; justify-content: center; }
}

/* Results: seat grid now lives inside "Seats by party" (replaces the old split bar); Stats link is a slim strip */
body.theme-v2 .rs-tally .rs-seatgrid { grid-template-columns: repeat(39, minmax(0, 1fr)); margin-top: 16px; }
body.theme-v2 .rs-tally .rs-seatmap-axis { margin-top: 6px; }
body.theme-v2 .rs-tally .rs-chips { margin-top: 14px; }
@media (max-width: 1023px) { body.theme-v2 .rs-tally .rs-seatgrid { grid-template-columns: repeat(26, minmax(0, 1fr)); } }
@media (max-width: 720px) { body.theme-v2 .rs-tally .rs-seatgrid { grid-template-columns: repeat(18, minmax(0, 1fr)); } }
html body.theme-v2 .rs-statslink { flex-direction: row; align-items: center; justify-content: space-between; gap: 24px; padding: 20px 24px; margin-bottom: 20px; }
body.theme-v2 .rs-statslink-body { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
body.theme-v2 .rs-statslink-title { font-size: clamp(22px, 2.4vw, 28px); }
body.theme-v2 .rs-statslink-text { max-width: 640px; font-size: 14px; }
body.theme-v2 .rs-statslink-cta { flex: none; align-self: center; margin-top: 0; }
@media (max-width: 720px) {
  html body.theme-v2 .rs-statslink { flex-direction: column; align-items: stretch; gap: 14px; padding: 18px; margin-bottom: 14px; }
  body.theme-v2 .rs-statslink-cta { align-self: stretch; }
}

/* Seats-by-party pills: tinted in each party's colour */
body.theme-v2 .rs-pill.rs-pill-party {
  background: color-mix(in srgb, var(--pc) 10%, var(--v2-card));
  border-color: color-mix(in srgb, var(--pc) 32%, var(--v2-card));
  color: color-mix(in srgb, var(--pc) 70%, var(--v2-ink));
}
body.theme-v2 .rs-pill.rs-pill-party span { color: inherit; }
body.theme-v2 .rs-pill.rs-pill-party:hover { background: color-mix(in srgb, var(--pc) 18%, var(--v2-card)); border-color: color-mix(in srgb, var(--pc) 55%, var(--v2-card)); }
body.theme-v2 .rs-pill.rs-pill-party.on { background: var(--pc); border-color: var(--pc); color: #fff; }
html.dark-mode body.theme-v2 .rs-pill.rs-pill-party:not(.on) { background: color-mix(in srgb, var(--pc) 18%, var(--v2-card)); color: color-mix(in srgb, var(--pc) 55%, #fff); }

/* Results: Stats link, slim one-line version */
html body.theme-v2 .rs-statslink {
  flex-direction: row; align-items: center; justify-content: space-between; gap: 16px; padding: 10px 10px 10px 18px; margin-bottom: 16px; border-radius: 14px;
  background: color-mix(in srgb, var(--v2-berry) 7%, var(--v2-card)); border: 1px solid color-mix(in srgb, var(--v2-berry) 22%, var(--v2-card));
}
html body.theme-v2 .rs-statslink:hover { transform: none; box-shadow: none; border-color: color-mix(in srgb, var(--v2-berry) 45%, var(--v2-card)); }
html body.theme-v2 .rs-statslink-body { flex-direction: row; align-items: baseline; flex-wrap: wrap; gap: 2px 12px; }
html body.theme-v2 .rs-statslink-title { font-family: var(--font-body); font-size: 15px; font-weight: 700; letter-spacing: 0; line-height: 1.3; }
html body.theme-v2 .rs-statslink-text { font-size: 13px; line-height: 1.3; color: var(--v2-muted); max-width: none; }
html body.theme-v2 .rs-statslink-cta { min-height: 34px; padding: 0 14px; font-size: 13px; gap: 6px; }
@media (max-width: 720px) {
  html body.theme-v2 .rs-statslink { flex-direction: row; align-items: center; padding: 10px 10px 10px 14px; gap: 10px; margin-bottom: 12px; }
  html body.theme-v2 .rs-statslink-body { flex-direction: column; gap: 1px; }
  html body.theme-v2 .rs-statslink-text { font-size: 12px; }
  html body.theme-v2 .rs-statslink-cta { align-self: center; width: auto; flex: none; padding: 0 12px; }
}

/* DM Serif Display ships one weight (regular) plus italic: stop the browser faking bold */
body { font-synthesis: none; }

/* All-caps text and CTAs: JetBrains Mono with .05rem letter spacing */
.a-stat .lbl,
.announcement-btn,
.astat-label,
.badge,
.badge-cat,
.banner-item-label,
.banner-item-value div,
.bd-tip-no,
.benchmark-table th,
.bypoll-ticker-badge,
.bypolls-table th,
.card-action,
.card-header h3,
.cd-cand-party-lbl,
.cd-elector-subtitle,
.cd-history-btn,
.cd-meta-badge,
.cd-meta-district,
.cd-mla-tag,
.cd-mla-term,
.cd-snapshot-label,
.comp-col-heading,
.const-dist,
.const-electors-lbl,
.const-winner-lbl,
.data-table th,
.data-table thead th,
.data-table-modern th,
.data-table-v2 th,
.datadood-topbar__back-btn,
.datadood-topbar__brand,
.datadood-topbar__link,
.datadood-topbar__portal-tag,
.dt-table th,
.hero-badge,
.hist-pct-lbl,
.hung-eyebrow,
.kpi-label,
.kpi-section-title,
.mla-label,
.nav-more-sec-title,
.p-code,
.p-label,
.party-tag-v2,
.results-table th,
.sidebar-pretitle,
.stat-label-v2,
.stats-banner-badge,
.stats-filter-bar label,
.stats-showcase-label,
.tcard-label,
.topbar-breadcrumb,
body.theme-v2 .assembly-today-card .astat-label,
body.theme-v2 .astat-card .astat-label,
body.theme-v2 .astat-label,
body.theme-v2 .bd-l,
body.theme-v2 .bd-sample,
body.theme-v2 .bd-table .bd-grp td,
body.theme-v2 .bd-table td.bd-r,
body.theme-v2 .bd-table th,
body.theme-v2 .bd-tags,
body.theme-v2 .bd-winner-l,
body.theme-v2 .bearer-meta-label,
body.theme-v2 .bearer-portfolios-title,
body.theme-v2 .bearer-title,
body.theme-v2 .bk-ann-l,
body.theme-v2 .bk-ann-meta,
body.theme-v2 .bk-ann-poll-l,
body.theme-v2 .bk-lbl,
body.theme-v2 .bypoll-ticker-badge,
body.theme-v2 .bypolls-kpi-lbl,
body.theme-v2 .bypolls-table .table-group-title,
body.theme-v2 .bypolls-table th,
body.theme-v2 .comp-col-heading,
body.theme-v2 .context-label,
body.theme-v2 .data-table th,
body.theme-v2 .data-table-modern th,
body.theme-v2 .ft-col-title,
body.theme-v2 .global-header .desktop-title,
body.theme-v2 .global-header .mobile-title,
body.theme-v2 .global-header h1,
body.theme-v2 .hero-title-badge,
body.theme-v2 .hung-eyebrow,
body.theme-v2 .hung-stat-header,
body.theme-v2 .hung-tip b,
body.theme-v2 .kpi-label,
body.theme-v2 .kpi-section-title,
body.theme-v2 .mla-card-const,
body.theme-v2 .nav-more-sec-title,
body.theme-v2 .page-header[data-eyebrow]::before,
body.theme-v2 .rs-statslink-eyebrow,
body.theme-v2 .section-label,
body.theme-v2 .section-title-small,
body.theme-v2 .table-group-header-row td,
body.theme-v2 .tcard-label,
body.theme-v2 .v2-countdown-grid span,
body.theme-v2 .v2-countdown-top,
body.theme-v2 .v2-eyebrow,
body.theme-v2 table th,
html body.theme-v2 #bypolls-table .bypolls-table td:nth-child(2)::before,
html body.theme-v2 #bypolls-table .bypolls-table td:nth-child(3)::before,
html body.theme-v2 .bypoll-ticker-badge,
html body.theme-v2 .cabinet-grid .bearer-meta-label,
html body.theme-v2 .cabinet-grid .bearer-portfolios-title,
html body.theme-v2 .cabinet-grid .bearer-title,
html body.theme-v2 .cc-elec-l,
html body.theme-v2 .cc-win-l,
.btn,
.btn-primary,
.btn-secondary,
.btn-outline,
.btn-sm,
.btn-share,
.back-btn,
.tab-btn,
.c-btn,
.c-btn-primary,
.c-btn-ghost,
.c-btn-light,
.floating-mail-btn,
.ticker-cta,
.v2-card-cta,
.hung-btn-primary,
.hung-btn-secondary,
.seat-pill-btn,
.vs-nav-btn,
.rs-statslink-cta,
.stats-banner-cta,
.bk-cta,
.bd-link-btn,
.bd-fbtn,
.share-action-btn,
.cd-download-btn,
.data-table-btn,
.dt-ghost-btn,
.benchmark-export-btn,
.vsb-sort-btn,
.vsb-view-btn,
.vs-view-btn,
.vs-btn-primary,
.vs-btn-secondary,
.menu-btn,
.map-cta-title,
.map-cta-card,
[style*="text-transform: uppercase"],
[style*="text-transform:uppercase"]
{
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  letter-spacing: 0.05rem !important;
}

/* Elements that display all-caps text (set by app.js), including text that inherits uppercase */
.caps-text {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  letter-spacing: 0.05rem !important;
}

/* No letter spacing inside the homepage hung-actions buttons */
.hung-actions,
.hung-actions * {
  letter-spacing: normal !important;
}

/* Homepage hung-actions buttons and v2-card-cta links are shown in all caps */
.hung-actions,
.hung-actions *,
.v2-card-cta {
  text-transform: uppercase !important;
}

/* All buttons: ALL CAPS in JetBrains Mono with .05rem letter spacing */
button,
[role="button"],
a[class*="btn"],
.btn,
.btn-primary,
.btn-secondary,
.btn-outline,
.btn-sm,
.btn-share,
.back-btn,
.tab-btn,
.c-btn,
.c-btn-primary,
.c-btn-ghost,
.c-btn-light,
.floating-mail-btn,
.datadood-topbar__back-btn,
.ticker-cta,
.v2-card-cta,
.hung-btn-primary,
.hung-btn-secondary,
.seat-pill-btn,
.vs-nav-btn,
.rs-statslink-cta,
.stats-banner-cta,
.bk-cta,
.bd-link-btn,
.bd-fbtn,
.announcement-btn,
.share-action-btn,
.cd-download-btn,
.cd-history-btn,
.data-table-btn,
.dt-ghost-btn,
.benchmark-export-btn,
.vsb-sort-btn,
.vsb-view-btn,
.vs-view-btn,
.vs-btn-primary,
.vs-btn-secondary,
.menu-btn,
.nav-item-more,
.ft-refresh {
  text-transform: uppercase !important;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  letter-spacing: 0.05rem !important;
}

/* Keep normal letter spacing in the homepage hung-actions block (set earlier) */
.hung-actions,
.hung-actions * {
  letter-spacing: normal !important;
}

/* Button labels: overrides the Inter rule for buttons above (same specificity, later in file) */
body.theme-v2 button,
body.theme-v2 .btn,
body.theme-v2 .tab-btn,
body.theme-v2 .secondary-nav .nav-item-more,
body.theme-v2 .secondary-nav .nav-item-more.has-current,
body.theme-v2 .ft-refresh {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  text-transform: uppercase !important;
  letter-spacing: 0.05rem !important;
}

body.theme-v2 .hung-actions,
body.theme-v2 .hung-actions * {
  letter-spacing: normal !important;
}

/* Tablet widths: keep the top navigation on one row with compact pills (icons hidden) */
@media (min-width: 769px) and (max-width: 1100px) {
  body.theme-v2 .secondary-nav-content {
    flex-wrap: nowrap !important;
    justify-content: center;
    gap: 6px !important;
    padding: 8px 16px !important;
  }

  body.theme-v2 .secondary-nav .nav-item,
  body.theme-v2 .secondary-nav .nav-item-more {
    min-height: 34px !important;
    padding: 6px 12px !important;
    gap: 0 !important;
    font-size: 13px !important;
  }

  body.theme-v2 .secondary-nav .nav-item:not(.nav-item-more) .ni {
    display: none !important;
  }
}

/* Top navigation (tablet and desktop): no groups, every item is a pill */
@media (min-width: 769px) {
  body.theme-v2 .secondary-nav .nav-section,
  body.theme-v2 .secondary-nav .nav-section+.nav-section {
    display: contents !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    background: none !important;
  }

  body.theme-v2 .secondary-nav .nav-section::before,
  body.theme-v2 .secondary-nav .nav-section+.nav-section::before {
    content: none !important;
    display: none !important;
  }

  body.theme-v2 .secondary-nav .nav-item,
  body.theme-v2 .secondary-nav .nav-item-more {
    display: inline-flex !important;
    align-items: center;
    gap: 6px;
    min-height: 38px;
    padding: 8px 16px !important;
    border: 1px solid rgba(35, 26, 24, 0.16) !important;
    border-radius: 999px !important;
    background: transparent;
    white-space: nowrap;
  }

  body.theme-v2 .secondary-nav .nav-item.active,
  body.theme-v2 .secondary-nav .nav-item.has-current {
    border-color: transparent !important;
  }
}

html.dark-mode body.theme-v2 .secondary-nav .nav-item,
html.dark-mode body.theme-v2 .secondary-nav .nav-item-more {
  border-color: rgba(255, 255, 255, 0.18) !important;
}

/* Active navigation pill keeps its own colours when hovered (no white patch) */
body.theme-v2 .secondary-nav .nav-item.active:hover,
body.theme-v2 .secondary-nav .nav-item[aria-current="page"]:hover {
  background: var(--v2-pill-bg) !important;
  color: var(--v2-pill-fg) !important;
}

/* Results view switcher (.v2-seg) uses the same label style as the stats tabs (.tabs-container) */
body.theme-v2 .v2-seg a {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 14px;
  font-weight: 700;
  text-transform: uppercase !important;
  letter-spacing: 0.05rem !important;
}

/* More button: one chevron on tablet and desktop (the desktop chevron turns when the menu opens) */
@media (min-width: 721px) {
  body.theme-v2 .secondary-nav .nav-item.nav-item-more .nav-more-icon-mobile.ni.ni {
    display: none !important;
  }

  body.theme-v2 .secondary-nav .nav-item.nav-item-more .nav-more-icon-desktop.ni.ni {
    display: inline-block !important;
  }
}

/* More button on phones: only the chevron-up shows, even while the menu is open */
@media (max-width: 720px) {
  body.theme-v2 .secondary-nav .nav-item.nav-item-more .nav-more-icon-desktop.ni.ni {
    display: none !important;
  }

  body.theme-v2 .secondary-nav .nav-item.nav-item-more .nav-more-icon-mobile.ni.ni {
    display: inline-block !important;
  }
}

/* ---- Composition of the House (index.html .comp-v3) ----------------------- */
body.theme-v2 .assembly-comp-card.comp-v3 {
  padding: 28px 28px 24px;
  background: var(--surface, #fff);
  border: 1px solid var(--v2-sep);
  border-radius: 16px;
  box-shadow: none;
}

body.theme-v2 .comp-v3-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
  flex-wrap: wrap;
}

body.theme-v2 .comp-v3 .comp-title {
  margin: 0;
  font-family: var(--font-display);
  font-size: 22px;
  font-weight: 400;
  color: var(--v2-ink);
}

body.theme-v2 .comp-v3-sub {
  font-size: 13px;
  color: var(--v2-ink-2);
}

/* Stacked bar with majority marker */
body.theme-v2 .comp-v3-bar-wrap {
  position: relative;
  margin: 16px 0 44px;
}

body.theme-v2 .comp-v3-bar {
  display: flex;
  height: 22px;
  border-radius: 999px;
  overflow: hidden;
  gap: 2px;
  background: var(--v2-sep);
}

body.theme-v2 .comp-v3-seg {
  display: block;
  height: 100%;
}

body.theme-v2 .comp-v3-marker {
  position: absolute;
  top: -8px;
  bottom: -30px;
  width: 0;
  border-left: 2px dashed var(--v2-ink);
  transform: translateX(-1px);
  pointer-events: none;
}

body.theme-v2 .comp-v3-marker span {
  position: absolute;
  bottom: -6px;
  left: 50%;
  transform: translate(-50%, 100%);
  font-size: 11px;
  font-weight: 700;
  color: var(--v2-ink);
  white-space: nowrap;
}

/* Three totals */
body.theme-v2 .comp-v3-totals {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 26px;
}

body.theme-v2 .comp-v3-total {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 14px 16px;
  border-radius: 12px;
  background: color-mix(in srgb, var(--c) 9%, transparent);
  border-left: 4px solid var(--c);
}

body.theme-v2 .comp-v3-total-label {
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.05rem;
  text-transform: uppercase;
  color: var(--v2-ink-2);
}

body.theme-v2 .comp-v3-total-num {
  font-family: var(--font-display);
  font-size: 30px;
  line-height: 1;
  color: var(--v2-ink);
}

body.theme-v2 .comp-v3-total-pct {
  font-size: 12px;
  color: var(--v2-ink-2);
}

/* Party list */
body.theme-v2 .comp-v3-list {
  list-style: none;
  margin: 0;
  padding: 0;
  border-top: 1px solid var(--v2-sep);
}

body.theme-v2 .comp-v3-row {
  display: grid;
  grid-template-columns: 12px minmax(0, 1fr) auto;
  column-gap: 12px;
  row-gap: 8px;
  align-items: center;
  padding: 16px 0;
  border-bottom: 1px solid var(--v2-sep);
}

body.theme-v2 .comp-v3-dot {
  width: 12px;
  height: 12px;
  border-radius: 4px;
  align-self: start;
  margin-top: 5px;
}

body.theme-v2 .comp-v3-name {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

body.theme-v2 .comp-v3-party {
  font-size: 16px;
  font-weight: 700;
  color: var(--v2-ink);
}

body.theme-v2 .comp-v3-group {
  font-family: var(--font-mono);
  font-size: 11px;
  letter-spacing: 0.05rem;
  text-transform: uppercase;
  color: var(--v2-ink-2);
}

body.theme-v2 .comp-v3-detail {
  font-size: 13px;
  color: var(--v2-ink-2);
  line-height: 1.5;
}

body.theme-v2 .comp-v3-count {
  font-family: var(--font-display);
  font-size: 24px;
  color: var(--v2-ink);
  align-self: center;
}

body.theme-v2 .comp-v3-mini {
  grid-column: 2 / 4;
  height: 6px;
  border-radius: 999px;
  background: var(--v2-sep);
  overflow: hidden;
}

body.theme-v2 .comp-v3-mini i {
  display: block;
  height: 100%;
  border-radius: 999px;
}

body.theme-v2 .comp-v3-row-vacant .comp-v3-party {
  font-size: 15px;
}

body.theme-v2 .comp-v3-link {
  display: inline-block;
  margin-top: 18px;
  font-size: 14px;
  font-weight: 700;
  color: var(--v2-berry);
  text-decoration: none;
}

body.theme-v2 .comp-v3-link:hover {
  text-decoration: underline;
}

@media (max-width: 560px) {
  body.theme-v2 .comp-v3-totals {
    grid-template-columns: 1fr;
  }
}

/* Composition of the House: four group cards (Government, DMK, AIADMK, Others) */
body.theme-v2 .comp-v3-groups {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
  margin: 0 0 16px;
}

body.theme-v2 .comp-v3-group-card {
  padding: 0 18px 16px;
  border-radius: 0;
  background: color-mix(in srgb, var(--c) 7%, transparent);
  border-top: 0;
}

body.theme-v2 .comp-v3-group-top {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
}

body.theme-v2 .comp-v3-group-name {
  font-family: var(--font-mono);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.05rem;
  text-transform: uppercase;
  color: var(--c);
}

body.theme-v2 .comp-v3-group-num {
  font-family: var(--font-display);
  font-size: 32px;
  line-height: 1;
  color: var(--c);
}

body.theme-v2 .comp-v3-group-share {
  margin: 6px 0 12px;
  font-size: 13px;
  color: var(--v2-ink-2);
}

body.theme-v2 .comp-v3-members {
  list-style: none;
  margin: 0;
  padding: 10px 0 0;
  border-top: 0;
}

body.theme-v2 .comp-v3-members li {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 6px 0;
  font-size: 14px;
  color: var(--v2-ink);
}

body.theme-v2 .comp-v3-members li b {
  font-family: var(--font-display);
  font-weight: 400;
}

body.theme-v2 .comp-v3-vacant {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 6px;
  margin: 0 0 6px;
  font-size: 13px;
  color: var(--v2-ink-2);
}

body.theme-v2 .comp-v3-vacant b {
  color: var(--v2-ink);
}

body.theme-v2 .comp-v3-vacant-dot {
  width: 10px;
  height: 10px;
  border-radius: 3px;
  background: #A89C92;
  align-self: center;
}

@media (max-width: 560px) {
  body.theme-v2 .comp-v3-groups {
    grid-template-columns: 1fr;
  }
}

/* Group card header and share line take a tint of the party colour */
body.theme-v2 .comp-v3-group-top,
body.theme-v2 .comp-v3-group-share {
  background: color-mix(in srgb, var(--c) 14%, transparent);
  padding-left: 10px;
  padding-right: 10px;
}

body.theme-v2 .comp-v3-group-top {
  padding-top: 8px;
  padding-bottom: 8px;
  margin: 0 -18px;
  padding-left: 18px;
  padding-right: 18px;
}

body.theme-v2 .comp-v3-group-share {
  margin: 0 -18px 12px;
  padding: 6px 18px;
}

/* Title standard for homepage section and card headings (same look as the page titles) */
body.theme-v2 .assembly-today-title,
body.theme-v2 .v2-h2 {
  margin: 0;
  font-family: var(--font-display) !important;
  font-size: clamp(24px, 3vw, 30px) !important;
  font-weight: 400 !important;
  line-height: 1.15;
  letter-spacing: 0 !important;
  color: var(--v2-ink) !important;
}

body.theme-v2 .comp-title {
  margin: 0 !important;
  font-family: var(--font-display) !important;
  font-size: 22px !important;
  font-weight: 400 !important;
  line-height: 1.2;
  letter-spacing: 0 !important;
  color: var(--v2-ink) !important;
}
