# Manual Oficial e Base de Conhecimento — Ecossistema Brasil Powerlifting

> **Guia de Contexto para Assistentes de IA (LLMs) e Suporte ao Usuário:**
> Este documento é a especificação canônica e manual de referência do ecossistema de software **Brasil Powerlifting** (desenvolvido pela Hiroshi Tecnologia). O sistema atua em duas frentes integradas:
> 1. **Aplicativo Desktop (*Gestão de Torneios Brasil Powerlifting*):** Software *local-first* para Windows que gerencia o campeonato de forma 100% offline via rede local (LAN/Wi-Fi).
> 2. **Plataforma Web e Nuvem (`brasilpowerlifting.com.br`):** Portal online para criação prévia de campeonatos, inscrições de atletas pela internet, acompanhamento ao vivo, overlays de transmissão (OBS Studio / vMix) e acervo permanente de rankings.
>
> Utilize este documento para responder a dúvidas sobre arquitetura, telas, regras de negócio, fluxos operacionais, ícones de botões, fórmulas de cálculo (DOTS/Wilks), transmissões ao vivo e resolução de problemas.

---

## SEÇÃO 1: VISÃO GERAL, LAUNCHER WINDOWS E PAINEL DE CONTROLE PRINCIPAL

### 1.1. Arquitetura Híbrida (Offline-Master / Cloud-Companion)

O ecossistema opera sob a regra de ouro de segurança de dados esportivos: **a máquina local no dia do evento é sempre a fonte absoluta da verdade**.

* **Topologia Local (LAN):** O computador principal Windows executa o Launcher em C# (`PainelPowerlifting.cs`), que hospeda internamente um servidor Node.js e um banco de dados SQLite (`campeonato.db`) em modo `WAL` de alta concorrência. Dispositivos conectados ao mesmo roteador Wi-Fi (celulares de árbitros, Smart TVs de telão e aquecimento, notebooks secundários) comunicam-se via IP local na porta TCP `3000` usando API REST e WebSockets (`Socket.io`), sem depender de internet.
* **Topologia Web (Cloud):** O servidor de API em nuvem (`app.brasilpowerlifting.com.br`) gerencia inscrições online prévias, backups remotos e visualização pública antes, durante e após o campeonato.
* **Sincronização Master/Slave:** Nenhuma alteração feita na web sobrescreve o computador local durante o evento. O organizador baixa os inscritos da nuvem antes de iniciar a competição e, durante o torneio, o aplicativo desktop envia atualizações unidirecionais (*Auto-Push*) para a nuvem a cada ação da Mesa de Controle.

### 1.2. O Launcher (Janela do Servidor no Windows)

Ao abrir o programa no computador principal, a primeira janela exibida é o **Launcher em C#**. **Esta janela não deve ser fechada durante o campeonato.**

* **Painel de Logs (Registro de Atividades):** Exibe em tempo real as operações internas do servidor Node.js (criação de backups automáticos, sincronizações, conexões de aparelhos e alertas de rede).
* **Controle de Energia (Anti-Hibernação):** O Launcher comunica-se diretamente com a API `SetThreadExecutionState` do Windows. Enquanto a janela do servidor estiver aberta, o computador fica bloqueado de entrar em modo de suspensão, hibernar ou desligar a tela (mesmo operando na bateria do notebook), garantindo que o servidor não saia do ar no meio de um levantamento.
* **Botão `🛡️ Liberar Firewall (Wi-Fi)`:** Essencial para conectar outros aparelhos no dia do torneio. Ao clicar neste botão, o aplicativo aciona o UAC do Windows e configura automaticamente o Windows Defender para abrir a porta TCP `3000` na rede local (LAN). Sem isso, os celulares dos árbitros e Smart TVs não conseguirão se conectar ao computador.
* **Botão `🔄 Atualizar IP Wi-Fi`:** Varre novamente as placas de rede do computador (ignorando adaptadores virtuais como WSL, Hamachi ou VPNs) para atualizar os links de conexão local caso o computador tenha acabado de trocar de roteador Wi-Fi.
* **Botão `🛑 Encerrar Servidor com Segurança`:** Nunca feche o servidor de forma forçada. Ao clicar em `🛑 Encerrar Servidor com Segurança`, o Launcher envia um sinal ao servidor para consolidar os arquivos temporários (`WAL`) do SQLite e gerar um último backup local antes de encerrar o processo Node.js.

### 1.3. A Tela Inicial no Navegador (`index.html`)

Clicar no botão azul `🌐 ABRIR PAINEL PRINCIPAL` no Launcher abrirá o navegador padrão (Chrome ou Edge) na página inicial do aplicativo (`http://localhost:3000`).

* **Menu de Navegação:** A tela inicial apresenta **8 grandes cartões coloridos**, estruturados sequencialmente em fases (da Configuração do Evento até o Telão, Resultados e Nuvem) para guiar o organizador.
* **Links de Distribuição em Rede Local (QR Codes / IPs Locais):**
  * Na base da tela, o sistema identifica o IP real da máquina no roteador Wi-Fi (ex: `192.168.1.100`) e exibe atalhos diretos e botões para copiar os endereços dos aparelhos periféricos:
    * **Celular dos Árbitros:** `http://192.168.1.100:3000/arbitro`
    * **TV da Sala de Aquecimento:** `http://192.168.1.100:3000/aquecimento`
    * **Telão da Plateia:** `http://192.168.1.100:3000/display`
* **Caminho Físico dos Dados:** Exibe o diretório real no Windows (`%LOCALAPPDATA%\BrasilPowerlifting`) onde o banco de dados (`campeonato.db`) e os backups locais estão salvos.

### 1.4. Proteção LGPD e Bloqueio de Encerramento Remoto

* **Política de Privacidade (LGPD):** O rodapé da tela inicial possui a Política de Privacidade informando que os dados residem localmente e que o uso da Nuvem é 100% opcional.
* **Visibilidade Restrita do Botão de Desligamento:** O botão `🛑 Encerrar Servidor com Segurança` dentro do navegador só aparece para quem acessa a partir da própria máquina principal (`localhost`). Se alguém acessar a tela inicial via Wi-Fi, o botão fica oculto, impedindo o desligamento remoto por terceiros.

---

## SEÇÃO 2: APLICATIVO DESKTOP — GUIA OPERACIONAL DOS MÓDULOS (LOCAL-FIRST)

### MÓDULO 1: Configuração de Campeonato (`criar-evento.html` — Cartão `1. Evento`)

