/* ============================================================
   LP Wellington — Método GAPE360.

   Gramática própria, irmã da lp-joao.css: página de conversão, não
   link-in-bio. As duas nunca sobem juntas (cada rota carrega a sua) e
   por isso os prefixos são diferentes — `lpw-` aqui, `lp-` lá. Quem
   procura uma classe no repositório precisa saber de qual das duas
   páginas ela é sem abrir as duas.

   Cor nenhuma nasce aqui. A paleta inteira vem de tokens.css ›
   [data-brand="wellington"] (navy #111e4a, dourado #f5a800, fio
   dourado a 28%), e a escala tipográfica e o ritmo vêm do :root do
   mesmo arquivo. Trocar a marca lá troca esta página junto.

   Herda de base.css e não redeclara: o reset, o [hidden] com
   !important, .container-wide, .eyebrow, .rule. Componente que já
   existe lá é usado como está.

   O dossiê e o carimbo são a assinatura da marca e vêm da profile.css
   com as MESMAS medidas — anel de 168px, borda de 2,5px, giro de
   -7deg, letra do método em Spectral. A LP e a página de perfil não
   podem parecer dois carimbos diferentes.

   Nenhum `opacity: 0` mora aqui, pela mesma razão da LP do João: a
   única animação é o `rise` do topo, que já nasce com o conteúdo na
   tela. A página existe para abrir conversa no WhatsApp e não pode
   ficar esperando nada para aparecer.
   ============================================================ */

body[data-brand='wellington'] {
  /* ---------- respiro ----------
     Uma escala só, e ela é a MESMA da LP do João, que por sua vez vem do
     DESIGN.md § Layout: 64px no celular, 80 no tablet, 120 no
     computador. A primeira versão desta folha usava 56/88 (o
     --space-6/--space-7 dos tokens) e a página ficava apertada — o
     documento pede que tudo respire e que nada fique grudado, e 88px
     entre seções de uma página longa não é respiro, é margem.

     Os quatro de baixo existem para que "apertado" tenha um lugar só
     para ser consertado: nenhum respiro desta página é valor solto. */
  --lpw-y: clamp(4rem, 9.26vw + 0.55rem, 7.5rem);
  --lpw-y-lg: calc(var(--lpw-y) * 1.2); /* só a chamada final */
  --lpw-block: clamp(2.25rem, 4vw, 3.5rem); /* dentro de bloco com fio */
  --lpw-gap: clamp(1.75rem, 3vw, 3rem); /* título -> conteúdo */
  --lpw-gap-grid: clamp(1.25rem, 2vw, 2rem); /* entre cartões irmãos */
  --lpw-card-pad: clamp(1.5rem, 2.2vw, 2rem); /* dentro do cartão */

  /* Altura mínima dos CTAs: 56px no corpo da página e 64px no botão da
     chamada final, que é o maior da página de propósito. O piso de
     44px da acessibilidade fica folgado nos dois. */
  --lpw-cta-h: 56px;
  --lpw-cta-h-lg: 64px;
}

/* ---------- esqueleto ---------- */
.lpw {
  padding-bottom: 0;
}

/* O respiro é sempre EMBAIXO. Assim uma seção que ganhe fio no topo
   (dossiê, investimento) encosta no fio da anterior sem somar dois
   respiros, e tirar uma seção do meio não deixa buraco duplo. */
.lpw-sec {
  padding-bottom: 20px;
}

/* O link "Mentoria" do rodapé aponta para cá; sem isto o título
   encosta na borda de cima da janela ao pular. */
#mentoria {
  scroll-margin-top: var(--space-4);
}

/* ---------- tipografia da LP ----------
   Os títulos são escritos em caixa normal no HTML e sobem para
   maiúscula aqui — mesma convenção da .eyebrow e do .hero__tab. Quem
   edita o texto no HTML lê frase, não grito. */
