/* Estrutura de página: container, seções e grids reutilizáveis. */

@layer layout {
  /* Impede que a margem do último bloco da página colapse com a do CTA do rodapé
     (no original são templates separados e os espaços se somam). */
  /* overflow-x: clip: as animações de entrada que vêm da lateral (100% da largura, como no
     Elementor) não criam rolagem horizontal enquanto o elemento está fora da tela. */
  main {
    display: flow-root;
    overflow-x: clip;
  }

  .container {
    width: 100%;
    /* Como no Elementor (e-con-boxed): 1280px é a largura do conteúdo; o padding fica por fora. */
    max-width: calc(var(--container-max) + 2 * var(--container-padding));
    margin-inline: auto;
    padding-inline: var(--container-padding);
  }

  .secao {
    padding-block: var(--esp-secao);
  }

  .secao--clara {
    background: var(--cor-fundo-claro);
  }

  .secao--escura {
    background: var(--cor-escura);
    color: var(--cor-branco);
  }

  .secao--escura :is(h1, h2, h3, h4, h5, h6) {
    color: var(--cor-branco);
  }

  /* Rótulo pequeno acima dos títulos de seção ("Visão geral", "Nossos Produtos"...). */
  .secao__rotulo {
    font-family: var(--fonte-texto);
    font-size: var(--texto-base);
    font-weight: var(--peso-medio);
    color: var(--cor-secundaria);
    margin-bottom: var(--esp-3);
  }

  .secao__cabecalho {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    justify-content: space-between;
    gap: var(--esp-5);
    margin-bottom: var(--esp-7);
  }

  /* Pilha vertical com espaçamento uniforme. */
  .pilha {
    display: flex;
    flex-direction: column;
    gap: var(--pilha-gap, var(--esp-4));
  }

  /* Grid de colunas responsivo: 1 coluna no mobile, N no desktop. */
  .grid {
    display: grid;
    gap: var(--grid-gap, var(--esp-5));
    grid-template-columns: 1fr;
  }

  @media (min-width: 768px) {
    .grid--2,
    .grid--3,
    .grid--4 {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }
  }

  @media (min-width: 1025px) {
    .grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  }

  /* Duas colunas: texto + mídia, empilha abaixo do tablet. */
  .dividido {
    display: grid;
    gap: var(--esp-7);
    align-items: center;
  }

  @media (min-width: 1025px) {
    .dividido {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .dividido--invertido > :first-child {
      order: 2;
    }
  }

  .grupo-botoes {
    display: flex;
    flex-wrap: wrap;
    gap: var(--esp-4);
  }

  /* Link de texto com seta ("Explorar produtos"). Variantes por breakpoint, como no original. */
  .link-seta {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-family: var(--fonte-titulo);
    font-weight: var(--peso-negrito);
    color: var(--cor-secundaria);
    text-decoration: none;
  }

  .link-seta:hover {
    color: var(--cor-primaria);
  }

  .link-seta--mobile {
    display: none;
  }

  @media (max-width: 1024px) {
    .link-seta--desktop {
      display: none;
    }

    /* No original é um widget de botão: mesma fonte dos botões (20px no mobile). */
    .link-seta--mobile {
      display: inline-flex;
      align-self: flex-start;
      font-size: var(--botao-fonte);
      line-height: var(--botao-lh);
    }
  }

  /* Texto vindo do conteúdo (HTML saneado). */
  .texto-rico > * + * {
    margin-top: var(--esp-4);
  }

  .texto-rico ul,
  .texto-rico ol {
    padding-left: 1.25em;
  }

  /* Página de erro (404/500) */
  .erro__conteudo {
    display: flex;
    flex-direction: column;
    gap: var(--esp-5);
    max-width: 760px;
    min-height: 40vh;
  }
}
