/* site/site.css — A CARA DO PARK VISION NA WEB.
   ═══════════════════════════════════════════════════════════════════════════════
   A IDEIA: O SITE É O APLICATIVO, EM TELA GRANDE.

   A versão anterior tinha personalidade própria — asfalto, faixa amarela de garagem,
   tipografia de placa. Bonita, e errada pelo motivo mais caro que existe: quem lia o
   site e instalava o app achava que tinha baixado outro produto. Marca não é enfeite
   de página, é reconhecimento: a pessoa precisa chegar no balcão, abrir o app e ver o
   mesmo lugar de onde ela decidiu comprar.

   Então a identidade daqui é, literalmente, a do aplicativo (src/index.css e
   tailwind.config.js), copiada sem tirar nem pôr:

     · FUNDO NOTURNO (#0a1020) — o app vive num balcão, muitas vezes sob luz fraca e
       com a tela ligada o dia inteiro. Escuro não é moda: é conforto de olho.
     · CIANO (#00e0ff) — a cor de tudo que é ação e dado vivo. Aparece pouco e sempre
       significando a mesma coisa, como no app.
     · CARTÃO SOBRE FUNDO — superfície um tom acima, borda de 1px e canto largo. É a
       peça que forma cada tela do aplicativo.
     · RÓTULO EM MONOESPAÇADA (JetBrains Mono, caixa alta, bem espaçado) — o mesmo
       rótulo dos cartões do app.
     · TIPOGRAFIA: Inter, do texto ao título. No app o peso faz o trabalho que outra
       fonte faria; aqui é igual (800 nos títulos, -3% de entreletra).

   O verde-menta continua sendo "deu certo", o coral "atenção" e o âmbar "cuidado" —
   os mesmos três do app, nos mesmos lugares.
   ═══════════════════════════════════════════════════════════════════════════════ */

:root{
  /* ── a paleta do aplicativo (tema padrão) ── */
  --bg:#0a1020;
  --surface:#111a2e;
  --surface2:#16223c;
  --line:#223052;
  --accent:#00e0ff;
  --accentlight:#7defff;
  --onaccent:#04131a;
  --ink:#e7ecf5;
  --ink2:#8a94ad;
  --title:#a9b4d8;
  --coral:#fb7185;
  --amber:#fbbf24;
  --mint:#34d399;

  /* ── nomes antigos, mantidos vivos ──
     As páginas de dentro (termos, obrigado, acesso…) escrevem em cima destes nomes.
     Em vez de caçar cada uso, cada um passa a apontar pra cor equivalente do app —
     a identidade troca inteira num arquivo só. */
  --asfalto:var(--bg);
  --asfalto2:var(--surface2);
  --concreto:var(--bg);
  --concreto2:var(--surface2);
  --faixa:var(--accent);
  --faixa-forte:var(--accentlight);
  --ferrugem:var(--coral);
  --verde:var(--mint);
  --acento-texto:var(--accent);

  --max:1280px;
  --r:20px;               /* canto do cartão, igual ao do app */
  --r-sm:14px;
}

*{box-sizing:border-box}
/* O sistema precisa saber que aqui é escuro: sem isto ele desenha a barra de rolagem, o
   cursor de texto e os controles nativos claros, no meio de uma página noturna. */
html{scroll-behavior:smooth;color-scheme:dark}
/* Âncora não pode nascer embaixo do cabeçalho grudento — a pessoa clica em "Planos" e cai
   com o título escondido atrás da barra. */
section[id],div[id]{scroll-margin-top:84px}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
html,body{margin:0;padding:0}
body{
  background:var(--bg);color:var(--ink);
  font-family:Inter,system-ui,-apple-system,sans-serif;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
  font-size:16px;line-height:1.6;
  padding-bottom:76px; /* espaço da barra fixa do celular */
}
img{max-width:100%;display:block}
a{color:inherit}

/* FOCO VISÍVEL PRA QUEM USA TECLADO. `:focus-visible` só desenha quando o foco veio do Tab —
   clicar com o mouse continua limpo. */
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{
  outline:2px solid var(--accent);outline-offset:3px;border-radius:10px;
}

