SLUSH
Papel pastel. Cintas infladas.

Lógica de álbum de pegatinas: el display va a 640px con interlineado 0.75, así que la palabra deja de ser una palabra para ser un objeto físico, algo por detrás de lo cual la cinta azul puede pasar. Y todo lleva contorno negro de 1px, como si estuviera recortado a mano.

Captura de la portada de Slush
Lienzo #DCEEFF Display 640px, lh 0.75 Contorno #000000, 1px en todo Sombras ninguna
01

Color

6 pegatinas · 5 piden negro
La paleta de pegatinas
Electric Blue
#4DA2FF
El dominante: cintas 3D, fondos de cuerpo y lavados de card. La firma visual.
negro 7.93:1 · blanco 2.65:1
Mint Pop
#55DB9C
Lavado verde de fondo y bandas decorativas.
negro 12.00:1
Lavender
#E9CCFF
El color más suave de la paleta: lavados de card, etiquetas, marquesina.
negro 14.55:1
Ember
#FB4903
El golpe más cálido: iconos de pegatina, rellenos de badge, el cohete.
negro 6.06:1 · blanco 3.47:1
Sunburst
#FFD731
Rellenos de moneda y decoraciones amarillas.
negro 15.02:1
Voltage Violet
#5C4ADE
Pegatinas de cartera y card de descarga. El único que lleva texto blanco.
blanco 6.02:1 · negro 3.49:1
Superficies
Sky Wash
#DCEEFF
Fondo de la sección de hero, el pastel azul del papel.
negro 17.72:1
Paper White
#FFFFFF
Lienzo de card y relleno de botón de contorno.
negro 21.00:1
Concrete
#CCCCCC
Fondo de sección secundaria, interludio neutro.
negro 13.08:1
De los seis saturados, cinco piden texto negro y solo uno pide blanco. Dos consecuencias prácticas. Sobre el azul dominante no se puede escribir en blanco: 2.65:1, y es precisamente el color que la ficha describe como fondo de cuerpo y lavado de card, es decir, el que más superficie ocupa. Y el violeta es la única excepción: si a alguien le da por homogeneizar el sistema poniendo todo en negro, la card de descarga se cae a 3.49:1.
PegatinaNegroBlancoGana
#4DA2FF7.93:12.65:1negro
#55DB9C12.00:11.75:1negro
#E9CCFF14.55:11.44:1negro
#FB49036.06:13.47:1negro
#FFD73115.02:11.40:1negro
#5C4ADE3.49:16.02:1blanco

Y la marquesina no es negra. La ficha la describe con fondo #000000 y texto blanco; en la portada real es una banda lavanda con texto negro, como la de arriba de esta página. Tiene sentido dentro del sistema: una franja negra a sangre encima de un lienzo pastel sería el elemento de más contraste de la página, por delante del propio CTA.

02

Typography

2 familias · interlineado 0.75
AaEeCcGg50.
Archivo Black Original: Lateral -> HTML: Archivo Black (Google substitute). La ficha propone Druk, Bowlby One o Antonio: la primera no es libre, la segunda no está en el catálogo del repo y la tercera es condensada, que es la dirección contraria. La portada resuelve la duda, porque las formas de SLUSH son anchas y con terminales planos. League Spartan a 900 tiene el peso pero su geometría circular suaviza unas letras que aquí tienen que comportarse como bloques; Bricolage Grotesque compite con las pegatinas, que ya aportan todo el ruido que la página admite. Es la misma sustituta que usa la ficha de Agence Foudre: a la misma pregunta, la misma respuesta.
Interlineado 0.75 · el del sistema
ALL
THINGS
Interlineado 1.0 · lo normal
ALL
THINGS

Casi nadie combina un display de peso 800 con un interlineado por debajo de 0.85. A 640px, ese 0.75 mete las líneas unas dentro de otras y la palabra deja de comportarse como texto para comportarse como objeto.

Cuerpo · -0.010em

El cuerpo se aprieta para mantenerse compacto al lado de un display gigante.

Etiquetas · +0.032em

Launch app · Download for Chrome · Get started

El tracking va en dos direcciones y es el detalle más fino del sistema: abrir las etiquetas es lo que da aire dentro de unas píldoras que tienen muy poco padding horizontal.

display · 200 · lh 0.80ALL THINGS
heading · 64 · 700Your money. Unstuck.
body · 15 · 500 · -0.01emYour money. Unstuck.
label · 13 · 700 · +0.032emYour money. Unstuck.
Cuerpo

Entre los 64px de la sans y los 200px del display no hay nada. Ese hueco es deliberado: o es interfaz, o es escultura. La sans lleva toda la carga funcional en dos pesos, 500 para el cuerpo y 700 para subtítulos, navegación y etiquetas de botón.

El cuerpo también es sustitución: original Aeonik Pro, aquí Schibsted Grotesk (Google substitute), que cubre el punto medio entre lo geométrico y lo neo-grotesco donde vive Aeonik y tiene la neutralidad justa para hacer de interfaz debajo de un display de 640px.

RolTamañoPesoLHTracking
display-lg640px8000.750
display200px8000.800
heading64px7001-0.01em
heading-sm30px7001.1-0.01em
subheading24px7001.2-0.01em
body-lg15px5001.39-0.01em
label13px7001.2+0.032em
caption12px5001.56-0.01em
La ficha menciona que el sitio activa ss01 y tnum en Aeonik. La alternativa estilística no tiene equivalente en la sustituta, pero las cifras tabulares sí, y conviene mantenerlas donde haya números alineados.
03

Components

todo con contorno negro
Get started

Un solo CTA relleno por pantalla, y siempre en negro. En un sistema con seis colores saturados, la acción primaria es la única cosa que no lleva color: es así como consigue destacar.

