Matriz Técnica de Cumplimiento de Accesibilidad Web (WCAG 2.1 AA)
Desglose técnico para los responsables del proyecto, directivos y evaluadores: qué criterios del W3C se cubren, cómo se implementaron en este portal, en qué parte del código aplican y a qué tipo de discapacidad benefician directamente.
¿Cómo está estructurada la norma WCAG 2.1 según el W3C?
Las Web Content Accessibility Guidelines (WCAG 2.1) se organizan en torno a 4 principios fundamentales (POUR):
| Criterio | Nombre & Principio | Discapacidad | Implementación en este Portal | Acción |
|---|---|---|---|---|
WCAG 1.1.1Nivel A | Contenido no textualPerceptible | 👁️ Visual | Todas las imágenes informativas y fotografías de recintos culturales (patio Art Déco del Museo de Arte Popular en el Hero, Museo del Templo Mayor, Palacio de Bellas Artes, mediaciones y talleres sensoriales) cuentan con textos alternativos contextuales y descriptivos ('alt'). Los iconos SVG decorativos tienen 'aria-hidden="true"' para no confundir a los lectores de pantalla. El imagotipo institucional y el isotipo conmemorativo de los 13 Años conmutan automáticamente a vectores monocromáticos en blanco puro en modo de alto contraste oscuro. 📍 Ubicación: Todo el sitio (imágenes, logotipos, insignias de recintos) | |
WCAG 1.3.1Nivel A | Información y relacionesPerceptible | 👁️ Visual🧠 Cognitiva / Sensorial | Uso de landmarks HTML5 nativos (<header>, <nav>, <main>, <article>, <aside>, <footer>) y etiquetas <label htmlFor> vinculadas explícitamente a cada input del formulario. 📍 Ubicación: Estructura del sitio, jerarquía de encabezados (H1-H4) y formulario | |
WCAG 1.4.1Nivel A | Uso del colorPerceptible | 👁️ Visual | El color nunca es el único medio para transmitir información. Los errores incluyen icono de advertencia ⚠ y texto descriptivo; los enlaces cuentan con la opción de forzar subrayado permanente. 📍 Ubicación: Enlaces, filtros de recintos, alertas y validaciones de formulario | |
WCAG 1.4.3Nivel AA | Contraste mínimoPerceptible | 👁️ Visual | Paleta oficial de identidad (Azul Pantone 285 C #2273ba y Rojo Pantone 1795 C #dc2235) con contraste superior a 4.8:1 en textos normales y > 6:1 en hover. La sección Hero emplea un degradado accesible y tarjetas con contraste verificado > 10:1. Incluye modo 'Alto Contraste Oscuro' (#000000) y 'Alto Contraste Claro'. 📍 Ubicación: Textos en todas las secciones sobre fondos claros, degradados del Hero y oscuros | |
WCAG 1.4.4Nivel AA | Cambio de tamaño del textoPerceptible | 👁️ Visual🧠 Cognitiva / Sensorial | El diseño soporta zoom nativo del navegador hasta un 200% sin ruptura de contenedor ni desplazamiento bidimensional. Además, la Barra A11y ofrece selector de tamaño Normal (100%), Grande (115%) y Muy Grande (130%). 📍 Ubicación: Toda la tipografía del portal | |
WCAG 1.4.10Nivel AA | Reflujo (Diseño Responsivo)Perceptible | 👁️ Visual♿ Motriz | El contenido refluye fluidamente sin necesidad de desplazamiento horizontal en pantallas de hasta 320 píxeles de ancho (o zoom 400% a 1280px). 📍 Ubicación: Toda la maquetación (móvil, tablet y escritorio) | |
WCAG 1.4.11Nivel AA | Contraste de componentes no textualesPerceptible | 👁️ Visual | Todos los elementos interactivos y sus bordes activos tienen un contraste de al menos 3:1 respecto a los colores adyacentes. 📍 Ubicación: Bordes de campos de formulario, botones, checkboxes y focus rings | |
WCAG 1.4.12Nivel AA | Espaciado del textoPerceptible | 👁️ Visual🧠 Cognitiva / Sensorial | El interlineado base es de 1.6, con espaciado de párrafos y letras ajustado. El modo Dislexia eleva el interlineado a 1.85 y el letter-spacing a 0.06em sin truncar cajas de texto. 📍 Ubicación: Tipografía global y modo Dislexia | |
WCAG 2.1.1Nivel A | TecladoOperable | ♿ Motriz👁️ Visual | 100% de la funcionalidad es operable mediante teclado estándar (Tab, Shift+Tab, Enter, Espacio, flechas). 📍 Ubicación: Todo el portal (enlaces, botones, selectores, menú móvil, modal) | |
WCAG 2.1.2Nivel A | Sin trampas para el foco del tecladoOperable | ♿ Motriz👁️ Visual | El foco nunca queda atrapado. El menú móvil se puede abrir y cerrar con la tecla Escape o navegando hacia adelante/atrás fluidamente. 📍 Ubicación: Menú desplegable móvil y controles de la barra de accesibilidad | |
WCAG 2.2.2Nivel A | Poner en pausa, detener o apagarOperable | 🧠 Cognitiva / Sensorial👁️ Visual | Se respeta la directiva 'prefers-reduced-motion: reduce' del sistema operativo y la Barra A11y incluye un botón para desactivar animaciones al 100%. 📍 Ubicación: Animaciones y transiciones de interfaz | |
WCAG 2.4.1Nivel A | Evitar bloques (Skip Link)Operable | ♿ Motriz👁️ Visual | Componente <SkipLink> que permanece oculto visualmente hasta recibir el foco del teclado, permitiendo saltar directamente a '#main-content'. 📍 Ubicación: Primera posición de cada página del portal | |
WCAG 2.4.3Nivel A | Orden del focoOperable | ♿ Motriz👁️ Visual | El orden del foco en el DOM coincide exactamente con el orden visual y lógico de lectura. 📍 Ubicación: Toda la navegación y flujo de formularios | |
WCAG 2.4.4Nivel A | Propósito de los enlaces (en contexto)Operable | 👁️ Visual🧠 Cognitiva / Sensorial | Ningún enlace usa textos genéricos como 'haz clic aquí' o 'leer más' sin contexto. Todos incluyen su destino claro o cuentan con atributos 'aria-label' descriptivos. 📍 Ubicación: Enlaces del directorio, redes sociales, agenda y pie de página | |
WCAG 2.4.7Nivel AA | Foco visibleOperable | ♿ Motriz👁️ Visual | Regla global ':focus-visible' con anillo de 3px de grosor, color institucional de alto contraste (#2273ba o amarillo en modo oscuro) y offset de 3px. 📍 Ubicación: Todos los elementos interactivos del sitio | |
WCAG 3.1.1Nivel A | Idioma de la páginaComprensible | 👁️ Visual🧠 Cognitiva / Sensorial | Configurado como '<html lang="es">' en el archivo raíz app/layout.tsx. 📍 Ubicación: Etiqueta raíz <html> en el layout global | |
WCAG 3.2.3Nivel AA | Navegación coherenteComprensible | 🧠 Cognitiva / Sensorial👁️ Visual | El menú de navegación y las regiones estructurales se presentan en el mismo orden relativo y con idéntico etiquetado en las 7 páginas del sitio. 📍 Ubicación: Cabecera, pie de página y barra de accesibilidad | |
WCAG 3.3.1Nivel A | Identificación de erroresComprensible | 👁️ Visual🧠 Cognitiva / Sensorial | Si un campo obligatorio no se llena o el correo es inválido, el sistema muestra el error en texto claro, con 'role="alert"' para que el lector de pantalla lo anuncie de inmediato. 📍 Ubicación: Formulario de contacto accesible | |
WCAG 3.3.2Nivel A | Etiquetas o instruccionesComprensible | 🧠 Cognitiva / Sensorial👁️ Visual♿ Motriz | Todos los campos cuentan con etiqueta visible persistente (no solo placeholders que desaparecen al escribir) e indican claramente qué datos son obligatorios (*). 📍 Ubicación: Formulario de contacto y buscador de museos | |
WCAG 3.3.3Nivel AA | Sugerencia ante erroresComprensible | 🧠 Cognitiva / Sensorial👁️ Visual | Los mensajes de validación sugieren la corrección exacta (ej. 'Por favor ingresa un correo con formato válido: nombre@ejemplo.com'). 📍 Ubicación: Formulario de contacto | |
WCAG 4.1.2Nivel A | Nombre, función, valorRobusto | 👁️ Visual♿ Motriz | Uso de atributos 'aria-expanded', 'aria-controls', 'aria-pressed' y 'aria-label' que informan en tiempo real el estado y función exacta a las tecnologías asistivas. 📍 Ubicación: Controles interactivos, botones de la barra A11y, acordeones | |
WCAG 4.1.3Nivel AA | Mensajes de estado (Regiones Vivas ARIA)Robusto | 👁️ Visual | Implementación de 'aria-live="polite"' y 'role="status"' que anuncia automáticamente los cambios a los lectores de pantalla sin interrumpir la lectura en curso. 📍 Ubicación: Contador de recintos filtrados y confirmación de envío |
Reporte de cumplimiento elaborado conforme al estándar WCAG 2.1 Nivel AA del W3C y la NMX-CO-001-SCFI-2018.