Dashboard

Clientes Ativos
0
cadastrados
Laudos Cadastrados
0
no sistema
Em Andamento
0
laudos ativos
Concluídos
0
laudos entregues

Laudos Recentes

Clientes Cadastrados

Laudos Cadastrados

Dados do Engenheiro

Nome: Eng. Fábio Júnior Martins Arruda

CREA: CREA-GO 1019122943D-GO

WhatsApp: (62) 98621-2400

E-mail: fjrmaeng@outlook.com

Site: periciasgoias.com.br

Sobre Serviços Processo Simulador Para Advogados FAQ Contato Área do Cliente
Engenharia Perícias Laudos Técnicos Rio Verde Goiânia Aparecida de Goiânia Goiás Engenharia Perícias Laudos Técnicos Rio Verde Goiânia Aparecida de Goiânia Goiás

Perícia emEngenharia Civil.

Perito engenheiro em Rio Verde, Goiânia e Aparecida de Goiânia. Perícias judiciais, laudos técnicos, avaliações de imóveis e segurança do trabalho em todo o estado de Goiás.

Perícia Judicial

Assistência técnica em ações cíveis e trabalhistas

Laudo Técnico

Vícios construtivos, infiltrações e patologias

Avaliação de Imóvel

Valor de mercado para negociações e garantias

Scroll

Perícia Judicial

Assistência técnica em ações cíveis e trabalhistas

Laudo Técnico

Vícios construtivos, infiltrações e patologias

Avaliação de Imóvel

Valor de mercado para negociações e garantias

7+
Áreas de especialização
120h+
Horas em formação de perícias
5
Pós-graduações concluídas
Eng. Fábio Júnior Martins Arruda – Engenheiro Perito em obra, Rio Verde GO
Credenciado Eng. Fábio Júnior Martins Arruda CREA-GO 1019122943D-GO
Perito Engenheiro · Rio Verde GO

Engenheiro perito com foco
em resultado prático.

Atuação técnica voltada para entregar laudos claros, objetivos e alinhados com a necessidade do cliente — seja um processo judicial, uma negociação extrajudicial ou uma decisão de investimento.

Trabalho com perícias e laudos em engenharia com foco na qualidade técnica, clareza para leigos e compatibilidade com o que tribunais, seguradoras e instituições financeiras exigem.

Cada caso é tratado com análise técnica detalhada, documentação fotográfica, referências às normas da ABNT e linguagem precisa — sempre que necessário, adequada ao uso judicial.


Especializações
Engenharia de Avaliações e Perícias
Estruturas de Concreto e Patologia das Construções
Segurança do Trabalho
Segurança do Trabalho e Gestão Hospitalar
Engenharia Sanitária e Ambiental
Gestão de Projetos, Orçamentos e Planejamento de Obras
Por que escolher

O que nos diferencia
da concorrência.

Combinamos rigor técnico com tecnologia e transparência — do simulador de orçamento à área do cliente digital, do rastreamento em tempo real ao foco na estratégia jurídica.

01

Simulador Online de Laudos

Único perito da região com simulador interativo de valores e prazos. Você sabe o custo antes de ligar.

02

Rastreamento em Tempo Real

Cada laudo tem código de rastreio. Acompanhe a etapa atual sem precisar ligar ou enviar mensagem.

03

Área do Cliente Digital

Acesso restrito para baixar laudos, fotos e relatórios. Histórico organizado 24h por dia.

04

Foco na Estratégia Jurídica

Laudos elaborados pensando na tese do advogado, não apenas na questão técnica isolada.

05

Prazos Definidos e Cumpridos

Compromisso real com datas. Previsão de entrega informada no momento da contratação.

06

5 Pós-graduações Especializadas

Formação multidisciplinar: civil, ambiental, trabalhista, hospitalar e gestão de obras.

Cadeia de
Custódia Técnica.

AnáliseSimulação ou explicação do caso. Primeira avaliação técnica sem custo.
InvestigaçãoVistoria com registro fotográfico completo e documentação técnica.
EntregaLaudo em ABNT com rastreio e arquivos digitais na área do cliente.
Serviços

Perícias e laudos
em engenharia.

Atuação técnica em laudos, perícias e avaliações com foco em perícia judicial, extrajudicial e suporte para escritórios de advocacia.

001

Perícia em Engenharia Civil

Vícios construtivos, infiltrações, trincas, recalques, defeitos em estruturas, falhas de execução e problemas pós-obra.

Uso JudicialExtrajudicial
002

Avaliação de Imóveis

Laudos de avaliação para venda, compra, garantia, partilhas, inventários e regularização patrimonial.

UrbanosRurais
003

Perícia Judicial

Atuação como assistente técnico em ações cíveis, trabalhistas e ambientais, com elaboração de quesitos, pareceres e impugnações.

Assistência TécnicaAdvogados
004

Segurança do Trabalho

Laudos de insalubridade, periculosidade, condições de trabalho, ergonomia e programas de prevenção.

TrabalhistaPreventivo
005

Perícia Ambiental

Análise de impactos, contaminação, efluentes, passivos ambientais e conformidade com legislação ambiental.

EmpresasPropriedades Rurais
006

Vistorias e Relatórios

Vistorias de entrega de obra, recebimento de imóvel, constatação de danos e relatórios técnicos para negociações e seguros.

ParticularesEmpresas
Solicitar Consultoria →

Metodologia

Cadeia de
Custódia Técnica.

Um processo estruturado para garantir a integridade e credibilidade de cada laudo produzido.

01

Análise

Você simula o laudo ou explica o caso pelo WhatsApp para primeira avaliação técnica.

02

Investigação

A vistoria é agendada e realizada com registro fotográfico completo e documentação.

03

Relatório

O laudo é elaborado seguindo normas técnicas da ABNT e legislação aplicável.

04

Entrega

Você acompanha pelo rastreio e baixa todos os arquivos na área do cliente.

Os prazos e valores exibidos no simulador são estimativas iniciais e podem ser
ajustados após análise detalhada do caso.

Simulador

Simule o valor
do seu laudo.

Responda algumas perguntas rápidas e receba uma estimativa de valor e prazo.

Ideal para advogados

Use o simulador para orientar clientes sobre custos técnicos ainda na fase inicial da ação.

Imóveis e condomínios

Laudos de vistoria, danos e avaliações para negociações, seguros e disputas contratuais.

Empresas e obras

Perícias civis, segurança do trabalho e ambiental para indústrias, obras e propriedades rurais.

Etapa 1 de 5

Qual tipo de laudo você precisa?

Laudo / Perícia em Engenharia Civil
Avaliação de Imóvel
Perícia / Assistência Técnica Judicial
Segurança do Trabalho
Perícia Ambiental
Vistoria / Relatório Técnico
Etapa 2 de 5

Área aproximada? (m²)

Etapa 3 de 5

Complexidade do caso?

Problema pontual / simples
Múltiplos problemas no mesmo imóvel
Situação complexa / longa data
Não tenho certeza
Etapa 4 de 5

Finalidade do laudo?

Uso particular / negociação
Processo judicial
Seguradora / Sinistro
Banco / Financiamento
Etapa 5 de 5

Qual a urgência?

Normal (até 15 dias úteis)
Urgente (até 7 dias úteis)
Muito urgente (até 3 dias úteis)
Resultado

Estimativa para o seu caso.

R$ –
Documentos úteis para agilizar:
  • Fotos do local / problema
  • Endereço completo

*Estimativa sujeita a confirmação após análise técnica e definição de escopo.

Área do Cliente

Acompanhe
seu laudo.

Use o código recebido pelo engenheiro para ver a etapa atual do seu laudo.

Consultar andamento

Ex.: LAU-2026-001

Para baixar arquivos, acesse a Área do Cliente →

Para Advogados

Parceria técnica para
ações judiciais.

Atuação como assistente técnico em ações cíveis, trabalhistas e ambientais. Foco em produzir prova técnica que fortalece a tese jurídica do caso.

"Cada laudo é elaborado pensando na estratégia do advogado, não apenas na questão técnica isolada."

Eng. Fábio Júnior
Discutir um Caso →

Quesitos e Impugnações

Elaboração de quesitos técnicos precisos e impugnações fundamentadas nas normas ABNT.

Prazos Cumpridos

Compromisso com os prazos processuais. Rastreamento em tempo real do andamento.