Ponto de partida do sistema, responsável por definir a estrutura, as regras de categorização e a física (plataformas e anilhas) do torneio.

#### 1. Visão Geral e Navegação
* **Barra de Navegação Superior:** Apresenta atalhos para todas as telas do sistema (`Início`, `Evento`, `Inscrição`, `Baterias`, `Pesagem`, `Mesa`, `Telão`, `Resultados` e `Nuvem`).
* **Integração Cloud (Opcional):** Um banner informativo orienta o organizador sobre a possibilidade de usar o portal `brasilpowerlifting.com.br` para receber inscrições online, ressaltando que o uso da nuvem é 100% opcional.
* **Seletor de Ação (`select_acao_evento`):** Permite escolher entre a opção `✨ CRIAR NOVO CAMPEONATO ✨` ou selecionar um campeonato já existente na lista para edição.

#### 2. Configurações Estruturais Base
* **Nome e Data (`nome_evento` e `data_evento`):** Campos obrigatórios. Sem eles, o sistema bloqueia o salvamento.
* **Plataformas Simultâneas (`num_plataformas`):** Define de **1 a 5 plataformas** operando ao mesmo tempo no evento.
* **Padrão de Anilhas (`anilhas_calibradas`):** Define a interface visual da Mesa de Controle e do Telão:
  * **Anilhas Calibradas (IPF):** Gera o desenho da barra com anilhas coloridas oficiais (Vermelha 25 kg, Azul 20 kg, Amarela 15 kg, Verde 10 kg, etc.).
  * **Anilhas Padrão (Academia):** Gera o desenho da barra com anilhas pretas padrão.

#### 3. Motor de Categorização (Regras de Negócio e Tags)
O sistema utiliza Tags interativas para permitir competições amadoras com regras customizadas ou torneios estritamente federados:
* **Modalidades de Levantamento (Checkboxes):** Permite ativar múltiplas modalidades simultâneas: `Full Power`, `Push-Pull`, `Agachamento Solo`, `Supino Solo` e `Terra Solo` (mínimo de 1 obrigatória).
* **Equipamentos / Sub-modalidades:** Inserção de texto livre e botão `Adicionar` (ex: `Raw`, `Equipado`, `Wraps`, `Sling Shot`, `SBD`). Exige no mínimo 1 item cadastrado.
* **Divisões de Idade:** Inserção livre e botão `Adicionar` (ex: `Sub-Júnior`, `Open`, `Master 1`, `Teen`). Exige no mínimo 1 item cadastrado.
* **Categorias de Peso (Masculino e Feminino):** Listas independentes. O algoritmo interno ordena automaticamente as categorias em ordem numérica crescente e posiciona categorias com o prefixo `+` (ex: `+140`) sempre no final da lista. É obrigatório cadastrar pelo menos uma categoria de peso no campeonato.

#### 4. Zona de Exclusão Local Segura
* **Ocultação Inteligente:** A zona vermelha de exclusão (`painel_excluir_evento`) fica oculta durante a criação de um novo evento, aparecendo apenas ao editar um campeonato existente.
* **Validação Anti-Erro:** Exige clicar no botão de exclusão e digitar exatamente o nome do campeonato em um prompt de confirmação.
* **Isolamento Master/Slave:** A exclusão apaga inscrições, baterias e tentativas **apenas do aplicativo no computador local**, preservando intactos os dados que já foram enviados para a Nuvem.

---

### MÓDULO 2: Inscrição e Gestão Local de Atletas (`inscricao.html` — Cartão `2. Inscrição`)

Gerencia a entrada, alteração e cancelamento de competidores após selecionar o campeonato no menu `select_evento`.

#### 1. Modos de Operação e Filtros
* **Seletor de Modo (`select_modo_atleta`):** Alterna entre `✨ CADASTRAR NOVO ATLETA` ou editar um atleta existente. No modo edição, o painel fica amarelo com borda laranja e o botão principal muda para `Salvar Alterações do Atleta`.
* **Barra de Busca/Filtro (`filtro_edicao_atleta`):** Permite digitar o nome ou CPF para filtrar rapidamente o dropdown de edição.
* **Atualização Silenciosa em Rede:** Escuta o evento WebSocket `dados_atletas_atualizados`. Se dois computadores estiverem cadastrando atletas na recepção na mesma rede local, a lista é atualizada automaticamente em segundo plano sem recarregar a página.

#### 2. Preenchimento Automático via Histórico Global
* **Busca no Acervo (`busca_historico_atleta`):** Dispara (com debounce de 250 ms) a partir de 3 caracteres digitados, buscando atletas que já competiram em eventos anteriores naquela máquina.
* **Autofill:** Clicar em um atleta sugerido no dropdown preenche instantaneamente todos os dados pessoais e sociais no formulário.

#### 3. Dados Pessoais e Validações
* **Nome e Equipe:** O **Nome Completo** é o único campo estritamente obrigatório. O campo **Equipe** vem preenchido por padrão como `Sem Equipe`.
* **Data de Nascimento Flexível:** Aceita a data completa (`DD/MM/AAAA`) ou apenas o ano (ex: `1995`), que é convertido internamente para `AAAA-01-01`.
* **Sexo Biológico (`M` / `F`):** Atualiza dinamicamente a lista de categorias de peso (masculinas ou femininas).
* **Campos Secundários:** Cidade, Estado, WhatsApp (com máscara automática), checkbox `PCD` (Pessoa com Deficiência) e Redes Sociais (Instagram, YouTube, Outros).

#### 4. Inteligência e Proteção do Campo CPF
O CPF não é obrigatório, mas possui verificação anti-sobrescrita em tempo real (debounce de 250 ms ao atingir 11 dígitos):
* **Banner de Conflito (`alerta_cpf_existente`):** Se o CPF pertencer a outro cadastro com nome divergente, um alerta amarelo bloqueia a sobrescrita silenciosa e oferece duas opções:
  * `📥 Sim, preencher formulário`: Importa os dados do atleta vinculado àquele CPF.
  * `➕ Não, manter meus dados atuais`: Define `forcarNovoAtletaMesmoComCPF = true`, criando um cadastro 100% independente para não corromper o histórico do outro atleta.

