Pular para o conteúdo
AR Online

eventos-altus-2026

[et_pb_section fb_built="1" fullwidth="on" admin_label="Hero Form" _builder_version="4.27.4" _module_preset="default" da_disable_devices="off|off|off" global_colors_info="{}" da_is_popup="off" da_exit_intent="off" da_has_close="on" da_alt_close="off" da_dark_close="off" da_not_modal="on" da_is_singular="off" da_with_loader="off" da_has_shadow="on"][et_pb_fullwidth_code _builder_version="4.27.4" _module_preset="default" hover_enabled="0" global_colors_info="{}" sticky_enabled="0"] ALTUS — CAPTURA DE LEAD EM FORMATO QUIZ Colar num único módulo Código do Divi. Página no modelo "Em branco" (traz o próprio rodapé). CONTEXTO: o Altus NÃO é evento da AR Online. Somos participantes. Esta página é a ferramenta de captação usada no evento (estande, QR code, tablet) — NÃO é página de inscrição no Altus, e não deve dar a entender que a AR Online organiza ou credencia o evento. ⚠ As 5 perguntas e as opções são as definitivas, passadas pelo time. O público é escritório de advocacia que pede documentos a bancos. O que está entre [ ] continua pendente: nome/data oficial do evento, nº do estande e o que a pessoa recebe em troca. ⚠ Nas perguntas 1 a 4 não existe opção para quem JÁ tem a comprovação resolvida. É escolha de funil (toda resposta qualifica a dor), mas quem estiver resolvido marca algo falso ou abandona — e o dado chega sujo. Se for virar problema, a saída é uma terceira opção neutra por pergunta. ⚠ O texto do consentimento LGPD precisa de validação do Jurídico antes de publicar — a finalidade declarada ali define o que o Comercial pode fazer com o lead depois. São 7 passos: 5 perguntas, 1 de dados e a tela de obrigado. A tela de obrigado é o passo 7 desta mesma página — NÃO existe página de obrigado separada nesta campanha. MANTENHA: os ids e os atributos data-passo, data-campo, data-valor e data-rotulo — o JS depende deles. Para mudar o número de perguntas, acrescente/remova blocos .alt-passo em sequência e ajuste TOTAL_PERGUNTAS, PASSO_DADOS e PASSO_OBRIGADO no script. ═══════════════════════════════════════════════════════════════ --> inteira; o conteúdo dela é que volta para o wrap. Nada de 100vw aqui: com barra de rolagem, 100vw é maior que a área útil e devolve rolagem horizontal. -->

AR Online

AR Online · Altus Bancário 2026

Altus Bancário 2026 · 9, 10 e 11 Out Seu escritório consegue provar o que enviou? 5 perguntas rápidas. No fim: seu diagnóstico, 3 créditos grátis e um brinde no nosso estande.

Pergunta 1 de 5 17%

role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="17" aria-label="Progresso do questionário" id="alt-prog-trilho">

role="group" aria-labelledby="alt-q1"> Como você envia hoje os pedidos de documentos aos bancos? O caminho mais usado no dia a dia. data-valor="envio_informal" data-rotulo="Por WhatsApp ou e-mail comum"> A Por WhatsApp ou e-mail comum data-valor="envio_direto_acao" data-rotulo="Não envio — entro direto com a ação"> B Não envio — entro direto com a ação data-valor="envio_plataforma" data-rotulo="Por plataforma com Carimbo do Tempo"> C Por plataforma com Carimbo do Tempo

role="group" aria-labelledby="alt-q2"> Você consegue provar a data e o conteúdo exato do que enviou? data-valor="prova_nao" data-rotulo="Não"> A Não data-valor="prova_print" data-rotulo="Só com print"> B Só com print data-valor="prova_carimbo" data-rotulo="Sim, com Carimbo do Tempo ICP-Brasil"> C Sim, com Carimbo do Tempo ICP-Brasil

role="group" aria-labelledby="alt-q3"> Você tem comprovação de que a mensagem foi recebida? data-valor="recebimento_nao_sei" data-rotulo="Não sei dizer"> A Não sei dizer data-valor="recebimento_nao" data-rotulo="Não"> B Não data-valor="recebimento_registro" data-rotulo="Sim, tenho registro de cada entrega"> C Sim, tenho registro de cada entrega

role="group" aria-labelledby="alt-q4"> Onde ficam guardados os comprovantes de cada cliente? data-valor="guarda_celular" data-rotulo="No celular"> A No celular data-valor="guarda_espalhado" data-rotulo="Espalhados em vários lugares"> B Espalhados em vários lugares data-valor="guarda_painel" data-rotulo="Num painel único, por cliente"> C Num painel único, por cliente

role="group" aria-labelledby="alt-q5"> Quantas notificações o escritório envia por mês? Uma estimativa já serve. data-valor="vol_ate_100" data-rotulo="Até 100"> A Até 100 data-valor="vol_100_500" data-rotulo="De 100 a 500"> B De 100 a 500 data-valor="vol_mais_500" data-rotulo="Mais de 500"> C Mais de 500

Falta só isso. Seu resultado aparece na próxima tela. Nome completo autocomplete="name" required>

E-mail corporativo autocomplete="email" inputmode="email" required>

Telefone / WhatsApp autocomplete="tel" inputmode="tel" maxlength="16" required>

publicar. É ele que delimita o contato comercial posterior. --> Autorizo o contato da AR Online sobre suas soluções, nos termos da LGPD (Lei nº 13.709/2018). rel="noopener">Ver Política de Privacidade. VER MEU RESULTADO stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">

Seus dados são tratados em conformidade com a LGPD (Lei nº 13.709/2018).

Último passo real: substitui o quiz na mesma página, por isso esta campanha não tem página de obrigado. O diagnóstico é a recompensa da troca — vem DEPOIS dos dados, não antes. Badge, diagnóstico e recomendação são preenchidos pelo script (tabela RESULTADOS), não moram aqui. A cor sai do atributo data-resultado. -->

role="status" aria-live="polite"> stroke-width="2" stroke-linecap="round" stroke-linejoin="round">

, seu processo está vulnerável." Sem nome, cai para a frase sozinha. -->

O que fazer agora

situação probatória de um escritório. Validar o texto dos três resultados com o Jurídico antes de publicar. -->

Diagnóstico indicativo, baseado só nas respostas acima. Não é avaliação jurídica.

Sem cor de ação: a única pílula amarela da tela é o botão dos créditos, logo abaixo. -->

fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"> Hub USB Mostre esta tela no estande da AR Online e retire o seu.

sobras que viram o recorte, arredondadas pelos dois anéis girados do CSS -->

