/* =========================================================
   INSTITUTO LOGUS — PSICOLOGIA E EDUCAÇÃO
   "Premium clínico": tipografia uniforme (serifada Newsreader
   nos títulos, Inter no texto), componentes em cards e ritmo
   de fundos alternados entre as seções. Sem itálico.
   ========================================================= */

:root{
  /* Cores da marca (logo) */
  --navy:     #241E5A;
  --navy-d:   #17133C;
  --chumbo:   #23202F;   /* cinza chumbo escuro: faixa das 3 dimensões */
  --roxo:     #6B3E96;
  --roxo-l:   #8B5CB8;
  --laranja:  #F2801E;
  --laranja-l:#F9A03F;

  /* Neutros */
  --tinta:    #1B1733;
  --texto:    #56526E;
  --suave:    #8B87A3;
  --branco:   #FFFFFF;
  --gelo:     #F9FAFB;   /* off-white claro */
  --gelo-2:   #F3F4F6;   /* cinza gelo: quebra de seção */
  --card:     #F8FAFC;   /* fundo dos cards soft */
  --borda:    #E5E7EB;   /* linha divisória sutil */
  --linha-2:  rgba(36,30,90,.06);

  /* Tipografia */
  --serif: 'Newsreader', Georgia, 'Times New Roman', serif;
  --sans:  'Inter', system-ui, -apple-system, sans-serif;

  /* Layout — grid um pouco mais larga: a logo encosta mais à esquerda,
     o CTA mais à direita e as colunas de texto cabem mais palavras por
     linha (o que encurta as seções na vertical). */
  --container: 1400px;
  --gut: 28px;
  --r-sm: 8px;
  --r-md: 12px;
  --r-lg: 16px;
  --r-xl: 20px;
}

*,*::before,*::after{ box-sizing:border-box; }

/* scroll-padding acompanha a altura do header fixo.
   O overflow-x fica no html (e não no body): assim o corte acontece na
   viewport e não cria contexto de recorte capaz de afetar os elementos
   position:fixed (botão flutuante do WhatsApp, header, lightbox). */
html{
  scroll-behavior:smooth;
  scroll-padding-top:110px;
  overflow-x:clip;
}

body{
  margin:0;
  font-family:var(--sans);
  font-size:17px;
  line-height:1.78;
  font-weight:400;
  color:var(--texto);
  background:var(--branco);
  -webkit-font-smoothing:antialiased;
  /* Nenhuma palavra comprida pode empurrar a largura da página */
  overflow-wrap:break-word;
}

img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }

/* Títulos: uma fonte, uma cor. Sem itálico em lugar nenhum. */
h1,h2,h3,h4{
  font-family:var(--serif);
  color:var(--tinta);
  margin:0;
  line-height:1.14;
  font-weight:400;
  font-style:normal;
  letter-spacing:-.015em;
}
h1 em, h2 em, h3 em, h4 em,
h1 i, h2 i, h3 i, h4 i{ font-style:normal; color:inherit; font-weight:inherit; }

p{ margin:0 0 1.15em; }
iframe{ border:0; display:block; }

.container{
  width:100%;
  max-width:var(--container);
  margin-inline:auto;
  padding-inline:var(--gut);
}

/* Item de grid/flex tem largura mínima automática igual ao min-content, e é
   isso que faz uma coluna estourar o container e criar scroll lateral.
   Zerando esse mínimo, tudo é obrigado a quebrar para baixo. */
.hero__inner > *, .dims__inner > *, .mv__grid > *, .values__grid > *,
.founder__grid > *, .services__grid > *, .team__inner > *,
.contact__inner > *, .contact__cards > *, .footer__inner > *{
  min-width:0;
}

/* ---------- Elementos tipográficos compartilhados ---------- */
.eyebrow{
  display:block;
  font-family:var(--sans);
  font-size:.7rem; font-weight:600; letter-spacing:.2em; text-transform:uppercase;
  color:var(--roxo);
  margin-bottom:24px;
}
.eyebrow--light{ color:var(--laranja-l); }

.section-head{ max-width:680px; margin-bottom:72px; }
.section-head--center{
  max-width:800px;
  margin-inline:auto;
  text-align:center;
}
.section-title{
  font-size:clamp(2.1rem, 4.2vw, 3.1rem);
  line-height:1.15;
}
.section-head--light .section-title{ color:var(--branco); }
.section-sub{
  margin-top:24px; margin-bottom:0;
  font-size:1.03rem; color:var(--suave);
  max-width:60ch;
}
.section-head--center .section-sub{ margin-inline:auto; }
.section-head--light .section-sub{ color:rgba(255,255,255,.62); }