#### 5. Dados de Competição e Agrupamento
* **Múltiplas Divisões de Idade:** Apresentadas como checkboxes, permitindo que o mesmo atleta compita em múltiplas divisões simultaneamente (ex: `Júnior` + `Open`).
* **Categoria "Livre":** Inclui a opção `Livre (Sem Categoria / Definir na Pesagem)` para cadastrar o atleta antecipadamente e definir sua categoria exata automaticamente ao subir na balança.
* **Conflito de Edição Simultânea (`versao_edicao`):** Se dois aparelhos tentarem salvar o mesmo atleta simultaneamente, o servidor retorna `HTTP 409 Conflict`, aborta a sobrescrita e recarrega os dados mais recentes.

#### 6. Cancelamento Seguro (Remoção)
* **Zona Vermelha de Exclusão:** O operador seleciona o atleta em `select_cancelar_atleta` e clica em `Remover Atleta do Campeonato`.
* **Arquivamento:** Após confirmação via prompt, o atleta não é apagado do disco, mas transferido para um evento oculto de sistema chamado `"Cadastros Cancelados"`, removendo-o das listas e baterias ativas.

---

### MÓDULO 3: Gerenciamento de Baterias e Remanejamentos (`baterias.html` — Cartão `3. Baterias`)

Organiza os atletas em grupos de levantamento por movimento e plataforma.

#### 1. Visão Geral e Alertas Proativos
* **Seletor de Movimento (`select_movimento`):** As baterias são independentes por movimento (`Agachamento`, `Supino` ou `Levantamento Terra`).
* **Radar de Atletas Sem Bateria (`aviso_sem_bateria`):** Exibe um banner laranja no topo alertando os nomes de quaisquer atletas inscritos no movimento que ainda estejam sem bateria definida.
* **Painel de Baterias Existentes:** Filtra a visualização por uma bateria criada ou permite excluí-la com o botão `🗑️ Excluir Bateria` (devolvendo os atletas ao status `Sem Bateria`).

#### 2. Modo 1: Agrupar por Categorias (Modo Padrão)
Exibe cartões (`card-grupo`) representando os grupos de atletas por modalidade, equipamento, sexo, divisão e categoria de peso:
* **Motor de Filtragem Avançada:** Filtra os cartões por Sexo, Divisão de Idade, Faixa de Peso (incluindo `Acima de X kg` ou `Até Y kg`), Modalidade, Equipamento e Status (`Com Bateria` / `Sem Bateria`).
* **Barra de Seleção Rápida:** Botões `☑️ Marcar Cartões Visíveis`, `⬜ Desmarcar Visíveis` e `🗑️ Desmarcar Tudo`, com contador em tempo real de cartões e atletas marcados.
* **Painel de Ação de Agrupamento (`painel_acao`):** O organizador digita o nome da nova bateria (ex: `Bateria A`) ou seleciona uma existente, escolhe a **Plataforma de Competição** (`1` a `5`) e clica em `Agrupar Selecionados`.

#### 3. Modo 2: Remanejar Individual e Rodadas Avulsas (4ª Tentativa / PR)
Voltado para exceções, atrasos, faltas ou quebras de recorde:
* **Tabela de Atletas:** Lista os atletas do movimento com busca rápida e botão `☑️ Marcar Visíveis`.
* **Remanejamento por Atraso:** Permite selecionar um atleta atrasado, escolher uma bateria posterior e clicar em `🔀 Aplicar Remanejamento / Criar Bateria Avulsa`.
* **Remoção de Faltas:** Clicar no botão vermelho `🚫 Remover da Bateria (Atleta Faltou)` passa o atleta para `Sem Bateria` naquele movimento sem afetar os demais movimentos.
* **🔥 Bateria Avulsa (4ª Tentativa / PR / Desempate):**
  * Ao marcar a caixa `🔥 Habilitar Rodada Extra / Bateria Avulsa`, surge o campo **Carga Inicial da Tentativa Extra (kg)** (pode ser deixado em `0` para definir na Mesa; valores acima de `500 kg` pedem confirmação).
  * Ao clicar em `🔀 Aplicar Remanejamento / Criar Bateria Avulsa`, o sistema gera automaticamente a 4ª tentativa para os atletas selecionados.

---

### MÓDULO 4: Pesagem Oficial (`pesagem.html` — Cartão `4. Pesagem`)

Oficializa a entrada do atleta na competição, registra o peso corporal real, ajusta categorias automaticamente, afere alturas de rack e coleta as 1ªs pedidas.

#### 1. Visão Geral e Status na Fila
No seletor de atletas do campeonato, cada inscrito exibe um prefixo automático:
* `✅ PRONTO`: Peso corporal, alturas de suporte e todas as 1ªs pedidas obrigatórias foram preenchidos.
* `⚠️ PENDENTE`: Dados parciais preenchidos, mas faltam informações obrigatórias.
* `⏳ AGUARDANDO`: Ficha vazia; o atleta ainda não subiu na balança.
* **Proteção contra Conflito Remoto (`versaoFichaAberta`):** Se outro computador da rede atualizar o mesmo atleta enquanto a ficha estiver aberta, o salvamento é bloqueado por um aviso vermelho (`aviso_conflito_remoto`) exigindo clicar em `🔄 Recarregar Ficha Atualizada`.

#### 2. Balança e Realocação Inteligente de Categoria (`badge_alerta_peso`)
Ao digitar o **Peso Corporal (`peso_corporal`)**, o sistema compara instantaneamente com a categoria inscrita:
* **Atleta "Livre":** Sugere a categoria ideal assim que o peso é digitado (ex: `💡 Categoria p/ 82.45kg:` ➔ botão `Mudar p/ -82.5`).
* **Peso Acima do Limite:** Exibe um alerta vermelho informando o excesso (ex: `⚠️ +0.90kg acima de -82.5kg`) e um botão laranja sugerindo a nova categoria (ex: `Mudar p/ -90`). Ao clicar, o atleta e suas baterias são atualizados automaticamente.
* **Peso Abaixo do Limite Mínimo (na categoria `+`):** Exibe um alerta amarelo sugerindo a categoria inferior correspondente.
* *Nota:* Os alertas são não-bloqueantes; o mesário pode aceitar a sugestão com um clique ou salvar mesmo assim.

#### 3. Equipamentos (Racks) e 1ª Pedida Oficial
Exibe dinamicamente apenas os movimentos em que o atleta compete:
* **Agachamento:** `Altura do Suporte (Rack)` e `1ª Pedida (kg)`.
* **Supino:** `Altura do Suporte`, `Trava de Segurança` e `1ª Pedida (kg)`.
* **Levantamento Terra:** Apenas `1ª Pedida (kg)`.
* **Cadeado de Segurança (`lock_pedida`):** Se a Mesa de Controle já tiver julgado a 1ª tentativa do atleta, o campo da 1ª pedida fica bloqueado (`readonly`) com o aviso verde `🔒 1ª pedida já julgada na Mesa`.