Altus Bancário 2026 · 9, 10 e 11 Out · Estande da AR Online

3 créditos grátis para testar Use 3 créditos por nossa conta e veja o relatório pericial da notificação. id="alt-creditos-cta"> RESGATAR MEUS 3 CRÉDITOS stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"> Válido por 30 dias, para novos cadastros.

stroke-width="2.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"> Voltar

VEJA NA PRÁTICA — visualizador em abas Portado da LP TechJur (~/Downloads/lp-techjur/novo.html): mesmo conteúdo, prefixo tj- trocado por alt- e paleta trazida para o tema escuro desta campanha. As abas e os botões Anterior/Próxima são controlados pelo JS. ⚠ Todos os dados do documento são FICTÍCIOS e a peça leva marca d'água "EXEMPLO". Não trocar por conteúdo de notificação real de cliente — nem nome, CPF, telefone, e-mail ou endereço. ─────────────────────────────────────────────────────────────── -->

Veja na prática Por dentro do Relatório Pericial Digital Navegue pelas seções do relatório que a AR Online gera a cada envio. Os dados abaixo são fictícios; a estrutura é a mesma do documento real. de cards deslizante e passam a ser a única navegação --> Toque em uma seção para abrir a página correspondente do relatório. Arraste a lista para o lado para ver todas. 1Resumo da comunicaçãoQuem enviou, para quem, quando e o status 2Definições técnicasCarimbo do Tempo, hash, IP, SMTP 3Amparo legalA base jurídica da evidência 4Conteúdo e anexosO que foi enviado, exatamente 5Trilha de auditoriaA conversa entre os servidores 6Carimbos do Tempo e conclusãoHash de cada evento e parecer final

AROnlineRELATÓRIO PERICIAL DIGITALEvidência Digital — Plataforma AR OnlineID: 7f3a9c21-4b8e-4d2a
30/09/2026

1. Resumo da Comunicação Geração do Relatório30/09/2026 às 10:24:31 ID da Mensagem7f3a9c21-4b8e-4d2a-9f10-0e5c2b7a1d36 RemetenteEscritório Exemplo Advocacia Destinatáriofinanceiro@empresaexemplo.com.br AssuntoNotificação extrajudicial Data do Envio30/09/2026 às 10:24:12 StatusEntregue Data do Status30/09/2026 às 10:24:17

AR Online — Plataforma de Evidências DigitaisPágina 1 de 13

EXEMPLO

O que isso prova

Que a notificação saiu e chegou

Em uma página, o juiz vê o identificador único da mensagem, remetente, destinatário, horário exato do envio e o status de entrega.

Página 1 de 13

← AnteriorPróxima →

AROnlineRELATÓRIO PERICIAL DIGITALEvidência Digital — Plataforma AR OnlineID: 7f3a9c21-4b8e-4d2a
30/09/2026

2. Definições Carimbo do Tempo (timestamping)Selo que atesta a data e a hora exatas de um evento, criando evidência da sua existência temporal. Algoritmo de Resumo (Hash)Código alfanumérico único gerado para um arquivo; funciona como uma impressão digital eletrônica. IP (Internet Protocol)Identificador numérico de cada dispositivo conectado a uma rede. SMTPProtocolo que permite o envio de e-mails de um servidor para outro. Trilha de AuditoriaRegistro cronológico de eventos que reconstrói o percurso técnico da mensagem até a entrega.

AR Online — Plataforma de Evidências DigitaisPágina 2 de 13

EXEMPLO

O que isso prova

Que qualquer pessoa entende a prova

O relatório explica cada termo técnico. Advogado, juiz ou perito leem a evidência sem precisar de tradução.

Página 2 de 13

← AnteriorPróxima →

AROnlineRELATÓRIO PERICIAL DIGITALEvidência Digital — Plataforma AR OnlineID: 7f3a9c21-4b8e-4d2a
30/09/2026

4. Amparo Legal e Validade Jurídica O suporte legal para a aceitação destas provas decorre da combinação dos seguintes dispositivos: MP nº 2.200-2/2001 (art. 10): instituiu a ICP-Brasil e trata da autenticidade e integridade de documentos eletrônicos. Código Civil (art. 219): declarações em documentos assinados em relação aos signatários. Código de Processo Civil (art. 374, IV): fatos em cujo favor milita presunção legal. Lei nº 13.874/2019: documento digital e técnica de certificação da ICP-Brasil.

AR Online — Plataforma de Evidências DigitaisPágina 4 de 13

EXEMPLO

O que isso prova

Que a evidência tem base legal

O próprio relatório indica os fundamentos da ICP-Brasil e do processo civil que sustentam a prova digital.

Página 4 de 13

← AnteriorPróxima →

AROnlineRELATÓRIO PERICIAL DIGITALEvidência Digital — Plataforma AR OnlineID: 7f3a9c21-4b8e-4d2a
30/09/2026

5. E-mail · Conteúdo da Comunicação Prezados, Por meio desta, notificamos V.Sas. acerca da pendência referente ao contrato nº 0000/2026, com vencimento em 15/09/2026, no valor de R$ 0.000,00. Solicitamos a regularização em até 10 (dez) dias úteis. Em caso de dúvida, entre em contato pelo canal indicado. Atenciosamente,
Escritório Exemplo Advocacia Anexos Notificacao_Extrajudicial.pdfBoleto_contrato_0000.pdf Nota Legal: este e-mail foi enviado via AR Online e recebe Carimbo do Tempo a cada evento.

AR Online — Plataforma de Evidências DigitaisPágina 6 de 13

EXEMPLO

O que isso prova

O que exatamente foi dito

O conteúdo integral e a lista de anexos ficam registrados. Acaba a discussão sobre o que foi ou não comunicado.

Página 6 de 13

← AnteriorPróxima →

AROnlineRELATÓRIO PERICIAL DIGITALEvidência Digital — Plataforma AR OnlineID: 7f3a9c21-4b8e-4d2a
30/09/2026

Trilha de Auditoria de Envio2026/09/30 10:24:13: send: ehlo mailer.exemplo2026/09/30 10:24:13: reply: 220 SMTP server ready2026/09/30 10:24:14: reply: 250-STARTTLS2026/09/30 10:24:14: reply: 250 SMTPUTF82026/09/30 10:24:15: reply: 250 2.1.0 Sender OK2026/09/30 10:24:15: reply: 250 2.1.5 Recipient OK2026/09/30 10:24:15: reply: 354 Start mail input2026/09/30 10:24:17: reply: 250 2.0.0 OK queued2026/09/30 10:24:17: reply: 221 closing channel

Registro cronológico da comunicação entre o servidor de envio e o servidor do destinatário, do primeiro contato à confirmação de recebimento.

AR Online — Plataforma de Evidências DigitaisPágina 8 de 13

EXEMPLO

O que isso prova

O caminho técnico até a entrega

Cada etapa da conversa entre servidores fica registrada, incluindo o aceite do destinatário ("Recipient OK") e a confirmação do recebimento.

Página 8 de 13

← AnteriorPróxima →

AROnlineRELATÓRIO PERICIAL DIGITALEvidência Digital — Plataforma AR OnlineID: 7f3a9c21-4b8e-4d2a
30/09/2026

Carimbos do Tempo Carimbo de Envio30/09/2026 10:24:17 Hash3b9e0f7a1c64d2e58b07f9a3c1d6e4b2a8f05c7d9e1b3a6c4f2d8e0a7b5c9d1e 6. Conclusão A comunicação eletrônica objeto deste relatório foi submetida a processos de certificação digital e carimbagem do tempo conforme os padrões da ICP-Brasil. O emprego de algoritmos de hash e protocolos de criptografia assegura a integridade do conteúdo e dos anexos desde o momento de sua geração. As evidências são aptas a instruir processos judiciais ou administrativos, com rastreabilidade da origem e da entrega no destino.

AR Online — Plataforma de Evidências DigitaisPágina 13 de 13

EXEMPLO

O que isso prova

Que nada foi alterado depois

Cada evento recebe um Carimbo do Tempo vinculado a um hash exclusivo, emitido por Autoridade credenciada ao ITI. Qualquer alteração posterior ficaria evidente.

Página 13 de 13

← AnteriorPróxima →

Aqui falamos da AR Online, não do evento — o Altus não é nosso. -->

Quem é a AR Online Notificação digital multicanal com validade jurídica. Cinco canais AR-Email, AR-SMS, AR-Whatsapp, AR-Voz e AR-Cartas.

Carimbo do Tempo ICP-Brasil Autenticidade, integridade e temporalidade em cada envio.

No Altus Bancário 2026 Estande da AR Online. 9, 10 e 11 de outubro de 2026.

Estrutura e estilo iguais aos da LP "12 modelos de notificações gratuitos". Lá o elemento é ; aqui é

de propósito — JS de tema e de plugin procura cabeçalho e rodapé por tag e pode pegar o nosso por engano (divi.md, item 11). O visual é o mesmo. --> alt="AR Online" loading="lazy" decoding="async"> Tecnologia avançada para comunicações seguras desde 2014.

Contato CNPJ: 37.459.079/0001-23
comercial@aronline.com.br

AR Online © 2014 – 2026 – Todos os direitos reservados.  |  Privacidade

[/et_pb_fullwidth_code][/et_pb_section][et_pb_section fb_built="1" fullwidth="on" admin_label="JS Global" _builder_version="4.27.4" _module_preset="default" da_disable_devices="off|off|off" global_colors_info="{}" da_is_popup="off" da_exit_intent="off" da_has_close="on" da_alt_close="off" da_dark_close="off" da_not_modal="on" da_is_singular="off" da_with_loader="off" da_has_shadow="on"][et_pb_fullwidth_code _builder_version="4.27.4" _module_preset="default" hover_enabled="0" global_colors_info="{}" sticky_enabled="0"] ALTUS · JAVASCRIPT Colar em Divi > Opções do Tema > Integrações > corpo, ou no fim do mesmo módulo Código. ⚠ CONFIRA AS CONSTANTES antes de publicar. Campanha nova quer webhook próprio, senão os leads se misturam e a atribuição se perde. Não há URL de obrigado aqui: a tela de obrigado é o passo 7 da própria página. ⚠ CAMPO NOVO EXIGE MAPEAMENTO NO n8n. O payload leva q1..q5 em duas colunas cada (valor + rótulo). Se ninguém mapear, o dado chega e se perde em silêncio. ═══════════════════════════════════════════════════════════════ --><!-- [et_pb_line_break_holder] -->(function(){<!-- [et_pb_line_break_holder] --> "use strict";<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* ⚠ O endpoint é COMPARTILHADO por várias campanhas de evento. É o<!-- [et_pb_line_break_holder] --> EVENTO_ID que separa um lead do outro lá no n8n — campanha nova,<!-- [et_pb_line_break_holder] --> EVENTO_ID novo, sempre. Se duas campanhas saírem com o mesmo id, os<!-- [et_pb_line_break_holder] --> leads se misturam e a atribuição se perde sem dar erro em lugar<!-- [et_pb_line_break_holder] --> nenhum.<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> ⚠ CONFERIR o caminho do webhook: veio "leads-eventos" no texto e<!-- [et_pb_line_break_holder] --> "eventos" no link. Está com "leads-eventos". */<!-- [et_pb_line_break_holder] --> var WEBHOOK = 'https://n8n-mkt-dev.ar-infra.com.br/webhook/leads-eventos';<!-- [et_pb_line_break_holder] --> var EVENTO_ID = 'altus-bancario-2026'; /* separa este evento no n8n */<!-- [et_pb_line_break_holder] --> var EVENTO_GTM = 'lead_altus'; /* nome do evento no dataLayer */<!-- [et_pb_line_break_holder] --> var TOTAL_PERGUNTAS = 5; /* passos 1..5 */<!-- [et_pb_line_break_holder] --> var PASSO_DADOS = 6;<!-- [et_pb_line_break_holder] --> var PASSO_OBRIGADO = 7;<!-- [et_pb_line_break_holder] --> var ATRASO_AVANCO = 230; /* ms para a seleção ser vista antes de avançar */<!-- [et_pb_line_break_holder] --> var TIMEOUT_MS = 6000; /* teto de espera do webhook antes de seguir */<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* ─────────────────────────────────────────────────────────────────<!-- [et_pb_line_break_holder] --> PONTUAÇÃO<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> A pergunta 5 (volume) está FORA de propósito: volume não é<!-- [et_pb_line_break_holder] --> proteção — enviar 500 notificações sem prova deixa mais exposto,<!-- [et_pb_line_break_holder] --> não menos. Ela serve para priorizar o lead no n8n, não para a nota.<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> As perguntas 2 e 3 (prova de conteúdo/data e prova de recebimento)<!-- [et_pb_line_break_holder] --> pesam 3; canal e guarda pesam 2. Consequência desenhada de<!-- [et_pb_line_break_holder] --> propósito: SEM a opção C nas duas perguntas de prova, o teto é 8 —<!-- [et_pb_line_break_holder] --> ninguém é classificado como Protegido sem ter as duas provas.<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> Na pergunta 3, "não sei" e "não" valem o mesmo: quem não sabe não<!-- [et_pb_line_break_holder] --> tem. Continuam separadas porque mudam a conversa, não a nota.<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> Mexeu nas opções do HTML? Mexa aqui. Valor que não estiver nesta<!-- [et_pb_line_break_holder] --> tabela conta zero e marca pontuacao_incompleta no payload, para o<!-- [et_pb_line_break_holder] --> erro aparecer no n8n em vez de sumir.<!-- [et_pb_line_break_holder] --> ───────────────────────────────────────────────────────────────── */<!-- [et_pb_line_break_holder] --> var PESOS = {<!-- [et_pb_line_break_holder] --> q1:{ envio_informal:1, envio_direto_acao:0, envio_plataforma:2 },<!-- [et_pb_line_break_holder] --> q2:{ prova_nao:0, prova_print:1, prova_carimbo:3 },<!-- [et_pb_line_break_holder] --> q3:{ recebimento_nao_sei:0, recebimento_nao:0, recebimento_registro:3 },<!-- [et_pb_line_break_holder] --> q4:{ guarda_celular:1, guarda_espalhado:0, guarda_painel:2 }<!-- [et_pb_line_break_holder] --> };<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* faixas em ordem decrescente: a primeira cujo mínimo for alcançado vence */<!-- [et_pb_line_break_holder] --> var RESULTADOS = [<!-- [et_pb_line_break_holder] --> { chave:'protegido', minimo:9,<!-- [et_pb_line_break_holder] --> frase:'Seu processo está protegido.',<!-- [et_pb_line_break_holder] --> diagnostico:'Você tem prova do que enviou e de quem recebeu.',<!-- [et_pb_line_break_holder] --> recomendacao:'Confira se vale para todos os clientes, não só os maiores.' },<!-- [et_pb_line_break_holder] --> { chave:'atencao', minimo:5,<!-- [et_pb_line_break_holder] --> frase:'Seu processo pede atenção.',<!-- [et_pb_line_break_holder] --> diagnostico:'Você tem parte da prova. Falta fechar um pedaço.',<!-- [et_pb_line_break_holder] --> recomendacao:'Comece pelo pedaço que falta: envio, prova de conteúdo, '<!-- [et_pb_line_break_holder] --> + 'prova de recebimento ou guarda.' },<!-- [et_pb_line_break_holder] --> /* as três frases falam do PROCESSO, não da pessoa: cara a cara no<!-- [et_pb_line_break_holder] --> estande, "você está vulnerável" soa como acusação */<!-- [et_pb_line_break_holder] --> { chave:'vulneravel', minimo:0,<!-- [et_pb_line_break_holder] --> frase:'Seu processo está vulnerável.',<!-- [et_pb_line_break_holder] --> diagnostico:'Hoje sua prova depende de print e memória.',<!-- [et_pb_line_break_holder] --> recomendacao:'Centralize o envio num canal que registre data e conteúdo.' }<!-- [et_pb_line_break_holder] --> ];<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* calculado, não escrito à mão: muda sozinho se os pesos mudarem */<!-- [et_pb_line_break_holder] --> var PONTUACAO_MAX = Object.keys(PESOS).reduce(function(soma, q){<!-- [et_pb_line_break_holder] --> var vals = Object.keys(PESOS[q]).map(function(k){ return PESOS[q][k] });<!-- [et_pb_line_break_holder] --> return soma + Math.max.apply(null, vals);<!-- [et_pb_line_break_holder] --> }, 0);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> function init(){<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* ══ "Veja na prática": visualizador em abas ════════════════════<!-- [et_pb_line_break_holder] --> Portado da LP TechJur. Vem ANTES do bloco do formulário porque<!-- [et_pb_line_break_holder] --> logo abaixo há um `return` quando o form não existe — se ficasse<!-- [et_pb_line_break_holder] --> depois, qualquer página sem o quiz perderia o visualizador.<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> Um <button role="tab"> por seção; o painel é achado pelo<!-- [et_pb_line_break_holder] --> aria-controls. O estado mora no DOM (aria-selected + hidden), não<!-- [et_pb_line_break_holder] --> numa variável paralela: assim o leitor de tela e o CSS leem a<!-- [et_pb_line_break_holder] --> mesma verdade. */<!-- [et_pb_line_break_holder] --> (function(){<!-- [et_pb_line_break_holder] --> var abas = [].slice.call(document.querySelectorAll('.alt-aba'));<!-- [et_pb_line_break_holder] --> if(!abas.length) return;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* ── por que NÃO usar scrollIntoView aqui ──<!-- [et_pb_line_break_holder] --> scrollIntoView rola TODOS os contêineres roláveis do caminho,<!-- [et_pb_line_break_holder] --> inclusive a página. No desktop não aparece: as abas ficam na<!-- [et_pb_line_break_holder] --> coluna da esquerda, sempre à vista. No celular a faixa de abas<!-- [et_pb_line_break_holder] --> fica no topo e o painel bem abaixo — tocar numa aba jogava a<!-- [et_pb_line_break_holder] --> página centenas de pixels para cima, atrás do que a pessoa<!-- [et_pb_line_break_holder] --> estava lendo. Aqui só a faixa rola, na horizontal. */<!-- [et_pb_line_break_holder] --> function centralizaAba(el){<!-- [et_pb_line_break_holder] --> var faixa = el.parentElement;<!-- [et_pb_line_break_holder] --> if(!faixa || faixa.scrollWidth <= faixa.clientWidth) return; /* desktop: não rola */<!-- [et_pb_line_break_holder] --> var rF = faixa.getBoundingClientRect(), rE = el.getBoundingClientRect();<!-- [et_pb_line_break_holder] --> var alvo = faixa.scrollLeft + (rE.left - rF.left) - (rF.width - rE.width) / 2;<!-- [et_pb_line_break_holder] --> var suave = !window.matchMedia('(prefers-reduced-motion: reduce)').matches;<!-- [et_pb_line_break_holder] --> faixa.scrollTo({left: alvo, behavior: suave ? 'smooth' : 'auto'});<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> function mostrarAba(i){<!-- [et_pb_line_break_holder] --> if(i < 0) i = abas.length - 1;<!-- [et_pb_line_break_holder] --> if(i >= abas.length) i = 0;<!-- [et_pb_line_break_holder] --> abas.forEach(function(t,k){<!-- [et_pb_line_break_holder] --> var ligada = (k === i);<!-- [et_pb_line_break_holder] --> t.setAttribute('aria-selected', ligada ? 'true' : 'false');<!-- [et_pb_line_break_holder] --> /* só a aba ativa entra na ordem de tabulação: é o padrão de<!-- [et_pb_line_break_holder] --> tablist — o Tab sai do grupo e as setas navegam dentro */<!-- [et_pb_line_break_holder] --> t.tabIndex = ligada ? 0 : -1;<!-- [et_pb_line_break_holder] --> var painel = document.getElementById(t.getAttribute('aria-controls'));<!-- [et_pb_line_break_holder] --> if(painel) painel.hidden = !ligada;<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> centralizaAba(abas[i]);<!-- [et_pb_line_break_holder] --> return i;<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> var abaAtual = 0;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> abas.forEach(function(t,k){<!-- [et_pb_line_break_holder] --> t.addEventListener('click', function(){ abaAtual = mostrarAba(k) });<!-- [et_pb_line_break_holder] --> t.addEventListener('keydown', function(e){<!-- [et_pb_line_break_holder] --> /* preventScroll pelo mesmo motivo: focar um elemento fora da<!-- [et_pb_line_break_holder] --> vista também rola a página */<!-- [et_pb_line_break_holder] --> if(e.key === 'ArrowDown' || e.key === 'ArrowRight'){<!-- [et_pb_line_break_holder] --> e.preventDefault(); abaAtual = mostrarAba(abaAtual + 1);<!-- [et_pb_line_break_holder] --> abas[abaAtual].focus({preventScroll:true});<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> if(e.key === 'ArrowUp' || e.key === 'ArrowLeft'){<!-- [et_pb_line_break_holder] --> e.preventDefault(); abaAtual = mostrarAba(abaAtual - 1);<!-- [et_pb_line_break_holder] --> abas[abaAtual].focus({preventScroll:true});<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> [].slice.call(document.querySelectorAll('[data-alt-go]')).forEach(function(b){<!-- [et_pb_line_break_holder] --> b.addEventListener('click', function(){<!-- [et_pb_line_break_holder] --> abaAtual = mostrarAba(abaAtual + parseInt(b.getAttribute('data-alt-go'), 10));<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> })();<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> var form = document.getElementById('alt-form');<!-- [et_pb_line_break_holder] --> if(!form) return;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> var head = document.getElementById('alt-head');<!-- [et_pb_line_break_holder] --> var prog = document.getElementById('alt-prog');<!-- [et_pb_line_break_holder] --> var progPasso = document.getElementById('alt-prog-passo');<!-- [et_pb_line_break_holder] --> var progPct = document.getElementById('alt-prog-pct');<!-- [et_pb_line_break_holder] --> var progBarra = document.getElementById('alt-prog-barra');<!-- [et_pb_line_break_holder] --> var progTrilho= document.getElementById('alt-prog-trilho');<!-- [et_pb_line_break_holder] --> var nav = document.getElementById('alt-nav');<!-- [et_pb_line_break_holder] --> var btnVoltar = document.getElementById('alt-voltar');<!-- [et_pb_line_break_holder] --> var erro = document.getElementById('alt-erro');<!-- [et_pb_line_break_holder] --> var cartao = form.closest('.alt-quiz');<!-- [et_pb_line_break_holder] --> var passos = Array.prototype.slice.call(form.querySelectorAll('.alt-passo'));<!-- [et_pb_line_break_holder] --> var atual = 1;<!-- [et_pb_line_break_holder] --> var enviando = false;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* respostas: {q1:{valor,rotulo}, ...} */<!-- [et_pb_line_break_holder] --> var respostas = {};<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* ── entrada em cascata ──<!-- [et_pb_line_break_holder] --> IntersectionObserver, não listener de scroll: não roda a cada<!-- [et_pb_line_break_holder] --> quadro e se desliga sozinho depois de revelar. */<!-- [et_pb_line_break_holder] --> (function(){<!-- [et_pb_line_break_holder] --> var reduz = window.matchMedia('(prefers-reduced-motion: reduce)').matches;<!-- [et_pb_line_break_holder] --> var semAnim = new URLSearchParams(window.location.search).get('anim') === '0';<!-- [et_pb_line_break_holder] --> var alvos = document.querySelectorAll('.alt-in');<!-- [et_pb_line_break_holder] --> if(!alvos.length) return;<!-- [et_pb_line_break_holder] --> if(reduz || semAnim || !('IntersectionObserver' in window)){<!-- [et_pb_line_break_holder] --> Array.prototype.forEach.call(alvos, function(el){ el.classList.add('in') });<!-- [et_pb_line_break_holder] --> return;<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> var obs = new IntersectionObserver(function(ent){<!-- [et_pb_line_break_holder] --> ent.forEach(function(e){<!-- [et_pb_line_break_holder] --> if(!e.isIntersecting) return;<!-- [et_pb_line_break_holder] --> setTimeout(function(){ e.target.classList.add('in') },<!-- [et_pb_line_break_holder] --> (+e.target.dataset.i || 0) * 80);<!-- [et_pb_line_break_holder] --> obs.unobserve(e.target);<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> },{threshold:.15});<!-- [et_pb_line_break_holder] --> /* o índice reinicia por seção: senão os blocos do fim da página<!-- [et_pb_line_break_holder] --> herdam um atraso grande e parecem travados */<!-- [et_pb_line_break_holder] --> var sec = null, i = 0;<!-- [et_pb_line_break_holder] --> Array.prototype.forEach.call(alvos, function(el){<!-- [et_pb_line_break_holder] --> var s = el.closest('section,div.alt');<!-- [et_pb_line_break_holder] --> if(s !== sec){ sec = s; i = 0 }<!-- [et_pb_line_break_holder] --> el.dataset.i = i++;<!-- [et_pb_line_break_holder] --> obs.observe(el);<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> })();<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* ── UTMs ──<!-- [et_pb_line_break_holder] --> Guardadas assim que a página abre: o quiz troca de passo sem<!-- [et_pb_line_break_holder] --> recarregar, mas quem volta pelo histórico ou abre outra aba<!-- [et_pb_line_break_holder] --> perde a query antes do envio. */<!-- [et_pb_line_break_holder] --> (function(){<!-- [et_pb_line_break_holder] --> var p = new URLSearchParams(window.location.search);<!-- [et_pb_line_break_holder] --> ['utm_source','utm_medium','utm_campaign','utm_content','utm_term',<!-- [et_pb_line_break_holder] --> 'utm_id','gclid','fbclid'].forEach(function(k){<!-- [et_pb_line_break_holder] --> var v = p.get(k);<!-- [et_pb_line_break_holder] --> if(v){ try{ sessionStorage.setItem(k,v) }catch(e){} }<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> })();<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> function utms(){<!-- [et_pb_line_break_holder] --> function s(k){ try{ return sessionStorage.getItem(k) || '' }catch(e){ return '' } }<!-- [et_pb_line_break_holder] --> return {utm_source:s('utm_source'), utm_medium:s('utm_medium'),<!-- [et_pb_line_break_holder] --> utm_campaign:s('utm_campaign'), utm_content:s('utm_content'),<!-- [et_pb_line_break_holder] --> utm_term:s('utm_term'), utm_id:s('utm_id'),<!-- [et_pb_line_break_holder] --> gclid:s('gclid'), fbclid:s('fbclid')};<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* ── navegação entre passos ── */<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> function passoEl(n){<!-- [et_pb_line_break_holder] --> return form.querySelector('.alt-passo[data-passo="' + n + '"]');<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* rolagem instantânea, nunca scroll-behavior:smooth — o Divi tem a<!-- [et_pb_line_break_holder] --> rolagem suave dele em jQuery e as duas se cancelam (divi.md, 7) */<!-- [et_pb_line_break_holder] --> function trazParaTela(){<!-- [et_pb_line_break_holder] --> if(!cartao) return;<!-- [et_pb_line_break_holder] --> var topo = cartao.getBoundingClientRect().top;<!-- [et_pb_line_break_holder] --> if(topo < 0 || topo > window.innerHeight * .6){<!-- [et_pb_line_break_holder] --> window.scrollTo(0, Math.max(0, window.pageYOffset + topo - 24));<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> function atualizaProgresso(){<!-- [et_pb_line_break_holder] --> if(atual >= PASSO_OBRIGADO){<!-- [et_pb_line_break_holder] --> if(prog) prog.classList.add('alt-oculto');<!-- [et_pb_line_break_holder] --> if(head) head.classList.add('alt-oculto');<!-- [et_pb_line_break_holder] --> return;<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> if(prog) prog.classList.remove('alt-oculto');<!-- [et_pb_line_break_holder] --> var pct = Math.round(atual / PASSO_DADOS * 100);<!-- [et_pb_line_break_holder] --> if(progPasso) progPasso.textContent = (atual <= TOTAL_PERGUNTAS)<!-- [et_pb_line_break_holder] --> ? 'Pergunta ' + atual + ' de ' + TOTAL_PERGUNTAS<!-- [et_pb_line_break_holder] --> : 'Seus dados';<!-- [et_pb_line_break_holder] --> if(progPct) progPct.textContent = pct + '%';<!-- [et_pb_line_break_holder] --> if(progBarra) progBarra.style.width = pct + '%';<!-- [et_pb_line_break_holder] --> if(progTrilho) progTrilho.setAttribute('aria-valuenow', String(pct));<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> function mostra(n, foco){<!-- [et_pb_line_break_holder] --> atual = n;<!-- [et_pb_line_break_holder] --> passos.forEach(function(p){<!-- [et_pb_line_break_holder] --> p.classList.toggle('alt-ativo', +p.dataset.passo === n);<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> atualizaProgresso();<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* "Voltar" não aparece no primeiro passo nem depois do envio */<!-- [et_pb_line_break_holder] --> if(nav) nav.classList.toggle('alt-oculto', n === 1 || n >= PASSO_OBRIGADO);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> trazParaTela();<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> if(foco === false) return;<!-- [et_pb_line_break_holder] --> var el = passoEl(n);<!-- [et_pb_line_break_holder] --> if(!el) return;<!-- [et_pb_line_break_holder] --> /* foco no TÍTULO do passo, não na primeira opção: o leitor de tela<!-- [et_pb_line_break_holder] --> anuncia a pergunta nova, e quem usa mouse não vê a opção A com<!-- [et_pb_line_break_holder] --> anel de foco parecendo pré-selecionada. Em celular, focar o<!-- [et_pb_line_break_holder] --> <input> abriria o teclado sozinho no passo dos dados. */<!-- [et_pb_line_break_holder] --> var alvo = el.querySelector('.alt-q') || el;<!-- [et_pb_line_break_holder] --> alvo.setAttribute('tabindex','-1');<!-- [et_pb_line_break_holder] --> try{ alvo.focus({preventScroll:true}) }catch(e){ try{ alvo.focus() }catch(e2){} }<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* ── piso do cartão ──<!-- [et_pb_line_break_holder] --> Trocar de pergunta não pode encolher o cartão: no celular isso<!-- [et_pb_line_break_holder] --> move o botão para debaixo do polegar no meio do toque. O piso é<!-- [et_pb_line_break_holder] --> a altura do MAIOR passo de pergunta — medido, não chutado, porque<!-- [et_pb_line_break_holder] --> um px fixo no CSS apodrece a cada troca de copy e ainda muda com<!-- [et_pb_line_break_holder] --> a largura (324px em 820, 403px em 375). Os passos 6 e 7 passam do<!-- [et_pb_line_break_holder] --> piso e crescem à vontade: ali o salto é esperado, muda o tipo de<!-- [et_pb_line_break_holder] --> tela. */<!-- [et_pb_line_break_holder] --> function ajustaPiso(){<!-- [et_pb_line_break_holder] --> form.style.minHeight = '0';<!-- [et_pb_line_break_holder] --> var maior = 0;<!-- [et_pb_line_break_holder] --> passos.forEach(function(p){<!-- [et_pb_line_break_holder] --> if(+p.dataset.passo > TOTAL_PERGUNTAS) return;<!-- [et_pb_line_break_holder] --> var visivel = p.classList.contains('alt-ativo');<!-- [et_pb_line_break_holder] --> var estilo = p.getAttribute('style') || '';<!-- [et_pb_line_break_holder] --> /* fora de fluxo para medir sem empurrar a página nem piscar */<!-- [et_pb_line_break_holder] --> if(!visivel){<!-- [et_pb_line_break_holder] --> p.setAttribute('style', estilo +<!-- [et_pb_line_break_holder] --> ';display:block;position:absolute;left:0;right:0;top:0;visibility:hidden');<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> maior = Math.max(maior, p.getBoundingClientRect().height);<!-- [et_pb_line_break_holder] --> if(!visivel){<!-- [et_pb_line_break_holder] --> if(estilo) p.setAttribute('style', estilo); else p.removeAttribute('style');<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> form.style.minHeight = Math.ceil(maior) + 'px';<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> var tRedim;<!-- [et_pb_line_break_holder] --> window.addEventListener('resize', function(){<!-- [et_pb_line_break_holder] --> clearTimeout(tRedim);<!-- [et_pb_line_break_holder] --> tRedim = setTimeout(ajustaPiso, 150);<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* ── opções: um clique seleciona e avança ── */<!-- [et_pb_line_break_holder] --> form.addEventListener('click', function(ev){<!-- [et_pb_line_break_holder] --> var opt = ev.target.closest ? ev.target.closest('.alt-opt') : null;<!-- [et_pb_line_break_holder] --> if(!opt || !form.contains(opt)) return;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> var passo = opt.closest('.alt-passo');<!-- [et_pb_line_break_holder] --> if(!passo) return;<!-- [et_pb_line_break_holder] --> var campo = passo.dataset.campo;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> passo.querySelectorAll('.alt-opt').forEach(function(o){<!-- [et_pb_line_break_holder] --> o.setAttribute('aria-pressed', o === opt ? 'true' : 'false');<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> respostas[campo] = {valor: opt.dataset.valor || '',<!-- [et_pb_line_break_holder] --> rotulo: opt.dataset.rotulo || opt.textContent.trim()};<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> var proximo = +passo.dataset.passo + 1;<!-- [et_pb_line_break_holder] --> if(proximo > PASSO_DADOS) return;<!-- [et_pb_line_break_holder] --> setTimeout(function(){ mostra(proximo) }, ATRASO_AVANCO);<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> if(btnVoltar){<!-- [et_pb_line_break_holder] --> btnVoltar.addEventListener('click', function(){<!-- [et_pb_line_break_holder] --> if(atual > 1 && atual < PASSO_OBRIGADO) mostra(atual - 1);<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* ── máscara e validação do telefone ── */<!-- [et_pb_line_break_holder] --> var inpTel = document.getElementById('alt-telefone');<!-- [et_pb_line_break_holder] --> if(inpTel){<!-- [et_pb_line_break_holder] --> inpTel.addEventListener('input', function(){<!-- [et_pb_line_break_holder] --> var d = this.value.replace(/\D/g,'').slice(0,11);<!-- [et_pb_line_break_holder] --> var fmt = d;<!-- [et_pb_line_break_holder] --> if(d.length > 10) fmt = '(' + d.slice(0,2) + ') ' + d.slice(2,7) + '-' + d.slice(7);<!-- [et_pb_line_break_holder] --> else if(d.length > 6) fmt = '(' + d.slice(0,2) + ') ' + d.slice(2,6) + '-' + d.slice(6);<!-- [et_pb_line_break_holder] --> else if(d.length > 2) fmt = '(' + d.slice(0,2) + ') ' + d.slice(2);<!-- [et_pb_line_break_holder] --> else if(d.length > 0) fmt = '(' + d;<!-- [et_pb_line_break_holder] --> this.value = fmt;<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> function val(id){ var e = document.getElementById(id); return e ? e.value.trim() : '' }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> function marca(id, ruim){<!-- [et_pb_line_break_holder] --> var el = document.getElementById(id);<!-- [et_pb_line_break_holder] --> if(!el) return;<!-- [et_pb_line_break_holder] --> el.setAttribute('aria-invalid', ruim ? 'true' : 'false');<!-- [et_pb_line_break_holder] --> el.style.borderColor = ruim ? '#ff9d9d' : '';<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* ── pontuação e resultado ── */<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> function pontua(){<!-- [et_pb_line_break_holder] --> var total = 0, completa = true;<!-- [et_pb_line_break_holder] --> Object.keys(PESOS).forEach(function(q){<!-- [et_pb_line_break_holder] --> var tabela = PESOS[q];<!-- [et_pb_line_break_holder] --> var r = respostas[q];<!-- [et_pb_line_break_holder] --> if(r && Object.prototype.hasOwnProperty.call(tabela, r.valor)){<!-- [et_pb_line_break_holder] --> total += tabela[r.valor];<!-- [et_pb_line_break_holder] --> } else {<!-- [et_pb_line_break_holder] --> completa = false; /* opção sem peso mapeado — vai no payload */<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> return {pontos: total, completa: completa};<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> function classifica(pontos){<!-- [et_pb_line_break_holder] --> for(var i = 0; i < RESULTADOS.length; i++){<!-- [et_pb_line_break_holder] --> if(pontos >= RESULTADOS[i].minimo) return RESULTADOS[i];<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> return RESULTADOS[RESULTADOS.length - 1];<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> function preencheResultado(r, pontos, primeiroNome){<!-- [et_pb_line_break_holder] --> var passo7 = passoEl(PASSO_OBRIGADO);<!-- [et_pb_line_break_holder] --> if(passo7) passo7.setAttribute('data-resultado', r.chave);<!-- [et_pb_line_break_holder] --> var badge = document.getElementById('alt-ok-badge');<!-- [et_pb_line_break_holder] --> var titulo = document.getElementById('alt-ok-titulo');<!-- [et_pb_line_break_holder] --> var diag = document.getElementById('alt-ok-diag');<!-- [et_pb_line_break_holder] --> var reco = document.getElementById('alt-ok-reco');<!-- [et_pb_line_break_holder] --> /* textContent em tudo: o nome vem do que a pessoa digitou */<!-- [et_pb_line_break_holder] --> if(badge) badge.textContent = pontos + ' de ' + PONTUACAO_MAX;<!-- [et_pb_line_break_holder] --> if(titulo){<!-- [et_pb_line_break_holder] --> /* "Fulano, seu processo está vulnerável." — sem nome, a frase vai<!-- [et_pb_line_break_holder] --> sozinha e com a maiúscula original */<!-- [et_pb_line_break_holder] --> titulo.textContent = primeiroNome<!-- [et_pb_line_break_holder] --> ? primeiroNome + ', ' + r.frase.charAt(0).toLowerCase() + r.frase.slice(1)<!-- [et_pb_line_break_holder] --> : r.frase;<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> if(diag) diag.textContent = r.diagnostico;<!-- [et_pb_line_break_holder] --> if(reco) reco.textContent = r.recomendacao;<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* ── envio ── */<!-- [et_pb_line_break_holder] --> form.addEventListener('submit', async function(ev){<!-- [et_pb_line_break_holder] --> ev.preventDefault();<!-- [et_pb_line_break_holder] --> if(enviando) return;<!-- [et_pb_line_break_holder] --> if(erro) erro.textContent = '';<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* alguma pergunta ficou sem resposta? volta para ela em vez de<!-- [et_pb_line_break_holder] --> acusar erro num passo que a pessoa não está vendo */<!-- [et_pb_line_break_holder] --> for(var i = 1; i <= TOTAL_PERGUNTAS; i++){<!-- [et_pb_line_break_holder] --> if(!respostas['q' + i]){<!-- [et_pb_line_break_holder] --> mostra(i);<!-- [et_pb_line_break_holder] --> var e1 = document.getElementById('alt-erro');<!-- [et_pb_line_break_holder] --> if(e1) e1.textContent = '';<!-- [et_pb_line_break_holder] --> return;<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* valida campo a campo e marca qual falhou: numa lista de campos<!-- [et_pb_line_break_holder] --> uma frase genérica não diz à pessoa onde está o erro */<!-- [et_pb_line_break_holder] --> var nome = val('alt-nome');<!-- [et_pb_line_break_holder] --> var email = val('alt-email');<!-- [et_pb_line_break_holder] --> var tel = val('alt-telefone').replace(/\D/g,'');<!-- [et_pb_line_break_holder] --> var lgpd = document.getElementById('alt-lgpd');<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> var ruimNome = nome.length < 2;<!-- [et_pb_line_break_holder] --> var ruimEmail = !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);<!-- [et_pb_line_break_holder] --> var ruimTel = tel.length < 10 || tel.length > 11;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> marca('alt-nome', ruimNome);<!-- [et_pb_line_break_holder] --> marca('alt-email', ruimEmail);<!-- [et_pb_line_break_holder] --> marca('alt-telefone', ruimTel);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> if(ruimNome || ruimEmail || ruimTel){<!-- [et_pb_line_break_holder] --> if(erro) erro.textContent = 'Confira os campos destacados para enviar suas respostas.';<!-- [et_pb_line_break_holder] --> return;<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> if(lgpd && !lgpd.checked){<!-- [et_pb_line_break_holder] --> if(erro) erro.textContent = 'É preciso autorizar o tratamento dos dados para concluir.';<!-- [et_pb_line_break_holder] --> return;<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> var btn = form.querySelector('.alt-cta');<!-- [et_pb_line_break_holder] --> var rotulo = btn ? btn.textContent : '';<!-- [et_pb_line_break_holder] --> enviando = true;<!-- [et_pb_line_break_holder] --> if(btn){ btn.disabled = true; btn.textContent = 'Enviando...' }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> var nota = pontua();<!-- [et_pb_line_break_holder] --> var resultado = classifica(nota.pontos);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> window.dataLayer = window.dataLayer || [];<!-- [et_pb_line_break_holder] --> window.dataLayer.push({event: EVENTO_GTM, eventId: EVENTO_ID,<!-- [et_pb_line_break_holder] --> resultado: resultado.chave, pontuacao: nota.pontos});<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> var dados = Object.assign({<!-- [et_pb_line_break_holder] --> eventId: EVENTO_ID,<!-- [et_pb_line_break_holder] --> pontuacao: nota.pontos,<!-- [et_pb_line_break_holder] --> pontuacao_max: PONTUACAO_MAX,<!-- [et_pb_line_break_holder] --> resultado: resultado.chave,<!-- [et_pb_line_break_holder] --> pontuacao_incompleta: !nota.completa,<!-- [et_pb_line_break_holder] --> nome: nome,<!-- [et_pb_line_break_holder] --> email: email,<!-- [et_pb_line_break_holder] --> telefone: tel, /* só dígitos, com DDD */<!-- [et_pb_line_break_holder] --> telefone_formatado: val('alt-telefone'),<!-- [et_pb_line_break_holder] --> consentimento_lgpd: !!(lgpd && lgpd.checked),<!-- [et_pb_line_break_holder] --> origem: 'evento-altus-estande',<!-- [et_pb_line_break_holder] --> pagina: window.location.href<!-- [et_pb_line_break_holder] --> }, utms());<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> for(var k = 1; k <= TOTAL_PERGUNTAS; k++){<!-- [et_pb_line_break_holder] --> var r = respostas['q' + k] || {valor:'', rotulo:''};<!-- [et_pb_line_break_holder] --> dados['q' + k + '_valor'] = r.valor;<!-- [et_pb_line_break_holder] --> dados['q' + k + '_rotulo'] = r.rotulo;<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* Segue mesmo se a rede falhar E mesmo se ela nunca responder.<!-- [et_pb_line_break_holder] --> Em no-cors não dá para ler a resposta, então erro e silêncio<!-- [et_pb_line_break_holder] --> são indistinguíveis daqui — e deixar a pessoa presa num<!-- [et_pb_line_break_holder] --> "Enviando..." eterno é pior do que um envio raro perdido.<!-- [et_pb_line_break_holder] --> O teto de TIMEOUT_MS cobre o caso do webhook fora do ar, que<!-- [et_pb_line_break_holder] --> sem isso trava a tela por minutos. */<!-- [et_pb_line_break_holder] --> try{<!-- [et_pb_line_break_holder] --> await Promise.race([<!-- [et_pb_line_break_holder] --> fetch(WEBHOOK, {method:'POST',<!-- [et_pb_line_break_holder] --> headers:{'Content-Type':'application/json'},<!-- [et_pb_line_break_holder] --> body: JSON.stringify(dados), mode:'no-cors'}),<!-- [et_pb_line_break_holder] --> new Promise(function(r){ setTimeout(r, TIMEOUT_MS) })<!-- [et_pb_line_break_holder] --> ]);<!-- [et_pb_line_break_holder] --> }catch(_){ /* segue */ }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> if(btn){ btn.textContent = rotulo; btn.disabled = false }<!-- [et_pb_line_break_holder] --> enviando = false;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* corte curto: nome longo, ou colado à mão, estoura o título */<!-- [et_pb_line_break_holder] --> var primeiro = nome.split(/\s+/)[0].slice(0,24);<!-- [et_pb_line_break_holder] --> preencheResultado(resultado, nota.pontos, primeiro);<!-- [et_pb_line_break_holder] --> mostra(PASSO_OBRIGADO);<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> mostra(1, false);<!-- [et_pb_line_break_holder] --> ajustaPiso();<!-- [et_pb_line_break_holder] --> /* a Poppins chega depois do primeiro layout e muda a quebra dos<!-- [et_pb_line_break_holder] --> títulos — sem remedir aqui, o piso fica calculado na fonte errada */<!-- [et_pb_line_break_holder] --> if(document.fonts && document.fonts.ready){<!-- [et_pb_line_break_holder] --> document.fonts.ready.then(ajustaPiso).catch(function(){});<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> if(document.readyState === 'loading'){<!-- [et_pb_line_break_holder] --> document.addEventListener('DOMContentLoaded', init);<!-- [et_pb_line_break_holder] --> } else { init() }<!-- [et_pb_line_break_holder] -->})();<!-- [et_pb_line_break_holder] -->[/et_pb_fullwidth_code][/et_pb_section]