/* ============================================================
   Anglo Lauro — Landing page de matrículas 2027
   Implementação do template LandingMatriculas.dc.html.
   Regras estruturais do sistema: canto reto sempre, sem sombra,
   sem blur, módulos que se tocam, textura diagonal só sobre azul/roxo.
   ============================================================ */

/* ---------- Reset mínimo ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}
body{
  margin:0;
  font-family:var(--font-core);
  font-weight:400;
  color:var(--text-body);
  background:var(--campaign-cream);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
img{max-width:100%;display:block}
a{color:var(--campaign-blue);text-decoration:none}
a:hover{color:var(--campaign-purple-kv)}
button{font:inherit}
h1,h2,h3,p,ul,ol,figure,blockquote{margin:0}
ul,ol{padding:0;list-style:none}

/* Foco visível — obrigatório, o sistema não tem outra affordance */
:focus-visible{outline:3px solid var(--campaign-coral);outline-offset:2px}
.on-dark :focus-visible,.hero :focus-visible,.footer :focus-visible{outline-color:var(--campaign-yellow)}

.skip-link{
  position:absolute;left:-9999px;top:0;z-index:100;
  background:var(--campaign-yellow);color:var(--campaign-purple-kv);
  font-weight:700;padding:14px 20px;
}
.skip-link:focus{left:0}

.sr-only{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;
}

/* ---------- Utilitários do sistema ---------- */
.wrap{max-width:var(--wrap);margin:0 auto;padding-left:var(--pad-x);padding-right:var(--pad-x)}
.wrap--narrow{max-width:var(--wrap-narrow)}
.section{padding-top:var(--pad-y);padding-bottom:var(--pad-y)}

/* Textura diagonal — 45°, 3px de traço, 9px de vão */
.stripes{position:relative;isolation:isolate}
.stripes::before{
  content:"";position:absolute;inset:0;pointer-events:none;z-index:0;
  background:repeating-linear-gradient(var(--stripe-angle),rgba(0,0,0,var(--stripe-opacity)) 0 var(--stripe-width),transparent var(--stripe-width) calc(var(--stripe-width) + var(--stripe-gap)));
}
.stripes--soft::before{background:repeating-linear-gradient(var(--stripe-angle),rgba(0,0,0,var(--stripe-opacity-soft)) 0 var(--stripe-width),transparent var(--stripe-width) calc(var(--stripe-width) + var(--stripe-gap)))}
.stripes > *{position:relative;z-index:1}

