Tokens
Every value in Seed. Build UI with the semantic colors; each swatch shows Light on the left and Dark on the right. The Tailwind class is next to each name.
Backgrounds
bg-primaryDefault app and page background; cards and dialogs. Dark surfaces sit 2 to 6% apart (canvas #111, sidebar #141414, page #181818, elevated #1e1e1e); borders do the separating.bg-primarybg-secondarySubtle section background: sidebars, table headers, striped rows.bg-secondarybg-tertiaryMuted fill: inputs at rest, chips, wells, code blocks.bg-tertiarybg-quartiaryStrongest neutral fill: skeletons, scrollbar thumbs, tracks.bg-quartiarybg-primary-hoverHover state of `bg-primary`.bg-primary-hoverbg-secondary-hoverHover state of `bg-secondary`.bg-secondary-hoverbg-tertiary-hoverHover state of `bg-tertiary`.bg-tertiary-hoverbg-quartiary-hoverHover state of `bg-quartiary`.bg-quartiary-hoverbg-black-solidInverse solid fill (neutral-900 in Light, white in Dark): tooltips, inverse buttons, toasts. Text on it: `text-on-dark-color`.bg-black-solidbg-black-solid-hoverHover state of `bg-black-solid`.bg-black-solid-hoverbg-disabledFill of disabled solid controls (disabled primary button).bg-disabledbg-disabled-altFill of disabled soft controls (disabled input, secondary button).bg-disabled-altbg-canvasApp background behind panels and the page. The quietest surface; never put text directly on it without a panel.bg-canvasbg-insetRecessed areas inside a surface: code blocks, wells, empty drop zones.bg-insetbg-elevatedFloating surfaces (popovers, menus, the Pluto panel). Same as bg-primary in Light, one step lighter in Dark so elevation reads without color.bg-elevatedbg-selectedNeutral selection: active nav, pressed toggles, selected rows. Keeps chrome colorless so the customer's brand color is the only accent on screen.bg-selectedbg-selected-hoverHover on bg-selected.bg-selected-hoverbg-stageThe surface customer content is shown on (swatches, component previews). Pure, untinted, and switchable to the opposite mode or a checkerboard.bg-stagebg-stage-patternSecond color of the checkerboard stage, for judging transparency.bg-stage-patternbg-accent-primarySoft accent fill: selected rows, active nav items, accent badges. Text on it: `text-accent-primary`.bg-accent-primarybg-accent-primary-hoverHover state of `bg-accent-primary`.bg-accent-primary-hoverbg-accent-solidSolid accent (blue) fill for the strongest emphasis. Text on it: `text-white` in Light, `text-on-dark-color` in Dark. Dark uses blue-600 so white text keeps 4.5:1 (was blue-500, 3.6:1).bg-accent-solidbg-accent-solid-hoverHover state of `bg-accent-solid`.bg-accent-solid-hoverbg-error-primarySoft error fill: alert, badge and banner backgrounds. Text on it: `text-error-primary`.bg-error-primarybg-error-primary-hoverHover state of `bg-error-primary`.bg-error-primary-hoverbg-error-secondarySolid error fill: solid badges, progress, emphasis alerts.bg-error-secondarybg-error-secondary-hoverHover state of `bg-error-secondary`.bg-error-secondary-hoverbg-success-primarySoft success fill: alert, badge and banner backgrounds. Text on it: `text-success-primary`.bg-success-primarybg-success-primary-hoverHover state of `bg-success-primary`.bg-success-primary-hoverbg-success-secondarySolid success fill: solid badges, progress, emphasis alerts.bg-success-secondarybg-success-secondary-hoverHover state of `bg-success-secondary`.bg-success-secondary-hoverbg-warning-primarySoft warning fill: alert, badge and banner backgrounds. Text on it: `text-warning-primary`.bg-warning-primarybg-warning-primary-hoverHover state of `bg-warning-primary`.bg-warning-primary-hoverbg-warning-secondarySolid warning fill: solid badges, progress, emphasis alerts.bg-warning-secondarybg-warning-secondary-hoverHover state of `bg-warning-secondary`.bg-warning-secondary-hoverbg-info-primarySoft info fill: alert, badge and banner backgrounds. Text on it: `text-info-primary`.bg-info-primarybg-info-primary-hoverHover state of `bg-info-primary`.bg-info-primary-hoverbg-info-secondarySolid info fill: solid badges, progress, emphasis alerts.bg-info-secondarybg-info-secondary-hoverHover state of `bg-info-secondary`.bg-info-secondary-hoverbg-offer-primarySoft offer fill: alert, badge and banner backgrounds. Text on it: `text-offer-primary`.bg-offer-primarybg-offer-primary-hoverHover state of `bg-offer-primary`.bg-offer-primary-hoverbg-offer-secondarySolid offer fill: solid badges, progress, emphasis alerts.bg-offer-secondarybg-offer-secondary-hoverHover state of `bg-offer-secondary`.bg-offer-secondary-hoverbg-overlay-alpha-primaryLight scrim behind popovers and drawers (20%).bg-overlay-alpha-primarybg-overlay-alpha-secondaryHeavy scrim behind modal dialogs and sheets: black at 75% in Light and Dark.bg-overlay-alpha-secondary
Text
text-primaryHeadings and body copy on `bg-primary`, `bg-secondary`, `bg-tertiary`. Contrast on `bg-primary` 17.9:1 Light / 17.9:1 Dark.text-primarytext-primary-hoverHover state of `text-primary`.text-primary-hovertext-secondarySupporting copy: descriptions, secondary labels, table cells. Contrast on `bg-primary` 7.6:1 Light / 12.0:1 Dark.text-secondarytext-secondary-hoverHover state of `text-secondary`.text-secondary-hovertext-tertiaryLeast emphasis that still reads as text: meta, timestamps, helper text. Contrast on `bg-primary` 4.8:1 Light / 7.0:1 Dark.text-tertiarytext-tertiary-hoverHover state of `text-tertiary`.text-tertiary-hovertext-disabledLabels of disabled controls. Contrast on `bg-primary` 2.6:1 Light / 3.8:1 Dark. Below 3:1 in at least one theme (kept as in the source): not for text or meaningful marks there.text-disabledtext-disabled-altDisabled content on `bg-disabled`/`bg-disabled-alt` fills. Contrast on `bg-primary` 1.5:1 Light / 2.4:1 Dark. Below 3:1 in at least one theme (kept as in the source): not for text or meaningful marks there.text-disabled-alttext-accent-primaryAccent text: active tabs, selected labels. Contrast on `bg-primary` 5.2:1 Light / 7.0:1 Dark; on `bg-accent-primary` 4.7:1 Light / 4.1:1 Dark. Below 4.5:1 in at least one theme: text 24px+ or bold 19px+ only, or icons. Dark uses blue-300 so it keeps 4.5:1 on bg-accent-primary too (was blue-400, 4.0:1).text-accent-primarytext-accent-primary-hoverHover state of `text-accent-primary`.text-accent-primary-hovertext-error-primaryError text: messages, inline validation, badge labels. Contrast on `bg-primary` 8.3:1 Light / 6.5:1 Dark; on `bg-error-primary` 7.6:1 Light / 5.8:1 Dark.text-error-primarytext-error-primary-hoverHover state of `text-error-primary`.text-error-primary-hovertext-error-secondaryLight error text for large or decorative use; not body copy. Contrast on `bg-primary` 2.8:1 Light / 4.7:1 Dark. Below 3:1 in at least one theme (kept as in the source): not for text or meaningful marks there.text-error-secondarytext-error-secondary-hoverHover state of `text-error-secondary`.text-error-secondary-hovertext-success-primarySuccess text: messages, inline validation, badge labels. Contrast on `bg-primary` 5.0:1 Light / 10.2:1 Dark; on `bg-success-primary` 4.6:1 Light / 8.6:1 Dark.text-success-primarytext-success-primary-hoverHover state of `text-success-primary`.text-success-primary-hovertext-success-secondaryLight success text for large or decorative use; not body copy. Contrast on `bg-primary` 1.7:1 Light / 7.8:1 Dark. Below 3:1 in at least one theme (kept as in the source): not for text or meaningful marks there.text-success-secondarytext-success-secondary-hoverHover state of `text-success-secondary`.text-success-secondary-hovertext-warning-primaryWarning text: messages, inline validation, badge labels. Contrast on `bg-primary` 5.2:1 Light / 7.9:1 Dark; on `bg-warning-primary` 4.5:1 Light / 6.9:1 Dark.text-warning-primarytext-warning-primary-hoverHover state of `text-warning-primary`.text-warning-primary-hovertext-warning-secondaryLight warning text for large or decorative use; not body copy. Contrast on `bg-primary` 2.3:1 Light / 6.4:1 Dark. Below 3:1 in at least one theme (kept as in the source): not for text or meaningful marks there.text-warning-secondarytext-warning-secondary-hoverHover state of `text-warning-secondary`.text-warning-secondary-hovertext-info-primaryInfo text: messages, inline validation, badge labels. Contrast on `bg-primary` 5.2:1 Light / 7.0:1 Dark; on `bg-info-primary` 4.7:1 Light / 5.8:1 Dark.text-info-primarytext-info-primary-hoverHover state of `text-info-primary`.text-info-primary-hovertext-info-secondaryLight info text for large or decorative use; not body copy. Contrast on `bg-primary` 2.5:1 Light / 4.9:1 Dark. Below 3:1 in at least one theme (kept as in the source): not for text or meaningful marks there.text-info-secondarytext-info-secondary-hoverHover state of `text-info-secondary`.text-info-secondary-hovertext-offer-primaryOffer text: messages, inline validation, badge labels. Contrast on `bg-primary` 5.5:1 Light / 9.3:1 Dark; on `bg-offer-primary` 4.8:1 Light / 7.9:1 Dark.text-offer-primarytext-offer-primary-hoverHover state of `text-offer-primary`.text-offer-primary-hovertext-offer-secondaryLight offer text for large or decorative use; not body copy. Contrast on `bg-primary` 2.5:1 Light / 7.0:1 Dark. Below 3:1 in at least one theme (kept as in the source): not for text or meaningful marks there.text-offer-secondarytext-offer-secondary-hoverHover state of `text-offer-secondary`.text-offer-secondary-hovertext-placeholderPlaceholder text inside inputs. Contrast on `bg-primary` 2.6:1 Light / 3.8:1 Dark. Below 3:1 in at least one theme (kept as in the source): not for text or meaningful marks there.text-placeholdertext-whiteWhite in both themes: on `bg-accent-solid` and button fills that stay saturated in Dark. Contrast on `bg-accent-solid` 5.2:1 Light / 3.7:1 Dark. Below 4.5:1 in at least one theme (kept as in the source): text 24px+ or bold 19px+ only, or icons.text-whitetext-on-dark-colorOn `bg-black-solid` (flips with it). Contrast on `bg-black-solid` 17.9:1 Light / 17.9:1 Dark.text-on-dark-colortext-accent-secondaryLight accent for large or decorative text only. Contrast on `bg-primary` 1.8:1 Light / 4.9:1 Dark. Below 3:1 in at least one theme (kept as in the source): not for text or meaningful marks there.text-accent-secondarytext-accent-secondary-hoverHover state of `text-accent-secondary`.text-accent-secondary-hovertext-linkInline links in running text. Contrast on `bg-primary` 5.2:1 Light / 4.9:1 Dark.text-linktext-link-hoverHover state of `text-link`.text-link-hovertext-on-accentText and icons on accent solids (bg-accent-solid, button-primary). White by default; createTheme switches it to near-black when the brand is too light for white.text-on-accent
Icons
icon-primaryDefault icons on `bg-primary`, `bg-secondary`, `bg-tertiary`. Contrast on `bg-primary` 17.9:1 Light / 17.9:1 Dark.text-icon-primaryicon-primary-hoverHover state of `icon-primary`.text-icon-primary-hovericon-secondarySupporting icons: descriptions, secondary labels, table cells. Contrast on `bg-primary` 7.6:1 Light / 12.0:1 Dark.text-icon-secondaryicon-secondary-hoverHover state of `icon-secondary`.text-icon-secondary-hovericon-tertiaryLeast emphasis that still reads as icons: meta, timestamps, helper icons. Contrast on `bg-primary` 4.8:1 Light / 7.0:1 Dark.text-icon-tertiaryicon-tertiary-hoverHover state of `icon-tertiary`.text-icon-tertiary-hovericon-disabledIcons of disabled controls. Contrast on `bg-primary` 2.6:1 Light / 3.8:1 Dark. Below 3:1 in at least one theme (kept as in the source): not for text or meaningful marks there.text-icon-disabledicon-disabled-altDisabled content on `bg-disabled`/`bg-disabled-alt` fills. Contrast on `bg-primary` 1.5:1 Light / 2.4:1 Dark. Below 3:1 in at least one theme (kept as in the source): not for text or meaningful marks there.text-icon-disabled-alticon-placeholderPlaceholder icons inside inputs. Contrast on `bg-primary` 2.6:1 Light / 3.8:1 Dark. Below 3:1 in at least one theme (kept as in the source): not for text or meaningful marks there.text-icon-placeholdericon-whiteWhite in both themes: on `bg-accent-solid` and button fills that stay saturated in Dark.text-icon-whiteicon-on-dark-colorOn `bg-black-solid` (flips with it). Contrast on `bg-black-solid` 17.9:1 Light / 17.9:1 Dark.text-icon-on-dark-coloricon-accent-primaryAccent icons: active tabs, selected labels. Contrast on `bg-primary` 3.7:1 Light / 7.0:1 Dark; on `bg-accent-primary` 3.4:1 Light / 4.1:1 Dark. Below 4.5:1 in at least one theme (kept as in the source): text 24px+ or bold 19px+ only, or icons.text-icon-accent-primaryicon-accent-primary-hoverHover state of `icon-accent-primary`.text-icon-accent-primary-hovericon-accent-secondaryLight accent for large or decorative icons only. Contrast on `bg-primary` 1.8:1 Light / 4.9:1 Dark. Below 3:1 in at least one theme (kept as in the source): not for text or meaningful marks there.text-icon-accent-secondaryicon-accent-secondary-hoverHover state of `icon-accent-secondary`.text-icon-accent-secondary-hovericon-error-primaryError icons in alerts and badges. Contrast on `bg-primary` 8.3:1 Light / 6.5:1 Dark; on `bg-error-primary` 7.6:1 Light / 5.8:1 Dark.text-icon-error-primaryicon-error-primary-hoverHover state of `icon-error-primary`.text-icon-error-primary-hovericon-error-secondaryLight error icon, decorative. Contrast on `bg-primary` 2.8:1 Light / 4.7:1 Dark. Below 3:1 in at least one theme (kept as in the source): not for text or meaningful marks there.text-icon-error-secondaryicon-error-secondary-hoverHover state of `icon-error-secondary`.text-icon-error-secondary-hovericon-success-primarySuccess icons in alerts and badges. Contrast on `bg-primary` 3.3:1 Light / 10.2:1 Dark; on `bg-success-primary` 3.0:1 Light / 8.6:1 Dark. Below 4.5:1 in at least one theme (kept as in the source): text 24px+ or bold 19px+ only, or icons.text-icon-success-primaryicon-success-primary-hoverHover state of `icon-success-primary`.text-icon-success-primary-hovericon-success-secondaryLight success icon, decorative. Contrast on `bg-primary` 1.7:1 Light / 7.8:1 Dark. Below 3:1 in at least one theme (kept as in the source): not for text or meaningful marks there.text-icon-success-secondaryicon-success-secondary-hoverHover state of `icon-success-secondary`.text-icon-success-secondary-hovericon-warning-primaryWarning icons in alerts and badges. Contrast on `bg-primary` 3.6:1 Light / 7.9:1 Dark; on `bg-warning-primary` 3.1:1 Light / 6.9:1 Dark. Below 4.5:1 in at least one theme (kept as in the source): text 24px+ or bold 19px+ only, or icons.text-icon-warning-primaryicon-warning-primary-hoverHover state of `icon-warning-primary`.text-icon-warning-primary-hovericon-warning-secondaryLight warning icon, decorative. Contrast on `bg-primary` 2.3:1 Light / 6.4:1 Dark. Below 3:1 in at least one theme (kept as in the source): not for text or meaningful marks there.text-icon-warning-secondaryicon-warning-secondary-hoverHover state of `icon-warning-secondary`.text-icon-warning-secondary-hovericon-info-primaryInfo icons in alerts and badges. Contrast on `bg-primary` 5.2:1 Light / 7.0:1 Dark; on `bg-info-primary` 4.7:1 Light / 5.8:1 Dark.text-icon-info-primaryicon-info-primary-hoverHover state of `icon-info-primary`.text-icon-info-primary-hovericon-info-secondaryLight info icon, decorative. Contrast on `bg-primary` 2.5:1 Light / 4.9:1 Dark. Below 3:1 in at least one theme (kept as in the source): not for text or meaningful marks there.text-icon-info-secondaryicon-info-secondary-hoverHover state of `icon-info-secondary`.text-icon-info-secondary-hovericon-offer-primaryOffer icons in alerts and badges. Contrast on `bg-primary` 3.8:1 Light / 9.3:1 Dark; on `bg-offer-primary` 3.3:1 Light / 7.9:1 Dark. Below 4.5:1 in at least one theme (kept as in the source): text 24px+ or bold 19px+ only, or icons.text-icon-offer-primaryicon-offer-primary-hoverHover state of `icon-offer-primary`.text-icon-offer-primary-hovericon-offer-secondaryLight offer icon, decorative. Contrast on `bg-primary` 2.5:1 Light / 7.0:1 Dark. Below 3:1 in at least one theme (kept as in the source): not for text or meaningful marks there.text-icon-offer-secondaryicon-offer-secondary-hoverHover state of `icon-offer-secondary`.text-icon-offer-secondary-hover
Borders
border-primaryDefault border: inputs, outlined buttons.border-primaryborder-secondaryCard and container borders, dividers.border-secondaryborder-tertiaryFaintest dividers inside cards and lists.border-tertiaryborder-primary-solidHigh-emphasis border (inverse ink).border-primary-solidborder-disabledBorder of disabled controls.border-disabledborder-disabled-altBorder of disabled soft controls.border-disabled-altborder-accent-primaryFocused or selected border.border-accent-primaryborder-accent-secondarySoft accent border around `bg-accent-primary`.border-accent-secondaryborder-error-primaryStrong error border: invalid inputs, outlined alerts.border-error-primaryborder-error-secondarySoft error border around `bg-error-primary` fills.border-error-secondaryborder-success-primaryStrong success border: outlined alerts and focused success states.border-success-primaryborder-success-secondarySoft success border around `bg-success-primary` fills.border-success-secondaryborder-warning-primaryStrong warning border: outlined alerts and focused warning states.border-warning-primaryborder-warning-secondarySoft warning border around `bg-warning-primary` fills.border-warning-secondaryborder-info-primaryStrong info border: outlined alerts and focused info states.border-info-primaryborder-info-secondarySoft info border around `bg-info-primary` fills.border-info-secondaryborder-offer-primaryStrong offer border: outlined alerts and focused offer states.border-offer-primaryborder-offer-secondarySoft offer border around `bg-offer-primary` fills.border-offer-secondary
Buttons
button-primaryPrimary button fill. Label: `button-primary-text`.bg-button-primarybutton-primary-hoverPrimary button fill on hover.bg-button-primary-hoverbutton-primary-textPrimary button label. Contrast on `button-primary` 5.2:1 (both themes).bg-button-primary-textbutton-primary-text-hoverPrimary button label on hover.bg-button-primary-text-hoverbutton-primary-focusPrimary button focus ring color (see shadow `button-focus-primary`).bg-button-primary-focusbutton-secondary-focusSecondary button focus ring color.bg-button-secondary-focusbutton-ghostGhost button fill (transparent).bg-button-ghostbutton-ghost-hoverGhost button fill on hover (transparent in source).bg-button-ghost-hoverbutton-ghost-focusGhost button focus ring color.bg-button-ghost-focusbutton-destructiveDestructive button fill. Label: `button-destructive-text`.bg-button-destructivebutton-destructive-hoverDestructive button fill on hover.bg-button-destructive-hoverbutton-destructive-textDestructive button label. Contrast on `button-destructive` 4.8:1 (both themes).bg-button-destructive-textbutton-destructive-text-hoverDestructive button label on hover.bg-button-destructive-text-hoverbutton-destructive-focusDestructive button focus ring color.bg-button-destructive-focusbutton-successSuccess button fill. Label: `button-success-text`.bg-button-successbutton-success-hoverSuccess button fill on hover.bg-button-success-hoverbutton-success-textSuccess button label. Contrast on `button-success` 3.3:1 (both themes). Below 4.5:1 (kept as in the source): fine for 19px+ bold labels; flag for smaller labels.bg-button-success-textbutton-success-text-hoverSuccess button label on hover.bg-button-success-text-hoverbutton-success-focusSuccess button focus ring color.bg-button-success-focus
Type styles
- Grow from a single seed
display-title-regular38px / 1.15 · 400 - Grow from a single seed
display-number-regular30px / 1 · 400 - Grow from a single seed
display-headline-regular28px / 1.2 · 400 - Grow from a single seed
display-greeting-regular24px / 1.25 · 400 - Grow from a single seed
title-title-3-regular56px / 68px · 300 - Grow from a single seed
title-title-3-medium56px / 68px · 500 - Grow from a single seed
title-title-3-bold56px / 68px · 700 - Grow from a single seed
heading-h3-medium40px / 48px · 500 - Grow from a single seed
heading-h3-semibold40px / 48px · 600 - Grow from a single seed
heading-h3-bold40px / 48px · 700 - Grow from a single seed
heading-h4-medium32px / 38px · 500 - Grow from a single seed
heading-h4-semibold32px / 38px · 600 - Grow from a single seed
heading-h4-bold32px / 38px · 700 - Grow from a single seed
heading-h5-medium24px / 30px · 500 - Grow from a single seed
heading-h5-semibold24px / 30px · 600 - Grow from a single seed
heading-h5-bold24px / 30px · 700 - Grow from a single seed
heading-h6-medium20px / 24px · 500 - Grow from a single seed
heading-h6-semibold20px / 24px · 600 - Grow from a single seed
heading-h6-bold20px / 24px · 700 - Grow from a single seed
label-label-1-regular16px / 22px · 300 - Grow from a single seed
label-label-1-medium16px / 22px · 500 - Grow from a single seed
label-label-1-semibold16px / 22px · 600 - Grow from a single seed
label-label-1-bold16px / 22px · 700 - Grow from a single seed
label-label-2-regular14px / 20px · 300 - Grow from a single seed
label-label-2-medium14px / 20px · 500 - Grow from a single seed
label-label-2-semibold14px / 20px · 600 - Grow from a single seed
label-label-2-bold14px / 20px · 700 - Grow from a single seed
label-label-3-regular12px / 16px · 300 - Grow from a single seed
label-label-3-medium12px / 16px · 500 - Grow from a single seed
label-label-3-semibold12px / 16px · 600 - Grow from a single seed
label-label-3-bold12px / 16px · 700 - Grow from a single seed
body-body-1-regular18px / 28px · 300 - Grow from a single seed
body-body-1-medium18px / 28px · 500 - Grow from a single seed
body-body-2-regular16px / 24px · 300 - Grow from a single seed
body-body-2-medium16px / 24px · 500 - Grow from a single seed
body-body-3-regular14px / 20px · 300 - Grow from a single seed
body-body-3-medium14px / 20px · 500 - Grow from a single seed
body-body-4-regular12px / 16px · 300 - Grow from a single seed
body-body-4-medium12px / 16px · 500 - Grow from a single seed
caption-caption-1-medium10px / 12px · 500 - Grow from a single seed
caption-caption-1-semibold10px / 12px · 600 - Grow from a single seed
caption-caption-2-medium9px / 10px · 500 - Grow from a single seed
caption-caption-2-semibold9px / 10px · 600 - Grow from a single seed
reading-body-light16px / 26px · 300 - Grow from a single seed
reading-body-regular16px / 26px · 400 - Grow from a single seed
reading-small-light14px / 22px · 300 - Seed / Tokens
mono-label-medium11px / 16px · 500 - Seed / Tokens
mono-value-regular13px / 20px · 400
Spacing
p-xxxs2pxp-xxs4pxp-xs8pxp-sm12pxp-base16pxp-md20pxp-lg24pxp-xl28pxp-2xl32pxp-3xl40pxp-4xl48pxp-5xl60pxp-6xl72px
Radius
rounded-sm2pxrounded-md4pxrounded-lg8pxrounded-xl12pxrounded-2xl16pxrounded-3xl24pxrounded-4xl32pxrounded-5xl48pxrounded-full9999pxrounded-control4pxrounded-petal12pxrounded-petal-tip4pxElevation
shadow-elevation-overlayshadow-elevation-raisedshadow-elevation-2xsshadow-elevation-xsshadow-elevation-smshadow-elevation-mdshadow-elevation-lgshadow-elevation-xlshadow-elevation-2xl155 semantic 292 primitives