/* ==========================================================================
   Arquivo do Clube — ESTILO
   ==========================================================================

   A camada que faz o site parecer feito, e não montado.

   ac-componentes.css define o VOCABULÁRIO (o que é um placar, o que é um
   selo de resultado). Esta folha define a COMPOSIÇÃO: como uma página começa,
   onde o olho pousa primeiro, o que é grande e o que é pequeno, o que gruda ao
   rolar, o que acontece quando o mouse passa.

   Depende de ac-tokens.css e ac-componentes.css.
   Carrega DEPOIS de ac-telas.css: onde as duas disserem a mesma coisa, esta
   vence, de propósito.
   ========================================================================== */

/* ==========================================================================
   1. FUNDAÇÃO
   ========================================================================== */

.ac-wrap,
.ac-site-content {
  color: var(--ac-tinta);
}

/* Ritmo vertical: em vez de cada bloco escolher sua margem, o container
   distribui. Margem escolhida elemento a elemento é o que produz aquele
   espaçamento irregular que ninguém sabe explicar. */
.ac-fluxo > * + * { margin-top: var(--ac-e-5); }
.ac-fluxo--apertado > * + * { margin-top: var(--ac-e-3); }
.ac-fluxo--largo > * + * { margin-top: var(--ac-e-7); }

/* Tipografia de leitura: 65 caracteres é onde o olho para de se perder. */
.ac-prosa {
  font-family: var(--ac-fonte-texto);
  font-size: var(--ac-t-lg);
  line-height: var(--ac-lh-texto);
  max-width: 40rem;
}
.ac-prosa p + p { margin-top: var(--ac-e-4); }

/* ==========================================================================
   2. CABEÇALHO DE PÁGINA
   ==========================================================================
   Toda página do arquivo começa igual: uma etiqueta dizendo o que é aquilo,
   o nome em corpo grande, os metadados, e uma régua grossa fechando. É o que
   dá ao site a sensação de que as páginas são da mesma publicação.
   ========================================================================== */

.ac-pagina-cab {
  padding-block: clamp(var(--ac-e-5), 4vw, var(--ac-e-7)) var(--ac-e-4);
  border-bottom: 2px solid var(--ac-tinta);
  margin-bottom: var(--ac-e-6);
}

.ac-pagina-cab .ac-eyebrow { margin-bottom: var(--ac-e-3); }

.ac-pagina-cab h1,
.ac-pagina-titulo {
  font-family: var(--ac-fonte-display);
  font-size: var(--ac-t-4xl);
  font-weight: 800;
  letter-spacing: var(--ac-ls-display);
  line-height: var(--ac-lh-apertada);
  margin: 0;
  text-wrap: balance;
}

.ac-pagina-sub {
  font-family: var(--ac-fonte-texto);
  font-size: var(--ac-t-lg);
  color: var(--ac-tinta-2);
  margin: var(--ac-e-3) 0 0;
  max-width: 42rem;
}

/* A linha de metadados do cabeçalho: alinhada à esquerda, não centralizada. */
.ac-pagina-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--ac-e-2) var(--ac-e-5);
  margin-top: var(--ac-e-4);
  font-family: var(--ac-fonte-etiq);
  font-size: var(--ac-t-xs);
  font-weight: 600;
  letter-spacing: var(--ac-ls-etiq);
  text-transform: uppercase;
  color: var(--ac-tinta-2);
}
.ac-pagina-meta > * { display: inline-flex; align-items: center; gap: var(--ac-e-1); }
.ac-pagina-meta .ac-icone { color: var(--ac-tinta-3); }

/* Cabeçalho com retrato ao lado: fichas de jogador, goleiro, técnico. */
.ac-pagina-cab--ficha {
  display: grid;
  gap: var(--ac-e-5);
  align-items: end;
}
@media (min-width: 40rem) {
  .ac-pagina-cab--ficha { grid-template-columns: 9rem minmax(0, 1fr); }
}

/* ==========================================================================
   3. O PLACAR COMO OBJETO
   ==========================================================================
   Na página do jogo o placar não é um card com números: é a coisa que a
   pessoa veio ver. Ganha corpo, chapa de escudo e a competição por cima.
   ========================================================================== */

.ac-board {
  border: 1px solid var(--ac-regua);
  border-radius: var(--ac-raio-lg);
  background: var(--ac-papel-alto);
  overflow: hidden;
}

.ac-board-topo {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: var(--ac-e-2) var(--ac-e-4);
  padding: var(--ac-e-3) var(--ac-e-4);
  background: var(--ac-papel-fundo);
  border-bottom: 1px solid var(--ac-regua);
  font-family: var(--ac-fonte-etiq);
  font-size: var(--ac-t-xs);
  font-weight: 700;
  letter-spacing: var(--ac-ls-etiq);
  text-transform: uppercase;
  color: var(--ac-tinta-2);
}
.ac-board-topo > * { display: inline-flex; align-items: center; gap: var(--ac-e-1); }

.ac-board-corpo {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: var(--ac-e-4);
  padding: clamp(var(--ac-e-5), 4vw, var(--ac-e-7)) var(--ac-e-4);
}

.ac-board-time {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--ac-e-3);
  min-width: 0;
  text-align: center;
}
.ac-board-time img,
.ac-board-chapa {
  width: clamp(3.5rem, 9vw, 5.5rem);
  height: clamp(3.5rem, 9vw, 5.5rem);
  object-fit: contain;
  border-radius: 50%;
  border: 1px solid var(--ac-regua);
  background: var(--ac-papel);
  display: grid;
  place-items: center;
  font-family: var(--ac-fonte-display);
  font-weight: 800;
  font-size: var(--ac-t-sm);
  color: var(--ac-tinta-3);
}
.ac-board-nome {
  font-family: var(--ac-fonte-display);
  font-size: var(--ac-t-xl);
  font-weight: 700;
  letter-spacing: var(--ac-ls-titulo);
  line-height: 1.2;
  text-wrap: balance;
}
.ac-board-nome a { color: inherit; text-decoration: none; }
.ac-board-nome a:hover { color: var(--ac-rubro); }

.ac-board-gols {
  font-family: var(--ac-fonte-display);
  font-variant-numeric: tabular-nums;
  font-size: var(--ac-t-placar);
  font-weight: 800;
  letter-spacing: -.05em;
  line-height: 1;
  display: flex;
  align-items: center;
  gap: var(--ac-e-3);
  white-space: nowrap;
}
.ac-board-gols .ac-x {
  font-size: .38em;
  font-weight: 500;
  color: var(--ac-tinta-3);
  letter-spacing: 0;
}
.ac-board-gols--vazio {
  font-family: var(--ac-fonte-etiq);
  font-size: var(--ac-t-lg);
  letter-spacing: var(--ac-ls-etiq);
  text-transform: uppercase;
  color: var(--ac-tinta-3);
  font-weight: 600;
}

.ac-board-rodape {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: var(--ac-e-2) var(--ac-e-4);
  padding: var(--ac-e-3) var(--ac-e-4);
  border-top: 1px solid var(--ac-regua);
  font-family: var(--ac-fonte-etiq);
  font-size: var(--ac-t-xs);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--ac-tinta-2);
}

/* ==========================================================================
   4. CARTÃO COM ESTRUTURA
   ==========================================================================
   Um card com cabeçalho e corpo separados por régua lê muito melhor que uma
   caixa com um <h3> solto dentro.
   ========================================================================== */

.ac-painel {
  border: 1px solid var(--ac-regua);
  border-radius: var(--ac-raio);
  background: var(--ac-papel-alto);
  overflow: hidden;
}
.ac-painel-cab {
  display: flex;
  align-items: center;
  gap: var(--ac-e-3);
  padding: var(--ac-e-3) var(--ac-e-4);
  border-bottom: 1px solid var(--ac-regua);
  background: var(--ac-papel-fundo);
}
.ac-painel-cab h2,
.ac-painel-cab h3 {
  font-family: var(--ac-fonte-display);
  font-size: var(--ac-t-md);
  font-weight: 700;
  letter-spacing: var(--ac-ls-titulo);
  margin: 0;
}
.ac-painel-cab .ac-icone { color: var(--ac-rubro); }
.ac-painel-cab .ac-painel-extra {
  margin-left: auto;
  font-family: var(--ac-fonte-etiq);
  font-size: var(--ac-t-xs);
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--ac-tinta-2);
}
.ac-painel-corpo { padding: var(--ac-e-4); }
.ac-painel-corpo--liso { padding: 0; }
.ac-painel-rodape {
  padding: var(--ac-e-3) var(--ac-e-4);
  border-top: 1px solid var(--ac-regua);
  font-size: var(--ac-t-sm);
  color: var(--ac-tinta-2);
}

/* ==========================================================================
   5. BARRA DE FERRAMENTAS
   ==========================================================================
   O filtro de temporada gruda no topo quando a lista é longa — 3.000 jogos
   fazem a pessoa rolar muito, e voltar ao topo para trocar o filtro é o tipo
   de atrito que ninguém reclama e todo mundo sente.
   ========================================================================== */

.ac-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--ac-e-3);
  padding: var(--ac-e-3) 0;
  border-bottom: 1px solid var(--ac-regua);
  margin-bottom: var(--ac-e-4);
  background: var(--ac-papel);
}
.ac-toolbar--grudada {
  position: sticky;
  top: 0;
  z-index: 20;
}
.ac-toolbar-rotulo {
  display: inline-flex;
  align-items: center;
  gap: var(--ac-e-1);
  font-family: var(--ac-fonte-etiq);
  font-size: var(--ac-t-xs);
  font-weight: 700;
  letter-spacing: var(--ac-ls-etiq);
  text-transform: uppercase;
  color: var(--ac-tinta-2);
}
.ac-toolbar-fim { margin-left: auto; }

/* Controles: um só desenho para select, input e botão. */
.ac-toolbar select,
.ac-toolbar input[type="search"],
.ac-toolbar input[type="text"],
.ac-controle {
  font-family: var(--ac-fonte-display);
  font-size: var(--ac-t-md);
  color: var(--ac-tinta);
  background: var(--ac-papel-alto);
  border: 1px solid var(--ac-regua-forte);
  border-radius: var(--ac-raio-sm);
  padding: var(--ac-e-1) var(--ac-e-3);
  line-height: 1.6;
  transition: border-color var(--ac-transicao), box-shadow var(--ac-transicao);
}
.ac-toolbar select:hover,
.ac-controle:hover { border-color: var(--ac-tinta-3); }
.ac-toolbar select:focus-visible,
.ac-controle:focus-visible {
  outline: none;
  border-color: var(--ac-rubro);
  box-shadow: 0 0 0 3px var(--ac-rubro-fraco);
}

.ac-botao {
  display: inline-flex;
  align-items: center;
  gap: var(--ac-e-2);
  font-family: var(--ac-fonte-display);
  font-size: var(--ac-t-md);
  font-weight: 600;
  padding: var(--ac-e-2) var(--ac-e-4);
  border-radius: var(--ac-raio-sm);
  border: 1px solid var(--ac-regua-forte);
  background: var(--ac-papel-alto);
  color: var(--ac-tinta);
  text-decoration: none;
  cursor: pointer;
  transition: border-color var(--ac-transicao), color var(--ac-transicao), background var(--ac-transicao);
}
.ac-botao:hover { border-color: var(--ac-rubro); color: var(--ac-rubro); }
.ac-botao--primario {
  background: var(--ac-rubro);
  border-color: var(--ac-rubro);
  color: var(--ac-sobre-rubro);
}
.ac-botao--primario:hover {
  background: var(--ac-rubro-vivo);
  border-color: var(--ac-rubro-vivo);
  color: var(--ac-sobre-rubro);
}

/* ==========================================================================
   6. TABELA DE ARQUIVO
   ==========================================================================
   A tabela é o principal objeto deste site. Merece tratamento de tabela de
   referência, não de grade genérica.
   ========================================================================== */

.ac-table { font-size: var(--ac-t-md); }

.ac-table thead th {
  background: var(--ac-papel-alto);
  border-bottom-width: 2px;
  border-bottom-color: var(--ac-tinta);
  padding-block: var(--ac-e-2);
}

.ac-table tbody td { transition: background var(--ac-transicao); }

/* A linha inteira é clicável quando tem um link dentro: a área de alvo passa
   de uma palavra para a linha toda, o que importa no celular. */
.ac-table tbody tr.ac-linha-link { cursor: pointer; }
.ac-table tbody tr.ac-linha-link:hover td { background: var(--ac-rubro-fraco); }
.ac-table tbody tr.ac-linha-link:focus-within td { background: var(--ac-rubro-fraco); }

.ac-table td a { color: inherit; text-decoration: none; }
.ac-table td a:hover { color: var(--ac-rubro); }

/* Placar dentro de tabela: tabular, com peso, e sem quebrar linha. */
.ac-table .ac-placar-celula {
  font-family: var(--ac-fonte-display);
  font-variant-numeric: tabular-nums;
  font-weight: 700;
  white-space: nowrap;
  letter-spacing: -.01em;
}

/* Coluna de destaque: a que a tabela existe para mostrar. */
.ac-table .ac-col-destaque {
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  text-align: right;
}

