/* ==========================================================================
   IMOTO AMBIENTAL — Folha de estilo única do site
   --------------------------------------------------------------------------
   Este arquivo controla a APARÊNCIA de todas as páginas de uma vez.
   Para mudar cores, fontes ou espaçamentos do site inteiro, mexa aqui.
   O TEXTO de cada página fica nos arquivos .html (não aqui).
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. VARIÁVEIS DE COR E FONTE  (a "paleta" do site — mude aqui para todo o site)
   -------------------------------------------------------------------------- */
:root {
  /* Cores da marca IMOTO (gradiente verde-amarelo da logo) */
  --verde-escuro:  #1f6b2e;
  --verde:         #2e9b3d;
  --verde-claro:   #8bc34a;
  --amarelo:       #f4e500;
  --amarelo-ouro:  #e9c700;

  /* Cores de apoio / texto */
  --tinta:         #1a1f1a;   /* texto principal, quase preto */
  --tinta-suave:   #4a544a;   /* texto secundário */
  --cinza-borda:   #e3e6e3;
  --fundo:         #ffffff;
  --fundo-suave:   #f6f8f6;
  --fundo-card:    #ffffff;

  /* Faixa preta da tagline (igual ao rodapé da proposta) */
  --preto-faixa:   #111511;

  /* Largura máxima do conteúdo centralizado */
  --largura:       1180px;

  /* Fontes */
  --fonte-corpo:   'IBM Plex Sans', -apple-system, Segoe UI, Roboto, sans-serif;
  --fonte-mono:    'IBM Plex Mono', monospace;
}

/* --------------------------------------------------------------------------
   2. RESET BÁSICO E CORPO
   -------------------------------------------------------------------------- */
* { margin: 0; padding: 0; box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  font-family: var(--fonte-corpo);
  color: var(--tinta);
  background: var(--fundo);
  line-height: 1.65;
  font-size: 17px;
}

img { max-width: 100%; display: block; }

a { color: var(--verde); text-decoration: none; }
a:hover { text-decoration: underline; }

/* Acessibilidade: foco de teclado visível e respeito a "reduzir movimento" */
:focus-visible { outline: 3px solid var(--verde); outline-offset: 3px; border-radius: 4px; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: .001ms !important;
    transition-duration: .001ms !important;
  }
  .btn:hover, .card-solucao:hover { transform: none; }
}

/* --------------------------------------------------------------------------
   2b. TEXTO JUSTIFICADO
   Todo texto corrido do site é justificado dentro da sua caixa.
   `hyphens: auto` é obrigatório aqui: em português, justificar sem hifenizar
   abre buracos enormes entre as palavras, principalmente nas colunas estreitas
   (cards de case, bios da equipe). O <html lang="pt-BR"> é que diz ao navegador
   quais regras de separação silábica usar — não remova o lang.

   FICA DE FORA de propósito (segue centralizado ou alinhado à esquerda):
   títulos, .secao-subtitulo, o hero, a faixa .cta, os botões e o menu — nesses
   o alinhamento é parte do desenho, não texto corrido.
   -------------------------------------------------------------------------- */
.bloco p,
.bloco li,
.sobre-empilhado p,
.feito-texto p,
.equipe-bio,
.card-solucao-corpo p,
.atendimento-corpo p,
.case-corpo p,
.comparacao-col li,
.figura-processo figcaption,
.claim {
  text-align: justify;
  hyphens: auto;
  -webkit-hyphens: auto;
}

/* Container que centraliza e limita a largura do conteúdo */
.container {
  width: 100%;
  max-width: var(--largura);
  margin: 0 auto;
  padding: 0 24px;
}

/* --------------------------------------------------------------------------
   3. MENU DE NAVEGAÇÃO (logo + botões + login)
   -------------------------------------------------------------------------- */
.cabecalho {
  background: var(--fundo);
  border-bottom: 1px solid var(--cinza-borda);
  position: sticky;      /* o menu acompanha a rolagem */
  top: 0;
  z-index: 100;
  box-shadow: 0 1px 8px rgba(0,0,0,0.04);
  overflow: visible;     /* deixa a logo "transbordar" para baixo da faixa */
}

.nav {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: flex-end;   /* o menu vai para a direita */
  gap: 24px;
  /* >>> ALTURA DA FAIXA BRANCA: controlada por este min-height, INDEPENDENTE
     do tamanho da logo (a logo transborda). Diminua para afinar a faixa. <<< */
  padding: 8px 24px;
  min-height: 116px;
  max-width: var(--largura);
  margin: 0 auto;
}

/* Logo "transbordante": fora do fluxo, centralizada na vertical. Não aumenta
   a altura da faixa — passa um pouco para fora dela. */
.nav-logo {
  position: absolute;
  top: 50%;
  left: 24px;
  transform: translateY(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  line-height: 1;
}
/* >>> TAMANHO DA LOGO: aumente/diminua à vontade — a faixa branca continua
   do mesmo tamanho (definido pelo min-height acima). <<< */
.nav-logo img { height: 160px; width: auto; }

.nav-menu {
  display: flex;
  align-items: center;
  gap: 30px;
  list-style: none;
}

.nav-menu a {
  color: var(--tinta);
  font-weight: 500;
  font-size: 16px;
  padding: 6px 2px;
  border-bottom: 2px solid transparent;
  transition: border-color .2s, color .2s;
}
.nav-menu a:hover {
  color: var(--verde);
  border-bottom-color: var(--verde);
  text-decoration: none;
}

/* Botão de login destacado */
.nav-login {
  border: 1.5px solid var(--verde);
  border-radius: 6px;
  padding: 8px 18px !important;
  color: var(--verde) !important;
  font-weight: 600;
}
.nav-login:hover {
  background: var(--verde);
  color: #fff !important;
  border-bottom-color: var(--verde) !important;
}

/* --------------------------------------------------------------------------
   3b. SELETOR DE IDIOMA (PT · EN · ES) — ocupa o lugar do antigo botão Login
   Usa a mesma fonte monoespaçada em caixa alta da assinatura visual do site
   (a mesma da classe .eyebrow), então lê como "rótulo técnico", não como
   mais um item de menu competindo com Quem somos / Soluções / Contato.
   -------------------------------------------------------------------------- */
.nav-idiomas {
  display: flex;
  align-items: center;
  gap: 8px;
  padding-left: 20px;
  margin-left: 4px;
  border-left: 1px solid var(--cinza-borda);   /* separa do menu principal */
}

.nav-idiomas a {
  font-family: var(--fonte-mono);
  font-size: 12.5px;
  font-weight: 500;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--tinta-suave);
  padding: 4px 2px;
  border-bottom: 2px solid transparent;
  transition: color .2s, border-color .2s;
}
.nav-idiomas a:hover {
  color: var(--verde);
  border-bottom-color: var(--verde);
  text-decoration: none;
}

/* Idioma em que a página já está: verde e sem link ativo */
.nav-idiomas .idioma-ativo {
  color: var(--verde-escuro);
  font-weight: 600;
  border-bottom-color: var(--amarelo-ouro);   /* filete âmbar, igual ao .eyebrow */
  cursor: default;
}
.nav-idiomas .idioma-ativo:hover {
  color: var(--verde-escuro);
  border-bottom-color: var(--amarelo-ouro);
}

/* Separador "·" desenhado entre os idiomas (não vai no HTML) */
.nav-idiomas span[aria-hidden] {
  color: var(--cinza-borda);
  font-family: var(--fonte-mono);
  font-size: 12.5px;
  user-select: none;
}

/* --------------------------------------------------------------------------
   4. HERO — IMAGEM DE IMPACTO DA HOME
   -------------------------------------------------------------------------- */
.hero {
  position: relative;
  /* Foto de impacto como fundo + camada verde-escura em gradiente vertical
     (mais densa embaixo, para o texto e o botão ficarem legíveis). Para trocar
     a foto, mude o arquivo abaixo. Para clarear/escurecer, ajuste os valores
     0.55 / 0.80 do overlay. */
  background:
     linear-gradient(180deg, rgba(16,42,21,.55) 0%, rgba(13,34,17,.80) 100%),
     url('../img/Imagem_Hero.png') center/cover no-repeat;
  color: #fff;
  text-align: center;
  padding: 132px 24px;
  overflow: hidden;
}
.hero h1 {
  font-size: 3.1rem;
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: -.5px;
  max-width: 940px;
  margin: 0 auto 18px;
}
/* Palavra-chave destacada no título do hero (a tese: resíduo -> valor) */
.hero .realce { color: var(--amarelo); }
.hero p {
  font-size: 1.25rem;
  max-width: 720px;
  margin: 0 auto 34px;
  opacity: .95;
}

/* --------------------------------------------------------------------------
   7. BOTÕES
   -------------------------------------------------------------------------- */
.btn {
  display: inline-block;
  font-weight: 600;
  font-size: 1rem;
  padding: 14px 30px;
  border-radius: 8px;
  cursor: pointer;
  border: none;
  transition: transform .15s, box-shadow .15s, background .2s;
}
.btn:hover { transform: translateY(-2px); text-decoration: none; }

.btn-primario {
  background: var(--amarelo);
  color: var(--tinta);
  box-shadow: 0 4px 14px rgba(0,0,0,.18);
}
.btn-primario:hover { background: var(--amarelo-ouro); }

.btn-verde {
  background: var(--verde);
  color: #fff;
}
.btn-verde:hover { background: var(--verde-escuro); }

/* Contorno BRANCO: só para usar sobre fundo escuro (a faixa .cta, o hero). */
.btn-contorno {
  background: transparent;
  color: #fff;
  border: 1.5px solid #fff;
}
.btn-contorno:hover { background: rgba(255,255,255,.15); }

/* Contorno VERDE: mesma ideia, para usar sobre fundo CLARO (páginas de
   conteúdo). O .btn-contorno acima ficaria branco sobre branco, invisível. */
.btn-contorno-claro {
  background: transparent;
  color: var(--verde-escuro);
  border: 1.5px solid var(--verde);
}
.btn-contorno-claro:hover { background: var(--fundo-suave); color: var(--verde-escuro); }

/* --------------------------------------------------------------------------
   8. SEÇÕES GERAIS
   -------------------------------------------------------------------------- */
.secao { padding: 72px 0; }
.secao-suave { background: var(--fundo-suave); }

.secao-titulo {
  text-align: center;
  font-size: 2rem;
  font-weight: 700;
  margin-bottom: 12px;
}
.secao-subtitulo {
  text-align: center;
  color: var(--tinta-suave);
  font-size: 1.1rem;
  max-width: 720px;
  margin: 0 auto 48px;
}

/* ----- EYEBROW (assinatura tipográfica do site) -----
   Rótulo técnico monoespaçado com filete âmbar dos dois lados. Usado acima
   dos títulos de seção e no hero. Ancora o DNA de engenharia da marca. */
.eyebrow {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  text-transform: uppercase;
  letter-spacing: 2.5px;
  font-size: .78rem;
  font-weight: 600;
  color: var(--verde);
  font-family: var(--fonte-mono);
  margin-bottom: 14px;
}
.eyebrow::before, .eyebrow::after {
  content: "";
  width: 26px; height: 2px;
  background: var(--amarelo-ouro);
  flex: none;
}
/* Variante para o hero (fundo escuro): texto âmbar, filetes translúcidos */
.hero .eyebrow { color: var(--amarelo); margin-bottom: 18px; }
.hero .eyebrow::before, .hero .eyebrow::after { background: rgba(244,229,0,.55); }