/* PULAR PRO CONTEÚDO — o primeiro Tab de quem navega por teclado ou leitor de tela. Fica
   escondido até receber foco, e aí aparece no alto, como um botão de verdade. */
.pular{
  position:absolute;top:-100px;inset-inline-start:16px;z-index:100;
  background:var(--accent);color:var(--onaccent);font-weight:700;font-size:14px;
  padding:12px 18px;border-radius:0 0 var(--r-sm) var(--r-sm);text-decoration:none;
  transition:top .18s ease;
}
.pular:focus{top:0}

/* Toque de celular: sem espera de duplo-toque e sem o flash cinza do Android. */
a,button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}

/* O fundo do app não é preto chapado: tem profundidade. Dois halos fixos, um ciano no
   alto e um menta lá embaixo, dão a mesma sensação sem custar requisição nenhuma. */
body:before{
  content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(900px 520px at 82% -6%, color-mix(in srgb,var(--accent) 13%,transparent), transparent 70%),
    radial-gradient(760px 460px at 4% 104%, color-mix(in srgb,var(--mint) 8%,transparent), transparent 70%);
}

/* ── tipografia ──────────────────────────────────────────────────────────────
   Uma família só, como no app: o peso e o tamanho fazem a hierarquia.
   Mono só nos rótulos — que é onde o app usa mono também. */
h1,h2,h3,.display{font-family:Inter,system-ui,sans-serif;font-weight:800;letter-spacing:-.03em;line-height:1.05;margin:0;color:var(--ink);text-wrap:balance}
h1{font-size:clamp(33px,7.2vw,68px)}
h2{font-size:clamp(25px,4.8vw,44px)}
h3{font-size:19px;letter-spacing:-.02em}
p{margin:0;text-wrap:pretty}

.rotulo{
  font-family:'JetBrains Mono',ui-monospace,monospace;font-size:10.5px;font-weight:600;
  text-transform:uppercase;letter-spacing:.2em;color:var(--accent);
  display:inline-flex;align-items:center;gap:10px;margin:0;
}
.rotulo:before{content:'';width:22px;height:1px;background:color-mix(in srgb,var(--accent) 60%,transparent)}
.rotulo.claro{color:var(--accent)}

/* A palavra marcada: no app o realce é a cor do destaque com um brilho leve, nunca
   uma tarja por trás do texto. */
.grifo,.grifo-escuro{
  color:var(--accent);background:none;font-style:normal;
  text-shadow:0 0 26px color-mix(in srgb,var(--accent) 40%,transparent);
}

.wrap{width:100%;max-width:var(--max);margin:0 auto;padding:0 20px}
section{padding:60px 0}
@media(min-width:900px){section{padding:92px 0}}

/* A "faixa escura" virou a faixa de SUPERFÍCIE: um tom acima do fundo, com fio de
   borda em cima e embaixo. É o que separa as seções agora que a página inteira é
   noturna — mesmo recurso que o app usa entre um bloco e outro. */
.faixa-escura{
  background:color-mix(in srgb,var(--surface) 55%,var(--bg));
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);
}

.sub{color:var(--ink2);font-size:16px;max-width:62ch;margin-top:14px}
@media(min-width:900px){.sub{font-size:17.5px}}

/* ── divisor ──────────────────────────────────────────────────────────────────
   Onde havia a faixa zebrada de piso de garagem, agora há o fio de luz do app: uma
   linha que acende no meio e se apaga nas pontas. */
.zebra{
  height:1px;border:0;
  background:linear-gradient(90deg,transparent,var(--line) 22%,var(--accent) 50%,var(--line) 78%,transparent);
  opacity:.55;
}
.zebra.fina{opacity:.3}

/* ── botões ──────────────────────────────────────────────────────────────────
   Mesma altura de dedo do app (54px) e o mesmo canto. O primário é ciano cheio com
   texto escuro, exatamente como o botão de ação das telas. */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:9px;
  min-height:54px;padding:14px 24px;border-radius:var(--r-sm);border:1px solid transparent;
  font-family:Inter,sans-serif;font-size:15px;font-weight:700;letter-spacing:-.01em;
  text-decoration:none;cursor:pointer;
  transition:transform .14s ease,box-shadow .18s ease,background .18s ease,border-color .18s ease,color .18s ease;
}
.btn-primary{background:var(--accent);color:var(--onaccent);box-shadow:0 0 24px color-mix(in srgb,var(--accent) 25%,transparent)}
.btn-primary:hover{background:var(--accentlight);box-shadow:0 0 34px color-mix(in srgb,var(--accent) 40%,transparent)}
.btn-primary:active{transform:translateY(1px)}
.btn-ghost{background:color-mix(in srgb,var(--surface2) 70%,transparent);color:var(--ink);border-color:var(--line)}
.btn-ghost:hover{border-color:color-mix(in srgb,var(--accent) 50%,transparent);color:var(--accent)}
.btn-ghost:active{transform:translateY(1px)}
.faixa-escura .btn-ghost{color:var(--ink);border-color:var(--line)}
.btn-zap{background:var(--mint);color:#04231a;box-shadow:0 0 24px color-mix(in srgb,var(--mint) 25%,transparent)}
.btn-zap:active{transform:translateY(1px)}

/* ── topo ────────────────────────────────────────────────────────────────────
   A barra do app é translúcida com desfoque; aqui é igual. */
header.topo{
  position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--bg) 82%,transparent);
  backdrop-filter:blur(14px);border-bottom:1px solid var(--line);
}
.topo-linha{display:flex;align-items:center;justify-content:space-between;gap:16px;height:64px}
.marca{display:flex;align-items:center;gap:10px;white-space:nowrap;font-weight:800;font-size:16px;letter-spacing:-.03em;text-decoration:none;color:var(--ink)}
/* O SELO DA MARCA — agora é o mesmo carro do aplicativo, não mais as letras "PV".
   O desenho é o de src/components/marca/Logo.tsx, traço por traço, pintado com as variáveis
   de cor do site: quem está no tema vermelho vê o logo vermelho, no claro vê o claro — igual
   ao que acontece dentro do app. A caixinha com borda saiu de propósito: no app o carro
   aparece solto, com o brilho em volta. Vale pra todas as páginas, porque site.css é
   carregado em todas elas (`.logo-mark` é o mesmo selo nas páginas de texto). */
.marca-selo,.logo-mark{
  width:34px;height:34px;flex:none;display:grid;place-items:center;
  background:none;border:0;padding:0;
}
.marca-icone{
  width:100%;height:100%;display:block;
  filter:drop-shadow(0 0 12px color-mix(in srgb,var(--accent) 38%,transparent));
}
/* No celular o topo tem espaço pra uma ação só, e ela é a de quem JÁ É CLIENTE: "Ver planos"
   já mora na barra fixa de baixo, ao alcance do polegar. Empilhar os dois lá em cima
   espremeria a marca e cortaria palavra. */
.topo-acoes{display:flex;align-items:center;gap:10px}
.topo-acoes .btn{display:none}
@media(min-width:640px){.topo-acoes .btn{display:inline-flex}}
.topo-acoes .entrar{
  display:inline-flex;align-items:center;min-height:42px;padding:10px 14px;border-radius:999px;
  font-size:13.5px;font-weight:700;text-decoration:none;color:var(--ink);
  border:1px solid var(--line);background:var(--surface);transition:border-color .15s ease,color .15s ease;
}
.topo-acoes .entrar:hover{border-color:color-mix(in srgb,var(--accent) 45%,transparent);color:var(--accent)}
.topo nav{display:none;gap:26px}
.topo nav a{font-size:14px;font-weight:600;text-decoration:none;color:var(--ink2);transition:color .15s ease}
.topo nav a:hover{color:var(--accent)}
.topo .btn{min-height:42px;padding:10px 18px;font-size:13px}
@media(min-width:1060px){.topo nav{display:flex}}

/* ── menu do celular ─────────────────────────────────────────────────────────
   Até agora, quem abria no telefone não tinha navegação nenhuma: os links do topo
   simplesmente sumiam e só sobrava rolar a página inteira procurando a seção. O botão
   abaixo abre a MESMA lista de links, em tela cheia, com alvo de dedo grande. */
.menu-botao{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  width:44px;height:44px;border-radius:14px;flex:none;
  background:var(--surface);border:1px solid var(--line);color:var(--ink);cursor:pointer;
  transition:border-color .15s ease,color .15s ease;
}
.menu-botao:hover{border-color:color-mix(in srgb,var(--accent) 45%,transparent);color:var(--accent)}
.menu-botao svg{width:20px;height:20px}
@media(min-width:1060px){.menu-botao{display:none}}

.menu-painel{
  position:fixed;inset:0;z-index:60;display:none;flex-direction:column;
  background:color-mix(in srgb,var(--bg) 97%,transparent);backdrop-filter:blur(18px);
  padding:0 20px calc(28px + env(safe-area-inset-bottom,0px));
  overscroll-behavior:contain;
}
.menu-painel[data-aberto='true']{display:flex}
.menu-painel .menu-topo{display:flex;align-items:center;justify-content:space-between;height:64px}
.menu-painel a{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  min-height:60px;padding:14px 4px;font-size:19px;font-weight:700;text-decoration:none;color:var(--ink);
  border-bottom:1px solid var(--line);
}
.menu-painel a:active{color:var(--accent)}
.menu-painel a span{font-family:'JetBrains Mono',monospace;font-size:11px;letter-spacing:.16em;color:var(--ink2)}
.menu-painel .btn{margin-top:22px;width:100%}
.menu-painel .entrar-mobile{
  margin-top:12px;justify-content:center;border-bottom:none;color:var(--accent);font-size:15px;min-height:52px;
}

/* ── abertura ────────────────────────────────────────────────────────────────── */
.hero{padding:34px 0 0;position:relative;overflow:hidden}
.hero-grid{display:grid;gap:34px;align-items:center}
@media(min-width:980px){.hero{padding:64px 0 0}.hero-grid{grid-template-columns:1.05fr .95fr;gap:48px}}
/* MONITOR GRANDE NÃO É CELULAR ESTICADO. Acima de 1300px a abertura ganha ar: a coluna de
   texto para de crescer (linha longa demais cansa), o aparelho aparece maior — ele é a prova
   do produto — e as duas colunas se afastam. */
@media(min-width:1300px){
  .hero{padding:80px 0 0}
  .hero-grid{grid-template-columns:minmax(0,1fr) minmax(0,.9fr);gap:72px}
  .hero .sub{font-size:19px;max-width:52ch}
  .palco-fone{transform:scale(1.06);transform-origin:center top}
  .hero-provas{gap:12px 30px}
}
.selo{
  display:inline-flex;align-items:center;gap:8px;
  background:color-mix(in srgb,var(--accent) 12%,transparent);
  border:1px solid color-mix(in srgb,var(--accent) 32%,transparent);color:var(--accent);
  font-family:'JetBrains Mono',monospace;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;
  padding:8px 13px;border-radius:999px;
}
.hero h1{margin:18px 0 0}
.hero .sub{margin-top:16px}
.cta-linha{display:flex;flex-wrap:wrap;align-items:center;gap:12px 18px;margin-top:26px}
.cta-linha .btn{flex:0 1 260px}
/* O segundo caminho existe, mas não disputa com o botão: quem quer ver o próprio ramo antes
   de decidir clica aqui; quem já decidiu vai direto no ciano. */
.ver-ramos{
  font-size:14.5px;font-weight:700;color:var(--ink2);text-decoration:none;
  display:inline-flex;align-items:center;min-height:44px;transition:color .15s ease;
}
.ver-ramos:hover{color:var(--accent)}
.hero-provas{display:flex;flex-wrap:wrap;gap:10px 22px;margin-top:22px;padding-top:20px;border-top:1px solid var(--line)}
.hero-provas span{font-size:13.5px;color:var(--ink2);display:inline-flex;align-items:center;gap:7px}
.hero-provas span:before{content:'';width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 10px var(--accent)}
.hero-provas b{color:var(--ink);font-weight:600}

/* O aparelho sobre um halo — a luz que o app tem atrás dos números. */
.palco-fone{position:relative;display:grid;place-items:center;padding:22px 0 0}
.palco-fone:before{
  content:'';position:absolute;inset:6% 8% 0;border-radius:50%;
  background:radial-gradient(closest-side,color-mix(in srgb,var(--accent) 22%,transparent),transparent);
  filter:blur(14px);
}
.palco-fone .pv-fone{position:relative;z-index:1}

