Design
Sistema de Diseño
Para qué

Las decisiones visuales canónicas del producto: paleta, tipografía, componentes, movimiento y accesibilidad.

Audiencia

Diseño e ingeniería frontend.

ADEN Design System

Versión: 1.0 Last updated: 2026-04-05 Status: Canonical reference

“Ciencia premium accesible” — dark luxury con datos de salud comprensibles.

Este documento es LA referencia autoritativa para todas las decisiones de diseño visual en ADEN. Cualquier conflicto con otros documentos se resuelve a favor de este archivo.


Tabla de Contenidos

  1. Filosofía de Diseño
  2. Estrategia de Color: Modo Dual
  3. Paleta Dark Mode
  4. Paleta Light Mode
  5. Colores de Acento
  6. Efectos Visuales
  7. Tipografía
  8. Espaciado y Layout
  9. Componentes
  10. Iconografia
  11. Dirección Fotografica
  12. Prohibiciones Absolutas

1. Filosofía de Diseño

Posición en el Mercado

ADEN no es wellness suave (Noom, Headspace) ni performance puro (WHOOP). ADEN es ciencia premium accesible: una interfaz oscura de lujo con datos de salud que cualquier persona puede entender.

Posición de ADEN en el mercado

Principios Fundamentales

Principio Significado Ejemplo
Oscuridad con propósito El dark mode no es estética — es funcional. Reduce fatiga ocular en datos de salud, enfoca la atención en métricas y crea jerarquía visual Scores brillantes sobre fondo oscuro
Datos comprensibles Cualquier persona, sin importar edad o nivel técnico, debe entender sus métricas de salud en 3 segundos Anillo de progreso con score grande, label claro
Lujo accesible Premium sin ser exclusivo. Sofisticado sin intimidar Glassmorphism sutil, no excesivo
Restricción deliberada Cada elemento gana su lugar por propósito, no por decoración. Menos es más Máximo 6-8 cards por página
Un foco por pantalla Cada vista tiene UNA acción principal y UNA métrica dominante Hero card con CTA único

Referencias de Identidad Visual

Referencia Que tomamos Que NO tomamos
WHOOP Datos sobre fondo oscuro, precisión visual Estética de performance extremo
Ultrahuman Score prominente, anillos de progreso Complejidad de métricas
Calm Inmersion nocturna, navy profundo Asociación exclusiva con meditación
Apple Health Anillos iconicos, simplicidad de datos Dependencia del ecosistema Apple
Oura Cambio dinámico entre modos, scores claros Enfoque en wearable físico

2. Estrategia de Color: Modo Dual

Regla de Aplicación

ADEN usa dos modos visuales con propositos específicos. El dark mode es la experiencia principal; el light mode es utilitario.

Contexto Modo Razón
Dashboard principal Dark Impacto visual, enfoque en métricas
Scores y métricas Dark Números brillantes sobre fondo oscuro
Onboarding Dark Primera impresion premium
Visualización de datos Dark Contraste superior para graficas
Formularios Light Legibilidad óptima para data entry
Configuración Light Funcional, sin distracciones
Lectura extendida Light Reduce fatiga en texto largo
Data entry médico Light Precisión en inputs críticos

Resolución del Azul Primario

Existen dos azules en documentos previos. Esta es la resolución definitiva:

Color Hex Rol Origen
Persian Blue 800 #0f2fc7 Azul primario canonico. CTAs, hero elements, botones, selección UI Kit, wireframes, CLAUDE
Blue 600 #2563EB Variante de marca para materiales impresos, presentaciones, y contextos donde el contraste sobre blanco requiere un azul más luminoso Branding doc 04-paleta-colores
Blue 500 #3B82F6 Glow effect, blur, anillos, estados semanticos “revisar” Color research

Regla: En la app, siempre usar #0f2fc7 como primario. #2563EB solo aparece en materiales de marca externos.


3. Paleta Dark Mode

La experiencia principal de ADEN. Dashboard, scores, onboarding, métricas.

Fondos

