@charset "UTF-8";

/* ==========================================================================
   Alma Portuguesa - Custom Styles
   Tema filho: AlmaPortuguesa-child
   Base do Divi: .et-db .et-l .custom-section .custom-content
   ========================================================================== */

/*
  ÍNDICE
  ------
  0. Design Tokens → tokens/tokens.css
  1. Base & Reset
      1.1 Reset e tipografia base
      1.2 Seleção de texto
      1.3 Foco visível (acessibilidade)
      1.4 Scrollbar
  2. Layout base (.custom-section / .custom-content)
      2.1 Seção e row
      2.2 Row de largura total (.full-width)
      2.3 Container da página (#page-container, libera o sticky)
  3. Componentes
      3.1 Botão (.custom-button / .custom-button.light)
      3.2 Título (.title)
      3.3 Subtítulo (.subtitle)
      3.4 Eyebrow (.eyebrow)
      3.5 Texto (.text)
      3.6 Cards em Blurb: solução (.solution), etapa (.step) e simples (.simple-card)
      3.6b Card de experiência de tour (.card-solution.model01)
      3.6c Card de assistência aeroportuária (.card-solution.model02)
      3.6d Etapa parceiro (.step.model02)
      3.8 Hero (.custom-hero)
      3.9 Legenda do hero (.custom-hero.legend)
      3.10 Hero – front (zoom do vídeo, mouse, parallax)
      3.12 Destaque (.feature)
      3.13 Hero interno (.hero.internal)
      3.14 Formulário (.custom-form) – campos, erro, toast CF7 e telefone
  4. Header (base visual + camada html.ap-js só no front-end)
      4.1 Overlay e trava de scroll (front)
      4.2 Wrapper Theme Builder
      4.3 Barra flutuante
      4.4 Logo
      4.5 Menu desktop
      4.6 Submenu desktop
      4.7 Submenu desktop – animação (front)
      4.8 Entrada e hide/show no scroll (front)
      4.13 Movimento reduzido
  5. Footer
      5.1 Seção
      5.2 Colunas
      5.3 Marca
      5.4 Título de coluna
      5.5 Links e contatos
      5.6 Menus em lista vertical
      5.7 Redes sociais
      5.8 Linha legal
  6. Seções
      6.1 Soluções (.solutions-carousel) – base e carrossel
      6.2 Soluções – galeria fixa no scroll (front, desktop)
      6.4 CTA com vídeo de fundo (.cta-fullwidth)
      6.5 CTA com vídeo – abertura no scroll (front)
      6.7 Etapas (.steps-gallery) – base
      6.8 Etapas – galeria fixa no scroll (front, desktop)
      6.10 Instagram (.instagram) – feed Smash Balloon
      6.12 CTA com imagem (.cta-fullwidth.model2)
      6.13 CTA com imagem – parallax do fundo (front)
      6.14 Cards de serviços (.solutions-cards)
      6.16 Card único de serviço (.solutions-only-card)
      6.16b Sobre / intro + foto (.solutions-only-card sem .subtitle)
      6.18 Cards simples de serviço (.solutions-simple-cards)
      6.20 Hero de serviço (.hero-solution)
      6.22 Frota do serviço (.more-about)
      6.22b Destinos (.items-list-solutions.model-02)
      6.22c Cards de experiências (.more-about .cards)
      6.24 Formulário de serviço (.solution-form)
      6.24b Contato (.solution-form.contact)
      6.26 Parceiros – intro (.about-partners)
      6.28 Grupos e eventos (.groups-events)
      6.28b Variante vídeo (.groups-events.model02)
      6.30 Sobre Manuel (.about-manuel)
      6.32 Frase em destaque (.feature-phrase)
      6.34 Hero só título (.hero-only-text)
      6.36 Conteúdo com índice (.ancora)
      6.38 Tarifário (.tarifario)
      6.40 Acesso com senha (.password-gate)
      6.42 Página 404 (.error-404)
  8. Animações de entrada (scroll reveal, só no front)
      8.1 Bloco: fade + subida
      8.2 Título: palavras com máscara
      8.3 Imagem: recorte + zoom
      8.4 Movimento reduzido
      8.5 Subtítulo: palavras acendem com a rolagem
      8.6 Título: cresce ao entrar na tela
  7. Responsivo (final do arquivo)
      7.1 Tablet ≤ 980px
      7.2 Mobile ≤ 767px
      7.3 Desktop compacto 981–1199px (header)
*/

/* ==========================================================================
   1. BASE & RESET
   ========================================================================== */

/* —— 1.1 Reset e tipografia base —— */
input,
textarea,
button,
select,
a {
  -webkit-tap-highlight-color: transparent;
}
a,
button,
input[type="submit"] {
  transition: color var(--transition-default), background-color var(--transition-default), border-color var(--transition-default), opacity var(--transition-default);
}
body {
  overflow-x: hidden;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-150);
  color: var(--color-text-primary);
  background-color: var(--color-background-page);
}

/* —— 1.2 Seleção de texto —— */
::selection {
  color: var(--color-text-inverse);
  background-color: var(--color-action-default);
}

/* —— 1.3 Foco visível (anel de 2px com afastamento – Figma AP/Focus/Ring) —— */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
  outline: none;
  box-shadow: var(--shadow-focus-ring);
}

/* —— 1.4 Scrollbar —— */
::-webkit-scrollbar {
  width: var(--space-10);
  height: var(--space-10);
}
::-webkit-scrollbar-track {
  background: var(--color-background-page);
}
::-webkit-scrollbar-thumb {
  background: var(--color-border-control);
  border-radius: var(--border-radius-pill);
}
::-webkit-scrollbar-thumb:hover {
  background: var(--color-action-default);
}
* {
  scrollbar-width: thin;
  scrollbar-color: var(--color-border-control) var(--color-background-page);
}

/* ==========================================================================
   2. LAYOUT BASE
   Seção Divi com classe custom-section e row com classe custom-content.
   Largura vem do width (margens do Figma: 40 / 25 / 20px), nunca de padding.
   ========================================================================== */

/* —— 2.1 Seção e row —— */
.et-db .et-l .custom-section {
  padding: var(--space-100) 0;
}
.et-db .et-l .custom-section .custom-content {
  width: calc(100% - (2 * var(--space-40)));
  max-width: var(--container-max-width);
  margin-left: auto;
  margin-right: auto;
  padding: 0;
}
/* Width fixo no módulo (ex.: título com 650px no Divi) não passa da row no celular.
   :where() zera a especificidade: o Max Width definido no Divi continua valendo. */
:where(.et-db .et-l .custom-section .custom-content .et_pb_module) {
  max-width: 100%;
}

/* —— 2.2 Row de largura total (.custom-content.full-width) – ex.: hero —— */
.et-db .et-l .custom-section .custom-content.full-width {
  width: 100%;
  max-width: none;
}

/* —— 2.3 Container da página (#page-container) ——
   Quando a página tem alguma animação do Divi, o script dele grava
   style="overflow-y: hidden" no #page-container, o que quebra o position: sticky
   (galeria de soluções, 6.2). !important: só assim se vence o estilo inline.
   O corte horizontal continua no body (overflow-x: hidden do Divi). */
html.ap-js #page-container {
  overflow-y: visible !important;
}

/* ==========================================================================
   3. COMPONENTES
   Classe base reaproveitável + modificadores. No Divi, basta colocar a classe
   no campo "Classe CSS" do módulo (ex.: .custom-button, .custom-button.light).
   Módulos que não aceitam classe no elemento (ex.: título e botão do Fullwidth
   Header do hero) entram no seletor do componente e só ajustam o que muda.
   ========================================================================== */

/* —— 3.1 Botão (.custom-button – Figma AP/Home/Button) ——
   Módulo Botão do Divi. Base = tema Forest (verde); .light = tema Light (branco).
   Padding do Figma 16/32 → 15/30. O botão do hero usa o componente no tema Light.
   !important no line-height: o Divi aplica line-height: 1.7em !important no .et_pb_button. */
.et-db .et-l .custom-section .custom-button,
.et-db .et-l .custom-section .custom-hero .et_pb_button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-10);
  margin: 0;
  padding: var(--space-15) var(--space-30);
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-120) !important;
  letter-spacing: 0;
  color: var(--color-text-inverse);
  text-decoration: none;
  white-space: nowrap;
  background-color: var(--color-action-default);
  border: 0;
  border-radius: var(--border-radius-pill);
  transition: background-color var(--transition-default), color var(--transition-default), box-shadow var(--transition-default);
}
/* Hover sem mudar o padding (o Divi abre espaço para a seta no hover) */
.et-db .et-l .custom-section .custom-button:hover,
.et-db .et-l .custom-section .custom-hero .et_pb_button:hover {
  padding: var(--space-15) var(--space-30);
  color: var(--color-text-inverse);
  background-color: var(--color-action-hover);
  border: 0;
}
.et-db .et-l .custom-section .custom-button:active,
.et-db .et-l .custom-section .custom-hero .et_pb_button:active {
  color: var(--color-text-inverse);
  background-color: var(--color-action-pressed);
}
.et-db .et-l .custom-section .custom-button:focus-visible,
.et-db .et-l .custom-section .custom-hero .et_pb_button:focus-visible {
  outline: none;
  box-shadow: var(--shadow-focus-ring);
}
/* Remove a seta ETmodules que o Divi mostra no hover */
.et-db .et-l .custom-section .custom-button::before,
.et-db .et-l .custom-section .custom-button::after,
.et-db .et-l .custom-section .custom-hero .et_pb_button::before,
.et-db .et-l .custom-section .custom-hero .et_pb_button::after {
  display: none;
}
.et-db .et-l .custom-section .custom-button.disabled,
.et-db .et-l .custom-section .custom-button[aria-disabled="true"] {
  color: var(--color-text-secondary);
  background-color: var(--color-action-disabled);
  pointer-events: none;
}
/* Tema Light: fundo branco; no hover/active vira o verde do tema Forest */
.et-db .et-l .custom-section .custom-button.light,
.et-db .et-l .custom-section .custom-hero .et_pb_button {
  color: var(--color-text-link);
  background-color: var(--color-background-surface);
}
.et-db .et-l .custom-section .custom-button.light:hover,
.et-db .et-l .custom-section .custom-hero .et_pb_button:hover {
  color: var(--color-text-inverse);
  background-color: var(--color-action-hover);
}
.et-db .et-l .custom-section .custom-button.light:active,
.et-db .et-l .custom-section .custom-hero .et_pb_button:active {
  color: var(--color-text-inverse);
  background-color: var(--color-action-pressed);
}

/* —— 3.2 Título (.title – Figma AP/Approved/Display: 90 Bold, lh 100%, -1.6px) ——
   Módulo Texto com o heading dentro (h1–h6). O título do hero usa o componente
   na cor inversa (3.8). Tablet 72px e mobile 44px em 3.7.
   No front-end o título cresce ao entrar na tela (8.6). */
.et-db .et-l .custom-section .title :is(h1, h2, h3, h4, h5, h6),
.et-db .et-l .custom-section .custom-hero .et_pb_module_header {
  margin: 0;
  padding: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-hero-display);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-100);
  letter-spacing: var(--letter-spacing-hero);
  color: var(--color-text-heading);
  text-wrap: balance;
}

/* —— 3.3 Subtítulo (.subtitle – Figma AP/Display/Mobile: 36 Light, lh 120%) ——
   Módulo Texto (heading ou parágrafo dentro). Trechos em <strong> ficam em Bold.
   No front-end as palavras "acendem" conforme a rolagem (8.5). */
.et-db .et-l .custom-section .subtitle :is(h1, h2, h3, h4, h5, h6, p) {
  margin: 0;
  padding: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-display-mobile);
  font-weight: var(--font-weight-light);
  line-height: var(--line-height-120);
  letter-spacing: 0;
  color: var(--color-text-heading);
}
.et-db .et-l .custom-section .subtitle strong {
  font-weight: var(--font-weight-bold);
}

/* —— 3.4 Eyebrow (.eyebrow – Figma AP/Label/Eyebrow: 12 Bold, caixa alta, +1.4px) ——
   Módulo Texto. Os títulos de coluna do footer (.subtitle) usam este visual. */
.et-db .et-l .custom-section .eyebrow,
.et-db .et-l .custom-section .eyebrow :is(h1, h2, h3, h4, h5, h6, p),
.et-db .et-l .custom-section.footer .subtitle,
.et-db .et-l .custom-section.footer .subtitle :is(h1, h2, h3, h4, h5, h6, p) {
  margin: 0;
  padding: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-eyebrow);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-130);
  letter-spacing: var(--letter-spacing-eyebrow);
  text-transform: uppercase;
  color: var(--color-text-link);
}

/* —— 3.5 Texto (.text – Figma AP/Body/Default: 16/24, texto secundário) ——
   Módulo Texto. O texto de apoio do hero usa o componente na cor inversa (3.8). */
.et-db .et-l .custom-section .text,
.et-db .et-l .custom-section .custom-hero .et_pb_header_content_wrapper > p {
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-150);
  color: var(--color-text-secondary);
}
.et-db .et-l .custom-section .text p:last-child {
  padding-bottom: 0;
}

/* —— 3.6 Cards em Blurb: solução (.solution), etapa (.step) e simples (.simple-card) ——
   Base comum: foto quadrada (radius 16 → 15), descrição 16/24 e link (AP/Label/Button)
   com seta de 14px. O link é o último parágrafo da descrição. O .simple-card não tem foto.
   .solution (Figma 53:295): título AP/Body/Large Bold 20/32. Na home, a galeria (6.2) posiciona.
   .step (Figma 53:355): número automático "01, 02…" (AP/Heading/H1 48 Bold) e título
   AP/Heading/H4 (20 ExtraBold). Foto ao lado do texto; no mobile, empilhado (3.7).
   Na home, a galeria de etapas (6.8) posiciona. */
.et-db .et-l .custom-section :is(.solution, .step, .simple-card) .et_pb_blurb_content {
  display: block;
  max-width: none;
  margin: 0;
  text-align: left;
}
.et-db .et-l .custom-section :is(.solution, .step) .et_pb_main_blurb_image {
  width: 100%;
  margin: 0 0 var(--space-20);
  overflow: hidden;
  border-radius: var(--border-radius-15);
}
.et-db .et-l .custom-section :is(.solution, .step) .et_pb_image_wrap {
  display: block;
  width: 100%;
  aspect-ratio: 1;
}
.et-db .et-l .custom-section :is(.solution, .step) .et_pb_main_blurb_image img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.et-db .et-l .custom-section :is(.solution, .step, .simple-card) .et_pb_blurb_container {
  display: flex;
  flex-direction: column;
  gap: var(--space-10);
  padding: 0;
}
.et-db .et-l .custom-section .solution .et_pb_module_header {
  margin: 0;
  padding: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-body-large);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-120);
  color: var(--color-text-heading);
}
.et-db .et-l .custom-section :is(.solution, .step, .simple-card) .et_pb_blurb_description {
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-150);
  color: var(--color-text-secondary);
}
.et-db .et-l .custom-section :is(.solution, .step, .simple-card) .et_pb_blurb_description p {
  padding-bottom: 0;
}
.et-db .et-l .custom-section :is(.solution, .step, .simple-card) .et_pb_blurb_description p + p {
  margin-top: var(--space-10);
}
/* Link ("Saiba mais", "Fale conosco") + seta (icon-arrow-right.svg em máscara, herda a cor) */
.et-db .et-l .custom-section :is(.solution, .step, .simple-card) .et_pb_blurb_description a {
  display: inline-flex;
  align-items: center;
  gap: var(--space-5);
  font-weight: var(--font-weight-bold);
  color: var(--color-text-link);
  text-decoration: none;
}
.et-db .et-l .custom-section :is(.solution, .step, .simple-card) .et_pb_blurb_description a::after {
  content: "";
  width: 14px;
  height: 14px;
  background-color: currentColor;
  mask: url("../assets/icons/icon-arrow-right.svg") center / contain no-repeat;
  -webkit-mask: url("../assets/icons/icon-arrow-right.svg") center / contain no-repeat;
  transition: transform var(--transition-default);
}
.et-db .et-l .custom-section :is(.solution, .step, .simple-card) .et_pb_blurb_description a:hover {
  color: var(--color-action-hover);
}
.et-db .et-l .custom-section :is(.solution, .step, .simple-card) .et_pb_blurb_description a:hover::after {
  transform: translate3d(var(--space-5), 0, 0);
}
/* Card simples, sem foto (Figma AP/Approved/Service detail 95:2584): título AP/Heading/H3
   (24 Bold, lh 32 → 130%), descrição até 560px e respiro de 24 → 25 entre os blocos */
.et-db .et-l .custom-section .simple-card .et_pb_blurb_container {
  gap: var(--space-25);
}
.et-db .et-l .custom-section .simple-card .et_pb_module_header {
  margin: 0;
  padding: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-h3);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-130);
  color: var(--color-text-heading);
}
.et-db .et-l .custom-section .simple-card .et_pb_blurb_description p {
  max-width: 560px;
}
.et-db .et-l .custom-section .simple-card .et_pb_blurb_description p + p {
  margin-top: var(--space-25);
}

/* —— 3.6b Card de experiência de tour (.card-solution.model01) ——
   Figma 140:14728 (AP/Services/Tour text card). Blurb sem foto: título H2 36
   (mint-700), destaque 16 Bold, corpo body secondary. Padding 32 → 30;
   radius 16 → 15; gap interno 24 → 25. */
.et-db .et-l .custom-section .card-solution.model01 {
  height: 100%;
  background-color: var(--color-background-surface);
  border-radius: var(--border-radius-15);
}
.et-db .et-l .custom-section .card-solution.model01 .et_pb_blurb_content {
  display: block;
  height: 100%;
  max-width: none;
  margin: 0;
  text-align: left;
}
.et-db .et-l .custom-section .card-solution.model01 .et_pb_blurb_container {
  display: flex;
  flex-direction: column;
  gap: var(--space-25);
  height: 100%;
  padding: var(--space-30);
  box-sizing: border-box;
}
.et-db .et-l .custom-section .card-solution.model01 .et_pb_module_header {
  margin: 0;
  padding: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-h2);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-120);
  color: var(--color-action-pressed);
}
.et-db .et-l .custom-section .card-solution.model01 .et_pb_blurb_description {
  display: flex;
  flex-direction: column;
  gap: var(--space-25);
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-150);
  color: var(--color-text-secondary);
}
.et-db .et-l .custom-section .card-solution.model01 .et_pb_blurb_description :is(h1, h2, h3, h4, h5, h6) {
  margin: 0;
  padding: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-150);
  color: var(--color-text-primary);
}
.et-db .et-l .custom-section .card-solution.model01 .et_pb_blurb_description :is(h1, h2, h3, h4, h5, h6) strong {
  font-weight: inherit;
}
.et-db .et-l .custom-section .card-solution.model01 .et_pb_blurb_description p {
  margin: 0;
  padding: 0;
}

/* —— 3.6c Card de assistência aeroportuária (.card-solution.model02) ——
   Figma 151:14651 (AP/Services/Airport assistance card). Blurb sem foto:
   H2 = eyebrow 12 Bold uppercase (mint-700); H3 = título AP/Home/Card 28
   SemiBold; corpo body secondary. Padding 32 → 30; radius 16 → 15;
   gap interno 24 → 25. */
.et-db .et-l .custom-section .card-solution.model02 {
  height: 100%;
  background-color: var(--color-background-surface);
  border-radius: var(--border-radius-15);
}
.et-db .et-l .custom-section .card-solution.model02 .et_pb_blurb_content {
  display: block;
  height: 100%;
  max-width: none;
  margin: 0;
  text-align: left;
}
.et-db .et-l .custom-section .card-solution.model02 .et_pb_blurb_container {
  display: flex;
  flex-direction: column;
  gap: var(--space-25);
  height: 100%;
  padding: var(--space-30);
  box-sizing: border-box;
}
/* Abrangência (ex.: “TODOS OS AEROPORTOS…”, “LISBOA”) */
.et-db .et-l .custom-section .card-solution.model02 .et_pb_module_header {
  margin: 0;
  padding: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-eyebrow);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-130);
  letter-spacing: var(--letter-spacing-eyebrow);
  text-transform: uppercase;
  color: var(--color-action-pressed);
}
.et-db .et-l .custom-section .card-solution.model02 .et_pb_blurb_description {
  display: flex;
  flex-direction: column;
  gap: var(--space-25);
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-150);
  color: var(--color-text-secondary);
}
/* Título do serviço (ex.: “Meet & Greet”, “Fast Track”) */
.et-db .et-l .custom-section .card-solution.model02 .et_pb_blurb_description :is(h1, h2, h3, h4, h5, h6) {
  margin: 0;
  padding: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-card);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-120);
  letter-spacing: 0;
  text-transform: none;
  color: var(--color-text-primary);
}
.et-db .et-l .custom-section .card-solution.model02 .et_pb_blurb_description :is(h1, h2, h3, h4, h5, h6) strong {
  font-weight: inherit;
}
.et-db .et-l .custom-section .card-solution.model02 .et_pb_blurb_description p {
  margin: 0;
  padding: 0;
}

/* Etapa: foto (metade) ao lado do texto, centralizados na vertical.
   O contador conta os .step irmãos da mesma coluna. */
.et-db .et-l .custom-section .et_pb_column:has(> .step) {
  counter-reset: ap-step;
}
.et-db .et-l .custom-section .step {
  counter-increment: ap-step;
}
.et-db .et-l .custom-section .step .et_pb_blurb_content {
  display: flex;
  align-items: center;
  gap: var(--space-30);
}
.et-db .et-l .custom-section .step .et_pb_main_blurb_image {
  flex: 0 0 50%;
  margin: 0;
}
.et-db .et-l .custom-section .step .et_pb_blurb_container {
  flex: 1 1 auto;
}
/* Número da etapa: contador do CSS, segue a ordem dos blurbs na coluna */
.et-db .et-l .custom-section .step .et_pb_blurb_container::before {
  content: counter(ap-step, decimal-leading-zero);
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-h1);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-120);
  color: var(--color-text-heading);
}
.et-db .et-l .custom-section .step .et_pb_module_header {
  margin: 0;
  padding: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-h4);
  font-weight: var(--font-weight-extra-bold);
  line-height: var(--line-height-140);
  color: var(--color-text-heading);
}

/* —— 3.6d Etapa parceiro (.step.model02) ——
   Figma 204:44369. Blurb: fundo do módulo = foto; imagem do blurb = logo.
   Layout: foto (radius 15) | logo + título H3 + local eyebrow + corpo + link.
   Sem contador. O fundo full-bleed do Divi é “apagado” (size 0) e reaparece
   no ::before do content. Gap 16 → 15; foto ~500 (Figma) → metade da row. */
