NovaSynth UI v2.0
Sistema de diseño completo de estética sci-fi para la plataforma NovaSynth AI. Tokens, componentes y reglas implementables con React + TypeScript + Tailwind CSS.
/* Design intent: superficies oscuras con acentos neon de alto contraste que mantengan WCAG 2.2 AA */
/* Importar en globals.css o tailwind.config.js */
:root {
--color-primary: #3B82F6;
--color-secondary: #8B5CF6;
--color-success: #16A34A;
--color-warning: #D97706;
--color-danger: #DC2626;
--color-bg: #04050D; /* superficie base */
--color-surface-1: #0A0E1A; /* sidebar, header */
--color-surface-2: #0F1629; /* cards, inputs */
--color-text: #E8EEFF; /* texto principal */
--color-text-muted:#4A5B85; /* placeholder, label */
}
/* Fonts: Audiowide (display/body), JetBrains Mono (código/etiquetas) · Escala: 12/14/16/20/24/32 */
/* Base 4px · Escala: 4/8/12/16/24/32/48/64 */
/* Variantes: primary · secondary · ghost · danger · disabled · loading */
/* Button: estados requeridos */
.btn-primary { background: linear-gradient(135deg, #3B82F6, #1D4ED8); }
.btn-primary:hover { box-shadow: 0 0 12px rgba(59,130,246,0.6); transform: translateY(-1px); }
.btn:focus-visible { outline: 2px solid #60A5FA; outline-offset: 3px; } /* WCAG 2.2 AA */
.btn[disabled] { opacity: 0.35; cursor: not-allowed; pointer-events: none; }
/* Estados: active · processing · warning · error · completed · neutral */
/* Inputs: default · hover · focus (glow) · error · disabled */
/* Tarjetas de métricas con animación hover y barra de progreso */
/* Pipelines activos · states via badges · row hover highlight */
| Pipeline | Modelo | Estado | Inferencias | Latencia | Acciones |
|---|---|---|---|---|---|
|
data-ingestion-v2
Producción · updated 2h ago
|
gpt-ns-4o | Activo | 1,240,388 | 42ms |
|
|
nlp-classifier-prod
Producción · updated 5m ago
|
ns-embed-v3 | Procesando | 876,021 | 67ms |
|
|
image-ocr-batch
Staging · updated 1d ago
|
vision-ns-2 | Degradado | 12,450 | 312ms |
|
|
erp-sync-nightly
Producción · updated 8h ago
|
ns-agent-v1 | Completado | 8,900 | — |
|
/* Contraste mínimo: 4.5:1 texto normal · 3:1 texto grande · focus-visible obligatorio */
/* Reglas del sistema: lo que NUNCA debe hacerse */
color: #4A5B85;
background: #0A0E1A;
→ ratio 2.9:1, falla AA
/* Botón sin estado focus-visible */
.btn:focus { outline: none; }
→ inaccesible por teclado
/* Espaciado arbitrario */
padding: 13px 22px;
→ fuera de la escala 4px
color: #8B9CC8;
background: #0A0E1A;
→ ratio 4.6:1, pasa AA
/* Focus visible con offset */
.btn:focus-visible {
outline: 2px solid #60A5FA;
outline-offset: 3px;
}
→ visible y accesible
background: #3B82F6;
→ usa tokens semánticos
/* Icono como único indicador de estado */
<span class="red-dot" />
→ los lectores de pantalla no ven el color
/* Texto en mayúsculas sin letter-spacing */
text-transform: uppercase;
→ añadir letter-spacing: 0.12em mínimo
background: var(--color-primary);
→ propagación automática en temas
/* Estado con texto + color */
<Badge dot color="error">
Error
</Badge>
→ color + etiqueta de texto
/* Ejecutar en code review antes de merge a producción */