/* ============================================================
   WIDGET DA HOME — Apuração em cards (Presidente + Governador por UF)
   Faixa horizontal com scroll, logo após o header da home. Usa a mesma
   paleta do resto do site (--color-primary etc., definidas em portal.css).
============================================================ */

.nsl-widget-eleicoes {
  width: 100%;
  background: none;
  padding: 0px 0;
  border-top: 0;
}

.nsl-widget-eleicoes_titulo {
  display: flex;
  align-items: center;
  vertical-align: top;
  gap: 8px;
  max-width: 1320px;
  margin: 0 auto 10px;
  font-family: var(--font-general, Lato, sans-serif);
  font-size: 0.95em;
  font-weight: 800;
  color: var(--color-other, #203c64);
  padding-left: 12px;
  display: none;
}

.nsl-widget-eleicoes_titulo .is-live {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 0.7em;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.4px;
  color: var(--nsl-el-aovivo, #d6433f);
}

.nsl-widget-eleicoes_titulo .is-live-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--nsl-el-aovivo, #d6433f);
  animation: nsl-widget-pulse 1.6s ease-in-out infinite;
}

@keyframes nsl-widget-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.35; }
}

@media (prefers-reduced-motion: reduce) {
  .nsl-widget-eleicoes_titulo .is-live-dot { animation: none; }
}

