/* css/sitio-web.css — a camada à mão sobre o sistema do sítio.

   Carregada DEPOIS de ds/sitio/{tokens,sistema,elementos,elementos-sitio}.css
   e SÓ pela home. As outras quatro superfícies continuam em /ds/ + ds-web.css
   + registro.css + chrome.css, que falam as primitivas antigas.

   Numerado por seção (ver os cabeçalhos "── N · ... ──" abaixo — a lista
   aqui é só o resumo dos dois blocos originais; a partir da seção 5 são
   achados/pedidos posteriores, cada um com o raciocínio no próprio bloco):

   1. A LARGURA. O pacote fixa .sitio em 1440px, medida da prancha. Num
      viewport menor isso estoura na horizontal (achado 2 do
      ACHADOS-DE-ADOCAO.md). Soltar aqui, e não no token copiado: um export
      novo desfaz edição no pacote. Numa tela MAIOR que 1440 (Task 28,
      mudança 1) o teto capava o campo/papel/rodapé lendo como cartão —
      removido; o que precisa ficar em 1440 (.cromo, .heroi) trava sozinho.

   2. A ESCALA. Os papéis do sítio são pixel fixo calibrado a 1440 — manchete
      64/68, seção 40/48. A 390px a manchete dá dezesseis caracteres por linha.
      Redeclarados em clamp() ancorado: a 1440 o valor bate EXATO com o do
      pacote, e degrada sozinho abaixo disso.

   NOTA — famílias compartilhadas: o achado 5 (elementos.css na escala de
   vídeo, 22-30px) parece pedir um re-base aqui pra janela da busca, mas
   elementos-sitio.css já faz esse trabalho, calibrado à mão. Ver o bloco
   "Famílias compartilhadas" abaixo antes de mexer nisso de novo. */

/* ── 1 · A largura ──────────────────────────────────────── */

/* MENOR (revisão de acessibilidade 2026-08-13): --sitio-sangria só existia
   dentro do @media abaixo — acima de 680px o token não existe de verdade,
   e as duas leitoras (aqui embaixo e .cromo__menu em home.css) sempre
   caíam no fallback ", 32px" por acaso baterem com o valor pretendido.
   Dependência latente: um token que só nasce num escopo estreito, mascarado
   por um número solto igual em dois arquivos. Declarado aqui, no escopo
   raiz — é o valor real acima de 680px, não um fallback de coincidência —
   e os dois `var(--sitio-sangria, 32px)` perdem o segundo argumento, já
   que o token agora sempre existe. */
:root { --sitio-sangria: 32px; }

/* MENOR (Task 28, mudança 1): body.sitio tinha `max-width:1440px`, herdado
   direto da medida da prancha — o pacote nunca previu tela mais larga que
   isso. Numa tela de 2560px isso lia como CARTÃO: o campo reativo do herói
   parava aos 1440px e sobravam faixas do fundo do sistema operacional (ou,
   dependendo do navegador, do próprio --sitio-fundo aplicado só até ali)
   dos dois lados — o pedido do dono era o oposto, o campo é TERRENO, não
   cartão.

   O max-width (e o margin-inline:auto que o centralizava) SAIU daqui. Sem
   ele, body.sitio simplesmente preenche o viewport (width:100% já fazia
   isso; sem o teto, não há mais teto), e QUALQUER filho sem largura
   própria — .faixa, .papel, .rodape — automaticamente acompanha e sangra
   também. Value que precisa ficar TRAVADO em 1440 (o conteúdo do herói,
   .heroi; o cabeçalho, .cromo) ganhou max-width + margin-inline:auto
   PRÓPRIO, escopado ao elemento — não fica mais de graça herdando do body.
   .sitio__miolo (as seções normais) já fazia essa trava por conta própria
   (min(1240px, ...) + margin-inline:auto) e continua idêntico, sem mudança
   nenhuma: era o comportamento CORRETO que sempre existiu, só nunca tinha
   sido testado além de 1440px porque o body cortava antes de chegar lá. */
