Acessibilidade
Como construímos para utilizadores de teclado, leitores de ecrã, baixa visão e baixa tecnologia. Um instantâneo honesto e datado.
Declaração formal de acessibilidade
- Norma visada
- WCAG 2.2 AA em toda a experiência. Tratamento AAA na aparência do foco (anéis espessos de alto contraste, não obscurecidos) e na rotulagem de formulários + recuperação de erros. Acompanhado pela Recomendação W3C, não uma paráfrase.
- Última auditoria interna
- 2026-04-19. Passagem manual pela nossa própria equipa contra a página inicial, print-size, o hub /standards/ + 9 páginas de autoridade e as 45 páginas de destino de esquemas de pagamento.
- Auditoria externa
- Encomendada, relatório pendente. Publicação na chegada em /accessibility/audit/ com notas de remediação, imperfeições intactas, sem seleção a dedo.
- Cadência de reteste
- Verificação mensal + passagem manual completa após qualquer mudança maior na interface. As verificações automatizadas (linting de contraste, análise de novos critérios WCAG 2.2) são executadas em cada implementação.
- Contacto + SLA
- hello@abundera.ai, reconhecemos os relatórios de acessibilidade dentro de 2 dias úteis, triamos dentro de 5, e tratamos os bloqueadores de teclado / leitor de ecrã / cognitivos como problemas prioritários (enviados antes do trabalho de funcionalidades).
Conformidade WCAG 2.2 AA por critério de sucesso
Os critérios novos na versão 2.2 que estamos a monitorizar ativamente. O estado reflete o que verificamos internamente; a auditoria externa prevalecerá.
| CS | Critério | Nível | Estado |
|---|---|---|---|
| 2.4.11 | Foco não obscurecido (Mínimo) | AA | Aprovado, o anel de foco é sempre visível, não escondido sob cabeçalhos fixos |
| 2.4.12 | Foco não obscurecido (Melhorado) | AAA | Aprovado na superfície do gerador; algumas gavetas têm sobreposição breve durante a animação |
| 2.4.13 | Aparência do foco | AAA | Aprovado, contorno de 3 px + deslocamento de 2 px + cópia de segurança box-shadow em qualquer fundo |
| 2.5.7 | Movimentos de arrastamento | AA | Aprovado, sem interações essenciais apenas de arrastamento; o designer de cartões de visita oferece alternativas de teclado para cada arrastamento |
| 2.5.8 | Tamanho do alvo (Mínimo) | AA | Aprovado, mínimo de 24×24 CSS px verificado em cada alvo interativo; a maioria a 28×28 ou 40×40 |
| 3.2.6 | Ajuda consistente | A | Aprovado, ajuda / contacto aparecem no mesmo lugar em cada página (rodapé + nav) |
| 3.3.7 | Entrada redundante | A | Aprovado, nenhum formulário exige reintroduzir dados que o utilizador já forneceu na mesma sessão |
| 3.3.8 | Autenticação acessível (Mínimo) | AA | N/A, sem testes de função cognitiva; Abundera QR não requer login |
Suporte para movimento e cores forçadas
- prefers-reduced-motion: reduce, as transições de flutuação e esvanecimento do orbe ambiente são suprimidas. As transições funcionais permanecem curtas. Verificado com macOS Reduce Motion e Windows "Mostrar animações" desativado.
- forced-colors: active (Modo de Alto Contraste do Windows), os anéis de foco usam a cor Highlight do sistema; as bordas herdam o CanvasText do sistema. Verificado no Edge no Windows 11 High Contrast.
Limitações conhecidas
- JAWS ainda não testado. A próxima ronda de AT tem como alvo JAWS no Edge no Windows 11.
- O Designer de cartões de visita é orientado para o rato por design para a pré-visualização de arrastar para posicionar. Cada controlo tem uma alternativa de teclado, mas o ciclo de feedback ao vivo ainda é visual. As entradas de cor, a grelha de predefinições e os campos hex têm agora ligações ARIA explícitas (2026-04-19).
- O relatório de auditoria externa está pendente. O estado autoatestado na tabela acima será substituído pelas conclusões do auditor quando o relatório chegar.
- Algumas tecnologias de assistência de terceiros (Dragon NaturallySpeaking, Texto para fala no Android) não estão na nossa matriz de regressão; aceitamos relatórios da comunidade e corrigimos por ticket.
Registo de alterações de acessibilidade
- 2026-04-19 (PM), Duplo disparo de região em direto do TalkBack corrigido:
aria-live="polite"removido do invólucro#qr-preview; os anúncios agora vêm apenas do crachá de escaneabilidaderole="status", uma vez por geração. Modal BCD: os seletores de cor ganharam ligações<label for>adequadas (Fundo, Texto, Acento, Gradiente); o contentor da grelha de predefinições ganhourole="group"+aria-label. As tabelas de acessibilidade ganharam<caption>+scope="col"/"row", WCAG 2.2 AA + a matriz AT agora anunciam corretamente no VoiceOver, NVDA e TalkBack. - 2026-04-19 (AM), Indicadores de foco melhorados (3 px + cópia de segurança box-shadow). Suporte para forced-colors + prefers-reduced-motion adicionado. Auditoria de tamanho de alvo:
.saved-profile-delete,.type-search-clear,.compat-toggle-btnaumentados para ≥ 28 px. Salto de nível de cabeçalho corrigido (subcabeçalhos vCard/MECARD h4 → h3). Declaração formal WCAG 2.2 AA + matriz AT publicadas. - 2026-04-18, Passagem de linha de base manual WCAG 2.2 AA documentada. Faixa de confiança de quatro pilares reduzida para hierarquia mais limpa.
- 2026-03-08, Página inicial /accessibility/ publicada.
O que nos comprometemos a fazer
- Navegação completa por teclado. Cada controlo do gerador, cada modal e cada fluxo de exportação é acessível sem rato.
- Estados de foco visíveis. As entradas, botões e links focados mostram um anel claro. Não dependemos apenas da cor.
- Etiquetas em cada campo. As entradas de formulário têm elementos
<label>associados ou atributosaria-label. O texto de marcador de posição nunca é usado como única etiqueta. - Regiões em direto ARIA para a pré-visualização QR e toasts. Os leitores de ecrã ouvem "QR gerado" e mensagens toast quando são acionados, não apenas quando o foco se move para eles.
- Alternativas de texto para botões apenas com ícone.
aria-labelem cada botão apenas com SVG. - Significado de estado independente da cor. Os crachás de escaneabilidade e chips de compatibilidade combinam cor com um glifo e uma etiqueta de texto.
- Nomes de formato de exportação explícitos. Os botões de transferência dizem "Transferir PNG", "Transferir SVG", etc., não apenas "Transferir".
- Grandes alvos de toque móvel. Os elementos interativos têm pelo menos 44 × 44 pixels CSS em ponteiros grosseiros, de acordo com WCAG 2.5.8.
- Respeito pelo movimento reduzido. As transições são desativadas sob
prefers-reduced-motion: reduce.
Onde ainda ficamos aquém
- JAWS ainda não testado. Licença JAWS adquirida, slot de teste reservado para a próxima ronda de AT. Todos os outros principais (VoiceOver macOS + iOS, NVDA, Narrator, TalkBack) passaram na regressão mais recente.
- O Designer de cartões de visita é pesado em rato por design (arrastar para posicionar, pré-visualização em tela). Existem alternativas de teclado para cada controlo, mas o ciclo de feedback de pré-visualização ao vivo ainda é visual. Os controlos de cor usam agora ligações
<label for>adequadas +role="group"no seletor de predefinições (2026-04-19). - Fluxos de gerador complexos (CSV em lote, assistente multi-etapas) poderiam usar uma melhor estrutura de link de salto. Planeado.
- Resumos descritivos de tabelas. As tabelas de acessibilidade + compatibilidade agora têm atributos
<caption>+scope(2026-04-19). Resumos narrativos mais longos ao nível das linhas para cada linha ainda estão planeados.
Matriz de suporte de tecnologia assistiva
Artefacto de engenharia, não uma declaração de relações públicas. Cada linha é uma combinação real de browser + AT + plataforma em que colocámos as mãos fisicamente. O estado reflete a última passagem manual; as ressalvas registam qualquer coisa que ainda bloqueie uma passagem completa.
| Browser | AT | Plataforma | Último aprovado | Estado | Ressalvas conhecidas |
|---|---|---|---|---|---|
| Safari | VoiceOver | macOS 15 | 2026-04-19 | Aprovado | A lista "Atalhos" da paleta de comandos lê os itens duas vezes quando a paleta abre pela primeira vez; cosmético, não bloqueante |
| Safari | VoiceOver | iOS 18 | 2026-04-19 | Aprovado | O rotor reordena alguns chips inseridos dinamicamente; o re-anúncio na interação recupera a ordem |
| Firefox | NVDA | Windows 11 | 2026-04-19 | Aprovado | , |
| Chrome | NVDA | Windows 11 | 2026-04-19 | Aprovado | , |
| Chrome | ChromeVox | ChromeOS 128 | 2026-03-30 | Verificação pontual | Regressão completa em atraso; voltar a enfileirar para a próxima versão |
| Chrome | TalkBack | Android 14 | 2026-04-19 | Aprovado | Duplo disparo de região em direto na pré-visualização QR (anunciou "Pré-visualização QR atualizada" duas vezes a meio do debounce) corrigido 2026-04-19: aria-live removido do invólucro de pré-visualização; os anúncios agora vêm apenas do crachá de escaneabilidade role="status", uma vez por geração. |
| Edge | Narrator | Windows 11 | 2026-04-12 | Aprovado | Modo de cores forçadas (novo nesta versão): anéis de foco OK, mas algumas bordas de chips colapsam para transparente, em fila |
| Safari | JAWS | Windows 11 | , | Não testado | Agendado para a próxima ronda de AT; licença JAWS adquirida, slot de teste reservado |
| Any | Dragon NaturallySpeaking | Windows 11 | , | Não testado | A aceitar relatórios da comunidade; corrigir por ticket até que uma regressão dedicada chegue |
Mapa de teclado
- Tab / Shift+Tab: mover para a frente / trás pelos elementos focáveis.
- Enter / Espaço: ativar botões e alternâncias.
- Teclas de seta: mover entre opções dentro de um grupo de rádio (seletor de tipo, seletor de modelo, barra de separadores).
- Escape: fechar modais (Designer de cartões de visita, pré-voo, serviços de impressão, corte de imagem).
- Início / Fim dentro de um menu de transbordo para saltar para o primeiro / último item.
Auditoria interna, 2026-04-19
Passagem manual WCAG 2.2 AA contra a página inicial, /print-size/, o novo hub /standards/ + 9 páginas de autoridade, e as 45 páginas de destino de esquemas de pagamento (que herdam do modelo partilhado). O que verificámos, o que corrigimos e o que está em aberto:
Verificado como aprovado
- O destino do link de salto existe, o link de salto (
href="#generator") resolve para um elemento visível em cada variante de página. - Estilos de foco visíveis,
:focus-visibleé declarado globalmente com um contorno de 2px, mais substituições por entrada com uma borda colorida + sombra. Confirmado via auditoria CSS nas linhas 34 e 88 desite/css/style.c17bfd85.css. - Todas as entradas de formulário têm etiquetas, cada
<input>/<select>/<textarea>no gerador tem um<label for="...">explícito ou um<label>envolvente. O marcador de posição como etiqueta não é usado em nenhum lugar. - Os botões têm nomes acessíveis, cada
<button>tem conteúdo de texto ou umaria-label. Os botões apenas com SVG (hambúrguer, partilhar, instalar) têm todosaria-label. - SVGs decorativos marcados como ocultos,
aria-hidden="true"em cada ícone decorativo para que os leitores de ecrã os ignorem em vez de anunciar a sua geometria. - Funções ARIA corretas,
role="radiogroup"no seletor de tipo comrole="radio"+aria-checkedem cada opção;role="tablist"/role="tab"+aria-selectednos separadores do painel. - Contraste de texto, o texto principal é
#f5f5f5em#08090a(≈ 17:1, WCAG AAA). O texto atenuado#a3a3a3no mesmo fundo é ≈ 8:1 (acima de AAA 7:1). - O seletor de idioma tem
aria-label="Language"mesmo que a etiqueta visível seja implícita.
Corrigido nesta passagem
- Salto de nível de cabeçalho, três subcabeçalhos dentro das secções de campos extra vCard / MECARD eram
<h4>sob um<h2>sem um<h3>intermédio. As ferramentas de estrutura de leitor de ecrã sinalizaram isto como "nível ignorado." Alterado para<h3>para que a estrutura leia h1 → h2 → h3 → h3 de forma limpa.
Limitações conhecidas
- Varredura completa Axe / NVDA / VoiceOver requer um browser + AT que não podemos executar a partir do pipeline de construção. Passagem manual baseada em browser agendada mensalmente.
- A auditoria independente de terceiros está encomendada (ver espaço reservado /accessibility/audit/). O relatório será publicado na chegada mesmo que contenha conclusões.
- O atalho de teclado "/" para a paleta de comandos é um ligeiro risco de colisão em páginas com campos de pesquisa. Usamos preventDefault() apenas quando o foco está fora de uma entrada; documentado mas ainda não auditado com AT.
Reportar um problema
Se algo não é acessível por teclado, está mal etiquetado ou é de outra forma inutilizável com a sua configuração, envie um email para hello@abundera.ai. Inclua o seu browser, SO, AT e o fluxo específico. Tratamos os erros de acessibilidade como problemas prioritários.