/* ---------- Botões ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  font-family:var(--sans); font-weight:500; font-size:.92rem; letter-spacing:.01em;
  padding:14px 28px;
  border-radius:999px;
  border:1px solid transparent;
  background-origin:border-box;
  cursor:pointer; white-space:nowrap;
  transition:transform .22s ease, background .22s ease, color .22s ease, border-color .22s ease;
}
.btn i{ font-size:1.15rem; }
.btn--lg{ padding:16px 32px; font-size:.96rem; }
.btn{ -webkit-tap-highlight-color:transparent; }
.btn:focus{ outline:none; }
.btn:focus-visible{ outline:2px solid var(--roxo-l); outline-offset:3px; }

.btn--solid{ background:var(--navy); color:#fff; }
.btn--solid:hover{ background:var(--roxo); transform:translateY(-2px); }

.btn--outline{ border-color:var(--borda); color:var(--tinta); background:#fff; }
.btn--outline:hover{ border-color:var(--navy); transform:translateY(-2px); }

.btn--ghost{ border-color:var(--borda); color:var(--tinta); background:#fff; }
.btn--ghost:hover{ background:var(--gelo-2); border-color:var(--navy); transform:translateY(-2px); }

/* =========================================================
   HEADER
   ========================================================= */
/* O header tem fundo o tempo todo: a imagem do hero agora ocupa a seção
   inteira e um header transparente ficaria ilegível por cima dela.
   O scroll só compacta a barra, não liga/desliga o fundo. */
.header{
  position:fixed; inset:0 0 auto 0; z-index:100;
  padding:16px 0;
  background:rgba(255,255,255,.94);
  backdrop-filter:blur(18px);
  box-shadow:0 1px 0 var(--linha-2);
  transition:padding .3s ease, box-shadow .3s ease;
}
.header--scrolled{
  padding:8px 0;
  box-shadow:0 1px 0 var(--linha-2), 0 10px 28px -22px rgba(27,23,51,.65);
}
.header__inner{ display:flex; align-items:center; justify-content:space-between; gap:20px; }

.brand{ display:flex; align-items:center; flex:none; }
.brand img{ height:64px; width:auto; transition:height .3s ease; }
.header--scrolled .brand img{ height:54px; }

/* ---------- Seletor de idiomas PT / EN ----------
   Mesmo pill do projeto Luana Ferreira: botões sem borda e o ativo
   preenchido em bloco (aqui no navy da marca). Fica sempre encostado
   na direita: no desktop o margin-left:auto do nav joga nav + pill
   para lá; no mobile o nav vira dropdown e o auto passa para o
   próprio .header__right. */
.header__right{ display:flex; align-items:center; gap:14px; flex:none; }