body.sitio {
  width: 100%;

  /* O pacote declara `overflow:hidden` no `.sitio` porque lá ele é uma DIV de
     largura fixa dentro de um invólucro, e o clipe só apara o sangramento dos
     brilhos. Aqui `.sitio` é o `<body>`, e overflow no body PROPAGA PRO
     VIEWPORT: a página para de rolar com a roda do mouse.

     E falha caladíssimo, porque `window.scrollTo()` continua funcionando —
     screenshot, comparador visual e teste de contrato rolam todos por script e
     não notam nada. Foi assim que isto chegou a produção.

     `clip` no eixo x contém o mesmo sangramento sem criar caixa de rolagem;
     `visible` no eixo y devolve a rolagem ao viewport. (`overflow-x` sozinho
     não serve: com um eixo em `hidden`/`clip`, o outro em `visible` é
     computado como `auto`, e voltaríamos a ter caixa de rolagem no body.)
     Continua aqui mesmo sem o max-width: é a rede de segurança contra
     qualquer sangramento (o próprio .campo--preenche incluso) passar 1px do
     viewport de verdade — nenhuma largura testada precisou dela pra valer,
     mas ela custa zero e já existia por outro motivo bom. */
  overflow-x: clip;
  overflow-y: visible;
}

/* CORRIGIDO (o dono viu o resultado a 2560px): a primeira versão travava
   o `.cromo` inteiro em 1440px — parecia a escolha mais simples (o fundo
   dele, --sitio-cromo #02060a, é quase idêntico ao da página,
   --sitio-fundo #04080c, então "sangrar ou não" lia como pouca diferença
   no papel). Na tela de verdade o resultado era o oposto do pedido: o
   campo atravessa o viewport inteiro e o cabeçalho vira uma ILHA flutuando
   no meio, com fundo começando e terminando longe das bordas — o único
   elemento que não sangra lê como o que não pertence, não o que ficou
   "mais simples".

   A composição certa é a MESMA do herói e do papel: fundo sangra, conteúdo
   trava e centra. `.cromo` não tinha um invólucro interno pra separar as
   duas coisas (ao contrário de `.papel`, que já embrulhava o conteúdo num
   `.sitio__miolo`) — index.html ganhou um, `.cromo__miolo`, em volta dos
   três filhos que eram diretos de `.cromo` (marca, botão do menu compacto,
   painel de navegação). O flex que arranjava os três (elementos-sitio.css:
   display:flex;align-items:center;gap:40px;padding:0 32px) migrou pra cá,
   travado em 1440 e centrado — a posição x de cada item (marca, elos,
   botões) fica IDÊNTICA a 1440px e centrada nas larguras maiores, porque é
   a mesma trava, só que aplicada um nível mais fundo. `.cromo` em si vira
   só a barra que sangra: perde o padding horizontal (migrou pro
   `.cromo__miolo`, com o MESMO valor fixo de 32px do pacote — não
   `--sitio-sangria`, de propósito: aquele token varia pra 20px abaixo de
   680px, e o padding do cabeçalho NUNCA foi responsivo — trocar o valor
   aqui mudaria a posição da marca numa largura que ninguém pediu pra
   mexer) e mantém tudo mais do pacote (height:64px, border-bottom,
   box-shadow) intocado — a barra só fica mais larga, a moldura (fio de
   luz, sombra) não corta nem duplica, é a MESMA caixa, só que sem teto.

   `.cromo__menu` (o painel do menu compacto, abaixo de 1180px) continua
   `position:absolute;inset-inline:0` (home.css) resolvendo contra
   `.cromo` — mesmo aninhado um nível mais fundo agora, position:absolute
   ignora ancestrais sem position e ancora no mesmo `.cromo` de sempre.
   Mas abaixo de 1180px `.cromo` NUNCA chegava a 1440 (o teto nunca era
   alcançado) — sangrado ou travado, é 100% do viewport nas duas versões:
   sem mudança nenhuma na única faixa onde o painel aparece de verdade
   (medido, não suposto — TestChrome.test_membros_alcancavel_no_menu_
   compacto continua verde). */
.cromo {
  padding-inline: 0;
}
.cromo__miolo {
  display: flex;
  align-items: center;
  gap: 40px;
  width: 100%;
  max-width: var(--sitio-largura);
  height: 100%;
  margin-inline: auto;
  padding-inline: 32px;
}

