/* Apuração de Eleições TSE — estilos de front-end */

.aetse-wrap {
	max-width: 1040px;
	margin: 0 auto;
	padding: 24px 16px 48px;
}

.aetse-header h1 {
	margin-bottom: 12px;
}

.aetse-tabs {
	display: flex;
	gap: 4px;
	border-bottom: 1px solid #ddd;
	margin-bottom: 20px;
	flex-wrap: wrap;
}

.aetse-tabs a {
	padding: 10px 14px;
	text-decoration: none;
	color: #444;
	border-bottom: 2px solid transparent;
}

.aetse-tabs a.is-active {
	color: #1a1a1a;
	border-bottom-color: #1a1a1a;
	font-weight: 600;
}

.aetse-filtros {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	align-items: end;
	margin-bottom: 24px;
	padding: 14px;
	background: #f6f6f6;
	border-radius: 8px;
}

.aetse-filtros label {
	display: flex;
	flex-direction: column;
	font-size: 13px;
	gap: 4px;
}

.aetse-filtros select,
.aetse-filtros input[type="search"],
.aetse-filtros input[type="text"] {
	padding: 8px 10px;
	border: 1px solid #ccc;
	border-radius: 6px;
	min-width: 160px;
}

.aetse-filtros input.aetse-busca-input {
	padding: 13px 16px 13px 40px;
}

.aetse-filtros button {
	padding: 9px 18px;
	border: none;
	border-radius: 6px;
	background: #1a1a1a;
	color: #fff;
	cursor: pointer;
}

/* Campo "Cidade" — autocomplete leve (busca sob demanda via REST, sem baixar
   a lista inteira de municípios da UF de uma vez, que pesava o carregamento
   da página em estados grandes). Fica desabilitado até uma UF específica ser
   escolhida (município só existe dentro de uma UF). */
.aetse-cidade-combo {
	position: relative;
	display: inline-block;
}
.aetse-cidade-combo input[type="text"] {
	width: 100%;
}
.aetse-cidade-combo input[type="text"]:disabled {
	opacity: .55;
	cursor: not-allowed;
}
.aetse-cidade-sugestoes {
	position: absolute;
	z-index: 20;
	top: calc(100% + 4px);
	left: 0;
	right: 0;
	margin: 0;
	padding: 4px;
	list-style: none;
	background: #fff;
	border: 1px solid #ddd;
	border-radius: 8px;
	box-shadow: 0 6px 18px rgba(0, 0, 0, .12);
	max-height: 220px;
	overflow-y: auto;
}
.aetse-cidade-sugestoes li {
	padding: 8px 10px;
	border-radius: 5px;
	font-size: 13px;
	cursor: pointer;
}
.aetse-cidade-sugestoes li:hover,
.aetse-cidade-sugestoes li:focus {
	background: #f0f0f0;
	outline: none;
}

/* Barra de busca de candidatos (template eleicao-candidatos.php) — versão
   redesenhada: cartão branco com sombra suave, campo de busca em destaque
   (com ícone de lupa) numa primeira linha, e os selects de filtro agrupados
   numa segunda linha "pill". */
.aetse-filtros-busca {
	flex-direction: column;
	align-items: stretch;
	gap: 14px;
	padding: 18px 20px;
	background: #fff;
	border: 1px solid #ebebeb;
	border-radius: 14px;
	box-shadow: 0 2px 10px rgba(0, 0, 0, .04);
}

.aetse-busca-input-wrap {
	position: relative;
	display: block;
}

.aetse-busca-icone {
	position: absolute;
	left: 14px;
	top: 50%;
	transform: translateY(-50%);
	color: #999;
	pointer-events: none;
}

.aetse-busca-input {
	width: 100%;
	min-width: 0;
	padding: 13px 16px 13px 40px;
	font-size: 15px;
	border: 1px solid #ddd;
	border-radius: 999px;
	background: #fafafa;
	transition: border-color .2s ease, background .2s ease, box-shadow .2s ease;
}
.aetse-busca-input:focus {
	outline: none;
	border-color: #1a1a1a;
	background: #fff;
	box-shadow: 0 0 0 3px rgba(26, 26, 26, .08);
}

