Su Promoción Merchandising

Referencia interna

Design system

Corporativo premium sobre la paleta de la marca. Todo lo de esta página sale de src/styles/global.css y src/components/ui/.

01 · Color

Rampas de marca

La materia prima. Los componentes no deberían tomar un escalón numerado directamente: para eso están los tokens semánticos de abajo.

brand

50

#fff5ed

100

#ffe8d5

200

#ffcdaa

300

#ffab74

400

#ff8c44

500

#fd6a17

600

#ee500d

700

#c53a0d

800

#9c3013

900

#7e2a13

ink

50

#f7f7f8

100

#eeeef0

200

#d9dade

300

#b8b9c0

400

#90929c

500

#72747f

600

#5b5d67

700

#4a4b54

800

#3f4047

900

#1c1d21

02 · Color

Tokens semánticos

Lo que usan los componentes. Nombran la función, no el color, para que el sistema pueda cambiar de paleta sin reescribir las pantallas.

TokenUsoValor
surfaceFondo por defecto#ffffff
surface-mutedBanda alterna, celdas de datosink-50
surface-inverseBanda oscura de contrasteink-900
lineBorde hairline por defectoink-100
line-strongBorde de control / hoverink-200
headingTítulosink-900
copyTexto de cuerpoink-600
mutedTexto secundario, metadatosink-500
accentRellenos naranjas (texto oscuro encima)brand-500
accent-inkTexto naranja sobre fondo clarobrand-700
accent-on-darkNaranja sobre banda oscurabrand-400
accent-subtleFondo de badge / destacado suavebrand-50

03 · Accesibilidad

Contraste verificado

Medido, no estimado. Las tres combinaciones marcadas en rojo son las que el sitio usa hoy y el sistema reemplaza.

ink-900 sobre blanco

16.84

✓ Pasa AA para texto normal

ink-600 sobre blanco (cuerpo)

6.55

✓ Pasa AA para texto normal

ink-500 sobre blanco (mínimo)

4.65

✓ Pasa AA para texto normal

brand-700 sobre blanco

5.27

✓ Pasa AA para texto normal

brand-600 sobre blanco

3.63

✗ No usar — falla AA

ink-900 sobre brand-500

5.81

✓ Pasa AA para texto normal

blanco sobre brand-500

2.90

✗ No usar — falla AA

ink-900 sobre verde WhatsApp

8.50

✓ Pasa AA para texto normal

blanco sobre verde WhatsApp

1.98

✗ No usar — falla AA

brand-400 sobre ink-900

7.29

✓ Pasa AA para texto normal

ink-300 sobre ink-900 (cuerpo inverso)

8.61

✓ Pasa AA para texto normal

04 · Tipografía

Escala por roles

Roboto en 400 / 600 / 700. Los tamaños son fluidos: crecen con el viewport sin escalones por breakpoint, y los titulares llevan tracking negativo progresivo.

text-display

40 → 64 px

Titular de landing. Uno por página, como mucho.

Merchandising personalizado

text-h1

32 → 48 px

Título de página.

Merchandising personalizado

text-h2

26 → 36 px

Título de sección.

Merchandising personalizado

text-h3

20 → 24 px

Subsección, título de tarjeta grande.

Merchandising personalizado

text-h4

18 px

Título de tarjeta, encabezado de lista.

Merchandising personalizado

text-lead

17 → 20 px

Bajada de sección.

Merchandising personalizado

text-body

16 px

Texto corrido.

Merchandising personalizado

text-body-sm

15 px

UI densa, texto de tarjeta.

Merchandising personalizado

text-caption

13 px

Metadatos, notas al pie.

Merchandising personalizado

text-eyebrow

12 px

Volanta y badges. Siempre en versalita.

Merchandising personalizado

05 · Forma

Radios, elevación y ritmo

Tres pasos en cada eje. La restricción es el punto: cuantas menos opciones haya, más consistente sale la página sin esfuerzo.

Radios

rounded-control