Comunicação Direta

Acesso direto ao perito para alinhamento de estratégia e esclarecimento de dúvidas.

Linguagem Judicial

Laudos redigidos com linguagem adequada ao uso em juízo, claros para leigos.

FAQ

Perguntas
frequentes.

Qual a diferença entre laudo e perícia?+
O laudo é o documento técnico final. A perícia é o conjunto do processo: vistoria, análise, elaboração e conclusão técnica. Todo laudo pericial resulta de uma perícia, mas nem todo laudo decorre de processo judicial.
Em quanto tempo o laudo fica pronto?+
Após a vistoria: laudos simples em 7-10 dias úteis; laudos complexos em 15-20 dias. Atendimentos urgentes disponíveis com prazo menor mediante negociação.
Vocês atendem fora de Rio Verde?+
Sim. Atendemos municípios da microrregião de Rio Verde e outras cidades do sudoeste goiano, incluindo Jataí, Mineiros e Caiapônia. Para outras localidades, consulte pelo WhatsApp.
O laudo pode ser usado em processo judicial?+
Sim. Todos os laudos são elaborados com metodologia técnica e linguagem compatível com uso judicial. O laudo extrajudicial pode ser juntado como prova documental.
Como funciona o pagamento?+
Mediante proposta aprovada, é feito um sinal para agendamento da vistoria e o saldo na entrega do laudo. Aceitamos Pix e transferência bancária.
Posso acompanhar a vistoria?+
Sim, o cliente ou representante pode acompanhar. Em casos judiciais, a presença das partes segue as regras processuais — consulte seu advogado.
O que acontece se eu discordar do laudo?+
O laudo é baseado em metodologia técnica objetiva. Se identificar algum dado incorreto ou omissão relevante, pode solicitar revisão mediante justificativa técnica.
Vocês emitem ART?+
Sim. A Anotação de Responsabilidade Técnica (ART) é emitida no CREA-GO para todos os laudos e serviços técnicos, garantindo a responsabilidade legal do engenheiro.
Contato

Vamosconversar.

Explique seu caso pelo formulário ou direto pelo WhatsApp. Retorno em até 24 horas.

LocalizaçãoRio Verde · Goiânia · Aparecida de Goiânia · Todo o estado de Goiás
Chamar no WhatsApp →
Rio Verde Goiânia Aparecida de Goiânia + Todo Goiás

Enviar mensagem

Ao enviar, você será redirecionado para o WhatsApp

