Token Reference
Complete reference for all 54 global design tokens, locked governance tokens, and the inheritance resolution model
Token Reference
Brand Studio manages 54 global design tokens across three types: colors (27), typography (14), and spacing (13). Every brand inherits these tokens, optionally overriding individual values.
Color Tokens
Brand Colors
| Token Name | Hex | Description |
|---|---|---|
brand_amber | #C55A11 | RDC logo D block. Brand spec v1.0. |
brand_green | #548235 | RDC logo R block. Brand spec v1.0. |
brand_navy | #002060 | RDC logo C block. Brand spec v1.0. |
bright_green | #70AD47 | Bright accent green |
coral_red | #C5192D | Coral red accent |
dark_teal | #063035 | Dark teal background |
deep_gold | #BA8C00 | Deep gold accent |
gold | #DDA63A | Gold accent |
medium_teal | #095A63 | Medium teal |
prt_green | #3F7E44 | PRT brand green |
sdg_blue | #0A97D9 | SDG reference blue |
Five Capitals Colors
| Token Name | Hex | Capital |
|---|---|---|
cap_built | #4472C4 | Built / Manufactured Capital |
cap_financial | #C5192D | Financial Capital |
cap_human | #DDA63A | Human Capital |
cap_natural | #548235 | Natural Capital |
cap_social | #7030A0 | Social Capital |
Text Colors
| Token Name | Hex | Usage |
|---|---|---|
text_primary | #262626 | Primary body text |
text_secondary | #767171 | Secondary / muted text |
text_white | #FFFFFF | Text on dark backgrounds |
UI Surface Colors
| Token Name | Hex | Usage |
|---|---|---|
border_default | #CCCCCC | Default border color |
surface_alt_row | #E1E5EB | Alternating table row background |
surface_light | #F1F5F5 | Light surface background |
surface_warm | #FFF8E5 | Warm-toned surface |
surface_white | #FFFFFF | White surface |
Unit Colors
| Token Name | Hex | Lane |
|---|---|---|
unit_a | #548235 | Lane A -- Real Assets and Land |
unit_b | #C55A11 | Lane B -- Stewardship and Credits |
unit_c | #002060 | Lane C -- Enablers and Technology |
Typography Tokens
Each typography token stores a JSONB value with font_family, font_size_pt, font_weight, and context.
| Token Name | Font Family | Size (pt) | Weight | Context |
|---|---|---|---|---|
body | Calibri | 11 | Regular | document |
body_bold | Calibri | 11 | Bold | document |
caption | Calibri | 9 | Regular | document |
display | F37 Jan | 36 | Bold | presentation |
equation | Cambria Math | 11 | Regular | document |
heading_1 | Calibri Light | 20 | Bold | document |
heading_2 | Calibri Light | 16 | Bold | document |
heading_3 | Calibri | 13 | Bold | document |
heading_4 | Calibri | 11.5 | Bold | document |
slide_body | F37 Jan | 16 | Light | presentation |
slide_caption | F37 Jan | 11 | Light | presentation |
slide_heading | F37 Jan | 24 | Regular | presentation |
table_body | Calibri | 10 | Regular | document |
table_header | Calibri | 10 | Bold | document |
title | Calibri Light | 28 | Bold | document |
Spacing Tokens
Each spacing token stores a JSONB value with value_px and context.
Scale Spacing
| Token Name | Value (px) | Description |
|---|---|---|
spacing-1 | 4 | Base unit |
spacing-2 | 8 | Tight |
spacing-3 | 12 | Compact |
spacing-4 | 16 | Default |
spacing-5 | 20 | Medium |
spacing-6 | 24 | Comfortable |
spacing-8 | 32 | Spacious |
spacing-10 | 40 | Section |
spacing-12 | 48 | Large |
spacing-16 | 64 | Extra-large |
spacing-20 | 80 | Page |
spacing-24 | 96 | Hero |
Document Spacing
| Token Name | Value (px) | Description |
|---|---|---|
body_space_after | 6 | Space after body paragraphs |
bullet_indent | 18 | Bullet list indentation |
h1_space_after | 12 | Space after H1 |
h1_space_before | 24 | Space before H1 |
h2_space_after | 8 | Space after H2 |
h2_space_before | 18 | Space before H2 |
page_margin_bottom | 72 | Page bottom margin |
page_margin_left | 72 | Page left margin |
page_margin_right | 72 | Page right margin |
page_margin_top | 72 | Page top margin |
table_cell_pad_lr | 8 | Table cell horizontal padding |
table_cell_pad_tb | 4 | Table cell vertical padding |
Locked Tokens
Eleven tokens are governance primitives. A database trigger rejects any attempt to modify their hex_value, category, or token_name. These tokens can be read and used freely but cannot be changed without an explicit unlock-then-relock governance action.
| Token Name | Locked Hex | Reason |
|---|---|---|
brand_amber | #C55A11 | RDC logo R=green, D=amber, C=navy. Brand spec v1.0. |
brand_green | #548235 | RDC logo R block. Brand spec v1.0. |
brand_navy | #002060 | RDC logo C block. Brand spec v1.0. |
cap_built | #378ADD | Five Capitals regenerative standard. Note: the global_design_tokens table has #4472C4 but the locked value in brand_colors is #378ADD -- the brand_colors lock is canonical. |
cap_financial | #C8A84B | Five Capitals regenerative standard. |
cap_human | #00E5FF | Five Capitals regenerative standard. |
cap_natural | #1D9E75 | Five Capitals regenerative standard. |
cap_social | #7F77DD | Five Capitals regenerative standard. |
unit_a | #548235 | Lane A, Real Assets and Land. PRT PPM/DST -- legal requirement. |
unit_b | #C55A11 | Lane B, Stewardship and Credits. PRT PPM/DST -- legal requirement. |
unit_c | #002060 | Lane C, Enablers and Technology. PRT PPM/DST -- legal requirement. |
The database trigger error message when a locked token is modified:
To unlock, modify, and relock a token (governance decision required):
Token Inheritance Model
The token system uses a two-layer inheritance model stored in Supabase:
A brand with zero overrides inherits 100% of the global base. A brand can override any subset of the 54 tokens. Only the overridden values are stored in brand_token_overrides.
Resolution Algorithm
The resolveTokens() function in token-resolver.ts merges both layers:
TokenWithInheritance Type
Each resolved token carries full inheritance context:
Resolver Functions
| Function | Signature | Purpose |
|---|---|---|
resolveTokens | (globals, overrides) -> TokenWithInheritance[] | Merge global tokens with brand overrides |
getTokenDiff | (resolved) -> { overridden[], inherited[] } | Split resolved tokens into overridden vs inherited |
resolveColorsWithInheritance | (resolved) -> TokenWithInheritance[] | Filter to color tokens only |
injectResolvedTokens | (resolved) -> void | Set CSS custom properties on document.documentElement |
CSS Variable Naming
Token names map to CSS custom properties using the cssVarName() helper from @regen/design-tokens. The function prepends -- to the token name, preserving underscores:
Usage in CSS and JSX:
CSS Variable Injection by Type
When injectResolvedTokens() runs, it sets different properties depending on token type:
| Token Type | CSS Properties Set |
|---|---|
| Color | --token_name (hex value) |
| Typography | --token_name-family, --token_name-size, --token_name-weight |
| Spacing | --token_name (px value) |
Example injected properties for the heading_1 typography token:
JSONB Value Shapes
Token values are stored as JSONB in both global_design_tokens and brand_token_overrides. Each token type has a distinct shape: