/* ===========================================================================
   Eko's Traduções — estilos do redesign (child theme DDA-Child-Theme)
   ---------------------------------------------------------------------------
   Carregado por functions.php depois do CSS do Divi.
   Companheiros: ekos-icones.css (ícones Lucide) e ekos-fontes.css (Inter local).

   CONTRATO DE CLASSES (aba Avançado → ID e classes CSS no Divi Builder)

   Seções .......... ekos-sec  +  --white | --paper | --wash | --cta
                     ekos-hero
   Linhas .......... ekos-row            container 1280px
                     ekos-head           cabeçalho de seção (máx 680px)
                     ekos-head--center   centralizado (máx 620px)
                     ekos-head--split    título à esquerda, box à direita
                     ekos-head--between  título à esquerda, link à direita
                     ekos-grid  +  --2 | --3 | --4 | --lang | --steps
                                         1 coluna Divi, módulos viram grid
                     ekos-cols  +  --svc colunas Divi viram cards
                     ekos-hero-row, ekos-cta-row
   Módulos ......... ekos-eyebrow, ekos-h1, ekos-h2, ekos-lead
                     ekos-checks, ekos-rating, ekos-chips
                     ekos-stat (+ --hl)
                     ekos-card (Blurb vertical) + ekos-i-<ícone>
                     ekos-seg  (Blurb compacto) + ekos-i-<ícone>
                     ekos-why  (Blurb horizontal) + ekos-i-<ícone>
                     ekos-lang (Blurb com bandeira)
                     ekos-step (Blurb numerado)
                     ekos-btn  + --lg | --sm | --block | --outline | --wa
                     ekos-band (faixa de fechamento) + --wash
                     ekos-blog, ekos-faq, ekos-tst
                     ekos-formcard (classe da coluna), ekos-esfera
   =========================================================================== */

/* ---------------------------------------------------------------------------
   1. Tokens
   --------------------------------------------------------------------------- */
:root {
  --orange-50:  #FEF4EC;
  --orange-100: #FBE3CF;
  --orange-200: #F6C49C;
  --orange-300: #F0A266;
  --orange-400: #EB8840;
  --orange-500: #E47325;
  --orange-600: #C75F1B;
  --orange-700: #A24A15;

  --blue-500: #008ED3;
  --blue-600: #0274AE;
  --blue-700: #035C8A;

  --neutral-0:   #FFFFFF;
  --neutral-25:  #FCFAF8;
  --neutral-50:  #F7F4F1;
  --neutral-100: #EFEBE7;
  --neutral-200: #E0DAD4;
  --neutral-300: #C7BFB8;
  --neutral-400: #9E948C;
  --neutral-500: #756B64;
  --neutral-700: #4D4D4D;
  --neutral-900: #212121;
  --neutral-950: #161616;

  --success-500: #2E9E5B;
  --success-50:  #E7F5EC;
  --danger-500:  #D64242;

  --star: #E8A013;
  --whatsapp: #25D366;
  --whatsapp-text: #1DA851;
  --whatsapp-wash: #F0FBF4;
  --upload-border: #E4DDD6;

  --brand-primary:       var(--orange-500);
  --brand-primary-hover: var(--orange-600);
  --brand-primary-press: var(--orange-700);

  --surface-page: var(--neutral-25);
  --surface-card: var(--neutral-0);

  --text-strong: var(--neutral-900);
  --text-body:   var(--neutral-700);
  --text-muted:  var(--neutral-500);
  --text-accent: var(--orange-600);
  --text-link:   var(--blue-600);
  --text-on-dark-muted: rgba(255, 255, 255, 0.72);

  --border-subtle:  var(--neutral-100);
  --border-default: var(--neutral-300);
  --border-focus:   var(--orange-500);

  --gradient-wash: radial-gradient(120% 90% at 78% 12%, #FBE3CF 0%, rgba(251, 227, 207, 0) 55%), #FCFAF8;
  --gradient-cta:  linear-gradient(120deg, #F0912F 0%, #E47325 48%, #C85A14 100%);

  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-field: 12px;
  --radius-lg: 14px;
  --radius-pill: 999px;

  --shadow-xs: 0 1px 2px rgba(33, 18, 8, 0.06);
  --shadow-sm: 0 1px 3px rgba(33, 18, 8, 0.08), 0 1px 2px rgba(33, 18, 8, 0.06);
  --shadow-md: 0 4px 12px rgba(33, 18, 8, 0.08), 0 2px 4px rgba(33, 18, 8, 0.05);
  --shadow-lg: 0 12px 28px rgba(33, 18, 8, 0.12), 0 4px 8px rgba(33, 18, 8, 0.06);
  --shadow-orange: 0 10px 26px rgba(228, 115, 37, 0.32);
  --shadow-whatsapp: 0 8px 24px rgba(29, 168, 81, 0.4);
  --shadow-focus-ring: 0 0 0 3px rgba(228, 115, 37, 0.32);

  --font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;

  --ease-out: cubic-bezier(0.22, 1, 0.36, 1);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --t-fast: 120ms;
  --t-base: 200ms;

  --container: 1280px;
  --pad-x: 40px;
  --header-h: 80px;
  --sec-y: 88px;
}

/* ---------------------------------------------------------------------------
   2. Base e reset de Divi
   --------------------------------------------------------------------------- */
body,
body .et_pb_module,
body .et_pb_text,
#et-boc .et-l p {
  font-family: var(--font-sans);
  color: var(--text-body);
}

body { background: var(--surface-page); }

h1, h2, h3, h4, h5, h6,
.et_pb_module h1, .et_pb_module h2,
.et_pb_module h3, .et_pb_module h4 {
  font-family: var(--font-sans);
  color: var(--text-strong);
  font-weight: 700;
  letter-spacing: -0.02em;
  text-wrap: pretty;
}

a { color: var(--text-link); transition: color var(--t-base) var(--ease-out); }
a:hover { color: var(--blue-700); }

/* O Divi acrescenta 10px de padding-bottom em todo título dentro de módulo de
   texto, o que empurra tudo para baixo e não existe no protótipo. */
.ekos-sec h1, .ekos-sec h2, .ekos-sec h3, .ekos-sec h4,
.ekos-hero h1, .ekos-hero h2, .ekos-hero h3,
.ekos-footer h1, .ekos-footer h2, .ekos-footer h3,
.ekos-stats-sec h2, .ekos-stats-sec h3 { padding-bottom: 0 !important; }

/* O clearfix do Divi vira item de flex ou de grid nas linhas convertidas em
   grade, roubando uma coluna inteira de espaçamento. */
.ekos-cols.et_pb_row::before, .ekos-cols.et_pb_row::after,
.ekos-hero-row.et_pb_row::before, .ekos-hero-row.et_pb_row::after,
.ekos-cta-row.et_pb_row::before, .ekos-cta-row.et_pb_row::after,
.ekos-footer-cols.et_pb_row::before, .ekos-footer-cols.et_pb_row::after,
.ekos-topbar > .et_pb_row::before, .ekos-topbar > .et_pb_row::after,
.ekos-header > .et_pb_row::before, .ekos-header > .et_pb_row::after,
.ekos-grid > .et_pb_column::after,
.ekos-head--split > .et_pb_column::after,
.ekos-head--between > .et_pb_column::after { display: none !important; content: none !important; }

html { scroll-behavior: smooth; }
[id] { scroll-margin-top: calc(var(--header-h) + 12px); }

/* Larguras. No protótipo o conteúdo tem 1280px e a seção tem 40px de respiro
   lateral por fora disso, então a linha do Divi precisa de 1360px de caixa para
   sobrar 1280px de conteúdo. O Divi define .et_pb_row com width 80%, daí os
   !important. */
.ekos-sec.et_pb_section { padding: var(--sec-y) 0; }
.ekos-sec > .et_pb_row,
.ekos-hero > .et_pb_row,
.ekos-pagehero > .et_pb_row,
.ekos-ctaband > .et_pb_row,
.ekos-stats-sec > .et_pb_row,
.ekos-footer > .et_pb_row {
  width: 100% !important;
  max-width: calc(var(--container) + var(--pad-x) * 2) !important;
  padding-left: var(--pad-x) !important;
  padding-right: var(--pad-x) !important;
  margin-left: auto;
  margin-right: auto;
}

/* As animações de entrada do Divi deixam a imagem em opacity 0 até o waypoint
   disparar, o que não acontece de forma confiável dentro de um grid. */
.ekos-sec img.et-waypoint,
.ekos-hero img.et-waypoint,
.ekos-sec .et_pb_animation_top,
.ekos-sec .et_pb_animation_left,
.ekos-sec .et_pb_animation_right,
.ekos-sec .et_pb_animation_bottom { opacity: 1 !important; animation: none !important; }

.ekos-sec--white.et_pb_section { background-color: var(--neutral-0); }
.ekos-sec--paper.et_pb_section { background-color: var(--surface-page); }
.ekos-sec--wash.et_pb_section  { background: var(--gradient-wash); }

/* Como funciona é a única seção com 92px de respiro vertical. */
#como-funciona.et_pb_section { padding: 92px 0; }

/* O Divi coloca margem inferior fixa nos módulos; quem manda aqui é o gap. */
.ekos-grid > .et_pb_column > .et_pb_module,
.ekos-cols > .et_pb_column > .et_pb_module { margin-bottom: 0; }

/* ---------------------------------------------------------------------------
   3. Tipografia de apoio
   --------------------------------------------------------------------------- */
.ekos-eyebrow,
.ekos-eyebrow .et_pb_text_inner,
.ekos-head--split .ekos-eyebrow,
.ekos-head--between .ekos-eyebrow {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--orange-600);
  line-height: 1.5;
}

.ekos-h1 h1,
.ekos-h1 .et_pb_text_inner {
  font-size: 52px;
  line-height: 1.06;
  letter-spacing: -0.03em;
  margin: 0;
}
.ekos-h1 .ekos-accent { color: var(--brand-primary); }

.ekos-h2 h2,
.ekos-h2 .et_pb_text_inner {
  font-size: 38px;
  line-height: 1.25;
  letter-spacing: -0.02em;
  margin: 0;
}
.ekos-h2--lg h2 { font-size: 42px; line-height: 1.1; letter-spacing: -0.025em; }

.ekos-lead .et_pb_text_inner,
.ekos-lead p {
  font-size: 17px;
  line-height: 1.55;
  color: var(--text-body);
  margin: 0;
}
.ekos-lead--xl .et_pb_text_inner,
.ekos-lead--xl p { font-size: 19px; max-width: 545px; }

/* Cabeçalhos de seção. As margens seguem o protótipo: eyebrow 18px, H2 14px. */
.ekos-head.et_pb_row { margin-bottom: 44px !important; }
.ekos-head > .et_pb_column { width: 100% !important; margin: 0 !important; max-width: 680px; }
.ekos-head > .et_pb_column > .et_pb_module { margin-bottom: 14px !important; }
.ekos-head > .et_pb_column > .ekos-eyebrow { margin-bottom: 18px !important; }
.ekos-head > .et_pb_column > .ekos-h2--lg { margin-bottom: 16px !important; }
.ekos-head > .et_pb_column > .et_pb_module:last-child { margin-bottom: 0 !important; }

.ekos-head.ekos-head--center > .et_pb_column {
  max-width: 620px;
  float: none !important;
  margin: 0 auto !important;
  text-align: center;
}
/* O Divi marca cada módulo com et_pb_text_align_left, que sobrepõe o
   text-align da coluna. */
.ekos-head--center .et_pb_module,
.ekos-head--center .et_pb_text_inner,
.ekos-head--center h2,
.ekos-head--center p { text-align: center !important; }

/* Cabeçalho com box à direita (Segmentos atendidos).
   O conteúdo é um único módulo de Texto, então a grade vai no _inner. */
.ekos-head.ekos-head--split > .et_pb_column { max-width: none; }
.ekos-head--split .et_pb_text_inner {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 48px;
  align-items: center;
}
.ekos-head--split .ekos-eyebrow { margin-bottom: 18px; }
.ekos-head--split h2 { margin: 0 0 14px; }
.ekos-head--split .ekos-head__text { max-width: 700px; }
.ekos-head--split .ekos-sidebox {
  background: var(--surface-page);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  padding: 20px 24px;
  text-align: center;
  width: 384px;
}
.ekos-sidebox__num {
  display: block;
  font-size: 34px;
  font-weight: 800;
  color: var(--brand-primary);
  letter-spacing: -0.03em;
  line-height: 1;
  margin-bottom: 6px;
}
.ekos-sidebox__label { font-size: 13px; color: var(--text-muted); line-height: 1.45; }

/* Cabeçalho com link à direita (Do Blog da Eko's) */
.ekos-head.ekos-head--between > .et_pb_column { max-width: none; }
.ekos-head--between .et_pb_text_inner {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 40px;
}
.ekos-head--between .ekos-eyebrow { margin-bottom: 18px; }
.ekos-head--between h2 { margin: 0 0 14px; }
.ekos-head--between p { margin: 0; }
.ekos-head--between .ekos-head__text { max-width: 680px; }
.ekos-head--between .ekos-morelink {
  font-size: 15px;
  font-weight: 700;
  color: var(--text-accent);
  text-decoration: none;
  white-space: nowrap;
}
.ekos-head--between .ekos-morelink:hover { color: var(--brand-primary); }