/* ── números da operação ─────────────────────────────────────────────────────
   O mesmo cartão de número grande do Painel: rótulo pequeno, valor em destaque. */
.numeros{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:18px}
@media(min-width:900px){.numeros{grid-template-columns:repeat(4,1fr)}}
.numeros .cel{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:22px 18px;
}
.num{
  font-family:'JetBrains Mono',monospace;font-weight:700;font-size:clamp(24px,4.6vw,32px);
  font-variant-numeric:tabular-nums;
  color:var(--ink);line-height:1.1;letter-spacing:-.02em;
  text-shadow:0 0 20px color-mix(in srgb,var(--accent) 30%,transparent);
}
.numeros .cel p{color:var(--ink2);font-size:13.5px;margin-top:8px}

/* ── ramos: um cartão curto por negócio ───────────────────────────────────────
   Antes cada ramo era um bloco com seis linhas de lista — sete blocos desses viravam
   uma parede de texto entre a pessoa e o preço. Agora é cartão: a dor em uma frase, as
   três coisas que resolvem, e o resto atrás de um "ver tudo" pra quem quiser. */
.ramos-grade{display:grid;gap:14px;margin-top:30px}
@media(min-width:760px){.ramos-grade{grid-template-columns:1fr 1fr}}
@media(min-width:1140px){.ramos-grade{grid-template-columns:repeat(3,1fr)}}
.ramo-card{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:22px 20px;
  display:flex;flex-direction:column;gap:12px;
  transition:border-color .18s ease,transform .18s ease;
}
.ramo-card:hover{border-color:color-mix(in srgb,var(--accent) 40%,transparent);transform:translateY(-2px)}
.ramo-nome{display:flex;align-items:center;gap:12px}
.ramo-icone{
  width:44px;height:44px;border-radius:14px;
  background:color-mix(in srgb,var(--accent) 12%,transparent);
  border:1px solid color-mix(in srgb,var(--accent) 32%,transparent);color:var(--accent);
  display:grid;place-items:center;font-family:'JetBrains Mono',monospace;font-size:17px;font-weight:700;flex:none;
}
.ramo-card h3{font-size:18px}
.ramo-card .palavras{font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink2);margin-top:4px}
.ramo-card .fala{font-size:15.5px;color:var(--ink);font-weight:600;line-height:1.4}
.ramo-card ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.ramo-card li{position:relative;padding-inline-start:22px;font-size:14px;color:var(--ink2);line-height:1.5}
.ramo-card li:before{content:'✓';position:absolute;inset-inline-start:0;top:0;color:var(--mint);font-size:12px;font-weight:700}
.ramo-card details{margin-top:auto}
.ramo-card summary{
  cursor:pointer;list-style:none;color:var(--accent);font-size:13px;font-weight:700;
  min-height:44px;display:flex;align-items:center;gap:6px;
}
.ramo-card summary::-webkit-details-marker{display:none}
.ramo-card summary:after{content:'+';font-family:'JetBrains Mono',monospace;font-size:15px}
.ramo-card details[open] summary:after{content:'–'}
.ramo-card details ul{padding-top:4px}

/* ── chamada no fim de cada seção ────────────────────────────────────────────
   Um caminho só até o botão: terminou de ler um bloco, o botão está ali — sem obrigar a
   pessoa a rolar de volta pro topo procurando por onde se começa. */
.cta-secao{display:flex;align-items:center;flex-wrap:wrap;gap:12px 16px;margin-top:30px}
.cta-secao span{font-size:13.5px;color:var(--ink2)}

/* ── recursos: ícone + uma linha ─────────────────────────────────────────── */
.recursos-lista{display:grid;gap:10px;margin-top:28px}
@media(min-width:760px){.recursos-lista{grid-template-columns:1fr 1fr;gap:10px 22px}}
@media(min-width:1140px){.recursos-lista{grid-template-columns:repeat(3,1fr)}}
.recurso{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:var(--r-sm);background:color-mix(in srgb,var(--surface) 70%,transparent);border:1px solid var(--line)}
.recurso span{
  width:34px;height:34px;border-radius:11px;flex:none;display:grid;place-items:center;
  background:color-mix(in srgb,var(--accent) 12%,transparent);
  border:1px solid color-mix(in srgb,var(--accent) 30%,transparent);
  color:var(--accent);font-family:'JetBrains Mono',monospace;font-size:14px;font-weight:700;
}
.recurso p{font-size:14.5px;color:var(--ink2);line-height:1.45}