/* Em telas estreitas a tabela vira fichas empilhadas, com o rótulo da coluna
   vindo do atributo data-rotulo. Uma tabela de 7 colunas rolando na
   horizontal é pior que nenhuma tabela. */
@media (max-width: 44rem) {
  /* O tratamento vale para as DUAS tabelas do sistema — a de fichas e a de
     jogos. Aplicá-lo por substituição de texto na classe quebrou os seletores
     compostos: `.ac-table--fichas tbody tr` virou `.ac-table--fichas tbody`
     (todos os tbody) mais `.ac-table--jogos tbody tr`. Por isso a lista está
     escrita por extenso, um seletor completo por linha. */

  /* O min-width de 720px vem de ac-todos-jogos.css, que carrega DEPOIS desta
     folha. Sem zerá-lo, a tabela vira fichas e continua rolando de lado —
     exatamente o que o data-rotulo existe para eliminar. */
  .ac-table--fichas,
  .ac-table--jogos { min-width: 0; }

  .ac-table--fichas thead,
  .ac-table--jogos thead { display: none; }

  .ac-table--fichas tbody tr,
  .ac-table--jogos tbody tr {
    display: block;
    padding: var(--ac-e-3);
    border-bottom: 1px solid var(--ac-regua);
  }

  /*
   * Grid POR CÉLULA, não `display: contents` na célula.
   *
   * Com `contents` a <td> desaparece e seus filhos viram itens do grid da
   * <tr> — e o número de filhos NÃO é constante: a célula do jogo tem o
   * confronto mais o placar, a do selo tem um só. Os rótulos saíam todos
   * deslocados uma casa, e o deslocamento mudava de linha para linha conforme
   * o jogo tivesse placar ou não.
   */
  .ac-table--fichas tbody td,
  .ac-table--jogos tbody td {
    display: grid;
    grid-template-columns: 7rem minmax(0, 1fr);
    align-items: baseline;
    gap: var(--ac-e-3);
    border: 0;
    padding: var(--ac-e-1) 0;
  }
  .ac-table--fichas tbody td::before,
  .ac-table--jogos tbody td::before {
    content: attr(data-rotulo);
    font-family: var(--ac-fonte-etiq);
    font-size: var(--ac-t-xs);
    font-weight: 600;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--ac-tinta-2);
  }
  .ac-table--fichas tbody td[data-rotulo=""],
  .ac-table--jogos tbody td[data-rotulo=""] { grid-template-columns: minmax(0, 1fr); }
}

/* ==========================================================================
   7. RANKING COM PÓDIO
   ==========================================================================
   Os três primeiros de um ranking histórico não são "mais três linhas".
   ========================================================================== */

.ac-rankitem { transition: background var(--ac-transicao); }
.ac-rankitem:hover { background: var(--ac-papel-fundo); }

.ac-rankitem--podio .ac-ranknum {
  font-size: var(--ac-t-xl);
  color: var(--ac-tinta);
}
.ac-rankitem--podio:nth-child(1) .ac-ranknum { color: var(--ac-marcante); }
.ac-rankitem--podio img {
  width: 3.25rem;
  height: 3.25rem;
  border-width: 2px;
}
.ac-rankitem--podio:nth-child(1) img { border-color: var(--ac-marcante); }

.ac-rankitem .ac-rank-nome {
  font-family: var(--ac-fonte-display);
  font-weight: 600;
  min-width: 0;
}
.ac-rankitem .ac-rank-nome a { color: inherit; text-decoration: none; }
.ac-rankitem .ac-rank-nome a:hover { color: var(--ac-rubro); }
.ac-rankitem .ac-rank-sub {
  display: block;
  font-family: var(--ac-fonte-etiq);
  font-size: var(--ac-t-xs);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--ac-tinta-2);
}

/* ==========================================================================
   8. ESTADO VAZIO
   ==========================================================================
   "Nenhum resultado" numa linha de texto cinza parece erro. Com ícone e uma
   frase que diz o que fazer, parece resposta.
   ========================================================================== */

.ac-vazio,
.ac-jog-empty,
.ac-est-empty,
.ac-gol-empty {
  display: grid;
  justify-items: center;
  gap: var(--ac-e-2);
  padding: var(--ac-e-7) var(--ac-e-4);
  text-align: center;
  border: 1px dashed var(--ac-regua-forte);
  border-radius: var(--ac-raio);
  background: transparent;
  color: var(--ac-tinta-2);
}
.ac-vazio .ac-icone {
  width: 2.5rem;
  height: 2.5rem;
  color: var(--ac-tinta-3);
  stroke-width: 1.25;
}
.ac-vazio b {
  font-family: var(--ac-fonte-display);
  font-size: var(--ac-t-lg);
  font-weight: 700;
  color: var(--ac-tinta);
}
.ac-vazio p { margin: 0; font-size: var(--ac-t-md); max-width: 26rem; }

/* ==========================================================================
   9. PAGINAÇÃO
   ========================================================================== */

.ac-pagination,
.ac-pager {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: var(--ac-e-1);
  margin-top: var(--ac-e-5);
  padding-top: var(--ac-e-4);
  border-top: 1px solid var(--ac-regua);
}
.ac-pagination a,
.ac-pagination span,
.ac-pager a,
.ac-pager span {
  display: inline-grid;
  place-items: center;
  min-width: 2.25rem;
  height: 2.25rem;
  padding-inline: var(--ac-e-2);
  font-family: var(--ac-fonte-display);
  font-size: var(--ac-t-md);
  font-weight: 600;
  border: 1px solid var(--ac-regua);
  border-radius: var(--ac-raio-sm);
  background: var(--ac-papel-alto);
  color: var(--ac-tinta-2);
  text-decoration: none;
  transition: border-color var(--ac-transicao), color var(--ac-transicao);
}
.ac-pagination a:hover,
.ac-pager a:hover { border-color: var(--ac-rubro); color: var(--ac-rubro); }
.ac-pagination .current,
.ac-pagination .ac-page-link-current,
.ac-pager .current {
  background: var(--ac-rubro);
  border-color: var(--ac-rubro);
  color: var(--ac-sobre-rubro);
}
.ac-pagination .dots { border-color: transparent; background: transparent; }

/* ==========================================================================
   10. CARDS DE LISTAGEM
   ========================================================================== */

.ac-jog-card, .ac-est-card, .ac-comp-card,
.ac-tec-card, .ac-gol-card, .ac-adv-card, .ac-icon-card {
  transition: border-color var(--ac-transicao), box-shadow var(--ac-transicao);
}
.ac-jog-card:hover, .ac-est-card:hover, .ac-comp-card:hover,
.ac-tec-card:hover, .ac-gol-card:hover, .ac-adv-card:hover {
  border-color: var(--ac-rubro);
  box-shadow: var(--ac-sombra);
}
.ac-jog-card:focus-within, .ac-est-card:focus-within,
.ac-comp-card:focus-within, .ac-tec-card:focus-within,
.ac-gol-card:focus-within, .ac-adv-card:focus-within {
  border-color: var(--ac-rubro);
}

/* ==========================================================================
   11. FOCO
   ==========================================================================
   Um só desenho de foco no site inteiro, e visível nos dois temas.
   ========================================================================== */

a:focus-visible,
button:focus-visible,
select:focus-visible,
input:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible {
  outline: 2px solid var(--ac-rubro-vivo);
  outline-offset: 2px;
  border-radius: var(--ac-raio-sm);
}

/* ==========================================================================
   12. IMPRESSÃO
   ==========================================================================
   Um arquivo histórico é impresso. Sem isto a página sai com o menu, o
   rodapé, os filtros — e o texto branco sobre fundo bordô, que gasta uma
   carga de tinta e sai ilegível.
   ========================================================================== */

@media print {
  :root {
    --ac-papel: #FFFFFF;
    --ac-papel-alto: #FFFFFF;
    --ac-papel-fundo: #FFFFFF;
    --ac-tinta: #000000;
    --ac-tinta-2: #333333;
    --ac-tinta-3: #666666;
    --ac-regua: #BBBBBB;
    --ac-regua-forte: #888888;
    --ac-rubro: #000000;
    --ac-sombra: none;
  }

  .ac-site-header,
  .ac-searchbar-wrap,
  .ac-mobile-nav,
  .ac-site-footer,
  .ac-az-filter,
  .ac-toolbar,
  .ac-pagination,
  .ac-pager,
  .ac-tema-toggle { display: none !important; }

  .ac-board,
  .ac-painel,
  .ac-card { break-inside: avoid; border-color: #999; }

  .ac-table thead { display: table-header-group; }
  .ac-table tbody tr { break-inside: avoid; }

  /* O destino de um link não se lê no papel. */
  a[href^="http"]::after {
    content: " (" attr(href) ")";
    font-size: .8em;
    color: #555;
  }
  a[href^="#"]::after { content: none; }
}

/* ==========================================================================
   13. MOVIMENTO
   ========================================================================== */

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
}

/* ==========================================================================
   14. JOGO MARCANTE
   ==========================================================================
   O destaque editorial não pinta o placar inteiro de dourado: marca a borda e
   a faixa de cima. O placar continua sendo o placar.
   ========================================================================== */

.ac-board--marcante { border-color: var(--ac-marcante); }
.ac-board--marcante .ac-board-topo {
  background: color-mix(in srgb, var(--ac-marcante) 16%, var(--ac-papel-fundo));
  border-bottom-color: var(--ac-marcante);
}
.ac-board-marca {
  color: var(--ac-marcante-ink);
  background: var(--ac-marcante);
  padding: var(--ac-e-1) var(--ac-e-2);
  border-radius: var(--ac-raio-sm);
  font-weight: 800;
}
.ac-board--marcante .ac-board-marca .ac-icone { color: inherit; }

/* O rodapé do placar carrega o selo V/E/D no fim da linha. */
.ac-board-rodape .ac-res { margin-left: var(--ac-e-1); }
.ac-board-rodape a { color: inherit; }
.ac-board-rodape a:hover { color: var(--ac-rubro); }
.ac-board-topo a { color: inherit; text-decoration: none; }
.ac-board-topo a:hover { color: var(--ac-rubro); }

/* Em tela estreita o placar empilha: escudo, nome, número, e o outro time. */
@media (max-width: 34rem) {
  .ac-board-corpo {
    grid-template-columns: 1fr;
    gap: var(--ac-e-4);
    padding-block: var(--ac-e-5);
  }
  .ac-board-time { flex-direction: row; gap: var(--ac-e-3); text-align: left; }
  .ac-board-time img,
  .ac-board-chapa { width: 3rem; height: 3rem; }
  .ac-board-nome { font-size: var(--ac-t-lg); }
  .ac-board-gols { justify-content: center; }
}

/* ==========================================================================
   15. MARCAS DE ESTADO
   ==========================================================================
   Ídolo, aposentado, falecido. Eram emojis colados no fim do <h1> — sem
   rótulo, sem hierarquia, e ilegíveis para leitor de tela. Viram etiquetas.
   ========================================================================== */

.ac-marcas {
  display: flex;
  flex-wrap: wrap;
  gap: var(--ac-e-2);
  margin: var(--ac-e-3) 0 0;
}
.ac-marca {
  display: inline-flex;
  align-items: center;
  gap: var(--ac-e-1);
  padding: var(--ac-e-1) var(--ac-e-3);
  border: 1px solid var(--ac-regua);
  border-radius: 999px;
  background: var(--ac-papel-alto);
  font-family: var(--ac-fonte-etiq);
  font-size: var(--ac-t-xs);
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--ac-tinta-2);
}
.ac-marca .ac-icone { color: var(--ac-tinta-3); }
.ac-marca--idolo {
  border-color: var(--ac-rubro);
  background: var(--ac-rubro-fraco);
  color: var(--ac-rubro);
}
.ac-marca--idolo .ac-icone { color: var(--ac-rubro); }

/* O hero da ficha perde a grade de larguras fixas em pixel: o retrato já vive
   no cabeçalho, e o que sobra é conteúdo em coluna única. */
.ac-hero {
  display: block;
}
.ac-hero-info { min-width: 0; }

/* A lista de dados da ficha ganha MEDIDA.
   Sem limite ela esticava os 1100px da página: "NOME COMPLETO" na margem
   esquerda e "Muriel Gustavo Becker" na direita, com 900px de vazio no meio.
   O olho não liga rótulo e valor a essa distância — é o mesmo defeito do vão
   depois da barra de busca, só que dentro de uma tabela. */
.ac-hero-info .ac-dl { max-width: 34rem; }

/* Em tela larga a ficha usa as duas colunas que tem: dados à esquerda,
   seletor de temporada à direita, em vez de uma coluna só com sobra. */
@media (min-width: 900px) {
  .ac-hero-info {
    display: grid;
    grid-template-columns: minmax(0, 34rem) minmax(0, 1fr);
    gap: var(--ac-e-6);
    align-items: start;
  }
  .ac-hero-info .ac-dl { max-width: none; }
}

/* O seletor de temporada era um <form> com estilo inline e um <strong> solto:
   destoava de todo o resto da ficha. */
