/* Reset mínimo + guards obrigatórios do Elementor. */

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--ns-header-h) + 1rem); }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body { margin: 0; overflow-x: clip; }
img, svg, video { max-inline-size: 100%; block-size: auto; }
button, input, select, textarea { font: inherit; color: inherit; }

/* Reset opt-in dentro dos componentes. */
:where(.ns-scope) :where(h1, h2, h3, h4, h5, h6, p, ul, ol, figure, blockquote, dl, dd) { margin-block: 0; }
:where(.ns-scope) :where(ul, ol) { padding: 0; list-style: none; }

/* Sem margem inferior padrão do Elementor ao redor dos widgets do projeto. */
:where([class*="elementor-widget-ns-"]) { margin-bottom: 0 !important; }

/* Guard 1 — altura fixa de desktop (Fit-to-screen / min-height do painel) NÃO pode vazar para o mobile. */
@media (max-width: 1023px) {
  .elementor-section:has(.ns-scope),
  .e-con:has(.ns-scope),
  .elementor-widget-wrap:has(.ns-scope) {
    min-height: 0 !important;
    height: auto !important;
  }
}

/* Guard 2 — faixa/sobreposição entre seções.
   Container cujo único filho é um componente do projeto vira bloco: wrapper = altura exata da seção.
   NUNCA corrigir isso com background, overflow:hidden, z-index ou margem negativa. */
.e-con:has(> .elementor-widget:only-child > .elementor-widget-container > .ns-scope),
.e-con:has(> .elementor-widget:only-child > .ns-scope) {
  display: block;
}
.e-con:has(> .elementor-widget:only-child .ns-scope) { --padding-top: 0px; --padding-bottom: 0px; --padding-left: 0px; --padding-right: 0px; --gap: 0px; }
