/* =========================================================
   Dra. Scarlet Silvestre — Landing pages estáticas (HTML + CSS)
   Sem WordPress, sem JavaScript, sem dependências externas.

   3 páginas compartilham este arquivo:
     index.html                 -> tema OURO      (limpeza de pele)
     peeling-de-diamante.html   -> tema PRATA     (.tema-diamante no <body>)
     brow-lamination.html       -> tema BRONZE    (.tema-brow no <body>)

   As variáveis --ouro / --ouro-claro / --ouro-escuro guardam o nome
   histórico, mas funcionam como "cor principal / clara / escura" do tema.
   ========================================================= */

:root{
  --ouro:        #C8A158;
  --ouro-claro:  #DBBF89;
  --ouro-escuro: #AE8434;
  --escuro:      #1C1C1C;
  --branco:      #FFFFFF;
  --container:   1140px;
  --topo:        64px;   /* altura da barra de troca de cursos */

  /* tipografia: serifada de moda nos títulos, sans limpa no texto */
  --fonte-titulo: "Playfair Display", Georgia, "Times New Roman", serif;
  --fonte-texto:  "Mulish", system-ui, -apple-system, sans-serif;
  --sombra-suave: 0 10px 30px rgba(28,28,28,.07);
  --sombra-card:  0 18px 44px rgba(28,28,28,.10);
}

/* Cor das dobras escuras da index: "para quem é", "quem é" e rodapé.
   ATENÇÃO: os JPEG do mosaico e da foto do "quem é" foram achatados sobre
   esta cor exata, porque os dois têm canto arredondado com transparência.
   Mudou aqui, refazer os dois arquivos — receita em docs/MANUTENCAO.md. */
/* A index trocou o acento dourado por branco e cinzas claros: preto e
   branco puxa ainda mais autoridade, e o ouro passou a competir com a
   arte do hero. Os nomes das variáveis continuam --ouro* porque são o
   "acento do tema" em todo o arquivo — só o valor mudou.
   ATENÇÃO: onde o acento é FUNDO (botão cheio, selo, pílula ativa), o
   texto por cima precisa ser escuro. Essas correções estão no bloco
   "index sem ouro", mais abaixo. */
.tema-ouro{
  --ouro:        #E4E1DC;  /* acento: branco levemente quente */
  --ouro-claro:  #F4F2EF;  /* quase branco: rótulos, ícones, destaques */
  --ouro-escuro: #B7B2AA;  /* cinza claro: fundos de botão e fios */

  --escuro-dobra:#141210;
  /* a dobra "para quem é" da index é escura: aguenta sombra forte */
  --sombra-empilha:0 -26px 60px rgba(0,0,0,.55);
  --hero-img:url("../imagens/BG Hero.png");
  --hero-base:#BD7F27;
  --checkout-img:url("../imagens/checkout-limpeza.jpg");
  --checkout-img-cel:url("../imagens/checkout-limpeza-celular.jpg");
  --hero-cel:url("../imagens/BG LIMPEZA - mobile.png");
  --hero-cel-base:#C58834;
  /* o ouro da esquerda é claro, então o véu precisa ser forte para o texto
     branco ler */
  --hero-veu:linear-gradient(100deg,
    rgba(58,34,4,.80)   0%,
    rgba(74,45,9,.60)  26%,
    rgba(120,78,22,.20) 46%,
    rgba(120,78,22,0)   62%);
}

*,*::before,*::after{box-sizing:border-box}

html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--topo) + 20px)}

body{
  margin:0;
  font-family:var(--fonte-texto);
  font-size:17px;
  color:var(--escuro);
  background:var(--branco);
  -webkit-font-smoothing:antialiased;
  /* As duas linhas são de propósito. `hidden` é a reserva para navegador
     antigo; `clip` vence onde existe e faz a mesma coisa SEM transformar o
     body em contêiner de rolagem — que é o que quebrava o position:sticky
     da segunda dobra. */
  overflow-x:hidden;
  overflow-x:clip;
}

img{display:block;max-width:100%;height:auto}
a{text-decoration:none;color:inherit}
ul{margin:0;padding:0;list-style:none}
h1,h2,h3,p,figure,blockquote{margin:0}

.sprite{position:absolute;width:0;height:0;overflow:hidden}

.container{
  width:100%;
  max-width:var(--container);
  margin-inline:auto;
  padding-inline:20px;
}

.centro{display:flex;justify-content:center;margin-top:40px}

/* =========================================================
   BARRA DE TROCA DE CURSOS
   Pílula flutuante centralizada sobre o topo do hero.
   Fica dentro de <header class="hero"> nas 3 páginas.
   ========================================================= */
.topo{
  position:absolute;
  top:0;left:0;right:0;
  z-index:60;
  padding:22px 0;
}
.topo__inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
}

/* logotipo (SVG preto recolorido por CSS — branco sobre o hero) */
.topo__marca{flex:none;display:block;line-height:0}
.topo__marca img{
  width:clamp(190px,14vw,270px);
  height:auto;
  filter:brightness(0) invert(1);
  opacity:.96;
}

.troca{
  display:inline-flex;
  align-items:center;
  gap:4px;
  max-width:100%;
  padding:6px;
  border:1px solid rgba(255,255,255,.42);
  border-radius:9999px;
  background:rgba(255,255,255,.16);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
  box-shadow:0 8px 26px rgba(0,0,0,.14);
  overflow-x:auto;
  scrollbar-width:none;
  -ms-overflow-style:none;
  -webkit-overflow-scrolling:touch;
}
.troca::-webkit-scrollbar{display:none}

.troca__link{
  display:inline-block;
  padding:11px 22px;
  border-radius:9999px;
  font-size:16px;
  line-height:1.2;
  color:var(--branco);
  white-space:nowrap;
  transition:background .25s ease, color .25s ease;
}
.troca__link:hover{background:rgba(255,255,255,.22)}
.troca__link:focus-visible{outline:2px solid var(--branco);outline-offset:2px}
.troca__link[aria-current="page"]{
  background:var(--branco);
  color:var(--ouro-escuro);
  font-weight:700;
  box-shadow:0 3px 12px rgba(0,0,0,.16);
}

/* ---------------- ícones ---------------- */
.ico{width:20px;height:20px;flex:none}
.ico--spark{width:17px;height:16px;fill:var(--ouro-claro)}
.ico--seta{width:25px;height:25px;color:var(--ouro-claro)}
.ico--down{width:22px;height:13px}

/* ---------------- botões ---------------- */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:14px;
  padding:19px 34px;
  border-radius:10px;
  font:800 16px/1 var(--fonte-texto);
  text-transform:uppercase;
  letter-spacing:.06em;
  box-shadow:0 12px 30px rgba(28,28,28,.18);
  transition:transform .25s ease, box-shadow .25s ease, filter .25s ease;
}
.btn:hover{transform:translateY(-3px);box-shadow:0 18px 40px rgba(28,28,28,.26);filter:brightness(1.04)}
.btn:focus-visible{outline:3px solid var(--ouro-escuro);outline-offset:3px}
.btn--claro{background:var(--branco);color:var(--ouro-escuro)}
.btn--ouro {
  background:linear-gradient(135deg,var(--ouro) 0%,var(--ouro-escuro) 100%);
  color:var(--branco);
}
.btn--grande{font-size:18px;padding:22px 44px}

/* pulso discreto para chamar o olho ao CTA principal */
@keyframes pulso{
  0%,100%{box-shadow:0 12px 30px rgba(28,28,28,.18)}
  50%    {box-shadow:0 12px 30px rgba(28,28,28,.18), 0 0 0 10px rgba(255,255,255,.10)}
}
.btn--pulso{animation:pulso 2.6s ease-in-out infinite}

/* micro-copy de segurança logo abaixo do botão */
.garantia-linha{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:center;
  gap:8px 18px;
  margin-top:16px;
  font-size:15px;
  color:rgba(28,28,28,.60);
}
.garantia-linha span{display:inline-flex;align-items:center;gap:7px}
.garantia-linha .ico{width:16px;height:16px;color:var(--ouro)}
.garantia-linha--claro{color:rgba(255,255,255,.78)}
.garantia-linha--claro .ico{color:var(--branco)}
.garantia-linha--esq{justify-content:flex-start}

/* ---------------- títulos ---------------- */
.titulo{
  font-family:var(--fonte-titulo);
  font-weight:600;
  font-size:54px;
  line-height:1.08;
  letter-spacing:-.01em;
  color:var(--ouro-escuro);
  text-align:center;
}
.titulo--claro{color:var(--ouro)}
.titulo--esq{text-align:left}
.titulo--md{font-size:42px}
.titulo--sm{font-size:38px}
.titulo em{font-style:italic;color:var(--ouro)}

/* rótulo pequeno acima dos títulos — dá ar editorial e organiza a leitura */
.rotulo{
  display:block;
  margin-bottom:14px;
  font-family:var(--fonte-texto);
  font-size:13px;
  font-weight:700;
  letter-spacing:.24em;
  text-transform:uppercase;
  color:var(--ouro);
  text-align:center;
}
.rotulo--esq{text-align:left}

.subtitulo{
  max-width:760px;
  margin:18px auto 0;
  font-size:21px;
  line-height:1.5;
  color:rgba(28,28,28,.66);
  text-align:center;
}
.subtitulo--sm{font-size:19px}

/* =========================================================
   HERO
   ========================================================= */
.hero{
  position:relative;
  display:flex;
  align-items:center;
  min-height:100vh;
  padding:180px 0 80px;
  overflow:hidden;
  background:#C6A45E;
}

/* Os fundos de hero POR TEMA abaixo valem só até 1024px: são o hero antigo,
   de gradiente e ornamento. Do 1025px para cima quem manda é a receita única
   de foto, lá em cima, alimentada pelas variáveis --hero-img/--hero-base/
   --hero-veu de cada tema. Confinar aqui é obrigatório: `.tema-x .hero` tem
   especificidade maior que `.hero` e venceria a receita nova em qualquer
   largura. */
.hero .container{position:relative;z-index:1}
.hero__conteudo{max-width:660px}

.hero__titulo{
  margin:22px 0 18px;
  font-family:var(--fonte-titulo);
  font-size:62px;
  font-weight:600;
  line-height:1.06;
  letter-spacing:-.015em;
  color:var(--branco);
  text-shadow:0 2px 24px rgba(0,0,0,.18);
}
.hero__titulo em{font-style:italic}
.hero__sub{
  margin-bottom:22px;
  font-family:var(--fonte-titulo);
  font-size:28px;
  font-weight:500;
  font-style:italic;
  line-height:1.25;
  color:rgba(255,255,255,.86);
}
.hero__lead{
  max-width:560px;
  margin-bottom:30px;
  font-size:20px;
  font-weight:500;
  line-height:1.55;
  color:rgba(255,255,255,.82);
}

.pills{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin-bottom:34px}
.pill{
  display:inline-flex;
  align-items:center;
  gap:12px;
  padding:9px 20px 9px 14px;
  border-radius:9999px;
  border:1px solid rgba(255,255,255,.20);
  background:rgba(255,255,255,.11);
  backdrop-filter:blur(4px);
  font-size:16px;
  font-weight:600;
  color:var(--branco);
}

/* rótulo do hero da index: filete + caixa alta espaçada, no lugar do antigo
   badge sólido (que era ouro-claro com texto branco, contraste ruim) */
