perla
Sistema de marca
v3 · 12 mayo 2026

Un sistema silencioso, ordenado y atento.

Geist como sistema operativo de la marca. perla como única excepción serif — el wordmark es la firma. La luz y el nácar entran sólo donde hace sentido: en el símbolo del agente y en los acentos puntuales del estado.

Perla es nácar, no metal.

La perla tiene capas finas, refleja la luz que recibe y cambia según el ángulo. Es un material orgánico, cálido, vivo. La interfaz toma de ahí su temperatura — translucidez sutil, calidez tibia, iridiscencia silenciosa.

Translucidez

Capas finas que dejan ver lo que hay detrás, sin esconder. La interfaz tiene profundidad real, no efectos.

Calidez

La luz viene de algún lado — desde la izquierda, desde arriba, desde dentro del propio elemento. Nunca neutra.

Iridiscencia silenciosa

Los tonos pasan suavemente de nácar a lila pálido. Nunca saltan, nunca compiten con la información.

Casi sin color, hasta que aparece.

Blanco mineral y grises hacen el trabajo. El cálido (nácar) y el frío (lila) viven solo en el símbolo del agente y en los chips de estado. Si una pantalla tiene más de un acento visible, está mal.

Tinta #1A2A2E Texto principal · CTA crítico · presencia de marca
Muted #5E6E73 Texto secundario · labels · contexto
Muted soft #8A9BA0 Texto terciario · separadores · cancelado
Mineral #FAFAFA Fondo de la app · respiro · neutralidad
Surface #FFFFFF Cards · contenedores · jerarquía sin color
Hairline rgba(26,42,46,.06) Divisores · borde sutil · estructura sin peso
Nácar #FFE8E4 Acento cálido · chip "pendiente" · capa del símbolo del agente
Lila soft #E8E0F5 Acento frío · capa del símbolo del agente · glow del orb
Confirmado
Confirmado #2D7A7A @ 10% Único uso del teal. Chip de turno confirmado, nada más.

Geist hace todo. perla es la única excepción.

Un solo sans en sus pesos variables para todo el sistema — saludo, datos, labels, body, hora. Geist es la voz. El wordmark "perla" es la firma — y para esa firma usamos Fraunces italic 300, con axis SOFT alto para suavizar la curvatura. Sólo ahí.

perla
Wordmark Fraunces 300 italic · SOFT 100 · opsz 144 · tracking −0.025em
Única excepción a Geist. Aparece sólo como marca, nunca en UI.
Perla
Display Geist 700 · 88 px · tracking −0.05em
Para hero, títulos protagonistas, números muy grandes.
Buenas, Mati.
Heading 1 Geist 500 · 52 px · tracking −0.04em
Para saludo y titulares de pantalla.
Tu día está bajo control.
Heading 2 Geist 500 · 32 px · tracking −0.03em
Para secciones y subtitulares.
María Cardozo
Heading 3 Geist 600 · 22 px · tracking −0.02em
Para nombres y datos protagonistas.
Sesión de kinesiología · 45 min
Body Geist 400 · 16 px · line-height 1.5
Para texto descriptivo y operativo.
Próximo turno
Label Geist 500 · 12 px · tracking 0.06em uppercase
Para etiquetas y categorías.
15:30
Number Geist 700 tabular-nums · 56 px
Para horas y datos numéricos. Sin mono — el sans heavy aguanta.

Escala de ocho, radios, sombras.

Toda medida es múltiplo de 4 u 8. Cinco radios, cuatro sombras cálidas. Cuando algo se siente apretado, subimos un escalón — no comprimimos.

Espaciado

space-1
Micro · gap chip
space-2
XS · padding pill
space-3
SM · gap items
space-4
MD · gap cards
space-5
LG · padding mobile
space-6
XL · padding card
space-7
2XL · bloques
space-8
3XL · gap grande

Radios

sm6 px · chips, dots
md12 px · cards de datos
lg20 px · cards intermedias
xl28 px · cards humanas
full9999 · pills, chips

Sombras

xs0 1 2 · presencia mínima
sm0 2 8 · cards default
md0 8 24 · hero cards
lg0 16 48 · modales

Tres maneras de hacer visible al agente.

El conic-gradient anterior queda afuera. Estas tres exploran la perla como objeto físico — luz que viene desde adentro, no decoración rotando alrededor. Todas son CSS puro, sin imagen externa.

Símbolo A Gota de luz Radial gradient con núcleo blanco lumínico que pasa a nácar y lila apenas perceptible. Highlight specular arriba a la izquierda. Respira en 5 s sin rotar.
Símbolo B Nube nacarada Tres blobs translúcidos superpuestos con blur fuerte. Forma orgánica que se desplaza leve. Más etéreo, menos esférico.
Símbolo C Perla real La perla literal. Radial blanco-marfil-tostado con specular highlight y glow exterior cálido que pulsa cuando hay mensaje. Material físico, no efecto.

Liquid glass, luminiscencia, bokeh.

Tres tipos de luz que el sistema puede usar: vidrio líquido refractivo para cards hero, glow desde adentro para CTAs del agente, y campos de luz fuera de foco para fondos especiales (onboarding, drawer del agente). NO para dashboard operativo.

Efecto A

Liquid glass

Card translúcida con backdrop blur fuerte + saturación 180 %. Brillo en diagonal que se mueve lento — la luz pasa por encima del cristal.

Efecto B

Luminiscencia

Glow exterior con tinte iris que pulsa muy lento. El botón parece tener luz propia, no reflejar luz ambiental. CTAs del agente.