.aetse-busca-selects {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.aetse-filtros-busca .aetse-busca-selects select {
	min-width: 140px;
	padding: 8px 14px;
	border: 1px solid #e2e2e2;
	border-radius: 999px;
	background: #f6f6f6;
	font-size: 13px;
	color: #333;
	cursor: pointer;
	transition: border-color .2s ease, background .2s ease;
}
.aetse-filtros-busca .aetse-busca-selects select:hover {
	border-color: #bbb;
}
.aetse-filtros-busca .aetse-busca-selects select:focus {
	outline: none;
	border-color: #1a1a1a;
	background: #fff;
}

.aetse-filtros-busca button {
	align-self: flex-start;
	padding: 11px 28px;
	border-radius: 999px;
	font-weight: 600;
	font-size: 14px;
	transition: filter .2s ease, transform .2s ease;
}
.aetse-filtros-busca button:hover {
	filter: brightness(1.15);
	transform: translateY(-1px);
}

@media (max-width: 640px) {
	.aetse-busca-selects { flex-direction: column; }
	.aetse-filtros-busca .aetse-busca-selects select { width: 100%; }
	.aetse-filtros-busca button { align-self: stretch; text-align: center; }
}

.aetse-resumo {
	display: flex;
	gap: 16px;
	flex-wrap: wrap;
	align-items: center;
	margin-bottom: 18px;
	font-size: 14px;
	color: #444;
}

.aetse-badge {
	padding: 3px 10px;
	border-radius: 999px;
	font-size: 12px;
	font-weight: 600;
	text-transform: uppercase;
}

.aetse-badge.is-final { background: #d7f2df; color: #146c2e; }
.aetse-badge.is-parcial { background: #fdecc8; color: #8a5a00; }

.aetse-candidatos-resultado {
	list-style: none;
	margin: 0;
	padding: 0;
}

.aetse-candidatos-resultado li {
	display: grid;
	grid-template-columns: 34px 44px 1fr 60px 140px 90px;
	align-items: center;
	gap: 10px;
	padding: 10px 8px;
	border-bottom: 1px solid #eee;
}

.aetse-candidatos-resultado li.is-eleito {
	background: #f5fbf6;
}

.aetse-posicao { color: #999; font-size: 13px; }
.aetse-numero { font-weight: 700; }
.aetse-nome { font-weight: 600; }
.aetse-partido { color: #666; }
.aetse-votos { text-align: right; }

.aetse-tag-eleito, .aetse-tag-2turno {
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	padding: 2px 8px;
	border-radius: 999px;
	justify-self: end;
}
.aetse-tag-eleito { background: #146c2e; color: #fff; }
.aetse-tag-2turno { background: #3554a3; color: #fff; }

.aetse-vazio, .aetse-aviso {
	padding: 16px;
	background: #f6f6f6;
	border-radius: 8px;
	color: #555;
}

/* Ordenação (listagem de candidatos) */
.aetse-ordenacao {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	margin: 4px 0 20px;
}
.aetse-ordenacao-label {
	font-size: 13px;
	color: #777;
}
.aetse-btn-ordenar {
	padding: 6px 12px;
	border: 1px solid #ddd;
	border-radius: 999px;
	font-size: 13px;
	text-decoration: none;
	color: #333;
	background: #fff;
	transition: background .2s ease, color .2s ease, border-color .2s ease;
}
.aetse-btn-ordenar:hover { border-color: #999; }
.aetse-btn-ordenar.is-ativo {
	background: #1a1a1a;
	color: #fff;
	border-color: #1a1a1a;
}

/* Contagem regressiva (Apuração ao vivo, antes de começar) */
.aetse-contagem-relogio {
	margin: 8px 0 0;
	font-size: 28px;
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	letter-spacing: .5px;
}

/* Botões estilizados de redes sociais (perfil do candidato) */
.aetse-redes {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}
.aetse-btn-rede {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 8px 16px;
	border-radius: 999px;
	text-decoration: none;
	font-size: 14px;
	font-weight: 600;
	color: #fff;
	background: var(--aetse-rede-cor, #444);
	transition: filter .2s ease, transform .2s ease;
}
.aetse-btn-rede:hover {
	filter: brightness(1.1);
	transform: translateY(-1px);
	color: #fff;
}
.aetse-btn-rede-icone {
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: rgba(255,255,255,.9);
}
.aetse-btn-rede-generico {
	background: #eee;
	color: #333;
	font-weight: 400;
}

/* Ao vivo */
.aetse-widgets {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
	gap: 16px;
}

/* "Painel do Estado" (Apuração ao vivo, modo padrão com Estado configurado em
   Filtros padrão): um bloco nacional do Presidente em destaque, full-width,
   antes de tudo, seguido da grade com os demais cargos do Estado padrão. Cada
   card tem um link "Ver detalhes" que troca para a visão de detalhe daquele
   cargo/UF via JavaScript (sem recarregar a página), com um botão "Voltar". */
.aetse-painel-estado-titulo {
	color: #555;
	font-size: 13px;
	margin: -8px 0 20px;
}
.aetse-dashboard-estado {
	display: flex;
	flex-direction: column;
	gap: 16px;
	margin-bottom: 24px;
}
.aetse-dashboard-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
	gap: 16px;
}
/* Grade "3 colunas" do painel de Estado (Presidente/Governador/Senador/
   Deputado Federal/Deputado Estadual no Estado padrão) — largura fixa em 3
   colunas nas telas largas, 2 em tablets, 1 no mobile (ver media query no
   final do arquivo), em vez do auto-fit genérico usado nas demais grades. */
.aetse-dashboard-grid-3col {
	grid-template-columns: repeat(3, 1fr);
}
@media (max-width: 900px) {
	.aetse-dashboard-grid-3col {
		grid-template-columns: repeat(2, 1fr);
	}
}
.aetse-dashboard-card {
	display: flex;
	flex-direction: column;
}
/* Cards full-width fora da grade (Presidente — Brasil, Prefeito, Vereadores). */
.aetse-dashboard-card-full {
	width: 100%;
}

/* Card do Presidente nacional: além de full-width, um pouco mais de destaque
   visual (fundo levemente diferenciado, número maior), já que é o resultado
   de maior interesse. */
.aetse-card-presidencial {
	background: #fafafa;
	border-color: #ddd;
}
.aetse-card-presidencial h3 { font-size: 17px; }
.aetse-card-presidencial .aetse-pct-numero { font-size: 26px; }
.aetse-card-presidencial .aetse-widget-lista {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: 0 16px;
}
.aetse-card-presidencial .aetse-widget-lista li:nth-last-child(-n+1) { border-bottom: none; }

.aetse-dc-detalhes {
	display: inline-block;
	margin-top: 12px;
	font-size: 13px;
	font-weight: 600;
	text-decoration: none;
	color: #1a1a1a;
}
.aetse-dc-detalhes:hover { text-decoration: underline; }

/* Visão de detalhe (aberta a partir de "Ver detalhes", trocada via JS): o
   [hidden] do HTML já cuida de escondê-la — aqui só o layout de quando ela
   está visível. */
.aetse-detalhe-cargo:not([hidden]) {
	display: block;
}
.aetse-btn-voltar {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin-bottom: 16px;
	padding: 8px 16px;
	border: 1px solid #ddd;
	border-radius: 999px;
	background: #fff;
	font-size: 13px;
	font-weight: 600;
	cursor: pointer;
	transition: background .2s ease, border-color .2s ease;
}
.aetse-btn-voltar:hover {
	background: #f6f6f6;
	border-color: #bbb;
}

.aetse-widget-card {
	border: 1px solid #e5e5e5;
	border-radius: 10px;
	padding: 16px;
	transition: box-shadow .3s ease, border-color .3s ease;
}

.aetse-widget-card h3 {
	margin: 0 0 10px;
	font-size: 15px;
}

.aetse-progress {
	height: 8px;
	background: #eee;
	border-radius: 999px;
	overflow: hidden;
	margin-bottom: 6px;
}
.aetse-progress > span {
	display: block;
	height: 100%;
	background: #1a1a1a;
	transition: width .6s cubic-bezier(.22,.61,.36,1);
}

/* Efeito "shimmer" sutil na barra de progresso ao vivo, para parecer ativa mesmo
   quando o percentual não muda entre um refresh e outro. */
.aetse-progress-live > span {
	background-image: linear-gradient(90deg, #1a1a1a 0%, #3a3a3a 50%, #1a1a1a 100%);
	background-size: 200% 100%;
	animation: aetse-shimmer 2.4s linear infinite;
}

@keyframes aetse-shimmer {
	0% { background-position: 200% 0; }
	100% { background-position: -200% 0; }
}

.aetse-pct-numero {
	font-size: 20px;
	font-weight: 700;
	margin: 0 0 4px;
}
.aetse-pct-label {
	font-size: 12px;
	font-weight: 400;
	color: #777;
}

.aetse-widget-lista { list-style: none; margin: 10px 0 0; padding: 0; }
.aetse-widget-lista li {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 6px 0;
	border-bottom: 1px solid #f0f0f0;
}
.aetse-widget-lista li:last-child { border-bottom: none; }
.aetse-li-info { flex: 1; min-width: 0; }
.aetse-li-votos { font-size: 13px; color: #555; white-space: nowrap; }

.aetse-avatar {
	width: 34px;
	height: 34px;
	border-radius: 50%;
	object-fit: cover;
	flex-shrink: 0;
	background: #eee;
}
.aetse-avatar-placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	font-weight: 700;
	color: #888;
	font-size: 14px;
}

.aetse-atualizado-em {
	margin-top: 16px;
	font-size: 12px;
	color: #888;
}

/* Pisca suavemente quando o horário de atualização muda — sinaliza um novo ciclo. */
.aetse-atualizado-em.aetse-flash {
	animation: aetse-flash .8s ease;
}
@keyframes aetse-flash {
	0% { color: #1a1a1a; }
	100% { color: #888; }
}

/* Entrada suave (fade + slide) para cards e itens de lista recém-renderizados. */
.aetse-anim-in {
	animation: aetse-fade-in-up .45s cubic-bezier(.22,.61,.36,1) both;
}
@keyframes aetse-fade-in-up {
	from { opacity: 0; transform: translateY(8px); }
	to   { opacity: 1; transform: translateY(0); }
}

/* Pulso breve no container quando os dados são atualizados via polling. */
.aetse-pulse { animation: aetse-pulse-ring .6s ease; }
@keyframes aetse-pulse-ring {
	0%   { box-shadow: 0 0 0 0 rgba(26,26,26,.12); }
	70%  { box-shadow: 0 0 0 8px rgba(26,26,26,0); }
	100% { box-shadow: 0 0 0 0 rgba(26,26,26,0); }
}

@media (prefers-reduced-motion: reduce) {
	.aetse-anim-in, .aetse-pulse, .aetse-flash, .aetse-progress-live > span, .aetse-banner-track.is-marquee {
		animation: none !important;
	}
}

/* Candidatos */
.aetse-grid-candidatos {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
	gap: 16px;
	margin-bottom: 24px;
}

.aetse-card-candidato {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	text-decoration: none;
	color: inherit;
	padding: 12px;
	border: 1px solid #eee;
	border-radius: 10px;
	position: relative;
}

/* A foto fica sempre num box QUADRADO (nunca circular) e nunca é cortada —
   object-fit: contain preserva a foto inteira, centralizada, com uma cor de
   fundo neutra preenchendo o espaço sobrando quando a proporção original não
   for quadrada. */
.aetse-foto-wrap {
	width: 96px;
	height: 96px;
	border-radius: 10px;
	background: #eee;
	overflow: hidden;
	margin-bottom: 8px;
	display: flex;
	align-items: center;
	justify-content: center;
}
.aetse-card-candidato img,
.aetse-foto-placeholder {
	width: 100%;
	height: 100%;
	object-fit: contain;
	background: #eee;
}

/* Número de votação, estilizado como o dígito da urna/"santinho" de campanha:
   destaque grande, alto contraste, fonte tabular. */
.aetse-numero-urna {
	display: inline-block;
	font-size: 22px;
	font-weight: 800;
	font-variant-numeric: tabular-nums;
	line-height: 1;
	color: #fff;
	background: #1a1a1a;
	padding: 4px 14px;
	border-radius: 6px;
	margin-bottom: 8px;
	letter-spacing: 1px;
}

.aetse-nome-urna { font-weight: 600; font-size: 14px; }
.aetse-meta { font-size: 12px; color: #777; margin-top: 4px; }

.aetse-paginacao { display: flex; gap: 6px; justify-content: center; }
.aetse-paginacao .page-numbers { padding: 6px 10px; border: 1px solid #ddd; border-radius: 6px; text-decoration: none; }
.aetse-paginacao .current { background: #1a1a1a; color: #fff; }

/* Perfil do candidato */
.aetse-perfil-candidato {
	display: grid;
	grid-template-columns: 200px 1fr;
	gap: 28px;
}
.aetse-perfil-foto img { width: 100%; border-radius: 12px; }
.aetse-perfil-dados dl { display: grid; grid-template-columns: 200px 1fr; gap: 6px 12px; }
.aetse-perfil-dados dt { color: #777; font-size: 13px; }
.aetse-perfil-dados dd { margin: 0; }

@media (max-width: 640px) {
	.aetse-candidatos-resultado li {
		grid-template-columns: 24px 36px 1fr 70px;
	}
	.aetse-candidatos-resultado .aetse-partido { display: none; }
	.aetse-perfil-candidato { grid-template-columns: 1fr; }
	.aetse-perfil-dados dl { grid-template-columns: 1fr; }
}

/* Widget de apuração (shortcode [aetse_banner], reformulado) — cartão de
   resultado: cabeçalho com filtro/cargo/UF/turno/estatísticas + candidato
   principal em destaque à esquerda e os 4 seguintes menores à direita. */
.aetse-widget-resultado {
	/* Cor de destaque do tema ("padrao" = laranja original) — fundo é SEMPRE
	   branco em todo tema, só a cor de destaque (chips, barra de progresso,
	   link) muda. Ver .aetse-tema-* abaixo para as demais opções. */
	--aetse-w-accent: #c85a1a;
	--aetse-w-accent-bg: #fff1e6;
	--aetse-w-accent-bar: #ff8a3d;

	border: 1px solid #e5e5e5;
	border-radius: 10px;
	background: #fff;
	padding: 14px 18px;
	color: #1a1a1a;
}

/* Temas de cor do widget [aetse_banner tema="..."] — fundo permanece branco
   em todos; só a cor de destaque (--aetse-w-accent*) muda. */
.aetse-tema-preto    { --aetse-w-accent: #1a1a1a; --aetse-w-accent-bg: #f0f0f0; --aetse-w-accent-bar: #1a1a1a; }
.aetse-tema-vermelho { --aetse-w-accent: #c81e2c; --aetse-w-accent-bg: #fde8e9; --aetse-w-accent-bar: #e0303f; }
.aetse-tema-roxo     { --aetse-w-accent: #6a2c91; --aetse-w-accent-bg: #f1e6f7; --aetse-w-accent-bar: #8a3fb8; }
.aetse-tema-dourado  { --aetse-w-accent: #9c7a12; --aetse-w-accent-bg: #faf3d9; --aetse-w-accent-bar: #c9a227; }
.aetse-tema-azul     { --aetse-w-accent: #1a56c8; --aetse-w-accent-bg: #e6eefb; --aetse-w-accent-bar: #2f6fe0; }
.aetse-tema-verde    { --aetse-w-accent: #1f7a3d; --aetse-w-accent-bg: #e5f5ea; --aetse-w-accent-bar: #2a9d52; }
.aetse-w-carregando { opacity: .7; font-size: 13px; margin: 0; }

.aetse-w-header {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 14px;
	padding-bottom: 12px;
	margin-bottom: 14px;
	border-bottom: 1px solid #eee;
}
.aetse-w-filtros {
	display: inline-flex;
	flex-wrap: wrap;
	gap: 6px;
}
.aetse-w-filtro {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-size: 10px;
	font-weight: 700;
	letter-spacing: .04em;
	color: var(--aetse-w-accent, #c85a1a);
	background: var(--aetse-w-accent-bg, #fff1e6);
	border-radius: 999px;
	padding: 3px 10px;
	line-height: 1.4;
}
.aetse-w-filtro select {
	border: none;
	background: transparent;
	font-size: 11px;
	font-weight: 700;
	color: var(--aetse-w-accent, #c85a1a);
	max-width: 90px;
	height: 18px;
	line-height: 18px;
	padding: 0;
}
.aetse-w-titulo { font-weight: 700; font-size: 15px; flex: 1 1 auto; }
.aetse-w-stats {
	display: flex;
	flex-wrap: wrap;
	gap: 14px;
	font-size: 12px;
	color: #777;
}
.aetse-w-stats span:first-child { font-weight: 600; color: #555; }
.aetse-w-atualizado {
	flex-basis: 100%;
	font-size: 11px;
	color: #999;
	margin-top: 2px;
}

/* Barra horizontal de candidatos — mesma estrutura em qualquer largura de
   tela: os cards NUNCA empilham, a linha rola horizontalmente (scroll) para
   revelar os candidatos seguintes. Isso evita tanto o "espaçamento demais"
   do empilhamento no mobile quanto o corte de candidatos fora do Top 5. */
.aetse-w-corpo {
	display: flex;
	flex-wrap: nowrap;
	gap: 14px;
	align-items: stretch;
	overflow-x: auto;
	overflow-y: hidden;
	padding-bottom: 8px;
	-webkit-overflow-scrolling: touch;
	scrollbar-width: thin;
}
.aetse-w-corpo::-webkit-scrollbar { height: 6px; }
.aetse-w-corpo::-webkit-scrollbar-thumb { background: #ddd; border-radius: 999px; }
.aetse-w-corpo::-webkit-scrollbar-track { background: transparent; }

.aetse-w-avatar, .aetse-w-avatar-placeholder {
	border-radius: 50%;
	object-fit: cover;
	background: #eee;
	flex-shrink: 0;
	width: 40px;
	height: 40px;
	font-size: 15px;
	display: flex;
	align-items: center;
	justify-content: center;
	font-weight: 700;
	color: #999;
}

/* Bloco de candidato: largura fixa, nunca encolhe (flex-shrink: 0) — é isso
   que faz a linha rolar em vez de espremer os cards. Por dentro, duas
   seções empilhadas: o "topo" (foto + posição + nome + número + partido, lado
   a lado) e a "base" (barra de progresso + percentual + votos). */
.aetse-w-card {
	position: relative;
	flex: 0 0 220px;
	width: 220px;
	display: flex;
	flex-direction: column;
	gap: 8px;
	padding: 10px 12px;
	border: 1px solid #eee;
	border-radius: 10px;
}

/* Candidatos em destaque — eleitos, sendo eleitos, no 2º turno ou que já
   disputaram um 2º turno — ficam 50% mais largos e com fonte um pouco maior,
   para se destacarem na rolagem mesmo fora da primeira posição. */
.aetse-w-card-destaque {
	flex-basis: 330px;
	width: 330px;
	border-color: var(--aetse-w-accent, #c85a1a);
}
.aetse-w-card-destaque .aetse-w-avatar,
.aetse-w-card-destaque .aetse-w-avatar-placeholder { width: 52px; height: 52px; font-size: 19px; }
.aetse-w-card-destaque .aetse-w-nome { font-size: 17px; }
.aetse-w-card-destaque .aetse-w-pct-grande { font-size: 29px; }
.aetse-w-card-destaque .aetse-w-numero,
.aetse-w-card-destaque .aetse-w-partido,
.aetse-w-card-destaque .aetse-w-votos { font-size: 13px; }

.aetse-w-card-topo {
	display: flex;
	align-items: center;
	gap: 8px;
	min-width: 0;
}

/* Nome numa linha própria (com a posição) e número/partido numa linha abaixo
   — dá ao nome a largura inteira do card, em vez de dividir espaço com
   número e partido na mesma linha e truncar cedo demais. */
.aetse-w-info {
	display: flex;
	flex-direction: column;
	gap: 2px;
	min-width: 0;
	flex: 1 1 auto;
}
.aetse-w-linha-nome {
	display: flex;
	align-items: center;
	gap: 6px;
	min-width: 0;
}
.aetse-w-linha-meta {
	display: flex;
	align-items: center;
	gap: 8px;
	min-width: 0;
}
.aetse-w-posicao { font-weight: 700; font-size: 13px; color: #999; flex-shrink: 0; }
.aetse-w-nome {
	font-weight: 700;
	font-size: 14px;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	min-width: 0;
	flex: 1 1 auto;
}
.aetse-w-numero { font-size: 12px; color: #999; font-weight: 600; flex-shrink: 0; }
.aetse-w-partido { font-size: 12px; color: #999; flex-shrink: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }

.aetse-w-card-base {
	display: flex;
	align-items: center;
	gap: 8px;
}
.aetse-w-barra {
	height: 5px;
	background: #eee;
	border-radius: 999px;
	overflow: hidden;
	flex: 1 1 auto;
	min-width: 40px;
}
.aetse-w-barra > span { display: block; height: 100%; background: var(--aetse-w-accent-bar, #ff8a3d); }
.aetse-w-pct-grande { font-size: 20px; font-weight: 800; line-height: 1.1; flex-shrink: 0; }
.aetse-w-votos { font-size: 12px; color: #777; flex-shrink: 0; white-space: nowrap; }

.aetse-w-tag-2turno,
.aetse-w-tag-eleito {
	position: absolute;
	top: -8px;
	right: 8px;
	font-size: 10px;
	font-weight: 700;
	border-radius: 999px;
	padding: 2px 10px;
}
.aetse-w-tag-2turno { background: #ffb020; color: #4a2c00; }
.aetse-w-tag-eleito { background: #146c2e; color: #fff; }

.aetse-w-vazio { opacity: .7; font-size: 13px; margin: 0; }

.aetse-w-link-ao-vivo {
	display: inline-block;
	margin-top: 14px;
	font-size: 13px;
	font-weight: 700;
	color: var(--aetse-w-accent, #c85a1a);
	text-decoration: none;
}
.aetse-w-link-ao-vivo:hover { text-decoration: underline; }

@media (max-width: 640px) {
	.aetse-w-header { flex-direction: column; align-items: flex-start; }

	/* Mesma barra com scroll horizontal do desktop, só com cards um pouco
	   mais estreitos para caber mais candidatos "espiando" na borda da tela
	   (indicando que há mais para rolar). */
	.aetse-w-card { flex-basis: 180px; width: 180px; }
	.aetse-w-card-destaque { flex-basis: 270px; width: 270px; }
}

/* Mobile: widgets de "Apuração ao vivo" (aetse-widget-card / dashboard do
   Estado). Este bloco fica de propósito no FINAL do arquivo — regras de mesma
   especificidade (ex.: ".aetse-widget-card") são resolvidas pela ordem de
   declaração, e não por estarem dentro de uma media query; colocado mais
   acima do arquivo, como estava antes, as regras base declaradas depois dele
   venciam e anulavam silenciosamente estes ajustes, que é por isso o mobile
   ainda saía com o respiro e o tamanho de telas largas. */
@media (max-width: 600px) {
	.aetse-wrap {
		padding: 16px 12px 32px;
	}

	.aetse-filtros {
		flex-direction: column;
		align-items: stretch;
		padding: 12px;
		gap: 10px;
	}
	.aetse-filtros label,
	.aetse-filtros select,
	.aetse-filtros input[type="text"],
	.aetse-filtros .aetse-cidade-combo {
		width: 100%;
		min-width: 0;
	}

	.aetse-painel-estado-titulo {
		font-size: 12px;
		margin: -4px 0 14px;
	}

	.aetse-widgets,
	.aetse-dashboard-estado,
	.aetse-dashboard-grid,
	.aetse-dashboard-grid-3col {
		grid-template-columns: 1fr;
		gap: 10px;
	}

	.aetse-widget-card {
		padding: 12px 14px;
	}
	.aetse-widget-card h3 {
		margin: 0 0 8px;
		font-size: 14px;
	}

	/* Barra de progresso um pouco mais alta em telas pequenas — em telas
	   largas 8px já é bem visível ao lado do resto do card, mas no mobile,
	   com o card mais estreito e compacto, uma barra fina demais some no
	   meio do espaçamento em vez de se destacar como o indicador principal
	   de percentual apurado. */
	.aetse-progress {
		height: 10px;
		margin-bottom: 8px;
	}
	.aetse-pct-numero {
		font-size: 17px;
		margin: 0 0 2px;
	}
	.aetse-card-presidencial .aetse-pct-numero {
		font-size: 20px;
	}
	.aetse-card-presidencial .aetse-widget-lista {
		grid-template-columns: 1fr;
		gap: 0;
	}

	/* Lista de candidatos: mantém tudo numa única linha por candidato (em vez
	   de deixar avatar/nome/votos quebrarem e empilharem em várias linhas
	   soltas) — só encolhe avatar, fontes e espaçamentos, e trunca o nome se
	   não couber, para caber confortavelmente na largura do celular. */
	.aetse-widget-lista {
		margin-top: 8px;
	}
	.aetse-widget-lista li {
		flex-wrap: nowrap;
		gap: 6px;
		padding: 7px 0;
	}
	.aetse-widget-lista .aetse-avatar,
	.aetse-widget-lista .aetse-avatar-placeholder {
		width: 26px;
		height: 26px;
		font-size: 11px;
	}
	.aetse-li-info {
		font-size: 13px;
		overflow: hidden;
		text-overflow: ellipsis;
		white-space: nowrap;
	}
	.aetse-li-votos {
		font-size: 12px;
	}

	.aetse-dc-detalhes {
		display: block;
		margin-top: 10px;
		padding: 8px 0;
		text-align: center;
		border-top: 1px solid #eee;
	}
	.aetse-btn-voltar {
		width: 100%;
		justify-content: center;
	}
}
