/* Schwendler Advocacia, estilos do site (tema filho do Hello Elementor). Autor: Thiago Benine.
   Mesmo CSS do layout aprovado na etapa 3; as cores e fontes globais do Elementor usam os mesmos valores do :root.
   Partes que o Elementor gratuito não faz sozinho ficam aqui: a linha do horizonte com as estações (.rota, .estacoes, .estacao),
   o WhatsApp fixo (.whats-fixo, html.whats-recolhido e html.whats-no-escuro), as gavetas de idioma e menu do celular
   (.gaveta, html.idiomas-aberto, html.menu-aberto) e a linha verde na base da foto da página de serviço (.hero-servico .foto). */

@font-face {
  font-family: "Source Serif 4";
  src: url("fontes/source-serif-4-latin-400-600.woff2") format("woff2");
  font-weight: 400 600;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Manrope";
  src: url("fontes/manrope-latin-400-600.woff2") format("woff2");
  font-weight: 400 600;
  font-style: normal;
  font-display: swap;
}

:root {
  --preto: #121614;
  --verde: #1E5C45;
  --verde-hover: #174A37;
  --verde-ativo: #123A2B;
  --verde-claro: #6FB08F;
  --verde-claro-hover: #8FC6A9;
  --verde-claro-ativo: #5E9E7E;
  --papel: #F4F2ED;
  --grafite: #5F6662;
  --branco: #FFFFFF;
  --cinza-claro: #C9D1CC;
  --fio: #DAD6CD;
  --fio-escuro: #2C332F;
  --borda-campo: #7A807C;
  --erro: #A3322A;

  --serif: "Source Serif 4", Georgia, serif;
  --sans: "Manrope", "Helvetica Neue", Arial, sans-serif;

  --max: 1240px;
  --margem: max(32px, calc((100vw - 1240px) / 2));
  --gap: 24px;
  --secao: 128px;
  --linha: 8px;
  --topo: 80px;

  color-scheme: light;
  accent-color: var(--verde);
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--topo) + 24px); scrollbar-color: var(--grafite) var(--papel); }
body { margin: 0; background: var(--branco); color: var(--preto); font: 400 17px/1.65 var(--sans); -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; caret-color: var(--verde); }
img, svg { display: block; max-width: 100%; }
a { color: inherit; }
::selection { background: var(--verde); color: var(--branco); }
:focus-visible { outline: 2px solid var(--verde); outline-offset: 3px; border-radius: 2px; }
.escuro :focus-visible, .topo :focus-visible, .rodape :focus-visible { outline-color: var(--verde-claro); }
::-webkit-scrollbar { width: 12px; }
::-webkit-scrollbar-track { background: var(--papel); }
::-webkit-scrollbar-thumb { background: var(--grafite); border: 3px solid var(--papel); border-radius: 6px; }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.num { font-variant-numeric: tabular-nums; white-space: nowrap; }

/* ---------- grade ---------- */
.wrap { width: 100%; max-width: calc(var(--max) + 2 * var(--margem)); margin-inline: auto; padding-inline: var(--margem); }
.grade { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--gap); }

/* ---------- tipografia ---------- */
h1, h2, h3, h4 { margin: 0; font-family: var(--serif); font-weight: 600; font-optical-sizing: auto; text-wrap: balance; }
p { margin: 0; text-wrap: pretty; }
.t-display { font-size: 68px; line-height: 1.06; letter-spacing: -0.015em; }
.t-h1 { font-size: 56px; line-height: 1.1; letter-spacing: -0.01em; }
.t-h2 { font-size: 46px; line-height: 1.12; letter-spacing: -0.01em; }
.t-h3 { font-size: 30px; line-height: 1.22; }
.t-h4 { font-size: 23px; line-height: 1.3; }
.t-lead { font-family: var(--serif); font-weight: 400; font-size: 21px; line-height: 1.5; }
.t-peq { font-size: 14px; line-height: 1.55; }
.t-rotulo { font: 600 13px/1.4 var(--sans); letter-spacing: 0.2em; text-transform: uppercase; }