▲ ◕ S ✦ ▬

Pegatinas: contorno negro, 16px de radio y giro de unos pocos grados. Nunca alineadas a la rejilla: si se alinean, dejan de ser pegatinas y pasan a ser iconos.

Download

Card de descarga: fondo violeta partido en dos, con el panel del código en blanco y la etiqueta en blanco sobre el violeta. Es el único componente del sistema con texto blanco sobre color, y está bien: 6.02:1.

Card normal
Fondo blanco, contorno negro de 1px, 20px de radio y 24px de padding. Sin sombra: lo que la separa del papel es el contorno.
Card elevada
Sube a 40px de radio. La diferencia entre 20px y 40px es la única jerarquía de card que tiene el sistema, y va en la dirección de siempre: cuanto más grande el objeto, más blando.

Cero sombras en CSS. La profundidad de esta página es ilustrada: las cintas 3D tienen volumen propio, con luces y sombras pintadas dentro de la imagen, y las pegatinas se solapan entre sí.

04

Spacing & shape

base 4 · 5 radios
Escala de espaciado
4px · entre píldoras de navegación
12px · padding horizontal, gap
24px · padding de card
48px · entre secciones
80px · entre bloques
128px · respiro de sección
224px · respiro de escultura
Apretado dentro de los controles (12px de padding horizontal en un botón es muy poco) y muy generoso alrededor de la escultura tipográfica. El contraste entre ambas densidades es lo que hace que el display parezca aún más grande.
Familia de radios
16px
20px
30px
40px
cápsula
Cinco radios y aquí no molesta, porque todos van en la misma dirección: cuanto más grande el objeto, más blando. Es una escala de blandura, no una taxonomía. Los 30px son los de las esquinas del propio cuerpo de la página, que hacen que toda la web se lea como una tarjeta pegada sobre el fondo del navegador.
Elevación
nivel 0 · Sky Wash #DCEEFF · hero
nivel 1 · Paper White #FFFFFF · cards
nivel 2 · Concrete #CCCCCC · sección secundaria
nivel 3 · saturados · pegatinas y lavados
Lo que separa un objeto de su fondo es su contorno negro, no una sombra. Cambiar el contorno por una sombra suave deshace el efecto de recortado a mano, que es el sistema entero.
05

Principles

guardrails

    Sí hacer

  • Poner el display con interlineado entre 0.75 y 0.80.
  • Dar contorno negro de 1px a todo: píldoras, cards, pegatinas y logotipo.
  • Elegir el color de texto de cada pegatina por luminancia.
  • Usar negro para el único CTA relleno de cada pantalla.
  • Apretar el cuerpo a -0.010em y abrir las etiquetas a +0.032em.
  • Girar las pegatinas y superponerlas, nunca alinearlas a la rejilla.
  • Dejar los 30px de radio en las esquinas del propio cuerpo de la página.

    No hacer

  • No escribir en blanco sobre el azul dominante: 2.65:1.
  • No homogeneizar el texto de las pegatinas a negro: sobre el violeta cae a 3.49:1.
  • No sustituir el contorno negro por una sombra suave.
  • No poner la marquesina en negro a sangre.
  • No usar interlineados por encima de 0.85 en el display.
  • No usar un segundo CTA relleno en la misma pantalla.
  • No aplicar el mismo tracking al cuerpo y a las etiquetas.
06

Resources