0.625rem — inputs, botones rectos

rounded-card

0.875rem — tarjetas

rounded-panel

1.25rem — bloques grandes

rounded-full

pill — botones y badges

Elevación

Sombras amplias, de baja opacidad y teñidas con el neutro de marca. Nunca para dibujar bordes.

shadow-raised

reposo de tarjeta o botón

shadow-lifted

hover, elemento levantado

shadow-overlay

menús, modales, drawers

Ritmo vertical

Reemplaza los seis py-* distintos que conviven hoy. Se aplica solo con la proprhythm de <Section>.

py-section-sm

40 → 56 px — bandas densas, breadcrumbs

py-section

56 → 96 px — default de sección

py-section-lg

80 → 128 px — momentos de respiro

px-gutter

16 → 32 px. Un solo margen lateral fluido en lugar de px-4 sm:px-6 lg:px-8.

06 · Componentes

Botones

Cinco variantes, tres tamaños. Los rellenos brillantes llevan texto oscuro por contraste, y eso además es lo que les da el registro premium.

primary

Acción principal. ink-900 / blanco — 16.84.

accent

Señal de marca. brand-500 / ink-900 — 5.81.

whatsapp

Verde exacto de WhatsApp con texto oscuro — 8.50.

outline

Acción secundaria dentro de una sección.

ghost

Terciaria. brand-700 sobre claro — 5.27.

sobre banda oscura

La prop `inverse` ajusta outline y ghost.

07 · Componentes

Superficies y etiquetas

El borde define la caja; la sombra aparece solo cuando algo se levanta de verdad.

flat

Default. Solo borde hairline.

raised

Reposo con presencia.

lifted

Estado elevado.

interactive

Pasá el mouse: sube la elevación.

NovedadMás pedidoStock permanenteTecnología

08 · Uso

Reglas

Las decisiones que hacen que el sistema se sostenga cuando lo toca otra persona.

Usar accent (brand-500) como relleno con texto ink-900 encima.

Poner texto blanco sobre naranja o sobre verde: falla WCAG AA.

Usar accent-ink (brand-700) cuando el naranja es texto.

Usar brand-600 como color de texto sobre blanco (3.63).

Definir la caja con el borde hairline line.

Dibujar contornos con sombra. La sombra es elevación, no borde.

Alternar surface / surface-muted / surface-inverse para estructurar.

Inventar un cuarto fondo o degradados decorativos de fondo.

Envolver cada banda en

para heredar ritmo y ancho.

Repetir mx-auto max-w-7xl px-4 sm:px-6 lg:px-8 a mano.

Pedir un rol tipográfico (text-h2) según jerarquía.

Elegir text-3xl por cómo se ve en esa pantalla puntual.

Reservar el naranja para la acción y la señal.

Repartirlo en iconos, bordes y fondos a la vez: deja de significar.

09 · Arquitectura

Al día con la plataforma

Tres decisiones técnicas detrás del sistema, tomadas después de revisar el estado real de CSS, Tailwind y Astro — no supuestos de hace dos años.

Color

Paleta en OKLCH

Los tokens de brand e inkestán declarados en oklch(), el mismo espacio que usa Tailwind v4 para su paleta y para color-mix() en modificadores de opacidad. Es una conversión exacta de los hex anteriores (round-trip verificado) — el mismo color, un espacio perceptualmente uniforme para extenderlo.

Navegación

View Transitions nativas

<ClientRouter /> de Astro reemplaza el corte seco entre páginas por un fundido, sin JS de terceros. La foto de un producto en el listado vuela hasta la foto de su ficha con transition:name — cero animación escrita a mano. Se apaga sola con prefers-reduced-motion.

CSS nativo

:has() en vez de JS

Las pestañas del megamenú ("Por producto" / "Por ocasión") cambian de panel con.mega-panel:has(#tab:checked): cero JavaScript, con soporte universal en los motores actuales. Es la referencia a seguir antes de escribir undata-active a mano.