CULTIVA IA · Design System

Cultiva Assistant
Design System v1.0

Sistema de diseño para interfaces conversacionales de agentes de IA. Guía de referencia única para diseñadores e ingenieros del producto.

v1.0.0 — junio 2026

Agentic Style  WCAG 2.2 AA
01

Contexto y objetivos

Intención de diseño: Cultiva Assistant es una interfaz de delegación de tareas: el usuario describe lo que quiere en lenguaje natural y el agente lo ejecuta. El diseño no debe competir con el agente; debe desaparecer para que la atención se centre en el resultado.
Principio 1
Delegar, no navegar

La interfaz expone una sola acción primaria: describir una tarea. Los controles secundarios son accesibles pero no dominantes.

Principio 2
🎯
Resultados claros

Cada respuesta del agente expone un output concreto y accionable. Evitar respuestas ambiguas o vagamente útiles.

Principio 3
Accesible por defecto

WCAG 2.2 AA no es opcional. El diseño funciona sin mouse, sin visión, con movimiento reducido y en alta resolución.

02

Tokens de diseño

Variables CSS — layer: foundation
/* Colores */ --color-primary: #FF5701; --color-primary-hover: #E04A00; --color-primary-light: #FFF1EB; --color-secondary: #F6F6F1; --color-success: #16A34A; --color-warning: #D97706; --color-danger: #DC2626; --color-text: #111827; --color-text-muted: #6B7280; /* Espaciado (8pt grid) */ --space-1: 8px; --space-2: 16px; --space-3: 24px; --space-4: 32px; --space-5: 40px; --space-6: 48px; /* Radios */ --radius-sm: 4px; --radius-md: 8px; --radius-lg: 16px; --radius-full: 9999px;
03

Paleta de colores

Colores semánticos
Primary
--color-primary
#FF5701
Secondary
--color-secondary
#F6F6F1
Text
--color-text
#111827
Surface
--color-surface
#FFFFFF
Success
--color-success
#16A34A
Warning
--color-warning
#D97706
Danger
--color-danger
#DC2626
Uso semántico de colores
TokenValorUsoNunca usar para
primary#FF5701CTAs principales, iconos activos, bordes de foco, badges de marcaTexto de cuerpo largo, fondos de pantalla completa
secondary#F6F6F1Fondos de página, headers de card, chips ghostTexto sobre fondo blanco (ratio insuficiente)
success#16A34AEstados completados, validaciones positivas, badges de tarea doneAcciones primarias (confunde semántica)
warning#D97706Clarificaciones pendientes, información incompletaErrores destructivos (usar danger en su lugar)
danger#DC2626Errores, acciones irreversibles, validaciones fallidasDecoración, acentos de marca
04

Tipografía