Elemento Color Hex Tailwind Uso
Background principal Deep Navy #0A0F1E bg-[#0A0F1E] Base de app, fondo de pantalla
Surface / Cards Dark Blue #111827 bg-gray-900 Cards, contenedores, paneles
Surface Elevated Slate #1E293B bg-slate-800 Cards hover, modals, dropdowns
Border Subtle White rgba(255,255,255,0.08) border-white/[0.08] Bordes de cards y separadores
Border Hover Light White rgba(255,255,255,0.12) border-white/[0.12] Hover state de bordes

Texto sobre Dark

Propósito Color Hex Tailwind Contraste vs #0A0F1E
Primary / Titulos White #F9FAFB text-gray-50 18:1 (AAA)
Secondary / Body Gray Light #9CA3AF text-gray-400 6.2:1 (AA)
Muted / Labels Gray #6B7280 text-gray-500 4.1:1 (AA large)
Disabled Dark Gray #4B5563 text-gray-600 2.6:1 (decorativo)

CSS Variables (Dark Mode)

[data-mode="dark"] {
  --bg-primary: #0A0F1E;
  --bg-surface: #111827;
  --bg-elevated: #1E293B;
  --border-default: rgba(255, 255, 255, 0.08);
  --border-hover: rgba(255, 255, 255, 0.12);
  --text-primary: #F9FAFB;
  --text-secondary: #9CA3AF;
  --text-muted: #6B7280;
}

4. Paleta Light Mode

Modo secundario. Formularios, configuración, lectura, data entry.

Fondos

Elemento Color Hex Tailwind Uso
Background principal Cream #F5F5F0 bg-[#F5F5F0] Base de secciones light
Cards White #FFFFFF bg-white Cards, modals, paneles
Cards Hover Warm Gray #FAFAF8 bg-[#FAFAF8] Hover sutil
Border Neutral 200 #E5E5E5 border-neutral-200 Bordes de cards
Divider Neutral 100 #F5F5F5 divide-neutral-100 Separadores internos

Texto sobre Light

Propósito Color Hex Tailwind Contraste vs #FFFFFF
Primary / Titulos Neutral 900 #171717 text-neutral-900 16.75:1 (AAA)
Secondary / Body Neutral 500 #525252 text-neutral-500 7.09:1 (AAA)
Muted / Labels Neutral 400 #A3A3A3 text-neutral-400 3.1:1 (AA large)
Placeholder Neutral 300 #D4D4D4 text-neutral-300 Decorativo

Por qué Cream y no White puro

