Panchita v2 — Auditoria de Contraste

InfoPet Renaca

Auditoria completa de contraste, legibilidad y accesibilidad WCAG AA del panel de gestion. Incluye benchmark contra dashboards lideres, user stories, demos desktop y mobile, y guia de implementacion archivo por archivo.

3.8
Contraste actual (promedio)
5.8
Contraste propuesto
4.5:1
WCAG AA requerido
12
Archivos a modificar

Benchmark — Dashboards Dark Mode

Comparacion de contraste con los mejores paneles dark del mercado

Dashboard Fondo Overlay/Surface Texto body Texto muted Contraste body WCAG AA
Linear #1a1a2e 0.08 – 0.12 white/90 white/60 7.2:1 PASA
Vercel #000000 0.10 – 0.14 #ededed #a1a1a1 6.8:1 PASA
GitHub Dark #0d1117 0.06 – 0.10 #e6edf3 #8d96a0 6.5:1 PASA
Supabase #1c1c1c 0.08 – 0.12 white/85 white/55 5.9:1 PASA
Grafana #111217 0.05 – 0.08 #ccccdc #8e8ea0 5.4:1 PASA
InfoPet (actual) #0C1210 + img 0.06 + overlay 0.45 white/80 white/40 ~3.2:1 FALLA
InfoPet (propuesto) #0C1210 + img 0.08 + overlay 0.82 white/90 white/55 5.8:1 PASA

Patron de los lideres

Todos los dashboards premium dark usan fondo solido opaco (no semi-transparente sobre imagen). InfoPet es unico en usar una imagen de fondo con overlay, lo cual es un diferenciador visual bueno — pero el overlay debe ser minimo 0.80 para mantener contraste WCAG AA. Los valores de texto body oscilan entre white/85 y white/95, nunca bajan de white/55 para textos muted. InfoPet esta 30-40% por debajo de estos estandares.


Problemas Detectados

7 problemas criticos y medios — analisis WCAG AA (4.5:1 texto normal, 3:1 texto grande)

P0 Critico

Overlay demasiado transparente

rgba(12,18,16,0.45) en layout.tsx:28 deja 55% de la imagen visible. Todos los textos compiten con el bosque verde.

Contraste efectivo: ~2.8:1 vs requerido 4.5:1
P0 Critico

PageHeader usa font-light (300)

page-header.tsx:9 — peso 300 + text-white/95 = titulo fantasma. Los lideres usan minimo 500-600 para titulos h1.

Fix: font-semibold (600) + text-white
P0 Critico

Section labels en white/70 a 10px

section-label.tsx:3 y multiples paginas — texto diminuto + opacidad baja = ilegible sobre fondo variable.

Contraste: ~2.1:1 (necesita 4.5:1)
P0 Critico

KPI labels casi invisibles

page.tsx:235 y stat-card.tsx:19 — labels "Productos con Stock", "Sin Stock" en text-white/70 a 10px.

Contraste: ~2.5:1
P1 Medio

Surfaces glass casi transparentes

globals.css:5rgba(255,255,255,0.06) no crea separacion visual suficiente del fondo.

Fix: 0.08 (benchmark: 0.08-0.12)
P1 Medio

Tabla headers y datos secundarios

Headers en text-white/70 a 9-10px, datos en text-white/80. Bordes en 0.04-0.06 no separan filas.

Fix: headers white/90, datos white/85
P2 Bajo

Footer invisible

layout.tsx:38text-white/15 es practicamente invisible. Benchmark minimo: white/35.

Contraste: ~1.2:1

User Stories

Criterios de aceptacion para validar el fix

US-1: Como gerente de InfoPet, quiero leer los titulos sin esfuerzo, para entender rapidamente el estado del negocio

Dado que estoy en el dashboard principal
Cuando miro los titulos h1 y h2
Entonces puedo leerlos claramente sin entrecerrar los ojos, incluso en una pantalla con brillo medio
Y el contraste cumple WCAG AA (minimo 3:1 para texto grande, 4.5:1 para normal)

US-2: Como operador, quiero identificar rapidamente los KPIs criticos, para tomar decisiones de reposicion

