/* =========================================================================
   Black Femme 2026 — Jazz Femme
   A edicao noturna do sistema da LP do Desafio 21 Dias (mesma marca,
   mesmas fontes, mesmo vinho). O que muda e o plano: fundo quase preto
   quente, texto creme, vinho como acento de superficie (nunca como texto
   sobre o escuro: #863c4d sobre o fundo da 2,6:1).
   ========================================================================= */

*, *::before, *::after { box-sizing: border-box; }
body { margin: 0; }
img, video, svg { display: block; max-width: 100%; height: auto; }
[hidden] { display: none !important; }

:root {
  /* ---------- 1. cor base (paleta crua) */
  --base-noite:    #120d0e;  /* quase preto com o matiz do vinho (hsl 350) */
  --base-noite-2:  #1b1416;  /* plano de cima: cartao */
  --base-noite-3:  #251c1e;  /* plano mais alto: campo de formulario */
  --base-creme:    #f9f5f1;
  --base-accent:   #863c4d;
  --base-accent-d: #641b2c;

  /* ---------- 2. cor semantica */
  --tone-strong: var(--base-creme);
  --tone-body:   color-mix(in srgb, var(--base-creme) 74%, var(--base-noite)); /* ~9,8:1 */
  --tone-muted:  color-mix(in srgb, var(--base-creme) 58%, var(--base-noite)); /* ~6,4:1 */
  --bg-base:     var(--base-noite);
  --bg-card:     var(--base-noite-2);
  --bg-campo:    var(--base-noite-3);
  --border:      color-mix(in srgb, var(--base-creme) 14%, transparent);
  --border-forte: color-mix(in srgb, var(--base-creme) 28%, transparent);

  /* ---------- 3. botao: o gradiente vinho da LP do Desafio
     (escolhido na rodada 1, 06/out). O hover inverte o sentido. */
  --cta-bg:       linear-gradient(90deg, var(--base-accent) 0%, var(--base-accent-d) 100%);
  --cta-bg-hover: linear-gradient(90deg, var(--base-accent-d) 0%, var(--base-accent) 100%);
  --cta-text:     var(--base-creme);
  --rosa:         #e5d2cd;  /* nude rosado. Pedido da Yasmim em 11/out ("esse rosa eu não curto" / "Gosto daquele nude"); era o marsala claro #c68b98 (07/out). 13,2:1 sobre o fundo */

  /* ---------- tipografia (a mesma escala da LP do Desafio) */
  --font-body:   "Libre Franklin", system-ui, -apple-system, sans-serif;
  --font-acento: "PT Serif Caption", Georgia, serif;

  --t-marca: clamp(3.25rem, 1.9rem + 5.8vw, 7rem);       /* 52 -> 112 */
  --t-h1:   clamp(1.75rem, 1.15rem + 2.56vw, 3.25rem);   /* 28 -> 52 */
  --t-h2:   clamp(1.5rem,  1.10rem + 1.71vw, 2.5rem);    /* 24 -> 40 */
  --t-h3:   clamp(1.25rem, 1.08rem + 0.71vw, 1.625rem);  /* 20 -> 26 */
  --t-lead: clamp(1.125rem, 1.01rem + 0.47vw, 1.375rem); /* 18 -> 22 */
  --t-body: clamp(1.0625rem, 0.99rem + 0.28vw, 1.1875rem); /* 17 -> 19 */
  --t-sm:   clamp(0.875rem, 0.83rem + 0.19vw, 1rem);     /* 14 -> 16 */
  --t-eyebrow: clamp(0.75rem, 0.69rem + 0.28vw, 0.9375rem); /* 12 -> 15 */

  --track-titulo: -0.035em;
  --track-caps:   0.16em;

  --lh-h1: 1.2;
  --lh-h2: 1.3;
  --lh-body: 1.55;

  /* teto de peso: 500. Hierarquia vem do tamanho. */
  --w-regular: 400;
  --w-medium:  500;

  --s-1: 4px;  --s-2: 8px;  --s-3: 12px; --s-4: 16px;
  --s-5: 24px; --s-6: 32px; --s-7: 48px; --s-8: 64px;

  --sec-m: clamp(4rem, 2.77rem + 5.26vw, 7.5rem);  /* 64 -> 120 */

  --container: 1236px;
  --pad:    clamp(1.25rem, 0.986rem + 1.127vw, 2rem);  /* 20 -> 32 */
  --gutter: clamp(1rem, 0.824rem + 0.751vw, 1.5rem);   /* 16 -> 24 */

  --r-card:  clamp(16px, 1.6vw, 24px);
  --r-campo: 14px;
  --r-pill:  9999px;
  --h-cta: 64px;
  --h-cta-sm: 56px;
  --h-campo: 56px;

  --ease-out: cubic-bezier(.22, 1, .36, 1);
  --ease-io:  cubic-bezier(.4, 0, .2, 1);
  --dur-micro: .15s;
  --dur-ui:    .3s;
  --dur-reveal: .6s;
}

