Diseño
En Figma o Canva entra el nombre, el hex y el RGB 0–255. La dieta es 40 / 28 / 16 / 4 / 8 / 4. Fraunces habla. Formula opera. Mono reporta. No inventar un quinto azul ni un cream más claro.
09 · Specs
Hex y RGB. Tipo. Ritmo. Una sola fuente.
Uso
Specs es el sistema operativo de Permanencia. Diseño y código leen el mismo :root: color por nombre en hex y RGB, tipografías por token, ritmo fijado.
En Figma o Canva entra el nombre, el hex y el RGB 0–255. La dieta es 40 / 28 / 16 / 4 / 8 / 4. Fraunces habla. Formula opera. Mono reporta. No inventar un quinto azul ni un cream más claro.
Solo variables. Hex: var(--origen). Alpha: rgb(var(--origen-rgb) / .7). Tipo: var(--font-story). Cero hex sueltos, cero rem con decimales. El archivo vivo es tokens.css.
:root
Cada color tiene dos variables: --origen y --origen-rgb. Los canales van 0–255, separados por espacio, para rgb(var(--origen-rgb) / .7). Archivo vivo: /tokens.css.
:root {
/* Color — hex + canales RGB (0–255, espacio) */
--origen: #faf6ee;
--origen-rgb: 250 246 238;
--base: #1c1b1a;
--base-rgb: 28 27 26;
--roble: #b07a3e;
--roble-rgb: 176 122 62;
--veta: #e4d4bc;
--veta-rgb: 228 212 188;
--resalte: #5c93c9;
--resalte-rgb: 92 147 201;
--piedra: #c9c2b6;
--piedra-rgb: 201 194 182;
--blanco: #ffffff;
--blanco-rgb: 255 255 255;
--tinta-sig: var(--resalte);
--tinta-sig-rgb: var(--resalte-rgb);
--roble-08: #f4ece0;
--roble-08-rgb: 244 236 224;
--roble-16: #eee2d2;
--roble-16-rgb: 238 226 210;
--roble-24: #e8d8c4;
--roble-24-rgb: 232 216 196;
--roble-40: #dcc4a8;
--roble-40-rgb: 220 196 168;
--roble-shade-15: #9a6b38;
--roble-shade-15-rgb: 154 107 56;
--roble-shade-30: #845d32;
--roble-shade-30-rgb: 132 93 50;
--roble-shade-50: #66492a;
--roble-shade-50-rgb: 102 73 42;
--ink-08: #e8e4dd;
--ink-08-rgb: 232 228 221;
--ink-14: #dbd7d0;
--ink-14-rgb: 219 215 208;
--ink-42: #9d9a95;
--ink-42-rgb: 157 154 149;
--ink-68: #63615e;
--ink-68-rgb: 99 97 94;
--ink-85: #3d3c3a;
--ink-85-rgb: 61 60 58;
--veta-35: #f2eadd;
--veta-35-rgb: 242 234 221;
--veta-55: #eee3d3;
--veta-55-rgb: 238 227 211;
--veta-75: #eaddc9;
--veta-75-rgb: 234 221 201;
--piedra-soft: #e2dcd2;
--piedra-soft-rgb: 226 220 210;
--resalte-12: #eef4fa;
--resalte-12-rgb: 238 244 250;
--resalte-24: #ddecf7;
--resalte-24-rgb: 221 236 247;
--resalte-shade-15: #4e7fb0;
--resalte-shade-15-rgb: 78 127 176;
/* Dieta % */
--origen-pct: 40%;
--base-pct: 28%;
--roble-pct: 16%;
--veta-pct: 4%;
--resalte-pct: 8%;
--piedra-pct: 4%;
/* Tipo — por nombre */
--font-story: "Fraunces", Georgia, serif;
--font-story-b: "Manrope", system-ui, sans-serif;
--font-ui: "PPFormula", "Arial Narrow", sans-serif;
--font-ui-b: "PPRader", Georgia, serif;
--font-m: "PPSupplyMono", ui-monospace, monospace;
--font-s: var(--font-story);
--font-display: var(--font-ui);
--font-body: var(--font-story-b);
--font-accent: var(--font-story);
--font-mono: var(--font-m);
--fw-story: 600;
--fw-story-body: 400;
--fw-ui: 600;
--fw-mono: 500;
--track-story: -0.015em;
--track-ui: -0.02em;
--track-cta: 0.06em;
--track-mono: 0.12em;
--lh-body: 1.55;
--fs-xs: 11px;
--fs-sm: 13px;
--fs-md: 15px;
--fs-lg: 17px;
--fs-floor: 11px;
/* Ritmo */
--space-1: 8px;
--space-2: 16px;
--space-3: 24px;
--space-4: 40px;
--space-5: 64px;
--space-6: 120px;
--wrap: min(1180px, 100%);
--nav-h: 56px;
--radius: 16px;
--btn-radius: 999px;
--touch-min: 44px;
--btn-min-size: 18px;
--ease: cubic-bezier(0.32, 0.72, 0, 1);
--dur-ack: 110ms;
--dur-state: 220ms;
--dur-enter: 560ms;
}Color
Clic en hex, RGB, CMYK o token para copiar. Figma usa RGB con comas. CSS usa los canales del token. CMYK es receta de imprenta (coated), no la conversión automática del hex.
Seis tonos. Suman 100. El % es presencia de marca, no histograma por página. CMYK = receta de imprenta (coated aprox.), no la conversión automática del hex. Una sola tabla: esta.
| Tono | Nombre | Token | Hex | RGB | CMYK | Rol |
|---|---|---|---|---|---|---|
| Origen40% | Canvas de página. Nunca sustituir por blanco. | |||||
| Base28% | Ink mineral, hacia piedra. Texto, chrome, logo negativo, bandas ink y tech. | |||||
| Roble16% | CTA, kicker de relato, links. Presencia generosa. | |||||
| Veta4% | Superficie madera. Bandas secundarias. No es CTA. | |||||
| Resalte8% | Acento tech. Kickers y meta en ink. Nunca CTA ni nav activo. | |||||
| Piedra4% | Bordes, captiones, disabled. Nunca texto de cuerpo. |
Blanco no entra al %. Tinta sig es alias de Resalte.
| Tono | Nombre | Token | Hex | RGB | CMYK | Rol |
|---|---|---|---|---|---|---|
| Blanco | Texto del CTA y papel de diagrama. Fuera del %. | |||||
| Tinta sig | — | Alias de Resalte sobre bandas ink. |
Wash y bandas sobre Origen. El CTA sólido sigue siendo Roble 100.
| Tono | Nombre | Token | Hex | RGB | CMYK | Rol |
|---|---|---|---|---|---|---|
| Roble 8% | — | Hover / wash sobre Origen. | ||||
| Roble 16% | — | Bandas suaves. | ||||
| Roble 24% | — | Paneles de apoyo. | ||||
| Roble 40% | — | Énfasis seco. |
Hacia Base. Hover, pressed, ink cálido.
| Tono | Nombre | Token | Hex | RGB | CMYK | Rol |
|---|---|---|---|---|---|---|
| Roble shade 15 | — | Hover del CTA. | ||||
| Roble shade 30 | — | Pressed / texto denso sobre Roble. | ||||
| Roble shade 50 | — | Ink cálido. |
Base sobre Origen, hex sólido. No inventar grises.
| Tono | Nombre | Token | Hex | RGB | CMYK | Rol |
|---|---|---|---|---|---|---|
| Ink 8% | — | Línea suave. | ||||
| Ink 14% | — | Bordes de panel. | ||||
| Ink 42% | — | Meta sobre claro. | ||||
| Ink 68% | — | Texto secundario. | ||||
| Ink 85% | — | Cuerpo denso. |
Madera suave. Nunca como CTA ni fill del logo.
| Tono | Nombre | Token | Hex | RGB | CMYK | Rol |
|---|---|---|---|---|---|---|
| Veta 35% | — | Wash madera. | ||||
| Veta 55% | — | Banda suave. | ||||
| Veta 75% | — | Panel de apoyo. | ||||
| Piedra soft | — | Borde cálido. |
El 8% es el sólido. Estas no suman extra. En ink es el acento; en paper, un foco por diagrama.
| Tono | Nombre | Token | Hex | RGB | CMYK | Rol |
|---|---|---|---|---|---|---|
| Resalte 12% | — | Wash / zebra dentro del panel blanco. | ||||
| Resalte 24% | — | Nodo o celda de apoyo. | ||||
| Resalte shade 15 | — | Hover sobre Resalte. Links ≥18px. |
Tipo
Fraunces habla. Manrope sostiene. Formula opera. Rader ejecuta. Mono reporta. Mayúsculas solo en rótulos de tres palabras o menos.
story
Treinta años no se explican.
story
La evidencia es material. El tono es cercano.
producto
HABLEMOS
producto
Interfaz precisa. Links que se ven.
meta
--origen · #FAF6EE · 250 246 238
Escala
| Token | Valor | Rol |
|---|---|---|
| 11px | Rótulos en mono. Piso del sistema. | |
| 13px | Pie de tarjeta, meta. | |
| 15px | Listas, tarjetas, chips. | |
| 17px | Cuerpo y bajadas. | |
| 11px | Nada bajo este tamaño. Cero rem con decimales. |
Medida
| Token | Valor | Rol |
|---|---|---|
| 600 | Peso de titular Fraunces | |
| 400 | Peso de cuerpo Manrope | |
| 600 | Peso de Formula (CTA, chip) | |
| 500 | Peso de Supply Mono | |
| -0.015em | Tracking Fraunces | |
| -0.02em | Tracking Formula display | |
| 0.06em | Tracking CTA | |
| 0.12em | Tracking rótulos | |
| 1.55 | Interlineado de cuerpo |
Alias de compatibilidad: --font-s → var(--font-story)--font-display → var(--font-ui)--font-body → var(--font-story-b)--font-accent → var(--font-story)--font-mono → var(--font-m)
Ritmo
Reveal con data-reveal. Override oscuro en ink y tech. Respetar prefers-reduced-motion. Sin blur extra.
| Token | Valor |
|---|---|
Gaps densos, iconos, meta | 8px |
Padding de control, nav | 16px |
Bloques internos | 24px |
Secciones compactas | 40px |
Padding vertical mínimo | 64px |
Padding vertical máximo | 120px |
Contenedor | min(1180px, 100%) |
Altura de nav | 56px |
| Token | Valor |
|---|---|
Paneles, swatches, módulos | 16px |
CTA y chips. Pill canónico. | 999px |
Objetivo táctil mínimo | 44px |
Piso de tipo en CTA | 18px |
| Token | Valor |
|---|---|
Curva por defecto | cubic-bezier(0.32, 0.72, 0, 1) |
Acuse: hover / press corto | 110ms |
Cambio de estado | 220ms |
Entrada / reveal | 560ms |
Implementación
El hex pinta. El RGB abre el alpha. Las familias van por token, no por nombre suelto en el CSS de página.
/* Hex canónico */
background: var(--origen);
color: var(--base);
/* RGB + alpha — para velos, líneas, overlays */
color: rgb(var(--base-rgb) / 0.68);
box-shadow: inset 0 0 0 1px rgb(var(--base-rgb) / 0.14);
background: rgb(var(--resalte-rgb) / 0.12);
/* Tipo por nombre */
h2 { font-family: var(--font-story); font-weight: var(--fw-story); letter-spacing: var(--track-story); }
.cta { font-family: var(--font-ui); letter-spacing: var(--track-cta); }
.meta { font-family: var(--font-m); font-size: var(--fs-xs); }