/* =====================================================================
   PAES · LP 1 · "DIRETA"
   LP de infoproduto agressiva, porém bem construída.

   PALETA · atualizada a pedido: saiu o quase-preto, entrou o verde
   escuro da marca (#003c2b, Pantone 3308 C, a "casca do abacate").
   O preto fugia demais da Fran; o verde escuro dá o mesmo contraste e
   a mesma pegada de LP de conversão, mas a página continua sendo
   reconhecidamente da escola.

   Sobre esse fundo, as cores da marca aparecem na versão VIVA:
     · lima  #d5e05b  · o CTA principal. Sobre verde escuro ele grita.
     · coral #ff6f5e  · o salmão do manual puxado pra saturação alta,
                        usado só em urgência e destaque de texto.
     · menta #5cc2bf  · respiro, números, detalhes.
   Nenhuma delas é inventada: são os tokens --ft-* do manual, só que
   escolhidos pelos mais vibrantes em vez dos mais neutros.

   Auto-contida de propósito: não carrega brand.css nem lp-oficina.css.
   As fotos vêm de ../paes-sem-gluten/images/ (a LP original), por caminho
   relativo entre pastas irmãs — sem duplicar 30 fotos por variante.
   ===================================================================== */

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0}

/* -------------------------------------------------------------------
   PALETA DO CURSO · PÃES
   Família análoga, como em biscoitos: oliva escuro de base, crosta
   (o marrom-alaranjado do pão assado) na régua, e o tom de miolo/palha
   no CTA. O sage do manual entra nos detalhes.

   O oliva foi escolhido pra base porque precisava separar de duas
   páginas que já existem: o verde-esmeralda de geléias e o marrom de
   biscoitos. Oliva é verde, mas puxado pro amarelo, então lê diferente
   dos dois à primeira vista.
   ------------------------------------------------------------------- */
:root{
  /* Neutros e o degrau mais escuro da base. Estavam em hexadecimal fixo
     no corpo do CSS, herdados de geléias, e por isso NÃO acompanhavam a
     paleta: em biscoitos o rodapé saía verde numa página marrom e o
     fecho virava um gradiente de âmbar pra vermelho, dois tons brigando.
     Agora são token e trocam junto com o resto. */
  --base-esc: #1e2216;
  --linha: #e4e0cd;
  --tinta-fraca: #85886f;
  --tracejado: #d8d3bd;

  /* Cor do texto DA RÉGUA. Vira token porque depende da paleta do
     curso: sobre o coral de geléias o branco funciona, sobre o âmbar
     de biscoitos ele some. Cada curso declara o seu. */
  --regua-tx: #fff;
  --regua-tx-rgb: 255,255,255;

  --base:     #2b3020;   /* fundo principal   · Pantone 3308 C */
  --base-2:   #363d29;   /* blocos elevados */
  --base-3:   #4c543a;   /* bordas */
  --acento:      #ecdc9c;   /* CTA               · Pantone 584 C */
  --acento-esc:  #d6c37c;
  --quente:     #b5642c;   /* urgência/destaque · salmão 1775 C vivo */
  --quente-esc: #8e4b1d;
  --detalhe:     #96ae88;   /* detalhes          · Pantone 2218 C */
  --realce:   #f5f085;   /* Pantone 3935 C */
  --claro:     #f4f1e4;   /* texto sobre verde · Pantone 2281 C */
  --claro-mid: #adb09a;   /* texto secundário sobre verde */
  --papel:     #fffdf5;   /* seções claras */
  --nude:      #efeadb;   /* Pantone 503 C */
  --tinta:     #262a1c;   /* texto sobre claro */
  --tinta-mid: #5f6350;  /* Versões RGB dos mesmos tons. Existem porque rgba() precisa dos
     canais soltos, e sem isso as sombras e bordas translúcidas ficariam
     presas na cor antiga quando a paleta do curso mudasse. */
  --acento-rgb:      236,220,156;
  --quente-rgb:      181,100,44;
  --quente-esc-rgb:  142,75,29;
  --detalhe-rgb:     150,174,136;
  --claro-rgb:       244,241,228;
  --base-rgb:        43,48,32;
  --sombra-rgb:      16,20,10;

  --raio:      14px;
  --wrap:      1120px;
}