/* ---------------------------------------------------------------------------
   4. Grades
   --------------------------------------------------------------------------- */
.ekos-grid > .et_pb_column {
  width: 100% !important;
  margin: 0 !important;
  display: grid;
  gap: 20px;
}
.ekos-grid--2 > .et_pb_column { grid-template-columns: repeat(2, 1fr); }
.ekos-grid--3 > .et_pb_column { grid-template-columns: repeat(3, 1fr); }
.ekos-grid--4 > .et_pb_column { grid-template-columns: repeat(4, 1fr); gap: 14px; }
.ekos-grid--lang > .et_pb_column { grid-template-columns: repeat(4, 1fr); gap: 12px; }
.ekos-grid--stats > .et_pb_column { grid-template-columns: repeat(4, 1fr); gap: 24px; }
.ekos-grid--blog > .et_pb_column { display: block; }

/* Colunas do Divi transformadas em cards lado a lado */
.ekos-cols.et_pb_row { display: flex; gap: 20px; }
.ekos-cols > .et_pb_column {
  width: auto !important;
  flex: 1 1 0;
  margin: 0 !important;
  display: flex;
  flex-direction: column;
}
.ekos-cols.et_pb_row + .ekos-cols.et_pb_row { margin-top: 20px; }

/* ---------------------------------------------------------------------------
   5. Botões
   --------------------------------------------------------------------------- */
.ekos-btn,
.et_pb_button.ekos-btn,
a.ekos-btn {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  gap: 8px;
  height: 44px;
  padding: 0 24px !important;
  border: none !important;
  border-radius: var(--radius-pill) !important;
  background: var(--brand-primary) !important;
  color: #fff !important;
  font-family: var(--font-sans) !important;
  font-size: 15px !important;
  font-weight: 700 !important;
  line-height: 1 !important;
  text-decoration: none;
  white-space: nowrap;
  transition: background var(--t-base) var(--ease-out),
              transform var(--t-base) var(--ease-out),
              box-shadow var(--t-base) var(--ease-out);
}
.ekos-btn:hover,
.et_pb_button.ekos-btn:hover {
  background: var(--brand-primary-hover) !important;
  color: #fff !important;
  transform: translateY(-1px);
  box-shadow: var(--shadow-orange);
}
/* O padding só é reafirmado no módulo do Divi, porque é ele que traz um padding
   próprio no hover. Aplicar em todo .ekos-btn encolhia os botões grandes, que
   usam 32px, ao passar o mouse. */
.et_pb_button.ekos-btn:hover { padding: 0 24px !important; }
.ekos-btn:active { background: var(--brand-primary-press) !important; transform: translateY(0); }

/* O Divi injeta uma seta em ::after; os rótulos já trazem a seta quando precisam.
   O ::before continua livre porque é onde entra o ícone do WhatsApp. */
.et_pb_button.ekos-btn:after { display: none !important; content: none !important; }
.et_pb_button.ekos-btn:not(.ekos-btn--wa):before { display: none !important; content: none !important; }

a.ekos-btn--lg,
.ekos-btn--lg,
.et_pb_button.ekos-btn--lg { height: 54px; font-size: 16px !important; padding: 0 32px !important; }
.et_pb_button.ekos-btn--lg:hover { padding: 0 32px !important; }
a.ekos-btn--sm,
.ekos-btn--sm,
.et_pb_button.ekos-btn--sm { height: 36px; font-size: 14px !important; padding: 0 18px !important; }
.et_pb_button.ekos-btn--sm:hover { padding: 0 18px !important; }
a.ekos-btn--block,
.ekos-btn--block,
.et_pb_button.ekos-btn--block { width: 100%; display: flex !important; }

a.ekos-btn--outline,
.ekos-btn--outline,
.et_pb_button.ekos-btn--outline {
  background: transparent !important;
  color: var(--brand-primary) !important;
  border: 1.5px solid var(--brand-primary) !important;
}
a.ekos-btn--outline:hover,
.ekos-btn--outline:hover,
.et_pb_button.ekos-btn--outline:hover {
  background: var(--orange-50) !important;
  color: var(--brand-primary-hover) !important;
  box-shadow: none;
}

a.ekos-btn--wa,
.ekos-btn--wa,
.et_pb_button.ekos-btn--wa {
  height: 48px;
  background: transparent !important;
  color: var(--whatsapp-text) !important;
  border: 1.5px solid var(--whatsapp) !important;
}
a.ekos-btn--wa:hover,
.ekos-btn--wa:hover,
.et_pb_button.ekos-btn--wa:hover {
  background: var(--whatsapp-wash) !important;
  color: var(--whatsapp-text) !important;
  box-shadow: none;
}
.ekos-btn--wa::before,
.et_pb_button.ekos-btn--wa::before {
  content: "" !important;
  display: inline-block !important;
  width: 18px;
  height: 18px;
  margin: 0 !important;
  position: static !important;
  opacity: 1 !important;
  background: var(--icoz-whatsapp) center/contain no-repeat;
  flex: none;
}

/* Botão vazado branco, para usar sobre o degradê laranja */
a.ekos-btn--wa-branco,
.ekos-btn--wa-branco {
  background: transparent !important;
  color: #fff !important;
  border: 1.5px solid rgba(255, 255, 255, 0.6) !important;
}
a.ekos-btn--wa-branco:hover,
.ekos-btn--wa-branco:hover {
  background: rgba(255, 255, 255, 0.14) !important;
  border-color: #fff !important;
  color: #fff !important;
  box-shadow: none;
}
.ekos-btn--wa-branco::before {
  content: "";
  width: 18px;
  height: 18px;
  flex: none;
  background: var(--icow-whatsapp) center/contain no-repeat;
}

/* Botão branco sobre o degradê laranja */
a.ekos-btn--onorange,
.ekos-btn--onorange,
.et_pb_button.ekos-btn--onorange {
  background: #fff !important;
  color: var(--brand-primary-hover) !important;
}
/* Sem a cor declarada aqui, o texto herdaria o branco do hover padrão e sumiria
   no fundo claro do botão. */
a.ekos-btn--onorange:hover,
.ekos-btn--onorange:hover,
.et_pb_button.ekos-btn--onorange:hover {
  background: var(--orange-50) !important;
  color: var(--brand-primary-press) !important;
  box-shadow: none;
}

/* ---------------------------------------------------------------------------
   6. Hero
   --------------------------------------------------------------------------- */
.ekos-hero.et_pb_section {
  position: relative;
  overflow: hidden;
  background: var(--gradient-wash);
  padding: 60px 0;
}
.ekos-hero__glow {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  z-index: 0;
}
.ekos-hero__glow span { position: absolute; border-radius: 999px; filter: blur(48px); display: block; }
.ekos-hero__glow span:nth-child(1) {
  width: 680px; height: 680px; left: -180px; top: -240px;
  background: radial-gradient(circle, rgba(228, 115, 37, 0.16), transparent 68%);
  animation: ekos-drift-a 18s var(--ease-in-out) infinite alternate;
}
.ekos-hero__glow span:nth-child(2) {
  width: 560px; height: 560px; right: 280px; bottom: -280px;
  background: radial-gradient(circle, rgba(0, 142, 211, 0.10), transparent 68%);
  animation: ekos-drift-b 22s var(--ease-in-out) infinite alternate;
}
@keyframes ekos-drift-a {
  from { transform: translate(0, 0) scale(1); }
  to   { transform: translate(70px, 45px) scale(1.14); }
}
@keyframes ekos-drift-b {
  from { transform: translate(0, 0) scale(1.1); }
  to   { transform: translate(-60px, -35px) scale(1); }
}
@media (prefers-reduced-motion: reduce) {
  .ekos-hero__glow span { animation: none !important; }
}

/* Esferas decorativas (módulo Imagem) */
.ekos-esfera.et_pb_module {
  position: absolute !important;
  pointer-events: none;
  user-select: none;
  margin: 0 !important;
  z-index: 0;
}
.ekos-esfera img { display: block; max-width: none; }
/* A esfera é um SVG alto e estreito (proporção 85:150). A medida do layout é a
   ALTURA; travar a largura em 560px esticava o desenho para quase o dobro do
   tamanho e enchia a seção de pontos. A transparência já vem do próprio SVG. */
.ekos-esfera--hero { right: -150px; top: -110px; width: auto; opacity: 1; }
.ekos-esfera--hero img { height: 560px; width: auto; }
.ekos-esfera--langs { left: -180px; bottom: -180px; width: auto; opacity: 1; }
.ekos-esfera--langs img { height: 560px; width: auto; }
.ekos-esfera--cta { left: -90px; bottom: -140px; width: auto; opacity: 1; }
.ekos-esfera--cta img { height: 480px; width: auto; }

.ekos-hero-row.et_pb_row {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: 1.05fr 0.95fr;
  gap: 56px;
  align-items: start;
}
.ekos-hero-row > .et_pb_column { width: 100% !important; margin: 0 !important; }
.ekos-hero-row > .et_pb_column:first-child { padding-top: 20px; }

/* Ritmo vertical da coluna de texto do hero, igual ao protótipo.
   As regras específicas repetem a mesma estrutura de seletor da regra geral
   para não perderem no desempate de especificidade. */
.ekos-hero-row > .et_pb_column > .et_pb_module { margin-bottom: 0; }
.ekos-hero-row > .et_pb_column > .ekos-eyebrow { margin-bottom: 18px; }
.ekos-hero-row > .et_pb_column > .ekos-h1 { margin-bottom: 20px; }
.ekos-hero-row > .et_pb_column > .ekos-lead { margin-bottom: 28px; }
.ekos-hero-row > .et_pb_column > .ekos-checks { margin-bottom: 30px; }
.ekos-hero-row > .et_pb_column > .ekos-rating { margin-bottom: 26px; }
.ekos-hero-row > .et_pb_column > .ekos-chips { margin-bottom: 0; }

/* Lista de garantias */
.ekos-checks ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 11px; }
.ekos-checks li {
  display: flex;
  align-items: center;
  gap: 11px;
  font-size: 16px;
  font-weight: 600;
  color: var(--text-strong);
  line-height: 1.35;
  padding: 0;
}
.ekos-checks li::before {
  content: "";
  width: 22px;
  height: 22px;
  flex: none;
  border-radius: 999px;
  background: var(--orange-50) var(--ico-check-bold) center/12px no-repeat;
}

/* Avaliação do Google */
.ekos-rating .et_pb_text_inner { display: flex; align-items: center; gap: 12px; }
.ekos-rating__stars { display: inline-flex; align-items: center; gap: 2px; flex: none; }
.ekos-rating__stars i {
  width: 19px;
  height: 19px;
  display: block;
  background: var(--img-star-full) center/contain no-repeat;
}
.ekos-rating__stars i.is-half { background-image: var(--img-star-45); }
.ekos-rating__text { font-size: 14.5px; color: var(--text-body); }
.ekos-rating__text strong { color: var(--text-strong); font-weight: 700; }
.ekos-rating__stars i.is-off { opacity: .28; }

/* Variante em link, usada pelo shortcode [ekos_avaliacoes]. O selo precisa
   estar visível em toda página que carrega o AggregateRating no schema. */