/* O conteúdo do herói (texto + retrato) trava em --sitio-largura (1440),
   não --sitio-miolo (1240): é a largura em que a dupla coluna (texto +
   retrato de 420px, elementos-sitio.css) foi calibrada, e é a largura que o
   resto da página já usava até aqui — trocar pra 1240 encolheria o herói
   sozinho, sem necessidade, só porque as OUTRAS seções preferem uma coluna
   de leitura mais estreita. .campo--preenche, irmão de .heroi dentro de
   .faixa, não tem largura própria nenhuma (position:absolute;inset:0 —
   elementos-sitio.css) — sem overrides, ele já acompanha .faixa, que por
   sua vez já acompanha o body sem teto: sangra sozinho, de graça, sem
   precisar de nenhuma regra nova aqui. */
.heroi {
  max-width: var(--sitio-largura);
  margin-inline: auto;
}

/* O miolo acompanha, sem nunca passar do vão da tela. */
.sitio__miolo {
  width: min(var(--sitio-miolo), 100% - 2 * var(--sitio-sangria));
  margin-inline: auto;
}

/* .papel (a faixa clara, seção 06) não precisou de regra nenhuma: é
   <section class="papel"> direto, sem largura própria, então sem o teto do
   body ela já sangra sozinha — e o conteúdo de dentro já mora num
   .sitio__miolo (index.html), que trava e centra do jeito de sempre. Fundo
   sangrado, conteúdo travado: a MESMA composição do herói acima, só que
   "de graça" porque a seção já nasceu na forma faixa-e-miolo. Decisão
   medida (Task 28): faixa de papel travada no meio com o fundo escuro dos
   dois lados, numa tela larga, lia pior que sangrada — o mesmo raciocínio
   do campo. O rodapé (.rodape) é a mesma decisão, mas ele não nasceu com
   um miolo próprio — index.html ganhou um pra ele; a regra é a seção 8,
   mais abaixo neste arquivo. */

@media (max-width: 680px) {
  :root { --sitio-sangria: 20px; }
}

/* ── 2 · A escala de tela ───────────────────────────────── */

/* Cada clamp fecha no valor do pacote a 1440px:
   64 / 1440 = 4.444vw · 40 / 1440 = 2.778vw · 26 / 1440 = 1.806vw
   18 / 1440 = 1.250vw · 16 / 1440 = 1.111vw */
:root {
  --sitio-manchete-corpo:      clamp(34px, 4.444vw, 64px);
  --sitio-manchete-entrelinha: clamp(38px, 4.722vw, 68px);
  --sitio-secao-corpo:         clamp(26px, 2.778vw, 40px);
  --sitio-secao-entrelinha:    clamp(32px, 3.333vw, 48px);
  --sitio-ficha-corpo:         clamp(20px, 1.806vw, 26px);
  --sitio-ficha-entrelinha:    clamp(26px, 2.222vw, 32px);
  --sitio-deck-corpo:          clamp(16px, 1.250vw, 18px);
  --sitio-deck-entrelinha:     clamp(24px, 1.944vw, 28px);
  --sitio-corpo-corpo:         clamp(15px, 1.111vw, 16px);
  --sitio-corpo-entrelinha:    clamp(23px, 1.667vw, 24px);
}

/* ── Famílias compartilhadas ────────────────────────────── */

/* Bloco de propósito vazio. elementos.css dimensiona em 22-30px (escala de
   vídeo, achado 5), mas a janela da busca NÃO precisa de re-base aqui:
   ds/sitio/elementos-sitio.css já re-baseia .sitio .janela inteira para a
   escala do sítio, calibrada à mão (.janela__titulo 11px/16px,
   .janela__campo 12.5px/21px), e .sitio .saida-codigo é
   font-size/line-height: inherit DE PROPÓSITO — herda do campo porque a
   saída de terminal tem um corpo só; destoar do tamanho faz a linha parecer
   legenda, não terminal.

   Uma versão anterior deste arquivo tinha `.sitio .janela, .sitio .janela *`
   aqui, redeclarando --sitio-mono-corpo/-entrelinha (13px/20px). Como esta
   folha carrega DEPOIS de elementos-sitio.css e a especificidade das duas
   regras empata em (0,2,0), a ordem de carga decidia o empate e atropelava
   a calibragem deliberada do pacote — trocava 11px/12.5px por 13px e
   quebrava o inherit do saida-codigo. Removido.

   Se uma re-base de família compartilhada for necessária aqui no futuro,
   ela precisa vencer por especificidade REAL (seletor mais específico que
   o de elementos-sitio.css), nunca só por ordem de carga — senão o próximo
   leitor reintroduz este mesmo defeito achando que está consertando o
   achado 5. */