El cream #F5F5F0 está validado por investigación:

  • Reduce fatiga ocular al bajar contenido de luz azul
  • Menos luminancia que blanco puro, más confortable
  • Percibido como menos clínico y frio
  • Usado por Noom (#F6F4EE) y Headspace (#FFF8F0)

CSS Variables (Light Mode)

[data-mode="light"] {
  --bg-primary: #F5F5F0;
  --bg-surface: #FFFFFF;
  --bg-elevated: #FFFFFF;
  --border-default: #E5E5E5;
  --border-hover: #D4D4D4;
  --text-primary: #171717;
  --text-secondary: #525252;
  --text-muted: #A3A3A3;
}

5. Colores de Acento

Azul Primario (Marca)

La escala completa de Persian Blue, con el shade 800 como primario.

Shade Hex Uso
50 #E9F4FF Backgrounds sutiles (light mode)
100 #D7EBFF Hover backgrounds (light mode)
200 #B7D9FF Decorativo
500 #3A6DFF
600 #1840FF
700 #0E33F4
800 #0f2fc7 Primario: CTAs, hero, botones, selección
800/10 rgba(15,47,199,0.1) Icon backgrounds, tints
900 #163099
950 #0D1A59

Azul Glow (Efectos)

Color Hex Uso
Glow Blue #3B82F6 Gaussian blur, glow rings, anillos de score
Glow Blue/30 rgba(59,130,246,0.3) Orbes de luz, decoración de fondo
Glow Blue/50 rgba(59,130,246,0.5) Text-shadow en métricas

Colores Semanticos

Usados para comunicar estado de datos de salud y estados de interfaz.

Estado Color Hex Dark Mode Light Mode Uso
Óptimo Emerald #10B981 Texto, iconos, anillos Texto, badges Biomarcadores en rango, confirmaciones
Revisar Blue #3B82F6 Texto, iconos, glow Texto, badges Biomarcadores a vigilar, info
Atención Red Soft #F87171 Texto, iconos Texto Biomarcadores críticos, alertas
Neutro Gray #9CA3AF Texto muted Texto muted Sin datos, inactivo

Importante: No usar rojo/verde como único diferenciador. Siempre agregar iconos y labels de texto (12% de hombres tienen dificultad distinguiendo rojo de verde).

Contraste en Dark (#0A0F1E) Ratio Nivel
Emerald #10B981 5.9:1 AA
Blue #3B82F6 4.8:1 AA
Red Soft #F87171 6.8:1 AA
Gray #9CA3AF 6.2:1 AA

Colores de Categoría (Uso Limitado)

Para diferenciación de módulos o categorías de salud. Solo en iconos y etiquetas pequenas.

Categoría Color Hex
Sueño Violeta #8B5CF6
Nutrición Teal #14B8A6
Actividad Cyan #06B6D4
Premium Indigo #6366F1

6. Efectos Visuales

Estos efectos definen la estética premium de ADEN en dark mode. No se aplican en light mode.

Glow Orbs (Decoración de Fondo)

Orbes de luz difusa que aparecen detrás de hero cards y secciones destacadas.

.glow-orb {
  position: absolute;
  width: 300px;
  height: 300px;
  background: radial-gradient(
    circle,
    rgba(15, 47, 199, 0.3) 0%,
    transparent 70%
  );
  filter: blur(60px);
  pointer-events: none;
  z-index: 0;
}

/* Variante azul claro */
.glow-orb--light {
  background: radial-gradient(
    circle,
    rgba(59, 130, 246, 0.2) 0%,
    transparent 70%
  );
  filter: blur(80px);
}

Glassmorphism (Cards en Dark Mode)

El efecto principal para cards sobre dark backgrounds.

.glass-card {
  background: rgba(17, 24, 39, 0.6);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 16px;
}

/* Variante elevada */
.glass-card--elevated {
  background: rgba(30, 41, 59, 0.7);
  backdrop-filter: blur(24px);
  -webkit-backdrop-filter: blur(24px);
  border: 1px solid rgba(255, 255, 255, 0.12);
}

Tailwind equivalente:

<div class="bg-gray-900/60 backdrop-blur-xl border border-white/[0.08] rounded-2xl">
  <!-- contenido -->
</div>

Metric Glow (Números Destacados)

Para scores y métricas grandes que necesitan impacto visual.

.metric-glow {
  color: #F9FAFB;
  text-shadow: 0 0 20px rgba(59, 130, 246, 0.5);
}

/* Variante por estado */
.metric-glow--optimal {
  text-shadow: 0 0 20px rgba(16, 185, 129, 0.5);
}

.metric-glow--attention {
  text-shadow: 0 0 20px rgba(248, 113, 113, 0.4);
}

Score Rings (Anillos de Progreso)

Elemento circular iconico de ADEN. Inspirado en Apple Watch pero en azul electrico.

.score-ring {
  width: 120px;
  height: 120px;
  border-radius: 50%;
  background: conic-gradient(
    #3B82F6 0deg,
    #3B82F6 calc(var(--progress) * 3.6deg),
    rgba(59, 130, 246, 0.15) calc(var(--progress) * 3.6deg),
    rgba(59, 130, 246, 0.15) 360deg
  );
  display: flex;
  align-items: center;
  justify-content: center;
}

.score-ring__inner {
  width: 100px;
  height: 100px;
  border-radius: 50%;
  background: #0A0F1E;
  display: flex;
  align-items: center;
  justify-content: center;
}

.score-ring__value {
  font-size: 36px;
  font-weight: 700;
  color: #F9FAFB;
  text-shadow: 0 0 20px rgba(59, 130, 246, 0.5);
}

Transiciones y Animaciones

Animación Duración Uso
Skeleton shimmer 260-500ms Carga de contenido
FadeInUp 300ms con delay escalonado (0.2s entre elementos) Entrada de cards
Score ring fill 800ms ease-out Animación de progreso
Glow pulse 3s ease-in-out infinite Orbes decorativos
Hover scale 200ms Interacción de cards
@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(12px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes shimmer {
  0% { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}

.skeleton {
  background: linear-gradient(
    90deg,
    rgba(255, 255, 255, 0.04) 25%,
    rgba(255, 255, 255, 0.08) 50%,
    rgba(255, 255, 255, 0.04) 75%
  );
  background-size: 200% 100%;
  animation: shimmer 1.5s infinite;
}

7. Tipografía

Font Family

Google Sans Flex (variable weight) — elegido por:

  • Soporte completo de pesos (100-900)
  • Números tabulares nativos
  • Optimizada para pantallas
  • Buena legibilidad en tamanhos pequenos
font-family: 'Google Sans Flex', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

Escala Tipografica: Dark Mode

Para dashboard, scores, métricas — tipografía grande, bold, alto impacto.

Elemento Tamaño Peso Tailwind Ejemplo
Score numerico 48-72px 700-800 text-6xl font-bold o text-[72px] font-extrabold 87 (score de salud)
Título de página 32-48px 700 text-4xl font-bold Tu Salud Hoy
Título de sección 24px 600 text-2xl font-semibold Biomarcadores
Título de card 18-20px 600 text-lg font-semibold Glucosa en Ayunas
Body 16-18px 400 text-base Texto descriptivo
Label / Caption 12-14px 500 text-xs font-medium o text-sm font-medium ULTIMA ACTUALIZACION
Micro 10-11px 400 text-[10px] Notas al pie

Escala Tipografica: Light Mode

Para formularios, settings, lectura — tipografía más moderada, funcional.

Elemento Tamaño Peso Tailwind
Título de página 30px 700 text-3xl font-bold
Título de sección 20px 600 text-xl font-semibold
Título de card 16px 500 text-base font-medium
Body 14px 400 text-sm
Label 12px 500 text-xs font-medium
Caption 12px 400 text-xs

Números Tabulares

Todos los datos de salud DEBEN usar números tabulares para alineación correcta.

.tabular-nums {
  font-variant-numeric: tabular-nums;
}
<span class="tabular-nums text-6xl font-bold">87.4</span>

Colores de Texto

Modo Propósito Color Tailwind
Dark Primary #F9FAFB text-gray-50
Dark Secondary #9CA3AF text-gray-400
Dark Muted #6B7280 text-gray-500
Dark On Blue #FFFFFF text-white
Dark On Blue (secondary) rgba(255,255,255,0.7) text-white/70
Light Primary #171717 text-neutral-900
Light Secondary #525252 text-neutral-500
Light Muted #A3A3A3 text-neutral-400
Light On Blue #FFFFFF text-white

Copywriting

Todo texto en la UI es en español colombiano. Sin excepciones.

NO usar Usar en su lugar
Biomarcadores Tus exámenes
Dashboard Inicio
Cumplimiento Tu progreso
Loading… Cargando…
Submit Enviar
Cancel Cancelar
Save Guardar
Settings Configuración

Ciudad en mocks: Medellín (siempre) Nombre por defecto: María


8. Espaciado y Layout

Sistema de Grid: 8px

Todo el espaciado se basa en multiplos de 8px. Esto incluye padding, margin, gap, y tamaño de elementos.

Token Pixeles Tailwind Uso
space-1 4px p-1, gap-1 Micro espaciado interno
space-2 8px p-2, gap-2 Espaciado interno mínimo
space-3 12px p-3, gap-3 Espaciado entre elementos
space-4 16px p-4, gap-4 Padding de cards compactas
space-5 20px p-5, gap-5 Padding estándar de cards
space-6 24px p-6, gap-6 Padding generoso
space-8 32px p-8, gap-8 Separación entre secciones
space-12 48px p-12, gap-12 Top padding de contenido
space-16 64px p-16 Espaciado mayor
space-32 128px pb-32 Bottom padding (para footer fijo)

Patrones de Layout Comunes

Patrón Descripción Tailwind
Card padding Padding interno de cards p-4 o p-5
Separación entre secciones Gap vertical entre bloques space-y-8
Espaciado entre elementos Gap vertical dentro de sección space-y-2 o space-y-3
Contenido con footer fijo Padding bottom suficiente pb-32
Top de contenido Espacio desde header pt-12
Ancho máximo (mobile) Container principal max-w-xl mx-auto

Bento Grid (Dashboards)

Para páginas tipo dashboard con múltiples métricas. Usar 6 columnas con jerarquía visual.

<div class="grid grid-cols-1 md:grid-cols-6 gap-4">
  <!-- HERO: Elemento dominante -->
  <div class="col-span-6 md:col-span-2 md:row-span-2">
    <!-- Score principal, métrica hero -->
  </div>

  <!-- SUPPORT: 2-3 elementos de acción -->
  <div class="col-span-6 md:col-span-2">
    <!-- Card de acción -->
  </div>
  <div class="col-span-6 md:col-span-2">
    <!-- Card de acción -->
  </div>

  <!-- CONTEXT: Información secundaria -->
  <div class="col-span-6 md:col-span-4">
    <!-- Tabla, lista, gráfico -->
  </div>
</div>

Jerarquía obligatoria:

  1. HERO — Un elemento dominante (col-span-2 row-span-2). Score principal o métrica clave.
  2. SUPPORT — 2-3 elementos de acción (col-span-2). CTAs y métricas secundarias.
  3. CONTEXT — Información de soporte (col-span-4+). Tablas, listas, detalles.

Regla: Cards con tamanos VARIADOS. Nunca una grilla uniforme de cards identicas.

Border Radius

Elemento Clase Pixeles
Botones / Pills rounded-full 9999px
Cards rounded-2xl 16px
Inputs rounded-xl 12px
Elementos pequenos rounded-lg 8px
Iconos / Badges rounded-xl 12px

Z-Index

Capa Z-Index Uso
Base z-0 Contenido normal
Elevated z-10 Cards flotantes
Sticky z-30 Elementos pegajosos
Footer fijo z-40 Navegación inferior
Header fijo z-50 Header, skeleton overlay
Modal overlay z-50 Modals y overlays

9. Componentes

9.1 Botones

Dark Mode

<!-- Primary CTA -->
<button class="px-6 py-3.5 bg-[#0f2fc7] text-white rounded-full font-medium
  hover:bg-[#0a1f8a] active:scale-[0.98] transition-all duration-200">
  Continuar
</button>

<!-- Secondary -->
<button class="px-6 py-3.5 bg-white/10 text-white rounded-full font-medium
  hover:bg-white/15 transition-all duration-200">
  Ver mas
</button>

<!-- Ghost -->
<button class="px-6 py-3.5 text-gray-400 rounded-full font-medium
  hover:text-white hover:bg-white/5 transition-all duration-200">
  Cancelar
</button>

Light Mode

<!-- Primary CTA -->
<button class="px-6 py-3.5 bg-[#0f2fc7] text-white rounded-full font-medium
  hover:bg-[#0a1f8a] active:scale-[0.98] transition-all duration-200">
  Continuar
</button>

<!-- Secondary -->
<button class="px-6 py-3.5 text-neutral-600 font-medium rounded-full
  hover:bg-neutral-200/50 transition-all duration-200">
  Cancelar
</button>

<!-- Outline -->
<button class="px-6 py-3.5 border border-neutral-300 text-neutral-700 rounded-full font-medium
  hover:border-neutral-400 transition-all duration-200">
  Editar
</button>

9.2 Cards

Glass Card (Dark Mode)

<div class="bg-gray-900/60 backdrop-blur-xl border border-white/[0.08] rounded-2xl p-5">
  <h3 class="text-lg font-semibold text-gray-50">Título de Card</h3>
  <p class="text-sm text-gray-400 mt-1">Descripción secundaria</p>
</div>

Glass Card Elevated (Dark Mode)

<div class="bg-slate-800/70 backdrop-blur-2xl border border-white/[0.12] rounded-2xl p-5">
  <!-- contenido -->
</div>

Hero Card (Dark Mode)

<div class="relative overflow-hidden bg-[#0f2fc7] rounded-2xl p-6">
  <!-- Glow orb decorativo -->
  <div class="absolute -top-20 -right-20 w-60 h-60 bg-blue-400/20 rounded-full blur-3xl"></div>
  <div class="relative z-10">
    <p class="text-white/70 text-sm font-medium">Tu Score de Salud</p>
    <p class="text-5xl font-bold text-white tabular-nums mt-2">87</p>
  </div>
</div>

White Card (Light Mode)

<div class="bg-white border border-neutral-200 rounded-2xl p-5">
  <h3 class="text-base font-medium text-neutral-900">Título</h3>
  <p class="text-sm text-neutral-500 mt-1">Descripción</p>
</div>

9.3 Inputs

Dark Mode

<div>
  <label class="text-xs font-medium text-gray-500 mb-2 block uppercase tracking-wide">
    Nombre completo
  </label>
  <input class="w-full px-4 py-3.5 bg-white/5 border border-white/[0.08] rounded-xl
    text-sm text-gray-50 placeholder:text-gray-600
    focus:outline-none focus:border-[#3B82F6]/50 focus:ring-2 focus:ring-[#3B82F6]/10
    transition-all" placeholder="María Garcia" />
</div>

Light Mode

<div>
  <label class="text-xs font-medium text-neutral-500 mb-2 block">
    Nombre completo
  </label>
  <input class="w-full px-4 py-3.5 bg-transparent border border-neutral-300 rounded-xl
    text-sm text-neutral-900 placeholder:text-neutral-400
    focus:outline-none focus:border-[#0f2fc7] focus:ring-2 focus:ring-[#0f2fc7]/10
    transition-all" placeholder="María Garcia" />
</div>

9.4 Pills / Tags

Dark Mode

<!-- Selected -->
<span class="px-4 py-2 bg-[#0f2fc7] text-white text-sm font-medium rounded-full">
  Opción A
</span>

<!-- Unselected -->
<span class="px-4 py-2 border border-white/[0.12] text-gray-400 text-sm font-medium rounded-full
  hover:border-white/20 hover:text-gray-200 cursor-pointer transition-all">
  Opción B
</span>

Light Mode

<!-- Selected -->
<span class="px-4 py-2.5 bg-[#0f2fc7] text-white text-sm font-medium rounded-full">
  Opción A
</span>

<!-- Unselected -->
<span class="px-4 py-2.5 border-2 border-neutral-300 text-neutral-600 text-sm font-medium rounded-full
  hover:border-neutral-400 cursor-pointer transition-all">
  Opción B
</span>

9.5 Score Ring

<div class="relative w-32 h-32">
  <svg class="w-full h-full -rotate-90" viewBox="0 0 120 120">
    <!-- Track -->
    <circle cx="60" cy="60" r="52" fill="none"
      stroke="rgba(59,130,246,0.15)" stroke-width="8" />
    <!-- Progress -->
    <circle cx="60" cy="60" r="52" fill="none"
      stroke="#3B82F6" stroke-width="8" stroke-linecap="round"
      stroke-dasharray="326.73"
      stroke-dashoffset="calc(326.73 - (326.73 * var(--progress) / 100))"
      class="transition-all duration-800 ease-out" />
  </svg>
  <div class="absolute inset-0 flex items-center justify-center">
    <span class="text-4xl font-bold text-gray-50 tabular-nums"
      style="text-shadow: 0 0 20px rgba(59,130,246,0.5)">
      87
    </span>
  </div>
</div>

9.6 Skeleton Loading

Toda página DEBE tener skeleton con shimmer como primer estado.

Dark Mode Skeleton

<div class="animate-pulse space-y-4">
  <div class="h-10 bg-white/5 rounded-xl w-48"></div>
  <div class="h-40 bg-white/5 rounded-2xl"></div>
  <div class="h-24 bg-white/5 rounded-2xl"></div>
  <div class="h-24 bg-white/5 rounded-2xl"></div>
</div>

Light Mode Skeleton

<div class="animate-pulse space-y-4">
  <div class="h-9 bg-neutral-200 rounded-xl w-48"></div>
  <div class="h-32 bg-neutral-200 rounded-2xl"></div>
  <div class="h-12 bg-neutral-200 rounded-xl"></div>
</div>

9.7 Header Fijo

Dark Mode

<header class="sticky top-0 z-50 bg-[#0A0F1E]/80 backdrop-blur-xl border-b border-white/[0.08]">
  <div class="max-w-xl mx-auto px-4 py-3 flex items-center justify-between">
    <!-- contenido -->
  </div>
</header>

Light Mode

<header class="sticky top-0 z-50 bg-[#F5F5F0]/80 backdrop-blur-xl">
  <div class="max-w-xl mx-auto px-4 py-3 flex items-center justify-between">
    <!-- contenido -->
  </div>
</header>
<footer class="fixed bottom-0 left-0 right-0 z-40
  bg-[#0A0F1E]/80 backdrop-blur-xl border-t border-white/[0.08] p-4">
  <div class="max-w-xl mx-auto">
    <button class="w-full px-6 py-3.5 bg-[#0f2fc7] text-white rounded-full font-medium">
      Continuar
    </button>
  </div>
</footer>

9.9 Alertas e Info Boxes

Info (Dark Mode)

<div class="flex items-start gap-3 p-4 bg-[#3B82F6]/10 border border-[#3B82F6]/20 rounded-xl">
  <!-- HugeIcon info -->
  <p class="text-sm text-gray-300">Texto informativo aquí</p>
</div>

Info (Light Mode)

<div class="flex items-start gap-3 p-4 bg-neutral-50 rounded-xl">
  <!-- HugeIcon info -->
  <p class="text-sm text-neutral-600">Texto informativo aquí</p>
</div>

10. Iconografia

Pack Único Permitido

HugeIcons (@hugeicons/react) es el UNICO pack de iconos permitido en ADEN.

npm install @hugeicons/react
import { Home01Icon, Calendar01Icon } from '@hugeicons/react';

<Home01Icon size={24} color="currentColor" variant="stroke" />

Estilo

Propiedad Valor
Variante stroke (outline)
Peso de trazo 1.5px
Tamaño estándar 20-24px
Tamaño en navigation 24px
Tamaño en cards 20px
Tamaño decorativo 16px
Color (dark) text-gray-400 o text-gray-50
Color (light) text-neutral-500 o text-neutral-900
Color (activo) text-[#0f2fc7] o text-white

Contenedor de Icono

<!-- Dark mode -->
<div class="w-10 h-10 bg-white/5 rounded-xl flex items-center justify-center">
  <Icon size={20} className="text-gray-400" />
</div>

<!-- Light mode -->
<div class="w-10 h-10 bg-[#0f2fc7]/10 rounded-xl flex items-center justify-center">
  <Icon size={20} className="text-[#0f2fc7]" />
</div>

Prohibiciones de Iconografia

  • NO usar inline SVGs dibujados a mano
  • NO usar otros packs de iconos (Heroicons, Lucide, Feather, etc.)
  • NO usar emojis como reemplazo de iconos
  • NO mezclar variantes (stroke y solid en la misma vista)

11. Dirección Fotografica

Estilo Visual

Aspecto Dirección
Plano Macro / close-up (piel, texturas, detalles)
Iluminación Cinematografica, side-lit, con profundidad
Tono Intimo, editorial, autentico
Personas Diversas edades, contexto colombiano
Retoques Minimos. Sin airbrushing. Piel real
Overlays Métricas y datos superpuestos sobre fotografia

Fotografia Permitida

  • Retratos intimistas con iluminación natural o cinematografica
  • Macro de piel, manos, texturas humanas
  • Personas en rutinas cotidianas de salud (no posando)
  • Familias multigeneracionales en contextos naturales
  • Médicos en interacción humana, cercana
  • Datos visualizados sobre fotografia real

Anti-Fotografia (Prohibido)

Evitar Razón
Stock de doctores con estetoscopio Generico, no autentico
Modelos fitness en gimnasio ADEN es para todas las edades
Personas en batas de hospital Asociación con enfermedad, no prevención
Naturaleza como shorthand de “wellness” No diferenciador
Perfección airbrushed Destruye confianza
Jeringas, sangre, procedimientos Genera ansiedad
Sonrisas forzadas tipo stock No genuino
Tecnología como protagonista La persona es protagonista

12. Prohibiciones Absolutas

Reglas que no admiten excepción. Si se viola alguna, el diseño se rechaza.

Colores

Prohibición Razón Alternativa
NO amarillo/amber como color primario de estado Conflicto con accesibilidad y marca Usar #3B82F6 (blue) para “revisar”
NO bg-neutral-900, bg-black, bg-gray-900 como background principal Demasiado plano, sin profundidad Usar #0A0F1E (Deep Navy)
NO gradientes como decoración Contradicen estética flat dark Solo en glow orbs con blur
NO rojo en badges o contadores Excesivamente alarmante en salud Usar #0f2fc7 (azul)

Elementos

Prohibición Razón Alternativa
NO inline SVGs Inconsistencia visual Solo HugeIcons (@hugeicons/react)
NO emojis en la UI No profesional Usar HugeIcons
NO texto en inglés Producto en español colombiano Traducir todo
NO más de 6-8 cards en páginas densas Sobrecarga cognitiva Priorizar, paginar, o colapsar
NO sombras pesadas en cards regulares Ruido visual Solo border sutil o glassmorphism
NO bordes más gruesos que 1px Ruido visual border default
NO cards con fondo de color (green, amber, etc.) Rompe jerarquía Cards white o glass, acento en texto/icono

Layout

Prohibición Razón Alternativa
NO grillas uniformes de cards identicas Monotonia visual Variar tamanos con bento grid
NO llenar todo el espacio Whitespace es intencional Dejar respirar el contenido
NO múltiples hero cards en una vista Diluye el foco Un hero por página

Proceso

Prohibición Razón
NO disenar sin responder las 5 preguntas de contexto Garantiza propósito
NO omitir skeleton + fadeInUp Son estados obligatorios

Las 5 Preguntas (Obligatorias Antes de Disenar)

  1. STAKEHOLDER: Paciente, Médico, o Cuidador?
  2. ORIGEN: De donde viene el usuario?
  3. ACCION: Que UNA cosa debe hacer aquí?
  4. DESTINO: A donde puede ir después?
  5. HERO: Cual es el elemento visual principal?

Apendice: Accesibilidad

WCAG 2.1 Requisitos

Estándar Requisito
WCAG 1.4.1 Color NO puede ser el único medio visual de transmitir información
WCAG 1.4.3 (AA) 4.5:1 para texto normal, 3:1 para texto grande
WCAG 1.4.6 (AAA) 7:1 para texto normal, 4.5:1 para texto grande
WCAG 1.4.11 3:1 para componentes UI

Reglas para Datos de Salud

  • Nunca usar solo color para indicar estado (siempre agregar icono + label)
  • Siempre proveer alternativas para combinaciones rojo/verde (12% de hombres tienen daltonismo rojo-verde)
  • Preferir azul + naranja o azul + amarillo como pares distinguibles universalmente
  • Mínimo 16px para texto de datos de salud
  • Mínimo 19px para contenido dirigido a adultos mayores

Validación de Contraste (Dark Mode)

Combinación Ratio Resultado
#F9FAFB sobre #0A0F1E 18:1 AAA
#3B82F6 sobre #0A0F1E 4.8:1 AA
#9CA3AF sobre #0A0F1E 6.2:1 AA
#10B981 sobre #0A0F1E 5.9:1 AA
#F87171 sobre #0A0F1E 6.8:1 AA

Validación de Contraste (Light Mode)

Combinación Ratio Resultado
#171717 sobre #FFFFFF 16.75:1 AAA
#0f2fc7 sobre #FFFFFF 7.2:1 AAA
#525252 sobre #FFFFFF 7.09:1 AAA
#A3A3A3 sobre #FFFFFF 3.1:1 AA large

Apendice: CSS Variables Completas

:root {
  /* Brand */
  --aden-blue: #0f2fc7;
  --aden-blue-hover: #0a1f8a;
  --aden-blue-glow: #3B82F6;
  --aden-blue-light: #E9F4FF;

  /* Semantic */
  --aden-optimal: #10B981;
  --aden-review: #3B82F6;
  --aden-attention: #F87171;

  /* Shared */
  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-lg: 16px;
  --radius-full: 9999px;
}

[data-mode="dark"] {
  --bg-primary: #0A0F1E;
  --bg-surface: #111827;
  --bg-elevated: #1E293B;
  --border-default: rgba(255, 255, 255, 0.08);
  --border-hover: rgba(255, 255, 255, 0.12);
  --text-primary: #F9FAFB;
  --text-secondary: #9CA3AF;
  --text-muted: #6B7280;
}

[data-mode="light"] {
  --bg-primary: #F5F5F0;
  --bg-surface: #FFFFFF;
  --bg-elevated: #FFFFFF;
  --border-default: #E5E5E5;
  --border-hover: #D4D4D4;
  --text-primary: #171717;
  --text-secondary: #525252;
  --text-muted: #A3A3A3;
}

Este documento es la fuente de verdad para todo diseño visual en ADEN. Ante conflictos con otros archivos, este documento prevalece.