/* ---------- botoes e links ---------- */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 12px; height: 52px; padding: 0 24px; border-radius: 4px; border: 0; font: 600 16px/1 var(--sans); letter-spacing: 0.01em; text-decoration: none; cursor: pointer; transition: background-color 180ms ease-out, color 180ms ease-out, border-color 180ms ease-out; white-space: nowrap; }
.btn svg { width: 20px; height: 20px; flex: none; }
.btn-whats { background: var(--verde); color: var(--branco); }
.btn-whats:hover { background: var(--verde-hover); }
.btn-whats:active { background: var(--verde-ativo); }
/* no fundo escuro vale a versao negativa da marca: verde claro com texto preto (o manual proibe o verde sobre o preto) */
.escuro .btn-whats, .topo .btn-whats { background: var(--verde-claro); color: var(--preto); }
.escuro .btn-whats:hover, .topo .btn-whats:hover { background: var(--verde-claro-hover); }
.escuro .btn-whats:active, .topo .btn-whats:active { background: var(--verde-claro-ativo); }
.btn-contorno { background: transparent; color: var(--preto); box-shadow: inset 0 0 0 1.5px var(--preto); }
.btn-contorno:hover { background: var(--preto); color: var(--branco); }
.btn-p { height: 44px; padding: 0 18px; font-size: 15px; }
.link { font-weight: 600; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 6px; transition: text-decoration-color 180ms ease-out, color 180ms ease-out; }
.escuro .link { color: var(--branco); text-decoration-color: var(--verde-claro); }
.escuro .link:hover { color: var(--verde-claro); }
.claro .link { color: var(--verde); text-decoration-color: currentColor; }
.claro .link:hover { color: var(--verde-hover); text-decoration-thickness: 2px; }

/* ---------- topo ---------- */
.topo { position: sticky; top: 0; z-index: 50; height: var(--topo); background: var(--preto); color: var(--branco); border-bottom: 1px solid var(--fio-escuro); }
.topo .wrap { display: flex; align-items: center; height: 100%; }
.logo { display: block; flex: none; }
.logo img { height: 40px; width: auto; }
.topo nav { margin-left: auto; }
.menu { display: flex; align-items: center; gap: 32px; margin: 0; padding: 0; list-style: none; }
.menu a { position: relative; display: block; padding: 10px 0; font: 400 15px/1 var(--sans); color: var(--branco); text-decoration: none; }
.menu a::after { content: ""; position: absolute; left: 0; bottom: 2px; width: 24px; height: 2px; background: var(--verde-claro); transform: scaleX(0); transform-origin: left; transition: transform 220ms cubic-bezier(.16, 1, .3, 1); }
.menu a:hover::after, .menu a[aria-current="page"]::after { transform: scaleX(1); }
.divisor { width: 1px; height: 20px; margin: 0 24px 0 32px; background: var(--fio-escuro); flex: none; }
.idiomas { display: flex; gap: 2px; margin: 0; padding: 0; list-style: none; }
.idiomas a { position: relative; display: block; min-width: 36px; padding: 12px 6px; text-align: center; font: 600 13px/1 var(--sans); letter-spacing: 0.12em; color: var(--cinza-claro); text-decoration: none; }
.idiomas a:hover { color: var(--branco); }
.idiomas a[aria-current="true"] { color: var(--branco); }
.idiomas a[aria-current="true"]::after { content: ""; position: absolute; left: 50%; bottom: 3px; width: 16px; height: 2px; margin-left: -8px; background: var(--verde-claro); }
.topo .btn-whats { margin-left: 24px; }
.so-movel, .gaveta { display: none; }

/* ---------- topo do site (hero) ---------- */
.escuro { background: var(--preto); color: var(--branco); }
.hero { position: relative; overflow: hidden; }
.hero .grade { align-items: end; }
.hero-texto { grid-column: 1 / span 7; align-self: start; padding: 104px 0 72px; }
.hero h1 { max-width: 12.5em; }
.hero-sub { max-width: 34em; margin-top: 28px; font-size: 19px; line-height: 1.6; color: var(--cinza-claro); }
.acoes { display: flex; flex-wrap: wrap; align-items: center; gap: 20px 32px; margin-top: 40px; }
.hero-foto { grid-column: 8 / span 5; height: 640px; margin-right: calc(-1 * var(--margem)); }
.hero-foto img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 0; -webkit-mask-image: linear-gradient(90deg, transparent, #000 96px); mask-image: linear-gradient(90deg, transparent, #000 96px); }

/* a linha do horizonte como rota: atravessa a tela e leva as estacoes */
.rota { position: relative; }
.rota-linha { height: var(--linha); background: var(--verde-claro); transform-origin: 0 50%; animation: horizonte 1100ms cubic-bezier(.16, 1, .3, 1) both; }
@keyframes horizonte { from { transform: scaleX(0); } to { transform: scaleX(1); } }
.estacoes { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); column-gap: var(--gap); margin: 0; padding: 0 0 56px; list-style: none; }
.estacao { position: relative; padding: 30px 24px 0 0; }
.estacao::before { content: ""; position: absolute; top: calc(-1 * var(--linha) / 2 - 7px); left: 0; width: 14px; height: 14px; border-radius: 50%; background: var(--branco); box-shadow: 0 0 0 4px var(--preto); }
.estacao h3, .estacao-nome { font-size: 20px; line-height: 1.3; color: var(--branco); }
.estacao-nome { display: block; font-family: var(--serif); font-weight: 600; font-optical-sizing: auto; }
.estacao p { margin-top: 8px; font-size: 15px; line-height: 1.55; color: var(--cinza-claro); }
.estacao a { color: var(--branco); text-decoration: none; border-bottom: 1px solid var(--verde-claro); }
.estacao a:hover { color: var(--verde-claro); }