/* ── 3 · O realce sobre papel ───────────────────────────── */

/* --sitio-sinal (#f09400) é usado por elementos-sitio.css como cor de
   link/destaque em toda a página (.sitio a, .secao__numero, .secao__nome).
   Sobre fundo escuro isso passa; sobre as duas superfícies claras da faixa
   de papel (achado I1, revisão de acessibilidade 2026-08-13), não:

     --sitio-papel            #ecece4  →  1,98:1  (precisa 4,5:1)
     --sitio-papel-superficie #f6f5f0  →  2,15:1  (precisa 4,5:1)

   Não existe variante clara do token no pacote. Mesmo matiz, luminosidade
   menor: --sitio-papel-realce escurece o âmbar até passar 4,5:1 nas DUAS
   superfícies (medido: 4,96:1 sobre --sitio-papel, 5,40:1 sobre
   --sitio-papel-superficie — margem sobre o piso de 4,5, não só encostando
   nele). --sitio-papel-realce-forte é o mesmo escurecimento pro estado
   :hover, que sem isto herdava --sitio-sinal-forte (#ffab1f, ainda mais
   claro que o próprio --sitio-sinal) por empate de especificidade com
   `.sitio a:hover` — ficaria pior no hover do que no repouso.

   Escopado à faixa de papel (.rodape, .papel) — o âmbar sobre fundo escuro
   (--sitio-fundo/--sitio-superficie), correto como está, não é tocado. */
:root {
  --sitio-papel-realce: #8f5800;
  --sitio-papel-realce-forte: #7a4b00;
}

.rodape__legal a,
.papel .secao__numero,
.papel .secao__nome,
.papel .contato__linha {
  color: var(--sitio-papel-realce);
}
.rodape__legal a:hover,
.papel .contato__linha:hover {
  color: var(--sitio-papel-realce-forte);
}

/* ── 4 · O foco do campo de busca ────────────────────────── */

/* Achado I3 (revisão de acessibilidade 2026-08-13): .prompt__entrada
   (elementos-sitio.css) declara `outline:0` sem repor nada em :focus —
   parada de tabulação 14, medido computed style idêntico com e sem foco
   (outline 0px none nos dois estados). Sem indicador nenhum, quem navega
   por teclado perde o campo de vista assim que sai do clique/toque.

   :focus-visible (não :focus) — o campo já reage a pointer com o próprio
   .prompt em volta (box-shadow no container em hover), então o anel só
   precisa aparecer pra navegação por teclado, igual ao resto da página faz
   com o outline padrão do agente. --sitio-sinal é o próprio vocabulário de
   "ativo" do kit aqui (borda de chip pressionado, sublinhado do link atual
   de nav) — reaproveitado em vez de inventar cor nova. Contraste medido
   contra --sitio-superficie (fundo do .prompt, #080d13): 8,3:1, folgado
   acima do piso de 3:1 pra indicador de foco (não é texto). */
.prompt__entrada:focus-visible {
  outline: 2px solid var(--sitio-sinal);
  outline-offset: 2px;
  border-radius: 3px;
}

/* ── 5 · (vago) ─────────────────────────────────────────────── */

/* Aqui morava a correção de contraste do `.acesso__youtube`, o botão
   "Entrar com o YouTube" do painel de acesso da seção 03. A Task 31 tirou o
   painel da home — os quatro cards da Bancada de Testes o substituem, e cada
   um aponta pro próprio relatório em vez de pra rota de login. Sem marcação
   que case, as regras eram folha morta.

   O ACHADO continua valendo pra qualquer botão novo desta página, e é a
   quarta vez que ele aparece nesta base: classe única (0,1,0) perde de
   `.sitio a` (0,1,1, elementos-sitio.css), então `color:#fff` declarado só
   na classe nunca aplica e o texto renderiza âmbar. Escope com o elemento
   (`.sitio a.minha-classe`, 0,2,1) — ver `.sitio a.ficha__mais` na seção 6
   abaixo e `a.cromo__marca` em home.css. E vermelho puro (#ff0000) nunca
   alcança 4,5:1 com branco em texto pequeno: escureça o fundo, não clareie
   o :hover. */

/* ── 6 · O "+" temático das fichas ──────────────────────────── */