.ac-hero-info form {
  display: flex;
  align-items: center;
  gap: var(--ac-e-2);
  margin: 0;
  padding-top: var(--ac-e-2);
}
.ac-hero-info form label,
.ac-hero-info form label strong {
  font-family: var(--ac-fonte-etiq);
  font-size: var(--ac-t-xs);
  font-weight: 700;
  letter-spacing: var(--ac-ls-etiq);
  text-transform: uppercase;
  color: var(--ac-tinta-2);
}
.ac-hero-info form select {
  font-family: var(--ac-fonte-display);
  font-size: var(--ac-t-sm);
  padding: var(--ac-e-1) var(--ac-e-2);
  border: 1px solid var(--ac-regua);
  border-radius: var(--ac-raio-sm);
  background: var(--ac-papel-alto);
  color: var(--ac-tinta);
}

/* ==========================================================================
   16. ESCUDO GENÉRICO E MINIATURAS SEM IMAGEM
   ==========================================================================
   Metade dos cards de adversário não tem escudo cadastrado. Um buraco no lugar
   deixava a grade irregular e fazia os que TÊM escudo parecerem desalinhados.
   ========================================================================== */

.ac-escudo-generico {
  width: 100%;
  height: 100%;
  display: block;
  color: var(--ac-tinta-3);
}
.ac-adv-thumb .ac-escudo-generico,
.ac-jog-thumb .ac-escudo-generico,
.ac-comp-thumb .ac-escudo-generico { padding: 12%; }

/* Ícone no lugar da miniatura (estádio, competição). */
.ac-thumb-icone {
  width: 55%;
  height: 55%;
  color: var(--ac-tinta-3);
  stroke-width: 1.4;
}

.ac-sem-foto {
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  font-family: var(--ac-fonte-etiq);
  font-size: var(--ac-t-xs);
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--ac-tinta-3);
  background: var(--ac-papel-fundo);
  text-align: center;
  padding: var(--ac-e-1);
}

/* ==========================================================================
   17. ESPAÇO DEPOIS DA BUSCA
   ==========================================================================
   A barra de pesquisa é o último elemento do cabeçalho, e cada página começava
   a uma distância diferente dela: a do clube colava o escudo logo abaixo, as
   listagens abriam com um card e sobrava o dobro. Uma distância só, sempre.
   ========================================================================== */

.ac-searchbar-wrap { padding-block: var(--ac-e-4); }

.ac-site-content { padding-top: var(--ac-e-6); }
.ac-site-content > .ac-wrap:first-child,
.ac-site-content > main:first-child,
.ac-site-content > article:first-child { margin-top: 0; }

/* O primeiro bloco de qualquer página nunca traz margem própria: o espaço vem
   daqui, e não da soma imprevisível das margens de cada template. */
.ac-site-content > * > :first-child,
.ac-wrap > :first-child { margin-top: 0; }

@media (max-width: 44rem) {
  .ac-site-content { padding-top: var(--ac-e-5); }
}

/* ==========================================================================
   18. O TOPO DA PÁGINA DE CLUBE
   ==========================================================================
   Escudo | identidade | uniformes — três colunas na mesma linha, em vez de
   três blocos empilhados ocupando duas dobras.
   ========================================================================== */

.ac-clube-topo {
  display: grid;
  gap: var(--ac-e-5);
  align-items: start;
  padding-bottom: var(--ac-e-5);
  border-bottom: 2px solid var(--ac-tinta);
  margin-bottom: var(--ac-e-6);
}
@media (min-width: 68rem) {
  /* A coluna de informação tinha `1fr` e a das camisas `auto`: o `1fr` come
     todo o espaço livre e as camisas ficam com o mínimo que couberem. Com três
     uniformes — o caso comum — elas quebravam para outra linha ou saíam
     espremidas, enquanto a coluna do meio sobrava vazia à direita dos dados.

     Invertido: a informação recebe uma MEDIDA (o suficiente para rótulo e
     valor, e nada além), e o que sobra vai para os uniformes. */
  .ac-clube-topo {
    grid-template-columns: 11rem minmax(0, 28rem) minmax(0, 1fr);
    gap: var(--ac-e-6);
  }
}
@media (min-width: 40rem) and (max-width: 67.99rem) {
  .ac-clube-topo { grid-template-columns: 8rem minmax(0, 1fr); }
  .ac-clube-uniformes { grid-column: 1 / -1; }
}

.ac-clube-escudo img,
.ac-clube-escudo .ac-escudo-generico {
  width: 100%;
  max-width: 11rem;
  height: auto;
  aspect-ratio: 1;
  object-fit: contain;
  display: block;
}

.ac-clube-info { min-width: 0; }

.ac-clube-nome {
  font-family: var(--ac-fonte-display);
  font-size: var(--ac-t-4xl);
  font-weight: 800;
  letter-spacing: var(--ac-ls-display);
  line-height: var(--ac-lh-apertada);
  margin: 0;
}
.ac-clube-nome-longo {
  /* Era a serifa de TEXTO. "Clube Náutico Capibaribe" é um nome, não é prosa —
     e era a única palavra em serifa em toda a página, o que fazia parecer que
     tinha vindo de outro site colada ali. A serifa continua reservada para
     texto corrido de verdade. */
  font-family: var(--ac-fonte-display);
  font-size: var(--ac-t-lg);
  font-weight: 400;
  color: var(--ac-tinta-2);
  margin: var(--ac-e-1) 0 0;
}

.ac-clube-dl { margin-top: var(--ac-e-4); max-width: 28rem; }

.ac-clube-temporada {
  margin-top: var(--ac-e-4);
  margin-bottom: 0;
  padding-bottom: 0;
  border-bottom: 0;
}

/* Os uniformes: à direita, na mesma linha, alinhados pelo topo. */
.ac-clube-uniformes {
  display: flex;
  flex-wrap: wrap;
  gap: var(--ac-e-3);
  justify-content: flex-end;
  align-items: flex-start;
}
/* Sem moldura: a camisa já vem recortada em fundo branco, e a borda em volta
   criava uma segunda caixa dentro da caixa. Fica só a imagem. */
.ac-clube-uniformes a,
.ac-clube-uniformes .ac-uniforme-link {
  display: block;
  /* `flex: 0 1` em vez de largura fixa: com três uniformes — o caso comum — a
     soma de 3×7,5rem mais os vãos passava da coluna por poucos pixels e a
     terceira camisa caía sozinha numa segunda linha. Deixando encolher, as
     três dividem a fileira; com uma ou duas, cada uma para nos 7,5rem e não
     estica para preencher. */
  flex: 0 1 7.5rem;
  min-width: 3.5rem;
  border: 0;
  background: transparent;
  transition: opacity var(--ac-transicao);
}
.ac-clube-uniformes a:hover { opacity: .8; }
.ac-clube-uniformes .ac-uniforme-link img,
.ac-clube-uniformes a img { border: 0; border-radius: 0; }
.ac-clube-uniformes img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 4;
  object-fit: contain;
}
@media (max-width: 39.99rem) {
  .ac-clube-uniformes { justify-content: flex-start; }
  .ac-clube-uniformes a { width: 6rem; }
}

/* ==========================================================================
   19. RANKINGS
   ==========================================================================
   Os três rankings do site (artilheiros, mais jogos, goleiros) tinham três
   marcações diferentes: dois eram grade de cards com o número dentro do card
   — no canto direito num deles, que é onde o olho não procura posição — e um
   era lista com quatro divs e muito ar entre elas.

   Agora é uma lista só: posição à esquerda, retrato, nome com a legenda
   embaixo, valor grande à direita, e régua entre as linhas.
   ========================================================================== */

.ac-ranklist {
  list-style: none;
  margin: 0;
  padding: 0;
  counter-reset: none;
}

.ac-rankitem {
  display: grid;
  /* A coluna do retrato tem a MEDIDA do retrato (3,125rem = 50px), não 3rem.
     Com a trilha menor que a foto, ela transbordava 2px e comia parte do vão —
     e no pódio, onde a foto vai a 3,5rem, o transbordo de 12px zerava o vão
     inteiro: o nome encostava na borda da foto. O `gap` continuava lá,
     declarado; só não sobrava espaço para ele. */
  grid-template-columns: 2.5rem 3rem minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--ac-e-3);
  padding: var(--ac-e-2) var(--ac-e-2);
  border-bottom: 1px solid var(--ac-regua);
  transition: background var(--ac-transicao);
}
.ac-rankitem:last-child { border-bottom: 0; }
.ac-rankitem:hover { background: var(--ac-papel-fundo); }

.ac-ranknum {
  font-family: var(--ac-fonte-display);
  font-variant-numeric: tabular-nums;
  font-weight: 800;
  font-size: var(--ac-t-lg);
  color: var(--ac-tinta-3);
  text-align: right;
  line-height: 1;
}

.ac-rank-foto {
  /* `border-box`: a borda entra na medida, não soma por fora.
     Sem isto, 3rem + 1px de borda de cada lado davam 50px de caixa numa
     trilha de 48px — a foto transbordava e comia o vão, e no pódio (3,5rem
     mais borda de 2px) o transbordo era de 4px. */
  box-sizing: border-box;
  width: 3rem;
  height: 3rem;
  border-radius: 50%;
  overflow: hidden;
  border: 1px solid var(--ac-regua);
  background: var(--ac-papel-fundo);
  display: grid;
  place-items: center;
}
.ac-rank-foto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.ac-rank-nome {
  font-family: var(--ac-fonte-display);
  font-size: var(--ac-t-lg);
  font-weight: 600;
  line-height: 1.25;
  min-width: 0;
}
.ac-rank-nome a { color: var(--ac-tinta); text-decoration: none; }
.ac-rank-nome a:hover { color: var(--ac-rubro); }
.ac-rank-nome small {
  display: block;
  font-family: var(--ac-fonte-etiq);
  font-size: var(--ac-t-xs);
  font-weight: 600;
  letter-spacing: .09em;
  text-transform: uppercase;
  color: var(--ac-tinta-2);
  margin-top: 2px;
}

.ac-rank-valor { text-align: right; line-height: 1.1; }
.ac-rank-valor b {
  display: block;
  font-family: var(--ac-fonte-display);
  font-variant-numeric: tabular-nums;
  font-size: var(--ac-t-2xl);
  font-weight: 800;
  letter-spacing: -.03em;
  color: var(--ac-tinta);
}
.ac-rank-valor small {
  display: block;
  font-family: var(--ac-fonte-etiq);
  font-size: var(--ac-t-xs);
  letter-spacing: .09em;
  text-transform: uppercase;
  color: var(--ac-tinta-2);
  margin-top: 2px;
}

/* Pódio: os três primeiros de um ranking histórico não são "mais três linhas". */
/* O pódio tem a foto maior, então a trilha dele também cresce — senão a foto
   volta a invadir o vão e o nome cola nela outra vez. */
.ac-rankitem--podio {
  padding-block: var(--ac-e-3);
  grid-template-columns: 2.5rem 3.5rem minmax(0, 1fr) auto;
}
.ac-rankitem--podio .ac-ranknum { font-size: var(--ac-t-2xl); color: var(--ac-tinta); }
.ac-rankitem--podio .ac-rank-foto { width: 3.5rem; height: 3.5rem; border-width: 2px; }
.ac-rankitem--podio:nth-child(1) .ac-ranknum { color: var(--ac-rubro); }
.ac-rankitem--podio:nth-child(1) .ac-rank-foto { border-color: var(--ac-rubro); }
.ac-rankitem--podio:nth-child(1) .ac-rank-valor b { color: var(--ac-rubro); }

.ac-rank-foto .ac-thumb-icone,
.ac-rank-foto .ac-sem-foto { width: 55%; height: 55%; font-size: 0; }
.ac-rank-foto .ac-thumb-icone { color: var(--ac-tinta-3); }

@media (max-width: 34rem) {
  /* A trilha do retrato acompanha o retrato AQUI TAMBÉM. Ela era 2,5rem para
     uma foto de 3rem: no celular o nome não só encostava como ficava 2px POR
     CIMA da foto. E a regra do pódio, por vir antes desta no arquivo, perdia a
     trilha larga para este seletor — por isso ele é redeclarado abaixo. */
  .ac-rankitem { grid-template-columns: 2rem 3rem minmax(0, 1fr) auto; gap: var(--ac-e-2); }
  .ac-rankitem--podio { grid-template-columns: 2rem 3rem minmax(0, 1fr) auto; }
  .ac-rank-nome { font-size: var(--ac-t-md); }
  .ac-rank-valor b { font-size: var(--ac-t-xl); }
  .ac-rankitem--podio .ac-rank-foto { width: 3rem; height: 3rem; }
}

/* ==========================================================================
   20. HIERARQUIA DE TEXTO
   ==========================================================================
   O problema visível nas telas: numa linha só conviviam <strong> preto,
   <b> preto e .ac-muted cinza claro — "Fundação:" em negrito escuro ao lado
   do ano em cinza fraco. O olho não sabia qual era o dado e qual era o rótulo,
   porque os dois gritavam ao mesmo tempo, em direções opostas.

   A regra do sistema é uma só, e vale em toda parte:

     RÓTULO   pequeno, versalete condensado, cinza médio  (--ac-tinta-2)
     DADO     tamanho normal, peso 600, tinta cheia       (--ac-tinta)
     APOIO    pequeno, cinza médio                        (--ac-tinta-2)

   Rótulo nunca é negrito escuro. Dado nunca é cinza claro.
   ========================================================================== */