.lpw-h1,
.lpw-h2 {
  font-family: var(--font-display);
  text-transform: uppercase;
  text-wrap: balance;
}
.lpw-h1 {
  font-size: var(--step-3);
  font-weight: 900;
  letter-spacing: -0.025em;
  line-height: 0.94;
}
/* As três linhas do título do topo são quebradas à mão porque a
   manchete do documento tem quebra de SENTIDO, não de largura. No
   celular a primeira ainda quebra sozinha (a 390px viram quatro
   linhas), e está certo assim: os pontos de quebra escolhidos
   continuam valendo, o navegador só acrescenta os dele. */
.lpw-h1 span {
  display: block;
}
.lpw-h1 em {
  font-style: normal;
  color: var(--brand);
}

.lpw-h2 {
  font-size: var(--step-3);
  font-weight: 800;
  letter-spacing: -0.02em;
  line-height: 1.05;
  max-width: 22ch;
  margin-top: 40px;
}

.lpw-lead {
  color: var(--muted);
  font-size: var(--step-1);
  max-width: 62ch;
  text-wrap: pretty;
}

/* A linha de virada de cada bloco (o "isso é sintoma, não problema").
   Serif itálica é o registro do dossiê: quem fala ali é o Wellington,
   não a página. */
.lpw-note {
  font-family: var(--font-serif);
  font-style: italic;
  font-weight: 500;
  font-size: var(--step-1);
  line-height: 1.45;
  text-wrap: pretty;
}

/* ---------- CTAs ----------
   Dourado preenchendo com texto navy, ou contorno de fio dourado sobre
   o fundo. Dourado como TEXTO só aparece em link de rodapé, onde é
   --brand-bright (mais claro) sobre navy. */
.lpw-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.6rem;
  min-height: var(--lpw-cta-h);
  padding: 0.85rem 1.75rem;
  border-radius: var(--radius-pill);
  border: 1px solid transparent;
  font-weight: 800;
  font-size: var(--step-0);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  text-align: center;
  transition:
    transform var(--t-fast),
    box-shadow var(--t-fast),
    background var(--t-fast),
    color var(--t-fast),
    border-color var(--t-fast);
}
.lpw-cta svg {
  width: 20px;
  height: 20px;
  flex: none;
}
.lpw-cta--primary {
  background: var(--brand);
  color: var(--on-brand);
  box-shadow: var(--shadow);
  margin-top: 26px;
}
.lpw-cta--primary:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-lift);
}
.lpw-cta--ghost {
  border-color: var(--line);
  color: var(--ink);
}
.lpw-cta--ghost:hover {
  border-color: var(--brand);
  color: var(--brand-bright);
  transform: translateY(-2px);
}
.lpw-cta--lg {
  min-height: var(--lpw-cta-h-lg);
  padding: 1.1rem 2.25rem;
  font-size: var(--step-1);
  box-shadow: var(--shadow-lift);
}
.lpw-cta--lg svg {
  width: 24px;
  height: 24px;
}

/* ---------- SEÇÃO 1 · topo ---------- */
/* ---------- SEÇÃO 1 · topo ----------
   Topo de altura cheia com o retrato à esquerda, sangrando até a borda da
   janela, e o texto à direita alinhado ao container do resto da página.

   Sem moldura, de propósito: nem borda, nem raio, nem o fio interno que
   existia aqui. Quem separa a foto do fundo é uma máscara em degradê na
   borda direita — o retrato se dissolve no navy em vez de ser recortado
   dele. Máscara e não overlay porque o fundo da página é um gradiente
   radial: um véu de cor chapada nunca casaria com ele em toda a altura. */