/* Mesma armadilha, achado varrendo a folha atrás de outras aparições do
   Critical acima. `.ficha__mais` é `<a class="ficha__mais">` (0,1,0) e
   também perde pra `.sitio a` (0,1,1). Não é falha de contraste — a cor
   perdedora (--sitio-sinal) ainda lê bem sobre o fundo tingido de cada
   ficha — é bug de marca: as quatro fichas (index.html) declaram
   --ficha-tinta por ficha (âmbar/azul/verde/roxo via style inline), mas o
   "+" de TODAS renderiza no mesmo âmbar, porque `.sitio a` vence a variável
   com a cor errada. Escopado com o elemento pra restaurar a cor por ficha. */
.sitio a.ficha__mais {
  color: var(--ficha-tinta, var(--sitio-sinal));
}

/* ── 7 · O botão de Membros ganha realce próprio ───────────── */

/* Pedido do dono: o CTA de Membros (.cromo__fim, ao lado do YouTube) sai do
   contorno neutro (acao--traco) e ganha cor própria — mas não pode ser
   nenhum dos quatro realces já emprestados às fichas de projeto
   (âmbar/azul/verde/roxo, .ficha__tarja/.ficha__mais) nem --sitio-sinal (o
   âmbar do YouTube, "um sinal por vista" — tokens/sitio.css).

   --casa (#52a5ba) é do lado oposto do anel de matizes em relação ao
   âmbar — lê como outra cor de relance, sem competir — e é a cor de
   identidade do sistema inteiro, sentido que bate com "Membros" (o círculo
   de dentro). --sitio-realce-coral era a alternativa (a única realce livre
   das fichas), descartado por ser quente, da mesma família do âmbar — não
   lê como "outra coisa" à primeira vista. --casa não é vocabulário nativo
   do kit sitio (pertence à peça de vídeo), mas o token existe em :root sem
   escopo — usável aqui como qualquer outro custom property.

   Preenchida, não contornada — mesma forma do botão do YouTube (mesma
   cápsula, mesma altura, só a cor muda). Medido: texto claro
   (--sitio-tinta-cheia 2,27:1, --casa-texto pior ainda) sobre --casa NÃO
   passa 4,5:1; --sobre-sinal (tinta quase preta, já o papel de ".acao--sinal"
   pra "tinta escura sobre preenchimento claro" — não é exclusiva do âmbar,
   é o token de contraste do sistema) sobre --casa mede 6,56:1, folgado. O
   botão em si contra o fundo do cabeçalho (--sitio-cromo #02060a) mede
   7,21:1, folgado acima do piso de 3:1 pra elemento de interface.

   Preenchimento cheio ao lado do vermelho do YouTube (ambos "pesados")
   funcionava contra a própria ideia de "não competir" — medido lado a lado
   nas duas larguras (cromo cheio e compacto): teal + vermelho são
   complementares no anel de cor, então leem como DUAS coisas mesmo os dois
   preenchidos, sem brigar por atenção da mesma forma que duas ações no
   MESMO matiz brigariam.

   Especificidade: mesma armadilha do achado Critical acima (`.sitio a`
   vencendo classe única) — escopado com o elemento pra valer de verdade.
   :hover clareia (com tinta escura, mais claro só melhora o contraste — ao
   contrário do problema do YouTube, que precisou escurecer). :focus-visible
   reusa o anel do sítio (--sitio-sinal) — é o indicador de foco do sistema
   inteiro (mesmo anel do .prompt__entrada acima), não o "sinal de ação" da
   regra "um por vista": aquela é sobre EMPHASIS de ação, esta é o
   vocabulário universal de "isto tem foco de teclado". */
.sitio a.acao--casa {
  background-color: var(--casa);
  color: var(--sobre-sinal);
}
.sitio a.acao--casa:hover {
  /* mistura de --casa 82% + branco 18% escrita literal, não color-mix():
     getComputedStyle() serializa o color-mix() como oklab(...) neste
     Chromium (achado rodando a prova de contraste abaixo — não é bug do
     CSS, é só um formato que a leitura de teste não precisa aprender a
     parsear). #71b5c6 mede 8,04:1 com --sobre-sinal, folgado. */
  background-color: #71b5c6;
  color: var(--sobre-sinal);
}
.sitio a.acao--casa:focus-visible {
  outline: 2px solid var(--sitio-sinal);
  outline-offset: 2px;
  border-radius: var(--sitio-raio-capsula);
}

