AKRIBIS GroupBrand
Sistema digital
3.4

Estándares web

Propuesto

¿Qué nivel de calidad cumple todo sitio?

Especificación

  1. WCAG 2.2 AA es el piso en toda superficie (criterio 4). Lo que una comprobación estática puede ver se comprueba en cada build: lang en html, un solo h1 y ningún nivel de título salteado, un main y un enlace para saltar, alt en cada imagen, nombre o aria-hidden en cada SVG en línea, texto en cada enlace, etiqueta y autocomplete en cada control. El foco (el anillo), el tamaño de objetivo (24 px) y el movimiento reducido los resuelven los tokens de forma; el contraste lo prueba el build de color.
  2. Direcciones: cada página bajo su idioma (/es/, /en/, /pt/), cada segmento traducido, minúsculas ASCII con guiones y barra final; la raíz redirige por Accept-Language con el español como reserva; x-default apunta a la raíz. Las direcciones viejas redirigen de forma permanente.
  3. Idiomas: lang igual al idioma de la página (es, en, pt); hreflang para los tres más x-default, absolutos, la propia página incluida; un canonical que es la dirección propia. Números, fechas y unidades con Intl en el idioma de la página (es-AR, pt-BR, en): coma decimal en español y portugués, espacio fino antes de la unidad y del %.
  4. SEO en los sitios indexables: título de 10 a 70 caracteres, descripción de 30 a 160, og:title, og:description, og:url y og:image (la foto de perfil de la marca a 1200 px salvo que la página tenga la suya), JSON-LD Organization en el inicio con AKRIBIS Group como parentOrganization, y un sitemap con todas las páginas. Brand es noindex mientras es borrador y lleva todo salvo el sitemap.
  5. Presupuestos por página, sin comprimir: HTML 200 kB, CSS 80 kB, JS 150 kB, fuentes 260 kB, a lo sumo tres fuentes precargadas; cada imagen con width y height; fuentes solo desde Brand, nunca desde un CDN de fuentes; las hojas de estudio y los logotipos como archivos, no incrustados.
  6. Consentimiento: ningún script de terceros se carga antes del consentimiento; un script de un dominio de analítica o publicidad va condicionado (data-consent). El valor por defecto es ninguno: donde nada rastrea no hace falta un aviso de cookies. La única analítica sin consentimiento es la baliza sin cookies de Cloudflare.
  7. El verificador (brand/src/check-site.ts) corre estas reglas sobre un sitio construido, más los patrones de la anatomía para la clase del sitio, lista cada infracción y termina con error; este sitio lo corre en sus pruebas en cada build, con cero infracciones en 175 páginas; cada sitio lo corre antes de publicar.
  8. No estático, igual regla: manejo por teclado de cada componente, foco visible, nada perdido con 400 % de zoom ni a 320 px, movimiento detenido con prefers-reduced-motion, formularios que anuncian sus errores. Se comprueba a mano en cada componente compartido cuando se construye.
  9. Tres reglas más (ADR-0031, ADR-0032): pages, cada página compartida existe en cada idioma en su slug; headers, el sitio publica en _headers la base de cabeceras (X-Content-Type-Options, Referrer-Policy, Permissions-Policy, X-Frame-Options); naming, ninguna página escribe una grafía prohibida en su texto. El verificador corre dentro del build de cada sitio: la integración de @akribis/site lo ejecuta sobre dist/ y una infracción falla el build.

Para volver a razonar

  • Comprobaciones con navegador (axe, contraste calculado, teclado) en la integración continua, cuando los sitios la tengan: hoy ninguno tiene CI.
  • Imágenes: formatos (AVIF, WebP), srcset y el tamaño del LCP; hoy ningún sitio usa astro:assets.
  • La migración de las direcciones actuales (español en la raíz, segmentos sin traducir) a la gramática: tabla de redirecciones por sitio.

