Guía de estilo visual – Sport Planner
Guía de estilo visual – Sport Planner
Esta guía destila el lenguaje visual de la app para poder replicarlo en otros proyectos (por ejemplo, en una web de marketing, otra herramienta interna, etc.).
1. Fundamentos globales
- Paleta general y ambiente
- Fondo principal:
bg-slate-950con degradados radiales superpuestos:radial-gradient(circle at 20% 20%, rgba(56, 189, 248, 0.08), transparent 45%)radial-gradient(circle at 80% 0%, rgba(168, 85, 247, 0.12), transparent 50%)radial-gradient(circle at 10% 90%, rgba(34, 197, 94, 0.1), transparent 55%)
- Esquema de color:
color-scheme: dark; - Texto base:
text-slate-100sobre fondo casi negro.
- Fondo principal:
- Tipografía
- Importadas desde Google Fonts:
- Títulos / display:
"Poppins"(600–700). - Texto base:
"Inter"(400–700).
- Títulos / display:
- Mapeo Tailwind:
fontFamily.display = ["Poppins", ...sans]fontFamily.sans = ["Inter", ...sans]
- Uso:
- Body:
font-sans. - Encabezados
h1–h4:font-display.
- Body:
- Importadas desde Google Fonts:
- Sombras y profundidad
- Sombra de “glow” principal (
boxShadow.glowen Tailwind):0 0 20px rgba(59, 130, 246, 0.35)(halo azul suave).
- Sombras frecuentes:
- Tarjetas y chips:
shadow shadow-black/20oshadow-black/30. - Destacados:
shadow-sky-500/10,shadow-sky-500/20,shadow-emerald-500/15,shadow-rose-500/10.
- Tarjetas y chips:
- Sombra de “glow” principal (
2. Contenedores y paneles
- Panel principal “glass” (
.glass-panel)- Bordes y radio:
border-radius: 1.5rem(rounded-3xl).border: 1px solid rgba(255,255,255,0.05)(border-white/5).
- Fondo:
background: rgba(255,255,255,0.05)(bg-white/5).
- Desenfoque:
backdrop-filter: blur(24px)aproximado (backdrop-blur-xl).
- Sombra:
box-shadow: 0 25px 50px -12px rgba(0,0,0,0.8), 0 0 20px rgba(56,189,248,0.1)equivalente a:shadow-xl shadow-sky-500/10.
- Uso:
- Bloques principales de contenido en todas las vistas (
HomeView,PlannerView,ObjectivesView, etc.).
- Bloques principales de contenido en todas las vistas (
- Bordes y radio:
- Tarjetas internas sobre glass
- Fondo secundario:
bg-white/5obg-slate-950/60–80según jerarquía.
- Borde:
border-white/10oborder-white/15(más claro que el panel padre).
- Radio:
- Generalmente
rounded-2xl(border-radius: 1rem–1.25rem).
- Generalmente
- Fondo secundario:
- Layout general
- Contenedor:
max-width: 72rem(max-w-6xl) centrado.padding-xprincipal:0.75remen móvil (px-3),1.5remen escritorio (sm:px-6).padding-yprincipal:1.25rem–2.5rem(py-5,sm:py-10).
- Altura mínima:
min-height: 100vhenbody.min-h-screenen layouts con pantalla completa.
- Contenedor:
- Cabecera fija (
AppHeader)- Contenedor del header:
position: sticky; top: 0; z-index: 50.- Fondo:
bg-slate-950/80. - Borde inferior:
border-b border-white/10. - Desenfoque:
backdrop-blur-xl.
- Logo redondo:
- Tamaño:
h-9 w-9(móvil),h-10 w-10(desktop). border-radius: 9999px.- Fondo:
bg-gradient-to-br from-sky-500 to-indigo-500. - Texto:
text-base–text-lg,font-bold,color: #fff.
- Tamaño:
- Contenedor del header:
3. Colores y estados
- Grises y neutros
- Fondo principal:
#020617(bg-slate-950). - Panel oscuro:
bg-slate-900/80–95. - Texto:
- Primario:
#f9fafb(text-slate-100). - Secundario:
text-white/80(~rgba(255,255,255,0.8)). - Terciario:
text-white/60(~rgba(255,255,255,0.6)). - Cuaternario / etiquetas:
text-white/40(~rgba(255,255,255,0.4)).
- Primario:
- Fondo principal:
- Azules / cian (sky/indigo)
- Principal:
sky-500≈#0EA5E9.indigo-500≈#6366F1.
- Usos:
- Botón primario (gradiente).
- Sombras de enfoque (
shadow-sky-400/30). - Bordes activos (
border-sky-400/60,ring-sky-400/70). - Acentos de texto (
text-sky-300para microenlaces).
- Principal:
- Verdes (éxito / presente)
- Tonos usados:
emerald-500(#10B981),emerald-400,emerald-200.
- Ejemplos:
- Badges asistencia prevista: fondo
bg-emerald-500/10, bordeborder-emerald-500/40, textotext-emerald-100. - Toggles “Presente”:
border-emerald-500/60,bg-emerald-500/15–20,shadow-emerald-500/20–25.
- Badges asistencia prevista: fondo
- Tonos usados:
- Rosas / rojos (error / ausente / destructivo)
- Tonos utilizados:
rose-500,rose-400,rose-200,red-500.
- Ejemplos:
- Badges de error:
border-rose-500/40,bg-rose-500/10,text-rose-200. - Botones de eliminar: borde
border-rose-500/40, textotext-rose-300, hoverborder-rose-400,text-rose-200.
- Badges de error:
- Tonos utilizados:
- Paleta de objetivos (
ObjectivesView)- Colores pasteles para categorías, como strings hex en
PASTEL_PALETTE:- Naranjas/rosas/rojos:
#F97316,#FB7185,#F43F5E,#EC4899,#EA580C,#C2410C,#E11D48,#EF4444,#F87171,#FB923C,#F472B6.
- Violetas/morados:
#D946EF,#A855F7,#8B5CF6,#6366F1,#4F46E5,#7C3AED.
- Azules / cian / teal:
#3B82F6,#38BDF8,#0EA5E9,#06B6D4,#14B8A6,#0D9488.
- Verdes / lima / amarillos:
#10B981,#22C55E,#65A30D,#84CC16,#A3E635,#FACC15,#FBBF24,#F59E0B,#FDE047.
- Naranjas/rosas/rojos:
- Estos colores se usan:
- Como fondo de chips (
ObjectiveChip) y halos de paneles relacionados. - Como indicadores en el calendario (
PlannerView), pequeñas barras de color.
- Como fondo de chips (
- Colores pasteles para categorías, como strings hex en
4. Botones y controles principales
- Botón primario (
.btn-primary)- Geometría:
display: inline-flex,align-items: center,justify-content: center.gap: 0.5rem(gap-2).border-radius: 9999px(rounded-full).
- Fondo:
- Gradiente horizontal:
bg-gradient-to-r from-sky-500 via-indigo-500 to-violet-500.
- Gradiente horizontal:
- Tipografía:
font-size: 0.875rem(text-sm).font-weight: 600(font-semibold).- Color:
#fff.
- Espaciado:
padding-left/right: 1rem(px-4).padding-top/bottom: 0.5rem(py-2).
- Interacciones:
transition: all.- Hover:
hover:shadow-glow,hover:scale-[1.01](ligeramente más grande).
- Geometría:
- Botón secundario (
.btn-secondary)- Geometría:
- Igual base (
inline-flex,items-center,justify-center,gap-2,rounded-full).
- Igual base (
- Borde:
border: 1px solid rgba(255,255,255,0.1)(border-white/10).- Hover:
border-white/20.
- Fondo:
background: rgba(255,255,255,0.02–0.05)(bg-white/5o sin fondo).
- Texto:
text-sm,font-semibold, colortext-white/80; hovertext-white.
- Geometría:
- Botones “píldora” contextuales
- Badges de estado / filtros:
rounded-full, borde fino (border-white/15–20),px-2–3,py-0.5–1.- Usados para:
- Estado de visibilidad (
Private/Shared/Public). - Contadores (
+N, “sesión”, etc.).
- Estado de visibilidad (
- Badges de estado / filtros:
- Toggles de asistencia (HomeView)
- Contenedor base:
inline-flex,rounded-full,border,px-3,py-1.5,text-xs–text-sm.- Presente:
border-emerald-500/60,bg-emerald-500/15,text-emerald-100,shadow-sm shadow-emerald-500/20.
- Ausente:
border-white/15,bg-white/5,text-white/60, hoverborder-white/40,text-white.
- Indicador circular interno:
- Tamaño:
h-6 w-6(móvil),h-7 w-7(desktop). - Presente:
border-emerald-400,bg-emerald-400/20,text-emerald-100,shadow-emerald-500/25.
- Ausente:
border-white/25,text-white/40, hoverborder-white/50,text-white/80.
- Tamaño:
- Contenedor base:
5. Formularios
- Campo base (
.input-field)- Ancho:
width: 100%(w-full) por defecto. - Geometría:
border-radius: 1remaprox. (rounded-2xl).border: 1px solid rgba(255,255,255,0.1)(border-white/10).- Fondo:
background: rgba(255,255,255,0.05)(bg-white/5).
- Tipografía:
font-size: 0.875rem(text-sm).- Texto:
color: #fff. - Placeholder:
color: rgba(255,255,255,0.4)(placeholder:text-white/40).
- Espaciado:
padding-left/right: 1rem(px-4).padding-top/bottom: 0.5rem(py-2).
- Estado de foco:
- Borde:
focus:border-sky-400. - Anillo:
focus:ring-2 focus:ring-sky-500/30. outline: none.
- Borde:
- Ancho:
- Textareas
- Mismos estilos de
.input-fieldcon:- Altura mínima:
min-height: 100–140px(min-h-[100px],min-h-[120px],min-h-[140px]según contexto).
- Altura mínima:
- Mismos estilos de
- Labels
- Estilo consistente:
font-size: 0.75rem(text-xs).font-weight: 600para algunos (font-semibold).text-transform: uppercase.letter-spacingamplio:tracking-wideotracking-[0.3em].- Color:
text-white/40–50.
- Estilo consistente:
- Checkboxes y radios
- Check de trabajos completados:
h-5 w-5,rounded-full,border-2 border-white/30,bg-transparent,text-sky-400.
- Checkbox de “asistente activo”:
h-5 w-5,rounded,border-white/20,bg-white/10,text-sky-400.
- Check de trabajos completados:
- Mensajes de feedback en formularios
- Error:
- Borde:
border-red-500/30oborder-rose-500/40. - Fondo:
bg-red-500/10obg-rose-500/10. - Texto:
text-red-200/text-rose-200. - Radio:
rounded-xl–rounded-2xl. - Padding:
px-4 py-3,font-size: 0.875rem.
- Borde:
- Éxito:
- Borde:
border-emerald-500/30–40. - Fondo:
bg-emerald-500/10. - Texto:
text-emerald-200.
- Borde:
- Error:
6. Componentes clave
- Chips de objetivo (
ObjectiveChip)- Fondo:
background-color: objective.colorHex(hex dinámico).
- Geometría:
display: inline-flex,align-items: center,gap: 0.5rem.border-radius: 9999px.- Sombra:
shadow shadow-black/30.
- Texto:
- Color:
text-slate-950. - Peso:
font-medium. - Tamaño:
size="md":text-sm,px-3,py-1.5.size="sm":text-xs,px-2,py-1.
- Color:
- Punto interno:
h-2.5 w-2.5,rounded-full.- Borde:
border-black/20. - Fondo:
bg-white/70.
- Fondo:
- Tarjetas de trabajo / sesión
- Patrones comunes:
- Panel base:
rounded-3xl,border-white/10,bg-white/5,shadow-black/20–30. - Halo de objetivo (cuando hay color):
- Div absolutamente posicionado
inset-0,rounded-3xl,opacity: 0.2–0.3,blur-xl–3xl,backgroundColor: objective.colorHex.
- Div absolutamente posicionado
- Panel base:
- Información tipográfica:
- Título:
text-lg–text-xl,font-semibold, colortext-white. - Subtítulo:
text-sm,text-white/70. - Metadatos:
text-xs,uppercase,tracking-[0.3em],text-white/40.
- Título:
- Patrones comunes:
- Calendario mensual (Planner)
- Celda de día:
h-20,rounded-2xl,border,p-2,text-sm.- Fondo normal:
border-white/10,bg-white/5,text-white/70. - Día seleccionado:
border-sky-400/60,bg-sky-500/20,text-white,shadow-lg shadow-sky-500/20.
- Día de hoy:
- Badge de día:
h-8 w-8,rounded-full,bg-white,text-slate-900.
- Badge de día:
- Indicadores de sesiones:
- Pequeñas barras:
- Tamaño:
h-2 w-6,border-radius: 9999px. backgroundColor: objective.colorHex(orgba(255,255,255,0.4)si sin objetivo).
- Tamaño:
- Pequeñas barras:
- Celda de día:
- Navegación principal
- Navegación desktop:
- Elementos:
rounded-full,px-4,py-2,text-sm,font-medium.- Activo:
- Fondo
bg-white, textotext-slate-900, sombrashadow-lg shadow-sky-400/30.
- Fondo
- Inactivo:
- Texto
text-white/70, hovertext-white,bg-white/10.
- Texto
- Elementos:
- Navegación móvil (panel lateral):
- Panel:
fixed inset-y-4 right-3,w ~ 17rem.rounded-3xl,border-white/10,bg-slate-900/95,p-6,shadow-2xl.
- Items:
rounded-2xl,px-4,py-3,text-sm,font-semibold.- Activo:
- Fondo
bg-white, textotext-slate-900, sombrashadow-sky-400/40.
- Fondo
- Inactivo:
- Texto
text-white/80, hoverbg-white/10.
- Texto
- Panel:
- Navegación desktop:
7. Estados especiales y pantallas completas
- Pantalla de carga (
LoadingScreen)- Fondo:
flex min-h-screen items-center justify-center bg-slate-950.
- Spinner:
h-12 w-12,rounded-full,border-2.border: 2px solid rgba(255,255,255,0.2)global.border-top-color: #38BDF8(border-t-sky-400).animation: spin(rotación continua).
- Texto:
text-sm font-medium text-white/60.
- Fondo:
- Pantalla de login
- Fondo:
- Igual que la app:
bg-slate-950,min-h-screen.
- Igual que la app:
- Card central:
max-w-md,w-full,rounded-3xl.border-white/10,bg-slate-900/80.p-8,shadow-2xl,backdrop-blur.
- Logo:
h-14 w-14,rounded-full,bg-gradient-to-br from-sky-500 to-indigo-500.- Texto
text-xl,font-bold, blanco.
- Fondo:
8. Microdetalles de interacción
- Transiciones
- Prácticamente todos los botones y elementos interactivos tienen:
transitionsobre color, fondo, borde y sombra.
- Pequeñas escalas en hover:
- Botones primarios:
hover:scale-[1.01]. - Chips de colores:
hover:scale-105en la cuadrícula de paleta.
- Botones primarios:
- Prácticamente todos los botones y elementos interactivos tienen:
- Etiquetas y microtexto
- Estilo común para secciones:
text-xs,uppercase.tracking-[0.3em]para títulos de bloque (“TRABAJOS”, “SESIONES DEL MES”).- Color
text-white/40.
- Estilo común para secciones:
- Modal de navegación móvil
- Capa de fondo:
fixed inset-0, fondobg-black/60,backdrop-blur-sm.
- Panel:
- Ver sección de navegación; se percibe como una tarjeta “flotante” con mucho blur y sombra.
- Capa de fondo:
9. Recomendaciones para replicar el estilo
- Mantén:
- Fondo muy oscuro (
#020617) con degradados radiales en cian, violeta y verde muy suaves (opacidades 0.08–0.12). - Tipografía Inter + Poppins con jerarquía clara (display vs body).
- Uso intensivo de chips y paneles “glass” con bordes tenues y blur fuerte.
- Paleta de objetivos como sistema de color principal: cada categoría con un hex pastel; reutiliza esos mismos valores para halos, bordes e indicadores.
- Fondo muy oscuro (
- Al trasladar a otra app / web:
- Reutiliza los estilos clave:
- Contenedor principal tipo
.glass-panel. - Botones
.btn-primaryy.btn-secondarycon las mismas proporciones (altura 36–40px, radios full). - Campos
.input-fieldcon radios grandes, fondo translúcido y foco azul cian.
- Contenedor principal tipo
- Respeta las jerarquías de opacidad:
- Texto principal ≥ 80% de blanco.
- Texto secundario 60%.
- Bordes y líneas 5–15%.
- Sombras con ligeros matices de azul/verdes para reforzar el “tema deportivo/energético”.
- Reutiliza los estilos clave: