/* ── NY 2026 Endorsement Tracker — Styles ── */

:root { --ink:#0f0e0d; --paper:#f5f0e8; --cream:#ede8dc; --accent:#c8392b; --gold:#b8860b; --muted:#7a7060; --border:#c8bfaa; }
*{box-sizing:border-box;margin:0;padding:0;}
body{font-family:'DM Mono',monospace;background:var(--paper);color:var(--ink);height:100vh;display:flex;flex-direction:column;overflow:hidden;}html{height:100%;}
header{background:#002d72;color:var(--paper);padding:10px 24px;display:flex;align-items:stretch;justify-content:space-between;border-bottom:3px solid #ffd100;flex-shrink:0;}
.header-title{font-family:'DM Serif Display',serif;font-size:1.45rem;}
.header-title span{color:#ffffff;font-style:normal;}
.header-meta{font-size:0.75rem;color:#ffd100;letter-spacing:.08em;text-transform:uppercase;}
.app-body{display:flex;flex:1;overflow:hidden;}
#map-panel{flex:1;position:relative;}
#map{position:absolute;top:0;left:0;right:0;bottom:0;background:#ede8dc;filter:grayscale(0.6);}
#side-panel{width:380px;background:var(--cream);border-left:2px solid #b3875a;display:flex;flex-direction:column;overflow:hidden;flex-shrink:0;}
.side-header{padding:14px 14px 10px;border-bottom:1px solid #b3875a;background:#0077c8;color:var(--paper);flex-shrink:0;}
.side-header-title{font-family:'DM Mono',monospace;font-size:1.1rem;margin-bottom:2px;}
.side-header-sub{font-size:0.72rem;color:#ffffff;letter-spacing:.06em;text-transform:uppercase;}
.side-header-row{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;}
.side-filter-bar{padding:8px 12px;border-bottom:1px solid #b3875a;background:#002d72;flex-shrink:0;display:none;gap:6px;flex-wrap:wrap;}
.side-filter-bar.visible{display:flex;}
.filter-chip{font-family:'DM Mono',monospace;font-size:0.7rem;padding:3px 8px;border:1px solid var(--border);background:transparent;color:var(--paper);cursor:pointer;letter-spacing:.06em;text-transform:uppercase;transition:all .15s;}
.filter-chip.active{background:#F2A900;border-color:#F2A900;color:var(--ink)}
.filter-chip:hover:not(.active){border-color:var(--paper);}
.endorser-filter-banner{display:none;padding:7px 14px;background:var(--gold);color:var(--ink);font-size:0.75rem;align-items:center;justify-content:space-between;flex-shrink:0;}
.endorser-filter-banner.visible{display:flex;}
.clear-btn{background:none;border:1px solid var(--ink);font-family:'DM Mono',monospace;font-size:0.7rem;padding:2px 7px;cursor:pointer;}
.clear-btn:hover{background:var(--ink);color:var(--gold);}
#candidates-list{flex:1;overflow-y:auto;padding:10px 14px;}
#candidates-list::-webkit-scrollbar{width:4px;}
#candidates-list::-webkit-scrollbar-track{background:var(--cream);}
#candidates-list::-webkit-scrollbar-thumb{background:var(--border);}
.district-header{font-size:0.7rem;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);padding:4px 6px;border-bottom:1px solid #b3875a;margin-bottom:6px;display:flex;justify-content:space-between;}
.candidate-card{background:#fff8ee;border:1px solid #b3875a;margin-bottom:6px;transition:border-color .15s;}
.candidate-card:hover{border-color:var(--accent);}
.card-header{padding:8px 10px;display:flex;align-items:center;justify-content:space-between;cursor:pointer;}
.candidate-name{font-family:'DM Serif Display',serif;font-size:1.02rem;line-height:1.2;}
.candidate-meta{display:flex;gap:5px;margin-top:3px;flex-wrap:wrap;}
.badge{font-size:0.65rem;padding:1px 5px;letter-spacing:.06em;text-transform:uppercase;border:1px solid;white-space:nowrap;}
.badge-dem{background:#00AEF3;border-color:#00AEF3;color:var(--cream);}
.badge-rep{background:#E81B23;border-color:#E81B23;color:var(--cream);}
.badge-ind{background:#555;border-color:#555;color:var(--cream);}
.badge-inc{background:var(--ink);color:var(--paper);border-color:var(--ink);}
.badge-open{background:#197352;color:#ffffff;border-color:#197352;}
.endorse-count{font-size:0.75rem;color:#b3875a;white-space:nowrap;margin-left:8px;flex-shrink:0;}
.card-body{display:none;padding:0 10px 10px;border-top:1px solid var(--border);}
.card-body.open{display:block;}
.cat-title{font-size:0.68rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin:8px 0 4px;}
.chips{display:flex;flex-wrap:wrap;gap:4px;}
.chip{font-size:0.72rem;padding:3px 7px;background:var(--cream);border:1px solid #b3875a;cursor:pointer;transition:all .15s;line-height:1.3;}
.chip:hover{background:#F2A900;color:var(--ink);border-color:#F2A900;}
.chip.active{background:var(--gold);color:var(--ink);border-color:var(--gold);}
.no-results{padding:30px 20px;text-align:center;color:var(--muted);font-size:0.85rem;line-height:1.8;}

.cand-th{padding:8px 8px 6px;border-bottom:2px solid var(--border);border-right:1px solid var(--border);vertical-align:top;min-width:120px;background:var(--paper);position:sticky;top:0;z-index:2;}
.cand-th:last-child{border-right:none;}
.cand-th-name{font-family:'DM Serif Display',serif;font-size:0.98rem;line-height:1.3;flex:1;}
.cand-th-meta{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:4px;}
.cand-th-count{font-size:0.78rem;color:#b3875a;letter-spacing:.04em;}
.endorser-wrap{display:flex;flex-direction:column;gap:2px;}
.endorser-cat-label{font-size:0.62rem;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);line-height:1;}
.endorser-cat-header{font-size:0.62rem;text-transform:uppercase;letter-spacing:.07em;color:var(--ink);line-height:1;margin-top:8px;margin-bottom:3px;padding-bottom:2px;border-bottom:1px solid var(--border);}
.endorser-cat-header:first-child{margin-top:4px;}
.cand-td{padding:4px 8px;border-bottom:1px solid var(--border);border-right:1px solid var(--border);vertical-align:middle;}
.cand-td:last-child{border-right:none;}

.cand-col-header-top{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:4px;}
.cand-toggle{font-size:0.85rem;color:var(--accent);flex-shrink:0;margin-left:6px;}
.cand-endorser-list{display:none;padding:6px 10px;flex-direction:column;gap:4px;}
.cand-endorser-list.open{display:flex;}
.endorser-item{min-width:0;overflow:hidden;display:flex;align-items:flex-start;}

.badge-dropped{font-size:0.65rem;padding:2px 6px;letter-spacing:.06em;text-transform:uppercase;
  background:#c8392b;color:white;border-radius:2px;white-space:nowrap;flex-shrink:0;margin-left:6px;align-self:center;}
.badge-won{font-size:0.65rem;padding:2px 6px;letter-spacing:.06em;text-transform:uppercase;
  background:#2e7d32;color:white;border-radius:2px;white-space:nowrap;flex-shrink:0;margin-left:6px;align-self:center;}
.badge-lost-primary{font-size:0.65rem;padding:2px 6px;letter-spacing:.06em;text-transform:uppercase;
  background:#e57373;color:white;border-radius:2px;white-space:nowrap;flex-shrink:0;margin-left:6px;align-self:center;}

/* ── Endorser overlay ── */

.endorser-bubble-wrap{
  position:absolute;
  top:12px;right:12px;
  z-index:600;
  pointer-events:auto;
  animation:cardSlideIn .2s ease both;
  width:360px;
}
@keyframes cardSlideIn{
  from{opacity:0;transform:translateY(-6px);}
  to{opacity:1;transform:translateY(0);}
}
.endorser-bubble{
  background:#ffffff;
  color:#0f0e0d;
  font-family:'DM Mono',monospace;
  font-size:0.75rem;
  letter-spacing:.04em;
  border:2px solid #002d72;
  border-radius:2px;
  display:flex;
  flex-direction:column;
  padding:12px 14px 10px;
  box-sizing:border-box;
  position:relative;
  box-shadow:0 4px 18px rgba(0,0,0,.35);
}
.bubble-close{
  position:absolute;
  top:6px;right:6px;
  width:18px;height:18px;
  border-radius:50%;
  background:var(--accent);
  color:white;
  font-size:0.65rem;
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;
  border:none;
  line-height:1;
  pointer-events:auto;
  z-index:10;
  transition:background .15s;
}
.bubble-close:hover{background:#a02020;}
.endorser-bubble .bubble-label{
  font-size:0.58rem;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:#f2a900;
  margin-bottom:4px;
}
.endorser-bubble .bubble-name{
  font-family:'DM Serif Display',serif;
  font-size:0.95rem;
  line-height:1.3;
  word-break:break-word;
  padding-right:16px;
  margin-bottom:6px;
}
.endorser-bubble .bubble-count{
  font-size:0.62rem;
  color:#555;
  letter-spacing:.04em;
  line-height:1.6;
  border-top:1px solid rgba(0,0,0,.1);
  padding-top:6px;
}

/* Make SVG district fills fully hoverable (not just stroke) */
.leaflet-interactive { pointer-events: all !important; outline: none !important; }

/* ── Park labels ── */
.park-label{
  background:transparent;
  border:none;
  box-shadow:none;
  font-family:'DM Mono',monospace;
  font-size:0.55rem;
  font-weight:500;
  letter-spacing:.05em;
  text-transform:uppercase;
  color:#2a3d2c;
  text-shadow:0 0 3px #b8c9b0,0 0 6px #b8c9b0,0 0 9px #b8c9b0;
  white-space:nowrap;
  pointer-events:none;
}
.park-label::before{display:none;}

/* ── District hover tooltip ── */
.district-tooltip{
  background:var(--ink);
  color:var(--paper);
  font-family:'DM Mono',monospace;
  font-size:0.62rem;
  letter-spacing:.06em;
  text-transform:uppercase;
  border:1px solid var(--gold);
  border-radius:2px;
  padding:4px 8px;
  box-shadow:0 2px 8px rgba(0,0,0,.35);
  white-space:nowrap;
}
.district-tooltip::before{display:none;}

/* ── City markers ── */
.city-marker{
  position:absolute;
  transform:translate(-50%, -50%);
  pointer-events:none;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:3px;
}
.city-dot{
  width:5px;
  height:5px;
  border-radius:50%;
  background:var(--ink);
  border:1.5px solid var(--paper);
  box-shadow:0 1px 3px rgba(0,0,0,.4);
  flex-shrink:0;
}
.city-label{
  font-family:'DM Mono',monospace;
  font-size:0.62rem;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--ink);
  white-space:nowrap;
  text-shadow:0 0 3px var(--paper),0 0 6px var(--paper),0 0 9px var(--paper);
  font-weight:500;
  line-height:1;
}
#map-search-wrap{
  position:absolute;
  top:12px;right:12px;
  z-index:601;
  width:360px;
  pointer-events:auto;
  transition:top .2s ease;
}
#map-search-wrap.below-card{
  top:auto;
}
#map-search-input{
  width:100%;
  font-family:'DM Mono',monospace;
  font-size:0.72rem;
  letter-spacing:.04em;
  background:#ffffff;
  color:#0f0e0d;
  border:2px solid var(--border);
  border-radius:2px;
  padding:7px 28px 7px 28px;
  outline:none;
  box-shadow:0 2px 10px rgba(0,0,0,.3);
  transition:border-color .15s;
}
#map-search-input::placeholder{color:#999;}
#map-search-input:focus{border-color:var(--gold);}
#map-search-clear{
  position:absolute;
  right:8px;top:50%;
  transform:translateY(-50%);
  background:none;border:none;
  color:#999;
  font-size:0.8rem;
  cursor:pointer;
  display:none;
  line-height:1;
  padding:2px;
}
#map-search-clear.visible{display:block;}
#map-search-results{
  background:var(--ink);
  border:2px solid var(--border);
  border-top:none;
  border-radius:0 0 2px 2px;
  max-height:260px;
  overflow-y:auto;
  display:none;
  box-shadow:0 4px 14px rgba(0,0,0,.35);
}
#map-search-results.visible{display:block;}
#map-search-results::-webkit-scrollbar{width:3px;}
#map-search-results::-webkit-scrollbar-thumb{background:var(--border);}
.search-result-group{
  font-size:0.58rem;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--gold);
  padding:6px 10px 3px;
  border-top:1px solid rgba(255,255,255,.06);
}
.search-result-group:first-child{border-top:none;}
.search-result-item{
  font-family:'DM Mono',monospace;
  font-size:0.7rem;
  color:var(--paper);
  padding:5px 10px;
  cursor:pointer;
  letter-spacing:.02em;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  transition:background .1s;
}
.search-result-item:hover{background:rgba(255,255,255,.08);}
.search-result-item .result-sub{
  font-size:0.62rem;
  color:var(--muted);
  margin-left:6px;
}
/* Highlighted districts pulse */
.district-highlighted{
  animation:districtPulse 1.5s ease-in-out;
}
@keyframes districtPulse{
  0%{fill-opacity:.08;}
  50%{fill-opacity:.55;}
  100%{fill-opacity:.35;}
}

.overlay-toggle{font-family:'DM Mono',monospace;font-size:0.7rem;letter-spacing:.07em;text-transform:uppercase;padding:4px 10px;border:1px solid var(--border);background:transparent;color:var(--paper);cursor:pointer;transition:all .15s;white-space:nowrap;}
.overlay-toggle.active{background:#f2a900;border-color:#f2a900;color:var(--ink);}
.overlay-toggle:hover:not(.active){border-color:var(--paper);}
.assembly-crumb{margin-top:6px;display:flex;align-items:center;justify-content:space-between;gap:8px;}
.assembly-crumb #assembly-crumb-text{font-size:0.7rem;color:var(--gold);letter-spacing:.06em;text-transform:uppercase;line-height:1.3;}
.crumb-back{font-family:'DM Mono',monospace;font-size:0.68rem;background:none;border:1px solid var(--border);color:var(--muted);padding:2px 7px;cursor:pointer;white-space:nowrap;letter-spacing:.04em;}
.crumb-back:hover{border-color:var(--paper);color:var(--paper);}
.endorse-toggle{display:flex;align-items:center;gap:5px;font-size:0.65rem;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;cursor:pointer;user-select:none;background:none;border:none;padding:0;font-family:'DM Mono',monospace;width:100%;}
.endorse-toggle:hover{color:var(--ink);}
.endorse-toggle-arrow{font-size:0.6rem;transition:transform .15s;display:inline-block;}
.endorse-toggle.open .endorse-toggle-arrow{transform:rotate(90deg);}
.endorse-body{display:none;}
.endorse-body.open{display:block;}

/* ── Mobile collapse toggle ── */
#panel-collapse-btn{display:none;}

/* ── Mobile styles ── */
@media (max-width:768px){
  /* Prevent iOS text size adjustment */
  html { -webkit-text-size-adjust: 100%; }

  /* Header: compact for mobile */
  header{
    flex-direction:column;
    align-items:flex-start;
    gap:6px;
    padding:8px 12px;
  }
  .header-title{font-size:1.1rem;}
  .header-meta{display:none;}
  .header-toggles{display:flex;gap:4px;flex-wrap:nowrap;width:100%;}
  #congToggle,#senateToggle,#assemblyToggle,#resetToggle{
    flex:1;
    font-size:0.58rem;
    padding:4px 2px;
    text-align:center;
    white-space:nowrap;
    letter-spacing:.03em;
  }

  /* App body stacks vertically */
  .app-body{flex-direction:column;overflow:hidden;}

  /* Map fills space above panel */
  #map-panel{flex:1;min-height:0;position:relative;}

  /* Side panel */
  #side-panel{
    width:100%;
    border-left:none;
    border-top:2px solid var(--border);
    flex:none;
    height:55vh;
    overflow:hidden;
    display:flex;
    flex-direction:column;
    transition:height .3s ease;
  }
  #side-panel.collapsed{height:20vh;}

  /* Side header: column layout, collapse btn at top */
  .side-header{
    display:flex !important;
    flex-direction:column !important;
    padding:0 !important;
  }
  #side-header-el{
    padding:0;
  }

  /* Collapse button — full width at top */
  #panel-collapse-btn{
    display:flex;
    align-items:center;
    justify-content:center;
    width:100%;
    background:none;
    border:none;
    border-bottom:1px solid rgba(255,255,255,0.2);
    color:var(--gold);
    font-size:1.4rem;
    cursor:pointer;
    padding:7px 0;
    flex-shrink:0;
    line-height:1;
  }

  /* Title row: counteract parent padding, span full width */
  #side-header-el .side-header-row{
    display:flex;
    align-items:center;
    justify-content:flex-start;
    gap:8px;
    padding:8px 14px 10px;
    width:100%;
    box-sizing:border-box;
    margin:0;
  }
  .side-header-row > div:first-child{flex:1;min-width:0;}
  #clear-all-btn{flex-shrink:0;}
  #assembly-crumb, #senate-crumb{ padding:4px 14px 6px; }

  /* Search bar: collapsed to icon, pinned bottom-left of map */
  #map-search-wrap{
    top:auto !important;
    bottom:12px;
    left:12px;
    right:auto;
    width:auto;
  }
  #map-search-wrap.search-expanded{
    width:calc(100vw - 24px);
  }
  #map-search-input{
    font-size:16px;
    display:none;
    width:100%;
  }
  #map-search-wrap.search-expanded #map-search-input{
    display:block;
  }
  #map-search-results{
    bottom:100%;
    top:auto;
    position:absolute;
    width:100%;
    max-height:220px;
    border-top:2px solid var(--border);
    border-bottom:none;
    border-radius:2px 2px 0 0;
  }
  #map-search-icon-btn{
    display:flex;
    align-items:center;
    justify-content:center;
    width:38px;
    height:38px;
    background:#ffffff;
    border:2px solid var(--border);
    border-radius:2px;
    cursor:pointer;
    box-shadow:0 2px 10px rgba(0,0,0,.3);
    flex-shrink:0;
  }
  #map-search-wrap.search-expanded #map-search-icon-btn{
    display:none;
  }
  #map-search-clear.visible{display:block;}

  /* Candidates list */
  #candidates-list{overflow-y:auto;-webkit-overflow-scrolling:touch;}

  /* Filter bar */
  .side-filter-bar{flex-wrap:wrap;}
  #filter-bar-count{font-size:0.62rem;}




  /* Endorser card: smaller on mobile */
  .endorser-bubble-wrap{
    width:160px;
    top:8px;
    right:8px;
}

  .endorser-bubble .bubble-name{
    font-size:0.85rem;
  }
}

/* ── Loading bar animation ── */
@keyframes loading-bar{from{transform:translateX(0)}to{transform:translateX(150%)}}

/* ── How To overlay ── */
#howto-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.6);
  z-index: 3000;
  pointer-events: none;
}
#howto-overlay.active {
  display: block;
  pointer-events: auto;
}
/* Cut-out: darken everything except the popup area by using a pseudo-element approach.
   The overlay covers the full screen; the popup sits above it with pointer-events. */
