Design tokens
The semantic layer: every colour, radius, shadow and family a component is allowed to reference, generated from the design's blueprint. Switch the theme in the navbar to see the dark mode.
Palette
The primitive ramps behind every role, 25 to 975, derived from each seed colour in the blueprint. Components never use these directly — pick a role from the sections below. The number is the step; hover a swatch for its value.
2550100150200250300350400450500550600650700750800850900950975
2550100150200250300350400450500550600650700750800850900950975
2550100150200250300350400450500550600650700750800850900950975
2550100150200250300350400450500550600650700750800850900950975
2550100150200250300350400450500550600650700750800850900950975
2550100150200250300350400450500550600650700750800850900950975
2550100150200250300350400450500550600650700750800850900950975
Surfaces
Backgrounds, from furthest back to nearest front.
bg-surface-basethe pagebg-surface-raisedcards, sheets, menusbg-surface-subtlewells and inset areasfrom-surface-base to-surface-subtlethe wash behind a pagebg-surface-overlay shadow-meda panel over the backdropText and icons
Foreground content. On-action is for content sitting on a filled action.
text-fg-primarybody and headingstext-fg-secondarysecondary and helper texttext-fg-on-actionlabel on a filled actiontext-fg-accentbrand text that is not an actiontext-fg-disableddisabled labelstext-fg-accentinline linksLines
Dividers and control outlines.
border-border-defaultdefault dividerborder-border-strongemphasis, input outlinesborder-border-subtlequiet dividerborder-border-muteddisabled outlineAction
The primary action and the states it needs to be usable. Secondary and neutral actions follow the same pattern.
bg-action-primaryrestingbg-action-primary-hoverhoverbg-action-primary-activepressedbg-action-primary-surfaceselected row, quiet buttonSecondary action
The second action ramp, standing in for what used to be the accent.
bg-action-secondaryhighlightbg-action-secondary-surfacehighlight washStatus
Each status has a fill for text and icons, and a wash for backgrounds.
text-status-success-fg / bg-status-success-surfaceit workedtext-status-warning-fg / bg-status-warning-surfaceneeds attentiontext-status-error-fg / bg-status-error-surfaceit failed, or it destroystext-status-info-fg / bg-status-info-surfaceneutral informationFocus
Applied globally, because FE_06 wants focus visible on everything interactive: one colour and the ring width and offset. Tab to the button.
--focus-ring (global :focus-visible)keyboard focus ringShape
The blueprint's corners, and the layout roles that pick one per device: a surface is a container on phone and tablet and a page on desktop.
rounded-innera corner inside a cornerrounded-elementa badge, a menu itemrounded-containera card, a panel, a dialogrounded-pagea sheet, a full-width surfacerounded-surfacecards and panels, per devicerounded-buttonbuttons, icon buttonsrounded-inputfields, selects, searchrounded-chipchips, badges, tagsElevation
Three heights, tinted with the darkest neutral and stronger in the dark mode.
shadow-lowa card resting on the pageshadow-meda menu or a popovershadow-higha dialog over everythingFamilies
The blueprint's three faces, plus mono for code.
font-mainevery role but the ones below (Google Sans)font-displaydisplay, subtitle-display, quote (Cooper)font-handwritesubtitle-handwrite (Caveat)font-monocode, ids, keysMotion
Only the two loops the loading indicators need. Nothing else animates yet, and the pulse stops under reduced motion.
animate-spinSpinner, Button loadingmotion-safe:animate-pulseSkeletonType
One utility per type role in the blueprint, each carrying size, line height, letter spacing and weight, and stepping up at the tablet and desktop breakpoints. A utility cannot carry a family, so display, handwrite and code roles also need their font class — or use the Text component, which adds it. Resize the window to see the steps.
- Feedback that helps
font-display text-display-1display-1 - Feedback that helps
font-display text-display-2display-2 - Feedback that helps
font-display text-display-3display-3 - Feedback that helps
font-display text-display-4display-4 - Feedback that helps
font-display text-display-5display-5 - Feedback that helps
font-display text-display-6display-6 - Feedback that helps
text-h1h1 - Feedback that helps
text-h2h2 - Feedback that helps
text-h3h3 - Feedback that helps
text-h4h4 - Feedback that helps
text-h5h5 - Feedback that helps
text-h6h6 - Feedback that helps
text-subtitle-1subtitle-1 - Feedback that helps
text-subtitle-2subtitle-2 - Feedback that helps
text-subtitle-3subtitle-3 - Feedback that helps
text-subtitle-4subtitle-4 - Feedback that helps
font-display text-subtitle-display-1subtitle-display-1 - Feedback that helps
font-display text-subtitle-display-2subtitle-display-2 - Feedback that helps
font-display text-subtitle-display-3subtitle-display-3 - Feedback that helps
font-display text-subtitle-display-4subtitle-display-4 - Feedback that helps
font-handwrite text-subtitle-handwrite-1subtitle-handwrite-1 - Feedback that helps
font-handwrite text-subtitle-handwrite-2subtitle-handwrite-2 - Feedback that helps
font-handwrite text-subtitle-handwrite-3subtitle-handwrite-3 - Feedback that helps
font-handwrite text-subtitle-handwrite-4subtitle-handwrite-4 - Feedback that helps
text-body-1body-1 - Feedback that helps
text-body-2body-2 - Feedback that helps
text-body-3body-3 - Feedback that helps
font-display text-quotequote - Feedback that helps
font-mono text-codecode text-button-mdbutton-mdtext-button-smbutton-smtext-button-xsbutton-xs- Feedback that helps
text-input-label-mdinput-label-md - Feedback that helps
text-input-label-sminput-label-sm - Feedback that helps
text-input-label-xsinput-label-xs - Feedback that helps
text-input-value-mdinput-value-md - Feedback that helps
text-input-value-sminput-value-sm - Feedback that helps
text-input-value-xsinput-value-xs - Feedback that helps
text-input-helperinput-helper - Feedback that helps
text-table-headertable-header - Feedback that helps
text-list-subheaderlist-subheader - Feedback that helps
text-labellabel - Feedback that helps
text-captioncaption - Feedback that helps
text-overline uppercaseoverline - Feedback that helps
text-tagtag