/* ---------- secoes ---------- */
.secao { padding: var(--secao) 0; }
.papel { background: var(--papel); }
.branco { background: var(--branco); }
.cab-secao { align-items: end; margin-bottom: 72px; }
.cab-secao h2 { grid-column: 1 / span 5; }
.cab-secao p { grid-column: 7 / span 6; max-width: 34em; color: var(--grafite); }
.escuro .cab-secao p { color: var(--cinza-claro); }

/* areas: indice editorial em duas colunas */
.areas-colunas { display: grid; grid-template-columns: 1fr 1fr; column-gap: 72px; }
/* com 4 áreas de um lado e 3 do outro, cada coluna fecha com o fio logo abaixo da última área */
.areas-colunas.outras { align-items: start; }
.col-areas h3 { font-size: 30px; line-height: 1.22; }
.col-areas .publico { margin: 12px 0 32px; max-width: 36em; font-size: 15px; line-height: 1.6; color: var(--grafite); }
.indice { margin: 0; padding: 0; list-style: none; border-bottom: 1px solid var(--fio); }
.linha-area { display: grid; grid-template-columns: 48px minmax(0, 1fr) 24px; column-gap: 24px; align-items: start; padding: 28px 0; border-top: 1px solid var(--fio); color: inherit; text-decoration: none; }
.linha-area img { width: 48px; height: 48px; margin-top: 2px; }
.linha-area h4, .linha-area h3 { font-size: 23px; line-height: 1.3; transition: color 180ms ease-out; }
.linha-area p { margin-top: 8px; font-size: 16px; line-height: 1.6; color: var(--grafite); }
.linha-area .seta { width: 24px; height: 24px; align-self: center; color: var(--verde); transition: transform 220ms cubic-bezier(.16, 1, .3, 1); }
.linha-area:hover h4, .linha-area:hover h3 { color: var(--verde); }
.linha-area:hover .seta { transform: translateX(6px); }

/* o advogado */
.sobre .grade { align-items: start; }
.sobre-foto { position: relative; grid-column: 1 / span 5; margin: 0; }
.sobre-foto img { width: 100%; height: auto; aspect-ratio: 503 / 817; object-fit: cover; object-position: 50% 0; background: var(--preto); }
/* a linha do horizonte chega da borda da tela e termina sob a foto (verde sobre o branco, nunca sobre o preto);
   com 503 x 817 (abertura e 3 parágrafos) ela cai na mesma altura do fio que abre a Formação, que ocupa a largura toda, e o horizonte segue pelo fio */
.sobre-foto::after { content: ""; position: absolute; top: 100%; left: calc(-1 * var(--margem)); right: 0; height: var(--linha); background: var(--verde); }
.sobre-texto { grid-column: 7 / span 6; padding-top: 8px; }
.cargo { margin-top: 12px; color: var(--grafite); }
.sobre-texto .t-lead { margin-top: 36px; max-width: 30em; }
.sobre-texto .corpo { margin-top: 20px; max-width: 36em; }
.fatos { display: grid; grid-template-columns: 1fr 1fr; column-gap: var(--gap); margin: 48px 0 0; }
.fatos div { padding: 20px 0; border-top: 1px solid var(--fio); }
.fatos dt { font: 600 12px/1.4 var(--sans); letter-spacing: 0.2em; text-transform: uppercase; color: var(--grafite); }
.fatos dd { margin: 8px 0 0; font-weight: 600; font-size: 17px; line-height: 1.45; text-wrap: pretty; }
/* formação em duas linhas, um curso por linha, com um respiro curto entre eles */
.fatos .curso { display: block; }
.fatos .curso + .curso { margin-top: 6px; }
/* cinco fatos: a formação ocupa a linha inteira entre dois pares, sem buraco e sem item sozinho */
.fatos .largo { grid-column: 1 / -1; }