.et-db .et-l .custom-section .step.model02 {
  counter-increment: none;
  /* Divi pinta o fundo do módulo em cover; size 0 mantém a URL p/ o ::before */
  background-repeat: no-repeat;
  background-size: 0 0 !important;
}
.et-db .et-l .custom-section .step.model02 .et_pb_blurb_content {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  grid-template-rows: auto auto;
  column-gap: var(--space-30);
  row-gap: var(--space-15);
  align-items: center;
  /* Divi centra o blurb (text-align + margin auto); logo e texto ficam à esquerda */
  margin-left: 0;
  margin-right: 0;
  text-align: left;
  background-image: inherit;
  background-repeat: no-repeat;
  background-size: 0 0;
}
/* Foto do parceiro (fundo do módulo Divi) */
.et-db .et-l .custom-section .step.model02 .et_pb_blurb_content::before {
  content: "";
  grid-column: 1;
  grid-row: 1 / span 2;
  align-self: center;
  width: 100%;
  aspect-ratio: 5 / 6;
  border-radius: var(--border-radius-15);
  background-image: inherit;
  background-repeat: no-repeat;
  background-position: center;
  background-size: cover;
}
.et-db .et-l .custom-section .step.model02 .et_pb_main_blurb_image {
  grid-column: 2;
  grid-row: 1;
  align-self: end;
  justify-self: start;
  flex: none;
  width: auto;
  max-width: 200px;
  margin: 0;
  overflow: visible;
  border-radius: 0;
  text-align: left;
}
.et-db .et-l .custom-section .step.model02 .et_pb_image_wrap {
  display: block;
  width: auto;
  max-width: 100%;
  height: auto;
  max-height: 96px;
  margin: 0;
  aspect-ratio: auto;
  text-align: left;
}
.et-db .et-l .custom-section .step.model02 .et_pb_main_blurb_image img {
  display: block;
  width: auto;
  max-width: 200px;
  height: auto;
  max-height: 96px;
  margin: 0;
  object-fit: contain;
  object-position: left center;
}
.et-db .et-l .custom-section .step.model02 .et_pb_blurb_container {
  grid-column: 2;
  grid-row: 2;
  align-self: start;
  flex: none;
  width: 100%;
  gap: var(--space-15);
}
.et-db .et-l .custom-section .step.model02 .et_pb_blurb_container::before {
  content: none;
  display: none;
}
.et-db .et-l .custom-section .step.model02 .et_pb_module_header {
  font-size: var(--font-size-h3);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-130);
  color: var(--color-text-heading);
}
.et-db .et-l .custom-section .step.model02 .et_pb_blurb_description {
  display: flex;
  flex-direction: column;
  gap: var(--space-15);
}
.et-db .et-l .custom-section .step.model02 .et_pb_blurb_description :is(h1, h2, h3, h4, h5, h6) {
  margin: 0;
  padding: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-eyebrow);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-130);
  letter-spacing: var(--letter-spacing-eyebrow);
  text-transform: uppercase;
  color: var(--color-text-link);
}
.et-db .et-l .custom-section .step.model02 .et_pb_blurb_description p {
  margin: 0;
  padding: 0;
}
.et-db .et-l .custom-section .step.model02 .et_pb_blurb_description p + p {
  margin-top: 0;
}

/* —— 3.8 Hero (.custom-hero no módulo Fullwidth Header) ——
   Figma 26:85. Vídeo de fundo + película, conteúdo centralizado, ocupa a tela toda.
   O header flutuante fica por cima: o respiro do topo é o espaço dele.
   Camadas: vídeo → película (z 2) → conteúdo (z 3). Os wrappers do Divi ficam
   static para a legenda (.legend) se posicionar em relação ao hero inteiro. */
.et-db .et-l .custom-section.hero {
  padding: 0;
  background-color: var(--color-background-inverse);
}
.et-db .et-l .custom-section .custom-hero {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
  min-height: 100svh;
  margin: 0;
  padding: var(--space-100) 0;
  overflow: hidden;
  text-align: center;
  background-color: var(--color-background-inverse);
}
.et-db .et-l .custom-section .custom-hero .et_pb_fullwidth_header_container {
  position: static;
  display: block;
  width: calc(100% - (2 * var(--space-40)));
  max-width: 800px;
  margin: 0 auto;
}
.et-db .et-l .custom-section .custom-hero .header-content-container {
  position: static;
  width: 100%;
}
.et-db .et-l .custom-section .custom-hero .header-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0; /* O Divi (et_flex_module) põe gap 20; o ritmo fica nos margins do título/botão */
  width: 100%;
  max-width: 100%;
  margin: 0 auto;
  padding: 0;
  text-align: center;
}
/* Título: componente .title (3.2) na cor inversa */
.et-db .et-l .custom-section .custom-hero .et_pb_module_header {
  position: relative;
  z-index: 3;
  margin-bottom: var(--space-30);
  color: var(--color-text-inverse);
}
/* Texto de apoio: componente .text (3.5) na cor inversa */
.et-db .et-l .custom-section .custom-hero .et_pb_header_content_wrapper {
  width: 100%;
}
.et-db .et-l .custom-section .custom-hero .et_pb_header_content_wrapper > p {
  position: relative;
  z-index: 3;
  margin: 0;
  padding: 0;
  color: var(--color-text-inverse);
}
/* Botão: componente .custom-button (3.1) no tema Light.
   Figma 32 de gap + 40 de respiro acima → 70; instância 26:92 usa texto principal. */
.et-db .et-l .custom-section .custom-hero .et_pb_header_button_wrapper {
  position: relative;
  z-index: 3;
  margin-top: var(--space-70);
}
.et-db .et-l .custom-section .custom-hero .et_pb_header_button_wrapper .et_pb_button:not(:hover):not(:active) {
  color: var(--color-text-primary);
}
/* Vídeo de fundo cobrindo o hero (e qualquer .custom-section com vídeo de fundo, ex.: CTA 6.4).
   !important: o MediaElement e o Divi gravam largura/altura/margem inline no player. */
.et-db .et-l .custom-section .custom-hero .et-pb-background-video,
.et-db .et-l .custom-section.et-pb-has-background-video > .et-pb-background-video {
  position: absolute;
  inset: 0;
  z-index: 1;
  overflow: hidden;
  pointer-events: none;
}
.et-db .et-l .custom-section .custom-hero .et-pb-background-video :is(.mejs-container, .mejs-inner, .mejs-mediaelement, mediaelementwrapper, video),
.et-db .et-l .custom-section.et-pb-has-background-video > .et-pb-background-video :is(.mejs-container, .mejs-inner, .mejs-mediaelement, mediaelementwrapper, video) {
  position: absolute;
  inset: 0;
  width: 100% !important;
  height: 100% !important;
  min-width: 0;
  margin: 0 !important;
}
.et-db .et-l .custom-section .custom-hero .et-pb-background-video video,
.et-db .et-l .custom-section.et-pb-has-background-video > .et-pb-background-video video {
  object-fit: cover;
}
.et-db .et-l .custom-section .custom-hero .et-pb-background-video :is(.mejs-controls, .mejs-layers),
.et-db .et-l .custom-section.et-pb-has-background-video > .et-pb-background-video :is(.mejs-controls, .mejs-layers) {
  display: none;
}
/* Película (Figma: #031712 a 30%) */
.et-db .et-l .custom-section .custom-hero .et_pb_fullwidth_header_overlay {
  z-index: 2;
  background-color: var(--overlay-hero);
}
/* Mouse: indicador de rolagem no rodapé do hero (área de scroll do Divi) */
.et-db .et-l .custom-section .custom-hero .et_pb_fullwidth_header_scroll {
  top: auto;
  right: 0;
  bottom: var(--space-40);
  left: 0;
  z-index: 3;
  width: 24px;
  height: 24px;
  min-height: 0;
  margin: 0 auto;
  padding: 0;
}
.et-db .et-l .custom-section .custom-hero .et_pb_fullwidth_header_scroll::before {
  content: "";
  display: block;
  width: 24px;
  height: 24px;
  background-color: var(--color-text-inverse);
  mask: url("../assets/icons/icon-mouse.svg") center / contain no-repeat;
  -webkit-mask: url("../assets/icons/icon-mouse.svg") center / contain no-repeat;
}

/* —— 3.9 Legenda do hero (.custom-hero.legend) ——
   O blockquote do texto vira a citação no canto inferior direito.
   Linha em negrito (<strong>) em caixa alta + linha regular. */
.et-db .et-l .custom-section .custom-hero.legend .et_pb_header_content_wrapper blockquote {
  position: absolute;
  right: var(--space-50);
  bottom: var(--space-50);
  z-index: 3;
  width: 280px;
  max-width: calc(100% - (2 * var(--space-20)));
  margin: 0;
  padding: 0;
  border: 0;
  text-align: right;
}
.et-db .et-l .custom-section .custom-hero.legend .et_pb_header_content_wrapper blockquote p {
  margin: 0;
  padding: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-eyebrow);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-130);
  letter-spacing: var(--letter-spacing-eyebrow);
  color: var(--color-text-inverse);
}
.et-db .et-l .custom-section .custom-hero.legend .et_pb_header_content_wrapper blockquote strong {
  font-weight: var(--font-weight-bold);
  text-transform: uppercase;
}

/* —— 3.10 Hero – front (html.ap-js): zoom do vídeo, mouse clicável e parallax ——
   --ap-hero-progress (0 → 1) é atualizado pelo js/custom.js enquanto o hero rola. */
html.ap-js .et-db .et-l .custom-section .custom-hero .et-pb-background-video {
  transform: scale(1.12);
  transition: transform var(--duration-hero-video) var(--ease-expo-out);
}
html.ap-js .et-db .et-l .custom-section .custom-hero.is-hero-in .et-pb-background-video {
  transform: scale(1);
}
html.ap-js .et-db .et-l .custom-section .custom-hero .et_pb_module_header,
html.ap-js .et-db .et-l .custom-section .custom-hero .et_pb_header_content_wrapper > p,
html.ap-js .et-db .et-l .custom-section .custom-hero .et_pb_header_button_wrapper {
  translate: 0 calc(var(--ap-hero-progress, 0) * var(--space-100) * 1.5);
}
html.ap-js .et-db .et-l .custom-section .custom-hero .et_pb_fullwidth_header_scroll {
  pointer-events: auto;
  cursor: pointer;
}
html.ap-js .et-db .et-l .custom-section .custom-hero .et_pb_fullwidth_header_scroll::before {
  animation: ap-mouse-float 2.4s var(--ease-expo-out) infinite;
}
@keyframes ap-mouse-float {
  0%, 100% { transform: translate3d(0, 0, 0); }
  50% { transform: translate3d(0, var(--space-5), 0); }
}
/* Evita o "pisca" do conteúdo do hero antes do JS preparar as animações */
html.ap-js:not(.ap-reveal-ready) .et-db .et-l .custom-section .custom-hero .header-content,
html.ap-js:not(.ap-reveal-ready) .et-db .et-l .custom-section .custom-hero .et_pb_fullwidth_header_scroll {
  opacity: 0;
}
/* Hero de serviço: mesmo cuidado — sem isso o fade do eyebrow/texto/botão não chega a pintar */
html.ap-js:not(.ap-reveal-ready) .et-db .et-l .custom-section.hero-solution .custom-content {
  opacity: 0;
}

/* —— 3.12 Destaque (.feature – Figma 20 Bold, lh 32 → 160%) ——
   Módulo Texto com a frase de chamada entre o título e o texto (ex.: "Roteiros mais
   inteligentes…"). Só no módulo Texto: a row .feature das soluções (6.1) não é afetada. */
.et-db .et-l .custom-section .et_pb_text.feature :is(h1, h2, h3, h4, h5, h6, p) {
  margin: 0;
  padding: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-body-large);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-160);
  letter-spacing: 0;
  color: var(--color-text-primary);
}

/* —— 3.13 Hero interno (.hero.internal) ——
   Figma 95:2494 (Roteiros & Consultoria). Mesmo .custom-hero da home, com altura fixa
   700px (não 100vh). H1 com max-width 900px (quebra "Roteiros & / Consultoria", altura
   180). Texto até 800px. Película a 60% (home é 30%). Sem mouse de rolagem.
   O respiro do botão continua o da home (3.8): 32 + 40 → 70. */
.et-db .et-l .custom-section.hero.internal .custom-hero {
  min-height: 700px;
}
.et-db .et-l .custom-section.hero.internal .custom-hero .et_pb_fullwidth_header_container {
  max-width: 900px;
}
.et-db .et-l .custom-section.hero.internal .custom-hero .et_pb_module_header {
  max-width: 900px;
}
.et-db .et-l .custom-section.hero.internal .custom-hero .et_pb_header_content_wrapper {
  max-width: 800px;
  margin-left: auto;
  margin-right: auto;
}
.et-db .et-l .custom-section.hero.internal .custom-hero .et_pb_fullwidth_header_overlay {
  background-color: var(--overlay-hero-internal);
}
.et-db .et-l .custom-section.hero.internal .custom-hero .et_pb_fullwidth_header_scroll {
  display: none;
}

/* —— 3.14 Formulário (.custom-form – Figma AP/Field + toast CF7) ——
   Estrutura CF7: .form-heading, .form-row > .form-field, .form-field--full,
   .form-privacy, .form-actions, .form-note. Inputs .form-input (altura 48,
   radius 8 → 10). Erro de campo: borda + tip. Resposta CF7 vira toast fixo
   (bottom center, sobe e some em ~10s). WhatsApp: intl-tel-input (.iti). */
.et-db .et-l .custom-section .custom-form {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--space-25);
  width: 100%;
}
.et-db .et-l .custom-section .custom-form .form-heading {
  margin: 0;
  padding: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-h3);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-130);
  color: var(--color-text-primary);
}
.et-db .et-l .custom-section .custom-form .form-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-25);
  width: 100%;
}
.et-db .et-l .custom-section .custom-form .form-field,
.et-db .et-l .custom-section .custom-form .form-field--full {
  display: flex;
  flex-direction: column;
  gap: var(--space-10);
  min-width: 0;
}
.et-db .et-l .custom-section .custom-form .form-field--full {
  width: 100%;
}
.et-db .et-l .custom-section .custom-form .form-field > p,
.et-db .et-l .custom-section .custom-form .form-field--full > p {
  display: flex;
  flex-direction: column;
  gap: var(--space-10);
  margin: 0;
  padding: 0;
}
.et-db .et-l .custom-section .custom-form .form-field br,
.et-db .et-l .custom-section .custom-form .form-field--full br {
  display: none;
}
.et-db .et-l .custom-section .custom-form label {
  margin: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-small);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-140);
  color: var(--color-text-primary);
}
.et-db .et-l .custom-section .custom-form .wpcf7-form-control-wrap {
  display: block;
  width: 100%;
}
.et-db .et-l .custom-section .custom-form .form-input,
.et-db .et-l .custom-section .custom-form input.wpcf7-form-control:not([type="submit"]),
.et-db .et-l .custom-section .custom-form select.wpcf7-form-control,
.et-db .et-l .custom-section .custom-form textarea.wpcf7-form-control {
  display: block;
  width: 100%;
  min-height: 48px;
  margin: 0;
  padding: var(--space-10) var(--space-15);
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-150);
  color: var(--color-text-primary);
  background-color: var(--color-background-surface);
  border: var(--border-width-1) solid var(--color-border-subtle);
  border-radius: var(--border-radius-10);
  box-shadow: none;
  outline: none;
  transition: border-color var(--transition-default), box-shadow var(--transition-default), background-color var(--transition-default);
  appearance: none;
  -webkit-appearance: none;
}
.et-db .et-l .custom-section .custom-form select.form-input,
.et-db .et-l .custom-section .custom-form select.wpcf7-form-control {
  padding-right: var(--space-40);
  background-image: url("../assets/icons/icon-arrow-down.svg");
  background-repeat: no-repeat;
  background-position: right var(--space-15) center;
  background-size: 16px 16px;
  cursor: pointer;
}
/* first_as_label do CF7: 1ª opção vazia com cor de placeholder (JS: .ap-select-placeholder) */
.et-db .et-l .custom-section .custom-form select.form-input.ap-select-placeholder,
.et-db .et-l .custom-section .custom-form select.wpcf7-form-control.ap-select-placeholder,
.et-db .et-l .custom-section .custom-form select.form-input:required:invalid,
.et-db .et-l .custom-section .custom-form select.wpcf7-form-control:required:invalid {
  color: var(--color-border-control);
  opacity: 0.85;
}
.et-db .et-l .custom-section .custom-form select.form-input option,
.et-db .et-l .custom-section .custom-form select.wpcf7-form-control option {
  color: var(--color-text-primary);
  opacity: 1;
}
.et-db .et-l .custom-section .custom-form textarea.form-input,
.et-db .et-l .custom-section .custom-form textarea.wpcf7-form-control {
  height: 120px;
  min-height: 120px;
  max-height: 120px;
  resize: none;
}
/* Calendário nativo (data prevista): ícone clicável */
.et-db .et-l .custom-section .custom-form input[type="date"].form-input {
  cursor: pointer;
  color-scheme: light;
}
.et-db .et-l .custom-section .custom-form input[type="date"].form-input::-webkit-calendar-picker-indicator {
  cursor: pointer;
  opacity: 0.55;
}
.et-db .et-l .custom-section .custom-form .form-input::placeholder,
.et-db .et-l .custom-section .custom-form input.wpcf7-form-control::placeholder,
.et-db .et-l .custom-section .custom-form textarea.wpcf7-form-control::placeholder {
  color: var(--color-border-control);
  opacity: 0.85;
}
.et-db .et-l .custom-section .custom-form .form-input:focus,
.et-db .et-l .custom-section .custom-form input.wpcf7-form-control:not([type="submit"]):focus,
.et-db .et-l .custom-section .custom-form select.wpcf7-form-control:focus,
.et-db .et-l .custom-section .custom-form textarea.wpcf7-form-control:focus {
  border-color: var(--color-border-focus);
  box-shadow: 0 0 0 var(--border-width-1) var(--color-border-focus);
}
.et-db .et-l .custom-section .custom-form .form-input.wpcf7-not-valid,
.et-db .et-l .custom-section .custom-form input.wpcf7-not-valid,
.et-db .et-l .custom-section .custom-form select.wpcf7-not-valid,
.et-db .et-l .custom-section .custom-form textarea.wpcf7-not-valid,
.et-db .et-l .custom-section .custom-form .iti.ap-tel-invalid .form-input {
  border-color: var(--color-feedback-error);
  box-shadow: none;
}
.et-db .et-l .custom-section .custom-form .wpcf7-not-valid-tip {
  display: block;
  margin: var(--space-10) 0 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-small);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-140);
  color: var(--color-feedback-error);
}
.et-db .et-l .custom-section .custom-form .form-privacy,
.et-db .et-l .custom-section .custom-form .form-privacy + p {
  margin: 0;
  padding: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-nav);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-140);
  color: var(--color-text-secondary);
  text-align: center;
}
/* Duas linhas de privacidade ficam juntas (o gap do form é 25) */
.et-db .et-l .custom-section .custom-form .form-privacy + p {
  margin-top: calc(-1 * (var(--space-25) - var(--space-5)));
}
.et-db .et-l .custom-section .custom-form .form-privacy + p a {
  color: var(--color-text-link);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.et-db .et-l .custom-section .custom-form .form-actions {
  display: flex;
  justify-content: center;
  margin: 0;
}
.et-db .et-l .custom-section .custom-form .form-actions > p {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin: 0;
}
.et-db .et-l .custom-section .custom-form .form-actions .custom-button,
.et-db .et-l .custom-section .custom-form .form-actions input.wpcf7-submit {
  cursor: pointer;
}
/* Loading do CF7 dentro do botão (some o spinner ao lado) */
.et-db .et-l .custom-section .custom-form .form-actions .wpcf7-spinner {
  position: absolute;
  top: 50%;
  left: 50%;
  z-index: 1;
  width: 22px;
  height: 22px;
  margin: 0;
  padding: 0;
  background-image: none;
  background-color: transparent;
  border: var(--border-width-2) solid rgba(255, 255, 255, 0.35);
  border-top-color: var(--color-text-inverse);
  border-radius: 50%;
  box-shadow: none;
  visibility: hidden;
  opacity: 0;
  pointer-events: none;
  transform: translate(-50%, -50%);
}
.et-db .et-l .custom-section .wpcf7-form.submitting .form-actions .wpcf7-spinner,
.et-db .et-l .custom-section .wpcf7-form[data-status="submitting"] .form-actions .wpcf7-spinner {
  visibility: visible;
  opacity: 1;
  animation: ap-form-spin 0.7s linear infinite;
}
.et-db .et-l .custom-section .wpcf7-form.submitting .form-actions .wpcf7-submit,
.et-db .et-l .custom-section .wpcf7-form[data-status="submitting"] .form-actions .wpcf7-submit {
  color: transparent;
  pointer-events: none;
}
@keyframes ap-form-spin {
  to {
    transform: translate(-50%, -50%) rotate(360deg);
  }
}
.et-db .et-l .custom-section .custom-form .form-note {
  margin: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-nav);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-140);
  color: var(--color-text-secondary);
  text-align: center;
}
/* Output nativo do CF7 fica oculto — o toast vai no body (fora do stacking do Divi) */
.et-db .et-l .custom-section .wpcf7-form .wpcf7-response-output {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
  white-space: nowrap;
}
/* Toast no body: fixed bottom center, acima do footer */
.ap-form-toast {
  position: fixed;
  left: 50%;
  bottom: var(--space-30);
  z-index: calc(var(--header-z-index) + 10);
  display: flex;
  align-items: center;
  justify-content: center;
  width: max-content;
  max-width: calc(100vw - var(--space-40));
  margin: 0;
  padding: var(--space-15) var(--space-25);
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-small);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-140);
  text-align: center;
  color: var(--color-text-primary);
  background-color: var(--color-background-surface);
  border: 0;
  border-radius: var(--border-radius-pill);
  box-shadow: var(--shadow-dropdown);
  pointer-events: none;
  opacity: 0;
  visibility: hidden;
  transform: translate(-50%, calc(100% + var(--space-30)));
  transition: opacity var(--transition-default), transform var(--transition-default), visibility var(--transition-default);
}
.ap-form-toast.is-visible {
  pointer-events: auto;
  opacity: 1;
  visibility: visible;
  transform: translate(-50%, 0);
}
.ap-form-toast.is-success {
  color: var(--color-feedback-success);
  background-color: var(--color-feedback-success-bg);
}
.ap-form-toast.is-error {
  color: var(--color-feedback-error);
  background-color: var(--color-feedback-error-bg);
}
/* intl-tel-input: entra no visual do campo e destaca BR/PT no topo da lista */
.et-db .et-l .custom-section .custom-form .iti {
  display: block;
  width: 100%;
  --iti-border-color: var(--color-border-subtle);
  --iti-dialcode-color: var(--color-text-secondary);
  --iti-dropdown-bg: var(--color-background-surface);
  --iti-hover-color: var(--color-background-subtle);
  --iti-text-gray: var(--color-text-secondary);
  --iti-arrow-color: var(--color-text-secondary);
  font-family: var(--font-family-raleway);
}
.et-db .et-l .custom-section .custom-form .iti__country-container {
  padding: var(--border-width-1);
}
.et-db .et-l .custom-section .custom-form .iti__selected-country-primary {
  padding-left: var(--space-15);
  padding-right: var(--space-10);
}
.et-db .et-l .custom-section .custom-form .iti__dropdown-content {
  border: var(--border-width-1) solid var(--color-border-subtle);
  border-radius: var(--border-radius-10);
  box-shadow: var(--shadow-dropdown);
  overflow: hidden;
}
/* Busca do dropdown: mesmo visual dos .form-input */
.et-db .et-l .custom-section .custom-form .iti__search-input {
  width: calc(100% - (var(--space-15) * 2));
  min-height: 40px;
  margin: var(--space-15);
  padding: var(--space-10) var(--space-15);
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-small);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-140);
  color: var(--color-text-primary);
  background-color: var(--color-background-surface);
  border: var(--border-width-1) solid var(--color-border-subtle);
  border-radius: var(--border-radius-10);
  box-shadow: none;
  outline: none;
  appearance: none;
  -webkit-appearance: none;
  transition: border-color var(--transition-default), box-shadow var(--transition-default);
}
.et-db .et-l .custom-section .custom-form .iti__search-input::placeholder {
  color: var(--color-border-control);
  opacity: 0.85;
}
.et-db .et-l .custom-section .custom-form .iti__search-input:focus {
  border-color: var(--color-border-focus);
  box-shadow: 0 0 0 var(--border-width-1) var(--color-border-focus);
}
.et-db .et-l .custom-section .custom-form .iti__search-input + .iti__country-list {
  border-top: var(--border-width-1) solid var(--color-border-subtle);
}
.et-db .et-l .custom-section .custom-form .iti__country {
  font-size: var(--font-size-small);
  color: var(--color-text-primary);
}
/* Divisor após Portugal (último do grupo preferido BR + PT) */
.et-db .et-l .custom-section .custom-form .iti__country-selector:has(.iti__search-input:placeholder-shown) .iti__country[data-iso2="pt"] {
  border-bottom: var(--border-width-1) solid var(--color-border-subtle);
}
.et-db .et-l .custom-section .custom-form .iti__country[data-iso2="br"],
.et-db .et-l .custom-section .custom-form .iti__country[data-iso2="pt"] {
  font-weight: var(--font-weight-semibold);
}