/* =========================================================================
   BASE
   ========================================================================= */

html { scroll-behavior: smooth; background: var(--bg-base); }

body {
  font-family: var(--font-body);
  font-weight: var(--w-regular);
  font-size: var(--t-body);
  line-height: var(--lh-body);
  color: var(--tone-body);
  background: var(--bg-base);
  -webkit-font-smoothing: antialiased;
}

main { position: relative; overflow-x: clip; }

.wrap {
  width: 100%;
  max-width: calc(var(--container) + 2 * var(--pad));
  margin-inline: auto;
  padding-inline: var(--pad);
  position: relative;
  z-index: 1;
}

h1, h2, h3 { margin: 0; font-weight: var(--w-regular); color: var(--tone-strong); text-wrap: balance; }
p { margin: 0; text-wrap: pretty; }
ol, ul { margin: 0; padding: 0; list-style: none; }
a { color: inherit; }
/* <b>/<strong> herdam 700 do navegador sem aparecer no CSS */
b, strong { font-weight: var(--w-medium); color: var(--tone-strong); }

.acento { font-family: var(--font-acento); font-style: italic; font-weight: 400; }

.caps {
  font-size: var(--t-eyebrow);
  font-weight: var(--w-medium);
  letter-spacing: var(--track-caps);
  text-transform: uppercase;
  line-height: 1.3;
}

:where(a, button, input):focus-visible {
  outline: 2px solid var(--base-creme);
  outline-offset: 3px;
}

.sr {
  position: absolute; width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden;
  clip-path: inset(50%); white-space: nowrap;
}
.sr:focus {
  position: fixed; top: var(--s-4); left: var(--s-4);
  width: auto; height: auto; margin: 0; padding: var(--s-3) var(--s-5);
  overflow: visible; clip-path: none;
  background: var(--base-creme); color: var(--base-accent-d);
  border-radius: var(--r-pill); z-index: 60;
}

/* =========================================================================
   BOTAO — pilula creme, texto vinho
   ========================================================================= */

.cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--s-3);
  min-height: var(--h-cta);
  padding-inline: var(--s-7);
  border: 0;
  border-radius: var(--r-pill);
  background: var(--cta-bg);
  color: var(--cta-text);
  font-family: var(--font-body);
  font-size: var(--t-sm);
  font-weight: var(--w-medium);
  letter-spacing: var(--track-caps);
  text-transform: uppercase;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  position: relative;
  overflow: hidden;
  transition: transform var(--dur-micro) var(--ease-io),
              background-color var(--dur-ui) var(--ease-io),
              box-shadow var(--dur-ui) var(--ease-io);
}
/* o brilho que atravessa a pilula de tempos em tempos (mesmo da LP do Desafio) */
.cta::before {
  content: "";
  position: absolute; top: -10%; bottom: -10%; width: 38%; left: -55%;
  pointer-events: none;
  background: linear-gradient(100deg, transparent 0%,
    color-mix(in srgb, #fff 22%, transparent) 50%, transparent 100%);
  transform: skewX(-16deg);
  animation: cta-brilho 4.6s var(--ease-io) infinite;
}
@keyframes cta-brilho { 0%, 62% { left: -55%; } 88%, 100% { left: 118%; } }
.cta:hover, .cta:focus-visible {
  background: var(--cta-bg-hover);
  transform: translateY(-2px);
  box-shadow: 0 12px 32px -10px color-mix(in srgb, var(--base-accent) 70%, transparent);
}
.cta:hover::before { animation-play-state: paused; }
.cta:active { transform: translateY(0); }
.cta svg { width: 18px; height: 18px; flex: none; }

@media (max-width: 899px) {
  .cta { min-height: var(--h-cta-sm); padding-inline: var(--s-4); width: 100%; letter-spacing: .08em; }
}

/* =========================================================================
   FAIXA — loop continuo no alto da pagina (mesma mecanica da LP do Desafio)
   ========================================================================= */

.faixa {
  position: relative;
  z-index: 4;
  background: var(--cta-bg);
  padding-block: var(--s-3);
  overflow: hidden;
  user-select: none;
}
/* duas metades identicas montadas no JS: andar -50% fecha o laco sem salto */
.faixa__trilho { display: flex; width: max-content; animation: faixa-anda 40s linear infinite; }
@keyframes faixa-anda { to { transform: translate3d(-50%, 0, 0); } }
.faixa__item {
  display: flex; align-items: center; gap: var(--s-4);
  padding-right: var(--s-4);
  color: var(--base-creme);
  white-space: nowrap;
}
.faixa__item i { font-style: normal; color: var(--rosa); }

/* =========================================================================
   TOPO
   ========================================================================= */

.topo { position: relative; z-index: 3; padding-block: var(--s-5); }
.topo__inner { display: flex; align-items: center; justify-content: space-between; }
.topo__marca { color: var(--tone-strong); display: flex; min-height: 44px; align-items: center; }
.topo__marca svg { width: clamp(150px, 15vw, 220px); }
.topo__data { color: var(--tone-muted); }

@media (max-width: 599px) {
  .topo__inner { justify-content: center; }
  .topo__data { display: none; }
}

/* =========================================================================
   ABERTURA
   Desktop: texto na esquerda, video na direita, a foto dela sangrando
   atras do video. Celular: titulo -> video -> texto -> botao (o video
   sobe porque e ele que explica a oferta).
   ========================================================================= */

/* sem o topo (saiu em 09/out): a abertura respira sozinha abaixo da faixa */
.abertura { position: relative; padding-block: clamp(var(--s-6), 1rem + 3vw, var(--s-8)) var(--sec-m); }

/* uma coluna so, tudo no eixo central: titulo -> video largo -> texto
   (opcao "video no centro", escolhida pelo Henrique em 09/out) */
.abertura__grid {
  display: grid;
  gap: var(--s-6);
  grid-template-columns: 1fr;
  grid-template-areas: "titulo" "video" "texto";
}
.abertura__titulo { grid-area: titulo; text-align: center; }
.abertura__video  { grid-area: video; width: min(100%, 880px); justify-self: center; }
.abertura__texto  { grid-area: texto; text-align: center; justify-items: center; margin-inline: auto; }
.logo-evento img  { margin-inline: auto; }
.abertura h1      { margin-inline: auto; }

/* o logo da campanha no desenho da marca Jazz Femme (borboleta + letras), vetorizado do arquivo que a Yasmim mandou em 11/out */
/* o selo da data fica abaixo do logo (pedido do Henrique, 11/out) */
.abertura__titulo .selo { margin-top: var(--s-5); }
.logo-evento img { width: clamp(240px, 14rem + 10vw, 440px); height: auto; }

.selo {
  display: inline-flex;
  align-items: center;
  gap: var(--s-3);
  padding: var(--s-2) var(--s-4);
  border: 1px solid var(--border-forte);
  border-radius: var(--r-pill);
  color: var(--tone-strong);
}
/* o pontinho pisca como "ao vivo": o miolo respira e o anel se expande */
.selo::before {
  content: "";
  flex: none;
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--rosa);
  animation: selo-pisca 1.6s var(--ease-io) infinite;
}
@keyframes selo-pisca {
  0%   { opacity: 1;  box-shadow: 0 0 0 0 color-mix(in srgb, var(--rosa) 55%, transparent); }
  50%  { opacity: .35; }
  70%  { box-shadow: 0 0 0 7px color-mix(in srgb, var(--rosa) 0%, transparent); }
  100% { opacity: 1;  box-shadow: 0 0 0 0 color-mix(in srgb, var(--rosa) 0%, transparent); }
}

.abertura h1 {
  margin-top: var(--s-6);
  font-size: var(--t-h1);
  line-height: var(--lh-h1);
  letter-spacing: var(--track-titulo);
  max-width: 17em;
}
.abertura h1 .h1__linha2 {
  display: block;
  margin-top: var(--s-4);
  font-size: var(--t-eyebrow);
  font-weight: var(--w-medium);
  letter-spacing: var(--track-caps);
  line-height: 1.4;
  color: var(--rosa);  /* o nude do acento (11/out) */
}

.abertura__texto { display: grid; gap: var(--s-4); max-width: 34em; }
.abertura__texto .lead { font-size: var(--t-lead); line-height: 1.45; color: var(--tone-strong); }
.abertura__texto .cta { margin-top: var(--s-4); justify-self: center; }

@media (max-width: 899px) {
  .abertura__texto .cta { justify-self: stretch; }
}

/* ---------- video da Yasmim (16:9, legenda queimada): capa ate o clique ---------- */
.video {
  position: relative;
  margin: 0;
  aspect-ratio: 16 / 9;
  border-radius: var(--r-card);
  overflow: hidden;
  background: var(--bg-card);
  isolation: isolate;
}
.video img, .video video {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
}
.video video { background: #000; }
/* sem controles do navegador: tocando, somem o degradê e o play (pausado, voltam) */
.video video { cursor: pointer; }
.video video:focus-visible { outline: 2px solid var(--rosa); outline-offset: -4px; }
.video.tocando::after, .video.tocando .video__play { display: none; }
/* linha de progresso no pé do vídeo, só de leitura: trilho translúcido
   + preenchimento marsala com brilho, pra ler sobre a parede clara (09/out) */
.video__progresso {
  position: absolute;
  z-index: 3;
  left: 0; right: 0; bottom: 0;
  height: 5px;
  background: color-mix(in srgb, var(--base-noite) 45%, transparent);
  pointer-events: none;
}
.video__progresso i {
  display: block;
  height: 100%;
  background: color-mix(in srgb, var(--rosa) 80%, var(--base-creme));
  box-shadow: 0 0 10px color-mix(in srgb, var(--rosa) 70%, transparent);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .25s linear;
}
.video::after {
  content: "";
  position: absolute; inset: 0;
  background: linear-gradient(180deg, transparent 45%, color-mix(in srgb, var(--base-noite) 78%, transparent) 100%);
  pointer-events: none;
}
/* play no centro do video, com um anel que pulsa (mesmo ritmo do selo) */
.video__play {
  position: absolute;
  z-index: 2;
  left: 50%; top: 50%;
  translate: -50% -50%;
  white-space: nowrap;
  animation: play-pulsa 1.8s var(--ease-io) infinite;
  display: inline-flex; align-items: center; gap: var(--s-3);
  padding: 0 var(--s-5) 0 var(--s-2);
  min-height: 56px;
  border: 0;
  border-radius: var(--r-pill);
  background: color-mix(in srgb, var(--base-creme) 92%, transparent);
  color: var(--base-accent-d);
  font: var(--w-medium) var(--t-sm) / 1 var(--font-body);
  letter-spacing: -0.01em;
  cursor: pointer;
  transition: transform var(--dur-micro) var(--ease-io);
}
.video__play:hover { transform: scale(1.03); animation-play-state: paused; }
@keyframes play-pulsa {
  0%   { box-shadow: 0 0 0 0 color-mix(in srgb, var(--base-creme) 55%, transparent); }
  70%  { box-shadow: 0 0 0 18px color-mix(in srgb, var(--base-creme) 0%, transparent); }
  100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--base-creme) 0%, transparent); }
}
@media (prefers-reduced-motion: reduce) { .video__play { animation: none; } }
.video__play span[aria-hidden] {
  display: grid; place-items: center;
  width: 40px; height: 40px; border-radius: 50%;
  background: var(--base-accent-d); color: var(--base-creme);
}
.video__play svg { width: 16px; height: 16px; translate: 1px 0; }