.hero__rotulo{
  display:inline-flex;
  align-items:center;
  gap:12px;
  font-size:13px;
  font-weight:700;
  line-height:1;
  letter-spacing:.24em;
  text-transform:uppercase;
  color:rgba(255,255,255,.92);
}
.hero__rotulo::before{
  content:"";
  flex:none;
  width:34px;
  height:1px;
  background:rgba(255,255,255,.55);
}

/* a linha de apoio é sans em QUALQUER largura e nas três páginas: a
   serifada itálica fica pesada logo abaixo do título, que já é serifado.
   Fica fora do bloco de 1025px para o celular seguir o mesmo padrão */
.hero__sub{
  font-family:var(--fonte-texto);
  font-style:normal;
}

/* =========================================================
   HERO DA INDEX NO DESKTOP (a partir de 1025px)
   Aqui o hero da limpeza deixa de ser gradiente + monograma e passa a ser
   a foto da Dra. Scarlet: imagens/hero-limpeza.jpg (1920x1000, ela à
   direita e área livre à esquerda, feita para o texto).
   Tablet e celular continuam no hero antigo de propósito — a versão
   vertical da foto entra numa próxima rodada.
   ========================================================= */
@media (min-width:1025px){
  /* Uma receita só para as três páginas. O que muda de curso para curso são
     três variáveis, definidas no bloco de cada tema:
       --hero-img  arte de fundo        --hero-base cor enquanto ela carrega
       --hero-veu  véu de leitura sobre a faixa onde fica o texto
     As três artes têm o mesmo enquadramento: ela à direita, área livre à
     esquerda, 1920x1000. */
  .hero{
    /* a altura acompanha a proporção 1,92:1 da foto — entre ~1150px e
       ~1690px de largura ela aparece inteira, sem corte nenhum */
    min-height:clamp(600px,52vw,880px);
    padding:calc(var(--topo) + 56px) 0 84px;
    background:
      var(--hero-veu),
      /* topo: contraste para o logotipo e a pílula de cursos. É variável
         porque desce até 24% da altura e, numa arte que já nasce escura no
         topo, só serve para apagar a cabeça da profissional — a index
         define o seu, mais curto */
      var(--hero-veu-topo,linear-gradient(180deg, rgba(0,0,0,.34) 0%, rgba(0,0,0,0) 24%)),
      /* base: emenda sem costura com a barra de confiança */
      linear-gradient(180deg, transparent 93%, var(--hero-fecho,var(--ouro-escuro)) 100%),
      var(--hero-img) right top / cover no-repeat,
      var(--hero-base);
  }
  /* a foto ocupa o papel dos dois: monograma e ornamento virariam sujeira */
  /* o ornamento do curso sai: com a foto no lugar, vira sujeira */
  .hero::after{content:none}

  /* ---- a assinatura marcada no fundo, atrás do botão ----
     O "S" recortado do próprio logotipo, bem apagado, ocupando o vazio
     abaixo da coluna de texto. Só no desktop: no celular esse espaço não
     existe, a foto vem antes do texto.
     Pintado por mask-image, então a cor vem do CSS e o mesmo arquivo serve
     aos três temas. */
  .hero::before{
    content:"";
    position:absolute;
    z-index:0;
    left:-3%;
    bottom:-6%;
    width:min(46%,620px);
    aspect-ratio:691/362;
    /* imagem de fundo direta, sem mask-image: o monograma original tem
       fill="currentColor", que não resolve em SVG carregado por URL — a
       máscara saía vazia. monograma-scarlet-branco.svg é o mesmo desenho
       com preenchimento branco fixo, o que serve aos três temas porque os
       três heroes têm fundo escuro nessa área. */
    background:url("../imagens/monograma-scarlet-branco.svg") left bottom / contain no-repeat;
    opacity:.09;
    pointer-events:none;
  }

  /* a coluna de texto para antes de encostar nela em qualquer largura.
     Estreita o bastante para abrir o vao onde entram as notificacoes.
     O z-index é o que mantém o texto acima da assinatura — sem ele, um
     pseudo-elemento posicionado pintaria por cima de conteúdo estático. */
  .hero__conteudo{
    position:relative;
    z-index:1;
    max-width:clamp(460px,38vw,580px);
  }

  .hero__titulo{
    margin:22px 0 18px;
    font-size:clamp(46px,4.3vw,66px);
    line-height:1.02;
    letter-spacing:-.022em;
    text-shadow:0 2px 34px rgba(40,22,2,.42);
  }
  /* itálico só em "Profunda": marca o que diferencia o curso sem pedir peso */
  .hero__titulo em{font-style:italic}

  /* linha de apoio em sans: leitura mais direta que a serifada itálica */
  .hero__sub{
    max-width:32ch;
    margin-bottom:30px;
    font-family:var(--fonte-texto);
    font-size:20px;
    font-weight:500;
    font-style:normal;
    line-height:1.5;
    color:rgba(255,255,255,.85);
  }

  /* as três provas em linha, não empilhadas: sobem o botão na dobra */
  .pills{
    flex-direction:row;
    flex-wrap:wrap;
    gap:9px;
    margin-bottom:34px;
  }
  .pill{
    padding:9px 16px 9px 11px;
    gap:9px;
    border-color:rgba(255,255,255,.26);
    background:rgba(255,255,255,.12);
    backdrop-filter:blur(10px);
    -webkit-backdrop-filter:blur(10px);
    font-size:14.5px;
  }
}

/* flutuação das notificações. Usa a propriedade `translate` (e não
   `transform`) de propósito: o `transform` já está ocupado centralizando o
   cartão no ponto, e as duas propriedades se somam em vez de se anular */
@keyframes notificacao-flutua{
  0%,100%{translate:0 0}
  50%    {translate:0 -9px}
}

/* =========================================================
   NOTIFICAÇÕES EM VOLTA DA FOTO (a partir de 1200px)
   As mesmas três provas do <ul class="pills">, tiradas da coluna de texto
   e espalhadas em volta dela como cartões de vidro, flutuando fora de
   sincronia. É o mesmo HTML — nada de texto duplicado.

   Por que 1200px e não 1025px: a foto é ancorada pela direita, então o
   círculo dela fica sempre por volta de 72vw com raio de 22vw, enquanto a
   coluna de texto é limitada pelo container de 1140px. Abaixo de 1200px o
   vão entre o fim do texto e o rosto dela fica menor que um cartão — não
   dá para encaixar sem cobrir o rosto. Até 1199px as provas seguem como
   chips na coluna.

   Ficam em TRIÂNGULO em volta dela: um acima e à esquerda, um à direita na
   altura do ombro, um abaixo e à esquerda. Encostam nela de leve — no braço,
   no cabelo — mas nenhum passa pelo rosto.

   Como a foto é escalada pela largura da tela (a altura do hero acompanha a
   proporção 1,92:1 dela), a posição de cada parte da foto em vw é a mesma em
   qualquer monitor. É por isso que dá para cravar as bordas em vw:
     até ~47,5vw   texto renderizado (o título é o que mais avança)
     47,5 a 65vw   fundo e borda esquerda do círculo, com o braço dela
                   entrando por volta de 60vw na metade de baixo
     65 a 80vw     ROSTO — faixa proibida
     80 a 91vw     cabelo, ombro
     93 a 100vw    margem: cartão nenhum chega aqui, senão a tela corta
   Daí as decisões deste bloco: cartão ancorado pela borda que encosta nela
   (`right`, nunca `left` nem centro, para crescer para o lado do vazio) e
   `max-width` que impede o cartão de invadir a coluna de texto à esquerda ou
   o rosto à direita. Nas telas mais estreitas os títulos mais longos quebram
   em duas linhas dentro desse limite — é o preço de não passar por cima
   nem do texto nem dela.
   ========================================================= */
@media (min-width:1200px){
  /* Os cartões se posicionam pelo HERO inteiro, e não pela caixa do texto.
     Para isso os dois ancestrais posicionados entre um e outro precisam sair
     do caminho: sobra o .hero, que é o único position:relative da cadeia.
     Sem isto o `right` dos cartões conta a partir da borda da coluna de
     texto e eles vão parar fora da tela, à esquerda. */
  .hero .container{position:static}
  .hero__conteudo{position:static}
  /* o z-index do .hero__conteudo existia para o texto ficar acima da
     assinatura marcada no fundo (o ::before). Sem ele, em vez de subir o
     texto, rebaixa-se a assinatura: o hero vira contexto de empilhamento e
     o z-index:-1 deixa o ::before acima da foto e abaixo do texto */
  .hero{z-index:0}
  .hero::before{z-index:-1}

  .pills{
    position:absolute;
    inset:0;
    z-index:2;
    display:block;
    margin:0;
    /* a camada cobre o hero inteiro: sem isto ela engoliria o clique do CTA */
    pointer-events:none;
  }

  .pill{
    position:absolute;
    /* só o eixo Y é centralizado no ponto: no eixo X o que precisa ficar
       no lugar é a borda direita, a que encosta nela — por isso `right` em
       vez de left + translateX(-50%) */
    transform:translateY(-50%);
    /* 17vw é o que sobra entre o fim do texto e a borda esquerda do rosto
       (65vw), conferido nas três páginas de 1200px a 2560px: em todas o
       cartão para antes do título. O teto de 320px é o título mais longo em
       uma linha só, e impede que o cartão vire um bloco de texto nas telas
       muito largas. O nth-child(2), que fica do lado direito, tem mais
       espaço e sobrescreve este limite */
    width:max-content;
    max-width:min(320px,17vw);
    padding:10px 16px 10px 10px;
    gap:11px;
    border-radius:14px;
    /* vidro ESCURO, não claro: o fundo aqui é dourado claro, então cartão
       branco translúcido com texto branco não gera contraste nenhum */
    border:1px solid rgba(255,255,255,.22);
    background:var(--vidro-notif,rgba(40,21,2,.46));
    backdrop-filter:blur(16px) saturate(var(--vidro-notif-sat,1.1));
    -webkit-backdrop-filter:blur(16px) saturate(var(--vidro-notif-sat,1.1));
    box-shadow:0 16px 38px var(--vidro-notif-sombra,rgba(38,20,1,.34));
    font-size:14px;
    font-weight:700;
    line-height:1.3;
    text-align:left;
    pointer-events:auto;
    animation:notificacao-flutua 5.4s ease-in-out infinite;
  }
  /* o ícone vira a bolinha da notificação */
  .pill .ico--spark{
    box-sizing:border-box;
    width:28px;
    height:28px;
    padding:6px;
    border-radius:50%;
    background:rgba(255,255,255,.14);
    fill:var(--ouro-claro);
  }

  /* O triângulo. O x é sempre a BORDA DIREITA em vw (a foto escala com a
     largura da tela):
       1) 65vw / 30% da foto — acima e à esquerda, encostado no ombro dela.
          Os 30% passam acima do título nas três páginas.
       2) 93vw / 55% da foto — à direita, sobre o cabelo. Abaixo do queixo
          em qualquer largura, e o limite de 26vw o mantém fora do rosto.
       3) 66vw / 83% da foto — abaixo e à esquerda, cruzando o antebraço,
          já embaixo da linha de garantia.

     O y é um clamp de três partes porque a altura do hero e a altura da
     foto param de andar juntas: até 1692px o hero tem 52vw e a foto,
     52,08vw — são a mesma coisa, e a porcentagem basta. Acima disso o hero
     trava em 880px e a foto continua crescendo, cortada por baixo; aí a
     porcentagem faria o cartão SUBIR pela foto, em direção ao rosto. O
     valor em vw (fração × 52,08vw) é a altura na foto, e é ele que manda
     nessa faixa; o teto em % é só para o cartão não cair fora do hero nos
     monitores ultralargos. */
  .pill:nth-child(1){right:35vw;top:clamp(30%,15.6vw,50%)}
  .pill:nth-child(2){right:7vw; top:clamp(55%,28.6vw,80%);max-width:min(320px,26vw);animation-duration:6.3s;animation-delay:-1.9s}
  .pill:nth-child(3){right:34vw;top:clamp(83%,43.2vw,90%);animation-duration:4.8s;animation-delay:-3.3s}
}

