/* origem: eleicoes2026@ef6936f app/static/css/app.css */
/* App layout — sidebar fixa + main scrollável.
   DS canônico cuida de tipografia/cores/tokens; aqui é só geometria
   e overrides locais que ainda não foram promovidos ao canônico.
   (Override [data-theme="light"] de --fg1/--fg2/--fg3 promovido ao
   canônico em DS 1.5.25 — 2026-05-03.)
*/

/* DS pendente — override LOCAL para --bg2 em light. O canônico só
   define --bg2 em dark (#141d27); sem este override, cards e tags
   que usam var(--bg2) renderizam fundo dark sólido sobre paper cream
   e o conteúdo interno (que usa --fg1 escuro) fica ilegível.
   Aplica em .sl-cobertura__card e .sl-cobertura__topic.
   TODO: promover ao canônico em projetos/sapienslabs-design-system/. */
[data-theme="light"] {
  --bg2: var(--color-cream-deep);   /* #ebe2cf — secondary cream surface */
}

/* Tokens-ponte: nomes locais que não existem no canônico. Sem o alias
   --font-display caía no fallback herdado (Archivo Narrow faux-bold) em
   ~20 declarações display (KPIs, títulos de card). Mesmo padrão dos
   monitores Câmara/Senado. Corrigido em 07/07/2026 (auditoria de DS). */
:root {
  --font-display: var(--font-heading);
  --font-eyebrow: var(--font-mono);
}

*, *::before, *::after { box-sizing: border-box; }

html, body { height: 100%; }
html, body { overflow-x: clip; }   /* salva-vidas contra estouros de filhos */
body {
  background: var(--paper);
  color: var(--text);
  font-family: var(--font-body);
  font-size: var(--text-body);
  line-height: 1.55;
  margin: 0;
  -webkit-font-smoothing: antialiased;
}

a { color: inherit; text-decoration: none; }
a:hover { color: var(--accent); }

.sl-app {
  display: grid;
  grid-template-columns: 280px minmax(0, 1fr);   /* minmax(0, 1fr) impede grid-blowout */
  min-height: 100vh;
}

.sl-sidebar {
  position: sticky;
  top: 0;
  align-self: start;
  height: 100vh;
  overflow-y: auto;
  padding: 24px 0;
  border-right: 1px solid var(--rule);
  background: var(--paper);
}

/* Bloco de campanha: countdown pro 1º turno + frescor da coleta.
   Marca o site como "de campanha" em todas as páginas de uma vez. */
.sl-sidebar__campanha {
  margin-top: 40px;
  padding: 18px 28px 0;
  border-top: 1px solid var(--rule);
}
.sl-sidebar__countdown {
  display: flex;
  align-items: baseline;
  gap: 10px;
}
.sl-sidebar__countdown-n {
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 2rem;
  line-height: 1;
  color: var(--fg1);
  font-variant-numeric: tabular-nums;
}
.sl-sidebar__countdown-label {
  font-family: var(--font-mono);
  font-size: 0.62rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--muted);
  line-height: 1.5;
}
.sl-sidebar__freshness {
  margin-top: 10px;
  font-family: var(--font-mono);
  font-size: 0.62rem;
  letter-spacing: 0.08em;
  color: var(--muted);
}

.sl-sidebar__footer {
  margin-top: 24px;
  padding: 24px 28px 28px;
  border-top: 1px solid var(--rule);
}
.sl-sidebar__brand {
  display: block;
  color: var(--fg1);
  text-decoration: none;
  transition: opacity 160ms ease;
}
.sl-sidebar__brand:hover,
.sl-sidebar__brand:focus-visible {
  opacity: 0.6;
  outline: none;
}
.sl-sidebar__brand svg { display: block; width: 100%; max-width: 180px; height: auto; }

.sl-main {
  padding: 40px clamp(20px, 4vw, 64px) 80px;
  min-width: 0;     /* impede grid-blowout em viewport estreita */
}

/* Burger: invisível no desktop (a sidebar fixa já mostra tudo) */
.sl-nav-burger {
  display: none;
  align-items: center; gap: 10px;
  width: 100%; padding: 12px 0;
  background: none; border: none; border-bottom: 1px solid var(--rule);
  font-family: 'Fira Mono', monospace; font-size: 0.85rem;
  color: var(--fg1); cursor: pointer; text-align: left;
}
.sl-nav-burger__icon { font-size: 1.05rem; }

@media (max-width: 900px) {
  .sl-app { grid-template-columns: 1fr; }
  .sl-sidebar { position: static; height: auto; border-right: none; border-bottom: 1px solid var(--rule); }
  .sl-main { padding: 24px 20px 60px; }
  /* No empilhamento mobile a marca virava um interlúdio entre o menu e o
     conteúdo (Leo, 12/08/2026). O countdown fica (é informação); a marca
     sai — o rodapé de cada página e o domínio já assinam. */
  .sl-sidebar__brand { display: none; }
  /* Menu colapsável (hambúrguer): NAV fechada por padrão no mobile;
     countdown/freshness ficam visíveis e compactos. Sem faixas vazias:
     o footer só contém a marca (já oculta) e o bloco de campanha perde a
     margem/borda desenhadas pro empilhamento desktop (12/08/2026). */
  .sl-nav-burger { display: flex; padding: 12px 28px; }
  .sl-sidebar { padding: 0; }
  .sl-sidebar .sl-menu { display: none; }
  .sl-sidebar--open .sl-menu { display: block; }
  .sl-sidebar__campanha { margin-top: 0; border-top: none; padding: 14px 28px 16px; }
  .sl-sidebar__footer { display: none; }
}


/* ─── Pills (filtro de período) ─── */
.sl-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin: 0 0 24px;
  padding: 4px;
  border: 1px solid var(--rule);
  background: var(--paper-deep);
  width: fit-content;
}
.sl-pill {
  padding: 8px 16px;
  font-family: var(--font-mono);
  font-size: 0.72rem;
  font-weight: 500;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--text-soft);
  border-radius: 0;
  transition: color .15s ease, background .15s ease;
}
.sl-pill:hover { color: var(--text); background: var(--paper); }
.sl-pill--active { color: var(--text); background: var(--paper); }
/* Janela que o acervo ainda não cobre (12/09/2026): a pílula continua clicável —
   o gráfico não mente, desenha só os dias que existem —, mas fica apagada e
   ganha um ponto, para o leitor não achar que os botões devolvem recortes
   diferentes quando devolvem a mesma figura. A nota abaixo diz desde quando. */
.sl-pill--parcial { opacity: .55; }
.sl-pill--parcial:hover { opacity: 1; }
.sl-pills__nota {
  margin: -18px 0 24px;
  max-width: 68ch;
  font-size: 0.82rem;
  line-height: 1.45;
  color: var(--text-soft);
}

/* ─── Hero ─── */
.sl-hero { padding: 24px 0 48px; }
.sl-hero__eyebrow { margin-bottom: 12px; }
.sl-hero__title   { margin: 0 0 16px; }
/* Linha de status discreta no hero (12/08/2026): a infra que morava nos
   KPIs da home (última coleta, tamanho da base) vira uma linha só. */
.sl-hero__status {
  font-family: 'Fira Mono', monospace;
  font-size: 0.75rem;
  color: var(--fg3);
  margin-top: 10px;
}

.sl-hero__lede {
  font-family: var(--font-body);
  font-size: 1.125rem;
  line-height: 1.5;
  max-width: 64ch;
  color: var(--text);
}

/* ─── KPI grid ─── */
.sl-kpi-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 16px;
  margin-top: 32px;
}
.sl-kpi-card {
  border: 1px solid var(--rule);
  background: var(--paper);
  padding: 20px;
}
.sl-kpi-card__label {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 12px;
}
.sl-kpi-card__value {
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 2.4rem;
  line-height: 1;
  color: var(--text);
}
.sl-kpi-card__hint {
  margin-top: 8px;
  font-family: var(--font-mono);
  font-size: 0.7rem;
  color: var(--muted);
}

.sl-delta {
  font-weight: 700;
  font-family: var(--font-mono);
  letter-spacing: 0.02em;
}
.sl-delta--up   { color: var(--pos); }
.sl-delta--down { color: var(--neg); }
.sl-delta--flat { color: var(--muted); }
.sl-delta--new  { color: var(--accent); }

@media (max-width: 720px) {
  .sl-kpi-grid { grid-template-columns: repeat(2, 1fr); }
}

/* ─── Lean bars (espectro editorial) ───
   As cores dos cinco níveis (--lean-*) saem de charts.LEAN_DETAIL_COLORS, injetadas no
   <style> do base.html: a MESMA escala dos gráficos (escuro · claro · cinza · claro ·
   escuro, vermelho↔azul). Antes estas barras e selos usavam o arco-íris antigo do DS
   (--color-spectrum-*), em que "esquerda" era o vermelho de NEG e o centro, um verde. */
