2 problemas documentados

Contraste e Uso de Cor

Razões de contraste mínimas para texto e componentes de interface, e como não depender apenas de cor para transmitir informação.

WCAG AA

Texto com contraste insuficiente

WCAG 1.4.3WCAG 1.4.11eMAG 4.2

O texto precisa ter razão de contraste mínima de 4.5:1 contra o fundo (3:1 para texto grande ≥18pt ou ≥14pt negrito). Texto em imagens segue as mesmas regras.

Impacto por tipo de deficiência

Baixa visão

Texto com baixo contraste é ilegível para usuários com acuidade visual reduzida, mesmo com zoom.

Daltonismo

Certas combinações de cores (verde/vermelho, azul/roxo) com baixo contraste tornam-se indistinguíveis.

Ambiental

Sob luz solar direta ou em telas com brilho reduzido, texto com baixo contraste desaparece.

Incorreto — cria barreiras de acessibilidade
/* ❌ Contraste insuficiente — gray-400 em branco: 2.85:1 */
.texto-secundario {
  color: #9CA3AF; /* Tailwind gray-400 */
  background: #FFFFFF;
}

/* ❌ Placeholder com contraste abaixo do mínimo */
input::placeholder {
  color: #D1D5DB; /* gray-300: 1.66:1 */
}
Correto — acessível para todos os usuários
/* ✓ gray-500 em branco: 3.95:1 — passa para texto grande */
/* ✓ gray-600 em branco: 5.74:1 — passa para todo texto */
.texto-secundario {
  color: #4B5563; /* Tailwind gray-600 */
}

/* ✓ Placeholder com contraste adequado */
input::placeholder {
  color: #6B7280; /* gray-500: 4.07:1 */
}

/* ✓ Verificação rápida com a fórmula WCAG:
   Razão = (L1 + 0.05) / (L2 + 0.05)
   Use: webaim.org/resources/contrastchecker */
WCAG A

Informação transmitida apenas por cor

WCAG 1.4.1WCAG 1.3.3eMAG 4.2eMAG 3.7

Cor não pode ser o único meio de transmitir informação. Campos obrigatórios, estados de erro, categorias e links devem ter indicadores adicionais além da cor.

Impacto por tipo de deficiência

Daltonismo

Deuteranopia (vermelho-verde) afeta ~8% dos homens — campos obrigatórios marcados apenas em vermelho são invisíveis.

Cegueira

Leitores de tela não percebem a cor de um elemento — a informação deve estar no texto ou em atributos ARIA.

Impressão

Documentos impressos em P&B perdem toda distinção baseada em cor.

Incorreto — cria barreiras de acessibilidade
<!-- ❌ Obrigatório indicado só por cor vermelha -->
<label style="color:red">Nome</label>
<input type="text">

<!-- ❌ Link indistinguível do texto circundante -->
<p>Acesse o <a href="/portal" style="color:inherit">portal</a> para mais informações.</p>
Correto — acessível para todos os usuários
<!-- ✓ Asterisco + texto oculto para leitores de tela -->
<label for="nome">
  Nome
  <span aria-hidden="true" class="obrigatorio">*</span>
  <span class="sr-only">(obrigatório)</span>
</label>
<input type="text" id="nome" required aria-required="true">
<p class="nota">Campos marcados com * são obrigatórios</p>

<!-- ✓ Link com sublinhado visível -->
<p>Acesse o <a href="/portal" class="link-com-sublinhado">portal</a> para mais informações.</p>

/* ✓ CSS: link sempre sublinhado */
a { text-decoration: underline; }

Técnicas ARIA relevantes

aria-required="true"aria-describedby