.lpw-hero {
  position: relative;
  overflow: hidden;
  display: grid;
  /* 100svh, e não 100vh: no celular a barra de endereço entra na conta do
     vh e o topo nasce com um pedaço cortado embaixo. O vh fica como piso
     para navegador que não conhece a unidade. */
  min-height: 100vh;
  min-height: 100svh;
}
/* Mesmo brilho de marca da profile.css, atrás do herói. */
.lpw-hero::before {
  content: '';
  position: absolute;
  inset: -20% -10% auto -10%;
  height: 70%;
  background: radial-gradient(
    60% 100% at 30% 0%,
    color-mix(in srgb, var(--brand) 30%, transparent),
    transparent 70%
  );
  z-index: 0;
  pointer-events: none;
}
.lpw-hero__inner {
  position: relative;
  z-index: 1;
  display: grid;
  /* Sem `gap`: o respiro entre foto e texto mora no padding do texto, e a
     coluna da foto vai de borda a borda. `gap` aqui abriria uma faixa de
     fundo no meio da sangria. */
  grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr);
  align-items: stretch;
}
.lpw-hero__id {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: var(--space-3);
  /* O respiro da direita é o que sobra da janela até o container de 78rem,
     com um piso de 1.25rem: assim a borda direita do texto do topo cai na
     mesma prumada do texto de todas as outras seções. */
  /* O respiro vertical acompanha a ALTURA da janela, não a largura: num
     notebook de 720px de altura o --lpw-y de 120px em cima e embaixo
     estouraria os 100svh e empurraria a aba para fora da tela. */
  padding: clamp(2.5rem, 8vh, var(--lpw-y)) max(1.25rem, calc((100vw - 78rem) / 2))
    clamp(2.5rem, 8vh, var(--lpw-y)) clamp(1.5rem, 4vw, 3.5rem);
  animation: rise 0.7s var(--ease) backwards;
}
.lpw-hero__actions {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-2);
  margin-top: var(--space-2);
}
.lpw-hero__hint {
  font-size: var(--step--1);
  color: var(--muted);
}

.lpw-hero__media {
  position: relative;
  margin: 0;
  overflow: hidden;
  /* A dissolvida da direita. O 62% guarda o rosto inteiro dentro da parte
     opaca; mexer nesse número é mexer em quanto do retrato aparece. */
  -webkit-mask-image: linear-gradient(90deg, #000 0%, #000 62%, transparent 100%);
  mask-image: linear-gradient(90deg, #000 0%, #000 62%, transparent 100%);
  animation: rise 0.8s var(--ease) 0.1s backwards;
}
/* `absolute`, e não `height: 100%`, e a diferença era um bug visível: o
   <img> vive dentro de um <picture>, que é inline e tem altura automática,
   então o `100%` não resolvia e a imagem assumia o tamanho natural (973px
   de altura). Ela passava a DITAR a altura do topo em vez de preencher a
   coluna: a seção crescia além de 100svh e a aba dourada terminava abaixo
   da dobra, invisível. Fora do fluxo, quem manda na altura é a grade. */
.lpw-hero__media img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 10%;
}
/* Sobra do overlay antigo: só o pé escurecido, para a aba dourada ter
   contraste, e o véu de marca. A dissolvida lateral agora é máscara. */
.lpw-hero__media::after {
  content: '';
  position: absolute;
  inset: 0;
  background:
    linear-gradient(
      180deg,
      rgba(27, 45, 107, 0.04) 0%,
      rgba(17, 30, 74, 0.2) 55%,
      rgba(8, 15, 40, 0.72) 100%
    ),
    linear-gradient(120deg, rgba(245, 168, 0, 0.12), transparent 60%);
}
.lpw-hero__tab {
  position: absolute;
  left: 0;
  bottom: clamp(1.4rem, 5vh, 3rem);
  z-index: 3;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  background: var(--brand);
  color: var(--on-brand);
  font-weight: 800;
  font-size: var(--step--1);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 0.55rem 1rem 0.55rem 1.4rem;
  border-radius: 0 var(--radius-pill) var(--radius-pill) 0;
}

/* ---------- SEÇÃO 2 · os três sintomas ---------- */
.lpw-symptoms {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--lpw-gap-grid);
  margin-top: var(--lpw-gap);
}
.lpw-symptom {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  padding: var(--lpw-card-pad);
  border-radius: var(--radius);
  background: var(--surface);
  border: 1px solid var(--line);
}
/* Numeral em Spectral, como as letras do método: é o mesmo índice de
   dossiê, aplicado a sintoma em vez de etapa. */