#howto-popup {
  display: none;
  position: fixed;
  /* Center in the map panel (right of sidebar). On desktop sidebar is 380px.
     We target the middle 25% of the map area. */
  top: 50%;
  left: calc(-100px + 50vw);
  width: calc((100vw - 380px) * 0.50);
  height: calc((100vw - 380px) * 0.50);
  max-height: 70vh;
  transform: translate(-50%, -50%);
  background: var(--cream, #ede8dc);
  border: 2px solid #ffffff;
  z-index: 3001;
  border-radius: 2px;
  overflow: hidden;
  flex-direction: column;
  box-shadow: 0 8px 40px rgba(0,0,0,0.35);
  /* make it square: use aspect-ratio as a hint but let max-height cap it */
  aspect-ratio: 1 / 1;
}
#howto-popup.active {
  display: flex;
}
#howto-close {
  position: absolute;
  top: 8px;
  right: 10px;
  background: none;
  border: none;
  font-size: 0.95rem;
  color: #333;
  cursor: pointer;
  line-height: 1;
  padding: 2px 4px;
  z-index: 1;
  font-family: 'DM Mono', monospace;
}
#howto-close:hover { color: #000; }
#howto-content {
  padding: 22px 20px 20px;
  overflow-y: auto;
  flex: 1;
  scrollbar-width: thin;
  scrollbar-color: #b3875a var(--cream, #ede8dc);
}
#howto-content::-webkit-scrollbar { width: 5px; }
#howto-content::-webkit-scrollbar-track { background: var(--cream, #ede8dc); }
#howto-content::-webkit-scrollbar-thumb { background: #b3875a; border-radius: 2px; }
#howto-content h2 {
  font-family: 'DM Serif Display', serif;
  font-size: 1rem;
  color: #000;
  margin: 0 0 12px;
  padding-right: 20px;
  border-bottom: 1px solid #b3875a;
  padding-bottom: 8px;
}
#howto-content h3 {
  font-family: 'DM Mono', monospace;
  font-size: 0.85rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: #000;
  margin: 12px 0 4px;
  font-weight: bold;
}
#howto-content p {
  font-size: 0.72rem;
  line-height: 1.55;
  color: #000;
  margin: 0 0 6px;
}
#howto-content ul {
  margin: 4px 0 6px 14px;
  padding: 0;
}
#howto-content li {
  font-size: 0.72rem;
  line-height: 1.55;
  color: #000;
  margin-bottom: 2px;
}
#howto-content strong { color: #000; }