/* =========================================================================
   OFERTA — o grupo VIP e os quatro cursos
   ========================================================================= */

.oferta {
  position: relative;
  padding-block: var(--sec-m);
  border-top: 1px solid var(--border);
}

/* titulo em cima, os quatro cursos em colunas embaixo (rodada 1, opcao 3) */
.oferta__grid { display: grid; gap: var(--s-7); }

/* o titulo ocupa a largura do conteudo: em coluna estreita ele quebrava
   em 6 linhas no desktop. 26em no degrau do h2 = ~3 linhas em 1440. */
.oferta__intro h2 {
  max-width: 26em;
  font-size: var(--t-h2);
  line-height: var(--lh-h2);
  letter-spacing: var(--track-titulo);
  color: var(--tone-muted);
}
.oferta__intro h2 strong { color: var(--tone-strong); font-weight: var(--w-regular); }

/* os quatro cursos, na ordem da jornada: foto, nome, descricao.
   O numero (01-04) ja vem na arte (07/out), por isso saiu do cartao. */
.cursos { display: grid; gap: var(--s-4); }
@media (min-width: 900px) {
  .cursos { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
.curso {
  display: grid;
  align-content: start;
  gap: var(--s-2);
  padding-bottom: var(--s-5);
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--r-card);
  overflow: hidden;
}
/* capas feitas pelo Henrique (v2, 07/out: fotos escuras, numero e a faixa
   "GRUPO VIP" na arte), proporcao do arquivo (812x1182, 2x), sem recorte —
   cover em 3:4 cortaria a faixa de baixo */
.curso__foto {
  order: -1;
  width: 100%;
  aspect-ratio: 406 / 591;
  object-fit: cover;
  margin-bottom: var(--s-3);
}
.curso h3, .curso p { padding-inline: var(--s-5); }
.curso h3 { font-size: var(--t-h3); line-height: 1.25; letter-spacing: var(--track-titulo); }
.curso p { color: var(--tone-body); }

/* celular: os quatro lado a lado, arrastando de lado (o cartao seguinte
   aparece pela metade e convida a arrastar) */
@media (max-width: 899px) {
  .cursos {
    grid-auto-flow: column;
    grid-auto-columns: 78%;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    margin-inline: calc(-1 * var(--pad));
    padding-inline: var(--pad);
    scroll-padding-inline: var(--pad);
    scrollbar-width: none;
  }
  .cursos::-webkit-scrollbar { display: none; }
  .curso { scroll-snap-align: start; }
}

/* ---------- o presente: o unico bloco vinho da pagina, com o "20" em rosa */
.presente {
  margin-top: var(--s-7);
  display: grid;
  grid-template-columns: auto 1fr;
  column-gap: var(--s-7);
  align-items: center;
  padding: var(--s-7) var(--s-6);
  border-radius: var(--r-card);
  background: linear-gradient(135deg, var(--base-accent) 0%, var(--base-accent-d) 100%);
  color: color-mix(in srgb, var(--base-creme) 88%, var(--base-accent-d));
}
/* o "20" conta de 0 ate 20 quando aparece (black.js, ligado por --conta)
   e a legenda "PRIMEIRAS" da o contexto (rodada 2 da oferta, opcao 1) */
.presente__selo { grid-row: 1 / 3; display: grid; justify-items: center; align-content: center; }
.ps-legenda {
  margin-top: var(--s-3);
  padding-left: .32em;  /* compensa o tracking do fim da palavra: centro otico */
  font-size: var(--t-eyebrow);
  font-weight: var(--w-medium);
  letter-spacing: .32em;
  color: var(--base-creme);
}
.presente__num {
  --conta: 1;
  font-variant-numeric: tabular-nums;
  font-family: var(--font-acento);
  font-style: italic;
  font-size: clamp(6rem, 3.5rem + 9vw, 12rem);
  line-height: .8;
  color: var(--rosa);
  user-select: none;
}
.presente__rotulo { align-self: end; display: flex; align-items: center; gap: var(--s-3); color: var(--base-creme); }
.presente__rotulo svg { width: 22px; height: 22px; flex: none; }
.presente p:not(.presente__rotulo) {
  align-self: start;
  margin-top: var(--s-4);
  font-size: var(--t-lead);
  line-height: 1.5;
  max-width: 30em;
}
.presente strong { color: var(--base-creme); }

@media (min-width: 900px) {
  .presente { padding: var(--s-8) var(--s-7); }
}
@media (max-width: 599px) {
  .presente { grid-template-columns: 1fr; padding: var(--s-6) var(--s-5); }
  .presente__selo { grid-row: auto; justify-items: start; margin-bottom: var(--s-3); }
  .presente__num { font-size: 7rem; }
  .ps-legenda { padding-left: 0; }
}

/* =========================================================================
   INSCRICAO
   ========================================================================= */

.inscricao { padding-block: var(--sec-m); border-top: 1px solid var(--border); }

.inscricao__grid { display: grid; gap: var(--s-6); }
@media (min-width: 900px) {
  .inscricao__grid { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--s-8); align-items: stretch; }
}