/* .ac-muted era usada tanto para rótulo quanto para dado secundário, com o
   mesmo cinza. Passa a ser SÓ apoio, e num cinza que ainda lê bem. */
.ac-muted { color: var(--ac-tinta-2); }

/* <strong> e <b> dentro do conteúdo do arquivo deixam de ser um segundo preto
   competindo com o texto: viram ênfase de peso, não de cor. */
.ac-wrap strong,
.ac-wrap b,
.ac-site-content strong,
.ac-site-content b {
  font-weight: 600;
  color: inherit;
}

/* Rótulo em linha ("Fundação:", "Posição:") — onde ainda existir marcação
   antiga que não virou lista de dados. */
.ac-rotulo,
.ac-field > strong:first-child {
  font-family: var(--ac-fonte-etiq);
  font-size: var(--ac-t-xs);
  font-weight: 600;
  letter-spacing: var(--ac-ls-etiq);
  text-transform: uppercase;
  color: var(--ac-tinta-2);
}

/* Títulos: um peso e um espaçamento por nível, sem exceção por template. */
.ac-wrap h1, .ac-site-content h1 {
  font-family: var(--ac-fonte-display);
  font-size: var(--ac-t-4xl);
  font-weight: 800;
  letter-spacing: var(--ac-ls-display);
  line-height: var(--ac-lh-apertada);
}
.ac-wrap h2, .ac-site-content h2 {
  font-family: var(--ac-fonte-display);
  font-size: var(--ac-t-2xl);
  font-weight: 700;
  letter-spacing: var(--ac-ls-titulo);
  line-height: var(--ac-lh-titulo);
}
.ac-wrap h3, .ac-site-content h3 {
  font-family: var(--ac-fonte-display);
  font-size: var(--ac-t-xl);
  font-weight: 700;
  letter-spacing: var(--ac-ls-titulo);
  line-height: var(--ac-lh-titulo);
}
.ac-wrap h4, .ac-site-content h4 {
  font-family: var(--ac-fonte-etiq);
  font-size: var(--ac-t-xs);
  font-weight: 700;
  letter-spacing: var(--ac-ls-etiq);
  text-transform: uppercase;
  color: var(--ac-tinta-2);
}

/* Link dentro do conteúdo: cor do clube.
 *
 * A lista de exceções era `:not(.a):not(.b):not(.c)` — TRÊS pseudoclasses
 * encadeadas, o que dá especificidade 0,4,1. Nesse patamar a regra vencia todo
 * componente que tentasse pintar o próprio nome, e cada componente novo tinha
 * de ser acrescentado à lista para escapar. Foi assim que o nome do jogador
 * saiu vermelho no ranking e nos tops, e preto no elenco: quem estava na lista
 * escapava, quem não estava, não.
 *
 * `:not(:is(...))` tem a especificidade do argumento MAIS específico de :is(),
 * ou seja 0,1,0 — o conjunto cai para 0,2,1 e volta a ser possível um
 * componente dizer a própria cor. A lista continua existindo, mas agora ela é
 * uma conveniência, não a única saída. */
.ac-wrap a:not(:is(.ac-botao, .ac-az-btn, .ac-card-lista, .ac-top-item, .ac-roster-card, .ac-ordem-btn)),
.ac-site-content a:not(:is(.ac-botao, .ac-az-btn, .ac-card-lista, .ac-top-item, .ac-roster-card, .ac-ordem-btn)) {
  color: var(--ac-rubro);
  text-decoration-thickness: 1px;
  text-underline-offset: .18em;
}

/* NOME DE PESSOA É TINTA CHEIA — em qualquer lista, em qualquer página.
 *
 * Vem depois da regra acima de propósito: com a mesma especificidade, quem
 * está por último vence, e é aqui que a decisão sobre nomes deve morar. O que
 * distingue um nome de um link comum não é a cor: é estar num card, com o
 * retrato ao lado e o valor à direita. */
.ac-site-content .ac-rank-nome a,
.ac-site-content .ac-top-item,
.ac-site-content .ac-roster-card {
  color: var(--ac-tinta);
}
.ac-site-content .ac-rank-nome a:hover { color: var(--ac-rubro); }

/* O emoji de bandeira não é texto: não herda peso nem cor, e num tamanho
   próprio para não empurrar a linha de base. */
.ac-flag {
  /* Era 1.05em — o único tamanho de fonte do site fora da escala, e por um
     motivo que não se sustenta: a bandeira é um emoji, quem decide o desenho
     dela é o sistema operacional, e 5% não corrigem isso. Herda o tamanho do
     texto ao lado, como qualquer outro caractere. */
  font-size: 1em;
  line-height: 1;
  font-weight: 400;
  vertical-align: -.08em;
}

/* Números em qualquer lugar do arquivo alinham por coluna. */
.ac-wrap [class*="valor"],
.ac-wrap [class*="num"],
.ac-site-content .ac-dado { font-variant-numeric: tabular-nums; }

/* ==========================================================================
   21. AVATAR
   ==========================================================================
   Sempre redondo, sempre do mesmo tamanho — com foto, com escudo, com iniciais
   ou com ícone. Antes cada listagem resolvia a miniatura do seu jeito: a de
   técnicos mostrava a foto no TAMANHO NATURAL, o que deixava cards de alturas
   diferentes com retratos gigantes ao lado de espaços vazios.
   ========================================================================== */

.ac-avatar {
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  border-radius: 50%;
  overflow: hidden;
  background: var(--ac-papel-fundo);
  border: 1px solid var(--ac-regua);
  color: var(--ac-tinta-3);
  line-height: 1;
}
.ac-avatar > img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* Escudo NÃO é foto: `cover` cortava as bordas para preencher o círculo, e o
   resultado perverso era que o clube SEM escudo (que usa o desenho, exibido
   inteiro) ficava mais bem apresentado que o clube com escudo. */
.ac-avatar--clube > img {
  object-fit: contain;
  padding: 12%;
  background: var(--ac-papel-alto);
}

.ac-avatar--sm { width: 2.25rem; height: 2.25rem; }
.ac-avatar--md { width: 3rem;    height: 3rem; }
.ac-avatar--lg { width: 4rem;    height: 4rem; }

/* Iniciais no lugar da foto. O mesmo círculo, o mesmo tamanho — a fileira
   continua regular quando metade do elenco não tem retrato. */
.ac-avatar--iniciais {
  font-family: var(--ac-fonte-display);
  font-weight: 800;
  letter-spacing: -.02em;
  color: var(--ac-tinta-2);
  background: var(--ac-papel-fundo);
}
/* As iniciais também saem da escala do sistema, em vez de três valores
   escolhidos a olho (.7 / .9 / 1.2rem). */
.ac-avatar--sm.ac-avatar--iniciais { font-size: var(--ac-t-xs); }
.ac-avatar--md.ac-avatar--iniciais { font-size: var(--ac-t-md); }
.ac-avatar--lg.ac-avatar--iniciais { font-size: var(--ac-t-xl); }

/* Escudo desenhado: o contorno preenche o círculo, sem borda dupla. */
.ac-avatar--escudo {
  border-color: transparent;
  background: var(--ac-papel-fundo);
}
.ac-avatar--escudo .ac-escudo-generico {
  width: 78%;
  height: 78%;
}

.ac-avatar--icone .ac-icone {
  width: 52%;
  height: 52%;
  stroke-width: 1.5;
  color: var(--ac-tinta-3);
}

/* ==========================================================================
   22. CARD DE LISTAGEM
   ==========================================================================
   Um só, em jogadores, goleiros, técnicos, adversários, estádios e
   competições. Eram seis marcações com seis nomes de classe — e por isso seis
   aparências: uma com o nome sublinhado, outra não; uma com a foto grande,
   outra em miniatura.
   ========================================================================== */

.ac-grade-cards {
  display: grid;
  gap: var(--ac-e-3);
  grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr));
  align-items: stretch;
}

.ac-card-lista {
  display: flex;
  align-items: center;
  gap: var(--ac-e-3);
  padding: var(--ac-e-3);
  min-width: 0;
  border: 1px solid var(--ac-regua);
  border-radius: var(--ac-raio);
  background: var(--ac-papel-alto);
  color: var(--ac-tinta);
  text-decoration: none;
  transition: border-color var(--ac-transicao), box-shadow var(--ac-transicao);
}
.ac-card-lista:hover {
  border-color: var(--ac-rubro);
  box-shadow: var(--ac-sombra);
  color: var(--ac-tinta);
}
.ac-card-lista:focus-visible { border-color: var(--ac-rubro); }

.ac-card-lista-texto {
  display: block;
  min-width: 0;
  flex: 1 1 auto;
}
.ac-card-lista-titulo {
  display: block;
  font-family: var(--ac-fonte-display);
  font-size: var(--ac-t-md);
  font-weight: 600;
  line-height: 1.25;
  color: var(--ac-tinta);
  overflow-wrap: anywhere;
}
.ac-card-lista:hover .ac-card-lista-titulo { color: var(--ac-rubro); }

.ac-card-lista-sub,
.ac-card-lista-extra {
  display: block;
  font-family: var(--ac-fonte-etiq);
  font-size: var(--ac-t-xs);
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--ac-tinta-2);
  margin-top: 2px;
  overflow-wrap: anywhere;
}
.ac-card-lista-extra { color: var(--ac-tinta-3); text-transform: none; letter-spacing: 0; }

/* ==========================================================================
   23. SEM SUBLINHADO ONDE NÃO É LEITURA
   ==========================================================================
   O sublinhado é do texto corrido, onde o link precisa se distinguir do
   parágrafo. Em card, em card de ranking, em barra de filtro e em célula de
   tabela ele só suja — e nas telas do site aparecia até nos rótulos
   secundários, o que fazia tudo parecer link.
   ========================================================================== */

.ac-card-lista,
.ac-card-lista *,
.ac-rankitem a,
.ac-az-btn,
.ac-botao,
.ac-avatar,
.ac-table td a,
.ac-board-topo a,
.ac-board-rodape a,
.ac-dl a,
.ac-numero a,
.ac-marca { text-decoration: none; }

.ac-rankitem a:hover,
.ac-table td a:hover { color: var(--ac-rubro); }

/* ==========================================================================
   24. FILTRO A–Z
   ==========================================================================
   Um só, para as seis listagens. Havia quatro construtores diferentes, com
   espaçamento, tamanho e estado ativo distintos em cada página.
   ========================================================================== */

.ac-az-filter {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--ac-e-1);
  padding-bottom: var(--ac-e-3);
  margin-bottom: var(--ac-e-4);
  border-bottom: 1px solid var(--ac-regua);
}

.ac-az-rotulo {
  display: inline-flex;
  align-items: center;
  gap: var(--ac-e-1);
  font-family: var(--ac-fonte-etiq);
  font-size: var(--ac-t-xs);
  font-weight: 700;
  letter-spacing: var(--ac-ls-etiq);
  text-transform: uppercase;
  color: var(--ac-tinta-2);
  padding-right: var(--ac-e-3);
  margin-right: var(--ac-e-1);
  border-right: 1px solid var(--ac-regua);
  align-self: stretch;
}

.ac-az-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--ac-e-1);
  min-width: 2rem;
  height: 2rem;
  padding-inline: var(--ac-e-2);
  font-family: var(--ac-fonte-display);
  font-size: var(--ac-t-md);
  font-weight: 600;
  line-height: 1;
  border: 1px solid var(--ac-regua);
  border-radius: var(--ac-raio-sm);
  background: var(--ac-papel-alto);
  color: var(--ac-tinta-2);
  cursor: pointer;
  transition: border-color var(--ac-transicao), color var(--ac-transicao), background var(--ac-transicao);
}
.ac-az-btn:hover { border-color: var(--ac-rubro); color: var(--ac-rubro); }
.ac-az-btn.is-active,
.ac-az-btn[aria-current="true"] {
  background: var(--ac-rubro);
  border-color: var(--ac-rubro);
  color: var(--ac-sobre-rubro);
}
.ac-az-btn--todos,
.ac-az-btn--idolos { padding-inline: var(--ac-e-3); }

@media (max-width: 34rem) {
  .ac-az-rotulo { border-right: 0; padding-right: 0; width: 100%; margin-bottom: var(--ac-e-1); }
  .ac-az-btn { min-width: 1.85rem; height: 1.85rem; font-size: var(--ac-t-sm); }
}

/* ==========================================================================
   25. O ESPAÇO GRANDE DEPOIS DA BUSCA
   ==========================================================================
   Nas telas aparecia um vão enorme entre a barra de pesquisa e o conteúdo. A
   causa: o conteúdo da página traz blocos VAZIOS (um parágrafo ou um <div> sem
   nada dentro, deixado no editor) que continuam ocupando altura e margem.

   Elemento vazio não reserva espaço.
   ========================================================================== */

/*
 * Só FILHO DIRETO do wrapper de conteúdo — que é onde ficam os blocos vazios
 * deixados no editor. A versão anterior alcançava qualquer <div> vazio da
 * página, e escondia coisas legítimas: os dois espaçadores de coluna do
 * cabeçalho do ranking de goleiros (um grid de 6 colunas ficava com 4 células
 * e todos os rótulos passavam a apontar para a coluna errada) e os divs de
 * altura fixa que separam blocos na página do clube.
 */
