Saltearse al contenido

Sistema de Diseño — manual-churreria


1. Paleta de colores

Derivada de Paleta C (startup fresca / clara) adaptada a documentation hub con acento violeta técnico (carácter IA/agéntico). Fuente: ux.md v1 §3.1 + §3.2.

1.1. Fondos (Backgrounds)

—color-bg
#F8FAFC · slate-50
Fondo de página

—color-surface
#FFFFFF · white
Área de contenido

—color-sidebar-bg
#F1F5F9 · slate-100
Sidebar de navegación

—color-code-bg
#F1F5F9 · slate-100
Código inline

—color-code-block-bg
#0F172A · slate-900
Bloque código multilínea (dark)

1.2. Texto

Aa

—color-text
#0F172A · slate-900
Cuerpo principal

17.9:1 sobre bg
Aa

—color-text-muted
#475569 · slate-600
Metadatos, captions

7.4:1 sobre bg
Aa

—color-text-faint
#94A3B8 · slate-400
Texto auxiliar ≥14px

3.5:1 ⚠️ excepción
Aa

—color-text-on-dark
#F8FAFC · slate-50
Texto sobre code-block-bg

17.9:1

1.3. Primary y Accent

Primary

—color-primary
#2563EB · blue-600
Links, acciones, sección activa

5.4:1
Primary:hover

—color-primary-hover
#1D4ED8 · blue-700
Links hover

Accent

—color-accent
#7C3AED · violet-600
Carácter IA/agéntico

6.9:1
Accent Soft

—color-accent-soft
#EDE9FE · violet-50
Fondo callout técnico

1.4. Bordes

—color-border #E2E8F0 · slate-200

—color-border-strong #CBD5E1 · slate-300

1.5. Callouts semánticos

—color-callout-note #EFF6FF · blue-50

—color-callout-warn #FFFBEB · amber-50

—color-callout-tip #F0FDF4 · green-50

—color-callout-tech #EDE9FE · violet-50

1.6. Tabla de contraste completa

Token de textoToken de fondoRatioWCAG 2.2 AA regular (≥4.5:1)WCAG 2.2 AA texto grande (≥3:1)
--color-text #0F172A--color-bg #F8FAFC17.9:1
--color-text #0F172A--color-surface #FFFFFF18.9:1
--color-text-muted #475569--color-bg #F8FAFC7.4:1
--color-text-muted #475569--color-surface #FFFFFF7.7:1
--color-primary #2563EB--color-surface #FFFFFF5.4:1
--color-primary #2563EB--color-sidebar-bg #F1F5F95.1:1
--color-accent #7C3AED--color-surface #FFFFFF6.9:1
--color-text-on-dark #F8FAFC--color-code-block-bg #0F172A17.9:1
--color-text-faint #94A3B8--color-surface #FFFFFF3.5:1⚠️ Solo ≥14px

2. Tipografía

Fuente: ux.md v1 §3.3. Sin web fonts externas — sin penalización de red en LCP.

2.1. Familias tipográficas

El arnés churrerIA
ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789

—font-body
system-ui, -apple-system, BlinkMacSystemFont, “Segoe UI”, Roboto, sans-serif
Para: cuerpo, titulares, UI

agente.po, ciclo.md
const x = 42; // comentario

—font-mono
ui-monospace, “SF Mono”, Menlo, Monaco, Consolas, monospace
Para: código, paths, identificadores

2.2. Escala tipográfica

H1 — Título principal (2rem / 32px, 700)

H2 — Sección principal (1.5rem / 24px, 600)

H3 — Sub-sección (1.25rem / 20px, 600)

H4 — Sub-sub-sección (1rem / 16px, 600)

Body — Cuerpo del texto (1rem / 16px, 400). Interlineado 1.6 para lectura larga. Ancho máximo 72ch para confort de lectura según USA-012 (entre 45-75 caracteres por línea).

Small / auxiliar — 14px, color-text-muted. Usado en captions, metadatos, fechas. Mínimo absoluto del sistema.

Tiny / faint — 14px mono, color-text-faint. Solo para LiveDocBadge, timestamps. Excepción USA-013.

2.3. Parámetros de layout de texto

ParámetroValorFuente
Tamaño base16pxUSA-012
Auxiliar mínimo14pxUSA-012
max-width contenido72chUSA-012 + ux.md §3.4
Interlineado body1.6ux.md §3.3
Interlineado titulares1.2ux.md §3.3

3. Espaciado y Radios

3.1. Escala de espaciado

TokenValorVisual
--space-14px
--space-28px
--space-312px
--space-416px
--space-520px
--space-624px
--space-832px
--space-1040px
--space-1248px
--space-1664px

3.2. Radios de borde

—radius-sm
2px
—radius-md
4px
—radius-lg
6px
—radius-xl
8px
—radius-2xl
12px
—radius-full
9999px (pill)

4. Iconografía


5. Componentes

Catálogo de los 13 componentes identificados en ux.md v1 §9. Cada uno con su mock visual, variantes de estado y notas de accesibilidad.

5.1. Callout (info / warning / tip / tech)

💡 Nota

Callout de tipo note — información complementaria no crítica. Fondo —color-callout-note.

⚠️ Advertencia

Callout de tipo warning — atención necesaria. Fondo —color-callout-warn.

✅ Tip

Callout de tipo tip — recomendación positiva. Fondo —color-callout-tip.

🤖 Técnico / Agéntico

Callout de tipo tech — información de carácter técnico o agéntico. Fondo —color-callout-tech. Acento violeta marca el carácter IA del sistema.

Accesibilidad: todos los callouts usan role="note". Los de advertencia añaden aria-label="Advertencia". El texto del tipo no depende solo del color.

5.2. LiveDocBadge

↑ Footer global en todas las páginas. Implementado en src/components/LiveDocBadge.astro.

Accesibilidad: <aside> con aria-label, <dl>/<dt>/<dd> semánticos, <time> con datetime ISO. Texto usa --color-text-faint ≥14px (excepción USA-013 documentada).

5.3. AgentCard

PO — Product Owner

Carril: Calidad funcional (CAL-*)Hereda: Arquitectura

Participa en: E1, E2, E3, E4, E6

Voz del Stakeholder en el equipo. Traduce la necesidad en funcional verificable y coordina la entrega de valor.

Variantes: una por agente (8 total: PO, Director, Arquitecto, UX, Backend, Frontend, SRE, QA). Los tags de carril usan --color-accent-soft / --color-callout-note según categoría.

5.4. Tabla (TableDocs)

ArtefactoPropietarioTipoEstado
funcional.md v2POMD + render PDF/HTMLfirmado D-1
tecnica.md v1ArquitectoMD + render PDF/HTMLfirmado D-1
ux.md v1UXMDfirmado D-1
arbol-contenidos.md v1UXMD (Mermaid)firmado D-1
acta-kickoff.md v1DirectorMD + render PDF/HTMLfirmado D-1

Accesibilidad: <table> con <th scope="col"> en cabecera. Responsive con overflow-x: auto en contenedor.

5.5. CodeBlock (inline y multilínea)