.sl-lean-bars { list-style: none; padding: 0; margin: 16px 0 0; display: grid; gap: 8px; }
.sl-lean-row {
  display: grid;
  grid-template-columns: 160px 1fr 60px 60px;
  gap: 12px;
  align-items: center;
  font-family: var(--font-mono);
  font-size: 0.85rem;
}
.sl-lean-row__label { color: var(--text); text-transform: capitalize; }
.sl-lean-row__track {
  display: block; height: 14px; background: var(--rule); position: relative;
}
.sl-lean-row__fill { display: block; height: 100%; }
.sl-lean-row__fill--extrema_esquerda { background: var(--lean-extrema-esquerda); }
.sl-lean-row__fill--esquerda         { background: var(--lean-esquerda); }
.sl-lean-row__fill--centro           { background: var(--lean-centro); }
.sl-lean-row__fill--direita          { background: var(--lean-direita); }
.sl-lean-row__fill--extrema_direita  { background: var(--lean-extrema-direita); }
.sl-lean-row__count { color: var(--muted); text-align: right; }
.sl-lean-row__pct { color: var(--text); text-align: right; }
@media (max-width: 720px) {
  /* contagem e percentual ficam escritos também no celular */
  .sl-lean-row { grid-template-columns: 92px 1fr 46px 50px; gap: 8px; }
}

/* ─── Charts ─── */
.sl-chart {
  border: 1px solid var(--rule);
  background: var(--paper);
  padding: 16px 8px 8px;
  min-width: 0;
  overflow: hidden;
}
.sl-chart .plotly-graph-div { max-width: 100%; }
/* Small multiples: a grade de 5 colunas não cabe num telefone (cada painel ficaria com
   ~60 px). Em vez de rolar de lado, o servidor manda DUAS figuras do mesmo molde —
   5 colunas e 2 × 5 — e o CSS mostra a que cabe na largura (charts.small_multiples_responsivo_html). */
.sl-sm--estreito { display: none; }
@media (max-width: 700px) {
  .sl-sm--largo { display: none; }
  .sl-sm--estreito { display: block; }
}
/* Rolagem horizontal em invólucro PRÓPRIO — plano B para o gráfico que não tem outra
   diagramação (rede, grafo, ligações entre listas): melhor rolar que encolher o texto
   até ilegível. A página nunca rola de lado; só esta caixa. A largura mínima de cada
   gráfico vem de --rola-min. Nasceu como `.sl-chart--multiples` (0.3.5). */
.sl-chart--rola { overflow-x: auto; overflow-y: hidden; }
.sl-chart--rola .plotly-graph-div { min-width: var(--rola-min, 560px); max-width: none; }
/* …e diz que rola (12/09/2026): as duas
   sombras aparecem só quando há conteúdo fora da vista, porque `local` acompanha
   o scroll e `scroll` fica preso à borda — o par cancela um ao outro nas pontas. */
.sl-chart--rola {
  background:
    linear-gradient(to right, var(--paper) 30%, rgba(0, 0, 0, 0)),
    linear-gradient(to right, rgba(0, 0, 0, 0), var(--paper) 70%) 100% 0,
    radial-gradient(farthest-side at 0 50%, rgba(0, 0, 0, .16), rgba(0, 0, 0, 0)),
    radial-gradient(farthest-side at 100% 50%, rgba(0, 0, 0, .16), rgba(0, 0, 0, 0)) 100% 0;
  background-repeat: no-repeat;
  background-size: 40px 100%, 40px 100%, 14px 100%, 14px 100%;
  background-attachment: local, local, scroll, scroll;
}
.sl-chart__rolagem { display: none; }
@media (max-width: 700px) {
  /* a dica só existe onde a grade de fato não cabe */
  .sl-chart__rolagem {
    display: block;
    margin: 4px 0 0;
    font-family: var(--font-mono);
    font-size: 0.7rem;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--muted);
  }
}
.sl-chart-empty {
  padding: 48px 16px;
  text-align: center;
  font-family: var(--font-mono);
  font-size: 0.78rem;
  color: var(--muted);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

/* ─── Sections ─── */
.sl-section { margin-top: 56px; }
.sl-section__title { margin: 0 0 8px; }
.sl-section__lede {
  max-width: 64ch;
  margin: 0 0 24px;
  color: var(--text-soft);
}

/* ─── Candidate grid ─── */
.sl-ent-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 12px;
}
.sl-ent-card {
  border: 1px solid var(--rule);
  background: var(--paper);
  padding: 18px 20px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  transition: border-color .15s ease;
}
.sl-ent-card:hover { border-color: var(--accent); }

.sl-ent-card__header {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
}
.sl-ent-card__name {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1rem;
  letter-spacing: 0.02em;
  margin: 0;
  text-transform: none;
}
.sl-ent-card__badge {
  font-family: var(--font-mono);
  font-size: 0.62rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--muted);
  border: 1px solid var(--rule);
  padding: 2px 6px;
}

.sl-ent-card__volume { display: flex; align-items: baseline; gap: 8px; }
.sl-ent-card__n {
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 2rem;
  line-height: 1;
  color: var(--text);
}
.sl-ent-card__n-label {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--muted);
}

.sl-ent-card__bar {
  display: flex;
  height: 4px;
  background: var(--rule);
  overflow: hidden;
}
/* ─── Leaderboard compacto de candidatos (12/08/2026) ─── */
.sl-leaderboard { list-style: none; margin: 0; padding: 0; }
.sl-leader-row {
  display: flex; align-items: center; gap: 12px;
  padding: 8px 0; border-bottom: 1px solid var(--rule);
  text-decoration: none;
}
.sl-leaderboard li:last-child .sl-leader-row { border-bottom: none; }
/* Panorama: o Supremo em lista própria, acima dos ministros (04/10/2026) */
.sl-leaderboard + .sl-leaderboard { margin-top: 24px; padding-top: 12px; border-top: 1px solid var(--rule); }
.sl-leader-row:hover .sl-leader-row__name { color: var(--accent); }
.sl-leader-row__rank {
  font-family: 'Fira Mono', monospace; font-size: 0.72rem;
  color: var(--fg3); flex: 0 0 22px;
}
.sl-leader-row__name { font-weight: 600; color: var(--fg1); flex: 0 0 175px; }
.sl-leader-row__n {
  font-family: 'Fira Mono', monospace; font-size: 0.85rem;
  color: var(--fg2); flex: 0 0 56px; text-align: right;
}
.sl-leader-row__bar {
  flex: 1 1 auto; height: 8px; display: flex;
  border-radius: 4px; overflow: hidden; background: var(--rule);
}
.sl-leader-row__bar-pos { background: var(--pos); }
.sl-leader-row__bar-neu { background: var(--muted); }
.sl-leader-row__bar-neg { background: var(--neg); }
.sl-leader-row__split {
  font-family: 'Fira Mono', monospace; font-size: 0.72rem;
  color: var(--fg3); flex: 0 0 auto; white-space: nowrap;
}
.sl-leader-row__delta {
  font-family: 'Fira Mono', monospace; font-size: 0.72rem;
  flex: 0 0 52px; text-align: right;
}
/* Variante pros leaderboards de tópicos e fontes (ex-treemaps, 12/08/2026):
   nomes mais longos que os de candidato; badge de espectro na linha de fonte. */
.sl-leader-row__name--wide { flex: 0 0 240px; }
/* Coluna fixa: badges de largura variável desalinhavam o início das barras. */
.sl-leader-row__lean { flex: 0 0 148px; text-align: center; }
.sl-leader-row__base { color: var(--muted); }
@media (max-width: 720px) {
  /* O percentual não some no celular (a barra verde/cinza/vermelha sozinha não diz o
     quanto, e verde/vermelho nunca é a única codificação): o texto desce para uma linha
     própria, abaixo de nome, total e barra. */
  .sl-leader-row { flex-wrap: wrap; row-gap: 2px; }
  .sl-leader-row__rank { display: none; }
  .sl-leader-row__split { flex: 1 0 100%; white-space: normal; }
  .sl-leader-row__name { flex: 0 1 auto; min-width: 110px; }
  .sl-leader-row__name--wide { flex: 0 1 auto; }
  .sl-leader-row__lean { flex: 0 0 auto; }
}

.sl-ent-card__bar-pos { background: var(--pos); }
.sl-ent-card__bar-neu { background: var(--muted); }
.sl-ent-card__bar-neg { background: var(--neg); }

.sl-ent-card__split {
  display: flex;
  gap: 12px;
  font-family: var(--font-mono);
  font-size: 0.68rem;
  letter-spacing: 0.06em;
}
.sl-ent-card__split-pos { color: var(--pos); }
.sl-ent-card__split-neu { color: var(--muted); }
.sl-ent-card__split-neg { color: var(--neg); }

.sl-ent-card__empty {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
}