a.ekos-rating--link {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  text-decoration: none;
  transition: opacity .18s ease;
}
a.ekos-rating--link:hover { opacity: .82; }
.ekos-rating--rodape { margin-top: 16px; }
.ekos-rating--rodape .ekos-rating__text { color: var(--text-on-dark-muted); font-size: 14px; }
.ekos-rating--rodape .ekos-rating__text strong { color: #FFFFFF; }
.ekos-tst-nota { margin-top: 10px; }
.ekos-tst-nota { margin-top: 4px !important; }
.ekos-tst-nota .et_pb_text_inner { display: flex; }
.ekos-head--center .ekos-tst-nota .et_pb_text_inner { justify-content: center; }

/* --------------------------------------------------------------------------
   Avaliações do Google
   Colunas CSS em vez de grade: os textos têm tamanhos muito diferentes e
   altura igual deixaria buracos embaixo das avaliações curtas.
   -------------------------------------------------------------------------- */

.ekos-reviews .et_pb_text_inner { display: block; }
.ekos-reviews__lista {
  column-count: 3;
  column-gap: 22px;
  margin-bottom: 26px;
}
.ekos-review {
  break-inside: avoid;
  -webkit-column-break-inside: avoid;
  page-break-inside: avoid;
  display: block;
  margin: 0 0 22px;
  padding: 22px 24px;
  background: var(--surface-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
}
.ekos-review__topo { display: flex; align-items: center; gap: 12px; }
.ekos-review__avatar {
  width: 40px;
  height: 40px;
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--gradient-cta);
  color: #FFFFFF;
  font-size: 17px;
  font-weight: 700;
  line-height: 1;
}
.ekos-review__quem { display: flex; flex-direction: column; line-height: 1.3; }
.ekos-review__quem strong { color: var(--text-strong); font-size: 15px; font-weight: 700; }
.ekos-review__quem span { color: var(--text-muted); font-size: 13px; }
.ekos-review__estrelas { margin: 14px 0 10px; }
.ekos-review__estrelas i { width: 16px; height: 16px; }
.ekos-review blockquote {
  margin: 0;
  padding: 0;
  border: 0;
  color: var(--text-body);
  font-size: 15px;
  line-height: 1.62;
}
.ekos-reviews .ekos-morelink { display: inline-flex; }
.et_pb_section .ekos-reviews-row > .et_pb_column {
  width: 100% !important;
  float: none !important;
  margin: 0 auto !important;
}
.ekos-rating-wrap .et_pb_text_inner { display: flex; }
.ekos-hero .ekos-rating-wrap.et_pb_module { margin-bottom: 22px !important; }
.ekos-footer__nota .et_pb_text_inner { display: flex; }

/* Chips de idioma */
.ekos-chips .et_pb_text_inner { display: flex; flex-wrap: wrap; gap: 7px; max-width: 600px; }
.ekos-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: var(--surface-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-pill);
  padding: 5px 12px 5px 7px;
  font-size: 13px;
  font-weight: 600;
  color: var(--text-strong);
  box-shadow: var(--shadow-xs);
  line-height: 1.2;
}
.ekos-chip img {
  width: 17px;
  height: 12px;
  border-radius: 2px;
  object-fit: cover;
  display: block;
  flex: none;
}
a.ekos-chip--more {
  border: 1px dashed var(--border-default);
  color: var(--text-accent);
  font-weight: 700;
  text-decoration: none;
  box-shadow: none;
  padding: 5px 12px;
  background: transparent;
}
a.ekos-chip--more:hover { border-color: var(--brand-primary); color: var(--brand-primary); }

/* ---------------------------------------------------------------------------
   7. Card do formulário
   --------------------------------------------------------------------------- */
.ekos-formcard.et_pb_column {
  background: var(--surface-card);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  padding: 24px;
  align-self: start;
}
.ekos-formcard > .et_pb_module { margin-bottom: 0; }
.ekos-formcard > .ekos-formcard__title { margin-bottom: 4px; }
.ekos-formcard__title .et_pb_text_inner {
  font-size: 21px;
  font-weight: 700;
  color: var(--text-strong);
  letter-spacing: -0.02em;
  line-height: 1.25;
}
.ekos-formcard > .ekos-formcard__sub { margin-bottom: 14px; }
.ekos-formcard__sub .et_pb_text_inner {
  font-size: 14px;
  line-height: 1.45;
  color: var(--text-muted);
}
.ekos-formcard > .ekos-formcard__note { margin-top: 14px; }
.ekos-formcard__note .et_pb_text_inner {
  display: flex;
  align-items: center;
  gap: 9px;
  font-size: 12.5px;
  color: var(--text-muted);
  line-height: 1.5;
}
.ekos-formcard__note .et_pb_text_inner::before {
  content: "";
  width: 15px;
  height: 15px;
  flex: none;
  background: var(--icog-lock) center/contain no-repeat;
}

/* ---------------------------------------------------------------------------
   8. Números
   --------------------------------------------------------------------------- */
.ekos-stats-sec.et_pb_section {
  background-color: var(--neutral-0);
  border-bottom: 1px solid var(--border-subtle);
  padding: 44px 0;
}
.ekos-stat .et_pb_text_inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  background: var(--surface-page);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  padding: 22px 12px;
  height: 100%;
}
.ekos-stat--hl .et_pb_text_inner { background: var(--orange-50); border-color: var(--orange-200); }
.ekos-stat__value {
  font-size: 44px;
  font-weight: 800;
  color: var(--brand-primary);
  letter-spacing: -0.03em;
  line-height: 1;
}
.ekos-stat__label {
  font-size: 14px;
  color: var(--text-muted);
  font-weight: 500;
  margin-top: 8px;
  line-height: 1.35;
}
.ekos-stat--hl .ekos-stat__label { color: var(--text-body); font-weight: 700; }

/* ---------------------------------------------------------------------------
   9. Cards de serviço (colunas Divi)
   --------------------------------------------------------------------------- */
.ekos-cols--svc > .et_pb_column {
  background: var(--surface-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  padding: 28px;
  transition: box-shadow var(--t-base) var(--ease-out),
              transform var(--t-base) var(--ease-out),
              border-color var(--t-base) var(--ease-out);
}
.ekos-cols--svc > .et_pb_column:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-3px);
  border-color: var(--orange-300);
}
.ekos-cols--svc > .et_pb_column::before {
  content: "";
  display: block;
  width: 46px;
  height: 46px;
  border-radius: var(--radius-md);
  background-color: var(--orange-50);
  background-position: center;
  background-repeat: no-repeat;
  background-size: 22px;
  margin-bottom: 16px;
  flex: none;
}
.ekos-cols--svc .et_pb_blurb { margin-bottom: 0 !important; flex: 1; }
.ekos-cols--svc .et_pb_blurb_content { max-width: none; text-align: left; }
.ekos-cols--svc .et_pb_module_header {
  font-size: 20px;
  line-height: 1.25;
  margin: 0 0 8px;
  padding: 0;
}
.ekos-cols--svc .et_pb_module_header a { color: var(--text-strong); text-decoration: none; }
.ekos-cols--svc .et_pb_module_header a:hover { color: var(--brand-primary); }
.ekos-cols--svc .et_pb_blurb_description,
.ekos-cols--svc .et_pb_blurb_description p {
  font-size: 14.5px;
  line-height: 1.55;
  color: var(--text-body);
  margin: 0;
}
.ekos-cols--svc .et_pb_button_module_wrapper { margin-top: 20px !important; margin-bottom: 0 !important; }

/* ---------------------------------------------------------------------------
   10. Blurbs com ícone (segmentos, diferenciais, passos)
   --------------------------------------------------------------------------- */
.ekos-seg.et_pb_blurb,
.ekos-why.et_pb_blurb {
  background: var(--surface-page);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  padding: 18px;
  transition: box-shadow var(--t-base) var(--ease-out),
              transform var(--t-base) var(--ease-out),
              border-color var(--t-base) var(--ease-out);
}
.ekos-seg.et_pb_blurb:hover,
.ekos-why.et_pb_blurb:hover {
  border-color: var(--brand-primary);
  box-shadow: var(--shadow-md);
  transform: translateY(-2px);
}
.ekos-seg .et_pb_blurb_content,
.ekos-why .et_pb_blurb_content {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  max-width: none;
  text-align: left;
}
.ekos-seg .et_pb_blurb_content::before,
.ekos-why .et_pb_blurb_content::before {
  content: "";
  width: 36px;
  height: 36px;
  flex: none;
  border-radius: var(--radius-md);
  background-color: var(--orange-50);
  background-position: center;
  background-repeat: no-repeat;
  background-size: 20px;
}
.ekos-seg .et_pb_module_header {
  font-size: 15.5px;
  line-height: 1.25;
  margin: 0 0 5px;
  padding: 0;
}
.ekos-seg .et_pb_blurb_description,
.ekos-seg .et_pb_blurb_description p {
  font-size: 12.5px;
  line-height: 1.5;
  color: var(--text-muted);
  margin: 0;
}

/* Diferenciais: card branco, um pouco maior */
.ekos-why.et_pb_blurb { background: var(--surface-card); padding: 24px; }
.ekos-why .et_pb_blurb_content { gap: 16px; }
.ekos-why .et_pb_blurb_content::before { width: 42px; height: 42px; }
.ekos-why .et_pb_module_header { font-size: 17px; line-height: 1.3; margin: 0 0 7px; padding: 0; }
.ekos-why .et_pb_blurb_description,
.ekos-why .et_pb_blurb_description p {
  font-size: 14px;
  line-height: 1.55;
  color: var(--text-body);
  margin: 0;
}

/* Ícones por classe. Ver ekos-icones.css para a lista completa. */
.ekos-i-languages      .et_pb_blurb_content::before,
.ekos-cols--svc > .ekos-i-languages::before      { background-image: var(--ico-languages); }
.ekos-i-file-text      .et_pb_blurb_content::before,
.ekos-cols--svc > .ekos-i-file-text::before      { background-image: var(--ico-file-text); }
.ekos-i-gavel          .et_pb_blurb_content::before,
.ekos-cols--svc > .ekos-i-gavel::before          { background-image: var(--ico-gavel); }
.ekos-i-mic            .et_pb_blurb_content::before,
.ekos-cols--svc > .ekos-i-mic::before            { background-image: var(--ico-mic); }
.ekos-i-pencil         .et_pb_blurb_content::before,
.ekos-cols--svc > .ekos-i-pencil::before         { background-image: var(--ico-pencil); }
.ekos-i-captions       .et_pb_blurb_content::before,
.ekos-cols--svc > .ekos-i-captions::before       { background-image: var(--ico-captions); }
.ekos-i-layout         .et_pb_blurb_content::before,
.ekos-cols--svc > .ekos-i-layout::before         { background-image: var(--ico-layout-template); }
.ekos-i-message-square .et_pb_blurb_content::before,
.ekos-cols--svc > .ekos-i-message-square::before { background-image: var(--ico-message-square); }
.ekos-i-headphones     .et_pb_blurb_content::before,
.ekos-cols--svc > .ekos-i-headphones::before     { background-image: var(--ico-headphones); }

.ekos-i-scale        .et_pb_blurb_content::before { background-image: var(--ico-scale); }
.ekos-i-stethoscope  .et_pb_blurb_content::before { background-image: var(--ico-stethoscope); }
.ekos-i-flask        .et_pb_blurb_content::before { background-image: var(--ico-flask-conical); }
.ekos-i-dog          .et_pb_blurb_content::before { background-image: var(--ico-dog); }
.ekos-i-car          .et_pb_blurb_content::before { background-image: var(--ico-car); }
.ekos-i-zap          .et_pb_blurb_content::before { background-image: var(--ico-zap); }
.ekos-i-fuel         .et_pb_blurb_content::before { background-image: var(--ico-fuel); }
.ekos-i-landmark     .et_pb_blurb_content::before { background-image: var(--ico-landmark); }
.ekos-i-pill         .et_pb_blurb_content::before { background-image: var(--ico-pill); }
.ekos-i-cpu          .et_pb_blurb_content::before { background-image: var(--ico-cpu); }
.ekos-i-plane        .et_pb_blurb_content::before { background-image: var(--ico-plane); }
.ekos-i-train        .et_pb_blurb_content::before { background-image: var(--ico-train-front); }
.ekos-i-megaphone    .et_pb_blurb_content::before { background-image: var(--ico-megaphone); }
.ekos-i-hardhat      .et_pb_blurb_content::before { background-image: var(--ico-hard-hat); }
.ekos-i-sparkles     .et_pb_blurb_content::before { background-image: var(--ico-sparkles); }
.ekos-i-wheat        .et_pb_blurb_content::before { background-image: var(--ico-wheat); }
.ekos-i-pickaxe      .et_pb_blurb_content::before { background-image: var(--ico-pickaxe); }
.ekos-i-ship         .et_pb_blurb_content::before { background-image: var(--ico-ship); }
.ekos-i-factory      .et_pb_blurb_content::before { background-image: var(--ico-factory); }
.ekos-i-shield       .et_pb_blurb_content::before { background-image: var(--ico-shield-check); }
.ekos-i-shirt        .et_pb_blurb_content::before { background-image: var(--ico-shirt); }
.ekos-i-utensils     .et_pb_blurb_content::before { background-image: var(--ico-utensils); }
.ekos-i-users        .et_pb_blurb_content::before { background-image: var(--ico-users); }
.ekos-i-lock         .et_pb_blurb_content::before { background-image: var(--ico-lock); }
.ekos-i-badge-check  .et_pb_blurb_content::before { background-image: var(--ico-badge-check); }
.ekos-i-layers       .et_pb_blurb_content::before { background-image: var(--ico-layers); }
.ekos-i-clock        .et_pb_blurb_content::before { background-image: var(--ico-clock); }
.ekos-i-rocket       .et_pb_blurb_content::before { background-image: var(--ico-rocket); }
.ekos-i-shield-check .et_pb_blurb_content::before { background-image: var(--ico-shield-check); }
.ekos-i-hard-hat     .et_pb_blurb_content::before { background-image: var(--ico-hard-hat); }
.ekos-i-languages    .et_pb_blurb_content::before { background-image: var(--ico-languages); }
.ekos-i-map-pin      .et_pb_blurb_content::before { background-image: var(--ico-map-pin); }
.ekos-i-upload       .et_pb_blurb_content::before { background-image: var(--ico-upload); }
.ekos-i-whatsapp     .et_pb_blurb_content::before { background-image: var(--icoz-whatsapp); }
.ekos-i-phone        .et_pb_blurb_content::before { background-image: var(--ico-phone); }
.ekos-i-mail         .et_pb_blurb_content::before { background-image: var(--ico-mail); }
.ekos-i-star         .et_pb_blurb_content::before { background-image: var(--ico-star); }