Escala tipográfica
display
Playfair Display · 40px · 800
Cultiva AI
h1
Playfair Display · 32px · 700
Genera tu campaña
h2
Playfair Display · 24px · 700
Resultado del análisis
body-lg
Playfair Display · 18px · 400
El agente ha procesado tu solicitud y ha generado tres opciones de contenido.
body-md
Playfair Display · 16px · 400
Esta es la tipografía por defecto para respuestas del agente y texto de interfaz general.
body-sm
Playfair Display · 14px · 400
Metadata, ayuda contextual, etiquetas secundarias y descripciones de acción.
label-caps
JetBrains Mono · 12px · 600 · UPPERCASE
Tarea completada · 3 resultados
code
JetBrains Mono · 13px · 400
--color-primary: #FF5701;
Reglas tipográficas
ReglaValorNota
Line-height cuerpo1.6–1.7Mejora legibilidad en respuestas largas del agente
Line-height títulos1.1–1.2Compactar para jerarquía visual clara
Max-width texto65chPreviene líneas demasiado largas (>75ch reduce legibilidad)
Contraste mínimo4.5:1 (AA)Verificar siempre text sobre secondary (#F6F6F1)
Mono reservado paralabels, status, códigoNunca usar JetBrains Mono para cuerpo conversacional
05

Sistema de espaciado (8pt grid)

Escala base
--space-1
8px
--space-2
16px
--space-3
24px
--space-4
32px
--space-5
40px
--space-6
48px

Regla: Todos los valores de padding, margin y gap deben ser múltiplos de 8px. Excepción permitida solo para bordes (1–2px) y ring de foco (3px).

06

Componentes

C-01 · Chat Composer (Delegación de tarea)

El componente de entrada es el núcleo del producto. Debe sentirse natural, cómodo y seguro para escribir.

Estado: Default
Estado: Focus (borde primary)

AnatomíaToken/ValorRegla
Container border (default)--color-border · 2px · radius-xlDebe usar 2px (no 1px) para distinguirse del fondo
Container border (focus)--color-border-focus (#FF5701) · 2pxMUST: visible en modo de alto contraste
Textarea font--font-primary · text-base · 400Nunca mono para input conversacional
Send button44×44px · radius-full · primaryMUST: mín. 44px touch target (WCAG 2.5.5)
Send button (disabled)opacity: 0.4 · cursor: not-allowedDeshabilitar mientras textarea esté vacío
C-02 · Agent Response Card

Contiene el output estructurado del agente. Jerarquía clara: quién habla → qué tarea → resultado → acciones.

C
Cultiva Assistant
Tarea: Análisis de márgenes · Shopify
Completado

He analizado 847 pedidos del último mes. Aquí los 3 productos con margen negativo:

Producto Margen Unidades
Kit Inicio Specialty-12.4%34
Suscripción Mensual S-8.1%21
Muestra Gratis Café-2.3%156

AnatomíaToken/ValorRegla
Card border--color-border · 1px · radius-lgSombra shadow-sm solo en respuesta activa
Header background--color-secondaryDiferencia visual agente vs. usuario. MUST mantener
Avatar32px · radius-full · primary bgSiempre initial del agente + fondo primary
Task labelfont-mono · 11px · text-mutedDescribe la tarea ejecutada, no el tipo de IA
Footer accionesflex wrap · gap-1Máx. 3 acciones visibles sin scroll. Priorizar la más probable
C-03 · Task Status Indicator

Comunica el estado de ejecución de una tarea delegada. Nunca ambiguo: el usuario siempre sabe si el agente está trabajando, terminó o necesita atención.

Procesando… running
Completado done
Esperando datos waiting
Error error
/* Animación solo para 'running' — respetar prefers-reduced-motion */ @media (prefers-reduced-motion: no-preference) { .status-running .status-dot { animation: pulse 1.5s infinite; } } @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } }
C-04 · Action Chips (Sugerencias rápidas)

Acciones sugeridas por el agente o atajos frecuentes del usuario. Reducen fricción sin saturar la interfaz.

VarianteUsoEstilo
chip-primaryAcción más probable / recomendadabg-primary · texto blanco · hover: bg-primary-hover
chip-outlineAcciones secundarias alternativasborder-border · texto text · hover: border-primary
chip-ghostAcciones adicionales de menor pesobg-secondary · texto muted · hover: bg-primary-light

MUST: mín. 44px de altura · MUST: etiquetas claras y accionables · NO: más de 4 chips visibles sin colapsar

C-05 · Estados de Error y Clarificación

CLARIFICACIÓN

Necesito más información

Para analizar las ventas, necesito saber el rango de fechas exacto. ¿Te refieres al mes anterior completo (mayo 2026) o los últimos 30 días?

ERROR

No pude completar la tarea

No tengo acceso a tu Shopify en este momento. Por favor verifica la conexión en Ajustes → Integraciones.

ESTADO LOADING (esqueleto)

07

Accesibilidad — WCAG 2.2 AA

Criterios de contraste
PASS Texto principal #111827 / #FFFFFF Ratio: 16.1:1 · AA ✓ · AAA ✓
PASS Primary #FF5701 / #FFFFFF (texto blanco) Ratio: 4.6:1 · AA ✓
PASS Success #16A34A / #F0FDF4 Ratio: 5.2:1 · AA ✓
WARN text-muted #6B7280 / #F6F6F1 Ratio: 4.2:1 · AA ✓ para +18px, FAIL para 14px body

REGLA: text-muted solo se usa en texto 18px+ o con font-weight:700 a 14px. Nunca para cuerpo informativo.

Criterios de interacción (testables)
Criterio WCAGImplementación requeridaCómo verificar
2.4.7 Focus Visibleoutline: 3px solid --color-primary · offset: 2px en todos los elementos interactivosTab por la página: todo elemento activo debe mostrar anillo naranja
2.5.3 Label en nombrearia-label descriptivo en botón enviar: "Enviar tarea al agente"Screen reader anuncia la acción, no el icono
2.3.3 Movimiento@media (prefers-reduced-motion) suspende todas las animacionesActivar reduced-motion en OS, verificar que skeleton y pulse se detienen
1.4.3 ContrasteMín. 4.5:1 para texto normal, 3:1 para texto grande (+18px o 14px bold)Pasar axe-core o WAVE sobre cada componente
2.5.8 Target SizeMín. 44×44px para todos los botones interactivosInspeccionar computed height de chips y botones en mobile
4.1.3 Status Messagesrole="status" o role="alert" en indicadores de tareaScreen reader anuncia cambios de estado sin mover foco
08

