/* landing-mobile.css — landing reformulada, camada MOBILE (< 900px).
 *
 * ── Por que uma camada separada ───────────────────────────────────────────
 * O handoff é mobile-only, por decisão explícita de design ("não existe versão
 * desktop: foi adiada"). A landing atual, por outro lado, tem desktop resolvido
 * (grade de preços em 3 colunas, hero em duas colunas, 12 media queries em
 * landing.css). Misturar as duas produziria um híbrido que ninguém desenhou.
 *
 * Então: DUAS árvores no DOM, uma visível de cada vez, sem sobreposição de
 * regras. `.lpm-only` aparece abaixo de 900px; `.lpd-only` (a landing atual)
 * aparece a partir de 900px. Nenhuma regra deste arquivo vaza para o desktop —
 * tudo mora dentro do @media do fim.
 *
 * ── Tokens ────────────────────────────────────────────────────────────────
 * O TOKENS.md do handoff foi DESCARTADO: seus hex batem 100% com
 * design-system-v1-backup, não com o design system real (14 de 36 divergem).
 * O mapeamento aqui é por INTENÇÃO contra colors_and_type.css:
 *
 *   handoff    intenção                    token real
 *   #FAFAF8    fundo da página             --bg              (#FBFBF9)
 *   #FFFFFF    telas/cards brancos         --bg-deep         (#FFFFFF)
 *   #F4F2FF    "well" lavanda              --surface-2       (#F5F4FB)   ⚠
 *   #E8E4F8    borda hairline              --border          (#EEECF7)
 *   #DCD6F2    borda forte / ponto inativo --border-strong   (#E1DDF2)
 *   #1A1040    texto primário              --fg              (#17122E)
 *   #6B6880    texto secundário            --fg-2            (#6E6B84)
 *   #9D9AB0    meta / overline mudo        --fg-3            (#A5A2B8)
 *   #ECEAFB    trilho de progresso         --track-bg        (#E9E7F4)
 *   #E6B450    estrela de avaliação        --gold-400        (#C9932C)   ⚠
 *
 * ⚠ --surface NÃO serve para os wells: no sistema real ele é #FFFFFF, e o well
 *   ficaria branco sobre card branco. Por isso --surface-2.
 * ⚠ --gold-400 escureceu de #E6B450 para #C9932C — única diferença visível a
 *   olho em relação à referência de design.
 *
 * A rampa periwinkle é IDÊNTICA entre v1 e v2, então tudo que é periwinkle
 * (--primary, --primary-hover, --periwinkle-*) casa exatamente com o desenho.
 */

/* ── Troca de camada ──────────────────────────────────────────────────────
 * O padrão (fora de qualquer media query) é DESKTOP: a camada mobile nasce
 * escondida. Sem esta regra base, `.lpm-only` seria um <div> comum acima de
 * 900px e as DUAS árvores apareceriam empilhadas no desktop.
 * Só o @media abaixo inverte o par — nenhuma regra vale nas duas faixas. */
.lpm-only { display: none; }