body{
  background:var(--base);
  color:var(--claro);
  font:400 17px/1.62 'Inter',-apple-system,system-ui,sans-serif;
  overflow-x:hidden;
  padding-bottom:78px;               /* espaço da barra fixa */
}
img{max-width:100%;height:auto;display:block}
a{color:inherit}

.wrap{width:min(var(--wrap),calc(100% - 40px));margin-inline:auto}
.wrap-fino{width:min(760px,calc(100% - 40px));margin-inline:auto}
section{padding:clamp(56px,7vw,96px) 0}
.centro{text-align:center}

/* ---------- tipografia ---------- */
h1,h2,h3{font-family:'Archivo Black','Inter',sans-serif;font-weight:400;
  line-height:1.06;letter-spacing:-.02em;margin:0}
h1{font-size:clamp(34px,5.6vw,62px)}
h2{font-size:clamp(28px,4.2vw,46px)}
h3{font-size:clamp(19px,2vw,23px);line-height:1.2}
p{margin:0 0 1em}
.lead{font-size:clamp(17px,1.9vw,21px);color:var(--claro-mid);line-height:1.6}
.grifo{color:var(--acento)}
.grifo-coral{color:var(--quente)}

.olho{display:inline-block;font:700 12.5px/1 'Inter',sans-serif;letter-spacing:.14em;
  text-transform:uppercase;color:var(--acento);border:1px solid rgba(var(--acento-rgb),.45);
  border-radius:100px;padding:8px 14px;margin-bottom:20px}

/* ---------- botões ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;
  font:700 17px/1 'Inter',sans-serif;letter-spacing:-.01em;text-decoration:none;
  padding:19px 30px;border-radius:100px;border:0;cursor:pointer;
  transition:transform .16s ease,box-shadow .16s ease,background .16s ease}
/* CTA em lima sobre verde: o par de maior contraste da marca. */
.btn-cta{background:var(--acento);color:var(--base);box-shadow:0 10px 30px -8px rgba(var(--acento-rgb),.5)}
.btn-cta:hover{background:var(--acento-esc);transform:translateY(-2px);
  box-shadow:0 16px 38px -10px rgba(var(--acento-rgb),.65)}