/* ─── Cand card delta badge ─── */
.sl-ent-card__delta {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  letter-spacing: 0.06em;
  padding: 2px 6px;
  border: 1px solid var(--rule);
}
.sl-ent-card__delta--up   { color: var(--pos); border-color: var(--pos); }
.sl-ent-card__delta--down { color: var(--neg); border-color: var(--neg); }
.sl-ent-card__delta--flat { color: var(--muted); }

/* ─── Highlights (Destaque / Divisivo) ─── */
.sl-highlights {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(380px, 100%), 1fr));
  gap: 16px;
}
.sl-highlight {
  border: 1px solid var(--rule);
  border-left: 3px solid var(--accent);
  background: var(--paper);
  padding: 24px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.sl-highlight__label {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 8px;
}
.sl-highlight__name {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1.4rem;
  color: var(--accent);
}
.sl-highlight__big {
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 2.4rem;
  line-height: 1.05;
  color: var(--text);
}
.sl-highlight__hint {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--muted);
}
.sl-highlight__var {
  font-family: var(--font-mono);
  font-weight: 700;
  font-size: 1rem;
  margin-top: 6px;
}
.sl-highlight__var--up { color: var(--pos); }
.sl-highlight__range {
  font-family: var(--font-mono);
  font-size: 0.78rem;
  color: var(--text-soft);
  margin-bottom: 10px;
}
.sl-highlight__empty { color: var(--text-soft); margin: 8px 0 0; }
.sl-highlight__extreme {
  margin-top: 10px;
  font-size: 0.9rem;
  line-height: 1.4;
}
.sl-highlight__extreme--neg .sl-highlight__score { color: var(--neg); }
.sl-highlight__extreme--pos .sl-highlight__score { color: var(--pos); }
.sl-highlight__score {
  font-family: var(--font-mono);
  font-weight: 700;
}
.sl-highlight__source {
  color: var(--text-soft);
  font-size: 0.85rem;
}
.sl-highlight__article {
  display: block;
  margin-top: 2px;
  font-size: 0.85rem;
  color: var(--text-soft);
  border-bottom: 1px dotted var(--rule);
  width: fit-content;
  padding-bottom: 1px;
}
.sl-highlight__article:hover { color: var(--accent); border-bottom-color: var(--accent); }

/* ─── Sentiment list (avg score por candidato) ─── */
.sl-sentiment-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.sl-sentiment-row {
  display: grid;
  grid-template-columns: 200px 1fr 60px;
  align-items: center;
  gap: 16px;
  padding: 8px 0;
  border-bottom: 1px solid var(--rule);
}
.sl-sentiment-row__name {
  font-family: var(--font-body);
  font-size: 0.95rem;
}
.sl-sentiment-row__track {
  position: relative;
  height: 12px;
  background: var(--paper-deep);
}
.sl-sentiment-row__axis {
  position: absolute;
  top: 0; bottom: 0;
  left: 50%;
  width: 1px;
  background: var(--rule);
}
.sl-sentiment-row__bar {
  position: absolute;
  top: 1px; bottom: 1px;
}
.sl-sentiment-row__bar--pos { background: var(--pos); }
.sl-sentiment-row__bar--neg { background: var(--neg); }
.sl-sentiment-row__score {
  font-family: var(--font-mono);
  font-size: 0.78rem;
  text-align: right;
  color: var(--text-soft);
}

/* ─── Emerging topics ─── */
.sl-emerging-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.sl-emerging-item {
  border-left: 2px solid var(--rule);
  padding: 12px 16px;
  background: var(--paper);
}
.sl-emerging-item--featured {
  border-left: 4px solid var(--gold);
  background: color-mix(in oklch, var(--gold) 8%, var(--paper));
  padding: 14px 18px;
}
.sl-emerging-item__featured-label {
  font-family: var(--font-mono);
  font-size: 0.62rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 6px;
}
.sl-emerging-item__header {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 10px;
}
.sl-emerging-item__topic {
  margin: 0;
  font-family: var(--font-body);
  font-weight: 700;
  font-size: 1.05rem;
  text-transform: none;
}
.sl-emerging-item__count {
  font-family: var(--font-mono);
  font-size: 0.78rem;
  color: var(--muted);
}
.sl-emerging-badge {
  display: inline-block;
  font-family: var(--font-mono);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  padding: 2px 8px;
  color: #fff;
}
.sl-emerging-badge--new { background: var(--neg); }
.sl-emerging-badge--up  { background: var(--pos); }

.sl-emerging-dual {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2rem;
}
@media (max-width: 700px) {
  .sl-emerging-dual { grid-template-columns: 1fr; }
}
.sl-emerging-dual__subtitle {
  font-family: var(--font-eyebrow);
  font-size: 0.75rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--text-soft);
  margin-bottom: 1rem;
}
.sl-emerging-list--compact .sl-emerging-item--featured {
  border-left: none;
  padding-left: 0;
  background: none;
}

.sl-article-item__desc {
  font-family: var(--font-body);
  font-size: 0.92rem;
  color: var(--text-soft);
  line-height: 1.45;
  margin-top: 4px;
}
.sl-article-item__tags {
  display: inline-flex;
  gap: 6px;
  flex-wrap: wrap;
  margin-left: 4px;
}
.sl-tag {
  font-family: var(--font-mono);
  font-size: 0.62rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--accent);
  border: 1px solid var(--rule);
  padding: 1px 6px;
  white-space: nowrap;
}
.sl-section__cta {
  margin-top: 24px;
  text-align: center;
  font-family: var(--font-body);
  font-size: 1.05rem;
}
.sl-section__cta a { color: var(--accent); }

.sl-article-list--compact { border-top: none; }
.sl-article-list--compact .sl-article-item:last-child { border-bottom: none; }
.sl-article-list--compact .sl-article-item__link { padding: 8px 0; }
.sl-article-list--compact .sl-article-item__title { font-size: 0.92rem; }

/* ─── Cand card link / pre-candidatos index ─── */
.sl-ent-card--link {
  text-decoration: none;
  color: inherit;
  display: flex;
}
.sl-ent-card--link:hover { color: inherit; border-color: var(--accent); }
.sl-ent-card__avg {
  font-family: var(--font-mono);
  font-size: 0.78rem;
  color: var(--text-soft);
}
.sl-ent-card__avg-score--pos { color: var(--pos); }
.sl-ent-card__avg-score--neg { color: var(--neg); }
.sl-ent-card__notes {
  margin: 4px 0 0;
  font-size: 0.85rem;
  color: var(--text-soft);
  line-height: 1.4;
}

.sl-hero__back {
  margin-left: 16px;
  font-size: 0.7rem;
  color: var(--accent);
  text-transform: none;
  letter-spacing: 0.04em;
}

.sl-alert {
  border: 1px solid var(--rule);
  border-left: 3px solid var(--neg);
  background: var(--paper-deep);
  padding: 12px 16px;
  font-size: 0.95rem;
  color: var(--text-soft);
  margin: 16px 0;
}
.sl-alert code {
  font-family: var(--font-mono);
  background: var(--paper);
  padding: 1px 6px;
}

.sl-empty-msg {
  font-family: var(--font-mono);
  font-size: 0.78rem;
  color: var(--muted);
}

.sl-kpi-card__value--pos { color: var(--pos); }
.sl-kpi-card__value--neg { color: var(--neg); }

.sl-sent-tag {
  font-family: var(--font-mono);
  font-size: 0.78rem;
  font-weight: 700;
}
.sl-sent-tag--pos { color: var(--pos); }
.sl-sent-tag--neg { color: var(--neg); }

/* ─── Topics split (positivo/negativo lado a lado) ─── */
.sl-topics-split {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(380px, 100%), 1fr));   /* min(): a 390 px 380 estourava a coluna */
  gap: 24px;
}
.sl-topics-split__col { min-width: 0; }
.sl-topics-split__title {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1rem;
  text-transform: none;
  margin: 0 0 16px;
  display: flex;
  align-items: center;
  gap: 10px;
}
.sl-topics-split__dot {
  width: 10px; height: 10px;
  display: inline-block;
}
.sl-topics-split__dot--pos { background: var(--pos); }
.sl-topics-split__dot--neg { background: var(--neg); }

.sl-topics-bars { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 6px; }
.sl-topics-bar {
  display: grid;
  grid-template-columns: 160px 1fr 40px;
  align-items: center;
  gap: 12px;
  font-family: var(--font-body);
  font-size: 0.9rem;
}
.sl-topics-bar__label { color: var(--text-soft); }
.sl-topics-bar__track { background: var(--paper-deep); height: 10px; }
.sl-topics-bar__fill { display: block; height: 100%; }
.sl-topics-bar__fill--pos { background: var(--pos); }
.sl-topics-bar__fill--neg { background: var(--neg); }
.sl-topics-bar__count {
  font-family: var(--font-mono);
  font-size: 0.78rem;
  text-align: right;
  color: var(--muted);
}