/* ── 8 · O rodapé sangra, o conteúdo trava (mudança 1) ─────── */

/* .rodape (elementos-sitio.css) é `display:flex;justify-content:space-
   between;padding:18px 32px` nos PRÓPRIOS filhos — sem um miolo, deixar o
   fundo sangrar (seção 1 acima, "de graça" pro .rodape em si) espalharia a
   marca, o texto e o nav legal pela largura inteira da tela numa tela
   larga: com space-between numa faixa de 2560px, a marca ia pra ponta
   esquerda de verdade e o nav legal pra ponta direita, um vão enorme e vazio
   no meio — pior que a versão travada de antes.

   index.html ganhou um `.sitio__miolo` por dentro do `<footer>`, envolvendo
   os três filhos que eram diretos de `.rodape`. O flex (que fazia a
   distribuição) migrou pra cá, escopado a `.rodape .sitio__miolo` — o
   PRÓPRIO .sitio__miolo (seção 1 acima) só cuida de largura/centralização,
   nunca de display, então não há conflito de propriedade, só composição.
   `.rodape` perde o padding horizontal (0 aqui — a sangria do
   .sitio__miolo, --sitio-sangria, já cumpre esse papel; manter os dois
   dobraria o respiro) e mantém o padding vertical do pacote (18px,
   herdado do shorthand original — não redeclarado, só o eixo inline é
   zerado). Fundo sangrado, conteúdo travado: a mesma composição do herói e
   do papel acima. */
.rodape {
  padding-inline: 0;
}
.rodape .sitio__miolo {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 40px;
  padding-block: 18px;
}

/* ── 9 · A saída da busca mora dentro do bloco ─────────────── */

/* Pedido do dono (Task 28, mudança 2): a saída da busca aparecia numa
   janela SOLTA, em bloco de largura inteira abaixo de `.busca` — porque
   .busca__resultado nascia como TERCEIRO item do grid de duas colunas
   (.busca, elementos-sitio.css: minmax(0,1fr) 320px), caindo numa linha
   nova por conta própria. index.html moveu o elemento pra DENTRO do
   `.prompt` da busca (com a classe extra .busca__caixa, pra não reusar
   `.prompt` puro e sem querer herdar isto nos outros painéis da página).

   A caixa é flex-column porque empilha quatro coisas em ordem: o campo,
   os chips, a saída do terminal e a barra de estado no rodapé (Task 30 —
   antes a barra era um `<aside class="prompt painel">` numa segunda coluna
   do grid de `.busca`, que saiu inteiro). A altura hoje é a do conteúdo:
   não há mais coluna irmã pra `align-items:stretch` esticar, então
   `.busca__resultado` não precisa mais de `flex:1` pra ocupar sobra
   nenhuma — a sobra deixou de existir junto com o painel. */
.busca__caixa {
  display: flex;
  flex-direction: column;
}
.busca__resultado {
  margin-top: 18px;
}

/*  O ajuste HORIZONTAL: títulos raros o bastante pra estourar a largura da
   coluna (a maioria cabe de sobra, achado do busca.js) quebram linha em
   vez de rolar de lado. PRIMEIRA versão disto escopava só as LINHAS de
   resultado (.sintaxe-texto), deixando o resto — eco, "varrendo N
   itens…", o comentário de rodapé com o termo buscado — em white-space:
   pre puro (elementos-sitio.css). Media certo no bloco solto de antes
   (largura de página inteira), mas embutido na coluna da busca (~250px a
   390px, bem mais estreita) essas linhas SEM quebra também estouram —
   medido: scrollWidth 377 contra clientWidth 252 a 390px, mesmo com as
   linhas de RESULTADO já quebrando direito (a prova pegou: TestSemClip
   media a própria .janela__campo, não só as linhas de resultado). A janela
   inteira ganhou pre-wrap — preserva espaço literal E quebra de linha
   explícita (as quatro linhas do terminal), igual .pre, mas com permissão
   de quebrar quando não cabe; sem isto só sobrava rolagem de lado, o
   oposto do pedido ("usar melhor a largura do bloco"). */
.busca__resultado .janela__campo {
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

/* ── Movimento ──────────────────────────────────────────── */

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