/* =========================================================
   BARRA DE CONFIANÇA (logo abaixo do hero)
   ========================================================= */
.confianca{
  background:var(--ouro-escuro);
  color:var(--branco);
}
.confianca__grid{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:10px 24px;
  padding:26px 0;
}
.confianca__item{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:12px;
  font-size:15px;
  font-weight:600;
  line-height:1.3;
  text-align:left;
}
.confianca__item .ico{width:22px;height:22px;flex:none;color:rgba(255,255,255,.8)}

/* ---- carrossel infinito da barra de confiança ----
   Classes exclusivas da index (peeling e brow continuam no grid acima),
   então nada aqui precisa de escopo de tema. Recorte e esmaecimento das
   pontas ficam na janela, que é parada; a pista é o que anda. */
.confianca__janela{
  overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 7%,#000 93%,transparent 100%);
          mask-image:linear-gradient(90deg,transparent 0,#000 7%,#000 93%,transparent 100%);
}
.confianca__pista{
  display:flex;
  width:max-content;
  padding-block:23px;
  /* anda exatamente uma das três filas e volta ao começo: como as filas
     são idênticas, o salto não aparece */
  animation:confianca-anda 34s linear infinite;
}
.confianca__fila{
  display:flex;
  align-items:center;
  flex:none;
}
.confianca__fila li{
  display:inline-flex;
  align-items:center;
  gap:40px;
  padding-right:40px;
  font-size:17px;
  font-weight:500;
  line-height:1.2;
  white-space:nowrap;
  color:rgba(255,255,255,.74);
}
.confianca__fila strong{font-weight:800;color:var(--branco)}
/* o asterisco é o destaque da faixa. Usa #i-asterisco (6 hastes simétricas)
   e não #i-spark, que é uma faísca torta e não lê como separador. A cor vai
   em `color` porque o traço do símbolo é currentColor */
.confianca__brilho{width:22px;height:22px;color:rgba(255,255,255,.62)}

@keyframes confianca-anda{
  from{transform:translateX(0)}
  to  {transform:translateX(calc(-100% / 3))}
}

/* =========================================================
   O QUE ESTÁ INCLUSO (entregáveis — mostra o tamanho da oferta)
   ========================================================= */
.inclui{padding:96px 0;background:var(--branco)}
.inclui__grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:18px;
  margin-top:46px;
}
.inclui__item{
  display:flex;
  align-items:flex-start;
  gap:14px;
  padding:24px;
  border:1px solid rgba(0,0,0,.06);
  border-radius:16px;
  background:var(--branco);
  box-shadow:var(--sombra-suave);
}
.inclui__item .ico{width:24px;height:24px;flex:none;margin-top:2px;color:var(--ouro)}
.inclui__item strong{display:block;font-size:18px;margin-bottom:4px;color:var(--escuro)}
.inclui__item span{font-size:16px;line-height:1.5;color:rgba(28,28,28,.62)}

/* =========================================================
   CAIXA DE OFERTA (preço, parcelamento, garantia)
   ========================================================= */
.oferta{
  max-width:620px;
  margin:44px auto 0;
  padding:44px 40px 38px;
  border:1px solid var(--ouro-claro);
  border-radius:24px;
  background:var(--branco);
  box-shadow:var(--sombra-card);
  text-align:center;
}
.oferta__selo{
  display:inline-block;
  margin-bottom:22px;
  padding:8px 18px;
  border-radius:9999px;
  background:var(--ouro-escuro);
  font-size:13px;
  font-weight:700;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--branco);
}
.oferta__de{
  font-size:17px;
  color:rgba(28,28,28,.45);
  text-decoration:line-through;
}
.oferta__por{
  margin:6px 0 2px;
  font-size:16px;
  font-weight:600;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:rgba(28,28,28,.55);
}
.oferta__parcela{
  display:flex;
  align-items:baseline;
  justify-content:center;
  gap:8px;
  font-family:var(--fonte-titulo);
  font-weight:600;
  color:var(--ouro-escuro);
}
.oferta__parcela .num{font-size:64px;line-height:1}
.oferta__parcela .cifrao{font-size:26px}
.oferta__parcela .vezes{font-size:clamp(36px,5vw,50px);line-height:1.1}
.oferta__avista{
  margin-top:8px;
  font-size:17px;
  color:rgba(28,28,28,.62);
}
.oferta__avista strong{color:var(--escuro)}
.oferta .btn{width:100%;margin-top:26px}
.oferta__garantia{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:14px;
  margin-top:26px;
  padding-top:22px;
  border-top:1px solid rgba(0,0,0,.07);
  text-align:left;
}
.oferta__garantia img{width:58px;flex:none}
.oferta__garantia p{font-size:15px;line-height:1.45;color:rgba(28,28,28,.62)}
.oferta__garantia strong{display:block;color:var(--escuro);font-size:16px}

/* ---- index: cartão de matrícula (foto + checkout numa moldura só) ----
   As classes .matricula* só existem na index, então não precisam de escopo
   de tema; só o .oferta lá dentro precisa, porque é compartilhado. */
.matricula{
  display:grid;
  grid-template-columns:1fr 1fr;
  max-width:920px;
  margin:46px auto 0;
  border:2px solid var(--ouro);
  border-radius:22px;
  overflow:hidden;
  background:var(--branco);
  box-shadow:var(--sombra-card);
}

/* a foto. Recorte em pé (2:3) no desktop; o de celular, deitado, entra no
   bloco de 767px. O `cover` ajusta o resto — o rosto está no centro dos
   dois recortes, então o corte cai sempre nas bordas */
.matricula__foto{
  min-height:420px;
  border-right:2px solid var(--ouro);
  /* --checkout-img e --checkout-img-cel saem do bloco de cada tema, como as
     variáveis do hero. São dois recortes da MESMA foto: em pé no desktop,
     deitado no celular — nenhum dos dois é a mesma imagem cortada duas
     vezes, senão algo importante sairia num dos formatos. */
  background:var(--checkout-img) center / cover no-repeat
             color-mix(in srgb, var(--ouro) 12%, var(--branco));
}

/* a caixa de oferta larga a própria moldura: quem emoldura agora é o cartão */
.matricula__info{
  max-width:none;
  margin:0;
  padding:42px 36px 38px;
  border:0;
  border-radius:0;
  box-shadow:none;
}
/* a coluna agora é mais estreita que a caixa antiga: com o padding original
   de 44px o texto do botão quebrava em duas linhas */
.matricula__info .btn{padding-inline:18px}

/* o "12x" dentro da linha "Por apenas 12X de" sai no dourado da marca */
.oferta__por strong{
  font-weight:800;
  color:var(--ouro-escuro);
}
/* "R$" pequeno ao lado do valor grande, alinhados pela base. O clamp é o
   que segura o tamanho no celular, onde a coluna é bem mais estreita */
.oferta__parcela{margin-top:2px;gap:7px}
.oferta__parcela .num{
  /* o meio do clamp é em vw para acompanhar a largura do aparelho; o teto
     de 92px é atingido já por volta de 420px, então celular e desktop
     ficam praticamente do mesmo tamanho. "R$ 51,10" a 92px mede ~230px e
     o cartão empilhado tem ~314px úteis num aparelho de 390px */
  font-size:clamp(76px,22vw,92px);
  letter-spacing:-.02em;
}
.oferta__parcela .cifrao{font-size:clamp(26px,7.4vw,31px)}

/* a faixa de vagas passou para dentro do cartão, logo abaixo do botão */
.matricula__info .escassez{
  margin-top:18px;
  padding:8px 16px;
  font-size:13.5px;
}

/* =========================================================
   NESTE CURSO VOCÊ VAI APRENDER
   ========================================================= */
.aprender{
  min-height:100vh;
  padding:90px 0;
  background:var(--branco) url("../imagens/fundo-aprender.webp") top left / cover no-repeat;
}

/* ---- index: textura abstrata em movimento lento no lugar da foto ----
   A foto da Scarlet + a folha competiam com os seis cards. Aqui entra só
   uma textura quase branca, viva por uma deriva muito lenta.
   Escopado em .tema-ouro: peeling e brow seguem com fundo-aprender.webp. */
.aprender{
  position:relative;
  overflow:hidden;
  background:var(--branco);
}
/* a textura vive num pseudo-elemento para poder se mexer sem arrastar o
   conteúdo junto */
.aprender::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:0;
  background:url("../imagens/fundo-aprender-limpeza.jpg") center / cover no-repeat;
  animation:aprender-deriva 46s ease-in-out infinite;
  will-change:transform;
  pointer-events:none;
}
.aprender > .container{position:relative;z-index:1}

/* a escala nunca desce de 1.06: sobram 3% de cada lado, folga maior que o
   deslocamento máximo (1,4%), então a borda da imagem nunca aparece */
@keyframes aprender-deriva{
  0%,100%{transform:scale(1.06) translate3d(0,0,0)}
  50%    {transform:scale(1.12) translate3d(-1.4%,-1%,0)}
}

.cards{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:20px;
  margin-top:52px;
}
.card{
  display:flex;
  flex-direction:column;
  gap:10px;
  padding:30px 26px 32px;
  border:1px solid rgba(0,0,0,.06);
  border-radius:18px;
  background:rgba(255,255,255,.86);
  box-shadow:var(--sombra-suave);
  transition:transform .3s ease, box-shadow .3s ease, border-color .3s ease;
}
.card:hover{
  transform:translateY(-6px);
  border-color:var(--ouro-claro);
  box-shadow:var(--sombra-card);
}
.card__num{
  font-family:var(--fonte-titulo);
  font-size:46px;
  font-weight:600;
  line-height:1;
  color:var(--ouro);
  opacity:.55;
}
.card__txt{
  font-size:17px;
  line-height:1.55;
  text-align:left;
  color:rgba(28,28,28,.66);
}
.card__txt strong{
  display:block;
  margin-bottom:6px;
  font-family:var(--fonte-titulo);
  font-size:21px;
  font-weight:600;
  line-height:1.25;
  color:var(--escuro);
}

/* ---- index: cards com faixa de módulo e numeral vazado ----
   O card branco liso com número solto era o card padrão de qualquer
   biblioteca. Aqui o número ganha faixa própria, separada por um fio
   dourado — o que é verdade na estrutura: identificador em cima,
   conteúdo embaixo. Escopado em .tema-ouro; peeling e brow não mudam.

   As cores saem de color-mix sobre var(--ouro) em vez de hexadecimal
   cravado (regra do CLAUDE.md). Navegador que não entender color-mix
   ignora a linha e cai no .card cinza de cima, que continua legível. */