/* Mobile: center in full screen */
@media (max-width: 768px) {
  #howto-popup {
    left: 50%;
    top: 45%;
    width: 72vw;
    height: 72vw;
    max-height: 65vh;
    transform: translate(-50%, -50%);
  }
}

/* ── Map legend ── */
.map-legend {
  background: rgba(255,255,255,0.92);
  border: 1px solid #c8bfaa;
  border-radius: 2px;
  padding: 7px 10px;
  box-shadow: 0 2px 8px rgba(0,0,0,.2);
  font-family: 'DM Mono', monospace;
  display: flex;
  flex-direction: column;
  gap: 5px;
  pointer-events: none;
}
.legend-item {
  display: flex;
  align-items: center;
  gap: 7px;
}
.legend-swatch {
  width: 12px;
  height: 12px;
  border-radius: 2px;
  flex-shrink: 0;
  opacity: 0.85;
}
.legend-label {
  font-size: 0.6rem;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: #0f0e0d;
  white-space: nowrap;
  line-height: 1;
}

/* ── Compare / Similarity feature ── */
#panel-back-row {
  padding: 4px 0 2px 0;
}
#panel-back-btn {
  background: none;
  border: none;
  color:var(--cream);
  font-family: 'DM Mono', monospace;
  font-size: 0.65rem;
  letter-spacing: .06em;
  text-transform: uppercase;
  cursor: pointer;
  padding: 2px 0;
  opacity: 0.85;
}
#panel-back-btn:hover { opacity: 1; }

