Primitive tokens
Approved foundations and the governed 91-tone DS-12 color proposal.
Primitive token evidence
Approved: 83 foundation tokens. Proposed: 91 DS-12 color tones across 7 families.
Interactive reference
Token explorer
83 tokens
font.family.sansInter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serifA system-first fallback chain keeps scripts legible when Inter lacks a glyph.
Use: Default interface and reading text.
font.family.monoui-monospace, SFMono-Regular, Consolas, monospacePlatform monospace faces avoid a download for technical strings.
Use: Tokens, code, identifiers, and diagnostics only.
font.weight.regular400Regular weight supports sustained reading.
Use: Body and supporting copy.
font.weight.medium600One emphasis step remains distinct across platform fonts.
Use: Labels, controls, and compact titles.
font.weight.bold700Bold creates hierarchy without ultra-heavy shapes.
Use: Headings and critical emphasis.
font.size.1000.75remTwelve pixels at the default root is the minimum auxiliary size.
Use: Metadata only; never primary instructions.
font.size.2000.875remFourteen pixels supports compact controls while remaining readable.
Use: Labels and secondary copy.
font.size.3001remBrowser-default scale respects user text settings.
Use: Default body and input text.
font.size.4001.125remA modest step gives lead text readable emphasis.
Use: Lead paragraphs.
font.size.5001.25remProvides a compact title tier.
Use: Card and section titles.
font.size.6001.5remCreates a clear subsection break.
Use: Level-three headings.
font.size.7002remBalances hierarchy with mobile fit.
Use: Level-two headings.
font.size.8002.5remMaintains an obvious page-title tier.
Use: Level-one headings.
font.size.9003.25remLarge display text remains usable in translated headings.
Use: Display text with fluid sizing.
font.line-height.tight1.1Tight leading groups large display lines.
Use: Display and large headings only.
font.line-height.heading1.2Heading leading preserves hierarchy across wraps.
Use: Headings and titles.
font.line-height.body1.5One-and-a-half line spacing supports comprehension and text zoom.
Use: Body copy and form guidance.
font.line-height.relaxed1.65Relaxed leading improves long-form scanning.
Use: Documentation and long explanations.
font.letter-spacing.tight-0.025emSlight tightening keeps large Latin headings cohesive.
Use: Large Latin headings; reset where script shaping requires.
font.letter-spacing.normal0Neutral tracking is safest across scripts.
Use: Body, controls, and localized content.
space.00Explicit zero avoids magic values.
Use: Intentional edge removal.
space.10.25remFour-pixel base unit supports fine alignment.
Use: Tight icon and text relationships.
space.20.5remTwo units create compact internal rhythm.
Use: Compact gaps.
space.30.75remThree units bridge compact and default density.
Use: Control internals.
space.41remSixteen pixels is the default component rhythm.
Use: Default gaps and padding.
space.51.25remSupports comfortable content groups.
Use: Compact surface padding.
space.61.5remSeparates related sections without fragmentation.
Use: Default surface padding.
space.82remCreates a clear section boundary.
Use: Section and layout gaps.
space.102.5remProvides medium layout separation.
Use: Page regions.
space.123remSupports large responsive sections.
Use: Page section padding.
space.164remCreates strong page hierarchy.
Use: Large-screen section breaks.
space.205remLargest standard tier prevents arbitrary gaps.
Use: Hero and major page regions.
size.control.compact2remThirty-two pixels supports dense pointer-led contexts.
Use: Dense desktop only; preserve a 44px hit target.
size.control.default2.75remForty-four pixels meets the pointer-target baseline.
Use: Default interactive control height.
size.control.large3remForty-eight pixels supports primary and touch-heavy actions.
Use: Prominent controls and mobile.
size.icon.small1remSixteen pixels fits supportive inline icons.
Use: Decoration; not standalone controls.
size.icon.default1.25remTwenty pixels balances clarity and density.
Use: Default control and status icons.
size.icon.large1.5remTwenty-four pixels supports standalone recognition.
Use: Navigation and large controls.
size.content.readable70chLimits prose to a comfortable line length.
Use: Long-form reading regions.
size.content.wide90remBounds wide shells on large screens.
Use: Maximum application canvas.
breakpoint.compact30remSeparates narrow phones from larger compact layouts.
Use: Content-led progressive enhancement.
breakpoint.medium48remSupports common split-layout transitions.
Use: Two-column and navigation changes.
breakpoint.expanded64remIntroduces persistent structure when space permits.
Use: Side navigation and multi-column layouts.
breakpoint.wide80remBounds wide grids without assuming a device.
Use: Large content canvases.
layout.columns.compact4Four columns make narrow composition predictable.
Use: Compact layout planning.
layout.columns.medium8Eight columns support medium composition.
Use: Medium layout planning.
layout.columns.expanded12Twelve columns support flexible desktop division.
Use: Expanded layout planning.
layout.gutter.compact1remProtects content from narrow viewport edges.
Use: Compact page gutters.
layout.gutter.medium1.5remAdds breathing room as width grows.
Use: Medium page gutters.
layout.gutter.expanded2remKeeps desktop content aligned without waste.
Use: Expanded page gutters.
radius.none0Supports flush structural edges.
Use: Tables and attached surfaces.
radius.small0.25remSmall rounding softens compact controls.
Use: Tags and compact fields.
radius.medium0.5remDefault radius is approachable without decoration.
Use: Controls and small surfaces.
radius.large0.75remLarge surfaces need proportionate rounding.
Use: Cards and panels.
radius.xlarge1remCreates a distinct elevated-container tier.
Use: Dialogs and feature surfaces.
radius.full9999pxA capsule value accommodates dynamic dimensions.
Use: Pills, avatars, circular controls.
border.width.default1pxOne-pixel borders separate adjacent surfaces.
Use: Default boundaries.
border.width.strong2pxTwo pixels makes selected and invalid boundaries perceivable.
Use: Emphasis and state boundaries.
elevation.0noneFlat surfaces preserve hierarchy by default.
Use: Canvas and embedded surfaces.
elevation.10 1px 2px rgb(4 10 26 / 0.08), 0 1px 3px rgb(4 10 26 / 0.05)Low shadow distinguishes a raised card.
Use: Cards and sticky controls.
elevation.20 8px 20px rgb(4 10 26 / 0.12), 0 2px 6px rgb(4 10 26 / 0.08)Medium shadow separates anchored surfaces.
Use: Menus, popovers, and drawers.
elevation.30 20px 48px rgb(4 10 26 / 0.18), 0 6px 16px rgb(4 10 26 / 0.10)Highest shadow supports modal depth.
Use: Dialogs and modal surfaces only.
opacity.disabled0.4A consistent tier distinguishes unavailable decoration.
Use: Never the sole disabled-state cue.
opacity.muted0.64Muted imagery remains visible without competing.
Use: Decorative media and illustration layers.
opacity.full1Explicit full opacity completes the scale.
Use: Default content.
layer.base0Defines normal stacking.
Use: Page content.
layer.sticky100Sticky chrome sits above page content.
Use: Headers and sticky controls.
layer.dropdown200Anchored surfaces clear sticky content.
Use: Menus and popovers.
layer.overlay400Modal surfaces establish an interaction layer.
Use: Scrims, dialogs, sheets, drawers.
layer.toast500Time-sensitive status remains visible above modals.
Use: Toasts only.
motion.duration.instant0msProvides a tokenized no-motion path.
Use: Reduced motion and immediate changes.
motion.duration.fast100msFast feedback makes manipulation feel immediate.
Use: Hover, press, and focus feedback.
motion.duration.standard180msStandard transitions remain noticeable without delay.
Use: Small reveals and state transitions.
motion.duration.deliberate280msLarge spatial changes need time to track.
Use: Drawers, sheets, layout transitions.
motion.duration.slow400msThe capped slow tier prevents ornamental motion.
Use: Rare large-stage transitions.
motion.easing.standardcubic-bezier(0.2, 0, 0, 1)A decelerating curve gives changes a natural stop.
Use: Default property transitions.
motion.easing.entercubic-bezier(0, 0, 0.2, 1)Entering content settles gently.
Use: Content entering the viewport.
motion.easing.exitcubic-bezier(0.4, 0, 1, 1)Exiting content clears quickly.
Use: Content leaving the viewport.
motion.distance.small0.25remFour-pixel travel communicates relation without disorientation.
Use: Menus and subtle reveals.
motion.distance.medium0.75remTwelve-pixel travel supports larger surfaces.
Use: Drawers and sheets; never looping decoration.
focus.ring.width3pxThree pixels remains visible near component borders.
Use: Keyboard focus-visible indicator.
focus.ring.offset3pxOffset separates focus from component state rings.
Use: Default focus-visible outline offset.
focus.target.minimum2.75remForty-four pixels is the NexWell minimum pointer target.
Use: All primary interactive hit areas.