/* ═══════════════════════════════════════════════════════════════════════════════
   Blocos de diagramação da notícia — Cosmonauta Geek, 14/09/2026.

   Até aqui o corpo da notícia (`noticias.texto`) já era HTML cru, impresso sem
   escape em noticias/noticia.php — só que a página estilizava exatamente TRÊS
   coisas dentro dele: <p>, <img> e <a>. Escrever um <h2> ou uma citação dava um
   texto com a cara padrão do navegador: preto sobre fundo escuro, sem respiro.
   Ou seja: dava para escrever bonito, mas não para APARECER bonito.

   Esta folha é o vocabulário. Cada bloco tem um nome, e é o mesmo nome no editor
   do gerenciador, no prompt da IA e no pacote que chega pronto para publicar.

   A MESMA folha é usada pela prévia do gerenciador. É de propósito: prévia com
   estilo próprio é prévia que mente, e o dia em que as duas divergirem ninguém
   vai perceber — a prévia continua bonita.

   Paleta e medidas vêm da própria página de notícia (noticias/noticia.php):
     fundo var(--cg-card) · texto var(--cg-txt-2) · título var(--cg-txt-2) · apagado var(--cg-muted)
     linha var(--cg-linha-2) · cartão var(--cg-card) · link var(--cg-link) · acento var(--cg-azul) → var(--cg-ciano)
     coluna de leitura: 900px
   ═══════════════════════════════════════════════════════════════════════════════ */

.article-body {
  /* variáveis locais: quem quiser um tema por notícia troca só isto */
  --n-fundo:    var(--cg-card);
  --n-cartao:   var(--cg-card);
  --n-linha:    var(--cg-linha-2);
  --n-texto:    var(--cg-txt-2);
  --n-forte:    var(--cg-txt-2);
  --n-apagado:  var(--cg-muted);
  --n-link:     var(--cg-link);
  --n-a1:       var(--cg-azul);
  --n-a2:       var(--cg-ciano);
}

/* ── Abertura ───────────────────────────────────────────────────────────────
   O primeiro parágrafo de uma notícia carrega o peso todo. Maior e mais claro,
   com um fio de acento à esquerda. */
.article-body .n-lead {
  font-size: 1.16em;
  line-height: 1.7;
  color: var(--n-forte);
  border-left: 3px solid var(--n-a2);
  padding-left: 18px;
  margin: 0 0 1.6em;
}

/* ── Seções ─────────────────────────────────────────────────────────────────
   h2 é a divisão de assunto; h3 é o subitem dentro dela. */
.article-body h2 {
  font-size: 1.45em;
  font-weight: 800;
  line-height: 1.25;
  color: var(--n-forte);
  margin: 2em 0 0.7em;
  padding-bottom: 0.4em;
  border-bottom: 1px solid var(--n-linha);
}
.article-body h2::before {
  /* o fio de acento no começo do título, curto, sem virar enfeite */
  content: '';
  display: inline-block;
  width: 14px; height: 3px;
  border-radius: 2px;
  background: linear-gradient(90deg, var(--n-a1), var(--n-a2));
  vertical-align: middle;
  margin-right: 10px;
  transform: translateY(-2px);
}
.article-body h3 {
  font-size: 1.12em;
  font-weight: 700;
  color: var(--n-forte);
  margin: 1.7em 0 0.5em;
}

/* ── Listas ─────────────────────────────────────────────────────────────── */
.article-body ul, .article-body ol { margin: 0 0 1.3em 1.3em; }
.article-body li { margin-bottom: 0.5em; }
.article-body ul { list-style: none; margin-left: 0; }
.article-body ul > li { position: relative; padding-left: 20px; }
.article-body ul > li::before {
  content: '';
  position: absolute; left: 2px; top: 0.72em;
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--n-a2);
}

/* ── Figura ─────────────────────────────────────────────────────────────────
   Imagem com legenda e crédito. O crédito importa: imagem de terceiro sem
   crédito é problema, e o lugar do crédito é COLADO na imagem, não no rodapé. */
