info
If this document and the CSS file disagree, the CSS file wins. View the raw file: platform-tokens.css
Naming Convention
--{scope}-{property}[-{modifier}]
Scope: color, bg, text, phase, {app-name}, gray
Property: ink, primary, surface, etc.
Modifier: dark, light, very-light, secondary, muted, faint
Examples
| Token | Meaning |
--color-ink | Global ink (text) color |
--color-ink-secondary | Lighter ink variant |
--phase-learn | Learn phase base color |
--tips-primary | Tips app accent color |
--tips-dark | Tips app hover shade |
--bg-page | Page background |
--text-default | Default body text color |
Phase Tokens
| Token | Value | Phase |
--phase-learn |
#E54D4D |
Learn |
--phase-learn-dark |
#C73E3E |
Learn |
--phase-learn-light |
#FEE2E2 |
Learn |
--phase-learn-very-light |
#FEF2F2 |
Learn |
--phase-plan |
#0284C7 |
Plan |
--phase-plan-dark |
#075985 |
Plan |
--phase-plan-light |
#E0F2FE |
Plan |
--phase-plan-very-light |
#F0F9FF |
Plan |
--phase-facilitate |
#7C4DFF |
Facilitate |
--phase-facilitate-dark |
#6D28D9 |
Facilitate |
--phase-facilitate-light |
#EDE9FE |
Facilitate |
--phase-facilitate-very-light |
#EDE9FE |
Facilitate |
--phase-reflect |
#10B981 |
Reflect |
--phase-reflect-dark |
#059669 |
Reflect |
--phase-reflect-light |
#A7F3D0 |
Reflect |
--phase-reflect-very-light |
#D1FAE5 |
Reflect |
Ink & Text Tokens
| Token | Value | Usage |
--color-ink | #2C2416 | Headings, primary text |
--color-ink-secondary | #5C5242 | Body text, descriptions |
--color-ink-muted | #78716C | Metadata, captions |
--color-ink-faint | #A8A29E | Disabled, hints |
--text-dark | var(--color-ink) | Alias: headlines |
--text-default | var(--color-ink-secondary) | Alias: body text |
--text-muted | var(--color-ink-muted) | Alias: meta text |
--text-faint | var(--color-ink-faint) | Alias: hints |
--text-inverse | #FFFFFF | Text on dark backgrounds |
Background Tokens
| Token | Value | Usage |
--bg-page | #FEF7F1 | Default page background |
--bg-page-alt | #FFFBF8 | Coach app page bg |
--bg-surface | #FFFFFF | Cards, modals, panels |
--bg-muted | #F5F5F4 | Subtle section alternates |
--bg-subtle | #FAFAF9 | Very light differentiation |
--bg-paper | #FAF7F2 | Tips/Intervention paper |
--bg-paper-dark | #F0EBE3 | Darker paper sections |
Typography Tokens
| Token | Value |
--font-heading | 'Fraunces', Georgia, serif |
--font-body | 'Inter', -apple-system, sans-serif |
--text-display | 2.875rem (46px) |
--text-h1 | 2rem (32px) |
--text-h2 | 1.5rem (24px) |
--text-h3 | 1.25rem (20px) |
--text-h4 | 1.125rem (18px) |
--text-body | 1rem (16px) |
--text-ui | 0.9375rem (15px) |
--text-small | 0.875rem (14px) |
--text-meta | 0.8125rem (13px) |
--text-caption | 0.75rem (12px) |
--text-micro | 0.6875rem (11px) |
--text-nano | 0.625rem (10px) |
--font-normal | 400 |
--font-medium | 500 |
--font-semibold | 600 |
--font-bold | 700 |
--leading-tight | 1.2 |
--leading-snug | 1.35 |
--leading-normal | 1.5 |
--leading-relaxed | 1.625 |
--tracking-tight | -0.02em |
--tracking-normal | 0 |
--tracking-wide | 0.025em |
Spacing Tokens
| Token | Value |
--space-0-5 | 2px (0.125rem) |
--space-1 | 4px (0.25rem) |
--space-1-5 | 6px (0.375rem) |
--space-2 | 8px (0.5rem) |
--space-2-5 | 10px (0.625rem) |
--space-3 | 12px (0.75rem) |
--space-3-5 | 14px (0.875rem) |
--space-4 | 16px (1rem) |
--space-4-5 | 18px (1.125rem) |
--space-5 | 20px (1.25rem) |
--space-6 | 24px (1.5rem) |
--space-8 | 32px (2rem) |
--space-10 | 40px (2.5rem) |
--space-12 | 48px (3rem) |
--space-16 | 64px (4rem) |
Shadow & Elevation Tokens
| Token | Value |
--shadow-xs | 0 1px 2px rgba(0,0,0,0.04) |
--shadow-sm | 0 1px 3px rgba(0,0,0,0.06) |
--shadow-md | 0 4px 6px rgba(0,0,0,0.07) |
--shadow-lg | 0 10px 15px rgba(0,0,0,0.08) |
--shadow-xl | 0 20px 25px rgba(0,0,0,0.10) |
Transition Tokens
| Token | Value | Usage |
--transition-fast | 150ms ease | Buttons, chips, toggles |
--transition-base | 200ms ease | Cards, general hover |
--transition-slow | 300ms ease | Modals, panels, overlays |
Semantic Component Tokens
Component-level tokens map design intent to primitive values. Use these in component CSS instead of referencing primitives directly — this enables theming and future dark mode support.
Buttons
| Token | Value | Usage |
--button-bg-primary | var(--mainsite-primary) | Primary button background |
--button-bg-primary-hover | var(--mainsite-dark) | Primary button hover |
--button-text-primary | var(--text-inverse) | Primary button text |
--button-bg-secondary | var(--bg-surface) | Secondary button background |
--button-text-secondary | var(--color-ink) | Secondary button text |
--button-border-secondary | var(--gray-300) | Secondary button border |
--button-bg-ghost | transparent | Ghost button background |
--button-text-ghost | var(--color-ink-secondary) | Ghost button text |
--button-radius | var(--radius-lg) | Button border radius |
Cards
| Token | Value | Usage |
--card-bg | var(--bg-surface) | Card background |
--card-border | var(--gray-200) | Card border color |
--card-shadow | var(--shadow-sm) | Card resting shadow |
--card-shadow-hover | var(--shadow-md) | Card hover shadow |
--card-radius | var(--radius-xl) | Card border radius |
--card-padding | var(--space-6) | Card internal padding |
Inputs
| Token | Value | Usage |
--input-bg | var(--bg-surface) | Input background |
--input-border | var(--gray-300) | Input border color |
--input-border-focus | var(--phase-plan) | Focused input border |
--input-text | var(--color-ink) | Input text color |
--input-placeholder | var(--color-ink-faint) | Placeholder text |
--input-radius | var(--radius-lg) | Input border radius |
--input-ring | var(--focus-ring-color) | Focus ring color |
Modals, Tooltips, Toasts
| Token | Value | Usage |
--modal-bg | var(--bg-surface) | Modal background |
--modal-border | var(--gray-200) | Modal border |
--modal-shadow | var(--shadow-xl) | Modal shadow |
--modal-backdrop | var(--backdrop-medium) | Modal overlay |
--modal-radius | var(--radius-2xl) | Modal border radius |
--tooltip-bg | var(--gray-900) | Tooltip background |
--tooltip-text | var(--text-inverse) | Tooltip text |
--toast-bg | var(--bg-surface) | Toast notification background |
--toast-shadow | var(--shadow-lg) | Toast shadow |
Links & Dividers
| Token | Value | Usage |
--link-color | var(--phase-plan) | Default link color |
--link-hover | var(--phase-plan-dark) | Link hover color |
--link-visited | var(--phase-facilitate) | Visited link color |
--divider-color | var(--gray-200) | Default divider/separator |
--divider-strong | var(--gray-300) | Prominent divider |
Legacy Token Aliases
Older tokens that still appear in the codebase. Prefer the current token names. These aliases will be removed in a future release.
warning
Deprecation notice: Legacy aliases are scheduled for removal in v2.0. Migrate to the current token names listed in the "Maps To" column. Console warnings will be added in v1.7 to flag remaining usage.
| Legacy Token | Maps To | Note |
--color-primary | --mainsite-primary | |
--color-primary-dark | --mainsite-dark | |
--color-primary-light | --mainsite-light | |
--text-primary | --text-dark | Avoid; ambiguous |
--text-secondary | --text-default or --text-muted | Context-dependent |
--font-family | --font-body | |
--border-default | --gray-200 | |
--border-light | --gray-200 | |