Elevación
BetaSeis niveles de sombra para comunicar qué está por encima de qué.
La elevación no es decoración: responde qué flota sobre qué. Una sombra más grande significa "esto está más cerca tuyo y es temporal" — un menú, un modal. Si todo tiene sombra, nada está elevado.
En Figma son los effect styles Elevation/xs … Elevation/2xl; en código,
las utilidades shadow-xs … shadow-2xl y las variables --ds-shadow-*.
Escala
xsApenas despega: inputs, botones neutros, cards en reposo.
smCards interactivas en reposo, segmentos activos.
mdCards en hover, dropdowns compactos.
lgMenús, popovers, tooltips, toasts.
xlModales y drawers.
2xlMáxima elevación: overlays sobre overlays, media destacada.
Todas las sombras comparten un único color (rgb(10 13 18)) y solo varían
offset, blur y alpha. Por eso se pueden apilar superficies sin que una sombra
"ensucie" a la otra.
Qué nivel usar
| Capa | Nivel | Ejemplos |
|---|---|---|
| Base | sin sombra | Página, secciones, la mayoría de las cards (usan borde). |
| Reposo | xs sm | Inputs, botones neutros, cards clickeables. |
| Interacción | md | Card en hover, elemento que se está arrastrando. |
| Flotante | lg | Menús, popovers, tooltips, toasts. |
| Bloqueante | xl | Modales y drawers (siempre con scrim). |
| Excepcional | 2xl | Overlay sobre overlay, media destacada en marketing. |
Reglas
- Borde primero, sombra después. En Polen la separación por defecto es
border/default. La sombra se reserva para lo que realmente flota. - Subí un nivel en hover, nunca dos.
sm → md, conduration-fast. - La superficie elevada usa
bg/elevated, nobg/default: en dark mode la sombra casi no se ve y el cambio de fondo hace el trabajo. - No inventes sombras de color. El glow verde de foco es
focus/ring, no una elevación.
En código
<div className="rounded-2xl bg-bg-elevated shadow-lg">…</div>.menu {
background: var(--bg-elevated);
box-shadow: var(--ds-shadow-lg);
}