/* ==========================================================================
   4. HEADER
   Figma: AP/Home/Header desktop (26:67)
   Comportamento: jobyaviation.com — some ao rolar para baixo, volta ao subir.
   HTML Theme Builder: .custom-section.header > .custom-content >
     .logo + .custom-menu.main

   Duas camadas:
   - Base: só visual (vale no front e no Visual Builder do Divi).
   - html.ap-js: header fixo, animações e menu mobile do js/custom.js.
     A classe .ap-js só existe no front-end (inc/custom-functions.php),
     então no builder o header fica estático e editável.
   ========================================================================== */

/* —— 4.1 Overlay e trava de scroll (front) —— */
.ap-header-overlay {
  position: fixed;
  inset: 0;
  z-index: 99998;
  background: var(--overlay-mint-900-40);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity var(--duration-nav-expand) var(--ease-expo-out), visibility 0s linear var(--duration-nav-expand);
}
.ap-header-overlay.is-visible {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transition: opacity var(--duration-nav-expand) var(--ease-expo-out), visibility 0s;
}
/* O gutter evita o "pulo" quando a barra de rolagem some com o menu aberto */
html.ap-js {
  scrollbar-gutter: stable;
}
html.ap-js body.ap-nav-open {
  overflow: hidden;
}

/* —— 4.2 Wrapper Theme Builder —— */
.et-db .et-l--header,
.et-db #et-boc .et-l--header {
  position: relative;
  z-index: var(--header-z-index);
  background: transparent;
  overflow: visible;
}
.et-db .et-l--header .et_builder_inner_content {
  overflow: visible;
}
.et-db .et-l .custom-section.header {
  width: 100%;
  max-width: 100%;
  margin: 0;
  padding: 0;
  background: transparent;
}
.et-db .et-l .custom-section.header .custom-content {
  width: calc(100% - (2 * var(--space-40)));
  max-width: var(--container-max-width);
  margin: 0 auto;
  padding: var(--space-20) 0 0;
  display: flex;
  justify-content: center;
}
/* Front: header flutuante fixo; só a barra recebe clique */
html.ap-js .et-db .et-l .custom-section.header {
  position: fixed;
  top: 0;
  left: 0;
  z-index: var(--header-z-index);
  pointer-events: none;
}
html.ap-js .et-db .et-l .custom-section.header .custom-content {
  pointer-events: none;
}

/* —— 4.3 Barra flutuante (Figma: branco, radius 32 → 30, py 24 → 25, px 32 → 30) —— */
.et-db .et-l .custom-section.header .et_pb_column {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: space-between;
  float: none;
  width: 100%;
  max-width: 100%;
  margin: 0;
  padding: var(--space-25) var(--space-30);
  gap: var(--space-30);
  background: var(--color-background-surface);
  border-radius: var(--border-radius-30);
  box-shadow: var(--shadow-soft);
}
html.ap-js .et-db .et-l .custom-section.header .et_pb_column {
  pointer-events: auto;
  transition: transform var(--duration-header-in) var(--ease-expo-out), box-shadow var(--transition-default);
}

/* —— 4.4 Logo —— */
.et-db .et-l .custom-section.header .logo {
  margin: 0;
  flex: 0 0 auto;
  z-index: 2;
}
.et-db .et-l .custom-section.header .logo .et_pb_image_wrap {
  display: flex;
  align-items: center;
}
.et-db .et-l .custom-section.header .logo img {
  display: block;
  width: 169px;
  height: auto;
  max-height: 51px;
}

/* —— 4.5 Menu desktop —— */
.et-db .et-l .custom-section.header .custom-menu {
  margin: 0;
  flex: 1 1 auto;
  width: auto;
  min-width: 0;
}
.et-db .et-l .custom-section.header .et_pb_menu_inner_container,
.et-db .et-l .custom-section.header .et_pb_menu__wrap,
.et-db .et-l .custom-section.header .et_pb_menu__menu,
.et-db .et-l .custom-section.header .et-menu-nav {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: flex-end;
  width: 100%;
}
.et-db .et-l .custom-section.header .et-menu {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: flex-end;
  gap: var(--space-25);
  margin: 0;
  padding: 0;
  list-style: none;
}
.et-db .et-l .custom-section.header .et-menu > li {
  position: relative;
  flex: 0 0 auto;
  margin: 0;
  padding: 0;
}
.et-db .et-l .custom-section.header .et_pb_menu__menu nav > ul > li > a {
  display: inline-flex;
  align-items: center;
  gap: var(--space-10);
  position: relative;
  height: 44px;
  padding: 0;
  border-bottom: var(--border-width-2) solid transparent;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-small);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-140);
  color: var(--color-text-primary);
  white-space: nowrap;
  text-decoration: none;
  opacity: 1;
}
.et-db .et-l .custom-section.header .et_pb_menu__menu nav > ul > li > a:hover,
.et-db .et-l .custom-section.header .et_pb_menu__menu nav > ul > li:hover > a,
.et-db .et-l .custom-section.header .et_pb_menu__menu nav > ul > li:focus-within > a,
.et-db .et-l .custom-section.header .et_pb_menu__menu nav > ul > li.current-menu-item > a,
.et-db .et-l .custom-section.header .et_pb_menu__menu nav > ul > li.current_page_item > a,
.et-db .et-l .custom-section.header .et_pb_menu__menu nav > ul > li.current-menu-ancestor > a {
  color: var(--color-text-link);
  border-bottom-color: var(--color-border-focus);
  opacity: 1;
}
/* Seta de submenu: substitui o ícone ETmodules ("3", absoluto) do Divi */
.et-db .et-l .custom-section.header .et_pb_menu__menu nav > ul > li.menu-item-has-children > a {
  padding-right: 0;
}
.et-db .et-l .custom-section.header .et_pb_menu__menu nav > ul > li.menu-item-has-children > a::after {
  content: "";
  position: static;
  display: block;
  flex: 0 0 10px;
  width: 10px;
  height: 10px;
  font-size: 0;
  background-color: currentColor;
  mask: url("../assets/icons/icon-arrow-down.svg") center / contain no-repeat;
  -webkit-mask: url("../assets/icons/icon-arrow-down.svg") center / contain no-repeat;
}
.et-db .et-l .custom-section.header .et_pb_menu__menu nav > ul > li.menu-item-has-children:hover > a::after,
.et-db .et-l .custom-section.header .et_pb_menu__menu nav > ul > li.menu-item-has-children:focus-within > a::after {
  transform: rotate(180deg);
}
.et-db .et-l .custom-section.header .et_mobile_nav_menu {
  display: none;
}
/* Front: transições dos links e da seta */
html.ap-js .et-db .et-l .custom-section.header .et_pb_menu__menu nav > ul > li > a {
  transition: color var(--transition-default), border-color var(--transition-default);
}
html.ap-js .et-db .et-l .custom-section.header .et_pb_menu__menu nav > ul > li.menu-item-has-children > a::after {
  transition: transform var(--duration-dropdown) var(--ease-expo-out);
}

/* —— 4.6 Submenu desktop ——
   Base: card abaixo da barra, mostra no hover (sem animação).
   ::before faz a ponte do hover entre o item e o card. */
.et-db .et-l .custom-section.header .et-menu li > ul.sub-menu {
  position: absolute;
  top: calc(100% + var(--space-40));
  left: 50%;
  z-index: 5;
  width: auto;
  min-width: 240px;
  margin: 0;
  padding: var(--space-10);
  list-style: none;
  text-align: left;
  background: var(--color-background-surface);
  border: 0;
  border-radius: var(--border-radius-20);
  box-shadow: var(--shadow-dropdown);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translate3d(-50%, 0, 0);
}
.et-db .et-l .custom-section.header .et-menu li > ul.sub-menu::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 100%;
  height: var(--space-40);
}
.et-db .et-l .custom-section.header .et-menu li:hover > ul.sub-menu,
.et-db .et-l .custom-section.header .et-menu li:focus-within > ul.sub-menu,
.et-db .et-l .custom-section.header .et-menu li.et-touch-hover > ul.sub-menu {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}
/* Últimos itens alinham à direita para não vazar da tela */
.et-db .et-l .custom-section.header .et-menu > li:nth-last-child(-n+2) > ul.sub-menu,
.et-db .et-l .custom-section.header .et-menu > li.et-reverse-direction-nav > ul.sub-menu {
  left: auto;
  right: 0;
  transform: none;
  transform-origin: top right;
}
/* 3º nível abre ao lado */
.et-db .et-l .custom-section.header .et-menu li li > ul.sub-menu {
  top: calc(-1 * var(--space-10));
  left: calc(100% + var(--space-10));
  right: auto;
  transform: none;
  transform-origin: top left;
}
.et-db .et-l .custom-section.header .et-menu li li > ul.sub-menu::before {
  top: 0;
  bottom: 0;
  left: calc(-1 * var(--space-10));
  right: 100%;
  width: var(--space-10);
  height: auto;
}
.et-db .et-l .custom-section.header .et-menu li li {
  position: relative;
  width: 100%;
  margin: 0;
  padding: 0;
  line-height: var(--line-height-140);
}
.et-db .et-l .custom-section.header .et-menu li li > a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-10);
  width: auto;
  padding: var(--space-10) var(--space-15);
  border-radius: var(--border-radius-10);
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-small);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-140);
  color: var(--color-text-primary);
  white-space: nowrap;
  text-decoration: none;
  background-color: transparent;
  opacity: 1;
}
.et-db .et-l .custom-section.header .et-menu li li > a:hover,
.et-db .et-l .custom-section.header .et-menu li li.current-menu-item > a,
.et-db .et-l .custom-section.header .et-menu li li.current_page_item > a {
  color: var(--color-text-link);
  background-color: var(--color-background-subtle);
  opacity: 1;
}
/* Seta lateral nos itens de 2º nível com filhos */
.et-db .et-l .custom-section.header .et-menu li li.menu-item-has-children > a {
  padding-right: var(--space-15);
}
.et-db .et-l .custom-section.header .et-menu li li.menu-item-has-children > a::after {
  content: "";
  position: static;
  display: block;
  flex: 0 0 10px;
  width: 10px;
  height: 10px;
  font-size: 0;
  background-color: currentColor;
  mask: url("../assets/icons/icon-arrow-down.svg") center / contain no-repeat;
  -webkit-mask: url("../assets/icons/icon-arrow-down.svg") center / contain no-repeat;
  transform: rotate(-90deg);
}

/* —— 4.7 Submenu desktop – animação (front): fade + slide + itens em cascata —— */
html.ap-js .et-db .et-l .custom-section.header .et-menu li > ul.sub-menu {
  transform: translate3d(-50%, var(--space-15), 0) scale(0.98);
  transform-origin: top center;
  transition: opacity var(--transition-fast), transform var(--duration-dropdown) var(--ease-expo-out), visibility 0s linear var(--duration-dropdown);
}
html.ap-js .et-db .et-l .custom-section.header .et-menu li:hover > ul.sub-menu,
html.ap-js .et-db .et-l .custom-section.header .et-menu li:focus-within > ul.sub-menu,
html.ap-js .et-db .et-l .custom-section.header .et-menu li.et-touch-hover > ul.sub-menu {
  transform: translate3d(-50%, 0, 0) scale(1);
  transition: opacity var(--transition-default), transform var(--duration-dropdown) var(--ease-expo-out), visibility 0s;
}
html.ap-js .et-db .et-l .custom-section.header .et-menu > li:nth-last-child(-n+2) > ul.sub-menu,
html.ap-js .et-db .et-l .custom-section.header .et-menu > li.et-reverse-direction-nav > ul.sub-menu {
  transform: translate3d(0, var(--space-15), 0) scale(0.98);
  transform-origin: top right;
}
html.ap-js .et-db .et-l .custom-section.header .et-menu > li:nth-last-child(-n+2):hover > ul.sub-menu,
html.ap-js .et-db .et-l .custom-section.header .et-menu > li:nth-last-child(-n+2):focus-within > ul.sub-menu,
html.ap-js .et-db .et-l .custom-section.header .et-menu > li:nth-last-child(-n+2).et-touch-hover > ul.sub-menu,
html.ap-js .et-db .et-l .custom-section.header .et-menu > li.et-reverse-direction-nav:hover > ul.sub-menu,
html.ap-js .et-db .et-l .custom-section.header .et-menu > li.et-reverse-direction-nav:focus-within > ul.sub-menu,
html.ap-js .et-db .et-l .custom-section.header .et-menu > li.et-reverse-direction-nav.et-touch-hover > ul.sub-menu {
  transform: translate3d(0, 0, 0) scale(1);
}
html.ap-js .et-db .et-l .custom-section.header .et-menu li li > ul.sub-menu {
  transform: translate3d(calc(-1 * var(--space-10)), 0, 0);
  transform-origin: top left;
}
html.ap-js .et-db .et-l .custom-section.header .et-menu li li:hover > ul.sub-menu,
html.ap-js .et-db .et-l .custom-section.header .et-menu li li:focus-within > ul.sub-menu {
  transform: translate3d(0, 0, 0);
}
html.ap-js .et-db .et-l .custom-section.header .et-menu li li {
  opacity: 0;
  transform: translate3d(0, var(--space-5), 0);
  transition: opacity var(--transition-fast), transform var(--duration-dropdown) var(--ease-expo-out);
}
html.ap-js .et-db .et-l .custom-section.header .et-menu li:hover > ul.sub-menu > li,
html.ap-js .et-db .et-l .custom-section.header .et-menu li:focus-within > ul.sub-menu > li,
html.ap-js .et-db .et-l .custom-section.header .et-menu li.et-touch-hover > ul.sub-menu > li {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}
html.ap-js .et-db .et-l .custom-section.header .et-menu li:hover > ul.sub-menu > li:nth-child(1) { transition-delay: 0.04s; }
html.ap-js .et-db .et-l .custom-section.header .et-menu li:hover > ul.sub-menu > li:nth-child(2) { transition-delay: 0.08s; }
html.ap-js .et-db .et-l .custom-section.header .et-menu li:hover > ul.sub-menu > li:nth-child(3) { transition-delay: 0.12s; }
html.ap-js .et-db .et-l .custom-section.header .et-menu li:hover > ul.sub-menu > li:nth-child(4) { transition-delay: 0.16s; }
html.ap-js .et-db .et-l .custom-section.header .et-menu li:hover > ul.sub-menu > li:nth-child(5) { transition-delay: 0.2s; }
html.ap-js .et-db .et-l .custom-section.header .et-menu li:hover > ul.sub-menu > li:nth-child(6) { transition-delay: 0.24s; }
html.ap-js .et-db .et-l .custom-section.header .et-menu li:hover > ul.sub-menu > li:nth-child(7) { transition-delay: 0.28s; }
html.ap-js .et-db .et-l .custom-section.header .et-menu li:hover > ul.sub-menu > li:nth-child(8) { transition-delay: 0.32s; }
html.ap-js .et-db .et-l .custom-section.header .et-menu li li > a {
  transition: color var(--transition-default), background-color var(--transition-default);
}

/* —— 4.8 Entrada e hide/show no scroll (front, estilo Joby) —— */
html.ap-js .et-db .et-l .custom-section.header .et_pb_column {
  transform: translate3d(0, -150%, 0);
}
html.ap-js .et-db .et-l .custom-section.header.is-header-in .et_pb_column {
  transform: translate3d(0, 0, 0);
}
html.ap-js .et-db .et-l .custom-section.header.is-header-in.is-header-hidden .et_pb_column {
  transform: translate3d(0, -150%, 0);
  pointer-events: none;
}
html.ap-js .et-db .et-l .custom-section.header.is-header-in.is-nav-open .et_pb_column {
  transform: translate3d(0, 0, 0);
  pointer-events: auto;
}

/* —— 4.13 Movimento reduzido —— */
@media (prefers-reduced-motion: reduce) {
  html.ap-js .et-db .et-l .custom-section.header .et_pb_column,
  html.ap-js .et-db .et-l .custom-section.header .et-menu li > ul.sub-menu,
  html.ap-js .et-db .et-l .custom-section.header .et-menu li li,
  html.ap-js .et-db .et-l .custom-section.header .et_mobile_menu,
  html.ap-js .et-db .et-l .custom-section.header .et_mobile_menu li,
  html.ap-js .et-db .et-l .custom-section.header .et_mobile_menu li > ul.sub-menu,
  html.ap-js .et-db .et-l .custom-section.header .et_mobile_menu .ap-sub-toggle::before,
  .ap-header-overlay {
    transition: none;
    animation: none;
  }
  html.ap-js .et-db .et-l .custom-section.header .et_pb_column {
    transform: none;
  }
}

/* ==========================================================================
   5. FOOTER
   Figma: AP/Home/Footer desktop (29:113 / 53:683)
   HTML Theme Builder: .custom-section.footer >
     .custom-content.about-footer (4 colunas: marca, menus, contato) +
     .custom-content.copy (copyright + política)
   Só visual: vale igual no front e no Visual Builder.
   ========================================================================== */

/* —— 5.1 Seção (Figma: fundo branco, py 64 → 65) —— */
.et-db .et-l .custom-section.footer {
  padding: var(--space-65) 0;
  background-color: var(--color-background-surface);
}

/* —— 5.2 Colunas ——
   Larguras vêm do Divi; aqui só o empilhamento interno dos módulos. */
/* margin-bottom 0: o Divi soma 30px por coluna no tablet; o respiro vem do row-gap (5.9 / 5.10) */
.et-db .et-l .custom-section.footer .about-footer .et_pb_column {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-15);
  margin-bottom: 0;
}
.et-db .et-l .custom-section.footer .about-footer .et_pb_column:first-child {
  gap: var(--space-25);
}
.et-db .et-l .custom-section.footer .et_pb_module {
  width: 100%;
  margin: 0;
}
.et-db .et-l .custom-section.footer .et_pb_text p {
  padding-bottom: 0;
}

/* —— 5.3 Marca (logo 150 × 114 + texto 14/20) —— */
.et-db .et-l .custom-section.footer .logo {
  width: auto;
}
.et-db .et-l .custom-section.footer .logo img {
  display: block;
  width: 150px;
  height: auto;
}
/* Componente .text (3.5) no tamanho AP/Body/Small (14/20) */
.et-db .et-l .custom-section.footer .text {
  max-width: 280px;
  font-size: var(--font-size-small);
  line-height: var(--line-height-140);
}

/* —— 5.4 Título de coluna: .subtitle com o visual do componente .eyebrow (3.4) —— */

/* —— 5.5 Links e contatos (13/20, texto secundário) ——
   Vale para os menus e para os módulos de texto de contato da última coluna. */
.et-db .et-l .custom-section.footer .about-footer .et_pb_text:not(.subtitle):not(.text),
.et-db .et-l .custom-section.footer .about-footer .et_pb_menu .et-menu > li > a {
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-nav);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-150);
  color: var(--color-text-secondary);
}
.et-db .et-l .custom-section.footer .about-footer .et_pb_text a,
.et-db .et-l .custom-section.footer .about-footer .et_pb_menu .et-menu > li > a {
  color: var(--color-text-secondary);
  text-decoration: none;
  opacity: 1;
}
/* E-mail não quebra no meio (colunas estreitas entre 981 e 1199px) */
.et-db .et-l .custom-section.footer .about-footer .et_pb_text a[href^="mailto:"] {
  white-space: nowrap;
}
.et-db .et-l .custom-section.footer .about-footer .et_pb_text a:hover,
.et-db .et-l .custom-section.footer .about-footer .et_pb_menu .et-menu > li > a:hover,
.et-db .et-l .custom-section.footer .about-footer .et_pb_menu .et-menu > li.current-menu-item > a {
  color: var(--color-text-link);
  opacity: 1;
}

/* —— 5.6 Menus em lista vertical ——
   O menu do Divi vira hamburger no tablet; no footer a lista fica sempre aberta.
   O __menu ocupa 100% para anular o justify-content: flex-end !important que o Divi gera no tablet. */
.et-db .et-l .custom-section.footer .et_pb_menu {
  background-color: transparent;
  text-align: left;
}
.et-db .et-l .custom-section.footer .et_pb_menu .et_pb_menu_inner_container,
.et-db .et-l .custom-section.footer .et_pb_menu .et_pb_menu__wrap {
  display: block;
  width: 100%;
}
.et-db .et-l .custom-section.footer .et_pb_menu .et_pb_menu__menu,
.et-db .et-l .custom-section.footer .et_pb_menu .et_pb_menu__menu > nav {
  display: block;
  width: 100%;
}
.et-db .et-l .custom-section.footer .et_pb_menu .et_mobile_nav_menu {
  display: none;
}
.et-db .et-l .custom-section.footer .et_pb_menu .et-menu {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-15);
  margin: 0;
  padding: 0;
  list-style: none;
}
.et-db .et-l .custom-section.footer .et_pb_menu .et-menu > li {
  display: block;
  margin: 0;
  padding: 0;
}
.et-db .et-l .custom-section.footer .et_pb_menu .et-menu > li > a {
  display: inline-block;
  padding: 0;
}

/* —— 5.7 Redes sociais (ícones 30px, gap 10) ——
   SVGs do tema no lugar dos ícones ETmodules.
   !important só no background-color: o Divi gera a cor de cada rede com !important. */
.et-db .et-l .custom-section.footer .et_pb_social_media_follow {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-10);
  margin: 0;
  padding: 0;
  list-style: none;
}
.et-db .et-l .custom-section.footer .et_pb_social_media_follow .et_pb_social_media_follow_network {
  display: block;
  width: auto;
  margin: 0;
  padding: 0;
}
.et-db .et-l .custom-section.footer .et_pb_social_media_follow .et_pb_social_media_follow_network a.icon {
  display: block;
  width: 30px;
  height: 30px;
  margin: 0;
  padding: 0;
  background-color: transparent !important;
  background-position: center;
  background-size: contain;
  background-repeat: no-repeat;
  border: 0;
  border-radius: var(--border-radius-pill);
  transition: transform var(--transition-default), opacity var(--transition-default);
}
.et-db .et-l .custom-section.footer .et_pb_social_media_follow .et_pb_social_media_follow_network a.icon::before {
  display: none;
}
.et-db .et-l .custom-section.footer .et_pb_social_media_follow .et_pb_social_media_follow_network a.icon:hover {
  opacity: 0.85;
  transform: translate3d(0, calc(-1 * var(--space-5) / 2), 0);
}
.et-db .et-l .custom-section.footer .et_pb_social_media_follow .et-social-facebook a.icon {
  background-image: url("../assets/icons/social-facebook.svg");
}
.et-db .et-l .custom-section.footer .et_pb_social_media_follow .et-social-linkedin a.icon {
  background-image: url("../assets/icons/social-linkedin.svg");
}
.et-db .et-l .custom-section.footer .et_pb_social_media_follow .et-social-instagram a.icon {
  background-image: url("../assets/icons/social-instagram.svg");
}
.et-db .et-l .custom-section.footer .et_pb_social_media_follow .et-social-whatsapp a.icon {
  background-image: url("../assets/icons/social-whatsapp.svg");
}
.et-db .et-l .custom-section.footer .et_pb_social_media_follow .et_pb_social_media_follow_network_name {
  display: none;
}

/* —— 5.8 Linha legal (divisor 1px + copyright e política, 14/20) —— */
.et-db .et-l .custom-section.footer .copy.custom-content {
  display: flex;
  flex-wrap: nowrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-25);
  margin-top: var(--space-50);
  padding-top: var(--space-50);
  border-top: var(--border-width-1) solid var(--color-border-subtle);
}
.et-db .et-l .custom-section.footer .copy.custom-content .et_pb_column {
  width: auto;
  margin: 0;
}
.et-db .et-l .custom-section.footer .copy.custom-content .et_pb_column:last-child {
  text-align: right;
}
.et-db .et-l .custom-section.footer .copy.custom-content .et_pb_text {
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-small);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-140);
  color: var(--color-text-secondary);
}
.et-db .et-l .custom-section.footer .copy.custom-content .et_pb_text a {
  color: var(--color-text-secondary);
  text-decoration: none;
}
.et-db .et-l .custom-section.footer .copy.custom-content .et_pb_text a:hover {
  color: var(--color-text-link);
}

/* ==========================================================================
   6. SEÇÕES
   Seções montadas com os componentes (3) que têm layout ou movimento próprio.
   ========================================================================== */

/* —— 6.1 Soluções (.solutions-carousel) – base e carrossel ——
   Figma 53:289. Rows: .description (título + texto), .scroll-solutions (blurbs .solution)
   e .feature (subtítulo + botão). Respiro do Figma: 80 entre os blocos.
   Base (builder, tablet, mobile e sem JS): os cards formam um carrossel horizontal. */