.lpw-symptom__n {
  font-family: var(--font-serif);
  font-weight: 700;
  font-size: var(--step-2);
  line-height: 1;
  color: var(--brand);
}
.lpw-symptom__t {
  font-size: var(--step-1);
  font-weight: 700;
  letter-spacing: -0.01em;
  line-height: 1.2;
}
.lpw-symptom__d {
  color: var(--muted);
  text-wrap: pretty;
}

.lpw-turn {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  margin-top: var(--lpw-gap);
  max-width: 64ch;
}
.lpw-turn .rule {
  width: 7rem;
  margin: 0;
}

/* ---------- SEÇÃO 3 · dossiê do método ----------
   Cópia fiel do .casefile da profile.css. Só a letra cresce um passo
   (step-3): na LP este bloco é seção, não rodapé de perfil. */
.lpw-casefile {
  display: grid;
  gap: var(--lpw-gap-grid);
  padding: var(--lpw-block) 0;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
.lpw-casefile__label {
  font-size: var(--step--1);
  font-weight: 800;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--brand);
}
/* Coluna Única, e não as duas de antes: como acordeão, cada etapa é uma
   linha do dossiê que se abre. Em duas colunas o clique de uma mexeria na
   altura da vizinha. */
.lpw-method {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 0;
  /* Medida menor que o contêiner: em 1248px o sinal de + ficava sozinho na
     borda direita, a um palmo do título que ele abre. */
  max-width: 56rem;
}

/* Cada etapa é um <details> nativo: abre sem JS, com teclado e com leitor
   de tela. O fio entre linhas vem do próprio item, e não de `gap`, para o
   acordeão ler como lista de pasta — fechado, é um índice. */
.lpw-step {
  border-top: 1px solid color-mix(in srgb, var(--line) 60%, transparent);
}
.lpw-step:first-of-type {
  border-top: 0;
}

.lpw-step__head {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  padding: var(--space-3) 0;
  cursor: pointer;
  /* Some com o triângulo padrão do navegador nos dois motores: o sinal
     de + é desenhado por nós, alinhado à direita. */
  list-style: none;
}
.lpw-step__head::-webkit-details-marker {
  display: none;
}
.lpw-step__head:hover .lpw-step__t {
  color: var(--brand-bright);
}
.lpw-step__head:focus-visible {
  outline: 2.5px solid var(--brand-bright);
  outline-offset: 3px;
  border-radius: 4px;
}

.lpw-step__k {
  flex: none;
  width: 1.4em;
  font-family: var(--font-serif);
  font-weight: 700;
  font-size: var(--step-3);
  line-height: 1;
  color: var(--brand);
}
.lpw-step__t {
  flex: 1;
  font-weight: 700;
  font-size: var(--step-1);
  letter-spacing: -0.01em;
  transition: color var(--t-fast);
}

/* O sinal é um + que perde a barra vertical ao abrir e vira −. Duas
   linhas num SVG, sem glifo e sem fonte de ícone. */
.lpw-step__sinal {
  flex: none;
  width: 22px;
  height: 22px;
  color: var(--brand);
}
.lpw-step__v {
  transition: opacity var(--t-fast);
}
.lpw-step[open] .lpw-step__v {
  opacity: 0;
}

.lpw-step__d {
  margin: 0;
  padding: 0 0 var(--space-4) calc(1.4em + var(--space-3));
  color: var(--muted);
  max-width: 68ch;
  text-wrap: pretty;
  animation: abre 0.34s var(--ease);
}
/* A abertura ganha um fade curto — `details` não anima altura sozinho, e
   animar altura aqui exigiria medir conteúdo em JS por um ganho pequeno.
   Quem pediu menos movimento já está coberto: o base.css zera duração de
   animação e de transição sob prefers-reduced-motion, para a página toda. */