copy & paste
:root {
  /* Colors */
  --color-carbon: #000000;
  --color-paper-white: #FFFFFF;
  --color-sky-wash: #DCEEFF;
  --color-concrete-gray: #CCCCCC;
  --color-soft-mist: #E9E9E9;
  --color-electric-blue: #4DA2FF;
  --color-mint-pop: #55DB9C;
  --color-lavender: #E9CCFF;
  --color-ember: #FB4903;
  --color-sunburst: #FFD731;
  --color-voltage-violet: #5C4ADE;

  /* Texto sobre cada pegatina, medido */
  --on-electric-blue: #000000;   /* 7.93:1 */
  --on-mint-pop: #000000;        /* 12.00:1 */
  --on-lavender: #000000;        /* 14.55:1 */
  --on-ember: #000000;           /* 6.06:1 */
  --on-sunburst: #000000;        /* 15.02:1 */
  --on-voltage-violet: #FFFFFF;  /* 6.02:1, la unica excepcion */

  /* Roles */
  --color-background: #DCEEFF;
  --color-surface: #FFFFFF;
  --color-text-primary: #000000;
  --color-border: #000000;

  /* Typography */
  --font-display: 'Archivo Black', ui-sans-serif, system-ui, sans-serif;
  --font-body: 'Schibsted Grotesk', ui-sans-serif, system-ui, sans-serif;
  --font-weight-medium: 500;
  --font-weight-bold: 700;

  /* Tracking: va en dos direcciones */
  --tracking-body: -0.010em;
  --tracking-caps: 0.032em;

  /* Scale */
  --text-display-lg: 640px;
  --leading-display-lg: 0.75;
  --text-display: 200px;
  --leading-display: 0.80;
  --text-heading: 64px;
  --leading-heading: 1;
  --text-heading-sm: 30px;
  --leading-heading-sm: 1.1;
  --text-subheading: 24px;
  --leading-subheading: 1.2;
  --text-body-lg: 15px;
  --leading-body-lg: 1.39;
  --text-label: 13px;
  --text-caption: 12px;
  --leading-caption: 1.56;

  /* Spacing */
  --spacing-unit: 4px;
  --spacing-4: 4px;
  --spacing-12: 12px;
  --spacing-24: 24px;
  --spacing-48: 48px;
  --spacing-80: 80px;
  --spacing-128: 128px;
  --spacing-224: 224px;

  /* Layout */
  --page-max-width: 1440px;
  --section-gap: 48px;
  --card-padding: 24px;
  --element-gap: 12px;

  /* Radius: escala de blandura */
  --radius-16: 16px;
  --radius-20: 20px;
  --radius-body: 30px;
  --radius-40: 40px;
  --radius-pill: 1600px;

  /* Elevation: ninguna. La profundidad esta pintada en las ilustraciones */
  --shadow-none: none;
  --border-cut: 1px solid #000000;
}
@theme {
  /* Colors */
  --color-carbon: #000000;
  --color-paper-white: #FFFFFF;
  --color-sky-wash: #DCEEFF;
  --color-concrete-gray: #CCCCCC;
  --color-soft-mist: #E9E9E9;
  --color-electric-blue: #4DA2FF;
  --color-mint-pop: #55DB9C;
  --color-lavender: #E9CCFF;
  --color-ember: #FB4903;
  --color-sunburst: #FFD731;
  --color-voltage-violet: #5C4ADE;

  /* Typography */
  --font-display: 'Archivo Black', ui-sans-serif, system-ui, sans-serif;
  --font-body: 'Schibsted Grotesk', ui-sans-serif, system-ui, sans-serif;

  /* Scale */
  --text-display-lg: 640px;
  --text-display-lg--line-height: 0.75;
  --text-display: 200px;
  --text-display--line-height: 0.80;
  --text-heading: 64px;
  --text-heading--line-height: 1;
  --text-heading--letter-spacing: -0.010em;
  --text-heading-sm: 30px;
  --text-heading-sm--line-height: 1.1;
  --text-subheading: 24px;
  --text-subheading--line-height: 1.2;
  --text-body-lg: 15px;
  --text-body-lg--line-height: 1.39;
  --text-body-lg--letter-spacing: -0.010em;
  --text-label: 13px;
  --text-label--letter-spacing: 0.032em;
  --text-caption: 12px;
  --text-caption--line-height: 1.56;

  /* Spacing */
  --spacing-4: 4px;
  --spacing-12: 12px;
  --spacing-24: 24px;
  --spacing-48: 48px;
  --spacing-80: 80px;
  --spacing-128: 128px;
  --spacing-224: 224px;

  /* Radius */
  --radius-16: 16px;
  --radius-20: 20px;
  --radius-body: 30px;
  --radius-40: 40px;
  --radius-pill: 1600px;
}
{
  "stickers": {
    "electricBlue": { "hex": "#4DA2FF", "text": "#000000", "black": "7.93:1", "white": "2.65:1" },
    "mintPop": { "hex": "#55DB9C", "text": "#000000", "black": "12.00:1", "white": "1.75:1" },
    "lavender": { "hex": "#E9CCFF", "text": "#000000", "black": "14.55:1", "white": "1.44:1" },
    "ember": { "hex": "#FB4903", "text": "#000000", "black": "6.06:1", "white": "3.47:1" },
    "sunburst": { "hex": "#FFD731", "text": "#000000", "black": "15.02:1", "white": "1.40:1" },
    "voltageViolet": { "hex": "#5C4ADE", "text": "#FFFFFF", "black": "3.49:1", "white": "6.02:1" },
    "regla": "voltear por luminancia: cinco piden negro, solo el violeta pide blanco"
  },
  "color": {
    "surface": {
      "skyWash": "#DCEEFF",
      "paperWhite": "#FFFFFF",
      "concreteGray": "#CCCCCC",
      "softMist": "#E9E9E9"
    },
    "carbon": "#000000",
    "border": { "color": "#000000", "width": "1px", "nota": "en absolutamente todo: es el efecto de recortado a mano" }
  },
  "font": {
    "display": "Archivo Black",
    "body": "Schibsted Grotesk",
    "original": { "display": "Lateral", "body": "Aeonik Pro con ss01 y tnum" },
    "weights": { "display": [800], "body": [500, 700] },
    "tracking": { "body": "-0.010em", "caps": "0.032em", "nota": "van en direcciones opuestas a proposito" },
    "scale": {
      "displayLg": { "size": "640px", "lineHeight": 0.75 },
      "display": { "size": "200px", "lineHeight": 0.80 },
      "heading": { "size": "64px", "weight": 700, "lineHeight": 1, "tracking": "-0.01em" },
      "headingSm": { "size": "30px", "weight": 700, "lineHeight": 1.1 },
      "subheading": { "size": "24px", "weight": 700, "lineHeight": 1.2 },
      "bodyLg": { "size": "15px", "weight": 500, "lineHeight": 1.39 },
      "label": { "size": "13px", "weight": 700, "tracking": "0.032em" },
      "caption": { "size": "12px", "weight": 500, "lineHeight": 1.56 }
    }
  },
  "spacing": {
    "base": "4px",
    "scale": ["4px", "8px", "12px", "16px", "20px", "24px", "28px", "32px", "40px", "44px", "48px", "60px", "80px", "128px", "180px", "224px"],
    "density": "comfortable",
    "sectionGap": "48px",
    "cardPadding": "24px",
    "elementGap": "4-12px",
    "maxWidth": "1440px"
  },
  "radius": {
    "sticker": "16px",
    "card": "20px",
    "pageBody": "30px",
    "cardElevated": "40px",
    "pill": "1600px",
    "nota": "escala de blandura: cuanto mas grande el objeto, mas blando"
  },
  "shadow": {
    "all": "none",
    "nota": "la profundidad esta pintada dentro de las ilustraciones, no en CSS"
  }
}
---
version: "1.0"
name: "Slush"
description: "Sistema visual de album de pegatinas sobre papel pastel: lienzo azul palido, cintas 3D infladas en azul electrico, tipografia de display a 640px con interlineado 0.75 que convierte las palabras en objetos, y seis colores saturados que solo existen como relleno de pegatina. Todo lleva contorno negro de 1px, como si estuviera recortado a mano."
colors:
  primary: "#000000"
  primary-hover: "#1A1A1A"
  primary-active: "#000000"
  secondary: "#FFFFFF"
  accent: "#4DA2FF"
  accent-soft: "#DCEEFF"
  neutral: "#CCCCCC"
  background: "#DCEEFF"
  surface: "#FFFFFF"
  surface-elevated: "#E9E9E9"
  text-primary: "#000000"
  text-secondary: "#000000"
  text-muted: "#666666"
  text-on-primary: "#FFFFFF"
  text-accent: "#5C4ADE"
  border: "#000000"
  border-subtle: "#CCCCCC"
  success: "#000000"
  success-bg: "#55DB9C"
  warning: "#000000"
  warning-bg: "#FFD731"
  error: "#000000"
  error-bg: "#FB4903"
  info: "#FFFFFF"
  info-bg: "#5C4ADE"