.et-db .et-l .custom-section.solutions-carousel {
  padding: var(--space-80) 0;
}
.et-db .et-l .custom-section.solutions-carousel .et_pb_module {
  margin: 0;
}
.et-db .et-l .custom-section.solutions-carousel .description .et_pb_column,
.et-db .et-l .custom-section.solutions-carousel .feature .et_pb_column {
  display: flex;
  flex-direction: column;
  gap: var(--space-30);
}
.et-db .et-l .custom-section.solutions-carousel .scroll-solutions,
.et-db .et-l .custom-section.solutions-carousel .feature {
  margin-top: var(--space-80);
}
.et-db .et-l .custom-section.solutions-carousel .scroll-solutions .et_pb_column {
  display: flex;
  gap: var(--space-30);
  padding-bottom: var(--space-20);
  overflow-x: auto;
  overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory;
}
.et-db .et-l .custom-section.solutions-carousel .scroll-solutions .solution {
  flex: 0 0 320px;
  scroll-snap-align: start;
}

/* —— 6.2 Soluções – galeria fixa no scroll (front, ≥ 981px) ——
   Referência jobyaviation.com (Experience Highlights). O js/custom.js marca a row com
   .is-gallery: ela ganha altura extra, a coluna fica presa na tela (sticky) e a rolagem
   troca o card ativo. Estados dos cards:
   .is-active (foto grande + texto) · .is-prev (miniatura no topo, à esquerda)
   .is-next (miniatura embaixo, sob o texto) · .is-before / .is-after (escondidos).
   Palco = largura da row (100cqw). Foto quadrada: menor entre 720, a altura da tela
   menos o respiro, e o que sobra depois de miniatura + gaps + texto mínimo (230; 280
   abaixo de 1360px). A coluna de texto usa o espaço das laterais em vez de encolher
   com a foto e ser cortada pela miniatura de baixo. Miniatura = foto × 250/720. */