.cards{gap:22px;margin-top:56px}

.card{
  gap:0;
  overflow:hidden;
  padding:36px 28px 34px;
  border-radius:20px;
  border:1px solid color-mix(in srgb, var(--ouro) 30%, transparent);
  background:var(--branco);
  box-shadow:0 18px 44px color-mix(in srgb, var(--ouro-escuro) 13%, transparent);
}
.card:hover{
  transform:translateY(-6px);
  border-color:var(--ouro);
  box-shadow:0 26px 58px color-mix(in srgb, var(--ouro-escuro) 22%, transparent);
}

/* a faixa do módulo: sangra até a borda pelas margens negativas, que são
   exatamente o padding do card invertido */
.card__num{
  display:block;
  margin:-36px -28px 24px;
  padding:15px 28px 11px;
  background:color-mix(in srgb, var(--ouro) 8%, var(--branco));
  border-bottom:1px solid color-mix(in srgb, var(--ouro) 26%, transparent);
  font-size:66px;
  letter-spacing:-.035em;
  opacity:.78;
  transition:background .3s ease, color .3s ease, opacity .3s ease;
}
/* numeral vazado: contorno dourado em vez de preenchimento. Fica no
   @supports porque sem text-stroke o color:transparent sumiria com ele */
@supports (-webkit-text-stroke:1px #000){
  .card__num{
    -webkit-text-stroke:1.6px var(--ouro);
    color:transparent;
    opacity:1;
  }
  .card:hover .card__num{
    -webkit-text-stroke-color:transparent;
    color:var(--ouro);
  }
}
.card:hover .card__num{
  background:color-mix(in srgb, var(--ouro) 15%, var(--branco));
}

.card__txt strong{font-size:22px;margin-bottom:8px}

/* =========================================================
   PARA QUEM É ESSE CURSO
   ========================================================= */
.para-quem{
  display:flex;
  align-items:center;
  min-height:100vh;
  padding:90px 0;
}
.separador{width:100%;max-width:406px;margin:18px 0 44px}

.lista{display:flex;flex-direction:column;gap:20px;max-width:720px}
.lista li{
  display:flex;
  align-items:flex-start;
  gap:16px;
  font-size:19px;
  line-height:1.5;
  color:rgba(28,28,28,.78);
}
.lista .ico--seta{margin-top:2px}

.destaque{
  max-width:720px;
  margin:40px 0 32px;
  padding:22px 26px;
  border-left:3px solid var(--ouro);
  background:rgba(255,255,255,.5);
  font-family:var(--fonte-titulo);
  font-size:23px;
  font-style:italic;
  line-height:1.4;
  text-align:left;
  color:var(--ouro-escuro);
}

/* =========================================================
   PARA QUEM É — versão da index: fundo escuro + mosaico
   Única dobra escura da página, de propósito: quebra a sequência
   ouro / branco / ouro e faz a pele das fotos saltar. Tudo escopado em
   .tema-ouro; peeling e brow seguem com o fundo claro de cima.
   ========================================================= */
.para-quem{
  min-height:auto;
  padding:104px 0;
  background:var(--escuro-dobra);
}
.para-quem__inner{
  /* o .container é item flex de .para-quem e também nasce com
     min-width:auto — mais um ponto onde a seção se recusaria a encolher */
  min-width:0;
  display:grid;
  grid-template-columns:minmax(0,.92fr) minmax(0,1fr);
  gap:72px;
  /* stretch (padrão da grade) em vez de center: as duas colunas passam a ter
     a mesma altura, e cada uma se vira para preencher. É o que mantém a
     coluna de texto e o mosaico terminando juntos em qualquer largura,
     sem eu acertar altura na mão */
  align-items:stretch;
}

/* a coluna de texto vira flex para poder empurrar o fecho e o botão para a
   base: a sobra de altura fica entre a lista e o fecho, onde não incomoda */
.para-quem__texto{
  display:flex;
  flex-direction:column;
}

/* ---- o mosaico ----
   A proporção do container é o que segura as linhas: com aspect-ratio
   560/757 e linhas 1fr/.32fr, cada bloco cai quase exatamente na
   proporção nativa do seu arquivo, então o object-fit quase não corta. */
.mosaico{
  position:relative;
  display:grid;
  grid-template-columns:1.15fr 1fr;
  grid-template-rows:1fr .32fr;
  gap:18px;
  width:100%;
  max-width:560px;
  /* item de grade e de flex nasce com min-width:auto, que é a largura
     intrínseca do conteúdo — aqui, a soma das larguras nativas dos JPEG
     (268 + 224 + 18 = 510px). Sem este zero a coluna se recusa a encolher
     e a seção fica mais larga que a tela do celular, criando rolagem
     lateral na página inteira. */
  min-width:0;
  /* preenche a altura que a coluna de texto definir; o aspect-ratio só
     entra quando não há altura definida (celular, coluna única) */
  height:100%;
  min-height:600px;
  aspect-ratio:560/757;
}
.mosaico img{
  width:100%;
  height:100%;
  object-fit:cover;
  border-radius:20px;
  /* mesma razão do min-width:0 do .mosaico, um nível abaixo: sem isto cada
     coluna interna trava na largura nativa do seu JPEG */
  min-width:0;
}
.mosaico__a{grid-column:1;grid-row:1/3}
.mosaico__b{grid-column:2;grid-row:1}
.mosaico__c{grid-column:2;grid-row:2}

/* o selo de vidro fica na junção dos dois blocos, transbordando os dois.
   Precisa de `img.` no seletor: `.mosaico img` acima tem especificidade
   maior que uma classe sozinha e sobrescreveria o width/height daqui */
img.mosaico__selo{
  position:absolute;
  z-index:2;
  left:53%;
  top:46%;
  /* o PNG é quadrado com o círculo inscrito, sem margem: esta largura é
     praticamente o diâmetro do vidro na tela */
  width:27%;
  height:auto;
  transform:translate(-50%,-50%);
  border-radius:0;
  object-fit:contain;
  /* o disco é cinza a 40%: a sombra é o que separa a borda dele da pele
     clara das fotos por baixo */
  filter:drop-shadow(0 8px 22px rgba(0,0,0,.45));
  pointer-events:none;
}
/* o brilho sai pela borda esquerda: é o que impede o mosaico de virar
   um retângulo fechado no meio do escuro */
.mosaico__brilho{
  position:absolute;
  z-index:3;
  left:-34px;
  bottom:14%;
  width:64px;
  height:64px;
  fill:rgba(255,255,255,.92);
  pointer-events:none;
}

/* ---- a coluna de texto ---- */
.para-quem .rotulo{color:var(--ouro-claro)}

.chamada{
  margin:16px 0 28px;
  font-family:var(--fonte-titulo);
  font-size:clamp(32px,3.1vw,48px);
  font-weight:500;
  line-height:1.16;
  letter-spacing:.01em;
  text-transform:uppercase;
  color:var(--branco);
}
/* a última frase mais apagada: dá o respiro da pergunta e evita o bloco
   maciço de caixa alta */
.chamada em{font-style:normal;color:rgba(255,255,255,.42)}

.para-quem__intro{
  margin-bottom:14px;
  font-size:18px;
  color:rgba(255,255,255,.5);
}

/* quebra de linha escolhida a dedo, para nenhuma frase terminar com uma
   palavra sozinha na última linha. Vale em qualquer largura: mesmo no
   celular as duas metades de cada frase cabem na coluna */
.quebra{display:inline}

/* ---- os perfis em caixas de vidro, uma embaixo da outra ----
   Sobre fundo escuro o vidro precisa ser CLARO (o escuro do hero sumiria
   aqui). O degradê de cima para baixo mais o filete interno no topo são o
   que dá a leitura de vidro; sem eles vira só um retângulo cinza. */
.lista{gap:12px;max-width:none}
.lista li{
  display:block;
  padding:17px 22px;
  border:1px solid rgba(255,255,255,.15);
  border-radius:16px;
  background:linear-gradient(158deg, rgba(255,255,255,.09) 0%, rgba(255,255,255,.042) 100%);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.10), 0 10px 26px rgba(0,0,0,.28);
  font-size:17px;
  line-height:1.5;
  color:rgba(255,255,255,.66);
  transition:background .3s ease, border-color .3s ease, transform .3s ease;
}
.lista li:hover{
  transform:translateX(4px);
  border-color:rgba(255,255,255,.28);
  background:linear-gradient(158deg, rgba(255,255,255,.13) 0%, rgba(255,255,255,.06) 100%);
}
.lista li strong{color:var(--branco);font-weight:700}

/* o destaque troca a serifada itálica por sans forte: é a frase de virada,
   não uma citação. O margin-top:auto é o que empurra ele e o botão para a
   base da coluna quando sobra altura */
.lista{margin-bottom:34px}
.destaque{
  max-width:none;
  /* auto no topo: absorve a altura que sobrar. O afastamento mínimo da
     lista vem do margin-bottom dela, logo acima */
  margin:auto 0 30px;
  padding:0;
  border:0;
  background:none;
  font-family:var(--fonte-texto);
  font-size:22px;
  font-style:normal;
  font-weight:600;
  line-height:1.4;
  color:var(--branco);
}

/* align-self: numa coluna flex o botão esticaria para a largura toda */
.para-quem .btn{
  align-self:flex-start;
  border-radius:9999px;
  padding:20px 38px;
}

/* =========================================================
   TÉCNICA — indicações x contraindicações (2 painéis)
   ========================================================= */
.tecnica{padding:100px 0;background:var(--branco)}

.duo{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:24px;
  margin-top:48px;
  align-items:stretch;
}
.painel{
  display:flex;
  flex-direction:column;
  gap:20px;
  padding:28px;
  border:1px solid var(--ouro-claro);
  border-radius:16px;
  background:rgba(255,255,255,.82);
}
.painel__titulo{
  font-family:var(--fonte-titulo);
  font-size:25px;
  font-weight:600;
  line-height:1.25;
  color:var(--ouro-escuro);
}
.painel ul{display:flex;flex-direction:column;gap:14px}
.painel li{
  display:flex;
  align-items:flex-start;
  gap:12px;
  font-size:18px;
  line-height:1.35;
  color:var(--escuro);
}
.painel .ico{margin-top:3px}
.painel--nao{background:rgba(28,28,28,.035)}
.painel__nota{
  margin-top:auto;
  padding-top:4px;
  font-size:15px;
  line-height:1.5;
  color:rgba(28,28,28,.6);
}
.ico--check{width:22px;height:22px;color:var(--ouro-escuro)}
.ico--x{width:22px;height:22px;color:rgba(28,28,28,.45)}

/* =========================================================
   DEPOIMENTOS
   ========================================================= */
.depoimentos{padding:100px 0;background:linear-gradient(180deg,rgba(0,0,0,.015),transparent 40%)}

/* ---- index: depoimentos em carrossel infinito ----
   A fila é escrita uma vez no HTML; o links.js clona quantas cópias forem
   necessárias e marca a janela. Sem JavaScript a marca não aparece, e o
   que fica é uma faixa que se arrasta com o dedo — nunca cartão escondido. */