typography:
  display-lg:
    fontFamily: "Archivo Black"
    fontSize: "640px"
    fontWeight: 400
    lineHeight: "0.75"
    letterSpacing: "0"
  display:
    fontFamily: "Archivo Black"
    fontSize: "200px"
    fontWeight: 400
    lineHeight: "0.8"
    letterSpacing: "0"
  heading:
    fontFamily: "Schibsted Grotesk"
    fontSize: "64px"
    fontWeight: 700
    lineHeight: "1"
    letterSpacing: "-0.01em"
  heading-sm:
    fontFamily: "Schibsted Grotesk"
    fontSize: "30px"
    fontWeight: 700
    lineHeight: "1.1"
    letterSpacing: "-0.01em"
  subheading:
    fontFamily: "Schibsted Grotesk"
    fontSize: "24px"
    fontWeight: 700
    lineHeight: "1.2"
    letterSpacing: "-0.01em"
  body:
    fontFamily: "Schibsted Grotesk"
    fontSize: "15px"
    fontWeight: 500
    lineHeight: "1.39"
    letterSpacing: "-0.01em"
  label:
    fontFamily: "Schibsted Grotesk"
    fontSize: "13px"
    fontWeight: 700
    lineHeight: "1.2"
    letterSpacing: "0.032em"
  caption:
    fontFamily: "Schibsted Grotesk"
    fontSize: "12px"
    fontWeight: 500
    lineHeight: "1.56"
    letterSpacing: "-0.01em"
rounded:
  sm: "16px"
  md: "20px"
  lg: "30px"
  xl: "40px"
  pill: "1600px"
  full: "1600px"
spacing:
  base: "4px"
  sm: "12px"
  md: "24px"
  lg: "48px"
  xl: "80px"
  2xl: "128px"
  3xl: "224px"
  gap: "12px"
  section-padding: "48px"
components:
  button-primary:
    backgroundColor: "{colors.primary}"
    textColor: "{colors.text-on-primary}"
    fontSize: "13px"
    fontWeight: 700
    letterSpacing: "0.032em"
    padding: "10px 12px"
    borderRadius: "{rounded.xl}"
    border: "1px solid {colors.border}"
    boxShadow: "none"
  button-ghost:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.text-primary}"
    fontSize: "13px"
    fontWeight: 700
    letterSpacing: "0.032em"
    padding: "10px 12px"
    borderRadius: "{rounded.pill}"
    border: "1px solid {colors.border}"
    boxShadow: "none"
  input:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.text-primary}"
    fontSize: "15px"
    padding: "12px 20px"
    borderRadius: "{rounded.pill}"
    border: "1px solid {colors.border}"
    boxShadow: "none"
  card:
    backgroundColor: "{colors.surface}"
    padding: "24px"
    borderRadius: "{rounded.md}"
    border: "1px solid {colors.border}"
    boxShadow: "none"
  badge:
    backgroundColor: "{colors.accent}"
    textColor: "{colors.text-primary}"
    fontSize: "12px"
    fontWeight: 700
    letterSpacing: "0.032em"
    padding: "6px 14px"
    borderRadius: "{rounded.pill}"
    border: "1px solid {colors.border}"
    boxShadow: "none"
---

# DESIGN.md - Slush

Sistema visual extraido de https://slush.app.
Fuente de los valores: la ficha publica de refero.design para el dominio, contrastada con la
captura real de portada. Los contrastes WCAG estan medidos aqui, no copiados. Los valores
marcados `(derivado para completar el sistema)` no aparecen en el sitio.

## 1. Tema Visual y Atmosfera

Slush funciona con logica de album de pegatinas. El lienzo es un papel azul palido, por
encima se cruzan cintas tridimensionales infladas en azul electrico, y alrededor flotan
pegatinas de colores saturados como confeti: un cohete, una moneda, una cartera, una cara
sonriente.

La decision que define el sistema es el interlineado del display: **0.75.** A 640px eso
significa que las lineas se meten unas dentro de otras y la palabra deja de ser una palabra
para ser un objeto fisico, algo por detras de lo cual la cinta azul puede pasar. Es
anticonvencional de verdad: casi nadie combina un display de peso 800 con un interlineado
por debajo de 0.85.

La tercera decision es el contorno. **Todo lleva una linea negra de 1px**: las pildoras de
navegacion, las cards, las pegatinas, el logotipo. Es lo que da el efecto de recortado a
mano y lo que hace que el conjunto se lea como un collage pegado a una pared clara y no como
una landing de fintech.

Palabras clave: pegatina, cinta inflada, interlineado 0.75, contorno negro, confeti.

## 2. Paleta de Colores y Roles Semanticos

Once colores, y seis de ellos son saturados. Es de las paletas mas ruidosas de esta galeria,
y funciona porque todos los saturados hacen el mismo trabajo: rellenar una pegatina.

