// Vantic — main app const { useState, useEffect, useRef } = React; // Abstract dark backdrop — deep navy with subtle radial glow and thin geometric accents. // Matches the tone of the new Vantic mark so the crest sits cleanly on top. const HERO_BG_SVG = `data:image/svg+xml;utf8,${encodeURIComponent(` `)}`; // ================== NAV ================== function Nav() { const [scrolled, setScrolled] = useState(false); useEffect(() => { const onScroll = () => setScrolled(window.scrollY > 60); window.addEventListener('scroll', onScroll); return () => window.removeEventListener('scroll', onScroll); }, []); return ( ); } // ================== HERO ================== function Hero() { const bgRef = useRef(null); useEffect(() => { const onScroll = () => { if (!bgRef.current) return; const y = window.scrollY; bgRef.current.style.transform = `translateY(${y * 0.25}px) scale(1.05)`; }; window.addEventListener('scroll', onScroll, { passive: true }); return () => window.removeEventListener('scroll', onScroll); }, []); return (

Crédito imobiliário
sob medida.

Estruturamos aquisição e crédito com garantia de imóvel, com acesso a um mercado curado de bancos, discrição e um único interlocutor do início ao desembolso.

); } // ================== SOBRE ================== function Sobre() { return (
A Vantic

Uma casa de crédito construída sobre relações.

A Vantic nasceu para atender quem valoriza atendimento personalizado acima de processos padronizados. Operamos como uma boutique de crédito imobiliário — pessoa física e pessoa jurídica — com acesso a uma mesa curada de instituições financeiras e parceiros.

Cada operação é estruturada à mão. Analisamos o perfil do cliente, o imóvel, a finalidade e o momento do mercado para desenhar a solução de melhor custo e prazo. Sem intermediações desnecessárias, sem discurso de balcão.

Acreditamos em transparência total na formação de taxa, em interlocução direta com quem decide, e na confidencialidade que operações patrimoniais exigem.

Operamos com bancos públicos e privados, cooperativas de crédito, SCDs e fundos, sempre negociando em paralelo para sua operação.

); } // ================== SOLUÇÕES ================== function Solucoes() { return (
Soluções

Duas soluções, o mesmo cuidado.

I.
Aquisição

Financiamento Imobiliário

Aquisição de residência, segundo imóvel, imóvel de investimento ou de alto padrão. Estruturação para pessoa física e pessoa jurídica.

Perfil
Pessoa física e jurídica
Prazo
Até 420 meses
Financiamento
Até 80% do valor do imóvel
Garantia
Alienação fiduciária do bem
Taxa
Negociada a mercado em cada operação
Solicitar simulação
II.
Liquidez

Crédito com garantia de imóvel

Liquidez imediata usando um imóvel próprio como garantia. Prazos longos e taxas entre as mais competitivas do mercado de crédito.

Perfil
Pessoa física e jurídica
Prazo
Até 240 meses
Crédito
Até 60% do valor do imóvel
Uso
Capital de giro, expansão, liquidez
Taxa
Negociada a mercado em cada operação
Solicitar simulação
); } // ================== COMO FUNCIONA ================== function Como() { const steps = [ { num: 'I', title: 'Simulação', desc: 'Entendemos seu perfil, a operação pretendida e o imóvel envolvido. Montamos um cenário preliminar com taxas, prazos e condições de mercado.', meta: '24 horas' }, { num: 'II', title: 'Análise', desc: 'Submissão estruturada às instituições parceiras. Negociamos em paralelo para identificar a melhor combinação de taxa, prazo e garantias.', meta: '5 a 10 dias úteis' }, { num: 'III', title: 'Aprovação', desc: 'Apresentamos as propostas formais lado a lado. Você decide com informação completa, sem letra miúda, sem conflito de interesse.', meta: 'Seu tempo' }, { num: 'IV', title: 'Liberação', desc: 'Acompanhamos laudo, cartório, registro e liberação. Você recebe um único ponto de contato do início ao desembolso.', meta: 'Conforme instituição' }, ]; return (
Como funciona

Quatro etapas, um interlocutor.

