{
 "url": "https://www.verin.es",
 "modo": "rendered",
 "score": 44,
 "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": 98,
 "resumen": {
  "alta": 2,
  "media": 4,
  "baja": 4
 },
 "hallazgos": [
  {
   "severidad": "alta",
   "criterio": "1.4.3",
   "hallazgo": "5 zonas de texto con contraste insuficiente: rgb(0,149,235) vs rgb(41,43,51) = 4.37:1 ×2; rgb(100,116,139) vs rgb(248,248,248) = 4.48:1 ×4; rgb(148,163,184) vs rgb(248,248,248) = 2.41:1 ×4; rgb(214,214,214) vs rgb(30,115,190) = 3.4:1 ×4. (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(0,149,235) sobre rgb(41,43,51) → 4.37:1 (p. ej. ul > li > a)",
    "rgb(100,116,139) sobre rgb(248,248,248) → 4.48:1 (p. ej. section > header > time)",
    "rgb(148,163,184) sobre rgb(248,248,248) → 2.41:1 (p. ej. div > div > span)",
    "rgb(214,214,214) sobre rgb(30,115,190) → 3.4:1 (p. ej. article > div > div)",
    "rgb(0,147,208) sobre rgb(186,223,238) → 2.45:1 (p. ej. div > div#mec-nextprev-wrap-mec2 > span)"
   ]
  },
  {
   "severidad": "alta",
   "criterio": "4.1.2 Nombre, función, valor",
   "hallazgo": "12 <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": [
    "#search_button",
    "article > div > a",
    "article > div > a",
    "article > div > a",
    "article > div > a",
    "div > p > a"
   ]
  },
  {
   "severidad": "media",
   "criterio": "2.4.7 Foco visible",
   "hallazgo": "37 controles enfocables sin indicador de foco aparente (outline y box-shadow ausentes): ul > li > a, ul > li > a, ul > li > a, ul > li > 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": [
    "ul > li > a",
    "ul > li > a",
    "ul > li > a",
    "ul > li > a",
    "ul > li > a",
    "ul > li > a"
   ]
  },
  {
   "severidad": "media",
   "criterio": "4.1.2 Nombre, función, valor",
   "hallazgo": "1 <iframe> sin title accesible.",
   "remediacion": "Añade title descriptivo al iframe (lo anuncian los lectores al llegar a él).",
   "ejemplos": [
    ""
   ]
  },
  {
   "severidad": "media",
   "criterio": "1.4.4 Cambio de tamaño del texto",
   "hallazgo": "El viewport limita el zoom (maximum-scale=1; se recomienda no limitar o ≥2).",
   "remediacion": "Elimina maximum-scale del viewport o déjalo en 2 o más, para que se pueda agrandar la letra (1.4.4)."
  },
  {
   "severidad": "media",
   "criterio": "1.3.1 Información y relaciones",
   "hallazgo": "1 <table> sin celdas <th>.",
   "remediacion": "Marca encabezados de fila/columna con <th> (y scope) para que el lector asocie celdas."
  },
  {
   "severidad": "baja",
   "criterio": "1.4.3",
   "hallazgo": "23 zonas de texto con imagen de fondo o sombra: no calculables, revisar.",
   "remediacion": "El contraste sobre imagen de fondo no es calculable aquí: usa a11y_contrast_image con una captura de esa región."
  },
  {
   "severidad": "baja",
   "criterio": "1.3.1 Información y relaciones",
   "hallazgo": "Saltos de nivel en encabezados: h2→h4, h2→h4, h2→h6, h1→h4, h2→h4.",
   "remediacion": "No saltes niveles (h2→h4): rompe el esquema de navegación. Baja de uno en uno."
  },
  {
   "severidad": "baja",
   "criterio": "3.2.5 Cambio a petición",
   "hallazgo": "28 enlaces con target=\"_blank\" sin avisar de que abren ventana nueva.",
   "remediacion": "Añade aviso en texto (o title/aria-label): «(abre en ventana nueva)», o deja que la persona usuaria decida."
  },
  {
   "severidad": "baja",
   "criterio": "4.1.2 Nombre, función, valor",
   "hallazgo": "1 ids duplicados; pueden romper asociaciones label-for y aria-labelledby.",
   "remediacion": "Haz únicos los ids: los <label for> y aria-labelledby apuntan solo al primero."
  }
 ],
 "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."
}