### Colores de marca

| Nombre | Hex | Rol |
|---|---|---|
| Carbon | `#000000` | Texto primario, borde de card, relleno del CTA, logotipo. Es lo que crea el efecto de contorno recortado sobre las superficies pastel |
| Electric Blue | `#4DA2FF` | Color dominante: esculturas de cinta 3D, fondos de cuerpo, lavados de card. La firma visual que ancla todas las pantallas |
| Paper White | `#FFFFFF` | Lienzo de card, relleno de boton de contorno, texto sobre rellenos oscuros |

### La paleta de pegatinas

Los seis saturados funcionan como un set compartido. Cada uno aparece como relleno de
pegatina, superficie de card o lavado decorativo, **nunca como acento contenido.**

| Nombre | Hex | Rol | Texto encima |
|---|---|---|---|
| Electric Blue | `#4DA2FF` | Cinta 3D, fondo de cuerpo, lavado de card | negro, 7.93:1 |
| Mint Pop | `#55DB9C` | Lavado verde de fondo, bandas decorativas | negro, 12.00:1 |
| Lavender | `#E9CCFF` | Lavado suave de card, etiquetas, relleno de pegatina | negro, 14.55:1 |
| Ember | `#FB4903` | Iconos de pegatina, rellenos de badge, cuerpo del cohete | negro, 6.06:1 |
| Sunburst | `#FFD731` | Rellenos de moneda y decoraciones amarillas | negro, 15.02:1 |
| Voltage Violet | `#5C4ADE` | Pegatinas de cartera, card de descarga, CTA secundario | **blanco, 6.02:1** |

### La regla de volteo

Cinco de los seis piden texto negro y solo uno pide blanco. Los numeros:

| Color | Negro encima | Blanco encima | Gana |
|---|---|---|---|
| `#4DA2FF` | 7.93:1 | 2.65:1 | negro |
| `#55DB9C` | 12.00:1 | 1.75:1 | negro |
| `#E9CCFF` | 14.55:1 | 1.44:1 | negro |
| `#FB4903` | 6.06:1 | 3.47:1 | negro |
| `#FFD731` | 15.02:1 | 1.40:1 | negro |
| `#5C4ADE` | 3.49:1 | 6.02:1 | **blanco** |

Dos consecuencias practicas:

- **Sobre el azul dominante no se puede escribir en blanco.** 2.65:1. Y el azul es
  precisamente el que la ficha describe como fondo de cuerpo y lavado de card, es decir, el
  que mas superficie ocupa. Todo lo que caiga encima va en negro.
- **El violeta es la unica excepcion**, y ahi la ficha ya acierta: describe la card de
  descarga con texto blanco sobre `#5C4ADE`, que da 6.02:1. Si a alguien le da por
  homogeneizar el sistema poniendo todo en negro, esa card se cae a 3.49:1.

### Colores de superficie

| Nombre | Hex | Rol |
|---|---|---|
| Sky Wash | `#DCEEFF` | Fondo de la seccion de hero, el pastel azul del papel |
| Paper White | `#FFFFFF` | Lienzo de card y relleno de boton |
| Concrete Gray | `#CCCCCC` | Fondo de seccion secundaria, interludio neutro |
| Soft Mist | `#E9E9E9` | Tintes sutiles de boton y superficie, estados deshabilitados |

Los cuatro llevan el texto en negro con muchisimo margen: 17.72:1, 21:1, 13.08:1 y 17.30:1.
En este sistema el contraste no es un problema en las superficies; el problema esta en las
pegatinas, y ya esta resuelto arriba.

### Colores de estado

El sitio no expone estados. Se derivan de la propia paleta de pegatinas, que ya tiene un
color para cada humor.

| Estado | Color | Fondo | Origen |
|---|---|---|---|
| Success | `#000000` | `#55DB9C` | *(derivado)*: la menta |
| Warning | `#000000` | `#FFD731` | *(derivado)*: el amarillo |
| Error | `#000000` | `#FB4903` | *(derivado)*: el naranja brasa |
| Info | `#FFFFFF` | `#5C4ADE` | *(derivado)*: el violeta, el unico que lleva texto blanco |

## 3. Reglas de Tipografia

Dos familias, y una de ellas solo dice tres o cuatro palabras en toda la pagina.

### Sustitucion

**Original: Lateral -> HTML: Archivo Black (Google substitute).**

Lateral es una display ancha y muy pesada, y el sistema la usa unicamente en peso 800, entre
200px y 640px. La ficha de origen propone Druk, Bowlby One o Antonio: la primera no es libre,
la segunda no esta en el catalogo de este repositorio y la tercera es condensada, que es la
direccion contraria. La captura de portada resuelve la duda, porque las formas de SLUSH son
anchas, con la U muy abierta y terminales planos. Se compararon dos alternativas:

- **League Spartan** a 900 tiene el peso y la anchura, pero su geometria de circulo perfecto
  suaviza demasiado unas letras que aqui tienen que comportarse como bloques.
- **Bricolage Grotesque** a 800 es contemporanea y variable, pero sus rasgos deliberadamente
  irregulares compiten con las pegatinas, que ya aportan todo el ruido que la pagina admite.

Se elige **Archivo Black**, la misma sustituta que usa la ficha de Agence Foudre. No es
pereza: es que a la misma pregunta, una grotesca ultra negra y ancha en Google Fonts, la
respuesta es la misma. Viene en un unico corte que declara peso 400 y pinta como una negra.

**Original: Aeonik Pro -> HTML: Schibsted Grotesk (Google substitute).**