/* ── garantias, coladas no preço ─────────────────────────────────────────── */
.garantias{list-style:none;margin:22px 0 0;padding:0;display:grid;gap:10px}
@media(min-width:760px){.garantias{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1140px){.garantias{grid-template-columns:repeat(4,1fr)}}
.garantias li{
  display:flex;align-items:center;gap:9px;font-size:13.5px;color:var(--ink2);
  background:color-mix(in srgb,var(--mint) 7%,transparent);
  border:1px solid color-mix(in srgb,var(--mint) 26%,transparent);
  border-radius:999px;padding:10px 15px;
}
.garantias li:before{content:'✓';color:var(--mint);font-weight:700;font-size:12px}
.garantias b{color:var(--ink);font-weight:700}

/* ── passos ──────────────────────────────────────────────────────────────────── */
.passos{display:grid;gap:12px;margin-top:30px;counter-reset:passo}
@media(min-width:900px){
  .passos{grid-template-columns:repeat(4,1fr);gap:16px}
  /* Escada: cada passo desce um degrau. O dia anda, e o desenho anda junto — quatro caixas
     alinhadas seriam mais quatro cartões iguais. */
  .passos .passo:nth-child(2){margin-top:22px}
  .passos .passo:nth-child(3){margin-top:44px}
  .passos .passo:nth-child(4){margin-top:66px}
}
@media(prefers-reduced-motion:no-preference){
  .passo{transition:transform .2s ease,border-color .2s ease}
  .passo:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--accent) 40%,transparent)}
}
.passo{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:22px 20px;position:relative}
.passo:before{
  counter-increment:passo;content:counter(passo,decimal-leading-zero);
  font-family:'JetBrains Mono',monospace;font-weight:700;font-size:13px;letter-spacing:.14em;
  color:var(--accent);display:block;line-height:1;margin-bottom:12px;
}
.passo h3{font-size:16.5px}
.passo p{color:var(--ink2);font-size:14.5px;margin-top:6px}

/* ── planos ──────────────────────────────────────────────────────────────────── */
/* O período de cobrança mora DENTRO do cartão, colado no preço que ele governa.
   Alvo de toque grande (mínimo 44px de altura no celular) e a etiqueta do brinde presa ao
   botão do anual — é o argumento, não pode virar nota de rodapé. */
.ciclo-plano{
  display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:16px;
  background:var(--surface2);border:1px solid var(--line);border-radius:999px;padding:4px;
}
.ciclo-plano button{
  border:none;background:transparent;cursor:pointer;border-radius:999px;
  min-height:44px;padding:8px 10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;
  font-family:Inter,sans-serif;font-size:13px;font-weight:600;color:var(--ink2);line-height:1.15;
  transition:background .18s ease,color .18s ease;
}
.ciclo-plano button i{font-style:normal;font-size:9.5px;font-weight:700;letter-spacing:.04em;opacity:.85}
.ciclo-plano button[aria-pressed="true"]{background:var(--accent);color:var(--onaccent);font-weight:700}
.ciclo-plano button:hover:not([aria-pressed="true"]){color:var(--ink)}

.planos{display:grid;gap:16px;margin-top:28px}
@media(min-width:760px){.planos{grid-template-columns:1fr 1fr}}
@media(min-width:1080px){.planos{grid-template-columns:repeat(4,1fr);gap:14px}}
.plano{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
  padding:24px 20px;display:flex;flex-direction:column;position:relative;
  transition:border-color .18s ease,transform .18s ease;
}
.plano:hover{border-color:color-mix(in srgb,var(--accent) 35%,transparent)}
/* O PLANO MAIS ESCOLHIDO PRECISA PARECER O MAIS ESCOLHIDO. Antes ele era só um cartão com
   a borda um pouco mais clara — no meio de quatro iguais, ninguém notava. */