Evidencia para auditar

  • brand/standards.yaml · brand/src/check-site.ts · brand/test/site.test.ts (175 pages, 26 rules, 0 violations after the fixes this decision caused: canonical, descriptions, x-default, heading levels, inlined sheets)
  • Audit (2026-10-05): hreflang on 3 of 5 sites (one always pointing at the homes), canonical on 4, sitemap on 2, JSON-LD on 2, a skip link on 1, focus styles missing on 1, Google Fonts on 1, reCAPTCHA scripts on 2, no CI, no a11y tooling, no Intl utilities; lang tags es-AR/pt-BR on 3 sites and bare codes on 2
  • Audit: all five sites keep Spanish at the root (prefixDefaultLocale: false); only akribis_info translates section slugs, and keeps Spanish for legal and thank-you pages in every language
  • Audit: akribis_info scripts/i18n-integrity.mjs, akleia_info scripts/check-i18n-parity.mjs, solfarma_com scripts/checks.mjs (AA contrast, no font CDN, links resolve): three partial checkers
  • WCAG 2.2 (1.4.11, 2.4.11, 2.4.13, 2.5.8, 2.3.3) · llmstxt.org · schema.org Organization
  • Websites/akribis_info · audit of 2026-10-06: no skip link, no _headers, reCAPTCHA and the analytics beacon without consent, 222 inline styles, an SSR adapter for static pages, 232 accepted type errors

Entrega

  • Los estándares como dato (standards.json)
  • el verificador que cualquier sitio corre sobre su build
  • y este sitio como primer sitio que los cumple.

Decisión

Figuras

Direcciones e idiomas

  • url-grammar^/[a-z0-9]+(?:/[a-z0-9-]+)*/$automático
  • html-langes, en, ptautomático
  • hreflangx-defaultautomático
  • canonicalselfautomático

Accesibilidad

  • h11automático
  • heading-orderh1 → h2 → h3automático
  • mainmainautomático
  • skip-link#mainautomático
  • img-altaltautomático
  • svg-namedrole="img" | aria-hiddenautomático
  • link-texttext | aria-labelautomático
  • controls-labelledlabelautomático
  • autocompletename, email, tel, organizationautomático
  • focus-visible--focus-ringmanual
  • target-size24 pxmanual
  • reduced-motion--duration-* → 0manual

SEO

  • title10–70automático
  • description30–160automático
  • open-graphog:title, og:description, og:image, og:urlautomático
  • structured-dataOrganizationautomático
  • sitemapsitemap.xmlautomático

Presupuestos por página, sin comprimir

  • budget-html200 kBautomático
  • budget-css80 kBautomático
  • budget-js150 kBautomático
  • budget-fonts260 kBautomático
  • preloads≤ 3automático
  • img-dimensionswidth, heightautomático
  • remote-fontsfonts.googleapis.com, fonts.gstatic.com, use.typekit.netautomático

Consentimiento

  • consentgoogletagmanager.com, google-analytics.com, connect.facebook.net, hotjar.com, clarity.ms, doubleclick.net, cloudflareinsights.comautomático

Páginas y cabeceras

  • pages/<lang>/<slug>/ · /404.htmlautomático
  • headersX-Content-Type-Options, Referrer-Policy, Permissions-Policy, X-Frame-Optionsautomático

Nombres

  • namingSOL FARMA · Sol Farma · Sol-Farma · AKIOT · Akiot · AKRIBIS · One · AKRIBIS·One · AKRIBIS ONE · Akribis One · Parte de AKRIBISautomático

pnpm check corre el verificador sobre el sitio construido; una infracción falla el build. Cualquier sitio: node brand/src/check-site.ts dist

Los estándares como dato (ADR-0025, ADR-0031, ADR-0032): las reglas que el verificador corre sobre un sitio construido, con su valor, y las tres que no puede ver. La integración de @akribis/site lo corre tras cada build de cada sitio, y este sitio tras el suyo: cero infracciones o no hay build.