@media (min-width: 981px) {
  html.ap-js .et-db .et-l .custom-section .scroll-solutions.is-gallery {
    --ap-g-step: 70svh;
    height: calc(100svh + ((var(--ap-g-count, 1) - 1) * var(--ap-g-step)));
  }
  html.ap-js .et-db .et-l .custom-section .scroll-solutions.is-gallery .et_pb_column {
    position: sticky;
    top: 0;
    display: block;
    height: 100vh;
    height: 100svh;
    padding: 0;
    overflow: visible;
    scroll-snap-type: none;
    container-type: inline-size;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-solutions.is-gallery .solution {
    --ap-g-gap: var(--space-30);
    --ap-g-thumb: 0.3472;
    --ap-g-text-min: 230px;
    --ap-g-m: min(720px, calc(100svh - (2 * var(--space-80))), calc((100cqw - (2 * var(--ap-g-gap)) - var(--ap-g-text-min)) / (1 + var(--ap-g-thumb))));
    --ap-g-thumb-size: calc(var(--ap-g-m) * var(--ap-g-thumb));
    --ap-g-text: calc(100cqw - var(--ap-g-thumb-size) - var(--ap-g-m) - (2 * var(--ap-g-gap)));
    --ap-g-top: calc((100svh - var(--ap-g-m)) / 2);
    --ap-g-photo-left: calc(var(--ap-g-thumb-size) + var(--ap-g-gap));
    --ap-g-text-left: calc(var(--ap-g-photo-left) + var(--ap-g-m) + var(--ap-g-gap));
    position: absolute;
    inset: 0;
    margin: 0;
    pointer-events: none;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-solutions.is-gallery .solution.is-active {
    z-index: 2;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-solutions.is-gallery .solution:is(.is-prev, .is-next) {
    z-index: 1;
  }
  /* Foto: sempre no lugar da principal; miniaturas = translate + scale a partir do canto */
  html.ap-js .et-db .et-l .custom-section .scroll-solutions.is-gallery .solution .et_pb_main_blurb_image {
    position: absolute;
    top: var(--ap-g-top);
    left: var(--ap-g-photo-left);
    z-index: 1;
    width: var(--ap-g-m);
    height: var(--ap-g-m);
    margin: 0;
    opacity: 0;
    border-radius: var(--border-radius-15);
    transform-origin: 0 0;
    animation-name: none; /* reforço: o js/custom.js já remove a animação do Divi (removeDiviAnimation) */
    --ap-g-dur: calc(var(--duration-gallery) * var(--ap-g-speed, 1));
    --ap-g-dur-scrub: calc(var(--duration-gallery-scrub) * var(--ap-g-speed, 1));
    transition: transform var(--ap-g-dur) var(--ease-expo-out), opacity var(--ap-g-dur) var(--ease-expo-out), border-radius var(--ap-g-dur) var(--ease-expo-out), translate var(--ap-g-dur-scrub) var(--ease-expo-out), scale var(--ap-g-dur-scrub) var(--ease-expo-out);
  }
  html.ap-js .et-db .et-l .custom-section .scroll-solutions.is-gallery .solution .et_pb_image_wrap {
    height: 100%;
  }
  /* Ativo: cresce de pequeno (embaixo, centralizado) enquanto a galeria entra na tela */
  html.ap-js .et-db .et-l .custom-section .scroll-solutions.is-gallery .solution.is-active .et_pb_main_blurb_image {
    --ap-g-enter-scale: calc(0.35 + (0.65 * var(--ap-g-enter, 1)));
    z-index: 2;
    opacity: 1;
    transform: none;
    translate: calc((1 - var(--ap-g-enter-scale)) * var(--ap-g-m) / 2) calc((1 - var(--ap-g-enter-scale)) * var(--ap-g-m));
    scale: var(--ap-g-enter-scale);
  }
  html.ap-js .et-db .et-l .custom-section .scroll-solutions.is-gallery .solution:is(.is-prev, .is-before) .et_pb_main_blurb_image {
    border-radius: calc(var(--border-radius-15) / var(--ap-g-thumb));
    transform: translate(calc((var(--ap-g-thumb-size) + var(--ap-g-gap)) * -1), 0) scale(var(--ap-g-thumb));
  }
  html.ap-js .et-db .et-l .custom-section .scroll-solutions.is-gallery .solution:is(.is-next, .is-after) .et_pb_main_blurb_image {
    border-radius: calc(var(--border-radius-15) / var(--ap-g-thumb));
    transform: translate(calc(100% + var(--ap-g-gap)), calc(100% * (1 - var(--ap-g-thumb)))) scale(var(--ap-g-thumb));
  }
  /* Miniaturas visíveis: clicáveis (levam a rolagem até o card) */
  html.ap-js .et-db .et-l .custom-section .scroll-solutions.is-gallery .solution:is(.is-prev, .is-next) .et_pb_main_blurb_image {
    opacity: 1;
    cursor: pointer;
    pointer-events: auto;
  }
  /* Hover nas miniaturas: a foto aproxima dentro da moldura e surge um botão com seta
     (anterior aponta para trás). A miniatura é a foto encolhida, então os tamanhos do
     botão são divididos por --ap-g-thumb para ficarem com 48px / 14px na tela. */
  html.ap-js .et-db .et-l .custom-section .scroll-solutions.is-gallery .solution .et_pb_main_blurb_image img {
    transition: transform var(--duration-dropdown) var(--ease-expo-out);
  }
  html.ap-js .et-db .et-l .custom-section .scroll-solutions.is-gallery .solution .et_pb_main_blurb_image::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: calc(48px / var(--ap-g-thumb));
    height: calc(48px / var(--ap-g-thumb));
    border-radius: var(--border-radius-pill);
    background: var(--color-background-surface) url("../assets/icons/icon-arrow-right.svg") center / calc(14px / var(--ap-g-thumb)) no-repeat;
    box-shadow: var(--shadow-soft);
    opacity: 0;
    transform: translate(-50%, -50%) rotate(var(--ap-g-arrow, 0deg)) scale(0.6);
    transition: opacity var(--transition-default), transform var(--duration-dropdown) var(--ease-expo-out);
    pointer-events: none;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-solutions.is-gallery .solution.is-prev .et_pb_main_blurb_image {
    --ap-g-arrow: 180deg;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-solutions.is-gallery .solution:is(.is-prev, .is-next) .et_pb_main_blurb_image:hover img {
    transform: scale(1.08);
  }
  html.ap-js .et-db .et-l .custom-section .scroll-solutions.is-gallery .solution:is(.is-prev, .is-next) .et_pb_main_blurb_image:hover::after {
    opacity: 1;
    transform: translate(-50%, -50%) rotate(var(--ap-g-arrow, 0deg)) scale(1);
  }
  /* Texto: coluna da direita. As linhas entram uma a uma depois da foto e saem do mesmo
     jeito, em cascata: avançando, o texto que sai sobe e o novo vem de baixo; voltando,
     o contrário. --ap-g-line = ordem da linha (título 0, parágrafos 1, 2, 3). */
  html.ap-js .et-db .et-l .custom-section .scroll-solutions.is-gallery .solution .et_pb_blurb_container {
    position: absolute;
    top: calc(var(--ap-g-top) + var(--space-50));
    left: var(--ap-g-text-left);
    z-index: 3;
    width: var(--ap-g-text);
  }
  html.ap-js .et-db .et-l .custom-section .scroll-solutions.is-gallery .solution :is(.et_pb_module_header, .et_pb_blurb_description p) {
    opacity: 0;
    transform: translate3d(0, var(--space-20), 0);
    transition: opacity calc(var(--duration-gallery-text-out) * var(--ap-g-speed, 1)) ease-out, transform calc(var(--duration-gallery-text-out) * var(--ap-g-speed, 1)) ease-out;
    transition-delay: calc(var(--ap-g-line, 0) * var(--stagger-words) * var(--ap-g-speed, 1));
  }
  html.ap-js .et-db .et-l .custom-section .scroll-solutions.is-gallery .solution:is(.is-prev, .is-before) :is(.et_pb_module_header, .et_pb_blurb_description p) {
    transform: translate3d(0, calc(-1 * var(--space-20)), 0);
  }
  html.ap-js .et-db .et-l .custom-section .scroll-solutions.is-gallery .solution .et_pb_blurb_description p:nth-child(1) {
    --ap-g-line: 1;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-solutions.is-gallery .solution .et_pb_blurb_description p:nth-child(2) {
    --ap-g-line: 2;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-solutions.is-gallery .solution .et_pb_blurb_description p:nth-child(n + 3) {
    --ap-g-line: 3;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-solutions.is-gallery.is-entered .solution.is-active .et_pb_blurb_container {
    pointer-events: auto;
  }
  /* Entrada: espera o texto anterior sair e a foto andar um pouco */
  html.ap-js .et-db .et-l .custom-section .scroll-solutions.is-gallery.is-entered .solution.is-active :is(.et_pb_module_header, .et_pb_blurb_description p) {
    opacity: 1;
    transform: translate3d(0, 0, 0);
    transition: opacity calc(var(--duration-reveal) * var(--ap-g-speed, 1)) var(--ease-expo-out), transform calc(var(--duration-reveal) * var(--ap-g-speed, 1)) var(--ease-expo-out);
    transition-delay: calc(((var(--duration-gallery) * 0.4) + (var(--ap-g-line, 0) * var(--stagger-reveal))) * var(--ap-g-speed, 1));
  }
  /* Montagem sem animação (carregar a página no meio da seção ou pular vários cards):
     o js/custom.js coloca .is-instant na row por dois frames */
  html.ap-js .et-db .et-l .custom-section .scroll-solutions.is-gallery.is-instant {
    --ap-g-speed: 0;
  }
}

/* Desktop compacto (< 1360px): texto mínimo maior, a foto cede e a coluna
   direita usa a largura que antes virava margem vazia. */
@media (min-width: 981px) and (max-width: 1359px) {
  html.ap-js .et-db .et-l .custom-section .scroll-solutions.is-gallery .solution {
    --ap-g-text-min: 280px;
  }
}

/* —— 6.4 CTA com vídeo de fundo (.cta-fullwidth) ——
   Figma 53:318: seção de 750px com vídeo de fundo (componente de vídeo, 3.8) + película,
   tudo centralizado: .eyebrow em verde de acento, .title em AP/Display/Desktop
   (56 Black, branco) e .custom-button.light. Gap do Figma: 32 → space-30.
   Camadas: vídeo (z 1) → película no ::after (z 2) → conteúdo (z 3).
   O ::before fica livre para o loader do Divi (.et_pb_preload).
   Modelo 2 (imagem de fundo + degradê, conteúdo à esquerda) em 6.12. */
.et-db .et-l .custom-section.cta-fullwidth {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: 750px;
  padding: var(--space-80) 0;
  overflow: hidden;
  background-color: var(--color-background-inverse);
}
.et-db .et-l .custom-section.cta-fullwidth::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  background-color: var(--overlay-cta);
  pointer-events: none;
}
.et-db .et-l .custom-section.cta-fullwidth .custom-content {
  position: relative;
  z-index: 3;
}
.et-db .et-l .custom-section.cta-fullwidth .et_pb_column {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-30);
  text-align: center;
}
.et-db .et-l .custom-section.cta-fullwidth .et_pb_module {
  margin: 0;
}
.et-db .et-l .custom-section.cta-fullwidth .eyebrow :is(h1, h2, h3, h4, h5, h6, p) {
  color: var(--color-brand-accent);
}
/* O modelo 2 (6.12) usa o título no tamanho do componente (3.2) */
.et-db .et-l .custom-section.cta-fullwidth .title :is(h1, h2, h3, h4, h5, h6) {
  color: var(--color-text-inverse);
}
.et-db .et-l .custom-section.cta-fullwidth:not(.model2) .title :is(h1, h2, h3, h4, h5, h6) {
  font-size: var(--font-size-display);
  font-weight: var(--font-weight-black);
  letter-spacing: 0;
}
/* O Divi deixa o <strong> em 700; o título inteiro é Black */
.et-db .et-l .custom-section.cta-fullwidth:not(.model2) .title strong {
  font-weight: inherit;
}
/* Instância do Figma: texto principal (como no hero) */
.et-db .et-l .custom-section.cta-fullwidth .custom-button.light:not(:hover):not(:active) {
  color: var(--color-text-primary);
}

/* —— 6.5 CTA com vídeo – abertura no scroll (front) ——
   Referência jobyaviation.com ("Technology that makes…") e zoox.com. Só no CTA com vídeo:
   o js/custom.js marca a seção com .ap-cta e atualiza --ap-cta de 0 (topo da seção na base da tela) a 1 (seção
   centralizada): o vídeo começa como um card alinhado ao conteúdo, com cantos arredondados,
   abre até a largura total e afasta (zoom out) junto. Só o vídeo e a película são recortados;
   em volta do card aparece o fundo branco das seções vizinhas. O zoom fica no <video>
   para não escalar o recorte.
   .is-cta-live liga a suavização só depois do primeiro estado (sem animar ao recarregar). */
html.ap-js .et-db .et-l .custom-section.cta-fullwidth.ap-cta {
  --ap-cta-rest: calc(1 - var(--ap-cta, 1));
  --ap-cta-inset-x: max(var(--space-40), calc((100% - var(--container-max-width)) / 2));
  --ap-cta-inset-y: var(--space-60);
  --ap-cta-radius: var(--border-radius-30);
  background-color: var(--color-background-surface);
}
html.ap-js .et-db .et-l .custom-section.cta-fullwidth.ap-cta > .et-pb-background-video,
html.ap-js .et-db .et-l .custom-section.cta-fullwidth.ap-cta::after {
  clip-path: inset(calc(var(--ap-cta-rest) * var(--ap-cta-inset-y)) calc(var(--ap-cta-rest) * var(--ap-cta-inset-x)) round calc(var(--ap-cta-rest) * var(--ap-cta-radius)));
}
html.ap-js .et-db .et-l .custom-section.cta-fullwidth.ap-cta > .et-pb-background-video {
  background-color: var(--color-background-inverse);
}
html.ap-js .et-db .et-l .custom-section.cta-fullwidth.ap-cta > .et-pb-background-video video {
  scale: calc(1 + (0.2 * var(--ap-cta-rest)));
}
html.ap-js .et-db .et-l .custom-section.cta-fullwidth.ap-cta.is-cta-live > .et-pb-background-video,
html.ap-js .et-db .et-l .custom-section.cta-fullwidth.ap-cta.is-cta-live::after {
  transition: clip-path var(--duration-scrub) ease-out;
}
html.ap-js .et-db .et-l .custom-section.cta-fullwidth.ap-cta.is-cta-live > .et-pb-background-video video {
  transition: scale var(--duration-scrub) ease-out;
}

/* —— 6.7 Etapas (.steps-gallery) – base ——
   Figma 53:355. Rows: .description (título .title + texto .text de 350px) e .scroll-steps
   (blurbs .step, componente 3.6). Respiro do Figma: 80 entre os blocos.
   Base (builder, tablet, mobile e sem JS): as etapas ficam uma abaixo da outra. */
.et-db .et-l .custom-section.steps-gallery {
  padding: var(--space-80) 0;
}
.et-db .et-l .custom-section.steps-gallery .et_pb_module {
  margin: 0;
}
.et-db .et-l .custom-section.steps-gallery .description .et_pb_column {
  display: flex;
  flex-direction: column;
  gap: var(--space-30);
}
.et-db .et-l .custom-section.steps-gallery .description .text {
  max-width: 350px;
}
.et-db .et-l .custom-section.steps-gallery .scroll-steps .et_pb_column {
  display: flex;
  flex-direction: column;
  gap: var(--space-60);
}

/* —— 6.8 Etapas – galeria fixa no scroll (front, ≥ 981px) ——
   Referência jobyaviation.com ("With partners like this…"). Mesmo motor da galeria de
   soluções (6.2): o js/custom.js marca a row com .is-steps, a coluna fica presa na tela e a
   rolagem troca a etapa ativa (.is-active; anteriores .is-prev/.is-before, seguintes
   .is-next/.is-after).
   O JS também cria a lista de etapas (.ap-steps-nav) com os títulos dos blurbs; o título
   dentro do card fica só para leitor de tela (exceto .step.model02, onde o título aparece).
   Medidas do Figma (conteúdo 1280): lista 300, gap 30, foto 600, gap 30, texto 320.
   A foto também respeita a altura da tela (--ap-s-size).
   Troca da foto: a nova sobe por cima da anterior (recorte de baixo para cima); voltando,
   desce. O traço da etapa ativa enche conforme a rolagem avança nela (--ap-s-progress).
   .step.model02 (Figma 204:44369): foto portrait 500 (::before do fundo); logo + texto
   à direita; sem contador; sem scroll interno; mesmas animações. */
@media (min-width: 981px) {
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps {
    --ap-g-step: 70svh;
    height: calc(100svh + ((var(--ap-g-count, 1) - 1) * var(--ap-g-step)));
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .et_pb_column {
    --ap-s-size: min(46.875cqw, calc(100svh - (2 * var(--space-80))));
    --ap-s-top: calc((100svh - var(--ap-s-size)) / 2);
    --ap-s-left: 25.78125cqw;
    --ap-s-text: calc(var(--ap-s-left) + var(--ap-s-size) + 2.34375cqw);
    --ap-s-dur: calc(var(--duration-gallery) * var(--ap-g-speed, 1));
    position: sticky;
    top: 0;
    display: block;
    height: 100vh;
    height: 100svh;
    container-type: inline-size;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step {
    position: absolute;
    inset: 0;
    margin: 0;
    pointer-events: none;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step .et_pb_blurb_content {
    display: block;
  }
  /* Foto: todas no mesmo lugar; só a ativa aparece inteira */
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step .et_pb_main_blurb_image {
    position: absolute;
    top: var(--ap-s-top);
    left: var(--ap-s-left);
    z-index: 1;
    width: var(--ap-s-size);
    height: var(--ap-s-size);
    margin: 0;
    clip-path: inset(100% 0 0 0 round var(--border-radius-15));
    animation-name: none; /* reforço: o js/custom.js já remove a animação do Divi */
    transition: clip-path var(--ap-s-dur) var(--ease-expo-out);
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step:is(.is-prev, .is-before) .et_pb_main_blurb_image {
    clip-path: inset(0 0 100% 0 round var(--border-radius-15));
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.is-active .et_pb_main_blurb_image {
    z-index: 2;
    clip-path: inset(0 0 0 0 round var(--border-radius-15));
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step .et_pb_image_wrap {
    height: 100%;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step .et_pb_main_blurb_image img {
    scale: 1.15;
    transition: scale calc(var(--duration-reveal-image) * var(--ap-g-speed, 1)) var(--ease-expo-out);
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.is-active .et_pb_main_blurb_image img {
    scale: 1;
  }
  /* Texto: à direita da foto, centralizado com ela */
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step .et_pb_blurb_container {
    position: absolute;
    top: calc(var(--ap-s-top) + (var(--ap-s-size) / 2));
    left: var(--ap-s-text);
    width: calc(100cqw - var(--ap-s-text));
    translate: 0 -50%;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step .et_pb_module_header {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
  }
  /* Linhas (número, descrição, link) saem e entram em cascata, como na galeria de soluções.
     Avançando, o texto que sai sobe e o novo vem de baixo; voltando, o contrário. */
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step .et_pb_blurb_container::before,
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step .et_pb_blurb_description p {
    opacity: 0;
    transform: translate3d(0, var(--space-20), 0);
    transition: opacity calc(var(--duration-gallery-text-out) * var(--ap-g-speed, 1)) ease-out, transform calc(var(--duration-gallery-text-out) * var(--ap-g-speed, 1)) ease-out;
    transition-delay: calc(var(--ap-s-line, 0) * var(--stagger-words) * var(--ap-g-speed, 1));
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step:is(.is-prev, .is-before) .et_pb_blurb_container::before,
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step:is(.is-prev, .is-before) .et_pb_blurb_description p {
    transform: translate3d(0, calc(-1 * var(--space-20)), 0);
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step .et_pb_blurb_description p:nth-child(1) {
    --ap-s-line: 1;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step .et_pb_blurb_description p:nth-child(n + 2) {
    --ap-s-line: 2;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps.is-entered .step.is-active .et_pb_blurb_container {
    pointer-events: auto;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps.is-entered .step.is-active .et_pb_blurb_container::before,
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps.is-entered .step.is-active .et_pb_blurb_description p {
    opacity: 1;
    transform: translate3d(0, 0, 0);
    transition: opacity calc(var(--duration-reveal) * var(--ap-g-speed, 1)) var(--ease-expo-out), transform calc(var(--duration-reveal) * var(--ap-g-speed, 1)) var(--ease-expo-out);
    transition-delay: calc(((var(--duration-gallery) * 0.3) + (var(--ap-s-line, 0) * var(--stagger-reveal))) * var(--ap-g-speed, 1));
  }
  /* Lista de etapas (Figma: 20/28; ativa ExtraBold em texto principal, demais Regular no
     verde de link, sem transparência: o verde da paleta nova a 40% sumia no branco;
     traço de 2px a 7 → space-5 abaixo do texto) */
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .ap-steps-nav {
    position: absolute;
    top: var(--ap-s-top);
    left: 0;
    z-index: 3;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-30);
    width: 23.4375cqw;
    margin: 0;
    padding: 0;
    list-style: none;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .ap-steps-nav li {
    margin: 0;
    padding: 0;
    list-style: none;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .ap-steps-nav__item {
    position: relative;
    display: inline-block;
    margin: 0;
    padding: 0;
    font-family: var(--font-family-raleway);
    font-size: var(--font-size-h4);
    font-weight: var(--font-weight-regular);
    line-height: var(--line-height-140);
    text-align: left;
    color: var(--color-text-link);
    background: none;
    border: 0;
    cursor: pointer;
    transition: color var(--transition-default);
  }
  /* Sem anel de foco: o traço da ativa já marca a seleção */
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .ap-steps-nav__item:focus,
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .ap-steps-nav__item:focus-visible {
    outline: none;
    box-shadow: none;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .ap-steps-nav__item:hover {
    color: var(--color-action-hover);
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .ap-steps-nav__item.is-active {
    font-weight: var(--font-weight-extra-bold);
    color: var(--color-text-primary);
  }
  /* Traço: começa com um pedaço visível e enche até o fim do trecho da etapa */
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .ap-steps-nav__item::after {
    content: "";
    position: absolute;
    bottom: calc(-1 * var(--space-5));
    left: 0;
    width: 100%;
    height: var(--border-width-2);
    border-radius: var(--border-radius-pill);
    background-color: var(--color-action-pressed);
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform var(--duration-scrub) ease-out;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .ap-steps-nav__item.is-active::after {
    transform: scaleX(calc(0.15 + (0.85 * var(--ap-s-progress, 0))));
  }
  /* Parceiro (.step.model02) – Figma 204:44369
     Medidas 1280: lista 300, gap 30, foto 500 (portrait 5/6), gap 30, texto ~420.
     Mesmas animações da galeria (clip-path da foto + cascata do texto).
     Descrição: scroll elegante só quando o texto passa a altura da foto. */
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps:has(.step.model02) .et_pb_column {
    --ap-s-photo-w: min(39.0625cqw, calc((100svh - (2 * var(--space-80))) * 5 / 6));
    --ap-s-photo-h: min(calc(var(--ap-s-photo-w) * 6 / 5), calc(100svh - (2 * var(--space-80))));
    --ap-s-top: calc((100svh - var(--ap-s-photo-h)) / 2);
    --ap-s-left: 25.78125cqw;
    --ap-s-text: calc(var(--ap-s-left) + var(--ap-s-photo-w) + 2.34375cqw);
    --ap-s-size: var(--ap-s-photo-h);
    overflow: visible;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02 .et_pb_blurb_content {
    position: absolute;
    top: 0;
    right: 0;
    bottom: auto;
    left: 0;
    /* Altura = topo + foto: logo + texto cabem no mesmo bloco da foto */
    height: calc(var(--ap-s-top) + var(--ap-s-photo-h));
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: flex-start;
    gap: var(--space-15);
    width: auto;
    max-width: none;
    margin: 0;
    padding: var(--ap-s-top) 0 0 var(--ap-s-text);
    box-sizing: border-box;
    overflow: hidden;
    text-align: left;
    translate: none;
    transform: none;
    background-image: inherit;
    background-size: 0 0;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02 .et_pb_blurb_content::before {
    content: "";
    position: absolute;
    top: var(--ap-s-top);
    left: var(--ap-s-left);
    z-index: 1;
    width: var(--ap-s-photo-w);
    height: var(--ap-s-photo-h);
    margin: 0;
    border-radius: var(--border-radius-15);
    background-image: inherit;
    background-repeat: no-repeat;
    background-position: center;
    background-size: cover;
    clip-path: inset(100% 0 0 0 round var(--border-radius-15));
    transition: clip-path var(--ap-s-dur) var(--ease-expo-out);
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02:is(.is-prev, .is-before) .et_pb_blurb_content::before {
    clip-path: inset(0 0 100% 0 round var(--border-radius-15));
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02.is-active .et_pb_blurb_content::before {
    z-index: 2;
    clip-path: inset(0 0 0 0 round var(--border-radius-15));
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02 .et_pb_main_blurb_image {
    position: relative;
    top: auto;
    left: auto;
    z-index: 3;
    flex: 0 0 auto;
    align-self: flex-start;
    width: auto;
    max-width: 200px;
    height: auto;
    max-height: 96px;
    margin: 0;
    clip-path: none;
    transition: none;
    text-align: left;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02 .et_pb_image_wrap {
    height: auto;
    margin: 0;
    text-align: left;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02 .et_pb_main_blurb_image img {
    scale: none;
    margin: 0;
    object-position: left center;
    transition: none;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02 .et_pb_blurb_container {
    position: relative;
    top: auto;
    right: auto;
    bottom: auto;
    left: auto;
    /* Ocupa o que sobra abaixo do logo; sem barra até o JS marcar .is-scrollable */
    flex: 1 1 auto;
    width: 100%;
    max-width: none;
    min-height: 0;
    height: auto;
    max-height: none;
    overflow-x: hidden;
    overflow-y: hidden;
    overscroll-behavior: contain;
    translate: none;
    scrollbar-width: thin;
    scrollbar-color: var(--color-border-subtle) transparent;
  }
  /* Medição sem translate da cascata (evita falso overflow) */
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02 .et_pb_blurb_container.is-measuring .et_pb_module_header,
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02 .et_pb_blurb_container.is-measuring .et_pb_blurb_description :is(h1, h2, h3, h4, h5, h6),
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02 .et_pb_blurb_container.is-measuring .et_pb_blurb_description p {
    transform: none;
    transition: none;
  }
  /* JS (initSteps): só quando o texto passa o espaço sob o logo */
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02 .et_pb_blurb_container.is-scrollable {
    padding-right: var(--space-10);
    overflow-y: auto;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02 .et_pb_blurb_container.is-scrollable::-webkit-scrollbar {
    width: 4px;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02 .et_pb_blurb_container.is-scrollable::-webkit-scrollbar-track {
    background: transparent;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02 .et_pb_blurb_container.is-scrollable::-webkit-scrollbar-thumb {
    background-color: var(--color-border-subtle);
    border-radius: var(--border-radius-pill);
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02 .et_pb_blurb_container.is-scrollable::-webkit-scrollbar-thumb:hover {
    background-color: var(--color-border-control);
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02 .et_pb_module_header {
    position: static;
    width: auto;
    height: auto;
    overflow: visible;
    clip-path: none;
    white-space: normal;
  }
  /* Cascata: logo, título, local e parágrafos (sem o contador) */
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02 .et_pb_main_blurb_image,
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02 .et_pb_module_header,
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02 .et_pb_blurb_description :is(h1, h2, h3, h4, h5, h6),
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02 .et_pb_blurb_description p {
    opacity: 0;
    transform: translate3d(0, var(--space-20), 0);
    transition: opacity calc(var(--duration-gallery-text-out) * var(--ap-g-speed, 1)) ease-out, transform calc(var(--duration-gallery-text-out) * var(--ap-g-speed, 1)) ease-out;
    transition-delay: calc(var(--ap-s-line, 0) * var(--stagger-words) * var(--ap-g-speed, 1));
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02:is(.is-prev, .is-before) .et_pb_main_blurb_image,
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02:is(.is-prev, .is-before) .et_pb_module_header,
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02:is(.is-prev, .is-before) .et_pb_blurb_description :is(h1, h2, h3, h4, h5, h6),
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02:is(.is-prev, .is-before) .et_pb_blurb_description p {
    transform: translate3d(0, calc(-1 * var(--space-20)), 0);
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02 .et_pb_main_blurb_image {
    --ap-s-line: 0;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02 .et_pb_module_header {
    --ap-s-line: 1;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02 .et_pb_blurb_description :is(h1, h2, h3, h4, h5, h6) {
    --ap-s-line: 2;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02 .et_pb_blurb_description p:nth-of-type(1) {
    --ap-s-line: 3;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps .step.model02 .et_pb_blurb_description p:nth-of-type(n + 2) {
    --ap-s-line: 4;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps.is-entered .step.model02.is-active .et_pb_blurb_content {
    pointer-events: auto;
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps.is-entered .step.model02.is-active .et_pb_main_blurb_image,
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps.is-entered .step.model02.is-active .et_pb_module_header,
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps.is-entered .step.model02.is-active .et_pb_blurb_description :is(h1, h2, h3, h4, h5, h6),
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps.is-entered .step.model02.is-active .et_pb_blurb_description p {
    opacity: 1;
    transform: translate3d(0, 0, 0);
    transition: opacity calc(var(--duration-reveal) * var(--ap-g-speed, 1)) var(--ease-expo-out), transform calc(var(--duration-reveal) * var(--ap-g-speed, 1)) var(--ease-expo-out);
    transition-delay: calc(((var(--duration-gallery) * 0.3) + (var(--ap-s-line, 0) * var(--stagger-reveal))) * var(--ap-g-speed, 1));
  }
  html.ap-js .et-db .et-l .custom-section .scroll-steps.is-steps.is-instant {
    --ap-g-speed: 0;
  }
}

/* —— 6.10 Instagram (.instagram) ——
   Figma 94:2393: fundo da página (areia), título .title, row aninhada com o texto .text
   (esquerda) e o botão .custom-button do perfil (direita), e o feed (.call-instagram com o
   módulo Código .custom-feed, plugin Smash Balloon). Respiro do Figma: 64 → space-65.
   Cada post (sbi/item.php do tema): foto quadrada (radius 16 → 15) e, 16 → space-15 abaixo,
   a legenda curta (Bold 16/24, uma linha) com o ícone do Instagram (24px, verde).
   O plugin usa seletores com #sb_instagram, por isso eles entram aqui também.
   !important só no gap e no padding-bottom: o plugin grava os dois inline. */
.et-db .et-l .custom-section.instagram {
  padding: var(--space-80) 0;
  background-color: var(--color-background-page);
}
.et-db .et-l .custom-section.instagram .et_pb_module {
  margin: 0;
}
.et-db .et-l .custom-section.instagram .description > .et_pb_column {
  display: flex;
  flex-direction: column;
  gap: var(--space-65);
}
.et-db .et-l .custom-section.instagram .et_pb_row_nested {
  align-items: center;
}
.et-db .et-l .custom-section.instagram .et_pb_row_nested > .et_pb_column:last-child {
  align-items: flex-end;
}
.et-db .et-l .custom-section.instagram .call-instagram {
  margin-top: var(--space-65);
}
.et-db .et-l .custom-section.instagram .custom-feed #sb_instagram {
  padding-bottom: 0 !important;
}
.et-db .et-l .custom-section.instagram .custom-feed #sb_instagram #sbi_images {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-25) !important;
  padding: 0;
}
.et-db .et-l .custom-section.instagram .custom-feed #sb_instagram #sbi_images .sbi_item {
  display: flex;
  flex-direction: column;
  gap: var(--space-15);
}
.et-db .et-l .custom-section.instagram .custom-feed #sb_instagram .sbi_photo_wrap {
  overflow: hidden;
  border-radius: var(--border-radius-15);
}
/* O JS do plugin mede a largura e grava a altura igual; o aspect-ratio vale até ele rodar.
   width: 100% evita que a largura passe a seguir a altura antiga no resize. */
.et-db .et-l .custom-section.instagram .custom-feed #sb_instagram .sbi_photo {
  width: 100%;
  aspect-ratio: 1;
}
.et-db .et-l .custom-section.instagram .custom-feed #sb_instagram .sbi_photo img {
  display: block;
  height: 100%;
  transition: scale var(--duration-dropdown) var(--ease-expo-out);
}
.et-db .et-l .custom-section.instagram .custom-feed #sb_instagram .sbi_item:hover .sbi_photo img {
  scale: 1.05;
}
/* Legenda: uma linha com reticências + ícone (icon-instagram.svg em máscara) */
.et-db .et-l .custom-section.instagram .custom-feed #sb_instagram .ap-insta-caption {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-10);
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-150);
  color: var(--color-text-primary);
  text-decoration: none;
}
.et-db .et-l .custom-section.instagram .custom-feed #sb_instagram .ap-insta-caption__text {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.et-db .et-l .custom-section.instagram .custom-feed #sb_instagram .ap-insta-caption__icon {
  flex: 0 0 auto;
  width: 24px;
  height: 24px;
  background-color: var(--color-text-link);
  mask: url("../assets/icons/icon-instagram.svg") center / contain no-repeat;
  -webkit-mask: url("../assets/icons/icon-instagram.svg") center / contain no-repeat;
  transition: background-color var(--transition-default);
}
.et-db .et-l .custom-section.instagram .custom-feed #sb_instagram .sbi_item:hover .ap-insta-caption {
  color: var(--color-text-link);
}
.et-db .et-l .custom-section.instagram .custom-feed #sb_instagram .sbi_item:hover .ap-insta-caption__icon {
  background-color: var(--color-action-hover);
}

/* —— 6.12 CTA com imagem (.cta-fullwidth.model2) ——
   Figma 111:9664: banner com imagem de fundo (definida no Divi) e degradê verde saindo da
   esquerda. Conteúdo à esquerda: .title no tamanho do componente (3.2) em branco, .text em
   branco (largura de 450px no Divi) e botão Forest (3.1).
   Padding do Figma 96 → 95 (tablet e mobile seguem o padrão de 7.1 e 7.2).
   Sem a abertura no scroll (6.5), que é só do CTA com vídeo. */
.et-db .et-l .custom-section.cta-fullwidth.model2 {
  min-height: 0;
  padding: var(--space-95) 0;
  background-position: center;
  background-size: cover;
}
.et-db .et-l .custom-section.cta-fullwidth.model2::after {
  background: var(--overlay-cta-gradient);
}
.et-db .et-l .custom-section.cta-fullwidth.model2 .et_pb_column {
  align-items: flex-start;
  text-align: left;
}
/* Largura do título no Figma: quebra em "Vamos planejar a / próxima operação?" */
.et-db .et-l .custom-section.cta-fullwidth.model2 .title {
  max-width: 844px;
}
.et-db .et-l .custom-section.cta-fullwidth.model2 .text {
  color: var(--color-text-inverse);
}

/* —— 6.13 CTA com imagem – parallax do fundo (front) ——
   Referência jobyaviation.com ("Technology that makes…"): a imagem desliza mais devagar que a
   seção. O ::before repete a imagem do Divi (background-image: inherit) numa camada 15% mais
   alta que a seção e o js/custom.js atualiza --ap-parallax (0 → 1) na rolagem. O
   deslocamento máximo (±6,5% da camada ≈ ±7,5% da seção) cabe na sobra, então as bordas
   nunca aparecem. Só transform (GPU), sem repintar.
   A imagem atual (1920×540) tem o tamanho exato da seção, então a sobra vem de ampliar ~15%;
   com uma versão mais alta da foto (ex.: 1920×800) o cover não amplia nada.
   Sem JS (Visual Builder ou movimento reduzido) fica o fundo do Divi, parado. */
html.ap-js .et-db .et-l .custom-section.cta-fullwidth.model2.ap-parallax::before {
  content: "";
  position: absolute;
  inset: -7.5% 0;
  z-index: 1;
  background-image: inherit;
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
  transform: translate3d(0, calc((var(--ap-parallax, 0.5) - 0.5) * 13%), 0);
  will-change: transform;
  pointer-events: none;
}

/* —— 6.14 Cards de serviços (.solutions-cards) ——
   Figma 95:2528 (Roteiros & Consultoria). Rows: .description (.title + .text) e .cards, com os
   blurbs .solution (componente 3.6) em grade de 2 colunas. O card é a versão grande do Figma
   (AP/Approved/Service card): foto 624×400 (radius 16 → 15), título AP/Heading/H2 (36 Bold,
   lh 44 → 120%), gaps 24 → 25 e 16 → 15. Entre blocos e linhas 64 → 65; entre colunas 32 → 30.
   O fundo bege fica no Divi. */
.et-db .et-l .custom-section.solutions-cards {
  padding: var(--space-80) 0;
}
.et-db .et-l .custom-section.solutions-cards .et_pb_module {
  margin: 0;
}
.et-db .et-l .custom-section.solutions-cards .description > .et_pb_column {
  display: flex;
  flex-direction: column;
  gap: var(--space-65);
}
.et-db .et-l .custom-section.solutions-cards .cards {
  margin-top: var(--space-65);
}
.et-db .et-l .custom-section.solutions-cards .cards > .et_pb_column {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-65) var(--space-30);
  align-items: start;
}
.et-db .et-l .custom-section.solutions-cards .solution .et_pb_main_blurb_image {
  margin-bottom: var(--space-25);
}
.et-db .et-l .custom-section.solutions-cards .solution .et_pb_image_wrap {
  aspect-ratio: 624 / 400;
}
.et-db .et-l .custom-section.solutions-cards .solution .et_pb_blurb_container {
  gap: var(--space-15);
}
.et-db .et-l .custom-section.solutions-cards .solution .et_pb_module_header {
  font-size: var(--font-size-h2);
  line-height: var(--line-height-120);
}
.et-db .et-l .custom-section.solutions-cards .solution .et_pb_blurb_description p + p {
  margin-top: var(--space-15);
}

/* —— 6.16 Card único de serviço (.solutions-only-card) ——
   Figma 95:2570 (Roteiros & Consultoria). Rows: .description (.title) e .cards, com a foto
   numa coluna e .subtitle + .feature + .text + .custom-button na outra.
   Foto quadrada (600 no Figma, radius 16 → 15); texto centralizado na altura da foto e
   limitado a 520px. Gaps do Figma: título → row 64 → 65; entre colunas 80 (via a variável
   de gutter do Divi, que também calcula a largura das colunas); entre os textos 24 → 25;
   texto → botão 32 → 30. */
.et-db .et-l .custom-section.solutions-only-card {
  padding: var(--space-80) 0;
}
.et-db .et-l .custom-section.solutions-only-card .et_pb_module {
  margin: 0;
}
.et-db .et-l .custom-section.solutions-only-card .cards {
  --row-gutter-horizontal: var(--space-80);
  align-items: center;
  margin-top: var(--space-65);
}
.et-db .et-l .custom-section.solutions-only-card .cards .et_pb_image .et_pb_image_wrap {
  display: block;
  width: 100%;
  aspect-ratio: 1;
  overflow: hidden;
  border-radius: var(--border-radius-15);
}
.et-db .et-l .custom-section.solutions-only-card .cards .et_pb_image img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.et-db .et-l .custom-section.solutions-only-card .cards .et_pb_column:has(.subtitle) {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-25);
}
/* Título do card no tamanho AP/Heading/H2 (36), como nos cards de 6.14 */
.et-db .et-l .custom-section.solutions-only-card .cards .subtitle :is(h1, h2, h3, h4, h5, h6, p) {
  font-size: var(--font-size-h2);
}
.et-db .et-l .custom-section.solutions-only-card .cards :is(.feature, .text) {
  max-width: 520px;
}
.et-db .et-l .custom-section.solutions-only-card .cards .et_pb_button_module_wrapper {
  margin-top: var(--space-5);
}

/* —— 6.16b Sobre (.solutions-only-card sem .subtitle) ——
   Figma 237:36635. .description (.title + texto 350) e .cards (foto 720 | corpo).
   Não mexe no card de Roteiros (6.16, que tem .subtitle). Título e cor ficam
   no componente .title; foto continua quadrada (radius 15). Gap 50; corpo 16/24. */
.et-db .et-l .custom-section.solutions-only-card:not(:has(.subtitle)) {
  background-color: var(--color-background-surface);
}
.et-db .et-l .custom-section.solutions-only-card:not(:has(.subtitle)) .description > .et_pb_column {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-30);
}
.et-db .et-l .custom-section.solutions-only-card:not(:has(.subtitle)) .description .et_pb_text:not(.title) {
  max-width: 350px;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-150);
  color: var(--color-text-secondary);
}
.et-db .et-l .custom-section.solutions-only-card:not(:has(.subtitle)) .description .et_pb_text:not(.title) p {
  margin: 0;
  padding-bottom: 0;
}
.et-db .et-l .custom-section.solutions-only-card:not(:has(.subtitle)) .cards {
  --row-gutter-horizontal: 0;
  display: grid;
  grid-template-columns: minmax(0, 720fr) minmax(0, 510fr);
  align-items: center;
  column-gap: var(--space-50);
  row-gap: var(--space-30);
  margin-top: var(--space-80);
}
.et-db .et-l .custom-section.solutions-only-card:not(:has(.subtitle)) .cards > .et_pb_column {
  width: auto;
  max-width: none;
  flex: none;
  min-width: 0;
}
.et-db .et-l .custom-section.solutions-only-card:not(:has(.subtitle)) .cards .et_pb_text {
  display: flex;
  flex-direction: column;
  gap: var(--space-25);
  max-width: none;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-150);
  color: var(--color-text-secondary);
}
.et-db .et-l .custom-section.solutions-only-card:not(:has(.subtitle)) .cards .et_pb_text p {
  margin: 0;
}

/* —— 6.18 Cards simples de serviço (.solutions-simple-cards) ——
   Figma 95:2582 (Roteiros & Consultoria). Row .cards com um .simple-card (3.6) por coluna.
   Entre colunas 80 (via a variável de gutter do Divi, que também calcula a largura das
   colunas). O fundo bege fica no Divi. */
.et-db .et-l .custom-section.solutions-simple-cards {
  padding: var(--space-80) 0;
}
.et-db .et-l .custom-section.solutions-simple-cards .et_pb_module {
  margin: 0;
}
.et-db .et-l .custom-section.solutions-simple-cards .cards {
  --row-gutter-horizontal: var(--space-80);
  align-items: flex-start;
}

/* —— 6.20 Hero de serviço (.hero-solution) ——
   Figma 349:1862 (página do serviço, ex.: Transfer Premium). Rows: intro (.eyebrow +
   .title + .subtitle), .more-info (texto + .custom-button) e .feature-image.
   Topo 250 (100+100+50) libera o header flutuante; entre blocos 40; imagem com
   80 de respiro. Título no marrom da paleta; destaque (.subtitle) no tamanho H3
   (24 Bold), não no Display/Mobile do componente 3.3.
   Animação: entrada em cascata no carregamento (js/custom.js), sem ap-fill/ap-grow —
   título e destaque com máscara de palavras; texto, botão e imagem no reveal do site. */
.et-db .et-l .custom-section.hero-solution {
  --section-gutter: 0; /* O ritmo entre rows fica nos margins (40 / 80), não no gutter do Divi */
  padding: calc((var(--space-100) * 1.5) + var(--space-50)) 0 var(--space-80);
}
.et-db .et-l .custom-section.hero-solution .et_pb_module {
  margin: 0;
}
.et-db .et-l .custom-section.hero-solution .custom-content:not(.more-info):not(.feature-image) > .et_pb_column {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-40);
}
.et-db .et-l .custom-section.hero-solution .eyebrow a {
  color: inherit;
  text-decoration: none;
  transition: color var(--transition-default);
}
.et-db .et-l .custom-section.hero-solution .eyebrow a:hover {
  color: var(--color-action-hover);
}
/* Título pode vir em <p> ou heading no Divi */
.et-db .et-l .custom-section.hero-solution .title :is(h1, h2, h3, h4, h5, h6, p) {
  margin: 0;
  padding: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-hero-display);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-100);
  letter-spacing: var(--letter-spacing-hero);
  color: var(--color-text-heading);
  text-wrap: balance;
}
.et-db .et-l .custom-section.hero-solution .subtitle :is(h1, h2, h3, h4, h5, h6, p) {
  max-width: 650px;
  font-size: var(--font-size-h3);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-130);
}
.et-db .et-l .custom-section.hero-solution .more-info {
  align-items: center;
  margin-top: var(--space-40);
}
.et-db .et-l .custom-section.hero-solution .more-info .et_pb_text,
.et-db .et-l .custom-section.hero-solution .more-info .et_pb_text p {
  max-width: 650px;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-150);
  color: var(--color-text-secondary);
}
.et-db .et-l .custom-section.hero-solution .more-info .et_pb_text p {
  margin: 0;
  padding: 0;
}
/* Coluna do Divi é column: align-items empurra o botão para a direita */
.et-db .et-l .custom-section.hero-solution .more-info .et_pb_column:has(.custom-button) {
  display: flex;
  align-items: flex-end;
}
.et-db .et-l .custom-section.hero-solution .feature-image {
  margin-top: var(--space-80);
}
.et-db .et-l .custom-section.hero-solution .feature-image .et_pb_image .et_pb_image_wrap {
  display: block;
  width: 100%;
  aspect-ratio: 1280 / 550;
  overflow: hidden;
  border-radius: var(--border-radius-15);
}
.et-db .et-l .custom-section.hero-solution .feature-image .et_pb_image img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* —— 6.22 Frota do serviço (.more-about) ——
   Figma 115:14538 (página do serviço, ex.: Transfer Premium). Rows: .description
   (.text) e .items-list-solutions com rows aninhadas .item-list (título + malas +
   capacidade). Desktop: linha com número automático 01… (contador CSS), veículo,
   bagagem e “ATÉ N PASSAGEIROS”. Entre descrição e lista 64 → 65; padding da
   seção 80; py da linha 24 → 25; gap 32 → 30. Título AP/Home/Card (28 SemiBold)
   na cor de texto primária; capacidade no visual do eyebrow. */
.et-db .et-l .custom-section.more-about {
  --section-gutter: 0;
  padding: var(--space-80) 0;
}
.et-db .et-l .custom-section.more-about .et_pb_module {
  margin: 0;
}
.et-db .et-l .custom-section.more-about .description .text {
  max-width: 700px;
}
.et-db .et-l .custom-section.more-about .items-list-solutions {
  margin-top: var(--space-65);
  counter-reset: ap-fleet;
}
.et-db .et-l .custom-section.more-about .items-list-solutions > .et_pb_column {
  display: flex;
  flex-direction: column;
  gap: 0;
}
.et-db .et-l .custom-section.more-about .item-list {
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 0;
  counter-increment: ap-fleet;
  border-top: var(--border-width-1) solid var(--color-border-subtle);
}
.et-db .et-l .custom-section.more-about .item-list:last-child {
  border-bottom: var(--border-width-1) solid var(--color-border-subtle);
}
.et-db .et-l .custom-section.more-about .item-list > .et_pb_column {
  display: grid;
  grid-template-columns: 80px minmax(0, 480fr) minmax(0, 432fr) minmax(0, 192fr);
  align-items: center;
  gap: var(--space-30);
  padding: var(--space-25) 0;
}
/* Número 01, 02… — mesma ideia do contador das etapas (3.6) */
.et-db .et-l .custom-section.more-about .item-list > .et_pb_column::before {
  content: counter(ap-fleet, decimal-leading-zero);
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-small);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-140);
  color: var(--color-text-secondary);
}
.et-db .et-l .custom-section.more-about .item-list > .et_pb_column > .et_pb_text:nth-child(1) :is(h1, h2, h3, h4, h5, h6, p) {
  margin: 0;
  padding: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-card);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-120);
  color: var(--color-text-primary);
}
.et-db .et-l .custom-section.more-about .item-list > .et_pb_column > .et_pb_text:nth-child(2),
.et-db .et-l .custom-section.more-about .item-list > .et_pb_column > .et_pb_text:nth-child(2) p {
  margin: 0;
  padding: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-150);
  color: var(--color-text-secondary);
}
.et-db .et-l .custom-section.more-about .item-list > .et_pb_column > .et_pb_text:nth-child(3),
.et-db .et-l .custom-section.more-about .item-list > .et_pb_column > .et_pb_text:nth-child(3) p {
  margin: 0;
  padding: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-eyebrow);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-130);
  letter-spacing: var(--letter-spacing-eyebrow);
  text-transform: uppercase;
  color: var(--color-text-link);
}

/* —— 6.22b Destinos (.items-list-solutions.model-02) ——
   Figma 136:7332 (Navegações Exclusivas). Cada .item-list: número (contador) +
   título + texto (2 módulos). Colunas ~80 / 272 / 864; gap e py 32 → 30.
   Sem borda inferior no último item; texto alinhado ao topo. */
.et-db .et-l .custom-section.more-about:has(.items-list-solutions.model-02) .description .text,
.et-db .et-l .custom-section.more-about:has(.cards) .description .text {
  max-width: 900px;
}
.et-db .et-l .custom-section.more-about .items-list-solutions.model-02 .item-list:last-child {
  border-bottom: 0;
}
.et-db .et-l .custom-section.more-about .items-list-solutions.model-02 .item-list > .et_pb_column {
  grid-template-columns: 80px minmax(0, 272fr) minmax(0, 864fr);
  align-items: start;
  gap: var(--space-30);
  padding: var(--space-30) 0;
}
.et-db .et-l .custom-section.more-about .items-list-solutions.model-02 .item-list > .et_pb_column > .et_pb_text:nth-child(2) p + p {
  margin-top: var(--space-25);
}

/* —— 6.22c Cards de experiências (.more-about .cards) ——
   Figma 140:12244. Row .cards com blurbs .card-solution.model01.
   Grid fluido: 1–2 cards ocupam a linha; máx. 3 por linha; o 4º quebra.
   Gap 24 → 25; margem após descrição 64 → 65. */
.et-db .et-l .custom-section.more-about .cards {
  margin-top: var(--space-65);
}
/* Texto abaixo dos cards (ex.: nota sobre demais aeroportos) */
.et-db .et-l .custom-section.more-about .cards + .description {
  margin-top: var(--space-65);
}
.et-db .et-l .custom-section.more-about .cards > .et_pb_column {
  display: grid;
  grid-template-columns: repeat(
    auto-fit,
    minmax(min(100%, max(280px, calc((100% - (var(--space-25) * 2)) / 3))), 1fr)
  );
  gap: var(--space-25);
  align-items: stretch;
}

/* —— 6.24 Formulário de serviço (.solution-form) ——
   Figma 126:17073. Row .description: .title + row aninhada (texto | CF7
   .custom-form). Título no marrom da paleta. Colunas ~35/65 (Figma 432/752)
   com gap 96 → 95. Padding da seção 80. */
.et-db .et-l .custom-section.solution-form {
  --section-gutter: 0;
  padding: var(--space-80) 0;
  border-bottom: var(--border-width-1) solid var(--color-border-subtle);
  background-color: var(--color-background-surface);
}
.et-db .et-l .custom-section.solution-form .et_pb_module {
  margin: 0;
}
.et-db .et-l .custom-section.solution-form .description > .et_pb_column {
  display: flex;
  flex-direction: column;
  gap: var(--space-80);
}
.et-db .et-l .custom-section.solution-form .title :is(h1, h2, h3, h4, h5, h6, p) {
  color: var(--color-text-heading);
}
.et-db .et-l .custom-section.solution-form .description .et_pb_row_nested {
  display: grid;
  grid-template-columns: minmax(0, 432fr) minmax(0, 752fr);
  align-items: start;
  width: 100%;
  max-width: none;
  margin: 0;
  column-gap: var(--space-95);
  row-gap: var(--space-40);
}
.et-db .et-l .custom-section.solution-form .description .et_pb_row_nested > .et_pb_column {
  width: auto;
  max-width: none;
  flex: none;
  min-width: 0;
}
.et-db .et-l .custom-section.solution-form .description .et_pb_row_nested > .et_pb_column:has(.text) {
  display: flex;
  flex-direction: column;
  gap: var(--space-30);
}
.et-db .et-l .custom-section.solution-form .description .text p {
  margin: 0;
  padding: 0;
}
.et-db .et-l .custom-section.solution-form .description .text p + p {
  margin-top: var(--space-30);
}
.et-db .et-l .custom-section.solution-form .description .text strong {
  font-weight: var(--font-weight-semibold);
  color: var(--color-text-primary);
}

/* —— 6.24b Contato (.solution-form.contact) ——
   Figma 239:41950. Texto 520 + gap 96 → 95 + form (resto). Form com
   padding lateral 32 → 30. Títulos/áreas em mint; e-mails sem underline. */
.et-db .et-l .custom-section.solution-form.contact .description .et_pb_row_nested {
  grid-template-columns: minmax(0, 520fr) minmax(0, 664fr);
}
.et-db .et-l .custom-section.solution-form.contact .custom-form {
  padding-left: var(--space-30);
  padding-right: var(--space-30);
}
.et-db .et-l .custom-section.solution-form.contact .description .text p {
  color: var(--color-text-secondary);
}
.et-db .et-l .custom-section.solution-form.contact .description .text p + p {
  margin-top: var(--space-25);
}
.et-db .et-l .custom-section.solution-form.contact .description .text strong {
  font-weight: var(--font-weight-bold);
  color: var(--color-action-default);
}
.et-db .et-l .custom-section.solution-form.contact .description .text a {
  color: var(--color-text-secondary);
  text-decoration: none;
}
.et-db .et-l .custom-section.solution-form.contact .description .text a:hover {
  color: var(--color-action-default);
}

/* —— 6.26 Parceiros – intro (.about-partners) ——
   Figma 202:41754. Rows: .header-about-partner (.title), .image, .description
   (.subtitle | .text). Gaps 64 → 65; imagem 1280×480 radius 16 → 15; texto
   448/736 com gap 96 → 95. Cores do projeto (heading / secondary / primary). */
.et-db .et-l .custom-section.about-partners {
  --section-gutter: 0;
  padding: var(--space-80) 0;
}
.et-db .et-l .custom-section.about-partners .et_pb_module {
  margin: 0;
}
.et-db .et-l .custom-section.about-partners > .custom-content + .custom-content {
  margin-top: var(--space-65);
}
.et-db .et-l .custom-section.about-partners .image .et_pb_image {
  width: 100%;
}
.et-db .et-l .custom-section.about-partners .image .et_pb_image_wrap {
  display: block;
  width: 100%;
  aspect-ratio: 1280 / 480;
  border-radius: var(--border-radius-15);
  overflow: hidden;
}
.et-db .et-l .custom-section.about-partners .image .et_pb_image_wrap img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.et-db .et-l .custom-section.about-partners .description {
  display: grid;
  grid-template-columns: minmax(0, 448fr) minmax(0, 736fr);
  align-items: start;
  column-gap: var(--space-95);
  row-gap: var(--space-40);
}
.et-db .et-l .custom-section.about-partners .description > .et_pb_column {
  width: auto;
  max-width: none;
  flex: none;
  min-width: 0;
}
/* Subtítulo editorial: H2 bold (Figma), cor de heading do projeto */
.et-db .et-l .custom-section.about-partners .description .subtitle :is(h1, h2, h3, h4, h5, h6, p) {
  font-size: var(--font-size-h2);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-120);
  color: var(--color-text-heading);
}
.et-db .et-l .custom-section.about-partners .description .text,
.et-db .et-l .custom-section.about-partners .description .et_pb_text:not(.subtitle) {
  display: flex;
  flex-direction: column;
  gap: var(--space-25);
}
.et-db .et-l .custom-section.about-partners .description .text p,
.et-db .et-l .custom-section.about-partners .description .et_pb_text:not(.subtitle) p {
  margin: 0;
  color: var(--color-text-secondary);
}
.et-db .et-l .custom-section.about-partners .description .text strong,
.et-db .et-l .custom-section.about-partners .description .et_pb_text:not(.subtitle) strong {
  font-weight: var(--font-weight-bold);
  color: var(--color-text-primary);
}

/* —— 6.28 Grupos e eventos (.groups-events) ——
   Figma 217:29252. Rows: .cards (.title | .text) e .image.
   Gap 64 → 65; título AP/Home/Hero ExtraLight 72; foto 1280×480
   radius 32 → 30. Colunas 550 / 666 (gap 64), alinhadas ao centro. */
.et-db .et-l .custom-section.groups-events {
  --section-gutter: 0;
  padding: var(--space-80) 0;
  background-color: var(--color-background-surface);
}
.et-db .et-l .custom-section.groups-events .et_pb_module {
  margin: 0;
}
.et-db .et-l .custom-section.groups-events > .custom-content + .custom-content {
  margin-top: var(--space-65);
}
.et-db .et-l .custom-section.groups-events .cards {
  display: grid;
  grid-template-columns: minmax(0, 550fr) minmax(0, 666fr);
  align-items: center;
  column-gap: var(--space-65);
  row-gap: var(--space-40);
}
.et-db .et-l .custom-section.groups-events .cards > .et_pb_column {
  width: auto;
  max-width: none;
  flex: none;
  min-width: 0;
}
.et-db .et-l .custom-section.groups-events .cards .title :is(h1, h2, h3, h4, h5, h6) {
  font-size: var(--font-size-hero);
  line-height: var(--line-height-110);
  letter-spacing: var(--letter-spacing-hero);
}
.et-db .et-l .custom-section.groups-events .cards .text {
  display: flex;
  flex-direction: column;
  gap: var(--space-25);
}
.et-db .et-l .custom-section.groups-events .cards .text p {
  margin: 0;
  color: var(--color-text-secondary);
}
.et-db .et-l .custom-section.groups-events .image .et_pb_image {
  width: 100%;
}
.et-db .et-l .custom-section.groups-events .image .et_pb_image_wrap {
  display: block;
  width: 100%;
  aspect-ratio: 1280 / 480;
  overflow: hidden;
  border-radius: var(--border-radius-30);
}
.et-db .et-l .custom-section.groups-events .image .et_pb_image_wrap img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* —— 6.28b Variante vídeo (.groups-events.model02) ——
   Figma 232:34159. Mesmo layout; título AP/Home/Section 48 (cor do .title);
   row .video 1280×480, radius 32 → 30. */
.et-db .et-l .custom-section.groups-events.model02 .cards {
  align-items: start;
}
.et-db .et-l .custom-section.groups-events.model02 .cards .title :is(h1, h2, h3, h4, h5, h6) {
  font-size: var(--font-size-section);
  font-weight: var(--font-weight-medium);
  line-height: var(--line-height-110);
  letter-spacing: var(--letter-spacing-section);
}
.et-db .et-l .custom-section.groups-events .video .et_pb_video {
  width: 100%;
}
.et-db .et-l .custom-section.groups-events .video .et_pb_video_box {
  position: relative;
  width: 100%;
  height: auto;
  aspect-ratio: 1280 / 550;
  padding: 0;
  overflow: hidden;
  border-radius: var(--border-radius-30);
}
.et-db .et-l .custom-section.groups-events .video .et_pb_video_box video {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  /* Recorte a partir da base: a bandeira de Portugal fica no quadro */
  object-position: center bottom;
}

/* —— 6.30 Sobre Manuel (.about-manuel) ——
   Figma 232:34177. Row .cards: texto (título + bio + .contact) | retrato + .custom-social.
   Gap 96 → 95; retrato 430×650 radius 16 → 15; ícones 50px (SVGs do tema). */
.et-db .et-l .custom-section.about-manuel {
  --section-gutter: 0;
  padding: var(--space-80) 0;
  background-color: var(--color-background-surface);
}
.et-db .et-l .custom-section.about-manuel .et_pb_module {
  margin: 0;
}
.et-db .et-l .custom-section.about-manuel .cards {
  display: grid;
  grid-template-columns: minmax(0, 754fr) minmax(0, 430fr);
  align-items: center;
  column-gap: var(--space-95);
  row-gap: var(--space-40);
}
.et-db .et-l .custom-section.about-manuel .cards > .et_pb_column {
  display: flex;
  flex-direction: column;
  width: auto;
  max-width: none;
  flex: none;
  min-width: 0;
}
.et-db .et-l .custom-section.about-manuel .cards > .et_pb_column:first-child {
  align-items: flex-start;
  gap: var(--space-25);
}
.et-db .et-l .custom-section.about-manuel .cards > .et_pb_column:last-child {
  align-items: center;
  gap: var(--space-20);
}
.et-db .et-l .custom-section.about-manuel .cards .et_pb_text:not(.title):not(.contact) {
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-150);
  color: var(--color-text-secondary);
}
.et-db .et-l .custom-section.about-manuel .cards .et_pb_text:not(.title):not(.contact) p {
  margin: 0;
  padding: 0;
}
.et-db .et-l .custom-section.about-manuel .contact {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-10);
}
.et-db .et-l .custom-section.about-manuel .contact p {
  margin: 0;
  padding: 0;
}
.et-db .et-l .custom-section.about-manuel .contact a {
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-150);
  color: var(--color-text-link);
  text-decoration: none;
  transition: color var(--transition-default);
}
.et-db .et-l .custom-section.about-manuel .contact a:hover {
  color: var(--color-action-hover);
}
.et-db .et-l .custom-section.about-manuel .et_pb_image {
  width: 100%;
}
.et-db .et-l .custom-section.about-manuel .et_pb_image_wrap {
  display: block;
  width: 100%;
  aspect-ratio: 430 / 650;
  overflow: hidden;
  border-radius: var(--border-radius-15);
}
.et-db .et-l .custom-section.about-manuel .et_pb_image_wrap img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.et-db .et-l .custom-section.about-manuel .custom-social {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: var(--space-10);
  margin: 0;
  padding: 0;
  list-style: none;
}
.et-db .et-l .custom-section.about-manuel .custom-social .et_pb_social_media_follow_network {
  display: block;
  width: auto;
  margin: 0;
  padding: 0;
}
.et-db .et-l .custom-section.about-manuel .custom-social .et_pb_social_media_follow_network a.icon {
  display: block;
  width: 50px;
  height: 50px;
  margin: 0;
  padding: 0;
  background-color: transparent !important;
  background-position: center;
  background-size: contain;
  background-repeat: no-repeat;
  border: 0;
  border-radius: var(--border-radius-pill);
  transition: transform var(--transition-default), opacity var(--transition-default);
}
.et-db .et-l .custom-section.about-manuel .custom-social .et_pb_social_media_follow_network a.icon::before {
  display: none;
}
.et-db .et-l .custom-section.about-manuel .custom-social .et_pb_social_media_follow_network a.icon:hover {
  opacity: 0.85;
  transform: translate3d(0, calc(-1 * var(--space-5) / 2), 0);
}
.et-db .et-l .custom-section.about-manuel .custom-social .et-social-linkedin a.icon {
  background-image: url("../assets/icons/social-linkedin.svg");
}
.et-db .et-l .custom-section.about-manuel .custom-social .et-social-instagram a.icon {
  background-image: url("../assets/icons/social-instagram.svg");
}
.et-db .et-l .custom-section.about-manuel .custom-social .et_pb_social_media_follow_network_name {
  display: none;
}

/* —— 6.32 Frase em destaque (.feature-phrase) ——
   Figma 237:36632. Faixa verde (inverse); texto branco AP/Heading/H2 36/44,
   Regular + <strong> Bold; máx. 1000px, centralizado. Respiro 80. */
.et-db .et-l .custom-section.feature-phrase {
  --section-gutter: 0;
  padding: var(--space-80) 0;
  background-color: var(--color-background-inverse);
}
.et-db .et-l .custom-section.feature-phrase .et_pb_module {
  margin: 0;
}
.et-db .et-l .custom-section.feature-phrase .et_pb_column {
  align-items: center;
  text-align: center;
}
.et-db .et-l .custom-section.feature-phrase :is(h1, h2, h3, h4, h5, h6, p) {
  margin: 0 auto;
  padding: 0;
  max-width: 1000px;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-h2);
  font-weight: var(--font-weight-light);
  line-height: var(--line-height-120);
  letter-spacing: 0;
  color: var(--color-text-inverse);
  text-align: center;
  text-wrap: balance;
}
.et-db .et-l .custom-section.feature-phrase strong {
  font-weight: var(--font-weight-bold);
}

/* —— 6.34 Hero só título (.hero-only-text) ——
   Figma 247:1580 (Título da página, ex.: Política de Privacidade). Fundo areia,
   padding 80. Topo extra libera o header flutuante. Título do Post Title
   (h1.entry-title): AP/Approved/Display 90 Bold, tracking -1.6, cor primary. */
.et-db .et-l .custom-section.hero-only-text {
  --section-gutter: 0;
  padding: calc((var(--space-100) * 1.5) + var(--space-50)) 0 var(--space-80);
  background-color: var(--color-background-page);
}
.et-db .et-l .custom-section.hero-only-text .et_pb_module {
  margin: 0;
}
.et-db .et-l .custom-section.hero-only-text .et_pb_post_title,
.et-db .et-l .custom-section.hero-only-text .et_pb_title_container {
  margin: 0;
  padding: 0;
  background-color: transparent;
}
.et-db .et-l .custom-section.hero-only-text .title :is(h1, h2, h3, h4, h5, h6, .entry-title) {
  text-align: left;
}

/* —— 6.36 Conteúdo com índice (.ancora) ——
   Figma 247:1583 (Conteúdo da política). Row 8/24 + 16/24: .eyebrow + .ancora à
   esquerda (sticky) e o documento à direita. Títulos de seção em .subtitle (H2);
   o JS monta as âncoras a partir desses H2. Corpo no .text do site (3.5, 16/24),
   não no Body/Large do Figma. Fundo branco, respiro 80, borda cinza no rodapé. */
.et-db .et-l .custom-section:has(.ancora) {
  --section-gutter: 0;
  padding: var(--space-80) 0;
  background-color: var(--color-background-surface);
  border-bottom: var(--border-width-1) solid var(--color-border-subtle);
  overflow: visible;
}
.et-db .et-l .custom-section:has(.ancora) .et_pb_module {
  margin: 0;
}
.et-db .et-l .custom-section:has(.ancora) .custom-content:has(.ancora) {
  --row-gutter-horizontal: var(--space-80);
  align-items: start;
  overflow: visible;
}

/* —— 6.36a Índice (coluna com .ancora) —— */
.et-db .et-l .custom-section:has(.ancora) .et_pb_column:has(.ancora) {
  position: sticky;
  top: var(--ap-sticky-top, calc(var(--space-100) + var(--space-25)));
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-25);
  overflow: visible;
}
.et-db .et-l .custom-section:has(.ancora) .eyebrow,
.et-db .et-l .custom-section:has(.ancora) .eyebrow :is(h1, h2, h3, h4, h5, h6, p) {
  color: var(--color-text-primary);
}
.et-db .et-l .custom-section:has(.ancora) .ancora .et_pb_text_inner {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-25);
}
.et-db .et-l .custom-section:has(.ancora) .ancora p {
  margin: 0;
  padding: 0;
}
.et-db .et-l .custom-section:has(.ancora) .ancora a {
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-150);
  color: var(--color-text-secondary);
  text-decoration: none;
  transition: color var(--transition-default);
}
.et-db .et-l .custom-section:has(.ancora) .ancora a:hover {
  color: var(--color-action-hover);
}
.et-db .et-l .custom-section:has(.ancora) .ancora a.is-active {
  color: var(--color-text-primary);
}

/* —— 6.36b Documento (coluna dos títulos) —— */
.et-db .et-l .custom-section:has(.ancora) .et_pb_column:not(:has(.ancora)) {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--space-25);
  min-width: 0;
}
.et-db .et-l .custom-section:has(.ancora) .et_pb_column:not(:has(.ancora)) .text + .subtitle {
  margin-top: var(--space-25);
}
.et-db .et-l .custom-section:has(.ancora) .subtitle :is(h1, h2, h3, h4, h5, h6) {
  scroll-margin-top: var(--ap-sticky-top, calc(var(--space-100) + var(--space-40)));
  font-size: var(--font-size-h2);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-120);
}
.et-db .et-l .custom-section:has(.ancora) .et_pb_column:not(:has(.ancora)) .text {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--space-25);
}
.et-db .et-l .custom-section:has(.ancora) .et_pb_column:not(:has(.ancora)) .text :is(p, li) {
  margin: 0;
}
.et-db .et-l .custom-section:has(.ancora) .et_pb_column:not(:has(.ancora)) .text :is(ul, ol) {
  margin: 0;
  list-style: none;
}
.et-db .et-l .custom-section:has(.ancora) .et_pb_column:not(:has(.ancora)) .text :is(h3, h4) {
  margin: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-h3);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-130);
  color: var(--color-text-primary);
}
.et-db .et-l .custom-section:has(.ancora) .et_pb_column:not(:has(.ancora)) .text :is(p, ul, ol) + :is(h3, h4) {
  margin-top: var(--space-15);
}
.et-db .et-l .custom-section:has(.ancora) .et_pb_column:not(:has(.ancora)) .text a {
  color: var(--color-text-link);
}

/* —— 6.38 Tarifário (.tarifario) ——
   Figma 250:1765. Row .items-list-solutions: cabeçalho verde (.header +
   .header-table) e linhas brancas (.item-card-tarifario: .service | .unit |
   .price). Colunas ~680 / 232 / 272, gap 24 → 25, radius 16 → 15. Nota em
   .description .text. Mobile: cabeçalho some e cada linha vira card empilhado. */
.et-db .et-l .custom-section.tarifario {
  --section-gutter: 0;
  padding: var(--space-80) 0;
  background-color: var(--color-background-page);
}
.et-db .et-l .custom-section.tarifario .et_pb_module {
  margin: 0;
}
.et-db .et-l .custom-section.tarifario .items-list-solutions > .et_pb_column {
  display: flex;
  flex-direction: column;
  gap: var(--space-10);
}
.et-db .et-l .custom-section.tarifario .items-list-solutions .et_pb_row_nested {
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 0;
  --row-gutter-horizontal: 0;
}
.et-db .et-l .custom-section.tarifario .header > .et_pb_column,
.et-db .et-l .custom-section.tarifario .item-card-tarifario > .et_pb_column {
  display: grid;
  grid-template-columns: minmax(0, 680fr) minmax(0, 232fr) minmax(0, 272fr);
  align-items: center;
  column-gap: var(--space-25);
  width: 100%;
  min-width: 0;
  border-radius: var(--border-radius-15);
}
.et-db .et-l .custom-section.tarifario .header-table,
.et-db .et-l .custom-section.tarifario .service,
.et-db .et-l .custom-section.tarifario .unit,
.et-db .et-l .custom-section.tarifario .price {
  width: 100%;
  max-width: none;
  min-width: 0;
}

/* —— 6.38a Cabeçalho —— */
.et-db .et-l .custom-section.tarifario .header > .et_pb_column {
  padding: var(--space-25);
  background-color: var(--color-background-inverse);
}
.et-db .et-l .custom-section.tarifario .header-table :is(h1, h2, h3, h4, h5, h6, p) {
  margin: 0;
  padding: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-eyebrow);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-130);
  letter-spacing: var(--letter-spacing-eyebrow);
  text-transform: uppercase;
  color: var(--color-text-inverse);
}