.ac-site-content > p:empty,
.ac-site-content > div:empty:not([class*="ac-"]):not([id]),
.entry-content > p:empty,
.entry-content > br,
.ac-wrap > p:empty {
  display: none;
}

/* Um <p> que só tem &nbsp; também é vazio para efeito de layout. */

/* E a distância em si fica menor: o conteúdo começa logo, não a uma tela dele. */
.ac-site-content { padding-top: var(--ac-e-5); }
@media (max-width: 44rem) {
  .ac-site-content { padding-top: var(--ac-e-4); }
}

/* O primeiro card de uma página encosta na distância padrão, sem somar a
   própria margem por cima dela. */
.ac-site-content > .ac-wrap > .ac-card:first-child,
.ac-site-content > .ac-wrap > .ac-painel:first-child,
.ac-site-content > .ac-wrap > article:first-child { margin-top: 0; }

/* Botão pequeno, para dentro de linha de tabela. */
.ac-botao--mini {
  padding: var(--ac-e-1) var(--ac-e-2);
  font-size: var(--ac-t-sm);
  gap: var(--ac-e-1);
}

/* Cabeçalho de tabela com ícone: o ícone alinha com o rótulo, um tom abaixo. */
.ac-table thead th { white-space: nowrap; }
.ac-table thead th .ac-icone { margin-right: var(--ac-e-1); vertical-align: -.16em; }

/* A estrela de jogo marcante herda a cor do destaque. */
.ac-toj-marcante { color: var(--ac-marcante); display: inline-flex; vertical-align: -.15em; }

/* ==========================================================================
   26. FILTROS DOS RANKINGS
   ==========================================================================
   Os filtros das páginas históricas tinham desenho próprio: raio de 10px,
   borda diferente, rótulo com opacidade em vez de cor, e o botão sem hover.
   Passam a usar o mesmo controle das outras telas.
   ========================================================================== */

.ac-hist-filtros {
  gap: var(--ac-e-3);
  margin: 0 0 var(--ac-e-5);
  padding-bottom: var(--ac-e-4);
  border-bottom: 1px solid var(--ac-regua);
}
.ac-hist-filtros .ac-field { gap: var(--ac-e-1); min-width: 10rem; }
.ac-hist-filtros label {
  font-family: var(--ac-fonte-etiq);
  font-size: var(--ac-t-xs);
  font-weight: 600;
  letter-spacing: var(--ac-ls-etiq);
  text-transform: uppercase;
  color: var(--ac-tinta-2);
  opacity: 1;
}
.ac-hist-filtros select,
.ac-hist-filtros input[type="number"],
.ac-hist-filtros input[type="text"] {
  font-family: var(--ac-fonte-display);
  font-size: var(--ac-t-md);
  padding: var(--ac-e-1) var(--ac-e-3);
  border-radius: var(--ac-raio-sm);
  border: 1px solid var(--ac-regua-forte);
  background: var(--ac-papel-alto);
  color: var(--ac-tinta);
  line-height: 1.6;
  transition: border-color var(--ac-transicao), box-shadow var(--ac-transicao);
}
.ac-hist-filtros select:focus-visible,
.ac-hist-filtros input:focus-visible {
  outline: none;
  border-color: var(--ac-rubro);
  box-shadow: 0 0 0 3px var(--ac-rubro-fraco);
}
.ac-hist-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--ac-e-2);
  font-family: var(--ac-fonte-display);
  font-size: var(--ac-t-md);
  font-weight: 600;
  padding: var(--ac-e-2) var(--ac-e-4);
  border: 1px solid var(--ac-rubro);
  border-radius: var(--ac-raio-sm);
  background: var(--ac-rubro);
  color: var(--ac-sobre-rubro);
  cursor: pointer;
  transition: background var(--ac-transicao), border-color var(--ac-transicao);
}
.ac-hist-btn:hover { background: var(--ac-rubro-vivo); border-color: var(--ac-rubro-vivo); }

/* O card das páginas históricas segue o raio do sistema, não um de 14px só
   dele — e o título vem do cabeçalho de página, não de um .ac-title solto. */
.ac-hist .ac-card { border-radius: var(--ac-raio); padding: var(--ac-e-4); }
.ac-hist.ac-wrap { max-width: var(--ac-largura); padding-inline: clamp(var(--ac-e-4), 4vw, var(--ac-e-6)); }

/* ==========================================================================
   27. CONTROLE DE ORDENAÇÃO
   ==========================================================================

   Existia em Adversários com a classe .ac-adv-ordem — que nenhuma folha de
   estilo declarava. Os dois links saíam iguais e a ordenação vigente era
   invisível. Agora é o mesmo controle segmentado da barra A–Z: mesmo rótulo,
   mesma altura, mesmo estado ativo.
   ========================================================================== */

.ac-ordem {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--ac-e-1);
  margin-bottom: var(--ac-e-4);
}

.ac-ordem-rotulo {
  display: inline-flex;
  align-items: center;
  gap: var(--ac-e-1);
  font-family: var(--ac-fonte-etiq);
  font-size: var(--ac-t-xs);
  font-weight: 700;
  letter-spacing: var(--ac-ls-etiq);
  text-transform: uppercase;
  color: var(--ac-tinta-2);
  padding-right: var(--ac-e-3);
  margin-right: var(--ac-e-1);
  border-right: 1px solid var(--ac-regua);
  align-self: stretch;
}
.ac-ordem-rotulo .ac-icone { width: 1rem; height: 1rem; }

.ac-ordem-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--ac-e-2);
  height: 2rem;
  padding-inline: var(--ac-e-3);
  font-family: var(--ac-fonte-display);
  font-size: var(--ac-t-sm);
  font-weight: 600;
  line-height: 1;
  text-decoration: none;
  border: 1px solid var(--ac-regua);
  border-radius: var(--ac-raio-sm);
  background: var(--ac-papel-alto);
  color: var(--ac-tinta-2);
  transition: border-color var(--ac-transicao), color var(--ac-transicao), background var(--ac-transicao);
}
.ac-ordem-btn .ac-icone { width: 1rem; height: 1rem; }
.ac-ordem-btn:hover,
.ac-ordem-btn:focus-visible {
  border-color: var(--ac-regua-forte);
  color: var(--ac-tinta);
}
.ac-ordem-btn.is-active {
  background: var(--ac-rubro);
  border-color: var(--ac-rubro);
  color: var(--ac-sobre-rubro);
}

/* O estado vazio não é um card: quando ele cai dentro da grade (adversários,
   competições, técnicos imprimem dentro do <div> já aberto), ele precisa ocupar
   a linha inteira. Sem isto, num monitor largo a grade abre cinco colunas e a
   mensagem sai espremida em ~230px, encostada à esquerda, quebrando em cinco
   linhas — parecendo defeito em vez de resposta. */
.ac-grade-cards > .ac-vazio { grid-column: 1 / -1; }

/* ==========================================================================
   28. AS DUAS LISTAS DA FICHA VIRARAM UMA
   ==========================================================================

   O cabeçalho da ficha mostra duas listas encostadas uma na outra: os dados da
   pessoa ("NASCIMENTO … 03-08-1993") e as estatísticas dela ("Jogos: 6"). São
   a mesma coisa — rótulo à esquerda, valor à direita, filete entre as linhas —
   e saíam diferentes em tudo o que dá para sair:

     dados          <dl>, rótulo em versalete, valor à DIREITA, linha de 41px
     estatísticas   <ul>, texto corrido, valor à ESQUERDA, linha de 39px

   Duas alturas de linha quase iguais (2px de diferença) são pior do que duas
   bem diferentes: o olho não lê como duas coisas distintas, lê como uma coisa
   torta. E os dois alinhamentos opostos, lado a lado, deixavam os valores em
   ziguezague pela largura do cabeçalho.

   Agora as duas saem de ac_lista_dados(), com a mesma marcação, e herdam .ac-dl
   sem exceção nenhuma. O que sobra aqui é só o que é próprio do cartão de
   estatística: o selo de ranking.
   ========================================================================== */

.ac-stats-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
  gap: var(--ac-e-4);
}

/* O selo de ranking encosta na direita, alinhado em todas as linhas — é o que
   permite comparar as posições de relance. O valor fica à esquerda dele. */
.ac-stat-col .ac-dl > .ac-dl-extra > .ac-rank-badge { flex: 0 0 auto; }

/* No celular "1,08 (138)" quebrava ao meio — "1,08" numa linha, "(138)" na
   seguinte. Um número partido em duas linhas deixa de ser lido como número.
   O rótulo é que pode quebrar: "PÊNALTIS DEFENDIDOS" em duas linhas continua
   sendo a mesma frase. Então aqui o par troca de papel em relação à lista de
   dados: o valor não quebra, e a trilha do rótulo cede o espaço que faltar. */
.ac-stat-col .ac-dl > dt { white-space: normal; }
.ac-stat-col .ac-dl > dd { white-space: nowrap; }

/* ==========================================================================
   29. NENHUM LINK SUBLINHADO
   ==========================================================================

   O pedido foi literal: "tira o sublinhado de todos os links do site". O
   sublinhado sobrevivia em sete lugares diferentes — no :hover de tabelas, no
   topo do placar, nos rankings, no "Limpar" de Todos os jogos, no .ac-link das
   fichas. Cada um numa folha, cada um com um seletor.

   Aqui a regra é uma: nada sublinha, em estado nenhum. O que sinaliza o link é
   a cor e a mudança dela no hover — que continuam valendo.
   ========================================================================== */

/* Escopo do DOCUMENTO, não de .ac-site-content.
   O cabeçalho do site e o rodapé são IRMÃOS do container de conteúdo, não
   filhos — então o logotipo e os links do menu ficavam de fora da regra e
   continuavam sublinhados, que é justamente onde mais se olha. O
   #wpadminbar fica de fora: é a barra do WordPress, não é o site. */
body a,
body a:hover,
body a:focus,
body a:visited,
body a:active {
  text-decoration: none;
}
#wpadminbar a { text-decoration: revert; }
/* Exceção deliberada: o foco por teclado precisa de marca visível. Não é
   sublinhado de leitura, é indicação de onde o cursor está. */
body a:focus-visible {
  outline: 2px solid var(--ac-rubro);
  outline-offset: 2px;
  border-radius: var(--ac-raio-sm);
}

/* ==========================================================================
   30. AS FOTOS TÊM UM TAMANHO SÓ
   ==========================================================================

   Havia três tamanhos para a mesma coisa. O retrato da ficha ocupava a coluna
   de 9rem; quem não tinha foto ganhava um .ac-photo-fallback de 44px — um
   selinho tracejado ao lado de retratos quatro vezes maiores. E no elenco do
   clube, a foto era 44px e o "sem foto" também, mas com o texto encostado no
   canto em vez de centralizado.

   Agora o vazio tem exatamente a forma e o tamanho do cheio, em cada contexto.
   ========================================================================== */

/* --- o retrato da ficha (jogador, goleiro, técnico) --- */
.ac-pagina-cab--ficha .ac-retrato,
.ac-pagina-cab--ficha .ac-photo-fallback {
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 4;
  border-radius: var(--ac-raio);
  background: var(--ac-papel-fundo);
  object-fit: cover;
}
.ac-pagina-cab--ficha .ac-retrato { border: 1px solid var(--ac-regua-forte); }

/* "Sem foto" centralizado, não encostado num canto. */
.ac-pagina-cab--ficha .ac-photo-fallback {
  display: grid;
  place-items: center;
  text-align: center;
  border: 1px dashed var(--ac-regua-forte);
  font-family: var(--ac-fonte-etiq);
  font-size: var(--ac-t-xs);
  letter-spacing: var(--ac-ls-etiq);
  text-transform: uppercase;
  color: var(--ac-tinta-3);
}

/* --- a foto do elenco, na página do clube --- */
/* .ac-roster-photo sobrevive para o caso de marcação antiga em cache; o
   tamanho é o mesmo do avatar --md, para as duas nunca divergirem. */
.ac-roster-photo {
  width: 3rem;
  height: 3rem;
  flex: 0 0 3rem;
  border-radius: 50%;
  overflow: hidden;
  background: var(--ac-papel-fundo);
  display: grid;
  place-items: center;
}
.ac-roster-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
/* O bloco que estilizava .ac-roster-photo .ac-photo-fallback saiu junto com a
   marcação: o elenco agora chama ac_avatar(), que desenha as INICIAIS do
   jogador em vez de escrever "sem foto". Um card deve dizer de quem ele é, não
   o que falta nele — e o texto exigia um corpo de 8px, fora da escala. */

/* O card do elenco segue o mesmo modelo dos outros cards do site: nome em
   corpo de display com tinta cheia, função em cinza médio. Estava com o nome
   em serifa vermelha e a função em serifa cinza — duas famílias e duas cores
   diferentes das usadas em qualquer outra listagem. */