Tono y estándares de contenido

Principios de escritura

Hacer — ejemplos correctos

  • ✅ "He analizado 847 pedidos. Aquí los resultados."
  • ✅ "¿Quieres que lo exporte a CSV o PDF?"
  • ✅ "No puedo acceder a tu Shopify. Revisa Ajustes → Integraciones."
  • ✅ "Tarea completada en 4 segundos."

No hacer — ejemplos incorrectos

  • ❌ "Por supuesto, estaré encantado de ayudarte con eso."
  • ❌ "Procesando tu solicitud mediante análisis multimodal de LLM…"
  • ❌ "Ha ocurrido un error en el servicio de terceros."
  • ❌ "Hecho." (sin contexto de qué se hizo)
Reglas de etiquetado de acciones
ContextoFormato recomendadoEjemplo
Botón de acción primariaVerbo + objeto (sin artículo)"Exportar CSV" no "Descargar el archivo CSV"
Placeholder de textareaInstrucción abierta, no pregunta"Describe qué necesitas que haga el agente…"
Etiquetas de statusParticipio presente o infinitivo"Procesando…" / "Completado" / "Error"
Mensajes de clarificaciónPregunta directa + opciones concretas"¿Qué rango de fechas? [Opción A] [Opción B]"
Mensajes de errorQué falló + cómo resolverlo"Sin acceso a Shopify. Revisar Integraciones."
09

Anti-patrones prohibidos

❌ Prohibido

Botón sin mínimo 44px de altura:

altura: ~22px — falla WCAG 2.5.8

✅ Correcto

Botón con touch target adecuado:

altura: 44px — cumple WCAG 2.5.8

❌ Prohibido

Texto muted pequeño sobre secondary:

Resultado del análisis completado.

ratio ~3.1:1 — falla WCAG 1.4.3

✅ Correcto

Texto legible sobre secondary:

Resultado del análisis completado.

ratio 8.3:1 — cumple WCAG 1.4.3

❌ Prohibido

Spacing no múltiplo de 8:

padding: 5px 11px

rompe grid · genera desalineaciones

✅ Correcto

Spacing en grid de 8pt:

padding: 8px 16px

--space-1 · --space-2 · alineado

10

QA Checklist — Code Review

Ejecutar en cada pull request que modifique componentes de Cultiva Assistant.

  • Tokens: Todos los colores, espaciados y radios usan variables CSS del sistema. Ningún valor hardcoded.
    foundation
  • Touch targets: Todos los elementos interactivos tienen mínimo 44×44px (inspeccionar en DevTools mobile).
    a11y
  • Contraste: Pasar axe-core sobre el componente. Zero errores de contraste WCAG 1.4.3.
    a11y
  • Focus visible: Tab por todos los interactivos. Anillo de foco naranja (--color-primary, 3px) visible en cada elemento.
    a11y
  • Reduced motion: Activar "Reducir movimiento" en macOS/iOS. Todas las animaciones (skeleton, pulse) se detienen.
    a11y
  • Screen reader: VoiceOver/NVDA anuncia nombre, rol y estado de cada componente sin saltar nada.
    a11y
  • Estados completos: Cada botón/chip tiene implementados: default, hover, focus, active, disabled. No solo "default".
    ux
  • Estado vacío: El composer deshabilitado cuando textarea está vacío. El card de respuesta tiene estado loading implementado.
    ux
  • Etiquetas de acción: Todos los botones usan "Verbo + Objeto". Ninguno etiquetado como "OK", "Hecho" o "Continuar" sin contexto.
    content
  • Responsive: Chips-group hace wrap en mobile. Cards no overflow en 375px. Composer funciona en single-line y multiline.
    responsive
  • Tipografía: JetBrains Mono solo en labels/status/código. Playfair Display en todo el resto. Sin mezclas.
    foundation
  • Semántica HTML: Botones son <button>, links son <a>. Status indicators tienen role="status". Inputs tienen <label> asociado.
    a11y