.compare-btn {
  display: inline-block;
  margin-top: 5px;
  background: none;
  border: 1px solid var(--gold);
  color: var(--ink);
  font-family: 'DM Mono', monospace;
  font-size: 0.58rem;
  letter-spacing: .07em;
  text-transform: uppercase;
  padding: 2px 7px;
  cursor: pointer;
  border-radius: 2px;
  opacity: 0.8;
  transition: opacity .15s;
}
.compare-btn:hover { opacity: 1; }

.similarity-table {
  width: 100%;
  border-collapse: collapse;
  font-family: 'DM Mono', monospace;
  font-size: 0.65rem;
}
.similarity-table thead th {
  text-align: left;
  text-transform: uppercase;
  letter-spacing: .06em;
  font-size: 0.58rem;
  color: var(--muted);
  border-bottom: 1px solid var(--border);
  padding: 4px 6px;
}
.similarity-row {
  border-bottom: 1px solid rgba(200,191,170,0.2);
  transition: background .1s;
}
.similarity-row:hover { background: rgba(242,169,0,0.06); }
.similarity-row td {
  padding: 6px 6px;
  vertical-align: middle;
  color: var(--ink);
}
.similarity-name-btn {
  background: none;
  border: none;
  color: var(--ink);
  font-family: 'DM Mono', monospace;
  font-size: 0.65rem;
  cursor: pointer;
  padding: 0;
  text-align: left;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.similarity-name-btn:hover { opacity: 0.75; }
.sim-shared {
  text-align: center;
  color: var(--muted);
}
.sim-pct {
  min-width: 70px;
  position: relative;
}
.sim-pct-bar {
  position: absolute;
  left: 0; top: 0; bottom: 0;
  background: rgba(242,169,0,0.18);
  border-radius: 1px;
  transition: width .3s;
}
.sim-pct span {
  position: relative;
  z-index: 1;
  padding-left: 4px;
}

.compare-btn-active {
  background: var(--gold);
  color: #0f0e0d;
  opacity: 1;
}

/* ── Endorsement stage labels ── */
.endorser-stage-label {
  font-family: 'DM Mono', monospace;
  font-size: 0.55rem;
  letter-spacing: .06em;
  text-transform: uppercase;
  padding: 1px 5px;
  border-radius: 2px;
  flex-shrink: 0;
  white-space: nowrap;
  margin-left: 5px;
  margin-top: 2px;
  align-self: flex-start;
}
.stage-primary {
  background: rgba(0,174,243,0.12);
  color: #007aad;
  border: 1px solid rgba(0,174,243,0.35);
}
.stage-general {
  background: rgba(226,102,26,0.12);
  color: #b85000;
  border: 1px solid rgba(226,102,26,0.35);
}

/* ── Former Candidates divider ── */
.former-candidates-divider {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 20px 0 8px 0;
  color: #0f0e0d;
  font-family: 'DM Mono', monospace;
  font-size: 0.6rem;
  letter-spacing: .08em;
  text-transform: uppercase;
  width: 100%;
}
.former-candidates-divider::before {
  content: '';
  flex: 0 0 12px;
  border-top: 1px dashed #0f0e0d;
}
.former-candidates-divider::after {
  content: '';
  flex: 1;
  border-top: 1px dashed #0f0e0d;
}