/* ---------------------------------------------------------------------------
   11. Como funciona
   --------------------------------------------------------------------------- */
.ekos-steps > .et_pb_column {
  grid-template-columns: repeat(4, 1fr);
  gap: 28px;
  position: relative;
  counter-reset: ekos-step;
}
.ekos-steps > .et_pb_column::before {
  content: "";
  position: absolute;
  top: 23px;
  left: 12.5%;
  right: 12.5%;
  border-top: 2px dashed var(--orange-300);
  pointer-events: none;
}
.ekos-step.et_pb_blurb { position: relative; text-align: center; }
.ekos-step .et_pb_blurb_content { max-width: none; text-align: center; }
.ekos-step .et_pb_blurb_content::before {
  counter-increment: ekos-step;
  content: counter(ekos-step);
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  margin: 0 auto 24px;
  border-radius: 999px;
  background: var(--brand-primary);
  color: #fff;
  font-size: 18px;
  font-weight: 800;
  box-shadow: var(--shadow-orange);
  position: relative;
  z-index: 1;
}
.ekos-step.et_pb_blurb.et_pb_text_align_left { text-align: center !important; }
.ekos-step .et_pb_module_header {
  font-size: 18px;
  line-height: 1.25;
  margin: 0 0 10px;
  padding: 0;
  text-align: center !important;
}
.ekos-step .et_pb_blurb_description,
.ekos-step .et_pb_blurb_description p {
  font-size: 14.5px;
  line-height: 1.6;
  color: var(--text-body);
  max-width: 250px;
  margin: 0 auto;
  text-align: center !important;
}
.ekos-steps-cta.et_pb_row { margin-top: 48px; }
.ekos-steps-cta > .et_pb_column { width: 100% !important; margin: 0 !important; text-align: center; }
.ekos-steps-cta .et_pb_button_module_wrapper,
.ekos-steps-cta .et_pb_button_module_wrapper.et_pb_module_align_left { text-align: center !important; }

/* ---------------------------------------------------------------------------
   12. Cards de idioma
   --------------------------------------------------------------------------- */
.ekos-lang.et_pb_blurb {
  background: var(--surface-page);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  padding: 13px 16px;
  transition: border-color var(--t-base) var(--ease-out),
              box-shadow var(--t-base) var(--ease-out);
}
.ekos-lang.et_pb_blurb:hover { border-color: var(--brand-primary); box-shadow: var(--shadow-sm); }
.ekos-lang .et_pb_blurb_content {
  display: flex;
  align-items: center;
  gap: 12px;
  max-width: none;
  text-align: left;
}
.ekos-lang .et_pb_main_blurb_image { margin: 0; flex: none; width: 26px; line-height: 0; }
.ekos-lang .et_pb_main_blurb_image img,
.ekos-lang .et_pb_image_wrap img {
  width: 26px;
  height: 18px;
  border-radius: 3px;
  object-fit: cover;
  box-shadow: var(--shadow-xs);
  display: block;
}
.ekos-lang .et_pb_module_header {
  font-size: 15px;
  font-weight: 700;
  color: var(--text-strong);
  line-height: 1.2;
  margin: 0 0 2px;
  padding: 0;
}
.ekos-lang .et_pb_blurb_description,
.ekos-lang .et_pb_blurb_description p {
  font-size: 12.5px;
  color: var(--text-muted);
  margin: 0;
  line-height: 1.3;
}

/* ---------------------------------------------------------------------------
   13. Faixas de fechamento
   --------------------------------------------------------------------------- */
.ekos-band .et_pb_text_inner {
  display: flex;
  align-items: center;
  gap: 16px;
  background: var(--surface-page);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  padding: 20px 24px;
  font-size: 14.5px;
  line-height: 1.55;
  color: var(--text-body);
}
.ekos-band--wash .et_pb_text_inner { background: var(--gradient-wash); }
.ekos-band__ico {
  width: 22px;
  height: 22px;
  flex: none;
  display: block;
  background: var(--ico-lock) center/contain no-repeat;
}
.ekos-band a { color: var(--text-accent); font-weight: 700; text-decoration: none; white-space: nowrap; }
.ekos-band a:hover { color: var(--brand-primary); }
.ekos-band__spacer { flex: 1; }
.ekos-bandrow.et_pb_row { margin-top: 32px; }
.ekos-bandrow > .et_pb_column { width: 100% !important; margin: 0 !important; }

/* ---------------------------------------------------------------------------
   14. Depoimentos
   --------------------------------------------------------------------------- */
.ekos-tst.et_pb_testimonial {
  background: var(--surface-card) !important;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  padding: 26px !important;
  display: flex;
  flex-direction: column;
  gap: 14px;
}
/* O ::before é o ícone de aspas do Divi e o ::after é o clearfix, que dentro de
   um flex vira um item e abre um espaço extra no fim do card. */
.ekos-tst.et_pb_testimonial::before,
.ekos-tst.et_pb_testimonial::after { display: none !important; content: none !important; }
.ekos-tst .et_pb_testimonial_description { display: flex; flex-direction: column; gap: 0; flex: 1; }
.ekos-tst .et_pb_testimonial_description::before {
  content: "★★★★★";
  color: var(--star);
  font-size: 17px;
  letter-spacing: 2px;
  line-height: 1;
  margin-bottom: 14px;
}
.ekos-tst .et_pb_testimonial_description_inner { flex: 1; margin-bottom: 14px; }
.ekos-tst .et_pb_testimonial_content,
.ekos-tst .et_pb_testimonial_content p {
  font-size: 15px !important;
  line-height: 1.6 !important;
  color: var(--text-body);
  margin: 0;
}
.ekos-tst .et_pb_testimonial_portrait { display: none !important; }

/* O Divi imprime autor e meta como irmãos soltos, então o círculo de iniciais
   é posicionado sobre os dois em vez de virar um elemento próprio. */
.ekos-tst .et_pb_testimonial_author {
  display: block;
  position: relative;
  padding-left: 52px;
  margin-top: 0;
  font-size: 14.5px;
  font-weight: 700;
  color: var(--text-strong);
  font-style: normal;
  line-height: 1.3;
}
.ekos-tst .et_pb_testimonial_author::before {
  position: absolute;
  left: 0;
  top: -2px;
  width: 40px;
  height: 40px;
  border-radius: 999px;
  background: var(--orange-50);
  color: var(--orange-600);
  font-size: 14px;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
}
.ekos-tst .et_pb_testimonial_meta {
  padding-left: 52px;
  margin: 0 !important;
  font-size: 13px;
  color: var(--text-muted);
  font-style: normal;
  line-height: 1.4;
}
.ekos-tst .et_pb_testimonial_position,
.ekos-tst .et_pb_testimonial_company,
.ekos-tst .et_pb_testimonial_separator { font-size: 13px; color: var(--text-muted); font-style: normal; }

/* As iniciais vêm de uma classe por depoimento, já que o Divi não tem campo próprio. */
.ekos-tst--ar .et_pb_testimonial_author::before { content: "AR"; }
.ekos-tst--pc .et_pb_testimonial_author::before { content: "PC"; }
.ekos-tst--ap .et_pb_testimonial_author::before { content: "AP"; }
.ekos-tst--tj .et_pb_testimonial_author::before { content: "TJ"; }
.ekos-tst--dp .et_pb_testimonial_author::before { content: "DP"; }

/* ---------------------------------------------------------------------------
   15. Blog
   --------------------------------------------------------------------------- */
/* O layout em grade do Divi usa o salvattore, que reparte os posts em divs
   .column por JavaScript. `display: contents` dissolve esses wrappers e deixa
   os artigos caírem direto na grade. */