/* ─── Sources list (com sentimento) ─── */
.sl-sources-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 8px; }
.sl-sources-row {
  display: grid;
  grid-template-columns: 200px 1fr 60px 60px;
  align-items: center;
  gap: 16px;
  font-family: var(--font-body);
  font-size: 0.9rem;
  padding: 8px 0;
  border-bottom: 1px solid var(--rule);
}
.sl-sources-row__name { color: var(--text); }
.sl-sources-row__track { background: var(--paper-deep); height: 12px; }
.sl-sources-row__fill { display: block; height: 100%; }
.sl-sources-row__fill--pos { background: var(--pos); }
.sl-sources-row__fill--neg { background: var(--neg); }
.sl-sources-row__fill--neu { background: var(--muted); }
.sl-sources-row__volume {
  font-family: var(--font-mono);
  font-size: 0.78rem;
  text-align: right;
  color: var(--text-soft);
}
.sl-sources-row__sent {
  font-family: var(--font-mono);
  font-size: 0.78rem;
  text-align: right;
  color: var(--muted);
}

/* ─── Home: panorama (Esta semana + Em destaque) ─── */
.sl-home-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(360px, 100%), 1fr));
  gap: 16px;
}
.sl-home-card {
  border: 1px solid var(--rule);
  background: var(--paper);
  padding: 28px 32px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.sl-home-card--week     { border-left: 4px solid var(--gold); }
.sl-home-card--featured { border-left: 4px solid var(--accent); }
.sl-home-card__eyebrow {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--muted);
}
.sl-home-card__title {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 1.7rem;
  line-height: 1.1;
  text-transform: uppercase;
  letter-spacing: 0.01em;
  color: var(--text);
}
.sl-home-card__stats {
  list-style: none;
  padding: 0;
  margin: 12px 0 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.sl-home-card__stats li {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  border-bottom: 1px dashed var(--rule);
  padding-bottom: 6px;
}
.sl-home-card__stat-label {
  font-family: var(--font-body);
  font-size: 0.92rem;
  color: var(--text-soft);
}
.sl-home-card__stat-value {
  font-family: var(--font-mono);
  font-weight: 700;
  font-size: 0.95rem;
  color: var(--text);
}
.sl-home-card__big {
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 3.4rem;
  line-height: 1;
  color: var(--accent);
  margin-top: 8px;
}
.sl-home-card__big-label {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--muted);
}
.sl-home-card__var {
  margin-top: 4px;
  font-family: var(--font-mono);
  font-weight: 700;
  font-size: 1rem;
  color: var(--pos);
}
.sl-home-card__cta {
  margin-top: auto;
  padding-top: 16px;
  font-family: var(--font-mono);
  font-size: 0.78rem;
  letter-spacing: 0.08em;
  color: var(--accent);
  text-transform: uppercase;
}
/* 12/08/2026: Tópico do momento em seção própria — lado a lado com a semana
   induzia leitura causal entre recortes independentes. O card largo abre em
   duas colunas no desktop (identidade do tópico | candidatos atingidos). */
.sl-home-card__id { display: flex; flex-direction: column; gap: 12px; }
@media (min-width: 780px) {
  .sl-home-card--wide {
    display: grid;
    grid-template-columns: minmax(240px, 340px) 1fr;
    column-gap: 56px;
    align-items: start;
  }
  .sl-home-card--wide .sl-home-card__stats { margin-top: 0; }
}
/* Sobe/desce dentro do card da semana: mesma janela de comparação, a
   associação aqui é legítima. Empilhado em coluna única. */
.sl-movers--stack { grid-template-columns: 1fr; gap: 0; }
.sl-home-card--movers .sl-home-card__big-label { margin-top: auto; }

/* ─── Selo genérico (Task 6b, 06/09/2026) ─── */
.sl-badge {
  display: inline-block;
  font-family: var(--font-mono);
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 1px 7px;
  border: 1px solid currentColor;
  border-radius: 2px;
  vertical-align: middle;
}
.sl-badge--warn { color: var(--gold); border-color: var(--gold); }

/* ─── Capa: atenção por ministro (Task 6b, regra 9 — distribuição, não ranking) ─── */
.sl-atencao-list { list-style: none; padding: 0; margin: 0; }
.sl-atencao-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
  padding: 10px 0;
  border-bottom: 1px solid var(--rule);
}
.sl-atencao-row:last-child { border-bottom: none; }
.sl-atencao-row__nome {
  flex: 0 0 170px;
  font-weight: 600;
  color: var(--fg1);
  text-decoration: none;
}
.sl-atencao-row__nome:hover { color: var(--accent); }
.sl-atencao-row__barra {
  flex: 1 1 auto;
  min-width: 80px;
  height: 8px;
  border-radius: 4px;
  background: var(--rule);
  overflow: hidden;
  display: block;
}
.sl-atencao__barra { display: block; height: 100%; width: var(--w, 0%); }
.sl-atencao-row__n {
  font-family: var(--font-mono);
  font-size: 0.82rem;
  color: var(--fg2);
  flex: 0 0 84px;
  text-align: right;
}
.sl-atencao-row__tom {
  font-family: var(--font-mono);
  font-size: 0.82rem;
  flex: 0 0 56px;
  text-align: right;
}
.sl-atencao-row__temas {
  font-family: var(--font-body);
  font-size: 0.82rem;
  color: var(--fg3);
  flex: 0 0 100%;
  padding-left: 182px;   /* alinha com o início da barra (nome 170px + gap 12px) */
  margin-top: -4px;
}
.sl-atencao-row__variacao {
  font-family: var(--font-mono);
  font-size: 0.72rem;
  color: var(--muted);
  flex: 0 0 100%;
}
@media (max-width: 720px) {
  /* nome, barra, total e tom cabem numa linha a 390 px (o tom ficava sozinho na de baixo) */
  .sl-atencao-row { gap: 8px 10px; }
  .sl-atencao-row__nome { flex: 0 1 112px; min-width: 0; }
  .sl-atencao-row__barra { min-width: 40px; }
  .sl-atencao-row__n { flex: 0 0 68px; }
  .sl-atencao-row__tom { flex: 0 0 46px; }
  .sl-atencao-row__temas { padding-left: 0; }
}

/* ─── Última análise (capa do feed SapiensLabs) ─── */
.sl-latest-analysis {
  border: 1px solid var(--rule);
  border-left: 4px solid var(--gold);
  background: color-mix(in oklch, var(--gold) 4%, var(--paper));
  padding: 28px 32px;
}
.sl-latest-analysis__eyebrow { margin-bottom: 12px; }
.sl-latest-analysis__title {
  margin: 0 0 12px;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1.8rem;
  line-height: 1.15;
  text-transform: none;
  letter-spacing: 0;
}
.sl-latest-analysis__title a { color: var(--text); }
.sl-latest-analysis__title a:hover { color: var(--accent); }
.sl-latest-analysis__excerpt {
  font-family: var(--font-body);
  font-size: 1.05rem;
  line-height: 1.55;
  color: var(--text-soft);
  margin: 0 0 16px;
  max-width: 70ch;
}
.sl-latest-analysis__meta {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  font-family: var(--font-mono);
  font-size: 0.78rem;
  color: var(--muted);
}
.sl-latest-analysis__link { color: var(--accent); }

/* ─── Nav guide (Metodologia) ─── */
.sl-nav-guide {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 12px;
}
.sl-nav-guide__item {
  display: block;
  border: 1px solid var(--rule);
  background: var(--paper);
  padding: 18px 20px;
  text-decoration: none;
  color: inherit;
  transition: border-color .15s ease, background .15s ease;
}
.sl-nav-guide__item:hover {
  border-color: var(--accent);
  background: var(--paper-deep);
  color: inherit;
}
.sl-nav-guide__title {
  margin: 0 0 8px;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1rem;
  color: var(--accent);
  text-transform: none;
}
.sl-nav-guide__desc {
  margin: 0;
  font-family: var(--font-body);
  font-size: 0.92rem;
  color: var(--text-soft);
  line-height: 1.45;
}

/* ─── Prose (texto longo de Metodologia/Changelog) ─── */
.sl-prose {
  font-family: var(--font-body);
  font-size: 1rem;
  line-height: 1.6;
  color: var(--text);
  max-width: 78ch;
}
.sl-prose p { margin: 0 0 12px; }
.sl-prose ul, .sl-prose ol { margin: 0 0 12px; padding-left: 24px; }
.sl-prose li { margin-bottom: 4px; }
.sl-prose code {
  font-family: var(--font-mono);
  font-size: 0.85em;
  background: var(--paper-deep);
  padding: 1px 6px;
  border: 1px solid var(--rule);
}
.sl-prose__h3 {
  margin-top: 20px !important;
  margin-bottom: 12px !important;
}
/* Links na prosa (11/09/2026, achado do editor no painel Eleições, fix 4.52.1 de lá): o reset
   global `a { color: inherit; text-decoration: none }` serve à navegação e aos cards, mas
   deixava o link de texto igual ao texto. Mesma regra do tema do blog (.entry-content a,
   2.6.67): token --link do DS 1.7.0 com par dark/light AA, sublinhado a 45% que sobe a 100%
   no hover. Vale para a prosa e para as ledes de hero e seção, onde há links de texto. */