.plano.destaque{
  border-color:var(--accent);
  box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 45%,transparent),0 18px 50px color-mix(in srgb,var(--accent) 18%,transparent);
  background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 7%,var(--surface)),var(--surface) 55%);
}
@media(min-width:1080px){.plano.destaque{transform:scale(1.03)}}
.plano .tag{
  position:absolute;top:-13px;inset-inline-start:20px;background:var(--accent);color:var(--onaccent);
  font-family:'JetBrains Mono',monospace;font-size:10px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;
  padding:6px 13px;border-radius:999px;box-shadow:0 6px 20px color-mix(in srgb,var(--accent) 40%,transparent);
}
.plano h3{font-size:22px}
.plano .desc{color:var(--ink2);font-size:13.5px;margin-top:6px;min-height:42px;line-height:1.6}
.plano .preco{display:flex;align-items:baseline;gap:8px;margin-top:16px;flex-wrap:wrap}
.plano .preco .val{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:33px;line-height:1;letter-spacing:-.03em;text-shadow:0 0 22px color-mix(in srgb,var(--accent) 22%,transparent)}
.plano .preco .antes{color:var(--ink2);text-decoration:line-through;font-size:15px}
.plano .preco .per{color:var(--ink2);font-size:14px}
.plano .preco-nota{color:var(--ink2);font-size:12.5px;margin-top:6px}
.plano .economia{color:var(--mint);font-size:13px;font-weight:700;margin-top:4px;min-height:20px}
.plano .contraste{font-size:12.5px;color:var(--ink2);margin-top:10px;line-height:1.6}
.plano .contraste b{color:var(--ink)}
.plano .limites{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:16px 0 14px}
.plano .limite{background:color-mix(in srgb,var(--surface2) 75%,transparent);border:1px solid var(--line);border-radius:12px;padding:9px 6px;text-align:center}
.plano .limite span{display:block;font-family:'JetBrains Mono',monospace;font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink2);margin-bottom:3px}
.plano .limite b{font-size:13px;color:var(--ink)}
.plano ul{list-style:none;margin:0 0 20px;padding:0;display:grid;gap:8px}
.plano li{position:relative;padding-left:22px;font-size:13.5px;color:var(--ink2);line-height:1.55}
.plano li:before{content:'✓';position:absolute;left:0;top:0;color:var(--mint);font-size:12px;font-weight:700}
.plano .btn{width:100%;margin-top:auto}
.plano .sob-botao{margin-top:10px;text-align:center;font-size:12px;color:var(--ink2);line-height:1.5}
.plano.destaque .sob-botao{color:var(--ink)}

/* ── dúvidas ─────────────────────────────────────────────────────────────────── */
.perguntas{margin-top:26px;max-width:840px;display:grid;gap:10px}
details{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);
  padding:2px 16px;transition:border-color .18s ease;
}
details[open]{border-color:color-mix(in srgb,var(--accent) 35%,transparent)}
summary{
  cursor:pointer;list-style:none;padding:16px 34px 16px 0;position:relative;
  font-weight:600;font-size:15.5px;color:var(--ink);
}
summary::-webkit-details-marker{display:none}
summary:after{
  content:'+';position:absolute;right:4px;top:13px;font-family:'JetBrains Mono',monospace;
  font-size:20px;font-weight:700;color:var(--accent);line-height:1;
}
details[open] summary:after{content:'–'}
details p{color:var(--ink2);font-size:15px;padding:0 0 16px;max-width:70ch}

/* ── contato ─────────────────────────────────────────────────────────────────── */
.contato{display:grid;gap:20px;align-items:center}
@media(min-width:900px){.contato{grid-template-columns:1.2fr .8fr}}

/* ── rodapé ──────────────────────────────────────────────────────────────────── */
footer{background:color-mix(in srgb,var(--surface) 45%,var(--bg));border-top:1px solid var(--line);color:var(--ink2);padding:48px 0 34px;font-size:14px}
footer .colunas{display:grid;gap:26px}
@media(min-width:800px){footer .colunas{grid-template-columns:2fr 1fr 1fr}}
footer a{display:block;color:var(--ink2);text-decoration:none;padding:5px 0;transition:color .15s ease}
footer a:hover{color:var(--accent)}
footer .marca{color:var(--ink)}
.rodape-fim{margin-top:28px;padding-top:18px;border-top:1px solid var(--line);font-size:12.5px;color:var(--ink2)}