@media (max-width: 899.98px) {

  .lpd-only { display: none !important; }
  .lpm-only { display: block; }

  body.lp-body { background: var(--bg); }

  /* ── Primitivas compartilhadas pelas 7 seções ─────────────────────────── */
  .lpm-sec { padding: 52px 20px 48px; }
  .lpm-sec--branca { background: var(--bg-deep); border-top: 1px solid var(--border); }
  .lpm-sec--lavanda { background: var(--surface-2); }
  .lpm-sec--bg { background: var(--bg); }
  /* Gradiente do trilho de pilares: sangra até a borda, então padding só em cima/baixo. */
  .lpm-sec--pilares {
    padding: 52px 0 40px;
    background: linear-gradient(180deg, var(--bg-deep), var(--surface-2) 40%, var(--bg));
  }

  /* A nav é fixa no topo: sem esta folga, pular por âncora (#precos-m) deixa o
     overline e parte do H2 escondidos atrás dela. */
  .lpm-only [id] { scroll-margin-top: 88px; }

  .lpm-cabeca { text-align: center; }
  .lpm-overline {
    font-family: var(--font-ui); font-size: 11px; font-weight: 700;
    letter-spacing: .08em; text-transform: uppercase; color: var(--primary);
  }
  .lpm-h2 {
    font-family: var(--font-display); font-size: 31px; line-height: 1.1;
    letter-spacing: -.015em; font-weight: 700; color: var(--fg);
    margin: 12px 0 0; text-wrap: pretty;
  }
  .lpm-lead {
    font-family: var(--font-ui); font-size: 15px; line-height: 1.6;
    color: var(--fg-2); margin: 14px 0 0; text-wrap: pretty;
  }
  .lpm-well {
    background: var(--surface-2); border: 1px solid var(--border);
    border-radius: 20px; padding: 14px;
  }
  .lpm-card-branco { background: var(--bg-deep); border-radius: 16px; padding: 14px; }
  .lpm-ico { display: inline-flex; flex: 0 0 auto; }
  .lpm-ico svg { display: block; }

  /* Trilhos horizontais: barra de rolagem escondida, snap nativo. */
  .lpm-trilho {
    display: flex; overflow-x: auto; scroll-snap-type: x mandatory;
    -ms-overflow-style: none; scrollbar-width: none;
  }
  .lpm-trilho::-webkit-scrollbar { height: 0; width: 0; }

  .lpm-pontos { display: flex; justify-content: center; gap: 7px; margin-top: 10px; }
  .lpm-ponto { width: 8px; height: 8px; border-radius: var(--radius-pill); background: var(--border-strong); }
  .lpm-ponto.is-ativo { background: var(--primary); }

  .lpm-cta {
    display: flex; align-items: center; justify-content: center; width: 100%;
    background: var(--primary); color: var(--fg-on-primary);
    font-family: var(--font-ui); font-size: 15px; font-weight: 700;
    padding: 15px; border: none; border-radius: var(--radius-pill);
    box-shadow: 0 4px 0 var(--periwinkle-400); cursor: pointer; text-decoration: none;
  }
  .lpm-cta:active { transform: translateY(2px); box-shadow: 0 2px 0 var(--periwinkle-400); }

  /* ── Seção 1 · Hero ───────────────────────────────────────────────────── */
  /* .lp-nav é `position: fixed` (fora do fluxo), 67px de altura medida a
     375–390px — os 26px que este bloco tinha antes deixavam o H1 21px por
     baixo dela. O valor original veio direto do handoff, onde não havia uma
     nav real sobreposta; como o hero é a PRIMEIRA seção da página, é o único
     lugar do mobile que precisa compensar essa altura (as demais seções vêm
     depois do hero, já com folga). O desktop já faz o equivalente
     (.lp-hero: padding 150px, bem acima da nav de lá) — só o mobile não tinha
     recebido o mesmo ajuste. 91px = 67px de nav + ~24px de respiro. */
  .lpm-hero { padding: 91px 20px 40px; background: var(--grad-atmos-hero); text-align: center; }
  .lpm-hero-logo { width: 132px; height: auto; display: block; margin: 0 auto; }
  .lpm-h1 {
    font-family: var(--font-display); font-size: 41px; line-height: 1.06;
    letter-spacing: -.02em; font-weight: 700; color: var(--fg);
    margin: 20px 0 0; text-wrap: pretty;
  }
  .lpm-h1 span { color: var(--primary); }
  .lpm-hero-sub { font-family: var(--font-ui); font-size: 16px; line-height: 1.6; color: var(--fg-2); margin: 16px 0 0; }
  .lpm-hero-acoes { display: flex; flex-direction: column; gap: 10px; margin-top: 24px; }
  .lpm-btn-2 {
    display: flex; align-items: center; justify-content: center; width: 100%;
    background: var(--surface-2); color: var(--fg); border: 1px solid var(--border);
    font-family: var(--font-ui); font-size: 15px; font-weight: 700;
    padding: 14px; border-radius: var(--radius-pill); text-decoration: none;
  }
  .lpm-hero-nota { font-family: var(--font-ui); font-size: 12px; color: var(--fg-3); margin: 12px 0 0; }

  /* O mockup (.lp-phone e afins) é COMPARTILHADO com o desktop antigo — ver o
     comentário no HTML sobre por que reaproveitar as classes é seguro. Mas
     landing.css tem `@media (max-width: 980px) { .lp-phone { width: 280px;
     height: 578px; } }`, pensada para o hero de DUAS COLUNAS do desktop
     (900–980px, onde o phone precisa encolher pra caber ao lado do texto).
     Nessa altura reduzida o conteúdo da tela — que usa px fixos, não escala —
     não cabe mais: medido, precisa de 672px e só sobram 554px. O CTA "Concluir
     leitura de hoje" e o toast "Dia concluído" ficam cortados por baixo do
     `overflow:hidden` da tela. Isso já era um bug latente do desktop entre
     900–980px (confirmado: mesmo corte lá, sem nenhuma mudança minha); aqui
     vira o tamanho PADRÃO em todo mobile, por isso apareceu agora.
     Mobile é coluna única — não tem a disputa de espaço que motivou o
     encolhimento — então volta ao tamanho cheio (320×660), que mede 636px de
     conteúdo para 636px disponíveis: cabe exato, sem sobrar corte. Escopado só
     em .lpm-hero para não tocar no desktop (900–980px permanece como estava;
     esse bug ali é pré-existente e separado deste). */
  .lpm-hero .lp-phone { width: 320px; height: 660px; }

  /* ── Seção 2 · Como funciona (TIMELINE — direção escolhida) ───────────── */
  .lpm-tl { position: relative; margin-top: 32px; padding-left: 38px; text-align: left; }
  .lpm-tl-espinha {
    position: absolute; left: 15px; top: 14px; bottom: 26px; width: 2px;
    background: linear-gradient(180deg, var(--primary), var(--periwinkle-200) 60%, var(--periwinkle-50));
  }
  .lpm-passo { position: relative; padding-bottom: 28px; }
  .lpm-passo:last-child { padding-bottom: 0; }
  .lpm-passo-n {
    position: absolute; left: -38px; top: 0; width: 32px; height: 32px;
    border-radius: var(--radius-pill); background: var(--primary); color: var(--fg-on-primary);
    font-family: var(--font-ui); font-size: 14px; font-weight: 700;
    display: flex; align-items: center; justify-content: center;
    box-shadow: 0 0 0 4px var(--bg-deep);
  }
  .lpm-passo-rot {
    font-family: var(--font-ui); font-size: 10px; font-weight: 700;
    letter-spacing: .08em; text-transform: uppercase; color: var(--fg-3);
  }
  .lpm-h3 { font-family: var(--font-display); font-size: 21px; line-height: 1.18; font-weight: 700; color: var(--fg); margin: 6px 0; }
  .lpm-p { font-family: var(--font-ui); font-size: 14px; line-height: 1.55; color: var(--fg-2); margin: 0 0 14px; }

  .lpm-abas { display: flex; gap: 6px; margin-bottom: 12px; }
  .lpm-aba {
    display: flex; align-items: center; gap: 6px; padding: 8px 12px;
    font-family: var(--font-ui); font-size: 12px; font-weight: 500; color: var(--fg-2);
    border-radius: var(--radius-pill);
  }
  .lpm-aba.is-ativa {
    background: var(--bg-deep); font-weight: 700; color: var(--fg);
    box-shadow: 0 1px 4px rgba(58,52,120,.06);
  }
  .lpm-aba.is-ativa .lpm-ico { color: var(--primary); }
  .lpm-aba .lpm-ico { color: var(--fg-3); }
  .lpm-frase { font-family: var(--font-read); font-style: italic; font-size: 14px; line-height: 1.55; color: var(--fg); margin: 0; }
  .lpm-frase-rod { display: flex; align-items: center; justify-content: space-between; margin-top: 12px; }
  .lpm-dica { font-family: var(--font-ui); font-size: 11px; color: var(--fg-3); }
  .lpm-enviar {
    width: 26px; height: 26px; border-radius: var(--radius-pill); background: var(--periwinkle-50);
    display: flex; align-items: center; justify-content: center; color: var(--primary);
  }
  .lpm-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
  .lpm-chip {
    font-family: var(--font-ui); font-size: 11px; color: var(--fg-2);
    background: var(--bg-deep); border: 1px solid var(--border);
    border-radius: var(--radius-pill); padding: 6px 10px;
  }
  .lpm-chip.is-sel { color: var(--fg); font-weight: 600; background: var(--periwinkle-50); border-color: var(--periwinkle-100); }

  .lpm-ritmos { display: flex; flex-direction: column; gap: 8px; }
  .lpm-ritmo {
    display: flex; align-items: center; gap: 10px;
    background: var(--bg-deep); border-radius: 14px; padding: 11px 12px;
  }
  .lpm-ritmo.is-sel {
    border: 1.5px solid var(--primary);
    box-shadow: 0 8px 22px rgba(123,127,232,.18);
  }
  .lpm-ritmo-ico { width: 30px; height: 30px; border-radius: 10px; display: flex; align-items: center; justify-content: center; flex: 0 0 auto; }
  .lpm-ritmo-ico--calmo { background: var(--success-bg); color: var(--success); }
  .lpm-ritmo-ico--medio { background: var(--periwinkle-50); color: var(--primary); }
  .lpm-ritmo-ico--forte { background: #FFE6DC; color: var(--ember-400); }
  .lpm-ritmo-txt { flex: 1; min-width: 0; }
  .lpm-ritmo-nome { display: block; font-family: var(--font-ui); font-size: 14px; font-weight: 700; color: var(--fg); }
  .lpm-ritmo-cap { display: block; font-family: var(--font-ui); font-size: 11px; color: var(--fg-2); }
  .lpm-ritmo-dias { display: block; font-family: var(--font-display); font-size: 17px; font-weight: 700; color: var(--fg); }
  .lpm-ritmo.is-sel .lpm-ritmo-dias { color: var(--primary-hover); }
  .lpm-ritmo-ate { display: block; font-family: var(--font-ui); font-size: 11px; color: var(--fg-3); }
  .lpm-tag-mini {
    display: inline-block; margin-top: 5px; font-family: var(--font-ui); font-size: 9px;
    font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
    color: var(--primary-hover); background: var(--periwinkle-50); padding: 4px 7px;
    border-radius: var(--radius-pill);
  }

  .lpm-plano-topo { display: flex; align-items: center; justify-content: space-between; }
  .lpm-tag-foco {
    font-family: var(--font-ui); font-size: 9px; font-weight: 700; letter-spacing: .08em;
    text-transform: uppercase; color: var(--primary-hover); background: var(--periwinkle-50);
    padding: 5px 8px; border-radius: var(--radius-pill);
  }
  .lpm-plano-tit { font-family: var(--font-display); font-size: 19px; font-weight: 700; color: var(--fg); margin: 10px 0 3px; }
  .lpm-plano-meta { font-family: var(--font-ui); font-size: 12px; color: var(--fg-2); margin: 0 0 10px; }
  .lpm-barra { height: 7px; border-radius: var(--radius-pill); background: var(--track-bg); overflow: hidden; }
  .lpm-barra i { display: block; height: 100%; border-radius: var(--radius-pill); background: var(--grad-xp); }
  .lpm-leitura {
    display: flex; align-items: center; gap: 10px; background: var(--bg-deep);
    border-radius: 14px; padding: 11px 12px; margin-top: 8px;
  }
  .lpm-leitura.is-fraca { background: var(--surface-2); opacity: .6; margin-top: 6px; }
  .lpm-leitura-dia { font-family: var(--font-display); font-size: 14px; font-weight: 700; color: var(--primary-hover); }
  .lpm-leitura.is-fraca .lpm-leitura-dia { color: var(--fg-3); }
  .lpm-leitura-ref { flex: 1; font-family: var(--font-ui); font-size: 14px; font-weight: 500; color: var(--fg); }
  .lpm-leitura.is-fraca .lpm-leitura-ref { color: var(--fg-2); }
  .lpm-leitura-min { font-family: var(--font-ui); font-size: 11px; color: var(--fg-3); }

  /* ── Seção 3 · Três pilares (TRILHO + 9 bullets recuperados) ──────────── */
  .lpm-pilares { gap: 14px; padding: 24px 20px 8px; }
  .lpm-pilar {
    flex: 0 0 300px; scroll-snap-align: center;
    background: var(--bg-deep); border: 1px solid var(--border); border-radius: 24px;
    padding: 20px; box-shadow: 0 12px 30px rgba(26,16,64,.07);
    display: flex; flex-direction: column;
  }
  .lpm-pilar-ico {
    width: 38px; height: 38px; border-radius: 12px; background: var(--periwinkle-50);
    display: flex; align-items: center; justify-content: center; color: var(--primary);
  }
  .lpm-pilar-h3 { font-family: var(--font-display); font-size: 22px; line-height: 1.15; font-weight: 700; color: var(--fg); margin: 14px 0 8px; }
  .lpm-pilar-p { font-family: var(--font-ui); font-size: 14px; line-height: 1.55; color: var(--fg-2); margin: 0 0 12px; }
  /* Os 9 bullets: recuperados da variante empilhada por decisão de produto — o
     argumento não pode depender de arrastar o trilho. */
  .lpm-bullets { list-style: none; margin: 0 0 14px; padding: 0; display: flex; flex-direction: column; gap: 8px; }
  .lpm-bullets li {
    display: flex; gap: 8px; font-family: var(--font-ui); font-size: 13px;
    line-height: 1.45; color: var(--fg-2);
  }
  .lpm-bullets .lpm-ico { color: var(--success); margin-top: 2px; }
  /* margin-top:auto alinha os wells entre cards de texto desigual. */
  .lpm-pilar-well { margin-top: auto; background: var(--surface-2); border-radius: 18px; padding: 12px; }

  .lpm-tag-premium {
    font-family: var(--font-ui); font-size: 9px; font-weight: 700; letter-spacing: .08em;
    text-transform: uppercase; color: var(--fg-on-primary); background: var(--primary);
    padding: 5px 8px; border-radius: var(--radius-pill);
  }
  .lpm-meta-linha { display: flex; align-items: center; gap: 10px; font-family: var(--font-ui); font-size: 12px; color: var(--fg-2); margin-top: 8px; }
  .lpm-meta-linha .lpm-ico { color: var(--fg-3); }
  .lpm-estrela { margin-left: auto; display: inline-flex; align-items: center; gap: 3px; color: var(--gold-400); font-weight: 700; }
  .lpm-reflexao { font-family: var(--font-read); font-style: italic; font-size: 15px; line-height: 1.62; color: var(--fg); margin: 10px 0 12px; }
  .lpm-autor { display: flex; align-items: center; gap: 10px; }
  .lpm-autor-av {
    width: 32px; height: 32px; border-radius: var(--radius-pill); flex: 0 0 auto;
    background: var(--grad-primary); color: var(--fg-on-primary);
    font-family: var(--font-display); font-size: 12px; font-weight: 700;
    display: flex; align-items: center; justify-content: center;
  }
  .lpm-autor-nome { display: block; font-family: var(--font-ui); font-size: 13px; font-weight: 700; color: var(--fg); }
  .lpm-autor-obra { display: block; font-family: var(--font-ui); font-size: 11px; color: var(--fg-2); }
  .lpm-streak { display: flex; align-items: center; gap: 10px; background: var(--bg-deep); border-radius: 14px; padding: 12px; margin-top: 8px; }
  .lpm-streak .lpm-ico { color: var(--ember-400); }
  .lpm-streak-n { display: block; font-family: var(--font-ui); font-size: 14px; font-weight: 700; color: var(--fg); }
  .lpm-streak-d { display: block; font-family: var(--font-ui); font-size: 12px; color: var(--fg-2); }
  .lpm-marco { display: flex; align-items: center; gap: 10px; background: var(--bg-deep); border-radius: 14px; padding: 12px; margin-top: 8px; }
  .lpm-marco img { width: 30px; height: 30px; border-radius: var(--radius-pill); object-fit: cover; flex: 0 0 auto; }
  .lpm-chip-ambar {
    font-family: var(--font-ui); font-size: 9px; font-weight: 700; letter-spacing: .08em;
    text-transform: uppercase; color: var(--warning); background: var(--warning-bg);
    padding: 5px 8px; border-radius: var(--radius-pill);
  }

  /* ── Seção 4 · Grupos (EDITORIAL + 3 provas recuperadas) ──────────────── */
  .lpm-grupo-bloco { background: var(--surface-2); border: 1px solid var(--border); border-radius: 24px; padding: 18px; margin-top: 26px; text-align: left; }
  .lpm-grupo-topo { display: flex; align-items: center; gap: 12px; }
  .lpm-pilha { display: flex; flex: 0 0 auto; }
  .lpm-pilha > * {
    width: 34px; height: 34px; border-radius: var(--radius-pill); flex: 0 0 auto;
    border: 2px solid var(--surface-2); object-fit: cover;
    font-family: var(--font-ui); font-size: 12px; font-weight: 700;
    display: flex; align-items: center; justify-content: center;
  }
  .lpm-pilha > * + * { margin-left: -10px; }
  .lpm-av-1 { background: var(--periwinkle-400); color: var(--fg-on-primary); }
  .lpm-av-2 { background: var(--periwinkle-200); color: var(--periwinkle-800); }
  .lpm-av-mais { background: var(--bg-deep); color: var(--fg-2); font-size: 11px; }
  .lpm-grupo-nome { display: block; font-family: var(--font-display); font-size: 19px; font-weight: 700; color: var(--fg); }
  .lpm-grupo-plano { display: block; font-family: var(--font-ui); font-size: 12px; color: var(--fg-2); }
  .lpm-progressos { display: flex; flex-direction: column; gap: 12px; margin-top: 18px; }
  .lpm-prog-topo { display: flex; align-items: baseline; justify-content: space-between; font-family: var(--font-ui); font-size: 14px; margin-bottom: 6px; }
  .lpm-prog-nome { font-weight: 700; color: var(--fg); }
  .lpm-prog-dia { font-size: 12px; color: var(--fg-2); }
  .lpm-prog.is-voce .lpm-prog-nome,
  .lpm-prog.is-voce .lpm-prog-dia { color: var(--primary-hover); font-weight: 700; }
  .lpm-prog-barra { height: 9px; border-radius: var(--radius-pill); background: var(--bg-deep); overflow: hidden; }
  .lpm-prog-barra i { display: block; height: 100%; background: var(--grad-xp); }
  .lpm-feed {
    background: var(--bg-deep); border: 1px solid var(--border); border-radius: 24px;
    padding: 20px; margin-top: 14px; box-shadow: 0 12px 30px rgba(26,16,64,.07); text-align: left;
  }
  .lpm-feed-cit { font-family: var(--font-read); font-style: italic; font-size: 18px; line-height: 1.6; color: var(--fg); margin: 12px 0; }
  /* As 3 provas: recuperadas da variante com mockup por decisão de produto — o
     editorial só conservava uma delas num parágrafo. */
  .lpm-provas { display: flex; flex-direction: column; gap: 10px; margin-top: 18px; text-align: left; }
  .lpm-prova {
    display: flex; gap: 10px; font-family: var(--font-ui); font-size: 14px;
    line-height: 1.5; color: var(--fg-2);
  }
  .lpm-prova .lpm-ico { color: var(--primary); margin-top: 2px; }

  /* ── Seção 5 · Depoimentos ────────────────────────────────────────────── */
  .lpm-deps { gap: 12px; padding: 24px 20px 8px; }
  .lpm-dep {
    flex: 0 0 calc(100% - 8px); scroll-snap-align: center;
    background: var(--bg-deep); border: 1px solid var(--border); border-radius: 24px;
    padding: 22px; text-align: left;
  }
  .lpm-dep-cit { font-family: var(--font-read); font-style: italic; font-size: 16px; line-height: 1.65; color: var(--fg); margin: 0 0 16px; }
  .lpm-dep-quem { display: flex; align-items: center; gap: 12px; }
  .lpm-dep-av {
    width: 36px; height: 36px; border-radius: var(--radius-pill); flex: 0 0 auto;
    background: var(--grad-primary); color: var(--fg-on-primary);
    font-family: var(--font-ui); font-size: 13px; font-weight: 700;
    display: flex; align-items: center; justify-content: center;
  }
  .lpm-dep-nome { display: block; font-family: var(--font-ui); font-size: 14px; font-weight: 700; color: var(--fg); }
  .lpm-dep-metr { display: block; font-family: var(--font-ui); font-size: 12px; color: var(--fg-2); }

  /* ── Seção 6 · Preços ─────────────────────────────────────────────────── */
  .lpm-ciclo-wrap { display: flex; justify-content: center; margin-top: 22px; }
  .lpm-ciclo {
    display: inline-flex; gap: 4px; background: var(--surface-2);
    border: 1px solid var(--border); border-radius: var(--radius-pill); padding: 4px;
  }
  .lpm-ciclo-opt {
    border: none; background: none; cursor: pointer; font-family: var(--font-ui);
    font-size: 13px; font-weight: 600; color: var(--fg-2);
    padding: 8px 18px; border-radius: var(--radius-pill);
    display: inline-flex; align-items: center; gap: 8px;
  }
  .lpm-ciclo-opt.ativo { background: var(--bg-deep); color: var(--fg); box-shadow: 0 2px 8px rgba(26,16,64,.08); }
  .lpm-eco {
    font-size: 11px; font-weight: 700; letter-spacing: .04em;
    background: var(--success-bg); color: var(--success);
    padding: 2px 8px; border-radius: var(--radius-pill);
  }
  .lpm-planos { display: flex; flex-direction: column; gap: 14px; margin-top: 24px; text-align: left; }
  .lpm-plano {
    background: var(--bg-deep); border: 1px solid var(--border); border-radius: 24px;
    padding: 22px; position: relative;
  }
  .lpm-plano.is-destaque { border: 1.5px solid var(--primary); box-shadow: 0 12px 30px rgba(123,127,232,.16); }
  .lpm-plano-pop {
    position: absolute; top: -12px; left: 50%; transform: translateX(-50%);
    background: var(--primary); color: var(--fg-on-primary);
    font-family: var(--font-ui); font-size: 10px; font-weight: 700;
    letter-spacing: .08em; text-transform: uppercase;
    padding: 6px 14px; border-radius: var(--radius-pill); white-space: nowrap;
  }
  .lpm-plano-rot { font-family: var(--font-ui); font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--primary); }
  .lpm-preco { font-family: var(--font-display); font-size: 34px; font-weight: 700; color: var(--fg); margin: 10px 0 0; display: flex; align-items: baseline; gap: 4px; }
  .lpm-preco small { font-family: var(--font-ui); font-size: 14px; font-weight: 500; color: var(--fg-2); }
  .lpm-equiv { font-family: var(--font-ui); font-size: 12px; color: var(--fg-2); min-height: 1em; margin-top: 2px; }
  .lpm-plano-lista { list-style: none; margin: 16px 0 18px; padding: 0; display: flex; flex-direction: column; gap: 9px; }
  .lpm-plano-lista li { display: flex; gap: 9px; font-family: var(--font-ui); font-size: 13px; line-height: 1.45; color: var(--fg-2); }
  .lpm-plano-lista .lpm-ico { color: var(--success); margin-top: 2px; }

  /* ── Seção 7 · CTA final ──────────────────────────────────────────────── */
  .lpm-final { padding: 56px 20px 60px; background: var(--bg); text-align: center; border-top: 1px solid var(--border); }
  .lpm-final img { width: 96px; height: auto; display: block; margin: 0 auto; }
  .lpm-final-h2 { font-family: var(--font-display); font-size: 33px; line-height: 1.08; font-weight: 700; color: var(--fg); margin: 22px 0 0; }

  /* ── Entrada suave (equivalente ao data-reveal do handoff) ────────────── */
  .lpm-only [data-reveal] {
    opacity: 0; transform: translateY(14px);
    transition: opacity 620ms var(--ease-out), transform 620ms var(--ease-out);
  }
  .lpm-only [data-reveal].is-visivel { opacity: 1; transform: none; }
}

/* Quem pede menos movimento recebe a seção inteira, estática e completa.
   Fora do @media de largura de propósito: a preferência vale em qualquer
   viewport, e uma media query aninhada aqui não alcançaria o desktop. */
@media (prefers-reduced-motion: reduce) {
  .lpm-only [data-reveal] { opacity: 1 !important; transform: none !important; transition: none !important; }
  .lpm-cta:active { transform: none; }
}
