Los colores son tokens, y el contraste es un número calculado
La paleta vive en un bloque de 14 variables, y el texto secundario usa un solo token: `--muted: #666b65`. Las proporciones, recalculadas con la fórmula de luminancia relativa de WCAG sobre los siete fondos del sitio: 5,45:1 sobre blanco, 5,15, 5,11, 5,03, 5,02, 4,79 y 4,72. El texto principal, `--ink: #181a19`, obtiene 17,49:1 sobre blanco; el acento verde `#355c46`, 7,58:1. Cuando un color no llega al umbral, se cambia el token, no se argumenta en la reunión.
Los componentes tienen patrón de teclado, no solo aspecto
El grupo de pestañas de la página de inicio usa el índice de tabulación móvil: solo la pestaña activa es accesible con Tab, las demás se sacan del orden, y las flechas izquierda/derecha, Home y End mueven el foco, con el comportamiento predeterminado de la tecla anulado. Es el modelo de las prácticas recomendadas para componentes accesibles, implementado, no citado. En los componentes básicos del sitio hay 21 etiquetas accesibles, 7 estados pulsado/no pulsado, 3 vínculos entre título y región, 2 estados de selección, 2 regiones que anuncian cambios y 2 vínculos entre el comando y el panel que controla.
El movimiento tiene botón de detenerse y se apaga según la preferencia del sistema
En la página de inicio hay 38 elementos animados infinitamente, iniciados automáticamente, que duran más de cinco segundos — exactamente la situación regulada por el criterio «Pausa, parada, ocultación». Los 38 están cubiertos por botones de pausa: al pulsarlos, las animaciones pasan al estado detenido y el estado del botón cambia. Además, en `prefers-reduced-motion: reduce` una regla global anula cualquier animación y transición, detiene el desplazamiento suave, elimina el desplazamiento al pasar el ratón y oculta el botón de pausa. En la hoja principal hay siete de estos bloques, más uno en la hoja base.
Indicador de foco visible, solo donde hace falta
Contorno de 2 px sólido, en el verde de acento, con 5 px de separación, aplicado mediante `:focus-visible` — así aparece en la navegación con teclado y no al hacer clic con el mouse. Verificado en el navegador, elemento por elemento, en el encabezado y en los primeros controles del contenido: cuatro elementos distintos, el mismo contorno. En ninguna parte de la hoja de estilo existe un contorno eliminado sin sustituto.
Formularios que anuncian sus estados
En el formulario de contacto del sitio, las etiquetas están implícitas en los campos, el error está marcado como alerta y la confirmación como estado — así los lectores de pantalla las anuncian sin que el usuario las busque. La trampa para bots está bien oculta: padre sin display, marcado como oculto para tecnologías asistivas y sacado del orden de tabulación. La auditoría propia confirma que las reglas de etiquetado, de nombre para selectores y de autocompletado pasan todas.
La verificación se hace con una herramienta, en páginas reales
Ejecutamos axe-core 4.10.2 en la página live, no en un entorno de prueba, sobre una muestra de diez páginas que cubren patrones diferentes: la página de inicio, el catálogo, una página de producto, el índice de servicios, una página de servicio, la matriz de soluciones, una combinación de la matriz, el contacto, las tarifas, un artículo y un documento jurídico. El resultado bruto se escribe en la página, con el número de nodos, no resumido en «conforme».
Lo que falló se publica, no se redondea
Del mismo auditor: a 320 px de ancho, el comando del encabezado y el botón de menú sobresalen de la pantalla en 22 px y la página se desplaza horizontalmente —la aritmética es 362 px de contenido en un contenedor de 280 px. En los documentos jurídicos, los enlaces del texto no se distinguen del texto de alrededor salvo por el color, y la relación entre el acento y el texto del cuerpo es 1,01:1, así que el subrayado es obligatorio. Ambos están abiertos, con corrección escrita. Los publicamos porque un comprador que pide accesibilidad merece ver cómo se ve una lista real de defectos.
Sin tema oscuro — dicho, no simulado
El sitio no tiene tema oscuro. El bloque de tokens está declarado para tres selectores que reciben valores idénticos, y en el código no existe ninguna regla para la preferencia de esquema del sistema. Verificado en el navegador con el esquema oscuro emulado: la página sigue blanca. La consecuencia útil: todos los informes de contraste medidos son válidos en ambos esquemas. La consecuencia molesta: el conmutador de tema es código muerto desde el punto de vista del color. Un tema oscuro real significa volver a medir por completo el contraste, no copiar los valores.
Tipografía con reglas, no con preferencias
Una sola familia para títulos y texto, con espaciado entre letras ajustado por nivel —más estrecho en los títulos grandes, `-0,055em` en los niveles uno y dos, `-0,035em` en el nivel tres— y peso 500 en los títulos. Los párrafos usan equilibrio de líneas, para que no quede una sola palabra en la última línea. El contenedor tiene un ancho máximo de 1240 px con márgenes de 48 px, y los botones tienen la misma altura de línea en todas partes. Son reglas escritas en la hoja de estilo, así que se aplican también después de que nos vayamos.