/* atendimento: a mesma linha, agora com os passos */
.atendimento .rota { margin-inline: calc(-1 * var(--margem)); }
.atendimento .estacoes { padding: 0 var(--margem); max-width: calc(var(--max) + 2 * var(--margem)); margin: 0 auto; }
.atendimento .estacao h3 { font-size: 22px; }
.atendimento .acoes { margin-top: 64px; }
.faixa .cab-secao { margin-bottom: 40px; }
.faixa .acoes { margin-top: 0; }
.cab-secao.so-titulo { margin-bottom: 48px; }

/* contato */
.contato .grade { align-items: start; }
.contato-info { grid-column: 1 / span 5; }
.contato-info .intro { margin-top: 24px; max-width: 28em; color: var(--grafite); }
.canais { margin: 48px 0 0; }
.canais div { padding: 18px 0; border-top: 1px solid var(--fio); }
.canais div:last-child { border-bottom: 1px solid var(--fio); }
.canais dt { font: 600 12px/1.4 var(--sans); letter-spacing: 0.2em; text-transform: uppercase; color: var(--grafite); }
.canais dd { margin: 6px 0 0; font-size: 16px; line-height: 1.55; }
.canais dd a { font-weight: 600; font-size: 19px; text-decoration: none; }
.canais dd a:hover { color: var(--verde); text-decoration: underline; text-underline-offset: 5px; }
.canais dd small { display: block; font-size: 14px; color: var(--grafite); }