.depoimentos__janela{
  margin-top:46px;
  /* a sombra dos cartões desce ~40px. Sem esta folga o overflow:hidden
     corta ela rente à base e aparece uma régua horizontal sob os cartões.
     Como é padding, fica DENTRO da caixa recortada — a sombra cabe. */
  padding-bottom:40px;
  overflow-x:auto;
  scrollbar-width:none;
  -ms-overflow-style:none;
  -webkit-overflow-scrolling:touch;
}
.depoimentos__janela::-webkit-scrollbar{display:none}
.depoimentos__pista{display:flex;width:max-content}
.depoimentos__fila{display:flex;flex:none;gap:20px;padding-right:20px}
.depoimentos__fila .depoimento{flex:none;width:min(380px,80vw)}

/* com o carrossel rodando a janela passa a recortar e a esmaecer as pontas */
.depoimentos__janela--rodando{overflow:hidden}
.depoimentos__janela--rodando{
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 5%,#000 95%,transparent 100%);
          mask-image:linear-gradient(90deg,transparent 0,#000 5%,#000 95%,transparent 100%);
}
.depoimentos__janela--rodando .depoimentos__pista{
  animation:depoimentos-anda 46s linear infinite;
}
/* anda exatamente uma fila e volta ao começo: como todas são iguais, a
   emenda não aparece. --filas é escrito pelo links.js */
@keyframes depoimentos-anda{
  from{transform:translateX(0)}
  to  {transform:translateX(calc(-100% / var(--filas,2)))}
}
/* parar ao passar o mouse: dá tempo de ler o cartão inteiro */
.depoimentos__janela--rodando:hover .depoimentos__pista{animation-play-state:paused}

/* o vão entre esta dobra e a seguinte era de 222px: 100 daqui, 96 de lá e o
   resto do rótulo. O carrossel não tem borda de seção que marque o fim, então
   tanto respiro virava buraco. Os 40px de folga da sombra já contam como
   espaço, por isso as duas margens encolhem. */
.depoimentos{padding-bottom:24px}
.inclui{padding-top:70px}

.depoimentos__grid{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:22px;
  margin-top:52px;
  align-items:stretch;
}
.depoimento{
  position:relative;
  display:flex;
  flex-direction:column;
  gap:16px;
  padding:32px 28px 26px;
  border:1px solid rgba(0,0,0,.06);
  border-radius:18px;
  background:var(--branco);
  box-shadow:var(--sombra-suave);
  transition:transform .3s ease, box-shadow .3s ease;
}
.depoimento:hover{transform:translateY(-4px);box-shadow:var(--sombra-card)}
.depoimento::before{
  content:"”";
  position:absolute;
  top:6px;right:24px;
  font-family:var(--fonte-titulo);
  font-size:88px;
  line-height:1;
  color:var(--ouro-claro);
  opacity:.5;
  pointer-events:none;
}
.estrelas{width:112px}
.depoimento__txt{
  font-size:17px;
  line-height:1.62;
  color:rgba(28,28,28,.72);
}
.depoimento__autor{
  display:flex;
  align-items:center;
  gap:12px;
  margin-top:auto;
  padding-top:8px;
}
.depoimento__autor img{width:46px;height:46px;border-radius:50%;object-fit:cover;flex:none;border:2px solid var(--ouro-claro)}
.depoimento__autor > span{display:flex;flex-direction:column;gap:2px}
.depoimento__nome{font-size:16px;font-weight:700;color:var(--escuro)}
.depoimento__cargo{font-size:14px;color:rgba(28,28,28,.55)}

/* =========================================================
   CTA
   ========================================================= */
.cta{
  padding:96px 0;
  text-align:center;
  background:
    radial-gradient(700px 340px at 50% 0%, rgba(200,161,88,.10), transparent 70%),
    var(--branco);
}
.cta .btn{margin-top:36px}
.cta__selo{width:70px;margin:40px auto 16px}
.cta__garantia{font-size:18px;color:rgba(28,28,28,.53)}
.escassez{
  display:inline-flex;
  align-items:center;
  gap:10px;
  margin-top:26px;
  padding:10px 20px;
  border:1px solid var(--ouro-claro);
  border-radius:9999px;
  background:rgba(200,161,88,.08);
  font-size:15px;
  font-weight:700;
  color:var(--ouro-escuro);
}
.escassez::before{
  content:"";
  width:9px;height:9px;
  border-radius:50%;
  background:#D64545;
  box-shadow:0 0 0 0 rgba(214,69,69,.55);
  animation:piscar 1.8s ease-out infinite;
}
@keyframes piscar{
  0%  {box-shadow:0 0 0 0 rgba(214,69,69,.55)}
  70% {box-shadow:0 0 0 9px rgba(214,69,69,0)}
  100%{box-shadow:0 0 0 0 rgba(214,69,69,0)}
}

/* =========================================================
   FAQ
   ========================================================= */
.faq{padding:30px 0 100px;text-align:center}
.faq .titulo{margin-top:20px}
.faq__lista{
  display:flex;
  flex-direction:column;
  gap:16px;
  margin-top:44px;
  text-align:left;
}
.faq__item{
  border:1px solid rgba(0,0,0,.07);
  border-radius:14px;
  background:var(--branco);
  box-shadow:var(--sombra-suave);
  transition:border-color .25s ease;
}
.faq__item[open]{border-color:var(--ouro-claro)}
.faq__item summary{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:22px 26px;
  font-family:var(--fonte-titulo);
  font-size:20px;
  font-weight:600;
  line-height:1.35;
  color:var(--escuro);
  cursor:pointer;
  list-style:none;
}
.faq__item summary::-webkit-details-marker{display:none}
.faq__item summary .ico{color:var(--ouro-escuro);transition:transform .3s ease}
.faq__item[open] summary .ico{transform:rotate(180deg)}
.faq__resp{
  padding:0 26px 24px;
  font-size:17px;
  line-height:1.68;
  color:rgba(28,28,28,.66);
}

/* =========================================================
   SOBRE
   ========================================================= */
.sobre{
  display:flex;
  align-items:center;
  min-height:100vh;
  padding:90px 0;
}
.sobre__inner{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:40px;
}
.sobre__texto{grid-column:2}
.sobre__texto p{
  margin:20px 0;
  font-size:18px;
  line-height:1.72;
  color:rgba(28,28,28,.74);
}
.sobre__texto p:first-of-type{
  font-size:19px;
  line-height:1.68;
  color:rgba(28,28,28,.85);
}
.sobre__texto .btn{margin-top:14px}

/* números que provam autoridade */
.credenciais{
  display:flex;
  flex-wrap:wrap;
  gap:14px;
  margin:26px 0 8px;
}
/* ---- index: "quem é" em fundo escuro, foto à esquerda ----
   Fecha a página no mesmo tom da dobra "para quem é", que é a outra dobra
   escura — as duas emolduram o miolo claro. Escopado em .tema-ouro:
   peeling e brow seguem com a foto de fundo clara. */
.sobre{
  min-height:auto;
  padding:104px 0;
  background:var(--escuro-dobra);
}
/* a proporção 1,38 e o corpo de 17px não são gosto: são o par que iguala a
   altura das duas colunas. A foto tem proporção fixa, então a altura dela
   só cresce alargando a coluna — e alargar a coluna da foto estreita a do
   texto, que então cresce em altura. Medindo, o encontro fica em 1,38 com
   17px: 745px de foto contra 776px de texto, 31px de diferença.
   Mexeu no texto desta seção? Vale medir de novo. */
.sobre__inner{
  min-width:0;
  grid-template-columns:minmax(0,1.38fr) minmax(0,1fr);
  gap:70px;
  align-items:center;
}
/* o texto solta a coluna fixa e a caixa branca que o bloco de 1024px
   coloca nele — no escuro ela apareceria como um retângulo claro */
.sobre__texto{
  grid-column:auto;
  background:none;
  padding:0;
}

.sobre__foto{position:relative;min-width:0}
.sobre__foto img{width:100%;height:auto;min-width:0}
/* o brilho fica na altura da faixa escura acima do cartão, metade fora da
   imagem e metade sobre essa faixa — como o JPEG é opaco, "atrás do
   cartão" não existe mais; por cima do escuro dá a mesma leitura.
   z-index positivo de propósito: com -1 ele sumiria atrás do fundo da
   seção, que não cria contexto de empilhamento */
.sobre__brilho{
  position:absolute;
  z-index:2;
  left:-24px;
  top:4%;
  width:74px;
  height:74px;
  fill:rgba(255,255,255,.5);
  pointer-events:none;
}

.sobre .rotulo{color:var(--ouro-claro)}
.sobre__texto p{
  font-size:17px;
  line-height:1.62;
  color:rgba(255,255,255,.6);
}
/* o primeiro parágrafo continua sendo o de entrada, mas pelo tom, não pelo
   corpo: se ficar maior que os outros, a coluna cresce e desiguala */
.sobre__texto p:first-of-type{
  font-size:17px;
  line-height:1.62;
  color:rgba(255,255,255,.8);
}
.sobre__texto .btn{
  margin-top:22px;
  border-radius:9999px;
  padding:20px 38px;
}

/* as credenciais no escuro: fio no lugar de caixa */
.credencial{
  flex:1 1 130px;
  padding:16px 18px;
  border:1px solid var(--ouro-claro);
  border-radius:14px;
  background:rgba(255,255,255,.62);
}
.credencial strong{
  display:block;
  font-family:var(--fonte-titulo);
  font-size:30px;
  font-weight:600;
  line-height:1;
  color:var(--ouro-escuro);
}
.credencial span{
  display:block;
  margin-top:6px;
  font-size:14px;
  line-height:1.35;
  color:rgba(28,28,28,.6);
}

/* ---- as credenciais na dobra escura ----
   Precisa vir DEPOIS das regras base acima: mesma especificidade, então
   quem vence é quem está por último. Fio no lugar de caixa. */
.sobre .credenciais{gap:0;margin:24px 0 4px}
.sobre .credencial{
  padding:0 22px;
  border:0;
  border-left:1px solid rgba(255,255,255,.16);
  border-radius:0;
  /* o padrão é branco a 62%, que no escuro vira um retângulo cinza */
  background:none;
}
.sobre .credencial:first-child{padding-left:0;border-left:0}
.sobre .credencial strong{color:var(--ouro-claro)}
.sobre .credencial span{color:rgba(255,255,255,.5)}

/* =========================================================
   RODAPÉ
   ========================================================= */
.rodape{padding:50px 0 60px;text-align:center}

/* ---- index: o rodapé segue no escuro da dobra "quem é" ----
   Sem isto a página fecha com um bloco branco logo depois da dobra escura,
   e a emenda vira um degrau. Escopado em .tema-ouro: peeling e brow seguem
   com o rodapé claro. */
.rodape{
  padding:56px 0 60px;
  background:var(--escuro-dobra);
}
/* o filete é um SVG dourado desenhado para fundo claro */
.rodape__linha{opacity:.4}
.rodape p{color:rgba(255,255,255,.45)}

/* a pílula volta a ser a mesma do topo do hero, que também vive no escuro */
.rodape__cursos{
  border-color:rgba(255,255,255,.2);
  background:rgba(255,255,255,.06);
}
.rodape__cursos a{color:rgba(255,255,255,.72)}
.rodape__cursos a:hover{background:rgba(255,255,255,.1)}
.rodape__cursos a:focus-visible{outline-color:var(--branco)}
.rodape__cursos a[aria-current="page"]{
  background:var(--branco);
  color:var(--ouro-escuro);
}
.rodape__linha{width:100%;margin:0 auto 24px}
.rodape p{font-size:20px;color:var(--ouro-escuro)}

/* troca de cursos no rodapé — mesma pílula da barra do topo, em versão
   clara (a barra do topo fica sobre o hero e só aparece lá em cima) */
.rodape__cursos{
  display:inline-flex;
  align-items:center;
  gap:4px;
  max-width:100%;
  margin-bottom:26px;
  padding:6px;
  border:1px solid var(--ouro-claro);
  border-radius:9999px;
  background:rgba(28,28,28,.03);
  overflow-x:auto;
  scrollbar-width:none;
  -ms-overflow-style:none;
}
.rodape__cursos::-webkit-scrollbar{display:none}
.rodape__cursos a{
  display:inline-block;
  padding:11px 22px;
  border-radius:9999px;
  font-size:16px;
  line-height:1.2;
  color:var(--ouro-escuro);
  white-space:nowrap;
  transition:background .25s ease, color .25s ease;
}
.rodape__cursos a:hover{background:rgba(28,28,28,.06)}
.rodape__cursos a:focus-visible{outline:2px solid var(--ouro-escuro);outline-offset:2px}
.rodape__cursos a[aria-current="page"]{
  background:var(--ouro-escuro);
  color:var(--branco);
  font-weight:700;
  box-shadow:0 3px 12px rgba(0,0,0,.16);
}

/* =========================================================
   AS 3 PÁGINAS NO PRETO — autoridade
   =========================================================
   A página da limpeza de pele passa a ser escura de ponta a ponta, com o
   dourado só como acento (títulos, números, botões, fios). Preto + ouro é
   o par que o mercado de estética lê como "profissional cara", enquanto o
   fundo claro lia como "curso barato".

   O preto usado é o MESMO --escuro-dobra que já vestia "para quem é",
   "quem é" e o rodapé. Isso não é economia: os JPEG do mosaico e da foto
   têm canto arredondado achatado sobre essa cor exata. Usando o mesmo
   valor no resto da página, as emendas continuam invisíveis e nenhum
   arquivo precisa ser refeito.

   Cada tema entra com o SEU preto (--escuro-dobra): a limpeza fica preta
   quente, o peeling preto grafite e o brow preto café.
   ========================================================= */
:root{
  --preto:      #141210;  /* fundo das seções (= --escuro-dobra) */
  --preto-alto: #1D1A17;  /* cartões e caixas sobre o preto */
  --fio:        rgba(255,255,255,.09);
  --texto-claro:rgba(255,255,255,.62);

}

/* O véu do hero da limpeza era âmbar, para o texto branco ler sobre o ouro
   da arte. A arte nova já nasce escura e o véu virou perda pura: medindo
   BG Hero.png, a metade esquerda (onde fica o texto) tem luminância 18 a 27
   de 255 — já é preto, não há o que escurecer —, enquanto a faixa dela
   (x 65-75%) tem 66 e o rosto, 115. Ou seja: o véu não ajudava o texto e
   apagava a profissional. Agora ele é fraco e termina em 58%, antes dela.
   Trocou a arte do desktop? Refazer a medição — receita em
   docs/MANUTENCAO.md. Peeling e brow mantêm os véus deles. */
.tema-ouro{
  --hero-base:#100E0C;
  /* O vidro das notificações do hero nasce marrom (rgba(40,21,2,.46)) porque
     foi feito para a arte dourada. Aqui ele vira o próprio --preto da página
     com transparência, para o cartão ler como cinza/preto e não como marrom.
     Peeling e brow não definem estas duas: caem na reserva do var() e
     continuam com o vidro quente de antes. */
  --vidro-notif:rgba(20,18,16,.62);
  --vidro-notif-sombra:rgba(0,0,0,.42);
  /* o vidro do desktop realçava a saturação do que passa por trás (1,1), e
     atrás do cartão 2 fica o cabelo dela: puxava calor de volta */
  --vidro-notif-sat:.85;
  --hero-veu:linear-gradient(100deg,
    rgba(12,10,9,.50)  0%,
    rgba(12,10,9,.32) 28%,
    rgba(12,10,9,.12) 46%,
    rgba(12,10,9,0)   58%);
  /* o padrão desce até 24% da altura e pegava a cabeça dela, que começa por
     volta de 11%. O topo da arte já mede luminância 26: o logotipo branco
     não precisa de ajuda nenhuma */
  --hero-veu-topo:linear-gradient(180deg, rgba(0,0,0,.14) 0%, rgba(0,0,0,0) 15%);
}

body{background:var(--preto)}

/* ---- as seções que eram claras ---- */
.aprender,
.depoimentos,
.inclui,
.cta,
.faq{background:var(--preto)}

/* a textura do "vai aprender" foi feita clara; invertida e rebaixada ela
   vira uma névoa escura, sem precisar de arquivo novo */
.aprender::before{filter:invert(1) brightness(.42) saturate(.5);opacity:.55}

/* faixa de confiança: era uma barra dourada, agora é preta com fios de
   ouro em cima e embaixo — pesa menos e separa melhor */
.confianca{
  background:var(--preto);
  border-top:1px solid var(--fio);
  border-bottom:1px solid var(--fio);
}
.confianca__fila li{color:rgba(255,255,255,.66)}
.confianca__fila strong{color:var(--ouro-claro)}
.confianca__brilho{color:var(--ouro)}

/* ---- tipografia sobre o preto ---- */
.titulo{color:var(--branco)}
.titulo--claro{color:var(--branco)}
.titulo em{color:var(--ouro-claro)}
.rotulo{color:var(--ouro-claro)}
.subtitulo{color:var(--texto-claro)}

/* ---- cartões dos módulos ---- */
.card{
  background:var(--preto-alto);
  border-color:var(--fio);
  box-shadow:none;
}
.card:hover{
  border-color:rgba(219,191,137,.45);
  box-shadow:0 22px 50px rgba(0,0,0,.5);
}
/* a tarja do número era quase branca (ouro 8% + branco), feita para o card
   claro; no preto ela vira um véu da própria cor do tema */
.card__num{
  color:var(--ouro-claro);
  opacity:.85;
  background:color-mix(in srgb, var(--ouro) 16%, transparent);
  border-bottom-color:color-mix(in srgb, var(--ouro) 38%, transparent);
}
.card:hover .card__num{background:color-mix(in srgb, var(--ouro) 26%, transparent)}
.card__txt{color:var(--texto-claro)}
.card__txt strong{color:var(--branco)}

/* ---- depoimentos ---- */
.depoimento{
  background:var(--preto-alto);
  border-color:var(--fio);
  box-shadow:none;
}
.depoimento:hover{box-shadow:0 22px 50px rgba(0,0,0,.5)}
.depoimento::before{color:var(--ouro);opacity:.32}
.depoimento__txt{color:rgba(255,255,255,.74)}
.depoimento__nome{color:var(--branco)}
.depoimento__cargo{color:rgba(255,255,255,.45)}
.depoimento__autor img{border-color:rgba(219,191,137,.6)}

/* ---- o que você recebe ---- */
.inclui__item{
  background:var(--preto-alto);
  border-color:var(--fio);
  box-shadow:none;
}
.inclui__item .ico{color:var(--ouro-claro)}
.inclui__item strong{color:var(--branco)}
.inclui__item span{color:var(--texto-claro)}

/* ---- caixa de oferta: a única superfície com borda dourada cheia ---- */
.oferta{
  background:var(--preto-alto);
  border-color:rgba(219,191,137,.5);
  box-shadow:0 30px 70px rgba(0,0,0,.55);
}
.oferta__selo{background:var(--ouro);color:#141210}
.oferta__por{color:rgba(255,255,255,.55)}
.oferta__parcela{color:var(--ouro-claro)}
.oferta__avista{color:var(--texto-claro)}
.oferta__avista strong{color:var(--branco)}
.oferta__de{color:rgba(255,255,255,.38)}
.oferta__garantia{border-top-color:rgba(255,255,255,.12)}
.oferta__garantia p{color:var(--texto-claro)}
.oferta__garantia strong{color:var(--branco)}
.garantia-linha{color:rgba(255,255,255,.55)}
.garantia-linha .ico{color:var(--ouro-claro)}
.escassez{
  border-color:rgba(219,191,137,.4);
  background:rgba(219,191,137,.08);
  color:var(--ouro-claro);
}
.cta__garantia{color:rgba(255,255,255,.5)}

/* ---- indicações x contraindicações (só no peeling e no brow) ---- */
.tecnica{background:var(--preto)}
.painel{
  background:var(--preto-alto);
  border-color:var(--fio);
}
.painel--nao{background:rgba(255,255,255,.03)}
.painel__titulo{color:var(--branco)}
.painel li{color:var(--texto-claro)}
.painel__nota{color:rgba(255,255,255,.42)}
.ico--check{color:var(--ouro-claro)}
.ico--x{color:rgba(255,255,255,.32)}

/* ---- FAQ ---- */
.badge--faq{background:rgba(219,191,137,.14);color:var(--ouro-claro)}
.faq__item{
  background:var(--preto-alto);
  border-color:var(--fio);
  box-shadow:none;
}
.faq__item[open]{border-color:rgba(219,191,137,.4)}
.faq__item summary{color:var(--branco)}
.faq__item summary .ico{color:var(--ouro-claro)}
.faq__resp{color:var(--texto-claro)}

/* =========================================================
   INDEX SEM OURO — o acento virou branco/cinza
   =========================================================
   Trocar as variáveis resolve tudo que usa o acento como TEXTO. O que
   precisa de ajuste é o contrário: onde o acento é FUNDO. Antes era ouro
   escuro com texto branco por cima; agora é cinza claro, e texto branco
   sobre cinza claro não lê. Nestes casos o texto passa a ser o preto do
   tema. Escopado em .tema-ouro: peeling e brow seguem com suas cores. */

/* A foto do hero fica com a cor natural: a arte dourada será substituída
   por uma nova, já em tons de branco. Aqui só o fecho da base sai do
   cinza claro e vai para o preto, senão aparece um fio claro na emenda
   com a faixa de confiança. */
.tema-ouro{--hero-fecho:var(--preto)}

/* o selo de garantia é um PNG dourado: sem cor, ele acompanha o resto */
.tema-ouro .cta__selo,
.tema-ouro .oferta__garantia img{filter:grayscale(1) brightness(1.7) contrast(.9)}

/* botão cheio: fundo claro pede texto escuro */
.tema-ouro .btn--ouro{
  background:linear-gradient(135deg,var(--ouro-claro) 0%,var(--ouro-escuro) 100%);
  color:var(--preto);
}
/* o botão claro do hero já era branco: só o texto acompanha */
.tema-ouro .btn--claro{color:var(--preto)}

/* selo da oferta e pílula ativa do rodapé */
.tema-ouro .oferta__selo{background:var(--ouro-claro);color:var(--preto)}
.tema-ouro .rodape__cursos a[aria-current="page"]{
  background:var(--ouro-claro);
  color:var(--preto);
}
.tema-ouro .badge--hero{color:var(--preto)}

/* o FAQ e a escassez usavam o bege do ouro fixo em rgba */
.tema-ouro .badge--faq{background:rgba(255,255,255,.10);color:var(--ouro-claro)}
.tema-ouro .escassez{
  border-color:rgba(255,255,255,.28);
  background:rgba(255,255,255,.06);
  color:var(--ouro-claro);
}
.tema-ouro .card:hover{border-color:rgba(255,255,255,.35)}
.tema-ouro .faq__item[open]{border-color:rgba(255,255,255,.3)}
.tema-ouro .depoimento__autor img{border-color:rgba(255,255,255,.45)}
.tema-ouro .oferta{border-color:rgba(255,255,255,.34)}

/* =========================================================
   TEMA — PEELING DE DIAMANTE (prata / grafite)
   Aplicado com <body class="tema-diamante">
   ========================================================= */
.tema-diamante{
  --ouro:        #5C6879;
  --ouro-claro:  #A9B4C4;
  --ouro-escuro: #333C4A;
  --escuro-dobra:#0E1216;
  --preto:      #0E1216;
  --preto-alto: #171D24;
  --sombra-empilha:0 -26px 60px rgba(0,0,0,.55);
  --hero-img:url("../imagens/bg-hero-peeling-diamante.png");
  --hero-base:#0D1217;
  --checkout-img:url("../imagens/checkout-peeling.jpg");
  --checkout-img-cel:url("../imagens/checkout-peeling-celular.jpg");
  --hero-cel:url("../imagens/BG - Peeling - Mobile.png");
  --hero-cel-base:#12171C;
  /* a arte já é grafite escuro à esquerda, então o véu só precisa firmar o
     contraste — nada da força que o ouro da limpeza exige */
  --hero-veu:linear-gradient(100deg,
    rgba(4,8,12,.62)  0%,
    rgba(4,8,12,.34) 30%,
    rgba(4,8,12,.08) 50%,
    rgba(4,8,12,0)   64%);
}
/* Os fundos de hero POR TEMA abaixo valem só até 1024px: são o hero antigo,
   de gradiente e ornamento. Do 1025px para cima quem manda é a receita única
   de foto, lá em cima, alimentada pelas variáveis --hero-img/--hero-base/
   --hero-veu de cada tema. Confinar aqui é obrigatório: `.tema-x .hero` tem
   especificidade maior que `.hero` e venceria a receita nova em qualquer
   largura. */
/* o gradiente opaco cobre o bloco dourado da imagem original e libera
   a foto, que fica no terço direito */
.tema-diamante .cta__selo{filter:grayscale(1) contrast(1.05)}

/* =========================================================
   TEMA — BROW LAMINATION (bronze / nude)
   Aplicado com <body class="tema-brow">
   ========================================================= */
.tema-brow{
  --ouro:        #A75E3F;
  --ouro-claro:  #D9A98F;
  --ouro-escuro: #6E3B2A;
  --escuro-dobra:#1A0C03;
  --preto:      #1A0C03;
  --preto-alto: #24140A;
  --sombra-empilha:0 -26px 60px rgba(0,0,0,.55);
  --hero-img:url("../imagens/bg-hero-brown-lamination.png");
  --hero-base:#220F04;
  --checkout-img:url("../imagens/checkout-brow.jpg");
  --checkout-img-cel:url("../imagens/checkout-brow-celular.jpg");
  --hero-cel:url("../imagens/BG - Brownlamination - Mobile.png");
  --hero-cel-base:#251207;
  --hero-veu:linear-gradient(100deg,
    rgba(18,8,2,.62)  0%,
    rgba(18,8,2,.34) 30%,
    rgba(18,8,2,.08) 50%,
    rgba(18,8,2,0)   64%);
}
/* Os fundos de hero POR TEMA abaixo valem só até 1024px: são o hero antigo,
   de gradiente e ornamento. Do 1025px para cima quem manda é a receita única
   de foto, lá em cima, alimentada pelas variáveis --hero-img/--hero-base/
   --hero-veu de cada tema. Confinar aqui é obrigatório: `.tema-x .hero` tem
   especificidade maior que `.hero` e venceria a receita nova em qualquer
   largura. */
.tema-brow .cta__selo{filter:hue-rotate(-20deg) saturate(1.15) brightness(.92)}

/* ajustes comuns aos dois temas novos */

/* O "titulo--claro" nasceu para fundo branco. Com as três páginas no preto
   ele já é branco pela regra global lá de cima — a cor do tema (grafite no
   peeling, bronze no brow) ficaria em ~3:1 sobre o preto, abaixo do mínimo
   de leitura confortável. */

/* =========================================================
   RESPONSIVO — tablet (até 1024px)
   ========================================================= */
@media (max-width:1024px){
  .titulo{font-size:44px}
  .titulo--md{font-size:36px}
  .titulo--sm{font-size:32px}
  .subtitulo{font-size:20px}

  .hero{padding:120px 0 70px;background-position:top center}
  .hero__titulo{font-size:40px}
  .hero__sub,.hero__lead{font-size:26px}

  .cards{grid-template-columns:1fr 1fr;max-width:760px;margin-inline:auto}
  .depoimentos__grid{grid-template-columns:1fr;max-width:620px;margin-inline:auto}

  .confianca__grid{grid-template-columns:1fr 1fr;gap:16px 20px}
  .inclui{padding:80px 0}
  .inclui__grid{grid-template-columns:1fr 1fr;max-width:760px;margin-inline:auto}
  .oferta{max-width:520px}

  .troca__link{font-size:15px;padding:10px 18px}

  .tecnica{padding:80px 0}
  .duo{grid-template-columns:1fr;max-width:620px;margin-inline:auto}

  .tema-ouro .hero::after,
  .tema-diamante .hero::after,
  .tema-brow .hero::after{
    top:auto;bottom:-4%;right:-6%;
    width:min(52vw,340px);
    transform:none;
    opacity:.12;
  }

  .lista li{font-size:20px}
  .destaque{font-size:20px}

  /* a caixa branca translúcida que ficava aqui era do tempo em que o texto
     caía sobre uma foto de fundo clara. A dobra agora é escura nas três
     páginas e a foto é elemento no fluxo — a caixa virava um retângulo
     claro por cima do fundo do tema. */
  .sobre__inner{grid-template-columns:1fr}
}

/* =========================================================
   RESPONSIVO — celular (até 767px)
   ========================================================= */
@media (max-width:767px){
  .container{padding-inline:16px}

  .topo{padding:14px 0}
  .topo__inner{flex-direction:column;gap:10px}
  .topo__marca img{width:158px}
  /* os 3 cursos cabem numa linha só */
  .troca{
    width:100%;
    flex-wrap:nowrap;
    justify-content:center;
    gap:0.6vw;
    padding:1.2vw;
  }
  .troca__link{
    padding:2.4vw 1.9vw;
    font-size:clamp(9.5px,2.8vw,13px);
    letter-spacing:0;
  }

  /* No celular a imagem do hero aparece INTEIRA no topo (logo + foto) e o
     texto começa abaixo dela — nada se sobrepõe. O gradiente da segunda
     camada continua a cor da base da imagem quando o conteúdo é mais alto. */
  /* A arte vertical própria do celular (402x874: ela em cima, o terço de
     baixo livre para o texto). Mesma ideia do desktop, girada — lá a área
     vazia fica ao lado dela, aqui fica embaixo.
     As três páginas usam esta receita; o que muda são as variáveis
     --hero-cel (arte) e --hero-cel-base (cor da última linha dela). */
  .hero{
    min-height:auto;
    /* a foto entra em largura cheia, então a altura renderizada dela é
       2,174 x a largura da tela (874/402). 161vw é 74% disso — abaixo do
       último cartão flutuante, que termina por volta de 74%. Se o texto
       subir daqui, o cartão de baixo cai em cima do título. */
    padding:calc(161vw + 8px) 0 54px;
    background:
      /* fecho igual ao do desktop: sem ele a cor do hero encosta direto no
         ouro-escuro da faixa de confiança e aparece um degrau */
      linear-gradient(180deg, transparent 93%, var(--hero-fecho,var(--ouro-escuro)) 100%),
      var(--hero-cel) top center / 100% auto no-repeat,
      /* exatamente a cor da última linha da foto: o fundo segue sem emenda
         quando o texto faz o hero passar da altura dela */
      var(--hero-cel-base);
  }
  /* com a foto no lugar, monograma e ornamento viram sujeira */
  .hero::before,
  .hero::after{content:none}

  /* as provas em linha e menores: empilhadas custariam ~120px de altura
     numa dobra que já está apertada, e empurrariam o botão para fora */
  .hero__sub{font-size:18px;margin-bottom:22px}
  /* a linha de garantia centraliza no celular: encostada à esquerda ela
     quebra em duas fileiras desalinhadas logo abaixo de um botão de largura
     cheia, que já é centralizado */
  .hero .garantia-linha--esq{justify-content:center}

  /* ---- as provas flutuando em volta dela, como no desktop ----
     Container estático para os cartões se posicionarem pelo hero inteiro.
     Pode: aqui o ::before/::after do hero está desligado, que era o motivo
     do position:relative. */
  .hero .container{position:static}

  .pills{
    position:absolute;
    inset:0;
    z-index:2;
    display:block;
    margin:0;
    /* a camada cobre o hero inteiro: sem isto ela engoliria o clique do CTA */
    pointer-events:none;
  }
  .pill{
    position:absolute;
    max-width:44vw;
    padding:8px 12px 8px 8px;
    gap:7px;
    border-radius:13px;
    /* vidro ESCURO, como no desktop: sobre o ouro claro da foto, cartão
       branco translúcido com texto branco não gera contraste */
    border:1px solid rgba(255,255,255,.22);
    background:var(--vidro-notif,rgba(40,21,2,.46));
    backdrop-filter:blur(12px);
    -webkit-backdrop-filter:blur(12px);
    box-shadow:0 10px 24px var(--vidro-notif-sombra,rgba(38,20,1,.32));
    font-size:12.5px;
    font-weight:700;
    line-height:1.35;
    text-align:left;
    pointer-events:auto;
    animation:notificacao-flutua 5.4s ease-in-out infinite;
  }
  .pill .ico--spark{
    box-sizing:border-box;
    width:22px;
    height:22px;
    padding:5px;
    border-radius:50%;
    background:rgba(255,255,255,.14);
    fill:var(--ouro-claro);
  }
  /* zigue-zague em volta dela. O y é fração da altura renderizada da foto
     (217,4vw), então acompanha qualquer tamanho de tela. A faixa começa na
     altura do OMBRO e desce: acima disso o cartão da esquerda encostava no
     rosto dela, porque ali a folga lateral é estreita demais.
        96vw = 44% (ombro)  |  120vw = 55% (mão)  |  143vw = 66% (fora dela) */
  .pill:nth-child(1){left:8px; top:96vw}
  .pill:nth-child(2){right:8px;top:120vw;animation-duration:6.3s;animation-delay:-1.9s}
  .pill:nth-child(3){left:8px; top:143vw;animation-duration:4.8s;animation-delay:-3.3s}
  .hero__titulo{font-size:38px;margin:18px 0 14px}
  .hero__sub{font-size:21px;margin-bottom:18px}
  .hero__lead{font-size:17px;margin-bottom:24px}

  /* No celular esta dobra tinha a foto da Scarlet sobre fundo branco, e o
     conteúdo começava abaixo dela. Com as três páginas no preto, a foto
     clara não cabe mais: sai a imagem, sai o padding gigante que reservava
     espaço para ela, e a seção fica no mesmo preto do resto — igual ao
     computador. */
  .aprender{
    min-height:auto;
    padding:64px 0 70px;
    background:var(--preto);
  }
  /* sem altura de tela cheia: a seção passa a ter a altura do conteúdo */
  /* nas três páginas a dobra é escura agora: nada de foto de fundo */
  .para-quem{min-height:auto}
  .separador{margin:14px 0 30px}
  /* index: mosaico em cima, texto embaixo — em duas colunas nesta largura
     nem o mosaico nem o texto teriam espaço */
  .para-quem{padding:64px 0}
  /* minmax(0,1fr) e não 1fr: o `auto` implícito do 1fr não deixaria a
     coluna encolher abaixo do conteúdo */
  .para-quem__inner{grid-template-columns:minmax(0,1fr);gap:44px}
  /* no celular a chamada tem a coluna inteira, então pode crescer bem mais
     que o piso de 32px do clamp geral. O teto real não é a legibilidade e
     sim a quebra: acima de ~9,5vw a linha "E SE A SUA AGENDA" não cabe e o
     título passa de 4 para 5 linhas, deixando "FOSSE" sozinha */
  .chamada{font-size:clamp(34px,9.5vw,44px)}
  .mosaico{max-width:420px;margin-inline:auto}
  .mosaico__brilho{left:-16px;width:46px;height:46px}
  /* index: a foto virou elemento no fluxo, então não há o que reservar */
  .sobre{padding:64px 0}
  .sobre__inner{
    grid-template-columns:minmax(0,1fr);
    gap:40px;
    padding-bottom:0;
  }
  /* empilhadas, o fio da esquerda vira um recuo torto: some e quem separa
     passa a ser o espaço */
  /* precisa de `.sobre` no seletor: a regra da dobra escura é `.sobre
     .credencial` (0,2,0) e venceria um `.credencial` sozinho (0,1,0),
     devolvendo o fio e o recuo que aqui viram degrau */
  .sobre .credenciais{gap:16px;margin:22px 0 6px}
  .sobre .credencial{padding:0;border-left:0}
  /* com o respiro de 38px o texto do botão quebrava em duas linhas */
  .sobre__texto .btn{padding:18px 22px}
  .sobre__foto{max-width:420px;margin-inline:auto}
  .sobre__brilho{left:-14px;width:56px;height:56px}

  .titulo{font-size:34px}
  .titulo--md{font-size:30px}
  .titulo--sm{font-size:28px}
  .subtitulo{font-size:17px}

  .cards{grid-template-columns:1fr;max-width:520px}
  .card{padding:24px 22px 26px}
  .card__num{font-size:38px}
  .card__txt{font-size:16px}
  .card__txt strong{font-size:19px}

  .confianca__grid{grid-template-columns:1fr;gap:14px;padding:22px 0}
  .confianca__item{justify-content:flex-start;font-size:15px}

  .inclui{padding:64px 0}
  .inclui__grid{grid-template-columns:1fr;max-width:520px;gap:14px}
  .inclui__item{padding:20px}

  .oferta{margin-top:34px;padding:32px 22px 28px;border-radius:20px}
  /* index: o cartão empilha — foto em paisagem no topo, checkout embaixo */
  .matricula{grid-template-columns:1fr;max-width:520px;margin-top:34px;border-radius:18px}
  .matricula__foto{
    min-height:0;
    /* a proporção exata do recorte deitado: assim ele entra inteiro,
       sem o cover cortar nada */
    aspect-ratio:669/446;
    border-right:0;
    border-bottom:2px solid var(--ouro);
    background-image:var(--checkout-img-cel);
  }
  .matricula__info{padding:32px 22px 30px}
  .oferta__parcela .num{font-size:52px}
  .oferta .btn{font-size:15px;padding:18px 20px}
  .oferta__garantia{flex-direction:column;text-align:center;gap:10px}

  .escassez{font-size:14px;padding:9px 16px}
  .rotulo{font-size:12px;letter-spacing:.2em}
  .destaque{font-size:19px;padding:18px 20px}
  .credencial{flex:1 1 100%}

  .lista{gap:20px}
  .lista li{font-size:18px;gap:14px;align-items:flex-start}
  .lista .ico--seta{width:20px;height:20px;margin-top:2px}
  .destaque{font-size:19px;margin:34px 0 28px}

  .depoimento__txt{font-size:18px}

  .depoimentos{padding:70px 0}
  .cta{padding:10px 0 70px}
  .faq{padding:20px 0 70px}

  .faq__item summary{font-size:17px;padding:16px 18px}
  .faq__resp{padding:0 18px 18px;font-size:15px}

  .sobre__texto p{font-size:17px;line-height:25px}

  .tecnica{padding:70px 0}
  .painel{padding:22px}
  .painel__titulo{font-size:21px}
  .painel li{font-size:17px}
  .painel__nota{font-size:14px}

  .btn{font-size:14px;padding:14px 18px;gap:10px;width:100%;justify-content:center}
  .sobre__texto .btn,.cta .btn{width:auto}

  .rodape p{font-size:16px}
  /* mesma pílula do topo, com as mesmas medidas */
  .rodape__cursos{gap:0.6vw;padding:1.2vw;margin-bottom:22px}
  .rodape__cursos a{
    padding:2.4vw 1.9vw;
    font-size:clamp(9.5px,2.8vw,13px);
  }
}

/* =========================================================
   RESPONSIVO — telas muito estreitas (até 380px)
   ========================================================= */
@media (max-width:380px){
  .hero__titulo{font-size:32px}
  .hero__sub{font-size:19px}
  .hero__lead{font-size:16px}
  .titulo{font-size:29px}
  .titulo--md{font-size:26px}
}

/* =========================================================
   TROCA DE CURSO: A PÁGINA ACENDE E APAGA
   A entrada depende da classe "js", então sem JavaScript a página abre
   normal, sem nunca ficar apagada. A saída é posta pelo links.js no clique.
   ========================================================= */
.js body{animation:pagina-entra .45s ease both}
@keyframes pagina-entra{from{opacity:0}to{opacity:1}}

/* uma animação substitui a outra, então a saída parte do estado atual sem
   precisar brigar com o fill-mode da entrada */
html.saindo body{animation:pagina-sai .3s ease forwards}
@keyframes pagina-sai{to{opacity:0}}

/* =========================================================
   APARECER AO ROLAR
   O esconder só acontece com .js no <html>, que o script de uma linha do
   <head> coloca antes da primeira pintura. Sem JavaScript nada é escondido
   e a página aparece inteira — o pior caso é "não animou".
   Quem devolve a visibilidade é o links.js, ao ver o elemento entrar na
   tela; a cascata entre irmãos vem do transition-delay que ele calcula.
   ========================================================= */
.js .revela{
  opacity:0;
  transform:translateY(26px);
  transition:opacity .75s cubic-bezier(.22,.61,.36,1),
             transform .75s cubic-bezier(.22,.61,.36,1);
}
.js .revela.revelado{opacity:1;transform:none}

/* =========================================================
   A DOBRA "PARA QUEM É" SOBE POR CIMA DA ANTERIOR

   A dobra escura tem canto arredondado no topo e sombra por baixo: é o que
   faz ela parecer uma placa deslizando sobre a anterior.

   O "grudar" da seção de trás tem um detalhe que não dá para resolver só em
   CSS. Com `top:0` ela prenderia mostrando o TOPO — e como ela é mais alta
   que a tela, o botão que fica no rodapé dela nunca apareceria. O certo é
   prender com um `top` NEGATIVO do tamanho exato do que ela passa da tela,
   e esse número muda com o conteúdo e com o aparelho. Quem mede é o
   links.js, que grava em --sobra e marca <html> com "medido".
   Sem a medida a regra não vale, a seção rola normal e nada se perde.
   ========================================================= */
.para-quem{
  border-radius:40px 40px 0 0;
  /* a força da sombra depende do fundo da dobra: na index ela é escura e
     aguenta 55%; no peeling e no brow é clara, e 55% viraria uma mancha.
     Cada tema define a sua em --sombra-empilha. */
  box-shadow:var(--sombra-empilha, 0 -22px 46px rgba(0,0,0,.16));
}
/* A seção presa continua presa até o fim da página, e como ela fica
   POSICIONADA, passa a pintar por cima de qualquer seção estática que venha
   depois — elemento posicionado vence bloco comum, independente da ordem no
   HTML. Por isso todas as dobras seguintes precisam ser posicionadas também,
   e OPACAS: onde o fundo fosse transparente, a textura presa apareceria
   atravessando. */
html.medido .para-quem,
html.medido .depoimentos,
html.medido .inclui,
html.medido .cta,
html.medido .faq,
html.medido .sobre,
html.medido .rodape{position:relative;z-index:1}

html.medido .depoimentos{
  background:linear-gradient(180deg,rgba(0,0,0,.015),transparent 40%) var(--branco);
}
html.medido .faq{background:var(--branco)}

/* index no preto: as duas dobras acima continuam OPACAS (senão a textura
   presa aparece atravessando), só que no preto do tema. Precisa desta
   especificidade extra para vencer as duas regras logo acima. */
html.medido .depoimentos,
html.medido .faq{background:var(--preto)}

/* Depois da lista acima de propósito: `html.medido .empilha-embaixo` e
   `html.medido .tecnica` têm a MESMA especificidade, então quem vence é quem
   vem por último. Com esta regra antes, a seção presa virava `relative` e o
   empilhamento simplesmente não acontecia no peeling e no brow. */
html.medido .empilha-embaixo{
  position:sticky;
  top:calc(0px - var(--sobra, 0px));
  z-index:0;
}

/* =========================================================
   INDEX NO PRETO — hero do celular
   =========================================================
   A arte vertical do celular já nasce escura e com o próprio degradê: mede
   #23211F no topo e fecha em #14140F embaixo, que é o --preto do tema. Por
   isso aqui NÃO vai véu — o que existia foi feito para a arte dourada
   antiga e, sobre esta, escurecia a profissional duas vezes (foi o que
   deixou o rosto apagado). Fica só o fecho, e a base --preto para quando o
   texto faz o hero passar da altura da imagem.
   Trocou a arte do celular? Conferir os dois extremos antes de tirar ou
   repor o véu — receita em docs/MANUTENCAO.md.
   Precisa estar depois do bloco de 767px do arquivo, que é onde a receita
   padrão do hero de celular é montada. */
@media (max-width:767px){
  .tema-ouro .hero{
    background:
      /* fecho para a faixa de confiança, que agora também é preta */
      linear-gradient(180deg, transparent 93%, var(--preto) 100%),
      var(--hero-cel) top center / 100% auto no-repeat,
      var(--preto);
  }
}

/* ---------------- acessibilidade ---------------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{transition:none !important}
  /* as notificações ficam paradas nos mesmos pontos */
  .tema-ouro .pill{animation:none}
  /* a faixa para de andar e passa a ser rolável com o dedo/teclado */
  .confianca__pista{animation:none}
  .confianca__janela{overflow-x:auto}
  /* a textura da segunda dobra fica parada */
  .aprender::before{animation:none}
  /* os elementos já entram visíveis, sem deslize */
  .js .revela{opacity:1;transform:none;transition:none}
  /* a página não acende nem apaga na troca de curso */
  .js body,html.saindo body{animation:none}
  /* o carrossel de depoimentos nem chega a ser montado (o links.js sai
     antes), então aqui só resta garantir que nada fique andando */
  .depoimentos__janela--rodando .depoimentos__pista{animation:none}
}