function rastrearCli() { const cod = document.getElementById('cliRastCod').value.trim().toUpperCase(); const res = document.getElementById('cliRastResult'); const ld = { 'LAU-2026-001': ['Recebimento da demanda','Vistoria realizada','Laudo em elaboração','Revisão final','Laudo concluído e liberado'], 'LAU-2026-002': ['Recebimento da demanda','Vistoria em agendamento'], 'LAU-2026-003': ['Recebimento da demanda','Vistoria realizada','Laudo em elaboração'] }; if (!cod) { res.innerHTML = '

Informe o código do laudo.

'; return; } if (!ld[cod]) { res.innerHTML = '

Código não encontrado.

'; return; } res.innerHTML = ld[cod].map((et,i) => `
Etapa ${i+1}${et}
`).join(''); } // ════════ BANCO DE DADOS LOCAL ════════ let DB = { clientes: [ {nome:'João Silva', email:'joao@email.com', tel:'(62) 98000-0001', obs:'Cliente da região, processo civil.'}, {nome:'Maria Oliveira', email:'maria@email.com', tel:'(62) 98000-0002', obs:'Avaliação para inventário.'}, {nome:'Empresa XYZ', email:'empresa@xyz.com', tel:'(62) 98000-0003', obs:'Laudo trabalhista.'} ], laudos: [ {cod:'LAU-2026-001', clienteIdx:0, tipo:'Perícia em Engenharia Civil', valor:'R$ 1.800,00', status:'Concluído', obs:'Caso finalizado.', arquivos:['Laudo Técnico Completo.pdf','Registro Fotográfico.zip','ART.pdf']}, {cod:'LAU-2026-002', clienteIdx:1, tipo:'Avaliação de Imóvel', valor:'R$ 1.500,00', status:'Em elaboração', obs:'Aguardando revisão.', arquivos:['Minuta do Laudo.pdf','Checklist de Vistoria.pdf']}, {cod:'LAU-2026-003', clienteIdx:2, tipo:'Segurança do Trabalho – Insalubridade', valor:'R$ 3.900,00', status:'Vistoria agendada', obs:'Vistoria marcada para próxima semana.', arquivos:['Checklist de Vistoria.pdf']} ] }; // ════════ ADM LOGIN ════════ // ════════════════════════════════ // ADM + CLIENTE — Sistema completo // ════════════════════════════════ // ── Banco de dados em memória ── let DB = { clientes: [ { id: 'c1', nome: 'João Silva', email: 'joao@email.com', tel: '(62) 99000-0001' }, { id: 'c2', nome: 'Maria Oliveira', email: 'maria@email.com', tel: '(62) 99000-0002' }, { id: 'c3', nome: 'Empresa XYZ', email: 'empresa@xyz.com', tel: '(62) 3000-0003' } ], laudos: [ { id: 'l1', cod: 'LAU-2026-001', clienteId: 'c1', tipo: 'Perícia em Engenharia Civil', valor: '1.800,00', status: 'Concluído', docs: ['Laudo Técnico Completo (PDF)', 'Registro Fotográfico (ZIP)', 'ART – Responsabilidade Técnica'] }, { id: 'l2', cod: 'LAU-2026-002', clienteId: 'c2', tipo: 'Avaliação de Imóvel', valor: '1.500,00', status: 'Em elaboração', docs: ['Minuta do Laudo de Avaliação (PDF)', 'Checklist de Vistoria'] }, { id: 'l3', cod: 'LAU-2026-003', clienteId: 'c3', tipo: 'Segurança do Trabalho – Insalubridade', valor: '3.900,00', status: 'Vistoria agendada', docs: [] } ] }; let docsTmp = []; let editandoLaudoId = null; let editandoClienteId = null; // ── LOGIN ADM (autenticação com hash SHA-256) ── async function loginAdm(){ var u=document.getElementById('au').value.trim(), p=document.getElementById('ap').value, e=document.getElementById('aerr'); e.style.display='none'; if(!u||!p){ e.textContent='Preencha todos os campos.'; e.style.display='block'; return; } var hu=await sha256(u), hp=await sha256(p); if(hu==='42b997d45ba0e3aace1e9e195ca541926fe35774a7eb951f1ddfd63bf39c4af3'&&hp==='273a4e29da6316ef5e66de4899a7b3ae5a18a091e3c4bcedf9bb4f081f139985'){ closeModal(); abrirAdm(); showToast('Bem-vindo, Eng. Fábio! ✓'); sessionStorage.setItem('adm_auth','1'); } else { e.textContent='Usuário ou senha incorretos.'; e.style.display='block'; } } // ── LOGIN CLIENTE (autenticação com hash SHA-256) ── async function loginCli(){ var u=document.getElementById('cu').value.trim().toLowerCase(), p=document.getElementById('cp').value, e=document.getElementById('cerr'); e.style.display='none'; if(!u||!p){ e.textContent='Preencha e-mail e senha.'; e.style.display='block'; return; } var hu=await sha256(u), hp=await sha256(p); if(hu==='01e5947bd30f352d99343ed4ad9e3af1b3dc4ff4960eee15277dda13c9bb6b9c'&&hp==='c383f8002fb5d3448518471a4527097d458b7e4661e89259bcdc44ed07d1094b'){ var cli=DB.clientes[0]; closeModal(); abrirAreaCliente(cli); showToast('Bem-vindo, '+cli.nome.split(' ')[0]+'! ✓'); sessionStorage.setItem('cli_auth','1'); } else { e.textContent='E-mail ou senha incorretos.'; e.style.display='block'; } } // ── ABRIR ADM ── function abrirAdm(){ document.getElementById('admArea').style.display='block'; document.body.style.overflow='hidden'; document.getElementById('admTitle').textContent='Dashboard'; document.getElementById('admDate').textContent=new Date().toLocaleDateString('pt-BR',{weekday:'long',day:'2-digit',month:'long'}); renderDash(); } // ── FECHAR ADM ── function sairAdm(){ document.getElementById('admArea').style.display='none'; document.body.style.overflow=''; showToast('Você saiu do painel.'); } // ── TROCAR PAINEL ── function showAP(id,el){ document.querySelectorAll('.ap').forEach(p=>p.classList.remove('on')); document.querySelectorAll('.al').forEach(l=>l.classList.remove('on')); document.getElementById('ap-'+id).classList.add('on'); if(el) el.classList.add('on'); const nomes = {dash:'Dashboard',clientes:'Clientes',laudos:'Laudos',config:'Configurações'}; document.getElementById('admTitle').textContent = nomes[id]||id; if(id==='clientes') renderClientes(); if(id==='laudos') renderLaudos(); } // ── DASHBOARD ── function renderDash(){ const total = DB.clientes.length; const totalL = DB.laudos.length; const emAnd = DB.laudos.filter(l=>l.status!=='Concluído').length; const conc = DB.laudos.filter(l=>l.status==='Concluído').length; document.getElementById('kpi-cli').textContent = total; document.getElementById('kpi-lau').textContent = totalL; document.getElementById('kpi-and').textContent = emAnd; document.getElementById('kpi-con').textContent = conc; const statusColor = {'Concluído':'#6ee7b7','Em análise':'#fde68a','Vistoria agendada':'#93c5fd','Em elaboração':'#fbbf24','Em revisão':'#c4b5fd'}; const el = document.getElementById('dash-laudos-lista'); if(!DB.laudos.length){ el.innerHTML='

Nenhum laudo cadastrado.

'; return; } el.innerHTML = ` ${DB.laudos.slice(-5).reverse().map(l=>{ const cli = DB.clientes.find(c=>c.id===l.clienteId); const sc = statusColor[l.status]||'#e5e7eb'; return ``; }).join('')}
CódigoClienteTipoValorStatus
${l.cod}${cli?cli.nome:'—'}${l.tipo}R$ ${l.valor}${l.status}
`; } // ── CLIENTES ── function renderClientes(){ const el = document.getElementById('lista-clientes'); if(!DB.clientes.length){ el.innerHTML='

Nenhum cliente cadastrado.

'; return; } el.innerHTML = ` ${DB.clientes.map(c=>{ const qtd = DB.laudos.filter(l=>l.clienteId===c.id).length; return ``; }).join('')}
NomeE-mailTelefoneLaudos
${c.nome} ${c.email} ${c.tel||'—'} ${qtd}
`; } function abrirModalCliente(id){ editandoClienteId = id; const m = document.getElementById('modalCliente'); m.style.display='flex'; if(id){ const c = DB.clientes.find(x=>x.id===id); document.getElementById('modalCliTitulo').textContent = 'Editar Cliente'; document.getElementById('editCliId').value = id; document.getElementById('cli-nome').value = c.nome; document.getElementById('cli-email').value = c.email; // senha field removed document.getElementById('cli-tel').value = c.tel||''; } else { document.getElementById('modalCliTitulo').textContent = 'Novo Cliente'; document.getElementById('editCliId').value = ''; document.getElementById('cli-nome').value = ''; document.getElementById('cli-email').value = ''; // senha field removed document.getElementById('cli-tel').value = ''; } } function fecharModalCliente(){ document.getElementById('modalCliente').style.display='none'; } function salvarCliente(){ const nome = document.getElementById('cli-nome').value.trim(); const email = document.getElementById('cli-email').value.trim().toLowerCase(); const senha = ''; const tel = document.getElementById('cli-tel').value.trim(); if(!nome||!email){ showToast('Preencha nome e e-mail!'); return; } const id = document.getElementById('editCliId').value; if(id){ const idx = DB.clientes.findIndex(c=>c.id===id); DB.clientes[idx] = {...DB.clientes[idx], nome, email, tel}; showToast('Cliente atualizado! ✓'); } else { DB.clientes.push({id:'c'+(Date.now()), nome, email, tel}); showToast('Cliente cadastrado! ✓'); } fecharModalCliente(); renderClientes(); renderDash(); } function excluirCliente(id){ if(!confirm('Excluir este cliente? Os laudos vinculados serão mantidos.')) return; DB.clientes = DB.clientes.filter(c=>c.id!==id); renderClientes(); renderDash(); showToast('Cliente excluído.'); } // ── LAUDOS ── function renderLaudos(){ const el = document.getElementById('lista-laudos'); if(!DB.laudos.length){ el.innerHTML='

Nenhum laudo cadastrado.

'; return; } const statusColor = {'Concluído':'#6ee7b7','Em análise':'#fde68a','Vistoria agendada':'#93c5fd','Em elaboração':'#fbbf24','Em revisão':'#c4b5fd'}; el.innerHTML = ` ${DB.laudos.map(l=>{ const cli = DB.clientes.find(c=>c.id===l.clienteId); const sc = statusColor[l.status]||'#e5e7eb'; return ``; }).join('')}
CódigoClienteTipoValorDocsStatus
${l.cod} ${cli?cli.nome:'—'} ${l.tipo} R$ ${l.valor} ${l.docs.length} arquivo(s) ${l.status}
`; } function abrirModalLaudo(id){ editandoLaudoId = id; docsTmp = []; const m = document.getElementById('modalLaudo'); m.style.display='flex'; // Preencher select de clientes const sel = document.getElementById('lau-cli'); sel.innerHTML = '' + DB.clientes.map(c=>``).join(''); if(id){ const l = DB.laudos.find(x=>x.id===id); document.getElementById('modalLauTitulo').textContent = 'Editar Laudo'; document.getElementById('editLauId').value = id; document.getElementById('lau-cod').value = l.cod; document.getElementById('lau-cli').value = l.clienteId; document.getElementById('lau-tipo').value = l.tipo; document.getElementById('lau-valor').value = l.valor; document.getElementById('lau-status').value = l.status; docsTmp = [...l.docs]; } else { document.getElementById('modalLauTitulo').textContent = 'Novo Laudo'; document.getElementById('editLauId').value = ''; document.getElementById('lau-cod').value = 'LAU-2026-'; document.getElementById('lau-cli').value = ''; document.getElementById('lau-tipo').value = ''; document.getElementById('lau-valor').value = ''; document.getElementById('lau-status').value = 'Em análise'; } renderDocsTmp(); } function fecharModalLaudo(){ document.getElementById('modalLaudo').style.display='none'; docsTmp=[]; } function adicionarDoc(){ const inp = document.getElementById('doc-novo'); const val = inp.value.trim(); if(!val) return; docsTmp.push(val); inp.value=''; renderDocsTmp(); } function removerDoc(i){ docsTmp.splice(i,1); renderDocsTmp(); } function renderDocsTmp(){ const el = document.getElementById('docs-lista'); if(!docsTmp.length){ el.innerHTML=''; return; } el.innerHTML = docsTmp.map((d,i)=>`
${d}
`).join(''); } function salvarLaudo(){ const cod = document.getElementById('lau-cod').value.trim(); const clienteId = document.getElementById('lau-cli').value; const tipo = document.getElementById('lau-tipo').value; const valor = document.getElementById('lau-valor').value.trim(); const status = document.getElementById('lau-status').value; if(!cod||!clienteId||!tipo||!valor){ showToast('Preencha todos os campos obrigatórios!'); return; } const id = document.getElementById('editLauId').value; if(id){ const idx = DB.laudos.findIndex(l=>l.id===id); DB.laudos[idx] = { id, cod, clienteId, tipo, valor, status, docs: [...docsTmp] }; showToast('Laudo atualizado! ✓'); } else { DB.laudos.push({ id:'l'+(Date.now()), cod, clienteId, tipo, valor, status, docs: [...docsTmp] }); showToast('Laudo cadastrado! ✓'); } fecharModalLaudo(); renderLaudos(); renderDash(); } function excluirLaudo(id){ if(!confirm('Excluir este laudo?')) return; DB.laudos = DB.laudos.filter(l=>l.id!==id); renderLaudos(); renderDash(); showToast('Laudo excluído.'); } // ── ÁREA DO CLIENTE ── function abrirAreaCliente(cli){ const area = document.getElementById('clienteArea'); area.style.display='flex'; document.body.style.overflow='hidden'; document.getElementById('cliNome').textContent = 'Olá, '+cli.nome.split(' ')[0]+'!'; document.getElementById('cliSub').textContent = cli.email; const laudos = DB.laudos.filter(l=>l.clienteId===cli.id); const container = document.getElementById('cliLaudos'); const vazio = document.getElementById('cliVazio'); container.innerHTML=''; if(!laudos.length){ vazio.style.display='block'; return; } vazio.style.display='none'; const statusInfo = { 'Concluído': {cor:'#166534',bg:'#dcfce7',icon:'✓'}, 'Em análise': {cor:'#92400e',bg:'#fef3c7',icon:'⏳'}, 'Vistoria agendada': {cor:'#1e40af',bg:'#dbeafe',icon:'📅'}, 'Em elaboração': {cor:'#78350f',bg:'#ffedd5',icon:'✍'}, 'Em revisão': {cor:'#4c1d95',bg:'#ede9fe',icon:'🔍'} }; laudos.forEach(l=>{ const st = statusInfo[l.status]||{cor:'#374151',bg:'#f3f4f6',icon:'•'}; const docsHtml = l.docs.length ? l.docs.map(d=>`
${d}
`).join('') : `

Nenhum documento disponível ainda. Em breve você poderá baixar aqui.

`; container.innerHTML += `
Código do laudo ${l.cod}
${st.icon} ${l.status}
Serviço

${l.tipo}

Documentos

${docsHtml}
`; }); } function fecharCliente(){ document.getElementById('clienteArea').style.display='none'; document.body.style.overflow=''; } // ── FAQ ── function tFaq(el) { el.closest('.fi').classList.toggle('open'); } // ── Contato ── function enviarForm() { const n = document.getElementById('nome').value.trim(), t = document.getElementById('telefone').value.trim(), tp = document.getElementById('tipoServico').value, m = document.getElementById('mensagem').value.trim(); if (!n || !t || !m) { alert('Preencha nome, telefone e mensagem.'); return; } const tx = encodeURIComponent('Olá Eng. Fábio!\n\nNome: ' + n + '\nTelefone: ' + t + (tp ? '\nAssunto: ' + tp : '') + '\n\nMensagem: ' + m); window.open('https://wa.me/5562986212400?text=' + tx, '_blank'); } // ── Rate Limiting (anti brute-force) ── var loginAttempts = {adm:0, cli:0, lastAdm:0, lastCli:0}; var originalLoginAdm = loginAdm; var originalLoginCli = loginCli; loginAdm = async function(){ var now = Date.now(); if(loginAttempts.adm >= 5 && now - loginAttempts.lastAdm < 60000){ var e = document.getElementById('aerr'); e.textContent = 'Muitas tentativas. Aguarde 1 minuto.'; e.style.display = 'block'; e.style.color = '#b91c1c'; return; } if(now - loginAttempts.lastAdm > 60000) loginAttempts.adm = 0; loginAttempts.adm++; loginAttempts.lastAdm = now; return originalLoginAdm(); }; loginCli = async function(){ var now = Date.now(); if(loginAttempts.cli >= 5 && now - loginAttempts.lastCli < 60000){ var e = document.getElementById('cerr'); e.textContent = 'Muitas tentativas. Aguarde 1 minuto.'; e.style.display = 'block'; e.style.color = '#b91c1c'; return; } if(now - loginAttempts.lastCli > 60000) loginAttempts.cli = 0; loginAttempts.cli++; loginAttempts.lastCli = now; return originalLoginCli(); }; function rastrearCli() { const cod = document.getElementById('cliRastCod').value.trim().toUpperCase(); const res = document.getElementById('cliRastResult'); const ld = { 'LAU-2026-001': ['Recebimento da demanda','Vistoria realizada','Laudo em elaboração','Revisão final','Laudo concluído e liberado'], 'LAU-2026-002': ['Recebimento da demanda','Vistoria em agendamento'], 'LAU-2026-003': ['Recebimento da demanda','Vistoria realizada','Laudo em elaboração'] }; if (!cod) { res.innerHTML = '

Informe o código do laudo.

'; return; } if (!ld[cod]) { res.innerHTML = '

Código não encontrado.

'; return; } res.innerHTML = ld[cod].map((et,i) => `
Etapa ${i+1}${et}
`).join(''); }