Drywall, Steel Frame, Forros e Coberturas executados com a precisão técnica
da Itália e da França. Para empresas, construtoras e residências de alto padrão
que não aceitam acabamento mediano.
)}
{/* Espaçador final — só aparece no mobile (faixa) */}
Arraste para ver mais · clique para abrir no InstagramClique em qualquer foto para abrir no Instagram
);
};
// ─── INCLUDED / OFFER ───────────────────────────────────────────────────
const INCLUDED = [
"Diagnóstico técnico presencial — visita ao local e levantamento detalhado",
"Orçamento transparente e detalhado — sem letras miúdas, sem surpresa",
"Consultoria de projeto — sugestões técnicas para otimizar custo e performance",
"Execução supervisionada pelo especialista responsável",
"Sistemas certificados — aço galvanizado, gesso acartonado, isolantes de elite",
"Cronograma realista e cumprido — sem promessa furada de prazo",
"Canteiro limpo e organizado durante toda a obra",
"Pós-obra com suporte técnico especializado"];
// ─── BEFORE/AFTER GALLERY ──────────────────────────────────────────────
// Galeria de 6 transformações reais da Reforzza com slider arrastável.
// Cada par mostra: o estado original ("antes") e o resultado final ("depois").
// O usuário arrasta a barra vertical para revelar uma foto ou outra.
const BEFORE_AFTER = [
{ slot: "01",
title: "Forro decorado com iluminação LED",
subtitle: "Residencial · Cobertura de zinco virou sanca com LED azul",
before: asset("assets/photos/before-after/slot-01-before.webp"),
after: asset("assets/photos/before-after/slot-01-after.webp") },
{ slot: "02",
title: "Forro modular comercial",
subtitle: "Galpão · Telhado metálico exposto → forro modular com spots",
before: asset("assets/photos/before-after/slot-02-before.webp"),
after: asset("assets/photos/before-after/slot-02-after.webp") },
{ slot: "03",
title: "Auditório de igreja — forro e iluminação",
subtitle: "Igreja · Galpão vazio → auditório com forro modular e LED",
before: asset("assets/photos/before-after/slot-03-before.webp"),
after: asset("assets/photos/before-after/slot-03-after.webp") },
{ slot: "04",
title: "Auditório de igreja — paredes e acabamento",
subtitle: "Igreja · Estrutura metálica → ambiente finalizado com drywall",
before: asset("assets/photos/before-after/slot-04-before.webp"),
after: asset("assets/photos/before-after/slot-04-after.webp") },
{ slot: "05",
title: "Forro residencial com luminárias embutidas",
subtitle: "Residencial · Vigas expostas → forro liso com spots LED",
before: asset("assets/photos/before-after/slot-05-before.webp"),
after: asset("assets/photos/before-after/slot-05-after.webp") },
{ slot: "06",
title: "Forro de drywall residencial",
subtitle: "Residencial · Laje cerâmica aparente → forro de gesso liso",
before: asset("assets/photos/before-after/slot-06-before.webp"),
after: asset("assets/photos/before-after/slot-06-after.webp") },
];
const BeforeAfter = () => {
const [active, setActive] = React.useState(0);
const [pct, setPct] = React.useState(50);
const dragRef = React.useRef(false);
const frameRef = React.useRef(null);
// Suporte a mouse + touch
const onMove = React.useCallback((clientX) => {
if (!frameRef.current) return;
const rect = frameRef.current.getBoundingClientRect();
const x = clientX - rect.left;
const newPct = Math.max(0, Math.min(100, (x / rect.width) * 100));
setPct(newPct);
}, []);
React.useEffect(() => {
const onMouseMove = (e) => { if (dragRef.current) onMove(e.clientX); };
const onTouchMove = (e) => { if (dragRef.current && e.touches[0]) onMove(e.touches[0].clientX); };
const onEnd = () => { dragRef.current = false; document.body.style.userSelect = ''; };
window.addEventListener('mousemove', onMouseMove);
window.addEventListener('mouseup', onEnd);
window.addEventListener('touchmove', onTouchMove, { passive: true });
window.addEventListener('touchend', onEnd);
return () => {
window.removeEventListener('mousemove', onMouseMove);
window.removeEventListener('mouseup', onEnd);
window.removeEventListener('touchmove', onTouchMove);
window.removeEventListener('touchend', onEnd);
};
}, [onMove]);
const startDrag = (clientX) => {
dragRef.current = true;
document.body.style.userSelect = 'none';
onMove(clientX);
};
const current = BEFORE_AFTER[active];
// Quando troca de par, volta o divisor pra 50%
const select = (i) => {
setActive(i);
setPct(50);
};
return (
{/* Cabeçalho */}
§ 05 · Transformações
Antes e depois, em detalhe.
Arraste a barra vertical para revelar cada transformação.
São obras reais entregues pela Reforzza — do galpão metálico
ao auditório completo, da laje exposta ao forro com iluminação
de design.
Obra {current.slot} de {String(BEFORE_AFTER.length).padStart(2, "0")}
{current.title}
{current.subtitle}
{/* Navegação por dots (numeradas) */}
{BEFORE_AFTER.map((item, i) => (
))}
);
};
// ─── PROCESS (Como funciona em 5 passos) ────────────────────────────────
const PROCESS = [
{ duration: "15 min · WhatsApp",
title: "Visita e diagnóstico",
desc: "Você descreve a obra e o especialista responsável vai ao local — levanta medidas, fotografa e identifica riscos antes de qualquer coisa começar." },
{ duration: "Até 3 dias",
title: "Projeto e orçamento",
desc: "Documento técnico com escopo, materiais certificados, cronograma com folga real e orçamento fechado. Sem letras miúdas, sem “imprevisto” inflando o custo no caminho." },
{ duration: "Conforme cronograma",
title: "Execução supervisionada",
desc: "Equipe própria, componentes certificados e canteiro limpo. Supervisão diária do especialista responsável e canal direto pelo WhatsApp durante toda a obra." },
{ duration: "Permanente",
title: "Entrega e garantia",
desc: "Vistoria final junto com você, acabamento conferido milímetro a milímetro e pós-obra com suporte técnico continuado." }];
const Process = () =>
§ 03 · Como funciona
Do primeiro contato à entrega.
Quatro etapas, zero opacidade. Você sabe exatamente o que esperar
em cada momento — sem surpresa, sem letra miúda.
Primeira conversa: gratuita e sem compromisso
{/* Faixa de números + experiência internacional */}
anos · IT/FR/BR
especialidades
trabalhos realizados
Nossa equipe traz a experiência de canteiros exigentes da Itália e da França —
onde a tolerância para erro é zero. É esse rigor que aplicamos em cada obra.
{/* Linha vertical conectora */}
{PROCESS.map((step, i) =>
{/* Bolinha numerada */}
{String(i + 1).padStart(2, "0")}
{/* Conteúdo do passo */}
{step.duration}
{step.title}
{step.desc}
)}
{/* Bloco "sempre incluído" — absorvido da antiga seção Included */}
;
// ─── INCLUDED (fundido em Process) ──────────────────────────────────────
// Alias no-op: o bloco "sempre incluído" agora vive dentro de Process.
const Included = () => null;
// ─── OBJECTIONS (fundido no FAQ → § 07) ─────────────────────────────────
// As objeções viraram o grupo "Dúvidas técnicas" dentro do FAQ.
// Componente mantido como no-op para compatibilidade.
const Objections = () => null;
const ObjItem = ({ idx, q, a, defaultOpen }) => {
const [open, setOpen] = React.useState(defaultOpen);
return (
Não é garantia de reembolso. É garantia de execução —
do orçamento à última junta de acabamento.
{/* seal */}
ABNT · Equipe com vivência internacional · Pós-obra continuado
{[
{ t: "Fidelidade orçamentária", d: "O investimento acordado é respeitado do início ao fim. Qualquer ajuste de escopo é apresentado com transparência total, antes de ser executado." },
{ t: "Conformidade normativa", d: "Total alinhamento com as normas da ABNT e padrões internacionais de engenharia. Cada sistema atende requisitos máximos de segurança e durabilidade." },
{ t: "Suporte pós-obra", d: "Após a entrega, você continua tendo canal direto com nosso especialista técnico para uso, manutenção ou ajuste." },
{ t: "Materiais certificados", d: "Apenas fornecedores selecionados de aço galvanizado, gesso acartonado e isolantes de elite. Sem componente “genérico” disfarçado." }].
map((g, i) =>
0{i + 1}
{g.t}
{g.d}
)}
;
// ─── FAQ ────────────────────────────────────────────────────────────────
const FAQ_GROUPS = [
{ label: "Dúvidas técnicas",
items: [
{ q: "Drywall não é frágil? Vai cair se eu encostar um móvel pesado?", a: "Mito de instalação amadora. Nosso sistema, executado com reforços corretos e estrutura de aço galvanizado, suporta cargas que muita parede de alvenaria não aguenta — móveis suspensos, prateleiras, TVs." },
{ q: "Vai ficar caro igual alvenaria tradicional?", a: "Na maioria dos casos, sai mais barato quando se soma tudo: tempo de obra menor, sem desperdício de material, sem custo de entulho, sem retrabalho. E sua propriedade fica disponível para uso muito antes." },
{ q: "Steel Frame aguenta o clima do Rio? Não enferruja?", a: "O aço galvanizado é tratado exatamente para isso. Resistente a umidade, mofo e cupins — durabilidade equivalente ou superior à alvenaria, sem problemas estruturais com infiltração." },
{ q: "Drywall serve para banheiro e área molhada?", a: "Sim — utilizamos placas verdes (RU — Resistentes à Umidade) específicas para áreas molhadas, com tratamento adequado." }
]},
{ label: "Antes de contratar",
items: [
{ q: "Já fui mal atendido por construtora antes. Como sei que vocês são diferentes?", a: "Você fala diretamente com o especialista técnico responsável — não com vendedor, não com call center. E nossos contratos não se conquistam com discurso, e sim com obra entregue." },
{ q: "A Reforzza atende qual região?", a: "Atendemos toda a Cidade do Rio de Janeiro, Seropédica e Nova Iguaçu. Para projetos especiais em outras regiões, consulte pelo WhatsApp." },
{ q: "Atendem obras grandes (empresarial/comercial) e pequenas (residencial)?", a: "Sim. Desde reformas residenciais de alto padrão até obras corporativas e industriais. Nosso método se adapta à escala — o rigor técnico, não." },
{ q: "Quanto tempo leva uma obra com construção a seco?", a: "Depende do escopo, mas em geral uma obra a seco é entregue em 1/3 do tempo de uma obra em alvenaria tradicional. No diagnóstico técnico, você recebe cronograma realista." },
{ q: "Vocês fazem o projeto ou só executam?", a: "Trabalhamos em sinergia com arquitetos e engenheiros. Se você já tem projeto, executamos com precisão milimétrica. Se ainda não tem, oferecemos consultoria técnica e indicamos parceiros de confiança." },
{ q: "Como funciona o orçamento? É cobrado?", a: "O diagnóstico inicial pelo WhatsApp é gratuito. Os detalhes da visita técnica e do orçamento a gente combina diretamente com você na conversa." },
{ q: "Vocês dão garantia da obra?", a: "Sim. Além da garantia legal, oferecemos suporte técnico pós-obra, com orientações para manutenção e preservação do acabamento ao longo dos anos." }
]}];
// Lista plana — usada para numeração contínua e para o JSON-LD se houver.
const FAQ_ITEMS = FAQ_GROUPS.flatMap(g => g.items);
const FAQ = () => {
let counter = 0;
return (
§ 07 · Perguntas frequentes
As dúvidas que todo cliente tem antes de assinar.
Reunimos as perguntas técnicas e as práticas num lugar só. Se a sua não estiver aqui, fala com a gente no WhatsApp — respondemos em até 1h útil.
A decisão é simples: mais uma obra no padrão de sempre,
ou entrar no padrão Reforzza? O primeiro passo é uma conversa técnica pelo WhatsApp.
Sem compromisso, sem custo, sem pressão de venda.
(21) 99510-8345·Resposta em até 1h útil·Cidade do RJ · Seropédica · Nova Iguaçu
{/* P.S. */}
P.S. — última linha
Lembra do detalhe invisível que define o luxo na escola europeia? É exatamente isso
que faz a diferença entre uma obra que envelhece mal em 2 anos e uma obra que continua
impecável depois de 10. A Reforzza foi construída para entregar o segundo tipo.
;
// ─── FOOTER ─────────────────────────────────────────────────────────────
const Footer = () =>
;
// ─── FLOATING WHATSAPP ──────────────────────────────────────────────────
const FloatingWA = () =>
{
e.currentTarget.style.transform = "scale(1.04)";
e.currentTarget.style.boxShadow = "0 16px 40px -8px rgba(31,138,91,.7), 0 0 0 8px rgba(31,138,91,.18)";
}}
onMouseLeave={(e) => {
e.currentTarget.style.transform = "scale(1)";
e.currentTarget.style.boxShadow = "0 12px 32px -8px rgba(31,138,91,.6), 0 0 0 6px rgba(31,138,91,.15)";
}}>
{/* Texto só aparece no desktop — no mobile só o ícone via CSS */}
Solicitar orçamento
;
// ─── BARRA DE PROGRESSO DE LEITURA ──────────────────────────────────────
// Barra fina (2px) fixa no topo absoluto da página que enche conforme o
// usuário rola. Some quando está no topo. Usa cor de acento da marca.
// Performance: rAF + passive listener — não pesa no scroll.
const ReadProgress = () => {
const [pct, setPct] = React.useState(0);
const rafRef = React.useRef(0);
React.useEffect(() => {
const compute = () => {
const doc = document.documentElement;
const scrollTop = window.scrollY || doc.scrollTop;
const max = (doc.scrollHeight - doc.clientHeight) || 1;
const ratio = Math.min(100, Math.max(0, (scrollTop / max) * 100));
setPct(ratio);
};
const onScroll = () => {
if (rafRef.current) return;
rafRef.current = requestAnimationFrame(() => {
compute();
rafRef.current = 0;
});
};
compute();
window.addEventListener('scroll', onScroll, { passive: true });
window.addEventListener('resize', onScroll, { passive: true });
return () => {
window.removeEventListener('scroll', onScroll);
window.removeEventListener('resize', onScroll);
if (rafRef.current) cancelAnimationFrame(rafRef.current);
};
}, []);
return (
);
};
// ─── BOTÃO VOLTAR AO TOPO ───────────────────────────────────────────────
// Botão discreto no canto inferior esquerdo. Aparece após rolar ~600px,
// some no topo. Não compete com o WhatsApp (que fica à direita).
const BackToTop = () => {
const [visible, setVisible] = React.useState(false);
const rafRef = React.useRef(0);
React.useEffect(() => {
const check = () => {
setVisible((window.scrollY || document.documentElement.scrollTop) > 600);
};
const onScroll = () => {
if (rafRef.current) return;
rafRef.current = requestAnimationFrame(() => {
check();
rafRef.current = 0;
});
};
check();
window.addEventListener('scroll', onScroll, { passive: true });
return () => {
window.removeEventListener('scroll', onScroll);
if (rafRef.current) cancelAnimationFrame(rafRef.current);
};
}, []);
const toTop = () => window.scrollTo({ top: 0, behavior: 'smooth' });
return (
);
};
// Expose globals so app.jsx can use them
Object.assign(window, {
Nav, Hero, TrustStrip, PainPoints, Method, Benefits, Specialties,
Proof, RecentWorks, BeforeAfter, Process, Included, Objections, Guarantee, FAQ, FinalCTA, Footer, FloatingWA,
ReadProgress, BackToTop,
WhatsIcon, ArrowRt, Check, Plus, Wordmark, InstagramIcon
});