.form { grid-column: 7 / span 6; padding: 48px; background: var(--branco); }
.form h3 { font-size: 30px; line-height: 1.22; }
.form .nota { margin-top: 8px; font-size: 15px; color: var(--grafite); }
.campos { display: grid; grid-template-columns: 1fr 1fr; gap: 20px 16px; margin-top: 32px; }
.campo { display: flex; flex-direction: column; gap: 8px; }
.campo.largo { grid-column: 1 / -1; }
.campo label { font: 600 14px/1.3 var(--sans); }
.campo input, .campo select, .campo textarea { width: 100%; height: 52px; padding: 0 16px; border: 1px solid var(--borda-campo); border-radius: 4px; background: var(--branco); color: var(--preto); font: 400 16px/1.4 var(--sans); transition: border-color 160ms ease-out, box-shadow 160ms ease-out; }
.campo textarea { height: 136px; padding: 14px 16px; resize: vertical; }
.campo select { appearance: none; padding-right: 44px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23121614' stroke-width='2' stroke-linecap='square'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 16px center; }
.campo ::placeholder { color: var(--grafite); opacity: 1; }
.campo input:hover, .campo select:hover, .campo textarea:hover { border-color: var(--preto); }
.campo input:focus, .campo select:focus, .campo textarea:focus { outline: none; border-color: var(--verde); box-shadow: 0 0 0 1px var(--verde); }
.aceite { display: grid; grid-template-columns: 20px 1fr; gap: 12px; align-items: start; margin-top: 24px; font-size: 14px; line-height: 1.55; color: var(--grafite); }
.aceite input { width: 20px; height: 20px; margin: 1px 0 0; accent-color: var(--verde); }
.aceite a { color: var(--verde); text-underline-offset: 3px; }
/* texto acima do botao: o mesmo estilo da nota do formulario, 24 abaixo do aceite (como o aceite abaixo da mensagem) */
.antes-enviar { margin-top: 24px; max-width: 36em; font-size: 15px; line-height: 1.6; color: var(--grafite); }
.form .btn { margin-top: 28px; }

/* ---------- rodape ---------- */
.rodape { position: relative; overflow: hidden; padding: 0 0 40px; }
.rodape-topo { position: relative; min-height: 350px; border-bottom: 1px solid var(--fio-escuro); }
.rodape-s { position: absolute; top: 0; right: 0; width: 600px; height: auto; pointer-events: none; }
.rodape-topo .grade { position: relative; }
.rodape-frase { grid-column: 1 / span 7; padding: 98px 0 96px; font: 600 44px/1.15 var(--serif); letter-spacing: -0.01em; color: var(--branco); text-wrap: balance; }
.rodape-cols { row-gap: 48px; padding-top: 72px; }
.rodape-marca { grid-column: span 3; }
.rodape-marca img { height: 40px; width: auto; }
.rodape-marca .t-rotulo { margin-top: 24px; color: var(--verde-claro); }
.rodape-col { grid-column: span 3; }
.rodape-col h2 { font: 600 12px/1.4 var(--sans); letter-spacing: 0.2em; text-transform: uppercase; color: var(--verde-claro); }
.rodape-col ul { margin: 20px 0 0; padding: 0; list-style: none; }
.rodape-col li + li { margin-top: 10px; }
.rodape-col a, .rodape-col li { font-size: 15px; line-height: 1.5; color: var(--cinza-claro); text-decoration: none; }
.rodape-col a:hover { color: var(--branco); text-decoration: underline; text-underline-offset: 4px; }
.rodape-col strong { display: block; font-weight: 600; color: var(--branco); }
.rodape-base { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px 32px; margin-top: 88px; padding-top: 24px; border-top: 1px solid var(--fio-escuro); font-size: 13px; line-height: 1.5; color: var(--cinza-claro); }
.rodape-base a { color: var(--cinza-claro); text-underline-offset: 3px; }
.rodape-base a:hover { color: var(--branco); }
.rodape-base .idiomas a { padding: 8px 6px; }
.rodape-aviso { margin-top: 4px; max-width: 46em; }

/* ---------- WhatsApp fixo ---------- */
.whats-fixo { position: fixed; right: 32px; bottom: 32px; z-index: 60; display: inline-flex; align-items: center; justify-content: center; width: 56px; height: 56px; border-radius: 4px; background: var(--verde); color: var(--branco); font: 600 16px/1 var(--sans); text-decoration: none; box-shadow: 0 12px 28px -10px rgba(18, 22, 20, .55), 0 2px 6px rgba(18, 22, 20, .2); transition: background-color 180ms ease-out, opacity 200ms ease-out, transform 280ms cubic-bezier(.16, 1, .3, 1), visibility 0s; }
/* escondido enquanto o botao de WhatsApp do topo esta na tela (site.js), para nao repetir o mesmo convite */
html.whats-recolhido .whats-fixo { opacity: 0; visibility: hidden; transform: translateY(16px); pointer-events: none; transition: background-color 180ms ease-out, opacity 200ms ease-out, transform 280ms cubic-bezier(.16, 1, .3, 1), visibility 0s linear 280ms; }
.whats-fixo svg { width: 26px; height: 26px; flex: none; }
.whats-fixo:hover { background: var(--verde-hover); }
.whats-fixo:active { background: var(--verde-ativo); }
html.whats-no-escuro .whats-fixo { background: var(--verde-claro); color: var(--preto); }
html.whats-no-escuro .whats-fixo:hover { background: var(--verde-claro-hover); }
html.whats-no-escuro .whats-fixo:active { background: var(--verde-claro-ativo); }
.whats-rotulo { position: absolute; right: calc(100% + 12px); top: 50%; padding: 11px 14px; border-radius: 4px; background: var(--preto); box-shadow: inset 0 0 0 1px var(--fio-escuro); color: var(--branco); font: 600 14px/1 var(--sans); white-space: nowrap; opacity: 0; transform: translate(6px, -50%); pointer-events: none; transition: opacity 180ms ease-out, transform 220ms cubic-bezier(.16, 1, .3, 1); }
.whats-fixo:hover .whats-rotulo, .whats-fixo:focus-visible .whats-rotulo, html.mostra-rotulo .whats-rotulo { opacity: 1; transform: translate(0, -50%); }

/* ---------- pagina de servico ---------- */
.hero-servico { position: relative; }
.hero-servico .foto { position: relative; }
.hero-servico .foto::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: var(--linha); background: var(--verde); }
.hero-servico .foto { height: 520px; background-color: var(--preto); background-position: center 42%; background-size: cover; background-repeat: no-repeat; }
/* família internacional, opção A: família atendida no escritório, de frente para o advogado; rostos à direita, acima do painel */
.hero-servico .foto.foto-familia-a { background-position: center 50%; }
/* família internacional, opção B: família reunida no exterior, no inverno; pessoas no terço direito, fora do painel */
.hero-servico .foto.foto-familia-b { background-position: center 50%; }
/* aduaneiro: porto de containers ao entardecer, com o canal no centro e o horizonte logo acima do painel */
.hero-servico .foto.foto-porto { background-position: center 50%; }
.painel { grid-column: 1 / span 8; position: relative; z-index: 1; margin-top: -232px; padding: 48px 64px 56px; background: var(--branco); }
.trilha { display: flex; flex-wrap: wrap; gap: 4px 10px; margin: 0; padding: 0; list-style: none; font-size: 14px; line-height: 1.5; color: var(--grafite); }
.trilha li + li::before { content: "/"; margin-right: 10px; color: var(--fio); }
.trilha a { color: var(--grafite); text-decoration: none; }
.trilha a:hover { color: var(--verde); text-decoration: underline; text-underline-offset: 3px; }
.painel h1 { margin-top: 24px; max-width: 13em; }
.painel .t-lead { margin-top: 20px; max-width: 32em; }
.painel .acoes { margin-top: 36px; gap: 16px; }