.ekos-blog .et_pb_salvattore_content { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.ekos-blog .et_pb_salvattore_content > .column { display: contents; }
.ekos-blog .et_pb_salvattore_content::before,
.ekos-blog .et_pb_salvattore_content::after { display: none; }
.ekos-blog .et_pb_post {
  background: var(--surface-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  overflow: hidden;
  padding: 0 !important;
  margin: 0 !important;
  display: flex;
  flex-direction: column;
  transition: box-shadow var(--t-base) var(--ease-out), transform var(--t-base) var(--ease-out);
}
.ekos-blog .et_pb_post:hover { box-shadow: var(--shadow-lg); transform: translateY(-3px); }
.ekos-blog .et_pb_image_container {
  margin: 0 !important;
  height: 190px;
  overflow: hidden;
  line-height: 0;
}
.ekos-blog .et_pb_image_container a,
.ekos-blog .entry-featured-image-url { display: block; height: 190px; }
.ekos-blog .et_pb_image_container img,
.ekos-blog .entry-featured-image-url img {
  width: 100%;
  height: 190px;
  object-fit: cover;
  display: block;
}
.ekos-blog .entry-title {
  font-size: 19px;
  line-height: 1.35;
  margin: 0 0 10px;
  padding: 24px 24px 0;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.ekos-blog .entry-title a { color: var(--text-strong); text-decoration: none; }
.ekos-blog .et_pb_post:hover .entry-title a { color: var(--brand-primary); }
.ekos-blog .post-content {
  padding: 0 24px 24px;
  font-size: 14.5px;
  line-height: 1.55;
  color: var(--text-body);
  flex: 1;
  display: flex;
  flex-direction: column;
}
/* O resumo ocupa duas linhas fixas para todos os cards ficarem do mesmo tamanho,
   como no protótipo. O Divi às vezes envolve o texto em um parágrafo, então o
   corte é feito por altura e não só por line-clamp. */
.ekos-blog .post-content-inner {
  margin: 0 0 16px;
  max-height: 45px;
  overflow: hidden;
}
.ekos-blog .post-content p,
.ekos-blog .post-content-inner p {
  margin: 0;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.ekos-blog .post-content .more-link,
.ekos-blog .more-link {
  margin-top: auto;
  font-size: 14px;
  line-height: 21px;
  font-weight: 700;
  color: var(--text-accent);
  text-decoration: none;
}
.ekos-blog .more-link:hover { color: var(--brand-primary); }
/* Decisão do cliente: sem categoria e sem data. */
.ekos-blog .post-meta { display: none !important; }

/* --------------------------------------------------------------------------
   Blog: listagem em /blog/ e paginação numerada
   -------------------------------------------------------------------------- */

.ekos-blog--arquivo .et_pb_ajax_pagination_container { width: 100%; }

/* A paginação é a mesma marcação em toda parte: includes/navigation.php do
   tema filho troca o "Entradas Antigas" do Divi por uma lista numerada. */
.ekos-pag {
  margin: 40px 0 0;
  text-align: center;
}
.ekos-pag__lista {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
  margin: 0;
  padding: 0 !important;
  list-style: none !important;
}
.ekos-pag__item { margin: 0; padding: 0; list-style: none; }
.ekos-pag .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 42px;
  height: 42px;
  padding: 0 12px;
  border: 1px solid var(--border-default);
  border-radius: 10px;
  background: var(--surface-card);
  color: var(--text-strong);
  font-size: 15px;
  font-weight: 600;
  text-decoration: none;
  transition: background .18s ease, border-color .18s ease, color .18s ease;
}
.ekos-pag a.page-numbers:hover {
  border-color: var(--brand-primary);
  color: var(--brand-primary);
}
.ekos-pag .page-numbers.current {
  background: var(--brand-primary);
  border-color: var(--brand-primary);
  color: #FFFFFF !important;
}
.ekos-pag .page-numbers.dots {
  border-color: transparent;
  background: transparent;
  color: var(--text-muted);
}
.ekos-pag .prev,
.ekos-pag .next { position: relative; }
.ekos-pag .prev::before,
.ekos-pag .next::before {
  content: '';
  width: 18px;
  height: 18px;
  background: var(--icot-arrow-right) center / contain no-repeat;
}
.ekos-pag .prev::before { transform: rotate(180deg); }
.ekos-pag .screen-reader-text {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}
.ekos-pag__contagem {
  margin: 14px 0 0;
  color: var(--text-muted);
  font-size: 14px;
}

/* --------------------------------------------------------------------------
   Post: template do Theme Builder
   -------------------------------------------------------------------------- */

.ekos-post-topo { padding-bottom: 0 !important; }
.ekos-post-corpo { padding-top: 28px !important; }

/* a coluna do Divi vem flutuando, e float anula o margin auto */
.et_pb_section .ekos-post-head-row > .et_pb_column {
  width: 100% !important;
  max-width: 820px;
  float: none !important;
  margin: 0 auto !important;
}

.ekos-post__head .entry-title,
.ekos-post__head h1 {
  margin: 10px 0 0;
  padding: 0;
  color: var(--text-strong);
  font-size: clamp(30px, 4vw, 42px);
  font-weight: 800;
  line-height: 1.18;
  letter-spacing: -0.02em;
}
.ekos-post__head .et_pb_title_meta_container {
  margin: 14px 0 0;
  padding: 0;
  color: var(--text-muted);
  font-size: 14px;
  font-weight: 600;
}
.ekos-post__head .et_pb_title_featured_container {
  display: block;
  margin: 26px 0 0;
}
.ekos-post__head .et_pb_title_featured_container img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
}

/* o corpo já usa .ekos-prosa, então tipografia e largura vêm de lá */
.ekos-post__body img {
  border-radius: var(--radius-md);
  margin: 10px 0 18px;
}
.ekos-post__body blockquote {
  margin: 24px 0;
  padding: 18px 22px;
  border-left: 4px solid var(--brand-primary);
  background: var(--surface-page);
  border-radius: 0 var(--radius-md) var(--radius-md) 0;
}
.ekos-post__body blockquote p:last-child { margin-bottom: 0; }

.ekos-postcta { margin-top: 0 !important; }

/* ---------------------------------------------------------------------------
   16. FAQ
   --------------------------------------------------------------------------- */
.ekos-faq.et_pb_accordion > .et_pb_toggle,
.ekos-faq .et_pb_toggle {
  border: 1px solid var(--border-subtle) !important;
  border-radius: var(--radius-md);
  background: var(--surface-card) !important;
  padding: 0 !important;
  margin-bottom: 10px !important;
  overflow: hidden;
  transition: border-color var(--t-base) var(--ease-out);
}
.ekos-faq .et_pb_toggle:last-child { margin-bottom: 0 !important; }
.ekos-faq .et_pb_toggle_open { border-color: var(--orange-200) !important; }
.ekos-faq .et_pb_toggle_title {
  padding: 18px 52px 18px 20px !important;
  font-size: 16.5px !important;
  font-weight: 600 !important;
  color: var(--text-strong) !important;
  line-height: 1.2;
  cursor: pointer;
  position: relative;
}
.ekos-faq .et_pb_toggle_title::before {
  content: "" !important;
  position: absolute;
  right: 20px;
  top: 50%;
  width: 20px;
  height: 20px;
  margin-top: -10px;
  background: var(--ico-chevron-down) center/contain no-repeat;
  transition: transform var(--t-base) var(--ease-out);
}
.ekos-faq .et_pb_toggle_open .et_pb_toggle_title::before { transform: rotate(180deg); }
.ekos-faq .et_pb_toggle_content {
  padding: 0 20px 18px !important;
  font-size: 15px;
  line-height: 1.6;
  color: var(--text-body);
}
.ekos-faq .et_pb_toggle_content p { margin: 0; }
/* O título das dúvidas frequentes cabe em uma linha só; a caixa de 620px do
   cabeçalho centralizado padrão o quebraria em duas. */
#faq .ekos-head.ekos-head--center > .et_pb_column { max-width: 880px; }

.et_pb_section .ekos-faq-row > .et_pb_column {
  width: 100% !important;
  max-width: 880px;
  float: none !important;
  margin: 0 auto !important;
}

/* ---------------------------------------------------------------------------
   17. Seção de orçamento (degradê laranja)
   --------------------------------------------------------------------------- */
.ekos-sec--cta.et_pb_section {
  background: var(--gradient-cta);
  position: relative;
  overflow: hidden;
}
.ekos-cta-row.et_pb_row {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 64px;
  align-items: start;
}
.ekos-cta-row > .et_pb_column { width: 100% !important; margin: 0 !important; }
.ekos-cta-row > .et_pb_column > .et_pb_module { margin-bottom: 20px; }

.ekos-sec--cta .ekos-eyebrow,
.ekos-sec--cta .ekos-eyebrow .et_pb_text_inner { color: rgba(255, 255, 255, 0.85); }
.ekos-sec--cta .ekos-h2 h2,
.ekos-sec--cta .ekos-h2 .et_pb_text_inner { color: #fff; }
.ekos-sec--cta .ekos-lead .et_pb_text_inner,
.ekos-sec--cta .ekos-lead p { color: #fff !important; font-size: 17.5px; line-height: 1.6; }

.ekos-contact .et_pb_text_inner { display: flex; flex-direction: column; gap: 14px; }
.ekos-contact a { color: #fff; text-decoration: none; }
.ekos-contact a:hover { color: #fff; text-decoration: underline; }
.ekos-contact__row {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 15.5px;
  color: #fff;
  line-height: 1.4;
}
.ekos-contact__row::before {
  content: "";
  width: 36px;
  height: 36px;
  flex: none;
  border-radius: 999px;
  background-color: rgba(255, 255, 255, 0.18);
  background-position: center;
  background-repeat: no-repeat;
  background-size: 17px;
}
.ekos-contact__row--phone::before { background-image: var(--icow-phone); }
.ekos-contact__row--wa::before    { background-image: var(--icow-whatsapp); }
.ekos-contact__row--mail::before  { background-image: var(--icow-mail); }
.ekos-contact__row--pin::before   { background-image: var(--icow-map-pin); }

/* ---------------------------------------------------------------------------
   18. Topbar e header (Theme Builder)
   --------------------------------------------------------------------------- */
.ekos-topbar.et_pb_section { background-color: var(--neutral-950); padding: 0 !important; }
.ekos-topbar .et_pb_row {
  width: 100% !important;
  max-width: calc(var(--container) + var(--pad-x) * 2) !important;
  padding: 9px var(--pad-x) !important;
  margin: 0 auto;
}
.ekos-topbar > .et_pb_row { display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.ekos-topbar > .et_pb_row > .et_pb_column { width: auto !important; margin: 0 !important; }
.ekos-topbar .et_pb_module { margin-bottom: 0 !important; }
.ekos-topbar .et_pb_text_inner { display: flex; align-items: center; gap: 24px; }
.ekos-topbar,
.ekos-topbar .et_pb_text_inner,
.ekos-topbar a {
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--text-on-dark-muted);
}
.ekos-topbar a { color: var(--text-on-dark-muted); text-decoration: none; font-weight: 500; }
.ekos-topbar a:hover { color: #fff; }
.ekos-topbar__link { display: inline-flex; align-items: center; gap: 8px; }
.ekos-topbar__link::before {
  content: "";
  width: 15px;
  height: 15px;
  flex: none;
  background-position: center;
  background-repeat: no-repeat;
  background-size: contain;
}
.ekos-topbar__link--phone::before { background-image: var(--icol-phone); }
.ekos-topbar__link--wa::before    { background-image: var(--icoz-whatsapp); }
.ekos-topbar__cta { color: var(--orange-300) !important; font-weight: 600; }
.ekos-topbar__cta:hover { color: #fff !important; }

/* Seletor de idioma do Polylang */
.ekos-langsw ul,
.ekos-langsw .pll-parent-menu-item ul { display: flex; align-items: center; gap: 8px; margin: 0; padding: 0; list-style: none; }
.ekos-langsw li { margin: 0; padding: 0; list-style: none; line-height: 0; }
.ekos-langsw a { display: inline-flex; border-radius: 3px; overflow: hidden; opacity: 0.6; transition: opacity var(--t-base); }
.ekos-langsw a:hover { opacity: 1; }
.ekos-langsw .current-lang a,
.ekos-langsw li.current-lang > a { opacity: 1; outline: 2px solid var(--orange-400); outline-offset: 1px; }
.ekos-langsw img { width: 22px; height: 16px; border-radius: 3px; object-fit: cover; display: block; }
.ekos-topbar__sep { border-left: 1px solid rgba(255, 255, 255, 0.16); padding-left: 18px; margin-left: 0; }

/* Header fixo.
   No Theme Builder o header vive dentro de .et-l--header, que só tem a altura
   do próprio conteúdo. Um position:sticky na seção não teria por onde deslizar,
   então quem gruda é o wrapper, deslocado para cima pela altura da topbar: a
   topbar sai de cena na rolagem e a faixa de 80px fica fixa no topo. A variável
   --ekos-topbar-h é medida no carregamento (ver ekos.php). */
.et-l--header {
  position: sticky;
  top: calc(var(--ekos-topbar-h, 38px) * -1);
  z-index: 9999;
}

.ekos-header.et_pb_section {
  position: relative;
  z-index: 500;
  background-color: rgba(252, 250, 248, 0.92);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--border-subtle);
  padding: 0 !important;
}
.ekos-header > .et_pb_row {
  width: 100% !important;
  max-width: calc(var(--container) + var(--pad-x) * 2) !important;
  padding: 0 var(--pad-x) !important;
  margin: 0 auto;
  height: var(--header-h);
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 24px;
}
.ekos-header > .et_pb_row > .et_pb_column { width: auto !important; margin: 0 !important; }
.ekos-header .et_pb_module { margin-bottom: 0 !important; }
.ekos-header__logo img { height: 46px; width: auto; display: block; }
.ekos-header__cta { justify-self: end; text-align: right; }

/* Menu principal */
.ekos-header .et_pb_menu { background: transparent !important; }
.ekos-header .et_pb_menu__wrap { justify-content: center; }
.ekos-header .et_pb_menu__menu > nav > ul { display: flex; align-items: center; gap: 26px; }
.ekos-header .et-menu li { margin: 0; padding: 0; }
.ekos-header .et-menu > li > a {
  color: var(--text-strong);
  font-size: 15px;
  font-weight: 600;
  padding: 0;
  text-decoration: none;
  line-height: var(--header-h);
}
.ekos-header .et-menu > li > a:hover,
.ekos-header .et-menu > li.current-menu-item > a,
.ekos-header .et-menu > li.current_page_item > a { color: var(--brand-primary); opacity: 1; }
.ekos-header .et-menu li li a { width: auto; }

/* Submenu de Serviços em mega menu horizontal.
   São nove serviços mais o link de fechamento: em coluna única a lista descia
   quase até o fim da tela. Em três colunas o painel fica na largura do header e
   é lido de uma olhada. */
.ekos-header .et-menu .sub-menu {
  background: var(--surface-card) !important;
  background-color: var(--surface-card) !important;
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  padding: 14px;
}

/* A grade de três colunas vale só no desktop. Abaixo de 981px o Divi troca o
   menu pelo mobile, e estas medidas quebrariam o painel dele. */
@media (min-width: 981px) {
  .ekos-header .et-menu .sub-menu {
    width: 720px !important;
    min-width: 720px;
    top: calc(var(--header-h) - 8px);
    left: 50% !important;
    transform: translateX(-50%);
    display: grid !important;
    grid-template-columns: repeat(3, 1fr);
    gap: 2px 8px;
  }
  .ekos-header .et-menu li:hover > .sub-menu { display: grid !important; }
}
.ekos-header .et-menu .sub-menu::before,
.ekos-header .et-menu .sub-menu::after { display: none !important; content: none !important; }
.ekos-header .et-menu .sub-menu li { padding: 0; width: auto !important; float: none !important; }
.ekos-header .et-menu .sub-menu a {
  display: block;
  padding: 10px 14px !important;
  border-radius: var(--radius-md);
  color: var(--text-strong) !important;
  font-size: 14.5px;
  font-weight: 600;
  line-height: 1.3;
  width: auto;
}
.ekos-header .et-menu .sub-menu a:hover {
  background: var(--orange-50);
  color: var(--brand-primary) !important;
  opacity: 1;
}
/* O link de segmentos fecha o painel ocupando a linha inteira. */
.ekos-header .et-menu .sub-menu .ekos-submenu-cta { grid-column: 1 / -1; }
/* O Divi desenha a seta do submenu com a fonte ETmodules; aqui ela dá lugar ao
   chevron do Lucide. */
/* O Divi reserva 20px à direita do item com filhos para a seta dele; a seta
   aqui é o chevron do Lucide, então esse espaço em branco sai. */
.ekos-header .et-menu > li.menu-item-has-children > a { padding-right: 0 !important; }
.ekos-header .et-menu > li.menu-item-has-children > a::after {
  content: "" !important;
  display: inline-block;
  width: 14px;
  height: 14px;
  margin-left: 6px;
  vertical-align: -2px;
  font-family: inherit !important;
  font-size: 0 !important;
  position: static !important;
  background: var(--icot-chevron-down) center/contain no-repeat;
  transition: transform var(--t-base) var(--ease-out);
  top: auto !important;
  right: auto !important;
}
.ekos-header .et-menu > li.menu-item-has-children:hover > a::after { background-image: var(--ico-chevron-down); }
.ekos-header .et-menu > li.menu-item-has-children:hover > a::after { transform: rotate(180deg); }
.ekos-header .et-menu li li.menu-item-has-children > a::after { display: none !important; }

/* Só o item da página atual fica laranja. Os links de âncora da home
   (Serviços, Idiomas) recebem a classe ekos-anchor para não contarem como
   página atual, já que a URL base é a mesma da home. */
.ekos-header .et-menu > li.ekos-anchor.current-menu-item > a,
.ekos-header .et-menu > li.ekos-anchor.current_page_item > a { color: var(--text-strong) !important; }
.ekos-header .et-menu > li.ekos-anchor > a:hover { color: var(--brand-primary) !important; }

/* Último item do submenu destacado (marcar a classe ekos-submenu-cta no item do menu) */
.ekos-header .et-menu .sub-menu .ekos-submenu-cta > a {
  color: var(--text-accent);
  font-size: 14px;
  font-weight: 700;
  border-top: 1px solid var(--border-subtle);
  border-radius: 0 0 var(--radius-md) var(--radius-md);
  margin-top: 6px;
  padding-top: 14px !important;
}

/* ---------------------------------------------------------------------------
   19. Footer (Theme Builder)
   --------------------------------------------------------------------------- */
/* O respiro extra embaixo evita que o botão flutuante do WhatsApp, fixo no
   canto inferior esquerdo, caia em cima da linha de copyright. */
.ekos-footer.et_pb_section { background-color: var(--neutral-950); padding: 56px 0 96px; }
/* A largura do rodapé vem da regra geral de container, no início do arquivo. */
.ekos-footer-cols.et_pb_row {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr 1.3fr;
  gap: 40px;
}
.ekos-footer-cols > .et_pb_column { width: 100% !important; margin: 0 !important; }
.ekos-footer .et_pb_module { margin-bottom: 16px; }
.ekos-footer .et_pb_column > .et_pb_module:last-child { margin-bottom: 0; }
/* O título de coluna cola no bloco de links que ele apresenta. */
.ekos-footer .et_pb_column > .ekos-footer__heading { margin-bottom: 16px; }
.ekos-footer,
.ekos-footer .et_pb_text_inner { color: var(--text-on-dark-muted); font-size: 14px; line-height: 1.6; }
.ekos-footer a { color: var(--text-on-dark-muted); font-size: 14px; text-decoration: none; }
.ekos-footer a:hover { color: #fff; }
.ekos-footer__heading .et_pb_text_inner,
.ekos-footer__heading {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--orange-300);
  margin-bottom: 4px;
}
/* Logo colorido, sem inversão, com respiro até o parágrafo institucional. */
.ekos-footer .ekos-footer__logo { margin-bottom: 24px !important; }
.ekos-footer__logo img { height: 46px; width: auto; display: block; }
.ekos-footer__logo a { display: inline-block; line-height: 0; }

.ekos-footer .ekos-footer__about { margin-bottom: 24px !important; }
.ekos-footer .ekos-footer__about .et_pb_text_inner,
.ekos-footer .ekos-footer__about p { max-width: 300px; color: #fff !important; }
.ekos-footer__links ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 9px; }
.ekos-footer__links li { margin: 0; padding: 0; }

/* Instagram e bandeiras ficam na mesma linha, com respiro do parágrafo acima. */
.ekos-footer__marca .et_pb_text_inner {
  display: flex;
  align-items: center;
  gap: 18px;
  flex-wrap: wrap;
}
.ekos-footer__marca .ekos-langsw { margin: 0; }

.ekos-footer__social {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.14);
  transition: background var(--t-base), border-color var(--t-base);
}
.ekos-footer__social::before {
  content: "";
  width: 18px;
  height: 18px;
  background: var(--icow-instagram) center/contain no-repeat;
}
.ekos-footer__social:hover { background: var(--brand-primary); border-color: var(--brand-primary); }

.ekos-footer__contact ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 13px; }
.ekos-footer__contact li {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  line-height: 1.5;
  margin: 0;
  padding: 0;
}
.ekos-footer__contact li::before {
  content: "";
  width: 16px;
  height: 16px;
  flex: none;
  margin-top: 3px;
  background-position: center;
  background-repeat: no-repeat;
  background-size: contain;
}
.ekos-footer__contact li.is-phone::before { background-image: var(--icol-phone); }
.ekos-footer__contact li.is-wa::before    { background-image: var(--icoz-whatsapp); }
.ekos-footer__contact li.is-mail::before  { background-image: var(--icol-mail); }
.ekos-footer__contact li.is-clock::before { background-image: var(--icol-clock); }
.ekos-footer__contact li.is-pin::before   { background-image: var(--icol-map-pin); }

.ekos-footer-bottom.et_pb_row { margin-top: 40px; }
.ekos-footer-bottom > .et_pb_column { width: 100% !important; margin: 0 !important; }
.ekos-footer-bottom .et_pb_text_inner {
  border-top: 1px solid rgba(255, 255, 255, 0.12);
  padding-top: 22px;
  display: flex;
  justify-content: space-between;
  gap: 20px;
  font-size: 13px;
  color: var(--text-on-dark-muted);
}
.ekos-footer-bottom a { font-size: 13px; }

/* ---------------------------------------------------------------------------
   19c. Páginas internas
   ---------------------------------------------------------------------------
   Padrão das institucionais e das páginas de serviço: um cabeçalho compacto
   com o mesmo wash do hero, o corpo de texto em coluna de leitura e uma faixa
   de chamada no fim. Usa os mesmos tokens da home.
   --------------------------------------------------------------------------- */
.ekos-pagehero.et_pb_section {
  position: relative;
  overflow: hidden;
  background: var(--gradient-wash);
  padding: 52px 0 56px;
}
.ekos-pagehero > .et_pb_row { position: relative; z-index: 1; }
/* Nas institucionais o cabeçalho é de coluna única e usa a largura de leitura.
   Nas páginas de serviço, que têm o formulário ao lado, as duas colunas ocupam
   o container inteiro, no mesmo alinhamento das demais seções. */
.et_pb_section.ekos-pagehero:not(.ekos-pagehero--form) > .et_pb_row > .et_pb_column {
  max-width: 820px;
  margin-right: 0 !important;
}
/* Ritmo da coluna de texto quando o hero tem formulário ao lado. Precisa vir
   depois das regras gerais do .ekos-pagehero, que zeram as margens. */
.ekos-pagehero--form .ekos-hero-row > .et_pb_column:first-child { padding-top: 0; }
.ekos-pagehero--form .ekos-hero-row > .et_pb_column > .et_pb_module.ekos-migalhas { margin-bottom: 14px; }
.ekos-pagehero--form .ekos-hero-row > .et_pb_column > .et_pb_module.ekos-eyebrow { margin-bottom: 14px; }
.ekos-pagehero--form .ekos-hero-row > .et_pb_column > .et_pb_module.ekos-h1 { margin-bottom: 16px; }
.ekos-pagehero--form .ekos-hero-row > .et_pb_column > .et_pb_module.ekos-lead { margin-bottom: 24px; }
.ekos-pagehero--form .ekos-hero-row > .et_pb_column > .et_pb_module.ekos-checks { margin-bottom: 36px; }
.ekos-pagehero--form .ekos-hero-row > .et_pb_column > .et_pb_module.ekos-provas { margin-bottom: 30px; }
.ekos-pagehero--form .ekos-hero-row > .et_pb_column > .et_pb_module.ekos-botoes { margin-bottom: 0; }
.ekos-pagehero > .et_pb_row > .et_pb_column > .et_pb_module { margin-bottom: 0; }
.ekos-pagehero > .et_pb_row > .et_pb_column > .ekos-migalhas { margin-bottom: 16px; }
.ekos-pagehero > .et_pb_row > .et_pb_column > .ekos-eyebrow { margin-bottom: 14px; }
.ekos-pagehero > .et_pb_row > .et_pb_column > .ekos-h1 { margin-bottom: 16px; }

.ekos-pagehero .ekos-h1 h1 {
  font-size: 44px;
  line-height: 1.12;
  letter-spacing: -0.028em;
}
.ekos-pagehero .ekos-lead .et_pb_text_inner,
.ekos-pagehero .ekos-lead p { font-size: 18px; line-height: 1.55; max-width: 700px; }

/* Trilha de navegação */
.ekos-migalhas .et_pb_text_inner {
  font-size: 13px;
  color: var(--text-muted);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}
.ekos-migalhas a { color: var(--text-muted); text-decoration: none; }
.ekos-migalhas a:hover { color: var(--brand-primary); }
.ekos-migalhas .sep { opacity: 0.5; }

/* A esfera do cabeçalho interno é menor que a do hero, porque a seção também é. */
.ekos-pagehero .ekos-esfera--hero { right: -160px; top: -80px; }
.ekos-pagehero .ekos-esfera--hero img { height: 400px; }

/* Corpo de texto longo. O seletor começa em .et_pb_section para vencer a regra
   do Divi que zera a margem direita da última coluna. */
.et_pb_section .ekos-prosa-row > .et_pb_column {
  width: 100% !important;
  max-width: 820px;
  float: none !important;
  margin: 0 auto !important;
}
.ekos-prosa .et_pb_text_inner { color: var(--text-body); }
.ekos-prosa p,
.ekos-prosa li {
  font-size: 16.5px;
  line-height: 1.7;
  color: var(--text-body);
}
.ekos-prosa p { margin: 0 0 18px; }
.ekos-prosa h2 {
  font-size: 26px;
  line-height: 1.28;
  letter-spacing: -0.02em;
  color: var(--text-strong);
  margin: 42px 0 14px;
  padding: 0 !important;
}
.ekos-prosa h2:first-child { margin-top: 0; }
.ekos-prosa h3 {
  font-size: 19px;
  line-height: 1.35;
  color: var(--text-strong);
  margin: 28px 0 10px;
  padding: 0 !important;
}
.ekos-prosa ul,
.ekos-prosa ol { margin: 0 0 18px; padding-left: 22px; }
.ekos-prosa li { margin-bottom: 8px; }
.ekos-prosa li::marker { color: var(--brand-primary); }
.ekos-prosa strong { color: var(--text-strong); font-weight: 700; }
.ekos-prosa a { color: var(--text-accent); font-weight: 600; }
.ekos-prosa a:hover { color: var(--brand-primary); }
.ekos-prosa hr {
  border: none;
  border-top: 1px solid var(--border-subtle);
  margin: 36px 0;
}

/* Seção de texto centralizada. As listas viram bloco centralizado, mas os itens
   continuam alinhados à esquerda: item de lista centralizado é difícil de ler. */
.ekos-prosa--centro .et_pb_text_inner { text-align: center; }
.ekos-prosa--centro p { text-align: center; }
.ekos-prosa--centro ul,
.ekos-prosa--centro ol {
  display: inline-block;
  text-align: left;
  margin-left: auto;
  margin-right: auto;
}
.ekos-prosa--centro .ekos-nota,
.ekos-prosa--centro .ekos-ficha { text-align: left; }
.ekos-prosa--centro .ekos-nota p { text-align: left; }

/* Caixa de destaque dentro do texto */
.ekos-nota {
  background: var(--orange-50);
  border: 1px solid var(--orange-200);
  border-radius: var(--radius-lg);
  padding: 20px 24px;
  margin: 0 0 24px;
}
.ekos-nota p { font-size: 15.5px; }
/* O wpautop às vezes deixa um parágrafo vazio no fim do bloco, o que abria uma
   folga dentro da caixa. */
.ekos-nota > :last-child { margin-bottom: 0 !important; }
.ekos-nota p:empty { display: none; }
.ekos-nota br:last-child { display: none; }

/* Ficha de dados da empresa */
.ekos-ficha {
  background: var(--surface-page);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  padding: 22px 24px;
  margin: 0 0 28px;
}
.ekos-ficha dl { margin: 0; display: grid; grid-template-columns: auto 1fr; gap: 8px 18px; }
.ekos-ficha dt { font-size: 14px; font-weight: 700; color: var(--text-strong); }
.ekos-ficha dd { margin: 0; font-size: 14px; color: var(--text-body); }

/* Índice da página */
.ekos-indice {
  background: var(--surface-card);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  padding: 22px 24px;
  margin: 0 0 32px;
}
.ekos-indice strong { display: block; font-size: 14px; margin-bottom: 12px; color: var(--text-strong); }
.ekos-indice ol { margin: 0; padding-left: 20px; columns: 2; column-gap: 32px; }
.ekos-indice li { font-size: 14.5px; margin-bottom: 7px; break-inside: avoid; }
.ekos-indice a { color: var(--text-body); font-weight: 500; text-decoration: none; }
.ekos-indice a:hover { color: var(--brand-primary); }

/* Cabeçalho das páginas de serviço: botões e provas sociais abaixo da chamada */
.ekos-pagehero > .et_pb_row > .et_pb_column > .ekos-lead { margin-bottom: 26px; }
.ekos-pagehero > .et_pb_row > .et_pb_column > .ekos-botoes { margin-bottom: 30px; }

.ekos-botoes--esq .et_pb_text_inner {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  justify-content: flex-start;
}

.ekos-provas .et_pb_text_inner {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 32px;
}
.ekos-prova {
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: 13.5px;
  color: var(--text-muted);
  line-height: 1.3;
  padding-left: 14px;
  border-left: 2px solid var(--orange-200);
}
.ekos-prova strong {
  font-size: 20px;
  font-weight: 800;
  color: var(--brand-primary);
  letter-spacing: -0.02em;
}

/* Faixa larga de chips de idioma nas páginas de serviço */
.ekos-chips--largo .et_pb_text_inner { max-width: none; }

/* Faixa de chamada no fim das internas */
.ekos-ctaband.et_pb_section { background: var(--gradient-cta); padding: 56px 0; }
.et_pb_section.ekos-ctaband > .et_pb_row > .et_pb_column { text-align: center; max-width: 720px; float: none !important; margin: 0 auto !important; }
.ekos-ctaband > .et_pb_row > .et_pb_column > .et_pb_module { margin-bottom: 14px; }
.ekos-ctaband h2 {
  font-size: 30px;
  line-height: 1.2;
  letter-spacing: -0.02em;
  color: #fff !important;
  padding: 0 !important;
  margin: 0;
}
.ekos-ctaband .ekos-lead p,
.ekos-ctaband .ekos-lead .et_pb_text_inner { color: #fff !important; font-size: 17px; }
.ekos-ctaband .et_pb_text_inner { text-align: center; }
.ekos-ctaband .ekos-botoes .et_pb_text_inner {
  display: flex;
  justify-content: center;
  gap: 12px;
  flex-wrap: wrap;
  margin-top: 6px;
}

@media (max-width: 767px) {
  .ekos-pagehero.et_pb_section { padding: 30px 0; }
  .ekos-pagehero .ekos-h1 h1 { font-size: 30px; }
  .ekos-pagehero .ekos-lead .et_pb_text_inner,
  .ekos-pagehero .ekos-lead p { font-size: 16px; }
  .ekos-prosa p, .ekos-prosa li { font-size: 16px; line-height: 1.65; }
  .ekos-prosa h2 { font-size: 22px; margin: 32px 0 12px; }
  .ekos-prosa h3 { font-size: 18px; margin: 22px 0 8px; }
  .ekos-indice ol { columns: 1; }
  .ekos-botoes--esq .et_pb_text_inner { flex-direction: column; }
  .ekos-botoes--esq .ekos-btn { width: 100%; }
  /* As quatro provas em dois por linha, para não virarem uma coluna alta. */
  .ekos-provas .et_pb_text_inner {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 14px 16px;
  }
  .ekos-prova { font-size: 12.5px; }
  .ekos-prova strong { font-size: 17px; }
  .ekos-pagehero > .et_pb_row > .et_pb_column > .ekos-botoes { margin-bottom: 22px; }
  .ekos-ficha dl { grid-template-columns: 1fr; gap: 2px; }
  .ekos-ficha dd { margin-bottom: 10px; }
  .ekos-ctaband.et_pb_section { padding: 40px 0; }
  .ekos-ctaband h2 { font-size: 24px; }
}

/* ---------------------------------------------------------------------------
   20. Botão flutuante de WhatsApp
   --------------------------------------------------------------------------- */
.ekos-wa-float {
  position: fixed;
  left: 24px;
  bottom: 24px;
  z-index: 9998;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 58px;
  height: 58px;
  border-radius: 999px;
  background: var(--whatsapp);
  box-shadow: var(--shadow-whatsapp);
  transition: transform var(--t-base) var(--ease-out);
  animation: ekos-wa-piscar 1.6s ease-in-out infinite;
}
.ekos-wa-float:hover { transform: scale(1.08); animation-play-state: paused; }
.ekos-wa-float::before {
  content: "";
  width: 30px;
  height: 30px;
  background: var(--icow-whatsapp) center/contain no-repeat;
}

/* Anel que pulsa junto, para o botão chamar atenção sem sumir da tela. */
.ekos-wa-float::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 999px;
  border: 2px solid var(--whatsapp);
  animation: ekos-wa-anel 1.6s ease-out infinite;
  pointer-events: none;
}

@keyframes ekos-wa-piscar {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.55; }
}
@keyframes ekos-wa-anel {
  0%   { transform: scale(1);    opacity: 0.7; }
  70%  { transform: scale(1.55); opacity: 0; }
  100% { transform: scale(1.55); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .ekos-wa-float,
  .ekos-wa-float::after { animation: none !important; opacity: 1; }
}

/* ---------------------------------------------------------------------------
   21. Gravity Forms
   --------------------------------------------------------------------------- */
.ekos-gf .gform_wrapper { margin: 0; }
.ekos-gf .gform_wrapper form { margin: 0; }
.ekos-gf .gform_fields {
  display: grid !important;
  grid-template-columns: repeat(12, 1fr) !important;
  gap: 13px 12px !important;
}
.ekos-gf .gfield { grid-column: span 12; margin: 0 !important; padding: 0 !important; }

/* Hero: nome em linha própria, WhatsApp e e-mail lado a lado, serviço em linha
   própria, os dois idiomas lado a lado. */
.ekos-gf .gfield.ekos-wa,
.ekos-gf .gfield.ekos-email,
.ekos-gf .gfield.ekos-de,
.ekos-gf .gfield.ekos-para { grid-column: span 6; }

/* Seção de orçamento: os três selects na mesma linha, como no layout. */
.ekos-sec--cta .ekos-gf .gfield.ekos-servico { grid-column: span 5; }
.ekos-sec--cta .ekos-gf .gfield.ekos-de,
.ekos-sec--cta .ekos-gf .gfield.ekos-para { grid-column: span 3; }
.ekos-sec--cta .ekos-gf .gfield.ekos-email { grid-column: span 6; }

.ekos-gf .gfield_label,
.ekos-gf .gform_wrapper legend.gfield_label {
  display: block;
  font-size: 14px;
  font-weight: 600;
  color: var(--text-strong);
  margin: 0 0 6px !important;
  padding: 0 !important;
  line-height: 20px;
}
.ekos-gf .gfield_required { color: var(--brand-primary); }

.ekos-gf input[type="text"],
.ekos-gf input[type="email"],
.ekos-gf input[type="tel"],
.ekos-gf input[type="number"],
.ekos-gf select,
.ekos-gf textarea {
  width: 100%;
  box-sizing: border-box;
  height: 46px;
  padding: 0 14px;
  background: var(--surface-page) !important;
  border: 1px solid var(--border-subtle) !important;
  border-radius: var(--radius-field) !important;
  font-family: var(--font-sans) !important;
  font-size: 16px !important;
  color: var(--text-strong) !important;
  outline: none;
  box-shadow: none;
  transition: border-color var(--t-base) var(--ease-out), box-shadow var(--t-base) var(--ease-out);
  appearance: none;
  -webkit-appearance: none;
}
/* A regra dos campos usa o atalho `background`, que zera a imagem; por isso a
   seta do select precisa vir depois e com !important. */
.ekos-gf select {
  padding-right: 40px;
  background-image: var(--icog-chevron-down) !important;
  background-repeat: no-repeat !important;
  background-position: right 14px center !important;
  background-size: 18px !important;
  background-color: var(--surface-page) !important;
  cursor: pointer;
}
.ekos-gf textarea {
  height: 65px !important;
  min-height: 65px !important;
  padding: 12px 14px;
  line-height: 1.5;
  resize: vertical;
}

/* O layout aprovado não traz marcadores de obrigatoriedade; a validação do
   Gravity Forms e o aria-required continuam funcionando normalmente. */
.ekos-gf .gfield_required,
.ekos-gf .gfield_label .gfield_required { display: none !important; }

/* O tema do Gravity Forms afasta o campo do rótulo em 8px; o layout usa 6px,
   que já vem da margem do próprio rótulo. */
.ekos-gf .ginput_container { margin-top: 0 !important; }
.ekos-gf input:focus,
.ekos-gf select:focus,
.ekos-gf textarea:focus {
  border-color: var(--border-focus) !important;
  box-shadow: var(--shadow-focus-ring) !important;
}
.ekos-gf ::placeholder { color: var(--neutral-400); opacity: 1; }

/* Campo de upload múltiplo.
   O rótulo do campo fica escondido porque a própria área tracejada já anuncia
   a ação, como no layout aprovado. */
.ekos-gf .gfield--type-fileupload .gfield_label,
.ekos-gf .gform_drop_instructions { display: none !important; }

.ekos-gf .gform_drop_area {
  display: flex;
  align-items: center;
  gap: 12px;
  background: var(--surface-page);
  border: 1.5px dashed var(--upload-border) !important;
  border-radius: var(--radius-field) !important;
  padding: 13px 16px !important;
  margin: 0 !important;
  font-size: 14px;
  color: var(--text-body);
  cursor: pointer;
  text-align: left;
  transition: border-color var(--t-base) var(--ease-out), background var(--t-base) var(--ease-out);
}
.ekos-gf .gform_drop_area:hover {
  border-color: var(--brand-primary) !important;
  background: var(--orange-50);
}
.ekos-gf .gform_drop_area::before {
  content: "";
  width: 20px;
  height: 20px;
  flex: none;
  background: var(--ico-upload) center/contain no-repeat;
}
.ekos-gf .gform_button_select_files {
  background: transparent !important;
  border: none !important;
  color: var(--text-body) !important;
  font-size: 14px !important;
  font-weight: 500 !important;
  font-family: var(--font-sans) !important;
  padding: 0 !important;
  margin: 0 !important;
  width: auto !important;
  height: auto !important;
  text-align: left;
  cursor: pointer;
  box-shadow: none !important;
}
.ekos-gf .gform_button_select_files:hover { color: var(--brand-primary-hover) !important; }

.ekos-gf .ginput_preview,
.ekos-gf .gform_delete_file { font-size: 13px; color: var(--text-muted); }
.ekos-gf .ginput_preview { margin-top: 8px; }
/* O layout aprovado não mostra a lista de extensões e limites embaixo da área
   de upload; a validação do Gravity Forms continua ativa. */
.ekos-gf .gfield_description.gform_fileupload_rules { display: none !important; }
.ekos-gf .gfield_description {
  font-size: 12px;
  color: var(--text-muted);
  line-height: 1.45;
  margin-top: 6px;
  padding: 0;
}

/* Botão de envio */
/* A legenda "campos obrigatórios" e o cabeçalho do Gravity Forms não existem no
   layout aprovado. */
.ekos-gf .gform_required_legend,
.ekos-gf .gform_heading,
.ekos-gf .gform_description { display: none !important; }

.ekos-gf .gform_footer { margin: 13px 0 0 !important; padding: 0 !important; display: block; }
.ekos-gf .gform_button,
.ekos-gf input[type="submit"] {
  width: 100% !important;
  display: block !important;
  height: 54px;
  border: none !important;
  border-radius: var(--radius-pill) !important;
  background: var(--brand-primary) !important;
  color: #fff !important;
  font-family: var(--font-sans) !important;
  font-size: 16px !important;
  font-weight: 700 !important;
  cursor: pointer;
  transition: background var(--t-base) var(--ease-out), box-shadow var(--t-base) var(--ease-out),
              transform var(--t-base) var(--ease-out);
}
.ekos-gf .gform_button:hover {
  background: var(--brand-primary-hover) !important;
  box-shadow: var(--shadow-orange);
  transform: translateY(-1px);
}

/* Divisor "ou" e botão de WhatsApp abaixo do formulário */
.ekos-or {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 12.5px;
  color: var(--text-muted);
  margin: 14px 0;
}
.ekos-or::before,
.ekos-or::after { content: ""; flex: 1; height: 1px; background: var(--border-subtle); }

/* Validação e sucesso */
.ekos-gf .gfield_error input,
.ekos-gf .gfield_error select,
.ekos-gf .gfield_error textarea { border-color: var(--danger-500) !important; }
.ekos-gf .gfield_validation_message,
.ekos-gf .validation_message {
  background: transparent !important;
  border: none !important;
  padding: 4px 0 0 !important;
  font-size: 13px;
  color: var(--danger-500) !important;
}
.ekos-gf .gform_validation_errors {
  background: #FDEDED !important;
  border: 1px solid var(--danger-500) !important;
  border-radius: var(--radius-field) !important;
  box-shadow: none !important;
  padding: 14px 16px !important;
}
.ekos-gf .gform_confirmation_message,
.ekos-gf .gform_confirmation_wrapper {
  background: var(--success-50);
  border: 1px solid var(--success-500);
  border-radius: var(--radius-field);
  padding: 16px 18px;
  font-size: 14.5px;
  line-height: 1.55;
  color: var(--text-strong);
}
.ekos-gf .gform_confirmation_message strong { display: block; font-weight: 700; margin-bottom: 4px; }

/* ---------------------------------------------------------------------------
   22. Responsivo
   --------------------------------------------------------------------------- */
@media (max-width: 1180px) {
  .ekos-header .et_pb_menu__menu > nav > ul { gap: 18px; }
}

/* ---------------------------------------------------------------------------
   19b. Menu mobile
   --------------------------------------------------------------------------- */
@media (max-width: 980px) {
  /* O Divi ancora o painel do menu no próprio botão do hambúrguer, que tem
     poucos pixels de largura. Soltando essa âncora, o painel passa a se medir
     pela linha do header. */
  /* No mobile a coluna do logo é estreita e o `max-width: 100%` do Divi
     encolhia a imagem em vez de respeitar a altura. Aqui a altura manda, a
     largura acompanha, e as três colunas passam a se medir pelo conteúdo. */
  .ekos-header > .et_pb_row {
    grid-template-columns: auto 1fr auto;
    gap: 8px;
  }
  .ekos-header__logo img {
    height: clamp(46px, 12vw, 58px) !important;
    width: auto !important;
    max-width: none !important;
  }
  /* O botão cede alguns pixels para o logo caber junto na mesma linha. */
  .ekos-header .ekos-btn,
  .ekos-header .et_pb_button.ekos-btn {
    height: 42px;
    font-size: 14px !important;
    padding: 0 16px !important;
  }

  .ekos-header > .et_pb_row { position: relative; }
  .ekos-header > .et_pb_row > .et_pb_column,
  .ekos-header .mobile_nav,
  .ekos-header .et_mobile_nav_menu,
  .ekos-header .et_pb_menu__wrap,
  .ekos-header .et_pb_menu_inner_container,
  .ekos-header .et_pb_menu { position: static !important; }

  .ekos-header .et_mobile_menu {
    position: absolute !important;
    top: calc(var(--header-h) - 6px) !important;
    left: var(--pad-x) !important;
    right: var(--pad-x) !important;
    width: auto !important;
    max-height: calc(100vh - var(--header-h) - 40px);
    overflow-y: auto;
    background: var(--surface-card) !important;
    border: 1px solid var(--border-subtle) !important;
    border-top: 1px solid var(--border-subtle) !important;
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-lg);
    padding: 10px !important;
  }
  .ekos-header .et_mobile_menu li { padding: 0; }
  .ekos-header .et_mobile_menu a {
    display: block;
    padding: 12px 14px !important;
    border-radius: var(--radius-md);
    border: none !important;
    color: var(--text-strong) !important;
    font-size: 15px;
    font-weight: 600;
    line-height: 1.3;
    min-height: 44px;
  }
  .ekos-header .et_mobile_menu a:hover { background: var(--orange-50); color: var(--brand-primary) !important; }
  .ekos-header .et_mobile_menu .sub-menu {
    display: block !important;
    width: auto !important;
    min-width: 0;
    position: static !important;
    transform: none !important;
    box-shadow: none;
    border: none;
    border-radius: 0;
    padding: 0 0 0 12px;
    background: transparent !important;
  }
  .ekos-header .et_mobile_menu .sub-menu a { font-size: 14.5px; font-weight: 500; }

  /* Hambúrguer vira X com o menu aberto. */
  .ekos-header .mobile_menu_bar::before {
    content: "" !important;
    display: block;
    width: 26px;
    height: 26px;
    background: var(--icot-menu-hamburguer) center/22px no-repeat;
  }
  .ekos-header .mobile_nav.opened .mobile_menu_bar::before {
    background-image: var(--icot-menu-fechar);
  }
}

@media (max-width: 980px) {
  :root { --sec-y: 64px; --pad-x: 24px; }

  .ekos-hero-row.et_pb_row,
  .ekos-cta-row.et_pb_row { grid-template-columns: 1fr; gap: 40px; }
  .ekos-hero-row > .et_pb_column:first-child { padding-top: 0; }

  .ekos-grid--3 > .et_pb_column,
  .ekos-grid--stats > .et_pb_column,
  .ekos-steps > .et_pb_column { grid-template-columns: repeat(2, 1fr); }
  .ekos-steps > .et_pb_column::before { display: none; }

  /* Os cards de segmento são altos e o texto fica apertado em duas colunas. */
  .ekos-grid--4 > .et_pb_column { grid-template-columns: 1fr; }
  /* Os de idioma são baixos e ficam bem distribuídos em duas colunas. */
  .ekos-grid--lang > .et_pb_column { grid-template-columns: repeat(2, 1fr); }

  .ekos-cols.et_pb_row { flex-wrap: wrap; }
  .ekos-cols > .et_pb_column { flex: 1 1 calc(50% - 10px); }

  /* A grade dos posts fica no container do salvattore, não no de paginação. */
  .ekos-blog .et_pb_salvattore_content { grid-template-columns: repeat(2, 1fr); }
  .ekos-reviews__lista { column-count: 2; }

  /* A grade destes dois cabeçalhos fica no _inner, então é lá que ela vira
     coluna única. */
  .ekos-head--split .et_pb_text_inner,
  .ekos-head--between .et_pb_text_inner {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 24px;
  }
  .ekos-head--split .ekos-head__text,
  .ekos-head--between .ekos-head__text { max-width: none; }
  .ekos-head--split .ekos-sidebox { width: 100%; }

  .ekos-footer-cols.et_pb_row { grid-template-columns: 1fr 1fr; gap: 32px; }

  .ekos-h1 h1, .ekos-h1 .et_pb_text_inner { font-size: 40px; }
  .ekos-h2 h2, .ekos-h2 .et_pb_text_inner { font-size: 32px; }
  .ekos-h2--lg h2 { font-size: 34px; }

  .ekos-esfera--hero { right: -220px; top: -160px; opacity: 0.3; }
  .ekos-esfera--langs, .ekos-esfera--cta { opacity: 0.18; }
}

@media (max-width: 767px) {
  :root { --pad-x: 20px; --sec-y: 44px; }

  .ekos-grid--3 > .et_pb_column,
  .ekos-grid--4 > .et_pb_column,
  .ekos-steps > .et_pb_column { grid-template-columns: 1fr; }

  /* Números e idiomas em dois por linha; os dois blocos são baixos e ficam
     melhor distribuídos assim do que empilhados. */
  .ekos-grid--stats > .et_pb_column,
  .ekos-grid--lang > .et_pb_column { grid-template-columns: repeat(2, 1fr); gap: 10px; }
  .ekos-stat__value { font-size: 34px; }
  .ekos-lang.et_pb_blurb { padding: 11px 12px; }
  .ekos-lang .et_pb_blurb_content { gap: 9px; }

  .ekos-hero.et_pb_section { padding: 30px 0; }

  .ekos-cols > .et_pb_column { flex: 1 1 100%; }
  .ekos-blog .et_pb_salvattore_content { grid-template-columns: 1fr; }
  .ekos-reviews__lista { column-count: 1; }
  .ekos-footer-cols.et_pb_row { grid-template-columns: 1fr; }

  .ekos-h1 h1, .ekos-h1 .et_pb_text_inner { font-size: 34px; }
  .ekos-h2 h2, .ekos-h2 .et_pb_text_inner,
  .ekos-h2--lg h2 { font-size: 28px; }
  .ekos-lead--xl .et_pb_text_inner, .ekos-lead--xl p { font-size: 17px; }

  .ekos-formcard.et_pb_column { padding: 22px; }

  .ekos-gf .gfield,
  .ekos-sec--cta .ekos-gf .gfield { grid-column: span 12 !important; }

  /* Topbar simplificada: só telefone e seletor de idioma. */
  .ekos-topbar .ekos-topbar__cta,
  .ekos-topbar .ekos-topbar__link--wa { display: none; }
  .ekos-topbar > .et_pb_row { padding-left: 20px; padding-right: 20px; }

  .ekos-footer-bottom .et_pb_text_inner { flex-direction: column; gap: 10px; }

  .ekos-band .et_pb_text_inner { flex-direction: column; align-items: flex-start; gap: 12px; }
  .ekos-band__spacer { display: none; }

  /* Alvos de toque mínimos de 44px. */
  .ekos-btn, .ekos-header .et-menu a { min-height: 44px; }
  .ekos-esfera { display: none !important; }
}

/* ---------------------------------------------------------------------------
   23. Compactação vertical no mobile
   ---------------------------------------------------------------------------
   Empilhado, o ritmo pensado para desktop deixa buracos grandes entre os
   blocos. Aqui as distâncias caem para um passo de leitura mais curto.
   --------------------------------------------------------------------------- */
@media (max-width: 767px) {
  /* O Divi devolve 30px de margem para cada módulo quando empilha as colunas. */
  .ekos-sec .et_pb_column > .et_pb_module,
  .ekos-hero .et_pb_column > .et_pb_module,
  .ekos-footer .et_pb_column > .et_pb_module { margin-bottom: 0; }

  /* No mobile o Divi também troca o padding percentual das linhas por 30px
     fixos em cima e embaixo, o que soma um vão a cada bloco. O .ekos-pagehero
     ficou de fora desta lista até agora, e por isso o cabeçalho das páginas
     internas mostrava 60px: os 30 da seção mais os 30 que o Divi devolvia
     para a linha. */
  .ekos-sec > .et_pb_row,
  .ekos-hero > .et_pb_row,
  .ekos-pagehero > .et_pb_row,
  .ekos-stats-sec > .et_pb_row,
  .ekos-footer > .et_pb_row { padding-top: 0 !important; padding-bottom: 0 !important; }

  /* O último módulo do cabeçalho carrega a margem do ritmo de leitura, que
     somava ao padding da seção e deixava a base maior que o topo. */
  .ekos-pagehero > .et_pb_row > .et_pb_column > .et_pb_module:last-child {
    margin-bottom: 0 !important;
  }

  /* Cabeçalhos de seção */
  .ekos-head.et_pb_row { margin-bottom: 26px !important; }
  .ekos-head > .et_pb_column > .et_pb_module { margin-bottom: 10px !important; }
  .ekos-head > .et_pb_column > .ekos-eyebrow { margin-bottom: 12px !important; }
  .ekos-head > .et_pb_column > .ekos-h2--lg { margin-bottom: 12px !important; }
  .ekos-head--split .et_pb_text_inner,
  .ekos-head--between .et_pb_text_inner { gap: 18px; }
  .ekos-head--split h2,
  .ekos-head--between h2 { margin: 0 0 10px; }

  /* Hero */
  .ekos-hero-row.et_pb_row { gap: 26px; }
  .ekos-hero-row > .et_pb_column > .ekos-eyebrow { margin-bottom: 12px; }
  .ekos-hero-row > .et_pb_column > .ekos-h1 { margin-bottom: 14px; }
  .ekos-hero-row > .et_pb_column > .ekos-lead { margin-bottom: 18px; }
  .ekos-hero-row > .et_pb_column > .ekos-checks { margin-bottom: 18px; }
  .ekos-hero-row > .et_pb_column > .ekos-rating { margin-bottom: 16px; }
  .ekos-checks ul { gap: 8px; }
  .ekos-lead .et_pb_text_inner,
  .ekos-lead p { font-size: 16px; }

  /* Grades e cards */
  .ekos-grid > .et_pb_column { gap: 12px; }
  .ekos-cols.et_pb_row { gap: 12px; }
  .ekos-cols.et_pb_row + .ekos-cols.et_pb_row { margin-top: 12px; }
  .ekos-cols--svc > .et_pb_column { padding: 22px; }
  .ekos-cols--svc .et_pb_button_module_wrapper { margin-top: 16px !important; }
  .ekos-why.et_pb_blurb { padding: 20px; }
  .ekos-tst.et_pb_testimonial { padding: 22px !important; }

  /* Passos e faixas de fechamento */
  #como-funciona.et_pb_section { padding: var(--sec-y) 0; }
  .ekos-stats-sec.et_pb_section { padding: 28px 0; }
  .ekos-steps > .et_pb_column { gap: 22px; }
  .ekos-step .et_pb_blurb_content::before { margin-bottom: 14px; }
  .ekos-steps-cta.et_pb_row { margin-top: 24px; }
  .ekos-bandrow.et_pb_row { margin-top: 20px; }
  .ekos-band .et_pb_text_inner { padding: 16px 18px; }

  /* Seção de orçamento e rodapé */
  .ekos-cta-row.et_pb_row { gap: 26px; }
  .ekos-cta-row > .et_pb_column > .et_pb_module { margin-bottom: 14px; }
  .ekos-contact .et_pb_text_inner { gap: 10px; }
  .ekos-footer.et_pb_section { padding: 40px 0 96px; }
  .ekos-footer-cols.et_pb_row { gap: 28px; }
  .ekos-footer .et_pb_column > .ekos-footer__heading { margin-bottom: 12px; }
  .ekos-footer .ekos-footer__logo { margin-bottom: 16px !important; }
  .ekos-footer .ekos-footer__about { margin-bottom: 16px !important; }
  .ekos-footer-bottom.et_pb_row { margin-top: 26px; }

  /* Em telas bem estreitas o botão do header encolhe mais um pouco para o
     logo, o hambúrguer e ele caberem na mesma linha. */
  .ekos-header .ekos-btn,
  .ekos-header .et_pb_button.ekos-btn { font-size: 13px !important; padding: 0 12px !important; }
}

/* Celulares estreitos (360px e abaixo): quem cede espaço é o botão, para o
   logo continuar legível. */
@media (max-width: 400px) {
  .ekos-header .ekos-btn,
  .ekos-header .et_pb_button.ekos-btn { font-size: 12px !important; padding: 0 10px !important; }
  .ekos-header > .et_pb_row { gap: 6px; }
  .ekos-header > .et_pb_row > .et_pb_column { min-width: 0; }

  /* FAQ */
  .ekos-faq .et_pb_toggle { margin-bottom: 8px !important; }
  .ekos-faq .et_pb_toggle_title { padding: 15px 46px 15px 16px !important; font-size: 15.5px !important; }
  .ekos-faq .et_pb_toggle_content { padding: 0 16px 15px !important; font-size: 14.5px; }
}