.btn-coral{background:var(--quente);color:#fff;box-shadow:0 10px 30px -8px rgba(var(--quente-rgb),.55)}
.btn-coral:hover{background:var(--quente-esc);transform:translateY(-2px)}
.btn-g{font-size:clamp(17px,2vw,20px);padding:22px 40px}
.btn-bloco{display:flex;width:100%}
.btn .seta{transition:transform .16s ease}
.btn:hover .seta{transform:translateX(4px)}
/* Alinhado à esquerda, não centralizado: no hero ele vive embaixo de um
   botão alinhado à esquerda, e centralizar fazia a linha de preço flutuar
   sozinha no meio da coluna, sem se referir a nada. */
.btn-sub{display:block;font-size:13.5px;color:var(--claro-mid);margin-top:12px}
.btn-sub s{opacity:.75}
.btn-sub b{color:var(--acento)}
.centro .btn-sub{text-align:center}

/* ---------- barra de topo ---------- */
/* Régua em duas linhas: a chamada da promoção em caixa alta e, embaixo,
   a frase de missão. É o formato que o público de tráfego pago espera
   ver no topo — e é o que entrega a oferta antes de qualquer scroll. */
.aviso{background:var(--quente);color:var(--regua-tx);text-align:center;padding:11px 16px}
.aviso b{display:block;font:800 clamp(13px,1.7vw,16px)/1.25 'Inter',sans-serif;
  letter-spacing:.02em}
.aviso span{display:block;max-width:70ch;margin:5px auto 0;
  font:500 12.5px/1.4 'Inter',sans-serif;color:rgba(var(--regua-tx-rgb),.9)}

/* ---------- HERO ---------- */
.hero{padding-top:clamp(40px,5vw,64px);position:relative;overflow:hidden}
.hero::before{content:'';position:absolute;inset:-30% 0 auto -10%;height:70%;
  background:radial-gradient(60% 60% at 30% 40%,rgba(var(--detalhe-rgb),.2),transparent 70%);
  pointer-events:none}
.hero-in{position:relative;display:grid;gap:clamp(32px,4vw,56px);
  grid-template-columns:1fr;align-items:center}
@media(min-width:940px){.hero-in{grid-template-columns:1.05fr .95fr}}
.hero h1{margin-bottom:20px}
.hero .lead{margin-bottom:28px}
.hero-foto{margin:0;position:relative;border-radius:var(--raio);overflow:hidden;
  box-shadow:0 30px 70px -25px rgba(var(--sombra-rgb),.85)}
.hero-foto img{width:100%;aspect-ratio:4/5;object-fit:cover}
.hero-foto figcaption{position:absolute;left:0;right:0;bottom:0;padding:44px 20px 16px;
  background:linear-gradient(transparent,rgba(var(--sombra-rgb),.9));font:600 14px/1.3 'Inter',sans-serif}

.selos{display:flex;flex-wrap:wrap;gap:10px;margin-top:24px;padding:0;list-style:none}
.selos li{display:flex;align-items:center;gap:7px;background:var(--base-2);
  border:1px solid var(--base-3);border-radius:100px;padding:9px 15px;
  font:600 13.5px/1 'Inter',sans-serif;color:var(--claro-mid)}
.selos b{color:var(--acento)}

/* ---------- VSL ---------- */
.vsl{background:var(--base-2);border:1px solid var(--base-3);border-radius:var(--raio);
  padding:clamp(14px,1.6vw,20px);box-shadow:0 24px 60px -24px rgba(var(--sombra-rgb),.85)}
.vsl-moldura{border-radius:9px;overflow:hidden;background:#000;min-height:180px}

/* ---------- faixa corrida ---------- */
.faixa{background:var(--acento);color:var(--base);overflow:hidden;padding:13px 0;
  font:800 14px/1 'Inter',sans-serif;letter-spacing:.02em}
.faixa-linha{display:flex;gap:26px;white-space:nowrap;width:max-content;
  animation:corre 34s linear infinite}
.faixa i{opacity:.5;font-style:normal}
@keyframes corre{to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.faixa-linha{animation:none}}

/* ---------- blocos alternados ---------- */
.claro{background:var(--papel);color:var(--tinta)}
.claro .lead{color:var(--tinta-mid)}
.claro .olho{color:var(--quente-esc);border-color:rgba(var(--quente-esc-rgb),.35)}
.claro .grifo{color:var(--quente-esc)}
.meio{background:var(--base-2)}

/* Cabeçalho de seção centralizado.
   Antes eles eram um bloco de max-width:760px encostado na esquerda, e
   com o conteúdo abaixo em grade cheia isso deixava o título "solto",
   desalinhado de tudo. Centralizado, o título ancora a seção. */
.cab-centro{max-width:820px;margin-inline:auto;text-align:center}
.cab-centro .lead{margin-inline:auto}

/* ---------- dores ---------- */
.dores{list-style:none;padding:0;margin:0;display:grid;gap:14px;
  grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}
.dor{background:var(--base-2);border:1px solid var(--base-3);border-left:3px solid var(--quente);
  border-radius:10px;padding:22px 22px 20px;font-size:16.5px;line-height:1.55}
.dor b{color:var(--claro);font-weight:700}
.dor::before{content:'✕';display:grid;place-items:center;width:26px;height:26px;
  border-radius:50%;background:rgba(var(--quente-rgb),.18);color:var(--quente);
  font-size:13px;font-weight:700;margin-bottom:13px}
.virada{margin-top:clamp(28px,3.4vw,40px);
  background:linear-gradient(135deg,rgba(var(--acento-rgb),.16),rgba(var(--detalhe-rgb),.12));
  border:1px solid rgba(var(--acento-rgb),.34);border-radius:var(--raio);
  padding:clamp(24px,3vw,36px);text-align:center}
.virada p{font-size:clamp(17px,2vw,20px);margin-bottom:22px}
.virada b{color:var(--acento)}

/* ---------- pilares ---------- */
/* minmax de 320px, não 260px: são 6 cards, e com 260px o auto-fit
   montava 4 colunas — sobravam 2 órfãos encostados à esquerda na
   segunda linha. Com 320px dá 3 colunas e fecha 3+3, equilibrado.

   O min(320px,100%) não é firula: minmax(320px,1fr) puro obriga a faixa
   a ter 320px mesmo quando o container tem menos que isso. Num celular
   de 320px o .wrap sobra 280px, e a grade estourava 20px pra fora da
   tela. Com o min(), a faixa encolhe junto com o container. */
.pilares{display:grid;gap:16px;
  grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr));
  margin-top:clamp(28px,3.4vw,44px)}