.ac-roster-card {
  gap: var(--ac-e-3);
  padding: var(--ac-e-3);
  border-radius: var(--ac-raio);
  color: var(--ac-tinta);
}
.ac-roster-meta { min-width: 0; }
.ac-roster-name {
  margin-top: 0;
  font-family: var(--ac-fonte-display);
  font-size: var(--ac-t-md);
  font-weight: 700;
  line-height: 1.2;
  color: var(--ac-tinta);
}
.ac-roster-card .ac-muted {
  font-family: var(--ac-fonte-etiq);
  font-size: var(--ac-t-xs);
  letter-spacing: var(--ac-ls-etiq);
  text-transform: uppercase;
  color: var(--ac-tinta-2);
}

/* ==========================================================================
   31. O BOX DE ESTATÍSTICAS
   ==========================================================================

   Duas réguas empilhadas: o <h3> do box trazia a sua border-bottom e a lista
   logo abaixo trazia a sua border-top. Somadas, viravam um filete duplo com um
   vão de 15px de padding entre o título e ele.

   E a moldura do box da direita chegava a encostar na borda do conteúdo: as
   quatro regras de `width: 100%` empilhadas em ac-telas.css transbordam sempre
   que um ancestral tem padding e box-sizing de conteúdo. `width: auto` num
   bloco preenche exatamente a caixa de conteúdo do pai — nunca ultrapassa.
   ========================================================================== */

.ac-hero-stats,
.ac-stats-panel {
  width: auto;
  max-width: 100%;
  min-width: 0;
}
.ac-stats-grid { max-width: 100%; min-width: 0; }

/* As estatísticas SAÍRAM da caixa.
   Dentro de uma moldura com fundo próprio, elas liam como um bloco estranho
   grudado no cabeçalho: o mesmo tipo de informação da coluna ao lado — rótulo
   e valor — mas embrulhado como se fosse outra coisa, e recuado 16px para
   dentro, o que desalinhava as linhas das duas listas.

   Agora são a mesma matéria dos dados do jogador, e o que separa as duas
   colunas é um filete vertical, como numa página de jornal. */
.ac-stat-col {
  min-width: 0;
  border: 0;
  padding: 0;
  margin: 0;
  background: none;
}

/* Uma régua só, e o título perto dela. */
.ac-stat-col h3 {
  display: flex;
  align-items: center;
  gap: var(--ac-e-2);
  margin: 0 0 var(--ac-e-3);
  padding-bottom: var(--ac-e-2);
  border-bottom: 1px solid var(--ac-regua);
  font-family: var(--ac-fonte-display);
  font-size: var(--ac-t-lg);
  font-weight: 700;
  letter-spacing: var(--ac-ls-titulo);
}
.ac-stat-col h3 .ac-icone { width: 1.05rem; height: 1.05rem; color: var(--ac-rubro); }

/* A lista NÃO repete a régua do título. */

/* Todo <h2>/<h3> de seção agora começa com um ícone: alinha e ganha a cor do
   clube, para que o olho encontre o começo de cada bloco sem ler o texto. */
.ac-site-content h2 > .ac-icone,
.ac-site-content h3 > .ac-icone {
  width: 1.1em;
  height: 1.1em;
  margin-right: var(--ac-e-2);
  vertical-align: -.16em;
  color: var(--ac-rubro);
}

/* Setas da paginação e o ícone do contador. */
.ac-pager a { display: inline-flex; align-items: center; gap: var(--ac-e-1); }
.ac-pager a .ac-icone { width: 1rem; height: 1rem; }
.ac-pager-info { display: inline-flex; align-items: center; gap: var(--ac-e-1); }
.ac-pager-info .ac-icone { width: .9rem; height: .9rem; color: var(--ac-tinta-3); }

/* A temporada centraliza sob o escudo — ela pertence à coluna do escudo, e
   encostada à esquerda parecia solta num canto. */
.ac-clube-escudo {
  display: grid;
  justify-items: center;
  gap: var(--ac-e-3);
}
.ac-clube-temporada {
  display: grid;
  justify-items: center;
  gap: var(--ac-e-1);
  width: 100%;
  margin: 0;
}
.ac-clube-temporada .ac-toolbar-rotulo { justify-content: center; }
.ac-clube-temporada .ac-controle { width: 100%; max-width: 11rem; text-align: center; }

/* Três camisas cabem lado a lado; com duas elas não esticam para preencher. */
.ac-clube-uniformes {
  justify-content: flex-end;
  align-content: flex-start;
}
@media (min-width: 40rem) {
  /* `nowrap` de propósito. Num container que pode quebrar, o navegador QUEBRA
     PRIMEIRO e só encolhe depois, dentro da linha já formada — então o
     `flex-shrink` das camisas nunca entrava em ação e a terceira ia sozinha
     para baixo assim que faltavam poucos pixels. Sem quebra, as três dividem a
     fileira e encolhem juntas. No celular a quebra volta a ser o certo. */
  .ac-clube-uniformes { flex-wrap: nowrap; }
}

/* ==========================================================================
   32. A FILEIRA DE NÚMEROS, REVISADA
   ==========================================================================

   Ela era `grid-auto-flow: column` com `grid-auto-columns: 1fr`: N células
   sempre numa linha só, dividindo a largura em partes iguais. Com seis células
   funcionava; com sete — quando entra o Aproveitamento — cada uma ficava com
   ~14% da caixa e "APROVEITAMENTO" não tinha onde caber: é uma palavra só, não
   quebra, e vazava por cima da célula vizinha.

   Agora as colunas têm largura MÍNIMA e quebram para uma segunda fileira
   quando não cabem. Os filetes deixam de ser bordas por célula (que só sabem
   separar na horizontal) e passam a ser o fundo aparecendo pelos vãos de 1px —
   assim a separação funciona nas duas direções, com qualquer número de células.
   ========================================================================== */

.ac-numeros {
  display: grid;
  grid-auto-flow: row;
  grid-template-columns: repeat(auto-fit, minmax(7.5rem, 1fr));
  grid-auto-columns: auto;
  gap: 0;
  border: 1px solid var(--ac-regua);
  border-radius: var(--ac-raio);
  overflow: hidden;
}
.ac-numeros > * + * { border-left: 0; }
.ac-numeros > :nth-child(odd)  { border-right: 0; }
.ac-numeros > :nth-child(n+3)  { border-top: 0; }

/* Os filetes são CONTORNO, não borda nem vão colorido.
   Com `gap: 1px` sobre um fundo cinza, a última fileira incompleta deixava o
   fundo aparecer como um bloco cinza vazio ao lado das células — pior que o
   problema original. `outline` não ocupa espaço e se sobrepõe ao do vizinho:
   dá um filete de 1px entre células nas duas direções, e onde não há célula
   não há nada. O `overflow: hidden` do container apara o contorno das bordas. */
.ac-numero {
  outline: 1px solid var(--ac-regua);
  padding: var(--ac-e-3) var(--ac-e-2);
}

/* Um degrau menor: no cartão de estatística o número não disputa com o título
   da página, e em corpo 2xl ele empurrava o rótulo para fora da célula. */
.ac-numero b { font-size: var(--ac-t-xl); }

/* O rótulo pode quebrar — inclusive no meio de uma palavra longa, que é o caso
   de "Aproveitamento". Sem isto ele simplesmente transbordava. */
.ac-numero span {
  flex-wrap: wrap;
  /* `break-word` e não `anywhere`: quebra só quando a palavra sozinha não cabe
     na linha, e nunca antes disso. Com `anywhere` o navegador é livre para
     partir "APROVEITAMENTO" mesmo havendo espaço, o que estava produzindo
     "APROVEITAMEN / TO" com a coluna quase vazia ao lado. */
  overflow-wrap: break-word;
  line-height: 1.25;
}

/* A barra encostava na fileira de números: ela é a leitura visual dos mesmos
   dados, não a continuação da tabela. */
.ac-numeros + .ac-barra { margin-top: var(--ac-e-4); }

/* O empate pintado é amarelo de verdade; o escrito continua mostarda escuro,
   que é o que sobrevive sobre branco. */
.ac-barra .ac-barra--e,
.ac-barra-legenda i.ac-barra--e { background: var(--ac-empate-cheio); }

/* Célula de tabela com ícone: o ícone alinha com a primeira linha do texto e
   não empurra o texto quando ele quebra em duas linhas. */
.ac-cel-icone {
  display: inline-flex;
  align-items: baseline;
  gap: var(--ac-e-2);
}
.ac-cel-icone > .ac-icone {
  flex: 0 0 auto;
  width: .95rem;
  height: .95rem;
  align-self: center;
  color: var(--ac-tinta-3);
}

/* ==========================================================================
   33. OS TOPS SEGUEM O CARD DO ELENCO
   ==========================================================================

   As duas listas de Top 10 tinham formato próprio: nome em vermelho, função em
   11px por style inline, e o valor num <span> irmão fora do link — três
   diferenças em relação ao card do elenco, na mesma página, a uma rolagem de
   distância.

   Agora é a mesma gramática: retrato, nome em tinta cheia, função em versalete,
   valor grande à direita com a unidade embaixo. E a linha inteira é o link, em
   vez de só o nome.
   ========================================================================== */

.ac-toplist > li { display: block; padding: 0; border-bottom: 1px solid var(--ac-regua); }
.ac-toplist > li:last-child { border-bottom: 0; }

.ac-site-content a.ac-top-item,
.ac-top-item {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--ac-e-3);
  padding: var(--ac-e-2) var(--ac-e-1);
  color: var(--ac-tinta);
  border-radius: var(--ac-raio);
  transition: background var(--ac-transicao);
}
.ac-top-item:hover { background: var(--ac-papel-fundo); }

.ac-top-texto { min-width: 0; display: grid; gap: 2px; }
/* A cor precisa do seletor descendente para VENCER.
   `.ac-site-content strong, .ac-site-content b { color: inherit }` tem
   especificidade 0,1,1 e derrotava `.ac-top-nome` (0,1,0) — o <b> herdava o
   vermelho de link do <a> em volta e o nome saía rubro, enquanto o card do
   elenco (onde o nome é um <div>, fora do alcance daquela regra) saía preto.
   Duas aparências para o mesmo nome, decididas pela tag escolhida. */
.ac-top-item .ac-top-nome {
  font-family: var(--ac-fonte-display);
  font-size: var(--ac-t-md);
  font-weight: 700;
  line-height: 1.2;
  color: var(--ac-tinta);
  overflow-wrap: anywhere;
}
.ac-top-sub {
  font-family: var(--ac-fonte-etiq);
  font-size: var(--ac-t-xs);
  letter-spacing: var(--ac-ls-etiq);
  text-transform: uppercase;
  color: var(--ac-tinta-2);
}

.ac-top-valor { text-align: right; line-height: 1.15; }
.ac-top-item .ac-top-valor b {
  display: block;
  font-family: var(--ac-fonte-display);
  font-variant-numeric: tabular-nums;
  font-size: var(--ac-t-lg);
  font-weight: 800;
  letter-spacing: -.02em;
  /* Mesmo caso do nome: sem cor explícita o <b> herda o vermelho do link. */
  color: var(--ac-tinta);
}
.ac-top-valor small {
  display: block;
  font-family: var(--ac-fonte-etiq);
  font-size: var(--ac-t-xs);
  letter-spacing: var(--ac-ls-etiq);
  text-transform: uppercase;
  color: var(--ac-tinta-2);
}

/* ==========================================================================
   34. O CABEÇALHO DA FICHA, COMO O DO CLUBE
   ==========================================================================

   A ficha de pessoa abria diferente da ficha de clube sem motivo: o retrato
   sozinho ao lado de um título, os dados só começando abaixo da régua, e o
   seletor de temporada perdido numa coluna vazia à direita deles.

   Agora as duas telas abrem igual — etiqueta do tipo atravessando o topo,
   retrato à esquerda com o seletor logo abaixo, e do lado direito o nome com a
   lista de dados. É a mesma informação nos dois casos: o que a coisa é, como
   ela se chama, e os fatos sobre ela.
   ========================================================================== */

.ac-pagina-cab--ficha {
  grid-template-columns: minmax(0, 1fr);
  align-items: start;
}
.ac-pagina-cab--ficha > .ac-eyebrow { grid-column: 1 / -1; }

@media (min-width: 40rem) {
  .ac-pagina-cab--ficha { grid-template-columns: 11rem minmax(0, 1fr); }
}

/* A coluna do retrato: foto e temporada centralizadas uma sobre a outra, do
   mesmo jeito que o escudo e a temporada na página do clube. */
.ac-ficha-retrato {
  display: grid;
  justify-items: center;
  gap: var(--ac-e-3);
}
.ac-ficha-retrato > :is(img, .ac-photo-fallback) { width: 100%; }

.ac-ficha-temporada {
  display: grid;
  justify-items: center;
  gap: var(--ac-e-1);
  width: 100%;
  margin: 0;
}
.ac-ficha-temporada { border-bottom: 0; padding-bottom: 0; }
.ac-ficha-temporada .ac-toolbar-rotulo { justify-content: center; }
.ac-ficha-temporada .ac-controle { width: 100%; max-width: 11rem; text-align: center; }

.ac-ficha-dados { min-width: 0; }
.ac-ficha-dados h1 { margin: 0; }
.ac-ficha-dados .ac-marcas { margin: var(--ac-e-3) 0 0; }
/* A lista de dados ganha MEDIDA. Sem limite, o rótulo fica na margem esquerda
   e o valor na direita com meia tela de vazio entre os dois — o olho não liga
   um ao outro a essa distância. É o mesmo ajuste já feito no hero da ficha e
   na página do clube. */
