{
 "url": "https://mos.gal/",
 "modo": "rendered",
 "score": 54,
 "score_nota": "Puntuación ponderada: alta −12, media −6, baja −2 desde 100. Mide solo lo automatizable (≈1/3 de WCAG): sirve para seguir tendencias entre versiones, no como conformidad.",
 "elementos_interactivos": 202,
 "resumen": {
  "alta": 2,
  "media": 3,
  "baja": 2
 },
 "hallazgos": [
  {
   "severidad": "alta",
   "criterio": "1.4.3",
   "hallazgo": "6 zonas de texto con contraste insuficiente: rgb(226,109,92) vs rgb(255,255,255) = 3.19:1 ×1; rgb(255,255,255) vs rgb(255,255,255) = 1:1 (grande) ×3; rgb(255,255,255) vs rgb(226,109,92) = 3.19:1 ×31; rgb(0,123,255) vs rgb(255,255,255) = 3.98:1 ×1. (fg/fondo computados, con composición de transparencias).",
   "remediacion": "Sube el contraste a ≥4.5:1 (≥3:1 en texto grande). El fondo efectivo ya incluye superposiciones y transparencias; si hay imagen de fondo, verifica esa zona a mano.",
   "ejemplos": [
    "rgb(226,109,92) sobre rgb(255,255,255) → 3.19:1 (p. ej. ul#menu-primary-menu > li#menu-item-30741 > a)",
    "rgb(255,255,255) sobre rgb(255,255,255) → 1:1 (p. ej. div > div > h1)",
    "rgb(255,255,255) sobre rgb(226,109,92) → 3.19:1 (p. ej. span > span > span)",
    "rgb(0,123,255) sobre rgb(255,255,255) → 3.98:1 (p. ej. div > a > span)",
    "rgb(140,150,172) sobre rgb(61,73,91) → 3.07:1 (p. ej. div > p > span)",
    "rgb(123,133,157) sobre rgb(61,73,91) → 2.47:1 (p. ej. div > p > span)"
   ]
  },
  {
   "severidad": "alta",
   "criterio": "4.1.2 Nombre, función, valor",
   "hallazgo": "15 <control> sin nombre accesible (sin texto, aria-label ni title).",
   "remediacion": "El nombre accesible llega del texto interno, aria-label, title o de una imagen interna con alt. Un control vacío es invisible para lectores de pantalla.",
   "ejemplos": [
    "div > div > a",
    "div > div > a",
    "div > div > a",
    "div > div > a",
    "div > div > a",
    "div > div > a"
   ]
  },
  {
   "severidad": "media",
   "criterio": "2.5.8 Tamaño del objetivo (mínimo)",
   "hallazgo": "40 controles con área de toque menor de 24×24 px (WCAG 2.2, 2.5.8): span > span > a (86×22), span > span > a (86×22), span > span > a (86×22), span > span > a (86×22).",
   "remediacion": "Da a los controles al menos 24×24 px CSS (mejor 44×44) con padding o min-width/min-height. Excepciones: enlaces inline equivalentes y espaciado suficiente alrededor.",
   "ejemplos": [
    "span > span > a (86×22px)",
    "span > span > a (86×22px)",
    "span > span > a (86×22px)",
    "span > span > a (86×22px)",
    "span > span > a (86×22px)",
    "span > span > a (86×22px)"
   ]
  },
  {
   "severidad": "media",
   "criterio": "2.4.7 Foco visible",
   "hallazgo": "39 controles enfocables sin indicador de foco aparente (outline y box-shadow ausentes): div > div > a, div > div > a, div > div > a, ul#menu-primary-menu > li#menu-item-30741 > a. Revisar.",
   "remediacion": "Asegura un indicador de foco visible: nunca outline:none sin sustituto; usa :focus-visible con outline ≥2px o borde/sombra contrastada (2.4.7).",
   "ejemplos": [
    "div > div > a",
    "div > div > a",
    "div > div > a",
    "ul#menu-primary-menu > li#menu-item-30741 > a",
    "ul#menu-primary-menu > li#menu-item-30742 > a",
    "ul#menu-primary-menu > li#menu-item-33452 > a"
   ]
  },
  {
   "severidad": "media",
   "criterio": "1.2.2 Subtítulos (pregrabado)",
   "hallazgo": "1 <video> sin <track kind=\"captions\">.",
   "remediacion": "Publica subtítulos para el audio del vídeo (1.2.2). Si es decorativo y sin audio, márcalo como tal."
  },
  {
   "severidad": "baja",
   "criterio": "2.4.7 Foco visible",
   "hallazgo": "1 controles que no reciben foco con .focus(): div > div > a.",
   "remediacion": "Si debe ser interactivo, que sea enfocable (tabindex=\"0\"); si no, quítalo de la ruta de tabulación.",
   "ejemplos": [
    "div > div > a"
   ]
  },
  {
   "severidad": "baja",
   "criterio": "1.3.1 Información y relaciones",
   "hallazgo": "Saltos de nivel en encabezados: h1→h3, h2→h4.",
   "remediacion": "No saltes niveles (h2→h4): rompe el esquema de navegación. Baja de uno en uno."
  }
 ],
 "limites": "Auditoría renderizada: heurística honesta, no sustituye lector de pantalla ni revisión manual. Contraste calculado sobre fondos computados; los casos con imagen de fondo se reportan como «revisar». 2.5.8 admite excepciones (inline equivalente, espaciado) que aquí se aproximan."
}
