Configuração Inicial

Para ativar o sistema online, você precisa criar um projeto gratuito no Supabase e colar as credenciais abaixo.

1. Crie sua conta gratuitaAcesse supabase.com → clique em Start for free → entre com Google
2. Crie um novo projetoClique em New Project → dê um nome → anote a senha → clique em Create project
3. Copie as credenciaisNo menu lateral vá em Settings → API → copie a Project URL e a chave anon public
4. Execute o SQL das tabelasNo menu vá em SQL Editor → cole o conteúdo do arquivo setup.sql → clique em Run

Últimos Clientes

Financeiro Recente

ClienteCPFProcessoTipoStatusAções
ClienteTotalRecebidoPendenteParcelasTipoStatusAções
DescriçãoCategoriaValorDataStatusAções

Consulta Avulsa

Processos Cadastrados

/* ===================================================== RB ADVOGADOS — CHECKLIST DINÂMICO Versão: 1.0 | Mai 2026 INSTALAÇÃO (4 passos): 1. Faça upload deste arquivo no Cloudflare Pages 2. No index.html, adicione antes de : 3. No index.html, no select#c-tipo, adicione: onchange="renderChecklist(this.value)" 4. No index.html, após o que fecha o form-row do Tipo de Ação, adicione:
===================================================== */ (function() { // ── CSS ────────────────────────────────────────────────────── const style = document.createElement('style'); style.textContent = ` #checklist-inline-wrap{margin-top:4px;overflow:hidden;max-height:0;transition:max-height .35s ease;} #checklist-inline-wrap.show{max-height:1400px;} .cl-box{background:rgba(201,168,76,.05);border:1px solid #3A2E12;border-radius:10px;padding:14px 16px;margin-top:2px;} .cl-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;} .cl-title{font-size:.72rem;color:#C9A84C;font-weight:600;text-transform:uppercase;letter-spacing:.08em;} .cl-progress-bar{height:4px;background:#252525;border-radius:4px;overflow:hidden;margin-bottom:10px;} .cl-progress-fill{height:100%;background:#C9A84C;border-radius:4px;transition:width .25s;} .cl-cat-label{font-size:.67rem;color:#5E5A55;text-transform:uppercase;letter-spacing:.07em;margin:8px 0 3px;} .cl-item{display:flex;align-items:center;gap:8px;padding:5px 7px;border-radius:6px;cursor:pointer;transition:background .12s;font-size:.78rem;color:#EAE6DE;} .cl-item:hover{background:rgba(201,168,76,.07);} .cl-item.checked{text-decoration:line-through;color:#5E5A55;} .cl-item input[type=checkbox]{accent-color:#C9A84C;width:14px;height:14px;flex-shrink:0;cursor:pointer;} `; document.head.appendChild(style); // ── DADOS ──────────────────────────────────────────────────── window.CHECKLISTS = { 'Salário-Maternidade':[{cat:'📋 Documentos Pessoais',docs:['RG / CNH (frente e verso)','CPF','Comprovante de residência (últimos 3 meses)','Certidão de nascimento do filho / adoção']},{cat:'🏥 Médicos / Nascimento',docs:['Declaração de nascido vivo (DNV) ou certidão de nascimento','Atestado médico com DPP (data provável do parto)','Cartão de pré-natal (se existir)']},{cat:'📊 Vínculos / Contribuições',docs:['Carteira de Trabalho (CTPS)','Extrato CNIS','Carnê GPS / comprovante de contribuição (autônoma ou MEI)','Extrato FGTS (se empregada)']},{cat:'🏦 Dados Bancários',docs:['Comprovante de conta bancária (Pix, conta corrente ou poupança)']}], 'Auxílio-Doença':[{cat:'📋 Documentos Pessoais',docs:['RG / CNH','CPF','Comprovante de residência']},{cat:'🏥 Documentos Médicos',docs:['Relatório médico atualizado com CID','Exames complementares (laboratoriais, imagem)','Atestados médicos anteriores','Laudo de especialista (se houver)','Receitas de medicamentos contínuos']},{cat:'📊 Vínculos / Contribuições',docs:['Carteira de Trabalho (CTPS)','Extrato CNIS','Carnê GPS / comprovante de contribuição','Carta de demissão ou rescisão (se desempregado)']},{cat:'📄 Outros',docs:['Comprovante de conta bancária','Procuração assinada']}], 'Auxílio-Acidente':[{cat:'📋 Documentos Pessoais',docs:['RG / CNH','CPF','Comprovante de residência']},{cat:'🚑 Acidente / Lesão',docs:['Boletim de ocorrência (se acidente)','CAT — Comunicação de Acidente de Trabalho (se acidente de trabalho)','Relatório médico com sequela e CID','Exames de imagem (RX, tomografia, ressonância)','Laudos periciais anteriores (se existirem)','Documentação de tratamento realizado']},{cat:'📊 Vínculos / Contribuições',docs:['Carteira de Trabalho (CTPS)','Extrato CNIS','Comprovante de vínculo na data do acidente']},{cat:'📄 Outros',docs:['Comprovante de conta bancária','Procuração assinada','Carta de indeferimento INSS (se houver)']}], 'Aposentadoria por Invalidez':[{cat:'📋 Documentos Pessoais',docs:['RG / CNH','CPF','Comprovante de residência','Certidão de nascimento ou casamento']},{cat:'🏥 Documentos Médicos',docs:['Relatório médico detalhado com CID e prognóstico','Exames complementares recentes','Histórico de tratamentos','Laudos de especialistas','Comprovante de internações (se houver)']},{cat:'📊 Vínculos / Contribuições',docs:['Carteira de Trabalho (CTPS) completa','Extrato CNIS completo','Carnê GPS / comprovante de contribuição','PPP (se trabalho especial)']},{cat:'📄 Outros',docs:['Comprovante de conta bancária','Procuração assinada','Carta de indeferimento INSS (se houver)']}], 'Aposentadoria por Idade':[{cat:'📋 Documentos Pessoais',docs:['RG / CNH','CPF','Comprovante de residência','Certidão de nascimento ou casamento']},{cat:'🌾 Atividade Rural (se segurado especial)',docs:['Declaração de produtor rural / ITR','Notas fiscais de venda de produção','Contrato de arrendamento / parceria rural','Declaração de sindicato rural com firma reconhecida','Fotos da propriedade','TIAR — Inscrição no INCRA']},{cat:'📊 Vínculos / Contribuições',docs:['Carteira de Trabalho (CTPS)','Extrato CNIS completo','Carnê GPS (se autônomo)']},{cat:'📄 Outros',docs:['Comprovante de conta bancária','Procuração assinada','Carta de indeferimento INSS (se houver)']}], 'Aposentadoria por Tempo de Contribuição':[{cat:'📋 Documentos Pessoais',docs:['RG / CNH','CPF','Comprovante de residência','Certidão de nascimento ou casamento']},{cat:'📊 Vínculos / Contribuições',docs:['Carteira de Trabalho (CTPS) completa','Extrato CNIS completo','Certidões de tempo de contribuição (outros regimes)','Carnê GPS / comprovante de contribuição']},{cat:'🏭 Tempo Especial (se aplicável)',docs:['PPP — Perfil Profissiográfico Previdenciário','LTCAT — Laudo Técnico das Condições Ambientais','EPI — comprovante de não neutralização']},{cat:'📄 Outros',docs:['Comprovante de conta bancária','Procuração assinada','Carta de indeferimento (se houver)']}], 'Aposentadoria Especial':[{cat:'📋 Documentos Pessoais',docs:['RG / CNH','CPF','Comprovante de residência']},{cat:'🏭 Atividade Especial',docs:['PPP — Perfil Profissiográfico Previdenciário (todos os vínculos)','LTCAT — Laudo Técnico das Condições Ambientais','Comprovante de uso de EPI (e não neutralização)','Carteira de Trabalho (CTPS)','Contrato de trabalho']},{cat:'📊 Contribuições',docs:['Extrato CNIS completo','Carnê GPS (se autônomo)']},{cat:'📄 Outros',docs:['Comprovante de conta bancária','Procuração assinada','Carta de indeferimento (se houver)']}], 'Pensão por Morte':[{cat:'📋 Documentos do Dependente',docs:['RG / CNH do dependente','CPF do dependente','Certidão de casamento ou de união estável','Certidão de nascimento (filho dependente)','Comprovante de residência (mesmo endereço do falecido)','Comprovante de dependência econômica (se não for cônjuge/filho)']},{cat:'🪦 Documentos do Falecido',docs:['Certidão de óbito','CPF do falecido','CTPS do falecido','Extrato CNIS do falecido','Comprovante de qualidade de segurado']},{cat:'📄 Outros',docs:['Comprovante de conta bancária do dependente','Procuração assinada','Carta de indeferimento (se houver)']}], 'Auxílio-Reclusão':[{cat:'📋 Documentos do Dependente',docs:['RG / CNH do dependente','CPF do dependente','Certidão de casamento ou de união estável','Certidão de nascimento (filhos)','Comprovante de residência']},{cat:'🔒 Documentos do Recluso',docs:['Certidão de recolhimento emitida pela autoridade competente','CPF do recluso','Extrato CNIS do recluso','CTPS do recluso']},{cat:'📄 Outros',docs:['Comprovante de conta bancária','Procuração assinada','Carta de indeferimento (se houver)']}], 'BPC/LOAS — Pessoa com Deficiência':[{cat:'📋 Documentos Pessoais',docs:['RG / CNH','CPF','Comprovante de residência','Certidão de nascimento (menores)','Documentos do representante legal (se houver)']},{cat:'🏥 Deficiência',docs:['Laudo médico com descrição da deficiência e CID','Relatório médico atualizado','Exames complementares','Laudos de reabilitação / avaliação funcional','Histórico de tratamentos']},{cat:'💰 Renda Familiar',docs:['Comprovante de renda de todos os membros da família','Declaração de composição familiar','Certidão de nascimento de todos os membros','Comprovante de benefícios recebidos por membros da família']},{cat:'📄 Outros',docs:['Comprovante de conta bancária','Procuração assinada','Carta de indeferimento (se houver)']}], 'BPC/LOAS — Idoso':[{cat:'📋 Documentos Pessoais',docs:['RG / CNH','CPF','Comprovante de residência','Certidão de nascimento ou RG com data de nascimento']},{cat:'💰 Renda Familiar',docs:['Comprovante de renda de todos os membros da família','Declaração de composição familiar','Certidão de nascimento de todos os membros','Comprovante de benefícios recebidos por membros da família']},{cat:'📄 Outros',docs:['Comprovante de conta bancária','Procuração assinada','Carta de indeferimento (se houver)']}], 'Revisão de Benefício':[{cat:'📋 Documentos Pessoais',docs:['RG / CNH','CPF','Comprovante de residência']},{cat:'📊 Documentos do Benefício',docs:['Carta de concessão do benefício','Extrato do benefício (INSS / extrato bancário)','Extrato CNIS completo','CTPS (se houver vínculos não considerados)','Carnê GPS / contribuições não computadas']},{cat:'📄 Outros',docs:['Comprovante de conta bancária','Procuração assinada','Carta de indeferimento do pedido de revisão (se houver)']}], 'Restabelecimento de Benefício':[{cat:'📋 Documentos Pessoais',docs:['RG / CNH','CPF','Comprovante de residência']},{cat:'📊 Benefício Cessado',docs:['Carta / comunicado de cessação do benefício','Carta de concessão original','Extrato CNIS']},{cat:'🏥 Médicos (se benefício por incapacidade)',docs:['Relatório médico atualizado com CID','Exames recentes','Laudos de especialistas']},{cat:'📄 Outros',docs:['Comprovante de conta bancária','Procuração assinada']}], 'Reconhecimento de Tempo de Contribuição':[{cat:'📋 Documentos Pessoais',docs:['RG / CNH','CPF','Comprovante de residência']},{cat:'📊 Vínculos a Reconhecer',docs:['Carteira de Trabalho (CTPS) — todas as páginas','Contrato de trabalho','Extrato CNIS','Carnê GPS / guias de recolhimento','Certidão de tempo de contribuição de outro regime (RPPS)','Declaração do empregador','Rescisão contratual']},{cat:'📄 Outros',docs:['Comprovante de conta bancária','Procuração assinada','Carta de indeferimento (se houver)']}], 'Habeas Corpus':[{cat:'📋 Documentos do Paciente',docs:['RG / CPF do paciente','Certidão de antecedentes criminais (se possível)']},{cat:'⚖️ Documentos Processuais',docs:['Número do processo / inquérito','Mandado de prisão (cópia)','Decisão que decretou a prisão','Auto de prisão em flagrante (se aplicável)','Últimas peças do processo (denúncia, sentença)']},{cat:'📄 Outros',docs:['Procuração assinada','Declaração de hipossuficiência (se requerer gratuidade)']}], 'Defesa Criminal — Tráfico de Drogas':[{cat:'📋 Documentos Pessoais',docs:['RG / CNH','CPF','Comprovante de residência','Certidão de antecedentes criminais']},{cat:'⚖️ Documentos Processuais',docs:['Auto de prisão em flagrante (APF)','Laudo de exame de substância (toxicológico)','Boletim de ocorrência','Número do processo / vara criminal']},{cat:'📄 Outros',docs:['Procuração assinada','Comprovante de emprego / renda','Certidão de nascimento de filhos dependentes']}], 'Defesa Criminal — Furto/Roubo':[{cat:'📋 Documentos Pessoais',docs:['RG / CNH','CPF','Comprovante de residência','Certidão de antecedentes criminais']},{cat:'⚖️ Documentos Processuais',docs:['Boletim de ocorrência','Auto de prisão em flagrante (se preso)','Número do processo / vara criminal','Cópia da denúncia (se oferecida)']},{cat:'📄 Outros',docs:['Procuração assinada','Comprovante de emprego / renda','Testemunhas (nomes e endereços)']}], 'Defesa Criminal — Homicídio':[{cat:'📋 Documentos Pessoais',docs:['RG / CNH','CPF','Comprovante de residência','Certidão de antecedentes criminais']},{cat:'⚖️ Documentos Processuais',docs:['Boletim de ocorrência','Auto de prisão em flagrante','Laudo de necropsia (se disponível)','Número do processo / Vara do Júri','Cópia da denúncia','Pronúncia (se houver)']},{cat:'📄 Outros',docs:['Procuração assinada','Testemunhas (nomes e endereços)']}], 'Defesa Criminal — Violência Doméstica':[{cat:'📋 Documentos Pessoais',docs:['RG / CNH do réu','CPF','Comprovante de residência','Certidão de nascimento dos filhos (se houver)']},{cat:'⚖️ Documentos Processuais',docs:['Boletim de ocorrência','Medida protetiva (cópia, se decretada)','Número do processo','Laudo do IML (se houver)']},{cat:'📄 Outros',docs:['Procuração assinada','Comprovante de endereço diferente da vítima (se separados)']}], 'Execução Penal / Progressão de Regime':[{cat:'📋 Documentos Pessoais',docs:['RG / CPF do apenado','Certidão de antecedentes criminais']},{cat:'⚖️ Execução',docs:['Guia de recolhimento / execução','Sentença condenatória transitada em julgado','Certidão de tempo de pena cumprida','Relatório de comportamento / atestado de conduta','Exame criminológico (se exigido)']},{cat:'📄 Outros',docs:['Procuração assinada','Proposta de emprego ou residência (para regime aberto)']}], 'Revisão Criminal':[{cat:'📋 Documentos Pessoais',docs:['RG / CPF do condenado','Certidão de antecedentes']},{cat:'⚖️ Processo Original',docs:['Sentença condenatória','Acórdãos (2ª instância / STJ / STF se houver)','Peças principais (denúncia, alegações, laudos)','Novas provas (se novo fundamento)']},{cat:'📄 Outros',docs:['Procuração assinada']}], 'Indenização por Danos Morais':[{cat:'📋 Documentos Pessoais',docs:['RG / CNH','CPF','Comprovante de residência']},{cat:'📊 Documentos do Caso',docs:['Prints / screenshots (se dano digital)','Registros fotográficos','Boletim de ocorrência (se aplicável)','Protocolo de reclamação / SAC','Documentos que comprovam o fato gerador','Testemunhas (nomes e endereços)']},{cat:'📄 Outros',docs:['Comprovante de conta bancária','Procuração assinada']}], 'Indenização por Danos Materiais':[{cat:'📋 Documentos Pessoais',docs:['RG / CNH','CPF','Comprovante de residência']},{cat:'📊 Comprovação do Dano',docs:['Notas fiscais / recibos dos bens danificados','Orçamentos de reparo ou substituição','Laudos periciais / técnicos','Fotos do dano','Boletim de ocorrência (se aplicável)']},{cat:'📄 Outros',docs:['Comprovante de conta bancária','Procuração assinada']}], 'Revisão de Contrato / Superendividamento':[{cat:'📋 Documentos Pessoais',docs:['RG / CNH','CPF','Comprovante de residência','Comprovante de renda']},{cat:'📊 Documentos do Contrato',docs:['Contrato original','Extratos / demonstrativos de débito','Boletos / comprovantes de pagamento','Histórico de parcelas pagas','Propostas e correspondências com a empresa']},{cat:'📄 Outros',docs:['Comprovante de conta bancária','Procuração assinada']}], 'Ação de Alimentos':[{cat:'📋 Documentos Pessoais',docs:['RG / CNH do requerente','CPF','Certidão de nascimento do(s) filho(s)','Certidão de casamento ou reconhecimento de paternidade']},{cat:'💰 Necessidade / Capacidade',docs:['Comprovante de renda do requerente','Comprovante de renda do alimentante (se possível)','Despesas do menor (escola, saúde, alimentação)','Extratos bancários']},{cat:'📄 Outros',docs:['Comprovante de conta bancária','Procuração assinada']}], 'Divórcio / Dissolução de União Estável':[{cat:'📋 Documentos Pessoais',docs:['RG / CNH de ambos','CPF de ambos','Certidão de casamento (com averbação atualizada)','Comprovante de residência de ambos']},{cat:'🏘️ Patrimônio',docs:['Escritura / matrícula de imóveis','Documentos de veículos (CRLV)','Extratos bancários / aplicações','Declaração de IR dos últimos 2 anos']},{cat:'👨‍👩‍👧 Filhos (se houver)',docs:['Certidão de nascimento dos filhos','Documentos escolares / médicos (para guarda)']},{cat:'📄 Outros',docs:['Procuração assinada']}], 'Inventário / Herança':[{cat:'📋 Documentos do Falecido',docs:['Certidão de óbito','RG / CPF do falecido','Certidão de casamento','Testamento (se houver)']},{cat:'👨‍👩‍👧 Herdeiros',docs:['RG / CNH de todos os herdeiros','CPF de todos os herdeiros','Certidão de nascimento (filhos)','Certidão de casamento (cônjuge)']},{cat:'🏘️ Bens do Espólio',docs:['Matrícula / escritura de imóveis','Documentos de veículos','Extratos bancários / saldo em conta','Declaração de IR do falecido','Certidão de ônus reais dos imóveis']},{cat:'📄 Outros',docs:['Procuração assinada','Certidão negativa de débitos']}], 'Direito do Consumidor':[{cat:'📋 Documentos Pessoais',docs:['RG / CNH','CPF','Comprovante de residência']},{cat:'📊 Documentos do Caso',docs:['Nota fiscal / cupom fiscal / contrato','Prints de conversas / e-mails','Protocolo de reclamação (Procon, site)','Fotos do produto com defeito','Orçamento de reparo','Boletim de ocorrência (se aplicável)']},{cat:'📄 Outros',docs:['Comprovante de conta bancária','Procuração assinada']}], 'Reclamação Trabalhista — Verbas Rescisórias':[{cat:'📋 Documentos Pessoais',docs:['RG / CNH','CPF','PIS / PASEP','Comprovante de residência']},{cat:'📊 Contrato de Trabalho',docs:['Carteira de Trabalho (CTPS)','Contrato de trabalho (se houver)','Holerites / contracheques','Termo de rescisão (TRCT)','Extrato FGTS','Extrato CNIS','Aviso prévio (trabalhado ou indenizado)']},{cat:'📄 Outros',docs:['Comprovante de conta bancária','Procuração assinada']}], 'Reclamação Trabalhista — Horas Extras':[{cat:'📋 Documentos Pessoais',docs:['RG / CNH','CPF','PIS / PASEP','Comprovante de residência']},{cat:'📊 Documentos do Trabalho',docs:['Carteira de Trabalho (CTPS)','Holerites / contracheques','Ponto eletrônico / folha de ponto (se possível obter)','E-mails ou mensagens fora do horário','Controle de acesso / registro de entrada e saída']},{cat:'📄 Outros',docs:['Comprovante de conta bancária','Procuração assinada','Testemunhas (nomes e endereços)']}], 'Acidente de Trabalho':[{cat:'📋 Documentos Pessoais',docs:['RG / CNH','CPF','PIS / PASEP','Comprovante de residência']},{cat:'🚑 Acidente',docs:['CAT — Comunicação de Acidente de Trabalho','Relatório médico com CID e descrição da lesão','Exames de imagem / laudos','Boletim de ocorrência (se houver)','Comprovante de atendimento de emergência','CTPS na data do acidente']},{cat:'📊 Vínculos',docs:['Holerites / contracheques','Extrato FGTS e CNIS']},{cat:'📄 Outros',docs:['Comprovante de conta bancária','Procuração assinada']}], 'Reconhecimento de Vínculo Empregatício':[{cat:'📋 Documentos Pessoais',docs:['RG / CNH','CPF','PIS / PASEP','Comprovante de residência']},{cat:'📊 Prova do Vínculo',docs:['Mensagens / e-mails com o empregador','Recibos de pagamento / depósitos bancários','Fotos no local de trabalho','Uniformes / crachá / materiais da empresa','Testemunhas (nomes e endereços)','Extrato bancário mostrando depósitos regulares']},{cat:'📄 Outros',docs:['Comprovante de conta bancária','Procuração assinada']}], 'Outro':[{cat:'📋 Documentos Básicos',docs:['RG / CNH','CPF','Comprovante de residência']},{cat:'📄 Outros',docs:['Documentos específicos do caso (a definir com o advogado)','Comprovante de conta bancária','Procuração assinada']}] }; // ── FUNÇÕES ────────────────────────────────────────────────── let _clState = {}; function _clKey(t, d) { return t + '|||' + d; } window.renderChecklist = function(tipo) { const wrap = document.getElementById('checklist-inline-wrap'); if (!wrap) return; if (!tipo || !window.CHECKLISTS[tipo]) { wrap.classList.remove('show'); return; } wrap.classList.add('show'); const cats = window.CHECKLISTS[tipo]; const allDocs = cats.flatMap(c => c.docs); const total = allDocs.length; const checked = allDocs.filter(d => _clState[_clKey(tipo, d)]).length; const pct = total ? Math.round(checked / total * 100) : 0; let html = `
✅ Documentos necessários ${checked}/${total} documentos
`; cats.forEach(cat => { html += `
${cat.cat}
`; cat.docs.forEach(doc => { const key = _clKey(tipo, doc); const isChecked = !!_clState[key]; const sd = doc.replace(/\\/g,'\\\\').replace(/'/g,"\\'"); const st = tipo.replace(/\\/g,'\\\\').replace(/'/g,"\\'"); html += `
${doc}
`; }); }); html += '
'; wrap.innerHTML = html; }; window.toggleCl = function(tipo, doc, itemEl) { const key = _clKey(tipo, doc); _clState[key] = !_clState[key]; const cb = itemEl.querySelector('input[type=checkbox]'); if (cb) cb.checked = _clState[key]; itemEl.classList.toggle('checked', _clState[key]); const cats = window.CHECKLISTS[tipo]; if (!cats) return; const allDocs = cats.flatMap(c => c.docs); const total = allDocs.length; const checked = allDocs.filter(d => _clState[_clKey(tipo, d)]).length; const pct = total ? Math.round(checked / total * 100) : 0; const fill = document.getElementById('cl-fill'); if (fill) fill.style.width = pct + '%'; const hdr = itemEl.closest('.cl-box')?.querySelector('.cl-header span:last-child'); if (hdr) hdr.textContent = checked + '/' + total + ' documentos'; }; // ── AUTO-PATCH DO DOM (se já existir o select) ──────────────── function patchDOM() { const sel = document.getElementById('c-tipo'); if (sel && !sel.onchange) { sel.addEventListener('change', function() { window.renderChecklist(this.value); }); } // Injetar container se não existir if (!document.getElementById('checklist-inline-wrap')) { if (sel) { const wrap = document.createElement('div'); wrap.id = 'checklist-inline-wrap'; // Inserir após o form-row que contém o select c-tipo const row = sel.closest('.form-row'); if (row && row.parentNode) { row.parentNode.insertBefore(wrap, row.nextSibling); console.log('[RB] Checklist container injetado automaticamente'); } } } console.log('[RB] Checklist patch carregado'); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', patchDOM); } else { patchDOM(); } })();