.lang-switch{
  display:flex; flex:none;
  background:rgba(36,30,90,.04);
  border:1px solid var(--borda);
  border-radius:999px;
  padding:3px;
}
.lang-switch__btn{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--sans); font-weight:600; font-size:.76rem;
  color:var(--suave);
  background:transparent; border:none;
  padding:6px 12px;
  border-radius:999px;
  cursor:pointer; white-space:nowrap;
  transition:background .22s ease, color .22s ease;
}
.lang-switch__flag{ width:18px; height:13px; border-radius:2px; display:block; flex:none; }
.lang-switch__btn:hover{ color:var(--tinta); }
.lang-switch__btn:focus{ outline:none; }
.lang-switch__btn:focus-visible{ outline:2px solid var(--roxo-l); outline-offset:2px; }
.lang-switch__btn.is-active{ background:var(--navy); color:#fff; }

.header__cta{ flex:none; }
/* Só existe no menu mobile */
.header__nav-cta{ display:none; }

.header__nav{ display:flex; align-items:center; gap:34px; margin-left:auto; }
.header__menu{
  display:flex; align-items:center; gap:30px;
  list-style:none; margin:0; padding:0;
}
.header__menu a{
  font-size:.88rem; font-weight:500; color:var(--texto);
  position:relative; padding-bottom:3px;
  transition:color .2s ease;
}
.header__menu a::after{
  content:''; position:absolute; left:0; bottom:0; width:0; height:1.5px;
  background:var(--laranja); transition:width .25s ease;
}
.header__menu a:hover{ color:var(--tinta); }
.header__menu a:hover::after{ width:100%; }

.header__toggle{
  display:none; flex-direction:column; gap:5px;
  background:none; border:0; cursor:pointer; padding:8px;
}
.header__toggle span{
  width:24px; height:1.5px; background:var(--tinta); border-radius:2px;
  transition:transform .25s ease, opacity .25s ease;
}
.header__toggle--active span:nth-child(1){ transform:translateY(6.5px) rotate(45deg); }
.header__toggle--active span:nth-child(2){ opacity:0; }
.header__toggle--active span:nth-child(3){ transform:translateY(-6.5px) rotate(-45deg); }

/* =========================================================
   1. HERO — full-bleed 100vh, split 50/50
   A metade direita é imagem pura: sangra até a borda da tela,
   sem gap, sem padding e sem border-radius.
   ========================================================= */
.hero{
  /* Altura travada: a seção inteira — texto e imagem — cabe em uma tela.
     min-height só entra em janelas absurdamente baixas. */
  height:100vh;
  min-height:600px;
  padding:0;
  background:var(--gelo);
  display:flex;
  overflow:hidden;
}
.hero__inner{
  width:100%; height:100%;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:0;
  align-items:stretch;
}
.hero__content{
  text-align:left;
  display:flex; flex-direction:column; justify-content:center;
  /* padding em vh: encolhe junto com a tela para nada estourar */
  padding-block:clamp(104px, 14vh, 168px) clamp(36px, 7vh, 84px);
  padding-inline-start:max(var(--gut), calc((100vw - var(--container)) / 2 + var(--gut)));
  padding-inline-end:clamp(32px, 5vw, 84px);
}
/* Tipografia do hero limitada também pela ALTURA da janela (vh),
   e não só pela largura — é isso que impede o scroll. */
/* O limite real do título é a LARGURA da coluna (a linha "Instituto Logus."
   precisa caber), não a altura: sobra folga vertical mesmo em telas baixas.
   Por isso o termo em vh é generoso e quem manda no dia a dia é o vw. */
.hero__title{
  font-size:clamp(2.6rem, min(5.4vw, 11vh), 4.7rem);
  line-height:1.05;
  font-weight:400;
  letter-spacing:-.028em;
  color:var(--tinta);
}
/* Em inglês a segunda linha ("we are Instituto Logus.") é ~39% mais larga que
   a portuguesa ("Instituto Logus.") e quebrava em 3 linhas. Escala reduzida
   na proporção da diferença, aplicada só quando o idioma é o inglês. */
html[lang="en"] .hero__title{
  font-size:clamp(2.1rem, min(4.3vw, 9vh), 3.75rem);
}
.hero__lead{
  margin:clamp(16px, 2.6vh, 30px) 0 0;
  font-family:var(--serif);
  font-size:clamp(1.15rem, min(1.9vw, 3vh), 1.6rem);
  line-height:1.45;
  font-weight:400;
  color:var(--navy);
}
.hero__sub{
  margin:clamp(12px, 2vh, 20px) 0 0;
  max-width:52ch;
  font-size:clamp(.97rem, min(1.1vw, 1.9vh), 1.08rem);
  line-height:1.65;
  color:var(--suave);
}
/* Os dois botões ficam sempre lado a lado, em qualquer largura */
.hero__actions{
  display:flex; flex-wrap:nowrap;
  align-items:center; justify-content:flex-start;
  gap:1rem;
  margin-top:clamp(22px, 4vh, 42px);
}

/* A imagem ocupa 100% da metade direita — nada de caixa em volta */
.hero__media{
  width:100%; height:100%;
  margin:0; padding:0;
  min-height:0; min-width:0;
  overflow:hidden;
}
.hero__img{
  width:100%; height:100%;
  object-fit:cover;
  /* Foto exportada em 1:1, a proporção do slot (50vw x 100vh fica entre
     0,88 e 1,08 nos monitores comuns): enquadramento central. */
  object-position:center;
  border-radius:0;
  background:var(--gelo-2);
}

/* =========================================================
   1b. AS TRÊS DIMENSÕES — faixa escura full-width
   ========================================================= */
.dims{
  width:100%;
  background:var(--chumbo);
  color:#fff;
}
.dims__inner{
  display:flex; align-items:center; justify-content:space-around;
  gap:24px;
  padding-block:2rem;
}
.dim{
  display:flex; align-items:center; gap:18px;
  flex:1;
  padding:12px 28px;
  /* linha vertical muito sutil separando os itens */
  border-left:1px solid rgba(255,255,255,.11);
}
.dim:first-child{ border-left:0; padding-left:0; }
.dim:last-child{ padding-right:0; }
.dim > i{
  font-size:1.85rem; color:var(--laranja-l);
  flex:none; line-height:1;
}
.dim__text{ display:block; min-width:0; }
.dim strong{
  display:block;
  font-family:var(--serif); font-size:1.28rem; font-weight:400;
  color:#fff; line-height:1.25;
}
.dim__text > span{
  display:block; margin-top:4px;
  font-size:.9rem; line-height:1.5;
  color:rgba(255,255,255,.62);
}

/* =========================================================
   2. MISSÃO E VISÃO — cinza gelo, o mesmo fundo da seção do Fundador
   ========================================================= */
.mv{
  padding:130px 0;
  background:var(--gelo-2);
  color:var(--texto);
}
.mv__grid{
  display:grid; grid-template-columns:repeat(2,1fr);
  gap:32px;
}
/* Cards brancos, sem contorno: só a sombra projetada dá o relevo */
.mv__item{
  background:var(--branco);
  border:0;
  border-radius:var(--r-lg);
  padding:52px 48px;
  box-shadow:0 10px 30px rgba(0,0,0,.08);
}
.mv__icon{
  display:inline-flex; align-items:center; justify-content:center;
  width:52px; height:52px; border-radius:50%;
  background:rgba(242,128,30,.12);
  color:var(--laranja);
  font-size:1.5rem;
  margin-bottom:26px;
}
.mv__label{
  display:block;
  font-family:var(--serif); font-size:1.7rem; font-weight:400;
  color:var(--tinta);
  margin-bottom:20px;
}
.mv__item p{
  margin:0;
  font-size:1.04rem; line-height:1.88;
  color:var(--texto);
  max-width:62ch;   /* com a grid mais larga, evita linha longa demais */
}

/* =========================================================
   3. VALORES — grid de cards soft
   ========================================================= */
.values{ padding:130px 0; background:var(--branco); }
.values__grid{
  display:grid; grid-template-columns:repeat(3,1fr);
  gap:24px;
}
.value{
  background:var(--card);
  border-radius:var(--r-sm);
  padding:2rem;
  transition:transform .25s ease, background .25s ease;
}
.value:hover{ transform:translateY(-3px); background:var(--gelo-2); }
.value__num{
  display:block;
  font-family:var(--sans);
  font-size:1.9rem; font-weight:600; letter-spacing:-.02em; line-height:1;
  color:var(--laranja);
  margin-bottom:20px;
}
.value h3{
  font-family:var(--sans);
  font-size:1.08rem; font-weight:600; line-height:1.4;
  letter-spacing:-.01em;
  color:var(--tinta);
  margin-bottom:14px;
}
.value p{
  margin:0;
  font-size:.95rem; line-height:1.78; color:var(--texto);
}

/* =========================================================
   4. FUNDADOR — full-bleed espelhado: imagem sangrando à esquerda,
   texto à direita. Mesma mecânica do Hero, invertida.
   ========================================================= */
.founder{
  padding:0;
  background:var(--gelo-2);
}
.founder__grid{
  width:100%;
  min-height:100vh;
  display:grid; grid-template-columns:1fr 1fr;
  gap:0;
  align-items:stretch;
}
/* A imagem acompanha o scroll do texto e se estica por TODA a altura da
   seção. Como a coluna fica alta e estreita, o cover passa a cortar pelas
   laterais em vez do topo — ou seja, a cabeça dele fica inteira. */
.founder__media{
  margin:0; padding:0; background:none;
  position:relative;
  width:100%;
  min-height:0; min-width:0;
  overflow:hidden;
}
.founder__img{
  position:absolute; inset:0;
  width:100%; height:100%;
  object-fit:cover; object-position:center;
  max-height:none;
  border-radius:0;
  background:var(--gelo-2);
}
.founder__body{
  display:flex; align-items:center;
  min-height:100vh;
  padding-block:clamp(80px, 11vh, 128px);
  /* à direita acompanha a calha do .container; à esquerda respira da imagem */
  padding-inline-start:clamp(32px, 5vw, 80px);
  padding-inline-end:max(var(--gut), calc((100vw - var(--container)) / 2 + var(--gut)));
}
.founder__inner{ max-width:none; }
.founder__name{
  font-size:clamp(2.1rem, 3vw, 2.8rem);
  margin-bottom:10px;
}
.founder__role{
  font-size:.76rem; font-weight:600; letter-spacing:.16em; text-transform:uppercase;
  color:var(--suave);
  margin-bottom:32px;
}
.founder__bio{ margin-bottom:40px; }
.founder__quote{
  font-family:var(--serif); font-style:normal;
  font-size:1.24rem; line-height:1.6; color:var(--navy);
  margin-bottom:30px;
}
/* Bio longa: corpo confortável de leitura e respiro entre parágrafos */
.founder__bio p:not(.founder__quote){
  font-size:1rem; line-height:1.82;
  margin-bottom:1.2em;
}
/* A virada da narrativa ("Foi a partir dessa trajetória...") ganha destaque
   para quebrar o bloco de texto */
.founder__turn{
  font-family:var(--serif);
  font-size:1.18rem; line-height:1.5;
  color:var(--navy);
  padding-left:20px;
  border-left:2px solid var(--laranja);
}
.founder__bio p.founder__turn{ margin-block:1.6em; }
.founder__bio p:last-child{ margin-bottom:0; }

/* =========================================================
   5. SERVIÇOS (grid estilo portfólio)
   ========================================================= */
.services{ padding:130px 0; background:var(--branco); }
.services__grid{
  display:grid; grid-template-columns:repeat(3,1fr);
  gap:56px 40px;
}
.service{ display:flex; flex-direction:column; }
.service__media{
  overflow:hidden;
  border-radius:var(--r-sm);
  background:var(--gelo-2);
  aspect-ratio:3/2;
}
.service__media img{
  width:100%; height:100%; object-fit:cover;
  transition:transform .6s cubic-bezier(.2,.7,.3,1);
}
.service:hover .service__media img{ transform:scale(1.04); }
.service__body{ padding:26px 0 0; }
.service__num{
  display:block;
  font-family:var(--sans); font-size:.72rem; font-weight:600; letter-spacing:.18em;
  color:var(--laranja);
  margin-bottom:12px;
}
.service h3{
  font-size:1.3rem; line-height:1.32;
  margin-bottom:12px;
}
.service p{
  margin:0;
  font-size:.95rem; line-height:1.75; color:var(--suave);
}
/* São 7 serviços: o último sobra sozinho na terceira linha.
   Empurrado para a coluna do meio, ele fica centralizado. */
@media (min-width:901px){
  .services__grid > .service:last-child{ grid-column:2; }
}

/* =========================================================
   6. NOSSO TIME — split 50/50
   ========================================================= */
.team{ padding:130px 0; background:var(--gelo); }
.team__inner{
  display:grid; grid-template-columns:1fr 1fr;
  gap:72px;
  align-items:center;
}
.team__content{ max-width:520px; }
.team__text{
  margin:26px 0 0;
  font-size:1.01rem; color:var(--texto);
}
.team__btn{ margin-top:36px; }
.team__figure{ margin:0; }
/* A foto vira botão: clique abre o lightbox */
.team__zoom{
  display:block; position:relative;
  width:100%; padding:0; border:0; background:none;
  cursor:zoom-in;
  border-radius:var(--r-lg);
  overflow:hidden;
  -webkit-tap-highlight-color:transparent;
}
.team__zoom:focus{ outline:none; }
.team__zoom:focus-visible{ outline:2px solid var(--roxo-l); outline-offset:4px; }
.team__figure img{
  width:100%;
  max-height:520px;
  object-fit:cover;
  border-radius:var(--r-lg);
  transition:transform .5s cubic-bezier(.2,.7,.3,1);
}
.team__zoom:hover img{ transform:scale(1.03); }
.team__zoom-hint{
  position:absolute; right:16px; bottom:16px;
  display:inline-flex; align-items:center; justify-content:center;
  width:44px; height:44px; border-radius:50%;
  background:rgba(255,255,255,.92); color:var(--navy);
  font-size:1.25rem;
  box-shadow:0 10px 24px -12px rgba(27,23,51,.6);
  opacity:0; transform:translateY(6px);
  transition:opacity .25s ease, transform .25s ease;
  pointer-events:none;
}
.team__zoom:hover .team__zoom-hint,
.team__zoom:focus-visible .team__zoom-hint{ opacity:1; transform:none; }

/* ---------- Lightbox (pop-up da foto da equipe) ---------- */
body.no-scroll{ overflow:hidden; }

.lightbox{
  position:fixed; inset:0; z-index:300;
  display:none;
  align-items:center; justify-content:center;
  padding:clamp(20px, 5vw, 64px);
  background:rgba(0,0,0,.8);
  backdrop-filter:blur(3px);
}
.lightbox--open{ display:flex; animation:lb-in .25s ease both; }
@keyframes lb-in{ from{ opacity:0; } to{ opacity:1; } }

.lightbox__figure{
  margin:0;
  max-width:100%; max-height:100%;
  display:flex; align-items:center; justify-content:center;
}
.lightbox__img{
  max-width:min(1100px, 92vw);
  max-height:88vh;
  width:auto; height:auto;
  object-fit:contain;
  border-radius:var(--r-md);
  box-shadow:0 40px 90px -40px rgba(0,0,0,.9);
}
.lightbox__close{
  position:absolute; top:22px; right:24px;
  display:inline-flex; align-items:center; justify-content:center;
  width:46px; height:46px; border-radius:50%;
  background:rgba(255,255,255,.12);
  border:1px solid rgba(255,255,255,.22);
  color:#fff; font-size:1.4rem;
  cursor:pointer;
  transition:background .22s ease, transform .22s ease;
}
.lightbox__close:hover{ background:rgba(255,255,255,.24); transform:scale(1.06); }
.lightbox__close:focus{ outline:none; }
.lightbox__close:focus-visible{ outline:2px solid #fff; outline-offset:3px; }

/* =========================================================
   7. CONTATO
   ========================================================= */
.contact{ padding:130px 0; background:var(--branco); }
.contact__inner{
  display:grid; grid-template-columns:minmax(0,.86fr) minmax(0,1.14fr);
  gap:24px;
  align-items:stretch;
}
.contact__cards{ display:flex; flex-direction:column; gap:16px; }
.ccard{
  display:flex; align-items:center; gap:18px;
  flex:1;
  padding:24px 26px;
  border-radius:var(--r-sm);
  background:var(--card);
  transition:transform .25s ease, background .25s ease;
}
a.ccard:hover{ transform:translateY(-2px); background:var(--gelo-2); }
.ccard__icon{
  display:inline-flex; align-items:center; justify-content:center;
  flex:none; width:46px; height:46px; border-radius:50%;
  background:#fff; color:var(--navy);
  font-size:1.3rem;
}
a.ccard:hover .ccard__icon{ background:var(--navy); color:#fff; }
.ccard__text{ display:flex; flex-direction:column; line-height:1.5; min-width:0; }
.ccard__text strong{
  font-family:var(--sans); font-size:.7rem; font-weight:600;
  letter-spacing:.16em; text-transform:uppercase; color:var(--suave);
}
.ccard__text > span{ font-size:1.02rem; color:var(--tinta); }
.ccard__go{ margin-left:auto; color:var(--suave); font-size:1.05rem; flex:none; }

/* ---------- Card do endereço + botão de copiar ---------- */
.ccard--address{
  position:relative;
  padding-right:70px;   /* espaço reservado para o botão do canto */
}
.ccard__address{
  font-size:1.02rem; line-height:1.45;
  font-weight:500; color:var(--tinta);
  transition:color .2s ease;
}
a.ccard__address:hover{ color:var(--roxo); text-decoration:underline; text-underline-offset:3px; }

.ccard__copy{
  position:absolute; top:12px; right:12px;
  display:inline-flex; align-items:center; justify-content:center;
  width:36px; height:36px;
  border-radius:var(--r-sm);
  background:rgba(36,30,90,.06);
  border:1px solid var(--borda);
  color:var(--navy);
  cursor:pointer;
  transition:background .22s ease, color .22s ease, border-color .22s ease, transform .22s ease;
}
.ccard__copy i{ font-size:1.05rem; line-height:1; }
.ccard__copy:hover{
  background:var(--navy); border-color:var(--navy); color:#fff;
  transform:translateY(-1px);
}
.ccard__copy:focus{ outline:none; }
.ccard__copy:focus-visible{ outline:2px solid var(--roxo-l); outline-offset:2px; }
.ccard__copy--copied,
.ccard__copy--copied:hover{
  background:var(--laranja); border-color:var(--laranja); color:#fff;
}

.contact__map{
  border-radius:var(--r-sm);
  overflow:hidden;
  background:var(--card);
  min-height:452px;
}
.contact__map iframe{ width:100%; height:100%; min-height:452px; filter:grayscale(.28); }

/* =========================================================
   RODAPÉ
   ========================================================= */
.footer{
  background:var(--navy-d);
  color:rgba(255,255,255,.62);
  padding:96px 0 30px;
}
.footer__inner{
  display:grid; grid-template-columns:1.6fr .8fr .9fr 1.1fr;
  gap:48px;
  padding-bottom:56px;
}
.footer__logo{
  height:76px; width:auto; margin-bottom:24px;
  /* O logo é escuro sobre branco: no rodapé escuro entra em um selo claro */
  background:#fff; border-radius:12px; padding:10px 14px;
}
.footer__brand p{ font-size:.92rem; margin:0; max-width:38ch; line-height:1.75; }
.footer__label{
  font-family:var(--sans); font-size:.7rem; font-weight:600;
  letter-spacing:.16em; text-transform:uppercase;
  color:var(--laranja-l);
  margin:0 0 18px;
}
.footer__col{ display:flex; flex-direction:column; gap:11px; }
.footer__col a, .footer__col span{ font-size:.92rem; transition:color .2s ease; }
.footer__col a:hover{ color:#fff; }

/* Endereço do rodapé */
.footer__address{ font-style:normal; }
.footer__address a{
  display:flex; align-items:flex-start; gap:10px;
  font-size:.92rem; line-height:1.65;
  transition:color .2s ease;
}
.footer__address a:hover{ color:#fff; }
.footer__address i{ color:var(--laranja-l); font-size:1.05rem; margin-top:3px; flex:none; }

.footer__bottom{
  display:flex; align-items:center; justify-content:space-between; gap:20px;
  padding-top:26px;
  border-top:1px solid rgba(255,255,255,.12);
}
.footer__bottom p{ margin:0; font-size:.82rem; color:rgba(255,255,255,.42); }
.footer__social{ display:flex; gap:10px; }
.footer__social a{
  display:inline-flex; align-items:center; justify-content:center;
  width:38px; height:38px; border-radius:50%;
  border:1px solid rgba(255,255,255,.18);
  font-size:1.1rem;
  transition:background .22s ease, color .22s ease, border-color .22s ease;
}
.footer__social a:hover{ background:var(--laranja); border-color:var(--laranja); color:var(--navy-d); }

/* =========================================================
   WHATSAPP FLUTUANTE
   ========================================================= */
.whatsapp-float{
  /* Sempre visível, em qualquer ponto do scroll. O max() com env() mantém o
     botão acima da barra do navegador / área segura nos celulares. */
  position:fixed; z-index:200;
  right:max(20px, env(safe-area-inset-right, 0px));
  bottom:max(20px, env(safe-area-inset-bottom, 0px));
  width:56px; height:56px; border-radius:50%;
  background:#25D366; color:#fff;
  display:inline-flex; align-items:center; justify-content:center;
  font-size:1.8rem;
  box-shadow:0 14px 30px -14px rgba(37,211,102,.9);
  transition:transform .25s ease;
}
.whatsapp-float:hover{ transform:scale(1.08); }

/* =========================================================
   REVELAÇÃO AO SCROLL
   ========================================================= */
.reveal{ opacity:0; transform:translateY(22px); transition:opacity .7s ease, transform .7s ease; }
.reveal.is-visible{ opacity:1; transform:none; }

@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  .reveal{ opacity:1; transform:none; transition:none; }
  *{ animation:none !important; }
}

/* =========================================================
   RESPONSIVO
   ========================================================= */
/* Com o hero em 50/50 a coluna de texto é mais estreita que antes:
   os dois botões encolhem para continuarem na mesma linha. */
@media (min-width:901px) and (max-width:1280px){
  .hero__actions .btn--lg{ padding:15px 22px; font-size:.89rem; }
}

@media (max-width:1080px){
  .header__nav{ gap:20px; }
  .header__menu{ gap:18px; }
  .header__menu a{ font-size:.82rem; }
  .header__right{ gap:11px; }
  .lang-switch__btn{ font-size:.7rem; padding:5px 9px; gap:5px; }
  .lang-switch__flag{ width:16px; height:11px; }
  .header__cta{ padding:11px 18px; font-size:.85rem; }

  .hero__content{ padding-inline-end:clamp(28px, 4vw, 56px); }
  .dim{ padding:12px 20px; gap:14px; }
  .dim strong{ font-size:1.15rem; }
  .dim__text > span{ font-size:.85rem; }
  .mv__item{ padding:44px 38px; }
  .founder__body{ padding-inline-start:clamp(28px, 4vw, 56px); }
  .team__inner{ gap:48px; }
  .services__grid{ gap:48px 32px; }
}

/* O header colapsa antes do resto do layout */
@media (max-width:1024px){
  .header__toggle{ display:flex; }
  .header{ padding:10px 0; }
  .header__right{ margin-left:auto; }
  .header__nav{
    position:absolute; inset:100% 0 auto 0;
    flex-direction:column; align-items:stretch; gap:0;
    background:var(--branco);
    border-top:1px solid var(--borda);
    padding:12px 24px 26px;
    box-shadow:0 20px 40px -30px rgba(27,23,51,.7);
    display:none;
  }
  .header__nav--open{ display:flex; }
  .header__menu{ flex-direction:column; align-items:stretch; gap:0; }
  .header__menu a{
    display:block; padding:14px 0; font-size:1rem;
    border-bottom:1px solid var(--linha-2);
  }

  /* O CTA sai da barra e vai para dentro do menu, em largura cheia.
     Na barra sobram só a logo, o seletor de idioma e o hambúrguer. */
  .header__cta{ display:none; }
  .header__nav-cta{
    display:inline-flex;
    width:100%;
    margin-top:18px;
    padding:15px 24px;
  }

  html{ scroll-padding-top:96px; }
  .hero__content{ padding-block:clamp(96px, 13vh, 150px) clamp(32px, 6vh, 76px); }
}

@media (max-width:900px){
  /* Hero empilha: texto em cima, imagem sangrando embaixo */
  .hero{ height:auto; min-height:0; display:block; overflow:visible; }
  .hero__inner{
    grid-template-columns:1fr; gap:0;
    height:auto; min-height:0;
  }
  .hero__content{
    padding-block:140px 72px;
    padding-inline:var(--gut);
  }
  .hero__media{ height:auto; }
  .hero__img{ height:56vh; min-height:340px; max-height:480px; }

  /* Empilhado, o divisor vertical vira horizontal */
  .dims__inner{ flex-direction:column; align-items:stretch; gap:0; padding-block:1rem; }
  .dim{
    padding:24px 0;
    border-left:0;
    border-top:1px solid rgba(255,255,255,.11);
  }
  .dim:first-child{ border-top:0; padding-left:0; }
  .dim:last-child{ padding-right:0; }

  .mv{ padding:100px 0; }
  .mv__grid{ grid-template-columns:1fr; gap:24px; }

  .values{ padding:100px 0; }
  .values__grid{ grid-template-columns:repeat(2,1fr); }

  /* Fundador no mobile tem outra ordem: título, foto e só então o texto.
     display:contents dissolve os wrappers para que o cabeçalho e a foto
     virem irmãos na mesma grid e possam ser reordenados com `order`. */
  .founder__grid{ grid-template-columns:1fr; gap:0; min-height:0; }
  .founder__body,
  .founder__inner{ display:contents; }

  .founder__head{ order:1; padding:96px var(--gut) 30px; }
  .founder__media{ order:2; }
  .founder__bio{ order:3; padding:44px var(--gut) 0; margin-bottom:0; }
  .founder__cta{ order:4; margin:30px var(--gut) 100px; }

  /* Quadrada, com o topo sempre preservado: o corte sai por baixo */
  .founder__media{
    aspect-ratio:1/1;
    height:auto; min-height:0; max-height:none;
  }
  .founder__img{ object-position:center top; }

  .founder__role{ margin-bottom:0; }
  .founder__turn{ font-size:1.1rem; }

  .services{ padding:100px 0; }
  .services__grid{ grid-template-columns:repeat(2,1fr); }
  /* Com 2 colunas o 7º também sobra sozinho: fica centralizado na linha */
  .services__grid > .service:last-child{
    grid-column:1 / -1;
    width:calc(50% - 16px);
    margin-inline:auto;
  }

  .team{ padding:100px 0; }
  .team__inner{ grid-template-columns:1fr; gap:44px; }
  .team__content{ max-width:none; }
  .team__figure img{ max-height:400px; }

  .contact{ padding:100px 0; }
  .contact__inner{ grid-template-columns:1fr; }
  .contact__map{ min-height:340px; order:2; }
  .contact__map iframe{ min-height:340px; }

  .section-head{ margin-bottom:52px; }
  .footer__inner{ grid-template-columns:1fr 1fr; gap:42px; }
}

@media (max-width:640px){
  body{ font-size:16px; }

  .hero__content{ padding-block:128px 60px; }
  .hero__title{ font-size:clamp(2.3rem, 10vw, 3rem); }
  html[lang="en"] .hero__title{ font-size:clamp(1.9rem, 8.2vw, 2.6rem); }
  .hero__img{ height:46vh; min-height:280px; }
  /* No mobile os botões empilham e ocupam a largura toda */
  .hero__actions{
    flex-direction:column; align-items:stretch;
    gap:.7rem;
  }

  /* Padrão do mobile: todo CTA principal ocupa a largura inteira.
     O .founder__cta fica de fora porque já é item de grid esticado com
     margem lateral — width:100% ali estouraria a largura da página. */
  .hero__actions .btn--lg,
  .team__btn,
  .header__nav-cta{ width:100%; }
  .hero__actions .btn--lg{ padding:15px 20px; font-size:.92rem; }

  .dim{ padding:20px 0; gap:14px; }
  .dim > i{ font-size:1.6rem; }
  .values__grid{ grid-template-columns:1fr; }
  .value{ padding:1.75rem; }
  .mv__item{ padding:36px 28px; }

  .services__grid{ grid-template-columns:1fr; gap:44px; }
  .services__grid > .service:last-child{ grid-column:auto; width:auto; }

  .founder__head{ padding-top:84px; }
  .founder__cta{ margin-bottom:84px; }
  .founder__quote{ font-size:1.12rem; }
  .founder__turn{ padding-left:16px; }
  .team__figure img{ max-height:320px; }

  .ccard{ padding:20px; gap:14px; }
  .ccard--address{ padding-right:62px; }
  .ccard__icon{ width:42px; height:42px; font-size:1.15rem; }
  .ccard__address{ font-size:.95rem; }
  .ccard__copy{ top:10px; right:10px; width:34px; height:34px; }

  .lightbox__close{ top:14px; right:14px; width:42px; height:42px; }

  .footer{ padding:76px 0 26px; }
  .footer__inner{ grid-template-columns:1fr; gap:36px; }
  .footer__logo{ height:66px; }
  .footer__bottom{ flex-direction:column; align-items:flex-start; gap:16px; }

  /* Barra do mobile: marca + seletor de idioma + hambúrguer (o CTA está no menu) */
  .brand img{ height:48px; }
  .header--scrolled .brand img{ height:44px; }
  .header__right{ gap:9px; }
  .lang-switch{ padding:2px; }
  .lang-switch__btn{ font-size:.66rem; padding:5px 7px; gap:4px; }
  .lang-switch__flag{ width:14px; height:10px; }

  .whatsapp-float{ width:52px; height:52px; font-size:1.65rem; }
}
