As cores são tokens, e o contraste é um número calculado
A paleta está num bloco de 14 variáveis, e o texto secundário usa um único token: `--muted: #666b65`. As razões, recalculadas com a fórmula de luminância relativa da WCAG nos sete fundos do site: 5,45:1 sobre branco, 5,15, 5,11, 5,03, 5,02, 4,79 e 4,72. O texto principal, `--ink: #181a19`, obtém 17,49:1 sobre branco; o verde de acento `#355c46`, 7,58:1. Quando uma cor não atinge o limiar, muda-se o token, não se argumenta na reunião.
As componentes têm padrão de teclado, não só aparência
O grupo de separadores da página inicial usa índice de tabulação móvel: só o separador ativo é acessível com Tab, os outros são retirados da ordem, e as setas esquerda/direita, Home e End movem o foco, com o comportamento predefinido da tecla anulado. É o modelo das práticas recomendadas para componentes acessíveis, implementado, não citado. Nas componentes base do site há 21 etiquetas acessíveis, 7 estados premido/não premido, 3 ligações entre título e região, 2 estados de seleção, 2 regiões que anunciam alterações e 2 ligações entre comando e o painel que controlam.
O movimento tem botão de paragem e desliga-se segundo a preferência do sistema
Na página inicial há 38 elementos animados em loop infinito, iniciados automaticamente, que duram mais de cinco segundos — exatamente a situação regulada pelo critério «Pausar, parar, ocultar». Os 38 estão cobertos por botões de pausa: ao premir, as animações passam ao estado parado e o estado do botão muda. Em separado, em `prefers-reduced-motion: reduce` uma regra global anula qualquer animação e transição, desativa a rolagem suave, elimina o deslocamento ao passar com o rato e esconde o botão de pausa. Na folha principal há sete blocos destes, mais um na folha base.
Indicador de foco visível, só onde deve
Contorno sólido de 2 px, no verde de acento, com 5 px de distância, aplicado por `:focus-visible` — portanto aparece na navegação com teclado e não no clique com rato. Verificado no navegador, elemento por elemento, no cabeçalho e nos primeiros comandos no conteúdo: quatro elementos diferentes, o mesmo contorno. Em lado nenhum da folha de estilo existe um contorno eliminado sem substituto.
Formulários que anunciam os seus estados
No formulário de contacto do site, as etiquetas estão implícitas nos campos, o erro é marcado como alerta e a confirmação como estado — portanto os leitores de ecrã anunciam-nos sem que o utilizador tenha de procurar. A armadilha para bots está corretamente escondida: elemento pai sem exibição, marcado como oculto para tecnologias assistivas e retirado da ordem de tabulação. A nossa própria auditoria confirma que as regras de etiquetagem, de nome para seletores e de preenchimento automático passam todas.
A verificação é feita com ferramenta, em páginas reais
Corremos axe-core 4.10.2 na página em produção, não num ambiente de teste, numa amostra de dez páginas que cobre padrões diferentes: página inicial, catálogo, uma página de produto, o índice de serviços, uma página de serviço, a matriz de soluções, uma combinação da matriz, contactos, tarifas, um artigo e um documento jurídico. O resultado bruto é escrito na página, com o número de nós, não resumido em «conforme».
O que falhou é publicado, não arredondado
Da mesma auditoria: a 320 px de largura, o comando do cabeçalho e o botão de menu ultrapassam o ecrã em 22 px e a página desloca-se horizontalmente — a aritmética é 362 px de conteúdo num contentor de 280 px. Nos documentos jurídicos, os links no texto não se distinguem do texto à volta senão pela cor, e a relação entre o acento e o texto de corpo é 1,01:1, portanto o sublinhado é obrigatório. Ambos estão abertos, com correção escrita. Publicamo-los porque um comprador que pede acessibilidade merece ver como é uma lista real de defeitos.
Sem tema escuro — dito, não simulado
O site não tem tema escuro. O bloco de tokens é declarado para três seletores que recebem valores idênticos, e no código não existe qualquer regra para a preferência de esquema do sistema. Verificado no browser com o esquema escuro emulado: a página continua branca. A consequência útil: todos os rácios de contraste medidos são válidos em ambos os esquemas. A consequência incómoda: o comutador de tema é código morto do ponto de vista da cor. Um tema escuro real significa re-medição integral do contraste, não a cópia dos valores.
Tipografia com regras, não com preferências
Uma única família para títulos e texto, com espaçamento entre letras ajustado por nível — mais apertado nos títulos grandes, `-0,055em` nos níveis um e dois, `-0,035em` no nível três — e peso 500 nos títulos. Os parágrafos usam equilibragem de linhas, para que não fique uma palavra sozinha na última linha. O contentor tem largura máxima de 1240 px com margens de 48 px, e os botões têm a mesma altura de linha em todo o lado. São regras escritas na folha de estilo, por isso aplicam-se também depois de sairmos.