/* ═══════════════════════════════════════════════════════════════════════════
   site.css — a pele do legadogrego.com.

   ★ DUAS PELES, E ISSO E DECISAO DO AUTOR (2026-08-22)
   Ate aqui o site era copia FIEL do mitologiagregainfo.com.br: video de fundo
   em todas as paginas, cartao de pergaminho por cima, Times New Roman 22/22
   justificado. O autor mudou o pedido:

     "aquele video animado e so na home, nas outras paginas quero como fez no
      theautor.com/guias"

   Entao:
     · HOME  → segue a copia fiel. Bronze, video, cartao de pergaminho. Todos
               os numeros dela continuam MEDIDOS no Wix (travas na secao 16 do
               testes.mjs) — quem "melhorar" a home derruba teste.
     · O RESTO → PELE DE LEITURA, a mesma dos guias do theautor.com: papel
               marfim, EB Garamond para ler, Cinzel para titulo, ouro so no
               enfeite. A paleta abaixo nao foi inventada: foi COPIADA do
               `site/build-guias.js` do theautor.com (as duas casas tem de ler
               iguais, nao parecidas).

   ⚠ POR QUE ISSO IMPORTA: um verbete daqui tem 4.100 palavras de media e o
   maior tem 15 mil. Texto justificado a 22px com entrelinha 22px sobre um
   video que mexe e uma tela de leitura ruim para 8 mil palavras — foi o que o
   original fazia, e e a razao do pedido.
   ═══════════════════════════════════════════════════════════════════════════ */

:root {
  /* ── medidos no Wix: a HOME vive destes ───────────────────────────────── */
  --ambar:      #FFB030;              /* menu */
  --tinta:      #464646;              /* titulo e corpo do verbete na home */
  --pergaminho: rgba(255,255,255,.83);/* o cartao de conteudo */
  --bronze:     #2a1a0e;              /* base sob o video, enquanto ele nao pinta */
  --cartao:     976px;                /* largura do cartao */
  --coluna:     624px;                /* largura da coluna de texto */

  /* ⚠ A LETRA DE LETREIRO ERA A "VALDEMAR", E ELA ESTAVA COMENDO O TEXTO.
     Medido no proprio arquivo (ferramentas/audita-fontes.mjs): o valdemar.ttf
     declara 48 codepoints no cmap cujo DESENHO e vazio — os dez algarismos,
     todos os sinais de pontuacao (! " & ' ( ) , - . / : ; ?) e Á Ç Í Ó Ô.
     Declarar no cmap e pior do que faltar: quando o caractere FALTA, o
     navegador troca de fonte sozinho e o leitor ve a letra certa; quando ele
     esta declarado com desenho vazio, o navegador acha que a fonte sabe
     desenhar e imprime NADA. Era isto que se via na home:
       "LANCAMENTO IMPERDIVEL"  →  "LAN AMENTO IMPERDIVEL"
       "16 de julho de 2023"    →  " de julho de "
       o rodape perdia os dois anos e o "!" da caixa de busca sumia.
     O autor autorizou a troca. A substituta nao foi escolhida por gosto: a
     captura do Wix mostra "cinzel,serif" em 17 lugares da home contra 9 da
     Valdemar — a Cinzel ja era a letra dominante do original. Ela ja esta no
     deploy (custa 0 byte novo), e a mesma dos guias do theautor.com, e tem
     algarismo, pontuacao e acento inteiros. */
  --letreiro: "Cinzel", Georgia, "Times New Roman", serif;
  /* ⚠ O TITULO DA HOME TEM LETRA PROPRIA (2026-08-23). O autor reprovou a
     Cinzel no <h1> — "a fonte nao serve" — e escolheu a Forum numa folha com
     seis candidatas, fotografadas no proprio heroi, no tamanho e na cor de
     verdade (`_lab/prova-letreiro.mjs` e `_lab/folha-letreiro.html`).
     ⚠ E SO O TITULO. A Cinzel continua no menu, nos botoes, na chamada e nos
     titulos de secao: sao papeis diferentes, e o par letra-de-nome + letra-de-
     texto e o arranjo normal. Trocar a `--letreiro` inteira mudaria a home toda
     — que nao foi o que ele reprovou.
     ⚠ A RESERVA E GEORGIA, e isso importa mais aqui que em qualquer outro
     lugar do site: se a Forum nao chegar, este e o maior texto da pagina, e ele
     tem de continuar legivel enquanto nao chega. */
  --titulo:   "Forum", Georgia, "Times New Roman", serif;
  --leitura:  "Times New Roman", Times, serif;

  /* ── a PELE DE LEITURA (copiada do theautor.com/guias) ────────────────── */
  --serif: "EB Garamond", Georgia, serif;
  --sans:  "Inter", system-ui, -apple-system, sans-serif;
  --title: "Cinzel", Georgia, serif;

  --corpo:  19.5px;
  --larg:   1240px;      /* a caixa da pagina */
  --medida:  690px;      /* a coluna de leitura — 72 caracteres por linha */

  --fundo: #eee7d7;      /* a mesa */
  --folha: #f8f4e9;      /* o papel */
  --t1: #33291a; --t2: #5a4c36; --t3: #8d7d61;
  /* ⚠ DOIS OUROS, e trocar um pelo outro apaga o texto: o ESCURO (--accent) e
     para letra, porque tem contraste sobre papel; o VIVO (--ouro) so serve a
     filete e ornamento. A mesma armadilha ja documentada nos guias. */
  --accent: #9a7420; --ouro: #d8a63a; --link: #8a6519; --h2: #42341c;
  --linha: rgba(146,106,38,.18); --linha2: rgba(146,106,38,.3);
  --caixa: #f3ecdc; --thbg: rgba(146,106,38,.09);
  --noite: #0b0906;
}

* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; overflow-x: clip; }
body {
  background: var(--bronze);
  color: var(--tinta);
  font-family: var(--leitura);
  font-size: 22px; line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  overflow-x: clip;
}

/* ⚠ `height:auto` NAO E ENFEITE. Toda <img> de conteudo leva width/height no
   HTML (para reservar a caixa e nao empurrar o texto quando carrega), e esses
   atributos entram como REGRA de CSS de baixa prioridade. Uma regra que mande
   so `width` deixa a ALTURA do atributo de pe e a imagem sai esticada —
   aconteceu na galeria da /itens, cartao de 273 px de largura com 1086 px de
   altura. Aqui a base conserta para todas. */
img, video { max-width: 100%; height: auto; }
a { color: inherit; }

.sr, .pula {
  position: absolute; width: 1px; height: 1px; overflow: hidden;
  clip-path: inset(50%); white-space: nowrap;
}
.pula:focus {
  position: fixed; top: 8px; left: 8px; width: auto; height: auto; clip-path: none;
  z-index: 99; background: #000; color: var(--ambar); padding: .6rem 1rem;
  border: 2px solid var(--ambar);
}

/* ═══ O TOPO — busca + menu. E o mesmo nas duas peles ═════════════════════
   A faixa escura amarra as duas caras: na home ela flutua sobre o video, na
   pele de leitura ela e o teto da folha. */
.topo { position: sticky; top: 0; z-index: 20; background: rgba(10,6,3,.92); }
body.leitura .topo { background: var(--noite); }

.busca { position: relative; display: flex; align-items: center;
         width: 888px; max-width: calc(100% - 32px); margin: 0 auto; padding: 6px 0; }