.pilar{background:var(--base-2);border:1px solid var(--base-3);border-radius:var(--raio);overflow:hidden}
.claro .pilar{background:#fff;border-color:var(--linha)}
.pilar img{width:100%;aspect-ratio:16/10;object-fit:cover}
.pilar-tx{padding:22px}
.pilar-n{display:inline-block;font:800 12px/1 'Inter',sans-serif;letter-spacing:.12em;
  color:var(--quente-esc);margin-bottom:10px}
.pilar h3{margin-bottom:9px}
.pilar p{font-size:15.5px;color:var(--claro-mid);margin:0}
.claro .pilar p{color:var(--tinta-mid)}

/* ---------- entregáveis / value stack ---------- */
.stack{display:grid;gap:12px;margin-top:clamp(28px,3.4vw,40px)}
.item{display:grid;grid-template-columns:auto 1fr auto;gap:16px;align-items:center;
  background:#fff;border:1px solid var(--linha);border-radius:12px;padding:18px 22px}
.item-ck{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;
  background:rgba(var(--base-rgb),.1);color:var(--base);font-weight:800;font-size:15px}
.item-tx b{display:block;font-size:17px;font-weight:700;color:var(--tinta);line-height:1.3}
.item-tx span{font-size:14.5px;color:var(--tinta-mid)}
.item-val{font:700 15px/1 'Inter',sans-serif;color:var(--tinta-fraca);white-space:nowrap}
.stack-total{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px;
  border-top:2px dashed var(--tracejado);margin-top:8px;padding-top:20px;
  font:700 18px/1.3 'Inter',sans-serif;color:var(--tinta)}
.stack-total s{color:var(--tinta-fraca);font-weight:500}

/* ---------- receitas ---------- */
.rec-cols{display:grid;gap:clamp(18px,2.4vw,28px);grid-template-columns:1fr;margin-top:clamp(28px,3.4vw,40px)}
@media(min-width:820px){.rec-cols{grid-template-columns:1.25fr .75fr}}
.rec-bloco{background:var(--base-2);border:1px solid var(--base-3);border-radius:var(--raio);padding:clamp(22px,2.6vw,30px)}
.rec-titulo{display:flex;justify-content:space-between;align-items:baseline;gap:12px;
  padding-bottom:14px;margin-bottom:6px;border-bottom:1px solid var(--base-3)}
.rec-titulo h3{font-size:20px}
.rec-titulo span{font:600 13px/1 'Inter',sans-serif;color:var(--detalhe)}
.rec-lista{list-style:none;padding:0;margin:0}
.rec-lista li{display:flex;gap:13px;align-items:baseline;padding:11px 0;
  border-bottom:1px solid rgba(var(--claro-rgb),.08);font-size:16px}
.rec-lista li:last-child{border-bottom:0}
.rec-lista i{font:800 12px/1 'Inter',sans-serif;font-style:normal;color:var(--acento);
  min-width:20px;opacity:.85}
.rec-nota{margin:16px 0 0;font-size:14.5px;color:var(--claro-mid)}

/* ---------- avaliações ---------- */
.avals{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));margin-top:clamp(28px,3.4vw,40px)}
.aval{background:#fff;border:1px solid var(--linha);border-radius:12px;padding:22px}
.aval-estrelas{color:var(--quente);font-size:15px;letter-spacing:2px}
.aval p{font-size:15.5px;color:var(--tinta-mid);margin:12px 0 16px}
.aval-autor{display:flex;align-items:center;gap:11px}
.aval-av{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;
  background:var(--base);color:var(--acento);font-weight:700;font-size:15px}
.aval-autor b{display:block;font-size:14.5px;color:var(--tinta)}
.aval-autor span{font-size:13px;color:var(--tinta-fraca)}

/* ---------- números ---------- */
.numeros{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
  margin-top:clamp(28px,3.4vw,40px);text-align:center}
.numeros div{background:var(--base-2);border:1px solid var(--base-3);border-radius:12px;padding:24px 14px}
.numeros b{display:block;font:400 clamp(26px,3.4vw,36px)/1 'Archivo Black',sans-serif;color:var(--acento)}
.numeros span{display:block;font-size:13.5px;color:var(--claro-mid);margin-top:8px}

/* ---------- betinha ---------- */
.duas{display:grid;gap:clamp(28px,4vw,52px);grid-template-columns:1fr;align-items:center}
@media(min-width:900px){.duas{grid-template-columns:.9fr 1.1fr}}
.duas figure{margin:0;border-radius:var(--raio);overflow:hidden}
.duas figure img{width:100%;aspect-ratio:4/5;object-fit:cover}
.credenciais{list-style:none;padding:0;margin:22px 0 0;display:grid;gap:9px}
.credenciais li{display:flex;gap:10px;align-items:flex-start;font-size:16px;color:var(--claro-mid)}
.credenciais li::before{content:'✓';color:var(--acento);font-weight:800;flex:none}

/* ---------- calculadora ---------- */
.calc{display:grid;gap:clamp(20px,2.6vw,32px);grid-template-columns:1fr;
  background:var(--base-2);border:1px solid var(--base-3);border-radius:var(--raio);
  padding:clamp(24px,3vw,38px);margin-top:clamp(28px,3.4vw,40px)}
@media(min-width:860px){.calc{grid-template-columns:1fr 1fr}}
.campo{margin-bottom:26px}
.campo:last-child{margin-bottom:0}
.campo-cab{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:12px}
.campo-cab label{font:600 15px/1 'Inter',sans-serif}
.campo-cab output{font:800 17px/1 'Inter',sans-serif;color:var(--acento)}
input[type=range]{width:100%;accent-color:var(--acento);height:5px}
.campo-escala{display:flex;justify-content:space-between;font-size:12.5px;color:var(--claro-mid);margin-top:7px}
.calc-res{background:linear-gradient(135deg,rgba(var(--acento-rgb),.16),rgba(var(--detalhe-rgb),.12));
  border:1px solid rgba(var(--acento-rgb),.3);border-radius:12px;padding:clamp(20px,2.4vw,28px);text-align:center}
.calc-rotulo{font:700 12px/1 'Inter',sans-serif;letter-spacing:.12em;text-transform:uppercase;color:var(--claro-mid)}
.calc-num{margin:14px 0 6px}
/* filho DIRETO: o número gigante. Sem o ">", o <b> de "100% pago" que
   vive dentro do <span> herdava 68px e brigava com o número. */
.calc-num > b{font:400 clamp(46px,7vw,68px)/1 'Archivo Black',sans-serif;color:var(--acento);display:block}
.calc-num span{font-size:15px;color:var(--claro-mid)}
.calc-num span b{color:var(--claro);font-weight:700}
.calc-renda{margin-top:18px;padding-top:18px;border-top:1px solid rgba(var(--claro-rgb),.14)}
.calc-renda span{display:block;font-size:13.5px;color:var(--claro-mid)}
.calc-renda b{font:400 clamp(24px,3vw,32px)/1 'Archivo Black',sans-serif;color:var(--claro)}
.calc-nota{font-size:14px;color:var(--claro-mid);margin:14px 0 0}

/* ---------- OFERTA ---------- */
.oferta-bg{background:
  radial-gradient(70% 60% at 50% 0%,rgba(var(--acento-rgb),.18),transparent 65%),var(--base-2)}
.caixa{max-width:660px;margin:clamp(28px,3.4vw,40px) auto 0;background:var(--papel);color:var(--tinta);
  border-radius:20px;overflow:hidden;box-shadow:0 40px 90px -30px rgba(var(--sombra-rgb),.9)}
.caixa-topo{background:var(--base);color:var(--acento);text-align:center;padding:16px;
  font:800 14px/1.3 'Inter',sans-serif;letter-spacing:.06em;text-transform:uppercase}
.caixa-in{padding:clamp(26px,3.4vw,40px)}
.inclui{list-style:none;padding:0;margin:0 0 26px;display:grid;gap:11px}
.inclui li{display:flex;gap:11px;align-items:flex-start;font-size:16px;color:var(--tinta-mid)}
.inclui li::before{content:'✓';display:grid;place-items:center;flex:none;width:22px;height:22px;
  border-radius:50%;background:rgba(var(--base-rgb),.1);color:var(--base);font-size:13px;font-weight:800}
.inclui b{color:var(--tinta)}

/* preço com âncora: o "de" riscado precisa ser visível mas não competir
   com o valor real, por isso coral médio e peso normal. */
.de{text-align:center;font-size:clamp(16px,2vw,18px);color:var(--tinta-mid);margin-bottom:2px}
.de s{color:var(--quente-esc);text-decoration-thickness:2px}
.preco{text-align:center;margin:2px 0}
.preco small{display:block;font:600 15px/1 'Inter',sans-serif;color:var(--tinta-mid);margin-bottom:4px}
.preco b{font:400 clamp(52px,8vw,76px)/1 'Archivo Black',sans-serif;color:var(--base);letter-spacing:-.03em}
.preco i{font-style:normal;font-size:.5em}
.preco-avista{display:block;text-align:center;font-size:15.5px;color:var(--tinta-mid);margin-bottom:24px}
.preco-avista b{color:var(--tinta)}
.economia{display:inline-block;background:var(--acento);color:var(--base);border-radius:100px;
  padding:7px 16px;font:800 13.5px/1 'Inter',sans-serif;margin-bottom:16px}
.gatilhos{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:22px;text-align:center}
.gatilhos div{background:#fff;border:1px solid var(--linha);border-radius:10px;padding:14px 8px}
.gatilhos b{display:block;font-size:15px;font-weight:800;color:var(--tinta)}
.gatilhos span{display:block;font-size:12.5px;color:var(--tinta-fraca);margin-top:3px}
.seguro{display:block;text-align:center;font-size:13px;color:var(--tinta-fraca);margin-top:16px}

.garantia{display:flex;gap:20px;align-items:center;flex-wrap:wrap;justify-content:center;
  max-width:660px;margin:clamp(24px,3vw,34px) auto 0;background:var(--base);
  border:1px solid var(--base-3);border-radius:var(--raio);padding:clamp(22px,2.6vw,30px);text-align:left}
.garantia-selo{flex:none;display:grid;place-items:center;width:88px;height:88px;border-radius:50%;
  background:var(--acento);color:var(--base);line-height:1}
.garantia-selo b{font:400 30px/1 'Archivo Black',sans-serif}
.garantia-selo span{font-size:12px;font-weight:700}
.garantia p{margin:0;flex:1 1 260px;font-size:15.5px;color:var(--claro-mid)}
.garantia p b{color:var(--claro)}

/* ---------- FAQ ---------- */
.faq{margin-top:clamp(24px,3vw,34px)}
.faq details{background:var(--base-2);border:1px solid var(--base-3);border-radius:12px;
  padding:18px 22px;margin-bottom:10px}
.faq summary{cursor:pointer;font:700 16.5px/1.4 'Inter',sans-serif;list-style:none;
  display:flex;justify-content:space-between;gap:14px;align-items:center}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:'+';font-size:22px;color:var(--acento);flex:none;transition:transform .2s}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq p{margin:14px 0 0;font-size:15.5px;color:var(--claro-mid)}

/* ---------- fecho ---------- */
.fecho{background:linear-gradient(135deg,var(--quente),var(--quente-esc));text-align:center}
.fecho h2{margin-bottom:16px;color:#fff}
.fecho .lead{color:rgba(255,255,255,.9);margin-bottom:30px}
.fecho .btn-cta{background:var(--base);color:var(--acento);box-shadow:0 14px 40px -12px rgba(var(--sombra-rgb),.6)}
.fecho .btn-cta:hover{background:var(--base-esc);color:var(--acento)}

/* ---------- rodapé ----------
   Sem links de navegação, a pedido: esta é uma LP de tráfego pago e
   qualquer link daqui é rota de fuga antes da compra. Fica só a marca. */
.rodape{background:var(--base-esc);padding:44px 0 34px;font-size:14px;color:var(--claro-mid);text-align:center}
.rodape img{width:170px;opacity:.9;margin:0 auto 14px}
.rodape p{max-width:460px;margin:0 auto}
.rodape-base{margin-top:26px;padding-top:20px;border-top:1px solid rgba(var(--claro-rgb),.12);font-size:12.5px}

/* ---------- barra fixa ---------- */
.barra{position:fixed;left:0;right:0;bottom:0;z-index:60;background:rgba(var(--base-rgb),.97);
  backdrop-filter:blur(12px);border-top:1px solid var(--base-3);padding:12px 0;
  transform:translateY(110%);transition:transform .3s ease}
.barra.on{transform:none}
.barra-in{display:flex;align-items:center;justify-content:space-between;gap:16px}
.barra-tx b{display:block;font-size:15px;font-weight:700;line-height:1.2;color:var(--claro)}
.barra-tx span{font-size:13px;color:var(--claro-mid)}
.barra .btn{padding:14px 24px;font-size:15px}
@media(max-width:600px){
  .barra-tx span{display:none}
  .barra .btn{padding:14px 18px;font-size:14px}
}

/* ---------- animação de entrada ----------
   O estado escondido só existe se o JS estiver vivo: quem esconde é a
   classe .js, posta no <html> por um script inline no <head>.

   Sem essa trava, um erro de JS, um bloqueador ou um IntersectionObserver
   que não dispara deixavam a página inteira com opacity:0 — conteúdo
   invisível numa página cuja única função é vender. */
.sobe{transition:opacity .6s ease,transform .6s ease}
.js .sobe{opacity:0;transform:translateY(22px)}
.js .sobe.vis{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){
  .js .sobe{opacity:1;transform:none;transition:none}
}

/* ---------- miniaturas das receitas ----------
   Só entram quando o JS confirma que o arquivo existe (veja script.js).
   Por isso o espaçamento vive na classe .com-foto e não no <li>: sem a
   foto, a linha continua com o ritmo compacto de lista de texto. */
.rec-foto{width:46px;height:46px;object-fit:cover;border-radius:8px;flex:none}
.rec-lista li.com-foto,.receitas li.com-foto{align-items:center;gap:12px}
.rec-lista li.com-foto{padding:9px 0}