.sl-prose a, .sl-hero__lede a, .sl-section__lede a {
  color: var(--link);
  text-decoration: underline;
  text-decoration-color: color-mix(in oklch, var(--link) 45%, transparent);
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
  transition: color .15s ease, text-decoration-color .15s ease;
}
.sl-prose a:hover, .sl-hero__lede a:hover, .sl-section__lede a:hover {
  color: var(--link);
  text-decoration-color: var(--link);
}
.sl-prose a:visited, .sl-hero__lede a:visited, .sl-section__lede a:visited { color: var(--link-visited); }
.sl-prose a:visited:hover, .sl-hero__lede a:visited:hover, .sl-section__lede a:visited:hover { color: var(--link); }
.sl-callout {
  margin-top: 16px !important;
  border-left: 3px solid var(--gold);
  background: color-mix(in oklch, var(--gold) 6%, var(--paper));
  padding: 12px 16px;
  font-size: 0.92rem;
}

/* ─── Tabela compact ─── */
.sl-table--compact th, .sl-table--compact td { padding: 6px 10px; font-size: 0.9rem; }

/* ─── Changelog ─── */
.sl-changelog {
  list-style: none;
  padding: 0;
  margin: 0;
  border-left: 2px solid var(--rule);
}
.sl-changelog__entry {
  position: relative;
  padding: 0 0 36px 28px;
}
.sl-changelog__entry::before {
  content: "";
  position: absolute;
  left: -7px; top: 4px;
  width: 12px; height: 12px;
  background: var(--accent);
  border: 2px solid var(--paper);
  border-radius: 50%;
}
.sl-changelog__head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 14px;
  margin-bottom: 14px;
}
.sl-changelog__version {
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 1.4rem;
  color: var(--accent);
  text-transform: uppercase;
}
.sl-changelog__date {
  font-family: var(--font-mono);
  font-size: 0.78rem;
  letter-spacing: 0.06em;
  color: var(--muted);
}
.sl-changelog__title {
  font-family: var(--font-body);
  font-size: 0.95rem;
  color: var(--text-soft);
  font-style: italic;
}
.sl-changelog__body h4 {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--muted);
  margin: 16px 0 8px;
  font-weight: 600;
}

/* ─── Status badges ─── */
.sl-status {
  display: inline-block;
  font-family: var(--font-mono);
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 2px 8px;
  border: 1px solid var(--rule);
  white-space: nowrap;
}
.sl-status--candidate { color: var(--pos); border-color: var(--pos); }
.sl-status--dropped   { color: var(--muted); }
.sl-status--lean-left   { color: var(--color-spectrum-esquerda); border-color: var(--color-spectrum-esquerda); }
.sl-status--lean-center { color: var(--muted); }
.sl-status--lean-right  { color: var(--color-spectrum-direita); border-color: var(--color-spectrum-direita); }
.sl-status--lean-mixed  { color: var(--gold); }
/* Badges do espectro em 5 níveis (tabela da Metodologia, desde 10/08/2026) */
.sl-status--lean-extrema-esquerda { color: var(--lean-extrema-esquerda); border-color: var(--lean-extrema-esquerda); }
.sl-status--lean-esquerda         { color: var(--lean-esquerda); border-color: var(--lean-esquerda); }
.sl-status--lean-centro           { color: var(--muted); }
.sl-status--lean-direita          { color: var(--lean-direita); border-color: var(--lean-direita); }
.sl-status--lean-extrema-direita  { color: var(--lean-extrema-direita); border-color: var(--lean-extrema-direita); }
.sl-status--lean-agregador        { color: var(--muted); }

/* ─── KPI value pequeno (texto longo) ─── */
.sl-kpi-card__value--small {
  font-size: 1.4rem;
  line-height: 1.1;
}

/* ─── Evidence cards (Zeitgeist) ─── */
.sl-evidence-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(360px, 100%), 1fr));
  gap: 16px;
}
.sl-evidence-card {
  border: 1px solid var(--rule);
  background: var(--paper);
  padding: 18px 20px;
  min-width: 0;
}
.sl-evidence-card__title {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1.05rem;
  text-transform: none;
  margin: 0 0 14px;
  color: var(--accent);
}
.sl-evidence-card__list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 14px; }
.sl-evidence-card__item { padding-bottom: 14px; border-bottom: 1px dashed var(--rule); }
.sl-evidence-card__item:last-child { border-bottom: none; padding-bottom: 0; }
.sl-evidence-card__link {
  display: block;
  margin-bottom: 6px;
  text-decoration: none;
}
.sl-evidence-card__link:hover .sl-evidence-card__article { color: var(--accent); }
.sl-evidence-card__article {
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 0.95rem;
  line-height: 1.35;
  color: var(--text);
  transition: color .15s ease;
}
.sl-evidence-card__meta {
  display: flex;
  gap: 12px;
  margin-top: 4px;
  font-family: var(--font-mono);
  font-size: 0.7rem;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.sl-evidence-card__confidence { color: var(--accent); }
.sl-evidence-card__quote {
  margin-top: 6px;
  font-family: var(--font-body);
  font-size: 0.85rem;
  font-style: italic;
  color: var(--text-soft);
  line-height: 1.45;
  border-left: 2px solid var(--rule);
  padding-left: 10px;
}

/* ─── Spectrum cards (Espectro Editorial) ─── */
.sl-spectrum-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 16px;
}
.sl-spectrum-card {
  border: 1px solid var(--rule);
  background: var(--paper);
  padding: 20px;
  border-left-width: 4px;
}
/* 5 níveis (editorial_lean_detail) — mesmo mapeamento do detalhe de candidato */
.sl-spectrum-card--extrema-esquerda { border-left-color: var(--lean-extrema-esquerda); }
.sl-spectrum-card--esquerda         { border-left-color: var(--lean-esquerda); }
.sl-spectrum-card--centro           { border-left-color: var(--lean-centro); }
.sl-spectrum-card--direita          { border-left-color: var(--lean-direita); }
.sl-spectrum-card--extrema-direita  { border-left-color: var(--lean-extrema-direita); }
.sl-spectrum-card__label {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 12px;
}
.sl-spectrum-card__value {
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 2.4rem;
  line-height: 1;
  color: var(--text);
}
.sl-spectrum-card__hint {
  margin-top: 4px;
  font-family: var(--font-mono);
  font-size: 0.7rem;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.1em;
}
.sl-spectrum-card__sent {
  margin-top: 12px;
  font-family: var(--font-body);
  font-size: 0.92rem;
  color: var(--text-soft);
}

/* ─── Form com grupos colapsáveis ─── */
.sl-comparativo-form__group {
  border-bottom: 1px solid var(--rule);
  padding: 12px 0;
}
.sl-comparativo-form__group:first-of-type { padding-top: 0; }
.sl-comparativo-form__group > summary {
  font-family: var(--font-mono);
  font-size: 0.74rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--muted);
  cursor: pointer;
  margin-bottom: 12px;
  list-style: none;
}
.sl-comparativo-form__group > summary::before {
  content: "▸ ";
  display: inline-block;
  margin-right: 6px;
  transition: transform .15s ease;
}
.sl-comparativo-form__group[open] > summary::before { transform: rotate(90deg); }

/* ─── Comparativo: form de seleção ─── */
.sl-comparativo-form {
  border: 1px solid var(--rule);
  background: var(--paper);
  padding: 20px;
}
.sl-comparativo-form__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 8px 16px;
  margin-bottom: 20px;
}
.sl-comparativo-form__check {
  display: grid;
  grid-template-columns: 16px 1fr auto;
  align-items: center;
  gap: 10px;
  cursor: pointer;
  padding: 6px 8px;
  font-family: var(--font-body);
  font-size: 0.92rem;
  border: 1px solid transparent;
  transition: border-color .12s ease, background .12s ease;
}
.sl-comparativo-form__check:hover {
  border-color: var(--rule);
  background: var(--paper-deep);
}
.sl-comparativo-form__check input { accent-color: var(--accent); }
.sl-comparativo-form__count {
  font-family: var(--font-mono);
  font-size: 0.72rem;
  color: var(--muted);
}
.sl-comparativo-form__actions {
  border-top: 1px solid var(--rule);
  padding-top: 16px;
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}
.sl-comparativo-form__hint {
  font-family: var(--font-mono);
  font-size: 0.72rem;
  letter-spacing: 0.06em;
  color: var(--muted);
}
.sl-button {
  font-family: var(--font-mono);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  background: var(--accent);
  color: #fff;
  border: 0;
  border-radius: 0;
  padding: 10px 20px;
  cursor: pointer;
  transition: filter .15s ease;
}
.sl-button:hover { filter: brightness(1.1); }