@keyframes abre {
  from {
    opacity: 0;
    transform: translateY(-4px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
/* O `line-height: 0.7` não é capricho: o 360° é três passos maior que a
   frase em que mora, e a caixa de linha dele esticava o entrelinhamento
   das DUAS linhas do parágrafo. Encolhendo só a caixa do span, o
   parágrafo volta ao ritmo do resto da página e o número continua do
   mesmo tamanho. */
.lpw-360 {
  font-family: var(--font-serif);
  font-size: var(--step-3);
  font-weight: 700;
  line-height: 0.7;
  color: var(--brand);
}

/* ---------- SEÇÃO 4 · a mentoria ---------- */
.lpw-format {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--lpw-gap-grid);
  margin-top: var(--lpw-gap);
}
.lpw-format__item {
  display: flex;
  gap: var(--space-3);
  align-items: flex-start;
  padding: var(--lpw-card-pad);
  border-radius: var(--radius);
  background: var(--surface);
  border: 1px solid var(--line);
}
/* Mesma pastilha de 44px do .link-card__icon da base.css. */
.lpw-format__icon {
  flex: none;
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border-radius: 12px;
  background: color-mix(in srgb, var(--brand) 20%, transparent);
  color: var(--brand-bright);
}
.lpw-format__icon svg {
  width: 22px;
  height: 22px;
}
.lpw-format__body {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
}
.lpw-format__t {
  font-size: var(--step-1);
  font-weight: 700;
  letter-spacing: -0.01em;
  line-height: 1.2;
}
.lpw-format__d {
  color: var(--muted);
  text-wrap: pretty;
}

.lpw-enroll {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3) var(--space-4);
  margin-top: var(--lpw-gap);
  padding-top: var(--lpw-gap);
  border-top: 1px solid var(--line);
}
/* Faixa da turma: rótulo dourado em caixa alta e o valor grande ao lado.
   Fica no topo da seção, antes dos cartões de formato — primeiro quando
   é, depois como é. Colada no botão, como estava antes, lia como legenda
   do botão e não como informação do programa. */
.lpw-turma {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--space-2) var(--space-3);
  margin-top: var(--lpw-gap);
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--surface);
}
.lpw-turma__label {
  font-size: var(--step--1);
  font-weight: 800;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--brand);
}
.lpw-turma__valor {
  font-family: var(--font-display);
  font-size: var(--step-2);
  font-weight: 800;
  letter-spacing: -0.02em;
  line-height: 1;
}

/* ---------- SEÇÃO 5 · para quem é ---------- */
.lpw-fit {
  display: grid;
  grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
  gap: clamp(1.5rem, 4vw, 3.5rem);
  align-items: start;
}
.lpw-fit__list {
  display: flex;
  flex-direction: column;
}
.lpw-fit__item {
  display: flex;
  gap: var(--space-3);
  align-items: flex-start;
  padding: clamp(1rem, 1.6vw, 1.35rem) 0;
  border-bottom: 1px solid var(--line);
  font-size: var(--step-1);
  text-wrap: pretty;
}
.lpw-fit__item:last-child {
  border-bottom: 0;
}
.lpw-fit__item svg {
  flex: none;
  width: 22px;
  height: 22px;
  margin-top: 0.3rem;
  color: var(--brand);
}

.lpw-notfit {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  margin-top: var(--lpw-gap);
  padding: var(--lpw-card-pad);
  border-radius: var(--radius);
  background: var(--surface-2);
  border: 1px solid var(--line);
  max-width: 100%;
}
.lpw-notfit__t {
  font-weight: 700;
  font-size: var(--step-1);
  letter-spacing: -0.01em;
}
.lpw-notfit__d {
  color: var(--muted);
  text-wrap: pretty;
}

/* ---------- SEÇÃO 6 · prova ----------
   A seção deixou de ser pendência inteira: os dois números moram no
   HTML e sobem sempre. Só o depoimento continua nascendo `hidden`.

   Por isso o empilhamento, no lugar das duas colunas auto-fit de
   antes: os números abrem em faixa larga e o depoimento entra embaixo
   quando existir. Assim a metade que ainda pode faltar não deixa a
   faixa encolhida ao lado de um buraco — que era exatamente o que o
   auto-fit resolvia quando as DUAS metades eram pendência. */
.lpw-proof {
  display: grid;
  gap: var(--lpw-gap);
  margin-top: var(--lpw-gap);
}