/* —— 6.38b Linha —— */
.et-db .et-l .custom-section.tarifario .item-card-tarifario > .et_pb_column {
  padding: var(--space-30) var(--space-25);
  background-color: var(--color-background-surface);
}
.et-db .et-l .custom-section.tarifario .service .et_pb_text_inner {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-10);
}
.et-db .et-l .custom-section.tarifario .service :is(h1, h2, h3, h4, h5, h6) {
  margin: 0;
  padding: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-h3);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-130);
  color: var(--color-text-primary);
}
.et-db .et-l .custom-section.tarifario .service p {
  margin: 0;
  padding: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-150);
  color: var(--color-text-secondary);
}
.et-db .et-l .custom-section.tarifario .service p > strong:last-child:has(br) {
  display: none;
}
.et-db .et-l .custom-section.tarifario .unit,
.et-db .et-l .custom-section.tarifario .unit p {
  margin: 0;
  padding: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-150);
  color: var(--color-text-secondary);
}
.et-db .et-l .custom-section.tarifario .price,
.et-db .et-l .custom-section.tarifario .price :is(h1, h2, h3, h4, h5, h6, p) {
  margin: 0;
  padding: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-h3);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-130);
  color: var(--color-text-primary);
}

/* —— 6.38c Nota —— */
.et-db .et-l .custom-section.tarifario .description {
  margin-top: var(--space-50);
}
.et-db .et-l .custom-section.tarifario .description .text :is(h3, h4) {
  margin: 0 0 var(--space-15);
  padding: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-h3);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-130);
  color: var(--color-text-primary);
}
.et-db .et-l .custom-section.tarifario .description .text p {
  margin: 0;
}