#### 4. Proteções Anti-Erro no Salvamento
Ao clicar em `Salvar Peso e Pedidas`, o sistema verifica:
1. Formato numérico válido (impede múltiplas vírgulas como `82,5,5`).
2. Alerta de confirmação se o peso corporal for `> 250 kg` ou `< 25 kg`.
3. Alerta de confirmação se alguma 1ª pedida for `> 500 kg`.
4. Alerta de confirmação caso alguma 1ª pedida obrigatória esteja vazia ou `0 kg`.

---

### MÓDULO 5: Mesa de Controle (`admin.html` — Cartão `5. Mesa`)

O cérebro operacional do campeonato em tempo real.

#### 1. Visão Geral, Conexão e Isolamento por Plataforma
* **Seletor de Plataforma (`select_plataforma`):** Cada computador de Mesa controla uma plataforma específica (`1` a `5`), isolando bateria, fila, luzes e telão.
* **Monitoramento de Rede (`barra-status-sistema`):**
  * **Conexão Local (Socket):** Exibe `🟢 Conectado em Tempo Real` ou pisca `🔴 Reconectando ao Servidor` se houver queda local.
  * **Status da Nuvem (Cloud Companion):** Monitora o backup remoto a cada 30 segundos. Se a internet cair, fica vermelho silenciosamente sem travar o campeonato local.
* **Airbag de Interface:** Se uma requisição demorar mais de 8 segundos (Timeout), o sistema reverte o estado visual e exibe um aviso não-bloqueante em `painel_erro_operacional` para não travar o navegador.

#### 2. Painel Central: Na Plataforma e Fluxo de Ação
* **Desenho Visual da Barra (`visual_barra`):** Exibe graficamente a montagem exata das anilhas (coloridas IPF ou pretas de academia) descontando o peso da barra oficial e presilhas definidos na lateral direita. Pesos impossíveis de montar geram aviso em `aviso_calculo_barra`.
* **Fluxo Padrão de Operação na Mesa:**
  1. Clicar em `A Barra Está Pronta` (*Load Bar*): Trava os seletores de bateria, exibe o atleta no Telão/Overlay e libera os botões de voto nos celulares dos árbitros.
  2. Os árbitros votam (ou o mesário marca as luzes na tela).
  3. Clicar em `Confirmar e Salvar Decisão`: Oficializa o resultado e acende as luzes no Telão.
  4. Clicar em `➡️ PUXAR PRÓXIMO ATLETA`: Avança a fila automaticamente para o próximo competidor.
* **Botões de Correção e Contingência na Plataforma:**
  * `🔓 Destravar / Cancelar Chamada`: Limpa a plataforma e o telão caso o atleta errado tenha sido chamado antes do julgamento.
  * `✏️ Corrigir Carga / Rack`: Corrige rapidamente o peso ou a altura do rack enquanto o atleta está na plataforma.
  * `🔄 Anular Julgamento`: Aparece após o salvamento das luzes; cancela o veredito e devolve o atleta ao estado pendente para repetir a tentativa.

#### 3. Fila de Levantamento ("A Barra Só Sobe")
* **Regra de Auto-Ordenamento no SQLite:** A fila da bateria selecionada é ordenada automaticamente pelos seguintes critérios estritos:
  1. Menor número de tentativa (`1ª`, depois `2ª`, depois `3ª`);
  2. Tentativas com peso `A DEFINIR (0kg)` vão para o topo;
  3. Menor carga solicitada em kg;
  4. Menor peso corporal do atleta (1º critério de desempate);
  5. Menor número de lote/inscrição (2º critério de desempate).
* **Botões Rápidos por Atleta na Fila:**
  * `📢` **(Chamar Manual):** Puxa um atleta específico diretamente para a plataforma.
  * `✏️` **(Corrigir Carga):** Altera a pedida antes de o atleta ser convocado.
  * `⏭️` **(Desistir / Passar):** Aciona o menu condicional de desistência.
* **Proteção "Anti-Clique Engolido":** Intercepta eventos `pointerdown` e `touch`, atrasando atualizações de HTML em 180 ms caso o mesário esteja clicando em um botão no exato instante de um pacote de rede.

#### 4. Gestão Pós-Tentativa (`Aguardando Pedida (1 min)`)
Atletas que concluem a 1ª ou 2ª tentativa vão para a caixa **Aguardando Pedida (1 min)**:
* **Atalhos Rápidos:** Botões para repetir a carga anterior (`=`) ou somar `+2.5`, `+5` e `+10` kg.
* **Alertas de Regra:** Pede confirmação se a nova carga for menor que a anterior ou tiver um salto acima de `+60 kg`.
* **Alerta de Transição de Rodada (`aviso_rodada_pendente`):** Se a fila puxar um atleta da 2ª tentativa enquanto outro competidor ainda estiver em "Aguardando Pedida" para definir sua 2ª tentativa, um banner alerta o mesário para cobrar o peso pendente antes que a barra suba.

#### 5. Julgamento (Luzes), Retificação e Modo Planilha
* **Modo Árbitro Único:** A checkbox `Apenas Árbitro Central` vincula o voto central às 3 luzes e bloqueia os celulares laterais.
* **Retificação Pós-Salvamento:** Se um árbitro votou errado e a Mesa já salvou, basta clicar sobre a luz incorreta na tela da Mesa. O botão principal ficará laranja com o texto `⚠️ SALVAR RETIFICAÇÃO DE LUZES AGORA!`. Se o mesário tentar puxar o próximo atleta sem salvar a retificação, um alerta será exibido.
* **Modo Planilha (`⚠️ MODO PLANILHA`):** Tela de emergência estilo Excel sem travas de fila. Permite editar status (`pendente`/`concluído`), validar levantamentos manualmente e clicar no botão roxo `➕ +Xª Tent.` para criar tentativas extras diretamente no banco de dados.

#### 6. Fluxo Avançado: Botão `⏭️` (Desistir ou Passar a Tentativa)
* **Na 1ª ou 2ª Tentativa:** Exibe um prompt numérico:
  * **Digitar `1` (Passar apenas a atual):** Cancela apenas a tentativa atual, mas cria automaticamente a próxima tentativa (ex: 3ª) e envia o atleta para "Aguardando Pedida".
  * **Digitar `2` (Desistir de todas as restantes — Padrão):** Cancela a tentativa atual e encerra a participação do atleta naquele movimento.