/* A faixa dos números é o único lugar da página onde o dígito é maior
   que o título da seção, e isso é de propósito: aqui o número É o
   conteúdo, não a legenda dele.

   O halo dourado nasce acima da borda de cima e morre antes da metade
   da faixa. É o que dá volume ao bloco sem acender uma caixa dourada
   no meio de uma página que é navy do começo ao fim. */
.lpw-numbers {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-items: center;
  border: 1px solid var(--line);
  border-radius: var(--radius-l);
  background:
    radial-gradient(125% 130% at 50% -25%, color-mix(in srgb, var(--brand) 14%, transparent) 0%, transparent 62%),
    var(--surface);
  box-shadow: var(--shadow);
}
.lpw-number {
  display: grid;
  gap: clamp(0.5rem, 1vw, 0.9rem);
  justify-items: center;
  text-align: center;
  padding: clamp(1.75rem, 3.6vw, 3rem) clamp(1rem, 2.5vw, 2.25rem);
}
/* O fio do meio é o "|" do dado original ("32 anos | +1100 empresas"),
   desenhado em vez de digitado: no `border` ele acompanha a altura da
   faixa e some sozinho quando os dois empilham no celular. */
.lpw-number + .lpw-number {
  border-left: 1px solid var(--line);
}

.lpw-number__v {
  font-family: var(--font-display);
  font-size: var(--step-5);
  font-weight: 900;
  line-height: 0.85;
  letter-spacing: -0.045em;
  /* Tabular porque o dígito CONTA de zero até o valor (ver a contagem
     no wellington-motion.js): em largura proporcional o 1 é mais
     estreito que o 8 e a faixa inteira treme durante a subida. */
  font-variant-numeric: tabular-nums;
  color: var(--brand);
}
/* O dourado do número é um degradê, e não o chapado do resto da
   página: no corpo de --step-5 o chapado fica plano. Fica atrás de
   @supports porque `color: transparent` sem o recorte apagaria o
   número — e número apagado numa seção de prova é a pior falha
   possível desta página. */
@supports (-webkit-background-clip: text) or (background-clip: text) {
  .lpw-number__v {
    background-image: linear-gradient(176deg, var(--brand-bright) 0%, var(--brand) 55%, color-mix(in srgb, var(--brand) 78%, var(--bg)) 100%);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    -webkit-text-fill-color: transparent;
  }
}
/* O "+" de "+1100" é sinal, não dígito: entra pela metade do corpo e
   no alto, como expoente. Vazio ele não ocupa nada, então o número sem
   sinal (o 32) não ganha respiro à esquerda. */
.lpw-number__pre {
  font-size: 0.5em;
  vertical-align: 0.5em;
  letter-spacing: 0;
}
.lpw-number__l {
  font-size: var(--step--1);
  font-weight: 800;
  /* 0.2em, e não os 0.28em das outras legendas em caixa alta: aqui a
     legenda tem duas palavras e vive sob um número enorme — esticada
     demais ela quebra em três linhas e desmancha a coluna. */
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--muted);
  text-wrap: balance;
}

/* A linha de virada da seção usa a .lpw-note que já existe; daqui sai
   só a medida. */
.lpw-proof .lpw-note {
  max-width: 56ch;
}

/* O depoimento é a única superfície clara da página: papel do dossiê
   (--surface-solid), tinta navy. É o contraste que faz a prova pesar
   mais que o resto — e ele só existe quando há depoimento de verdade. */
.lpw-quote {
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  padding: var(--lpw-block);
  border-radius: var(--radius-l);
  background: var(--surface-solid);
  box-shadow: var(--shadow-lift);
}
.lpw-quote__mark {
  font-family: var(--font-serif);
  font-weight: 700;
  font-size: 3.5rem;
  line-height: 0.6;
  color: var(--brand);
}
/* O depoimento é Montserrat, e não a serif itálica do resto do dossiê:
   é fala de cliente, não voz do método. A serif fica reservada ao que o
   Wellington assina — as letras do método, o 360°, as linhas de virada e
   o carimbo. A aspa dourada continua serif porque ali é ornamento. */