/* —— 6.40 Acesso com senha (.password-gate) ——
   Figma 250:1656. Substitui o formulário padrão do Divi (the_password_form).
   Título 90 Bold centralizado, texto 20/32, card branco 560 (radius 16 → 15,
   padding 40). Campo e botão reutilizam 3.14 / 3.1. Topo extra libera o header.
   A 404 (6.42) reaproveita título, texto e o botão. */
.et-db .et-l .custom-section.password-gate,
.et-db .et-l .custom-section.error-404 {
  --section-gutter: 0;
  padding: calc((var(--space-100) * 1.5) + var(--space-50)) 0 var(--space-95);
  background-color: var(--color-background-page);
}
.et-db .et-l .custom-section.password-gate .custom-content,
.et-db .et-l .custom-section.error-404 .custom-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-40);
}
.et-db .et-l .custom-section.password-gate .password-gate__title,
.et-db .et-l .custom-section.error-404 .error-404__title {
  margin: 0;
  padding: 0;
  max-width: 1000px;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-hero-display);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-100);
  letter-spacing: var(--letter-spacing-hero);
  color: var(--color-text-primary);
  text-align: center;
  text-wrap: balance;
}
.et-db .et-l .custom-section.password-gate .password-gate__lead,
.et-db .et-l .custom-section.error-404 .error-404__lead {
  margin: 0;
  padding: 0;
  max-width: 760px;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-body-large);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-160);
  color: var(--color-text-secondary);
  text-align: center;
}
.et-db .et-l .custom-section.password-gate .password-gate__card {
  width: 100%;
  max-width: 560px;
  padding: var(--space-40);
  overflow: hidden;
  text-align: left;
  background-color: var(--color-background-surface);
  border-radius: var(--border-radius-15);
}
.et-db .et-l .custom-section.password-gate .custom-form {
  width: 100%;
  align-items: flex-start;
}
.et-db .et-l .custom-section.password-gate .form-field {
  width: 100%;
}
.et-db .et-l .custom-section.password-gate .custom-button,
.et-db .et-l .custom-section.error-404 .custom-button {
  cursor: pointer;
}
.et-db .et-l .custom-section.password-gate .password-gate__hint {
  margin: 0;
  padding: 0;
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-regular);
  line-height: var(--line-height-150);
  color: var(--color-text-secondary);
}
.et-db .et-l .custom-section.password-gate .password-gate__mail {
  font-family: var(--font-family-raleway);
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-150);
  color: var(--color-text-link);
  text-decoration: none;
}
.et-db .et-l .custom-section.password-gate .password-gate__mail:hover {
  color: var(--color-action-hover);
}

/* —— 6.42 Página 404 (.error-404) ——
   Template 404.php do child. Título + texto + botão para o início.
   Sem card, sidebar ou busca do Divi. O #main-content fica areia. */
body.error404 #main-content {
  background-color: var(--color-background-page);
}
body.error404 #sidebar {
  display: none;
}

.et-db .et-l .custom-section.error-404 .error-404__intro {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-20);
  width: 100%;
}
.et-db .et-l .custom-section.error-404 .eyebrow {
  text-align: center;
}

/* ==========================================================================
   8. ANIMAÇÕES DE ENTRADA (scroll reveal – referência jobyaviation.com)
   Só no front-end: as classes .ap-reveal* são colocadas pelo js/custom.js
   (nunca no Visual Builder) e o estado escondido só vale com html.ap-js.
   Automático em todos os módulos das .custom-section (menos o header).
   Para desligar num módulo, row ou seção: classe .no-reveal no Divi.
   ========================================================================== */

/* —— 8.1 Bloco: fade + subida —— */
html.ap-js .ap-reveal {
  opacity: 0;
  transform: translate3d(0, var(--space-40), 0);
  transition: opacity var(--duration-reveal) var(--ease-expo-out), transform var(--duration-reveal) var(--ease-expo-out);
  transition-delay: var(--ap-reveal-delay, 0s);
}
html.ap-js .ap-reveal.is-revealed {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

/* —— 8.2 Título: palavras saem de baixo de uma máscara ——
   O respiro vertical (em) evita cortar acentos e descendentes dentro da máscara. */
html.ap-js .ap-reveal.ap-reveal--words {
  opacity: 1;
  transform: none;
}
html.ap-js .ap-reveal--words .ap-word {
  display: inline-block;
  overflow: hidden;
  padding: 0.12em 0;
  margin: -0.12em 0;
  vertical-align: top;
}
html.ap-js .ap-reveal--words .ap-word__inner {
  display: inline-block;
  transform: translate3d(0, 115%, 0);
  transition: transform var(--duration-reveal-words) var(--ease-expo-out);
  transition-delay: calc(var(--ap-reveal-delay, 0s) + (var(--ap-word-index, 0) * var(--stagger-words)));
}
html.ap-js .ap-reveal--words.is-revealed .ap-word__inner {
  transform: translate3d(0, 0, 0);
}

/* —— 8.3 Imagem: recorte abrindo + zoom saindo —— */
html.ap-js .ap-reveal.ap-reveal--image {
  opacity: 1;
  transform: none;
  overflow: hidden;
  clip-path: inset(15% 0 15% 0);
  transition: clip-path var(--duration-reveal-image) var(--ease-expo-out);
  transition-delay: var(--ap-reveal-delay, 0s);
}
html.ap-js .ap-reveal--image img {
  transform: scale(1.15);
  transition: transform var(--duration-reveal-image) var(--ease-expo-out);
  transition-delay: var(--ap-reveal-delay, 0s);
}
html.ap-js .ap-reveal.ap-reveal--image.is-revealed {
  clip-path: inset(0 0 0 0);
}
html.ap-js .ap-reveal--image.is-revealed img {
  transform: scale(1);
}

/* —— 8.4 Movimento reduzido: tudo aparece direto —— */
@media (prefers-reduced-motion: reduce) {
  html.ap-js .ap-reveal,
  html.ap-js .ap-reveal--words .ap-word__inner,
  html.ap-js .ap-reveal--image img {
    opacity: 1;
    transform: none;
    clip-path: none;
    transition: none;
  }
  html.ap-js .et-db .et-l .custom-section .custom-hero .et-pb-background-video,
  html.ap-js .et-db .et-l .custom-section .custom-hero .et_pb_fullwidth_header_scroll::before {
    transform: none;
    animation: none;
  }
}

/* —— 8.5 Subtítulo: palavras acendem com a rolagem (.subtitle → .ap-fill) ——
   O js/custom.js marca com .is-filled as palavras já alcançadas pela rolagem.
   Com movimento reduzido o JS não aplica .ap-fill nem .ap-grow (8.6). */
html.ap-js .ap-fill .ap-word {
  opacity: 0.2;
  transition: opacity var(--duration-scrub) ease;
}
html.ap-js .ap-fill .ap-word.is-filled {
  opacity: 1;
}

/* —— 8.6 Título: cresce ao entrar na tela (.title → .ap-grow) ——
   --ap-grow vai de 0 (título na base da tela) a 1; escala de 0.6 a 1 a partir da esquerda.
   Começa bem menor porque as palavras só aparecem quando o título já subiu um pouco. */
html.ap-js .ap-grow {
  --ap-grow-from: 0.6;
  scale: calc(var(--ap-grow-from) + ((1 - var(--ap-grow-from)) * var(--ap-grow, 1)));
  transform-origin: left center;
  transition: scale var(--duration-scrub) ease-out;
}
/* Título centralizado no editor do Divi (style="text-align: center") cresce a partir do centro */
html.ap-js .ap-grow[style*="text-align: center"] {
  transform-origin: center;
}

/* ==========================================================================
   7. RESPONSIVO
   Breakpoints do Figma: tablet ≤ 980px, mobile ≤ 767px.
   Tudo o que depende da largura da tela fica aqui (base, componentes, header,
   footer e seções). Galerias presas no scroll (≥ 981px) e movimento reduzido
   continuam junto do bloco de desktop / animação.
   ========================================================================== */

/* —— 7.1 Tablet ≤ 980px —— */
@media (max-width: 980px) {
  /* —— 3.7 Componentes – tablet e mobile —— */
  .et-db .et-l .custom-section .title :is(h1, h2, h3, h4, h5, h6),
  .et-db .et-l .custom-section .custom-hero .et_pb_module_header {
    font-size: var(--font-size-hero);
  }
  /* Parceiro: foto no topo, logo + texto abaixo, mesma margem esquerda */
  .et-db .et-l .custom-section .step.model02 .et_pb_blurb_content {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: auto auto auto;
    align-items: start;
    justify-items: start;
    column-gap: 0;
    row-gap: var(--space-25);
  }
  .et-db .et-l .custom-section .step.model02 .et_pb_blurb_content::before {
    grid-column: 1;
    grid-row: 1;
    align-self: start;
    justify-self: stretch;
    width: 100%;
    aspect-ratio: 4 / 3;
  }
  .et-db .et-l .custom-section .step.model02 .et_pb_main_blurb_image {
    grid-column: 1;
    grid-row: 2;
    align-self: start;
    justify-self: start;
    margin-bottom: 0;
  }
  .et-db .et-l .custom-section .step.model02 .et_pb_blurb_container {
    grid-column: 1;
    grid-row: 3;
    width: 100%;
  }

  /* —— 3.11 Hero – tablet e mobile —— */
  .et-db .et-l .custom-section .custom-hero .et_pb_fullwidth_header_container {
    width: calc(100% - (2 * var(--space-25)));
  }
  /* Legenda centralizada; no tablet fica logo acima do mouse (24px, a space-40 da base) */
  .et-db .et-l .custom-section .custom-hero.legend .et_pb_header_content_wrapper blockquote {
    right: 0;
    bottom: calc(var(--space-40) + 24px + var(--space-20));
    left: 0;
    margin: 0 auto;
    text-align: center;
  }

  /* —— 4.10 Menu mobile – base (≤ 980px) ——
   Barra com logo + hamburger; a lista fica no fluxo, dentro do card.
   No builder, abrir/fechar segue o padrão do Divi (slideDown). */
  .et-db .et-l .custom-section.header .custom-content {
    width: calc(100% - (2 * var(--space-20)));
    padding-top: var(--space-15);
  }
  .et-db .et-l .custom-section.header .et_pb_column {
    position: relative;
    display: block;
    width: 100%;
    min-height: 64px;
    padding: 0 var(--space-20);
    gap: 0;
    overflow: hidden;
    border-radius: var(--border-radius-20);
  }
  .et-db .et-l .custom-section.header .logo {
    position: absolute;
    left: var(--space-20);
    top: 0;
    z-index: 2;
    display: flex;
    align-items: center;
    min-height: 64px;
  }
  .et-db .et-l .custom-section.header .logo img {
    width: 140px;
    max-height: 42px;
  }
  .et-db .et-l .custom-section.header .custom-menu {
    position: static;
    width: 100%;
    min-height: 64px;
  }
  .et-db .et-l .custom-section.header .et_pb_menu_inner_container,
  .et-db .et-l .custom-section.header .et_pb_menu__wrap {
    display: block;
    width: 100%;
  }
  .et-db .et-l .custom-section.header .et_pb_menu__menu {
    display: none;
  }
  .et-db .et-l .custom-section.header .et_mobile_nav_menu {
    display: block;
    width: 100%;
    margin: 0;
    padding-top: 64px;
    box-sizing: border-box;
  }
  .et-db .et-l .custom-section.header .mobile_nav {
    display: block;
    width: 100%;
  }
  /* Botão: hamburger (::before) e fechar (::after) */
  .et-db .et-l .custom-section.header .mobile_menu_bar {
    position: absolute;
    top: 0;
    right: var(--space-10);
    z-index: 2;
    display: block;
    width: 44px;
    height: 64px;
    margin: 0;
    padding: 0;
    background: transparent;
    color: transparent;
    font-size: 0;
    cursor: pointer;
  }
  .et-db .et-l .custom-section.header .mobile_menu_bar::before,
  .et-db .et-l .custom-section.header .mobile_menu_bar::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    display: block;
    width: 24px;
    height: 24px;
    margin: -12px 0 0 -12px;
    font-size: 0;
    color: transparent;
    background-color: var(--color-background-inverse);
    box-shadow: none;
  }
  .et-db .et-l .custom-section.header .mobile_menu_bar::before {
    mask: url("../assets/icons/icon-hamburger-menu.svg") center / contain no-repeat;
    -webkit-mask: url("../assets/icons/icon-hamburger-menu.svg") center / contain no-repeat;
    opacity: 1;
  }
  .et-db .et-l .custom-section.header .mobile_menu_bar::after {
    mask: url("../assets/icons/icon-close.svg") center / contain no-repeat;
    -webkit-mask: url("../assets/icons/icon-close.svg") center / contain no-repeat;
    opacity: 0;
  }
  .et-db .et-l .custom-section.header .mobile_nav.opened .mobile_menu_bar::before {
    opacity: 0;
  }
  .et-db .et-l .custom-section.header .mobile_nav.opened .mobile_menu_bar::after {
    opacity: 1;
  }
  /* Lista: no fluxo do card, sem o visual padrão do Divi */
  .et-db .et-l .custom-section.header .et_mobile_menu {
    position: static;
    float: none;
    width: 100%;
    max-width: none;
    margin: 0;
    padding: 0;
    list-style: none;
    background: transparent;
    border: 0;
    box-shadow: none;
  }
  /* Respiro no fim da lista (entra no scrollHeight medido pelo JS) */
  .et-db .et-l .custom-section.header .et_mobile_menu::after {
    content: "";
    display: block;
    height: var(--space-15);
  }
  .et-db .et-l .custom-section.header .et_mobile_menu li {
    margin: 0;
    padding: 0;
    border: 0;
  }
  .et-db .et-l .custom-section.header .et_mobile_menu li > a {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-10);
    padding: var(--space-15) 0;
    border-bottom: var(--border-width-1) solid var(--color-border-subtle);
    font-family: var(--font-family-raleway);
    font-size: var(--font-size-base);
    font-weight: var(--font-weight-regular);
    line-height: var(--line-height-150);
    color: var(--color-text-primary);
    text-decoration: none;
    background-color: transparent;
    opacity: 1;
  }
  .et-db .et-l .custom-section.header .et_mobile_menu .menu-item-has-children > a {
    font-weight: var(--font-weight-regular);
    background-color: transparent;
  }
  .et-db .et-l .custom-section.header .et_mobile_menu li.current-menu-item > a,
  .et-db .et-l .custom-section.header .et_mobile_menu li.current_page_item > a,
  .et-db .et-l .custom-section.header .et_mobile_menu li.current-menu-ancestor > a,
  .et-db .et-l .custom-section.header .et_mobile_menu li > a:hover {
    color: var(--color-text-link);
  }
  .et-db .et-l .custom-section.header .et_mobile_menu > li:last-child > a {
    border-bottom: 0;
  }
  .et-db .et-l .custom-section.header .et_mobile_menu li > ul.sub-menu {
    margin: 0;
    padding: 0 0 0 var(--space-15);
    list-style: none;
    background: transparent;
    border: 0;
    box-shadow: none;
  }
  .et-db .et-l .custom-section.header .et_mobile_menu li li > a {
    padding: var(--space-10) 0;
    border-bottom: 0;
    font-size: var(--font-size-small);
    color: var(--color-text-secondary);
  }
  .et-db .et-l .custom-section.header .et_mobile_menu li li:last-child > a {
    padding-bottom: var(--space-15);
  }

  /* —— 4.11 Menu mobile – front (≤ 980px) ——
   Abertura controlada pelo js/custom.js (o slideDown do Divi é bloqueado).
   A altura (max-height) é definida pelo JS; o CSS só anima. */
  html.ap-js .et-db .et-l .custom-section.header .mobile_menu_bar::before,
  html.ap-js .et-db .et-l .custom-section.header .mobile_menu_bar::after {
    transition: opacity var(--transition-default), transform var(--duration-dropdown) var(--ease-expo-out);
  }
  html.ap-js .et-db .et-l .custom-section.header .mobile_menu_bar::before {
    transform: rotate(0deg) scale(1);
  }
  html.ap-js .et-db .et-l .custom-section.header .mobile_menu_bar::after {
    transform: rotate(-90deg) scale(0.6);
  }
  html.ap-js .et-db .et-l .custom-section.header .mobile_nav.opened .mobile_menu_bar::before {
    transform: rotate(90deg) scale(0.6);
  }
  html.ap-js .et-db .et-l .custom-section.header .mobile_nav.opened .mobile_menu_bar::after {
    transform: rotate(0deg) scale(1);
  }
  /* Lista: sempre renderizada, fechada com max-height 0 */
  html.ap-js .et-db .et-l .custom-section.header .et_mobile_menu {
    display: block;
    height: auto;
    max-height: 0;
    overflow: hidden;
    overscroll-behavior: contain;
    visibility: hidden;
    transition: max-height var(--duration-nav-expand) var(--ease-expo-out), visibility 0s linear var(--duration-nav-expand);
  }
  html.ap-js .et-db .et-l .custom-section.header .mobile_nav.opened .et_mobile_menu {
    visibility: visible;
    transition: max-height var(--duration-nav-expand) var(--ease-expo-out), visibility 0s;
  }
  html.ap-js .et-db .et-l .custom-section.header .mobile_nav.opened.is-expanded .et_mobile_menu {
    overflow-y: auto;
  }
  /* Itens: entram em cascata ao abrir; ao fechar, somem juntos e rápido */
  html.ap-js .et-db .et-l .custom-section.header .et_mobile_menu > li {
    opacity: 0;
    transform: translate3d(0, var(--space-10), 0);
    transition: opacity var(--transition-fast), transform var(--duration-dropdown) var(--ease-expo-out);
  }
  html.ap-js .et-db .et-l .custom-section.header .mobile_nav.opened .et_mobile_menu > li {
    opacity: 1;
    transform: translate3d(0, 0, 0);
    transition: opacity var(--duration-dropdown) var(--ease-expo-out), transform var(--duration-dropdown) var(--ease-expo-out);
  }
  html.ap-js .et-db .et-l .custom-section.header .mobile_nav.opened .et_mobile_menu > li:nth-child(1) { transition-delay: 0.08s; }
  html.ap-js .et-db .et-l .custom-section.header .mobile_nav.opened .et_mobile_menu > li:nth-child(2) { transition-delay: 0.12s; }
  html.ap-js .et-db .et-l .custom-section.header .mobile_nav.opened .et_mobile_menu > li:nth-child(3) { transition-delay: 0.16s; }
  html.ap-js .et-db .et-l .custom-section.header .mobile_nav.opened .et_mobile_menu > li:nth-child(4) { transition-delay: 0.2s; }
  html.ap-js .et-db .et-l .custom-section.header .mobile_nav.opened .et_mobile_menu > li:nth-child(5) { transition-delay: 0.24s; }
  html.ap-js .et-db .et-l .custom-section.header .mobile_nav.opened .et_mobile_menu > li:nth-child(6) { transition-delay: 0.28s; }
  html.ap-js .et-db .et-l .custom-section.header .mobile_nav.opened .et_mobile_menu > li:nth-child(7) { transition-delay: 0.32s; }
  html.ap-js .et-db .et-l .custom-section.header .mobile_nav.opened .et_mobile_menu > li:nth-child(8) { transition-delay: 0.36s; }

  /* —— 4.12 Submenu mobile – front (acordeão) ——
   Duas ações: o link do item pai navega; a seta (.ap-sub-toggle, criada no JS) abre/fecha.
   No builder os submenus ficam todos abertos (padrão do Divi). */
  /* Linha do item pai: link + seta lado a lado; o submenu quebra para baixo */
  html.ap-js .et-db .et-l .custom-section.header .et_mobile_menu li.menu-item-has-children {
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
  }
  html.ap-js .et-db .et-l .custom-section.header .et_mobile_menu li.menu-item-has-children > a {
    flex: 1 1 0;
    min-width: 0;
  }
  html.ap-js .et-db .et-l .custom-section.header .et_mobile_menu li.menu-item-has-children > ul.sub-menu {
    flex: 0 0 100%;
  }
  /* Botão da seta: área de toque de 44px, mesma borda inferior do link */
  html.ap-js .et-db .et-l .custom-section.header .et_mobile_menu .ap-sub-toggle {
    position: relative;
    flex: 0 0 44px;
    width: 44px;
    margin: 0;
    padding: 0;
    color: var(--color-text-primary);
    background: transparent;
    border: 0;
    border-bottom: var(--border-width-1) solid var(--color-border-subtle);
    border-radius: 0;
    cursor: pointer;
    transition: color var(--transition-default);
  }
  html.ap-js .et-db .et-l .custom-section.header .et_mobile_menu .ap-sub-toggle::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: 12px;
    height: 12px;
    margin: -6px 0 0 -6px;
    background-color: currentColor;
    mask: url("../assets/icons/icon-arrow-down.svg") center / contain no-repeat;
    -webkit-mask: url("../assets/icons/icon-arrow-down.svg") center / contain no-repeat;
    transition: transform var(--duration-dropdown) var(--ease-expo-out);
  }
  html.ap-js .et-db .et-l .custom-section.header .et_mobile_menu .ap-sub-toggle:hover,
  html.ap-js .et-db .et-l .custom-section.header .et_mobile_menu li.is-sub-open > .ap-sub-toggle {
    color: var(--color-text-link);
  }
  html.ap-js .et-db .et-l .custom-section.header .et_mobile_menu li.is-sub-open > .ap-sub-toggle::before {
    transform: rotate(180deg);
  }
  /* Bordas acompanham o link: some no último item e nos níveis internos */
  html.ap-js .et-db .et-l .custom-section.header .et_mobile_menu > li:last-child > .ap-sub-toggle,
  html.ap-js .et-db .et-l .custom-section.header .et_mobile_menu li li > .ap-sub-toggle {
    border-bottom: 0;
  }
  /* Fechado: max-height 0. O foco nos itens escondidos é bloqueado com o atributo inert (JS),
     já que o Divi força visibility: visible !important nos submenus mobile. */
  html.ap-js .et-db .et-l .custom-section.header .et_mobile_menu li > ul.sub-menu {
    position: static;
    display: block;
    width: 100%;
    max-height: 0;
    overflow: hidden;
    transition: max-height var(--duration-nav-expand) var(--ease-expo-out);
  }
  html.ap-js .et-db .et-l .custom-section.header .et_mobile_menu li li {
    opacity: 0;
    transform: translate3d(0, var(--space-5), 0);
    transition: opacity var(--transition-fast), transform var(--duration-dropdown) var(--ease-expo-out);
  }
  html.ap-js .et-db .et-l .custom-section.header .et_mobile_menu li.is-sub-open > ul.sub-menu > li {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
  html.ap-js .et-db .et-l .custom-section.header .et_mobile_menu li.is-sub-open > ul.sub-menu > li:nth-child(1) { transition-delay: 0.05s; }
  html.ap-js .et-db .et-l .custom-section.header .et_mobile_menu li.is-sub-open > ul.sub-menu > li:nth-child(2) { transition-delay: 0.09s; }
  html.ap-js .et-db .et-l .custom-section.header .et_mobile_menu li.is-sub-open > ul.sub-menu > li:nth-child(3) { transition-delay: 0.13s; }
  html.ap-js .et-db .et-l .custom-section.header .et_mobile_menu li.is-sub-open > ul.sub-menu > li:nth-child(4) { transition-delay: 0.17s; }
  html.ap-js .et-db .et-l .custom-section.header .et_mobile_menu li.is-sub-open > ul.sub-menu > li:nth-child(5) { transition-delay: 0.21s; }
  html.ap-js .et-db .et-l .custom-section.header .et_mobile_menu li.is-sub-open > ul.sub-menu > li:nth-child(6) { transition-delay: 0.25s; }
  html.ap-js .et-db .et-l .custom-section.header .et_mobile_menu li.is-sub-open > ul.sub-menu > li:nth-child(7) { transition-delay: 0.29s; }
  html.ap-js .et-db .et-l .custom-section.header .et_mobile_menu li.is-sub-open > ul.sub-menu > li:nth-child(8) { transition-delay: 0.33s; }

  /* —— 5.9 Tablet (≤ 980px): colunas em 2 × 2 (Divi) e menos respiro —— */
  .et-db .et-l .custom-section.footer {
    padding: var(--space-60) 0;
  }
  .et-db .et-l .custom-section.footer .about-footer {
    row-gap: var(--space-40);
  }
  .et-db .et-l .custom-section.footer .copy.custom-content {
    margin-top: var(--space-40);
    padding-top: var(--space-40);
  }

  /* —— 6.6 CTA com vídeo – tablet e mobile —— */
  .et-db .et-l .custom-section.cta-fullwidth {
    min-height: 600px;
  }
  .et-db .et-l .custom-section.cta-fullwidth:not(.model2) .title :is(h1, h2, h3, h4, h5, h6) {
    font-size: var(--font-size-h1);
  }
  html.ap-js .et-db .et-l .custom-section.cta-fullwidth.ap-cta {
    --ap-cta-inset-x: var(--space-25);
    --ap-cta-inset-y: var(--space-40);
    --ap-cta-radius: var(--border-radius-20);
  }

  /* —— 6.9 Etapas – tablet e mobile (lista) —— */
  .et-db .et-l .custom-section.steps-gallery .scroll-steps {
    margin-top: var(--space-50);
  }
  .et-db .et-l .custom-section.steps-gallery .scroll-steps .et_pb_column {
    gap: var(--space-50);
  }

  /* —— 6.11 Instagram – tablet e mobile ——
   Tablet: 2 por linha. Mobile: carrossel horizontal (como as soluções, 6.3) e o botão
   do perfil vai para baixo do texto, alinhado à esquerda. */
  .et-db .et-l .custom-section.instagram .description > .et_pb_column {
    gap: var(--space-40);
  }
  .et-db .et-l .custom-section.instagram .call-instagram {
    margin-top: var(--space-50);
  }
  .et-db .et-l .custom-section.instagram .custom-feed #sb_instagram #sbi_images {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  /* —— 6.15 Cards de serviços – tablet e mobile ——
   Tablet: 2 colunas com título de card menor. Mobile: 1 coluna. */
  .et-db .et-l .custom-section.solutions-cards .description > .et_pb_column {
    gap: var(--space-40);
  }
  .et-db .et-l .custom-section.solutions-cards .cards {
    margin-top: var(--space-50);
  }
  .et-db .et-l .custom-section.solutions-cards .cards > .et_pb_column {
    gap: var(--space-50) var(--space-25);
  }
  .et-db .et-l .custom-section.solutions-cards .solution .et_pb_module_header {
    font-size: var(--font-size-card);
  }

  /* —— 6.17 Card único de serviço – tablet e mobile ——
   Tablet: mantém as 2 colunas do Divi com gutter menor. Mobile: foto em cima, texto embaixo. */
  .et-db .et-l .custom-section.solutions-only-card .cards {
    --row-gutter-horizontal: var(--space-40);
    margin-top: var(--space-50);
  }
  .et-db .et-l .custom-section.solutions-only-card .cards .et_pb_column:has(.subtitle) {
    gap: var(--space-20);
  }
  .et-db .et-l .custom-section.solutions-only-card .cards .subtitle :is(h1, h2, h3, h4, h5, h6, p) {
    font-size: var(--font-size-card);
  }

  .et-db .et-l .custom-section.solutions-only-card:not(:has(.subtitle)) .cards {
    grid-template-columns: minmax(0, 1fr);
    margin-top: var(--space-50);
  }

  /* —— 6.19 Cards simples de serviço – tablet e mobile ——
   Tablet: 2 colunas com gutter menor. Mobile: um card embaixo do outro. */
  .et-db .et-l .custom-section.solutions-simple-cards .cards {
    --row-gutter-horizontal: var(--space-40);
  }

  /* —— 6.21 Hero de serviço – tablet e mobile ——
   Tablet: título 72. Mobile: título 36, botão sobe para baixo do texto. */
  .et-db .et-l .custom-section.hero-solution {
    padding: calc(var(--space-100) + var(--space-80)) 0 var(--space-80);
  }
  .et-db .et-l .custom-section.hero-solution .title :is(h1, h2, h3, h4, h5, h6, p) {
    font-size: var(--font-size-hero);
  }
  .et-db .et-l .custom-section.hero-solution .more-info .et_pb_column:has(.custom-button) {
    align-items: flex-start;
  }

  /* —— 6.23 Frota / destinos / cards – tablet e mobile ——
   Tablet: frota/destinos mantêm a linha; cards seguem o auto-fit (máx. 3).
   Mobile: item-list vira card empilhado (número → título → demais colunas). */
  .et-db .et-l .custom-section.more-about .items-list-solutions,
  .et-db .et-l .custom-section.more-about .cards,
  .et-db .et-l .custom-section.more-about .cards + .description {
    margin-top: var(--space-50);
  }
  .et-db .et-l .custom-section.more-about .item-list > .et_pb_column {
    grid-template-columns: 50px minmax(0, 2.5fr) minmax(0, 2fr) minmax(0, 1.2fr);
    gap: var(--space-20);
  }
  .et-db .et-l .custom-section.more-about .items-list-solutions.model-02 .item-list > .et_pb_column {
    grid-template-columns: 50px minmax(0, 200fr) minmax(0, 1fr);
  }
  .et-db .et-l .custom-section.more-about .cards > .et_pb_column {
    gap: var(--space-20);
  }
  .et-db .et-l .custom-section.more-about .item-list > .et_pb_column > .et_pb_text:nth-child(1) :is(h1, h2, h3, h4, h5, h6, p) {
    font-size: var(--font-size-body-large);
  }
  .et-db .et-l .custom-section .card-solution.model01 .et_pb_module_header {
    font-size: var(--font-size-display-mobile);
  }
  .et-db .et-l .custom-section .card-solution.model02 .et_pb_blurb_description :is(h1, h2, h3, h4, h5, h6) {
    font-size: var(--font-size-body-large);
  }

  /* —— 6.25 Formulário de serviço – tablet e mobile ——
   ≤ 980px: texto e formulário empilhados em full width (não só no mobile). */
  .et-db .et-l .custom-section.solution-form .description > .et_pb_column {
    gap: var(--space-50);
  }
  .et-db .et-l .custom-section.solution-form .description .et_pb_row_nested {
    grid-template-columns: minmax(0, 1fr);
    row-gap: var(--space-40);
  }
  .et-db .et-l .custom-section.solution-form .description .text p + p {
    margin-top: var(--space-25);
  }
  .et-db .et-l .custom-section.solution-form.contact .custom-form {
    padding-left: 0;
    padding-right: 0;
  }

  /* —— 6.27 Parceiros – intro – tablet e mobile —— */
  .et-db .et-l .custom-section.about-partners > .custom-content + .custom-content {
    margin-top: var(--space-50);
  }
  .et-db .et-l .custom-section.about-partners .description {
    grid-template-columns: minmax(0, 1fr);
    row-gap: var(--space-30);
  }

  /* —— 6.29 Grupos e eventos – tablet e mobile —— */
  .et-db .et-l .custom-section.groups-events > .custom-content + .custom-content {
    margin-top: var(--space-50);
  }
  .et-db .et-l .custom-section.groups-events .cards {
    grid-template-columns: minmax(0, 1fr);
    row-gap: var(--space-30);
  }

  /* —— 6.31 Sobre Manuel – tablet e mobile —— */
  .et-db .et-l .custom-section.about-manuel .cards {
    grid-template-columns: minmax(0, 1fr);
  }
  .et-db .et-l .custom-section.about-manuel .et_pb_image {
    max-width: 430px;
  }

  /* —— 6.34 Hero só título – tablet e mobile —— */
  .et-db .et-l .custom-section.hero-only-text {
    padding: calc(var(--space-100) + var(--space-80)) 0 var(--space-80);
  }

  /* —— 6.36 Conteúdo com índice – tablet e mobile —— */
  .et-db .et-l .custom-section:has(.ancora) .custom-content:has(.ancora) {
    --row-gutter-horizontal: var(--space-40);
  }

  /* —— 6.38 Tarifário – tablet e mobile ——
   Cabeçalho some; cada linha vira card empilhado (serviço → unidade → valor). */
  .et-db .et-l .custom-section.tarifario .items-list-solutions > .et_pb_column {
    gap: var(--space-20);
  }
  .et-db .et-l .custom-section.tarifario .header {
    display: none;
  }
  .et-db .et-l .custom-section.tarifario .item-card-tarifario > .et_pb_column {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-15);
    padding: var(--space-25);
  }
  .et-db .et-l .custom-section.tarifario .description {
    margin-top: var(--space-40);
  }

  /* —— 6.40 Acesso com senha / 6.42 404 – tablet e mobile —— */
  .et-db .et-l .custom-section.password-gate,
  .et-db .et-l .custom-section.error-404 {
    padding: calc(var(--space-100) + var(--space-80)) 0 var(--space-80);
  }
  .et-db .et-l .custom-section.password-gate .password-gate__title,
  .et-db .et-l .custom-section.error-404 .error-404__title {
    font-size: var(--font-size-hero);
  }
  .et-db .et-l .custom-section.password-gate .password-gate__card {
    padding: var(--space-30);
  }

  /* Layout base */
  .et-db .et-l .custom-section:not(.header):not(.footer):not(.hero):not(.hero-solution):not(.hero-only-text):not(.password-gate):not(.error-404) {
    padding: var(--space-80) 0;
  }
  .et-db .et-l .custom-section:not(.header) .custom-content:not(.full-width) {
    width: calc(100% - (2 * var(--space-25)));
  }
}

