/* =========================================================================
   dueta · styles.css
   Marca: _build/SPEC.md · Motion: _build/research/05-motion-web.md §5 e §6
   Só transform e opacity animam (exceção declarada: grid-template-rows do FAQ).
   ========================================================================= */

/* --- fontes auto-hospedadas (05 §3.3, passo 2): subconjunto latin do Google Fonts,
   licença OFL, um arquivo variável por família (Urbanist 500–700, Inter 400–500),
   74 KB no total, pré-carregados no <head>. Sem CSS de terceiro no caminho crítico. */
@font-face{font-family:"Urbanist";font-style:normal;font-weight:500 700;font-display:swap;
  src:url(fonts/urbanist-latin.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Inter";font-style:normal;font-weight:400 500;font-display:swap;
  src:url(fonts/inter-latin.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

/* --- fallbacks com métricas casadas (05 §3.3): zeram o CLS do font swap ---- */
@font-face{font-family:"Urbanist-fallback";src:local("Arial Bold"),local("Arial");
  size-adjust:92.8%;ascent-override:95%;descent-override:25%}
@font-face{font-family:"Inter-fallback";src:local("Arial");
  size-adjust:105.6%;ascent-override:97%;descent-override:24%}

/* ------------------------------- tokens ---------------------------------- */
:root{
  /* cores (SPEC §2 regra 5) */
  --branco:#FAF8F3; --areia:#ECE6DA; --carvao:#1C1C22;
  --branco-puro:#FFFFFF; --azul:#2E5BFF; --coral:#FF6B57;

  --font-display:Urbanist,"Urbanist-fallback",sans-serif;
  --font-text:Inter,"Inter-fallback",sans-serif;

  /* motion (05 §5.1) */
  --t-micro:100ms; --t-hover:180ms; --t-reveal:280ms; --t-large:400ms; --t-count:900ms;
  --ease-out:cubic-bezier(.33,1,.68,1);
  --ease-out-strong:cubic-bezier(.16,1,.3,1);
  --ease-in:cubic-bezier(.55,.055,.675,.19);
  --stagger:60ms;

  /* escala mobile (canvas 390) — o desktop entra nos breakpoints */
  --fs-h1:56px;    --lh-h1:56px;
  --fs-h2:40px;    --lh-h2:44px;
  --fs-h3:24px;    --lh-h3:30px;
  --fs-num:96px;   --lh-num:92px;
  --fs-texto:18px; --lh-texto:28px;
  --fs-tp:15px;    --lh-tp:22px;
  --fs-kicker:13px; --fs-nav:16px; --fs-legenda:13px;
  --btn-h:56px; --btn-fs:20px; --btn-pad:28px;

  --nav-h:72px;
  --secao-y:48px;        /* metade do respiro: 48+48 = 96 entre seções */
  --gutter:16px;
  --margem:24px;
  --peca-w:280px; --peca-h:350px;
  --marquee-w:240px;
  --prova-w:160px;
}
@media (min-width:768px){
  :root{
    --fs-h1:clamp(56px,8.6vw,112px); --lh-h1:0.97;   /* fluido no tablet: "Seu mês inteiro pronto" (≈10,1 em) cabe na 1ª linha de 768 a 1199 */
    --fs-h2:52px;  --lh-h2:56px;
    --fs-h3:26px;  --lh-h3:32px;
    --fs-num:128px; --lh-num:122px;
    --fs-texto:19px; --lh-texto:29px;
    --fs-tp:16px;  --lh-tp:24px;
    --fs-kicker:14px; --fs-nav:17px;
    --btn-h:64px; --btn-fs:22px; --btn-pad:32px;
    --nav-h:96px; --secao-y:64px; --gutter:24px;
    --peca-w:360px; --peca-h:450px; --marquee-w:300px; --prova-w:220px;
  }
}
@media (min-width:1200px){
  :root{
    --fs-h1:120px; --lh-h1:116px;
    --fs-h2:64px;  --lh-h2:68px;
    --fs-h3:28px;  --lh-h3:34px;
    --fs-num:160px; --lh-num:150px;
    --fs-texto:20px; --lh-texto:30px;
    --fs-tp:17px;  --lh-tp:26px;
    --fs-kicker:15px;
    --secao-y:80px;        /* 80+80 = 160 entre seções */
    --peca-w:432px; --peca-h:540px; --marquee-w:360px; --prova-w:260px;
  }
}

/* --------------------------------- base ---------------------------------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--nav-h) + 24px)}
/* adesão, não remoção: rolagem suave só sem preferência declarada (05 §4.3) */
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
body{margin:0;background:var(--branco);color:var(--carvao);
  font:400 var(--fs-texto)/var(--lh-texto) var(--font-text);
  text-rendering:optimizeLegibility}
img{max-width:100%;height:auto;display:block}
h1,h2,h3,p,ul,figure{margin:0}
ul{padding:0;list-style:none}
a{color:inherit}

/* foco visível (05 §4.3): anel 2 px azul, deslocamento 2 px */
:focus-visible{outline:2px solid var(--azul);outline-offset:2px}
.secao--azul :focus-visible,.rodape :focus-visible,.btn--branco:focus-visible{outline-color:var(--branco-puro)}
.sobre-coral :focus-visible{outline-color:var(--carvao)}   /* sobre coral: anel carvão */

.pular{position:absolute;left:-9999px;top:0;z-index:20;background:var(--azul);color:#fff;
  padding:0 20px;min-height:48px;display:inline-flex;align-items:center;
  border-radius:0 0 8px 0;font:500 15px/1 var(--font-text)}
.pular:focus{left:0}

#topo-sentinela{position:absolute;top:0;left:0;height:64px;width:1px;pointer-events:none}

/* ------------------------------- layout ---------------------------------- */
/* container 1728 útil: 5 % de margem fluida; a 1920 dá exatamente 96 px */
.container{width:100%;max-width:1920px;margin-inline:auto;padding-inline:var(--margem)}
@media (min-width:768px){.container{padding-inline:5%}}

.secao{padding-block:var(--secao-y)}
.secao--azul{background:var(--azul);color:var(--branco-puro);
  padding-block:calc(var(--secao-y) * 1.4)}
/* content-visibility SEMPRE com contain-intrinsic-size (05 §2.3).
   Nunca no herói (é o LCP) nem no painel do FAQ. */
.secao--cv{content-visibility:auto;contain-intrinsic-size:auto 1000px}
#trabalhos{contain-intrinsic-size:auto 1300px}
#planos{contain-intrinsic-size:auto 1500px}
#perguntas{contain-intrinsic-size:auto 1200px}
.cta{contain-intrinsic-size:auto 700px}
.rodape{contain-intrinsic-size:auto 500px}

.medida{max-width:640px}                 /* ≤ 70 caracteres (SPEC §4) */
.secao__nota{margin-top:32px}
.secao__nota-intro{margin-top:16px}
.secao__fecho{margin-top:64px}

/* ------------------------------ tipografia -------------------------------- */
.h1{font:700 var(--fs-h1)/var(--lh-h1) var(--font-display);letter-spacing:-.035em}
.h2{font:700 var(--fs-h2)/var(--lh-h2) var(--font-display);letter-spacing:-.03em;
  max-width:16em;margin-top:16px}
.h3{font:500 var(--fs-h3)/var(--lh-h3) var(--font-display);letter-spacing:-.02em}
.texto{font:400 var(--fs-texto)/var(--lh-texto) var(--font-text)}
.texto-p{font:400 var(--fs-tp)/var(--lh-tp) var(--font-text)}
.kicker{font:500 var(--fs-kicker)/1.4 var(--font-text)}
.legenda{font:500 var(--fs-legenda)/18px var(--font-text)}
.h2 + .texto,.h2 + .medida{margin-top:32px}
/* tabular-nums é obrigatório em todo número que muda (05 §6.3) */
.num{font-family:var(--font-display);font-weight:700;font-variant-numeric:tabular-nums;
  letter-spacing:-.04em}

.link-texto{font:500 var(--fs-texto)/1 var(--font-text);color:var(--carvao);
  text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px;
  display:inline-flex;align-items:center;min-height:48px}

/* -------------------------------- botão ----------------------------------- */
/* SPEC §5.7: 64 px, Urbanist 500 22, raio 24, sem ícone, sem borda */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:12px;
  min-height:var(--btn-h);padding:0 var(--btn-pad);border-radius:24px;border:0;
  font:500 var(--btn-fs)/1.2 var(--font-display);text-decoration:none;cursor:pointer;
  transition:background-color var(--t-micro) var(--ease-out),
             color var(--t-micro) var(--ease-out),
             transform var(--t-micro) var(--ease-out)}
.btn--azul{background:var(--azul);color:var(--branco-puro)}
.btn--branco{background:var(--branco-puro);color:var(--azul)}
.btn--areia{background:var(--branco);color:var(--carvao)}
.btn:hover,.btn:focus-visible{transform:translateY(-1px)}
.btn--azul:hover{background:#2449cc}
.btn--branco:hover{background:var(--areia)}

/* ------------------------- símbolo e lockup (SPEC §5.2) ------------------- */
.simbolo{display:block;width:100%;height:auto}
/* a única animação da marca: haste desce, bolha cresce, 400 ms, e param (§6.1) */
@keyframes dueta-haste{from{transform:translateY(-98px)}to{transform:translateY(0)}}
@keyframes dueta-bolha{from{transform:scale(0)}to{transform:scale(1)}}
.simbolo__haste{animation:dueta-haste var(--t-large) var(--ease-out-strong) both}
.simbolo__bolha{transform-box:fill-box;transform-origin:50% 50%;
  animation:dueta-bolha var(--t-large) var(--ease-out-strong) both}
@media (prefers-reduced-motion:reduce){
  .simbolo__haste,.simbolo__bolha{animation:none}
}
/* lockup integrado F = 48 → símbolo 36 × 37, padding-bottom 7, gap 1 */
.lockup{display:inline-flex;align-items:flex-end;gap:1px;text-decoration:none;
  color:var(--carvao);flex-shrink:0}
.lockup__simbolo{display:flex;width:36px;padding-bottom:7px;flex-shrink:0}
.lockup__simbolo .simbolo{height:37px}
.lockup__texto{font:700 48px/48px var(--font-display);letter-spacing:-.035em}

/* --------------------------------- nav ------------------------------------ */
/* altura fixa: nada de animar height (layout + CLS) — 05 §6.7 */
.nav{position:sticky;top:0;z-index:10;height:var(--nav-h);background:var(--branco)}
.nav__int{display:flex;align-items:center;justify-content:space-between;gap:16px;
  height:100%}
@media (min-width:768px){.nav__int{gap:32px}}
.nav::after{content:"";position:absolute;inset:auto 0 0;height:1px;background:var(--areia);
  opacity:0;transition:opacity var(--t-hover) var(--ease-out)}
.nav.is-scrolled::after{opacity:1}
/* padding vertical só para o alvo de toque chegar a 48 px, sem mudar o desenho */
.nav__lockup{transform-origin:left center;padding-block:4px;
  transition:transform var(--t-hover) var(--ease-out)}
.nav.is-scrolled .nav__lockup{transform:scale(.95)}   /* .86 levaria o lockup (127 px) abaixo do piso de 120 px da SPEC regra 4 */
.nav__links{display:none;gap:32px;margin-left:auto}
.nav__links a{font:500 var(--fs-nav)/1 var(--font-text);text-decoration:none;opacity:.7;
  display:inline-flex;align-items:center;min-height:48px;
  transition:opacity var(--t-micro) var(--ease-out)}
.nav__links a:hover,.nav__links a:focus-visible{opacity:1}
/* no mobile o rótulo tem de caber em uma linha ao lado do lockup */
.nav__cta{--btn-h:48px;--btn-fs:16px;--btn-pad:16px;white-space:nowrap}
/* abaixo de 360 px o lockup integrado não cabe ao lado do botão sem furar os
   120 px mínimos (SPEC regra 4): fica só o símbolo, que a regra permite a
   partir de 16 px. O nome acessível continua no aria-label do link. */
@media (max-width:359px){.nav__lockup .lockup__texto{display:none}}   /* lockup 127 + 16 + botão 166 = 309 cabe a partir de 360 */
@media (min-width:768px){
  .nav__cta{--btn-h:56px;--btn-fs:19px;--btn-pad:24px}
}
/* os quatro links só entram quando cabem numa linha ao lado do lockup e do botão (≈ 880 px) */
@media (min-width:1024px){.nav__links{display:flex}}
@media (min-width:1200px){.nav__cta{--btn-h:64px;--btn-fs:22px;--btn-pad:32px}}
@media (prefers-reduced-motion:reduce){.nav::after,.nav__lockup{transition:none}}

/* --------------------------------- herói ---------------------------------- */
.hero{padding-block:32px 48px}
.hero__kicker{margin-bottom:16px}
.hero__sub{margin-top:32px;max-width:640px}
.hero__acoes{display:flex;flex-wrap:wrap;align-items:center;gap:24px;margin-top:32px}
.hero__micro{margin-top:16px}
@media (min-width:1200px){.hero{padding-block:64px 80px}}

/* momento-assinatura 1 · "duas vozes" (05 §5.3): a primeira linha sobe 24 px,
   a segunda desce 24 px, assentam na mesma baseline. CSS puro, roda antes do JS. */
.voz{display:block}
@keyframes voz-sobe{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
@keyframes voz-desce{from{opacity:0;transform:translateY(-24px)}to{opacity:1;transform:none}}
@keyframes sobe-16{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
.voz--a{animation:voz-sobe var(--t-reveal) var(--ease-out) both}
.voz--b{animation:voz-desce var(--t-reveal) var(--ease-out) both;animation-delay:var(--stagger)}
/* subtítulo e CTA: 60 ms depois da última linha (0 + 60 + 280 = 340 ms) */
.hero__kicker,.hero__sub,.hero__acoes,.hero__micro{
  animation:sobe-16 var(--t-reveal) var(--ease-out) both}
.hero__kicker{animation-delay:0ms}
.hero__sub{animation-delay:400ms}
.hero__acoes{animation-delay:460ms}
.hero__micro{animation-delay:460ms}

/* ------------------------- faixa do herói (05 §6.4, v2.7) ----------------- */
/* Anda por transform no compositor (Web Animations API, main.js §3), uma volta em 60 s.
   O arrasto, com dedo ou mouse, move o relógio da mesma animação. pan-y: a página
   continua rolando na vertical; o gesto horizontal vira arrasto da faixa. */
.marquee{margin-top:48px;overflow:hidden;touch-action:pan-y;cursor:grab;
  user-select:none;-webkit-user-select:none}
.marquee.is-dragging{cursor:grabbing}
.marquee__track{display:flex;width:max-content;will-change:transform}   /* um elemento só, sempre em movimento */
.marquee__set{display:flex;gap:var(--gutter);padding-inline-end:var(--gutter)}
.marquee__set img{width:var(--marquee-w);height:auto;aspect-ratio:4/5;object-fit:cover;
  border-radius:0;pointer-events:none}     /* peças não têm raio (SPEC §2 regra 12); o arrasto é da faixa */
/* legenda da faixa + controle de pausa. O botão existe para o teclado (WCAG 2.2.2) e só
   aparece ao receber foco: quem usa mouse ou dedo para a faixa arrastando. */
.marquee__controle{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;
  margin-top:16px}
.marquee__legenda{max-width:640px}   /* diz o que a faixa é: um carrossel completo de cliente */
.marquee__pause{width:44px;height:44px;border-radius:50%;background:var(--areia);border:0;
  padding:0;display:inline-flex;align-items:center;justify-content:center;color:var(--carvao);
  cursor:pointer;transition:background-color var(--t-micro) var(--ease-out)}
.marquee__pause:not(:focus-visible){position:absolute;width:1px;height:1px;overflow:hidden;
  clip-path:inset(50%);white-space:nowrap}
.marquee__pause:hover,.marquee__pause:focus-visible{background:var(--branco-puro)}
.marquee__pause svg{fill:currentColor;display:block}
.marquee__pause .icone-play{display:none}
.marquee__pause[aria-pressed="true"] .icone-pausa{display:none}
.marquee__pause[aria-pressed="true"] .icone-play{display:block}
@media (prefers-reduced-motion:reduce){.marquee__pause{display:none}}   /* parado: some o botão, fica a legenda */
@media (min-width:1200px){.marquee{margin-top:96px}}

/* ------------------------------ trabalhos --------------------------------- */
/* grade de trabalhos: tudo à vista, sem arrastar. Peças 4:5 exatas, nunca cortadas. */
.grade-trabalhos{display:grid;grid-template-columns:repeat(2,1fr);gap:24px var(--gutter);
  margin-top:64px}
@media (min-width:1200px){.grade-trabalhos{grid-template-columns:repeat(3,1fr)}}
/* só capas: uma fileira de quatro no desktop (414 × 518 a 1920); abaixo de 1200, 2 × 2 */
@media (min-width:1200px){.grade-trabalhos--capas{grid-template-columns:repeat(4,1fr)}}
.peca__img{overflow:hidden}       /* recorte reto para o scale(1.02) do hover */
.peca__img img{width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;
  transition:transform var(--t-hover) var(--ease-out)}
.peca:hover .peca__img img{transform:scale(1.02)}
.peca .legenda{margin-top:12px}
@media (min-width:1200px){.peca .legenda{margin-top:16px}}
@media (prefers-reduced-motion:reduce){.peca__img img{transition:none}}

/* ---------------------------- como funciona ------------------------------- */
.passos{margin-top:64px}
.passos__num{display:none}
.passo{padding-block:32px;border-top:1px solid var(--areia)}
.passo:first-child{border-top:0;padding-top:0}
.passo .texto{margin-top:16px;max-width:640px}
.passo__ordem{display:block;font:700 var(--fs-num)/var(--lh-num) var(--font-display);
  letter-spacing:-.04em;margin-bottom:16px}
@media (min-width:1200px){
  /* 12 colunas: número em 5, passos em 7 */
  .passos{display:grid;grid-template-columns:5fr 7fr;gap:var(--gutter)}
  .passos__num{display:block}
  /* número grande fixo, trocado por IO */
  .num-passo{position:sticky;top:calc(var(--nav-h) + 64px);display:block;
    font:700 160px/150px var(--font-display);letter-spacing:-.04em;
    font-variant-numeric:tabular-nums}
  .passo{padding-block:64px}
  /* no desktop o ordinal continua no fluxo acessível, mas sai da vista */
  .passo__ordem{position:absolute;width:1px;height:1px;overflow:hidden;
    clip-path:inset(50%);white-space:nowrap;margin:0}
}
/* troca do número: sai com ease-in, entra com ease-out (05 §5.2) */
@keyframes num-sai{from{opacity:1;transform:none}to{opacity:0;transform:translateY(-12px)}}
@keyframes num-entra{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.num-passo--saindo{animation:num-sai var(--t-reveal) var(--ease-in) both}
.num-passo--entrando{animation:num-entra var(--t-reveal) var(--ease-out) both}

/* -------------------------------- quem faz -------------------------------- */
.h2 .linha{display:inline}
@media (min-width:768px){.h2 .linha{display:block}}   /* três linhas no desktop */
.metodo{display:grid;grid-template-columns:1fr;gap:48px var(--gutter);margin-top:64px;
  list-style:none;padding:0}   /* é uma <ol> semântica: o número visível é o próprio elemento */
@media (min-width:768px){.metodo{grid-template-columns:repeat(3,1fr)}}
.metodo__item{border-top:1px solid var(--areia);padding-top:24px}
.metodo__num{display:block;font-size:96px;line-height:.98;margin-bottom:16px}
.metodo__item .texto{margin-top:16px}
.gente{margin-top:64px;padding-top:48px;border-top:1px solid var(--areia);display:grid;gap:32px}
@media (min-width:1200px){.gente{grid-template-columns:5fr 7fr;gap:var(--gutter);padding-top:64px}}
.gente__valor{font:700 var(--fs-num)/var(--lh-num) var(--font-display);letter-spacing:-.04em;
  font-variant-numeric:tabular-nums}
.gente__rotulo{font:500 28px/1.2 var(--font-display);letter-spacing:-.02em;margin-top:8px}
.gente__texto .texto{margin-top:16px;max-width:640px}

/* --------------------------- o que você recebe ---------------------------- */
.cartoes{display:grid;grid-template-columns:1fr;gap:var(--gutter);margin-top:64px}
@media (min-width:768px){.cartoes{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1200px){.cartoes{grid-template-columns:repeat(4,1fr)}}
.cartao{background:var(--areia);border-radius:24px;padding:32px}
@media (min-width:1200px){.cartao{padding:40px}}
.cartao__cota{display:flex;align-items:baseline;gap:12px;margin-bottom:16px}
.cartao__cota .num{font-size:96px;line-height:.98}
.cartao__palavra{font:500 28px/1.2 var(--font-display);letter-spacing:-.02em}
.cartao .h3{margin-bottom:16px}

/* -------------------------------- planos ---------------------------------- */
.planos{display:grid;grid-template-columns:1fr;gap:var(--gutter);margin-top:64px}
/* três cartões só a partir de 1200: abaixo disso o preço a 56 px não cabe em três colunas */
@media (min-width:1200px){.planos{grid-template-columns:repeat(3,1fr)}}
.plano{background:var(--areia);border-radius:24px;padding:32px;
  display:flex;flex-direction:column;   /* botões alinhados na base dos três cartões */
  transition:transform var(--t-hover) var(--ease-out)}
@media (min-width:1200px){.plano{padding:48px}}
.plano:hover,.plano:focus-within{transform:translateY(-4px)}
@media (prefers-reduced-motion:reduce){.plano{transition:none}}
.plano__nome{font:500 28px/1.2 var(--font-display);letter-spacing:-.02em}
.plano__preco{display:flex;align-items:baseline;flex-wrap:wrap;gap:12px;margin-top:16px}
.plano__preco .num{font-size:clamp(56px,4.2vw,80px);line-height:.98}   /* 80 a 1920: "R$ 2.190 por mês" numa linha em 560 */
.plano__preco-texto{font:700 56px/1 var(--font-display);letter-spacing:-.035em}
.plano__ciclo{font:500 26px/1.2 var(--font-display);letter-spacing:-.02em}
.plano__publico{margin-top:16px}
.plano__lista{margin-top:32px;display:grid;gap:12px}
.plano__lista li{padding-left:20px;position:relative}
.plano__lista li::before{content:"";position:absolute;left:0;top:.62em;width:8px;height:1px;
  background:var(--carvao)}
.plano__btn{margin-top:auto;align-self:flex-start}
.plano__lista{margin-bottom:32px}
.nao-promete{margin-top:64px;padding-top:32px;border-top:1px solid var(--areia)}
.nao-promete .texto{margin-top:16px}

/* -------------------------------- a prova --------------------------------- */
.prova-bloco{display:grid;gap:64px}
/* 5 colunas de texto / 7 de peças: três miniaturas de 260 px + 2 calhas = 828 px */
@media (min-width:1200px){.prova-bloco{grid-template-columns:5fr 7fr;align-items:end}}
.prova-bloco .btn{margin-top:32px}
.prova-bloco .texto-p{margin-top:16px}
.prova-pecas{display:flex;align-items:flex-end;gap:var(--gutter)}
/* dividem o espaço por igual e param em 260 px: nunca distorcem, só encolhem */
.prova-pecas li{flex:1 1 0;max-width:var(--prova-w)}
.prova-pecas img{width:100%;height:auto;object-fit:cover}
.prova-pecas .legenda{display:block;margin-top:16px;color:var(--branco-puro)}
/* divisória/detalhe sobre cor: única transparência permitida (SPEC §2 regra 8) */
.secao--azul .nao-promete{border-color:rgba(255,255,255,.25)}

/* ------------------------------ metodologia ------------------------------- */
.colunas{display:grid;grid-template-columns:1fr;gap:var(--gutter) 24px;margin-top:64px}
@media (min-width:768px){.colunas{grid-template-columns:repeat(2,1fr);gap:48px 24px}}
@media (min-width:1200px){.colunas{grid-template-columns:repeat(3,1fr)}}
.colunas .texto{margin-top:16px}
.cartao-pdf{margin-top:64px;background:var(--areia);border-radius:24px;padding:32px;
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:32px;
  transition:transform var(--t-hover) var(--ease-out),
             background-color var(--t-hover) var(--ease-out)}
@media (min-width:1200px){.cartao-pdf{padding:40px}}
.cartao-pdf:hover,.cartao-pdf:focus-within{transform:translateY(-4px);background:var(--branco-puro)}
.cartao-pdf__micro{margin-top:16px}
.cartao-pdf__capa{width:320px;height:180px;object-fit:cover;border-radius:0}
.seta-baixo{transition:transform var(--t-hover) var(--ease-out)}
.cartao-pdf:hover .seta-baixo{transform:translateY(2px)}
@media (prefers-reduced-motion:reduce){
  .cartao-pdf{transition:background-color var(--t-hover) var(--ease-out)}
  .cartao-pdf:hover,.cartao-pdf:focus-within{transform:none}
  .seta-baixo{transition:none}
  .cartao-pdf:hover .seta-baixo{transform:none}
}

/* --------------------------- FAQ (acordeão APG) --------------------------- */
.faq{margin-top:64px;max-width:852px}
.faq__item{border-top:1px solid var(--areia)}
.faq__item:last-child{border-bottom:1px solid var(--areia)}
.faq__h{margin:0}
.faq__btn{width:100%;display:flex;align-items:center;justify-content:space-between;gap:24px;
  background:none;border:0;padding:24px 0;min-height:48px;text-align:left;color:inherit;
  cursor:pointer;font:500 22px/28px var(--font-display);letter-spacing:-.02em}
@media (min-width:1200px){.faq__btn{font-size:28px;line-height:34px}}
/* cruz de 2 px: a única rotação da página (05 §5.2) */
.cruz{position:relative;width:24px;height:24px;flex:0 0 auto;
  transition:transform var(--t-hover) var(--ease-out)}
.cruz::before,.cruz::after{content:"";position:absolute;background:currentColor;border-radius:1px}
.cruz::before{left:0;right:0;top:11px;height:2px}
.cruz::after{top:0;bottom:0;left:11px;width:2px}
[aria-expanded="true"] .cruz{transform:rotate(45deg)}
/* exceção declarada de propriedade de layout: clique, um painel, subárvore pequena */
.faq__panel{display:grid;grid-template-rows:0fr;
  transition:grid-template-rows 300ms var(--ease-out)}
.faq__panel>.faq__inner{overflow:hidden;opacity:0;
  transition:opacity 200ms var(--ease-out)}
.faq__panel.is-open{grid-template-rows:1fr}
.faq__panel.is-open>.faq__inner{opacity:1}
.faq__inner .texto{padding-bottom:32px;max-width:852px}
@media (prefers-reduced-motion:reduce){
  .faq__panel,.faq__panel>.faq__inner,.cruz{transition:none}
}
/* sem JS o acordeão fica todo aberto: nada de conteúdo inacessível */
.no-js .faq__panel{grid-template-rows:1fr}
.no-js .faq__panel>.faq__inner{opacity:1}
.no-js .cruz{display:none}

/* ------------------------------- CTA final -------------------------------- */
.cta__titulo{max-width:none}
.cta__linha{margin-top:24px;font:400 clamp(19px,2vw,24px)/1.5 var(--font-text)}
.cta .btn{margin-top:32px}
.cta__precos{margin-top:24px;font:500 var(--fs-nav)/1.5 var(--font-text)}

/* --------------------------------- rodapé --------------------------------- */
.rodape{background:var(--carvao);color:var(--branco-puro);padding-block:var(--secao-y)}
.rodape__topo{display:grid;gap:32px}
@media (min-width:1200px){.rodape__topo{grid-template-columns:5fr 7fr;align-items:start}}
.rodape__marca{display:inline-flex;align-items:flex-end;gap:16px}
.rodape__marca .simbolo{width:46px;height:48px;flex:0 0 auto}
.rodape__handle{font:500 17px/1 var(--font-text)}
.rodape__desc{max-width:640px}
.rodape__links{display:flex;flex-wrap:wrap;gap:8px 32px;margin-top:64px;
  padding-top:32px;border-top:1px solid rgba(255,255,255,.25)}
.rodape__links a{font:500 var(--fs-nav)/1 var(--font-text);text-decoration:none;opacity:.8;
  display:inline-flex;align-items:center;min-height:48px;
  transition:opacity var(--t-micro) var(--ease-out)}
.rodape__links a:hover,.rodape__links a:focus-visible{opacity:1}
.rodape__legal{margin-top:8px;opacity:.7;font-weight:400}
.rodape__links + .rodape__legal{margin-top:32px}

/* ============================ página de prova ============================= */
/* lockup integrado F = 40 → símbolo 30 × 31, padding-bottom 5, gap 1 */
.lockup--40{gap:1px}
.lockup--40 .lockup__simbolo{width:30px;padding-bottom:5px}
.lockup--40 .lockup__simbolo .simbolo{height:31px}
.lockup--40 .lockup__texto{font-size:40px;line-height:40px}
.prova-topo{padding-block:24px;border-bottom:1px solid var(--areia)}
.prova-topo__kicker{margin-top:12px}
.prova-main{padding-block:48px}
@media (min-width:1200px){.prova-main{padding-block:80px}}
.prova-h1{font-size:clamp(40px,6vw,88px);line-height:1.02;max-width:14em}
.prova-linha{margin-top:32px}
/* grade estilo Instagram: calha estreita, três peças 4:5 */
.prova-grade{display:grid;grid-template-columns:1fr;gap:4px;margin-top:48px;
  max-width:1080px}   /* no celular, uma peça por vez na largura toda: a peça tem de ser legível */
@media (min-width:768px){.prova-grade{grid-template-columns:repeat(3,1fr)}}
.prova-grade__vazio{aspect-ratio:4/5;background:#E6E6E6;display:flex;align-items:center;
  justify-content:center;text-align:center;padding:8px;color:var(--carvao);
  font:500 13px/18px var(--font-text)}
.prova-btn{margin-top:48px}
.prova-precos{margin-top:32px}
.prova-precos__tri{margin-top:8px}
.prova-rodape{padding-bottom:48px}
.prova-rodape .legenda{opacity:.7}

/* ==================== revelações por IO (05 §6.2) ======================== */
[data-reveal]{opacity:0;transform:translateY(16px);
  transition:opacity var(--t-reveal) var(--ease-out),
             transform var(--t-reveal) var(--ease-out);
  transition-delay:calc(var(--i,0) * var(--stagger))}
[data-reveal].is-in{opacity:1;transform:none}
h1[data-reveal],h2[data-reveal]{transform:translateY(24px)}
.plano[data-reveal]{transform:translateY(20px);transition-delay:calc(var(--i,0) * 80ms)}

/* ============================ folha do lead ============================== */
/* Abre antes de qualquer link do WhatsApp: nome, empresa, site ou @, faturamento
   (lista nativa) e telefone. <dialog> nativo: foco preso, Esc fecha, fundo escurecido.
   No celular é uma folha que sobe do rodapé e rola por dentro (altura em dvh, para
   não sumir atrás da barra do navegador nem do teclado); no desktop, um cartão
   centrado de 600 px. Título recebe o foco inicial (autofocus): no celular o teclado
   só abre quando a pessoa toca num campo. */
.lead{border:0;padding:0;background:transparent;max-width:none;width:100%;color:var(--carvao);
  position:fixed;inset:auto 0 0 0;margin:0;max-height:calc(100vh - 24px);overflow:visible}
@supports (height:100dvh){.lead{max-height:calc(100dvh - 24px)}}
.lead::backdrop{background:rgba(28,28,34,.48)}
.lead__form{background:var(--branco);border-radius:24px 24px 0 0;
  padding:20px 20px calc(20px + env(safe-area-inset-bottom,0px));
  max-height:inherit;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.lead__titulo{font-size:22px;line-height:27px;margin-top:4px;outline:none}
.lead__sub{display:none}                                  /* no celular, só o título explica */
.lead__campos{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}   /* duas colunas já no celular: a folha cabe sem rolar */
.campo--largo{grid-column:1 / -1}
.campo{display:flex;flex-direction:column;gap:6px;min-width:0}
.campo>span{font:500 14px/18px var(--font-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 16 px nos campos: abaixo disso o iOS dá zoom ao focar */
.campo input,.campo select{height:44px;border:1px solid var(--areia);border-radius:14px;
  background:var(--branco-puro);padding:0 14px;font:400 16px/1.2 var(--font-text);color:var(--carvao);
  width:100%;margin:0;-webkit-appearance:none;appearance:none}
.campo input::placeholder{color:#8A8783}
.campo select{padding-right:44px;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none' stroke='%231C1C22' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 16px center;background-size:16px 16px}
.campo select:invalid{color:#8A8783}                      /* "Selecione" na cor de placeholder */
.campo option{color:var(--carvao)}
.campo input:focus-visible,.campo select:focus-visible{outline:2px solid var(--azul);outline-offset:2px;border-color:var(--azul)}
.campo.is-invalido input,.campo.is-invalido select{border-color:var(--coral)}
.lead__erro{margin-top:14px}
.lead__acoes{display:flex;flex-wrap:wrap;align-items:center;gap:8px 20px;margin-top:14px}
.lead__acoes .btn{--btn-h:52px;--btn-fs:19px;--btn-pad:24px}
/* "Agora não" apagado de propósito (pedido do Vitor): quase da cor do fundo, sem sublinhado;
   só ganha contraste no hover e no foco de teclado. Esc e o fundo também fecham. */
.lead__fechar{background:none;border:0;cursor:pointer;padding:0 4px;min-height:44px;
  color:#ADA9A3;text-decoration:none;font-size:15px;
  transition:color var(--t-micro) var(--ease-out)}
.lead__fechar:hover,.lead__fechar:focus-visible{color:var(--carvao);text-decoration:underline}
.lead__lgpd{margin-top:12px;font-size:12px;line-height:16px;color:rgba(28,28,34,.7);position:relative}
/* ⓘ "entre linhas" no fim da nota: o aviso da captura abre e fecha só no clique ou toque
   (JS); sem hover, para não aparecer sozinho. */
.dica__botao{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;
  border-radius:50%;border:1px solid currentColor;background:none;padding:0;margin-left:2px;
  color:inherit;font:600 11px/1 var(--font-text);vertical-align:-4px;cursor:help;position:relative}
.dica__botao::before{content:"";position:absolute;inset:-13px}          /* alvo de toque 44 px */
.dica__botao:focus-visible{outline:2px solid var(--azul);outline-offset:2px}
.dica__popup{display:none;position:absolute;left:0;bottom:calc(100% + 6px);z-index:1;
  width:min(260px,100%);background:var(--branco-puro);color:var(--carvao);
  border:1px solid var(--areia);border-radius:12px;padding:8px 10px;
  font:400 12px/16px var(--font-text);box-shadow:0 8px 24px rgba(28,28,34,.12);
  animation:dica-entra var(--t-micro) var(--ease-out) both}
@keyframes dica-entra{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.dica.is-aberta .dica__popup{display:block}                /* só no clique ou toque no ⓘ (pedido do Vitor) */
@media (min-width:768px){
  .lead{inset:0;margin:auto;width:fit-content;height:fit-content;max-height:calc(100vh - 48px)}
  @supports (height:100dvh){.lead{max-height:calc(100dvh - 48px)}}
  .lead__form{border-radius:24px;padding:36px 40px 32px;width:min(600px,calc(100vw - 48px))}
  .lead__titulo{font-size:26px;line-height:32px;margin-top:6px}
  .lead__sub{display:block;margin-top:8px}
  .lead__campos{gap:16px 20px;margin-top:24px}
  .campo input,.campo select{height:48px;padding:0 16px}
  .campo select{padding-right:44px}
  .lead__acoes{margin-top:24px;gap:24px}
  .lead__acoes .btn{--btn-h:56px;--btn-fs:20px;--btn-pad:28px}
  .lead__lgpd{margin-top:18px;font-size:13px;line-height:18px}
}
/* entrada e saída (05 §5): no celular a folha sobe do rodapé e desce ao fechar;
   no desktop cresce do centro e some. Só transform e opacity. */
@keyframes lead-sobe{from{transform:translateY(100%)}to{transform:none}}
@keyframes lead-desce{from{transform:none}to{transform:translateY(100%)}}
@keyframes lead-cresce{from{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:none}}
@keyframes lead-some{from{opacity:1;transform:none}to{opacity:0;transform:translateY(8px) scale(.98)}}
@keyframes lead-fundo{from{opacity:0}to{opacity:1}}
@keyframes lead-fundo-sai{from{opacity:1}to{opacity:0}}
.lead[open] .lead__form{animation:lead-sobe var(--t-large) var(--ease-out-strong) both}
.lead[open]::backdrop{animation:lead-fundo var(--t-reveal) var(--ease-out) both}
.lead.is-saindo .lead__form{animation:lead-desce var(--t-reveal) var(--ease-in) both}
.lead.is-saindo::backdrop{animation:lead-fundo-sai var(--t-reveal) var(--ease-out) both}
@media (min-width:768px){
  .lead[open] .lead__form{animation-name:lead-cresce;animation-duration:var(--t-reveal)}
  .lead.is-saindo .lead__form{animation-name:lead-some;animation-duration:var(--t-hover)}
}
@media (prefers-reduced-motion:reduce){
  .lead[open] .lead__form,.lead.is-saindo .lead__form{animation-name:lead-fundo}
}
.rodape [data-reveal]{transform:none}          /* rodapé: só opacidade */
.no-js [data-reveal]{opacity:1;transform:none}  /* sem JS, nada fica escondido */

/* ============ rede de segurança de movimento reduzido (05 §6.6) ==========
   Nunca *{animation:none}: mataria animation-fill-mode e deixaria elementos
   presos em opacity:0. 1 ms preserva transitionend/animationend. */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:1ms !important;
    animation-iteration-count:1 !important;
    transition-duration:1ms !important;
    scroll-behavior:auto !important}
  /* devolve o fade, que a WCAG 2.3.3 não considera movimento */
  [data-reveal]{animation:none !important;transform:none !important;opacity:1;
    transition:opacity 200ms linear !important;transition-delay:0s !important}
  .voz,.hero__kicker,.hero__sub,.hero__acoes,.hero__micro{
    animation:none !important;transform:none !important;opacity:1}
}