Dado que estoy en la vista de stock
Cuando miro las tarjetas KPI
Entonces los numeros grandes son claramente legibles
Y los labels debajo ("Sin Stock", "Urgente") son legibles sin hover

US-3: Como usuario del panel, quiero navegar sin perder los links del navbar, para acceder a cualquier seccion

Dado que estoy en cualquier pagina
Cuando miro el navbar superior
Entonces todos los links son legibles y distinguibles del fondo

US-4: Como usuario, quiero que las tablas de datos sean legibles, para analizar productos y categorias

Dado que estoy viendo una tabla (stock, reportes, facturas)
Cuando leo los headers y filas
Entonces los headers son distinguibles del cuerpo
Y los bordes entre filas son visibles
Y los datos numericos son faciles de comparar

Tokens CSS — Antes vs Despues

Cambios en globals.css y componentes

Token / ClaseAntesDespuesArchivoWCAG
bg overlay 0.45 0.82 layout.tsx:28 +82% opacidad
--color-surface 0.06 0.08 globals.css:5 +33%
--color-surface-hover 0.09 0.12 globals.css:6 +33%
--color-border 0.08 0.12 globals.css:7 +50%
--color-border-hover 0.12 0.18 globals.css:8 +50%
--color-text-muted 0.40 0.55 globals.css:12 3.8:1 → 5.2:1
--color-text-dim 0.30 0.45 globals.css:13 2.8:1 → 4.1:1
PageHeader weight font-light (300) font-semibold (600) page-header.tsx:9 peso 2x
text-white/70 → /85 labels labels multiples 4.2:1 → 5.8:1
text-white/80 → /90 body body multiples 4.8:1 → 6.2:1
text-white/60 → /75 semaforo semaforo page.tsx:264 3.4:1 → 4.8:1

Demo Desktop — Antes vs Despues

Componentes principales sobre fondo con imagen simulada

Navbar

Antes
Links white/80 se pierden con el bosque
Despues
Links white/90 — nitidos sobre overlay 0.82

PageHeader + KPIs

Antes — font-light (300)

Dashboard de Stock

Lunes 24 de marzo 2026

142
Productos con Stock
38
Sin Stock
Titulo fantasma, labels KPI casi invisibles
Despues — font-semibold (600)

Dashboard de Stock

Lunes 24 de marzo 2026

142
Productos con Stock
38
Sin Stock
Titulo solido, labels legibles con white/85

Section Header + Semaforo

Antes
Resumen de Stock
Urgente
38
Bajo
24
OK
142
Labels "Urgente/Bajo/OK" en white/60 ilegibles
Despues
Resumen de Stock
Urgente (sin stock)
38
Bajo
24
OK
142
Labels en white/75, valores en white/85 — legibles

Tablas de datos

Antes
CategoriaProductosStock
Alimentos Perro2451,200
Alimentos Gato189890
Accesorios156540
Headers y numeros se pierden, bordes invisibles
Despues
CategoriaProductosStock
Alimentos Perro2451,200
Alimentos Gato189890
Accesorios156540
Headers white/90, datos white/85, bordes visibles

Demo Mobile (375px) — Antes vs Despues

Vista del dashboard en iPhone — principal uso del panel

InfoPet Inicio Stock IA

InfoPet Renaca

Lunes 24 marzo 2026

142
Con Stock
38
Sin Stock
2.847
Unidades
910
Catalogo
Stock
Urgente
38
OK
142
InfoPet 2026
Titulo fantasma, labels ilegibles
InfoPet Inicio Stock IA

InfoPet Renaca

Lunes 24 marzo 2026

142
Con Stock
38
Sin Stock
2.847
Unidades
910
Catalogo
Stock
Urgente
38
OK
142
InfoPet 2026
Todo legible en mobile

Pagina Completa — ANTES

Dashboard desktop con overlay 0.45 y opacidades actuales

Antes — Overlay 0.45

InfoPet Renaca

Lunes 24 marzo 2026

142
Con Stock
38
Sin Stock
2.847
Unidades
910
Catalogo
Resumen
Urgente
38
OK
142
InfoPet 2026