.nsl-widget-eleicoes_row {
  display: flex;
  align-items: flex-start;
  gap: 0px;
  max-width: 1320px;
  margin: 12px auto;
  background: var(--color-white, #fff);
  border-radius: var(--ns-border-radius, 12px);
  border: 1px solid #e6e6e6;
}

/* Card de busca fica FORA da faixa que rola (flex-shrink:0, largura fixa) —
   sempre visível, e a lista suspensa dele nunca fica presa/cortada pelo
   overflow-x da faixa nem tampa os cards de estado atrás. */
.nsl-widget-eleicoes_fixo {
  flex-shrink: 0;
  /* Ocupa a altura toda da faixa (a linha usa align-items:flex-start) e o
     card final estica junto — o space-between dele põe o link no topo e a
     busca na base. height:auto (não 100%): a faixa não tem altura fixa, e
     com altura em % o navegador não estica o item. */
  height: auto;
  align-self: stretch;
  display: flex;
}

.nsl-widget-eleicoes_fixo > .nsl-widget-eleicoes_card-final {
  flex: 1;
}

.nsl-widget-eleicoes_scroll-wrap {
  position: relative;
  flex: 1;
  min-width: 0;
  overflow: hidden;
  border-right: none;
  border-top-left-radius: 12px;
  border-bottom-left-radius: 12px;
}

.nsl-widget-eleicoes_scroll {
  display: flex;
  gap: 0;
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x proximity;
  -webkit-overflow-scrolling: touch;
  /* Sem touch-action: pan-x — ele impedia rolar a PÁGINA na vertical com o
     dedo em cima dos cards. O navegador já decide sozinho a direção do
     gesto; o que fazia o arraste mover a página era o align-items do bloco
     mobile (ver .nsl-widget-eleicoes_row abaixo). */
  padding: 0px 0 0px;
  border-right: 1px solid #e6e6e6;
  /* Barra nativa removida — navegação vira os botões ‹ › sobrepostos
     (.nsl-widget-eleicoes_nav), position:absolute dentro do wrap acima. */
  scrollbar-width: none; /* Firefox */
  -ms-overflow-style: none; /* Edge/IE legado */
  position: relative;
}

.nsl-widget-eleicoes_scroll::-webkit-scrollbar {
  display: none; /* Chrome/Safari/Edge novo */
}

.nsl-widget-eleicoes_nav {
    position: absolute;
    top: 0;
    height: 100%;
    width: 0; /* .is-visivel muda pra 2.5rem — precisa de 2 valores diferentes pra transition ter o que animar */
    overflow: hidden;
    padding: 0;
    background: #FFFFFF;
    z-index: 5;
    outline: none;
    pointer-events: none;
    color: var(--color-primary,#295ff2);
    border-radius: 0;
    transition: width .2s ease-in-out;
    border: 0;
}
.nsl-widget-eleicoes_nav:hover{
  border-color: #e6e6e6 !important;
}
.nsl-widget-eleicoes_nav.is-visivel {
  width: 2.5rem;
  pointer-events: auto;
}

.nsl-widget-eleicoes_nav svg {
  width: 25px;
}

.nsl-widget-eleicoes_nav-prev.is-visivel {
  left: 0;
  border-right: 1px solid #e6e6e6;
}

.nsl-widget-eleicoes_nav-next.is-visivel {
  right: 0;
  border-left: 1px solid #e6e6e6;
  border-right: 1px solid #e6e6e6;
}

@media (max-width: 480px) {
  .nsl-widget-eleicoes_nav {
    display: none; /* toque/arraste direto no celular, sem botão sobreposto */
  }
}

.nsl-widget-eleicoes_card {
  flex: 0 0 auto;
  scroll-snap-align: start;
  width: 376px;
  padding: 10px 12px;
  font-family: var(--font-general, Lato, sans-serif);
  box-sizing: border-box;
  border-right: 1px solid #e6e6e6;
}
.nsl-widget-eleicoes_card:last-child{
  border: none;
}
@media (max-width: 480px) {
  .nsl-widget-eleicoes_card {
    width: 74vw;
  }
}

.nsl-widget-eleicoes_card-header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  text-decoration: none;
  color: inherit;
}

.nsl-widget-eleicoes_card-local {
  display: flex;
  align-items: center;
  gap: 4px;
  min-width: 0;
  overflow: hidden;
  color: #17181a;
}

.nsl-widget-eleicoes_card-uf {
  font-weight: 700;
  color: #6b7280;
  font-size: 0.85em;
  flex-shrink: 0;
}

.nsl-widget-eleicoes_card-cidade {
  font-weight: 800;
  font-size: 0.80em;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.nsl-widget-eleicoes_card-seta {
  flex-shrink: 0;
  width: 14px;
  height: 14px;
  color: var(--color-primary, #295ff2);
}

.nsl-widget-eleicoes_card-pst {
  flex-shrink: 0;
  font-weight: 800;
  font-size: 0.80em;
  color: #17181a;
}

.nsl-widget-eleicoes_card-candidatos {
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  gap: 8px;
  margin-top: 8px;
  padding-top: 8px;
}

.nsl-widget-eleicoes_card-candidatos .nsl-widget-eleicoes_cand {
  flex: 1;
  min-width: 0;
}

.nsl-widget-eleicoes_cand {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 8px;
  min-width: 0;
}

.nsl-widget-eleicoes_cand-info {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1;
  min-width: 0;
}

.nsl-widget-eleicoes_cand-foto-wrap {
  position: relative;
  width: 48px;
  height: 48px;
  flex-shrink: 0;
}

.nsl-widget-eleicoes_cand-foto {
  position: relative;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  overflow: hidden;
  background: #eef0f3;
  display: flex;
  align-items: center;
  justify-content: center;
}

.nsl-widget-eleicoes_cand.s-eleito .nsl-widget-eleicoes_cand-foto{
  outline: 2px solid var(--bs-teal);
  outline-offset: 2px;
}
.nsl-widget-eleicoes_cand.s-eleito .nsl-widget-eleicoes_cand-foto-wrap:before{
  content: "";
  background-color: #34c771;
  /* Ícone assets/img/check.svg (branco) — mesmo selo do mapa. Widget e cards. */
  background-image: url("../img/check.svg");
  background-size: 7px 7px;
  background-position: 50%;
  background-repeat: no-repeat;
  border: 2px solid #fff;
  border-radius: 80px;
  bottom: -6px;
  color: #fff;
  right: 0;
  position: absolute;
  width: 20px;
  height: 20px;
  z-index: 1;
}
.nsl-widget-eleicoes_cand.s-2t .nsl-widget-eleicoes_cand-foto{
  outline: 0;
  outline-offset: 2px;
}

.nsl-widget-eleicoes_cand-foto svg {
  width: 18px;
  height: 18px;
  color: #b7bcc4;
}

.nsl-widget-eleicoes_cand-foto img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: top;
  background: #eef0f3;
  margin: 0 !important;
}

.nsl-widget-eleicoes_cand-nome {
  font-size: 0.75em;
  font-weight: 400;
  color: #333;
  line-height: 1.25;
  max-width: 100%;
  /* Quebra em até 2 linhas em vez de cortar numa linha só — só nomes
     realmente compridos (mais que isso) ganham "…" no final da 2ª linha. */
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  white-space: normal;
  word-break: break-word;
}

.nsl-widget-eleicoes_cand-linha {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}

.nsl-widget-eleicoes_cand-pct {
  font-weight: 800;
  font-size: 0.85em;
  color: #17181a;
}

.nsl-widget-eleicoes_cand-badge {
  display: inline-block;
  font-size: 0.6em;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.3px;
  border-radius: 999px;
  padding: 2px 6px;
  background: var(--nsl-el-eleito, #1e7d34);
  color: #fff;
}

.nsl-widget-eleicoes_card-skeleton .nsl-widget-eleicoes_cand-foto,
.nsl-widget-eleicoes_card-skeleton .nsl-widget-eleicoes_cand-nome,
.nsl-widget-eleicoes_card-skeleton .nsl-widget-eleicoes_cand-pct {
  background: #eef0f3;
  color: transparent;
  border-radius: 6px;
}

/* ---------- card final: link pro mapa + busca por estado ---------- */

.nsl-widget-eleicoes_card-final {
  display: flex;
  flex-direction: column;
  /* Link "Apuração pelo Brasil" no topo, busca na base, espaço livre no meio. */
  justify-content: space-between;
  gap: 5px;
  width: 200px;
}

.nsl-widget-eleicoes_card-final-link {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
  text-decoration: none;
  font-weight: 800;
  color: var(--color-other, #203c64);
}

.nsl-widget-eleicoes_card-final-link svg {
  width: 14px;
  height: 14px;
  color: var(--color-primary, #295ff2);
  flex-shrink: 0;
}

.nsl-widget-eleicoes_card-final-link span{
  font-size: 0.85rem;
}

.nsl-widget-eleicoes_busca-wrap {
  position: relative;
}

.nsl-widget-eleicoes_busca-icone {
  position: absolute;
  left: 10px;
  top: 50%;
  transform: translateY(-50%);
  width: 16px;
  height: 16px;
  color: var(--color-primary, #295ff2);
  pointer-events: none;
}

.nsl-widget-eleicoes_busca {
  width: 100%;
  box-sizing: border-box;
  padding: 9px 10px 9px 32px;
  border: 1px solid #dcdfe4;
  border-radius: 999px;
  font-family: inherit;
  font-size: 0.85em;
  color: #333;
}

.nsl-widget-eleicoes_busca:focus {
  outline: none;
  border-color: var(--color-primary, #295ff2);
}

.nsl-widget-eleicoes_busca-lista {
  position: absolute;
  z-index: 20;
  top: calc(100% + 4px);
  left: 0;
  right: 0;
  max-height: 220px;
  overflow-y: auto;
  background: #fff;
  border: 1px solid #e6e6e6;
  border-radius: 10px;
  box-shadow: 0 10px 26px rgba(0, 0, 0, 0.12);
  margin: 0;
  padding: 6px;
  list-style: none;
}

.nsl-widget-eleicoes_busca-item {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 7px 8px;
  border-radius: 8px;
  font-size: 0.85em;
  font-weight: 600;
  color: #15171a;
  cursor: pointer;
}

/* Hover só pelo mousemove (vira .is-ativo) — senão o mouse parado num
   item e as setas do teclado marcariam dois itens ao mesmo tempo. */
.nsl-widget-eleicoes_busca-item.is-ativo {
  background: #eef2ff;
}

/* Campo com botão limpar (✕) e lista mais larga que o card de 200px,
   alinhada à direita (o card fica na ponta direita do widget). */
.nsl-widget-eleicoes_busca {
  padding-right: 34px;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.nsl-widget-eleicoes_busca:focus {
  box-shadow: 0 0 0 3px rgba(41, 95, 242, 0.15);
}

.nsl-widget-eleicoes_busca-limpar {
  position: absolute;
  right: 6px;
  top: 50%;
  transform: translateY(-50%);
  width: 24px;
  height: 24px;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: none;
  border-radius: 50%;
  background: #eef0f3;
  color: #5b616b;
  cursor: pointer;
}

.nsl-widget-eleicoes_busca-limpar[hidden] {
  display: none;
}

.nsl-widget-eleicoes_busca-limpar:hover {
  background: #e3e6ea;
  color: #15171a;
}

.nsl-widget-eleicoes_busca-limpar svg {
  width: 12px;
  height: 12px;
}

.nsl-widget-eleicoes_busca-lista {
  left: auto;
  width: 300px;
  max-width: calc(100vw - 32px);
  max-height: 320px;
  box-sizing: border-box;
  overscroll-behavior: contain;
}

.nsl-widget-eleicoes_busca-grupo {
  padding: 8px 8px 4px;
  font-size: 0.68em;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #8a8f99;
}

.nsl-widget-eleicoes_busca-dica,
.nsl-widget-eleicoes_busca-vazio {
  padding: 8px;
  font-size: 0.78em;
  line-height: 1.45;
  color: #5b616b;
}

.nsl-widget-eleicoes_busca-dica {
  border-bottom: 1px solid #eef0f3;
}

.nsl-widget-eleicoes_busca-vazio {
  padding: 16px 10px;
  text-align: center;
}

.nsl-widget-eleicoes_busca-vazio strong {
  color: #15171a;
}

.nsl-widget-eleicoes_busca-item-flag,
.nsl-widget-eleicoes_busca-item-icone {
  width: 24px;
  height: 24px;
  border-radius: 6px;
  flex-shrink: 0;
}

.nsl-widget-eleicoes_busca-item-flag {
  object-fit: cover;
  box-shadow: 0 0 0 1px rgba(15, 20, 30, 0.08);
}

.nsl-widget-eleicoes_busca-item-icone {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: #eef0f3;
  color: #5b616b;
}

.nsl-widget-eleicoes_busca-item-icone svg {
  width: 14px;
  height: 14px;
}

.nsl-widget-eleicoes_busca-item.is-ativo .nsl-widget-eleicoes_busca-item-icone {
  background: var(--color-primary, #295ff2);
  color: #fff;
}

.nsl-widget-eleicoes_busca-item-nome {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.nsl-widget-eleicoes_busca-item-nome mark {
  margin: 0;
  padding: 0;
  border-radius: 0;
  background: none;
  color: var(--color-primary, #295ff2);
  font-weight: 800;
}

.nsl-widget-eleicoes_busca-item-sub {
  display: block;
  font-size: 0.82em;
  font-weight: 500;
  color: #8a8f99;
}

.nsl-widget-eleicoes_busca-item-chip {
  flex-shrink: 0;
  padding: 2px 7px;
  border-radius: 6px;
  background: #eef0f3;
  color: #5b616b;
  font-size: 0.72em;
  font-weight: 700;
}

/* ---------- mobile: sem o card "Apuração pelo Brasil" — só a busca,
   abaixo da faixa de cards (que continua rolando horizontal), ocupando
   a largura toda e sem borda ---------- */
@media (max-width: 480px) {
  .nsl-widget-eleicoes_row {
    flex-direction: column;
    /* base usa align-items:flex-start (eixo cruzado = vertical no desktop);
       em coluna o eixo cruzado vira horizontal, e "flex-start" faz o filho
       encolher pro tamanho do conteúdo em vez de ocupar a largura da tela —
       sem largura travada, o scroll-wrap nunca tem overflow próprio e é o
       widget inteiro que estoura a viewport (daí o arraste mover a página). */
    align-items: stretch;
    border-radius: 0;
    border-right: 0;
    border-left: 0;
    margin-top: 0;
    border-top: 0;
  }

  .nsl-widget-eleicoes_busca{
    border-radius: 0;
    border-bottom: 0;
    border-right: 0;
    border-left: 0;
  }

  .nsl-widget-eleicoes_busca:focus {
    box-shadow: none;
  }

  .nsl-widget-eleicoes_busca-limpar {
    right: 12px;
  }

  .nsl-widget-eleicoes_busca-lista {
    left: 8px;
    right: 8px;
    width: auto;
    max-width: none;
  }

  .nsl-widget-eleicoes_scroll {
    order: 1;
    border: 0;
  }

  .nsl-widget-eleicoes_fixo {
    order: 2;
    width: 100%;
  }

  .nsl-widget-eleicoes_card-final {
    width: 100%;
    border: none;
    padding: 8px 0 0;
  }

  .nsl-widget-eleicoes_card-final-link {
    display: none;
  }

  /* Scroll por toque avança 1 card por vez — "proximity" (padrão acima)
     só sugere o alinhamento; "mandatory" obriga a parar num card, e
     "scroll-snap-stop: always" impede que um "flick" rápido pule vários
     cards de uma vez, mesmo com o dedo saindo da tela ainda em movimento. */
  .nsl-widget-eleicoes_scroll {
    scroll-snap-type: x mandatory;
  }

  .nsl-widget-eleicoes_card {
    scroll-snap-stop: always;
  }

  .nsl-widget-eleicoes_card{
    padding: 6px;
  }
  .nsl-widget-eleicoes_card:last-child{
    padding: 0;
  }
}

/* Selo "2º T" — cor da aba "Cores" do admin (cai na cor principal). */
.nsl-widget-eleicoes_cand-badge.is-2t {
  background: var(--nsl-el-2turno, var(--color-primary, #295ff2));
}

/* Aviso editorial (aba "Geral" do admin) — info ou alerta. */
.nsl-widget-eleicoes_aviso {
  max-width: 1320px;
  margin: 0 auto 10px;
  padding: 8px 12px;
  border-left: 4px solid var(--color-primary, #295ff2);
  border-radius: 6px;
  background: #eef2ff;
  color: #1f2937;
  font-family: var(--font-general, Lato, sans-serif);
  font-size: 0.85em;
  line-height: 1.4;
}
.nsl-widget-eleicoes_aviso--alerta {
  border-left-color: #d97706;
  background: #fff7e6;
}
.nsl-widget-eleicoes_aviso a {
  color: inherit;
  font-weight: 700;
  text-decoration: underline;
}

/* Apuração encerrada no admin — substitui o selo "Ao vivo". */
.nsl-widget-eleicoes_titulo .is-final {
  font-size: 0.7em;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.4px;
  color: var(--nsl-el-eleito, #1e7d34);
}

/* ---------- card avulso do shortcode [eleicoes_widget cargo=".." uf=".."] ----------
   Mesmo card do carrossel, mas sozinho: largura do conteúdo, borda própria
   e candidatos em grade (o limite pode passar de 2). */
.nsl-widget-eleicoes--card {
  padding: 0;
  margin: 1.2em 0;
}

.nsl-eleicoes-card {
  border: 1px solid #e6e8eb;
  border-radius: var(--ns-border-radius, 12px);
  background: var(--color-white, #fff);
  box-shadow: 0 1px 2px rgba(16, 24, 40, 0.04);
  padding: 16px 18px 12px;
  font-family: var(--font-general, Lato, sans-serif);
  font-size: 16px;
  line-height: 1.35;
  color: #15171a;
}

/* Cabeçalho: [UF] Cargo ............ Ver apuração > */
.nsl-eleicoes-card_topo {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  /* Dentro do texto do post o tema sublinha/borda os links — aqui não. */
  text-decoration: none !important;
  color: inherit !important;
  border: 0 !important;
  box-shadow: none !important;
  background: none !important;
}

.nsl-eleicoes-card_titulo {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}

.nsl-eleicoes-card_local {
  flex-shrink: 0;
  padding: 3px 8px;
  border-radius: 6px;
  background: #eef1f6;
  color: #3d4451;
  font-size: 0.72em;
  font-weight: 800;
  letter-spacing: 0.3px;
  text-transform: uppercase;
}

.nsl-eleicoes-card_cargo {
  font-size: 1.05em;
  font-weight: 800;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.nsl-eleicoes-card_ver {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  flex-shrink: 0;
  color: var(--color-primary, #295ff2);
  font-size: 0.78em;
  font-weight: 700;
}

.nsl-eleicoes-card_ver svg {
  width: 14px;
  height: 14px;
  transition: transform 0.15s ease;
}

.nsl-eleicoes-card_topo:hover .nsl-eleicoes-card_ver svg {
  transform: translateX(2px);
}

/* Status + % apurado + barra fina de progresso */
.nsl-eleicoes-card_status {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
  margin: 12px 0 6px;
  font-size: 0.76em;
  color: #6b7079;
}

.nsl-eleicoes-card_pst {
  font-weight: 700;
}

.nsl-eleicoes-card_aovivo {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-weight: 700;
  color: #15803d;
}

.nsl-eleicoes-card_aovivo[hidden] {
  display: none;
}

.nsl-eleicoes-card_aovivo-ponto {
  position: relative;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #22c55e;
}

.nsl-eleicoes-card_aovivo-ponto::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: #22c55e;
  animation: nsl-eleicoes-card-aovivo 1.6s ease-out infinite;
}

.nsl-eleicoes-card_aovivo.is-encerrada {
  color: #6b7079;
}

.nsl-eleicoes-card_aovivo.is-encerrada .nsl-eleicoes-card_aovivo-ponto {
  background: #9aa0a9;
}

.nsl-eleicoes-card_aovivo.is-encerrada .nsl-eleicoes-card_aovivo-ponto::after {
  animation: none;
  display: none;
}

@keyframes nsl-eleicoes-card-aovivo {
  0% { transform: scale(1); opacity: 0.7; }
  100% { transform: scale(2.8); opacity: 0; }
}

.nsl-eleicoes-card_progresso {
  height: 4px;
  border-radius: 999px;
  background: #eceef1;
  overflow: hidden;
  margin-bottom: 4px;
}

.nsl-eleicoes-card_progresso-fill {
  display: block;
  width: 0;
  height: 100%;
  border-radius: inherit;
  background: var(--color-primary, #295ff2);
  transition: width 0.5s ease;
}

.nsl-eleicoes-card_progresso-fill.is-concluido {
  background: #22c55e;
}

/* Candidatos: uma linha cada */
.nsl-eleicoes-card_lista {
  display: flex;
  flex-direction: column;
}

.nsl-eleicoes-card .nsl-eleicoes-card_cand {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 12px 0;
  border-bottom: 1px solid #f0f1f4;
}

.nsl-eleicoes-card .nsl-eleicoes-card_cand:last-child {
  border-bottom: none;
  padding-bottom: 6px;
}

.nsl-eleicoes-card .nsl-widget-eleicoes_cand-foto-wrap {
  width: 46px;
  height: 46px;
}

.nsl-eleicoes-card_info {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.nsl-eleicoes-card_linha {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
}

.nsl-eleicoes-card_linha.is-meta {
  align-items: center;
}

.nsl-eleicoes-card_nome {
  min-width: 0;
  font-size: 0.95em;
  font-weight: 700;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.nsl-eleicoes-card_pos {
  margin-right: 6px;
  color: #9aa0a9;
  font-weight: 700;
}

.nsl-eleicoes-card_pct {
  flex-shrink: 0;
  font-size: 1.1em;
  font-weight: 800;
}

.nsl-eleicoes-card_barra {
  height: 6px;
  border-radius: 999px;
  background: #eceef1;
  overflow: hidden;
}

.nsl-eleicoes-card_barra span {
  display: block;
  height: 100%;
  border-radius: inherit;
  transition: width 0.5s ease;
}

.nsl-eleicoes-card_meta {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  min-width: 0;
}

.nsl-eleicoes-card_partido {
  padding: 2px 7px;
  border-radius: 5px;
  font-size: 0.68em;
  font-weight: 800;
  letter-spacing: 0.2px;
}

.nsl-eleicoes-card_numero {
  font-size: 0.74em;
  font-weight: 700;
  color: #6b7079;
}

.nsl-eleicoes-card_selo {
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 0.62em;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.3px;
  color: #fff;
  background: var(--nsl-el-eleito, #1e7d34);
}

.nsl-eleicoes-card_selo.is-2t {
  background: var(--nsl-el-2turno, var(--color-primary, #295ff2));
}

.nsl-eleicoes-card_selo.is-suplente {
  background: #facc15;
  color: #422006;
}

.nsl-eleicoes-card_votos {
  flex-shrink: 0;
  font-size: 0.74em;
  color: #6b7079;
  white-space: nowrap;
}

/* Rodapé: fonte + hora da atualização */
.nsl-eleicoes-card_rodape {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 6px;
  padding-top: 10px;
  border-top: 1px solid #f0f1f4;
  font-size: 0.7em;
  color: #9aa0a9;
}

/* Carregando */
.nsl-eleicoes-card_cand.is-skeleton {
  pointer-events: none;
}

.nsl-eleicoes-card_skel-foto {
  width: 46px;
  height: 46px;
  flex-shrink: 0;
  border-radius: 50%;
  background: #eef0f3;
}

.nsl-eleicoes-card_skel-linhas {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.nsl-eleicoes-card_skel-linhas span {
  height: 9px;
  border-radius: 6px;
  background: #eef0f3;
}

.nsl-eleicoes-card_skel-linhas span:nth-child(1) { width: 60%; }
.nsl-eleicoes-card_skel-linhas span:nth-child(2) { width: 100%; height: 6px; }
.nsl-eleicoes-card_skel-linhas span:nth-child(3) { width: 40%; }

@media (max-width: 480px) {
  .nsl-eleicoes-card {
    padding: 14px 14px 10px;
  }

  .nsl-eleicoes-card_ver {
    font-size: 0;
  }

  .nsl-eleicoes-card_ver svg {
    width: 16px;
    height: 16px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .nsl-eleicoes-card_aovivo-ponto::after {
    animation: none;
  }
}

.nsl-widget-eleicoes_cand-meta {
  font-size: 0.68em;
  font-weight: 600;
  color: #6b7280;
}

.nsl-widget-eleicoes_card-vazio {
  font-size: 0.8em;
  color: #6b7280;
}

/* Só aparece pra quem edita o site (erro de digitação no shortcode). */
.nsl-widget-eleicoes_erro-shortcode {
  padding: 8px 12px;
  border-left: 4px solid #d63638;
  background: #fcf0f1;
  font-size: 0.85em;
}

/* Deputados: suplente (selo amarelo). */
.nsl-widget-eleicoes_cand-badge.is-suplente {
  background: #facc15;
  color: #422006;
}