{steps.map((s, i) => (
{s.num}
{s.title}
{s.desc}
— {s.meta}
))}
); } // ================== CLOSING ================== // Webhook N8N "Lead Site Vantic" (workflow id i3OdxYWlOR5JzTi3, ativo em producao) const WEBHOOK_URL = 'https://n8n.invius.com.br/webhook/lead-site-vantic'; // Numero da Fabiana (WhatsApp Business Vantic). Usado como fallback caso o webhook falhe. const FABIANA_WA_NUMBER = '5511512283937'; const FABIANA_WA_URL = `https://wa.me/${FABIANA_WA_NUMBER}`; const TIPO_OPERACAO_TEXTO = { aquisicao: 'financiamento para aquisição de um imóvel', home_equity: 'crédito com garantia de imóvel', avaliando: 'crédito imobiliário (ainda avaliando o formato)', }; // Mascara visual do WhatsApp: (DD) 9XXXX-XXXX. Nao bloqueia — so formata enquanto o usuario digita. function formatarWhatsapp(valor) { const digitos = valor.replace(/\D/g, '').slice(0, 11); if (digitos.length === 0) return ''; if (digitos.length < 3) return `(${digitos}`; if (digitos.length < 7) return `(${digitos.slice(0, 2)}) ${digitos.slice(2)}`; if (digitos.length < 11) return `(${digitos.slice(0, 2)}) ${digitos.slice(2, 6)}-${digitos.slice(6)}`; return `(${digitos.slice(0, 2)}) ${digitos.slice(2, 7)}-${digitos.slice(7)}`; } function Closing() { const [nome, setNome] = useState(''); const [whatsapp, setWhatsapp] = useState(''); const [tipoOperacao, setTipoOperacao] = useState('aquisicao'); const [loading, setLoading] = useState(false); const [empresaReferencia, setEmpresaReferencia] = useState(''); // honeypot — humano nao ve, bot preenche const mountTime = useRef(Date.now()); const handleSubmit = async (e) => { e.preventDefault(); if (loading) return; // Anti-bot 1: honeypot. Se foi preenchido, bot. Finge sucesso e nao faz nada. if (empresaReferencia) return; // Anti-bot 2: tempo minimo de preenchimento. Humano leva pelo menos uns segundos. const tempoPagina = Date.now() - mountTime.current; if (tempoPagina < 2500) return; setLoading(true); try { const response = await fetch(WEBHOOK_URL, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ nome, whatsapp, tipo_operacao: tipoOperacao, origem: 'site_vantic', user_agent: navigator.userAgent, referrer: document.referrer, empresa_referencia: empresaReferencia, // honeypot — backend deve dropar se preenchido tempo_pagina_ms: tempoPagina, // backend pode usar pra outras heuristicas }), }); if (!response.ok) throw new Error('bad status'); const data = await response.json(); if (!data.wa_url) throw new Error('no wa_url'); window.location.href = data.wa_url; } catch (err) { console.warn('[Vantic] webhook falhou, usando fallback wa.me:', err); const tipoTxt = TIPO_OPERACAO_TEXTO[tipoOperacao] || 'crédito imobiliário'; const msg = `Oi, sou ${nome}, preenchi o formulário no site da Vantic e tenho interesse em ${tipoTxt}.`; window.location.href = `${FABIANA_WA_URL}?text=${encodeURIComponent(msg)}`; } }; return (

Uma conversa reservada é o início de toda boa operação.

{/* Honeypot — invisivel pro humano, preenchido por bot que faz auto-fill */}
Tipo de operação
); } // ================== FOOTER ================== function Footer() { const year = new Date().getFullYear(); return ( ); } // ================== COOKIE CONSENT (LGPD) ================== function CookieConsent() { const [visible, setVisible] = useState(false); useEffect(() => { try { if (!localStorage.getItem('vantic_cookies_consent')) { const t = setTimeout(() => setVisible(true), 600); return () => clearTimeout(t); } } catch (_) { setVisible(true); } }, []); const decidir = (escolha) => { try { localStorage.setItem('vantic_cookies_consent', escolha); } catch (_) {} setVisible(false); }; if (!visible) return null; return (

Utilizamos cookies e dados para garantir o funcionamento do site, entender o uso e aprimorar sua experiência, em conformidade com a LGPD (Lei nº 13.709/2018). {' '} Saiba mais.

); } // ================== APP ================== function App() { // Scroll reveal useEffect(() => { const io = new IntersectionObserver((entries) => { entries.forEach(e => { if (e.isIntersecting) { e.target.classList.add('in'); // Also reveal children marked as reveal e.target.querySelectorAll('.reveal-child').forEach(c => c.classList.add('in')); } }); }, { threshold: 0.12 }); document.querySelectorAll('.reveal').forEach(el => io.observe(el)); return () => io.disconnect(); }, []); return ( <>