/*
 * Correções nossas sobre o CSS clonado do Elementor.
 *
 * Cada regra aqui é uma diferença DELIBERADA em relação ao original, e vem com
 * o motivo e a medida que a justifica. Fonte, não derivado: o preparar.sh não
 * toca neste arquivo. Quem injeta o <link> em toda página é o converter.py.
 */

/*
 * O cabeçalho grudento fazia a página dar um pulo ao grudar.
 *
 * O plugin Sticky Header Effects for Elementor troca a classe `header` por
 * `she-header` quando a rolagem passa do limiar, e aplica
 * `position: fixed !important`. `fixed` tira o elemento do fluxo, a página
 * encurta a altura inteira do cabeçalho de uma vez, e tudo que está abaixo
 * salta para cima. Acontece bem no fim do herói, onde o botão azul aparece.
 *
 * Medido em 2026-08-21, viewport de 430 px: a altura do documento caía de
 * 13693 px para 13540 px no instante em que a classe trocava, exatamente os
 * 153 px do cabeçalho.
 *
 * O original em WordPress tinha o mesmo defeito, com os mesmos dois números,
 * conferido na captura servida em paralelo. Ou seja, isto é correção, não
 * regressão nossa.
 *
 * `sticky` gruda no topo igual a `fixed` e mantém o elemento no fluxo, então a
 * altura do documento não muda e o pulo some. Depois da regra, a altura ficou
 * em 13693 px em todas as posições de rolagem medidas.
 *
 * O `body` na frente existe por especificidade: o seletor do plugin é
 * `.she-header:not(.elementor-sticky)`, e sem o elemento na frente a nossa
 * regra perde mesmo com `!important`.
 */
body .she-header:not(.elementor-sticky) {
    position: sticky !important;
    top: 0;
}

/*
 * Arrastar para o lado abria uma faixa branca, no Safari do iPhone.
 *
 * O menu off-canvas do ElementsKit fica escondido em `left: -430px` com
 * `position: fixed`, e o mesmo vale para o overlay dele. Medido em 2026-08-21:
 * o painel ocupa de -430 a -80, e o overlay de -430 a 0. Em Chrome isso não
 * gera rolagem lateral nenhuma, `scrollWidth` bate com `clientWidth` em 390 e
 * em 430. No Safari do iPhone gera, e o que se vê é uma mancha branca ao
 * arrastar. O original em WordPress tinha a mesma estrutura, então o defeito é
 * herdado.
 *
 * `overflow-x: clip` corta o que passa da lateral SEM criar um contêiner de
 * rolagem. Essa é a diferença que importa: `overflow-x: hidden` criaria, e um
 * contêiner de rolagem quebraria o `position: sticky` do cabeçalho consertado
 * logo acima. `clip` não quebra.
 *
 * Nada no site precisa de rolagem lateral: o carrossel de imagens rola dentro
 * do próprio contêiner, que tem `overflow: hidden` só dele.
 */
html {
    overflow-x: clip;
}

/*
 * Âncora do menu pousando atrás do cabeçalho grudento.
 *
 * O cabeçalho fica por cima, e sem desconto o título da seção some atrás dele.
 * A altura muda muito com a largura: 80 px em 1440, 107 em 1024, 101 em 600,
 * 212 em 767 e 153 em 430, medidos em 2026-08-21. Por isso o valor não é fixo:
 * o `--altura-cabecalho` é escrito pelo script que o converter.py injeta, que
 * lê a altura real e reescreve a cada mudança de tamanho da janela.
 *
 * O valor aqui é só a rede de segurança, para o caso de o script não rodar.
 */
:root {
    --altura-cabecalho: 160px;
}

#espacos,
#localizacao,
#contato {
    scroll-margin-top: calc(var(--altura-cabecalho) + 16px);
}