.article-body figure { margin: 1.8em 0; }
.article-body figure img { display: block; width: 100%; border-radius: 8px; margin: 0; }
.article-body figcaption {
  font-size: 0.8em;
  line-height: 1.55;
  color: var(--n-apagado);
  padding: 9px 2px 0;
  border-top: 1px solid var(--n-linha);
  margin-top: 9px;
}
.article-body figcaption .n-credito { display: block; font-size: 0.92em; opacity: 0.75; margin-top: 3px; }

/* Figura estreita, encostada num lado, com o texto correndo ao lado.
   No celular ela volta a ocupar a largura toda — texto de 15 caracteres por
   linha ao lado de uma imagem não é diagramação, é castigo. */
.article-body .n-figura--lado { max-width: 300px; }
@media (min-width: 720px) {
  .article-body .n-figura--lado { float: right; margin: 0.4em 0 1.2em 24px; }
  .article-body .n-figura--lado.n-figura--esq { float: left; margin: 0.4em 24px 1.2em 0; }
}

/* ── Galeria ────────────────────────────────────────────────────────────────
   2, 3 ou 4 imagens lado a lado, com legenda comum embaixo. */
.article-body .n-galeria { margin: 1.8em 0; }
.article-body .n-galeria-imgs { display: grid; gap: 10px; grid-template-columns: repeat(2, 1fr); }
.article-body .n-galeria--3 .n-galeria-imgs { grid-template-columns: repeat(3, 1fr); }
.article-body .n-galeria--4 .n-galeria-imgs { grid-template-columns: repeat(4, 1fr); }
.article-body .n-galeria img { width: 100%; height: 100%; object-fit: cover; border-radius: 6px; margin: 0; aspect-ratio: 3/4; }
.article-body .n-galeria--larga img { aspect-ratio: 16/9; }
.article-body .n-galeria figcaption { margin-top: 10px; }
@media (max-width: 560px) {
  .article-body .n-galeria--3 .n-galeria-imgs,
  .article-body .n-galeria--4 .n-galeria-imgs { grid-template-columns: repeat(2, 1fr); }
}

/* ── Figura em pé ───────────────────────────────────────────────────────────
   Arte-chave, pôster, capa de volume: imagem mais alta do que larga. A regra
   geral da figura é `width:100%`, e numa coluna de 820px uma imagem 2:3 vira
   1.200px de altura — uma tela inteira de rolagem gasta numa imagem só. Aqui ela
   fica no meio da coluna, num tamanho que ainda se olha inteiro sem rolar.
   (Diferente de .n-figura--lado, que é a miniatura flutuando ao lado do texto.) */
.article-body .n-figura--retrato { max-width: 520px; margin-left: auto; margin-right: auto; }

/* ── Vídeo ──────────────────────────────────────────────────────────────────
   Player do YouTube, para trailer e teaser oficial. O <iframe> é a única tag
   fora da lista branca que o publicador deixa passar, e só quando o endereço é
   um vídeo do YouTube — ver np_youtube_embed() em _noticia_pacote.php.

   O embrulho é que manda na proporção: iframe sem altura declarada vira uma
   faixa de 150px (é o padrão do navegador), e altura fixa em px desalinha em
   toda largura que não seja a do dia em que foi escrita. */
.article-body .n-video { margin: 1.8em 0; }
.article-body .n-video-quadro {
  position: relative;
  aspect-ratio: 16/9;
  background: #000;
  border: 1px solid var(--n-linha);
  border-radius: 8px;
  overflow: hidden;
}
.article-body .n-video-quadro iframe {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  border: 0; display: block;
}
.article-body .n-video figcaption { margin-top: 10px; }

/* ── Citação ────────────────────────────────────────────────────────────────
   Declaração de alguém. Aspas grandes como marca d'água, não como enfeite. */
.article-body .n-citacao {
  position: relative;
  margin: 2em 0;
  padding: 4px 0 4px 26px;
  border-left: 3px solid var(--n-a1);
  font-size: 1.12em;
  line-height: 1.65;
  color: var(--n-forte);
}
.article-body .n-citacao p { margin-bottom: 0.5em; }
.article-body .n-citacao cite {
  display: block;
  font-style: normal;
  font-size: 0.78em;
  color: var(--n-apagado);
  margin-top: 8px;
}
.article-body .n-citacao cite::before { content: '— '; }

/* ── Caixa de destaque ──────────────────────────────────────────────────────
   Três variantes, e a cor CARREGA SIGNIFICADO: azul informa, âmbar avisa,
   roxo é curiosidade. Se a cor fosse decoração, não precisaria de variante. */