/* —— 7.2 Mobile ≤ 767px —— */
@media (max-width: 767px) {
  .et-db .et-l .custom-section .title :is(h1, h2, h3, h4, h5, h6),
  .et-db .et-l .custom-section .custom-hero .et_pb_module_header {
    font-size: var(--font-size-hero-mobile);
    letter-spacing: var(--letter-spacing-section);
  }
  .et-db .et-l .custom-section .subtitle :is(h1, h2, h3, h4, h5, h6, p) {
    font-size: var(--font-size-card);
  }
  /* Etapa: foto em cima, texto embaixo */
  .et-db .et-l .custom-section .step .et_pb_blurb_content {
    display: block;
  }
  .et-db .et-l .custom-section .step .et_pb_main_blurb_image {
    margin-bottom: var(--space-20);
  }
  .et-db .et-l .custom-section .step .et_pb_blurb_container::before {
    font-size: var(--font-size-h2);
  }
  /* Parceiro: mantém o grid do tablet (foto → logo → texto) */
  .et-db .et-l .custom-section .step.model02 .et_pb_blurb_content {
    display: grid;
  }
  .et-db .et-l .custom-section .step.model02 .et_pb_main_blurb_image {
    margin-bottom: 0;
  }

  .et-db .et-l .custom-section .custom-hero .et_pb_module_header {
    margin-bottom: var(--space-20);
  }
  .et-db .et-l .custom-section .custom-hero .et_pb_fullwidth_header_container {
    width: calc(100% - (2 * var(--space-20)));
  }
  .et-db .et-l .custom-section .custom-hero .et_pb_header_button_wrapper {
    margin-top: var(--space-40);
  }
  /* No celular o mouse não faz sentido e disputaria espaço com a legenda */
  .et-db .et-l .custom-section .custom-hero .et_pb_fullwidth_header_scroll {
    display: none;
  }
  /* Sem o mouse, a legenda desce para o lugar dele */
  .et-db .et-l .custom-section .custom-hero.legend .et_pb_header_content_wrapper blockquote {
    bottom: var(--space-30);
  }

  .et-db .et-l .custom-section.hero.internal .custom-hero {
    min-height: 560px;
  }

  .et-db .et-l .custom-section .custom-form .form-row {
    grid-template-columns: minmax(0, 1fr);
  }

  .et-db .et-l .custom-section.header .logo img {
    width: 120px;
    max-height: 36px;
  }

  /* —— 5.10 Mobile (≤ 767px): tudo em uma coluna, legal empilhado —— */
  .et-db .et-l .custom-section.footer {
    padding: var(--space-50) 0;
  }
  .et-db .et-l .custom-section.footer .about-footer {
    row-gap: var(--space-30);
  }
  .et-db .et-l .custom-section.footer .copy.custom-content {
    flex-direction: column;
    gap: var(--space-10);
    margin-top: var(--space-30);
    padding-top: var(--space-30);
  }
  .et-db .et-l .custom-section.footer .copy.custom-content .et_pb_column:last-child {
    text-align: left;
  }

  /* —— 6.3 Soluções – tablet e mobile (carrossel) —— */
  .et-db .et-l .custom-section.solutions-carousel .scroll-solutions,
  .et-db .et-l .custom-section.solutions-carousel .feature {
    margin-top: var(--space-50);
  }
  .et-db .et-l .custom-section.solutions-carousel .description .et_pb_column,
  .et-db .et-l .custom-section.solutions-carousel .feature .et_pb_column {
    gap: var(--space-20);
  }
  .et-db .et-l .custom-section.solutions-carousel .scroll-solutions .et_pb_column {
    gap: var(--space-20);
  }
  .et-db .et-l .custom-section.solutions-carousel .scroll-solutions .solution {
    flex-basis: 80%;
  }

  .et-db .et-l .custom-section.cta-fullwidth {
    min-height: 520px;
  }
  .et-db .et-l .custom-section.cta-fullwidth .et_pb_column {
    gap: var(--space-20);
  }
  .et-db .et-l .custom-section.cta-fullwidth:not(.model2) .title :is(h1, h2, h3, h4, h5, h6) {
    font-size: var(--font-size-display-mobile);
  }
  html.ap-js .et-db .et-l .custom-section.cta-fullwidth.ap-cta {
    --ap-cta-inset-x: var(--space-20);
    --ap-cta-inset-y: var(--space-20);
    --ap-cta-radius: var(--border-radius-15);
  }

  .et-db .et-l .custom-section.steps-gallery .description .et_pb_column {
    gap: var(--space-20);
  }

  .et-db .et-l .custom-section.instagram .description > .et_pb_column {
    gap: var(--space-30);
  }
  .et-db .et-l .custom-section.instagram .et_pb_row_nested {
    row-gap: var(--space-30);
  }
  .et-db .et-l .custom-section.instagram .et_pb_row_nested > .et_pb_column:last-child {
    align-items: flex-start;
  }
  .et-db .et-l .custom-section.instagram .custom-feed #sb_instagram #sbi_images {
    display: flex;
    gap: var(--space-20) !important;
    padding-bottom: var(--space-20);
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scroll-snap-type: x mandatory;
  }
  .et-db .et-l .custom-section.instagram .custom-feed #sb_instagram #sbi_images .sbi_item {
    flex: 0 0 80%;
    scroll-snap-align: start;
  }

  .et-db .et-l .custom-section.solutions-cards .description > .et_pb_column {
    gap: var(--space-30);
  }
  .et-db .et-l .custom-section.solutions-cards .cards {
    margin-top: var(--space-40);
  }
  .et-db .et-l .custom-section.solutions-cards .cards > .et_pb_column {
    grid-template-columns: minmax(0, 1fr);
    row-gap: var(--space-50);
  }

  .et-db .et-l .custom-section.solutions-only-card .cards {
    --row-gutter-vertical: var(--space-30);
    margin-top: var(--space-40);
  }

  .et-db .et-l .custom-section.solutions-only-card:not(:has(.subtitle)) .cards {
    margin-top: var(--space-40);
  }

  .et-db .et-l .custom-section.solutions-simple-cards .cards {
    --row-gutter-vertical: var(--space-50);
  }

  .et-db .et-l .custom-section.hero-solution {
    padding: calc(var(--space-100) + var(--space-40)) 0 var(--space-60);
  }
  .et-db .et-l .custom-section.hero-solution .custom-content:not(.more-info):not(.feature-image) > .et_pb_column {
    gap: var(--space-30);
  }
  .et-db .et-l .custom-section.hero-solution .title :is(h1, h2, h3, h4, h5, h6, p) {
    font-size: var(--font-size-hero-mobile);
    letter-spacing: var(--letter-spacing-section);
  }
  .et-db .et-l .custom-section.hero-solution .subtitle :is(h1, h2, h3, h4, h5, h6, p) {
    font-size: var(--font-size-body-large);
    line-height: var(--line-height-160);
  }
  .et-db .et-l .custom-section.hero-solution .more-info {
    --row-gutter-vertical: var(--space-30);
    margin-top: var(--space-30);
  }
  .et-db .et-l .custom-section.hero-solution .feature-image {
    margin-top: var(--space-50);
  }

  .et-db .et-l .custom-section.more-about .items-list-solutions,
  .et-db .et-l .custom-section.more-about .cards,
  .et-db .et-l .custom-section.more-about .cards + .description {
    margin-top: var(--space-40);
  }
  .et-db .et-l .custom-section.more-about .items-list-solutions > .et_pb_column {
    gap: var(--space-20);
  }
  .et-db .et-l .custom-section.more-about .item-list {
    border: var(--border-width-1) solid var(--color-border-subtle);
    border-radius: var(--border-radius-15);
    background-color: var(--color-background-surface);
  }
  .et-db .et-l .custom-section.more-about .item-list:last-child {
    border-bottom: var(--border-width-1) solid var(--color-border-subtle);
  }
  .et-db .et-l .custom-section.more-about .item-list > .et_pb_column {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: var(--space-15);
    padding: var(--space-25);
  }
  .et-db .et-l .custom-section.more-about .item-list > .et_pb_column > .et_pb_text:nth-child(1) :is(h1, h2, h3, h4, h5, h6, p) {
    font-size: var(--font-size-h3);
  }

  .et-db .et-l .custom-section.solution-form .description > .et_pb_column {
    gap: var(--space-40);
  }

  .et-db .et-l .custom-section.about-partners > .custom-content + .custom-content {
    margin-top: var(--space-40);
  }
  .et-db .et-l .custom-section.about-partners .description .subtitle :is(h1, h2, h3, h4, h5, h6, p) {
    font-size: var(--font-size-card);
  }

  .et-db .et-l .custom-section.groups-events > .custom-content + .custom-content {
    margin-top: var(--space-40);
  }
  .et-db .et-l .custom-section.groups-events .cards .title :is(h1, h2, h3, h4, h5, h6) {
    font-size: var(--font-size-hero-mobile);
    letter-spacing: var(--letter-spacing-section);
  }
  .et-db .et-l .custom-section.groups-events.model02 .cards .title :is(h1, h2, h3, h4, h5, h6) {
    font-size: var(--font-size-section-mobile);
  }

  .et-db .et-l .custom-section.about-manuel .cards .title :is(h1, h2, h3, h4, h5, h6) {
    font-size: var(--font-size-hero-mobile);
    letter-spacing: var(--letter-spacing-section);
  }

  /* —— 6.33 Frase em destaque – tablet e mobile —— */
  .et-db .et-l .custom-section.feature-phrase :is(h1, h2, h3, h4, h5, h6, p) {
    font-size: var(--font-size-card);
  }

  /* —— 6.34 Hero só título – tablet e mobile —— */
  .et-db .et-l .custom-section.hero-only-text {
    padding: calc(var(--space-100) + var(--space-40)) 0 var(--space-60);
  }

  /* —— 6.36 Conteúdo com índice – tablet e mobile —— */
  .et-db .et-l .custom-section:has(.ancora) .custom-content:has(.ancora) {
    --row-gutter-vertical: var(--space-40);
  }
  .et-db .et-l .custom-section:has(.ancora) .et_pb_column:has(.ancora) {
    position: static;
  }
  .et-db .et-l .custom-section:has(.ancora) .subtitle :is(h1, h2, h3, h4, h5, h6) {
    font-size: var(--font-size-card);
  }

  /* —— 6.40 Acesso com senha / 6.42 404 – tablet e mobile —— */
  .et-db .et-l .custom-section.password-gate,
  .et-db .et-l .custom-section.error-404 {
    padding: calc(var(--space-100) + var(--space-40)) 0 var(--space-60);
  }
  .et-db .et-l .custom-section.password-gate .custom-content,
  .et-db .et-l .custom-section.error-404 .custom-content {
    gap: var(--space-30);
  }
  .et-db .et-l .custom-section.password-gate .password-gate__title,
  .et-db .et-l .custom-section.error-404 .error-404__title {
    font-size: var(--font-size-hero-mobile);
    letter-spacing: var(--letter-spacing-section);
  }
  .et-db .et-l .custom-section.password-gate .password-gate__lead,
  .et-db .et-l .custom-section.error-404 .error-404__lead {
    font-size: var(--font-size-base);
    line-height: var(--line-height-150);
  }
  .et-db .et-l .custom-section.password-gate .password-gate__card {
    padding: var(--space-25);
  }

  /* Layout base */
  .et-db .et-l .custom-section:not(.header):not(.footer):not(.hero):not(.hero-solution):not(.hero-only-text):not(.password-gate):not(.error-404) {
    padding: var(--space-60) 0;
  }
  .et-db .et-l .custom-section:not(.header) .custom-content:not(.full-width) {
    width: calc(100% - (2 * var(--space-20)));
  }
}

/* —— 7.3 Desktop compacto (981–1199px) —— */
@media (min-width: 981px) and (max-width: 1199px) {
  /* —— 4.9 Desktop compacto (981–1199px): menos respiro para o menu caber ao lado do logo —— */
  .et-db .et-l .custom-section.header .custom-content {
    width: calc(100% - (2 * var(--space-20)));
  }
  .et-db .et-l .custom-section.header .et_pb_column {
    padding: var(--space-20) var(--space-25);
    gap: var(--space-20);
  }
  .et-db .et-l .custom-section.header .logo img {
    width: 140px;
    max-height: 42px;
  }
  .et-db .et-l .custom-section.header .et-menu {
    gap: var(--space-15);
  }
}