.ac-ficha-dados .ac-dl { margin-top: var(--ac-e-4); max-width: 34rem; }

/* Espaço embaixo: o seletor de temporada é o último elemento da coluna
   esquerda e encostava na régua grossa que fecha o cabeçalho. */
.ac-pagina-cab--ficha { padding-bottom: var(--ac-e-5); }

/* O hero perdeu a coluna de informação: sobrou o painel de estatísticas, que
   ocupa a largura inteira. */
.ac-hero > .ac-hero-stats { width: auto; }

/* ==========================================================================
   35. A LINHA DE JOGO DAS FICHAS
   ==========================================================================

   Selo de resultado à esquerda, data e confronto na linha principal, e a
   competição e o estádio embaixo como metadado — a mesma hierarquia da tabela
   de Todos os jogos, só que empilhada, porque aqui a coluna é estreita.

   O que estava errado: a data e o confronto vinham em serifa por herança, com
   `font-size: 16px` inline; a competição e o estádio saíam vermelhos, do mesmo
   peso do título, porque eram links dentro de um bloco sem cor própria — e
   nada dizia se o jogo tinha sido vitória ou derrota.
   ========================================================================== */

.ac-games-list { display: grid; gap: var(--ac-e-2); }

.ac-jogo-linha {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--ac-e-3);
  padding: var(--ac-e-3);
  border: 1px solid var(--ac-regua);
  border-radius: var(--ac-raio);
  background: var(--ac-papel-alto);
  transition: border-color var(--ac-transicao);
}
.ac-jogo-linha:hover { border-color: var(--ac-regua-forte); }

.ac-jogo-selo { display: inline-flex; }
.ac-jogo-texto { min-width: 0; display: grid; gap: 2px; }

.ac-jogo-titulo {
  font-family: var(--ac-fonte-display);
  font-size: var(--ac-t-md);
  font-weight: 600;
  line-height: 1.25;
  color: var(--ac-tinta);
}
.ac-site-content .ac-jogo-titulo a { color: var(--ac-tinta); }
.ac-site-content .ac-jogo-titulo a:hover { color: var(--ac-rubro); }

/* A data é dado de apoio dentro do título: mesma linha, peso menor. */
.ac-jogo-data {
  font-variant-numeric: tabular-nums;
  color: var(--ac-tinta-2);
  font-weight: 500;
  margin-right: var(--ac-e-2);
}

.ac-jogo-meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--ac-e-1) var(--ac-e-3);
  font-family: var(--ac-fonte-etiq);
  font-size: var(--ac-t-xs);
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--ac-tinta-2);
}
.ac-jogo-meta-item { display: inline-flex; align-items: center; gap: var(--ac-e-1); }
/* 0,3,1 para vencer `.ac-site-content a:not(:is(...))`, que é 0,2,1.
   O nome da competição aqui é metadado, não chamada para clicar: em vermelho
   ele competia com o confronto na linha de cima, que é o que interessa. */
.ac-site-content .ac-jogo-meta a.ac-jogo-meta-item { color: var(--ac-tinta-2); }
.ac-site-content .ac-jogo-meta a.ac-jogo-meta-item:hover { color: var(--ac-rubro); }

.ac-jogo-evts { display: inline-flex; align-items: center; gap: var(--ac-e-2); }
.ac-jogo-evt {
  display: inline-flex;
  align-items: center;
  gap: var(--ac-e-1);
  padding: var(--ac-e-1) var(--ac-e-2);
  border: 1px solid var(--ac-regua);
  border-radius: 999px;
  font-family: var(--ac-fonte-display);
  font-size: var(--ac-t-xs);
  font-variant-numeric: tabular-nums;
  color: var(--ac-tinta-2);
}
.ac-jogo-evt .ac-icone { width: .9rem; height: .9rem; }
.ac-jogo-evt .ac-cartao { width: .6rem; height: .85rem; border-radius: 2px; }
.ac-jogo-evt b { font-weight: 700; color: var(--ac-tinta); }

@media (max-width: 34rem) {
  .ac-jogo-linha { grid-template-columns: auto minmax(0, 1fr); }
  .ac-jogo-evts { grid-column: 2; justify-content: flex-start; }
}

/* ==========================================================================
   36. TODO CONTROLE DE FORMULÁRIO USA A FONTE DO SISTEMA
   ==========================================================================

   Campos, seletores e botões herdam a fonte do <body> quando ninguém diz o
   contrário — e o <body> deste site é a serifa de texto. Resultado: na tela de
   Todos os jogos, "Todas", "Mais recente", "Filtrar" e todos os rótulos saíam
   em serifa, ao lado de uma tabela em Archivo. Não era escolha: era ausência
   de escolha, repetida em cada folha que esqueceu de declarar a família.

   Um controle não é prosa. A serifa fica reservada a texto corrido.
   ========================================================================== */

.ac-site-content :is(input, select, textarea, button, optgroup, option) {
  font-family: var(--ac-fonte-display);
}

/* Rótulo de campo é etiqueta: versalete estreito, como em toda a interface. */
.ac-site-content :is(label, .ac-toolbar-rotulo),
.ac-toj-filtro > label {
  font-family: var(--ac-fonte-etiq);
}

.ac-toj-filtro > label {
  display: inline-flex;
  align-items: center;
  gap: var(--ac-e-1);
  font-size: var(--ac-t-xs);
  font-weight: 700;
  letter-spacing: var(--ac-ls-etiq);
  text-transform: uppercase;
  color: var(--ac-tinta-2);
  opacity: 1;
}

/* Os campos desta tela passam a usar o controle do sistema em vez do desenho
   próprio (raio de 8px, borda clara, padding diferente). */
.ac-toj-filtro :is(select, input[type="text"], input[type="date"]) {
  font-size: var(--ac-t-md);
  color: var(--ac-tinta);
  background: var(--ac-papel-alto);
  border: 1px solid var(--ac-regua-forte);
  border-radius: var(--ac-raio-sm);
  padding: var(--ac-e-1) var(--ac-e-3);
  line-height: 1.6;
}

.ac-toj-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--ac-e-2);
  font-family: var(--ac-fonte-display);
  font-size: var(--ac-t-sm);
  font-weight: 700;
  letter-spacing: .02em;
  padding: var(--ac-e-2) var(--ac-e-4);
  border-radius: var(--ac-raio-sm);
  color: var(--ac-sobre-rubro);
}
.ac-toj-btn:hover { background: var(--ac-rubro-vivo); }
.ac-toj-btn .ac-icone { width: .95rem; height: .95rem; }

/* "Limpar" é ação secundária: sem sublinhado, como todo link do site. */
.ac-toj-limpar {
  font-family: var(--ac-fonte-etiq);
  font-size: var(--ac-t-xs);
  font-weight: 700;
  letter-spacing: var(--ac-ls-etiq);
  text-transform: uppercase;
}

/* .ac-link é o "Ver lista completa" dos tops — mesma família de etiqueta. */
.ac-link { font-family: var(--ac-fonte-etiq); font-weight: 700; }

/* O texto de dica e o miolo do campo de data são desenhados pelo navegador em
   sombra própria: `font-family` no <input> não os alcança. Sem estas duas
   linhas, "nome do clube" e "dd/mm/aaaa" continuavam em serifa ao lado de
   campos já corrigidos — a única serifa que sobrava na tela. */
.ac-site-content ::placeholder { font-family: var(--ac-fonte-display); opacity: 1; color: var(--ac-tinta-3); }
.ac-site-content ::-webkit-datetime-edit { font-family: var(--ac-fonte-display); }

/* ==========================================================================
   37. O CABEÇALHO SOLTO DAS LISTAGENS
   ==========================================================================

   O título fica FORA do card, e sem a etiqueta "Arquivo" que se repetia igual
   nas sete telas. O que sobra dentro da caixa é só conteúdo: filtro e cards.
   ========================================================================== */

.ac-pagina-cab--solta {
  padding-block: 0 var(--ac-e-4);
  margin-bottom: var(--ac-e-4);
  border-bottom: 0;
}

/* A barra alfabética perdeu o rótulo; sem ele a fileira começa direto no
   primeiro botão e cabe mais letra por linha. */
.ac-az-rotulo, .ac-ordem-rotulo { display: none; }

/* O BOTÃO DE LETRA MEDE POR FORA.
 *
 * Em jogadores e estádios o botão é um <button>, que o reset do navegador já
 * entrega em `border-box`: `min-width: 2rem` mais `height: 2rem` davam um
 * quadrado exato de 32×32. Em competições, técnicos, adversários e goleiros ele
 * é um <a>, que fica em `content-box` — ali o `min-width` passou a valer para o
 * CONTEÚDO, e os 8px de padding de cada lado mais as duas bordas o esticaram
 * para 50×34. Quatro páginas com o filtro em retângulo e quatro em quadrado,
 * decididas pela tag, não pelo projeto.
 *
 * Declarar `border-box` na BASE do site consertaria isto e mais nada — mas
 * medi: mexeria na geometria de 907 dos 1032 elementos das telas de teste,
 * porque o resto do sistema foi escrito assumindo o padrão do navegador.
 * A correção fica no componente. */
.ac-az-btn,
.ac-ordem-btn,
.ac-local-pill {
  box-sizing: border-box;
}

/* ==========================================================================
   38. "POR LOCAL" USA OS MESMOS COMPONENTES
   ==========================================================================

   Era a única listagem com card próprio (retângulo de 48px, nome em vermelho,
   bandeira solta num canto) e com pílulas de filtro próprias. Passou a usar
   ac_card_lista() e a barra .ac-az-filter; o que resta aqui é só o que ela tem
   de específico — a bandeira de país como botão, que nenhuma outra tela usa.
   ========================================================================== */

.ac-local-filtros { row-gap: var(--ac-e-2); }

/* O botão de país mostra uma bandeira: precisa de corpo maior que uma letra e
   de não ser cortado pelo `min-width` de 2rem dos botões de letra. */
.ac-local-pill { font-size: var(--ac-t-md); line-height: 1; }
.ac-local-pill.is-uf { font-size: var(--ac-t-sm); font-weight: 700; }

/* O separador entre países e estados vira um filete vertical de verdade, em
   vez de um espaço em branco que ninguém enxergava. */
.ac-local-sep {
  width: 1px;
  align-self: stretch;
  background: var(--ac-regua);
  margin-inline: var(--ac-e-2);
}

/* ==========================================================================
   39. UMA BARRA DE FILTROS SÓ
   ==========================================================================

   Havia três desenhos para a mesma coisa: .ac-hist-filtros nos rankings,
   .ac-toj-filtros em Todos os jogos, e .ac-filters no ranking de técnicos —
   este último sem classe nos campos, sem `for` nos rótulos e sem botão de
   enviar. Cada um com o seu gap, o seu alinhamento e a sua largura mínima.

   O que muda aqui é o COMPORTAMENTO da fileira: campos com a mesma largura
   mínima, quebrando em linhas regulares em vez de deixar buracos, e o botão
   sempre alinhado pela base dos campos — não pelo topo do rótulo.
   ========================================================================== */

.ac-hist-filtros,
.ac-toj-filtros {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: var(--ac-e-3);
}

.ac-hist-filtros .ac-field,
.ac-toj-filtro {
  display: flex;
  flex-direction: column;
  gap: var(--ac-e-1);
  min-width: 0;
  /* `1 1 11rem`: todos os campos partem da mesma largura e crescem juntos.
     Antes o de "Mando" nascia do tamanho do texto "Todos" e o de "Competição"
     do tamanho do maior nome de campeonato — a fileira saía com campos de
     larguras arbitrárias e um vão no fim de cada linha. */
  flex: 1 1 11rem;
  max-width: 18rem;
}

/* O bloco de ações não é um campo: não estica nem tem largura mínima. */
.ac-toj-acoes {
  flex: 0 0 auto;
  max-width: none;
  flex-direction: row;
  align-items: center;
  gap: var(--ac-e-3);
}

.ac-hist-filtros .ac-hist-btn,
.ac-toj-filtros .ac-toj-btn { align-self: flex-end; }

/* ==========================================================================
   40. O RODAPÉ FICA NA BASE
   ==========================================================================

   Numa página curta — um ranking com seis linhas, um filtro sem resultado — o
   rodapé subia e ficava boiando no meio da tela, com o fundo vazio embaixo
   dele. A página passa a ocupar a altura da janela no mínimo, e o conteúdo
   principal a absorver a sobra.

   `min-height: 100dvh` e não `100vh`: no celular, `vh` conta a barra de
   endereço como se ela nunca existisse, e o rodapé ficava um naco abaixo da
   dobra em toda página curta.
   ========================================================================== */

html { min-height: 100%; }

body {
  min-height: 100dvh;
  display: flex;
  flex-direction: column;
}

/* O conteúdo cresce; cabeçalho e rodapé ficam no tamanho que pedirem. */
.ac-site-content { flex: 1 0 auto; }
.ac-site-footer,
footer.ac-site-footer { flex: 0 0 auto; margin-top: auto; }