/* --------------------------------------------------------------------------
   9. CARDS DE SOLUÇÃO (home)
   -------------------------------------------------------------------------- */
.grade-solucoes {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 28px;
}

.card-solucao {
  background: var(--fundo-card);
  border: 1px solid var(--cinza-borda);
  border-radius: 12px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition: transform .2s, box-shadow .2s;
}
.card-solucao:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 30px rgba(0,0,0,.10);
}
/* >>> ALTURA DA MOLDURA da imagem do card. Aumente para a foto caber maior. <<< */
.card-solucao-img {
  height: 220px;
  background: var(--fundo-suave);
  overflow: hidden;
}
/* >>> ENQUADRAMENTO da imagem (o "zoom"):
   - object-fit: contain  -> mostra a imagem INTEIRA, sem cortar (zoom out)
   - object-fit: cover    -> preenche a moldura e corta as bordas (zoom in)   <<< */
.card-solucao-img img { width: 100%; height: 100%; object-fit: contain; }

.card-solucao-corpo {
  padding: 24px;
  display: flex;
  flex-direction: column;
  flex: 1;
}
.card-solucao h3 {
  font-size: 1.4rem;
  margin-bottom: 8px;
  color: var(--verde-escuro);
}
.card-solucao p {
  color: var(--tinta-suave);
  font-size: 1rem;
  margin-bottom: 20px;
  flex: 1;
}
.card-solucao .link-saiba {
  font-weight: 600;
  color: var(--verde);
  align-self: flex-start;
}
.card-solucao .link-saiba::after { content: " →"; }

/* Selo "em breve" para soluções ainda não detalhadas */
.selo-breve {
  display: inline-block;
  background: var(--fundo-suave);
  color: var(--tinta-suave);
  border: 1px solid var(--cinza-borda);
  border-radius: 20px;
  padding: 3px 12px;
  font-size: .8rem;
  font-family: var(--fonte-mono);
  align-self: flex-start;
}

/* --------------------------------------------------------------------------
   10. PÁGINA DE SOLUÇÃO — título, carrossel e blocos
   -------------------------------------------------------------------------- */
.solucao-topo {
  text-align: center;
  padding: 56px 24px 32px;
}
.solucao-topo h1 {
  font-size: 2.8rem;
  color: var(--verde-escuro);
}
.solucao-topo .registro { font-size: 1.2rem; vertical-align: super; }
.solucao-topo p { color: var(--tinta-suave); font-size: 1.15rem; margin-top: 8px; }

/* Carrossel simples (rolagem horizontal) */
.carrossel {
  display: flex;
  gap: 16px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  padding: 8px 24px 24px;
  max-width: var(--largura);
  margin: 0 auto;
}
.carrossel img {
  height: 420px;
  width: auto;
  border-radius: 12px;
  scroll-snap-align: center;
  box-shadow: 0 6px 20px rgba(0,0,0,.12);
  flex-shrink: 0;
}

/* Blocos de conteúdo da solução (O problema / Como resolve / etc.) */
.bloco {
  padding: 56px 0;
  border-bottom: 1px solid var(--cinza-borda);
}
.bloco h2 {
  font-size: 1.7rem;
  color: var(--verde-escuro);
  margin-bottom: 18px;
}
.bloco p { margin-bottom: 16px; color: var(--tinta-suave); font-size: 1.08rem; }
.bloco ul { margin: 0 0 16px 22px; color: var(--tinta-suave); }
.bloco li { margin-bottom: 8px; }

/* Lista de "entregas" em destaque */
.entregas {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 18px;
  list-style: none;
  margin-left: 0 !important;
}
.entregas li {
  background: var(--fundo-suave);
  border-left: 4px solid var(--verde);
  border-radius: 8px;
  padding: 18px 20px;
  font-weight: 500;
  color: var(--tinta);
}

/* --------------------------------------------------------------------------
   10b. MODALIDADES DE ATENDIMENTO — caixas expansíveis (home, "Como atendemos?")
   Usa <details>/<summary> nativos: clicar no título expande o texto. Sem JS.
   -------------------------------------------------------------------------- */