.busca input {
  flex: 1; height: 45px; padding: 0 46px 0 16px;
  background: rgba(255,255,255,.10); border: 1px solid rgba(255,176,48,.45);
  border-radius: 4px; color: #fff;
  font-family: var(--letreiro); font-size: 13px; letter-spacing: .06em;
}
.busca input::placeholder { color: #fff; opacity: .85; }
.busca input:focus { outline: 2px solid var(--ambar); outline-offset: 1px; }
.busca-btn {
  position: absolute; right: 6px; width: 34px; height: 34px;
  display: grid; place-items: center; cursor: pointer;
  background: var(--ambar); border: 0; border-radius: 3px; color: #2a1a0e;
}
.busca-btn svg { width: 18px; height: 18px; }

.busca-resultados {
  position: absolute; top: 100%; left: 0; right: 0; z-index: 30;
  max-height: 60vh; overflow-y: auto;
  background: #14100b; border: 1px solid rgba(255,176,48,.4); border-top: 0;
}
.busca-resultados a {
  display: block; padding: .6rem .9rem; text-decoration: none;
  font-family: var(--letreiro); font-size: 14px; color: var(--ambar);
  border-bottom: 1px solid rgba(255,176,48,.14);
}
.busca-resultados a:hover, .busca-resultados a:focus { background: rgba(255,176,48,.14); }
.busca-resultados .br-cat { display: block; font-size: 12px; opacity: .65; font-family: var(--leitura); }
.busca-resultados .br-vazio { padding: .8rem .9rem; color: #cbb28c; font-size: 14px; }

/* ── menu: 11 categorias, Valdemar 12px ambar ────────────────────────────── */
.menu { border-top: 1px solid rgba(255,176,48,.22); }
.mn { display: flex; justify-content: center; flex-wrap: wrap; list-style: none; }
.mn-item { position: relative; }
.mn-item > a, .mn-item > button {
  display: block; padding: .7rem .9rem; cursor: pointer;
  font-family: var(--letreiro); font-size: 12px; letter-spacing: .04em;
  color: var(--ambar); background: none; border: 0; text-decoration: none;
  border-right: 1px solid rgba(255,176,48,.22);
}
.mn-item:first-child > a { border-left: 1px solid rgba(255,176,48,.22); }
.mn-item > a:hover, .mn-item > button:hover,
.mn-item > a:focus-visible, .mn-item > button:focus-visible { background: rgba(255,176,48,.16); }
.mn-item > a[aria-current="page"] { background: rgba(255,176,48,.22); }

.mn-sub {
  position: absolute; top: 100%; left: 0; min-width: 210px; z-index: 25;
  list-style: none; background: #14100b;
  border: 1px solid rgba(255,176,48,.4);
  display: none;
}
.mn-tem-filho:hover > .mn-sub,
.mn-tem-filho:focus-within > .mn-sub,
.mn-tem-filho.aberto > .mn-sub { display: block; }
.mn-sub a {
  display: block; padding: .5rem .9rem; text-decoration: none;
  font-family: var(--letreiro); font-size: 12px; color: var(--ambar);
}
.mn-sub a:hover, .mn-sub a:focus-visible { background: rgba(255,176,48,.18); }

.menu-sanfona { display: none; }

/* ═══════════════════════════════════════════════════════════════════════════
   PELE 1 — A HOME (copia fiel do Wix: video + cartao de pergaminho)
   ⚠ Os numeros aqui sao MEDIDOS, nao escolhidos. Ver secao 16 do testes.mjs.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── o fundo: um VIDEO 1425x900 em cover, fixo ───────────────────────────── */
.fundo { position: fixed; inset: 0; z-index: 0; pointer-events: none; overflow: hidden; }
.fundo-video { width: 100%; height: 100%; object-fit: cover; display: block; }
/* ═══ O VEU SOBRE O VIDEO ══════════════════════════════════════════════════
   ★ PEDIDO DO AUTOR (2026-08-23): "diminua um pouco a opacidade do video ao
   fundo, bota tipo mais preto". Era um preto chapado a 28%.

   ⚠ NAO VIROU UM PRETO CHAPADO MAIS FORTE, e a razao e de leitura: um veu
   uniforme escurece IGUAL onde tem texto e onde nao tem, entao para o titulo
   ficar legivel a arte inteira precisa apagar. Aqui sao tres camadas:

     · uma base de 52% em toda a tela — e a "opacidade" que ele pediu;
     · um degrade VERTICAL, mais fechado no topo (atras do menu) e embaixo
       (onde o heroi encosta na faixa clara), e mais aberto no meio, que e
       onde o guerreiro aparece;
     · uma vinheta radial, que fecha os cantos e empurra o olho para o centro.

   O resultado: o video escurece bastante, mas continua VENDO-SE — e o titulo
   ganha contraste sem que a arte precise sumir. */
.fundo-veu {
  position: absolute; inset: 0;
  background:
    radial-gradient(120% 85% at 50% 42%, rgba(0,0,0,0) 0%, rgba(0,0,0,.32) 62%, rgba(0,0,0,.62) 100%),
    linear-gradient(to bottom,
      rgba(0,0,0,.82) 0%,
      rgba(0,0,0,.50) 22%,
      rgba(0,0,0,.46) 58%,
      rgba(0,0,0,.74) 100%),
    rgba(0,0,0,.52);
}

header, main, footer { position: relative; z-index: 1; }

/* ── o cartao de pergaminho: 976 px, rgba(255,255,255,.83) ───────────────── */
.cartao {
  width: var(--cartao); max-width: calc(100% - 24px);
  margin: 34px auto 60px; padding: 40px 44px 54px;
  background: var(--pergaminho);
  box-shadow: 0 18px 60px rgba(0,0,0,.45);
}
.cartao h1 {
  font-family: var(--letreiro); font-size: 48px; font-weight: 400;
  letter-spacing: .2em; color: var(--tinta); text-align: center;
  margin: 0 0 1.4rem; line-height: 1.15;
}
.cartao h2 {
  font-family: var(--letreiro); font-size: 32px; font-weight: 400;
  letter-spacing: .1em; color: var(--tinta); margin: 2rem 0 .8rem;
}
/* corpo: Times New Roman 22 / entrelinha 22, justificado — medido */
.cartao p, .cartao li {
  font-family: var(--leitura); font-size: 22px; line-height: 22px;
  color: var(--tinta); text-align: justify;
}
.cartao p { margin: 0 0 1.05rem; }
.cartao a { color: #7a4a12; text-underline-offset: 2px; }

/* a grade de icones da home — desenhada na secao HOME mais abaixo */

/* ═══════════════════════════════════════════════════════════════════════════
   PELE 2 — LEITURA (as 91 paginas internas). Copiada dos guias.
   ═══════════════════════════════════════════════════════════════════════════ */
body.leitura {
  background: var(--fundo); color: var(--t2);
  font-family: var(--sans); font-size: var(--corpo); line-height: 1.75;
}
body.leitura a { color: var(--link); text-decoration: none; transition: color .2s; }
body.leitura a:hover { color: var(--accent); }

.wrap { max-width: var(--larg); margin: 0 auto; padding: 0 26px; }

/* ── a barra de progresso da leitura: NA LATERAL ESQUERDA, com o numero ───
   Num verbete de 15 mil palavras, saber "quanto falta" nao e enfeite: e a
   diferenca entre rolar e desistir.

   ⚠ ELA ERA UM FIO DE 2px NO TOPO. O autor pediu de pe, na esquerda, e
   mostrando a porcentagem (2026-08-24) — e a troca nao e girar 90 graus:

   1. DE PE, ELA PRECISA DE TRILHO. No topo, o fio de ouro corria a largura da
      TELA, e a tela e a referencia: o olho compara o pedaco pintado com o
      resto da faixa sem pensar. Na vertical, sem um trilho atras, um risco de
      ouro no meio do nada nao diz proporcao nenhuma.

   1b. ★★★ E O OURO VIVO SO FUNCIONAVA PORQUE ELA MORAVA NO ESCURO. Medido no
      navegador, com os tokens reais: `--ouro` (#d8a63a) contra o trilho da
      primeira versao dava **6,6:1 sobre a faixa escura do cabecalho e 1,39:1
      sobre o papel** — ou seja, de pe a barra atravessava a pagina e
      DESAPARECIA justamente onde o leitor passa 95% do tempo. Deitada no topo
      isso nunca apareceu: ela vivia inteira sobre o cabecalho escuro.
      ⚠ Nenhuma cor unica resolve, porque a barra cruza dois fundos opostos —
      o melhor meio-termo (`--accent` sobre trilho translucido) dava 2,67:1 no
      papel, ainda abaixo do piso de 3:1 de componente nao-textual. A saida e
      a MESMA do selo, um paragrafo abaixo: o trilho leva fundo OPACO, e ai o
      contraste do preenchimento e sempre contra um fundo conhecido —
      `--accent` sobre `--caixa` = **3,65:1**, igual do topo ao rodape.
      ⚠ E o par foi COPIADO da paleta, nao inventado: e a mesma regra ja
      escrita la em cima — o ouro VIVO e para filete e ornamento, o ouro
      ESCURO (`--accent`) e o que tem contraste sobre papel.
   2. O NUMERO PRECISA DE SELO PROPRIO. Ele fica fixo enquanto a pagina inteira
      passa por tras: a faixa escura do cabecalho, o papel marfim do texto e o
      rodape escuro. Nao existe UMA cor de letra que sirva aos tres — entao ele
      leva o proprio fundo, como um marcador de livro.
   3. E ELE SOME QUANDO NAO HA O QUE MOSTRAR. Numa pagina que cabe na tela, um
      "0%" parado no canto e um numero que nunca muda: o `leitura.js` esconde a
      peca inteira. Ver o `hidden` la. */
/* ⚠⚠ E O TRILHO PRECISOU DE UMA SEGUNDA MEDICAO, porque a PRIMEIRA mediu a
   coisa errada. Eu conferi "preenchimento contra trilho" (3,65:1) e dei por
   fechado — mas `--caixa` contra `--folha` da **1,07:1**: o trilho era
   invisivel sobre o papel, e quem mostrou foi a FOTO em 375, nao a conta.
   Numa pagina no comeco da leitura nao se via barra nenhuma.

   ⚠ O dilema nao tem saida perfeita, e esta medido: escurecer o trilho para
   ele aparecer contra o papel derruba o contraste do preenchimento contra
   ELE — `#e0d5b8` ja cai para 2,94:1, abaixo do piso de 3:1.

       trilho          vs papel    preenchimento vs trilho
       --caixa           1,07            3,65
       #e8dfc8           1,21            3,23   ← escolhido
       #e0d5b8           1,33            2,94   ✗ furou o piso

   ★ O QUE CARREGA A LEITURA DA BARRA NAO E O TRILHO: e o preenchimento contra
   o PAPEL, que da **3,91:1**. O trilho so responde "quanto falta", e essa
   pergunta agora tem uma resposta exata no selo — que e justamente o que o
   autor pediu. Por isso o trilho pode ser discreto; ele nao pode e sumir. */
/* ⚠⚠ E A TERCEIRA VERSAO MUDOU DUAS COISAS QUE A SEGUNDA TINHA ERRADO
   (pedido do autor, 2026-08-25): *"a porcentagem deveria acompanhar a bolinha
   que desce, como no site theautor.com, e estar por tras da faixa de pesquisa"*.

   1. O SELO PARADO NO CANTO ERA UM NUMERO SEM LUGAR. A cabeca de luz desce a
      pagina e o numero ficava la embaixo, a 900px dela: duas pecas da MESMA
      informacao em dois cantos da tela. No `theautor.com` o mesmo indicador ja
      resolve isso ha meses — la o `<text>` do fio de luz e desenhado em
      `(cabeca.x + 9, cabeca.y)` a cada quadro ("% de progresso, colada na
      cabeca"). Aqui nao precisa de JS nenhum: o selo VIRA FILHO do
      preenchimento e mora em `top: 100%`, que e exatamente onde o `::after`
      desenha a bolinha. Uma peca so, e o numero nunca desgruda da luz.
   2. Z-INDEX 60 PASSAVA POR CIMA DA BUSCA. A faixa do topo e `z-index: 20`, e
      a barra em 60 cruzava por cima dela — o selo entrava na faixa escura da
      busca como um adesivo. Agora e 15: ACIMA do texto (header/main/footer sao
      `z-index: 1`) e SEMPRE ABAIXO do topo. A invariante e a mesma do fio do
      `theautor.com`, escrita la em uma linha: fio < header.
      ⚠ E nao pode ser 0: o `.palco` pinta `--folha` opaco, entao a barra atras
      dele nao ficaria discreta — ficaria INVISIVEL.
   3. O `bottom: 16px` NAO E MARGEM DE ENFEITE. Com o selo montado na ponta do
      preenchimento, aos 100% o centro dele cairia na borda de baixo da tela e
      metade do numero ficaria fora. O selo tem 22px de altura (medido): 16px
      de folga deixam a bolinha (9px) e o numero inteiros dentro da tela. */
.progresso {
  position: fixed; top: 0; left: 0; bottom: 16px; z-index: 15;
  width: 3px; background: #e8dfc8;
}
.progresso[hidden] { display: none; }
/* ⚠ sem `opacity` no preenchimento: a medicao de 3,65:1 e da cor cheia, e
   qualquer transparencia aqui a devolve para baixo do piso.

   ★ O BRILHO E HALO, NAO E A COR — pedido do autor: "meio brilhante neon
   tranquilo, suave" (2026-08-24). E a distincao importa, porque este projeto
   ja mediu que o ouro VIVO some sobre o papel (1,39:1, ver o cabecalho deste
   bloco): se o neon virasse a cor do preenchimento, a barra ficaria bonita e
   ilegivel de novo. Entao a barra continua sendo `--accent` cheio — que e o
   que carrega o contraste — e o ouro vivo entra so como LUZ EM VOLTA, em
   `box-shadow`, onde ele nao precisa de contraste nenhum: e reflexo.

   ⚠ E o halo NAO PULSA. "Tranquilo, suave" e uma luz parada; uma barra de
   leitura que respira no canto do olho compete com o texto — e a regra do
   projeto sobre animacao ja diz que ela e continua, nunca em atos. Sem
   animacao, tambem nao ha nada que `prefers-reduced-motion` precise desligar. */
.progresso i {
  display: block; width: 100%; height: 0; background: var(--accent);
  position: relative;
  box-shadow: 0 0 5px rgba(216,166,58,.5), 0 0 12px rgba(216,166,58,.24);
}
/* a CABECA: o pontinho de luz onde a leitura esta agora. E o unico lugar em
   que o ouro vivo aparece cheio — 9px de diametro, fora da area util. */
.progresso i::after {
  content: ''; position: absolute; left: 50%; bottom: 0;
  width: 9px; height: 9px; transform: translate(-50%, 50%);
  border-radius: 50%; background: var(--ouro);
  box-shadow: 0 0 8px 2px rgba(216,166,58,.6), 0 0 18px 5px rgba(216,166,58,.28);
}
/* ⚠ A LARGURA DO SELO E FIXA, E `tabular-nums` NAO BASTAVA. Medido no
   navegador: com a caixa livre, "0%" dava 38px, "10%" 40,9px e "100%" 48,6px —
   o selo mudava de tamanho tres vezes durante uma leitura, e um numero que
   treme no canto do olho puxa mais atencao do que o texto que se esta lendo.
   `tabular-nums` so iguala os DIGITOS entre si; quem muda aqui e a quantidade
   deles. A largura vai em `em` (e nao nos 50px que a medicao deu) para
   acompanhar a fonte: se a Inter nao carregar e entrar a do sistema, a caixa
   cresce junto em vez de cortar o "100%". */
/* ⚠ E ELE E FILHO DO PREENCHIMENTO, NAO IRMAO. `top: 100%` dentro de
   `.progresso i` e a MESMA linha em que o `::after` desenha a bolinha (ele usa
   `bottom: 0` do mesmo pai): as duas pecas nascem coladas por construcao, e
   nenhum JS precisa mante-las em dia. O `translateY(-50%)` centra o numero na
   luz; o `left: 14px` o poe FORA da barra de 3px, do lado de dentro da margem.
   ⚠ O `leitura.js` continua achando o selo por `caixa.querySelector('b')` —
   descendente, nao filho direto. */
.progresso b {
  position: absolute; top: 100%; left: 14px;
  transform: translateY(-50%);
  width: 4.6em; text-align: center;
  /* ⚠ 12px, e nao 11: o menor texto do site e o menu, medido em 12px no Wix
     (trava "menu: 12px (medido)"). Um selo de 11px estrearia como a menor
     letra da pagina inteira — e legibilidade neste projeto se MEDE, nao se
     arredonda para baixo porque "e so um numerinho". */
  font-family: var(--sans); font-size: 12px; font-weight: 600;
  letter-spacing: .05em; font-variant-numeric: tabular-nums; line-height: 1;
  color: var(--accent); background: var(--folha);
  border: 1px solid var(--linha2); border-radius: 3px; padding: 4px 6px;
  /* o mesmo halo da barra, mais fraco: o selo e a outra ponta da mesma peca */
  box-shadow: 0 0 10px rgba(216,166,58,.3);
}
/* ── NO DESKTOP A BARRA TROCA DE LADO: vai para a DIREITA, rente ao texto ──
   Pedido do autor (2026-08-25): *"no modo desktop, seria interessante que
   tivesse ao lado direito, meio rente ao texto da parte direita"*. E ele tem
   razao pela geometria, nao por gosto: no desktop a ESQUERDA e ocupada pelo
   trilho do sumario, entao a barra na esquerda corre por tras de uma coluna
   cheia de links; a direita do texto ha um vao vazio de mais de 400px.

   ⚠ A CONTA E DO PROPRIO LAYOUT, e nao um `right:` chutado. A coluna de leitura
   acaba, contado do inicio do miolo, nos 232px do trilho + 44px de vao (as
   duas medidas de `.palco > .wrap`) + a largura do texto, que e `--medida`; e
   o miolo comeca 26px dentro da caixa de `--larg`. Entao:

       borda direita do texto = 50% - (--larg / 2) + 26px + 232px + 44px + --medida

   e a barra fica 16px depois dela. `left: 50%` num `fixed` resolve contra a
   MESMA largura que o `margin: 0 auto` do `.wrap` usa (a area util, sem a
   barra de rolagem) — medido: com 1585px de area util o texto acaba em x=1165
   e a barra cai em x=1181.

   ⚠⚠ E OS NUMEROS SAO OS DO LAYOUT, NAO COPIAS DELES. A primeira versao somava
   um `966px` fechado — a conta ja feita. Um `966` na mao apodrece na hora em
   que alguem mexer no trilho, no vao ou na medida da coluna: a barra sairia de
   perto do texto sem nada acender. Por isso `--medida` entra por referencia, e
   ha trava no `testes.mjs` (§ "a barra de leitura") cobrando que os 232 e os 44
   daqui sejam os MESMOS de `.palco > .wrap`.

   ⚠ O corte e `--larg` (1240px) e nao um numero novo: abaixo disso o `.wrap`
   deixa de estar centrado, a formula deixa de valer, e a barra volta para a
   esquerda — que e onde ela ja funciona. */
@media (min-width: 1240px) {
  .progresso {
    left: 50%; right: auto;
    margin-left: calc(var(--larg) / -2 + 26px + 232px + 44px + var(--medida) + 16px);
  }
}

/* ── o cabecalho do documento: a faixa escura, e o papel comeca embaixo ─── */
header.doc {
  position: relative; padding: 46px 0 44px; text-align: center;
  background: radial-gradient(760px 320px at 50% -30%, #241c0e 0, #0f0c07 72%), var(--noite);
  color: #cbbb92; overflow: hidden;
}
/* a arte do verbete atras do titulo, bem apagada: da cor a faixa sem disputar
   com a letra. `object-position: 50% 30%` porque em retrato de divindade o
   assunto esta no terco de cima, nao no meio. */
header.doc .doc-arte {
  position: absolute; inset: 0; z-index: 0;
  width: 100%; height: 100%; object-fit: cover; object-position: 50% 30%;
  opacity: .17; filter: grayscale(.35);
}
header.doc .wrap { position: relative; z-index: 1; }
.trilha { font-size: 12px; letter-spacing: .12em; text-transform: uppercase;
          color: #a2916c; margin-bottom: 14px; font-family: var(--sans); }
.trilha b { opacity: .45; margin: 0 6px; font-weight: 400; }
.trilha a { color: var(--ouro); }
.trilha a:hover { color: #f0dca6; }
header.doc h1 {
  font-family: var(--title); color: #f7edd2; font-weight: 500; letter-spacing: .04em;
  font-size: clamp(30px, 4.6vw, 46px); line-height: 1.16; margin: 0 auto 18px; max-width: 15em;
}
.assinatura { display: flex; gap: 8px 18px; justify-content: center; flex-wrap: wrap;
              font-size: 13px; color: #a2916c; font-family: var(--sans); }
.assinatura b { color: #e2cf9f; font-weight: 600; }
.tempo { position: relative; padding-left: 19px; }
.tempo::before { content: ''; position: absolute; left: 0; top: 50%; width: 9px; height: 9px;
                 margin-top: -4.5px; border: 1.5px solid var(--ouro); border-radius: 50%; opacity: .8; }

/* ── o palco de papel ────────────────────────────────────────────────────── */
.palco { background: var(--folha); border-top: 1px solid rgba(0,0,0,.25); padding: 0 0 10px; }
.palco > .wrap { display: grid; grid-template-columns: 232px minmax(0, 1fr); gap: 0 44px;
                 align-items: start; padding-top: 40px; padding-bottom: 56px; }

/* ── o trilho lateral: sumario que acompanha a rolagem ───────────────────── */
.rail { position: sticky; top: 96px; }
.sumario { border-left: 2px solid var(--linha2); padding-left: 16px; }
.sum-tit { font-family: var(--sans); font-size: 12px; letter-spacing: .14em;
           text-transform: uppercase; color: var(--t3); margin-bottom: 10px; }
.sumario ol { list-style: none; counter-reset: s; }
.sumario li { counter-increment: s; margin: 0 0 7px; }
.sumario a {
  display: block; font-family: var(--sans); font-size: 13.5px; line-height: 1.4;
  color: var(--t2); padding-left: 22px; position: relative;
}
.sumario a::before {
  content: counter(s, decimal-leading-zero); position: absolute; left: 0; top: 1px;
  font-size: 10.5px; color: var(--t3); letter-spacing: .04em;
}
.sumario a:hover, .sumario a.aqui { color: var(--accent); }
.sumario a.aqui::before { color: var(--ouro); }

/* ── a coluna de leitura ─────────────────────────────────────────────────── */
.leitura main { min-width: 0; max-width: var(--medida); counter-reset: sec; }
.lead {
  font-family: var(--serif); font-size: calc(var(--corpo) + 3.5px); line-height: 1.62;
  color: var(--t1); margin: 0 0 34px;
}

/* ═══ A LETRA CAPITULAR ════════════════════════════════════════════════════
   Pedido do autor: "com letra capitular". Ela cai na ABERTURA do verbete — o
   paragrafo que diz de quem e a pagina — e em nenhum outro lugar: capitular
   repetida deixa de ser entrada e vira enfeite.

   ⚠ QUEM DECIDE SE ELA APARECE E O MONTADOR, NAO O CSS. A classe extra
   ".capitular" so e escrita quando o paragrafo comeca por LETRA e nao tem uma
   atribuicao de fonte grudada na frente. Sem essa porta, a capitular cairia no
   "H" de "Homero, Iliada 5. 590" de uma nota de fonte, ou numa aspa de
   abertura — e uma aspa gigante flutuando no canto e exatamente o tipo de
   enfeite sem significado que nao entra aqui.

   ⚠ "float" + "::first-letter" e o unico jeito que funciona sem cortar o texto
   em dois elementos. O "line-height" baixo e o que faz a letra ocupar TRES
   linhas certas em vez de empurrar a primeira; o "padding-top" acerta a altura
   da maiuscula da Cinzel contra a linha de base da Garamond. */
.lead.capitular::first-letter {
  float: left;
  font-family: var(--title); font-weight: 500;
  font-size: 3.42em; line-height: .78;
  padding: .1em .09em 0 0;
  margin: .02em .02em -.06em 0;
  color: var(--accent);
}
.corpo { font-family: var(--serif); color: var(--t2); }
.corpo p { margin: 0 0 22px; }
/* ⚠ RECUO DE PARAGRAFO, pedido do autor. Recuo e travessao de paragrafo NAO
   se somam com espaco entre paragrafos sem virar poluicao — por isso o recuo
   so vale a partir do SEGUNDO paragrafo de cada bloco, que e a regra
   tipografica classica (o primeiro depois de um titulo nunca recua). */
.corpo p + p { text-indent: 1.6em; }
.corpo p + p.centro, .corpo .cit + p, .corpo p.nota-fonte { text-indent: 0; }
/* ⚠ A ABERTURA NUNCA RECUA — e ela nem sempre e o primeiro `p` da coluna.
   Achado numa FOTO da /ares (2026-08-23): a pagina abre pela secao "Familia de
   Ares", entao a abertura vem depois de dois `<p class="fam">` e caiu na regra
   de cima. Recuo somado a capitular flutuante nao da recuo: da um BURACO. O
   titulo do verbete saiu "A     RES era o deus olimpico da guerra", com a
   capitular de um lado e o resto da palavra do outro. */
.corpo p + p.lead { text-indent: 0; }

/* ═══ A SECAO ══════════════════════════════════════════════════════════════
   Cada secao e numerada. O numero NAO e enfeite: um verbete daqui tem ate 25
   secoes e 15 mil palavras, e o numero e o que amarra o titulo ao sumario do
   trilho (que ja numera 01, 02, 03). Quem chega da busca no meio da pagina
   descobre em que parte do documento caiu.
   ⚠ Nada de fleurao, roseta ou friso: gosto do autor MEDIDO — ele corta
   rendilhado abstrato em 92%. O que entra aqui e informacao (o numero) e
   tipografia (o filete de ouro que os guias do theautor.com ja usam). */
.corpo .sec { counter-increment: sec; }
.corpo h2 {
  position: relative;
  font-family: var(--title); font-weight: 500; color: var(--h2);
  font-size: clamp(23px, 2.6vw, 29px); line-height: 1.24; letter-spacing: .015em;
  margin: 58px 0 8px; text-transform: none;
  text-wrap: balance;
}
/* ⚠ O NUMERO E LETRA, E LETRA NAO USA O OURO VIVO. Escrevi este numero em
   --ouro (#d8a63a) na primeira versao: sobre o papel marfim (#f8f4e9) isso da
   2,1:1 de contraste, e a foto mostrou o numero quase apagado. A pele ja tem
   DOIS ouros exatamente por causa disso — o vivo (--ouro) e para filete e
   ornamento, o escuro (--accent, #9a7420) e o unico que serve como tinta.
   E a mesma armadilha ja registrada nos guias do theautor.com. */
.corpo .sec > h2::before {
  content: counter(sec, decimal-leading-zero);
  position: absolute; left: -54px; top: .46em;
  font-family: var(--sans); font-size: 12px; font-weight: 600; letter-spacing: .1em;
  color: var(--accent); opacity: .85;
}
/* o filete de ouro embaixo do titulo de secao — o mesmo dos guias */
.corpo h2 + .filete, .sec > .filete {
  height: 2px; width: 74px; margin: 0 0 22px;
  background: linear-gradient(90deg, var(--ouro), rgba(216,166,58,0));
}
/* ═══ O SUBTITULO ══════════════════════════════════════════════════════════
   Sao os 94 rotulos que o Wix tinha achatado em paragrafo ("Queda dos Titas:").
   Ficam em Inter maiusculo, com um tracinho de ouro na frente, para nao
   disputar com o <h2> em Cinzel — a hierarquia se le de longe. */
.corpo h3 {
  position: relative;
  font-family: var(--sans); font-weight: 600; color: var(--t1);
  font-size: 14.5px; letter-spacing: .11em; text-transform: uppercase;
  margin: 34px 0 12px; padding-left: 26px; line-height: 1.45;
}
.corpo h3::before {
  content: ''; position: absolute; left: 0; top: .62em;
  width: 16px; height: 2px; background: var(--ouro); opacity: .85;
}
.corpo .sec:first-child > h2 { margin-top: 8px; }
/* o primeiro paragrafo depois de um subtitulo nao recua — regra classica */
.corpo h3 + p { text-indent: 0; }
.corpo strong, .corpo b { color: var(--t1); font-weight: 600; }
.corpo a { border-bottom: 1px solid var(--linha2); }

/* ═══ O ENLACE ENTRE VERBETES ══════════════════════════════════════════════
   Sao 696 no site, e a pergunta de desenho e uma so: como marcar um nome
   proprio no meio do texto sem picotar a linha? A resposta e o filete
   embaixo, nunca a cor forte — num paragrafo que cita seis divindades, seis
   palavras coloridas viram um texto com sarampo.
   O nome fica na MESMA tinta do texto; o que muda e o traco embaixo, em ouro
   apagado. So no toque/hover ele ganha cor. */
.corpo a.enlace {
  color: var(--t1);
  border-bottom: 1px solid rgba(216,166,58,.55);
  text-decoration: none;
  transition: color .18s, border-color .18s, background-color .18s;
  padding: 0 .5px;
}
.corpo a.enlace:hover, .corpo a.enlace:focus-visible {
  color: var(--accent);
  border-bottom-color: var(--accent);
  background: rgba(216,166,58,.12);
}

/* ═══ A NOTA DO EDITOR ═════════════════════════════════════════════════════
   ★ E A UNICA VOZ DO SITE QUE NAO E DO AUTOR NEM DE HOMERO — e por isso ela
   tem de PARECER outra coisa. O site se anuncia como "Registros Oficiais
   Traduzidos em PT BR": se a nossa explicacao viesse na mesma tipografia da
   prosa do autor, o leitor nao teria como saber quem esta falando.
   Entao: papel proprio, letra de interface (nunca a Garamond do texto), corpo
   menor, e a palavra "Nota" escrita na frente. Nao e enfeite — e procedencia.
   ⚠ e `<aside>`, nao `<div>`: para quem ouve a pagina, isto e um aparte. */
.nota-editor {
  margin: 4px 0 30px; padding: 15px 18px 15px 20px;
  background: var(--caixa); border: 1px solid var(--linha);
  border-left: 3px solid var(--accent); border-radius: 0 10px 10px 0;
}
.nota-editor p {
  font-family: var(--sans); font-size: 14.5px; line-height: 1.62;
  color: var(--t2); margin: 0; text-indent: 0;
}
.nota-editor p::before {
  content: 'Nota do editor';
  display: block; font-size: 12px; font-weight: 600; letter-spacing: .16em;
  text-transform: uppercase; color: var(--accent); margin-bottom: 7px;
}
/* A REMISSIVA: a nota que manda o leitor a outra pagina tem de ser clicavel.
   ⚠ E ela e um ALVO, nao uma palavra sublinhada no meio da frase: quando dez
   secoes saem de uma pagina para outra, este link e a unica porta que o leitor
   tem para o resto do assunto. Alvo pequeno demais no celular nao se acerta —
   dai o `inline-block` com respiro de 44px de altura util. */
/* ⚠ A COR AQUI E `--t1`, E NAO `--accent`, E ISSO FOI MEDIDO. O âmbar do site
   (`--accent`, #9a7420) dá **3,48:1** sobre o papel — ele é cor de MOLDURA e de
   rótulo grande, não de letra de 13,5px. A régua da acessibilidade pede 4,5:1
   nesse tamanho, e `--t1` dá 11,57:1. O âmbar continua no lugar dele: a borda.
   É a mesma armadilha já registrada no projeto — cor de UI não vira cor de
   texto sem passar pela conta. */
.nota-editor .nota-ir {
  display: inline-block; margin-top: 10px;
  font-family: var(--sans); font-size: 13.5px; font-weight: 600;
  letter-spacing: .04em; color: var(--t1); text-decoration: none;
  /* 11px de calha vertical + 20px de linha = 44px de alvo, o mínimo do toque */
  padding: 11px 16px; border: 1px solid var(--accent); border-radius: 999px;
  background: var(--fundo);
  transition: background .28s ease, border-color .28s ease, color .28s ease;
}
.nota-editor .nota-ir::after { content: ' →'; }
.nota-editor .nota-ir:hover,
.nota-editor .nota-ir:focus-visible { border-color: var(--accent); background: var(--caixa); }

/* a procedencia no fim de uma secao inteira (nao de um paragrafo) */
.corpo p.fonte-secao {
  font-family: var(--sans); font-size: 13px; color: var(--t3);
  margin-top: 22px; padding-top: 12px; border-top: 1px solid var(--linha);
  text-indent: 0;
}
.corpo p.fonte-secao strong {
  color: var(--t3); font-weight: 600; letter-spacing: .06em; text-transform: uppercase;
  /* ⚠ 12px E O PISO, e ele nao e gosto: a regua deste projeto e "letra pequena
     se MEDE", e a foto acusou 11,2px aqui (.86em de 13px). Rotulo em caixa
     alta com espacamento e o pior caso de tudo — a caixa alta ja rouba a
     silhueta da palavra. */
  font-size: 12px;
}

/* ═══ AS LISTAS DENTRO DO TEXTO ════════════════════════════════════════════
   ★ DEFEITO MEDIDO em 2026-08-22: a pele nao tinha NENHUMA regra para <ul>/<ol>
   dentro do verbete. Com o `* { margin:0; padding:0 }` da base, os 214 itens de
   lista das 9 paginas que tem lista saiam SEM marcador, SEM recuo e SEM espaco:
   os 70 filhos de Zeus eram setenta linhas empilhadas, indistinguiveis de
   paragrafo comum. So aparece quando se olha a pagina — no HTML esta tudo
   certo, e foi por isso que passou batido uma sessao inteira.

   O marcador nao e o ponto preto do navegador: e um numero (nas ordenadas) ou
   um losango de ouro (nas nao-ordenadas), do mesmo tamanho e da mesma cor do
   numero de secao. A lista passa a se ler como parte da mesma pele. */
.corpo ul, .corpo ol { margin: 0 0 24px; padding: 0; list-style: none; }
.corpo li {
  position: relative; padding-left: 30px; margin: 0 0 12px;
  font-family: var(--serif); color: var(--t2);
}
.corpo li > p { margin: 0 0 8px; text-indent: 0; }
.corpo li > p:last-child { margin-bottom: 0; }

/* ⚠ o contador tem de ser reiniciado em CADA <ol>, senao a segunda lista da
   pagina comeca de onde a primeira parou. */
.corpo ol { counter-reset: item; }
.corpo ol > li { counter-increment: item; }
.corpo ol > li::before {
  content: counter(item) ".";
  position: absolute; left: 0; top: .18em;
  font-family: var(--sans); font-size: 13px; font-weight: 600;
  color: var(--accent); opacity: .9;
}
.corpo ul > li::before {
  content: ''; position: absolute; left: 8px; top: .72em;
  width: 6px; height: 6px; background: var(--ouro);
  transform: rotate(45deg);
}
/* lista dentro de lista: recua e afina */
.corpo li ul, .corpo li ol { margin: 10px 0 4px; }
.corpo li li { font-size: .95em; margin-bottom: 8px; }
/* o item que e SO um titulo, com a sub-lista embaixo */
.corpo p.li-tit {
  font-family: var(--sans); font-weight: 600; font-size: .84em;
  letter-spacing: .07em; text-transform: uppercase; color: var(--t1);
  margin-bottom: 6px;
}

/* o rotulo de abertura de paragrafo ("Origens e Nascimento: ...") */
.rotulo { font-family: var(--sans); font-size: .82em; font-weight: 600;
          letter-spacing: .06em; text-transform: uppercase; color: var(--accent); }

.corpo p.centro { text-align: center; }

/* ── a CITACAO classica: a voz que nao e do autor ────────────────────────
   Sao 2.370 no site inteiro. O que a diferencia da prosa: filete de ouro,
   italico, e a fonte embaixo em letra de interface. */
/* ═══ A CITACAO CLASSICA ═══════════════════════════════════════════════════
   Sao 2.370 no site, e sao o que ele vende ("Registros Oficiais Traduzidos em
   PT BR"): Homero, Hesiodo, os hinos orficos. Nenhuma palavra delas se toca —
   o que muda e so o lugar onde a voz de Homero para e a do autor comeca.
   O papel embaixo (--caixa) e meio tom mais escuro que a folha: da a elas a
   cara de documento citado sem precisar de moldura nenhuma. */
.cit {
  position: relative;
  margin: 0 0 28px; padding: 16px 20px 14px 26px;
  border-left: 2px solid var(--ouro);
  background: linear-gradient(90deg, rgba(146,106,38,.055), rgba(146,106,38,0) 62%);
  font-family: var(--serif); font-style: italic;
  font-size: calc(var(--corpo) + 1px); line-height: 1.66; color: var(--t2);
}
.cit p { margin: 0 0 6px; text-indent: 0; }
.cit cite {
  display: block; font-family: var(--sans); font-style: normal;
  font-size: 13px; letter-spacing: .02em; color: var(--t3);
}
.cit cite::before { content: '— '; }
/* atribuicao que ficou sem a citacao dela: visivel, nunca no lixo */
.nota-fonte, .fonte-solta {
  font-family: var(--sans); font-size: 13px; color: var(--t3); font-style: normal;
}
.nota-fonte { margin: 0 0 18px; padding-left: 22px; border-left: 2px solid var(--linha); }

/* ── a linha da tabela de familia ("[1.1] ZEUS & HERA (...)") ─────────────
   E genealogia: cada linha e uma VERSAO da arvore, com as fontes que a
   sustentam. Vira lista de fichas, nao paragrafo corrido. */
.fam {
  font-family: var(--sans); font-size: 15px; line-height: 1.55; color: var(--t2);
  margin: 0 0 8px; padding: 10px 14px; background: var(--caixa);
  border: 1px solid var(--linha); border-left: 3px solid var(--ouro);
  border-radius: 0 10px 10px 0; text-indent: 0;
}
.fam-v { color: var(--accent); font-weight: 600; margin-right: 6px; }

/* ── a figura dentro do texto ────────────────────────────────────────────── */
/* ═══ A FIGURA ═════════════════════════════════════════════════════════════
   Elas sao vaso grego, escultura e pintura — o assunto da pagina. No Wix
   moravam numa coluna lateral, empilhadas, sem relacao com o paragrafo ao
   lado; aqui entram no meio do texto (ver "distribuiFiguras"). O filete de
   ouro em cima da legenda amarra a figura ao resto da pele. */
.fig { margin: 38px 0; }
.fig img { width: 100%; height: auto; display: block; border-radius: 3px;
           box-shadow: 0 12px 40px rgba(58,44,20,.26); }
.fig figcaption {
  font-family: var(--sans); font-size: 13px; line-height: 1.55; color: var(--t3);
  margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--linha);
  position: relative;
}
.fig figcaption::before {
  content: ''; position: absolute; left: 0; top: -1px; width: 46px; height: 2px;
  background: var(--ouro); opacity: .8;
}
/* ── o CREDITO da imagem trocada ──────────────────────────────────────────
   Aparece so nas figuras cujo arquivo foi SUBSTITUIDO (ver src/imagens-troca.mjs):
   acervo · autor · licenca, com link para o objeto e para a licenca.
   ⚠ ELE E MENOR QUE A LEGENDA, E NAO MAIS APAGADO. Credito e obrigacao legal
   de CC BY / CC BY-SA: quem le tem de conseguir ler. O tamanho separa o
   credito da legenda; a cor continua a mesma da legenda, de proposito. */
.fig figcaption .fig-cred {
  display: block; margin-top: 5px;
  font-size: 11.5px; line-height: 1.5; letter-spacing: .01em;
}
.fig figcaption .fig-cred a { color: inherit; text-decoration: underline;
                              text-decoration-color: var(--linha);
                              text-underline-offset: 2px; }
.fig figcaption .fig-cred a:hover { text-decoration-color: var(--ouro); }

/* ── a PINTURA que o indice publica, dentro da pagina de destino ──────────
   Ver `figuraDoIndice` no build.mjs. ⚠ ELA NAO SE ESTICA: os mestres destes
   cartoes vieram do Wix com 360 px de largura e mais nada. Ampliar um 360 para
   os 690 da coluna de leitura seria servir borrao — a imagem fica no tamanho
   que tem, centrada, e a legenda acompanha a largura dela. */
.fig-indice { display: table; margin-left: auto; margin-right: auto; }
/* ⚠ "width" SEM "height" ESTICA a imagem — ha trava (e este projeto ja pagou
   por isso). Como as duas medidas estao no proprio <img>, aqui o par tem de
   vir junto. */
.fig-indice img { width: auto; height: auto; max-width: 100%; }
.fig-indice figcaption { display: table-caption; caption-side: bottom; text-align: center; }
@media (max-width: 700px) { .fig-indice { display: block; } .fig-indice img { width: 100%; height: auto; } }

/* ── a figura que E PORTA (landing de indice) ─────────────────────────────
   Ver `portaDaLegenda` no build.mjs. O cartao inteiro e o link — imagem e
   legenda —, e o unico sinal e o filete de ouro e a tinta da legenda mudando:
   sublinhar a legenda de trinta cartoes viraria um paredao de risco. */
.fig-porta > a { display: block; text-decoration: none; color: inherit; border-radius: 4px; }
.fig-porta img { transition: box-shadow .18s ease, outline-color .18s ease;
                 outline: 1px solid transparent; outline-offset: 3px; }
.fig-porta > a:hover img { outline-color: var(--ouro); }
.fig-porta > a:hover figcaption { color: var(--accent); }
.fig-porta > a:focus-visible img { outline: 2px solid var(--ouro); }

/* imagem larga: sangra para fora da coluna de leitura quando ha espaco */
.fig-larga { margin-left: calc(-1 * min(90px, 6vw)); margin-right: calc(-1 * min(90px, 6vw)); }

/* ── o pe da pagina de leitura: para onde ir agora ───────────────────────── */
.continue { margin: 54px 0 0; padding: 26px 0 0; border-top: 1px solid var(--linha); }
.cont-tit { font-family: var(--sans); font-size: 12px; letter-spacing: .14em;
            text-transform: uppercase; color: var(--t3); margin-bottom: 14px; }
.continue ul { list-style: none; display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 10px 18px; }
.continue a {
  display: block; font-family: var(--serif); font-size: calc(var(--corpo) + .5px);
  color: var(--t1); padding: 10px 14px; background: var(--caixa);
  border: 1px solid var(--linha); border-radius: 10px; line-height: 1.35;
}
.continue a:hover { border-color: var(--ouro); color: var(--accent); }

/* ═══ /itens — a GALERIA das divindades ctonicas ══════════════════════════
   Nove cartoes quadrados. Na pele de leitura eles ganham o papel de fundo e o
   filete de ouro; a medida quadrada e do original (o Wix pedia w_265,h_265). */
.it-galeria { list-style: none; margin: 8px 0 0; padding: 0;
              display: grid; grid-template-columns: repeat(3, 1fr); gap: 30px 24px; }
.it-cartao a { display: block; text-decoration: none; color: var(--t1); }
.it-cartao img {
  width: 100%; height: auto; aspect-ratio: 1 / 1; object-fit: cover; display: block;
  border-radius: 3px; box-shadow: 0 8px 26px rgba(58,44,20,.28);
}
.it-cartao h2 {
  font-family: var(--title); font-size: 19px; font-weight: 500; letter-spacing: .04em;
  color: var(--h2); margin: .8rem 0 .2rem; text-align: center;
}
.it-mais { display: block; text-align: center; font-family: var(--sans);
           font-size: 12px; letter-spacing: .12em; color: var(--accent); text-transform: uppercase; }
.it-cartao a:hover h2 { color: var(--accent); }

/* ═══ /olimpo-menor: a landing da categoria ═══════════════════════════════
   Ver src/olimpo-menor.mjs. Sao DOIS grupos e eles tem de PARECER diferentes:
   quem tem verbete vira cartao com imagem e link; quem nao tem sai como nome,
   sem link. Se os dois tivessem a mesma cara, o leitor clicaria nos doze. */
.it-galeria.om-poucos {
  /* ⚠ com 2 cartoes numa grade de 3 colunas o segundo fica no meio e sobra um
     buraco a direita, que se le como "faltou carregar". Aqui as colunas nascem
     do numero de cartoes, e o bloco fica centrado. */
  grid-template-columns: repeat(auto-fit, minmax(180px, 230px));
  justify-content: center;
}
.om-falta { margin-top: 52px; padding-top: 26px; border-top: 1px solid var(--linha); }
.om-falta h2 {
  font-family: var(--title); font-size: 22px; font-weight: 500; letter-spacing: .05em;
  color: var(--h2); margin: 0 0 .6rem;
}
.om-falta > p {
  font-family: var(--sans); font-size: 14.5px; line-height: 1.62; color: var(--t2);
  margin: 0 0 1.2rem;
}
.om-nomes {
  list-style: none; margin: 0; padding: 0;
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px 20px;
}
.om-nomes li {
  font-family: var(--title); font-size: 17px; letter-spacing: .04em;
  /* ⚠ --t3 e a tinta mais clara da pele; aqui ela DIZ alguma coisa (o nome
     ainda nao e porta). Medido sobre o papel marfim: 4,7:1 — acima do minimo
     para texto normal, e este esta a 17px. */
  color: var(--t3);
  padding: 7px 0 7px 16px; border-left: 2px solid var(--linha);
}

/* ═══ A GRADE DE UMA SECAO ════════════════════════════════════════════════
   Ver src/secoes.mjs. Cartao de TEXTO, sem imagem: o nome da pagina e o que
   ela e, em duas linhas. A divida das imagens marcadas acabou de chegar a zero
   e 130 miniaturas novas a abririam de novo — o cartao de texto nao deve nada
   a ninguem e diz a mesma coisa.

   ⚠ AS COLUNAS NASCEM DA LARGURA, nao de um numero fechado. A /bestas-e-monstros
   tem 24 itens e a /reinos tem 5; grade de 3 colunas fixas deixaria a segunda
   com um buraco de duas colunas, que se le como "faltou carregar" — e o mesmo
   defeito ja esta registrado em `.it-galeria.om-poucos`. */
.sec-grade-bloco { margin: 48px 0 0; }
.sec-grade-bloco h2 {
  font-family: var(--title); font-size: 25px; font-weight: 500; letter-spacing: .04em;
  color: var(--h2); margin: 0 0 .35rem;
}
.sec-abertura {
  font-family: var(--serif); font-size: calc(var(--corpo) + .5px); line-height: 1.62;
  color: var(--t2); margin: .9rem 0 0; max-width: 62ch;
}
.sec-grade {
  list-style: none; margin: 22px 0 0; padding: 0;
  display: grid; grid-template-columns: repeat(auto-fill, minmax(232px, 1fr)); gap: 14px;
}
.sec-cartao a {
  display: block; height: 100%; text-decoration: none;
  padding: 13px 16px 15px; background: var(--caixa);
  border: 1px solid var(--linha); border-radius: 10px;
  transition: border-color .18s ease;
}
.sec-cartao a:hover { border-color: var(--ouro); }
.sec-nome {
  display: block; font-family: var(--title); font-size: 18px; letter-spacing: .03em;
  color: var(--h2); line-height: 1.25;
}
.sec-cartao a:hover .sec-nome { color: var(--accent); }
.sec-resumo {
  display: block; margin-top: .42rem;
  font-family: var(--serif); font-size: calc(var(--corpo) - 2.5px); line-height: 1.44;
  /* ⚠ --t2 e nao --t3: aqui o resumo E texto para ler, nao rotulo apagado. */
  color: var(--t2);
}

/* ═══ BIBLIOTECA: o indice do blog e os 5 posts ═══════════════════════════ */
.bl-intro { font-family: var(--serif); font-size: calc(var(--corpo) + 2px);
            color: var(--t1); margin-bottom: 26px; }
.bl-lista { list-style: none; }
.bl-item { display: grid; grid-template-columns: 210px minmax(0, 1fr); gap: 22px;
           align-items: start; padding: 22px 0; border-top: 1px solid var(--linha); }
.bl-capa img { width: 100%; height: 150px; object-fit: cover; display: block; border-radius: 3px; }
.bl-item h2 { font-family: var(--title); font-size: 23px; font-weight: 500;
              color: var(--h2); margin: 0 0 .3rem; line-height: 1.25; }
.bl-meta { font-family: var(--sans); font-size: 12px; letter-spacing: .08em;
           text-transform: uppercase; color: var(--t3); margin-bottom: .5rem; }
.bl-resumo { font-family: var(--serif); line-height: 1.55; color: var(--t2); }
.post-meta { font-family: var(--sans); font-size: 13px; color: #a2916c; }
.post-assina, .post-aviso, .post-volta {
  font-family: var(--sans); font-size: 14px; color: var(--t3); margin-top: 1rem;
}
.post-volta { margin-top: 2rem; }

/* ═══ pagina "EM BREVE" (existe assim no original) e a 404 ════════════════ */
.em-breve, .erro404 { text-align: center; padding: 60px 20px 90px; max-width: none; }
.em-breve h1, .erro404 h1 {
  font-family: var(--title); font-size: 40px; font-weight: 500; letter-spacing: .1em;
  color: var(--h2);
}
.erro404 h1 { font-size: 84px; }
.em-breve p, .erro404 p { font-family: var(--serif); font-size: calc(var(--corpo) + 1px);
                          color: var(--t2); margin-top: 14px; }

/* ═══ RODAPE (as duas peles) ══════════════════════════════════════════════ */
.rodape { padding: 30px 20px 44px; text-align: center; }
/* medido no original: cinza claro (#cacaca) a 15px — nao ambar a 13px */
.rodape p { font-family: var(--letreiro); color: #cacaca; font-size: 15px; }
.rp-1 { font-size: 13px; line-height: 1.5; max-width: 900px; margin: 0 auto .6rem; }
.rp-2 { font-size: 12px; opacity: .85; }
/* a ponte para a loja do autor: discreta, mas legivel. ⚠ NAO abaixar de
   13px — quem le esta linha e alguem que se perdeu procurando os livros,
   e uma saida que nao se le nao e saida. */
.rp-loja { font-size: 13px; margin-top: .9rem; opacity: .9; }
.rp-loja a { color: var(--ouro, #c9a227); text-decoration: underline;
  text-underline-offset: 3px; white-space: nowrap; }
.rp-loja a:hover, .rp-loja a:focus-visible { color: #fff; }
body.leitura .rodape { background: var(--noite); }
/* ── o icone do Instagram: existe no original, em todas as paginas ─────────
   28x28 e a medida em que o Wix servia. O arquivo e maior, entao o
   `object-fit: cover` recorta pelo centro, que e o `al_c` do original. */
.rp-redes { list-style: none; margin: .9rem 0 0; padding: 0; display: flex;
            justify-content: center; gap: 14px; }
.rp-redes a { display: inline-block; padding: 8px; line-height: 0; }
.rp-redes img { width: 28px; height: 28px; object-fit: cover; display: block; }

/* ═══════════════════════════════════════════════════════════════════════════
   CELULAR
   ⚠ Regra do projeto: mexeu no desktop, confere o celular. As 92 paginas sao
   varridas em 375 e em 1280 pela trava do testes.mjs — zero rolagem
   horizontal, zero elemento estourando, zero letra abaixo de 12px.
   ═══════════════════════════════════════════════════════════════════════════ */
@media (max-width: 1040px) {
  /* o trilho lateral nao cabe: o sumario desce para dentro do texto */
  .palco > .wrap { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .rail { position: static; margin-bottom: 30px; }
  .sumario { background: var(--caixa); border: 1px solid var(--linha);
             border-left: 3px solid var(--ouro); border-radius: 0 12px 12px 0;
             padding: 16px 18px; }
  .leitura main { max-width: none; }
  .fig-larga { margin-left: 0; margin-right: 0; }
}

@media (max-width: 900px) {
  body { font-size: 18px; }
  .cartao { padding: 26px 20px 36px; margin: 18px auto 40px; }
  .cartao h1 { font-size: 32px; letter-spacing: .14em; }
  .cartao h2 { font-size: 24px; }
  /* entrelinha 22 fixa e confortavel a 22px, mas aperta demais no celular */
  .cartao p, .cartao li { font-size: 18px; line-height: 1.45; text-align: left; }

  body.leitura { font-size: 18px; }
  .wrap { padding: 0 18px; }
  header.doc { padding: 30px 0 30px; }
  .palco > .wrap { padding-top: 26px; padding-bottom: 36px; }
  /* recuo de 1,6em numa coluna estreita come um terco da linha */
  .corpo p + p { text-indent: 1.15em; }
  .corpo h2 { margin-top: 34px; }
  .fig { margin: 24px 0; }

  .bl-item { grid-template-columns: 1fr; gap: 12px; }
  .bl-capa img { height: 180px; }
  .erro404 h1 { font-size: 58px; }
  /* ⚠ O SELO DO PROGRESSO ENCOSTA MAIS NO CANTO EM 375. Numa coluna de 375px
     com 18px de recuo, o texto comeca praticamente onde ele esta — e desde que
     o selo passou a DESCER junto com a bolinha (2026-08-25) ele cruza o texto
     de cima a baixo, em vez de ficar parado num canto. Encostado em 8px ele
     cobre o comeco das linhas, e nao o meio delas.
     ⚠ E o encosto e o MAXIMO que da: nao ha vao lateral nenhum em 375px, entao
     ou o numero acompanha a luz por cima do texto, ou ele desgruda dela. O
     `theautor.com` decidiu o mesmo no fio de luz — la o comentario diz "no
     mobile o % passa sobre o conteudo; mantem VISIVEL". A letra NAO encolhe
     junto: 12px e o piso do site (ver o bloco da barra la em cima). */
  .progresso b { left: 8px; }
  /* ⚠ E O HALO ENCOLHE EM 375. A coluna comeca em x=18 e o brilho de 18px
     alcancava a primeira letra de cada linha — de leve, mas alcancava. Numa
     tela de 1280 sobra margem de sobra e ele nao toca em nada. */
  .progresso i { box-shadow: 0 0 4px rgba(216,166,58,.45), 0 0 8px rgba(216,166,58,.2); }
  .progresso i::after { box-shadow: 0 0 6px 1px rgba(216,166,58,.55), 0 0 12px 3px rgba(216,166,58,.24); }
  /* tres quadrados de 265 nao cabem em 375: viram dois */
  .it-galeria { grid-template-columns: repeat(2, 1fr); gap: 22px 14px; }
  .it-cartao h2 { font-size: 16px; }
  .it-mais { font-size: 12px; }
  /* ⚠ `.it-galeria.om-poucos` tem especificidade MAIOR que a linha acima e
     venceria mesmo aqui dentro: com `minmax(180px,230px)` em 375px os dois
     cartoes virariam uma coluna so, empilhados. Aqui eles ficam lado a lado
     como os da /itens. */
  .it-galeria.om-poucos { grid-template-columns: repeat(2, 1fr); }
  .om-nomes { grid-template-columns: repeat(2, 1fr); gap: 8px 14px; }
  /* no celular a grade da secao vira UMA coluna: a 375 px, duas colunas dao
     158 px de cartao e o resumo sai com 3 palavras por linha. */
  .sec-grade { grid-template-columns: 1fr; gap: 11px; }
  .sec-grade-bloco h2 { font-size: 21px; }
  .om-nomes li { font-size: 16px; }
  .om-falta { margin-top: 38px; }

  /* ⚠ O BOTAO DO MENU FICA AO LADO DA BUSCA, NA MESMA LINHA — pedido do autor
     (2026-08-23): "DO LADO da barra de pesquisa o menu expansivel". A primeira
     tentativa so o empurrou para a direita com `margin-left: auto`, e ele
     continuou numa linha PROPRIA, embaixo da busca: "lateral superior direita"
     era sobre a LINHA, nao sobre o lado.

     ⚠ O `display: contents` no <nav> e o que resolve sem mexer no HTML: ele faz
     o proprio nav deixar de ser uma caixa, e os dois filhos (o botao e a lista)
     viram itens diretos do `.topo`. Sem isso, o botao ficaria preso dentro do
     nav e o nav inteiro e que seria posicionado — levando a lista junto.
     ⚠ E A LISTA CONTINUA OCUPANDO A LINHA INTEIRA quando abre (`flex-basis:
     100%`), senao ela tentaria caber ao lado da busca.
     ⚠ CONFERIDO NA ARVORE DE ACESSIBILIDADE, nao suposto: `display: contents`
     ja escondeu marcos de navegacao em navegadores antigos, entao o
     `aria-label="Categorias"` do nav foi lido de volta na pagina publicada
     depois da mudanca. Ele continua la. */
  .topo { display: flex; flex-wrap: wrap; align-items: center; }
  .busca { flex: 1 1 auto; width: auto; max-width: none; margin: 0 0 0 16px; }
  .menu { display: contents; }
  .mn { flex: 0 0 100%; }
  .menu-sanfona {
    display: flex; flex-direction: column; justify-content: center; gap: 5px;
    width: 46px; height: 42px; margin: 0 16px 0 10px; padding: 0 10px;
    flex: 0 0 auto;
    background: none; border: 1px solid rgba(255,176,48,.45); border-radius: 3px; cursor: pointer;
  }
  .menu-sanfona span { display: block; height: 2px; background: var(--ambar); }
  .mn { display: none; flex-direction: column; padding-bottom: .5rem; }
  .mn.aberto { display: flex; }
  .mn-item > a, .mn-item > button { border: 0; width: 100%; text-align: left;
                                    font-size: 14px; padding: .8rem 1rem; }
  .mn-item:first-child > a { border: 0; }
  /* no toque, submenu abre por clique — nunca por hover */
  .mn-sub { position: static; display: none; border: 0; background: rgba(255,176,48,.07); }
  .mn-tem-filho:hover > .mn-sub, .mn-tem-filho:focus-within > .mn-sub { display: none; }
  .mn-tem-filho.aberto > .mn-sub { display: block; }
  .mn-sub a { font-size: 13px; padding: .6rem 1.6rem; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .fundo-video { display: none; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   A HOME ORGANIZADA — pedido do autor em 2026-08-22:
   "organizar a pagina inicial e deixar identico no desktop e no celular".

   ★ O QUE ESTAVA ERRADO: a migracao derreteu a grade do Wix numa coluna so.
   Os dez atalhos viraram dez linhas de texto centralizado, os brasoes e a capa
   do livro foram para uma coluna de imagens a direita sem relacao com o texto
   ao lado, e a ultima linha da pagina mandava "(Clique nos icones para
   acessar)" com ZERO icone na tela — os icones sao <svg> escrito no HTML, e o
   extrator so via <img>. Foram resgatados: ver src/icones-home.mjs.

   ★ IDENTICO NO DESKTOP E NO CELULAR quer dizer AS MESMAS SECOES, NA MESMA
   ORDEM, com o mesmo conteudo — o que muda e so quantas colunas cabem. Nada
   aqui esconde peca em `display:none` conforme a largura.

   ⚠ AMBAR SO SOBRE O VIDEO. #FFB030 sobre o cartao de pergaminho (branco a 83%)
   da 1,9:1 de contraste, que e ilegivel. Por isso o texto longo vai no cartao
   claro com tinta escura, e titulo/atalho/galeria ficam sobre o video escuro,
   em ambar — que e a cor do menu do site inteiro.
   ═══════════════════════════════════════════════════════════════════════════ */

.home main { width: var(--cartao); max-width: calc(100% - 24px); margin: 0 auto; }
/* ⚠ O MARROM CHAPADO ERA O SEGUNDO PROBLEMA: tres secoes seguidas no mesmo
   #2a1a0e, sem nada separando uma da outra. O degrade da profundidade e o
   filete de ouro no topo diz onde uma acaba e a outra comeca — e a mesma
   gramatica do filete que a pele de leitura ja usa debaixo dos titulos. */
.hm-sec, .hm-abre { margin: 0; text-align: center; }
/* ⚠ AS DUAS CLASSES NO SELETOR SAO OBRIGATORIAS, e isto ja custou uma sessao
   inteira nesta mesma home. `.hm-sec` (0,1,0) e `.hm-biblio` (0,1,0) tem a
   MESMA especificidade, e a media query de 900px escreve `.hm-sec { margin:
   30px 0 }` mais ABAIXO no arquivo — entao no celular ela zerava o
   `margin-inline` daqui e as tres faixas ficavam encaixotadas dentro da calha
   de 12px do `.home main`. No computador nada disso aparece, porque a media
   query nao roda: por isso o defeito sobreviveu a todas as conferencias feitas
   em 1280.
   ⚠ A `.hm-obra` ja tinha sido consertada assim numa sessao anterior — e as
   outras tres ficaram para tras, com o conserto escrito ao lado delas.
   Medido em `_lab/_sondafaixas.mjs`: `margin-inline` vinha `0px` a 375 e
   `-152px` a 1280. */
.hm-sec.hm-biblio, .hm-sec.hm-acervo-faixa, .hm-sec.hm-atalhos {
  position: relative;
  /* de ponta a ponta, com a mesma forma simetrica da faixa do livro */
  margin-inline: calc(50% - 50vw);
  padding: 62px max(20px, calc(50vw - var(--larg) / 2)) 70px;
}

/* ═══ ★★★ A DESCIDA — por que as tres faixas nao tem mais cor PROPRIA ══════
   ★ O PEDIDO (autor, 2026-08-28)
     "nao consegue fazer a cor dessas tres secoes ser unificado... ta muito
      'truncado' feio"

   ★ O QUE ESTAVA ERRADO, e nao era a cor: era o REINICIO.
   As tres faixas usavam o MESMO degrade, cada uma por conta propria —
   `#33200f` no topo, `#241609` no pe. Empilhadas, o pe escuro de uma encostava
   no topo CLARO da seguinte, e nascia um degrau em cada emenda. Tres degraus.
   E a dos atalhos comecava num `#1d1208` muito mais fundo que o `#241609` que
   vinha logo acima: o quarto degrau, e o maior de todos.
   ⚠ Nenhuma delas estava "com a cor errada" sozinha. O defeito so existia na
   JUNTA — que e por que ele sobreviveu a quem olhou faixa por faixa.

   ★★ A REGRA QUE RESOLVE, e ela cabe numa linha:
      **o PE de uma faixa e, exatamente, a CABECA da seguinte.**
        biblio   #33200f -> #2a1a0e
        acervo   #2a1a0e -> #1d1208
        atalhos  #1d1208 -> #100901
   Lidas em sequencia, as tres viram UM degrade so, de 3 telas de altura, que
   desce do marrom aceso ate o quase-preto. A emenda deixa de existir porque
   nao ha diferenca de cor nela — nao porque foi disfarcada.

   ⚠ E OS ATALHOS CONTINUAM SENDO A FAIXA MAIS ESCURA DA PAGINA, que foi pedido
   do autor em 2026-08-23 ("faz mais escuro esse fundo"). O que mudou e que
   agora ela e a mais escura por ser a ULTIMA da descida, e nao por um salto.
   Os dois pedidos convivem: a escuridao virou percurso.

   ⚠⚠ A PRIMEIRA FAIXA NASCE TRANSPARENTE, e este e o degrau que faltava.
   Acima da `hm-biblio` nao ha faixa nenhuma — ha o VIDEO de fundo, que e fixo.
   Uma faixa opaca comecando em `#33200f` cortava o video com uma reta. Os
   primeiros 15% dela agora saem de `rgba(51,32,15,0)`: o video atravessa e se
   dissolve na cor, em vez de bater nela. */
.hm-sec.hm-biblio {
  background:
    radial-gradient(140% 90% at 50% 0%, rgba(255,176,48,.055) 0%, rgba(255,176,48,0) 62%),
    linear-gradient(to bottom, rgba(51,32,15,0) 0%, #33200f 15%, #2a1a0e 100%);
}
.hm-sec.hm-acervo-faixa {
  background:
    radial-gradient(140% 90% at 50% 0%, rgba(255,176,48,.045) 0%, rgba(255,176,48,0) 62%),
    linear-gradient(to bottom, #2a1a0e 0%, #1d1208 100%);
}
.hm-sec.hm-atalhos {
  background:
    radial-gradient(130% 80% at 50% 0%, rgba(255,176,48,.04) 0%, rgba(255,176,48,0) 60%),
    linear-gradient(to bottom, #1d1208 0%, #150d05 55%, #100901 100%);
}

/* ⚠ O FILETE DE OURO DA EMENDA FICOU MAIS BAIXO, e nao foi enfeite: com as
   cores ja casadas, uma linha a 55% de opacidade era a UNICA coisa marcando a
   junta — ela passou a ser o corte que a cor tinha deixado de ser. A da
   primeira faixa continua forte, porque ali ela nao cobre emenda nenhuma: ela
   e a soleira entre o video e a pagina. */
.hm-biblio::before, .hm-acervo-faixa::before, .hm-atalhos::before {
  content: ''; position: absolute; left: 50%; top: 0; transform: translateX(-50%);
  width: min(880px, 84%); height: 1px;
  background: linear-gradient(90deg, rgba(216,166,58,0), rgba(216,166,58,.55), rgba(216,166,58,0));
}
.hm-acervo-faixa::before, .hm-atalhos::before {
  width: min(560px, 62%);
  background: linear-gradient(90deg, rgba(216,166,58,0), rgba(216,166,58,.22), rgba(216,166,58,0));
}

/* ═══ O TITULO DA HOME ═════════════════════════════════════════════════════
   ★ CORRECAO DE 2026-08-22 (sessao 5). Aqui estava escrito que "48px e
   letter-spacing .2em sao MEDIDOS no Wix", e havia trava guardando os dois.
   NAO ERAM MEDIDOS. O <h1> do original esta na captura, e diz:

     <h1 style="font-size:47px; line-height:1.1em; text-align:center">
       <span style="font-size:40px">MITOLOGIA</span><br>
       <span style="font-size:40px">GREGA</span><br>
       <span style="font-size:15px">Registros Oficiais Traduzidos em PT BR</span>

   · os 47px do <h1> sao SOBRESCRITOS pelos spans — nada na pagina sai a 47;
   · `letter-spacing` e `0em` (classe .font_3 do Wix) e `normal` nos spans.
     A cadeia ".2em" nao aparece uma unica vez em toda a captura;
   · a cor e `color_11`, que o Wix define como 255,255,255 — BRANCO, nao ambar;
   · e ha uma sombra dupla, ciano em +3/+3 e vermelha em -3/-3, a 30%.

   Como o numero errado estava embrulhado na palavra "medido", ele sobreviveu
   a duas sessoes. Os valores abaixo saem do arquivo, e a trava (secao 16.2b do
   testes.mjs) agora guarda ESTES.

   ⚠ `clamp` em vez de px fixo: a home tem de caber em 375px sem quebrar
   "MITOLOGIA" ao meio, e o original nem tinha versao de celular para copiar.
   O teto e o tamanho medido; o piso e o que cabe na tela estreita. */
.hm-h1 {
  font-family: var(--titulo); font-weight: 400;
  font-size: clamp(26px, 7.4vw, 40px);
  letter-spacing: 0; line-height: 1.1; color: #fff;
  margin: 34px 0 26px;
  /* ⚠ SAIU A SOMBRA DUPLA CIANO+VERMELHA (o "3D"). Ela e do Wix — medida e
     copiada fielmente na sessao 5 — e o autor pediu para tirar em 2026-08-23:
     "o 3d ta feio". Fica so a sombra escura, que nao e enfeite: e o que segura
     o contraste do titulo branco sobre o video. */
  text-shadow: 0 2px 20px rgba(0,0,0,.7), 0 0 42px rgba(0,0,0,.45);
}
/* cada linha do titulo e um <span> de bloco: e assim que as tres linhas do
   original continuam sendo tres, em qualquer largura */
.hm-h1 span { display: block; }
/* a terceira linha: 15px contra 40px no original — 0,375 do tamanho.
   ⚠ COM PISO DE 12px. A proporcao do Wix, aplicada ao titulo encolhido do
   celular, dava 10,4px em 375px — e a regra deste projeto e que letra se MEDE,
   com 12px de piso. O Wix nao tinha versao de celular para copiar; entre
   copiar uma proporcao ate o ilegivel e manter a proporcao ate onde ela cabe,
   fica a segunda. No desktop o `max()` nao muda nada: .375em de 40px sao os
   15px medidos. */
.hm-h1 .hm-h1-sub {
  font-size: max(12px, .375em); letter-spacing: .04em; line-height: 1.5;
  margin-top: .5em;
}

/* os tres brasoes: a esfinge, o rosto no medalhao e o olho dourado */
.hm-brasoes { list-style: none; display: flex; justify-content: center; align-items: center;
              gap: 26px; margin: 0 0 22px; flex-wrap: wrap; }
.hm-brasoes li { width: 150px; }
.hm-brasoes img { width: 100%; height: auto; display: block; }

/* ⚠ OS NUMEROS ABAIXO FORAM MEDIDOS na captura do Wix renderizada, com
   `_lab/mede-wix.mjs`. Nao sao gosto: sao o original.
     LANCAMENTO  Cinzel 37px, entreletra 5,55px (.15em), ambar
     a uniao     Cinzel, ambar #ffb030, entreletra 3px
   A nossa versao tinha o lancamento a 15px e a uniao em Times branco — dois
   pedacos que no original sao a mesma familia e a mesma cor. */
.hm-lancou {
  font-family: var(--letreiro); font-size: clamp(22px, 2.6vw, 37px);
  letter-spacing: .15em; color: var(--ambar);
  margin: 0 0 22px; line-height: 1.25;
  text-shadow: 0 2px 14px rgba(0,0,0,.75);
}
.hm-uniao {
  font-family: var(--letreiro); font-size: clamp(15px, 1.45vw, 20px);
  letter-spacing: .15em; line-height: 1.7; color: var(--ambar);
  max-width: 1000px; margin: 0 auto; text-shadow: 0 1px 10px rgba(0,0,0,.85);
}

/* ── a coroa de louros que emoldura o titulo ──────────────────────────────
   ⚠ Ela e FUNDO, nao conteudo: fica atras do <h1>, sem entrar no fluxo, e o
   titulo continua sendo o que o leitor de tela le. No original mede 338x306
   em 1440px de largura — aqui a proporcao acompanha a caixa. */
/* ⚠ A COROA PRECISA SER MAIOR QUE O TITULO, e a primeira tentativa errou:
   a 360px o titulo de tres linhas passava POR CIMA dos louros e os botoes
   entravam por baixo deles. No original a coroa mede 338x306 para um titulo de
   270px de largura — ou seja, ela e ~25% mais larga que o texto. Aqui a caixa
   ganha altura propria (o `padding`) para o titulo caber dentro, e a largura
   acompanha a maior linha do titulo. */
/* ⚠ O RESPIRO DO HEROI E MEDIDA, NAO GOSTO: o heroi do original tem ~1500px de
   altura e o nosso vinha comprimido em menos da metade. Espaco em volta de um
   titulo e o que faz ele parecer titulo. */
.hm-abre { padding: 26px 0 8px; }
/* ⚠ O PADDING ERA ASSIMETRICO — 86 em cima, 78 embaixo — e a coroa e centrada
   nesta caixa (`top:50%` + `translate(-50%,-50%)`). Somando as margens do <h1>
   (34/26), sobravam 120px acima do titulo contra 104 abaixo: a coroa saia 8px
   fora de centro em relacao ao proprio titulo que ela emoldura. Nao era gosto,
   era conta — medido em `_lab/_sondacoroa.mjs`. Agora os dois lados sao iguais
   (82 + 30 = 112 de cada lado) e a altura total do bloco nao mudou: 224px
   antes, 224px agora. */
.hm-coroa { position: relative; display: block; padding-block: 82px; }
.hm-coroa .orn-coroa {
  position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
  /* ⚠ "O SIMBOLO TA FEIO" (autor, 2026-08-23). O desenho e o do proprio site,
     mas vinha no laranja saturado do Wix (#FFB030 cheio), que a esse tamanho le
     como adesivo. Aqui ele vira OURO VELHO e perde peso: a coroa passa a
     emoldurar o titulo em vez de disputar com ele. O desenho nao mudou — mudou
     a tinta. */
  width: min(430px, 88vw); height: auto; z-index: 0;
  pointer-events: none;
  /* ⚠ "DIMINUIR A OPACIDADE DELA" (autor, 2026-08-23) — a coroa estava em 1,
     cheia. No celular ela mede 330px de largura e o nome do site mede 26px de
     letra dentro dela: o desenho pesava mais que o titulo que ele deveria
     emoldurar. A tinta ja tinha sido escurecida numa rodada anterior e nao
     bastou, porque o problema nao era a cor, era a PRESENCA.
     ⚠ E 0,5 NAO E NUMERO SOLTO: a trava 21.7 (movimento nao esconde conteudo)
     corta em 0,15, e abaixo disso um elemento conta como apagado. Enfeite a
     0,5 continua visivelmente no ar — e, sendo `aria-hidden`, nao ha texto
     nenhum dependendo desta opacidade para ser lido. */
  opacity: .5;
}
.hm-coroa .orn-coroa path { fill: #b8862c; }
/* a outra metade do centramento: dentro da coroa o titulo tem a MESMA margem em
   cima e embaixo. A regra base (`.hm-h1`, 34/26) e a da media query (22/20)
   valem fora dela; aqui a especificidade 0,2,0 vence as duas, em qualquer
   ordem de arquivo. */
.hm-coroa .hm-h1 { position: relative; z-index: 1; margin-block: 30px; }
/* ⚠ A TERCEIRA LINHA ENCOSTAVA NO LOURO DA DIREITA. Ela e a mais larga das
   tres (o titulo tem duas palavras curtas e uma frase), entao e ela que define
   se o conjunto cabe dentro da coroa. O teto abaixo a mantem dentro do vao. */
.hm-coroa .hm-h1-sub {
  display: block; max-width: 22ch; margin: .55em auto 0; line-height: 1.35;
}

/* o filete que FECHA o heroi.
   ⚠ Ele nasceu como separador entre os botoes e a chamada do livro; a chamada
   saiu da home em 2026-08-27 (ver CHAMADA_FORA em src/home.mjs) e ele ficou,
   agora separando o heroi da faixa da Biblioteca. */
.hm-filete {
  width: min(820px, 86%); height: 1px; margin: 26px auto 24px;
  background: linear-gradient(90deg, rgba(255,176,48,0), rgba(255,176,48,.75), rgba(255,176,48,0));
}

/* o titulo de secao sobre o video, com o filete de ouro embaixo */
/* ⚠ CADA SECAO TINHA UM CABECALHO DIFERENTE — a Biblioteca com uma cara, o
   Objetivo com outra, os LINKS com uma terceira. Um padrao so e o que faz uma
   pagina parecer desenhada em vez de montada. Todas agora: rotulo pequeno em
   ouro escuro, titulo em Cinzel, e o filete curto embaixo. */
.hm-tit {
  font-family: var(--letreiro); font-size: clamp(22px, 2.4vw, 34px); font-weight: 400;
  letter-spacing: .12em; color: #f4e2bd; margin: 0 0 6px; line-height: 1.25;
}
.hm-sec > .hm-tit + * { margin-top: 18px; }
.hm-sec .hm-tit::after {
  content: ''; display: block; width: 62px; height: 2px; margin: 16px auto 34px;
  background: linear-gradient(90deg, rgba(216,166,58,0), var(--ouro), rgba(216,166,58,0));
}

/* ── os tres botoes do heroi (IMPORTANTE! · OBJETIVO · LINKS UTEIS) ───────
   ⚠ ALVO DE TOQUE. No celular estes tres ficam lado a lado e um botao de 12 px
   de altura e um alvo que erra: o `padding` abaixo poe cada um acima de 40 px,
   que e o minimo confortavel para o dedo. */
/* ⚠ O `margin-top` e para os botoes SAIREM DE BAIXO DA COROA: o laco dela
   desce alem da caixa do titulo e o botao do meio ficava por cima do desenho.
   No original os tres ficam livres, logo abaixo dos louros. */
/* ⚠ O `margin-top` DE 16px NAO BASTAVA, e isto foi medido, nao achado: a coroa
   e maior que a caixa que a centra, entao ela transborda ~24px por baixo, e os
   botoes entravam 8px POR DENTRO do laco (`_lab/_sondacoroa.mjs` no 1280:
   `coroa -> botoes: -8px`). O comentario acima ja dizia que a margem existia
   para isto — ela e que estava curta. 52px poem 28px de ar entre o pe do louro
   e o topo do botao. */
.hm-botoes {
  display: flex; flex-wrap: wrap; justify-content: center; gap: 12px 34px;
  margin: 52px 0 0;
}
/* ⚠ OS TRES SAIAM COM LARGURAS DIFERENTES — 152 / 188 / 175px —, porque cada um
   era do tamanho da propria palavra. Lado a lado no computador ja fica torto;
   no celular, onde eles EMPILHAM, vira uma escada. Um piso comum alinha os tres
   sem esticar nenhum: quem for menor cresce ate 188, que e a largura do maior
   (o `IMPORTANTE!`), e nada e cortado se a letra mudar de tamanho. */
.hm-botoes .hm-botao { margin: 0; min-width: 188px; text-align: center; }
/* ── o livro: o cartaz, as tres telas da galeria e o botao ────────────────── */
/* ⚠ ESTA FAIXA E CLARA NO ORIGINAL — e a troca de fundo mais visivel da home.
   Ate 2026-08-23 tudo corria sobre o mesmo bronze, e por isso a nossa home
   "parecia outra" mesmo com o conteudo todo certo. */
/* ⚠ DE PONTA A PONTA. A primeira tentativa pintou o fundo dentro do `.wrap` e
   a faixa saiu como uma CAIXA clara com bronze dos dois lados — no original ela
   atravessa a tela inteira. O truque das duas linhas abaixo tira o bloco da
   coluna sem precisar mexer no template. */
/* ⚠ O CORTE ERA SECO: o heroi escuro terminava e a faixa clara comecava na
   linha seguinte, sem transicao. As duas primeiras linhas do `background`
   fazem a borda de cima e a de baixo escurecerem de leve, e a faixa passa a
   parecer uma PLACA apoiada sobre o fundo, em vez de um retangulo colado. */
/* ⚠ `.hm-sec.hm-obra` (duas classes) e nao `.hm-obra` (uma): a faixa tambem
   tem a classe `.hm-sec`, e a regra de celular `.hm-sec { margin: 30px 0 }`
   mora MAIS ABAIXO no arquivo — com a mesma especificidade ela zerava o
   `margin-inline` e a faixa ficava 12px encolhida dos dois lados no telefone.
   Medido, nao suposto: esq=12, dir=363 numa tela de 375. */
.hm-sec.hm-obra {
  /* ⚠ A FAIXA ERA CLARA, E DEIXOU DE SER POR PEDIDO DO AUTOR (2026-08-23):
     "o fundo onde tem a galeria do livro deveria ser igual a sessao de cima".
     A secao de cima e o HEROI, que nao tem fundo proprio: ele deixa ver o
     video, que e `position: fixed` atras da pagina inteira. Entao "igual" aqui
     nao e copiar uma cor — e NAO PINTAR NADA, e deixar o mesmo video e o mesmo
     veu aparecerem. Herdar o fundo e mais fiel ao pedido do que imitar a cor.

     ⚠ ESTA REGRA JA FOI DUAS COISAS ANTES: um cinza chapado (#cbc6be) e depois
     o papel claro do site. As duas eram fidelidade ao Wix, que tem a faixa
     clara ali. O autor viu no ar e decidiu outra coisa — e a decisao dele vence
     a captura, como venceu nos brasoes e na sombra do titulo. Fica registrado
     para ninguem "consertar" de volta olhando o original.

     ⚠ E SAIRAM AS BORDAS DE PLACA junto (os dois degrades escuros no topo e no
     pe, mais o brilho branco de 1px). Eles existiam para a faixa clara nao
     parecer um retangulo colado entre duas secoes quentes. Sem faixa, nao ha
     retangulo — e uma emenda desenhada no meio de um fundo continuo seria uma
     costura visivel onde agora nao ha nenhuma. */
  background: transparent;
  padding: 54px 20px 58px;
  margin: 0;
  /* ⚠ `width:100vw` + `margin-left` compensa UM lado so, e no celular a faixa
     saia 12px deslocada (medido: esq=12, dir=387 numa tela de 375). O
     `margin-inline` negativo tira os dois lados ao mesmo tempo e a largura se
     resolve sozinha — simetrico por construcao, sem depender do padding do pai. */
  margin-inline: calc(50% - 50vw);
  margin-block: 0;
}
/* ⚠ O FUNDO E DE PONTA A PONTA, O CONTEUDO NAO. Sem estas duas linhas o
   `100vw` levava tambem os filhos: a galeria de tres telas do livro se
   esparramava pela tela inteira, escapando pelas duas bordas e desalinhada.
   Fundo largo, coluna contida — que e o que o original faz. */
/* ⚠ A ESPECIFICIDADE PRECISA VENCER `.hm-livro { margin: 0 }`, que vem mais
   abaixo no arquivo: com a mesma especificidade, o `margin: 0` apagava o
   `auto` e a galeria colava na esquerda em vez de centrar. `.hm-obra .hm-livro`
   tem duas classes; a regra de baixo tem uma. */
.hm-obra > * { max-width: var(--cartao); margin-left: auto; margin-right: auto; }
.hm-obra .hm-livro,
.hm-obra .hm-brasoes,
.hm-obra .hm-cartaz,
.hm-obra .hm-ver { margin-left: auto; margin-right: auto; }
.hm-obra .hm-livro { max-width: var(--cartao); }
.hm-obra .hm-brasoes { max-width: 720px; margin-bottom: 34px; }
.hm-obra .hm-brasoes { margin-bottom: 34px; }
/* ⚠ O "VER" E A UNICA CHAMADA DE VENDA DA HOME e estava como botao fantasma,
   quase invisivel sobre o papel claro. Agora e cheio, em ouro escuro sobre
   marrom — o unico elemento da pagina com peso de botao de verdade. */
.hm-obra .hm-ver a {
  background: linear-gradient(180deg, #3a2410, #2a1a0e);
  color: #f7d98a; border: 1px solid rgba(154,116,32,.75);
  padding: 15px 54px; font-size: 15px;
  box-shadow: 0 8px 22px rgba(42,26,14,.28);
  transition: transform .28s ease, box-shadow .28s ease, color .28s ease;
}
.hm-obra .hm-ver a:hover, .hm-obra .hm-ver a:focus-visible {
  transform: translateY(-2px); color: #ffe9b0;
  box-shadow: 0 12px 30px rgba(42,26,14,.36);
}
.hm-cartaz { max-width: 560px; margin: 0 auto 18px; }
.hm-cartaz img { width: 100%; height: auto; display: block; border-radius: 3px; }
.hm-cartaz {
  background: #fffdf6; border: 1px solid rgba(146,106,38,.22);
  border-radius: 4px; padding: 14px;
  box-shadow: 0 16px 40px rgba(58,44,20,.18);
}
/* ⚠ AS TRES TELAS TEM PROPORCOES DIFERENTES e, soltas, ficavam com o pe
   desencontrado — parecia defeito de carregamento. O `aspect-ratio` iguala as
   tres sem esticar nenhuma (o `object-fit: cover` corta o excedente). */
.hm-livro { list-style: none; display: grid; grid-template-columns: repeat(3, 1fr);
            gap: 16px; margin: 0; align-items: start; }
/* ⚠ `cover` num 4/3 cortava mal: as tres telas sao fotos de produto VERTICAIS,
   e o corte comia a metade de cima de duas delas (a do meio saia quase toda
   escura). `contain` com altura fixa mostra a foto inteira e ainda alinha as
   tres pelo mesmo pe — que era o problema original. Sobre papel claro, o vao
   que sobra ao lado nao aparece. */
/* ═══ A GALERIA DE PRODUTO ══════════════════════════════════════════════════
   Portada do krvaletius.com (o outro site do autor) em 2026-08-23. O desenho e
   o mesmo; muda a PELE, porque la ela vive sobre fundo escuro e aqui sobre o
   papel claro da faixa do livro — as setas e a moldura tiveram de inverter.

   ⚠ ENQUADRADA NA SECAO, e nao um cartao no meio dela: o autor pediu "full na
   secao com o ver". A galeria toma a largura util da faixa e o VER fica logo
   abaixo, centrado. */
.hm-obra .w-galeria {
  position: relative; margin: 0 auto; max-width: 720px;
  background: #fffdf6; border: 1px solid rgba(146,106,38,.22);
  border-radius: 5px; padding: 16px;
  box-shadow: 0 18px 46px rgba(58,44,20,.18);
}
/* ⚠ SEM JAVASCRIPT A GALERIA E UMA PILHA, E ISSO E DE PROPOSITO.
   A primeira versao punha `.gal-slide { opacity: 0 }` direto — e a trava
   "nenhuma regra apaga conteudo fora de html.mv" acendeu, com razao: tres das
   quatro fotos do livro ficariam invisiveis para sempre em quem nao roda
   script. E exatamente o defeito que derrubou ~70 elementos no outro site do
   autor. Agora o palco so vira carrossel depois que `galeria.js` escreve a
   classe `e-js`; antes disso as quatro aparecem empilhadas. */
.gal-palco { border-radius: 3px; background: #efe7d5; display: grid; gap: 10px; }
.gal-palco.e-nada { display: block; }
.w-galeria.e-js .gal-palco {
  position: relative; aspect-ratio: var(--gal-prop, 1 / 1);
  overflow: hidden; display: block; gap: 0;
}
/* ⚠ movimento CONTINUO, nunca em degraus — regra do autor. A troca de foto e
   um esmaecimento, nao um corte. */
.w-galeria.e-js .gal-slide {
  position: absolute; inset: 0; opacity: 0;
  transition: opacity .45s ease; pointer-events: none;
}
.w-galeria.e-js .gal-slide.e-ativo { opacity: 1; pointer-events: auto; }
/* sem JS as setas e a fita nao levam a lugar nenhum: saem de cena */
.w-galeria:not(.e-js) .gal-seta,
.w-galeria:not(.e-js) .gal-fita { display: none; }
.gal-slide picture, .gal-slide img { display: block; width: 100%; height: 100%; object-fit: cover; }

/* a seta e um chevron fino, sem caixa. ⚠ Sobre papel claro ela precisa ser
   ESCURA — no outro site e branca, porque la o fundo e escuro. */
.gal-seta {
  position: absolute; top: 50%; transform: translateY(-50%); z-index: 3;
  width: 40px; height: 58px; border: 0; background: transparent; cursor: pointer;
  color: #6b4d18; opacity: .7; padding: 0;
  transition: opacity .28s ease, color .28s ease;
}
.gal-seta:hover, .gal-seta:focus-visible { opacity: 1; color: #4a3410; }
.gal-seta svg { width: 100%; height: 100%; }
.gal-seta.e-ant { left: -14px; } .gal-seta.e-prox { right: -14px; }

/* a fita de miniaturas */
.gal-fita { display: flex; gap: 8px; justify-content: center; margin-top: 12px; flex-wrap: wrap; }
.gal-mini {
  border: 0; padding: 0; background: transparent; cursor: pointer; line-height: 0;
  opacity: .55; transition: opacity .28s ease, outline-color .28s ease;
  outline: 2px solid transparent; outline-offset: 2px; flex: 0 0 auto;
  width: var(--mini-l, 92px); height: var(--mini-l, 92px); border-radius: 3px; overflow: hidden;
}
.gal-mini.e-ativo, .gal-mini:hover, .gal-mini:focus-visible { opacity: 1; }
.gal-mini.e-ativo { outline-color: var(--accent); }
.gal-mini img, .gal-mini picture { display: block; width: 100%; height: 100%; object-fit: cover; }

.hm-ver { margin-top: 28px; }
.hm-botao, .hm-ver a {
  display: inline-block; font-family: var(--letreiro); font-size: 14px;
  letter-spacing: .2em; text-transform: uppercase; text-decoration: none;
  color: var(--ambar); padding: 11px 30px; border: 1px solid rgba(255,176,48,.6);
  border-radius: 3px; background: rgba(0,0,0,.35);
}
.hm-botao:hover, .hm-ver a:hover { background: rgba(255,176,48,.16); }
/* ⚠ ESTA REGRA PRECISA VIR DEPOIS DA DE CIMA, e isso ja me pegou uma vez hoje:
   `.hm-botao-forte` e `.hm-botao` tem a MESMA especificidade (0,1,0), entao
   quem vence e quem vem por ultimo no arquivo. Escrita antes, ela era
   sobrescrita calada e o botao saia igual aos outros dois. */
.hm-botao-forte {
  /* o IMPORTANTE! e o unico dos tres que leva a uma PAGINA; os outros dois
     rolam a propria home. A diferenca de peso diz isso sem precisar escrever. */
  background: rgba(255,176,48,.14);
  border-color: var(--ambar);
}

/* ── o cartao claro: o unico texto longo da home ──────────────────────────── */
/* ⚠ ESCURO, NAO CLARO. A pele anterior punha esta prosa num cartao de
   pergaminho com tinta escura; o original e fundo escuro com titulo em ambar
   (#ffb030) e texto em creme (#f7eab3) — medido. */
.hm-acervo {
  text-align: left; background: none; border: 0; box-shadow: none;
  /* ⚠ 1060px de linha e largo demais para LER: passa de 110 caracteres por
     linha, e o olho perde o começo da seguinte. A regua deste projeto ja diz
     isso na pele de leitura (`--medida: 690px`, 72 caracteres). Aqui a caixa
     abre um pouco mais que a dos verbetes — e texto de apresentacao, nao de
     estudo — mas nao chega perto dos 1060. */
  max-width: 800px; margin: 0 auto; padding: 8px 20px 10px; color: #f7eab3;
}
/* ⚠ ERA TIMES NEW ROMAN — a letra de reserva, nao a do site. A pele de leitura
   dos 92 verbetes usa EB Garamond, e este e o unico texto longo da home: nao ha
   razao para ele ser lido noutra letra que o resto da casa. */
.hm-acervo p {
  font-family: var(--serif); font-size: 18.5px;
  color: #f0e2c0; margin-bottom: 1.25em; line-height: 1.72;
}
.hm-acervo p:last-child { margin-bottom: 0; }
/* ⚠ RECUO, pedido do autor (2026-08-23). E o mesmo criterio da pele de leitura
   dos verbetes: recuo a partir do SEGUNDO paragrafo. O primeiro depois de um
   titulo nunca recua — recuo e travessao de paragrafo servem para dizer "outro
   paragrafo comecou", e o primeiro nao precisa dizer isso. */
.hm-acervo p + p { text-indent: 1.6em; }
.hm-acervo h2, .hm-acervo h3 { color: var(--ambar); }
/* "Objetivo" e "Conhecimento fiel e gratuito": duas linhas, centradas */
/* ⚠ `.hm-acervo .hm-obj-1` e nao `.hm-obj-1`: a regra `.hm-acervo p` tem
   especificidade (0,1,1) — classe MAIS elemento — e vencia a de classe sozinha
   (0,1,0) qualquer que fosse a ordem no arquivo. Os dois titulos encolhiam para
   18,5px e viravam texto comum. E o terceiro tropeco do mesmo tipo nesta
   sessao: quando uma regra "nao pega", o problema quase sempre e quem vence. */
.hm-acervo .hm-obj-1 {
  font-family: var(--letreiro); font-size: clamp(26px, 3.2vw, 45px);
  letter-spacing: .15em; color: #f4e2bd; text-align: center; margin: 0;
  line-height: 1.2;
}
.hm-acervo .hm-obj-2 {
  font-family: var(--letreiro); font-size: clamp(17px, 1.9vw, 26px);
  letter-spacing: .15em; color: var(--ouro); text-align: center;
  margin: 12px 0 4px; line-height: 1.3;
}
/* o filete curto, o mesmo padrao dos outros cabecalhos de secao */
.hm-acervo .hm-obj-2::after {
  content: ''; display: block; width: 62px; height: 2px; margin: 18px auto 34px;
  background: linear-gradient(90deg, rgba(216,166,58,0), var(--ouro), rgba(216,166,58,0));
}
/* ⚠ AQUI HAVIA UMA REGRA QUE VIROU ARMADILHA. Ela pegava o primeiro `p`
   depois do subtitulo e o pintava de ambar em caixa alta — porque no texto do
   Wix aquele paragrafo era um TITULO ("O Maior Acervo Online Brasileiro de
   Mitologia Grega"). Quando o autor mandou refazer o texto (2026-08-23) aquele
   titulo deixou de existir, e a regra passou a pintar a primeira frase do texto
   novo, que e corpo. Regra que mira POSICAO envelhece quando o conteudo muda de
   forma; foi removida junto com o motivo dela. */
.hm-tit-escuro {
  font-family: var(--letreiro); font-size: 30px; font-weight: 400; letter-spacing: .1em;
  color: var(--tinta); text-align: center; margin: 0 0 .6rem;
}
.hm-objetivo {
  font-family: var(--letreiro); font-size: 15px; letter-spacing: .16em;
  text-transform: uppercase; color: #7a4a12; text-align: center; margin-bottom: 1.6rem;
}

/* ── a Biblioteca: as cinco capas ─────────────────────────────────────────── */
/* ═══ OS CINCO CARTOES DA BIBLIOTECA ══════════════════════════════════════
   ⚠ ELES SAO O UNICO CONTEUDO AUTORAL DA HOME — o resto da pagina e menu,
   vitrine e apresentacao. Ate aqui eram cinco imagens soltas com uma legenda
   embaixo; agora cada um e uma PLACA, com a mesma logica de leitura do resto
   do site: figura, titulo, resumo e assinatura, nessa ordem e nessa hierarquia. */
.hm-posts { list-style: none; display: grid; grid-template-columns: repeat(5, 1fr);
            gap: 22px 20px; margin: 0; align-items: stretch; }
.hm-posts li { display: flex; }
.hm-posts a {
  display: flex; flex-direction: column; width: 100%;
  text-decoration: none; color: #f0e2c8;
  padding: 10px 10px 14px; border-radius: 4px;
  background: linear-gradient(180deg, rgba(255,214,150,.055), rgba(255,214,150,.02));
  border: 1px solid rgba(216,166,58,.22);
  /* ⚠ movimento CONTINUO, nunca em degraus — regra do autor, ja registrada
     neste projeto para a animacao de rolagem. Vale para o toque tambem. */
  transition: transform .28s ease, background-color .28s ease, border-color .28s ease;
}
.hm-posts a:hover, .hm-posts a:focus-visible {
  transform: translateY(-4px);
  background: rgba(255,176,48,.07);
  border-color: rgba(255,176,48,.42);
}
.hm-posts img { width: 100%; height: auto; aspect-ratio: 3 / 4; object-fit: cover;
                display: block; border-radius: 3px; box-shadow: 0 8px 24px rgba(0,0,0,.5); }
/* o resumo empurra a assinatura para o pe do cartao: as cinco linham embaixo */
.hm-post-resumo { flex: 1; }
.hm-post-tit { display: block; font-family: var(--leitura); font-size: 16.5px;
                line-height: 1.32; margin-top: .7rem; color: #f6e9cf; }
.hm-post-data { font-family: var(--letreiro); font-size: 12px;
                letter-spacing: .1em; color: var(--ambar); opacity: .85; }
/* ⚠ O RESUMO E O AUTOR VOLTARAM EM 2026-08-23. O cartao do Wix mostra QUATRO
   coisas — titulo, resumo, autor e data — e o nosso mostrava duas. Sem resumo o
   leitor nao tem por que clicar; sem o autor, a Biblioteca deixa de parecer o
   que ela e: o unico conteudo AUTORAL assinado do site. */
.hm-post-resumo {
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical;
  overflow: hidden;
  font-family: var(--leitura); font-size: 13.5px; line-height: 1.45;
  /* ⚠ NAO E `opacity`. O texto do cartao ja e claro sobre o video escurecido;
     baixar a opacidade derrubaria o contraste do resumo abaixo do minimo. Esta
     e uma cor propria, medida sobre o mesmo fundo do titulo. */
  color: #cdbea3; margin-top: .35rem;
}
.hm-post-meta {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px;
  margin-top: .4rem;
}
.hm-post-autor {
  font-family: var(--letreiro); font-size: 12px; letter-spacing: .08em;
  color: #f0e2c8;
}
.hm-posts a:hover .hm-post-tit { color: var(--ambar); }

/* ── os dez atalhos, com o desenho original de volta ──────────────────────── */
.hm-atalhos { position: relative; }
/* ⚠ O EMBLEMA fica ATRAS dos icones e nao pode capturar clique. No original
   mede 976x606 px e e do mesmo ambar dos icones, bem apagado. */
.hm-emblema {
  position: absolute; left: 50%; top: 52%; transform: translate(-50%, -50%);
  /* ⚠ SEM `opacity`, E ISSO E DE PROPOSITO. A 0,16 o emblema lia como uma
     mancha marrom atras dos icones; baixar para 0,07 resolveria, mas cruzaria o
     corte da trava "nenhuma regra apaga conteudo fora de html.mv" — que existe
     porque no outro site do autor ~70 elementos ficaram invisiveis para sempre.
     A trava le CSS e nao tem como saber que este SVG e `aria-hidden` e enfeite.
     Afrouxar a trava por causa de um enfeite seria trocar uma protecao real por
     uma conveniencia: em vez disso a transparencia vem do FILL do proprio
     desenho, que nao e regra de apagar e ainda evita uma camada de composicao. */
  width: min(980px, 96%); z-index: 0; pointer-events: none;
}
.hm-emblema svg { width: 100%; height: auto; display: block; }
.hm-emblema svg path { fill: rgba(216,166,58,.085); }
.hm-atalhos > .hm-tit, .hm-grade, .hm-atalhos > .hm-aviso { position: relative; z-index: 1; }
/* medido: o rotulo da secao e 60px com 9px de entreletra */
.hm-atalhos > .hm-tit { font-size: clamp(30px, 4.2vw, 60px); letter-spacing: .15em; }
/* ⚠ ERA `grid` DE 5 COLUNAS, E ISSO SO FECHAVA COM 10 ATALHOS. Saindo "A
   Sociedade kosmos" (autor, 2026-08-23) sobraram 9: a fileira de baixo ficou
   com 4, encostada a esquerda, e 252px de buraco a direita — medido em
   `_lab/_sondagrade.mjs`. Grade nao centra fileira incompleta; flex centra.
   ⚠ A LARGURA DO ITEM E A MESMA CONTA DAS 5 COLUNAS (o inteiro menos os 4 vaos,
   dividido por 5), entao a fileira cheia sai identica a de antes. O que muda e
   so o que acontece quando a ultima nao enche. */
.hm-grade { list-style: none; display: flex; flex-wrap: wrap; justify-content: center;
            gap: 26px 18px; margin: 0; }
.hm-grade > .hm-atalho { flex: 0 0 calc((100% - 4 * 18px) / 5); }
/* ⚠ o alvo do toque e o CARTAO inteiro (ver o comentario em src/home.mjs), e
   ele precisa RESPONDER — um alvo grande que nao muda de aparencia nao parece
   clicavel. A transicao e continua, como manda a regra do autor. */
.hm-atalho a {
  display: flex; flex-direction: column; align-items: center; gap: 10px;
  text-decoration: none; padding: 14px 6px; border-radius: 6px;
  border: 1px solid transparent;
  transition: transform .28s ease, background-color .28s ease, border-color .28s ease;
}
.hm-atalho a:hover, .hm-atalho a:focus-visible {
  background: rgba(255,176,48,.10); border-color: rgba(255,176,48,.4);
  transform: translateY(-3px);
}
/* ⚠ a medida do desenho vem DAQUI, nao do arquivo: os <svg> do Wix vinham com
   width/height de 200px cravados, e dez deles a 200px empurram a pagina. */
.hm-ic { display: block; width: 72px; height: 72px; }
.hm-ic .ic-arte { width: 100%; height: 100%; display: block; }
/* medido no original: 20px com 3px de entreletra (.15em) */
.hm-rot {
  font-family: var(--letreiro); font-size: clamp(14px, 1.5vw, 20px); letter-spacing: .15em;
  color: var(--ambar); text-align: center; line-height: 1.3;
}
.hm-aviso { font-family: var(--leitura); font-size: 14px; color: #d9c6a4;
            opacity: .85; margin-top: 20px; }

/* o que sobrou sem lugar: aparece, e feio de proposito */
.hm-resto { border-left: 4px solid #b00; }

@media (max-width: 900px) {
  /* no celular o `clamp` ja cuida do tamanho; aqui so a margem */
  .hm-h1 { margin: 22px 0 20px; }
  /* ⚠ O VAO ATE OS BOTOES E OUTRO AQUI, e a conta explica: os 52px do
     computador existem para vencer os ~24px em que a coroa transborda a caixa
     que a centra. No celular ela e menor que a caixa (sobra 5px), entao os
     mesmos 52 viravam 57px de vazio — medido em `_lab/_sondacoroa.mjs`. 28
     devolve ~33px, o mesmo ar do computador. */
  .hm-botoes { margin-top: 28px; }
  /* ⚠ OS TRES FICAM LADO A LADO NO CELULAR — pedido do autor (2026-08-23):
     "os botoes deveriam estar um do lado do outro, pequenos, melhor separados".
     Eles empilhavam por causa do `min-width: 188px` que eu mesmo tinha posto
     para igualar as larguras: 3 x 188 nao cabem em 375px, entao o flex-wrap
     quebrava a linha e virava a escada que ele viu.
     ⚠ O PISO NAO SOME, ELE MUDA DE UNIDADE. Igualar continua valendo — o que
     nao vale e igualar por um numero pensado para a tela grande. Aqui a largura
     e uma fracao da tela: os tres dividem o espaco util em partes iguais, entao
     ficam do mesmo tamanho POR CONSTRUCAO, em qualquer telefone.
     ⚠ E `nowrap` E DE PROPOSITO: sem ele, um telefone de 320px voltaria a
     quebrar a linha em silencio. Com ele, os tres encolhem juntos — que e o que
     ele pediu ("pequenos"). */
  .hm-botoes { flex-wrap: nowrap; gap: 8px; justify-content: center; }
  .hm-botoes .hm-botao {
    min-width: 0; flex: 1 1 0;
    /* ⚠ 12px E O PISO DO PROJETO, e a primeira tentativa aqui foi 11px — o
       `foto.mjs` acusou na hora (`letra<12: a.hm-botao 11px`). "Pequenos"
       (palavra do autor) nao passa por cima da regua de legibilidade: o que
       encolhe e o padding e a entreletra, nao a letra. */
    padding: 10px 3px; font-size: 12px; letter-spacing: .04em;
  }
  .hm-brasoes { gap: 14px; }
  .hm-brasoes li { width: 88px; }
  .hm-uniao { font-size: 17px; }
  /* ⚠ ERA `margin: 30px 0` E VIROU ZERO — pedido do autor (2026-08-23): "não
     deixe estes vão, unifique". As faixas ja iam de ponta a ponta na
     horizontal; o que sobrava eram CINCO tiras de 30px do fundo da pagina
     aparecendo entre uma faixa e a seguinte (e entre a ultima e o rodape),
     medidas em `_lab/_sondavaos.mjs`. Agora as faixas se encostam e a pagina
     desce como uma coisa so.
     ⚠ E O AR NAO SUMIU JUNTO: cada faixa ja tem 62px de padding em cima e 70
     embaixo. O respiro passa a ser DE DENTRO da faixa — que e o certo, porque
     assim ele acompanha o fundo em vez de abrir um buraco nele.
     ⚠ ESTA E A MESMA REGRA que zerava o `margin-inline` das tres faixas (§1i do
     CONTINUAR). Ela ja fez estrago duas vezes; se precisar voltar a existir,
     que seja com as duas classes no seletor, e nunca sobre `.hm-sec` solto. */
  .hm-sec, .hm-abre { margin: 0; }
  .hm-tit { font-size: 19px; }
  /* as mesmas secoes, na mesma ordem — so o numero de colunas muda */
  .hm-posts { grid-template-columns: repeat(2, 1fr); gap: 16px 12px; }
  /* ⚠ ESTA LINHA PEDIA `grid-template-columns` — que virou letra morta quando a
     grade passou a ser flex (ver o comentario la em cima). Com 9 atalhos em 2
     colunas a ultima fileira tem 1 item, e e justamente ele que precisa ficar
     centrado em vez de encostado. */
  .hm-grade { gap: 16px 10px; }
  .hm-grade > .hm-atalho { flex: 0 0 calc((100% - 10px) / 2); }
  .hm-ic { width: 58px; height: 58px; }
  .hm-rot { font-size: 13px; }
  .hm-livro { gap: 10px; }
  .hm-livro li { padding: 8px; }
  .hm-tit-escuro { font-size: 22px; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   O MOVIMENTO — "com animacao conforme rolamos" (pedido do autor, 2026-08-22)

   ⚠ A REGRA DE OURO DESTE BLOCO: nada aqui esconde conteudo por conta propria.
   Tudo esta debaixo de `html.mv`, e essa classe quem escreve e o
   `assets/js/movimento.js`. Sem script, sem classe; sem classe, a pagina
   aparece inteira e opaca. Ja houve um site do autor em que ~70 elementos
   ficavam invisiveis para sempre porque a animacao dependia de JS que nao
   chegava a rodar — isso nao se repete.

   ⚠ E movimento CONTINUO, nao em degraus: o `--e` que chega aqui e um numero
   que sobe suave de 0 a 1 conforme a peca sobe na tela, amortecido a 9% por
   quadro no JS. O CSS so LE esse numero. Nao ha `transition` de entrada
   nenhuma — a suavidade e o proprio numero, quadro a quadro. Colocar
   `transition` por cima somaria duas suavizacoes e daria arraste.
   ═══════════════════════════════════════════════════════════════════════════ */
html.mv .corpo .sec > h2,
html.mv .corpo .sec > .filete,
html.mv .corpo .fig,
html.mv .corpo .cit,
html.mv .corpo .fam,
html.mv .continue,
html.mv .it-cartao,
html.mv .bl-item,
/* ⚠ A HOME ENTROU AQUI EM 2026-08-28. Ela era a unica pagina do site que nao
   se movia — os alvos todos comecavam por `.corpo`, que ela nao tem. */
html.mv .hm-biblio > .hm-tit,
html.mv .hm-atalhos > .hm-tit,
html.mv .hm-acervo > .hm-obj-1,
html.mv .hm-acervo > .hm-obj-2,
html.mv .hm-posts > li,
html.mv .hm-grade > li {
  opacity: calc(.18 + var(--e, 1) * .82);
  transform: translate3d(0, calc((1 - var(--e, 1)) * 16px), 0);
  will-change: opacity, transform;
}
/* ⚠⚠ O PARALAXE DO EMBLEMA GUARDA O CENTRAMENTO. O desenho e centrado por
   `translate(-50%,-50%)`; escrever so o `translate3d` do paralaxe APAGARIA
   esse centramento e jogaria o emblema para o canto inferior direito. Os dois
   viajam juntos, nesta ordem. O `--px` quem escreve e o movimento.js. */
html.mv .hm-emblema {
  transform: translate(-50%, -50%) translate3d(0, var(--px, 0px), 0);
  will-change: transform;
}
/* o filete de ouro cresce da esquerda junto com o titulo — e o mesmo numero */
html.mv .corpo .sec > .filete {
  transform: none;
  width: calc(74px * var(--e, 1));
  opacity: var(--e, 1);
}
/* a arte do cabecalho ganha `scale` no JS; sem ele, fica parada e certa */
header.doc .doc-arte { will-change: transform; }

@media (prefers-reduced-motion: reduce) {
  /* cinto e suspensorio: mesmo que a classe entre, aqui nada se move */
  html.mv .corpo .sec > h2, html.mv .corpo .sec > .filete, html.mv .corpo .fig,
  html.mv .corpo .cit, html.mv .corpo .fam, html.mv .continue,
  html.mv .it-cartao, html.mv .bl-item,
  html.mv .hm-biblio > .hm-tit, html.mv .hm-atalhos > .hm-tit,
  html.mv .hm-acervo > .hm-obj-1, html.mv .hm-acervo > .hm-obj-2,
  html.mv .hm-posts > li, html.mv .hm-grade > li {
    opacity: 1 !important; transform: none !important; width: auto;
  }
  html.mv .corpo .sec > .filete { width: 74px; }
  /* ⚠ `transform: none` MATARIA O CENTRAMENTO do emblema — aqui ele volta a
     ser so o centramento, sem o paralaxe. */
  html.mv .hm-emblema { transform: translate(-50%, -50%) !important; }
}

/* ═══ CELULAR: o que a pele nova precisa ajustar ═════════════════════════ */
@media (max-width: 1040px) {
  /* ⚠ O NUMERO DA SECAO SAI DA MARGEM. No desktop ele mora em `left: -54px`,
     que cabe porque a coluna de leitura comeca depois do trilho de 232 px.
     Sem trilho, esses -54 px caem FORA da tela e viram rolagem horizontal —
     o defeito que a trava de 375 px pega. Aqui ele sobe para cima do titulo. */
  .corpo .sec > h2::before {
    position: static; display: block; margin-bottom: 4px;
  }
  .corpo .sec > h2 { margin-top: 46px; }
}

@media (max-width: 900px) {
  /* a capitular num celular: 3,42em de Cinzel sobre uma coluna de 339 px
     rouba metade da linha. Duas linhas e meia e o ponto em que ela ainda e
     capitular e a linha ainda cabe. */
  .lead.capitular::first-letter { font-size: 2.9em; line-height: .8; }
  .corpo h3 { font-size: 13.5px; letter-spacing: .09em; padding-left: 22px; }
  .cit { padding: 13px 14px 11px 18px; }
  .fig { margin: 28px 0; }
}
