Colors
Color primitives organized into scales. Each scale has numbered shades from light to dark, plus semantic variants (muted, subtle) for transparency effects.
Blue
--color-blue-*#3e44fePurple
--color-purple-*#aa33ffNeutral
--color-neutral-*#676776Warning
--color-warning-*#ff9f40Success
--color-success-*#33cc61Info
--color-info-*#3d85f2Error
--color-error-*#f23d3dBase Colors
Fundamental color values
#13141c#13141c80Black at 50% - translucent chrome intended to sit over a backdrop blur#ffffff#00000000#00000099Spacing
Consistent spacing scale based on a base unit. Use these tokens for margins, padding, and gaps.
--spacing-00px--spacing-18px--spacing-216px--spacing-324px--spacing-432px--spacing-540px--spacing-648px--spacing-864px--spacing-1080px--spacing-1296px--spacing-offset-10px--spacing-offset-20px--spacing-offset-30px--spacing-offset-40px--spacing-component-spacing0px--spacing-internal-padding32px--spacing-column-count4px--spacing-gutter16px--spacing-margin24px--spacing-2-col-offset-min-width280px--spacing-3-col-offset-min-width300px--spacing-min-width340px--spacing-default-width360px--spacing-max-width767px--spacing-horizontal-padding16px--spacing-block-vertical-padding2.5rem--spacing-block-transition2.5rem--spacing-block-vertical-padding-hero7.5rem--spacing-block-vertical-padding-card1rem--spacing-block-internal-s0.5rem--spacing-block-internal-l1.5rem--spacing-block-internal-m1rem--spacing-card-vertical-padding1rem--spacing-card-horizontal-padding1rem--spacing-card-margin1rem--spacing-carousel-card-gap-s1rem--spacing-carousel-card-gap-l1rem--spacing-carousel-logo-card-width10rem--spacing-carousel-logo-card-gap1.5remCorner Radius
Border radius values for rounding corners. Applied consistently across the design system.
--corner-medium8px--corner-full400px--corner-large12px--corner-small4pxShadows
Elevation shadows create depth and hierarchy. Use sparingly - shadows are more prominent in light mode.
--shadow-none--shadow-focus--shadow-focus-ringVisible focus indicator for interactive elements (buttons, links, form fields). Use this on `:focus-visible` to meet WCAG 2.2 visible-focus requirements. Two theme-aware layers: a 3px gap ring in the surface/background colour, then a 5px violet ring in the focus-border colour — resolving on dark surfaces to #13141C (gap) + #989CFE (ring). `shadow.focus` is the softer drop-shadow used in non-keyboard contexts; this token is the keyboard-a11y ring shared by Primary/Secondary/Play buttons.--shadow-focus-danger--shadow-large--shadow-medium--shadow-small--shadow-glow--shadow-glow-secondary--shadow-pressedTypography
Type system including font families, sizes, weights, and line heights.
Text Styles
Composite typography tokens combining font properties into ready-to-use styles.
--text-style-body--text-style-body-1--text-style-body-2--text-style-body-3--text-style-caption--text-style-eyebrow--text-style-h1--text-style-h2--text-style-h3--text-style-h4--text-style-h5--text-style-h6--text-style-h7--text-style-buttonType Hierarchy
Font Families
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789 !@#$%^&*()
--typography-font-family-basePrimary font for body text and UIAvenirNextLTPro,sans-serifABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789 !@#$%^&*()
--typography-font-family-monomonospace,sans-serifFont Sizes
--typography-font-size-h12.5rem--typography-font-size-h22rem--typography-font-size-h31.75rem--typography-font-size-h41.5rem--typography-font-size-h51.25rem--typography-font-size-h61rem--typography-font-size-body1remBody text--typography-font-size-caption0.75rem--typography-font-size-body-11rem--typography-font-size-body-20.875rem--typography-font-size-body-30.875rem--typography-font-size-h71rem--typography-font-size-eyebrow0.75rem--typography-font-size-button0.875remButton label. 14 / 14 / 16 / 16 across sm/md/lg/xl.Font Weights
--typography-font-weight-lightlight (300)300 weight - light text--typography-font-weight-regularregular (400)--typography-font-weight-semiboldsemibold (700)700 weight - the Demi face. Numbered to match the loaded font, not the CSS keyword: AvenirNextLTPro ships Demi at 700 and Bold at 800, so the keyword's 600 had no face behind it and fell up to Demi anyway.--typography-font-weight-mediummedium (500)500 weight--typography-font-weight-boldbold (800)800 weight - the Bold face, which the loaded font ships at 800.Line Heights
--typography-line-height-100100 (100%)--typography-line-height-120120 (120%)--typography-line-height-130130 (130%)--typography-line-height-140140 (140%)--typography-line-height-160160 (160%)--typography-line-height-relaxedrelaxed (200%)--typography-line-height-tighttight (100%)--typography-line-height-buttonbutton (100%)Button label. Always 100%.Letter Spacings
--typography-letter-spacing-h1h1 (-0.02em)Drawn as -1.6px on the 80px H1. Held in em so it stays proportional as the heading halves toward small.--typography-letter-spacing-h2h2 (-0.03em)Drawn as -1.92px on the 64px H2.--typography-letter-spacing-h3h3 (-0.0125em)Drawn as -0.6px on the 48px H3.--typography-letter-spacing-normalnormal (0em)Normal letter spacing--typography-letter-spacing-tighttight (-0.025em)Tighter - large headings--typography-letter-spacing-widewide (0.05em)Wider - overlines, all-caps--typography-letter-spacing-h4h4 (-0.0075em)Drawn as -0.3px on the 40px H4.--typography-letter-spacing-h5h5 (-0.005em)Drawn as -0.16px on the 32px H5.--typography-letter-spacing-h6h6 (0.015em)Drawn as 0.36px on the 24px H6. Positive — tracking turns open here, and H7 carries the same ratio.--typography-letter-spacing-h7h7 (0.015em)Drawn as 0.3px on the 20px H7. Positive — the ramp opens up once the heading is near body size.--typography-letter-spacing-bodybody (-0.0025em)Drawn as -0.06px on the 24px body. Applied to <body>, so any text that declares no tracking of its own inherits it.--typography-letter-spacing-eyebroweyebrow (0.0025em)Drawn as 0.035px on the 14px eyebrow. Positive — the same magnitude as body, opening rather than tightening.--typography-letter-spacing-captioncaption (0.005em)Drawn as 0.06px on the 12px caption.--typography-letter-spacing-buttonbutton (0.005em)Drawn as 0.08px on the 16px button. Same em as the caption; kept separate so tuning one never moves the other.Borders
Composite border tokens combining width, style, and color.
--border-standardstandardStandard 1px solid border--border-inputinput1px solid high-contrast border for form-field inputs--border-transparenttransparent--border-errorerror--border-dasheddashedOpacity
Opacity levels for creating tinted variants and transparency effects.
--opacity-softsoft (15%)--opacity-mutedmuted (50%)Half opacity (50%)--opacity-subtlesubtle (25%)Mostly transparent (25%)--opacity-strongstrong (60%)Animation
Motion tokens for consistent, purposeful animations across the UI.
Duration
--duration-normalnormal (200ms)Normal - button feedback, tooltipsEasing
--easing-easeeasecubic-bezier(0.25, 0.1, 0.25, 1)General purpose easingTheme Tokens
Semantic tokens that adapt to light/dark mode. These reference primitive tokens but switch values based on the active theme.
Surfaces
Layered backgrounds for creating depth
#ffffff#13141c--theme-surface-11Base canvas - the lowest layer#f3f3f8#1e1f28--theme-surface-22Raised surface - cards, panels#d8d8e8#3c3c48--theme-surface-33Overlay surface - modals, popovers#f3f3f8#1e1f28--theme-surface-defaultdefault#f3f3f8#181921--theme-surface-alternativealternative#13141c80#13141c80--theme-surface-navnavSite header chrome at rest - translucent, pairs with an 8px backdrop blur. Constant across modes: the header is always dark glass.#13141c#13141c--theme-surface-nav-opennav-openSite header chrome once a menu is open - opaque, no blur. Constant across modes.#c0c0d1#3c3c48--theme-surface-interactive-defaultdefault#8b8b9e#676776--theme-surface-interactive-hoverhover#f3f3f8#3c3c48--theme-background-subtlesubtle#d8d8e8#4a4a57--theme-background-hoverhover#ffffff#13141c--theme-background-sitesiteBase page background color applied to <body> via layout.css. Do not remove without updating layout.css.Text Colors
#13141c#ffffff--theme-text-primaryprimaryFull-contrast text color applied to headings via layout.css. Black on light, white on dark.#3c3c48#aaaabd--theme-text-secondarysecondary#4a4a57#8b8b9e--theme-text-mutedtextMutedBorder Colors
#c0c0d1#3c3c48--theme-borderborder#d8d8e8#25252e--theme-border-subtleborderSubtleFeedback States
#33cc61#5eeb88--theme-color-successsuccess#1358bf#3d85f2--theme-color-infoinfo#f23d3d#f56262--theme-color-errorerrorElevation
--theme-elevation-11Subtle lift - cards0px 1px 2px 0px [object Object]0px 0px 0px 0px [object Object]--theme-elevation-22Medium lift - dropdowns0px 4px 6px 0px [object Object]0px 0px 0px 0px [object Object]--theme-elevation-33High lift - modals0px 10px 15px 0px [object Object]0px 10px 15px 0px [object Object]Color
#aa33ff#b752ff--theme-color-accent-defaultdefault#8829cc#aa33ff--theme-color-accent-hoverhover#d599ff#600f99--theme-color-accent-low-contrastlowContrast#2e34e5#5157fe--theme-color-primary-hoverhoverStroke
#666afe#989cfe--theme-stroke-focus-borderfocusBorder#aaaabd#8b8b9e--theme-stroke-high-contrast-defaultdefault#8b8b9e#c0c0d1--theme-stroke-high-contrast-hoverhover#1e1f28#f3f3f8--theme-stroke-high-contrast-activeactive#13141c#ffffff--theme-stroke-high-contrast-inverseinverse#c0c0d1#3c3c48--theme-stroke-soft-contrast-defaultdefault#8b8b9e#676776--theme-stroke-soft-contrast-hoverhover#676776#8b8b9e--theme-stroke-soft-contrast-activeactive#d8d8e8#25252e--theme-stroke-soft-contrast-dividerdividerBorder
1px solid {color.neutral.600}1px solid {color.neutral.200}--border-standardstandardStandard 1px solid border1px solid {color.neutral.300}1px solid {color.neutral.400}--border-inputinput1px solid high-contrast border for form-field inputsComponents
Button
Primary action trigger
IconButton
Icon-only button
PlayButton
Media play button
DropdownMenu
Action menu
ContextMenu
Right-click menu
Pagination
Page navigation
Layout Grid
Token-driven page layout. Press Ctrl+G to toggle the debug overlay.
Use PageLayout as your starting template — it shares this grid system with debug off by default. Import grid-debug.css and callinitGridDebug(container) to enable Ctrl+G toggling.
Main Content
Two-thirds width on desktop, full width on mobile
Full-bleed section — content extends to viewport edges