.inscricao__foto {
  position: relative;
  border-radius: var(--r-card);
  overflow: hidden;
  min-height: 420px;
  background: var(--bg-card);
}
.inscricao__foto img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 20%; }
@media (max-width: 899px) {
  .inscricao__foto { display: none; }
}

.form-card {
  padding: var(--s-7) var(--s-6);
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--r-card);
  display: flex; flex-direction: column; justify-content: center;
}
@media (min-width: 900px) { .form-card { padding: var(--s-8) var(--s-7); } }

/* o selo (piscando) e o logo voltam logo antes do botao: a data e a marca
   no momento de decidir (rodada 1 da inscricao, opcao 3) */
.form-card__selo { align-self: flex-start; }
.form-card__logo { margin-block: var(--s-5); }
.form-card__logo img { width: min(100%, 360px); }
.form-card h2 {
  font-size: var(--t-h3);
  line-height: var(--lh-h2);
  letter-spacing: var(--track-titulo);
}

.form { display: grid; gap: var(--s-4); margin-top: var(--s-6); }
.campo { display: grid; gap: var(--s-2); }
.campo label { font-size: var(--t-sm); color: var(--tone-strong); }
.campo input {
  height: var(--h-campo);
  padding-inline: var(--s-4);
  border: 1px solid var(--border-forte);
  border-radius: var(--r-campo);
  background: var(--bg-campo);
  color: var(--tone-strong);
  font: var(--w-regular) 1.0625rem / 1 var(--font-body); /* 17px: abaixo de 16 o iOS da zoom */
  transition: border-color var(--dur-micro) var(--ease-io);
}
.campo input::placeholder { color: color-mix(in srgb, var(--base-creme) 40%, transparent); }
.campo input:hover { border-color: color-mix(in srgb, var(--base-creme) 42%, transparent); }
.campo input:focus { outline: none; border-color: var(--base-creme); }
.campo input[aria-invalid="true"] { border-color: #e88a9d; }
.campo__erro { font-size: var(--t-sm); color: #f0a7b6; min-height: 0; }
.campo__erro:empty { display: none; }

.form .cta { margin-top: var(--s-3); width: 100%; }
.form .cta[aria-busy="true"] { opacity: .7; pointer-events: none; }
.form__nota { font-size: var(--t-sm); color: var(--tone-muted); text-align: center; }

/* =========================================================================
   RODAPE
   ========================================================================= */

.rodape { padding-block: var(--s-7); border-top: 1px solid var(--border); }

/* =========================================================================
   BARRA FIXA — logo + data + botao, presa no rodape da tela enquanto a
   pessoa rola entre a abertura e a inscricao (black.js liga data-visivel)
   ========================================================================= */
.barra-vip {
  position: fixed;
  inset: auto 0 0 0;
  z-index: 20;
  padding-block: var(--s-3) calc(var(--s-3) + env(safe-area-inset-bottom));
  background: color-mix(in srgb, var(--base-noite-2) 92%, transparent);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-top: 1px solid var(--border);
  translate: 0 110%;
  transition: translate var(--dur-ui) var(--ease-out);
}
.barra-vip[data-visivel="true"] { translate: 0 0; }
.barra-vip__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-5);
}
.barra-vip__marca { display: flex; align-items: center; gap: var(--s-4); min-width: 0; }
.barra-vip__marca img { width: clamp(104px, 6rem + 4vw, 168px); height: auto; }
.barra-vip__data {
  display: inline-flex; align-items: center; gap: var(--s-2);
  color: var(--tone-strong);
  font-size: var(--t-eyebrow);
  white-space: nowrap;
}
.barra-vip__data::before {
  content: "";
  flex: none;
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--rosa);
  animation: selo-pisca 1.6s var(--ease-io) infinite;
}
.barra-vip__cta { flex: none; min-height: var(--h-cta-sm); padding-inline: var(--s-6); }

