Estilo Accesibilidad de alto contraste: prompt de diseño UI
Paleta, reglas tipográficas y un prompt pegable para accesibilidad de alto contraste. También llamado diseño accesible, diseño WCAG AAA, modo de alto contraste, UI inclusiva, a11y primero. WCAG 2.0 (2008), 2.1 (2018), 2.2 (2023); prioridad de diseño desde la presión legal de 2020.
Rasgos
- contraste de texto de 7:1 o mejor (AAA), componentes de UI a 3:1 como mínimo
- tipo grande por defecto (18px o más), line-height 1.5 o más, medida de 60-70 caracteres
- indicadores de foco visibles y gruesos (3px) en cada elemento interactivo
- enlaces subrayados, botones que parecen botones, nunca solo el color para señalar un estado
- objetivos táctiles grandes (44px mínimo), espaciado generoso entre ellos
- movimiento mínimo y siempre desactivado bajo prefers-reduced-motion
- respeta el modo forced-colors; los iconos llevan etiquetas de texto
Paleta
#ffffff página, #0b0b0b texto, #005a9c azul de enlace (7:1 sobre blanco), #b30000 error, #006400 éxito, #ffd200 anillo de foco sobre oscuro, #1a1a1a superficie oscura
Tipografía
Atkinson Hyperlegible (diseñada para baja visión), IBM Plex Sans, Source Sans 3 o Lexend; cuerpo 18-20px, títulos 700 a 32-48px, mínimo 16px en cualquier sitio; sin pesos finos
Haz
- prueba cada par texto/fondo a 7:1 y cada borde/icono a 3:1 antes de estilizar nada más
- haz que el foco sea imposible de pasar por alto: outline 3px solid más offset de 2px, en un color que alcance 3:1 sobre cualquier fondo
- acompaña cada señal de color con una forma, un icono o texto (texto de error más icono, no solo rojo)
Evita
- no uses texto de placeholder gris por debajo de 4.5:1 ni inputs con filetes finísimos
- no elimines los outlines, no desactives el zoom ni animes al hacer scroll
- no dependas del hover; todo debe funcionar con teclado y táctil
Conocido por: GOV.UK, BBC (GEL), proyecto Atkinson Hyperlegible del Braille Institute, Microsoft Inclusive Design
Semilla CSS
:root {
--bg: #ffffff;
--fg: #0b0b0b;
--accent: #005a9c;
--error: #b30000;
--focus: #ffd200;
--radius: 4px;
--focus-ring: 3px solid #005a9c;
--font: 'Atkinson Hyperlegible',sans-serif
}
Prompt
Construye el sitio con un estándar de accesibilidad de alto contraste (WCAG 2.2 AAA donde sea posible). Fondo #ffffff, texto #0b0b0b, enlaces #005a9c siempre subrayados, error #b30000 con icono y texto, éxito #006400. Fuente Atkinson Hyperlegible: cuerpo 19px con line-height 1.6 y max-width 66ch, títulos 700 a 44/32/24px, nada por debajo de 16px, sin pesos por debajo de 400. Todos los elementos interactivos de al menos 44x44px con 12px de espacio entre ellos. Botones: #005a9c sólido con texto blanco, radio 4px, borde de 2px del mismo color para que sobrevivan al modo forced-colors; los botones secundarios llevan un borde 2px #0b0b0b. Foco: outline 3px solid #005a9c, outline-offset 2px en cada elemento; sobre superficies oscuras #1a1a1a usa #ffd200. Inputs: borde 2px #0b0b0b, etiqueta visible encima, nunca solo placeholder. Enlace de salto (skip link) primero en el DOM. Iconos decorativos (aria-hidden) con etiquetas de texto adyacentes. Sin autoplay, sin parallax; cualquier transición de 150ms como máximo y eliminada bajo prefers-reduced-motion. Añade una estructura de landmarks visible: header, nav, main, footer.
Para design.md, .cursorrules o AGENTS.md
## Dirección de diseño
Construye el sitio con un estándar de accesibilidad de alto contraste (WCAG 2.2 AAA donde sea posible). Fondo #ffffff, texto #0b0b0b, enlaces #005a9c siempre subrayados, error #b30000 con icono y texto, éxito #006400. Fuente Atkinson Hyperlegible: cuerpo 19px con line-height 1.6 y max-width 66ch, títulos 700 a 44/32/24px, nada por debajo de 16px, sin pesos por debajo de 400. Todos los elementos interactivos de al menos 44x44px con 12px de espacio entre ellos. Botones: #005a9c sólido con texto blanco, radio 4px, borde de 2px del mismo color para que sobrevivan al modo forced-colors; los botones secundarios llevan un borde 2px #0b0b0b. Foco: outline 3px solid #005a9c, outline-offset 2px en cada elemento; sobre superficies oscuras #1a1a1a usa #ffd200. Inputs: borde 2px #0b0b0b, etiqueta visible encima, nunca solo placeholder. Enlace de salto (skip link) primero en el DOM. Iconos decorativos (aria-hidden) con etiquetas de texto adyacentes. Sin autoplay, sin parallax; cualquier transición de 150ms como máximo y eliminada bajo prefers-reduced-motion. Añade una estructura de landmarks visible: header, nav, main, footer.
## Tokens
:root { --bg:#ffffff; --fg:#0b0b0b; --accent:#005a9c; --error:#b30000; --focus:#ffd200; --radius:4px; --focus-ring:3px solid #005a9c; --font:'Atkinson Hyperlegible',sans-serif }
Mantén estados hover y focus-visible en cada elemento interactivo. No añadas un framework CSS.