.atendimento-grade {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
  max-width: 900px;
  margin: 0 auto;
  align-items: start;       /* expandir um item não estica o vizinho */
}
.atendimento-item {
  background: var(--fundo-suave);
  border: 1px solid var(--cinza-borda);
  border-left: 4px solid var(--verde);
  border-radius: 8px;
  overflow: hidden;
}
.atendimento-item summary {
  list-style: none;
  cursor: pointer;
  padding: 18px 22px;
  font-weight: 600;
  font-size: 1.15rem;
  color: var(--verde-escuro);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.atendimento-item summary::-webkit-details-marker { display: none; }
.atendimento-item summary::after {
  content: "+";
  font-family: var(--fonte-mono);
  font-size: 1.5rem;
  line-height: 1;
  color: var(--verde);
}
.atendimento-item[open] summary::after { content: "\2013"; } /* travessão "–" quando aberto */
.atendimento-item summary:hover { background: rgba(46,155,61,.06); }
.atendimento-corpo { padding: 0 22px 20px; }
.atendimento-corpo p { color: var(--tinta-suave); font-size: 1.02rem; line-height: 1.6; }

@media (max-width: 680px) {
  .atendimento-grade { grid-template-columns: 1fr; }
}

/* --------------------------------------------------------------------------
   11. FAIXA DE CHAMADA FINAL (CTA) — "Fale com nossa equipe"
   -------------------------------------------------------------------------- */
.cta {
  background: linear-gradient(120deg, var(--verde-escuro), var(--verde));
  color: #fff;
  text-align: center;
  padding: 64px 24px;
}
.cta h2 { font-size: 2rem; margin-bottom: 14px; }
.cta p { font-size: 1.15rem; opacity: .95; margin-bottom: 30px; }
.cta-botoes { display: flex; gap: 16px; justify-content: center; flex-wrap: wrap; }

/* --------------------------------------------------------------------------
   12. RODAPÉ
   -------------------------------------------------------------------------- */
.rodape {
  background: var(--preto-faixa);
  color: #cdd3cd;
  /* >>> ALTURA DA BARRA PRETA: este padding (espaço acima/abaixo) controla a
     altura da faixa preta, INDEPENDENTE do tamanho da logo. Diminua para
     deixar a barra mais fina. <<< */
  padding: 22px 24px 22px;
  font-size: .95rem;
}
.rodape-grade {
  max-width: var(--largura);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 2fr 1fr 1fr;
  gap: 32px;
  align-items: center;   /* colunas centralizadas na vertical */
}
.rodape h4 { color: #fff; margin-bottom: 14px; font-size: 1rem; }
.rodape a { color: #cdd3cd; }
.rodape a:hover { color: var(--amarelo); }
/* >>> TAMANHO DA LOGO DO RODAPÉ: a altura (height) define o tamanho visual.
   As margens NEGATIVAS "desacoplam" a logo da barra — elas absorvem o espaço
   vazio ao redor da logo para que ela NÃO estique a faixa preta. Aumente a
   logo no height; se a barra crescer junto, aumente as margens negativas. <<< */
.rodape img { height: 140px; margin: -30px 0 -16px; }
.rodape-base {
  max-width: var(--largura);
  margin: 28px auto 0;
  padding-top: 20px;
  border-top: 1px solid rgba(255,255,255,.12);
  text-align: center;
  font-size: .85rem;
  color: #8a928a;
}

/* --------------------------------------------------------------------------
   13. PÁGINA "QUEM SOMOS"
   -------------------------------------------------------------------------- */

/* ----- Sobre Nós: formato empilhado (texto -> 2 imagens lado a lado -> texto) ----- */
.sobre-empilhado { max-width: 920px; margin: 0 auto; }
.sobre-empilhado p { margin-bottom: 18px; color: var(--tinta-suave); font-size: 1.08rem; text-align: justify; }
/* As duas imagens uma ao lado da outra */
.sobre-duas-imgs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
  margin: 28px 0;
}
.sobre-duas-imgs img {
  width: 100%;
  border-radius: 12px;
  box-shadow: 0 8px 24px rgba(0,0,0,.12);
}

/* ----- Nossa Equipe: cards com foto redonda ----- */
.equipe-grade {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 32px;
  margin-top: 12px;
}
.equipe-card { text-align: center; }
.equipe-card img {
  width: 170px;
  height: 170px;
  object-fit: cover;          /* recorta a foto no círculo */
  border-radius: 50%;
  margin: 0 auto 16px;
  border: 3px solid var(--verde-claro);
}
.equipe-card h3 { font-size: 1.25rem; color: var(--verde-escuro); margin-bottom: 4px; }
.equipe-cargo {
  display: block;
  font-family: var(--fonte-mono);
  text-transform: uppercase;
  letter-spacing: 1px;
  font-size: .8rem;
  color: var(--verde);
  margin-bottom: 12px;
}
.equipe-bio { color: var(--tinta-suave); font-size: .98rem; }

/* ----- O que já fizemos: TIMELINE VERTICAL -----
   A régua âmbar→verde conecta os marcos (2016 → ... → hoje). O ano fica à
   esquerda da régua, em mono; um nó marca cada marco. Para adicionar um marco,
   copie um bloco <div class="feito"> no HTML — o nó e a régua se ajustam sozinhos. */
.feitos-lista {
  position: relative;
  max-width: 880px;
  margin: 48px auto 0;
}
.feito {
  position: relative;
  padding-left: 132px;
  padding-bottom: 52px;
}
.feito:last-child { padding-bottom: 0; }
/* Régua vertical: cada marco liga seu nó ao do marco seguinte (passa por trás
   do nó, que é opaco). O último marco não desenha régua. */
.feito:not(:last-child)::after {
  content: "";
  position: absolute;
  left: 97px;
  top: 4px;
  bottom: -4px;
  width: 2px;
  background: var(--verde-claro);
}
/* Ano à esquerda da régua, em mono */
.feito-ano {
  position: absolute;
  left: 0;
  top: -4px;
  width: 78px;
  text-align: right;
  background: none;
  color: var(--verde-escuro);
  font-family: var(--fonte-mono);
  font-weight: 600;
  font-size: 1.35rem;
  padding: 0;
  margin: 0;
  border-radius: 0;
}
/* Nó sobre a régua, alinhado ao ano */
.feito::before {
  content: "";
  position: absolute;
  left: 90px;
  top: 4px;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: var(--amarelo);
  border: 3px solid var(--fundo);
  box-shadow: 0 0 0 2px var(--verde);
  z-index: 1;
}
.feito-texto p { color: var(--tinta-suave); font-size: 1.08rem; margin-bottom: 16px; text-align: justify; }
/* A imagem vem DEPOIS do texto, ocupando a largura do bloco */
.feito-img {
  width: 100%;
  margin-top: 24px;
  border-radius: 12px;
  box-shadow: 0 8px 24px rgba(0,0,0,.12);
}

/* ----- Vídeos ----- */
.feitos-videos-titulo {
  text-align: center;
  font-size: 1.6rem;
  color: var(--verde-escuro);
  margin-top: 72px;
  margin-bottom: 8px;
}
.videos-grade {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 24px;
  margin-top: 24px;
}
.videos-grade video {
  width: 100%;
  border-radius: 12px;
  box-shadow: 0 8px 24px rgba(0,0,0,.12);
  background: #000;
}

/* --------------------------------------------------------------------------
   12b. CARROSSEL DE PROVA SOCIAL (quem-somos — entre o histórico e os vídeos)
   Rolagem horizontal com snap + botões de navegação (‹ ›).
   -------------------------------------------------------------------------- */
.carrossel-prova { position: relative; max-width: var(--largura); margin: 0 auto; }
.carrossel-trilho {
  display: flex;
  gap: 16px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  padding: 8px 4px 16px;
}
.carrossel-trilho::-webkit-scrollbar { height: 8px; }
.carrossel-trilho::-webkit-scrollbar-thumb { background: var(--cinza-borda); border-radius: 8px; }
.carrossel-trilho img {
  height: 320px;
  width: auto;
  border-radius: 12px;
  scroll-snap-align: center;
  box-shadow: 0 6px 20px rgba(0,0,0,.12);
  flex-shrink: 0;
  object-fit: cover;
  background: var(--fundo-suave);
}
.carrossel-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 2;
  width: 44px; height: 44px;
  border-radius: 50%;
  border: none;
  background: rgba(31,107,46,.92);
  color: #fff;
  font-size: 1.7rem;
  line-height: 1;
  cursor: pointer;
  box-shadow: 0 4px 14px rgba(0,0,0,.2);
}
.carrossel-nav:hover { background: var(--verde-escuro); }
.carrossel-nav.prev { left: -10px; }
.carrossel-nav.next { right: -10px; }
.link-laudo { color: var(--verde); font-weight: 600; }

@media (max-width: 680px) {
  .carrossel-trilho img { height: 240px; }
  .carrossel-nav { display: none; }   /* no celular usa o swipe */

  /* Timeline no celular: ano acima do texto, régua encostada à esquerda */
  .feito:not(:last-child)::after { left: 7px; }
  .feito { padding-left: 32px; padding-bottom: 40px; }
  .feito-ano {
    position: static;
    width: auto;
    text-align: left;
    margin-bottom: 10px;
    font-size: 1.2rem;
  }
  .feito::before { left: 0; top: 6px; }
}

/* --------------------------------------------------------------------------
   14. RESPONSIVO (celular e tablet)
   -------------------------------------------------------------------------- */
@media (max-width: 860px) {
  .nav { min-height: 88px; }
  .nav-logo img { height: 112px; }            /* logo menor no celular */
  .nav-menu { gap: 14px; font-size: 14px; flex-wrap: wrap; }
  .hero { padding: 88px 22px; }
  .hero h1 { font-size: 2.1rem; }
  .hero p { font-size: 1.05rem; }
  .rodape-grade { grid-template-columns: 1fr; }
  .carrossel img { height: 280px; }
  .sobre-duas-imgs { grid-template-columns: 1fr; }   /* imagens empilham no celular */
}

/* --------------------------------------------------------------------------
   15. PÁGINA ECOLIFE — COMPONENTES DE CONVERSÃO
   (faixa de prova, números de impacto, ilusão da compostagem, passos,
    pilares, tabela de sanitização, cases, aplicações, CTA intermediário)
   -------------------------------------------------------------------------- */

/* ----- Subtítulo-gancho logo abaixo do título da solução ----- */
.solucao-gancho {
  text-align: center;
  font-size: 1.45rem;
  font-weight: 600;
  color: var(--tinta);
  max-width: 760px;
  margin: 4px auto 22px;
  line-height: 1.4;
}
.solucao-cta-topo { text-align: center; margin-bottom: 8px; }

/* ----- Imagem de impacto no topo da solução (hero) ----- */
.solucao-hero-img {
  display: block;
  width: 100%;
  max-width: 900px;
  margin: 18px auto 24px;
  border-radius: 16px;
  box-shadow: 0 12px 36px rgba(0,0,0,.16);
}

/* ----- Faixa de prova / credenciais (uma linha de selos com ✓) ----- */
.faixa-prova {
  display: flex; flex-wrap: wrap; justify-content: center;
  gap: 12px 30px;
  max-width: var(--largura);
  margin: 0 auto;
  padding: 22px 24px;
}
.prova-selo {
  display: flex; align-items: center; gap: 9px;
  font-weight: 500; color: var(--tinta-suave); font-size: .98rem;
}
.prova-selo::before { content: "\2713"; color: var(--verde); font-weight: 700; font-size: 1.1rem; }

/* ----- Faixa de NÚMEROS DE IMPACTO ----- */
.numeros-impacto {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 18px;
  max-width: var(--largura);
  margin: 0 auto;
  background: var(--fundo-suave);
  border-radius: 14px;
  padding: 34px 24px;
}
.numero-item { text-align: center; }
.numero-valor {
  font-family: var(--fonte-mono); font-weight: 600;
  font-size: 2.2rem; line-height: 1.1; color: var(--verde-escuro);
}
.numero-rotulo { color: var(--tinta-suave); font-size: .92rem; margin-top: 6px; }

/* ----- "A ilusão da compostagem": duas colunas (problema x ECOLIFE) ----- */
.comparacao { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-top: 6px; }
.comparacao-col { border-radius: 12px; padding: 24px 26px; }
.comparacao-col.ruim { background: #fdf3ef; border: 1px solid #f1cebf; }
.comparacao-col.bom  { background: #f0f8ef; border: 1px solid var(--verde-claro); }
.comparacao-col h3 { font-size: 1.2rem; margin-bottom: 14px; }
.comparacao-col.ruim h3 { color: #b1451f; }
.comparacao-col.bom  h3 { color: var(--verde-escuro); }
.comparacao-col ul { list-style: none; margin: 0 !important; }
.comparacao-col li { position: relative; padding-left: 26px; margin-bottom: 11px; color: var(--tinta-suave); }
.comparacao-col.ruim li::before { content: "\2715"; position: absolute; left: 0; color: #c0392b; font-weight: 700; }
.comparacao-col.bom  li::before { content: "\2713"; position: absolute; left: 0; color: var(--verde); font-weight: 700; }

/* ----- Passos do "Como funciona" (numerados automaticamente) ----- */
.passos {
  counter-reset: passo;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 20px; list-style: none; margin: 6px 0 0 !important;
}
.passos li { background: var(--fundo-suave); border-radius: 12px; padding: 24px 22px; }
.passos li::before {
  counter-increment: passo; content: counter(passo);
  display: flex; align-items: center; justify-content: center;
  width: 38px; height: 38px; border-radius: 50%;
  background: var(--verde); color: #fff;
  font-family: var(--fonte-mono); font-weight: 600; margin-bottom: 12px;
}
.passos li strong { display: block; color: var(--verde-escuro); margin-bottom: 6px; font-size: 1.05rem; }
.passos li span { color: var(--tinta-suave); font-size: .98rem; }

/* ----- Três pilares de benefício ----- */
.pilares { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 24px; }
.pilar {
  background: var(--fundo-card); border: 1px solid var(--cinza-borda);
  border-radius: 12px; padding: 30px 24px; text-align: center;
}
.pilar-icone { font-size: 2.4rem; margin-bottom: 12px; }
.pilar h3 { color: var(--verde-escuro); font-size: 1.22rem; margin-bottom: 10px; }
.pilar p { color: var(--tinta-suave); font-size: 1rem; margin: 0; }

/* ----- Caixa do gráfico (Chart.js) ----- */
.grafico-caixa {
  position: relative;
  height: 360px;
  max-width: 780px;
  margin: 10px auto 0;
}

/* ----- Cards de case (clientes reais) ----- */
/* 250px (não 280) para os 4 cases caberem numa linha só no desktop:
   4×250 + 3×24 de gap = 1072 px, dentro da largura útil de 1180 px. */
.cases-grade { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 24px; }
.case-card { background: var(--fundo-card); border: 1px solid var(--cinza-borda); border-radius: 12px; overflow: hidden; }
.case-card img { width: 100%; height: 210px; object-fit: cover; background: var(--fundo-suave); }
.case-corpo { padding: 22px 24px; }

/* ----- Figuras técnicas de processo (fluxograma, câmara, entrada/saída) -----
   Vêm dos estudos de Economia Circular. Ficam sobre fundo suave com borda leve,
   para se lerem como "figura de documento técnico" e não como foto do produto. */
.figura-processo {
  margin: 26px 0 30px;
  background: var(--fundo-suave);
  border: 1px solid var(--cinza-borda);
  border-radius: 14px;
  padding: 16px 16px 4px;
}
.figura-processo img { width: 100%; height: auto; border-radius: 8px; }
.figura-processo figcaption {
  color: var(--tinta-suave);
  font-size: .95rem;
  line-height: 1.55;
  padding: 12px 6px 14px;
  border-top: 1px solid var(--cinza-borda);
  margin-top: 14px;
}

/* ----- Fotos do produto final (fertilizante), lado a lado e CENTRALIZADAS ----- */
.produto-fotos {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 18px;
  margin: 14px auto 0;      /* o `auto` nas laterais é o que centraliza o bloco */
  max-width: 820px;
  justify-items: center;
}
.produto-fotos img { width: 100%; height: 300px; object-fit: cover; border-radius: 12px; box-shadow: 0 6px 20px rgba(0,0,0,.12); }

/* ----- Caixa de premissas de preço (antes da tabela de custo) -----
   Deixa explícito de onde vem cada número, sem poluir o corpo do texto.
   Uma premissa POR LINHA, em duas colunas (um lado da comparação em cada),
   porque em texto corrido a lista de preços fica ilegível. */
.premissas-box {
  background: var(--fundo-suave);
  border-left: 3px solid var(--amarelo-ouro);
  border-radius: 0 10px 10px 0;
  padding: 20px 24px 16px;
  margin: 18px 0 26px;
  font-size: .95rem;
  color: var(--tinta-suave);
}
.premissas-box h4 {
  font-family: var(--fonte-mono);
  text-transform: uppercase;
  letter-spacing: .08em;
  font-size: .78rem;
  color: var(--verde-escuro);
  margin-bottom: 16px;
}
.premissas-grade {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  /* 22px de gap entre LINHAS: no celular as duas colunas viram uma só, e sem esse
     respiro o segundo grupo ("Composteira") cola no fim do primeiro. */
  gap: 22px 40px;
}
.premissas-titulo {
  display: block;
  font-weight: 600;
  color: var(--tinta);
  padding-bottom: 6px;
  margin-bottom: 8px;
  border-bottom: 1px solid var(--cinza-borda);
}
/* dt = o que é · dd = quanto custa. Alinhado à esquerda, NÃO justificado:
   são linhas curtas, justificar abriria buracos. */
.premissas-box dl { margin: 0; }
.premissas-box dt {
  color: var(--tinta-suave);
  text-align: left;
  margin-top: 9px;
}
.premissas-box dd {
  margin: 0 0 0 14px;
  color: var(--tinta);
  font-weight: 500;
  text-align: left;
}
.premissas-box dd em { font-weight: 400; color: var(--tinta-suave); font-style: normal; }
.premissas-nota {
  margin-top: 16px;
  padding-top: 12px;
  border-top: 1px solid var(--cinza-borda);
  font-size: .92rem;
  text-align: left !important;   /* vence a justificação global da seção 2b */
}
.case-tag { font-family: var(--fonte-mono); text-transform: uppercase; letter-spacing: 1px; font-size: .75rem; color: var(--verde); }
.case-card h3 { color: var(--verde-escuro); font-size: 1.25rem; margin: 6px 0 10px; }
.case-card p { color: var(--tinta-suave); font-size: 1rem; margin: 0; }

/* ----- Aplicações / resíduos atendidos (ícones) ----- */
.aplicacoes { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 18px; }
.aplicacao { text-align: center; background: var(--fundo-suave); border-radius: 12px; padding: 22px 12px; }
.aplicacao-icone { font-size: 2.2rem; }
.aplicacao span { display: block; margin-top: 8px; color: var(--tinta); font-weight: 500; font-size: .95rem; }

/* ----- CTA intermediário (botão centralizado no meio da página) ----- */
.bloco-cta { text-align: center; padding-top: 8px; }
.bloco-cta .btn { margin: 4px; }

/* ----- Frase-âncora de posicionamento (destaque verde, centralizado) ----- */
.claim {
  background: linear-gradient(120deg, var(--verde-escuro), var(--verde));
  color: #fff; border-radius: 14px;
  padding: 30px 34px; margin: 8px 0;
  font-size: 1.25rem; font-weight: 600; line-height: 1.5;
  /* justificado como o resto do texto corrido do site (ver seção 2b) */
  text-align: justify; hyphens: auto; -webkit-hyphens: auto;
}
.claim strong { color: var(--amarelo); }

/* ----- Comparativo de custo operacional mensal (tabela financeira) ----- */
.tabela-custo { width: 100%; border-collapse: collapse; margin: 8px 0 6px; font-size: 1rem; }
.tabela-custo caption {
  caption-side: top; text-align: left; font-weight: 600;
  color: var(--verde-escuro); font-size: 1.1rem; margin-bottom: 10px;
}
.tabela-custo thead th {
  background: var(--verde-escuro); color: #fff; text-align: left;
  padding: 12px 16px; font-weight: 600;
}
.tabela-custo th[scope="row"] { text-align: left; font-weight: 500; color: var(--tinta); }
.tabela-custo td, .tabela-custo th[scope="row"] {
  padding: 11px 16px; border-bottom: 1px solid var(--cinza-borda);
}
.tabela-custo td { color: var(--tinta-suave); text-align: right; font-family: var(--fonte-mono); }
.tabela-custo tbody tr:nth-child(even) { background: var(--fundo-suave); }
.tabela-custo .linha-economia { background: #eafaef !important; }
.tabela-custo .linha-economia th, .tabela-custo .linha-economia td {
  color: var(--verde-escuro); font-weight: 700; border-top: 2px solid var(--verde);
}
/* Linha de subtotal (ex.: custo líquido = operação − receita) */
.tabela-custo .linha-subtotal th, .tabela-custo .linha-subtotal td {
  color: var(--tinta); font-weight: 700; border-top: 1px solid var(--tinta-suave);
}
/* ----- Análise de viabilidade: títulos numerados das 4 partes -----
   Hierarquia intermediária entre o <h2> da seção e o corpo, para a análise não virar
   uma parede de tabelas sem orientação. */
.viab-titulo {
  font-family: var(--fonte-mono);
  text-transform: uppercase;
  letter-spacing: .07em;
  font-size: .85rem;
  color: var(--verde-escuro);
  margin: 40px 0 12px;
  padding-bottom: 8px;
  border-bottom: 2px solid var(--amarelo-ouro);
}

/* ----- Container rolável das tabelas -----
   As tabelas de 3 colunas (item · composteira · ECOLIFE®) não cabem em 390 px. Elas
   rolam DENTRO desta caixa, para que a PÁGINA nunca role na horizontal — que é o que
   quebra a leitura no celular. O `min-width` garante que as colunas não se esmaguem:
   sem ele o navegador comprime tudo e os valores quebram em várias linhas. */
.tabela-rolavel { overflow-x: auto; -webkit-overflow-scrolling: touch; margin: 8px 0 6px; }
.tabela-rolavel .tabela-custo { min-width: 560px; margin: 0; }
.tabela-rolavel::-webkit-scrollbar { height: 8px; }
.tabela-rolavel::-webkit-scrollbar-thumb { background: var(--cinza-borda); border-radius: 8px; }

/* Tabelas de 3 colunas (item · composteira · ECOLIFE): números à direita, e as duas
   colunas de valor com largura igual para a comparação ficar alinhada. */
.tabela-custo thead th:nth-child(2),
.tabela-custo thead th:nth-child(3) { width: 27%; text-align: right; }
.tabela-custo td em { font-style: normal; color: var(--tinta-suave); font-size: .9em; }

/* Cabeçalho de grupo dentro da tabela (separa o lado ECOLIFE do lado composteira) */
.tabela-custo .linha-grupo th {
  background: var(--fundo-suave);
  font-family: var(--fonte-mono);
  text-transform: uppercase;
  letter-spacing: .07em;
  font-size: .76rem;
  color: var(--verde-escuro);
  padding-top: 14px; padding-bottom: 10px;
}

/* ----- Nota de revisão (lembrete amarelo, NÃO publicar — só para o Jean ver) ----- */
.nota-revisao {
  background: #fffbe6; border: 1px dashed var(--amarelo-ouro);
  border-radius: 8px; padding: 12px 16px; margin: 14px 0;
  font-size: .9rem; color: #8a6d00;
}

/* ----- Frase de resultado da análise de custo (fecho do bloco de conversão) -----
   Substituiu, em 28/08/2026, a faixa de 3 números: o Jean preferiu uma afirmação
   única e direta ao trio de métricas. Fundo suave e barra verde para o olho parar
   nela ao rolar a página, sem virar mais uma caixa colorida. */
.resultado-destaque {
  background: var(--fundo-suave);
  border-left: 4px solid var(--verde);
  border-radius: 0 10px 10px 0;
  padding: 18px 24px;
  margin: 22px 0 20px !important;
  font-size: 1.18rem;
  line-height: 1.5;
  color: var(--verde-escuro);
}

/* --------------------------------------------------------------------------
   15b. EBOOK — CAPTURA DE LEAD (seção #ebook da página ECOLIFE)
   Duas colunas: à esquerda o que o material entrega, à direita o formulário.
   O formulário é o único ponto do site que coleta dado pessoal — por isso o
   consentimento é um item visível do layout, não uma linha miúda no rodapé.
   -------------------------------------------------------------------------- */
/* O cabeçalho é sticky (117 px no desktop; 180 px no celular, empilhado). Sem esta
   folga, clicar no CTA leva o título da seção para DEBAIXO do menu. */
.ebook-bloco { scroll-margin-top: 140px; }
.ebook-chamada { font-size: 1.06rem; }

.ebook-grade {
  display: grid;
  grid-template-columns: 1fr 1.05fr;
  gap: 34px;
  align-items: start;
  margin-top: 22px;
}

.ebook-itens { list-style: none; margin: 0 !important; }
.ebook-itens li {
  position: relative;
  padding-left: 26px;
  margin-bottom: 13px;
  color: var(--tinta-suave);
  line-height: 1.55;
}
.ebook-itens li::before {
  content: "\2713";
  position: absolute; left: 0;
  color: var(--verde); font-weight: 700;
}

.ebook-form {
  background: var(--fundo-suave);
  border: 1px solid var(--cinza-borda);
  border-radius: 14px;
  padding: 26px 26px 22px;
}
.ebook-form .campo { margin-bottom: 14px; }
.ebook-form .campo-dupla {
  display: grid; grid-template-columns: 1fr 1fr; gap: 14px;
}
.ebook-form label {
  display: block;
  font-size: .9rem; font-weight: 500;
  color: var(--tinta); margin-bottom: 5px;
}
.ebook-form .obrig { color: #c0392b; margin-left: 3px; }
.ebook-form .opcional { color: var(--tinta-suave); font-weight: 400; }
.ebook-form input[type="text"],
.ebook-form input[type="email"],
.ebook-form input[type="tel"],
.ebook-form input[type="date"],
.ebook-form select {
  width: 100%;
  box-sizing: border-box;          /* sem isto o padding estoura a coluna */
  font-family: var(--fonte-corpo);
  font-size: 1rem;
  color: var(--tinta);
  background: var(--fundo);
  border: 1px solid var(--cinza-borda);
  border-radius: 8px;
  padding: 10px 12px;
}
.ebook-form input:focus, .ebook-form select:focus {
  outline: none;
  border-color: var(--verde);
  box-shadow: 0 0 0 3px rgba(46,155,61,.15);
}
/* erro só depois da primeira tentativa de envio — campo vazio não nasce vermelho */
.ebook-form.validado input:invalid,
.ebook-form.validado select:invalid { border-color: #d99b8c; background: #fdf6f4; }

/* honeypot: fora da tela, mas não `display:none` — bot preenche campo escondido
   assim mesmo, e leitor de tela ignora pelo aria-hidden do container. */
.campo-oculto {
  position: absolute; left: -9999px;
  width: 1px; height: 1px; overflow: hidden;
}

.campo-consentimento {
  display: flex; align-items: flex-start; gap: 10px;
  margin: 16px 0 18px;
  font-size: .88rem; line-height: 1.5;
  color: var(--tinta-suave); font-weight: 400;
}
.campo-consentimento input { margin-top: 3px; flex-shrink: 0; }

.ebook-enviar { width: 100%; text-align: center; }

.ebook-aviso { margin: 12px 0 0; font-size: .92rem; color: var(--tinta-suave); }
.ebook-aviso.erro { color: #b1451f; }
.ebook-aviso a { color: var(--verde-escuro); font-weight: 500; }

.ebook-obrigado {
  color: var(--verde-escuro);
  font-size: 1.02rem; line-height: 1.6;
  padding: 8px 2px;
}
.ebook-obrigado strong { font-size: 1.15rem; display: block; margin-bottom: 6px; }

@media (max-width: 860px) {
  .ebook-grade { grid-template-columns: 1fr; gap: 24px; }
}

@media (max-width: 760px) {
  .comparacao { grid-template-columns: 1fr; }
  .numero-valor { font-size: 1.9rem; }

  /* ----- CABEÇALHO EMPILHADO NO CELULAR -----
     No desktop a logo é `position: absolute` para poder "transbordar" a faixa branca
     sem aumentar a altura dela (seção 4). Em tela estreita isso quebra: a logo ocupa
     quase toda a largura disponível e o menu, que segue no fluxo normal, acaba
     desenhado POR CIMA dela. Aqui a logo volta ao fluxo, centralizada, e o menu desce
     para a linha de baixo.
     ATENÇÃO: este bloco tem de ficar DEPOIS do @media 860px — as duas regras têm a
     mesma especificidade, então quem vence é a última do arquivo. */
  .nav {
    flex-direction: column;
    justify-content: center;
    gap: 10px;
    min-height: 0;
    padding: 14px 16px 12px;
  }
  .nav-logo { position: static; transform: none; left: auto; top: auto; }
  .nav-logo img { height: 78px; }
  .nav-menu {
    justify-content: center;
    flex-wrap: wrap;
    gap: 8px 16px;
    font-size: 14px;
  }
  /* o filete vertical sai: no layout empilhado viraria um risco solto no meio */
  .nav-idiomas { border-left: 0; padding-left: 0; margin-left: 0; }

  .ebook-bloco { scroll-margin-top: 200px; }   /* cabeçalho empilhado é mais alto */
  .ebook-form { padding: 20px 18px 18px; }
  .ebook-form .campo-dupla { grid-template-columns: 1fr; }

  .figura-processo { padding: 10px 10px 2px; }
  .produto-fotos img { height: 240px; }
}