/* ─── Tabela genérica ─── */
.sl-table-wrap { overflow-x: auto; }
.sl-table {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--font-body);
  font-size: 0.95rem;
}
.sl-table th, .sl-table td {
  padding: 10px 12px;
  border-bottom: 1px solid var(--rule);
  text-align: left;
}
.sl-table th {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 500;
}
.sl-table__num { text-align: right; font-variant-numeric: tabular-nums; }
.sl-table__pct { color: var(--text-soft); font-size: 0.78rem; }
.sl-table__pos { color: var(--pos); }
.sl-table__neg { color: var(--neg); }

/* Cabeçalho de grupo dentro do corpo da tabela (Metodologia: agrupamento por
   status). Herda o tratamento tipográfico do <th> do topo, mas com contraste
   maior e uma faixa de fundo, para não se confundir com uma linha de dados. */
.sl-table__group > th {
  background: var(--bg2);
  color: var(--fg1);
  font-size: 0.72rem;
  letter-spacing: 0.14em;
  padding-top: 14px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--rule);
}
.sl-table tbody tr.sl-table__group:first-child > th { padding-top: 8px; }
.sl-table__group-count {
  font-size: 0.72rem;
  letter-spacing: 0.06em;
  color: var(--muted);
  margin-left: 6px;
}
.sl-table__group-count::before { content: "("; }
.sl-table__group-count::after { content: ")"; }

/* ─── Top tópicos por candidato (comparativo) ─── */
.sl-comparativo-topics {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(360px, 100%), 1fr));
  gap: 24px;
}
.sl-comparativo-topics__card {
  border: 1px solid var(--rule);
  background: var(--paper);
  padding: 18px 20px;
  min-width: 0;
}
.sl-comparativo-topics__name {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1rem;
  margin: 0 0 14px;
  text-transform: none;
}

/* ─── Article list ─── */
.sl-article-list {
  list-style: none;
  padding: 0;
  margin: 0;
  border-top: 1px solid var(--rule);
}
.sl-article-item { border-bottom: 1px solid var(--rule); }
.sl-article-item__link {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 14px 0;
  transition: padding-left .15s ease, color .15s ease;
}
.sl-article-item__link:hover {
  padding-left: 8px;
  color: var(--accent);
}
.sl-article-item__title {
  font-family: var(--font-body);
  font-size: 1rem;
  line-height: 1.35;
}
.sl-article-item__meta {
  display: flex;
  gap: 16px;
  font-family: var(--font-mono);
  font-size: 0.7rem;
  letter-spacing: 0.08em;
  color: var(--muted);
}
.sl-article-item__source { text-transform: uppercase; }

/* ── Página /cobertura/{id}/{slug} ──────────────────────────────────────── */
.sl-cobertura { max-width: 800px; margin: 0 auto; padding: 24px 16px 48px; }
.sl-cobertura__header { padding-bottom: 24px; border-bottom: 1px solid var(--rule); margin-bottom: 24px; }
.sl-cobertura__eyebrow { margin-bottom: 12px; }
.sl-cobertura__title { margin: 0 0 12px; line-height: 1.2; }
.sl-cobertura__meta {
  display: flex; flex-wrap: wrap; gap: 8px; align-items: center;
  font-size: 0.85rem; color: var(--muted); text-transform: uppercase; letter-spacing: 0.08em;
  margin-bottom: 16px;
}
.sl-cobertura__sep { opacity: 0.5; }
.sl-cobertura__description {
  font-size: 1.05rem; line-height: 1.6; color: var(--fg2);
  margin: 0 0 20px; font-style: italic;
}
.sl-cobertura__cta {
  display: inline-block; padding: 12px 20px; background: var(--accent, #1a2332);
  color: #fff; text-decoration: none; border-radius: 4px;
  font-weight: 600; font-size: 0.95rem; transition: opacity 0.15s;
}
.sl-cobertura__cta:hover { opacity: 0.85; }

.sl-cobertura__analise { margin-bottom: 32px; }
.sl-cobertura__grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 16px; margin-top: 16px;
}
.sl-cobertura__card {
  border: 1px solid var(--rule); padding: 16px; border-radius: 4px;
  background: var(--bg2, transparent);
}
.sl-cobertura__card--wide { grid-column: 1 / -1; }
.sl-cobertura__card-label {
  font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.08em;
  color: var(--muted); margin-bottom: 8px;
}
.sl-cobertura__card-value { font-size: 1.1rem; font-weight: 600; color: var(--fg1); }
.sl-cobertura__card-hint { font-size: 0.8rem; color: var(--muted); margin-top: 6px; }

.sl-cobertura__topics { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.sl-cobertura__topic {
  display: inline-block; padding: 4px 10px; background: var(--bg2, rgba(255,255,255,0.06));
  border: 1px solid var(--rule); border-radius: 12px; font-size: 0.82rem; color: var(--fg2);
}

.sl-cobertura__sent-table {
  width: 100%; border-collapse: collapse; margin-top: 4px; font-size: 0.92rem;
}
.sl-cobertura__sent-table th,
.sl-cobertura__sent-table td {
  text-align: left; padding: 8px 4px; border-bottom: 1px solid var(--rule);
}
.sl-cobertura__sent-table th {
  font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.08em;
  color: var(--muted); font-weight: 500;
}
.sl-cobertura__sent-table a { color: var(--fg1); text-decoration: none; }
.sl-cobertura__sent-table a:hover { text-decoration: underline; }

.sl-sent {
  display: inline-block; padding: 2px 10px; border-radius: 10px;
  font-size: 0.78rem; font-weight: 500; text-transform: lowercase;
}
.sl-sent--pos { background: color-mix(in srgb, var(--pos) 15%, transparent); color: var(--pos); }
.sl-sent--neg { background: color-mix(in srgb, var(--neg) 15%, transparent); color: var(--neg); }
.sl-sent--neu { background: rgba(180, 180, 180, 0.15); color: var(--muted); }
.sl-sent--null { color: var(--muted); }

.sl-cobertura__related { margin: 32px 0; padding-top: 24px; border-top: 1px solid var(--rule); }
.sl-cobertura__footer {
  margin-top: 32px; padding-top: 20px; border-top: 1px solid var(--rule);
  font-size: 0.85rem; color: var(--muted); line-height: 1.5;
}
.sl-cobertura__methodology { margin: 0 0 12px; }
.sl-cobertura__attribution { margin: 0; font-style: italic; }

/* ─── Página API pública ─── */

.sl-api-cta {
  display: inline-block;
  margin-right: 12px;
  padding: 8px 16px;
  border: 1px solid var(--rule);
  font-family: var(--font-display);
  font-size: 0.88rem;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  color: var(--text);
  text-decoration: none;
  transition: border-color .15s ease, background .15s ease, color .15s ease;
}
.sl-api-cta:hover {
  border-color: var(--accent);
  background: var(--paper-deep);
  color: var(--accent);
}

.sl-api-kpis {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 12px;
  margin-top: 16px;
}
.sl-api-kpi {
  border: 1px solid var(--rule);
  background: var(--paper);
  padding: 20px 18px;
}
.sl-api-kpi__num {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 2.2rem;
  line-height: 1.1;
  color: var(--accent);
  margin-bottom: 4px;
}
.sl-api-kpi__label {
  font-family: var(--font-body);
  font-size: 0.85rem;
  color: var(--text-soft);
  text-transform: lowercase;
}

.sl-api-snippets {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 12px;
  margin-top: 16px;
}
.sl-api-snippet {
  border: 1px solid var(--rule);
  background: var(--paper);
  display: flex;
  flex-direction: column;
  min-width: 0;
}
.sl-api-snippet__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 12px;
  border-bottom: 1px solid var(--rule);
  background: var(--paper-deep);
}
.sl-api-snippet__lang {
  font-family: var(--font-display);
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--text-soft);
}
.sl-api-snippet__copy {
  font-family: var(--font-display);
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 4px 10px;
  border: 1px solid var(--rule);
  background: transparent;
  color: var(--text-soft);
  cursor: pointer;
  transition: border-color .15s ease, color .15s ease;
}
.sl-api-snippet__copy:hover {
  border-color: var(--accent);
  color: var(--accent);
}
.sl-api-snippet__copy.is-copied {
  border-color: var(--accent);
  color: var(--accent);
}
.sl-api-snippet__code {
  margin: 0;
  padding: 14px 16px;
  font-family: var(--font-mono);
  font-size: 0.82rem;
  line-height: 1.5;
  color: var(--text);
  overflow-x: auto;
  white-space: pre;
  background: transparent;
}
.sl-api-snippet__code code { background: transparent; padding: 0; }

.sl-api-table code {
  font-family: var(--font-mono);
  font-size: 0.85rem;
  padding: 2px 6px;
  background: var(--paper-deep);
  border: 1px solid var(--rule);
}
.sl-api-table td a { color: var(--accent); text-decoration: none; }
.sl-api-table td a:hover { text-decoration: underline; }