/* celular: logo e data numa linha, botao na largura toda embaixo */
@media (max-width: 699px) {
  .barra-vip__inner { flex-direction: column; align-items: stretch; gap: var(--s-3); }
  .barra-vip__marca { justify-content: center; }
  .barra-vip__cta { width: 100%; min-height: 52px; padding-inline: var(--s-4); }
}
@media (prefers-reduced-motion: reduce) {
  .barra-vip { transition: none; }
  .barra-vip__data::before { animation: none; }
}
.rodape__inner { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--s-4); }
.rodape svg { width: 140px; color: var(--tone-muted); }
.rodape p { font-size: var(--t-sm); color: var(--tone-muted); }
@media (max-width: 599px) { .rodape__inner { justify-content: center; text-align: center; } }

/* =========================================================================
   OBRIGADO — falta um passo
   ========================================================================= */

.passo { padding-block: clamp(var(--s-6), 1rem + 3vw, var(--s-8)) var(--sec-m); } /* mesmo respiro da abertura, sem o topo (09/out) */
.passo__card {
  max-width: 720px;
  margin-inline: auto;
  padding: var(--s-7) var(--s-6);
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--r-card);
  text-align: center;
}
@media (min-width: 900px) { .passo__card { padding: var(--s-8); } }

.etapas { display: flex; justify-content: center; align-items: center; gap: var(--s-3); color: var(--tone-muted); }
.etapas li { display: inline-flex; align-items: center; gap: var(--s-2); white-space: nowrap; }
@media (max-width: 599px) { .etapas { gap: var(--s-2); } .etapas li + li::before { width: 16px; } }
.etapas li + li::before { content: ""; width: 32px; height: 1px; background: var(--border-forte); margin-right: var(--s-1); }
.etapas .feita { color: var(--tone-muted); }
.etapas .agora { color: var(--tone-strong); }
.etapas b {
  display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%;
  font-size: 12px; letter-spacing: 0; border: 1px solid var(--border-forte); color: inherit;
}
.etapas .agora b { background: var(--base-creme); color: var(--base-accent-d); border-color: var(--base-creme); }
.etapas svg { width: 12px; height: 12px; }