/* Bloco de foto ainda não produzida. Ver CONTEUDOS-PENDENTES.md */
.photo-slot{
  display:grid;place-items:center;text-align:center;padding:14px;
  background:repeating-linear-gradient(45deg,rgba(44,34,123,.12) 0 3px,transparent 3px 14px),var(--campaign-sky);
}
.photo-slot span{
  font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--campaign-purple-kv);line-height:1.7;max-width:34ch;
}
.photo-slot--lavender{background:repeating-linear-gradient(45deg,rgba(44,34,123,.12) 0 3px,transparent 3px 14px),var(--campaign-lavender)}
.photo-slot--yellow{background:repeating-linear-gradient(45deg,rgba(44,34,123,.12) 0 3px,transparent 3px 14px),var(--campaign-yellow)}
.photo-slot--gold{background:repeating-linear-gradient(45deg,rgba(44,34,123,.16) 0 3px,transparent 3px 14px),var(--campaign-gold)}
.photo-slot--blue{background:repeating-linear-gradient(45deg,rgba(255,255,255,.16) 0 3px,transparent 3px 14px),var(--campaign-blue-light)}
.photo-slot--blue span,.photo-slot--onblue span{color:#fff}
.photo-slot--cream{background:repeating-linear-gradient(45deg,rgba(44,34,123,.1) 0 3px,transparent 3px 12px),var(--campaign-cream);border:1px solid rgba(44,34,123,.12)}

/* Marcador de conteúdo a confirmar com a escola */
.validar{
  display:inline-block;background:var(--campaign-yellow);color:var(--campaign-purple-kv);
  font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;padding:3px 7px;
}
.nota-validar{font-size:13px;color:var(--text-muted)}
.nota-validar .validar{margin-right:8px}

/* ---------- Tipografia de display ---------- */
.display{
  font-family:var(--font-display);font-weight:700;
  line-height:.9;letter-spacing:var(--ls-display);
}
.display--h2{font-size:clamp(34px,4.6vw,62px);color:var(--campaign-purple-kv)}
.display--h2.on-dark,.on-dark .display--h2{color:#fff}
.numeral{font-family:var(--font-display);font-weight:900;font-style:italic;line-height:.8}

/* ---------- Botões ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;
  border:0;cursor:pointer;font-family:var(--font-core);font-weight:700;
  min-height:56px;padding:0 28px;font-size:17px;line-height:1.2;text-align:center;
  transition:background var(--dur-block) var(--ease-block),transform 120ms var(--ease-block);
}
.btn:active{transform:translate(1px,1px)}
.btn--coral{background:var(--campaign-coral);color:#fff}
.btn--coral:hover{background:var(--coral-hover);color:#fff}
.btn--coral:active{background:var(--coral-press)}
.btn--purple{background:var(--campaign-purple-kv);color:#fff}
.btn--purple:hover{background:var(--purple-hover);color:#fff}
.btn--yellow{background:var(--campaign-yellow);color:var(--campaign-purple-kv)}
.btn--yellow:hover{background:var(--yellow-hover);color:var(--campaign-purple-kv)}
.btn--ghost-light{border:2px solid rgba(255,255,255,.7);color:#fff;font-weight:600}
.btn--ghost-light:hover{background:rgba(255,255,255,.14);color:#fff}
.btn--ghost-purple{border:2px solid var(--campaign-purple-kv);color:var(--campaign-purple-kv);font-weight:600;min-height:52px;font-size:16px;padding:0 24px}
.btn--ghost-purple:hover{background:rgba(44,34,123,.08);color:var(--campaign-purple-kv)}
.btn--lg{min-height:60px;font-size:18px;padding:0 30px}
.btn--sm{min-height:48px;font-size:15px;padding:0 22px}
.btn--block{width:100%}

/* ============================================================
   Header
   ============================================================ */
.header{position:sticky;top:0;z-index:40;background:var(--campaign-purple-kv);color:#fff}
.header__inner{
  max-width:var(--wrap);margin:0 auto;padding:14px var(--pad-x);
  display:flex;align-items:center;gap:clamp(12px,3vw,32px);flex-wrap:wrap;
}
.header__logo{height:clamp(34px,4.4vw,48px);width:auto}
.header__menu{display:flex;gap:clamp(14px,2vw,26px);margin-left:clamp(10px,2vw,20px)}
.header__nav{
  color:rgba(255,255,255,.82);font-size:15px;font-weight:500;
  padding-bottom:3px;border-bottom:3px solid transparent;
}
.header__nav:hover{color:#fff;border-bottom-color:var(--campaign-yellow)}
/* Na própria página de notícias o item fica marcado, não clicável por engano. */
.header__nav[aria-current]{color:#fff;border-bottom-color:var(--campaign-yellow)}
.header__spacer{flex:1}
.header__link{
  color:#fff;font-size:14px;font-weight:500;
  border-bottom:1px solid rgba(255,255,255,.4);padding-bottom:2px;
}
.header__link:hover{color:var(--campaign-yellow);border-color:var(--campaign-yellow)}

/* ============================================================
   Hero
   ============================================================ */
.hero{position:relative;overflow:hidden;background:var(--campaign-purple-kv);color:#fff}
.hero__bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero__veil{
  position:absolute;inset:0;
  background:linear-gradient(100deg,rgba(28,20,66,.92) 0%,rgba(28,20,66,.82) 46%,rgba(28,20,66,.55) 100%);
}
.hero__texture{position:absolute;inset:0;background:repeating-linear-gradient(var(--stripe-angle),rgba(0,0,0,var(--stripe-opacity-soft)) 0 var(--stripe-width),transparent var(--stripe-width) calc(var(--stripe-width) + var(--stripe-gap)))}
.hero__inner{
  position:relative;z-index:1;max-width:var(--wrap);margin:0 auto;
  padding:clamp(28px,5vw,64px) var(--pad-x) clamp(48px,6vw,88px);
  display:grid;gap:clamp(28px,4vw,56px);
  grid-template-columns:repeat(auto-fit,minmax(min(420px,100%),1fr));align-items:start;
}
.hero__copy{display:flex;flex-direction:column;gap:clamp(18px,2.4vw,26px)}
.hero__badge{
  align-self:flex-start;background:var(--campaign-yellow);color:var(--campaign-purple-kv);
  font-weight:700;font-size:13px;letter-spacing:.1em;text-transform:uppercase;padding:9px 14px;
}
/* A headline do hero segue exatamente a arte aprovada: Lufga 900 itálico,
   caixa alta. Ver README — "Fidelidade ao design". */
.hero__title{
  font-family:var(--font-core);font-weight:900;font-style:italic;text-transform:uppercase;
  font-size:clamp(38px,6vw,60px);line-height:.86;letter-spacing:-.01em;color:#fff;
  text-wrap:balance;text-shadow:0 2px 24px rgba(20,14,50,.45);
}
.hero__lead{font-size:clamp(17px,1.5vw,21px);line-height:1.5;max-width:34ch;color:#f1eeff}
.hero__actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.hero__note{font-size:14px;line-height:1.6;max-width:44ch;color:rgba(255,255,255,.72)}
.hero__form{scroll-margin-top:96px}
.hero__flag{
  position:absolute;left:var(--pad-x);bottom:14px;z-index:2;
  font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;
  text-transform:uppercase;color:rgba(255,255,255,.5);max-width:60ch;
}
@media (max-width:900px){.hero__flag{display:none}}

/* ============================================================
   Carrossel de fotos
   ============================================================ */
.slider{position:relative;overflow:hidden;background:var(--campaign-purple-kv);height:clamp(320px,46vw,620px)}
.slider__track{
  display:flex;height:100%;overflow-x:auto;
  scroll-snap-type:x mandatory;scroll-behavior:smooth;
  scrollbar-width:none;-ms-overflow-style:none;
}
.slider__track::-webkit-scrollbar{display:none}
.slider__slide{flex:0 0 100%;height:100%;scroll-snap-align:start;padding:24px}
.slider__arrow{
  position:absolute;top:50%;transform:translateY(-50%);
  border:0;cursor:pointer;width:52px;height:52px;
  background:rgba(44,34,123,.86);color:#fff;font-size:22px;line-height:1;
  display:grid;place-items:center;transition:background var(--dur-block) var(--ease-block);
}
.slider__arrow:hover{background:var(--campaign-purple-kv)}
.slider__arrow--prev{left:clamp(10px,2vw,24px)}
.slider__arrow--next{right:clamp(10px,2vw,24px)}
.slider__dots{
  position:absolute;left:0;right:0;bottom:clamp(12px,2vw,22px);
  display:flex;justify-content:center;
}
.slider__dots-inner{position:relative;display:flex;gap:8px}
.slider__dot{border:0;cursor:pointer;width:34px;height:6px;padding:0;background:rgba(255,255,255,.45)}
.slider__dot:hover{background:rgba(255,255,255,.7)}
.slider__indicator{
  position:absolute;top:0;left:0;width:34px;height:6px;
  background:var(--campaign-yellow);pointer-events:none;
  transition:transform .4s cubic-bezier(.4,0,.2,1);
}

/* ============================================================
   Faixa de segmentos
   ============================================================ */
.segmentos{background:var(--campaign-blue-dark);color:#fff}
.segmentos__inner{
  max-width:var(--wrap);margin:0 auto;padding:clamp(18px,2.4vw,26px) var(--pad-x);
  display:flex;flex-wrap:wrap;gap:clamp(14px,3vw,40px);
  align-items:center;justify-content:center;
  font-weight:600;font-size:clamp(14px,1.3vw,17px);
}
.segmentos__sep{color:var(--campaign-yellow)}

/* ============================================================
   Abertura editorial
   ============================================================ */
.abertura{
  max-width:var(--wrap);margin:0 auto;padding:var(--pad-y) var(--pad-x);
  display:grid;gap:clamp(28px,4vw,64px);
  grid-template-columns:repeat(auto-fit,minmax(min(360px,100%),1fr));align-items:start;
}
.abertura__copy{display:flex;flex-direction:column;gap:20px}
.abertura__copy h2{max-width:22ch}
.abertura__copy p{font-size:clamp(16px,1.4vw,19px);line-height:1.6;max-width:46ch}
.pilares{display:grid;gap:var(--module-gap);align-self:stretch}
.pilares li{background:#fff;padding:18px 20px;font-size:16px;font-weight:500;border-left:6px solid var(--campaign-blue-light)}
.pilares li:nth-child(2){border-left-color:var(--campaign-blue)}
.pilares li:nth-child(3){border-left-color:var(--campaign-blue-dark)}
.pilares li:nth-child(4){border-left-color:var(--campaign-purple)}
.pilares li:nth-child(5){border-left-color:var(--campaign-purple-kv)}
.pilares li:nth-child(6){border-left-color:var(--campaign-coral)}

/* ============================================================
   Performance (campo azul-escuro)
   ============================================================ */
.performance{background:var(--campaign-blue-dark);color:#fff}
.performance__inner{
  max-width:var(--wrap);margin:0 auto;padding:var(--pad-y) var(--pad-x);
  display:grid;gap:clamp(24px,4vw,56px);
  grid-template-columns:repeat(auto-fit,minmax(min(340px,100%),1fr));align-items:start;
}
.performance__photo{min-height:clamp(280px,32vw,420px)}
.performance__copy{
  display:flex;flex-direction:column;gap:18px;
  font-size:clamp(16px,1.4vw,19px);line-height:1.6;color:var(--text-on-blue-dark);
}
.performance__copy h2{font-size:clamp(28px,3.2vw,40px);line-height:.95;color:#fff}

/* ============================================================
   Diferenciais
   ============================================================ */
.diferenciais{
  max-width:var(--wrap);margin:0 auto;padding:var(--pad-y) var(--pad-x);
  display:flex;flex-direction:column;gap:clamp(24px,3vw,40px);
}
.diferenciais__grid{display:grid;gap:var(--module-gap);grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr))}
.diferencial{background:#fff;padding:clamp(22px,2.4vw,32px);display:flex;flex-direction:column;gap:12px}
.diferencial img{width:34px;height:auto}
.diferencial img.on-coral{background:var(--campaign-coral);padding:6px;width:34px}
.diferencial h3{font-size:20px;font-weight:700;line-height:1.25;color:var(--campaign-purple-kv)}
.diferencial p{font-size:15.5px;line-height:1.6}

/* ============================================================
   Etapas — faixa modular que expande no hover
   ============================================================ */
.etapas-section{background:#fff}
.etapas-section__head{
  max-width:var(--wrap);margin:0 auto;
  padding:var(--pad-y) var(--pad-x) clamp(20px,3vw,36px);
}
.etapas{display:flex;gap:var(--module-gap)}
.etapa{
  flex:1 1 0;min-width:0;min-height:clamp(440px,32vw,520px);
  display:flex;overflow:hidden;
  transition:flex-grow .45s cubic-bezier(.4,0,.2,1);
}
.etapa:hover,.etapa:focus-within{flex-grow:2.4}
.etapa__copy{
  flex:0 0 calc(20vw - 2px);
  padding:clamp(20px,2.2vw,28px);
  display:flex;flex-direction:column;gap:10px;
}
.etapa__kicker{font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
.etapa__copy h3{font-size:22px;font-weight:700;line-height:1.2}
.etapa__copy p{font-size:15.5px;line-height:1.6}
.etapa__photo{flex:1 1 0;min-width:0}
.etapa__photo span{white-space:nowrap;overflow:hidden}
/* Cores por etapa */
.etapa--01{background:var(--campaign-sky)}
.etapa--01 .etapa__copy{color:var(--campaign-purple-kv)}
.etapa--01 .etapa__copy p{color:#2c2a3a}
.etapa--02{background:var(--campaign-blue-light)}
.etapa--02 .etapa__copy{color:#fff}
.etapa--03{background:var(--campaign-blue-dark)}
.etapa--03 .etapa__copy{color:#fff}
.etapa--04{background:var(--campaign-purple-kv)}
.etapa--04 .etapa__copy{color:#fff}
.etapa--05{background:var(--campaign-yellow)}
.etapa--05 .etapa__copy{color:var(--campaign-purple-kv)}
.etapa--05 .etapa__copy p{color:#2c2a3a}
.etapas-section__nota{max-width:var(--wrap);margin:0 auto;padding:clamp(20px,3vw,36px) var(--pad-x) var(--pad-y)}

@media (max-width:1099px){
  .etapas{flex-direction:column}
  .etapa{flex:0 0 auto;min-height:0;height:auto;flex-direction:column}
  .etapa:hover,.etapa:focus-within{flex-grow:0}
  .etapa__copy{flex:0 0 auto;width:100%}
  .etapa__photo{flex:0 0 190px;min-height:190px}
  .etapa__photo span{white-space:normal}
}

/* ============================================================
   Método — 5 passos
   ============================================================ */
.metodo{
  max-width:var(--wrap);margin:0 auto;padding:var(--pad-y) var(--pad-x);
  display:flex;flex-direction:column;gap:clamp(24px,3vw,40px);
}
.metodo h2{max-width:24ch}
.metodo__passos{display:grid;gap:var(--module-gap);grid-template-columns:repeat(auto-fit,minmax(min(190px,100%),1fr))}
.metodo__passos li{background:#fff;padding:24px 20px;display:flex;flex-direction:column;gap:12px}
.metodo__passos .numeral{font-size:52px}
.metodo__passos li:nth-child(1) .numeral{color:var(--campaign-blue-light)}
.metodo__passos li:nth-child(2) .numeral{color:var(--campaign-blue)}
.metodo__passos li:nth-child(3) .numeral{color:var(--campaign-blue-dark)}
.metodo__passos li:nth-child(4) .numeral{color:var(--campaign-purple)}
.metodo__passos li:nth-child(5) .numeral{color:var(--campaign-coral)}
.metodo__passos p{font-size:15.5px;line-height:1.5;font-weight:500}

/* ============================================================
   Resultados e depoimentos
   ============================================================ */
.resultados{background:var(--campaign-purple-kv);color:#fff;overflow:hidden}
.resultados__inner{
  max-width:var(--wrap);margin:0 auto;padding:var(--pad-y) var(--pad-x);
  display:flex;flex-direction:column;gap:clamp(24px,3vw,40px);
}
.numeros{display:grid;gap:var(--module-gap);grid-template-columns:repeat(auto-fit,minmax(min(230px,100%),1fr))}
.numero{background:rgba(255,255,255,.08);padding:24px;display:flex;flex-direction:column;gap:8px}
.numero .numeral{font-size:46px;line-height:.85;color:var(--campaign-yellow)}
.numero p{font-size:14px;line-height:1.5;color:var(--text-on-purple)}
.numero .validar{align-self:flex-start}
.depoimentos{display:grid;gap:var(--module-gap);grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr))}
.depoimento{
  background:var(--campaign-cream);color:var(--campaign-charcoal);
  padding:clamp(24px,2.6vw,34px);display:flex;flex-direction:column;gap:16px;
}
.depoimento p{font-size:clamp(17px,1.5vw,20px);line-height:1.5;color:var(--campaign-purple-kv)}
.depoimento footer{font-size:14px;line-height:1.5;color:var(--text-muted)}
.depoimento footer .validar{margin-top:8px}

/* ============================================================
   Espaços
   ============================================================ */
.espacos{
  max-width:var(--wrap);margin:0 auto;padding:var(--pad-y) var(--pad-x);
  display:flex;flex-direction:column;gap:clamp(24px,3vw,40px);
}
.espacos__head{display:flex;flex-direction:column;gap:14px}
.espacos__head p{font-size:clamp(16px,1.4vw,19px);line-height:1.6;max-width:52ch}
.espacos__grid{display:grid;gap:var(--module-gap);grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr))}
.espaco{display:flex;flex-direction:column}
.espaco .photo-slot{height:210px}
.espaco figcaption{background:#fff;padding:20px;display:flex;flex-direction:column;gap:8px}
.espaco figcaption strong{font-size:18px;color:var(--campaign-purple-kv)}
.espaco figcaption span{font-size:15px;line-height:1.6}

/* ============================================================
   Convite à visita
   ============================================================ */
.visita{background:var(--campaign-blue-dark);color:#fff;overflow:hidden}
.visita__inner{
  max-width:var(--wrap);margin:0 auto;padding:var(--pad-y) var(--pad-x);
  display:grid;gap:clamp(28px,4vw,56px);
  grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr));align-items:start;
}
.visita__copy{display:flex;flex-direction:column;gap:20px;align-items:flex-start}
.visita__copy h2{font-size:clamp(38px,5.4vw,78px);line-height:.88;color:#fff}
.visita__copy p{font-size:clamp(16px,1.4vw,19px);line-height:1.6;max-width:44ch;color:var(--text-on-blue-dark)}
.visita__passos{display:flex;flex-direction:column;gap:var(--module-gap)}
.visita__passos li{background:rgba(255,255,255,.1);padding:20px;display:flex;gap:16px;align-items:baseline}
.visita__passos .numeral{font-size:34px;line-height:.9;color:var(--campaign-yellow);flex:0 0 auto}
.visita__passos p{font-size:16px;line-height:1.5}

/* ============================================================
   FAQ
   ============================================================ */
.faq-section{background:#fff}
.faq{
  max-width:var(--wrap-narrow);margin:0 auto;padding:var(--pad-y) var(--pad-x);
  display:flex;flex-direction:column;gap:clamp(20px,3vw,32px);
}
.faq__list{display:flex;flex-direction:column;gap:var(--module-gap)}
.faq details{background:var(--campaign-cream)}
.faq summary{
  cursor:pointer;list-style:none;padding:20px;
  font-size:17px;font-weight:600;color:var(--campaign-purple-kv);
  display:flex;justify-content:space-between;gap:16px;
  min-height:56px;align-items:center;
}
.faq summary::-webkit-details-marker{display:none}
.faq summary:hover{background:#f7ead0}
.faq summary .sinal{color:var(--campaign-coral);font-weight:700;flex:0 0 auto}
.faq details[open] summary .sinal{transform:rotate(45deg)}
.faq summary .sinal{display:inline-block;transition:transform var(--dur-block) var(--ease-block)}
.faq details > p{padding:0 20px 22px;font-size:15.5px;line-height:1.65}

/* ============================================================
   Localização
   ============================================================ */
.local{
  max-width:var(--wrap);margin:0 auto;padding:var(--pad-y) var(--pad-x);
  display:grid;gap:clamp(24px,3vw,40px);
  grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr));align-items:start;
}
.local__copy{display:flex;flex-direction:column;gap:18px}
.local__copy h2{max-width:20ch}
.local__dados{display:flex;flex-direction:column;gap:10px;font-size:16px;line-height:1.6}
.local__dados strong{color:var(--campaign-purple-kv)}
.local__acoes{display:flex;flex-wrap:wrap;gap:10px}
.local__acoes .btn--purple{min-height:52px;font-size:16px;padding:0 24px}
.local__mapa{min-height:clamp(260px,30vw,380px)}

/* ============================================================
   Rodapé
   ============================================================ */
.footer{background:var(--campaign-charcoal);color:#fff}
.footer__inner{
  max-width:var(--wrap);margin:0 auto;
  padding:clamp(36px,4vw,64px) var(--pad-x) clamp(88px,8vw,64px);
  display:grid;gap:clamp(24px,3vw,48px);
  grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));
}
.footer__col{display:flex;flex-direction:column;gap:8px;font-size:14px;line-height:1.7;color:#b9b6ae}
.footer__col--marca{gap:16px}
.footer__logo{height:44px;width:auto;align-self:flex-start}
.footer__col strong{color:#fff;font-size:13px;letter-spacing:.08em;text-transform:uppercase}
.footer__col a{color:#b9b6ae}
.footer__col a:hover{color:var(--campaign-yellow)}

/* ============================================================
   CTA fixo no mobile
   ============================================================ */
.sticky-cta{
  display:none;position:fixed;left:0;right:0;bottom:0;z-index:50;
  padding:10px;background:rgba(38,38,38,.92);gap:8px;
}
.sticky-cta .btn{flex:1;min-height:56px;font-size:17px}
.sticky-cta__zap{
  width:56px;flex:0 0 56px;min-height:56px;
  background:var(--campaign-yellow);color:var(--campaign-purple-kv);
  font-weight:700;font-size:13px;display:flex;align-items:center;justify-content:center;
}
@media (max-width:820px){.sticky-cta{display:flex}}
/* Espaço para o CTA fixo não cobrir os últimos links do rodapé. */
@media (max-width:820px){.footer__inner{padding-bottom:96px}}

/* ============================================================
   Formulário de visita
   ============================================================ */
.form-visita{
  background:var(--campaign-purple-kv);color:#fff;
  padding:clamp(24px,3vw,40px);
  display:flex;flex-direction:column;gap:16px;
  position:relative;overflow:hidden;
}
.form-visita__head{display:flex;flex-direction:column;gap:6px}
.form-visita__head h2,.form-visita__head p{position:relative}
.form-visita__titulo{
  font-family:var(--font-display);font-weight:700;
  font-size:clamp(28px,3.4vw,42px);line-height:.9;letter-spacing:-.01em;color:#fff;
}
.form-visita__texto{font-size:15px;line-height:1.5;color:#d9d5f2}
.form-visita__campos{display:flex;flex-direction:column;gap:12px}
.form-visita__dupla{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(min(200px,100%),1fr))}
.campo{display:flex;flex-direction:column;gap:6px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:#c8c3ea}
.campo input,.campo select{
  border:0;background:var(--campaign-cream);color:var(--campaign-purple-kv);
  padding:14px;font-size:16px;min-height:48px;font-family:var(--font-core);
  border-radius:0;-webkit-appearance:none;appearance:none;
}
.campo select{
  background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath fill='%232c227b' d='M0 0h12L6 8z'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center;background-size:12px;padding-right:38px;
}
.campo input::placeholder{color:#8b8676}
.campo input[aria-invalid="true"],.campo select[aria-invalid="true"]{box-shadow:inset 0 0 0 3px var(--campaign-coral)}
.campo__erro{
  display:none;font-size:12px;letter-spacing:.02em;text-transform:none;
  color:var(--campaign-yellow);font-weight:500;
}
.campo__erro.visivel{display:block}
.consentimento{
  display:flex;gap:12px;align-items:flex-start;
  font-size:13px;line-height:1.55;color:#d9d5f2;cursor:pointer;
}
.consentimento input{flex:0 0 20px;width:20px;height:20px;margin:2px 0 0;accent-color:var(--campaign-coral)}
.form-visita__legal{font-size:12px;line-height:1.6;color:#b9b4dd}
.form-visita__legal a{color:var(--campaign-yellow);border-bottom:1px solid currentColor}
.form-visita__legal a:hover{color:#fff}
.form-visita button[type=submit]{min-height:56px;font-size:18px}
.form-visita button[disabled]{opacity:.65;cursor:progress}

/* Estado de sucesso */
.form-visita__ok{
  display:none;flex-direction:column;gap:14px;
  background:var(--campaign-yellow);color:var(--campaign-purple-kv);
  padding:clamp(24px,3vw,40px);
}
.form-visita__ok h2{font-family:var(--font-display);font-weight:700;font-size:clamp(26px,3vw,38px);line-height:.95}
.form-visita__ok p{font-size:16px;line-height:1.6}
.form-visita--enviado .form-visita__ok{display:flex}
.form-visita--enviado form{display:none}
.form-visita__falha{
  display:none;background:var(--campaign-coral);color:#fff;
  padding:14px 16px;font-size:14px;line-height:1.5;
}
.form-visita__falha.visivel{display:block}

@media (max-width:520px){
  .hero__actions .btn{width:100%}
  .btn{padding:0 20px;font-size:16px}
}

/* No mobile o CTA fixo já oferece WhatsApp e visita: o header fica só com
   a marca e um botão, para não quebrar em duas linhas. */
@media (max-width:560px){
  .header__link{display:none}
  .header__nav{font-size:14px;white-space:nowrap}
  .header__menu{margin-left:10px}
  .header .btn--sm{white-space:nowrap;padding:0 16px;font-size:14px}
  .header__inner{flex-wrap:nowrap}
}
@media (max-width:400px){
  .header__logo{height:30px}
  .header__nav{font-size:13px}
  .header__inner{gap:8px}
  .header .btn--sm{padding:0 12px;font-size:13px}
}

/* ============================================================
   WhatsApp flutuante — visível em toda a página
   Segue o sistema: canto reto, sem sombra, sem blur. O contorno
   substitui a sombra para destacar o painel do conteúdo.
   Para usar o verde do WhatsApp no botão, troque só --zap-cor.
   ============================================================ */
.zap{
  --zap-cor:var(--campaign-coral);
  --zap-cor-hover:var(--coral-hover);
  position:fixed;right:16px;bottom:16px;z-index:60;
  display:flex;flex-direction:column;align-items:flex-end;gap:10px;
}

.zap__botao{
  display:inline-flex;align-items:center;gap:10px;
  min-height:56px;padding:0 20px;border:0;border-radius:0;cursor:pointer;
  background:var(--zap-cor);color:#fff;
  font-family:var(--font-core);font-weight:700;font-size:16px;line-height:1;
}
.zap__botao:hover{background:var(--zap-cor-hover)}
.zap__botao:focus-visible{outline:3px solid var(--campaign-yellow);outline-offset:3px}
.zap__botao-icone{display:flex}
.zap[data-aberto="true"] .zap__botao-texto{display:none}
.zap[data-aberto="true"] .zap__botao{padding:0 16px}

.zap__painel{
  width:min(360px,calc(100vw - 32px));
  background:var(--campaign-purple-kv);color:#fff;
  border:2px solid var(--campaign-charcoal);
  max-height:min(78vh,620px);overflow-y:auto;
}
.zap__head{
  display:flex;align-items:center;gap:12px;
  padding:16px;background:var(--campaign-purple-deep);
}
.zap__avatar{
  flex:0 0 40px;width:40px;height:40px;display:grid;place-items:center;
  background:var(--campaign-yellow);color:var(--campaign-purple-kv);
}
.zap__head-texto{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.zap__head-texto strong{font-size:16px;line-height:1.2}
.zap__head-texto span{font-size:13px;color:#c8c3ea}
.zap__fechar{
  flex:0 0 32px;width:32px;height:32px;border:0;background:transparent;color:#fff;
  font-size:24px;line-height:1;cursor:pointer;padding:0;
}
.zap__fechar:hover{color:var(--campaign-yellow)}
.zap__fechar:focus-visible{outline:2px solid var(--campaign-yellow);outline-offset:2px}

.zap__form{display:flex;flex-direction:column;gap:12px;padding:16px}
.zap__form textarea{
  border:0;background:var(--campaign-cream);color:var(--campaign-purple-kv);
  padding:14px;font-size:16px;font-family:var(--font-core);border-radius:0;
  resize:vertical;min-height:84px;
}
.zap__form textarea::placeholder{color:#8b8676}
.zap__legal{font-size:12px;line-height:1.5;color:#c8c3ea;margin:0}

/* Acima da barra fixa no mobile — a barra perde o botão de Zap,
   que passa a ser função do widget. */
@media (max-width:820px){
  .zap{right:12px;bottom:88px}
  .sticky-cta__zap{display:none}
  .zap__botao-texto{display:none}
  .zap__botao{padding:0 16px}
}

/* Mapa da unidade */
.local__mapa{width:100%;border:0;display:block;background:var(--campaign-sky)}

/* Foto dentro da faixa de etapas — preenche a área sem deformar.
   O foco fica no terço superior para o rosto sobreviver ao corte
   horizontal do mobile. */
.etapa__photo{display:block;overflow:hidden}
.etapa__photo img{width:100%;height:100%;object-fit:cover;object-position:center 28%;display:block}

/* Escurece a página quando o painel do WhatsApp está aberto.
   Sem blur — o sistema não permite; só uma cortina escura. */
.zap__fundo{
  position:fixed;inset:0;z-index:0;
  background:rgba(38,38,38,.62);
  animation:zap-cortina .18s ease-out;
}
.zap__painel,.zap__botao{position:relative;z-index:1}
@keyframes zap-cortina{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){.zap__fundo{animation:none}}
/* No mobile o painel ocupa quase a tela: trava a rolagem do fundo. */
@media (max-width:820px){
  body.zap-aberto{overflow:hidden}
}

/* Foto do card de espaço — mesma altura do placeholder que ela substitui. */
.espaco__foto{display:block;height:210px;overflow:hidden}
.espaco__foto img{width:100%;height:100%;object-fit:cover;display:block}

/* Slide com foto ocupa a área inteira, sem a moldura do placeholder. */
.slider__slide--foto{padding:0}
.slider__slide--foto picture{display:block;width:100%;height:100%}
.slider__slide--foto img{width:100%;height:100%;object-fit:cover;object-position:center 32%;display:block}

/* Linha de turnos abaixo da faixa de etapas */
.etapas-section__turnos{font-size:16px;line-height:1.7;max-width:70ch}
.etapas-section__turnos strong{color:var(--campaign-purple-kv)}

/* Contadores de resultado sem itálico — a leitura do número vem primeiro. */
.numero .numeral{font-style:normal}

/* Depoimentos: o longo ocupa a coluna da esquerda inteira e os dois curtos
   empilham na direita, para os blocos fecharem na mesma altura. */
.depoimentos{grid-template-columns:1fr}
@media (min-width:900px){
  .depoimentos{grid-template-columns:1fr 1fr;align-items:stretch}
  .depoimentos .depoimento:first-child{grid-row:span 2}
}

/* Carrossel: altura fixa (a faixa não muda de tamanho ao trocar de foto) e a
   imagem preenche todo o espaço sem deformar — o excedente é cortado, com o
   enquadramento puxado para o terço superior para preservar os rostos. */
.slider__slide--foto img{object-fit:cover;object-position:center 32%}

/* Foto da seção Performance */
.performance__photo{display:block;overflow:hidden}
.performance__photo img{width:100%;height:100%;object-fit:cover;display:block}

/* ============================================================
   Entrada dos cards de diferenciais
   Ao entrar na tela, cada card desliza da esquerda, em sequência.
   Sem JS (ou com movimento reduzido) o conteúdo aparece normal.
   ============================================================ */
.js-anima .diferencial{
  opacity:0;
  transform:translateX(-28px);
  transition:opacity 460ms var(--ease-block), transform 460ms var(--ease-block);
  transition-delay:calc(var(--ordem, 0) * 90ms);
}
.js-anima .diferencial.visivel{opacity:1;transform:none}

@media (prefers-reduced-motion:reduce){
  .js-anima .diferencial{opacity:1;transform:none;transition:none}
}

/* Lista dentro de uma resposta do FAQ (documentos de matrícula) */
.faq__lista{margin:8px 0 0;padding-left:20px;display:flex;flex-direction:column;gap:6px}
.faq__lista li{list-style:disc;line-height:1.6}