.sl-api-grid-2 {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 16px;
  margin-top: 16px;
}
.sl-api-callout {
  border: 1px solid var(--rule);
  background: var(--paper);
  padding: 18px 20px;
}
.sl-api-callout--ok { border-left: 3px solid var(--pos); }
.sl-api-callout--no { border-left: 3px solid var(--neg); }
.sl-api-callout__title {
  margin: 0 0 10px;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1.05rem;
}
.sl-api-callout ul {
  margin: 0;
  padding-left: 18px;
  font-family: var(--font-body);
  font-size: 0.94rem;
  line-height: 1.55;
  color: var(--text);
}
.sl-api-callout li { margin-bottom: 8px; }
.sl-api-callout li code {
  font-family: var(--font-mono);
  font-size: 0.84rem;
  padding: 1px 5px;
  background: var(--paper-deep);
}

/* ─── Capa quente (10/08/2026): sobe/desce + manchetes extremas + explore ─── */
.sl-movers {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 14px;
}
.sl-mover {
  display: grid;
  grid-template-columns: 92px 1fr auto;
  align-items: baseline;
  gap: 12px;
  padding: 12px 16px;
  margin-bottom: 8px;
  border: 1px solid var(--rule);
  border-left-width: 4px;
  text-decoration: none;
  color: var(--fg1);
  background: var(--bg2);
}
.sl-mover--up { border-left-color: var(--pos); }
.sl-mover--down { border-left-color: var(--neg); }
.sl-mover__delta {
  font-family: var(--font-mono);
  font-size: 0.95rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
.sl-mover--up .sl-mover__delta { color: var(--pos); }
.sl-mover--down .sl-mover__delta { color: var(--neg); }
.sl-mover__name { font-family: var(--font-display); font-weight: 600; font-size: 1.05rem; }
.sl-mover__n { font-family: var(--font-mono); font-size: 0.72rem; color: var(--muted); }

.sl-extremes {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 14px;
}
.sl-extreme {
  display: block;
  padding: 18px 20px;
  border: 1px solid var(--rule);
  border-top-width: 4px;
  text-decoration: none;
  color: var(--fg1);
  background: var(--bg2);
}
.sl-extreme--neg { border-top-color: var(--neg); }
.sl-extreme--pos { border-top-color: var(--pos); }
.sl-extreme__badge {
  display: block;
  font-family: var(--font-mono);
  font-size: 0.66rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  margin-bottom: 10px;
}
.sl-extreme--neg .sl-extreme__badge { color: var(--neg); }
.sl-extreme--pos .sl-extreme__badge { color: var(--pos); }
.sl-extreme__title { display: block; font-weight: 600; line-height: 1.35; margin-bottom: 8px; }
.sl-extreme__source { font-family: var(--font-mono); font-size: 0.72rem; color: var(--muted); }

.sl-explore-line {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 8px;
}
.sl-explore-line__item {
  font-family: var(--font-mono);
  font-size: 0.78rem;
  letter-spacing: 0.06em;
  color: var(--fg1);
  text-decoration: none;
  padding: 7px 14px;
  border: 1px solid var(--rule);
  border-radius: 999px;
}
.sl-explore-line__item:hover { border-color: var(--accent); color: var(--accent); }

.sl-footnote {
  margin-top: 14px;
  font-family: var(--font-mono);
  font-size: 0.72rem;
  color: var(--muted);
}

/* ─── O custo da opinião (detalhe do candidato) ─── */
.sl-genre-split {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 14px;
}
.sl-genre-card {
  border: 1px solid var(--rule);
  background: var(--paper);
  padding: 16px;
}
.sl-genre-card__label {
  font-family: var(--font-mono);
  font-size: 0.68rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 10px;
}
.sl-genre-card__value {
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 1.8rem;
  line-height: 1;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.sl-genre-card__hint {
  margin-top: 8px;
  font-family: var(--font-mono);
  font-size: 0.68rem;
  color: var(--muted);
}
.sl-topics-bar__sent {
  font-size: 0.72rem;
  font-weight: 700;
  margin-left: 4px;
}

/* ─── Changelog paginado (15/08/2026) ─── */
.sl-changelog__pager {
  display: flex; align-items: center; gap: 12px;
  margin-top: 32px; padding-top: 20px; border-top: 1px solid var(--rule);
}
.sl-changelog__pager .sl-pill { border: 1px solid var(--rule); }
.sl-changelog__pager-pos {
  font-family: var(--font-mono); font-size: 0.75rem; color: var(--muted);
  margin: 0 auto;
}

/* ─── Perfil das candidaturas + patrimônio (dado oficial TSE, 16/08/2026) ─── */
.sl-table--perfil td, .sl-table--perfil th { font-size: 0.86rem; vertical-align: top; }
.sl-table__vice td { color: var(--text-soft); border-top: none; padding-top: 2px; }
.sl-table__muted { color: var(--muted); font-size: 0.8em; }
.sl-section__note { font-size: 0.8rem; color: var(--muted); margin-top: 12px; }
.sl-leader-row__n--wide { flex: 0 0 96px; }
/* Segmentos da barra de composição do patrimônio: paleta neutra-sequencial do
   DS, sem semântica de sentimento (não é verde/vermelho — é tipo de bem). */
.sl-leader-row__bar-seg { display: block; height: 100%; }
/* Cor por TIPO de bem, fixa em todas as linhas (04/09/2026; antes era por posição). */
.sl-asset--imoveis       { background: var(--accent); }
.sl-asset--participacoes { background: var(--gold); }
.sl-asset--aplicacoes    { background: #3f8f86; }
.sl-asset--veiculos      { background: #8f6aa8; }
.sl-asset--dinheiro      { background: var(--muted); }
.sl-asset--outros        { background: var(--fg3); }
/* A barra de composição tem largura FIXA: o comprimento não codifica nada (o total é o
   número); antes ela esticava até o texto e Cury (R$ 242 mi) saía menor que Hertz (R$ 170 mil). */
.sl-leader-row__bar--comp { flex: 0 0 220px; }
/* 04/09 (Leo, 2ª rodada): nada cortado — o texto QUEBRA linha em vez de reticências. */
.sl-leader-row__split--comp { flex: 1 1 auto; min-width: 0; white-space: normal; line-height: 1.35; }
.sl-asset-legend { list-style: none; display: flex; flex-wrap: wrap; gap: 6px 16px; margin: 0 0 12px; padding: 0;
  font-family: 'Fira Mono', monospace; font-size: 0.72rem; color: var(--fg3); }
.sl-asset-legend li { display: inline-flex; align-items: center; gap: 6px; }
.sl-asset-legend__swatch { display: inline-block; width: 12px; height: 8px; border-radius: 2px; margin-right: 6px; vertical-align: middle; }
.sl-asset-legend li .sl-asset-legend__swatch { margin-right: 0; }
/* Tela estreita (conteúdo < ~880px): o texto vai para a linha de baixo, alinhado ao início da
   barra (rank 22 + nome 175 + valor 96 + 3 gaps de 12 = 329px), em vez de espremer ao lado. */
@media (max-width: 1300px) {
  .sl-leader-row--comp { flex-wrap: wrap; row-gap: 2px; }
  .sl-leader-row--comp .sl-leader-row__split--comp { flex: 1 0 100%; padding-left: 329px; box-sizing: border-box; }  /* padding, não margin: 100% + margin estourava o contêiner */
}
@media (max-width: 720px) {
  .sl-leader-row__bar--comp { flex: 1 1 120px; }
  .sl-leader-row--comp .sl-leader-row__split--comp { display: block; padding-left: 0; }
}
.sl-patrimonio__comp { max-width: 520px; }
.sl-patrimonio__itens { margin-top: 16px; }
.sl-patrimonio__itens summary { cursor: pointer; font-family: var(--font-mono); font-size: 0.78rem; letter-spacing: 0.06em; text-transform: uppercase; color: var(--accent); }

/* ─── Situação do registro no TSE (T3, 17/08/2026) — como o TSE publica ─── */
.sl-status--tse-aguardando { color: var(--muted); }
.sl-status--tse-deferido   { color: var(--pos); border-color: var(--pos); }
.sl-status--tse-indeferido { color: var(--neg); border-color: var(--neg); }
.sl-status--tse-cassado    { color: var(--neg); border-color: var(--neg); }
.sl-status--tse-renuncia   { color: var(--muted); }
.sl-hero__status--tse { margin-top: 6px; }

/* ─── Card da última análise com imagem destacada (17/08/2026) ─── */
.sl-latest-analysis--with-image {
  /* 21/08/2026 (Leo: "reduzir a proporção da imagem"): a coluna ia a 320px e a
     arte esticava na altura inteira do card (height:100% + cover), ficando
     quase quadrada e roubando a cena do texto. Agora ~22% da largura e altura
     limitada — miniatura com presença, não segunda manchete. */
  display: grid; grid-template-columns: minmax(150px, 264px) 1fr;
  gap: 0; overflow: hidden; padding: 0;   /* o padding base vai pro __body */
  align-items: center;
}
.sl-latest-analysis__media {
  display: block; align-self: center;      /* centrada: o vazio fica simétrico */
  padding: 24px 0 24px 24px;               /* mesma respiração do corpo do card */
}
.sl-latest-analysis__media img {
  display: block; width: 100%; height: 100%;
  min-height: 150px; max-height: 220px;
  object-fit: cover; aspect-ratio: 16 / 10;
}
.sl-latest-analysis__body { padding: 28px 32px; min-width: 0; }
@media (max-width: 720px) {
  .sl-latest-analysis--with-image { grid-template-columns: 1fr; }
  .sl-latest-analysis__media img { min-height: 0; aspect-ratio: 16 / 9; }
}

/* ── Os assuntos da semana (19/08/2026) ───────────────────────────────────
   Fusão dos antigos "Tópico do momento" + "Tópicos em alta" numa seção só:
   o dominante (card) à esquerda, os que aceleram à direita. Proporção 5:4 —
   o card tem números grandes e pede mais largura que a lista. */
.sl-topicos-dupla {
  display: grid;
  grid-template-columns: 5fr 4fr;
  gap: 2rem;
  align-items: start;
}
@media (max-width: 760px) {
  .sl-topicos-dupla { grid-template-columns: 1fr; gap: 1.5rem; }
}
.sl-topicos-alta {
  border-left: 2px solid var(--rule);
  padding-left: 1.25rem;
}
@media (max-width: 760px) {
  .sl-topicos-alta { border-left: 0; padding-left: 0; border-top: 1px solid var(--rule); padding-top: 1.25rem; }
}
.sl-topicos-alta .sl-emerging-list { margin-top: .75rem; }
.sl-topicos-alta .sl-emerging-item { margin-bottom: .9rem; }

/* Assuntos do momento em COLUNA ÚNICA (21/08/2026, Leo: "não curto esse layout"
   das duas colunas) — "O que domina" em cima, "O que cresce" embaixo, com até
   3 manchetes por tópico. A grade .sl-topicos-dupla fica no CSS só pra volta. */
.sl-topicos-coluna { display: flex; flex-direction: column; gap: 1.5rem; }
.sl-topicos-coluna .sl-topicos-alta {
  border-left: 0; padding-left: 0;
  border-top: 1px solid var(--rule); padding-top: 1.25rem;
}
.sl-topicos-coluna .sl-emerging-item { margin-bottom: 1.25rem; }
.sl-topicos-coluna .sl-emerging-item .sl-article-list--compact { margin-top: .5rem; }


/* ─── Aviso de revisão de série (30/08/2026) ───
   Faixa temporária: aparece enquanto o acervo está sendo reclassificado e o
   snapshot público fica congelado de propósito. Some sozinha com a trava. */
.sl-revisao {
  border: 1px solid var(--rule);
  border-left: 3px solid var(--gold);
  background: color-mix(in oklch, var(--gold) 5%, var(--paper));
  padding: 14px 18px;
  margin: 0 0 28px;
  font-size: 0.92rem;
  line-height: 1.55;
}
.sl-revisao__titulo {
  font-family: var(--font-eyebrow);
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--gold);
  margin: 0 0 5px;
}
.sl-revisao p { margin: 0; }
.sl-revisao p + p { margin-top: 7px; }

/* ── Mapa dos veículos (/veiculos, 03/09/2026) ─────────────────────────── */
.sl-veic-form { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 12px; }
.sl-veic-form input[type="search"], .sl-veic-form select {
  font-family: var(--font-body); font-size: 0.95rem; color: var(--text);
  background: var(--paper); border: 1px solid var(--rule); padding: 7px 10px; min-width: 160px;
}
.sl-veic-form input[type="search"] { flex: 1 1 220px; }
.sl-veic-form__limpar { font-family: var(--font-mono); font-size: 0.8rem; color: var(--muted); }
.sl-veic-count { font-family: var(--font-mono); font-size: 0.8rem; color: var(--muted); margin: 0 0 8px; }
.sl-veic-table td { vertical-align: top; }
.sl-veic-nome { font-weight: 600; }
.sl-veic-host { font-family: var(--font-mono); font-size: 0.75rem; color: var(--muted); overflow-wrap: anywhere; }
.sl-veic-host a { color: inherit; }
.sl-veic-motivo { font-size: 0.78rem; color: var(--muted); margin-top: 3px; max-width: 28ch; }
.sl-veic-det { margin-top: 6px; font-size: 0.85rem; max-width: 60ch; }
.sl-veic-det summary { cursor: pointer; font-family: var(--font-mono); font-size: 0.72rem; color: var(--accent); }
.sl-veic-det p { margin: 6px 0 0; }
.sl-veic-nota { color: var(--muted); font-style: italic; }
.sl-veic-fontes a { font-family: var(--font-mono); font-size: 0.75rem; }
.sl-selo {
  display: inline-block; font-family: var(--font-mono); font-size: 0.62rem; letter-spacing: 0.06em;
  text-transform: uppercase; padding: 1px 6px; border: 1px solid var(--rule); white-space: nowrap;
}
.sl-selo--manual { color: var(--text); border-color: var(--text); }
.sl-selo--aprovado { color: var(--accent); border-color: var(--accent); }
.sl-selo--proposto { color: var(--muted); border-style: dashed; }
.sl-rubrica .sl-prose h2, .sl-rubrica .sl-prose h3, .sl-rubrica .sl-prose h4 { margin: 28px 0 8px; }
.sl-rubrica .sl-prose h3 { font-family: var(--font-display); font-size: 1.35rem; }
.sl-rubrica .sl-prose h4 { font-size: 1.05rem; }
.sl-rubrica .sl-prose table { margin: 0 0 16px; }
.sl-rubrica .sl-prose td { vertical-align: top; }
.sl-rubrica .sl-prose hr { border: 0; border-top: 1px solid var(--rule); margin: 24px 0; }
.sl-sidebar__licenca { font-family: var(--font-mono); font-size: 0.62rem; letter-spacing: 0.06em; color: var(--muted); margin-top: 8px; }
.sl-sidebar__licenca a { color: inherit; }

/* ── Perguntar como conversa (03/09/2026): o fio vive no navegador; o modelo vê uma pergunta por vez ── */
.sl-chat__fio { display: flex; flex-direction: column; gap: 14px; margin: 8px 0 16px; max-height: 60vh; overflow-y: auto; padding-right: 4px; }
.sl-chat__turno { display: flex; flex-direction: column; gap: 6px; }
.sl-chat__bolha { max-width: 92%; padding: 10px 14px; border: 1px solid var(--rule); background: var(--paper); font-size: 0.95rem; }
.sl-chat__bolha--voce { align-self: flex-end; border-color: var(--accent); }
.sl-chat__bolha--painel { align-self: flex-start; max-width: 100%; }
.sl-chat__quem { display: block; font-family: var(--font-mono); font-size: 0.62rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted); margin-bottom: 4px; }
.sl-chat__texto { margin: 0 0 6px; }
.sl-chat__meta { font-family: var(--font-mono); font-size: 0.72rem; color: var(--muted); margin: 0 0 8px; word-break: break-word; }
.sl-chat__vazio { color: var(--muted); font-style: italic; }
.sl-chat__form { display: flex; gap: 8px; align-items: center; position: sticky; bottom: 0; background: var(--paper); padding: 8px 0; }
.sl-chat__form input[type="search"] { flex: 1 1 auto; font-family: var(--font-body); font-size: 1rem; color: var(--text); background: var(--paper); border: 1px solid var(--rule); padding: 9px 12px; }
.sl-chat__limpar { font-family: var(--font-mono); font-size: 0.75rem; color: var(--muted); background: none; border: 0; cursor: pointer; }
.sl-chat__bolha--espera { color: var(--muted); font-style: italic; }

/* ─── Celular (passada visual, 04/10/2026) ───────────────────────────────────────
   Conferido a 390 px, claro e escuro. */
@media (max-width: 600px) {
  /* Cartão da capa: o rótulo era espremido pelo valor longo ("Temas mais presentes").
     Rótulo em cima, valor embaixo; e o respiro lateral de 32 px sobra num telefone. */
  .sl-home-card { padding: 20px 16px; }
  .sl-home-card__stats li { flex-direction: column; align-items: flex-start; gap: 2px; }
}
@media (max-width: 720px) {
  /* Tabela de veículos: a 1ª coluna quebrava o domínio letra a letra. Largura mínima na
     tabela e rolagem no invólucro dela (.sl-table-wrap) — a página não rola de lado. */
  .sl-veic-table { min-width: 680px; }
  .sl-veic-table td:first-child { min-width: 210px; }
}