Efecto C

Bokeh cálido

Campos de luz desenfocados como fondo de pantallas especiales: onboarding, splash, drawer del agente. Nunca dashboard diario.

Próximo turno
15:30
María Cardozo
Sesión de kinesiología · 45 min
Confirmado Pendiente

Aplicado a componentes reales

La card de próximo turno, la action bar y los chips de estado usan backdrop-filter con saturación 170–180 %. El fondo de la pantalla provee la variación cromática (mesh sutil con manchas nácar y lila desenfocadas) que el blur necesita para tener sentido.

Las cards mantienen el highlight border interno blanco. Los chips combinan glass + dot semántico. La action bar es pill horizontal con primario tinta + secundarios glass ghost.

Sin esa variación de fondo, el glass se aplana y queda igual que una card flat con sombra suave — sin ganancia visual ni narrativa.

El pill es el átomo.

No hay cards para todo. Hay pills, listas planas y cards solo cuando la información requiere riqueza visual. La forma del componente sigue su función.

Componente

Buttons

Pill full · Geist 500 · 14 px · padding 12 / 24. Primario en tinta, secundario en transparent con hairline.

Componente

Chips de estado

Confirmado Pendiente Cancelado

El color es semántico. Pendiente vive en nácar — el único cálido del sistema. Cancelado en muted, sin rojo.

Componente

Card humana

Próximo turno
15:30
María Cardozo
Sesión de kinesiología · 45 min

Radius xl · padding 24 · shadow card. Para datos con presencia humana.

Componente

Lista plana

  • 16:30
    Joaquín MéndezEjercicio guiado · 60 min
  • 17:45
    Renata SolísEvaluación inicial · 30 min

Sin contención. Hairlines de 1 px. Hora en columna fija. Para información secuencial.

Componente

Orb del agente — tamaños

32 px (handle inline) · 48 px (drawer header) · 64 px (handle de pantalla).

Componente

Divisores

Hairline 6 % (entre items) · Hairline 12 % (entre secciones). Sin líneas duras.

Patrones canónicos del producto.

Bloques que se repiten en el producto. Cada uno mezcla componentes para resolver una necesidad concreta. Nombrarlos hace que el equipo hable el mismo idioma.

Patrón 01

Saludo + day-meta

Buenas,
Mati.
4 sesiones hoy 1 confirmada 3 por llegar
Patrón 02

Hero próximo + lista después

Próximo turno
15:30
María Cardozo
Sesión de kinesiología · 45 min
Después
  • 16:30
    Joaquín MéndezEjercicio guiado · 60 min
  • 17:45
    Renata SolísEvaluación inicial · 30 min
  • 18:30
    Carla FontanaSesión de kinesiología · 45 min
Patrón 03

Handle del agente

perla Atenta a tus mensajes
Patrón 04

Action bar mixto

Una acción principal con texto, dos secundarias solo icon.

G1 vs G2 — la diferencia que se siente.

El border-radius nativo de CSS te da continuidad tangencial (G1) — los lados se tocan en la misma dirección, pero la curvatura salta de 0 a 1/r en un punto. El squircle (G2) te da curvatura continua: la curva empieza con curvatura 0, crece progresivamente, baja de nuevo. Es lo que iOS usa para todo desde 2013. El ojo lo registra como "más Apple", "más orgánico".

G1 · CSS estándar
border-radius: 32px Arco circular. Tangencialmente continuo, pero hay un kink visual donde la curvatura salta.
G2 · Squircle
smoothing 80% · radius 32 Curvatura continua. La curva empieza a 58 px del corner y se acomoda gradualmente. Más Apple, más orgánico.
G1 · corner ampliado kink: curvatura salta 0 → 1/r

El arco entra y sale del corner con un salto brusco de curvatura.

G2 · 80% smoothing curvatura crece y baja gradualmente

La curva empieza a 68 px del corner y se acomoda gradualmente. Sin saltos de curvatura.

Cuándo aplicar G2 y cuándo G1 basta

Elemento Radius Continuidad Por qué
Card hero · próximo turno 28 px G2 Superficie grande, radius grande. El kink se nota. Aplicar smoothing 80%.
Modal · drawer del agente 32-40 px G2 Los radios más generosos del sistema. Smoothing 100% para máxima suavidad.
Cards de datos secundarias 12-20 px G2 Vale la pena por consistencia. Smoothing 60-70%.
Chips de estado 6 px / full G1 Tamaño chico — el ojo no distingue. G1 nativo es suficiente.
Pills · buttons full (9999) G1 Círculo completo no tiene corner que suavizar. Border-radius nativo perfecto.
Inputs · selects 12 px G1 Tamaño y radius medios. G2 sería overkill por costo de implementación.
Orb del agente 50% (círculo) G1 Círculo perfecto. Irrelevante.

Implementación en el repo

En el código de Tomi y Nahue, G2 se implementa con la lib corner-smoothing (npm). Es la más usada en 2026, abstraída para React, genera el path SVG matemáticamente según radius y smoothing. Costo: ~2 horas de integración inicial, después es un componente reusable.

El patrón: un componente <Squircle radius={28} smoothing={0.6}> que wrappea cualquier card. Para Figma, Nahue usa el slider "Corner smoothing" nativo (60% para cards hero, 80% para modales, 0% para chips).

Cuando corner-shape: squircle esté soportado nativo en CSS (Safari ya lo tiene behind flag, Chrome viene en camino), migramos. Hasta entonces, la lib es el camino.