From 9a6e783252bf220a1baf5484b007dceba9b510ed Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 16 Dec 2025 22:27:39 +0000
Subject: [PATCH 1/5] Initial plan
From 01ce47f999e945061c273064eb6c88d3b8a25989 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 16 Dec 2025 22:30:46 +0000
Subject: [PATCH 2/5] Add comprehensive README.md for BrainBridge project
Co-authored-by: Carolpm28 <129198772+Carolpm28@users.noreply.github.com>
---
README.md | 687 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 687 insertions(+)
create mode 100644 README.md
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..e2a75cf
--- /dev/null
+++ b/README.md
@@ -0,0 +1,687 @@
+# 🧠 BrainBridge - Jogo de Memória Acessível e Cooperativo
+
+
+
+
+
+
+**BrainBridge** é um jogo de memória inovador desenvolvido com foco total em **acessibilidade web**, seguindo as diretrizes **WCAG 2.1 AA**. O projeto oferece dois modos de jogo (Individual e Cooperativo) com 8 níveis progressivos de dificuldade, sistema de autenticação, rankings e estatísticas detalhadas.
+
+---
+
+## 📋 Índice
+
+- [Características](#-características)
+- [Tecnologias Utilizadas](#-tecnologias-utilizadas)
+- [Pré-requisitos](#-pré-requisitos)
+- [Instalação](#-instalação)
+- [Configuração](#-configuração)
+- [Como Executar](#-como-executar)
+- [Estrutura do Projeto](#-estrutura-do-projeto)
+- [Acessibilidade](#-acessibilidade)
+- [API Endpoints](#-api-endpoints)
+- [Base de Dados](#-base-de-dados)
+- [Contribuir](#-contribuir)
+- [Licença](#-licença)
+
+---
+
+## ✨ Características
+
+### 🎮 Modos de Jogo
+
+- **Modo Individual**: Jogue sozinho e supere 8 níveis progressivos
+- **Modo Cooperativo**: Jogue com um amigo e trabalhem em equipa
+
+### 🎯 Funcionalidades Principais
+
+- ✅ **8 Níveis de Dificuldade** com bónus progressivos
+- ✅ **Sistema de Autenticação** com JWT
+- ✅ **Rankings Globais** por modo de jogo
+- ✅ **Estatísticas Detalhadas** (total de jogos, pontuação média, melhor tempo)
+- ✅ **Configurações Personalizáveis** (som, modo daltónico)
+- ✅ **Limite de Tempo** nos níveis avançados (5-8)
+- ✅ **Progressão de Níveis** automática baseada em performance
+- ✅ **Responsive Design** - funciona em desktop, tablet e mobile
+
+### ♿ Acessibilidade (WCAG 2.1 AA)
+
+- 🔍 **Skip Links** sempre visíveis (G1: WCAG 2.4.1)
+- 🎨 **Alto Contraste** e modo daltónico
+- ⌨️ **Navegação por Teclado** completa
+- 🔊 **Suporte para Leitores de Ecrã** (ARIA labels)
+- 📱 **Design Responsivo** e adaptável
+- 🏷️ **Estrutura Semântica** HTML5
+- 🎯 **Foco Visível** em todos os elementos interativos
+
+---
+
+## 🛠️ Tecnologias Utilizadas
+
+### Frontend
+- **React 18** (via CDN)
+- **Babel** (transpilação JSX)
+- **Tailwind CSS** (via CDN)
+- **HTML5/CSS3**
+- **JavaScript ES6+**
+
+### Backend
+- **Node.js** (v18+)
+- **Express.js** (v5.1.0)
+- **JWT** (autenticação)
+- **bcrypt** (hash de passwords)
+
+### Base de Dados
+- **Microsoft SQL Server**
+- **mssql** (driver Node.js)
+
+### Ferramentas de Desenvolvimento
+- **nodemon** (desenvolvimento)
+- **dotenv** (variáveis de ambiente)
+- **CORS** (Cross-Origin Resource Sharing)
+
+---
+
+## 📦 Pré-requisitos
+
+Antes de começar, certifique-se de ter instalado:
+
+- **Node.js** (v18 ou superior) - [Download](https://nodejs.org/)
+- **Microsoft SQL Server** (2019 ou superior) - [Download](https://www.microsoft.com/sql-server)
+- **npm** (vem incluído com Node.js)
+- **Git** - [Download](https://git-scm.com/)
+
+---
+
+## 🚀 Instalação
+
+### 1. Clone o Repositório
+
+```bash
+git clone https://github.com/Carolpm28/BrainBridge.git
+cd BrainBridge/BrainBridgev_final
+```
+
+### 2. Instale as Dependências do Backend
+
+```bash
+cd brainbridge-backend
+npm install
+```
+
+### 3. Configure a Base de Dados
+
+#### 3.1. Crie a Base de Dados
+
+Execute o script SQL para criar a base de dados:
+
+```bash
+# No SQL Server Management Studio (SSMS) ou via sqlcmd
+sqlcmd -S localhost -i create-database.sql
+```
+
+#### 3.2. Crie as Tabelas
+
+```bash
+sqlcmd -S localhost -d BrainBridge -i create-tables.sql
+```
+
+#### 3.3. (Opcional) Adicione Tabela de Estatísticas
+
+```bash
+sqlcmd -S localhost -d BrainBridge -i tabelastatistics.sql
+```
+
+---
+
+## ⚙️ Configuração
+
+### 1. Configure as Variáveis de Ambiente
+
+Crie um ficheiro `.env` na pasta `brainbridge-backend`:
+
+```env
+# Servidor
+PORT=3000
+
+# Base de Dados
+DB_SERVER=localhost
+DB_NAME=BrainBridge
+DB_USER=seu_usuario
+DB_PASSWORD=sua_password
+DB_PORT=1433
+
+# JWT
+JWT_SECRET=brainbridge_super_secret_key_2025
+
+# Ambiente
+NODE_ENV=development
+```
+
+⚠️ **IMPORTANTE**: Altere `JWT_SECRET` para uma chave secreta forte em produção!
+
+### 2. Configuração do SQL Server
+
+Certifique-se de que:
+- O SQL Server está em execução
+- A autenticação SQL está ativada
+- O utilizador tem permissões na base de dados `BrainBridge`
+
+---
+
+## 🎯 Como Executar
+
+### Modo Desenvolvimento
+
+#### 1. Inicie o Backend
+
+```bash
+cd brainbridge-backend
+npm run dev
+```
+
+O servidor estará disponível em: `http://localhost:3000`
+
+#### 2. Abra o Frontend
+
+Abra o ficheiro `index.html` no navegador ou use um servidor local:
+
+```bash
+# Opção 1: Abrir diretamente
+open index.html
+
+# Opção 2: Usar um servidor HTTP simples
+# Na pasta BrainBridgev_final
+npx http-server -p 8080
+```
+
+O jogo estará disponível em: `http://localhost:8080`
+
+### Modo Produção
+
+```bash
+cd brainbridge-backend
+npm start
+```
+
+---
+
+## 📁 Estrutura do Projeto
+
+```
+BrainBridge/
+├── BrainBridgev_final/
+│ ├── brainbridge-backend/ # Backend Node.js
+│ │ ├── src/
+│ │ │ ├── server.js # Servidor principal
+│ │ │ ├── config/
+│ │ │ │ └── database.js # Configuração da BD
+│ │ │ └── routes/ # Rotas da API
+│ │ │ ├── games.js
+│ │ │ ├── profile.js
+│ │ │ ├── rankings.js
+│ │ │ └── statistics2.js
+│ │ ├── package.json
+│ │ └── .env # Variáveis de ambiente
+│ │
+│ ├── index.html # Frontend principal
+│ ├── script.js # Lógica React do jogo
+│ ├── styles.css # Estilos personalizados
+│ │
+│ ├── create-database.sql # Script criação BD
+│ ├── create-tables.sql # Script criação tabelas
+│ └── tabelastatistics.sql # Script estatísticas
+│
+├── IPC_DESAFIO_3_FASE_3.pdf # Documentação do desafio
+└── README.md # Este ficheiro
+```
+
+---
+
+## ♿ Acessibilidade
+
+O BrainBridge foi desenvolvido seguindo rigorosamente as **Diretrizes de Acessibilidade para Conteúdo Web (WCAG 2.1)** nível **AA**.
+
+### Conformidade WCAG 2.1
+
+#### ✅ Princípio 1: Perceptível
+- **1.3.1 Informação e Relações**: Estrutura hierárquica de cabeçalhos (H42)
+- **1.4.1 Uso de Cor**: Modo daltónico disponível
+- **1.4.3 Contraste**: Rácio mínimo de 4.5:1
+
+#### ✅ Princípio 2: Operável
+- **2.1.1 Teclado**: Totalmente navegável por teclado
+- **2.4.1 Ignorar Blocos**: Skip link sempre visível (G1)
+- **2.4.5 Múltiplas Formas**: Links relacionados e navegação alternativa
+- **2.4.7 Foco Visível**: Indicadores de foco em todos os elementos
+
+#### ✅ Princípio 3: Compreensível
+- **3.1.1 Idioma da Página**: `lang="pt-PT"`
+- **3.2.1 Em Foco**: Sem mudanças de contexto inesperadas
+- **3.3.2 Etiquetas**: Labels descritivos em formulários
+
+#### ✅ Princípio 4: Robusto
+- **4.1.2 Nome, Função, Valor**: ARIA labels apropriados
+- **4.1.3 Mensagens de Estado**: `role="status"`, `aria-live`
+
+### Recursos de Acessibilidade
+
+- 🎹 **Atalhos de Teclado**
+- 🔊 **Feedback Sonoro** (pode ser desativado)
+- 👁️ **Modo Daltónico**
+- 📢 **Anúncios para Leitores de Ecrã**
+- 🎯 **Foco Visível** com contornos de alto contraste
+
+---
+
+## 🌐 API Endpoints
+
+### Autenticação
+
+#### Registar Novo Utilizador
+```http
+POST /api/users
+Content-Type: application/json
+
+{
+ "username": "jogador1",
+ "email": "jogador@exemplo.com",
+ "password": "senha_segura"
+}
+```
+
+#### Login
+```http
+POST /api/login
+Content-Type: application/json
+
+{
+ "email": "jogador@exemplo.com",
+ "password": "senha_segura"
+}
+```
+
+**Resposta:**
+```json
+{
+ "success": true,
+ "data": {
+ "token": "eyJhbGciOiJIUzI1NiIs...",
+ "user": {
+ "userId": 1,
+ "username": "jogador1",
+ "email": "jogador@exemplo.com"
+ }
+ }
+}
+```
+
+#### Logout
+```http
+POST /api/logout
+Authorization: Bearer {token}
+```
+
+#### Verificar Token
+```http
+GET /api/auth/verify
+Authorization: Bearer {token}
+```
+
+#### Obter Dados do Utilizador
+```http
+GET /api/me
+Authorization: Bearer {token}
+```
+
+---
+
+### Jogos
+
+#### Iniciar Novo Jogo
+```http
+POST /api/games/start
+Authorization: Bearer {token}
+Content-Type: application/json
+
+{
+ "gameMode": "individual",
+ "level": 1
+}
+```
+
+#### Finalizar Jogo
+```http
+POST /api/games/finish
+Authorization: Bearer {token}
+Content-Type: application/json
+
+{
+ "gameMode": "individual",
+ "level": 1,
+ "score": 1500,
+ "timeSeconds": 45,
+ "completed": true
+}
+```
+
+#### Completar Jogo (Atualizar Estatísticas)
+```http
+POST /api/games/complete
+Authorization: Bearer {token}
+Content-Type: application/json
+
+{
+ "gameMode": "individual",
+ "level": 1,
+ "score": 1500,
+ "timeSeconds": 45,
+ "completed": true
+}
+```
+
+#### Listar Jogos do Utilizador
+```http
+GET /api/games?gameMode=individual&limit=10&offset=0
+Authorization: Bearer {token}
+```
+
+#### Obter Estatísticas Detalhadas
+```http
+GET /api/games/statistics2
+Authorization: Bearer {token}
+```
+
+#### Obter Jogos Recentes
+```http
+GET /api/games/recent
+```
+
+---
+
+### Perfil
+
+#### Obter Perfil Próprio
+```http
+GET /api/profile
+Authorization: Bearer {token}
+```
+
+#### Obter Perfil por ID
+```http
+GET /api/profile/:id
+```
+
+#### Atualizar Progresso
+```http
+POST /api/profile/progress
+Authorization: Bearer {token}
+Content-Type: application/json
+
+{
+ "individualLevel": 2,
+ "individualHighscore": 2500,
+ "cooperativeLevel": 1,
+ "cooperativeHighscore": 1800
+}
+```
+
+---
+
+### Rankings
+
+#### Obter Rankings
+```http
+GET /api/rankings?gameMode=individual&limit=10
+```
+
+---
+
+### Configurações de Níveis
+
+#### Listar Configurações
+```http
+GET /api/levelConfigurations
+```
+
+#### Adicionar/Atualizar Configuração
+```http
+POST /api/levelConfigurations
+Authorization: Bearer {token}
+Content-Type: application/json
+
+{
+ "gameMode": "individual",
+ "level": 1,
+ "name": "Iniciante",
+ "cards": 12,
+ "bonus": 500,
+ "timeLimit": 0
+}
+```
+
+---
+
+## 🗄️ Base de Dados
+
+### Tabelas Principais
+
+#### **Users**
+Armazena informações dos utilizadores e seu progresso.
+
+| Campo | Tipo | Descrição |
+|-------|------|-----------|
+| UserID | INT (PK) | Identificador único |
+| Username | NVARCHAR(100) | Nome do utilizador |
+| Email | NVARCHAR(255) | Email (único) |
+| PasswordHash | NVARCHAR(255) | Hash da senha |
+| Salt | NVARCHAR(100) | Salt do bcrypt |
+| IndividualLevel | INT | Nível individual atual |
+| IndividualHighscore | INT | Recorde individual |
+| CooperativeLevel | INT | Nível cooperativo atual |
+| CooperativeHighscore | INT | Recorde cooperativo |
+| TotalGamesPlayed | INT | Total de jogos |
+| SoundEnabled | BIT | Som ativado |
+| ColorBlindMode | BIT | Modo daltónico |
+
+#### **Games**
+Regista cada jogo concluído.
+
+| Campo | Tipo | Descrição |
+|-------|------|-----------|
+| GameID | INT (PK) | Identificador único |
+| UserID | INT (FK) | Referência ao utilizador |
+| GameMode | NVARCHAR(20) | individual/cooperative |
+| Level | INT | Nível jogado |
+| Score | INT | Pontuação obtida |
+| TimeSeconds | INT | Tempo em segundos |
+| Completed | BIT | Jogo concluído |
+| Player1Score | INT | Pontuação jogador 1 (coop) |
+| Player2Score | INT | Pontuação jogador 2 (coop) |
+| Winner | INT | Vencedor (coop): 0=empate, 1=P1, 2=P2 |
+| LevelBonus | INT | Bónus do nível |
+| PlayedAt | DATETIME | Data/hora do jogo |
+
+#### **UserStatistics2**
+Estatísticas agregadas dos utilizadores.
+
+| Campo | Tipo | Descrição |
+|-------|------|-----------|
+| UserID | INT (FK) | Referência ao utilizador |
+| TotalGames | INT | Total de jogos |
+| IndividualGames | INT | Jogos individuais |
+| CooperativeGames | INT | Jogos cooperativos |
+| BestTimeIndividual | INT | Melhor tempo (individual) |
+| BestTimeCooperative | INT | Melhor tempo (cooperativo) |
+| AverageScore | FLOAT | Pontuação média |
+| BestScore | INT | Melhor pontuação |
+| StreakCurrent | INT | Sequência atual |
+| StreakBest | INT | Melhor sequência |
+
+#### **LevelConfigurations**
+Configurações de cada nível.
+
+| Campo | Tipo | Descrição |
+|-------|------|-----------|
+| ConfigID | INT (PK) | Identificador único |
+| GameMode | NVARCHAR(20) | individual/cooperative |
+| Level | INT | Número do nível |
+| Name | NVARCHAR(100) | Nome do nível |
+| Cards | INT | Quantidade de cartas |
+| Bonus | INT | Bónus do nível |
+| TimeLimit | INT | Limite de tempo (segundos, 0=sem limite) |
+
+#### **Rankings**
+Melhores pontuações globais.
+
+| Campo | Tipo | Descrição |
+|-------|------|-----------|
+| RankingID | INT (PK) | Identificador único |
+| UserID | INT (FK) | Referência ao utilizador |
+| GameMode | NVARCHAR(20) | individual/cooperative |
+| Score | INT | Pontuação |
+| Level | INT | Nível |
+| PlayedAt | DATETIME | Data/hora |
+
+---
+
+## 🎮 Como Jogar
+
+### Modo Individual
+
+1. **Registe-se** ou **faça login**
+2. Selecione **"Modo Individual"**
+3. Escolha o **nível** (começa no 1)
+4. **Encontre os pares** de cartas idênticas
+5. **Complete o nível** para avançar automaticamente
+6. Níveis 5-8 têm **limite de tempo**!
+
+### Modo Cooperativo
+
+1. Selecione **"Modo Cooperativo"**
+2. **Dois jogadores** alternam turnos
+3. Cada jogador tenta encontrar pares
+4. Quem encontrar **mais pares vence**!
+
+### Pontuação
+
+- **Par correto**: +100 pontos
+- **Bónus de nível**: varia por nível (500-10000)
+- **Bónus de tempo**: nos níveis com limite
+- **Penalização**: -10 por erro
+
+### Níveis
+
+| Nível | Nome | Cartas | Bónus | Tempo Limite |
+|-------|------|--------|-------|--------------|
+| 1 | Iniciante | 12 | 500 | Sem limite |
+| 2 | Aprendiz | 16 | 750 | Sem limite |
+| 3 | Intermediário | 20 | 1000 | Sem limite |
+| 4 | Avançado | 24 | 1500 | Sem limite |
+| 5 | Especialista | 24 | 2000 | 3 minutos |
+| 6 | Mestre | 24 | 3000 | 2 minutos |
+| 7 | Grande Mestre | 24 | 5000 | 1.5 minutos |
+| 8 | Lendário | 24 | 10000 | 1 minuto |
+
+---
+
+## 🧪 Testes de Acessibilidade
+
+### Ferramentas Recomendadas
+
+- **[AccessMonitor](https://accessmonitor.acessibilidade.gov.pt/)** - Validador automático português
+- **[WAVE WebAIM](https://wave.webaim.org/)** - Ferramenta de avaliação
+- **[axe DevTools](https://www.deque.com/axe/)** - Extensão para navegador
+- **[Lighthouse](https://web.dev/lighthouse/)** - Auditoria Google
+
+### Teste Manual
+
+1. **Navegação por Teclado**: Use `Tab`, `Enter`, `Espaço`, setas
+2. **Leitor de Ecrã**: Teste com NVDA (Windows) ou VoiceOver (Mac)
+3. **Contraste**: Verifique no modo alto contraste do SO
+4. **Zoom**: Teste com 200% de zoom
+5. **Sem Rato**: Jogue apenas com teclado
+
+---
+
+## 🤝 Contribuir
+
+Contribuições são bem-vindas! Para contribuir:
+
+1. **Fork** o projeto
+2. Crie uma **branch** para sua feature (`git checkout -b feature/MinhaFeature`)
+3. **Commit** suas mudanças (`git commit -m 'Adiciona MinhaFeature'`)
+4. **Push** para a branch (`git push origin feature/MinhaFeature`)
+5. Abra um **Pull Request**
+
+### Diretrizes
+
+- Mantenha a conformidade **WCAG 2.1 AA**
+- Adicione testes quando aplicável
+- Documente novas funcionalidades
+- Siga o estilo de código existente
+
+---
+
+## 📝 Licença
+
+Este projeto está sob a licença **ISC**.
+
+---
+
+## 👥 Autores
+
+- **Carolina** - [@Carolpm28](https://github.com/Carolpm28)
+
+---
+
+## 📚 Recursos de Acessibilidade
+
+### Documentação Oficial
+
+- [Portal da Acessibilidade PT](https://www.acessibilidade.gov.pt/)
+- [WCAG 2.1 Guidelines](https://www.w3.org/WAI/WCAG21/quickref/)
+- [MDN Web Accessibility](https://developer.mozilla.org/pt-BR/docs/Web/Accessibility)
+- [Decreto-Lei n.º 83/2018](https://www.acessibilidade.gov.pt/decreto/)
+
+### Jogos Inclusivos
+
+- [Game Accessibility Guidelines](https://gameaccessibilityguidelines.com/)
+- [Includification](https://www.includification.com/)
+- [Accessible Games](https://accessible.games/)
+
+---
+
+## 🐛 Reportar Problemas
+
+Encontrou um bug? Tem uma sugestão?
+
+- Abra uma [Issue](https://github.com/Carolpm28/BrainBridge/issues)
+- Envie email: suporte@brainbridge.pt
+
+---
+
+## 📞 Contacto
+
+- **Email**: suporte@brainbridge.pt
+- **GitHub**: [@Carolpm28](https://github.com/Carolpm28)
+
+---
+
+## 🌟 Agradecimentos
+
+Agradecimentos especiais a:
+
+- Comunidade WCAG pela documentação excelente
+- Portal da Acessibilidade de Portugal
+- Todos os testadores que ajudaram a melhorar a acessibilidade
+
+---
+
+
+
+**BrainBridge** © 2025 - Jogo de memória desenvolvido seguindo as diretrizes WCAG 2.1 AA
+
+[⬆ Voltar ao topo](#-brainbridge---jogo-de-memória-acessível-e-cooperativo)
+
+
From 8e0a911367bdc04f073434ec5651b7fda5968ca1 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 16 Dec 2025 22:31:45 +0000
Subject: [PATCH 3/5] Improve README: clarify WCAG technique references and
remove placeholder emails
Co-authored-by: Carolpm28 <129198772+Carolpm28@users.noreply.github.com>
---
README.md | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index e2a75cf..fa0762d 100644
--- a/README.md
+++ b/README.md
@@ -245,13 +245,13 @@ O BrainBridge foi desenvolvido seguindo rigorosamente as **Diretrizes de Acessib
### Conformidade WCAG 2.1
#### ✅ Princípio 1: Perceptível
-- **1.3.1 Informação e Relações**: Estrutura hierárquica de cabeçalhos (H42)
+- **1.3.1 Informação e Relações**: Estrutura hierárquica de cabeçalhos (H42: Using h1-h6 to identify headings)
- **1.4.1 Uso de Cor**: Modo daltónico disponível
- **1.4.3 Contraste**: Rácio mínimo de 4.5:1
#### ✅ Princípio 2: Operável
- **2.1.1 Teclado**: Totalmente navegável por teclado
-- **2.4.1 Ignorar Blocos**: Skip link sempre visível (G1)
+- **2.4.1 Ignorar Blocos**: Skip link sempre visível (G1: Adding a link at the top of each page that goes directly to the main content area)
- **2.4.5 Múltiplas Formas**: Links relacionados e navegação alternativa
- **2.4.7 Foco Visível**: Indicadores de foco em todos os elementos
@@ -657,14 +657,13 @@ Este projeto está sob a licença **ISC**.
Encontrou um bug? Tem uma sugestão?
- Abra uma [Issue](https://github.com/Carolpm28/BrainBridge/issues)
-- Envie email: suporte@brainbridge.pt
---
## 📞 Contacto
-- **Email**: suporte@brainbridge.pt
- **GitHub**: [@Carolpm28](https://github.com/Carolpm28)
+- **Issues**: [Reportar Problema](https://github.com/Carolpm28/BrainBridge/issues)
---
From 8d6629141e8d10a5e993a2f9e031ca6083b0fa97 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 16 Dec 2025 22:38:38 +0000
Subject: [PATCH 4/5] Remove emojis, horizontal lines, and requested sections
from README
Co-authored-by: Carolpm28 <129198772+Carolpm28@users.noreply.github.com>
---
README.md | 458 +++++++-----------------------------------------------
1 file changed, 52 insertions(+), 406 deletions(-)
diff --git a/README.md b/README.md
index fa0762d..fa7efde 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# 🧠 BrainBridge - Jogo de Memória Acessível e Cooperativo
+# BrainBridge - Jogo de Memória Acessível e Cooperativo


@@ -7,56 +7,49 @@
**BrainBridge** é um jogo de memória inovador desenvolvido com foco total em **acessibilidade web**, seguindo as diretrizes **WCAG 2.1 AA**. O projeto oferece dois modos de jogo (Individual e Cooperativo) com 8 níveis progressivos de dificuldade, sistema de autenticação, rankings e estatísticas detalhadas.
----
+## Índice
-## 📋 Índice
+- [Características](#características)
+- [Tecnologias Utilizadas](#tecnologias-utilizadas)
+- [Pré-requisitos](#pré-requisitos)
+- [Instalação](#instalação)
+- [Configuração](#configuração)
+- [Como Executar](#como-executar)
+- [Estrutura do Projeto](#estrutura-do-projeto)
+- [Acessibilidade](#acessibilidade)
+- [Como Jogar](#como-jogar)
+- [Testes de Acessibilidade](#testes-de-acessibilidade)
+- [Recursos de Acessibilidade](#recursos-de-acessibilidade)
-- [Características](#-características)
-- [Tecnologias Utilizadas](#-tecnologias-utilizadas)
-- [Pré-requisitos](#-pré-requisitos)
-- [Instalação](#-instalação)
-- [Configuração](#-configuração)
-- [Como Executar](#-como-executar)
-- [Estrutura do Projeto](#-estrutura-do-projeto)
-- [Acessibilidade](#-acessibilidade)
-- [API Endpoints](#-api-endpoints)
-- [Base de Dados](#-base-de-dados)
-- [Contribuir](#-contribuir)
-- [Licença](#-licença)
+## Características
----
-
-## ✨ Características
-
-### 🎮 Modos de Jogo
+### Modos de Jogo
- **Modo Individual**: Jogue sozinho e supere 8 níveis progressivos
- **Modo Cooperativo**: Jogue com um amigo e trabalhem em equipa
-### 🎯 Funcionalidades Principais
-
-- ✅ **8 Níveis de Dificuldade** com bónus progressivos
-- ✅ **Sistema de Autenticação** com JWT
-- ✅ **Rankings Globais** por modo de jogo
-- ✅ **Estatísticas Detalhadas** (total de jogos, pontuação média, melhor tempo)
-- ✅ **Configurações Personalizáveis** (som, modo daltónico)
-- ✅ **Limite de Tempo** nos níveis avançados (5-8)
-- ✅ **Progressão de Níveis** automática baseada em performance
-- ✅ **Responsive Design** - funciona em desktop, tablet e mobile
+### Funcionalidades Principais
-### ♿ Acessibilidade (WCAG 2.1 AA)
+- **8 Níveis de Dificuldade** com bónus progressivos
+- **Sistema de Autenticação** com JWT
+- **Rankings Globais** por modo de jogo
+- **Estatísticas Detalhadas** (total de jogos, pontuação média, melhor tempo)
+- **Configurações Personalizáveis** (som, modo daltónico)
+- **Limite de Tempo** nos níveis avançados (5-8)
+- **Progressão de Níveis** automática baseada em performance
+- **Responsive Design** - funciona em desktop, tablet e mobile
-- 🔍 **Skip Links** sempre visíveis (G1: WCAG 2.4.1)
-- 🎨 **Alto Contraste** e modo daltónico
-- ⌨️ **Navegação por Teclado** completa
-- 🔊 **Suporte para Leitores de Ecrã** (ARIA labels)
-- 📱 **Design Responsivo** e adaptável
-- 🏷️ **Estrutura Semântica** HTML5
-- 🎯 **Foco Visível** em todos os elementos interativos
+### Acessibilidade (WCAG 2.1 AA)
----
+- **Skip Links** sempre visíveis (G1: WCAG 2.4.1)
+- **Alto Contraste** e modo daltónico
+- **Navegação por Teclado** completa
+- **Suporte para Leitores de Ecrã** (ARIA labels)
+- **Design Responsivo** e adaptável
+- **Estrutura Semântica** HTML5
+- **Foco Visível** em todos os elementos interativos
-## 🛠️ Tecnologias Utilizadas
+## Tecnologias Utilizadas
### Frontend
- **React 18** (via CDN)
@@ -80,9 +73,7 @@
- **dotenv** (variáveis de ambiente)
- **CORS** (Cross-Origin Resource Sharing)
----
-
-## 📦 Pré-requisitos
+## Pré-requisitos
Antes de começar, certifique-se de ter instalado:
@@ -91,9 +82,7 @@ Antes de começar, certifique-se de ter instalado:
- **npm** (vem incluído com Node.js)
- **Git** - [Download](https://git-scm.com/)
----
-
-## 🚀 Instalação
+## Instalação
### 1. Clone o Repositório
@@ -132,9 +121,7 @@ sqlcmd -S localhost -d BrainBridge -i create-tables.sql
sqlcmd -S localhost -d BrainBridge -i tabelastatistics.sql
```
----
-
-## ⚙️ Configuração
+## Configuração
### 1. Configure as Variáveis de Ambiente
@@ -167,9 +154,7 @@ Certifique-se de que:
- A autenticação SQL está ativada
- O utilizador tem permissões na base de dados `BrainBridge`
----
-
-## 🎯 Como Executar
+## Como Executar
### Modo Desenvolvimento
@@ -204,9 +189,7 @@ cd brainbridge-backend
npm start
```
----
-
-## 📁 Estrutura do Projeto
+## Estrutura do Projeto
```
BrainBridge/
@@ -236,316 +219,41 @@ BrainBridge/
└── README.md # Este ficheiro
```
----
-
-## ♿ Acessibilidade
+## Acessibilidade
O BrainBridge foi desenvolvido seguindo rigorosamente as **Diretrizes de Acessibilidade para Conteúdo Web (WCAG 2.1)** nível **AA**.
### Conformidade WCAG 2.1
-#### ✅ Princípio 1: Perceptível
+#### Princípio 1: Perceptível
- **1.3.1 Informação e Relações**: Estrutura hierárquica de cabeçalhos (H42: Using h1-h6 to identify headings)
- **1.4.1 Uso de Cor**: Modo daltónico disponível
- **1.4.3 Contraste**: Rácio mínimo de 4.5:1
-#### ✅ Princípio 2: Operável
+#### Princípio 2: Operável
- **2.1.1 Teclado**: Totalmente navegável por teclado
- **2.4.1 Ignorar Blocos**: Skip link sempre visível (G1: Adding a link at the top of each page that goes directly to the main content area)
- **2.4.5 Múltiplas Formas**: Links relacionados e navegação alternativa
- **2.4.7 Foco Visível**: Indicadores de foco em todos os elementos
-#### ✅ Princípio 3: Compreensível
+#### Princípio 3: Compreensível
- **3.1.1 Idioma da Página**: `lang="pt-PT"`
- **3.2.1 Em Foco**: Sem mudanças de contexto inesperadas
- **3.3.2 Etiquetas**: Labels descritivos em formulários
-#### ✅ Princípio 4: Robusto
+#### Princípio 4: Robusto
- **4.1.2 Nome, Função, Valor**: ARIA labels apropriados
- **4.1.3 Mensagens de Estado**: `role="status"`, `aria-live`
### Recursos de Acessibilidade
-- 🎹 **Atalhos de Teclado**
-- 🔊 **Feedback Sonoro** (pode ser desativado)
-- 👁️ **Modo Daltónico**
-- 📢 **Anúncios para Leitores de Ecrã**
-- 🎯 **Foco Visível** com contornos de alto contraste
-
----
-
-## 🌐 API Endpoints
+- **Atalhos de Teclado**
+- **Feedback Sonoro** (pode ser desativado)
+- **Modo Daltónico**
+- **Anúncios para Leitores de Ecrã**
+- **Foco Visível** com contornos de alto contraste
-### Autenticação
-
-#### Registar Novo Utilizador
-```http
-POST /api/users
-Content-Type: application/json
-
-{
- "username": "jogador1",
- "email": "jogador@exemplo.com",
- "password": "senha_segura"
-}
-```
-
-#### Login
-```http
-POST /api/login
-Content-Type: application/json
-
-{
- "email": "jogador@exemplo.com",
- "password": "senha_segura"
-}
-```
-
-**Resposta:**
-```json
-{
- "success": true,
- "data": {
- "token": "eyJhbGciOiJIUzI1NiIs...",
- "user": {
- "userId": 1,
- "username": "jogador1",
- "email": "jogador@exemplo.com"
- }
- }
-}
-```
-
-#### Logout
-```http
-POST /api/logout
-Authorization: Bearer {token}
-```
-
-#### Verificar Token
-```http
-GET /api/auth/verify
-Authorization: Bearer {token}
-```
-
-#### Obter Dados do Utilizador
-```http
-GET /api/me
-Authorization: Bearer {token}
-```
-
----
-
-### Jogos
-
-#### Iniciar Novo Jogo
-```http
-POST /api/games/start
-Authorization: Bearer {token}
-Content-Type: application/json
-
-{
- "gameMode": "individual",
- "level": 1
-}
-```
-
-#### Finalizar Jogo
-```http
-POST /api/games/finish
-Authorization: Bearer {token}
-Content-Type: application/json
-
-{
- "gameMode": "individual",
- "level": 1,
- "score": 1500,
- "timeSeconds": 45,
- "completed": true
-}
-```
-
-#### Completar Jogo (Atualizar Estatísticas)
-```http
-POST /api/games/complete
-Authorization: Bearer {token}
-Content-Type: application/json
-
-{
- "gameMode": "individual",
- "level": 1,
- "score": 1500,
- "timeSeconds": 45,
- "completed": true
-}
-```
-
-#### Listar Jogos do Utilizador
-```http
-GET /api/games?gameMode=individual&limit=10&offset=0
-Authorization: Bearer {token}
-```
-
-#### Obter Estatísticas Detalhadas
-```http
-GET /api/games/statistics2
-Authorization: Bearer {token}
-```
-
-#### Obter Jogos Recentes
-```http
-GET /api/games/recent
-```
-
----
-
-### Perfil
-
-#### Obter Perfil Próprio
-```http
-GET /api/profile
-Authorization: Bearer {token}
-```
-
-#### Obter Perfil por ID
-```http
-GET /api/profile/:id
-```
-
-#### Atualizar Progresso
-```http
-POST /api/profile/progress
-Authorization: Bearer {token}
-Content-Type: application/json
-
-{
- "individualLevel": 2,
- "individualHighscore": 2500,
- "cooperativeLevel": 1,
- "cooperativeHighscore": 1800
-}
-```
-
----
-
-### Rankings
-
-#### Obter Rankings
-```http
-GET /api/rankings?gameMode=individual&limit=10
-```
-
----
-
-### Configurações de Níveis
-
-#### Listar Configurações
-```http
-GET /api/levelConfigurations
-```
-
-#### Adicionar/Atualizar Configuração
-```http
-POST /api/levelConfigurations
-Authorization: Bearer {token}
-Content-Type: application/json
-
-{
- "gameMode": "individual",
- "level": 1,
- "name": "Iniciante",
- "cards": 12,
- "bonus": 500,
- "timeLimit": 0
-}
-```
-
----
-
-## 🗄️ Base de Dados
-
-### Tabelas Principais
-
-#### **Users**
-Armazena informações dos utilizadores e seu progresso.
-
-| Campo | Tipo | Descrição |
-|-------|------|-----------|
-| UserID | INT (PK) | Identificador único |
-| Username | NVARCHAR(100) | Nome do utilizador |
-| Email | NVARCHAR(255) | Email (único) |
-| PasswordHash | NVARCHAR(255) | Hash da senha |
-| Salt | NVARCHAR(100) | Salt do bcrypt |
-| IndividualLevel | INT | Nível individual atual |
-| IndividualHighscore | INT | Recorde individual |
-| CooperativeLevel | INT | Nível cooperativo atual |
-| CooperativeHighscore | INT | Recorde cooperativo |
-| TotalGamesPlayed | INT | Total de jogos |
-| SoundEnabled | BIT | Som ativado |
-| ColorBlindMode | BIT | Modo daltónico |
-
-#### **Games**
-Regista cada jogo concluído.
-
-| Campo | Tipo | Descrição |
-|-------|------|-----------|
-| GameID | INT (PK) | Identificador único |
-| UserID | INT (FK) | Referência ao utilizador |
-| GameMode | NVARCHAR(20) | individual/cooperative |
-| Level | INT | Nível jogado |
-| Score | INT | Pontuação obtida |
-| TimeSeconds | INT | Tempo em segundos |
-| Completed | BIT | Jogo concluído |
-| Player1Score | INT | Pontuação jogador 1 (coop) |
-| Player2Score | INT | Pontuação jogador 2 (coop) |
-| Winner | INT | Vencedor (coop): 0=empate, 1=P1, 2=P2 |
-| LevelBonus | INT | Bónus do nível |
-| PlayedAt | DATETIME | Data/hora do jogo |
-
-#### **UserStatistics2**
-Estatísticas agregadas dos utilizadores.
-
-| Campo | Tipo | Descrição |
-|-------|------|-----------|
-| UserID | INT (FK) | Referência ao utilizador |
-| TotalGames | INT | Total de jogos |
-| IndividualGames | INT | Jogos individuais |
-| CooperativeGames | INT | Jogos cooperativos |
-| BestTimeIndividual | INT | Melhor tempo (individual) |
-| BestTimeCooperative | INT | Melhor tempo (cooperativo) |
-| AverageScore | FLOAT | Pontuação média |
-| BestScore | INT | Melhor pontuação |
-| StreakCurrent | INT | Sequência atual |
-| StreakBest | INT | Melhor sequência |
-
-#### **LevelConfigurations**
-Configurações de cada nível.
-
-| Campo | Tipo | Descrição |
-|-------|------|-----------|
-| ConfigID | INT (PK) | Identificador único |
-| GameMode | NVARCHAR(20) | individual/cooperative |
-| Level | INT | Número do nível |
-| Name | NVARCHAR(100) | Nome do nível |
-| Cards | INT | Quantidade de cartas |
-| Bonus | INT | Bónus do nível |
-| TimeLimit | INT | Limite de tempo (segundos, 0=sem limite) |
-
-#### **Rankings**
-Melhores pontuações globais.
-
-| Campo | Tipo | Descrição |
-|-------|------|-----------|
-| RankingID | INT (PK) | Identificador único |
-| UserID | INT (FK) | Referência ao utilizador |
-| GameMode | NVARCHAR(20) | individual/cooperative |
-| Score | INT | Pontuação |
-| Level | INT | Nível |
-| PlayedAt | DATETIME | Data/hora |
-
----
-
-## 🎮 Como Jogar
+## Como Jogar
### Modo Individual
@@ -583,9 +291,7 @@ Melhores pontuações globais.
| 7 | Grande Mestre | 24 | 5000 | 1.5 minutos |
| 8 | Lendário | 24 | 10000 | 1 minuto |
----
-
-## 🧪 Testes de Acessibilidade
+## Testes de Acessibilidade
### Ferramentas Recomendadas
@@ -602,40 +308,7 @@ Melhores pontuações globais.
4. **Zoom**: Teste com 200% de zoom
5. **Sem Rato**: Jogue apenas com teclado
----
-
-## 🤝 Contribuir
-
-Contribuições são bem-vindas! Para contribuir:
-
-1. **Fork** o projeto
-2. Crie uma **branch** para sua feature (`git checkout -b feature/MinhaFeature`)
-3. **Commit** suas mudanças (`git commit -m 'Adiciona MinhaFeature'`)
-4. **Push** para a branch (`git push origin feature/MinhaFeature`)
-5. Abra um **Pull Request**
-
-### Diretrizes
-
-- Mantenha a conformidade **WCAG 2.1 AA**
-- Adicione testes quando aplicável
-- Documente novas funcionalidades
-- Siga o estilo de código existente
-
----
-
-## 📝 Licença
-
-Este projeto está sob a licença **ISC**.
-
----
-
-## 👥 Autores
-
-- **Carolina** - [@Carolpm28](https://github.com/Carolpm28)
-
----
-
-## 📚 Recursos de Acessibilidade
+## Recursos de Acessibilidade
### Documentação Oficial
@@ -650,37 +323,10 @@ Este projeto está sob a licença **ISC**.
- [Includification](https://www.includification.com/)
- [Accessible Games](https://accessible.games/)
----
-
-## 🐛 Reportar Problemas
-
-Encontrou um bug? Tem uma sugestão?
-
-- Abra uma [Issue](https://github.com/Carolpm28/BrainBridge/issues)
-
----
-
-## 📞 Contacto
-
-- **GitHub**: [@Carolpm28](https://github.com/Carolpm28)
-- **Issues**: [Reportar Problema](https://github.com/Carolpm28/BrainBridge/issues)
-
----
-
-## 🌟 Agradecimentos
-
-Agradecimentos especiais a:
-
-- Comunidade WCAG pela documentação excelente
-- Portal da Acessibilidade de Portugal
-- Todos os testadores que ajudaram a melhorar a acessibilidade
-
----
-
**BrainBridge** © 2025 - Jogo de memória desenvolvido seguindo as diretrizes WCAG 2.1 AA
-[⬆ Voltar ao topo](#-brainbridge---jogo-de-memória-acessível-e-cooperativo)
+[Voltar ao topo](#brainbridge---jogo-de-memória-acessível-e-cooperativo)
From 92c687ffe7a4c508d8d55777e4f9cc2aa7a5e1c5 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 16 Dec 2025 22:45:48 +0000
Subject: [PATCH 5/5] Change header levels to remove underlines (h2 to h3)
Co-authored-by: Carolpm28 <129198772+Carolpm28@users.noreply.github.com>
---
README.md | 90 +++++++++++++++++++++++++++----------------------------
1 file changed, 45 insertions(+), 45 deletions(-)
diff --git a/README.md b/README.md
index fa7efde..de4d31d 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,7 @@
**BrainBridge** é um jogo de memória inovador desenvolvido com foco total em **acessibilidade web**, seguindo as diretrizes **WCAG 2.1 AA**. O projeto oferece dois modos de jogo (Individual e Cooperativo) com 8 níveis progressivos de dificuldade, sistema de autenticação, rankings e estatísticas detalhadas.
-## Índice
+### Índice
- [Características](#características)
- [Tecnologias Utilizadas](#tecnologias-utilizadas)
@@ -21,14 +21,14 @@
- [Testes de Acessibilidade](#testes-de-acessibilidade)
- [Recursos de Acessibilidade](#recursos-de-acessibilidade)
-## Características
+### Características
-### Modos de Jogo
+#### Modos de Jogo
- **Modo Individual**: Jogue sozinho e supere 8 níveis progressivos
- **Modo Cooperativo**: Jogue com um amigo e trabalhem em equipa
-### Funcionalidades Principais
+#### Funcionalidades Principais
- **8 Níveis de Dificuldade** com bónus progressivos
- **Sistema de Autenticação** com JWT
@@ -39,7 +39,7 @@
- **Progressão de Níveis** automática baseada em performance
- **Responsive Design** - funciona em desktop, tablet e mobile
-### Acessibilidade (WCAG 2.1 AA)
+#### Acessibilidade (WCAG 2.1 AA)
- **Skip Links** sempre visíveis (G1: WCAG 2.4.1)
- **Alto Contraste** e modo daltónico
@@ -49,31 +49,31 @@
- **Estrutura Semântica** HTML5
- **Foco Visível** em todos os elementos interativos
-## Tecnologias Utilizadas
+### Tecnologias Utilizadas
-### Frontend
+#### Frontend
- **React 18** (via CDN)
- **Babel** (transpilação JSX)
- **Tailwind CSS** (via CDN)
- **HTML5/CSS3**
- **JavaScript ES6+**
-### Backend
+#### Backend
- **Node.js** (v18+)
- **Express.js** (v5.1.0)
- **JWT** (autenticação)
- **bcrypt** (hash de passwords)
-### Base de Dados
+#### Base de Dados
- **Microsoft SQL Server**
- **mssql** (driver Node.js)
-### Ferramentas de Desenvolvimento
+#### Ferramentas de Desenvolvimento
- **nodemon** (desenvolvimento)
- **dotenv** (variáveis de ambiente)
- **CORS** (Cross-Origin Resource Sharing)
-## Pré-requisitos
+### Pré-requisitos
Antes de começar, certifique-se de ter instalado:
@@ -82,25 +82,25 @@ Antes de começar, certifique-se de ter instalado:
- **npm** (vem incluído com Node.js)
- **Git** - [Download](https://git-scm.com/)
-## Instalação
+### Instalação
-### 1. Clone o Repositório
+#### 1. Clone o Repositório
```bash
git clone https://github.com/Carolpm28/BrainBridge.git
cd BrainBridge/BrainBridgev_final
```
-### 2. Instale as Dependências do Backend
+#### 2. Instale as Dependências do Backend
```bash
cd brainbridge-backend
npm install
```
-### 3. Configure a Base de Dados
+#### 3. Configure a Base de Dados
-#### 3.1. Crie a Base de Dados
+##### 3.1. Crie a Base de Dados
Execute o script SQL para criar a base de dados:
@@ -109,21 +109,21 @@ Execute o script SQL para criar a base de dados:
sqlcmd -S localhost -i create-database.sql
```
-#### 3.2. Crie as Tabelas
+##### 3.2. Crie as Tabelas
```bash
sqlcmd -S localhost -d BrainBridge -i create-tables.sql
```
-#### 3.3. (Opcional) Adicione Tabela de Estatísticas
+##### 3.3. (Opcional) Adicione Tabela de Estatísticas
```bash
sqlcmd -S localhost -d BrainBridge -i tabelastatistics.sql
```
-## Configuração
+### Configuração
-### 1. Configure as Variáveis de Ambiente
+#### 1. Configure as Variáveis de Ambiente
Crie um ficheiro `.env` na pasta `brainbridge-backend`:
@@ -147,18 +147,18 @@ NODE_ENV=development
⚠️ **IMPORTANTE**: Altere `JWT_SECRET` para uma chave secreta forte em produção!
-### 2. Configuração do SQL Server
+#### 2. Configuração do SQL Server
Certifique-se de que:
- O SQL Server está em execução
- A autenticação SQL está ativada
- O utilizador tem permissões na base de dados `BrainBridge`
-## Como Executar
+### Como Executar
-### Modo Desenvolvimento
+#### Modo Desenvolvimento
-#### 1. Inicie o Backend
+##### 1. Inicie o Backend
```bash
cd brainbridge-backend
@@ -167,7 +167,7 @@ npm run dev
O servidor estará disponível em: `http://localhost:3000`
-#### 2. Abra o Frontend
+##### 2. Abra o Frontend
Abra o ficheiro `index.html` no navegador ou use um servidor local:
@@ -182,14 +182,14 @@ npx http-server -p 8080
O jogo estará disponível em: `http://localhost:8080`
-### Modo Produção
+#### Modo Produção
```bash
cd brainbridge-backend
npm start
```
-## Estrutura do Projeto
+### Estrutura do Projeto
```
BrainBridge/
@@ -219,33 +219,33 @@ BrainBridge/
└── README.md # Este ficheiro
```
-## Acessibilidade
+### Acessibilidade
O BrainBridge foi desenvolvido seguindo rigorosamente as **Diretrizes de Acessibilidade para Conteúdo Web (WCAG 2.1)** nível **AA**.
-### Conformidade WCAG 2.1
+#### Conformidade WCAG 2.1
-#### Princípio 1: Perceptível
+##### Princípio 1: Perceptível
- **1.3.1 Informação e Relações**: Estrutura hierárquica de cabeçalhos (H42: Using h1-h6 to identify headings)
- **1.4.1 Uso de Cor**: Modo daltónico disponível
- **1.4.3 Contraste**: Rácio mínimo de 4.5:1
-#### Princípio 2: Operável
+##### Princípio 2: Operável
- **2.1.1 Teclado**: Totalmente navegável por teclado
- **2.4.1 Ignorar Blocos**: Skip link sempre visível (G1: Adding a link at the top of each page that goes directly to the main content area)
- **2.4.5 Múltiplas Formas**: Links relacionados e navegação alternativa
- **2.4.7 Foco Visível**: Indicadores de foco em todos os elementos
-#### Princípio 3: Compreensível
+##### Princípio 3: Compreensível
- **3.1.1 Idioma da Página**: `lang="pt-PT"`
- **3.2.1 Em Foco**: Sem mudanças de contexto inesperadas
- **3.3.2 Etiquetas**: Labels descritivos em formulários
-#### Princípio 4: Robusto
+##### Princípio 4: Robusto
- **4.1.2 Nome, Função, Valor**: ARIA labels apropriados
- **4.1.3 Mensagens de Estado**: `role="status"`, `aria-live`
-### Recursos de Acessibilidade
+#### Recursos de Acessibilidade
- **Atalhos de Teclado**
- **Feedback Sonoro** (pode ser desativado)
@@ -253,9 +253,9 @@ O BrainBridge foi desenvolvido seguindo rigorosamente as **Diretrizes de Acessib
- **Anúncios para Leitores de Ecrã**
- **Foco Visível** com contornos de alto contraste
-## Como Jogar
+### Como Jogar
-### Modo Individual
+#### Modo Individual
1. **Registe-se** ou **faça login**
2. Selecione **"Modo Individual"**
@@ -264,21 +264,21 @@ O BrainBridge foi desenvolvido seguindo rigorosamente as **Diretrizes de Acessib
5. **Complete o nível** para avançar automaticamente
6. Níveis 5-8 têm **limite de tempo**!
-### Modo Cooperativo
+#### Modo Cooperativo
1. Selecione **"Modo Cooperativo"**
2. **Dois jogadores** alternam turnos
3. Cada jogador tenta encontrar pares
4. Quem encontrar **mais pares vence**!
-### Pontuação
+#### Pontuação
- **Par correto**: +100 pontos
- **Bónus de nível**: varia por nível (500-10000)
- **Bónus de tempo**: nos níveis com limite
- **Penalização**: -10 por erro
-### Níveis
+#### Níveis
| Nível | Nome | Cartas | Bónus | Tempo Limite |
|-------|------|--------|-------|--------------|
@@ -291,16 +291,16 @@ O BrainBridge foi desenvolvido seguindo rigorosamente as **Diretrizes de Acessib
| 7 | Grande Mestre | 24 | 5000 | 1.5 minutos |
| 8 | Lendário | 24 | 10000 | 1 minuto |
-## Testes de Acessibilidade
+### Testes de Acessibilidade
-### Ferramentas Recomendadas
+#### Ferramentas Recomendadas
- **[AccessMonitor](https://accessmonitor.acessibilidade.gov.pt/)** - Validador automático português
- **[WAVE WebAIM](https://wave.webaim.org/)** - Ferramenta de avaliação
- **[axe DevTools](https://www.deque.com/axe/)** - Extensão para navegador
- **[Lighthouse](https://web.dev/lighthouse/)** - Auditoria Google
-### Teste Manual
+#### Teste Manual
1. **Navegação por Teclado**: Use `Tab`, `Enter`, `Espaço`, setas
2. **Leitor de Ecrã**: Teste com NVDA (Windows) ou VoiceOver (Mac)
@@ -308,16 +308,16 @@ O BrainBridge foi desenvolvido seguindo rigorosamente as **Diretrizes de Acessib
4. **Zoom**: Teste com 200% de zoom
5. **Sem Rato**: Jogue apenas com teclado
-## Recursos de Acessibilidade
+### Recursos de Acessibilidade
-### Documentação Oficial
+#### Documentação Oficial
- [Portal da Acessibilidade PT](https://www.acessibilidade.gov.pt/)
- [WCAG 2.1 Guidelines](https://www.w3.org/WAI/WCAG21/quickref/)
- [MDN Web Accessibility](https://developer.mozilla.org/pt-BR/docs/Web/Accessibility)
- [Decreto-Lei n.º 83/2018](https://www.acessibilidade.gov.pt/decreto/)
-### Jogos Inclusivos
+#### Jogos Inclusivos
- [Game Accessibility Guidelines](https://gameaccessibilityguidelines.com/)
- [Includification](https://www.includification.com/)