/* ── barra fixa do celular ───────────────────────────────────────────────────
   É a barra de abas do app: translúcida, com fio de borda em cima. */
.barra-fixa{
  position:fixed;left:0;right:0;bottom:0;z-index:50;display:flex;gap:10px;
  padding:10px 14px calc(10px + env(safe-area-inset-bottom));
  background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(14px);
  border-top:1px solid var(--line);
}
.barra-fixa .btn{flex:1 1 auto;min-height:50px;padding:13px 18px;font-size:14.5px}
.barra-texto{display:flex;flex-direction:column;line-height:1.15;flex:none}
.barra-texto b{font-size:13.5px;color:var(--ink)}
.barra-texto span{font-size:11.5px;color:var(--ink2)}
@media(min-width:900px){.barra-fixa{display:none}body{padding-bottom:0}}

/* ── modal de contratação ────────────────────────────────────────────────────
   Sobe de baixo no celular e centraliza no computador — a mesma folha do app. */
.modal{
  position:fixed;inset:0;z-index:60;display:none;align-items:flex-end;justify-content:center;
  background:#04070fcc;backdrop-filter:blur(4px);
}
.modal.on{display:flex}
@media(min-width:700px){.modal{align-items:center}}
.modal-card{
  width:100%;max-width:460px;max-height:92vh;overflow-y:auto;background:var(--surface);
  border:1px solid var(--line);border-radius:24px 24px 0 0;
  padding:22px 20px calc(22px + env(safe-area-inset-bottom));
}
@media(min-width:700px){.modal-card{border-radius:24px}}
.resumo-plano{background:var(--surface2);border:1px solid var(--line);border-radius:var(--r-sm);padding:14px;margin:16px 0}
.resumo-linha{display:flex;justify-content:space-between;gap:12px;padding:4px 0;font-size:14.5px}
.resumo-rot{color:var(--ink2)}
.campo{margin-bottom:14px}
.campo label{display:block;font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink2);margin-bottom:7px}
.campo input{
  width:100%;min-height:52px;background:var(--surface2);border:1px solid var(--line);border-radius:var(--r-sm);
  padding:12px 14px;font-family:Inter,sans-serif;font-size:16px;color:var(--ink);
}
/* Tirar o contorno padrão só vale porque entra outro no lugar (borda + halo). Tirar sem
   substituir seria deixar quem usa teclado sem saber onde está o cursor. */
.campo input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}
.erro{
  display:none;background:color-mix(in srgb,var(--coral) 12%,transparent);
  border:1px solid color-mix(in srgb,var(--coral) 40%,transparent);color:var(--coral);
  border-radius:var(--r-sm);padding:12px;font-size:14px;margin-bottom:12px;
}
.erro.on{display:block}

/* ── movimento (só onde ajuda a ler) ─────────────────────────────────────────── */
.js .revela{opacity:0;transform:translateY(14px);transition:opacity .5s ease,transform .5s ease}
.js .revela.visivel,html:not(.js) .revela{opacity:1;transform:none}

/* O título entra palavra por palavra (a divisão é feita em interativo.js, pra o HTML
   continuar sendo uma frase inteira pra leitor de tela e pra busca). */
.js .palavra{display:inline-block;opacity:0;transform:translateY(12px);animation:sobe-palavra .55s cubic-bezier(.16,1,.3,1) forwards;animation-delay:var(--atraso,0ms)}
@keyframes sobe-palavra{to{opacity:1;transform:none}}

/* Reação ao cursor no computador: no máximo 5 graus (quem passa disso vira brinquedo). */
.plano,.passo{transition:transform .18s ease,border-color .18s ease}
.inclina{transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg))}
@media(prefers-reduced-motion:reduce){
  .js .revela{opacity:1;transform:none;transition:none}
  .js .palavra{opacity:1;transform:none;animation:none}
  .inclina{transform:none}
  html{scroll-behavior:auto}
}

/* Barra de leitura no topo — só no celular, onde não existe barra de rolagem. */
.progresso{position:fixed;top:0;left:0;height:2px;background:var(--accent);box-shadow:0 0 12px var(--accent);width:0;z-index:70}
@media(min-width:900px){.progresso{display:none}}