.lpw-quote__text {
  margin: 0;
  font-weight: 500;
  font-size: var(--step-1);
  line-height: 1.5;
  color: color-mix(in srgb, var(--accent-ink) 78%, transparent);
  text-wrap: pretty;
}
.lpw-quote__author {
  font-size: var(--step--1);
  font-weight: 800;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: color-mix(in srgb, var(--accent-ink) 55%, transparent);
}

/* ---------- SEÇÃO 7 · quem examina o seu caso ---------- */
.lpw-who {
  display: grid;
  grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
  gap: clamp(1.5rem, 4vw, 3.5rem);
  align-items: start;
  padding-top: var(--lpw-block);
  border-top: 1px solid var(--line);
}
.lpw-who__text {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  max-width: 64ch;
}
.lpw-who__lead {
  font-size: var(--step-1);
  text-wrap: pretty;
}
.lpw-who__lead strong {
  font-weight: 700;
}
.lpw-who__d {
  color: var(--muted);
  text-wrap: pretty;
}

/* ---------- SEÇÃO 8 · investimento ---------- */
.lpw-price {
  display: grid;
  grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
  gap: clamp(1.5rem, 4vw, 3.5rem);
  align-items: center;
  padding: var(--lpw-block) 0;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
.lpw-price__body {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-4);
  max-width: 60ch;
}

/* ---------- SEÇÃO 9 · chamada final ---------- */
.lpw-close {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--lpw-gap);
  text-align: center;
  padding: var(--lpw-block) 0 var(--lpw-y-lg);
}
.lpw-close__lead {
  font-size: var(--step-2);
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.2;
  max-width: 32ch;
  text-wrap: balance;
}
/* Carimbo: as medidas são as do .seal da profile.css, sem exceção. */
.lpw-seal {
  display: grid;
  place-items: center;
  text-align: center;
  transform: rotate(-7deg);
  margin-top: var(--space-3);
}
.lpw-seal__ring {
  position: relative;
  display: grid;
  place-items: center;
  width: 168px;
  height: 168px;
  border: 2.5px solid var(--brand);
  color: var(--brand);
  border-radius: 50%;
  box-shadow: inset 0 0 0 5px color-mix(in srgb, var(--brand) 30%, transparent);
}
.lpw-seal__ring::after {
  content: '';
  position: absolute;
  inset: 10px;
  border: 1px solid color-mix(in srgb, var(--brand) 45%, transparent);
  border-radius: 50%;
}
.lpw-seal__text {
  font-family: var(--font-serif);
  font-weight: 700;
  font-size: var(--step-1);
  line-height: 1;
}
.lpw-seal__sub {
  font-size: 0.6rem;
  letter-spacing: 0.34em;
  text-transform: uppercase;
  margin-top: 0.4rem;
  color: var(--muted);
}
.lpw-close__last {
  font-family: var(--font-serif);
  font-style: italic;
  font-weight: 500;
  font-size: var(--step-1);
  color: var(--muted);
}

/* ---------- rodapé ----------
   A LP do João não tem link no rodapé de propósito ("rodapé com link é
   rota de fuga"). Aqui tem, e não é contradição: o documento do
   Wellington pede quatro, e três deles são o próprio WhatsApp — a
   mesma ação da página, com outra mensagem. O único que sai da página
   é o Instagram, e ele só aparece quando houver perfil. */
.lpw-foot {
  border-top: 1px solid var(--line);
}
.lpw-foot__inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-4);
  text-align: center;
  padding: var(--lpw-block) 0 var(--space-5);
}
.lpw-foot__brand {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}
.lpw-foot__name {
  font-weight: 800;
  font-size: var(--step-1);
  letter-spacing: -0.01em;
}
.lpw-foot__tag {
  color: var(--muted);
}
.lpw-foot__links {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: var(--space-2) var(--space-3);
}
.lpw-foot__links a {
  color: var(--brand-bright);
  font-weight: 700;
  transition: color var(--t-fast);
}
.lpw-foot__links a:hover {
  color: var(--accent-2);
}
.lpw-foot__sep {
  color: color-mix(in srgb, var(--muted) 50%, transparent);
}
.lpw-foot__legal {
  font-size: var(--step--1);
  color: var(--muted);
}