.article-body .n-caixa {
  background: var(--n-cartao);
  border: 1px solid var(--n-linha);
  border-left: 3px solid var(--n-a2);
  border-radius: 8px;
  padding: 16px 18px;
  margin: 1.8em 0;
  font-size: 0.95em;
}
.article-body .n-caixa > :last-child { margin-bottom: 0; }
.article-body .n-caixa-titulo {
  display: block;
  font-size: 0.78em;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1.1px;
  color: var(--n-a2);
  margin-bottom: 9px;
}
.article-body .n-caixa--aviso        { border-left-color: var(--cg-ouro); }
.article-body .n-caixa--aviso .n-caixa-titulo { color: var(--cg-ouro); }
.article-body .n-caixa--curiosidade  { border-left-color: #a371f7; }
.article-body .n-caixa--curiosidade .n-caixa-titulo { color: #a371f7; }

/* ── Ficha técnica ──────────────────────────────────────────────────────────
   Pares rótulo/valor. Em duas colunas no desktop, empilhado no celular. */
.article-body .n-ficha {
  background: var(--n-cartao);
  border: 1px solid var(--n-linha);
  border-radius: 8px;
  padding: 6px 18px;
  margin: 1.8em 0;
}
.article-body .n-ficha-titulo {
  display: block;
  font-size: 0.78em; font-weight: 700; text-transform: uppercase; letter-spacing: 1.1px;
  color: var(--n-apagado);
  padding: 12px 0 10px;
  border-bottom: 1px solid var(--n-linha);
}
.article-body .n-ficha dl { display: grid; grid-template-columns: max-content 1fr; gap: 0; margin: 0; }
.article-body .n-ficha dt {
  font-size: 0.82em; color: var(--n-apagado);
  padding: 11px 22px 11px 0;
  border-bottom: 1px solid var(--n-linha);
  white-space: nowrap;
}
.article-body .n-ficha dd {
  font-size: 0.92em; color: var(--n-texto);
  padding: 11px 0;
  border-bottom: 1px solid var(--n-linha);
  margin: 0;
}
.article-body .n-ficha dt:last-of-type, .article-body .n-ficha dd:last-of-type { border-bottom: none; }
@media (max-width: 560px) {
  .article-body .n-ficha dl { grid-template-columns: 1fr; }
  .article-body .n-ficha dt { padding-bottom: 2px; border-bottom: none; }
  .article-body .n-ficha dd { padding-top: 0; }
}

/* ── Cartão da obra ─────────────────────────────────────────────────────────
   Liga a notícia ao acervo: capa + nome + formato + link para a ficha. É o
   bloco que transforma uma notícia em porta de entrada para o catálogo. */
.article-body .n-obra {
  display: flex; gap: 14px; align-items: center;
  background: var(--n-cartao);
  border: 1px solid var(--n-linha);
  border-radius: 8px;
  padding: 12px;
  margin: 1.8em 0;
  text-decoration: none;
  transition: border-color .18s, transform .18s;
}
.article-body a.n-obra:hover { border-color: var(--n-a2); transform: translateY(-2px); text-decoration: none; }
.article-body .n-obra img {
  width: 64px; height: 90px; object-fit: cover; border-radius: 5px; margin: 0; flex: 0 0 auto;
}
.article-body .n-obra-txt { min-width: 0; }
.article-body .n-obra-rot {
  display: block; font-size: 0.7em; font-weight: 700; text-transform: uppercase;
  letter-spacing: 1.1px; color: var(--n-a2); margin-bottom: 4px;
}
.article-body .n-obra-nome { display: block; font-size: 1em; font-weight: 700; color: var(--n-forte); line-height: 1.3; }
.article-body .n-obra-sub  { display: block; font-size: 0.8em; color: var(--n-apagado); margin-top: 4px; }

/* ── Números ────────────────────────────────────────────────────────────────
   Dois a quatro números grandes com um rótulo embaixo. Número sem rótulo não
   informa nada, então o rótulo não é opcional. */
.article-body .n-numeros {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
  gap: 12px; margin: 1.8em 0;
}
.article-body .n-numero {
  background: var(--n-cartao); border: 1px solid var(--n-linha); border-radius: 8px;
  padding: 16px 12px; text-align: center;
}
.article-body .n-numero b {
  display: block; font-size: 1.75em; font-weight: 800; line-height: 1.1;
  background: linear-gradient(135deg, var(--n-a2), var(--n-a1));
  -webkit-background-clip: text; background-clip: text; color: transparent;
}
.article-body .n-numero span {
  display: block; font-size: 0.72em; text-transform: uppercase; letter-spacing: 0.8px;
  color: var(--n-apagado); margin-top: 6px;
}

/* ── Cronologia ─────────────────────────────────────────────────────────── */
.article-body .n-cronologia { margin: 1.8em 0; padding-left: 4px; }
.article-body .n-cronologia li {
  /* A linha é var(--cg-linha-3) e não a --n-linha: encostada no fundo var(--cg-card), a linha das
     bordas comuns some, e uma cronologia sem o fio que liga os marcos é só uma
     lista com datas em azul. */
  position: relative; padding: 0 0 18px 26px; border-left: 2px solid var(--cg-linha-3);
  margin: 0; list-style: none;
}
.article-body .n-cronologia li:last-child { border-left-color: transparent; padding-bottom: 0; }
.article-body .n-cronologia li::before {
  /* left:-4px (e não -6) põe o ponto CENTRADO no fio de 2px; descentrado, o anel
     de 2px da cor do fundo apaga o fio de um lado só e a linha parece quebrada. */
  content: ''; position: absolute; left: -4px; top: 5px;
  width: 10px; height: 10px; border-radius: 50%;
  background: var(--n-a2); border: 2px solid var(--n-fundo);
}
.article-body .n-cronologia .n-quando {
  display: block; font-size: 0.76em; font-weight: 700; text-transform: uppercase;
  letter-spacing: 0.9px; color: var(--n-a2); margin-bottom: 3px;
}

/* ── Spoiler ────────────────────────────────────────────────────────────────
   Mesma ideia da tarja dos comentários: some até alguém pedir para ver. */
.article-body .n-spoiler {
  background: var(--n-cartao); border: 1px dashed var(--cg-dim-2); border-radius: 8px;
  padding: 14px 16px; margin: 1.8em 0;
}
.article-body .n-spoiler > summary {
  cursor: pointer; list-style: none; color: var(--cg-ouro);
  font-size: 0.82em; font-weight: 700; text-transform: uppercase; letter-spacing: 1px;
}
.article-body .n-spoiler > summary::-webkit-details-marker { display: none; }
.article-body .n-spoiler > summary::before { content: '⚠ '; }
.article-body .n-spoiler[open] > summary { margin-bottom: 10px; border-bottom: 1px solid var(--n-linha); padding-bottom: 8px; }
.article-body .n-spoiler > :last-child { margin-bottom: 0; }

/* ── Divisor ────────────────────────────────────────────────────────────── */
.article-body .n-divisor {
  border: none; height: 1px; margin: 2.4em auto;
  width: 120px;
  background: linear-gradient(90deg, transparent, var(--n-a1), transparent);
}

/* ── Tabela ─────────────────────────────────────────────────────────────────
   Numa coluna de 900px uma tabela larga estoura; ela rola sozinha, dentro do
   seu próprio contêiner, sem arrastar a página junto. */
.article-body .n-tabela { overflow-x: auto; margin: 1.8em 0; }
.article-body table { border-collapse: collapse; width: 100%; font-size: 0.9em; }
.article-body th, .article-body td { padding: 10px 14px; border-bottom: 1px solid var(--n-linha); text-align: left; }
.article-body th { color: var(--n-apagado); font-size: 0.85em; text-transform: uppercase; letter-spacing: 0.8px; font-weight: 700; }
.article-body tbody tr:hover { background: var(--n-cartao); }

/* ── Fonte / leia mais ──────────────────────────────────────────────────── */
.article-body .n-fonte {
  font-size: 0.8em; color: var(--n-apagado);
  border-top: 1px solid var(--n-linha); padding-top: 12px; margin-top: 2.4em;
}
.article-body .n-fonte a { color: var(--n-link); }

/* Uma figura solta que escapou da largura da coluna não pode empurrar a página. */
.article-body img { max-width: 100%; }
