/* =========================================================
   Vox Cidadão — site institucional
   Complemento do styles.css. Só o que a landing B2B não tinha:
   manifesto, grade de funções, as duas pontas do ecossistema
   e o card do modelo. Nada aqui sobrescreve o arquivo original.
   ========================================================= */

/* ---------- acessibilidade ----------
 * Uma página que fala de inclusão precisa ser usável por teclado e por leitor
 * de tela. Não é enfeite: é o argumento da própria marca aplicado nela mesma.
 */
.pular{ position:absolute; left:12px; top:-100px; z-index:200; padding:13px 22px; border-radius:0 0 12px 12px;
  background:var(--coral); color:#fff; font-weight:600; font-size:15px; box-shadow:var(--sh-md);
  transition:top .18s var(--ease); }
.pular:focus{ top:0; }
/* foco visível em tudo que recebe teclado, também nos links de texto */
a:focus-visible, summary:focus-visible, button:focus-visible{ outline:2px solid var(--purple); outline-offset:3px; border-radius:4px; }
.dark a:focus-visible, .duas a:focus-visible, nav a:focus-visible, footer a:focus-visible{ outline-color:var(--psoft); }

/* ---------- nav ----------
 * Na landing o nav vive dentro do bloco escuro do topo, então o fundo
 * semitransparente dele sempre tinha escuro por baixo. Aqui o nav é irmão do
 * <main>, pra <main> começar no conteúdo de verdade, e por isso ele precisa
 * carregar o próprio escuro. Fica opaco quase por inteiro e o desfoque
 * continua fazendo o efeito de vidro sobre o que passa embaixo.
 */
nav{ background:rgba(20,8,40,.92); z-index:60; }
/* z-index reposto de propósito: no fim do styles.css existe
   `nav,section,footer{position:relative;z-index:1}`, que serve pra levantar o
   conteúdo acima do brilho do cursor, mas cai depois do `nav{z-index:60}` e
   acaba anulando ele. Com o nav em 1, qualquer seção seguinte (também em 1,
   e depois no DOM) passa por cima da barra fixa. */
.nlinks a.alt{ color:#fff; opacity:.86; }
.nlinks a.alt::after{ background:var(--psoft); }

/* botão fantasma do topo, versão clara pro fundo escuro do nav */
.navin .btn.gh{ padding:10px 18px; font-size:14px; }

/* ---------- manifesto: o que é a Vox ---------- */
.manifesto{ padding:96px 0 88px; }
.manifesto .hd{ max-width:900px; }
.manifesto h2{ margin-top:12px; }
.manifesto h2 .o{ color:var(--coral); }
.manifesto .lead{ margin-top:26px; max-width:62ch; font-size:1.2rem; line-height:1.62; color:var(--ink); }
.manifesto .lead b{ font-weight:600; }
.manifesto .lead+.lead{ margin-top:18px; color:var(--mut); font-size:1.1rem; }

/* ---------- a tese ----------
 * Um bloco escuro no meio da página clara. Serve de ponto de descanso: numa
 * seção que é toda texto, o olho precisa de um lugar pra pousar antes de
 * continuar lendo. A frase vai em corpo grande porque ela é a ideia que
 * explica o produto inteiro, não é enfeite tipográfico.
 */
.tese{ margin-top:46px; border-radius:26px; padding:52px 54px 46px; color:#fff; position:relative; overflow:hidden;
  background:
    radial-gradient(115% 85% at 88% -8%, rgba(120,67,255,.42), transparent 58%),
    radial-gradient(80% 70% at -4% 108%, rgba(249,83,65,.20), transparent 54%),
    var(--dark);
  box-shadow:0 1px 2px rgba(24,20,40,.10), 0 24px 50px -18px rgba(34,0,60,.42); }
/* mesmo grão das seções escuras, senão o degradê fica com cara de plástico */
.tese::before{ content:''; position:absolute; inset:0; pointer-events:none; opacity:.3; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='.35'/%3E%3C/svg%3E"); }
.tese > *{ position:relative; z-index:1; }
.tese .frase{ font-size:clamp(1.75rem,3.3vw,2.6rem); font-weight:700; letter-spacing:-.032em; line-height:1.1; text-wrap:balance; }
.tese .frase .o{ color:var(--coral); }
.tese .apoio{ margin-top:18px; max-width:52ch; font-size:1.1rem; line-height:1.58; color:#c3b9dd; }

/* a prova, logo abaixo da afirmação. Sem caixa e com uma cor só: são três
   medidas do mesmo fato, não três assuntos concorrendo por atenção. */
.prova{ margin-top:38px; padding-top:30px; border-top:1px solid rgba(255,255,255,.14);
  display:grid; grid-template-columns:repeat(3,1fr); gap:30px; }
/* Os três entram um depois do outro. O olho acompanha a sequência e pousa na
   prova, que era o efeito que eu queria com a contagem. A diferença é que aqui
   só opacidade e posição se movem: em nenhum instante existe um número errado
   na tela. Contador que trava no meio deixa "107,0" no lugar de "167,4", e numa
   página com fonte citada isso é publicar dado falso. */
.prova .p:nth-child(1){ transition-delay:.05s; }
.prova .p:nth-child(2){ transition-delay:.16s; }
.prova .p:nth-child(3){ transition-delay:.27s; }
.prova .n{ display:block; font-size:1.55rem; font-weight:700; letter-spacing:-.03em; color:#fff;
  font-variant-numeric:tabular-nums; }
.prova .n b{ font-weight:800; color:var(--green-l); }
.prova small{ display:block; margin-top:7px; font-size:.93rem; line-height:1.45; color:#b0a6cc; }

/* missão e visão continuam na página porque são conteúdo institucional
   obrigatório, mas em corpo pequeno: ninguém entra num site pra ler missão */
.mv{ margin-top:34px; display:grid; grid-template-columns:1fr 1fr; gap:14px 40px; }
.mv > div{ display:flex; gap:12px; align-items:baseline; }
.mv dt{ flex:0 0 auto; font-size:.82rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:#6e5a58; }
.mv dd{ margin:0; font-size:.97rem; line-height:1.5; color:#565d69; }
.dfonte{ margin-top:22px; font-size:12.5px; line-height:1.55; color:#565d69; max-width:80ch; }

@media(max-width:900px){
  .tese{ padding:36px 26px 32px; border-radius:20px; margin-top:34px; }
  .tese .apoio{ margin-top:14px; font-size:1.04rem; }
  .prova{ grid-template-columns:1fr; gap:20px; margin-top:30px; padding-top:24px; }
  .prova .n{ font-size:1.4rem; }
  .mv{ grid-template-columns:1fr; gap:14px; }
  .manifesto{ padding:70px 0 64px; }
}

/* ---------- demonstração das funções ----------
 * A landing descreve o produto. Aqui ele acontece: a pessoa escolhe a função
 * e a conversa daquela função é encenada dentro do aparelho, do jeito que o
 * produto responde de verdade. Descrever é mais barato, mostrar convence.
 */
.funcs{ padding:88px 0 92px; }
.funcs .hd{ text-align:center; max-width:660px; margin:0 auto; }
.funcs .hd h2{ margin-top:12px; }
.funcs .hd h2 .o{ color:var(--coral); }
.funcs .hd .sub{ margin-top:16px; }

/* A fileira anda sozinha, como a faixa do topo e o carrossel de empresas
   dentro da conversa. Pra isso ela precisa ser horizontal e ocupar a largura,
   então o aparelho vai embaixo dela, centralizado. */
.demo{ margin-top:44px; }

.lista{ overflow-x:auto; padding:6px 0 18px; scrollbar-width:none;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent); }
.lista::-webkit-scrollbar{ display:none; }
/* A pista tem o dobro do conteúdo e volta ao início a cada laço. O deslocamento
   NÃO é -50%: entre as duas metades existe mais um espaçamento, então metade da
   pista é 7px menor que um conjunto completo, e o laço fecharia com um pulinho.
   Descontar meio espaçamento faz a emenda sumir. */
.pista{ --vao:13px; display:flex; gap:var(--vao); width:max-content;
  animation:corre 35s linear infinite; will-change:transform; }
@keyframes corre{ from{ transform:translateX(0); } to{ transform:translateX(calc(-50% - var(--vao) / 2)); } }
/* Pausa enquanto o mouse está em cima ou o teclado está dentro, e volta a
   andar quando sai. Nada de parar permanente: alvo que foge é alvo que a
   pessoa erra, mas fila que trava de vez deixa de ser carrossel. */
.lista:hover .pista, .lista:focus-within .pista{ animation-play-state:paused; }

.fn{ flex:0 0 204px; display:flex; flex-direction:column; align-items:flex-start;
  text-align:left; cursor:pointer; font:inherit; color:inherit;
  background:var(--paper); border:1px solid var(--line); border-radius:17px; padding:19px 18px 21px;
  box-shadow:var(--sh-sm); transition:transform .26s var(--ease), box-shadow .24s var(--ease); }
.fn:hover{ transform:translateY(-4px); box-shadow:var(--sh-md); }
.fn .ic{ width:38px; height:38px; flex:0 0 auto; border-radius:12px; display:flex; align-items:center; justify-content:center;
  color:var(--purple); background:color-mix(in srgb,var(--purple) 12%,transparent); }
.fn .ic svg{ display:block; width:20px; height:20px; }
.fn .tx{ display:block; min-width:0; margin-top:14px; }
.fn .tx b{ display:block; font-size:.98rem; font-weight:600; letter-spacing:-.015em; line-height:1.25; }
.fn .tx i{ display:block; font-style:normal; margin-top:6px; font-size:.86rem; line-height:1.44; color:var(--mut); }
/* a seta apontava pro aparelho quando a lista era uma coluna do lado dele */
.fn .mark{ display:none; }
.fn[aria-selected="true"]{ border-color:var(--coral); box-shadow:0 0 0 1px var(--coral), var(--sh-md); transform:translateY(-4px); }
.fn[aria-selected="true"] .ic{ color:#fff; background:var(--coral); }
.fn:focus-visible{ outline:2px solid var(--purple); outline-offset:3px; }
.fn .tag{ display:inline-block; margin-left:7px; font-size:10px; font-weight:800; letter-spacing:.08em; text-transform:uppercase;
  color:#0AC655; background:color-mix(in srgb,#0AC655 13%,transparent); border-radius:100px; padding:2px 8px; vertical-align:2px; }

/* ---------- a pílula ----------
 * Formato final do seletor de função, aprovado. Sem a linha de descrição o
 * card não precisa de coluna: vira pílula, com o ícone ao lado da palavra e
 * largura pelo conteúdo. Deixa a fileira leve e cabe mais função na tela.
 *
 * As regras de card em coluna continuam acima porque este bloco sobrescreve
 * só o que muda. Se um dia quiserem a descrição de volta no seletor, é apagar
 * este bloco e a versão em card volta inteira.
 */
.fn{ flex:0 0 auto; flex-direction:row; align-items:center; gap:11px;
  padding:11px 22px 11px 11px; border-radius:100px; }
.fn .ic{ width:36px; height:36px; border-radius:50%; }
.fn .ic svg{ width:19px; height:19px; }
.fn .tx{ margin-top:0; }
.fn .tx b{ font-size:1rem; white-space:nowrap; }
.fn .tx i{ display:none; }
.fn[aria-selected="true"]{ transform:none; }
.fn:hover{ transform:translateY(-3px); }
@media(max-width:640px){ .fn{ padding:10px 18px 10px 10px; } .fn .tx b{ font-size:.94rem; } }

.palco{ margin-top:32px; display:flex; justify-content:center; }
.demofone{ justify-self:center; }
/* a tela nasce com a altura final e a conversa fica colada embaixo, como num
   WhatsApp de verdade. Sem isso o aparelho cresce e encolhe a cada troca. */
.demofone .wabody{ height:452px; min-height:0; justify-content:flex-end; overflow:hidden; }
/* cartões compactos: dentro da moldura o card padrão estoura a largura da tela */
.demofone .bc{ flex:0 0 206px; }
.demofone .bc .im{ height:54px; font-size:24px; }
.demofone .bc .cat, .demofone .bc .vb{ font-size:8.5px; padding:2px 6px; }
.demofone .bc .cat{ bottom:5px; left:5px; } .demofone .bc .vb{ top:5px; right:5px; }
.demofone .bc .bd{ padding:7px 9px 2px; }
.demofone .bc .nm{ font-size:11.5px; }
.demofone .bc .rt{ font-size:9px; margin-top:2px; }
.demofone .bc .btns{ margin-top:6px; display:flex; }
.demofone .bc .bt{ flex:1 1 0; padding:6px 3px; font-size:9.5px; gap:3px; white-space:nowrap; }
.demofone .bc .bt+.bt{ border-top:0; border-left:1px solid rgba(255,255,255,.09); }
.demofone .carou.show{ max-height:180px; }

/* cartão de ação: é assim que a Vox entrega Uber, Spotify e Booking.
   Ela monta e devolve o botão. Quem toca é a pessoa. */
.acao{ align-self:flex-start; max-width:88%; background:var(--wa-in); border-radius:9px; border-top-left-radius:2px;
  padding:9px 11px 9px; box-shadow:0 1px 1px rgba(0,0,0,.28); opacity:0; transform:translateY(8px); }
.acao.show{ animation:pop .28s cubic-bezier(.2,.7,.2,1) forwards; }
.acao .ttl{ font-size:13.5px; font-weight:700; color:var(--wa-txt); line-height:1.3; }
.acao .rota{ margin-top:7px; display:flex; flex-direction:column; gap:5px; }
.acao .pt{ display:flex; align-items:center; gap:8px; font-size:12px; color:rgba(233,237,239,.82); line-height:1.3; }
.acao .pt i{ width:7px; height:7px; border-radius:50%; flex:0 0 auto; background:#8696a0; font-style:normal; }
.acao .pt.fim i{ background:#25D366; }
.acao .hint{ margin-top:9px; font-size:11.5px; color:rgba(233,237,239,.6); }
.acao .sig{ margin-top:8px; padding-top:7px; border-top:1px solid rgba(255,255,255,.09); font-size:10.5px; font-weight:600; color:#8696a0; }
.acao .sig b{ font-weight:800; letter-spacing:.06em; }
.acao .go{ margin-top:8px; display:flex; align-items:center; justify-content:center; gap:6px; padding:9px; border-radius:7px;
  background:rgba(0,168,132,.16); color:#4BD883; font-size:12.5px; font-weight:700; }
/* foto do prato: a função de saúde entra por imagem, não por texto */
.prato{ align-self:flex-end; width:158px; border-radius:9px; border-top-right-radius:2px; overflow:hidden; background:var(--wa-out);
  padding:3px 3px 15px; position:relative; opacity:0; transform:translateY(8px); box-shadow:0 1px 1px rgba(0,0,0,.28); }
.prato.show{ animation:pop .28s cubic-bezier(.2,.7,.2,1) forwards; }
.prato .img{ height:104px; border-radius:7px; display:flex; align-items:center; justify-content:center; font-size:40px;
  background:linear-gradient(135deg,#f0e2cf,#d9c3a4); }
.prato::after{ content:'9:41 ✓✓'; position:absolute; right:9px; bottom:3px; font-size:10.5px; font-weight:500; color:#53bdeb; }
/* horários alternativos, pra conversa que não acontece às 9:41 */
.b.t6::after{ content:'6:00' !important; }
.b.me.t6::after{ content:'6:00 ✓✓' !important; }

@media(max-width:640px){
  .fn{ flex:0 0 182px; padding:17px 16px 19px; }
  .pista{ --vao:11px; }
  .palco{ margin-top:24px; }
}

/* a linha que fecha a seção: ela prepara, você confirma */
.confirma{ margin:44px auto 0; max-width:760px; display:flex; align-items:center; gap:16px; padding:20px 26px; border-radius:100px;
  background:color-mix(in srgb,#0AC655 8%,transparent); border:1px solid color-mix(in srgb,#0AC655 22%,transparent); }
.confirma .ck{ width:30px; height:30px; flex:0 0 auto; border-radius:50%; background:#0AC655; color:#fff; display:flex; align-items:center; justify-content:center; font-size:15px; font-weight:800; }
.confirma p{ font-size:1rem; line-height:1.55; color:var(--ink); }
.confirma b{ font-weight:700; }
@media(max-width:640px){ .confirma{ border-radius:20px; align-items:flex-start; padding:18px 20px; } }

/* ---------- as duas pontas ---------- */
.duas{ padding:96px 0; }
.duas .hd{ text-align:center; max-width:680px; margin:0 auto; }
.duas .hd h2{ margin-top:12px; }
.duas .hd h2 .o{ color:var(--psoft); }
.duas .hd .sub{ margin-top:18px; }

.pontas{ margin-top:56px; display:grid; grid-template-columns:1fr auto 1fr; gap:0; align-items:stretch; }
.lado{ background:rgba(255,255,255,.045); border:1px solid rgba(255,255,255,.10); border-radius:24px; padding:36px 34px 34px; backdrop-filter:blur(6px); }
.lado .kk{ display:inline-flex; align-items:center; gap:9px; font-size:11.5px; font-weight:800; letter-spacing:.16em; text-transform:uppercase; color:var(--psoft); }
.lado.biz .kk{ color:var(--coral-l); }
.lado h3{ margin:14px 0 6px; font-size:1.6rem; font-weight:700; letter-spacing:-.025em; line-height:1.15; color:#fff; }
.lado .who{ font-size:.98rem; color:var(--dmut); }
.lado ul{ list-style:none; margin-top:24px; display:flex; flex-direction:column; gap:14px; }
.lado li{ display:flex; gap:12px; font-size:1rem; line-height:1.55; color:#e6e0f5; }
.lado li .ck{ width:21px; height:21px; flex:0 0 auto; margin-top:2px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:11px; font-weight:800;
  background:color-mix(in srgb,var(--psoft) 22%,transparent); color:var(--psoft); }
.lado.biz li .ck{ background:color-mix(in srgb,var(--coral) 22%,transparent); color:var(--coral-l); }
.lado .go{ display:inline-flex; align-items:center; gap:8px; margin-top:26px; font-weight:600; font-size:.98rem; color:#fff; border-bottom:1px solid rgba(255,255,255,.3); padding-bottom:3px; transition:border-color .2s, gap .2s; }
.lado .go:hover{ border-color:var(--coral); gap:12px; }

/* o meio: a IA que liga as duas pontas */
.meio{ width:120px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:14px; padding:0 8px; }
.meio .ln{ flex:1; width:1px; background:linear-gradient(180deg,transparent,rgba(255,255,255,.22),transparent); }
.meio .bolha{ width:96px; height:96px; flex:0 0 auto; border-radius:50%; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center;
  background:linear-gradient(150deg,var(--purple),var(--deep)); border:1px solid rgba(255,255,255,.18);
  box-shadow:0 0 0 10px rgba(120,67,255,.10), 0 18px 40px -12px rgba(120,67,255,.6); }
.meio .bolha span{ font-size:11px; font-weight:800; letter-spacing:.12em; text-transform:uppercase; color:#fff; line-height:1.3; }
.meio .bolha .sym{ font-size:20px; color:var(--coral-l); line-height:1; margin-bottom:4px; }
@media(max-width:940px){
  .pontas{ grid-template-columns:1fr; gap:0; }
  .meio{ width:auto; flex-direction:row; padding:20px 0; }
  .meio .ln{ height:1px; width:auto; background:linear-gradient(90deg,transparent,rgba(255,255,255,.22),transparent); }
  .meio .bolha{ width:82px; height:82px; }
  .duas{ padding:72px 0; }
}

/* ---------- o modelo ---------- */
.modelo{ padding:92px 0; }
.modelo .mgrid{ display:grid; grid-template-columns:1.08fr .92fr; gap:56px; align-items:start; }
.modelo h2{ margin-top:12px; }
.modelo h2 .o{ color:var(--coral); }
.modelo .txt p{ margin-top:20px; font-size:1.08rem; line-height:1.68; color:var(--mut); max-width:56ch; }
.modelo .txt p.first{ font-size:1.2rem; color:var(--ink); }
.modelo .txt b{ color:var(--ink); font-weight:600; }

/* O único bloco da página que fala de negócio. É um aparte, não uma oferta:
   sem preço, sem condição de plano, sem selo de vantagem. Só explica que existe
   uma assinatura e manda quem se interessar pra página certa. */
.bizcard{ background:var(--cream); border:1px solid var(--line); border-radius:22px; padding:30px 30px 32px; }
.bizcard .lbl{ font-size:11.5px; font-weight:800; letter-spacing:.15em; text-transform:uppercase; color:var(--coral); }
.bizcard p{ margin:14px 0 24px; font-size:1rem; line-height:1.62; color:#565d69; }
.bizcard .btn{ width:100%; justify-content:center; }

@media(max-width:940px){ .modelo .mgrid{ grid-template-columns:1fr; gap:38px; } .modelo{ padding:70px 0; } }

/* ---------- ajustes finos ---------- */
/* o institucional não vende, então o CTA final respira mais e pesa menos.
   O rodapé saiu de dentro desta seção pra virar landmark próprio, então ela
   volta a fechar com padding embaixo. */
.cta.inst{ padding:96px 0 88px; }
.cta.inst h2{ max-width:24ch; }
.cta.inst .cbtns{ margin-top:30px; }

/* a faixa de impacto ganha respiro no institucional, é bloco de leitura */
.impact .tx b{ font-weight:700; }

/* ---------- contraste ----------
 * Medido com a fórmula de luminância relativa da WCAG contra o fundo efetivo
 * de cada elemento. Estes seis estavam abaixo de 4.5:1 no tamanho em que são
 * lidos. Numa página cujo argumento é acessibilidade, texto de apoio ilegível
 * é contradição, não detalhe. Correção por sobreposição: o styles.css da
 * landing continua intacto.
 */
.impact .fonte{ color:rgba(255,255,255,.94); }/* era 2.90:1 sobre o roxo */
.copy{ color:#9a90b8; }                       /* era 4.21:1 sobre o roxo escuro */
.foot h4{ color:#9a90b8; }

/* ---------- menu do celular ----------
 * O botão e o painel só existem abaixo de 840px, que é onde o styles.css
 * esconde o menu grande. Acima disso ficam fora da tela e fora da tabulação.
 */
.menubt{ display:none; width:44px; height:44px; margin-left:14px; flex:0 0 auto; align-items:center; justify-content:center;
  gap:5px; flex-direction:column; cursor:pointer; background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.16);
  border-radius:12px; padding:0; }
.menubt span{ display:block; width:17px; height:1.8px; border-radius:2px; background:#fff; transition:transform .24s var(--ease), opacity .18s; }
.menubt.on span:nth-child(1){ transform:translateY(6.8px) rotate(45deg); }
.menubt.on span:nth-child(2){ opacity:0; }
.menubt.on span:nth-child(3){ transform:translateY(-6.8px) rotate(-45deg); }
.menubt:focus-visible{ outline:2px solid var(--psoft); outline-offset:2px; }

/* fundo sólido de propósito, sem backdrop-filter: desfoque numa faixa que
   ocupa a largura toda é caro em Android intermediário, que é exatamente o
   aparelho de quem chega aqui pela bio. E menu de navegação não ganha nada
   sendo translúcido, só arrisca legibilidade sobre o conteúdo de baixo. */
.menupanel{ display:none; position:absolute; left:0; right:0; top:100%; z-index:70;
  background:#180a30;
  border-bottom:1px solid rgba(255,255,255,.10); box-shadow:0 24px 44px -18px rgba(0,0,0,.6);
  visibility:hidden; opacity:0; transform:translateY(-10px); pointer-events:none;
  transition:opacity .2s var(--ease), transform .22s var(--ease), visibility 0s linear .24s; }
.menupanel.on{ visibility:visible; opacity:1; transform:none; pointer-events:auto; transition-delay:0s; }
.menuin{ padding:12px 24px 22px; display:flex; flex-direction:column; }
/* alvo de toque com folga: 52px de altura, bem acima do mínimo de 44 */
.menuin a{ display:flex; align-items:center; min-height:52px; padding:0 4px; color:#e6e0f5; font-size:1.05rem; font-weight:500;
  border-bottom:1px solid rgba(255,255,255,.07); }
.menuin a:last-of-type{ border-bottom:none; }
.menuin a.btn{ margin-top:16px; justify-content:center; padding:15px 24px; font-size:15.5px; border-bottom:none; color:#fff; }

@media(max-width:840px){
  .menubt{ display:flex; }
  .menupanel{ display:block; }
  /* o botão de empresas sai da barra e passa a viver dentro do painel: na
     barra do celular ele disputava espaço com o logo e com o menu, e é a ação
     menos provável de quem chega aqui, que é usuário final */
  .navin > .btn.gh{ display:none; }
  /* o painel desce de dentro do nav, então o nav precisa ser a referência */
  nav > .navin{ position:relative; }
}

/* ---------- afinação de celular ----------
 * O tráfego do institucional vem da bio do Instagram, ou seja, quase tudo
 * chega pelo celular. Aqui é onde a página tem que estar certa primeiro.
 */
@media(max-width:640px){
  /* o título de 5 linhas empurrava o vídeo pra fora da primeira tela inteira */
  h1{ font-size:2.05rem; letter-spacing:-.03em; }
  .hero{ padding:44px 0 64px; }
  .hero p.hs{ margin-top:20px; font-size:1.06rem; }
  .hero .cbtns{ margin-top:26px; gap:10px; }
  /* botão de largura cheia: no polegar, alvo largo vale mais que botão bonito */
  .hero .cbtns .btn{ width:100%; justify-content:center; padding:15px 22px; }

  .manifesto .lead{ font-size:1.08rem; }
  .manifesto .lead+.lead{ font-size:1.02rem; }

  .funcs{ padding:56px 0 62px; }
  .demo{ margin-top:30px; }
  .confirma{ margin-top:32px; }

  .duas{ padding:60px 0; }
  .lado{ padding:28px 24px 26px; border-radius:20px; }
  .lado h3{ font-size:1.42rem; }

  .modelo{ padding:60px 0; }
  .modelo .txt p.first{ font-size:1.1rem; }
  .bizcard{ padding:26px 24px 28px; }

  .cta.inst{ padding:64px 0 60px; }
  .cta.inst .cbtns .btn{ width:100%; justify-content:center; }
}
