SobreBlogContactoVamos conversar →
Blog
Acessibilidade10 min leitura25 de fevereiro de 2026

WCAG 2.1 AA Checklist: Requisitos de Acessibilidade Web

Checklist completa dos requisitos WCAG 2.1 nível AA para websites portugueses. Critérios de sucesso, como testar, ferramentas e exemplos práticos.

WCAG 2.1 AA: o padrão de referência em Portugal

As Web Content Accessibility Guidelines (WCAG) 2.1, publicadas pelo W3C, são o padrão internacional de acessibilidade web. O nível AA é o exigido pela legislação europeia (EAA/EN 301 549) e, consequentemente, pela legislação portuguesa.

Cumprir WCAG 2.1 AA significa garantir que o seu website é utilizável por pessoas com deficiência visual, auditiva, motora e cognitiva. Esta checklist organiza os critérios mais relevantes por área, com exemplos práticos e dicas de teste.

Percetível: conteúdo que todos conseguem ver e ouvir

Texto alternativo (1.1.1)

Toda a informação não textual deve ter uma alternativa em texto:

  • Imagens informativas: alt descritivo ("Gráfico de vendas mostrando crescimento de 25% no 2.º trimestre")
  • Imagens decorativas: alt vazio (alt="") para que leitores de ecrã as ignorem
  • Botões com ícone: alt que descreve a ação ("Pesquisar", "Fechar menu")
  • Imagens complexas (gráficos, infográficos): descrição longa associada

Como testar: Desative imagens no browser e verifique se a informação continua acessível. Use o axe DevTools para detetar alts em falta.

Conteúdo multimédia (1.2)

  • Vídeos pré-gravados: legendas sincronizadas obrigatórias (1.2.2)
  • Vídeos em direto: legendas em tempo real (1.2.4) — pode ser complexo mas é obrigatório em AA
  • Áudio pré-gravado: transcrição em texto (1.2.1)
  • Audiodescrição: para vídeos onde a informação visual é essencial (1.2.5)

Dica prática: Utilize serviços de legendagem automática (YouTube, por exemplo) como ponto de partida, mas revise sempre o resultado.

Adaptável (1.3)

O conteúdo deve poder ser apresentado de diferentes formas sem perder informação:

  • Estrutura semântica: Use

    a
    na hierarquia correta,

  • Ordem de leitura lógica: A ordem do DOM deve fazer sentido quando linearizada
  • Não depender apenas de características sensoriais: "Clique no botão verde" é inacessível; "Clique em Submeter" é acessível
  • Orientação (1.3.4 — novo em 2.1): O conteúdo não deve estar restrito a uma orientação (retrato/paisagem)
  • Autocompletar (1.3.5 — novo em 2.1): Campos de formulário devem usar o atributo autocomplete correto

Distinguível (1.4)

  • Contraste de texto (1.4.3): Mínimo 4.5:1 para texto normal, 3:1 para texto grande (>18pt ou >14pt bold)
  • Redimensionar texto (1.4.4): Conteúdo legível e funcional com zoom de 200%
  • Imagens de texto (1.4.5): Evitar texto em imagens; usar texto real com CSS
  • Refluxo (1.4.10 — novo em 2.1): Sem scroll horizontal a 320px de largura (responsivo)
  • Contraste não-textual (1.4.11 — novo em 2.1): Mínimo 3:1 para componentes de interface e gráficos
  • Espaçamento de texto (1.4.12 — novo em 2.1): Conteúdo funcional quando o utilizador ajusta espaçamento
  • Conteúdo ao passar/focar (1.4.13 — novo em 2.1): Tooltips e popovers devem ser dispensáveis, hoverable e persistentes

Operável: navegação para todos

Teclado (2.1)

  • Toda a funcionalidade via teclado (2.1.1): Tab, Enter, Espaço, setas
  • Sem armadilhas de teclado (2.1.2): O utilizador pode sempre sair de qualquer componente
  • Atalhos de teclado (2.1.4 — novo em 2.1): Se existirem atalhos de uma tecla, devem poder ser desativados

Como testar: Guarde o rato na gaveta e tente usar o website inteiro apenas com o teclado. Se ficar preso em algum componente, é uma falha crítica.

Tempo suficiente (2.2)

  • Temporizadores ajustáveis (2.2.1): Se uma sessão expira, avise o utilizador e permita extensão
  • Pausar, parar (2.2.2): Conteúdo que se move automaticamente (carrosséis, animações) deve poder ser pausado

Convulsões (2.3)

  • Sem flashes (2.3.1): Nenhum conteúdo deve piscar mais de 3 vezes por segundo

