/*
 * Portal Eleições — resultado.php / desempenho + estabilidade visual R1
 * Objetivos: primeiro paint coerente, reserva de geometria e módulos pesados sob demanda.
 */

/* ---------- Primeira dobra estável ---------- */
.election-home-selector {
  min-height: 116px;
  box-sizing: border-box;
}
.election-big-select,
.election-big-select select {
  min-width: 0;
}
.election-big-select select {
  min-height: 48px;
}
#featured-election-meta {
  min-height: 1.45em;
}
#results-hero-status {
  min-height: 1.2em;
}

/* O bloco de apuração já ocupa sua altura antes da resposta da fonte. */
#featured-president-counting {
  min-height: 58px;
  box-sizing: border-box;
}

/*
 * O carregamento inicial das eleições gerais sempre começa pelo 1º turno.
 * Reservamos aproximadamente a geometria de dois líderes + candidatos menores.
 * A classe .results-president-ready é aplicada assim que o conteúdo real entra.
 */
#featured-president-results:not(.results-president-ready) {
  min-height: 322px;
}
#featured-president-pagination {
  min-height: 38px;
  box-sizing: border-box;
}

/* ---------- Skeleton do resultado presidencial ---------- */
.results-president-skeleton {
  display: grid;
  gap: 14px;
}
.results-skeleton-card {
  pointer-events: none;
}
.results-skeleton-photo,
.results-skeleton-line,
.results-skeleton-pill {
  position: relative;
  overflow: hidden;
  background: #e8eef4 !important;
  color: transparent !important;
}
.results-skeleton-photo::after,
.results-skeleton-line::after,
.results-skeleton-pill::after,
.result-metric-skeleton .home-stat::after {
  content: "";
  position: absolute;
  inset: 0;
  transform: translateX(-100%);
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.62), transparent);
  animation: resultsSkeletonSweep 1.35s ease-in-out infinite;
}
.results-skeleton-line {
  display: block;
  height: 13px;
  border-radius: 999px;
  margin: 8px 0;
}
.results-skeleton-line.is-title { width: min(78%, 270px); height: 24px; }
.results-skeleton-line.is-medium { width: min(58%, 210px); }
.results-skeleton-line.is-small { width: min(42%, 150px); height: 10px; }
.results-skeleton-pill { width: 76px; height: 30px; border-radius: 999px; }
.results-skeleton-copy { min-width: 0; }
.results-skeleton-small-copy { min-width: 0; width: 100%; }
.results-skeleton-small-copy .results-skeleton-line { margin: 5px 0; }
@keyframes resultsSkeletonSweep { to { transform: translateX(100%); } }

/* ---------- Métricas: espaço existe antes do JS complementar ---------- */
.home-president-stats.results-metric-reserve {
  min-height: 108px;
  box-sizing: border-box;
}
.home-electorate-wrap.results-metric-reserve {
  min-height: 96px;
  box-sizing: border-box;
}
.home-state-participation.results-metric-reserve {
  min-height: 116px;
  box-sizing: border-box;
}
.result-metric-skeleton {
  opacity: .72;
}
.result-metric-skeleton .home-stat {
  position: relative;
  overflow: hidden;
}
.result-metric-skeleton .home-stat > * {
  visibility: hidden;
}

/* ---------- Fotos: dimensões fixas + pintura isolada ---------- */
.featured-candidate-photo,
.featured-race-photo,
.result-bench-photo,
.result-bench-detail-photo {
  contain: layout paint;
}
.featured-candidate-photo img,
.featured-race-photo img,
.result-bench-photo img,
.result-bench-detail-photo img {
  display: block;
}

/* ---------- Blocos abaixo da dobra ---------- */
#result-bench,
.results-home-tools,
.results-news-block {
  content-visibility: auto;
  contain-intrinsic-size: auto 520px;
}

/* O mapa já tem 590px reservados no CSS próprio; mantemos o contêiner previsível. */
#president-territorial-explorer:not([hidden]) {
  contain: layout paint;
}

/* Evita saltos por mensagens curtas/longas nos estados de carregamento. */
.featured-loading,
.featured-empty-large {
  box-sizing: border-box;
}
#featured-state-grid,
#municipal-results-grid {
  min-height: 120px;
}

@media (max-width: 1020px) {
  #featured-president-results:not(.results-president-ready) {
    min-height: 350px;
  }
}

@media (max-width: 760px) {
  .election-home-selector { min-height: 158px; }
  #featured-president-results:not(.results-president-ready) {
    min-height: 610px;
  }
  .home-president-stats.results-metric-reserve { min-height: 178px; }
  .home-electorate-wrap.results-metric-reserve { min-height: 150px; }
  .home-state-participation.results-metric-reserve { min-height: 188px; }
}

@media (max-width: 520px) {
  #featured-president-results:not(.results-president-ready) {
    min-height: 650px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .results-skeleton-photo::after,
  .results-skeleton-line::after,
  .results-skeleton-pill::after,
  .result-metric-skeleton .home-stat::after {
    animation: none;
  }
}
