Accesibilidad

11 · Accesibilidad

No es negociable para un laboratorio de interés público. Si publicas sobre desapariciones y una parte del público no puede leerte, el trabajo no llegó.

Contraste

Comprobado en el build, no en la revisión. Ver la matriz generada en 02 · Color.

■ UMB-COL-005 · Color · error

Todo texto alcanza 4.5:1 contra base y contra panel

Es un laboratorio de interés público: la lectura no puede depender de tener buena vista y una buena pantalla. v1.0 afirmaba cumplir AA en ambos modos y no lo cumplía en cuatro pares; el 44% del texto del sitio principal fallaba.

Usar ink, muted, caption y las variantes *-text, que la compuerta ya verifica.
No Usar signal, model o alert como color de texto pequeño en modo laboratorio.

Comprobación: Automática — verify-tokens, comprobación contrast-text.

Origen: umbral-engineering.md §4 afirmaba lo contrario; audit §2.

Ver también: UMB-COL-006 · UMB-A11Y-005

Desde v1.0. Regla normativa: rules/rules.yaml.

Nunca solo color

■ UMB-A11Y-005 · Accesibilidad · error

El significado nunca se codifica solo con color

Es la razón por la que las etiquetas directas son obligatorias y no estilísticas. Además es la única mitigación real del punto débil heredado de la paleta: signal y model son indistinguibles bajo tritanopía.

Etiqueta de texto en cada serie; flecha o palabra en cada delta.
No Verde/rojo como única diferencia entre subida y bajada.

Comprobación: En revisión.

Ver también: UMB-CHT-005 · UMB-COL-008

Desde v1.0. Regla normativa: rules/rules.yaml.

Situación Además del color
Series en una gráfica Etiqueta de texto al final de cada línea
Delta arriba/abajo Flecha o palabra: +9.2% ▲, no solo verde
Categorías en un mapa Trama distinta, y la tabla al lado
Estado en una tabla Palabra en la celda

Esta regla es también la mitigación real del punto débil de la paleta: signal y model son indistinguibles bajo tritanopía. Si respetas la etiqueta directa, ese defecto no llega al lector.

Idioma

■ UMB-A11Y-001 · Accesibilidad · error

El atributo lang corresponde al idioma real del subárbol

Un lector de pantalla pronuncia el español con fonética inglesa si lang miente. Para un laboratorio que publica en español es el defecto de accesibilidad más básico.

lang=“es” en el documento; lang=“en” en el subárbol que sí esté en inglés.
No Dejar el lang=“en” que trae el framework por defecto.

Comprobación: Automática — umbral-lint, comprobación lang-attribute.

Origen: Streamlit fija lang="en" y las dos apps lo sirven así. Decisión OQ-004: severidad error, con el shim documentado en guide/14-superficies/streamlit.md.

Desde v1.0. Regla normativa: rules/rules.yaml.

Un lector de pantalla pronuncia el español con fonética inglesa si lang miente. Para un laboratorio que publica en español es el defecto de accesibilidad más básico que existe — y los dos tableros del laboratorio lo tienen, porque Streamlit fija lang="en" y nadie lo corrigió.

El shim está documentado en 14 · Superficies → Streamlit.

Gráficas

Una gráfica sin texto alternativo es un rectángulo vacío: el hallazgo desaparece por completo, no solo su forma visual.

■ UMB-A11Y-002 · Accesibilidad · error

Toda gráfica lleva un aria-label que resume el hallazgo

Sin etiqueta, una gráfica es un rectángulo vacío para quien usa lector de pantalla — es decir, el hallazgo desaparece por completo, no solo su forma visual.

aria-label con la misma afirmación que el título.
No aria-label=“gráfica” o ninguno.

Comprobación: Automática — umbral-lint, comprobación chart-aria-label.

Origen: Medido: ninguna de las gráficas de desaparecidosmx ni pautamx tiene aria-label.

Desde v1.0. Regla normativa: rules/rules.yaml.

■ UMB-A11Y-003 · Accesibilidad · error

### Junto a cada gráfica hay una tabla de datos o un

con las cifras

Da a los lectores de pantalla —y a quien quiera citar la cifra exacta— acceso al dato y no solo a su imagen.

No Solo el SVG.

Comprobación: En revisión.

Desde v1.0. Regla normativa: rules/rules.yaml.

:::

■ UMB-A11Y-004 · Accesibilidad · error

Junto a cada gráfica se puede descargar su CSV

Los datos públicos regresan al público. También es lo que permite que alguien refute la gráfica con la misma base.

Un botón de descarga por vista.
No Publicar la gráfica y dejar el CSV en el repo sin enlazarlo.

Comprobación: En revisión.

Origen: Medido: desaparecidosmx lo tiene; pautamx no tiene ninguno.

Ver también: UMB-DAT-004

Desde v1.0. Regla normativa: rules/rules.yaml.

El aria-label lleva la misma afirmación que el título, no una descripción del tipo de gráfica:

aria-label="El RNPDNO acumula 351,057 registros con hechos entre 2010-01 y 2026-07"
No aria-label="gráfica de líneas"

Teclado y foco

■ UMB-A11Y-006 · Accesibilidad · error

El foco visible se dibuja en signal y los objetivos táctiles miden 44px o más

Navegar con teclado tiene que ser posible sin adivinar dónde se está, y un objetivo menor a 44px falla en móvil para una parte del público.

:focus-visible con contorno en signal; áreas táctiles de 44px.
No outline: none.

Comprobación: Automática — umbral-lint, comprobación focus-and-target.

Desde v1.0. Regla normativa: rules/rules.yaml.

Movimiento

■ UMB-A11Y-007 · Accesibilidad · error

Se respeta prefers-reduced-motion

El movimiento puede provocar malestar vestibular. Nada en el sistema depende de animación para comunicar.

@media (prefers-reduced-motion: reduce) { transition: none }.
No Transiciones y animaciones incondicionales.

Comprobación: Automática — umbral-lint, comprobación reduced-motion.

Desde v1.0. Regla normativa: rules/rules.yaml.

Nada en el sistema depende de animación para comunicar, así que respetar la preferencia no cuesta nada:

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
}

Lista de comprobación