Aeonik es una grotesca a medio camino entre lo geometrico y lo neo-grotesco, y el sistema la
usa en pesos 500 y 700. La ficha propone Inter, Satoshi o General Sans: la primera esta
descartada por politica del repo y las otras dos no estan en Google. Schibsted Grotesk cubre
ese punto medio, se sirve variable de 400 a 900 y tiene la neutralidad justa para hacer de
interfaz debajo de un display de 640px.

La ficha menciona que el sitio activa `ss01` y `tnum` en Aeonik. La alternativa estilistica
no tiene equivalente en la sustituta, pero las cifras tabulares si, y conviene mantenerlas
donde haya numeros alineados.

### El tracking va en dos direcciones

Es el detalle mas fino del sistema y el mas facil de perder:

| Rango | Tracking |
|---|---|
| Cuerpo de 14px a 16px | **-0.010em** |
| Etiquetas de navegacion y boton | **+0.030em** |
| Mayusculas pequenas | **+0.032em** |
| Display | 0 |

El cuerpo se aprieta y las etiquetas se abren. Abrir las etiquetas es lo que da aire dentro
de las pildoras, que son estrechas de padding, y apretar el cuerpo es lo que lo mantiene
compacto al lado de un display gigante.

### Escala tipografica

| Rol | Fuente | Tamano | Peso | Interlineado | Tracking |
|---|---|---|---|---|---|
| display-lg | display | 640px | 800 | 0.75 | 0 |
| display | display | 200px | 800 | 0.80 | 0 |
| heading | sans | 64px | 700 | 1 | -0.01em |
| heading-sm | sans | 30px | 700 | 1.1 | -0.01em |
| subheading | sans | 24px | 700 | 1.2 | -0.01em |
| body-lg | sans | 15px | 500 | 1.39 | -0.01em |
| label | sans | 13px | 700 | 1.2 | +0.032em |
| caption | sans | 12px | 500 | 1.56 | -0.01em |

Entre los 64px de la sans y los 200px del display no hay nada. Ese hueco es deliberado: o es
interfaz, o es escultura.

### Pesos tipograficos

| Peso | Valor | Uso |
|---|---|---|
| Black | 800 en el original | Solo el display |
| Medium | 500 | Cuerpo y metadatos |
| Bold | 700 | Subtitulos, navegacion y etiquetas de boton |

## 4. Estilos de Componentes

Todo lleva contorno negro de 1px y todo esta redondeado hasta la blandura. Cero sombras.

### Pildora de navegacion

```css
background: #FFFFFF;
color: #000000;
border: 1px solid #000000;
border-radius: 1600px;
padding: 15px 12px;
font: 700 13px/1.2 "Schibsted Grotesk";
letter-spacing: 0.032em;
text-transform: uppercase;
```

Van en fila con 4px de separacion entre ellas. El radio de 1600px es una forma barroca de
escribir "capsula", y aparece en toda la navegacion.

### CTA relleno

```css
background: #000000;
color: #FFFFFF;
border: 1px solid #000000;
border-radius: 40px;
padding: 10px 12px;
font: 700 13px/1.2 "Schibsted Grotesk";
letter-spacing: 0.032em;
```

Un solo CTA relleno por pantalla, y siempre en negro. En un sistema con seis colores
saturados, la accion primaria es la unica cosa que no lleva color: es asi como consigue
destacar.

Estados *(derivados para completar el sistema)*:

| Estado | Cambio |
|---|---|
| hover | `background: #1A1A1A` |
| active | `transform: translateY(1px)` |
| focus-visible | `outline: 2px solid #5C4ADE; outline-offset: 3px` |
| disabled | `background: #E9E9E9; color: #666666` |

### Boton de contorno

Mismo contorno negro sobre relleno blanco, radio de capsula y el mismo padding. Va al lado o
debajo del relleno.

### Pegatina

```css
border: 1px solid #000000;
border-radius: 16px a 20px;
background: uno de los seis saturados;
transform: rotate(-8deg .. 8deg);
```

Ilustraciones planas (cohete, moneda, cartera, marca de verificacion) colocadas superpuestas
y giradas alrededor del display. **Nunca alineadas a la rejilla**: si se alinean, dejan de
ser pegatinas y pasan a ser iconos.

### Card

```css
background: #FFFFFF;
border: 1px solid #000000;
border-radius: 20px;
padding: 24px;
box-shadow: none;
```

La variante elevada sube a 40px de radio. La diferencia entre 20px y 40px es la unica
jerarquia de card que tiene el sistema.

### Card de descarga

Radio de 20px, fondo `#5C4ADE`, partida en dos: un panel blanco con el codigo y otro violeta
con la etiqueta en blanco a 700. Es el unico componente del sistema con texto blanco sobre
color, y esta bien: 6.02:1.

### Marquesina

Franja a sangre en la parte superior de la pagina con un mensaje que se repite, en
mayusculas a 12px o 13px con tracking 0.032em.

**Corregida respecto a la fuente:** la ficha la describe con fondo `#000000` y texto blanco.
En la portada real es **una banda lavanda con texto negro**. Tiene sentido dentro del
sistema: una franja negra a sangre encima de un lienzo pastel seria el elemento de mas
contraste de la pagina, por delante del propio CTA.

### Logotipo

Insignia circular con contorno negro sobre relleno blanco, en posicion fija arriba a la
izquierda.

## 5. Principios de Layout

### Escala de espaciado

Base de 4px y una escala larguisima, dieciseis valores, que llega hasta 224px.

| Token | Valor | Uso |
|---|---|---|
| `--spacing-4` | 4px | Separacion entre pildoras de navegacion |
| `--spacing-12` | 12px | Padding horizontal de boton, gap entre elementos |
| `--spacing-24` | 24px | Padding de card |
| `--spacing-48` | 48px | Gap entre secciones |
| `--spacing-80` | 80px | Aire entre bloques |
| `--spacing-128` | 128px | Respiro de seccion |
| `--spacing-224` | 224px | Respiro de escultura |