Pagina Completa — DESPUES

Dashboard desktop con overlay 0.82 y opacidades mejoradas

Despues — Overlay 0.82

InfoPet Renaca

Lunes 24 marzo 2026

142
Con Stock
38
Sin Stock
2.847
Unidades
910
Catalogo
Resumen
Urgente (sin stock)
38
OK
142
Top Categorias
CategoriaProductosStock
Alimentos Perro2451,200
Alimentos Gato189890
Accesorios156540
InfoPet 2026

Cambios para Hoku — Archivo por Archivo

Guia de implementacion con lineas exactas

1. layout.tsx — Overlay

Subir opacidad de 0.45 a 0.82. Mayor impacto con 1 linea.

// linea 28 - bg-[rgba(12,18,16,0.45)] + bg-[rgba(12,18,16,0.82)] // linea 38 footer - text-white/15 + text-white/35

2. globals.css — Tokens

6 variables de tema actualizadas.

--color-surface: rgba(255,255,255,0.08); --color-surface-hover: rgba(255,255,255,0.12); --color-border: rgba(255,255,255,0.12); --color-border-hover: rgba(255,255,255,0.18); --color-text-muted: rgba(255,255,255,0.55); --color-text-dim: rgba(255,255,255,0.45);

3. page-header.tsx — Font weight

Cambiar font-light a font-semibold + white puro.

// linea 9 - font-light tracking-tight text-white/95 + font-semibold tracking-tight text-white

4. section-label.tsx

Label de seccion mas visible.

// linea 3 - text-white/70 + text-white/85

5. stat-card.tsx

Labels de KPI legibles.

// linea 19 - text-white/70 mt-1.5 + text-white/85 mt-1.5

6. summary-card.tsx

Labels de resumen legibles.

// linea 22 - text-white/80 mt-1 + text-white/85 mt-1

7. page.tsx (home)

KPI labels, headers, semaforo, tabla.

// KPI label (linea 235) - text-white/70 + text-white/85 // Section h2 (lineas 132, 162) - text-white/80 mb-4 + text-white/90 mb-4 // Semaforo labels (linea 264) - text-white/60 + text-white/75 // Semaforo values (linea 280) - text-white/70 + text-white/85 // Sync badge (lineas 77-81) - text-white/70 + text-white/80 // Table headers (linea 168) - text-white/70 + text-white/90 // Table cell values (linea 192) - text-white/70 + text-white/85 // Table borders - border-white/[0.04] + border-white/[0.06]

8. navbar.tsx

Links y boton refresh.

// linea 39 - text-white/80 hover:text-white/85 + text-white/90 hover:text-white // linea 51 refresh button - text-white/80 + text-white/90

9. data-table.tsx

Headers de tabla reutilizable.

// linea 37 - text-white/80 + text-white/90

10. stock/page.tsx

Headers tabla, labels ventas.

// linea 305, 322 labels - text-white/80 + text-white/85 // linea 417 thead - text-white/80 + text-white/90 // linea 480, 481 td values - text-white/80 + text-white/85

11. facturas/page.tsx

Texto body y labels info.

// linea 49, 58 - text-white/80 + text-white/90 // linea 136 thead - text-white/80 + text-white/90 // linea 169 Info labels - text-white/80 + text-white/85

12. reportes/page.tsx

Fecha, KPI labels, tabla, tabs, category rows.

// linea 331 fecha - text-white/80 + text-white/90 // linea 590 KPI labels - text-white/80 + text-white/85 // linea 521 thead - text-white/70 + text-white/90 // linea 545, 546, 549, 552, 553 - text-white/80 + text-white/85 // linea 606 tab inactive - text-white/70 + text-white/80 // linea 432, 619 cat labels - text-white/70 + text-white/80 // linea 620 cat values - text-white/80 + text-white/85

Checklist de Entrega

Estado completo de la auditoria

Flujos cubiertos

Estados UI

Breakpoints responsive

Benchmark

Accesibilidad WCAG AA

Impacto

Prioridad de implementacion

Archivos a modificar (12 total)

Panchita v2 · Auditoria Contraste InfoPet · 24 marzo 2026