.servico-corpo { padding: 96px 0 var(--secao); }
.servico-corpo .grade { align-items: start; }
.leitura { grid-column: 1 / span 7; }
.leitura > .t-lead { max-width: 34em; }
.leitura h2 { margin: 88px 0 24px; font-size: 32px; line-height: 1.2; }
.leitura .apoio { max-width: 38em; margin: -8px 0 24px; color: var(--grafite); }
.marcas { margin: 0; padding: 0; list-style: none; border-bottom: 1px solid var(--fio); }
.marcas li { display: grid; grid-template-columns: 24px minmax(0, 1fr); column-gap: 16px; padding: 18px 0; border-top: 1px solid var(--fio); }
.marcas li::before { content: ""; width: 16px; height: 3px; margin-top: 0.8em; background: var(--verde); }
.marcas strong { display: block; font-family: var(--serif); font-weight: 600; font-size: 20px; line-height: 1.35; }
.marcas span { display: block; margin-top: 4px; color: var(--grafite); }
/* sem palavra sozinha na última linha do destaque e do complemento */
.marcas strong { text-wrap: balance; }
.marcas span { text-wrap: pretty; }
.marcas .nb { display: inline; margin: 0; white-space: nowrap; }
.marcas.duas { display: grid; grid-template-columns: 1fr 1fr; column-gap: var(--gap); border-bottom: 0; }
.marcas.duas li:nth-last-child(-n+2) { border-bottom: 1px solid var(--fio); }
.faq { border-bottom: 1px solid var(--fio); }
.faq details { border-top: 1px solid var(--fio); }
.faq summary { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 22px 0; list-style: none; cursor: pointer; font-family: var(--serif); font-weight: 600; font-size: 20px; line-height: 1.35; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary:hover { color: var(--verde); }
.mais { position: relative; width: 18px; height: 18px; flex: none; }
.mais::before, .mais::after { content: ""; position: absolute; background: var(--verde); }
.mais::before { left: 0; top: 7.5px; width: 18px; height: 3px; }
.mais::after { left: 7.5px; top: 0; width: 3px; height: 18px; transition: transform 200ms ease-out, opacity 200ms ease-out; }
details[open] .mais::after { transform: scaleY(0); opacity: 0; }
.faq details p { max-width: 38em; padding: 0 48px 24px 0; color: var(--grafite); }

.aside { grid-column: 9 / span 4; position: sticky; top: calc(var(--topo) + 32px); padding: 32px; background: var(--papel); }
.aside img { width: 48px; height: 48px; }
.aside h2 { margin-top: 20px; font-size: 24px; line-height: 1.25; }
.aside > p { margin-top: 10px; font-size: 15px; line-height: 1.6; color: var(--grafite); }
.aside .btn { width: 100%; margin-top: 24px; }
.aside dl { margin: 24px 0 0; }
.aside dl div { display: flex; justify-content: space-between; gap: 12px; padding: 12px 0; border-top: 1px solid var(--fio); font-size: 14px; }
.aside dt { color: var(--grafite); }
.aside dd { margin: 0; font-weight: 600; }
.aside dd a { text-decoration: none; }
.aside dd a:hover { color: var(--verde); text-decoration: underline; }

.nb { white-space: nowrap; }
/* cartao lateral em ingles: rotulo longo quebra em duas linhas equilibradas e o horario fica alinhado a direita (revisao do Lucas, 25/10) */
html[lang^="en"] .aside dt { flex-shrink: 0; max-width: 55%; text-wrap: balance; }
html[lang^="en"] .aside dd { text-align: right; text-wrap: balance; }
/* rodape em ingles: horario e atendimento sem palavra sozinha na ultima linha (revisao do Lucas, 25/10) */
html[lang^="en"] .rodape-col li { text-wrap: pretty; }

/* ---------- celular (390 px de referencia) ---------- */
@media (max-width: 1023px) {
  :root { --margem: 20px; --gap: 16px; --secao: 72px; --linha: 6px; --topo: 64px; }
  body { font-size: 16px; line-height: 1.6; }
  .grade { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .grade > * { grid-column: 1 / -1 !important; }
  .t-display { font-size: 38px; line-height: 1.1; letter-spacing: -0.01em; }
  .t-h1 { font-size: 34px; line-height: 1.12; }
  .t-h2 { font-size: 30px; line-height: 1.16; }
  .t-h3, .col-areas h3, .form h3 { font-size: 24px; line-height: 1.25; }
  .t-h4, .linha-area h4, .linha-area h3 { font-size: 20px; }
  .t-lead { font-size: 18px; }
  .t-rotulo { font-size: 12px; }

  .menu, .divisor, .topo .idiomas, .topo .btn-whats { display: none; }
  .so-movel { display: flex; }
  .logo img { height: 30px; }
  .topo-acoes { align-items: center; gap: 4px; margin-left: auto; }
  .btn-idioma, .btn-menu { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-width: 44px; height: 44px; padding: 0 10px; border: 0; background: transparent; color: var(--branco); font: 600 13px/1 var(--sans); letter-spacing: 0.12em; cursor: pointer; }
  .btn-idioma svg { width: 14px; height: 14px; }
  .btn-menu svg { width: 24px; height: 24px; }
  .gaveta { position: absolute; top: 100%; left: 0; right: 0; display: none; background: var(--preto); border-top: 1px solid var(--fio-escuro); box-shadow: 0 24px 40px -16px rgba(0, 0, 0, .6); }
  html.idiomas-aberto .gaveta-idiomas, html.menu-aberto .gaveta-menu { display: block; }
  html.idiomas-aberto body::after, html.menu-aberto body::after { content: ""; position: fixed; top: var(--topo); right: 0; bottom: 0; left: 0; z-index: 40; background: rgba(18, 22, 20, .72); }
  .gaveta ul { margin: 0; padding: 8px var(--margem) 16px; list-style: none; }
  .gaveta-idiomas a { display: flex; align-items: center; justify-content: space-between; height: 56px; border-bottom: 1px solid var(--fio-escuro); color: var(--branco); text-decoration: none; font-size: 17px; }
  .gaveta-idiomas a span { font: 600 12px/1 var(--sans); letter-spacing: 0.2em; color: var(--cinza-claro); }
  .gaveta-idiomas a[aria-current="true"] { box-shadow: inset 0 -2px 0 var(--verde-claro); }
  .gaveta-idiomas a[aria-current="true"] span { color: var(--verde-claro); }
  .gaveta-menu a { display: block; padding: 16px 0; border-bottom: 1px solid var(--fio-escuro); font: 600 24px/1.25 var(--serif); color: var(--branco); text-decoration: none; }

  .hero-texto { padding: 48px 0 40px; }
  .hero-sub { margin-top: 20px; font-size: 16px; }
  .acoes { margin-top: 28px; gap: 16px 24px; }
  .hero .acoes .btn { width: 100%; }
  .hero-foto { height: 200px; margin: 0 calc(-1 * var(--margem)); }
  .hero-foto img { object-position: 50% 20%; -webkit-mask-image: none; mask-image: none; }
  .estacoes { grid-template-columns: 1fr 1fr; row-gap: 28px; padding-bottom: 48px; }
  .estacao { padding: 26px 8px 0 0; }
  .estacao::before { width: 12px; height: 12px; top: calc(-1 * var(--linha) / 2 - 6px); }
  /* a segunda fileira de estacoes pendura na propria linha, de borda a borda */
  .estacao:nth-child(n+3) { padding-top: calc(var(--linha) + 26px); }
  .estacao:nth-child(n+3)::after { content: ""; position: absolute; top: 0; left: 0; right: calc(-1 * var(--gap)); height: var(--linha); background: var(--verde-claro); }
  .estacao:nth-child(3)::after { left: calc(-1 * var(--margem)); }
  .estacao:nth-child(4)::after { right: calc(-1 * var(--margem)); }
  .estacao:nth-child(n+3)::before { top: calc(var(--linha) / 2 - 6px); z-index: 1; }
  .estacao h3, .estacao-nome { font-size: 18px; }
  .estacao p { font-size: 14px; }

  .cab-secao { margin-bottom: 40px; row-gap: 16px; }
  .areas-colunas { grid-template-columns: 1fr; row-gap: 56px; }
  .col-areas .publico { margin: 8px 0 20px; }
  .linha-area { grid-template-columns: 40px minmax(0, 1fr) 20px; column-gap: 16px; padding: 22px 0; }
  .linha-area img { width: 40px; height: 40px; margin-top: 0; }
  .linha-area p { font-size: 15px; }
  .linha-area .seta { width: 20px; height: 20px; }

  .sobre-foto img { aspect-ratio: 4 / 3; object-position: 50% 0; }
  .sobre-foto::after { right: calc(-1 * var(--margem)); }
  .sobre-texto { padding-top: 32px; }
  .sobre-texto .t-lead { margin-top: 24px; }
  .fatos { grid-template-columns: 1fr; margin-top: 32px; }
  .fatos dd { font-size: 16px; }

  .atendimento .estacoes { grid-template-columns: 1fr; row-gap: 0; }
  .atendimento .estacao { padding: 24px 0 20px; }
  .atendimento .estacao:nth-child(n+3) { padding-top: 24px; }
  .atendimento .estacao + .estacao { border-top: 1px solid var(--fio-escuro); }
  .atendimento .estacao + .estacao::before, .atendimento .estacao::after { display: none; }
  .atendimento .estacao h3 { font-size: 20px; }
  .atendimento .acoes { margin-top: 32px; }
  .atendimento .acoes .btn { width: 100%; }

  .contato-info .intro { margin-top: 16px; }
  .canais { margin-top: 32px; }
  .canais dd a { font-size: 18px; }
  .form { margin: 48px calc(-1 * var(--margem)) 0; padding: 32px var(--margem) 40px; }
  .campos { grid-template-columns: 1fr; gap: 18px; margin-top: 24px; }
  .form .btn { width: 100%; }

  .rodape { padding-bottom: calc(32px + 60px + env(safe-area-inset-bottom)); }
  .rodape-col li + li { margin-top: 14px; }
  .rodape-topo { min-height: 0; }
  .rodape-s { width: 360px; right: -48px; top: 16px; }
  .rodape-frase { padding: 168px 0 48px; font-size: 30px; line-height: 1.18; }
  .rodape-cols { row-gap: 36px; padding-top: 48px; }
  .rodape-marca, .rodape-col { grid-column: 1 / -1; }
  .rodape-base { margin-top: 48px; flex-direction: column; align-items: flex-start; }

  .whats-fixo { left: 0; right: 0; bottom: 0; gap: 12px; width: auto; height: 60px; padding-bottom: env(safe-area-inset-bottom); border-radius: 0; font-size: 16px; box-shadow: 0 -6px 20px -8px rgba(18, 22, 20, .45); }
  .whats-fixo svg { width: 22px; height: 22px; }
  html.whats-recolhido .whats-fixo { transform: translateY(100%); }
  .whats-rotulo { position: static; padding: 0; background: none; box-shadow: none; font: inherit; opacity: 1; transform: none; }
  .outras { row-gap: 0; }
  .outras .indice:first-child { border-bottom: 0; }
  .trilha li:nth-child(2) { display: none; }

  .hero-servico .foto { height: 240px; }
  .hero-servico .foto.foto-familia-a { background-position: 80% 50%; }
  .hero-servico .foto.foto-familia-b { background-position: 90% 50%; }
  .hero-servico .foto.foto-porto { background-position: 50% 50%; }
  .painel { margin: 0 calc(-1 * var(--margem)); padding: 28px var(--margem) 32px; }
  .painel h1 { margin-top: 16px; }
  .painel .t-lead { margin-top: 16px; }
  .painel .acoes { margin-top: 24px; }
  .painel .acoes .btn { width: 100%; }
  .servico-corpo { padding: 48px 0 var(--secao); }
  .leitura h2 { margin: 56px 0 16px; font-size: 26px; }
  .marcas strong { font-size: 18px; }
  .marcas.duas { grid-template-columns: 1fr; }
  .marcas.duas li:nth-last-child(2) { border-bottom: 0; }
  .faq summary { font-size: 18px; padding: 18px 0; }
  .faq details p { padding-right: 0; }
  .aside { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .rota-linha { animation: none; }
  * { transition-duration: 1ms !important; }
}

/* ---------- WordPress ---------- */
/* bandeiras ao lado das siglas PT e EN (nota de montagem da p. 36 do layout) */
.bandeira { display: block; flex: none; width: 16px; height: 12px; border-radius: 1px; box-shadow: 0 0 0 1px rgba(255, 255, 255, .18); }
.idiomas a { display: inline-flex; align-items: center; justify-content: center; gap: 6px; }
.btn-idioma .bandeira { margin-right: 2px; }
.gaveta-idiomas b.idioma-nome { display: inline-flex; align-items: center; gap: 12px; font-weight: 400; }
.gaveta-idiomas .idioma-nome .bandeira { width: 20px; height: 15px; }
/* barra do administrador logado não cobre o topo fixo */
.admin-bar .topo { top: 32px; }
@media (max-width: 782px) { .admin-bar .topo { top: 46px; } }