Inline: ciclo.md, etapa-2, ux.md v1 §3.2 — fondo --color-code-bg (#F1F5F9), fuente --font-mono.

Multilínea (dark theme, fondo --color-code-block-bg #0F172A):

scripts/generar-manual.py
def extraer_seccion(source_path: str, seccion_id: str) -> str:
"""Extrae un bloque de contenido del arnés según su ID de sección."""
with open(source_path, "r", encoding="utf-8") as f:
contenido = f.read()
# … aplicar allowlist de extracción
return contenido

5.6. Heading con ancla

Etapa 2 — Kickoff y definición a alto nivel #

↑ El icono de ancla (#) aparece al hover. Visible siempre en teclado para navegación por focus.

Accesibilidad: el ancla tiene aria-label descriptivo. No depende solo del hover — el ancla es navigable por teclado (Tab).

Ver Etapa 2 — Kickoff y definición a alto nivel

(link interno — texto descriptivo)

Astro Starlight — documentación oficial

(link externo — icono ↗ + aria-label)

Etapa 2 — foco visible

(estado focus — outline 2px primary)

Accesibilidad: texto de link siempre descriptivo (prohibido “haz clic aquí”). Links externos con rel="noopener noreferrer" + indicador visual + aria-label.

5.8. Button

EstadoDescripción
DefaultFondo --color-accent, texto blanco
HoverFondo más oscuro (--color-accent +10% dark)
FocusOutline 2px --color-primary, offset 2px
ActiveFondo --color-accent con scale(0.98)
Disabledaria-disabled, cursor not-allowed, opacidad reducida

5.9. Paginación (Prev/Next)

Accesibilidad: aria-label completo en cada link. Flechas con aria-hidden. Navegable por teclado.

5.10. Breadcrumb

Accesibilidad: <nav aria-label="Migas de pan"> + <ol> semántico + aria-current="page" en el último item + separadores con aria-hidden.

5.11. Sidebar (desktop y mobile drawer)

↑ Sidebar desktop (240px fijo). Sección activa marcada con color accent + fondo accent-soft. Navegación con Tab completa.

Mobile drawer (≤640px): el sidebar se colapsa. Un botón en el topbar lo despliega como overlay lateral. aria-expanded, aria-hidden en el overlay, focus trap mientras está abierto, prefers-reduced-motion respetado.

5.12. Layout Docs (estructura de página completa)

La estructura de página interior del manual sigue el patrón de documentation hubs de referencia (GitBook, Docusaurus, Starlight):

┌──── Topbar (mobile) / Nav header (desktop) ─────────────────────────────┐
│ churrerIA [búsqueda Pagefind] [theme toggle] │
├──── Sidebar (240px, desktop persistente) ────┬──── Contenido (max 72ch) ─┤
│ ▸ Concepto │ <nav> breadcrumb │
│ ▸ Ciclo │ <main> │
│ ● Etapa 2 │ <h1> título │
│ Etapa 3 │ contenido │
│ ▸ Gates │ callouts │
│ ▸ Agentes │ tablas │
│ En esta página: │ </main> │
│ Flujo normal │ <nav> paginación │
│ Flujos alt. │ <aside> LiveDocBadge │
└──────────────────────────────────────────────┴───────────────────────────┘

Implementado por Astro Starlight out-of-the-box con override del Footer slot para el LiveDocBadge.

Ir al contenido principal

↑ En producción el skip link está visualmente oculto (clip) y solo aparece al recibir foco (Tab #1). Este mock lo muestra visible para ilustrar el estilo.

Accesibilidad: primer elemento del DOM. Visible al recibir foco. href apunta a #main-content (el <main> del layout). Permite a usuarios de teclado/lector de pantalla saltar directamente al contenido sin recorrer el sidebar.


6. Responsive — Breakpoints

ViewportRangoComportamiento
Móvil< 640pxSidebar colapsado en → drawer lateral overlay. Contenido full-width. Topbar compacto.
Tablet640–1023pxSidebar colapsado por defecto, toggle visible. Contenido en columna central ancha.
Desktop≥ 1024pxSidebar izquierdo persistente (240px) + contenido central (max 72ch) + índice de página derecho (≥1280px).

Mínimo móvil: 360px (USA-019). Desktop referencia: 1280px; funcional desde 1024px.

6.1. Maqueta mobile (≤ 640px)

churrerIA
🔍

Etapa 2 — Kickoff

Contenido full-width. Sin sidebar visible. Navegación vía topbar ☰.


7. Tokens CSS — Referencia completa

Todos los tokens definidos en src/styles/tokens.css (P-02.a). Estado: pre-S-2 (se confirman como definitivos tras firma del Stakeholder).

:root {
/* Backgrounds */
--color-bg: #F8FAFC; /* slate-50 */
--color-surface: #FFFFFF;
--color-sidebar-bg: #F1F5F9; /* slate-100 */
--color-code-bg: #F1F5F9;
--color-code-block-bg: #0F172A; /* slate-900 */
/* Texto */
--color-text: #0F172A; /* slate-900 */
--color-text-muted: #475569; /* slate-600 */
--color-text-faint: #94A3B8; /* slate-400 — solo ≥14px */
--color-text-on-dark: #F8FAFC;
/* Primary */
--color-primary: #2563EB; /* blue-600 */
--color-primary-hover: #1D4ED8; /* blue-700 */
/* Accent */
--color-accent: #7C3AED; /* violet-600 */
--color-accent-soft: #EDE9FE; /* violet-50 */
/* Bordes */
--color-border: #E2E8F0; /* slate-200 */
--color-border-strong: #CBD5E1; /* slate-300 */
/* Callouts */
--color-callout-note: #EFF6FF; /* blue-50 */
--color-callout-warn: #FFFBEB; /* amber-50 */
--color-callout-tip: #F0FDF4; /* green-50 */
--color-callout-tech: #EDE9FE; /* violet-50 */
/* Tipografía */
--font-body: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
--font-mono: ui-monospace, "SF Mono", Menlo, Monaco, Consolas, monospace;
/* Layout */
--content-max-width: 72ch;
--line-height-body: 1.6;
--line-height-heading: 1.2;
}

8. WCAG 2.2 AA — Declaración de cumplimiento

CriterioEstadoNotas
1.4.3 Contraste (AA)✅ (con excepción)Todos los pares ≥4.5:1 excepto --color-text-faint (excepción USA-013 declarada, solo ≥14px)
1.4.4 Resize textTipografía en rem/em, sin tamaños fijos en px salvo excepciones documentadas
1.3.1 Información y relaciones<nav> semánticos, <table> con <th>, <dl> en badge, <h1>...<h4> jerárquicos
2.1.1 TecladoSidebar, drawer, paginación, links, skip link — todo navegable por Tab
2.4.3 Focus visibleOutline 2px --color-primary, offset 2px en todos los focusable
2.4.6 Headings y etiquetasTitulares descriptivos, labels en formularios
4.1.2 Nombre, función, valoraria-label, aria-expanded, aria-current="page", aria-hidden donde corresponde
Reduced motion@media (prefers-reduced-motion: reduce) en tokens.css deshabilita todas las animaciones
Idioma<html lang="es"> (Starlight config: defaultLocale: 'es')

Validación automatizada: axe-core en CI sobre rutas /, /ciclo/etapa-2, /agentes/po, /gates, /privacidad (P-08 step 9, umbral a11y ≥90).


9. Heredabilidad entre proyectos del arnés

El sistema de diseño de manual-churreria introduce el patrón “documentation hub” al catálogo del arnés:

Pieza nuevaDescripciónReusable en proyectos futuros
Layout docsSidebar + breadcrumb + contenido + paginaciónSí, para cualquier proyecto de documentación
Callout techVariante agéntico/IA (violeta)Sí, para proyectos del arnés que documenten agentes
AgentCardFicha estructurada de agenteSí, para futuras versiones del manual
LiveDocBadgeIndicador de documentación vivaSí, si otros proyectos tienen regeneración periódica
Paleta Paleta-C claraBase visual para docs hubSí, como paleta de referencia para documentation hubs

Sistema de diseño — versión 1 (P-11 Etapa 4) · Sub-gate 4.2 S-2 · acta-diseno.md v1 · Propietario: UX churrerIA