Fundamentos
Los valores base del sistema, leídos de las variables y estilos del archivo de Figma. Todo lo que se ve en los componentes sale de acá.
Colores
Figma · página Colores · variables primitives
Cada escala va de -50 a -950. El borde oscuro marca el paso -500, el color base de cada familia. Los nombres son las variables de Figma (--primary-500 = primary/500). Además: --common-white #FFFFFF, --common-black #18181A y --brand-vivid #FF6600 (el naranja del logotipo, solo para marca; no se usa en acciones ni en texto).
Colores semánticos
Figma · colección semantic
--body-color
Texto principal · --secondary-900
--body-bg
Fondo de las superficies · --common-white
--text-muted
Texto secundario · --secondary-600
--border-color
Borde de campos · --secondary-300
--border-strong
Borde de campos (hover) · --secondary-400
--disabled
Elementos deshabilitados · --secondary-300
--link-color
Enlaces · #2b4c9e
--action-primary-default
Acción primaria · --primary-500
--action-primary-hover
Acción primaria · hover · --primary-600
--action-primary-active
Acción primaria · presionado · --primary-700
--action-brand-default
Acción de marca · --brand-500
--action-brand-hover
Acción de marca · hover · --brand-600
--action-brand-active
Acción de marca · presionado · --brand-700
--text-success
Texto de éxito · --success-600
--text-warning
Texto de advertencia · --warning-700
--text-danger
Texto de error · --danger-600
--text-info
Texto informativo · --info-600
Los componentes leen estas variables y no los colores crudos: si cambia la acción primaria, cambia en todo el producto. Las que apuntan a una escala (primary-500, secondary-600…) muestran a cuál.
Tipografía
Figma · página Tipografía · estilos de texto
| Estilo | Muestra | Clase | Tamaño / interlínea / tracking | Peso |
|---|---|---|---|---|
| Display 1 | Servicios y pagos | .t-display-1 | 70 / 115% / −1% | Regular |
| Display 2 | Servicios y pagos | .t-display-2 | 64 / 115% / −1% | Regular |
| Display 3 | Servicios y pagos | .t-display-3 | 56 / 115% / −1% | Regular |
| Display 4 | Servicios y pagos | .t-display-4 | 48 / 115% / −1% | Regular |
| Display 5 | Servicios y pagos | .t-display-5 | 42 / 115% / −1% | Regular |
| Display 6 | Servicios y pagos | .t-display-6 | 35 / 120% / −1% | Regular |
| H1 | Servicios y pagos | .t-h1 | 35 / 120% / −0,5% | SemiBold |
| H2 | Servicios y pagos | .t-h2 | 28 / 120% / −0,5% | SemiBold |
| H3 | Servicios y pagos | .t-h3 | 24 / 120% / −0,5% | SemiBold |
| H4 | Servicios y pagos | .t-h4 | 21 / 125% / 0 | SemiBold |
| H5 | Servicios y pagos | .t-h5 | 18 / 125% / 0 | SemiBold |
| H6 | Servicios y pagos | .t-h6 | 16 / 125% / 0 | SemiBold |
| Body large | Servicios y pagos | .t-body-lg | 16 / 150% / 0 | Regular |
| Body large medium | Servicios y pagos | .t-body-lg-md | 16 / 150% / 0 | Medium |
| Body large strong | Servicios y pagos | .t-body-lg-strong | 16 / 150% / 0 | SemiBold |
| Body | Servicios y pagos | .t-body | 14 / 157% / 0 | Regular |
| Body medium | Servicios y pagos | .t-body-md | 14 / 157% / 0 | Medium |
| Body strong | Servicios y pagos | .t-body-strong | 14 / 157% / 0 | SemiBold |
| Body italic | Servicios y pagos | .t-body-italic | 14 / 157% / 0 | Italic |
| Small | Servicios y pagos | .t-small | 12 / 150% / 0 | Regular |
| Small strong | Servicios y pagos | .t-small-strong | 12 / 150% / 0 | SemiBold |
| Caption | Servicios y pagos | .t-caption | 12 / 133% / 0 | Regular |
| Overline | Uso de recursos | .t-overline | 12 / 133% / +8% | Bold · MAYÚSCULAS |
| Mono large | ID 482917 · plan-impulso | .t-mono-lg | 16 / 150% / 0 | Roboto Mono Medium |
| Mono | ID 482917 · plan-impulso | .t-mono | 14 / 143% / 0 | Roboto Mono Regular |
| Mono small | ID 482917 · plan-impulso | .t-mono-sm | 12 / 133% / 0 | Roboto Mono Regular |
| Badge large | Servicio activo | .t-badge-lg | 14 / 128% / 0 | SemiBold |
| Badge small | Servicio activo | .t-badge-sm | 12 / 145% / +4% | SemiBold · MAYÚSCULAS |
Familia: Nunito (autoalojada, variable) para todo el producto y Roboto Mono para identificadores y código. Las interlíneas son porcentajes del tamaño; el tracking, porcentaje del tamaño de la letra (en CSS, em).
Espaciado
Figma · variables spacing
--spacing-00px--spacing-44px--spacing-88px--spacing-1212px--spacing-1616px--spacing-2020px--spacing-2424px--spacing-2828px--spacing-3232px--spacing-3636px--spacing-4040px--spacing-4444px--spacing-4848pxEscala de 4 px. Las barras están dibujadas al cuádruple para poder compararlas.
Border radius
Figma · página Border radius / Shadow
--radius-0 · 0px--radius-4 · 4px--radius-8 · 8px--radius-12 · 12px--radius-16 · 16px--radius-24 · 24pxUso habitual: 4 en badges, 8 en botones y alertas, 12 en tarjetas y campos, 16 en tarjetas de servicio.
Sombras y foco
Figma · estilos de efecto Shadow/* y Focus
--shadow-sm · 0 2 4 · 8%--shadow-md · 0 8 16 · 12% + borde interno 10%--shadow-lg · 0 16 32 · 18%--focus-ring · anillo de 3 pxLos botones, campos y selects usan un anillo de foco propio del color de cada uno (primario, secundario, marca, error), con 40% de opacidad. --focus-ring es el anillo neutro.
Íconos
Figma · página Íconos
Material Icons Rounded (Apache 2.0), a 24 px por defecto y 20 / 16 px en componentes. En Figma se usan como Icon/Material Icon · Category · Name; los nombres de abajo son los mismos. Se inyectan como sprite SVG y heredan el color del texto (fill: currentColor).
Grillas
Figma · página Grillas
| Ancho | Columnas | Gutter | Padding | Contenido | Ancho de columna |
|---|---|---|---|---|---|
| Mobile · 360 | 6 | 24 | 16 c/u | 328 | ≈ 34,7 |
| Tablet · 768 | 6 | 24 | 16 c/u | 736 | ≈ 102,7 |
| Ancho · estado | Sidebar | Contenido | Flex-fill | Columnas | Gutter | Margen |
|---|---|---|---|---|---|---|
| LG · 1024 · colapsado | 56 | 936 | 672 | 12 × 34 | 24 | gap 16 · pr 16 |
| LG · 1024 · expandido | 248 | 744 | 480 | 12 × 18 | 24 | gap 16 · pr 16 |
| XL · 1200 · colapsado | 56 | 1080 | 816 | 12 × 46 | 24 | gap 32 · pr 32 |
| XL · 1200 · expandido | 248 | 888 | 624 | 12 × 30 | 24 | gap 32 · pr 32 |
| XXL · 1440 · colapsado | 56 | 1224 | 960 | 12 × 58 | 24 | margen auto 80 a cada lado |
| XXL · 1440 · expandido | 248 | 1032 | 768 | 12 × 42 | 24 | margen auto 80 a cada lado |
| XXL variante · 1920 · colapsado | 56 | 1224 | 960 | 12 × 58 | 24 | margen auto 320 a cada lado |
| XXL variante · 1920 · expandido | 248 | 1032 | 768 | 12 × 42 | 24 | margen auto 320 a cada lado |
| Ancho · estado | Sidebar | Contenido | Columnas | Gutter | Margen |
|---|---|---|---|---|---|
| LG · 1024 · colapsado | 56 | 936 | 12 × 56 | 24 | gap 16 · pr 16 |
| LG · 1024 · expandido | 248 | 744 | 12 × 40 | 24 | gap 16 · pr 16 |
| XL · 1200 · colapsado | 56 | 1080 | 12 × 68 | 24 | gap 32 · pr 32 |
| XL · 1200 · expandido | 248 | 888 | 12 × 52 | 24 | gap 32 · pr 32 |
| XXL · 1440 · colapsado | 56 | 1224 | 12 × 80 | 24 | margen auto 80 a cada lado |
| XXL · 1440 · expandido | 248 | 1032 | 12 × 64 | 24 | margen auto 80 a cada lado |
| XXL variante · 1920 · colapsado | 56 | 1224 | 12 × 80 | 24 | margen auto 320 a cada lado |
| XXL variante · 1920 · expandido | 248 | 1032 | 12 × 64 | 24 | margen auto 320 a cada lado |
| Ancho | Padding | Contenido | Columnas | Gutter | Margen automático |
|---|---|---|---|---|---|
| LG · 1024 | 20 c/u | 984 | 12 × 60 | 24 | — |
| XL · 1200 | 24 c/u | 1152 | 12 × 74 | 24 | — |
| XXL · 1440 | 28 c/u | 1224 | 12 × 80 | 24 | margen auto 80 + padding 28 |
| XXL variante · 1920 | 28 c/u | 1224 | 12 × 80 | 24 | margen auto 320 + padding 28 |
Valores de las frames de Figma, en px. Desktop es una grilla de 12 columnas con gutter de 24; mobile y tablet, de 6 columnas con gutter de 24 y padding de 16. Ancho de columna = (ancho − gutters) / columnas. En Full el ancho útil es el flex-fill: el contenido menos el menú contextual (240) y el gap hasta él (24), por ejemplo 936 = 240 + 24 + 672. Full lleva un menú contextual de 240 px junto al contenido, Simple no, y Sin sidebar (en Figma se llama Bare) es un layout sin sidebar, solo con padding a los lados (20, 24 o 28) y las 12 columnas dentro. Los nombres son los de Figma y su significado lo leí de la geometría de cada frame; Figma no dice para qué pantallas es cada uno.
El sidebar (56 colapsado, 248 expandido) queda fijo contra el borde izquierdo y el contenido se centra en el espacio restante. A partir de XXL el container de 1280 es sidebar + contenido y el margen automático crece con el ancho (80 a 1440, 320 a 1920); el contenido no pasa de 1224 colapsado ni de 1032 expandido. Figma define mobile y tablet con un ancho de referencia (360 y 768) y no indica el rango de cada una; debajo de 1024 px el layout es mobile (header de 50 px, menú en drawer).
En el prototipo: el área de contenido (la que queda sin el sidebar ni el menú contextual) tiene el ancho exacto de estas tablas, medido a 1024, 1200, 1440 y 1920 en Servicio (Full expandido), Lista de servicios (Simple expandido) y Dashboard (Simple colapsado), y los bloques principales ocupan las 12 columnas. Las columnas no están dibujadas en CSS como una grilla de 12: los mosaicos de productos del Dashboard (6 por fila a 1440, de 2 columnas cada uno) caen exactos sobre ella, y el resto de los elementos (buscador, selects, tabs) conserva el ancho propio que tiene en Figma, sin ajustarse a columnas. Las tres pantallas de este prototipo (Servicio, Lista de servicios y Dashboard) no usan el layout sin sidebar, pero el sistema no se limita a ellas: lo usan, por ejemplo, el hub de selección de cuentas y «Acceso restringido · Página completa» del proyecto Usuarios y permisos, con el padding de la tabla (20, 24 y 28 a 1024, 1200 y 1440 o más) y una tarjeta de 8 de las 12 columnas (648, 760 y 808), centrada en las columnas 3 a 10. Figma dibuja esas dos pantallas solo a 1440 (808); los valores de LG y XL los deduje de esta grilla.