Skip to content

Surfaces

Surfaces are the containers that hold your content. They define the background color, border color, and text context for everything inside them.

These surfaces form the backdrop of your application.

The infinite background. This is usually applied to the <body> tag.

This is the Page surface.

A slightly elevated area, often used for sidebars, navigation rails, or the main content area in a dashboard.

This is the Workspace surface.

These surfaces sit on top of the canvas.

The primary container for grouped content. It has a distinct background color that separates it from the canvas.

This is a Card.

A subtle grouping mechanism. It usually has a slight tint of the brand color (or another semantic color) to highlight a section without a hard boundary.

This is a Tinted surface inside a Card.

These surfaces demand attention. They often use Inverted Polarity (Dark on Light, or Light on Dark) to stand out.

High contrast. Used for tooltips, toasts, and primary call-to-actions.

This is a Spotlight.

A softer version of the spotlight. Useful for badges or indicators that need to be distinct but not shouting.

This is a Soft Spotlight.

Shadows provide depth and hierarchy. The system generates a semantic scale of shadows that are subtle in Light Mode and stronger in Dark Mode to ensure visibility.

shadow-sm
shadow-md
shadow-lg
shadow-xl

Every surface exposes a standard set of CSS variables (tokens) that adapt to the surface’s background.

Token VariableDescriptionUsage
--surface-tokenThe background color of the surface.background: var(--surface-token)
--text-high-tokenHigh contrast text color.color: var(--text-high-token)
--text-subtle-tokenMedium contrast text color.color: var(--text-subtle-token)
--text-subtlest-tokenLow contrast text color.color: var(--text-subtlest-token)
--border-dec-tokenDecorative border color (low contrast).border-color: var(--border-dec-token)
--border-int-tokenInteractive border color (higher contrast).border-color: var(--border-int-token)