.passo h1 {
  margin-top: var(--s-6);
  font-size: var(--t-h1);
  line-height: var(--lh-h1);
  letter-spacing: var(--track-titulo);
}
.passo__texto { margin-top: var(--s-5); font-size: var(--t-lead); line-height: 1.5; max-width: 30em; margin-inline: auto; }
.passo .cta { margin-top: var(--s-6); }
.passo__logo img { width: min(100%, 320px); margin: 0 auto var(--s-6); }
.passo h1 .acento { color: var(--rosa); }
/* botao do grupo: logo do WhatsApp + anel marsala pulsando (rodada 1 do
   obrigado, opcao 2, escolhida em 07/out; o icone e o logo do WhatsApp, nao o balao) */
.cta__ic { display: block; width: 20px; height: 20px; }
.passo__cta { animation: cta-pulso 2.2s var(--ease-io) infinite; }
@keyframes cta-pulso {
  0%   { box-shadow: 0 0 0 0 color-mix(in srgb, var(--rosa) 45%, transparent); }
  70%  { box-shadow: 0 0 0 16px color-mix(in srgb, var(--rosa) 0%, transparent); }
  100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--rosa) 0%, transparent); }
}
.passo__nota { margin-top: var(--s-4); font-size: var(--t-sm); color: var(--tone-muted); }