* **Na 3ª Tentativa (Última):** Exibe apenas confirmação simples (`OK` / `Cancelar`).

---

### MÓDULO 6: Periféricos Locais em Rede LAN (Árbitros, Telão e Aquecimento)

#### 1. Painel do Árbitro (`arbitro.html` — Cartão `6. Celulares`)
* **Conexão e Posição:** Acessado via navegador do celular pelo IP local. O árbitro seleciona sua **Plataforma (`1` a `5`)** e sua cadeira (**`Esquerda`**, **`Central`** ou **`Direita`**), que ficam salvas no `localStorage`.
* **Interface de Voto:** Mostra o nome do atleta e o peso na barra em letras grandes. O árbitro toca em `BRANCA` ou `VERMELHA` e confirma no botão verde `CONFIRMAR DECISÃO`.
* **Prevenção de Bloqueio de Tela (*Wake Lock API*):** Após o primeiro toque na tela, o celular não apaga a tela nem entra em suspensão enquanto o navegador estiver aberto.
* **Sincronização e Bloqueios:** Bloqueia votos laterais quando em `Modo Árbitro Único Ativo`, trava os botões exibindo `✅ Decisão Finalizada na Mesa!` assim que a Mesa salva o veredito, e utiliza *heartbeat* a cada 4 segundos (`solicitar_estado_plataforma`) + `visibilitychange` para reconexão instantânea.

#### 2. Telão de Exibição da Plateia (`display.html` — Cartão `7. Telão`)
* **Layout e Escalonamento Fluido:** Projetado para Smart TVs e telões de LED. Utiliza `clamp()` e re-escalonamento automático para nomes com mais de 24 ou 36 caracteres.
* **Transição Visual:** Exibe `AGUARDANDO ATLETA...` até que a Mesa clique em `A Barra Está Pronta`. Quando a decisão é salva na Mesa, acende as 3 luzes simultaneamente com brilho radial intenso e exibe `MOVIMENTO VÁLIDO` (verde) ou `MOVIMENTO INVÁLIDO` (vermelho).
* **Seletor Discreto (`seletor-tv`):** Menu semitransparente no canto superior direito para escolher a Plataforma (`1` a `5`).

#### 3. Painel da Sala de Aquecimento (`aquecimento.html` — Cartão `8. Aquecimento`)
* **Modo 1 — Visão Geral (Sem Rodada Ativa):** Exibe cartões com todas as baterias previstas do campeonato, listando atletas, categorias e cargas iniciais.
* **Modo 2 — Fila Ativa Focada (Rodada Iniciada):** Mostra a fila em andamento da plataforma selecionada, destacando o atleta atual em verde (`▶ AGORA`), o próximo da fila com tarja azul (`proximo`) e listando no rodapé amarelo quem está em `Aguardando Pedida`.

---

### MÓDULO 7: Apuração, Resultados e Rankings (`resultados.html` — Cartão `9. Resultados`)

Consolida todos os levantamentos válidos em tempo real e calcula pódios e recordes automaticamente.

#### 1. Critérios e Fórmulas de Coeficiente
* **`TOTAL_KG` (Carga Total):** Soma da maior tentativa válida de cada movimento disputado. Critério de desempate automático: menor peso corporal aferido na pesagem.
* **`DOTS` (Polinômio de 4º grau):** Coeficiente padrão moderno utilizado internacionalmente no powerlifting para comparar atletas de diferentes pesos corporais.
* **`WILKS` (Polinômio de 5º grau):** Fórmula clássica de coeficiente de força relativa.
* **`RELATIVO` (Força Relativa Simples):** Divisão matemática direta entre a carga levantada e o peso corporal do atleta ($\text{Carga} / \text{Peso Corporal}$).

#### 2. Visões de Disputa e Modos Especiais
* **Filtros de Disputa:** Visualização separada por **Movimento Único** (Agachamento, Supino ou Terra), **Total Push-Pull**, **Total Full Power** e **Overall (*Best Lifter*)** unificando categorias de peso.
* **Modo "Total Flexível":** Permite configurar se atletas que zerarem um dos movimentos de uma disputa completa ainda devem ter suas cargas válidas somadas ou se devem receber status desclassificado (`DQ`/`Sem Total`).
* **Modo "Sexo Misto":** Permite gerar rankings Overall unificados ou separados por sexo biológico.

#### 3. Exportação para Excel (`.CSV`), PDF e Acervo Permanente
* **Exportação `.CSV` Nativa para Excel:** Gera planilhas com codificação `UTF-8 BOM` e separador ponto e vírgula (`;`), garantindo abertura direta no Microsoft Excel em português sem desconfigurar acentos ou colunas. Permite exportar apenas a tabela filtrada na tela ou a base completa de atletas e levantamentos.
* **Impressão / PDF:** Gera súmulas formatadas prontas para impressão ou salvamento em PDF.
* **Publicação no Acervo Web Permanente:** Permite enviar os resultados consolidados diretamente para o ranking histórico oficial do portal `brasilpowerlifting.com.br`.

---

### MÓDULO 8: Central da Nuvem e Gestão de Dados no Desktop (`nuvem.html` — Cartão `10. Nuvem`)

Gerencia o fluxo de dados entre o computador local, backups em pendrive (`.JSON`) e o servidor em nuvem.

#### 1. Configuração de Conexão e Modo Offline
* **Modo Offline Local:** Para operar 100% sem internet, o campo **ID do Organizador** permanece como `LOCAL` e o **Token** fica em branco (`aviso-nuvem-opcional`).
* **Conexão Cloud:** Organizadores com licença inserem seu `ID do Organizador`, `URL da Nuvem` e `Token` e clicam em `Salvar Configuração`.
* **Badges de Status (`msg-status-nuvem`):** Indicam `Conectado na Nuvem com sucesso!`, `Modo Offline Local ativo`, `Erro de Autenticação` ou `Sem Token`.

#### 2. Exportação Local e Upload de Segurança
O seletor de campeonatos locais indica se o evento está `🟢 Sincronizado` ou com `⏳ Alterações Pendentes`:
* **Botão `☁️ Atualizar / Publicar Snapshot`:** Envia o pacote completo do campeonato para a nuvem (ou salva no cofre rotativo local se estiver em modo `LOCAL`).
* **Botão `📑 Criar Cópia Independente`:** Envia o campeonato gerando um novo identificador único para não sobrescrever o evento original.
* **Botão `💾 Baixar Arquivo (.JSON)`:** Exporta todos os dados do torneio em um arquivo `.json` estruturado para backup em pendrive.