Navegável (2.4)

  • Saltar blocos (2.4.1): Link "Saltar para o conteúdo principal" no topo
  • Títulos de página (2.4.2): </code> descritivo e único em cada página</li> <li><strong>Ordem de foco</strong> (2.4.3): A ordem de tabulação deve ser lógica</li> <li><strong>Objetivo dos links</strong> (2.4.4): Links com texto descritivo (evitar "clique aqui")</li> <li><strong>Múltiplas formas</strong> (2.4.5): Pelo menos 2 formas de encontrar cada página (menu + pesquisa, por exemplo)</li> <li><strong>Cabeçalhos descritivos</strong> (2.4.6): Headings que descrevem o conteúdo</li> <li><strong>Foco visível</strong> (2.4.7): Indicador de foco claro e visível (outline)</li> <p></ul></p> <h3>Modalidades de entrada (2.5 — novo em 2.1)</h3> <ul><li><strong>Gestos de apontador</strong> (2.5.1): Funcionalidades que usam gestos multitoque devem ter alternativa de toque simples</li> <li><strong>Cancelamento de apontador</strong> (2.5.2): Ações ativam no "up" e não no "down" do clique</li> <li><strong>Rótulo no nome</strong> (2.5.3): O nome acessível do componente inclui o texto visível</li> <li><strong>Ativação por movimento</strong> (2.5.4): Funcionalidades ativadas por movimento devem ter alternativa de interface</li> <p></ul></p> <h2>Compreensível: conteúdo claro</h2> <h3>Legível (3.1)</h3> <ul><li><strong>Idioma da página</strong> (3.1.1): <code><html lang="pt"></code> definido corretamente</li> <li><strong>Idioma de partes</strong> (3.1.2): Textos noutro idioma marcados com <code>lang</code> (<code><span lang="en">feedback</span></code>)</li> <p></ul></p> <h3>Previsível (3.2)</h3> <ul><li><strong>Sem mudanças de contexto ao focar</strong> (3.2.1): Focar um elemento não deve causar navegação ou popup</li> <li><strong>Sem mudanças ao inserir dados</strong> (3.2.2): Alterar um campo não submete o formulário automaticamente</li> <li><strong>Navegação consistente</strong> (3.2.3): Menu no mesmo local em todas as páginas</li> <li><strong>Identificação consistente</strong> (3.2.4): Mesma funcionalidade = mesmo nome em todo o site</li> <p></ul></p> <h3>Formulários e erros (3.3)</h3> <ul><li><strong>Identificação de erros</strong> (3.3.1): Erros identificados claramente em texto (não apenas a vermelho)</li> <li><strong>Rótulos e instruções</strong> (3.3.2): Cada campo tem label associado</li> <li><strong>Sugestão de correção</strong> (3.3.3): Sugerir como corrigir o erro</li> <li><strong>Prevenção de erros legais/financeiros</strong> (3.3.4): Permitir rever, confirmar e reverter submissões</li> <p></ul></p> <h2>Robusto: compatibilidade técnica</h2> <h3>Compatível (4.1)</h3> <ul><li><strong>Parsing</strong> (4.1.1): HTML válido, sem IDs duplicados</li> <li><strong>Nome, função, valor</strong> (4.1.2): Componentes personalizados com ARIA roles e propriedades corretos</li> <li><strong>Mensagens de estado</strong> (4.1.3 — novo em 2.1): Mensagens dinâmicas (sucesso, erro, progresso) anunciadas por tecnologias de apoio via <code>role="alert"</code> ou <code>aria-live</code></li> <p></ul></p> <h2>Ferramentas de teste recomendadas</h2> <h3>Ferramentas automáticas (gratuitas)</h3> <table><tbody><tr><td>Ferramenta</td><td>O que testa</td><td>Como usar</td></tr> <p></tbody></table></p> <table><tbody><tr><td>axe DevTools</td><td>~60 critérios WCAG</td><td>Extensão Chrome/Firefox</td></tr> <tr><td>Lighthouse</td><td>Acessibilidade + SEO + Performance</td><td>DevTools do Chrome</td></tr> <tr><td>WAVE</td><td>Visualização de problemas na página</td><td>wave.webaim.org</td></tr> <tr><td>Pa11y</td><td>Testes automáticos em CLI</td><td>npm install pa11y</td></tr> <p></tbody></table></p> <h3>Testes manuais (essenciais)</h3> <p>As ferramentas automáticas detetam apenas <strong>30-40%</strong> dos problemas de acessibilidade. Os testes manuais são indispensáveis:</p> <li><strong>Navegação por teclado</strong>: Use Tab, Enter, Espaço e setas</li> <li><strong>Leitor de ecrã</strong>: NVDA (Windows, gratuito) ou VoiceOver (macOS/iOS)</li> <li><strong>Zoom a 200%</strong>: Verifique se tudo permanece legível e funcional</li> <li><strong>Contraste</strong>: Use ferramentas como Colour Contrast Analyser</li> <h3>Auditoria profissional</h3> <p>Para uma avaliação completa e certificada, o <a href="/produto/eaapass">EAAPass</a> combina testes automáticos com análise especializada, gerando relatórios detalhados com priorização de correções e pontuação de conformidade.</p> <p>Para entender o enquadramento legal completo, consulte o nosso artigo sobre o <a href="/blog/european-accessibility-act-portugal-prazos">European Accessibility Act em Portugal</a>.</p> <hr /> <em>Precisa de saber se o seu website cumpre WCAG 2.1 AA? O <a href="/produto/eaapass">EAAPass</a> audita e monitoriza a acessibilidade continuamente, para que nunca fique em incumprimento.</em></div></div><div class="glass-card p-6 mt-12 flex items-center gap-4"><div class="w-12 h-12 rounded-xl bg-gradient-to-br from-violet-600 to-blue-500 flex items-center justify-center text-white font-extrabold text-lg">Z</div><div><div class="font-bold text-slate-800">Equipa Zavo</div><div class="text-xs text-slate-400">Software para empresas portuguesas, Alcanede, Portugal</div></div></div><div class="mt-16"><h3 class="font-bold text-lg text-slate-800 mb-6">Produtos relacionados</h3><div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4"><a class="group block" href="https://eaapass.eu"><div class="glass-card p-5 transition-all duration-300 group-hover:-translate-y-1 group-hover:shadow-lg"><div class="flex items-center gap-3 mb-2"><div class="w-8 h-8 rounded-lg flex items-center justify-center text-white font-bold text-xs" style="background:#8B5CF6">EA</div><span class="font-bold text-sm text-slate-800 group-hover:text-blue-600 transition-colors">EAAPass</span><span class="ml-auto text-[9px] font-bold tracking-wider px-2 py-0.5 rounded-full" style="background:rgba(236,253,245,0.9);color:#059669">LIVE</span></div><p class="text-xs text-slate-400 line-clamp-2">Auditoria e certificação de acessibilidade web conforme European Accessibility Act, análise WCAG 2.1 AA automática com relatórios detalhados</p></div></a><a class="group block" href="https://benchspy.com"><div class="glass-card p-5 transition-all duration-300 group-hover:-translate-y-1 group-hover:shadow-lg"><div class="flex items-center gap-3 mb-2"><div class="w-8 h-8 rounded-lg flex items-center justify-center text-white font-bold text-xs" style="background:#EC4899">BS</div><span class="font-bold text-sm text-slate-800 group-hover:text-blue-600 transition-colors">BenchSpy</span><span class="ml-auto text-[9px] font-bold tracking-wider px-2 py-0.5 rounded-full" style="background:rgba(236,253,245,0.9);color:#059669">LIVE</span></div><p class="text-xs text-slate-400 line-clamp-2">Análise SEO e monitorização de concorrência com inteligência artificial, relatórios de performance, Core Web Vitals e detecção de tecnologias</p></div></a></div></div><div class="mt-12"><h3 class="font-bold text-lg text-slate-800 mb-6">Artigos relacionados</h3><div class="grid grid-cols-1 sm:grid-cols-3 gap-4"><a class="group block" href="/blog/european-accessibility-act-portugal"><div class="glass-card p-5 transition-all duration-300 group-hover:-translate-y-1 group-hover:shadow-lg"><span class="text-[10px] font-bold tracking-wider text-blue-500">Acessibilidade</span><h4 class="font-bold text-sm text-slate-800 mt-1 group-hover:text-blue-600 transition-colors line-clamp-2">European Accessibility Act em Portugal: O Que a Sua Empresa Precisa de Saber</h4><p class="text-xs text-slate-400 mt-2 line-clamp-2">Guia prático sobre o European Accessibility Act (EAA) e o seu impacto nas empresas portuguesas. Prazos, requisitos, penalizações e como garantir conformidade do seu website.</p></div></a><a class="group block" href="/blog/acessibilidade-web-portugal-legislacao"><div class="glass-card p-5 transition-all duration-300 group-hover:-translate-y-1 group-hover:shadow-lg"><span class="text-[10px] font-bold tracking-wider text-blue-500">Acessibilidade</span><h4 class="font-bold text-sm text-slate-800 mt-1 group-hover:text-blue-600 transition-colors line-clamp-2">Acessibilidade Web em Portugal: Legislação, Boas Práticas e Como Cumprir a Lei</h4><p class="text-xs text-slate-400 mt-2 line-clamp-2">Guia completo sobre acessibilidade web em Portugal. Legislação em vigor, WCAG 2.1, European Accessibility Act, ferramentas de auditoria e passos para conformidade.</p></div></a><a class="group block" href="/blog/wcag-21-guia-pratico-developers"><div class="glass-card p-5 transition-all duration-300 group-hover:-translate-y-1 group-hover:shadow-lg"><span class="text-[10px] font-bold tracking-wider text-blue-500">Acessibilidade Web</span><h4 class="font-bold text-sm text-slate-800 mt-1 group-hover:text-blue-600 transition-colors line-clamp-2">WCAG 2.1: Guia Prático para Developers e Designers Web</h4><p class="text-xs text-slate-400 mt-2 line-clamp-2">Guia prático das WCAG 2.1 para developers. Critérios de sucesso, exemplos de código, ferramentas de teste e como atingir conformidade AA.</p></div></a></div></div><div class="mt-12 glass-card p-8 text-center"><h3 class="font-extrabold text-xl text-slate-900 mb-2">Precisa de ajuda com o seu projecto?</h3><p class="text-sm text-slate-500 mb-6">Fale connosco, respondemos em 24 horas, sem compromisso.</p><a class="inline-flex items-center gap-2 px-6 py-3 rounded-full bg-slate-900 text-white font-semibold text-sm hover:bg-slate-800 transition-all" href="/contacto">Falar com a equipa →</a></div></article></main><!--$--><!--/$--><script src="/_next/static/chunks/00mr23-ge1395.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n11:I[68027,[\"/_next/static/chunks/3y5-2stw0xn1n.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/0p22p1j7xdz62.css\",\"style\"]\n:HL[\"/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n2:T17ed,"])</script><script>self.__next_f.push([1,"{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://zavo.pt/#organization\",\"name\":\"Zavo\",\"legalName\":\"Tecnologias Online Lda\",\"url\":\"https://zavo.pt\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://zavo.pt/og-image.png\"},\"foundingDate\":\"2017\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"value\":5},\"founder\":{\"@type\":\"Person\",\"@id\":\"https://zavo.pt/#founder\",\"name\":\"Equipa Zavo\",\"jobTitle\":\"Fundador\",\"worksFor\":{\"@id\":\"https://zavo.pt/#organization\"}},\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"Alcanede\",\"addressLocality\":\"Alcanede\",\"addressRegion\":\"Santarém\",\"postalCode\":\"2025\",\"addressCountry\":\"PT\"},\"sameAs\":[\"https://www.linkedin.com/company/zavo-pt\",\"https://github.com/zavo-pt\"],\"knowsAbout\":[\"Software Development\",\"SaaS\",\"Web Applications\",\"Attendance Management\",\"Web Accessibility\",\"Restaurant Management\",\"Business Automation\",\"API Integration\",\"Appointment Scheduling\"],\"areaServed\":{\"@type\":\"Country\",\"name\":\"Portugal\"}},{\"@type\":\"WebSite\",\"@id\":\"https://zavo.pt/#website\",\"url\":\"https://zavo.pt\",\"name\":\"Zavo\",\"description\":\"Ecossistema de software para empresas portuguesas\",\"publisher\":{\"@id\":\"https://zavo.pt/#organization\"},\"inLanguage\":\"pt-PT\"},{\"@type\":\"WebPage\",\"@id\":\"https://zavo.pt/#webpage\",\"url\":\"https://zavo.pt\",\"name\":\"Zavo, Software para Empresas Portuguesas\",\"isPartOf\":{\"@id\":\"https://zavo.pt/#website\"},\"about\":{\"@id\":\"https://zavo.pt/#organization\"},\"description\":\"Suite completa de produtos digitais para empresas: assiduidade, restauração com HACCP, arrendamento, imobiliário, contabilidade, orçamentos, agendamento, marketing e acessibilidade.\",\"inLanguage\":\"pt-PT\"},{\"@type\":\"SoftwareApplication\",\"name\":\"Ponto\",\"applicationCategory\":\"BusinessApplication\",\"operatingSystem\":\"Web\",\"description\":\"Gestão de assiduidade e controlo de ponto inteligente com QR Code e geolocalização.\",\"url\":\"https://zavo.pt/produto/ponto\",\"author\":{\"@id\":\"https://zavo.pt/#organization\"},\"offers\":{\"@type\":\"Offer\",\"price\":\"0\",\"priceCurrency\":\"EUR\",\"availability\":\"https://schema.org/InStock\"}},{\"@type\":\"SoftwareApplication\",\"name\":\"EAAPass\",\"applicationCategory\":\"BusinessApplication\",\"operatingSystem\":\"Web\",\"description\":\"Certificação e auditoria de acessibilidade web conforme o European Accessibility Act.\",\"url\":\"https://zavo.pt/produto/eaapass\",\"author\":{\"@id\":\"https://zavo.pt/#organization\"},\"offers\":{\"@type\":\"Offer\",\"price\":\"0\",\"priceCurrency\":\"EUR\",\"availability\":\"https://schema.org/InStock\"}},{\"@type\":\"SoftwareApplication\",\"name\":\"Rendi\",\"applicationCategory\":\"BusinessApplication\",\"operatingSystem\":\"Web\",\"description\":\"Recibos de renda automáticos via Portal das Finanças para senhorios.\",\"url\":\"https://zavo.pt/produto/rendi\",\"author\":{\"@id\":\"https://zavo.pt/#organization\"}},{\"@type\":\"SoftwareApplication\",\"name\":\"Canais\",\"applicationCategory\":\"BusinessApplication\",\"operatingSystem\":\"Web\",\"description\":\"Channel manager para alojamento com sincronização Booking, Airbnb, Expedia.\",\"url\":\"https://hostels.zavo.pt\",\"author\":{\"@id\":\"https://zavo.pt/#organization\"}},{\"@type\":\"SoftwareApplication\",\"name\":\"Turni\",\"applicationCategory\":\"BusinessApplication\",\"operatingSystem\":\"Web\",\"description\":\"Plataforma universal de agendamento online para negócios.\",\"url\":\"https://zavo.pt/produto/turni\",\"author\":{\"@id\":\"https://zavo.pt/#organization\"}},{\"@type\":\"SoftwareApplication\",\"name\":\"BenchSpy\",\"applicationCategory\":\"BusinessApplication\",\"operatingSystem\":\"Web\",\"description\":\"Análise SEO e monitorização de performance de concorrência.\",\"url\":\"https://zavo.pt/produto/benchspy\",\"author\":{\"@id\":\"https://zavo.pt/#organization\"}},{\"@type\":\"SoftwareApplication\",\"name\":\"Conta\",\"applicationCategory\":\"BusinessApplication\",\"operatingSystem\":\"Web\",\"description\":\"CRM de automações para contabilistas com gestão de múltiplos senhorios e emissão de recibos via AT.\",\"url\":\"https://conta.zavo.pt\",\"author\":{\"@id\":\"https://zavo.pt/#organization\"}},{\"@type\":\"SoftwareApplication\",\"name\":\"Cota\",\"applicationCategory\":\"BusinessApplication\",\"operatingSystem\":\"Web\",\"description\":\"Orçamentos e propostas profissionais com assinatura digital e tracking.\",\"url\":\"https://cota.zavo.pt\",\"author\":{\"@id\":\"https://zavo.pt/#organization\"}},{\"@type\":\"SoftwareApplication\",\"name\":\"Mesas\",\"applicationCategory\":\"BusinessApplication\",\"operatingSystem\":\"Web\",\"description\":\"Gestão de restaurantes com HACCP digital, pedidos, mesas, inventário e fidelização.\",\"url\":\"https://mesas.zavo.pt\",\"author\":{\"@id\":\"https://zavo.pt/#organization\"}},{\"@type\":\"SoftwareApplication\",\"name\":\"Stand\",\"applicationCategory\":\"BusinessApplication\",\"operatingSystem\":\"Web\",\"description\":\"Gestão de stands automóveis com inventário, portais, microsite e CRM.\",\"url\":\"https://stand.zavo.pt\",\"author\":{\"@id\":\"https://zavo.pt/#organization\"}},{\"@type\":\"SoftwareApplication\",\"name\":\"Imobi\",\"applicationCategory\":\"BusinessApplication\",\"operatingSystem\":\"Web\",\"description\":\"Plataforma de gestão imobiliária para agências portuguesas com CRM e 109 portais.\",\"url\":\"https://imobi.zavo.pt\",\"author\":{\"@id\":\"https://zavo.pt/#organization\"}},{\"@type\":\"SoftwareApplication\",\"name\":\"Try\",\"applicationCategory\":\"BusinessApplication\",\"operatingSystem\":\"Web\",\"description\":\"Automação de marketing com IA: artigos SEO, redes sociais e anúncios no piloto automático.\",\"url\":\"https://try.zavo.pt\",\"author\":{\"@id\":\"https://zavo.pt/#organization\"}},{\"@type\":\"LocalBusiness\",\"@id\":\"https://zavo.pt/#localbusiness\",\"name\":\"Zavo, Tecnologias Online\",\"image\":\"https://zavo.pt/og-image.png\",\"url\":\"https://zavo.pt\",\"email\":\"geral@zavo.pt\",\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"Alcanede\",\"addressLocality\":\"Santarém\",\"addressRegion\":\"Santarém\",\"postalCode\":\"2025\",\"addressCountry\":\"PT\"},\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":39.4167,\"longitude\":-8.8167},\"priceRange\":\"€€\",\"openingHoursSpecification\":{\"@type\":\"OpeningHoursSpecification\",\"dayOfWeek\":[\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\"],\"opens\":\"09:00\",\"closes\":\"18:00\"}},{\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://zavo.pt\"}]}]}"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"blog\",\"wcag-21-aa-checklist-portugal\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"blog\",{\"children\":[[\"slug\",\"wcag-21-aa-checklist-portugal\",\"d\",null],{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0p22p1j7xdz62.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/3y5-2stw0xn1n.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/14mrh2-p_w84d.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"pt\",\"className\":\"inter_f2d81e59-module__dt-NXW__variable jetbrains_mono_6b6efe24-module__MYAPcG__variable\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$2\"}}],\"$L3\",\"$L4\",\"$L5\",\"$L6\",\"$L7\",\"$L8\",\"$L9\",\"$La\"]}],\"$Lb\"]}]]}],{\"children\":[\"$Lc\",{\"children\":[\"$Ld\",{\"children\":[\"$Le\",{},null,false,null]},null,false,\"$@f\"]},null,false,\"$@f\"]},null,false,null],\"$L10\",false]],\"m\":\"$undefined\",\"G\":[\"$11\",[\"$L12\"]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"isbESlKa4-nH3NJ_onGPu\"}\n"])</script><script>self.__next_f.push([1,"13:I[2874,[\"/_next/static/chunks/3y5-2stw0xn1n.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\"],\"default\"]\n14:I[39756,[\"/_next/static/chunks/3y5-2stw0xn1n.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\"],\"default\"]\n15:I[37457,[\"/_next/static/chunks/3y5-2stw0xn1n.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\"],\"default\"]\n17:I[97367,[\"/_next/static/chunks/3y5-2stw0xn1n.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\"],\"OutletBoundary\"]\n18:\"$Sreact.suspense\"\n1b:I[97367,[\"/_next/static/chunks/3y5-2stw0xn1n.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\"],\"ViewportBoundary\"]\n1d:I[97367,[\"/_next/static/chunks/3y5-2stw0xn1n.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\"],\"MetadataBoundary\"]\n3:[\"$\",\"link\",null,{\"rel\":\"icon\",\"href\":\"/favicon.svg\",\"type\":\"image/svg+xml\"}]\n4:[\"$\",\"link\",null,{\"rel\":\"icon\",\"href\":\"/favicon.ico\",\"sizes\":\"any\"}]\n5:[\"$\",\"link\",null,{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-touch-icon.png\"}]\n6:[\"$\",\"meta\",null,{\"name\":\"theme-color\",\"content\":\"#FAFBFF\"}]\n7:[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.googleapis.com\"}]\n8:[\"$\",\"link\",null,{\"rel\":\"preconnect\",\"href\":\"https://fonts.gstatic.com\",\"crossOrigin\":\"anonymous\"}]\n9:[\"$\",\"link\",null,{\"rel\":\"alternate\",\"type\":\"text/plain\",\"href\":\"https://zavo.pt/llms.txt\",\"title\":\"LLM context\"}]\na:[\"$\",\"link\",null,{\"rel\":\"alternate\",\"type\":\"text/plain\",\"href\":\"https://zavo.pt/llms-full.txt\",\"title\":\"LLM full context\"}]\n"])</script><script>self.__next_f.push([1,"b:[\"$\",\"body\",null,{\"className\":\"bg-[#FAFBFF] text-slate-900 font-body antialiased\",\"children\":[[\"$\",\"$L13\",null,{}],[\"$\",\"$L14\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L15\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\n"])</script><script>self.__next_f.push([1,"c:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L14\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L15\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\nd:[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L14\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L15\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]\ne:[\"$\",\"$1\",\"c\",{\"children\":[\"$L16\",null,[\"$\",\"$L17\",null,{\"children\":[\"$\",\"$18\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@19\"}]}]]}]\n1a:[]\nf:\"$W1a\"\n10:[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L1b\",null,{\"children\":\"$L1c\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L1d\",null,{\"children\":[\"$\",\"$18\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L1e\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}]\n12:[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/0p22p1j7xdz62.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]\n"])</script><script>self.__next_f.push([1,"1f:I[22016,[\"/_next/static/chunks/3y5-2stw0xn1n.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\"],\"\"]\n20:I[5014,[\"/_next/static/chunks/3y5-2stw0xn1n.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"16:[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"BlogPosting\\\",\\\"headline\\\":\\\"WCAG 2.1 AA Checklist: Requisitos de Acessibilidade Web\\\",\\\"description\\\":\\\"Checklist completa dos requisitos WCAG 2.1 nível AA para websites portugueses. Critérios de sucesso, como testar, ferramentas e exemplos práticos.\\\",\\\"datePublished\\\":\\\"2026-02-25\\\",\\\"dateModified\\\":\\\"2026-02-25\\\",\\\"author\\\":{\\\"@type\\\":\\\"Person\\\",\\\"name\\\":\\\"Equipa Zavo\\\",\\\"url\\\":\\\"https://zavo.pt/sobre\\\",\\\"jobTitle\\\":\\\"Equipa de Desenvolvimento\\\",\\\"worksFor\\\":{\\\"@type\\\":\\\"Organization\\\",\\\"name\\\":\\\"Zavo\\\",\\\"url\\\":\\\"https://zavo.pt\\\"}},\\\"publisher\\\":{\\\"@type\\\":\\\"Organization\\\",\\\"name\\\":\\\"Zavo\\\",\\\"url\\\":\\\"https://zavo.pt\\\",\\\"logo\\\":{\\\"@type\\\":\\\"ImageObject\\\",\\\"url\\\":\\\"https://zavo.pt/og-image.png\\\"}},\\\"mainEntityOfPage\\\":\\\"https://zavo.pt/blog/wcag-21-aa-checklist-portugal\\\",\\\"keywords\\\":\\\"wcag 2.1 aa, checklist acessibilidade, requisitos wcag, acessibilidade web portugal, critérios sucesso wcag, testar acessibilidade\\\",\\\"inLanguage\\\":\\\"pt-PT\\\",\\\"articleSection\\\":\\\"Acessibilidade\\\",\\\"image\\\":\\\"https://zavo.pt/og-image.png\\\"}\"}}],[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"{\\\"@context\\\":\\\"https://schema.org\\\",\\\"@type\\\":\\\"BreadcrumbList\\\",\\\"itemListElement\\\":[{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":1,\\\"name\\\":\\\"Home\\\",\\\"item\\\":\\\"https://zavo.pt\\\"},{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":2,\\\"name\\\":\\\"Blog\\\",\\\"item\\\":\\\"https://zavo.pt/blog\\\"},{\\\"@type\\\":\\\"ListItem\\\",\\\"position\\\":3,\\\"name\\\":\\\"WCAG 2.1 AA Checklist: Requisitos de Acessibilidade Web\\\",\\\"item\\\":\\\"https://zavo.pt/blog/wcag-21-aa-checklist-portugal\\\"}]}\"}}],null,[\"$\",\"main\",null,{\"className\":\"min-h-screen pt-28 pb-24 relative\",\"children\":[[\"$\",\"div\",null,{\"className\":\"fixed inset-0 z-0 bg-[#FAFBFF]\",\"children\":[\"$\",\"div\",null,{\"className\":\"fixed-aurora\"}]}],[\"$\",\"article\",null,{\"className\":\"relative z-10 mx-auto max-w-3xl px-6\",\"children\":[[\"$\",\"$L1f\",null,{\"href\":\"/blog\",\"className\":\"inline-flex items-center gap-2 text-slate-400 hover:text-slate-700 transition text-sm mb-10\",\"children\":[[\"$\",\"$L20\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"path\",{\"d\":\"m12 19-7-7 7-7\",\"key\":\"1l729n\"}],[\"path\",{\"d\":\"M19 12H5\",\"key\":\"x3x0zl\"}]],\"className\":\"lucide-arrow-left w-4 h-4\"}],\" Blog\"]}],[\"$\",\"header\",null,{\"className\":\"mb-10\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-3 mb-4\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-[10px] font-bold tracking-wider px-2.5 py-1 rounded-full bg-blue-50 text-blue-600 border border-blue-200\",\"children\":\"Acessibilidade\"}],[\"$\",\"span\",null,{\"className\":\"text-[11px] text-slate-400\",\"children\":[\"10 min\",\" leitura\"]}],[\"$\",\"span\",null,{\"className\":\"text-[11px] text-slate-400\",\"children\":\"25 de fevereiro de 2026\"}]]}],[\"$\",\"h1\",null,{\"className\":\"font-extrabold text-3xl md:text-4xl tracking-tight text-slate-900 leading-tight mb-4\",\"children\":\"WCAG 2.1 AA Checklist: Requisitos de Acessibilidade Web\"}],[\"$\",\"p\",null,{\"className\":\"text-lg text-slate-500 leading-relaxed\",\"children\":\"Checklist completa dos requisitos WCAG 2.1 nível AA para websites portugueses. Critérios de sucesso, como testar, ferramentas e exemplos práticos.\"}]]}],[\"$\",\"div\",null,{\"className\":\"prose prose-slate prose-lg max-w-none prose-headings:font-extrabold prose-headings:tracking-tight prose-h2:text-2xl prose-h2:mt-10 prose-h2:mb-4 prose-h3:text-xl prose-h3:mt-8 prose-h3:mb-3 prose-h4:text-lg prose-h4:mt-6 prose-h4:mb-2 prose-p:text-slate-600 prose-p:leading-relaxed prose-li:text-slate-600 prose-strong:text-slate-800 prose-a:text-blue-600 prose-a:no-underline hover:prose-a:underline prose-code:text-violet-600 prose-code:bg-violet-50 prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded prose-blockquote:border-blue-300 prose-blockquote:text-slate-500 prose-table:text-sm prose-th:bg-slate-50 prose-th:p-3 prose-td:p-3 prose-td:border-slate-200\",\"children\":\"$L21\"}],\"$L22\",\"$L23\",\"$L24\",\"$L25\"]}]]}]]\n"])</script><script>self.__next_f.push([1,"26:T2611,"])</script><script>self.__next_f.push([1,"\u003ch2\u003eWCAG 2.1 AA: o padrão de referência em Portugal\u003c/h2\u003e\n\n\u003cp\u003eAs Web Content Accessibility Guidelines (WCAG) 2.1, publicadas pelo W3C, são o padrão internacional de acessibilidade web. O nível AA é o exigido pela legislação europeia (EAA/EN 301 549) e, consequentemente, pela legislação portuguesa.\u003c/p\u003e\n\n\u003cp\u003eCumprir WCAG 2.1 AA significa garantir que o seu website é utilizável por pessoas com deficiência visual, auditiva, motora e cognitiva. Esta checklist organiza os critérios mais relevantes por área, com exemplos práticos e dicas de teste.\u003c/p\u003e\n\n\u003ch2\u003ePercetível: conteúdo que todos conseguem ver e ouvir\u003c/h2\u003e\n\n\u003ch3\u003eTexto alternativo (1.1.1)\u003c/h3\u003e\n\n\u003cp\u003eToda a informação não textual deve ter uma alternativa em texto:\u003c/p\u003e\n\n\u003cul\u003e\u003cli\u003e\u003cstrong\u003eImagens informativas\u003c/strong\u003e: alt descritivo (\"Gráfico de vendas mostrando crescimento de 25% no 2.º trimestre\")\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eImagens decorativas\u003c/strong\u003e: alt vazio (alt=\"\") para que leitores de ecrã as ignorem\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBotões com ícone\u003c/strong\u003e: alt que descreve a ação (\"Pesquisar\", \"Fechar menu\")\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eImagens complexas\u003c/strong\u003e (gráficos, infográficos): descrição longa associada\u003c/li\u003e\n\u003cp\u003e\u003c/ul\u003e\u003c/p\u003e\n\u003cstrong\u003eComo testar\u003c/strong\u003e: Desative imagens no browser e verifique se a informação continua acessível. Use o axe DevTools para detetar alts em falta.\n\n\u003ch3\u003eConteúdo multimédia (1.2)\u003c/h3\u003e\n\n\u003cul\u003e\u003cli\u003e\u003cstrong\u003eVídeos pré-gravados\u003c/strong\u003e: legendas sincronizadas obrigatórias (1.2.2)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eVídeos em direto\u003c/strong\u003e: legendas em tempo real (1.2.4) — pode ser complexo mas é obrigatório em AA\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eÁudio pré-gravado\u003c/strong\u003e: transcrição em texto (1.2.1)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAudiodescrição\u003c/strong\u003e: para vídeos onde a informação visual é essencial (1.2.5)\u003c/li\u003e\n\u003cp\u003e\u003c/ul\u003e\u003c/p\u003e\n\u003cstrong\u003eDica prática\u003c/strong\u003e: Utilize serviços de legendagem automática (YouTube, por exemplo) como ponto de partida, mas revise sempre o resultado.\n\n\u003ch3\u003eAdaptável (1.3)\u003c/h3\u003e\n\n\u003cp\u003eO conteúdo deve poder ser apresentado de diferentes formas sem perder informação:\u003c/p\u003e\n\n\u003cul\u003e\u003cli\u003e\u003cstrong\u003eEstrutura semântica\u003c/strong\u003e: Use \u003ccode\u003e\u003ch1\u003e\u003c/code\u003e a \u003ccode\u003e\u003ch6\u003e\u003c/code\u003e na hierarquia correta, \u003ccode\u003e\u003cnav\u003e\u003c/code\u003e, \u003ccode\u003e\u003cmain\u003e\u003c/code\u003e, \u003ccode\u003e\u003cfooter\u003e\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eOrdem de leitura lógica\u003c/strong\u003e: A ordem do DOM deve fazer sentido quando linearizada\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNão depender apenas de características sensoriais\u003c/strong\u003e: \"Clique no botão verde\" é inacessível; \"Clique em Submeter\" é acessível\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eOrientação\u003c/strong\u003e (1.3.4 — novo em 2.1): O conteúdo não deve estar restrito a uma orientação (retrato/paisagem)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAutocompletar\u003c/strong\u003e (1.3.5 — novo em 2.1): Campos de formulário devem usar o atributo \u003ccode\u003eautocomplete\u003c/code\u003e correto\u003c/li\u003e\n\u003cp\u003e\u003c/ul\u003e\u003c/p\u003e\n\u003ch3\u003eDistinguível (1.4)\u003c/h3\u003e\n\n\u003cul\u003e\u003cli\u003e\u003cstrong\u003eContraste de texto\u003c/strong\u003e (1.4.3): Mínimo 4.5:1 para texto normal, 3:1 para texto grande (\u003e18pt ou \u003e14pt bold)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRedimensionar texto\u003c/strong\u003e (1.4.4): Conteúdo legível e funcional com zoom de 200%\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eImagens de texto\u003c/strong\u003e (1.4.5): Evitar texto em imagens; usar texto real com CSS\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRefluxo\u003c/strong\u003e (1.4.10 — novo em 2.1): Sem scroll horizontal a 320px de largura (responsivo)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eContraste não-textual\u003c/strong\u003e (1.4.11 — novo em 2.1): Mínimo 3:1 para componentes de interface e gráficos\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEspaçamento de texto\u003c/strong\u003e (1.4.12 — novo em 2.1): Conteúdo funcional quando o utilizador ajusta espaçamento\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eConteúdo ao passar/focar\u003c/strong\u003e (1.4.13 — novo em 2.1): Tooltips e popovers devem ser dispensáveis, hoverable e persistentes\u003c/li\u003e\n\u003cp\u003e\u003c/ul\u003e\u003c/p\u003e\n\u003ch2\u003eOperável: navegação para todos\u003c/h2\u003e\n\n\u003ch3\u003eTeclado (2.1)\u003c/h3\u003e\n\n\u003cul\u003e\u003cli\u003e\u003cstrong\u003eToda a funcionalidade via teclado\u003c/strong\u003e (2.1.1): Tab, Enter, Espaço, setas\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSem armadilhas de teclado\u003c/strong\u003e (2.1.2): O utilizador pode sempre sair de qualquer componente\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAtalhos de teclado\u003c/strong\u003e (2.1.4 — novo em 2.1): Se existirem atalhos de uma tecla, devem poder ser desativados\u003c/li\u003e\n\u003cp\u003e\u003c/ul\u003e\u003c/p\u003e\n\u003cstrong\u003eComo testar\u003c/strong\u003e: Guarde o rato na gaveta e tente usar o website inteiro apenas com o teclado. Se ficar preso em algum componente, é uma falha crítica.\n\n\u003ch3\u003eTempo suficiente (2.2)\u003c/h3\u003e\n\n\u003cul\u003e\u003cli\u003e\u003cstrong\u003eTemporizadores ajustáveis\u003c/strong\u003e (2.2.1): Se uma sessão expira, avise o utilizador e permita extensão\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePausar, parar\u003c/strong\u003e (2.2.2): Conteúdo que se move automaticamente (carrosséis, animações) deve poder ser pausado\u003c/li\u003e\n\u003cp\u003e\u003c/ul\u003e\u003c/p\u003e\n\u003ch3\u003eConvulsões (2.3)\u003c/h3\u003e\n\n\u003cul\u003e\u003cli\u003e\u003cstrong\u003eSem flashes\u003c/strong\u003e (2.3.1): Nenhum conteúdo deve piscar mais de 3 vezes por segundo\u003c/li\u003e\n\u003cp\u003e\u003c/ul\u003e\u003c/p\u003e\n\u003ch3\u003eNavegável (2.4)\u003c/h3\u003e\n\n\u003cul\u003e\u003cli\u003e\u003cstrong\u003eSaltar blocos\u003c/strong\u003e (2.4.1): Link \"Saltar para o conteúdo principal\" no topo\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTítulos de página\u003c/strong\u003e (2.4.2): \u003ccode\u003e\u003ctitle\u003e\u003c/code\u003e descritivo e único em cada página\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eOrdem de foco\u003c/strong\u003e (2.4.3): A ordem de tabulação deve ser lógica\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eObjetivo dos links\u003c/strong\u003e (2.4.4): Links com texto descritivo (evitar \"clique aqui\")\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eMúltiplas formas\u003c/strong\u003e (2.4.5): Pelo menos 2 formas de encontrar cada página (menu + pesquisa, por exemplo)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCabeçalhos descritivos\u003c/strong\u003e (2.4.6): Headings que descrevem o conteúdo\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFoco visível\u003c/strong\u003e (2.4.7): Indicador de foco claro e visível (outline)\u003c/li\u003e\n\u003cp\u003e\u003c/ul\u003e\u003c/p\u003e\n\u003ch3\u003eModalidades de entrada (2.5 — novo em 2.1)\u003c/h3\u003e\n\n\u003cul\u003e\u003cli\u003e\u003cstrong\u003eGestos de apontador\u003c/strong\u003e (2.5.1): Funcionalidades que usam gestos multitoque devem ter alternativa de toque simples\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCancelamento de apontador\u003c/strong\u003e (2.5.2): Ações ativam no \"up\" e não no \"down\" do clique\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRótulo no nome\u003c/strong\u003e (2.5.3): O nome acessível do componente inclui o texto visível\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAtivação por movimento\u003c/strong\u003e (2.5.4): Funcionalidades ativadas por movimento devem ter alternativa de interface\u003c/li\u003e\n\u003cp\u003e\u003c/ul\u003e\u003c/p\u003e\n\u003ch2\u003eCompreensível: conteúdo claro\u003c/h2\u003e\n\n\u003ch3\u003eLegível (3.1)\u003c/h3\u003e\n\n\u003cul\u003e\u003cli\u003e\u003cstrong\u003eIdioma da página\u003c/strong\u003e (3.1.1): \u003ccode\u003e\u003chtml lang=\"pt\"\u003e\u003c/code\u003e definido corretamente\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIdioma de partes\u003c/strong\u003e (3.1.2): Textos noutro idioma marcados com \u003ccode\u003elang\u003c/code\u003e (\u003ccode\u003e\u003cspan lang=\"en\"\u003efeedback\u003c/span\u003e\u003c/code\u003e)\u003c/li\u003e\n\u003cp\u003e\u003c/ul\u003e\u003c/p\u003e\n\u003ch3\u003ePrevisível (3.2)\u003c/h3\u003e\n\n\u003cul\u003e\u003cli\u003e\u003cstrong\u003eSem mudanças de contexto ao focar\u003c/strong\u003e (3.2.1): Focar um elemento não deve causar navegação ou popup\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSem mudanças ao inserir dados\u003c/strong\u003e (3.2.2): Alterar um campo não submete o formulário automaticamente\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNavegação consistente\u003c/strong\u003e (3.2.3): Menu no mesmo local em todas as páginas\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIdentificação consistente\u003c/strong\u003e (3.2.4): Mesma funcionalidade = mesmo nome em todo o site\u003c/li\u003e\n\u003cp\u003e\u003c/ul\u003e\u003c/p\u003e\n\u003ch3\u003eFormulários e erros (3.3)\u003c/h3\u003e\n\n\u003cul\u003e\u003cli\u003e\u003cstrong\u003eIdentificação de erros\u003c/strong\u003e (3.3.1): Erros identificados claramente em texto (não apenas a vermelho)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRótulos e instruções\u003c/strong\u003e (3.3.2): Cada campo tem label associado\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSugestão de correção\u003c/strong\u003e (3.3.3): Sugerir como corrigir o erro\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePrevenção de erros legais/financeiros\u003c/strong\u003e (3.3.4): Permitir rever, confirmar e reverter submissões\u003c/li\u003e\n\u003cp\u003e\u003c/ul\u003e\u003c/p\u003e\n\u003ch2\u003eRobusto: compatibilidade técnica\u003c/h2\u003e\n\n\u003ch3\u003eCompatível (4.1)\u003c/h3\u003e\n\n\u003cul\u003e\u003cli\u003e\u003cstrong\u003eParsing\u003c/strong\u003e (4.1.1): HTML válido, sem IDs duplicados\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNome, função, valor\u003c/strong\u003e (4.1.2): Componentes personalizados com ARIA roles e propriedades corretos\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eMensagens de estado\u003c/strong\u003e (4.1.3 — novo em 2.1): Mensagens dinâmicas (sucesso, erro, progresso) anunciadas por tecnologias de apoio via \u003ccode\u003erole=\"alert\"\u003c/code\u003e ou \u003ccode\u003earia-live\u003c/code\u003e\u003c/li\u003e\n\u003cp\u003e\u003c/ul\u003e\u003c/p\u003e\n\u003ch2\u003eFerramentas de teste recomendadas\u003c/h2\u003e\n\n\u003ch3\u003eFerramentas automáticas (gratuitas)\u003c/h3\u003e\n\n\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003eFerramenta\u003c/td\u003e\u003ctd\u003eO que testa\u003c/td\u003e\u003ctd\u003eComo usar\u003c/td\u003e\u003c/tr\u003e\n\u003cp\u003e\u003c/tbody\u003e\u003c/table\u003e\u003c/p\u003e\n\u003ctable\u003e\u003ctbody\u003e\u003ctr\u003e\u003ctd\u003eaxe DevTools\u003c/td\u003e\u003ctd\u003e~60 critérios WCAG\u003c/td\u003e\u003ctd\u003eExtensão Chrome/Firefox\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eLighthouse\u003c/td\u003e\u003ctd\u003eAcessibilidade + SEO + Performance\u003c/td\u003e\u003ctd\u003eDevTools do Chrome\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003eWAVE\u003c/td\u003e\u003ctd\u003eVisualização de problemas na página\u003c/td\u003e\u003ctd\u003ewave.webaim.org\u003c/td\u003e\u003c/tr\u003e\n\u003ctr\u003e\u003ctd\u003ePa11y\u003c/td\u003e\u003ctd\u003eTestes automáticos em CLI\u003c/td\u003e\u003ctd\u003enpm install pa11y\u003c/td\u003e\u003c/tr\u003e\n\u003cp\u003e\u003c/tbody\u003e\u003c/table\u003e\u003c/p\u003e\n\u003ch3\u003eTestes manuais (essenciais)\u003c/h3\u003e\n\n\u003cp\u003eAs ferramentas automáticas detetam apenas \u003cstrong\u003e30-40%\u003c/strong\u003e dos problemas de acessibilidade. Os testes manuais são indispensáveis:\u003c/p\u003e\n\n\u003cli\u003e\u003cstrong\u003eNavegação por teclado\u003c/strong\u003e: Use Tab, Enter, Espaço e setas\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eLeitor de ecrã\u003c/strong\u003e: NVDA (Windows, gratuito) ou VoiceOver (macOS/iOS)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eZoom a 200%\u003c/strong\u003e: Verifique se tudo permanece legível e funcional\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eContraste\u003c/strong\u003e: Use ferramentas como Colour Contrast Analyser\u003c/li\u003e\n\n\u003ch3\u003eAuditoria profissional\u003c/h3\u003e\n\n\u003cp\u003ePara uma avaliação completa e certificada, o \u003ca href=\"/produto/eaapass\"\u003eEAAPass\u003c/a\u003e combina testes automáticos com análise especializada, gerando relatórios detalhados com priorização de correções e pontuação de conformidade.\u003c/p\u003e\n\n\u003cp\u003ePara entender o enquadramento legal completo, consulte o nosso artigo sobre o \u003ca href=\"/blog/european-accessibility-act-portugal-prazos\"\u003eEuropean Accessibility Act em Portugal\u003c/a\u003e.\u003c/p\u003e\n\n\u003chr /\u003e\n\n\u003cem\u003ePrecisa de saber se o seu website cumpre WCAG 2.1 AA? O \u003ca href=\"/produto/eaapass\"\u003eEAAPass\u003c/a\u003e audita e monitoriza a acessibilidade continuamente, para que nunca fique em incumprimento.\u003c/em\u003e"])</script><script>self.__next_f.push([1,"21:[\"$\",\"div\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"$26\"}}]\n22:[\"$\",\"div\",null,{\"className\":\"glass-card p-6 mt-12 flex items-center gap-4\",\"children\":[[\"$\",\"div\",null,{\"className\":\"w-12 h-12 rounded-xl bg-gradient-to-br from-violet-600 to-blue-500 flex items-center justify-center text-white font-extrabold text-lg\",\"children\":\"Z\"}],[\"$\",\"div\",null,{\"children\":[[\"$\",\"div\",null,{\"className\":\"font-bold text-slate-800\",\"children\":\"Equipa Zavo\"}],[\"$\",\"div\",null,{\"className\":\"text-xs text-slate-400\",\"children\":\"Software para empresas portuguesas, Alcanede, Portugal\"}]]}]]}]\n"])</script><script>self.__next_f.push([1,"23:[\"$\",\"div\",null,{\"className\":\"mt-16\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"font-bold text-lg text-slate-800 mb-6\",\"children\":\"Produtos relacionados\"}],[\"$\",\"div\",null,{\"className\":\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4\",\"children\":[[\"$\",\"$L1f\",\"eaapass\",{\"href\":\"https://eaapass.eu\",\"className\":\"group block\",\"children\":[\"$\",\"div\",null,{\"className\":\"glass-card p-5 transition-all duration-300 group-hover:-translate-y-1 group-hover:shadow-lg\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-3 mb-2\",\"children\":[[\"$\",\"div\",null,{\"className\":\"w-8 h-8 rounded-lg flex items-center justify-center text-white font-bold text-xs\",\"style\":{\"background\":\"#8B5CF6\"},\"children\":\"EA\"}],[\"$\",\"span\",null,{\"className\":\"font-bold text-sm text-slate-800 group-hover:text-blue-600 transition-colors\",\"children\":\"EAAPass\"}],[\"$\",\"span\",null,{\"className\":\"ml-auto text-[9px] font-bold tracking-wider px-2 py-0.5 rounded-full\",\"style\":{\"background\":\"rgba(236,253,245,0.9)\",\"color\":\"#059669\"},\"children\":\"LIVE\"}]]}],[\"$\",\"p\",null,{\"className\":\"text-xs text-slate-400 line-clamp-2\",\"children\":\"Auditoria e certificação de acessibilidade web conforme European Accessibility Act, análise WCAG 2.1 AA automática com relatórios detalhados\"}]]}]}],[\"$\",\"$L1f\",\"benchspy\",{\"href\":\"https://benchspy.com\",\"className\":\"group block\",\"children\":[\"$\",\"div\",null,{\"className\":\"glass-card p-5 transition-all duration-300 group-hover:-translate-y-1 group-hover:shadow-lg\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-3 mb-2\",\"children\":[[\"$\",\"div\",null,{\"className\":\"w-8 h-8 rounded-lg flex items-center justify-center text-white font-bold text-xs\",\"style\":{\"background\":\"#EC4899\"},\"children\":\"BS\"}],[\"$\",\"span\",null,{\"className\":\"font-bold text-sm text-slate-800 group-hover:text-blue-600 transition-colors\",\"children\":\"BenchSpy\"}],[\"$\",\"span\",null,{\"className\":\"ml-auto text-[9px] font-bold tracking-wider px-2 py-0.5 rounded-full\",\"style\":{\"background\":\"rgba(236,253,245,0.9)\",\"color\":\"#059669\"},\"children\":\"LIVE\"}]]}],[\"$\",\"p\",null,{\"className\":\"text-xs text-slate-400 line-clamp-2\",\"children\":\"Análise SEO e monitorização de concorrência com inteligência artificial, relatórios de performance, Core Web Vitals e detecção de tecnologias\"}]]}]}]]}]]}]\n"])</script><script>self.__next_f.push([1,"24:[\"$\",\"div\",null,{\"className\":\"mt-12\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"font-bold text-lg text-slate-800 mb-6\",\"children\":\"Artigos relacionados\"}],[\"$\",\"div\",null,{\"className\":\"grid grid-cols-1 sm:grid-cols-3 gap-4\",\"children\":[[\"$\",\"$L1f\",\"european-accessibility-act-portugal\",{\"href\":\"/blog/european-accessibility-act-portugal\",\"className\":\"group block\",\"children\":[\"$\",\"div\",null,{\"className\":\"glass-card p-5 transition-all duration-300 group-hover:-translate-y-1 group-hover:shadow-lg\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-[10px] font-bold tracking-wider text-blue-500\",\"children\":\"Acessibilidade\"}],[\"$\",\"h4\",null,{\"className\":\"font-bold text-sm text-slate-800 mt-1 group-hover:text-blue-600 transition-colors line-clamp-2\",\"children\":\"European Accessibility Act em Portugal: O Que a Sua Empresa Precisa de Saber\"}],[\"$\",\"p\",null,{\"className\":\"text-xs text-slate-400 mt-2 line-clamp-2\",\"children\":\"Guia prático sobre o European Accessibility Act (EAA) e o seu impacto nas empresas portuguesas. Prazos, requisitos, penalizações e como garantir conformidade do seu website.\"}]]}]}],[\"$\",\"$L1f\",\"acessibilidade-web-portugal-legislacao\",{\"href\":\"/blog/acessibilidade-web-portugal-legislacao\",\"className\":\"group block\",\"children\":[\"$\",\"div\",null,{\"className\":\"glass-card p-5 transition-all duration-300 group-hover:-translate-y-1 group-hover:shadow-lg\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-[10px] font-bold tracking-wider text-blue-500\",\"children\":\"Acessibilidade\"}],[\"$\",\"h4\",null,{\"className\":\"font-bold text-sm text-slate-800 mt-1 group-hover:text-blue-600 transition-colors line-clamp-2\",\"children\":\"Acessibilidade Web em Portugal: Legislação, Boas Práticas e Como Cumprir a Lei\"}],[\"$\",\"p\",null,{\"className\":\"text-xs text-slate-400 mt-2 line-clamp-2\",\"children\":\"Guia completo sobre acessibilidade web em Portugal. Legislação em vigor, WCAG 2.1, European Accessibility Act, ferramentas de auditoria e passos para conformidade.\"}]]}]}],[\"$\",\"$L1f\",\"wcag-21-guia-pratico-developers\",{\"href\":\"/blog/wcag-21-guia-pratico-developers\",\"className\":\"group block\",\"children\":[\"$\",\"div\",null,{\"className\":\"glass-card p-5 transition-all duration-300 group-hover:-translate-y-1 group-hover:shadow-lg\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-[10px] font-bold tracking-wider text-blue-500\",\"children\":\"Acessibilidade Web\"}],[\"$\",\"h4\",null,{\"className\":\"font-bold text-sm text-slate-800 mt-1 group-hover:text-blue-600 transition-colors line-clamp-2\",\"children\":\"WCAG 2.1: Guia Prático para Developers e Designers Web\"}],[\"$\",\"p\",null,{\"className\":\"text-xs text-slate-400 mt-2 line-clamp-2\",\"children\":\"Guia prático das WCAG 2.1 para developers. Critérios de sucesso, exemplos de código, ferramentas de teste e como atingir conformidade AA.\"}]]}]}]]}]]}]\n"])</script><script>self.__next_f.push([1,"25:[\"$\",\"div\",null,{\"className\":\"mt-12 glass-card p-8 text-center\",\"children\":[[\"$\",\"h3\",null,{\"className\":\"font-extrabold text-xl text-slate-900 mb-2\",\"children\":\"Precisa de ajuda com o seu projecto?\"}],[\"$\",\"p\",null,{\"className\":\"text-sm text-slate-500 mb-6\",\"children\":\"Fale connosco, respondemos em 24 horas, sem compromisso.\"}],[\"$\",\"$L1f\",null,{\"href\":\"/contacto\",\"className\":\"inline-flex items-center gap-2 px-6 py-3 rounded-full bg-slate-900 text-white font-semibold text-sm hover:bg-slate-800 transition-all\",\"children\":\"Falar com a equipa →\"}]]}]\n"])</script><script>self.__next_f.push([1,"1c:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"19:null\n"])</script><script>self.__next_f.push([1,"1e:[[\"$\",\"title\",\"0\",{\"children\":\"WCAG 2.1 AA Checklist: Requisitos de Acessibilidade Web | Zavo\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Checklist completa dos requisitos WCAG 2.1 nível AA para websites portugueses. Critérios de sucesso, como testar, ferramentas e exemplos práticos.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"author\",\"href\":\"https://zavo.pt\"}],[\"$\",\"meta\",\"3\",{\"name\":\"author\",\"content\":\"Zavo, Tecnologias Online Lda\"}],[\"$\",\"link\",\"4\",{\"rel\":\"manifest\",\"href\":\"/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"meta\",\"5\",{\"name\":\"keywords\",\"content\":\"wcag 2.1 aa,checklist acessibilidade,requisitos wcag,acessibilidade web portugal,critérios sucesso wcag,testar acessibilidade\"}],[\"$\",\"meta\",\"6\",{\"name\":\"creator\",\"content\":\"Zavo\"}],[\"$\",\"meta\",\"7\",{\"name\":\"publisher\",\"content\":\"Tecnologias Online Lda\"}],[\"$\",\"meta\",\"8\",{\"name\":\"robots\",\"content\":\"index, follow\"}],[\"$\",\"meta\",\"9\",{\"name\":\"googlebot\",\"content\":\"index, follow, max-video-preview:-1, max-image-preview:large, max-snippet:-1\"}],[\"$\",\"meta\",\"10\",{\"name\":\"category\",\"content\":\"technology\"}],[\"$\",\"meta\",\"11\",{\"name\":\"geo.region\",\"content\":\"PT-14\"}],[\"$\",\"meta\",\"12\",{\"name\":\"geo.placename\",\"content\":\"Alcanede, Santarém\"}],[\"$\",\"meta\",\"13\",{\"name\":\"geo.position\",\"content\":\"39.4167;-8.8167\"}],[\"$\",\"meta\",\"14\",{\"name\":\"ICBM\",\"content\":\"39.4167, -8.8167\"}],[\"$\",\"link\",\"15\",{\"rel\":\"canonical\",\"href\":\"https://zavo.pt/blog/wcag-21-aa-checklist-portugal\"}],[\"$\",\"meta\",\"16\",{\"name\":\"format-detection\",\"content\":\"telephone=no, email=no\"}],[\"$\",\"meta\",\"17\",{\"property\":\"og:title\",\"content\":\"WCAG 2.1 AA Checklist: Requisitos de Acessibilidade Web\"}],[\"$\",\"meta\",\"18\",{\"property\":\"og:description\",\"content\":\"Checklist completa dos requisitos WCAG 2.1 nível AA para websites portugueses. Critérios de sucesso, como testar, ferramentas e exemplos práticos.\"}],[\"$\",\"meta\",\"19\",{\"property\":\"og:url\",\"content\":\"https://zavo.pt/blog/wcag-21-aa-checklist-portugal\"}],[\"$\",\"meta\",\"20\",{\"property\":\"og:locale\",\"content\":\"pt_PT\"}],[\"$\",\"meta\",\"21\",{\"property\":\"og:image\",\"content\":\"https://zavo.pt/og-image.png\"}],[\"$\",\"meta\",\"22\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"23\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"24\",{\"property\":\"og:image:alt\",\"content\":\"WCAG 2.1 AA Checklist: Requisitos de Acessibilidade Web\"}],[\"$\",\"meta\",\"25\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"$\",\"meta\",\"26\",{\"property\":\"article:published_time\",\"content\":\"2026-02-25\"}],[\"$\",\"meta\",\"27\",{\"property\":\"article:author\",\"content\":\"Zavo\"}],[\"$\",\"meta\",\"28\",{\"property\":\"article:tag\",\"content\":\"wcag 2.1 aa\"}],[\"$\",\"meta\",\"29\",{\"property\":\"article:tag\",\"content\":\"checklist acessibilidade\"}],[\"$\",\"meta\",\"30\",{\"property\":\"article:tag\",\"content\":\"requisitos wcag\"}],[\"$\",\"meta\",\"31\",{\"property\":\"article:tag\",\"content\":\"acessibilidade web portugal\"}],[\"$\",\"meta\",\"32\",{\"property\":\"article:tag\",\"content\":\"critérios sucesso wcag\"}],[\"$\",\"meta\",\"33\",{\"property\":\"article:tag\",\"content\":\"testar acessibilidade\"}],[\"$\",\"meta\",\"34\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"35\",{\"name\":\"twitter:title\",\"content\":\"WCAG 2.1 AA Checklist: Requisitos de Acessibilidade Web\"}],[\"$\",\"meta\",\"36\",{\"name\":\"twitter:description\",\"content\":\"Checklist completa dos requisitos WCAG 2.1 nível AA para websites portugueses. Critérios de sucesso, como testar, ferramentas e exemplos práticos.\"}],[\"$\",\"meta\",\"37\",{\"name\":\"twitter:image\",\"content\":\"https://zavo.pt/og-image.png\"}],[\"$\",\"meta\",\"38\",{\"name\":\"twitter:image:alt\",\"content\":\"WCAG 2.1 AA Checklist: Requisitos de Acessibilidade Web\"}],[\"$\",\"meta\",\"39\",{\"name\":\"twitter:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"40\",{\"name\":\"twitter:image:height\",\"content\":\"630\"}]]\n"])</script></body></html>