/* ---------- animação ----------
   Mesmo keyframe da profile.css. Só o topo usa. */
@keyframes rise {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}

/* ============================================================
   Responsivo — a folha é escrita do desktop para baixo (é uma página
   só, e o desktop é onde as colunas existem).

   No celular o retrato vem ANTES do texto — a mesma ordem do HTML, sem
   inversão. É o contrário da LP do João (onde a manchete abre a dobra) e
   igual à página de perfil: aqui o retrato é a apresentação, e a
   dissolvida no pé da faixa emenda a foto direto na manchete.
   ============================================================ */
@media (max-width: 900px) {
  .lpw-hero__inner,
  .lpw-symptoms,
  .lpw-format,
  .lpw-fit,
  .lpw-who,
  .lpw-price {
    grid-template-columns: 1fr;
  }

  /* No celular o topo deixa de ter altura cheia: com uma coluna só, 100svh
     não cabe manchete + apoio + botão + foto sem apertar tudo. */
  .lpw-hero {
    min-height: 0;
  }
  /* Sem `order`: a foto vem primeiro, como está no HTML. */
  .lpw-hero__id {
    padding: clamp(2rem, 7vw, 3rem) clamp(1.25rem, 5vw, 2rem);
  }
  /* A foto vira faixa de largura cheia, e a dissolvida gira para baixo:
     lateral não faz sentido quando ela ocupa a linha inteira.

     O teto de 40svh existe porque aqui ela abre a página: sem ele, num
     celular baixo a faixa empurraria a manchete e o botão para fora da
     primeira dobra. Com `object-fit: cover`, o teto só recorta mais — não
     deforma.

     Largura e altura são as DUAS declaradas, e não `aspect-ratio` com um
     `max-height` por cima — essa dupla era um bug visível. Numa caixa com
     proporção, o teto de altura volta pela proporção e encolhe a LARGURA
     junto: no iPhone SE (375x667) a faixa saía com 333px de 375, e num
     celular deitado (768x500) com 250px de 768. Sobrava fundo à direita da
     foto, e o tamanho da sobra mudava com a altura do aparelho — por isso
     não havia device em que ela ficasse certa. Com as duas medidas
     explícitas não há proporção para consultar: a largura é a linha
     inteira, sempre, e o `min()` faz o teto recortar só a altura. Os 80vw
     são os mesmos 5/4 da largura cheia, escritos como altura.

     Duas linhas de `height`: `svh` só existe do Safari 15.4 em diante, e
     quem não conhece a unidade descarta a segunda e fica com a primeira. */
  .lpw-hero__media {
    width: 100%;
    height: min(80vw, 40vh);
    height: min(80vw, 40svh);
    -webkit-mask-image: linear-gradient(180deg, #000 0%, #000 72%, transparent 100%);
    mask-image: linear-gradient(180deg, #000 0%, #000 72%, transparent 100%);
  }
  .lpw-hero__media img {
    object-position: 50% 12%;
  }
  .lpw-h2 {
    max-width: none;
    margin-top: var(--space-3);
  }
}

@media (max-width: 640px) {
  /* Botão de largura cheia no celular, como pede o padrão das LPs
     deste portal. Continua `inline-flex` porque o CTA carrega ícone;
     quem estica é a largura, não o display. */
  .lpw-cta {
    width: 100%;
  }
  .lpw-hero__actions,
  .lpw-price__body {
    align-self: stretch;
    align-items: stretch;
  }
  .lpw-symptom,
  .lpw-quote {
    padding: var(--space-4);
  }

  /* Os dois números empilham: lado a lado, "+1100" em --step-5 não cabe
     em meia tela de celular — passaria por cima do fio do meio. O fio
     gira junto e vira a divisa horizontal entre os dois. */
  .lpw-numbers {
    grid-template-columns: minmax(0, 1fr);
  }
  .lpw-number + .lpw-number {
    border-left: 0;
    border-top: 1px solid var(--line);
  }
}