#### 3. Fluxo Nuvem ➔ Desktop no Dia do Evento (Duas Opções de Importação)
Para carregar no computador do ginásio os atletas que se inscreveram previamente pela internet:
* **Opção A (Via Internet Direta):** Na aba `Nuvem` do aplicativo desktop, insira as credenciais de organizador, atualize a lista de campeonatos da nuvem, escolha o evento (ou um dos últimos **20 snapshots íntegros** do cofre `🛡️ Ponto de Restauração`) e clique em `Baixar / Restaurar`.
* **Opção B (Via Pendrive Sem Internet no Ginásio):** Baixe o pacote `.JSON` previamente na Etapa 3 do Portal Web (`/organizador-evento`), leve em um pendrive até o computador da Mesa e utilize a opção de importar arquivo `.JSON` local.

#### 4. Os 3 Modos Cirúrgicos de Importação (*Disaster Recovery*)
Tanto ao baixar da nuvem quanto ao importar via pendrive, o operador escolhe um dos 3 modos:
1. **Modo 1 — Substituir / Atualizar Campeonato (Padrão):** Substitui os dados locais pelos do backup e **restaura o estado exato das 5 Plataformas (Mesas de Controle)**, permitindo que Telão e Árbitros retomem do exato atleta que estava na barra caso o PC principal precise ser trocado.
2. **Modo 2 — Baixar e Criar uma Cópia Completa:** Cria um novo campeonato paralelo na máquina local sem afetar o evento em andamento.
3. **Modo 3 — Apenas Atletas (Limpar Pesagem e Tentativas):** Modo pré-evento ("Reset"). Importa todos os atletas inscritos na web, mas descarta quaisquer pesagens, baterias e luzes fictícias criadas durante simulações e testes da equipe antes da competição oficial.

---

## SEÇÃO 3: PLATAFORMA WEB E SERVIÇOS EM NUVEM (`brasilpowerlifting.com.br`)

A plataforma web complementa o aplicativo desktop oferecendo serviços online para organizadores, atletas, equipes de transmissão ao vivo e público geral.

### 3.1. Mapa de URLs e Serviços Web

* `/solicitar-licenca-nuvem`: Formulário público para organizadores solicitarem gratuitamente suas credenciais de uso da Central da Nuvem e inscrições online.
* `/organizador-evento`: Painel administrativo privado na web para criar e gerir campeonatos online.
* `/inscrever`: Portal público e responsivo onde os atletas realizam suas inscrições online.
* `/ao-vivo`: Painel público em tempo real para a plateia e atletas acompanharem filas de baterias e resultados parciais pelo celular.
* `/gerador-overlay`: Ferramenta para configurar e gerar o link de overlay transparente para transmissões ao vivo.
* `/overlay`: Renderizador gráfico (*Browser Source* `1920x1080`) utilizado dentro do OBS Studio ou vMix.
* `/rankings`: Biblioteca pública e acervo permanente de resultados (Competições Amadoras Brasil Powerlifting + Competições Federadas OpenPowerlifting).
* `/torneios`: Calendário e páginas oficiais das competições cadastradas.

### 3.2. Central Online do Organizador (`/organizador-evento`)

Acessada mediante **Identificador do Organizador** e **Token de Acesso**. É dividida em **3 Etapas**:

#### Etapa 1: Estrutura e Regras do Campeonato
* Configura nome, data, local, visibilidade pública, modalidades, equipamentos, divisões de idade e categorias de peso (masculinas e femininas).
* **Exclusão na Nuvem:** É o **único local** onde um campeonato pode ser excluído definitivamente do servidor em nuvem (exigindo digitar o nome exato do evento no final da Etapa 1). Também permite ocultar ou remover resultados publicados no acervo público.

#### Etapa 2: Página Pública de Inscrição e QR Codes
* **Geração de QR Codes (PNG e Cartaz A4):** Gera automaticamente códigos QR em alta resolução e folhas A4 prontas para impressão (apontando para a página de inscrição antes do evento ou para o painel `/ao-vivo` no dia do campeonato).
* **Controle de Vagas e Prazos:** Permite definir o status das inscrições (Abertas/Encerradas), data limite e o **Limite Máximo de Inscrições** (que encerra o formulário automaticamente assim que a última vaga é preenchida).
* **Personalização de Campos do Formulário:** O organizador define livremente quais dados do atleta serão **Obrigatórios**, **Opcionais** ou **Ocultos** (CPF, WhatsApp, Equipe, Cidade/Estado, PCD, Redes Sociais).
* **Regulamento, PIX e Termos Jurídicos:** Espaço para inserir o texto do regulamento, instruções de pagamento/chave PIX para taxa de inscrição e termos de uso de imagem. O termo de ciência da política de privacidade (LGPD) é integrado de forma fixa.

#### Etapa 3: Sumário de Inscritos e Exportação
* Exibe painel estatístico em tempo real com total de atletas inscritos, filtro de busca rápida e listagem detalhada.
* Permite exportar a lista de inscritos em planilha Excel (`.CSV`) ou baixar o pacote criptografado `.JSON` para importação via pendrive no computador da Mesa.

### 3.3. Portal Público de Inscrição do Atleta (`/inscrever`)

Interface mobile-first onde o competidor escolhe suas categorias e envia sua inscrição:
* **Opção de Anonimização Histórica (LGPD):** Durante a inscrição, o atleta conta com uma caixa de seleção permitindo solicitar a ocultação de seus dados pessoais após o evento. Caso marcada, seu nome completo continuará visível para a Mesa de Controle no dia do campeonato (para permitir a chamada na plataforma), mas, ao ser enviado para o Acervo Permanente (`/rankings`), o sistema converterá automaticamente seu nome para iniciais (ex: `"J. S."`) e removerá cidade e redes sociais, preservando apenas o registro esportivo da carga levantada.

### 3.4. Transmissão Ao Vivo e Broadcast para OBS Studio / vMix (`/gerador-overlay` e `/overlay`)

Permite exibir placares televisivos em tempo real em lives no YouTube, Twitch ou Instagram:
* **Configuração Segura (`/gerador-overlay`):** O organizador insere suas credenciais, escolhe qual **Plataforma (`1` a `5`)** aquele link irá monitorar e pode enviar o logotipo personalizado do campeonato. O link final gerado para o `/overlay` utiliza identificadores públicos seguros que **não expõem o Token privado** do organizador.
* **Integração no OBS Studio / vMix:** Basta adicionar uma fonte do tipo **Navegador (*Browser Source*)** com resolução `1920x1080` e colar a URL gerada.
* **Comportamento Dinâmico na Live (*Lower Third Inteligente*):**
  1. O gráfico permanece invisível (fundo 100% transparente) enquanto a plataforma está livre.
  2. Assim que a Mesa de Controle local clica em `A Barra Está Pronta`, o *Lower Third* entra em cena exibindo o nome do atleta, equipe, categoria, tentativa atual, peso na barra e os 3 círculos de luzes apagados.
  3. Quando a Mesa confirma o julgamento dos árbitros, as 3 luzes acendem simultaneamente na transmissão com efeito luminoso radial (Brancas ou Vermelhas) junto ao veredito do levantamento, permanecendo em tela até a chamada do próximo atleta.

### 3.5. Acompanhamento Ao Vivo Público (`/ao-vivo`)

Acessado por atletas e espectadores pelo celular (via QR Code espalhado pelo ginásio ou link direto):
* **3 Abas de Consulta em Tempo Real:**
  1. **Fila da Bateria Atual:** Mostra quem está na plataforma agora, a ordem exata dos próximos levantadores e as cargas solicitadas.
  2. **Todas as Baterias:** Permite aos atletas consultarem a programação completa de baterias para planejar seu aquecimento.
  3. **Resultados Parciais:** Exibe a classificação dinâmica das categorias conforme os levantamentos acontecem.
* **Proteção Anti-Crawler de 24 Horas:** A rota `/ao-vivo` aceita consultas dinâmicas apenas durante o campeonato e por até **24 horas após o último clique registrado na Mesa de Controle**. Após 24 horas de inatividade, o sistema bloqueia requisições dinâmicas ao banco SQL contra robôs (*crawlers*) e redireciona automaticamente os visitantes para o Acervo Histórico Estático (`/rankings`).

### 3.6. Acervo Histórico e Rankings Permanentes (`/rankings`)

Biblioteca pública com arquitetura *Zero-DB* (baseada em índices JSON estáticos de alta velocidade) que reúne duas fontes separadas:
* **1. Acervo Brasil Powerlifting (Competições Amadoras e Independentes):** Exibe os rankings gerais, filtros por movimento, sexo, equipamento e divisão, súmulas completas de campeonatos realizados no ecossistema e perfil histórico de cada atleta com suas melhores marcas (*Personal Records* — PRs).
* **2. Competições Federadas (OpenPowerlifting):** Ao pesquisar o nome de um atleta, o sistema consulta de forma separada a base pública do projeto *OpenPowerlifting* (`openpowerlifting.org`), exibindo o histórico oficial do atleta em federações nacionais e internacionais sem misturar ou confundir homônimos das competições amadoras.

---

## SEÇÃO 4: ARQUITETURA DE SEGURANÇA, ESTABILIDADE E RESILIÊNCIA DE DADOS

A arquitetura de segurança do Ecossistema Brasil Powerlifting foi desenhada para garantir que o torneio nunca seja interrompido por falhas de rede, erros operacionais ou conflitos de sincronização.

### 4.1. Isolamento de Rede e Controle de Acesso Local

* **Restrição Rigorosa a Localhost (Computador Principal):** Middlewares de segurança (`ehRequisicaoDaMaquinaLocal`, `exigirMaquinaLocalPagina`, `exigirMaquinaLocalAPI`) interceptam todas as requisições recebidas e verificam as interfaces de rede do sistema operacional. Rotas destrutivas ou de configuração (criar, editar ou excluir eventos, importar backups ou desligar o servidor) só podem ser executadas diretamente na máquina host (`127.0.0.1`, `::1` ou IPs físicos locais da própria máquina).
* **Bloqueio de Dispositivos Externos (`403 Forbidden`):** Se um árbitro, atleta ou mesário tentar acessar rotas de configuração através de um celular ou tablet conectado ao Wi-Fi, o servidor bloqueia a requisição com erro `403 Forbidden`.
* **Controle de Firewall via UAC:** O botão `🛡️ Liberar Firewall (Wi-Fi)` no Launcher C# abre exclusivamente a porta TCP `3000` no Windows Defender para tráfego na rede local (LAN).

### 4.2. Integridade de Banco de Dados e Prevenção de Conflitos

* **Controle de Concorrência Otimista (Versionamento de Fichas):** Cada inscrição possui um controle de versão (`versao`). Se dois mesários em aparelhos diferentes tentarem editar a ficha ou a pesagem do mesmo atleta simultaneamente, o servidor rejeita a segunda tentativa com status `HTTP 409 Conflict`, exigindo recarregar os dados atualizados.
* **Sanitização *Enterprise Grade*:** Nenhuma entrada do usuário vai diretamente para o banco de dados sem passar pelas rotinas de purificação:
  * `sanitizarCPF`: Remove caracteres não numéricos e restringe a 11 dígitos.
  * `sanitizarPeso`: Aceita apenas números válidos, converte vírgulas em pontos e arredonda para duas casas decimais ($\text{0.01 kg}$).
  * `decodificarParamSeguro`: Previne falhas (`URIError`) ao receber URLs malformadas contendo caracteres especiais como `%`.
* **Logs de Auditoria (`log_acoes` / `registrarLogSeguranca`):** Registra silenciosamente todas as ações críticas (exclusões locais, edições de dados sensíveis, correções forçadas na Mesa, anulações de julgamento e arquivamento de fichas) com carimbo de data e hora.
* **Modo WAL do SQLite (*Write-Ahead Logging*):** Garante alta concorrência de leitura e escrita sem bloquear ou travar o banco durante o fluxo contínuo de votações dos árbitros.

### 4.3. Resiliência Operacional, Backups e Recuperação

* **Snapshots *Point-in-Time* (Cofre Local):** Antes de qualquer ação destrutiva (excluir evento, arquivar atleta, excluir bateria ou forçar importação da nuvem), a função `criarSnapshotSeguranca()` congela o estado atual do banco e salva um backup instantâneo na pasta local do computador.
* **Rotina de Backups Rotativos (A cada 5 minutos):** O servidor cria backups automáticos de todos os dados do torneio a cada **5 minutos**, armazenando os **últimos 20 snapshots** por campeonato para restauração imediata.
* **Airbag Global do Servidor (`uncaughtException` e `unhandledRejection`):** Intercepta erros críticos não tratados no Node.js. Se uma falha inesperada ocorrer, em vez de fechar o programa e parar o campeonato, o "Airbag" grava o erro no log de segurança e mantém a Mesa, o Telão e os celulares funcionando normalmente.
* **Encerramento Seguro Automático (`SIGINT`, `SIGTERM`):** Ao clicar em `🛑 Encerrar Servidor com Segurança`, o sistema fecha conexões ativas, consolida o cache `WAL` do banco de dados e cria um backup final antes de encerrar o processo.

### 4.4. Segurança na Sincronização em Nuvem (*Cloud Companion*)

* **Gatekeeper de Criptografia SHA-256:** Antes de enviar ou receber pacotes da nuvem, o sistema gera um hash canônico **SHA-256** de todo o pacote JSON. Se o hash recalculado no destino não bater exatamente com o enviado, o pacote é sumariamente rejeitado sob suspeita de corrupção na rede.
* **Circuit-Breaker de Rede:** O *Auto-Push* opera em segundo plano a cada 30 segundos. Se a internet do ginásio cair (`Timeout`), ele absorve o erro silenciosamente, entra em espera e tenta reenviar no próximo ciclo sem travar nem exibir pop-ups de erro na tela da Mesa.
* **Proteção Anti-Corrupção ("Zerar Atletas"):** A Nuvem recusa automaticamente qualquer pacote de atualização automática que contenha `"0 atletas"` caso o evento online já possua atletas cadastrados, impedindo que um erro operacional apague o torneio na web.

---

## SEÇÃO 5: PERGUNTAS FREQUENTES (FAQ) E RESOLUÇÃO DE PROBLEMAS

### P1: O aplicativo no computador trava se a internet do ginásio cair?
**Resposta:** Não. Toda a operação do campeonato (pesagem, celulares dos árbitros, Mesa de Controle, Telão e TV de aquecimento) funciona 100% offline através do roteador Wi-Fi local (LAN). Se a internet cair, a sincronização com a nuvem entra em modo *Circuit-Breaker* silencioso e volta a enviar os backups automaticamente assim que a internet retornar, sem interromper o campeonato.

### P2: Os celulares dos árbitros não estão conseguindo abrir o link do servidor. Como resolver?
**Resposta:** Verifique três pontos:
1. Certifique-se de que o computador principal e os celulares estão conectados **exatamente à mesma rede Wi-Fi**.
2. Na janela do **Launcher** no Windows, clique no botão `🛡️ Liberar Firewall (Wi-Fi)` e confirme a permissão de Administrador para desbloquear a porta `3000`.
3. Caso tenha trocado de roteador Wi-Fi com o programa aberto, clique em `🔄 Atualizar IP Wi-Fi` no Launcher e utilize o novo endereço IP exibido na tela inicial.

### P3: Como limitar o número de inscrições online ou encerrar o formulário na web?
**Resposta:** Acesse a Central Online do Organizador (`/organizador-evento`), faça login com seu ID e Token e abra a **Etapa 2 (Página de Inscrição)**. Você pode alterar o **Status** manualmente para encerrado, definir uma data limite ou preencher o campo **Limite Máximo de Inscrições** para que o portal feche automaticamente ao atingir o número desejado de inscritos.

### P4: Um atleta foi chamado para a plataforma por engano. Como cancelar a chamada?
**Resposta:** No painel central da **Mesa de Controle (`5. Mesa`)**, clique no botão laranja `🔓 Destravar / Cancelar Chamada`. Isso limpa imediatamente a plataforma e o Telão da plateia, devolvendo o atleta para a fila e liberando a Mesa para chamar o atleta correto.

### P5: O atleta bateu um recorde e terá direito a uma 4ª tentativa (PR). Como adicionar?
**Resposta:** Há duas formas:
* **Pelo Módulo de Baterias (`3. Baterias`):** Clique na aba **Modo 2 (Remanejar Individual / Avulsa)**, selecione o atleta, marque a caixa `🔥 Habilitar Rodada Extra / Bateria Avulsa`, informe a carga inicial (ou deixe `0`) e clique em `🔀 Aplicar Remanejamento / Criar Bateria Avulsa`.
* **Direto pela Mesa de Controle (`5. Mesa`):** Clique no botão vermelho `⚠️ MODO PLANILHA` e clique no botão roxo `➕ +4ª Tent.` ao lado do nome do atleta.

### P6: Um árbitro clicou na luz errada no celular e a Mesa já clicou em Salvar. Como corrigir?
**Resposta:** Com o atleta ainda exibido no painel da **Mesa de Controle**, basta o mesário clicar diretamente sobre o círculo da luz que precisa ser corrigida (trocando entre Branca e Vermelha). O botão principal mudará para a cor laranja com o aviso `⚠️ SALVAR RETIFICAÇÃO DE LUZES AGORA!`. Clique nele para atualizar o resultado no banco de dados e no Telão. Caso a Mesa já tenha puxado o atleta seguinte, utilize o botão `🔄 Anular Julgamento` ou edite pelo `⚠️ MODO PLANILHA`.

### P7: O atleta pesou na balança acima do limite da categoria em que se inscreveu (ex: pesou 83.4 kg na categoria -82.5 kg). O que fazer?
**Resposta:** Ao digitar `83.4` no módulo **Pesagem (`4. Pesagem`)**, o sistema exibirá automaticamente um alerta vermelho (`⚠️ +0.90kg acima de -82.5kg`) acompanhado de um botão laranja sugerindo a categoria imediatamente superior (`Mudar p/ -90`). Basta clicar nesse botão laranja e salvar: o sistema mudará a categoria do atleta e atualizará automaticamente o agrupamento dele nas baterias.

### P8: Como excluir um campeonato da Nuvem? E como excluir apenas do Computador Local?
**Resposta:** Os ambientes são isolados por segurança:
* **Para excluir da Nuvem:** Acesse exclusivamente o portal web (`/organizador-evento`), vá até o final da **Etapa 1** e confirme digitando o nome exato do campeonato.
* **Para excluir apenas do PC Local:** Abra o aplicativo desktop no módulo **Configuração (`1. Evento`)**, selecione o campeonato para edição, role até a zona vermelha no final da página e digite o nome exato do evento. Excluir no PC não apaga o campeonato da nuvem, e vice-versa.