### Contenedores

Ancho maximo de 1440px. El cuerpo de la pagina lleva **30px de radio en sus propias
esquinas**, lo que hace que toda la pagina se lea como una tarjeta pegada sobre el fondo del
navegador. Es un detalle raro y facil de pasar por alto.

### Grid

No hay rejilla en el sentido habitual. Hay un bloque de display centrado, las pegatinas
colocadas en absoluto a su alrededor y la cinta 3D pasando por detras. Debajo, secciones de
cards con contorno.

### Filosofia de espaciado

Apretado dentro de los controles (12px de padding horizontal en un boton es muy poco) y muy
generoso alrededor de la escultura tipografica. El contraste entre ambas densidades es lo que
hace que el display parezca aun mas grande.

## 6. Profundidad y Elevacion

Cero sombras. La profundidad de esta pagina es **ilustrada**: las cintas 3D tienen volumen
propio, con luces y sombras pintadas dentro de la imagen, y las pegatinas se solapan entre
si. El CSS es completamente plano.

| Nivel | Nombre | Hex | Uso |
|---|---|---|---|
| 0 | Sky Wash | `#DCEEFF` | Fondo del hero |
| 1 | Paper White | `#FFFFFF` | Cards y botones |
| 2 | Concrete Gray | `#CCCCCC` | Seccion secundaria |
| 3 | Saturados | los seis | Pegatinas y lavados |

Lo que separa un objeto de su fondo es su contorno negro, no una sombra. Cambiar el contorno
por una sombra suave deshace el efecto de recortado a mano, que es el sistema entero.

### Radios de borde

| Token | Valor | Uso |
|---|---|---|
| `--radius-16` | 16px | Icono de cartera y pegatinas pequenas |
| `--radius-20` | 20px | Cards |
| `--radius-30` | 30px | Las esquinas del propio cuerpo de la pagina |
| `--radius-40` | 40px | Cards elevadas y CTA relleno |
| `--radius-pill` | 1600px | Navegacion, pildoras y botones de contorno |

Cinco radios es mucho, y aqui no molesta porque todos van en la misma direccion: cuanto mas
grande el objeto, mas blando. Es una escala de blandura, no una taxonomia.

## 7. Lo que Si y lo que No

### Si hacer

- Poner el display con interlineado entre 0.75 y 0.80. Es lo que convierte la palabra en un
  objeto por detras del cual puede pasar la cinta.
- Dar contorno negro de 1px a todo: pildoras, cards, pegatinas y logotipo.
- Elegir el color de texto de cada pegatina por luminancia. Cinco de los seis piden negro;
  solo el violeta pide blanco.
- Usar negro para el unico CTA relleno de cada pantalla. En una paleta de seis saturados, la
  accion primaria destaca por no llevar color.
- Apretar el cuerpo a -0.010em y abrir las etiquetas a +0.032em. Van en direcciones
  opuestas a proposito.
- Girar las pegatinas y superponerlas, nunca alinearlas a la rejilla.
- Dejar los 30px de radio en las esquinas del propio cuerpo de la pagina.

### No hacer

- No escribir en blanco sobre el azul dominante: 2.65:1, y es el color que mas superficie
  ocupa.
- No homogeneizar el texto de las pegatinas a negro: sobre el violeta cae a 3.49:1.
- No sustituir el contorno negro por una sombra suave: deshace el recortado a mano.
- No poner la marquesina en negro a sangre: seria el elemento de mas contraste de la pagina,
  por delante del CTA.
- No usar interlineados por encima de 0.85 en el display.
- No alinear las pegatinas a la rejilla: dejan de ser pegatinas y pasan a ser iconos.
- No usar un segundo CTA relleno en la misma pantalla.
- No aplicar el mismo tracking al cuerpo y a las etiquetas.

## 8. Comportamiento Responsive

### Breakpoints *(derivados para completar el sistema)*

| Nombre | Ancho |
|---|---|
| sm | 640px |
| md | 768px |
| lg | 1024px |
| xl | 1440px, ancho maximo del contenedor |

### Cambios por breakpoint

- **Display:** de 640px baja a 96px conservando el interlineado 0.75. La compresion es
  identidad; el tamano no.
- **Pegatinas:** en movil se quedan dos o tres, no las seis. Amontonarlas alrededor de un
  display estrecho tapa el propio display.
- **Cinta 3D:** se recorta por los lados y sigue pasando por detras del texto.
- **Navegacion:** las pildoras colapsan en un menu; el logotipo y el CTA relleno se quedan.
- **Botones:** de fila a pila, cada uno a ancho completo, conservando el radio de capsula.
- **Gap de seccion:** de 48px a 32px. Ya es apretado de origen.
- **Radio del cuerpo:** los 30px se mantienen. Es lo que hace que la pagina siga leyendose
  como una tarjeta.

### Touch targets

Las pildoras de navegacion tienen 15px de padding vertical y llegan bien. El CTA relleno,
con 10px sobre 13px de texto, se queda en unos 36px y necesita subir a 14px en movil.
*(derivado para completar el sistema)*

### Filosofia responsive

Se protege el display y la cinta. Las pegatinas son lo primero que se sacrifica, porque son
decoracion, no contenido.

## 9. Guia de Prompts para Agentes

### Referencia rapida de color

- texto: `#000000`
- fondo de hero: `#DCEEFF`
- superficie de card: `#FFFFFF`
- contorno: `#000000`, 1px
- color dominante: `#4DA2FF`
- pegatinas: `#55DB9C`, `#E9CCFF`, `#FB4903`, `#FFD731`, `#5C4ADE`
- accion primaria: `#000000` con texto blanco