/* =========================================================================
   ENTRADA — so com JS e sem pedido de menos movimento
   ========================================================================= */

.js .revela { opacity: 0; translate: 0 24px; transition: opacity var(--dur-reveal) var(--ease-out), translate var(--dur-reveal) var(--ease-out); }
.js .revela.visivel { opacity: 1; translate: 0 0; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .cta::before { animation: none; display: none; }
  .passo__cta { animation: none; }
  .faixa__trilho, .selo::before { animation: none; }
  .js .revela { opacity: 1; translate: none; transition: none; }
}

/* telas bem estreitas (ate 399px): dentro do cartao do formulario sobram
   ~286px e o selo e o botao quebravam em duas linhas */
/* =========================================================================
   CELULAR CENTRALIZADO (pedido do Henrique, 07/out): abaixo de 900px todo o
   conteudo fica no eixo central. Excecao: rotulos e campos do formulario
   seguem alinhados a esquerda (leitura e preenchimento).
   ========================================================================= */
@media (max-width: 899px) {
  .topo__inner { justify-content: center; }
  .topo__data { display: none; }
  .rodape__inner { flex-direction: column; justify-content: center; text-align: center; }

  .abertura__titulo, .abertura__texto { text-align: center; }
  .logo-evento img { margin-inline: auto; }
  .abertura h1 { margin-inline: auto; }
  .abertura__texto { justify-items: center; margin-inline: auto; }

  .oferta__intro h2 { text-align: center; margin-inline: auto; }
  .curso { text-align: center; }

  .presente { text-align: center; grid-template-columns: 1fr; }
  .presente__selo { grid-row: auto; justify-items: center; margin-bottom: var(--s-3); }
  .presente__rotulo { justify-content: center; flex-direction: column; gap: var(--s-2); }
  .presente p:not(.presente__rotulo) { margin-inline: auto; }

  .form-card__selo { align-self: center; }
  .form-card__logo img { margin-inline: auto; }
  .form-card h2 { text-align: center; }
}
@media (max-width: 599px) {
  .presente__selo { justify-items: center; }
  .ps-legenda { padding-left: .32em; }  /* volta o centro otico do tracking */
}

@media (max-width: 399px) {
  .form-card { padding-inline: var(--s-4); }
  .form .cta { letter-spacing: .04em; }
  .selo { white-space: nowrap; gap: var(--s-2); padding-inline: var(--s-3); font-size: 11px; letter-spacing: .1em; }
}