/* ==========================================================================
   41. O CADASTRO PELO SITE
   ==========================================================================

   Reaproveita quase tudo: .ac-card, .ac-hist-filtros, .ac-field, .ac-controle,
   .ac-hist-btn, .ac-az-filter. O que é próprio daqui é o painel de sugestões e
   o aviso de grafia parecida — os dois com desenho DIFERENTE entre si, porque
   um é resposta e o outro é alerta.
   ========================================================================== */

.ac-cad { display: grid; gap: var(--ac-e-5); }
.ac-cad .ac-card { display: grid; gap: var(--ac-e-3); }

.ac-cad-sub {
  margin: 0;
  font-family: var(--ac-fonte-texto);
  font-size: var(--ac-t-md);
  color: var(--ac-tinta-2);
  max-width: 46rem;
}

.ac-cad-aviso {
  display: flex;
  align-items: center;
  gap: var(--ac-e-2);
  margin: 0;
  padding: var(--ac-e-3) var(--ac-e-4);
  border: 1px solid var(--ac-regua);
  border-left-width: 3px;
  border-radius: var(--ac-raio);
  font-family: var(--ac-fonte-display);
  font-size: var(--ac-t-md);
}
.ac-cad-aviso--ok   { border-left-color: var(--ac-vitoria); background: var(--ac-vitoria-bg); }
.ac-cad-aviso--erro { border-left-color: var(--ac-derrota); background: var(--ac-derrota-bg); }

/* --- o campo com sugestões --- */
.ac-cad-campo { position: relative; }

.ac-cad-sugestoes {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  z-index: 20;
  margin-top: var(--ac-e-1);
  padding: var(--ac-e-1);
  background: var(--ac-papel-alto);
  border: 1px solid var(--ac-regua-forte);
  border-radius: var(--ac-raio);
  box-shadow: var(--ac-sombra);
  max-height: 18rem;
  overflow-y: auto;
}

.ac-cad-sug {
  display: block;
  width: 100%;
  text-align: left;
  padding: var(--ac-e-2);
  border: 0;
  border-radius: var(--ac-raio-sm);
  background: transparent;
  font-family: var(--ac-fonte-display);
  font-size: var(--ac-t-md);
  color: var(--ac-tinta);
  cursor: pointer;
}
.ac-cad-sug:hover, .ac-cad-sug:focus-visible { background: var(--ac-papel-fundo); }

/* O parecido NÃO se parece com a sugestão: tem faixa de aviso e traz o motivo.
   Se os dois tivessem o mesmo desenho, escolher um erro de digitação ficaria
   tão fácil quanto escolher o registro certo. */
.ac-cad-sug--parecido {
  display: grid;
  gap: 2px;
  border-left: 3px solid var(--ac-empate-cheio);
  border-radius: 0 var(--ac-raio-sm) var(--ac-raio-sm) 0;
  padding-left: var(--ac-e-2);
}
.ac-cad-sug-nome { font-weight: 700; }
.ac-cad-sug-motivo {
  font-family: var(--ac-fonte-etiq);
  font-size: var(--ac-t-xs);
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--ac-tinta-2);
}
.ac-cad-sug-titulo {
  margin: var(--ac-e-2) 0 var(--ac-e-1);
  padding: 0 var(--ac-e-2);
  font-family: var(--ac-fonte-etiq);
  font-size: var(--ac-t-xs);
  letter-spacing: var(--ac-ls-etiq);
  text-transform: uppercase;
  color: var(--ac-tinta-2);
}
.ac-cad-sug-vazio {
  margin: 0;
  padding: var(--ac-e-2);
  font-size: var(--ac-t-sm);
  color: var(--ac-tinta-3);
}

/* --- o placar --- */
.ac-cad-placar-campos { display: flex; align-items: center; gap: var(--ac-e-2); }
.ac-cad-placar-campos input { width: 4.5rem; text-align: center; }
.ac-cad-dica {
  font-family: var(--ac-fonte-texto);
  font-size: var(--ac-t-sm);
  color: var(--ac-tinta-2);
}

/* --- o conflito --- */
.ac-cad-conflito { border-left: 3px solid var(--ac-empate-cheio); }
.ac-cad-conflito-item { padding: var(--ac-e-3) 0; border-top: 1px solid var(--ac-regua); }
.ac-cad-digitado { display: flex; align-items: baseline; gap: var(--ac-e-2); margin: 0 0 var(--ac-e-2); }
.ac-cad-rotulo {
  font-family: var(--ac-fonte-etiq);
  font-size: var(--ac-t-xs);
  letter-spacing: var(--ac-ls-etiq);
  text-transform: uppercase;
  color: var(--ac-tinta-2);
}
.ac-cad-digitado b { font-family: var(--ac-fonte-display); font-size: var(--ac-t-lg); }

.ac-cad-opcoes { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--ac-e-2); }
.ac-cad-opcoes li {
  display: grid;
  gap: 2px;
  padding: var(--ac-e-2);
  background: var(--ac-papel-fundo);
  border-radius: var(--ac-raio-sm);
}
.ac-cad-op-nome { font-family: var(--ac-fonte-display); font-weight: 700; }
.ac-cad-op-motivo { font-size: var(--ac-t-sm); color: var(--ac-tinta-2); }

.ac-cad-nota {
  margin: 0;
  font-family: var(--ac-fonte-texto);
  font-size: var(--ac-t-sm);
  color: var(--ac-tinta-2);
  max-width: 46rem;
}

/* --- a auditoria --- */
.ac-cad-pares { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--ac-e-2); }
.ac-cad-par {
  display: grid;
  gap: 2px;
  padding: var(--ac-e-3);
  border: 1px solid var(--ac-regua);
  border-left-width: 3px;
  border-radius: var(--ac-raio);
}
/* Erro de grafia e diferença de sufixo pedem respostas opostas — um quase
   sempre é para unir, o outro quase sempre é para deixar como está. A cor da
   faixa diz qual é qual antes de a pessoa ler o motivo. */
.ac-cad-par--grafia { border-left-color: var(--ac-derrota); }
.ac-cad-par--sufixo { border-left-color: var(--ac-empate-cheio); }
.ac-cad-par--igual  { border-left-color: var(--ac-derrota); }

.ac-cad-par-nomes { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--ac-e-2); font-family: var(--ac-fonte-display); font-weight: 600; }
.ac-cad-par-motivo { font-size: var(--ac-t-sm); color: var(--ac-tinta-2); }

/* ==========================================================================
   42. A FICHA EM TRÊS COLUNAS
   ==========================================================================

   Retrato, dados e estatísticas na mesma linha — como a página do clube, que é
   escudo, identidade e uniformes. As estatísticas ficavam abaixo da régua, num
   bloco separado, e eram justamente o que mais se consulta numa ficha.

   Abaixo de 64rem cai para duas colunas (retrato | dados) com as estatísticas
   ocupando a linha inteira, e abaixo de 40rem tudo empilha.
   ========================================================================== */

@media (min-width: 64rem) {
  .ac-pagina-cab--ficha {
    grid-template-columns: 11rem minmax(0, 26rem) minmax(0, 1fr);
  }
  /* A lista de dados perde o teto de 34rem aqui: quem limita agora é a coluna,
     e um max-width por dentro dela deixaria um vão sem função à direita. */
  .ac-ficha-dados .ac-dl { max-width: none; }
}

@media (min-width: 40rem) and (max-width: 63.99rem) {
  .ac-pagina-cab--ficha .ac-hero-stats { grid-column: 1 / -1; }
}

/* Dentro da coluna estreita, os dois cartões de estatística empilham em vez de
   se espremerem lado a lado. */
@media (min-width: 64rem) {
  .ac-pagina-cab--ficha .ac-stats-grid { grid-template-columns: minmax(0, 1fr); }
}

/* Empilhados, os dois blocos precisam de mais ar entre si do que precisavam
   como cartões: era a moldura que dizia onde um acabava e o outro começava.
   Sem ela, 1rem deixa "Estatísticas de 2026" parecendo mais uma linha da lista
   de cima. */
.ac-pagina-cab--ficha .ac-stats-grid { gap: var(--ac-e-6); }

/* ==========================================================================
   43. O FILETE ENTRE OS DADOS E AS ESTATÍSTICAS
   ==========================================================================

   Aqui morava a regra que devolvia as quatro bordas ao cartão de estatística.
   O cartão saiu — as estatísticas passaram a ser lista solta, igual à dos
   dados — e uma regra que guarda a moldura de algo que não tem mais moldura é
   regra órfã: fica esperando para voltar a valer sozinha no dia em que alguém
   reintroduzir a classe.

   O que separa as duas colunas agora é um filete vertical. Ele só existe
   enquanto as colunas ESTÃO lado a lado: abaixo de 64rem as estatísticas
   descem para a largura inteira, e aí o que separa é um filete horizontal —
   um traço vertical entre blocos empilhados não separaria nada.
   ========================================================================== */

@media (min-width: 64rem) {
  .ac-pagina-cab--ficha .ac-hero-stats {
    border-left: 1px solid var(--ac-regua);
    padding-left: var(--ac-e-5);
    /* O cabeçalho alinha as colunas pelo topo, então cada uma para na altura
       do próprio conteúdo. Sem esticar, o filete terminava onde as estatísticas
       acabam e deixava o resto da coluna de dados sem separação — um traço que
       para no meio do caminho lê como defeito, não como divisão. */
    align-self: stretch;

    /* E, esticada a coluna, o conteúdo desce para a BASE.
       As duas listas têm exatamente a mesma altura de linha — 41px, desde que
       passaram a sair do mesmo construtor. Encostando as duas pelo rodapé, as
       linhas deixam de ser dois blocos que por acaso convivem e passam a ser
       uma pauta só: ALTURA e TROFÉU KUKI na mesma linha, NASCIMENTO e AMARELOS
       na de cima, e assim por diante, atravessando o filete.

       Pelo topo isso não acontece: a coluna de dados começa depois do nome e
       das marcas, e as estatísticas começam depois do próprio título — dois
       pontos de partida diferentes, que jogam as linhas fora de compasso. */
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
  }
}

@media (max-width: 63.99rem) {
  .ac-pagina-cab--ficha .ac-hero-stats {
    border-top: 1px solid var(--ac-regua);
    padding-top: var(--ac-e-4);
    margin-top: var(--ac-e-2);
  }
}

/* ==========================================================================
   44. A ESTRELA DO ÍDOLO
   ==========================================================================

   O acervo marca ídolos, e a listagem de jogadores até filtra por isso — mas o
   card não dizia nada. Com o filtro "Ídolos" ligado todos eram ídolos e a
   marca não fazia falta; em qualquer outra letra, ela sumia. Um ídolo é ídolo
   em toda listagem onde aparece.
   ========================================================================== */

.ac-card-lista-idolo {
  width: .95rem;
  height: .95rem;
  margin-left: var(--ac-e-1);
  vertical-align: -.12em;
  color: var(--ac-marcante);
  fill: var(--ac-marcante);
  flex: 0 0 auto;
}

/* A moldura do card do ídolo puxa para o dourado no hover — o suficiente para
   se notar, sem virar outro componente. */
.ac-card-lista--idolo:hover { border-color: var(--ac-marcante); }

/* O selo de resultado dentro da lista de fatos alinha com os cartões: mesma
   caixa, mesmo recuo negativo, para a coluna do ícone continuar reservada. */

/* ==========================================================================
   45. A TABELA DE JOGOS
   ==========================================================================

   Uma marcação para as seis telas que listam partidas. O que era específico de
   cada uma — largura de coluna em pixel, moldura por `style=` inline, ordem
   diferente das colunas — deixou de existir.
   ========================================================================== */

.ac-table--jogos .ac-col-selo { width: 2.75rem; }
.ac-table--jogos .ac-col-data { white-space: nowrap; font-variant-numeric: tabular-nums; }
.ac-table--jogos .ac-col-evts { width: 1%; white-space: nowrap; text-align: right; }

/* O confronto é o que se procura na linha: fica em tinta cheia, e os
   metadados em volta ficam em cinza. Antes o nome do estádio e o da competição
   tinham o mesmo peso visual do placar. */
.ac-site-content .ac-table--jogos .ac-col-jogo a { color: var(--ac-tinta); font-weight: 600; }
.ac-site-content .ac-table--jogos .ac-col-jogo a:hover { color: var(--ac-rubro); }
.ac-site-content .ac-table--jogos .ac-col-competicao a,
.ac-site-content .ac-table--jogos .ac-col-estadio a { color: var(--ac-tinta-2); }
.ac-site-content .ac-table--jogos .ac-col-competicao a:hover,
.ac-site-content .ac-table--jogos .ac-col-estadio a:hover { color: var(--ac-rubro); }

/* A caixa de rolagem era desenhada com `style=` inline em duas telas, cada uma
   com o seu raio e a sua altura. */
.ac-rolagem-alta {
  max-height: 26rem;
  overflow: auto;
  border: 1px solid var(--ac-regua);
  border-radius: var(--ac-raio);
}
.ac-rolagem-alta > .ac-table { border: 0; }

/* No celular a tabela vira fichas empilhadas, como as outras do sistema. */
@media (max-width: 44rem) {
  .ac-table--jogos .ac-col-evts { text-align: left; width: auto; }
  .ac-rolagem-alta { max-height: none; border: 0; }
}