### Prompt de inicializacion de sesion

```
Trabaja con el sistema Slush. Lienzo pastel #DCEEFF, cards #FFFFFF, texto #000000, y un
contorno negro de 1px en absolutamente todo: pildoras, cards, pegatinas y logotipo. Seis
colores saturados que solo existen como relleno de pegatina o lavado: #4DA2FF (el
dominante), #55DB9C, #E9CCFF, #FB4903, #FFD731 y #5C4ADE. El texto de cada uno se elige
por luminancia: negro en todos menos en #5C4ADE, que lleva blanco. Tipografia: una
display ultra negra solo para el titular, con interlineado entre 0.75 y 0.80, y una
grotesca en pesos 500 y 700 para la interfaz, con el cuerpo a -0.010em y las etiquetas a
+0.032em. Espaciado base 4px, gap 12px, 48px entre secciones. Radios: 16px, 20px, 30px en
el cuerpo de la pagina, 40px en elevadas y capsula en la navegacion. Cero sombras: la
profundidad la ponen las ilustraciones.
```

### Prompt: crear pantalla nueva

```
Monta la pantalla sobre #DCEEFF con el cuerpo de la pagina redondeado a 30px. Arriba, una
marquesina lavanda con texto negro en mayusculas de 12px con 0.032em. Debajo, una fila de
pildoras blancas con contorno negro y un CTA relleno en negro. En el centro, un titular en
display ultra negra a 200px o mas con interlineado 0.75, con una cinta 3D azul pasando por
detras y tres o cuatro pegatinas de colores giradas y superpuestas alrededor, cada una con
su contorno negro. Debajo, una linea de apoyo en la grotesca a 64px peso 700 y dos botones
de capsula. Sin sombras.
```

### Prompt: anadir componente al kit

```
Anade el componente con contorno negro de 1px y el radio que le toque segun su tamano:
16px si es pequeno, 20px si es card, 40px si es card elevada, capsula si es control. Si
lleva fondo saturado, calcula el color de texto por luminancia en vez de asumir blanco;
en este sistema casi siempre sale negro. Sin sombra: si necesita separarse, lo hace el
contorno.
```

### Prompt: revision de consistencia

```
Revisa la pantalla contra el sistema Slush y senala: 1) texto blanco sobre #4DA2FF o
sobre cualquier saturado que no sea #5C4ADE, 2) texto negro sobre #5C4ADE, 3) cualquier
box-shadow, 4) elementos sin contorno negro de 1px, 5) display con interlineado por
encima de 0.85, 6) pegatinas alineadas a la rejilla o sin girar, 7) mas de un CTA relleno
por pantalla, 8) el mismo tracking en cuerpo y en etiquetas, 9) la marquesina en negro.
```

### Prompt: variante de campana

```
Para una campana puedes llevar el display a 640px y dejar que la palabra se salga del
encuadre por los dos lados, con la cinta pasando por detras y las pegatinas amontonadas
en una esquina. Tambien puedes cambiar el pastel del lienzo por otro de la paleta. Lo que
no puedes cambiar: el contorno negro, el interlineado por debajo de 0.85, la ausencia de
sombra y que el CTA relleno siga siendo el unico elemento sin color.
```

## 10. Movimiento (Motion)

El movimiento vive en la marquesina y en las pegatinas. La tabla es
*(derivada para completar el sistema)* a partir del comportamiento observado.

| Elemento | Propiedad | Duracion | Curva |
|---|---|---|---|
| Marquesina | transform translateX, en bucle | continua | lineal |
| Pegatina, hover | transform rotate y scale(1.06) | 240ms | cubic-bezier(.34,1.56,.64,1) |
| Pildora de navegacion, hover | background-color | 160ms | ease-out |
| CTA relleno, active | transform translateY(1px) | 80ms | ease-out |
| Cinta 3D | animacion propia, en bucle lento | continua | ease-in-out |

Principios: este es el unico sistema de la galeria donde una curva elastica esta permitida,
y solo en las pegatinas. Un objeto recortado a mano puede rebotar; una card no. Respetar
siempre `prefers-reduced-motion`, y en ese caso congelar la marquesina y la cinta.

## Anexo: Stack tecnico detectado

| Aspecto | Valor |
|---|---|
| URL de origen | https://slush.app |
| Tema | light |
| Familia de color | blue |
| Color dominante declarado | `#4DA2FF` |
| Tipografias reales | Lateral en peso 800 y Aeonik Pro en 500 y 700, con `ss01` y `tnum` |
| Disponibles en Google Fonts | Ninguna. Lateral sustituida por Archivo Black, Aeonik Pro por Schibsted Grotesk |
| Unidad base de espaciado | 4px, con escala de dieciseis valores hasta 224px |
| Densidad | comoda |
| Ancho maximo | 1440px, con 30px de radio en las esquinas del propio cuerpo |
| Radios | 16, 20, 30, 40px y capsula. Una escala de blandura, no una taxonomia |
| Sombras | ninguna en CSS. La profundidad esta pintada dentro de las ilustraciones |
| Gradientes | ninguno en interfaz |
| Imagenes | cintas tridimensionales infladas en azul electrico y pegatinas planas con contorno negro |

Nota de fidelidad: la paleta, la escala, los radios y la ausencia de sombra salen del sitio
real y de su ficha publica. La sustitucion tipografica esta declarada. Los contrastes se han
calculado para esta ficha y dan la regla de volteo de las seis pegatinas, que la fuente no
recoge: cinco piden negro y solo el violeta pide blanco. La marquesina se corrige contra la
captura de portada, donde es lavanda con texto negro y no negra con texto blanco. Los estados
de interaccion, los colores semanticos, los breakpoints y la tabla de motion estan marcados
como derivados alli donde aparecen.