20-Brand White Label · Casino & Sportsbook · v2
Design Token Reference
Every token that needs to exist in Figma, organised by collection and group. Use this alongside the architecture presentation, which explains why the structure looks this way.
20 brands
light + dark
SE · DK · MT · ON · NL · PL
Figma Enterprise · native
4-pt · 1rem = 16px
How to read these tables
Token path is the Figma Variable name (slashes become groups). Type is the Figma Variable type (Color, Number, String, Boolean). Value / Alias shows the raw value or what it aliases to. Dimension Numbers are px in Figma; the export script converts to rem (rem = px / 16).
Collection 1 · Primitives 20 brand modes
Raw values only — never referenced directly by components. Mix of brand-moded (20 modes: ramps, typography families, radius, layout, gradient) and global (single value: spacing, opacity, breakpoint, etc.). The 4-point scale applies to every dimension token.
1.1 · Color · Brand — brand-moded
Each brand defines its own ramp. 9 stops per scale. Values below are example hexes; each of the 20 brand modes holds its own colour set.
| Token path | Type | Example value | Notes |
| color/brand/primary-100 | Color | #EDEBFF | Lightest tint |
| color/brand/primary-200 | Color | #DAD6FF | |
| color/brand/primary-300 | Color | #B9B0FF | |
| color/brand/primary-400 | Color | #9487F2 | |
| color/brand/primary-500 | Color | #6C5CE7 | Focus rings |
| color/brand/primary-600 | Color | #5A4BCF | Default action bg |
| color/brand/primary-700 | Color | #483BA6 | Hover |
| color/brand/primary-800 | Color | #362B7D | Pressed |
| color/brand/primary-900 | Color | #241C54 | Darkest |
| color/brand/secondary-100 … 900 | Color × 9 | brand-defined | Secondary accent ramp |
| color/brand/tertiary-100 … 900 | Color × 9 | brand-defined | Tertiary / support |
| color/brand/gradient-start | Color | brand-defined | For gradient compounds |
| color/brand/gradient-end | Color | brand-defined | |
29 tokens in this group × 20 brand modes = 580 values.
1.2 · Color · Neutral — brand-moded
Each brand's own grey / warm / cool scale. 11 stops. Theme collection flips which end is used for surface/text.
| Token path | Type | Example value | Notes |
| color/neutral-50 | Color | #F9F9FB | Lightest — light-theme surface |
| color/neutral-100 | Color | #F1F1F5 | |
| color/neutral-200 | Color | #E4E4EC | |
| color/neutral-300 | Color | #C9C9D3 | |
| color/neutral-400 | Color | #9A9AAC | |
| color/neutral-500 | Color | #72728A | |
| color/neutral-600 | Color | #555568 | |
| color/neutral-700 | Color | #3A3A4A | |
| color/neutral-800 | Color | #1F1F2C | |
| color/neutral-900 | Color | #14141C | Dark-theme raised |
| color/neutral-950 | Color | #0B0B12 | Dark-theme page |
1.3 · Color · Status — brand-moded
Brand-adjusted per theme. 3 stops each: 100 (tint), 500 (base), 900 (deep). 6+ stops optional for Semantic flexibility.
| Token path | Type | Example | Notes |
| color/status/success-100 | Color | #E0F5EB | Tint — backgrounds |
| color/status/success-300 | Color | #7FD3A6 | Borders |
| color/status/success-500 | Color | #00B894 | Base |
| color/status/success-600 | Color | #009E7F | Solid bg / icon |
| color/status/success-800 | Color | #005A48 | Text on tint |
| color/status/success-900 | Color | #003D30 | Deep |
| color/status/warning-{100,300,500,600,800,900} | Color × 6 | ambers | Same pattern |
| color/status/error-{100,300,500,600,800,900} | Color × 6 | reds | Same pattern |
| color/status/info-{100,300,500,600,800,900} | Color × 6 | blues | Same pattern |
1.4 · Color · Always — same across all brand modes
| Token path | Type | Value | Notes |
| color/always/white | Color | #FFFFFF | Never overridden across brands |
| color/always/black | Color | #000000 | Never overridden |
| color/always/transparent | Color | rgba(0,0,0,0) | Explicit transparent |
1.5 · Color · Special — brand-moded (can default across all)
iGaming-specific primitives that don't fit in a brand ramp but must remain overridable per brand.
| Token path | Type | Default | Notes |
| color/special/pitch-green | Color | #1A4731 | Football pitch diagram |
| color/special/pitch-lines | Color | #FFFFFF @ 40% | Pitch markings |
| color/special/jackpot-gold | Color | #FFD700 | Jackpot ticker; some brands override to brand/primary |
| color/special/live-pulse | Color | #EF4444 | Live indicator — near-global but overridable |
1.6 · Color · VIP new — brand-moded
Loyalty tier colours. Each brand defines its own palette; standard is warmer-to-cooler up the ladder.
| Token path | Type | Example | Notes |
| color/vip/bronze | Color | #CD7F32 | Tier 1 |
| color/vip/silver | Color | #C0C0C0 | Tier 2 |
| color/vip/gold | Color | #FFD700 | Tier 3 |
| color/vip/platinum | Color | #E5E4E2 | Tier 4 |
| color/vip/diamond | Color | #B9F2FF | Tier 5 — highest |
1.7 · Typography
Family — brand-moded
| Token | Type | Example | Notes |
| typography/family/base | String | Inter | Body / UI |
| typography/family/heading | String | Sora | Headings |
| typography/family/display | String | brand-defined | Hero / jackpot numbers |
| typography/family/mono | String | JetBrains Mono | Odds, stakes, data |
Size — global · 4-point (with one sanctioned half-step)
| Token | Type | px / rem | Notes |
| typography/size/xs | Number | 12 · 0.75rem | Captions, footnotes |
| typography/size/sm | Number | 14 · 0.875rem | Half-step — only sanctioned exception to 4-pt rule |
| typography/size/md | Number | 16 · 1rem | Body base |
| typography/size/lg | Number | 20 · 1.25rem | |
| typography/size/xl | Number | 24 · 1.5rem | |
| typography/size/2xl | Number | 32 · 2rem | |
| typography/size/3xl | Number | 40 · 2.5rem | |
| typography/size/4xl | Number | 48 · 3rem | Hero / promo |
Weight — global
| Token | Type | Value | Notes |
| typography/weight/regular | Number | 400 | |
| typography/weight/medium | Number | 500 | |
| typography/weight/semibold | Number | 600 | |
| typography/weight/bold | Number | 700 | |
Line-height · Letter-spacing · Transform — global
| Token | Type | Value | Notes |
| typography/line-height/tight | Number | 1.2 | Unitless |
| typography/line-height/normal | Number | 1.5 | |
| typography/line-height/relaxed | Number | 1.75 | |
| typography/letter-spacing/none | Number | 0 | em at consumption |
| typography/letter-spacing/wide | Number | 0.04 | em |
| typography/letter-spacing/wider | Number | 0.08 | Uppercase labels |
| typography/letter-spacing/widest | Number | 0.14 | All-caps display |
| typography/transform/none | String | none | |
| typography/transform/uppercase | String | uppercase | All-caps brands |
| typography/transform/capitalize | String | capitalize | |
1.8 · Spacing — global · strict 4-point
All values are multiples of 4. v1's earlier fractional suggestion (2/6/10/14px) is dropped. Engineers receive rem via the export script.
| Token | Type | px / rem | Notes |
| spacing/1 | Number | 4 · 0.25rem | Finest gap |
| spacing/2 | Number | 8 · 0.5rem | |
| spacing/3 | Number | 12 · 0.75rem | |
| spacing/4 | Number | 16 · 1rem | Base / body |
| spacing/5 | Number | 20 · 1.25rem | |
| spacing/6 | Number | 24 · 1.5rem | |
| spacing/7 | Number | 28 · 1.75rem | |
| spacing/8 | Number | 32 · 2rem | |
| spacing/10 | Number | 40 · 2.5rem | |
| spacing/12 | Number | 48 · 3rem | |
| spacing/16 | Number | 64 · 4rem | |
| spacing/20 | Number | 80 · 5rem | Section gaps |
1.9 · Radius — brand-moded · 4-point
Brand shape identity. Each brand can pick sharper or rounder values per token. All multiples of 4; v1's radius/xs: 2px is dropped.
| Token | Type | px / rem | Notes |
| radius/none | Number | 0 · 0 | Sharp |
| radius/sm | Number | 4 · 0.25rem | Subtle curve |
| radius/md | Number | 8 · 0.5rem | Default cards |
| radius/lg | Number | 12 · 0.75rem | Modals |
| radius/xl | Number | 16 · 1rem | Heroes |
| radius/2xl | Number | 24 · 1.5rem | Featured cards |
| radius/full | Number | 9999 · px exception | Ship as px, not rem — pill needs absolute cap |
1.10 · Opacity new — global
Eliminates hardcoded "X at 96%" in Semantic. Stored as 0–1 decimal.
| Token | Type | Value | Notes |
| opacity/0 | Number | 0 | Fully transparent |
| opacity/10 | Number | 0.1 | Faint tint |
| opacity/20 | Number | 0.2 | |
| opacity/40 | Number | 0.4 | Disabled states |
| opacity/60 | Number | 0.6 | |
| opacity/80 | Number | 0.8 | |
| opacity/95 | Number | 0.95 | Near-opaque overlay |
1.11 · Breakpoint new — global
Responsive contract shared with engineering. Breakpoints target device classes, not pixel-perfect fidelity.
| Token | Type | px / rem | Notes |
| breakpoint/xs | Number | 320 · 20rem | Small mobile |
| breakpoint/sm | Number | 576 · 36rem | Large mobile |
| breakpoint/md | Number | 768 · 48rem | Tablet |
| breakpoint/lg | Number | 1024 · 64rem | Desktop |
| breakpoint/xl | Number | 1280 · 80rem | Wide desktop |
| breakpoint/2xl | Number | 1536 · 96rem | Ultra wide |
1.12 · Icon size new — global · 4-point
| Token | Type | px / rem | Notes |
| icon/size/xs | Number | 16 · 1rem | Inline with body |
| icon/size/sm | Number | 20 · 1.25rem | Buttons, inputs |
| icon/size/md | Number | 24 · 1.5rem | Default UI |
| icon/size/lg | Number | 32 · 2rem | Nav, prominent |
| icon/size/xl | Number | 40 · 2.5rem | Hero / feature |
1.13 · Z-index promoted — global
Stacking order is a primitive concern, not a component one. Keep gaps so new layers can slot in.
| Token | Type | Value | Notes |
| z-index/base | Number | 0 | Default flow |
| z-index/dropdown | Number | 800 | |
| z-index/header | Number | 900 | Sticky header |
| z-index/betslip | Number | 1000 | Above page, below toasts |
| z-index/toast | Number | 1100 | |
| z-index/modal | Number | 1200 | Above toasts? Debatable |
| z-index/tooltip | Number | 1300 | Always top |
1.14 · Motion — global
| Token | Type | Value | Notes |
| motion/duration/instant | Number | 0ms | No animation |
| motion/duration/fast | Number | 100ms | Micro-interactions |
| motion/duration/base | Number | 200ms | Default |
| motion/duration/slow | Number | 350ms | Page transitions |
| motion/duration/slower | Number | 500ms | Odds price flash |
| motion/easing/ease-in | String | cubic-bezier(0.4,0,1,1) | |
| motion/easing/ease-out | String | cubic-bezier(0,0,0.2,1) | |
| motion/easing/ease-in-out | String | cubic-bezier(0.4,0,0.2,1) | Default |
| motion/easing/spring | String | cubic-bezier(0.34,1.56,0.64,1) | Betslip add |
1.15 · Shadow — global (glow is brand-adjusted)
| Token | Type | Value | Notes |
| shadow/none | String | none | |
| shadow/xs | String | 0 1px 2px rgba(0,0,0,.06) | Subtle lift |
| shadow/sm | String | 0 2px 8px rgba(0,0,0,.10) | Cards |
| shadow/md | String | 0 4px 16px rgba(0,0,0,.14) | Dropdowns |
| shadow/lg | String | 0 8px 32px rgba(0,0,0,.18) | Modals |
| shadow/overlay | String | 0 16px 64px rgba(0,0,0,.32) | Full screen |
| shadow/glow | String | 0 0 20px {brand.primary} @ 40% | Casino tiles |
1.16 · Transition new — global · compound
Pre-paired duration + easing. Prevents designer-engineer mismatch from picking duration separately from easing.
| Token | Type | Value | Notes |
| transition/micro | String | 100ms cubic-bezier(0,0,0.2,1) | fast + ease-out |
| transition/interactive | String | 200ms cubic-bezier(0.4,0,0.2,1) | base + ease-in-out · default |
| transition/page | String | 350ms cubic-bezier(0,0,0.2,1) | slow + ease-out |
| transition/spring | String | 200ms cubic-bezier(0.34,1.56,0.64,1) | Betslip add, toast entrance |
1.17 · Layout new — brand-moded · all 4-pt
Brand-varying dimensions that v1 hid as "240 or 280" strings in Semantic. Promoting to primitives makes Figma track them properly.
| Token | Type | Example (px · rem) | Notes |
| layout/header-height | Number | 64 · 4rem (or 72 · 4.5rem) | Both multiples of 4 |
| layout/sidebar-width | Number | 240 · 15rem (or 280 · 17.5rem) | |
| layout/input-height | Number | 40 · 2.5rem (or 48 · 3rem) | |
| layout/tile-min-width | Number | 160 · 10rem | Casino tile |
| layout/launcher-top-bar-height | Number | 48 · 3rem | Game wrapper |
| layout/launcher-bottom-bar-height | Number | 56 · 3.5rem | |
| layout/footer-height | Number | brand-defined | |
| layout/page-max-width | Number | 1440 · 90rem | Content container cap |
1.18 · Gradient new — brand-moded · compound
iGaming promos are gradient-heavy. Store full gradients as strings; reference brand-ramp stops rather than literal hex.
| Token | Type | Example | Notes |
| gradient/promo-hero | String | linear-gradient(135deg, brand/primary-700, brand/primary-900) | Promo banners |
| gradient/jackpot | String | linear-gradient(90deg, special/jackpot-gold, #FFA500) | Ticker background |
| gradient/hero-fade | String | linear-gradient(180deg, transparent, neutral-950) | Image overlay |
| gradient/vip-diamond | String | linear-gradient(135deg, vip/diamond, vip/platinum) | Tier badges |
Collection 2 · Theme 2 modes · light · dark
Only the tokens that flip direction based on theme. References Primitives (brand-moded) for the actual neutral stops. Every "neutral-X or neutral-Y" from v1 lives here. ~25 tokens · ~50 values.
2.1 · Theme · Surface
| Token | Type | Light mode | Dark mode | Notes |
| theme/surface/page | Color | neutral-50 | neutral-950 | Root page bg |
| theme/surface/raised | Color | neutral-100 | neutral-900 | Cards, panels |
| theme/surface/elevated | Color | neutral-50 | neutral-850 | Popovers, floating |
| theme/surface/sunken | Color | neutral-200 | neutral-950 | Input fields, inset |
| theme/surface/inverse | Color | neutral-900 | neutral-50 | Inverted sections |
| theme/surface/skeleton | Color | neutral-200 | neutral-800 | Loading base |
| theme/surface/skeleton-shimmer | Color | neutral-100 | neutral-700 | Shimmer highlight |
| theme/surface/tooltip | Color | neutral-900 | white | Inverts vs theme |
| theme/surface/code | Color | neutral-100 | neutral-950 | Code / odds blocks |
2.2 · Theme · Text
| Token | Type | Light | Dark | Notes |
| theme/text/primary | Color | neutral-900 | white | Body |
| theme/text/secondary | Color | neutral-600 | neutral-300 | Supporting |
| theme/text/muted | Color | neutral-400 | neutral-500 | Hints |
| theme/text/disabled | Color | neutral-300 | neutral-700 | |
| theme/text/inverse | Color | white | neutral-900 | On dark bg (light mode) / on light bg (dark mode) |
| theme/text/caption | Color | neutral-500 | neutral-400 | |
| theme/text/heading-color | Color | neutral-900 | white | |
| theme/text/placeholder | Color | neutral-400 | neutral-500 | Inputs |
2.3 · Theme · Border & Divide
| Token | Type | Light | Dark | Notes |
| theme/border/default | Color | neutral-200 | neutral-700 | Cards, dividers |
| theme/border/subtle | Color | neutral-100 | neutral-800 | Faint separators |
| theme/border/strong | Color | neutral-400 | neutral-500 | Emphasis |
| theme/border/inverse | Color | neutral-700 | neutral-200 | On inverse surfaces |
| theme/border/divide | Color | neutral-100 | neutral-800 | HR / list dividers |
2.4 · Theme · Overlay
| Token | Type | Light | Dark | Notes |
| theme/overlay/backdrop-opacity | Number | 0.5 | 0.7 | Modal backdrop |
Collection 3 · Semantic global · no modes
The intent layer. Every component reads from here. References Theme and Primitives — never raw values. ~340 tokens.
3.1 · Surface
| Token | Type | Alias | Notes |
| surface/page | Color | theme/surface/page | Root page bg |
| surface/raised | Color | theme/surface/raised | Cards, panels |
| surface/elevated | Color | theme/surface/elevated | Popovers |
| surface/sunken | Color | theme/surface/sunken | Inputs |
| surface/overlay | Color | theme/surface/raised × opacity/95 | Modals |
| surface/overlay-tint | Color | color/brand/primary-900 × opacity/80 | Brand-tinted overlay |
| surface/inverse | Color | theme/surface/inverse | |
| surface/header | Color | color/always/transparent or color/brand/primary-600 | Brand-choice: 2 brands use transparent |
| surface/header-scrolled | Color | theme/surface/raised | After scroll |
| surface/footer | Color | theme/surface/inverse | |
| surface/sidebar | Color | theme/surface/raised | |
| surface/banner | Color | color/brand/primary-600 | Promo bars |
| surface/skeleton | Color | theme/surface/skeleton | |
| surface/skeleton-shimmer | Color | theme/surface/skeleton-shimmer | |
| surface/scrim | Color | color/always/black × opacity/60 | Behind modals |
| surface/tooltip | Color | theme/surface/tooltip | |
| surface/code | Color | theme/surface/code | |
3.2 · Text & Typography
Text color
| Token | Type | Alias | Notes |
| text/primary | Color | theme/text/primary | Body |
| text/secondary | Color | theme/text/secondary | Labels |
| text/muted | Color | theme/text/muted | Hints |
| text/disabled | Color | theme/text/disabled | |
| text/inverse | Color | theme/text/inverse | |
| text/on-brand | Color | color/always/white or color/brand/primary-50 | On brand-primary bg |
| text/on-status-success | Color | color/always/white | |
| text/on-status-warning | Color | color/always/white | |
| text/on-status-error | Color | color/always/white | |
| text/on-status-info | Color | color/always/white | |
| text/link/default | Color | color/brand/primary-600 | |
| text/link/hover | Color | color/brand/primary-700 | |
| text/link/visited | Color | text/link/default | Default = unchanged; opt-in per brand |
| text/link/active | Color | color/brand/primary-800 | |
| text/heading | Color | theme/text/heading-color | |
| text/display | Color | color/brand/primary-600 or text/primary | Hero / jackpot |
| text/placeholder | Color | theme/text/placeholder | |
| text/caption | Color | theme/text/caption | |
Text · Typography rules — brand-level transforms
| Token | Type | Default → Brand variant | Notes |
| text/body/weight | Number | typography/weight/regular → bold | Some brands are all-bold |
| text/body/transform | String | typography/transform/none → uppercase | Some brands all-caps |
| text/body/letter-spacing | Number | letter-spacing/none → wider | Paired with uppercase |
| text/body/size | Number | size/md → size/sm | Some brands smaller when bold |
| text/heading/weight | Number | typography/weight/semibold → bold | |
| text/heading/transform | String | typography/transform/none → uppercase | |
| text/heading/letter-spacing | Number | letter-spacing/none → wide | |
| text/body/label-weight | Number | typography/weight/medium → bold | Labels reuse body stack |
| text/body/label-transform | String | text/body/transform | No separate label rule |
Data typography — odds, scores, balances
| Token | Type | Alias | Notes |
| typography/data/family | String | typography/family/mono | Odds, scores, timers, balances |
| typography/data/weight | Number | typography/weight/medium or bold | |
| typography/data/size | Number | typography/size/md | |
| typography/data/tabular | String | tnum | Always tabular — prevents shift on odds ticks |
3.3 · Border
| Token | Type | Alias | Notes |
| border/default | Color | theme/border/default | Cards, inputs |
| border/subtle | Color | theme/border/subtle | |
| border/strong | Color | theme/border/strong | |
| border/focus | Color | color/brand/primary-500 | Keyboard focus ring |
| border/focus-offset | Color | color/always/white or surface/page | Offset ring |
| border/inverse | Color | theme/border/inverse | |
| border/brand | Color | color/brand/primary-500 | Accent borders |
| border/error | Color | color/status/error-500 | |
| border/success | Color | color/status/success-500 | |
| border/width/default | Number | 1 (px) | px exception — hairline |
| border/width/thick | Number | 2 (px) | Focus rings, active |
| divide/color | Color | theme/border/divide | HR / list |
3.4 · Interactive
Primary actions
| Token | Type | Alias | Notes |
| interactive/primary/bg-default | Color | color/brand/primary-600 | |
| interactive/primary/bg-hover | Color | color/brand/primary-700 | |
| interactive/primary/bg-pressed | Color | color/brand/primary-800 | |
| interactive/primary/bg-disabled | Color | color/neutral-200 | |
| interactive/primary/text-default | Color | color/always/white | Some brands differ |
| interactive/primary/text-hover | Color | color/always/white | |
| interactive/primary/text-disabled | Color | color/neutral-400 | |
| interactive/primary/border-default | Color | color/always/transparent | |
| interactive/primary/border-hover | Color | color/brand/primary-800 | |
| interactive/primary/icon-color | Color | color/always/white | Chevron / icon |
| interactive/primary/cursor | String | pointer | Brand variation possible |
Secondary actions
| Token | Type | Alias | Notes |
| interactive/secondary/bg-default | Color | color/always/transparent | |
| interactive/secondary/bg-hover | Color | color/brand/primary-50 | |
| interactive/secondary/bg-pressed | Color | color/brand/primary-100 | |
| interactive/secondary/bg-disabled | Color | color/always/transparent | |
| interactive/secondary/text-default | Color | color/brand/primary-600 | |
| interactive/secondary/text-hover | Color | color/brand/primary-700 | |
| interactive/secondary/text-disabled | Color | color/neutral-300 | |
| interactive/secondary/border-default | Color | color/brand/primary-600 | |
| interactive/secondary/border-hover | Color | color/brand/primary-700 | |
| interactive/secondary/icon-color | Color | color/brand/primary-600 | |
| interactive/secondary/cursor | String | pointer | |
Tertiary / Ghost actions
| Token | Type | Alias | Notes |
| interactive/tertiary/text-default | Color | color/brand/primary-600 | |
| interactive/tertiary/text-hover | Color | color/brand/primary-700 | |
| interactive/tertiary/bg-hover | Color | color/brand/primary-50 | |
| interactive/tertiary/icon-color | Color | color/brand/primary-600 | |
Destructive actions
| Token | Type | Alias | Notes |
| interactive/destructive/bg-default | Color | color/status/error-600 | Delete, close account |
| interactive/destructive/bg-hover | Color | color/status/error-700 | |
| interactive/destructive/text-default | Color | color/always/white | |
| interactive/destructive/border | Color | color/status/error-600 | |
View-all / inline links
| Token | Type | Alias | Notes |
| interactive/viewall/text | Color | color/brand/primary-600 | |
| interactive/viewall/text-hover | Color | color/brand/primary-700 | |
| interactive/viewall/chevron-color | Color | color/brand/primary-600 | |
| interactive/viewall/chevron-active | Color | color/brand/secondary-600 | Some brands differ |
| interactive/viewall/cursor | String | pointer | |
| interactive/viewall/underline | String | none or underline | Brand variation |
3.5 · Status & Feedback
Same shape × 4 statuses (success, warning, error, info). Tables show the success set; other three follow the same pattern with status/* swapped.
Per-status (success example)
| Token | Type | Alias | Notes |
| status/success/bg | Color | color/status/success-100 | Tint |
| status/success/bg-strong | Color | color/status/success-600 | Solid badge |
| status/success/text | Color | color/status/success-800 | On tint |
| status/success/text-on-bg | Color | color/always/white | On strong |
| status/success/border | Color | color/status/success-300 | |
| status/success/icon | Color | color/status/success-600 | |
Repeat the same 6 tokens for: status/warning/*, status/error/*, status/info/* — total 24 status tokens. |
Toast / Alert
| Token | Type | Alias | Notes |
| feedback/toast/success-bg | Color | status/success/bg-strong | |
| feedback/toast/warning-bg | Color | status/warning/bg-strong | v2 fix — was missing |
| feedback/toast/error-bg | Color | status/error/bg-strong | |
| feedback/toast/info-bg | Color | status/info/bg-strong | v2 fix — was missing |
| feedback/toast/text | Color | color/always/white | |
| feedback/toast/shadow | String | shadow/lg | |
| feedback/toast/border-radius | Number | radius/md | |
3.6 · Navigation
Header
| Token | Type | Alias | Notes |
| nav/header/bg | Color | surface/header | Transparent on 2 brands |
| nav/header/bg-scrolled | Color | surface/header-scrolled | |
| nav/header/text | Color | text/primary or color/always/white | |
| nav/header/icon | Color | text/primary or color/always/white | |
| nav/header/border-bottom | Color | border/default or transparent | |
| nav/header/logo-bg | Color | transparent or color/brand/primary | |
| nav/header/height | Number | layout/header-height | → Primitives |
Sidebar
| Token | Type | Alias | Notes |
| nav/sidebar/bg | Color | surface/sidebar | |
| nav/sidebar/item-text | Color | text/secondary | |
| nav/sidebar/item-text-active | Color | color/brand/primary or color/always/white | |
| nav/sidebar/item-bg-default | Color | color/always/transparent | |
| nav/sidebar/item-bg-hover | Color | color/brand/primary-50 or color/neutral-800 | |
| nav/sidebar/item-bg-active | Color | color/brand/primary-100 or color/brand/primary-700 | |
| nav/sidebar/item-border-active | Color | color/brand/primary-500 | Left accent bar |
| nav/sidebar/icon-default | Color | text/muted | |
| nav/sidebar/icon-active | Color | color/brand/primary or color/always/white | |
| nav/sidebar/width | Number | layout/sidebar-width | → Primitives |
Tabs · Bottom nav · Breadcrumb
| Token | Type | Alias | Notes |
| nav/tab/text-default | Color | text/muted | |
| nav/tab/text-active | Color | color/brand/primary-600 | |
| nav/tab/bg-default | Color | color/always/transparent | |
| nav/tab/bg-active | Color | color/brand/primary-50 | |
| nav/tab/indicator-color | Color | color/brand/primary-600 | |
| nav/tab/indicator-height | Number | 2 or 3 (px) | Brand variation |
| nav/tab/border-bottom | Color | border/default | |
| nav/bottom/bg | Color | surface/raised | Mobile |
| nav/bottom/item-active | Color | color/brand/primary-600 | |
| nav/bottom/item-default | Color | text/muted | |
| nav/breadcrumb/text | Color | text/muted | |
| nav/breadcrumb/separator | Color | text/muted | / > or chevron |
| nav/breadcrumb/current | Color | text/primary | |
3.8 · Overlay
| Token | Type | Alias | Notes |
| overlay/modal/bg | Color | surface/overlay | |
| overlay/modal/border | Color | border/default | |
| overlay/modal/border-radius | Number | radius/lg | |
| overlay/modal/shadow | String | shadow/overlay | |
| overlay/modal/backdrop | Color | surface/scrim | |
| overlay/modal/backdrop-opacity | Number | theme/overlay/backdrop-opacity | |
| overlay/drawer/bg | Color | surface/overlay | |
| overlay/drawer/overlay-bg | Color | surface/scrim | |
| overlay/drawer/header-bg | Color | surface/raised | |
| overlay/tooltip/bg | Color | surface/tooltip | |
| overlay/tooltip/text | Color | text/inverse or text/primary | |
| overlay/tooltip/border-radius | Number | radius/sm | |
| overlay/tooltip/shadow | String | shadow/md | |
| overlay/popover/bg | Color | surface/elevated | |
| overlay/popover/border | Color | border/default | |
| overlay/popover/shadow | String | shadow/lg | |
| overlay/popover/border-radius | Number | radius/md | |
| overlay/sheet/bg | Color | surface/overlay | Mobile bottom sheet |
| overlay/sheet/handle | Color | color/neutral-300 | Drag handle |
3.9 · iGaming · Odds & Betting
The most volatile UI surface in sportsbook. States must be airtight.
| Token | Type | Alias | Notes |
| gaming/odds/default/bg | Color | surface/raised | Unselected |
| gaming/odds/default/text | Color | text/primary | |
| gaming/odds/default/border | Color | border/default | |
| gaming/odds/hover/bg | Color | color/brand/primary-50 | |
| gaming/odds/hover/text | Color | color/brand/primary-700 | |
| gaming/odds/hover/border | Color | color/brand/primary-300 | |
| gaming/odds/selected/bg | Color | color/brand/primary-600 | Added to betslip |
| gaming/odds/selected/text | Color | color/always/white | |
| gaming/odds/selected/border | Color | color/brand/primary-700 | |
| gaming/odds/suspended/bg | Color | color/neutral-100 or color/neutral-800 | Market suspended |
| gaming/odds/suspended/text | Color | text/disabled | |
| gaming/odds/suspended/border | Color | border/subtle | |
| gaming/odds/suspended/icon | Color | text/muted | Lock icon |
| gaming/odds/boosted/bg | Color | color/status/warning-100 | Price boost |
| gaming/odds/boosted/text | Color | color/status/warning-800 | |
| gaming/odds/boosted/border | Color | color/status/warning-400 | |
| gaming/odds/boosted/badge-bg | Color | color/status/warning-500 | |
| gaming/odds/price-up/flash | Color | color/status/success-200 | |
| gaming/odds/price-down/flash | Color | color/status/error-200 | |
| gaming/odds/price-up/arrow | Color | color/status/success-600 | |
| gaming/odds/price-down/arrow | Color | color/status/error-600 | |
| gaming/odds/border-radius | Number | radius/sm or radius/md | |
| gaming/odds/font-family | String | typography/family/mono | |
| gaming/odds/font-weight | Number | typography/weight/bold | |
3.10 · iGaming · Live & Streaming
| Token | Type | Alias | Notes |
| gaming/live/indicator-color | Color | color/status/error-500 | Pulse dot |
| gaming/live/indicator-bg | Color | color/status/error-100 | Pulse ring |
| gaming/live/label-bg | Color | color/status/error-600 | LIVE badge |
| gaming/live/label-text | Color | color/always/white | |
| gaming/live/label-border-radius | Number | radius/sm | |
| gaming/live/score/home-bg | Color | color/brand/primary-50 | |
| gaming/live/score/away-bg | Color | surface/raised | |
| gaming/live/score/text | Color | text/primary | |
| gaming/live/score/divider | Color | border/default | |
| gaming/live/timer/text | Color | text/secondary | Match clock |
| gaming/live/pitch/bg | Color | color/special/pitch-green | Pitch diagram |
| gaming/live/streaming/bg | Color | color/always/black | Video player bg |
| gaming/live/streaming/controls | Color | color/always/white | |
| gaming/live/streaming/icon-color | Color | color/brand/primary-500 | |
| gaming/live/in-play-label/bg | Color | color/status/success-600 | |
| gaming/live/in-play-label/text | Color | color/always/white | |
3.11 · iGaming · Betslip
The revenue-critical surface. stake-input uses form/input/* directly; CTA uses interactive/primary/*.
| Token | Type | Alias | Notes |
| gaming/betslip/container-bg | Color | surface/overlay | |
| gaming/betslip/container-border | Color | border/default | |
| gaming/betslip/header-bg | Color | color/brand/primary-700 | iGaming-specific |
| gaming/betslip/header-text | Color | color/always/white | |
| gaming/betslip/header-count-bg | Color | color/always/white | Selection count |
| gaming/betslip/header-count-text | Color | color/brand/primary-700 | |
| gaming/betslip/selection-bg | Color | surface/raised | Each bet row |
| gaming/betslip/selection-border | Color | border/default | |
| gaming/betslip/selection-text | Color | text/primary | |
| gaming/betslip/selection-odds | Color | color/brand/primary-600 | |
| gaming/betslip/remove-icon | Color | text/muted | Kept separate from destructive |
| gaming/betslip/remove-hover | Color | color/status/error-500 | |
| gaming/betslip/est-returns-label | Color | text/muted | |
| gaming/betslip/est-returns-value | Color | text/primary | |
| gaming/betslip/keyboard-bg | Color | surface/sunken | Mobile numeric |
| gaming/betslip/keyboard-key-bg | Color | surface/raised | |
| gaming/betslip/keyboard-key-text | Color | text/primary | |
| gaming/betslip/empty-text | Color | text/muted | |
| gaming/betslip/empty-icon | Color | text/muted | |
| gaming/betslip/price-change-bg | Color | color/status/warning-50 | Odds changed banner |
| gaming/betslip/price-change-text | Color | color/status/warning-800 | |
| gaming/betslip/each-way-text | Color | text/secondary | E/W toggle |
3.12 · iGaming · Results & History
| Token | Type | Alias | Notes |
| gaming/result/win/text | Color | color/status/success-800 | |
| gaming/result/win/border | Color | color/status/success-300 | |
| gaming/result/win/icon | Color | color/status/success-600 | Tick / trophy |
| gaming/result/loss/text | Color | color/status/error-800 | |
| gaming/result/loss/border | Color | color/status/error-300 | |
| gaming/result/loss/icon | Color | color/status/error-600 | X |
| gaming/result/void/text | Color | text/muted | |
| gaming/result/void/border | Color | border/default | |
| gaming/result/pending/text | Color | color/status/info-800 | |
| gaming/result/pending/icon | Color | color/status/info-600 | Clock |
| gaming/result/cashout-full/text | Color | color/status/warning-800 | v2 split |
| gaming/result/cashout-full/cta-bg | Color | color/status/warning-500 | v2 split |
| gaming/result/cashout-full/cta-text | Color | color/always/white | v2 |
| gaming/result/cashout-partial/text | Color | color/status/warning-800 | v2 split |
| gaming/result/cashout-partial/cta-bg | Color | color/status/warning-400 | Distinct from full |
| gaming/result/cashout-partial/cta-text | Color | color/always/white | v2 |
| gaming/result/stake-text | Color | text/muted | |
| gaming/result/returns-text | Color | text/primary | |
3.13 · iGaming · Casino Surfaces
| Token | Type | Alias | Notes |
| gaming/casino/tile/bg | Color | surface/raised | |
| gaming/casino/tile/overlay-bg | Color | color/always/black × opacity/60 | Hover overlay |
| gaming/casino/tile/overlay-text | Color | color/always/white | |
| gaming/casino/tile/border-radius | Number | radius/md or radius/lg | |
| gaming/casino/tile/border | Color | border/default | |
| gaming/casino/tile/shadow | String | shadow/sm | |
| gaming/casino/tile/badge-new-bg | Color | color/status/info-600 | |
| gaming/casino/tile/badge-new-text | Color | color/always/white | |
| gaming/casino/tile/badge-hot-bg | Color | color/status/error-600 | |
| gaming/casino/tile/badge-hot-text | Color | color/always/white | |
| gaming/casino/jackpot/bg | Color | color/always/transparent | Ticker |
| gaming/casino/jackpot/font-family | String | typography/family/display | |
| gaming/casino/jackpot/font-weight | Number | typography/weight/bold | |
| gaming/casino/rtp/text | Color | text/muted | RTP % label |
| gaming/casino/rtp/value | Color | color/status/success-600 | High RTP |
| gaming/casino/provider/label-bg | Color | color/neutral-100 or color/neutral-800 | |
| gaming/casino/provider/label-text | Color | text/muted | |
| gaming/casino/exclusive/bg | Color | color/brand/tertiary-600 | |
| gaming/casino/exclusive/text | Color | color/always/white | |
| gaming/casino/favourite/icon | Color | color/status/warning-500 | Heart / star |
| gaming/casino/lobby/category-text | Color | text/primary | |
| gaming/casino/lobby/see-all-text | Color | interactive/viewall/text | → interactive tokens |
| gaming/casino/demo/badge-bg | Color | color/neutral-700 | |
| gaming/casino/demo/badge-text | Color | color/always/white | |
3.15 · iGaming · Responsible Gambling
Regulator-gated. Every token here aliases through reg/* from Collection 4 — never directly to Primitives. Guarantees jurisdiction overrides take effect.
| Token | Type | Alias | Notes |
| gaming/rg/warning/bg | Color | reg/rg/warning/bg | → Regulatory |
| gaming/rg/warning/text | Color | reg/rg/warning/text | |
| gaming/rg/warning/border | Color | reg/rg/warning/border | |
| gaming/rg/warning/icon | Color | reg/rg/warning/icon | |
| gaming/rg/limit/bar-track | Color | reg/rg/limit/bar-track | |
| gaming/rg/limit/bar-fill | Color | reg/rg/limit/bar-fill | |
| gaming/rg/limit/bar-fill-near | Color | reg/rg/limit/bar-fill-near | |
| gaming/rg/limit/bar-fill-at | Color | reg/rg/limit/bar-fill-at | |
| gaming/rg/limit/text | Color | text/secondary | |
| gaming/rg/reality-check/bg | Color | surface/overlay | |
| gaming/rg/reality-check/text | Color | text/primary | |
| gaming/rg/reality-check/cta | Color | interactive/primary/bg-default | |
| gaming/rg/self-excl/bg | Color | reg/rg/self-excl/bg | |
| gaming/rg/self-excl/text | Color | reg/rg/self-excl/text | |
| gaming/rg/self-excl/cta-bg | Color | reg/rg/self-excl/cta-bg | |
| gaming/rg/self-excl/program-name | String | reg/rg/self-excl/program-name | Spelpaus / ROFUS / Cruks / ConnexOntario |
| gaming/rg/session-timer/text | Color | text/muted | |
| gaming/rg/logo/color | Color | reg/logo/color | |
| gaming/rg/logo/hover | Color | reg/logo/hover | |
| gaming/rg/age-gate/min-age | Number | reg/age-gate/min-age | 18 / 19 (ON) / 24 (NL ads) |
3.16 · iGaming · Payments & KYC
| Token | Type | Alias | Notes |
| gaming/payment/method-card/bg | Color | surface/raised | |
| gaming/payment/method-card/border | Color | border/default | |
| gaming/payment/method-card/selected | Color | color/brand/primary-100 | |
| gaming/payment/method-card/border-selected | Color | border/focus | |
| gaming/payment/amount/preset-bg | Color | surface/sunken | |
| gaming/payment/amount/preset-bg-sel | Color | color/brand/primary-600 | |
| gaming/payment/amount/preset-text | Color | text/primary | |
| gaming/payment/amount/preset-text-sel | Color | color/always/white | |
| gaming/payment/progress/track | Color | color/neutral-200 | |
| gaming/payment/progress/fill | Color | color/brand/primary-600 | |
| gaming/payment/progress/step-done | Color | color/status/success-600 | |
| gaming/payment/progress/step-active | Color | color/brand/primary-600 | |
| gaming/payment/progress/step-pending | Color | color/neutral-300 | |
| gaming/payment/kyc/pending-bg | Color | color/status/warning-50 | |
| gaming/payment/kyc/pending-text | Color | color/status/warning-800 | |
| gaming/payment/kyc/verified-bg | Color | color/status/success-50 | |
| gaming/payment/kyc/verified-text | Color | color/status/success-800 | |
| gaming/payment/kyc/rejected-bg | Color | color/status/error-50 | |
| gaming/payment/kyc/rejected-text | Color | color/status/error-800 | |
| gaming/payment/kyc/upload-border | Color | border/default | |
| gaming/payment/kyc/upload-bg | Color | surface/sunken | |
| gaming/payment/kyc/upload-active-border | Color | border/focus | Drag-over |
| gaming/payment/balance/text | Color | text/primary | |
| gaming/payment/balance/positive | Color | color/status/success-600 | |
| gaming/payment/balance/currency | Color | text/muted | |
3.17 · Sportsbook · Bet Builder new
Same-game multi (SGM) / Bet Builder surface. Legs have correlation warnings absent from standard odds.
| Token | Type | Alias | Notes |
| sportsbook/bet-builder/leg-default/bg | Color | surface/raised | |
| sportsbook/bet-builder/leg-default/border | Color | border/default | |
| sportsbook/bet-builder/leg-default/text | Color | text/primary | |
| sportsbook/bet-builder/leg-selected/bg | Color | color/brand/primary-100 | |
| sportsbook/bet-builder/leg-selected/border | Color | color/brand/primary-500 | |
| sportsbook/bet-builder/leg-selected/text | Color | color/brand/primary-800 | |
| sportsbook/bet-builder/correlation-warning/bg | Color | color/status/warning-50 | Mutually-exclusive selections |
| sportsbook/bet-builder/correlation-warning/text | Color | color/status/warning-800 | |
| sportsbook/bet-builder/correlation-warning/icon | Color | color/status/warning-600 | |
| sportsbook/bet-builder/price-live | Color | color/brand/primary-600 | Live computed price |
3.18 · Sportsbook · Accumulator new
| Token | Type | Alias | Notes |
| sportsbook/accumulator/row-bg | Color | surface/raised | |
| sportsbook/accumulator/row-border | Color | border/subtle | |
| sportsbook/accumulator/boosted-bg | Color | color/status/warning-100 | Boosted acca |
| sportsbook/accumulator/boosted-text | Color | color/status/warning-800 | |
| sportsbook/accumulator/multiplier-badge-bg | Color | color/brand/tertiary-500 | |
| sportsbook/accumulator/multiplier-badge-text | Color | color/always/white | |
| sportsbook/accumulator/total-odds-text | Color | text/primary | |
3.19 · Sportsbook · Stats & Form new
W/D/L form guide colours. Distinct from status/success/error — sports form isn't a success state, and needs to work in strings of letters (W-W-D-L-W).
| Token | Type | Alias | Notes |
| sportsbook/stats/form/win | Color | color/status/success-500 | W indicator |
| sportsbook/stats/form/win-bg | Color | color/status/success-100 | |
| sportsbook/stats/form/draw | Color | color/neutral-500 | D — neutral, not status |
| sportsbook/stats/form/draw-bg | Color | color/neutral-200 | |
| sportsbook/stats/form/loss | Color | color/status/error-500 | L |
| sportsbook/stats/form/loss-bg | Color | color/status/error-100 | |
| sportsbook/stats/momentum/up | Color | color/status/success-600 | Trend indicator |
| sportsbook/stats/momentum/down | Color | color/status/error-600 | |
| sportsbook/stats/momentum/flat | Color | color/neutral-500 | |
| sportsbook/stats/h2h/heading | Color | text/heading | H2H section |
| sportsbook/stats/market-group/header-bg | Color | surface/sunken | Market Winner / O/U / BTTS |
| sportsbook/stats/market-group/header-text | Color | text/secondary | |
| sportsbook/stats/market-group/collapsed-indicator | Color | text/muted | Chevron |
3.20 · Casino · Live Dealer new
| Token | Type | Alias | Notes |
| casino/live-dealer/studio-chrome/bg | Color | color/always/black | Video frame |
| casino/live-dealer/studio-chrome/text | Color | color/always/white | |
| casino/live-dealer/dealer-name/text | Color | color/always/white | |
| casino/live-dealer/dealer-name/bg | Color | color/always/black × opacity/60 | Overlay on video |
| casino/live-dealer/seat-count/text | Color | text/secondary | "3 / 7 seats" |
| casino/live-dealer/seat-count/icon | Color | text/muted | |
| casino/live-dealer/seat/full | Color | color/status/error-500 | Table full |
| casino/live-dealer/seat/available | Color | color/status/success-500 | |
| casino/live-dealer/min-max-chips/bg | Color | surface/sunken | Bet range display |
| casino/live-dealer/min-max-chips/text | Color | text/primary | |
| casino/live-dealer/countdown/text | Color | color/always/white | Between-round timer |
| casino/live-dealer/countdown/bg | Color | color/status/error-600 | Urgent red |
| casino/live-dealer/chat/bg | Color | surface/overlay | Dealer chat |
| casino/live-dealer/chat/bubble-mine | Color | color/brand/primary-600 | |
| casino/live-dealer/chat/bubble-dealer | Color | color/neutral-700 | |
3.21 · Casino · Jackpot Tiers new
v1 had a single jackpot-gold primitive — insufficient. v2 splits into four tiers with distinct styling per tier.
| Token | Type | Alias | Notes |
| casino/jackpot/mini/bg | Color | color/neutral-700 | Subtle |
| casino/jackpot/mini/text | Color | color/always/white | |
| casino/jackpot/mini/ticker | Color | color/neutral-300 | |
| casino/jackpot/minor/bg | Color | color/brand/tertiary-600 | |
| casino/jackpot/minor/text | Color | color/always/white | |
| casino/jackpot/minor/ticker | Color | color/brand/tertiary-200 | |
| casino/jackpot/major/bg | Color | color/brand/secondary-600 | |
| casino/jackpot/major/text | Color | color/always/white | |
| casino/jackpot/major/ticker | Color | color/brand/secondary-200 | |
| casino/jackpot/grand/bg | Color | gradient/jackpot | Gradient — top tier |
| casino/jackpot/grand/text | Color | color/always/black | Against gold |
| casino/jackpot/grand/ticker | Color | color/special/jackpot-gold | |
3.22 · Casino · Tournament & Leaderboard new
| Token | Type | Alias | Notes |
| casino/tournament/leaderboard-bg | Color | surface/raised | |
| casino/tournament/row-bg | Color | surface/raised | |
| casino/tournament/row-bg-mine | Color | color/brand/primary-50 | Highlight current user |
| casino/tournament/rank-1 | Color | color/vip/gold | 🥇 |
| casino/tournament/rank-2 | Color | color/vip/silver | 🥈 |
| casino/tournament/rank-3 | Color | color/vip/bronze | 🥉 |
| casino/tournament/rank-top-10 | Color | color/brand/primary-600 | |
| casino/tournament/rank-default | Color | text/secondary | |
| casino/tournament/prize-text | Color | color/status/success-700 | |
| casino/tournament/countdown-text | Color | color/status/warning-700 | |
3.23 · VIP / Loyalty Tiers new
Same shape × 5 tiers. Shows bronze; repeat for silver/gold/platinum/diamond swapping color/vip/*.
| Token | Type | Alias | Notes |
| vip/tier/bronze/bg | Color | color/vip/bronze × opacity/20 | Badge bg |
| vip/tier/bronze/text | Color | color/vip/bronze | |
| vip/tier/bronze/border | Color | color/vip/bronze | |
| vip/tier/bronze/icon | Color | color/vip/bronze | |
Repeat 4 tokens for: vip/tier/silver/*, vip/tier/gold/*, vip/tier/platinum/*, vip/tier/diamond/* — total 20 VIP tokens. |
| vip/progress/track | Color | color/neutral-200 | Next-tier progress bar |
| vip/progress/fill | Color | color/brand/primary-600 | |
| vip/points/text | Color | color/brand/primary-700 | Loyalty points display |
3.24 · Launcher chrome new
The wrapper around 3rd-party game iframes. Players spend most of their session in here — it's where brand identity lives while the game is running.
Top bar
| Token | Type | Alias | Notes |
| launcher/top-bar/bg | Color | surface/raised | |
| launcher/top-bar/text | Color | text/primary | Game title |
| launcher/top-bar/close-icon | Color | text/secondary | |
| launcher/top-bar/close-icon-hover | Color | color/status/error-500 | |
| launcher/top-bar/balance-text | Color | text/primary | |
| launcher/top-bar/balance-currency | Color | text/muted | |
| launcher/top-bar/height | Number | layout/launcher-top-bar-height | → Primitives |
Bottom bar
| Token | Type | Alias | Notes |
| launcher/bottom-bar/bg | Color | surface/raised | |
| launcher/bottom-bar/deposit-shortcut-bg | Color | interactive/primary/bg-default | |
| launcher/bottom-bar/deposit-shortcut-text | Color | interactive/primary/text-default | |
| launcher/bottom-bar/favorite-icon | Color | text/muted | |
| launcher/bottom-bar/favorite-icon-active | Color | color/status/warning-500 | Heart / star |
| launcher/bottom-bar/session-timer-text | Color | text/muted | RG |
| launcher/bottom-bar/fullscreen-toggle | Color | text/secondary | |
| launcher/bottom-bar/height | Number | layout/launcher-bottom-bar-height | |
States
| Token | Type | Alias | Notes |
| launcher/loading/bg | Color | theme/surface/skeleton | Game booting |
| launcher/loading/shimmer | Color | theme/surface/skeleton-shimmer | |
| launcher/loading/spinner | Color | color/brand/primary-500 | |
| launcher/error-state/bg | Color | color/status/error-50 | Game failed to load |
| launcher/error-state/text | Color | color/status/error-800 | |
| launcher/error-state/retry-cta | Color | interactive/primary/bg-default | |
| launcher/frame-border | Color | border/default | Around iframe |
Live-casino specific
| Token | Type | Alias | Notes |
| launcher/live-casino/mute-icon | Color | color/always/white | Overlay on video |
| launcher/live-casino/mute-icon-active | Color | color/status/error-400 | Muted state |
| launcher/live-casino/chat-icon | Color | color/always/white | |
| launcher/live-casino/chat-badge-bg | Color | color/status/error-500 | Unread count |
| launcher/live-casino/chat-badge-text | Color | color/always/white | |
Collection 4 · Regulatory 7 modes · default · SE · DK · MT · ON · NL · PL
Narrow override layer. Only tokens that regulators actually constrain. Sits above Semantic in the alias chain. Every token has 7 values (one per mode); the table shows example defaults — jurisdiction-specific values are populated by the DS lead in consultation with legal/compliance.
4.1 · Regulatory tokens
| Token | Type | Default value | Jurisdiction notes |
| reg/rg/warning/bg | Color | color/status/warning-50 | NL: higher contrast required |
| reg/rg/warning/text | Color | color/status/warning-900 | NL & SE: WCAG AAA required |
| reg/rg/warning/border | Color | color/status/warning-400 | |
| reg/rg/warning/icon | Color | color/status/warning-600 | |
| reg/rg/warning/min-size-hint | Number | 14 (px) | Minimum font size for warning text |
| reg/rg/self-excl/bg | Color | color/status/error-50 | |
| reg/rg/self-excl/text | Color | color/status/error-900 | |
| reg/rg/self-excl/cta-bg | Color | color/status/error-600 | |
| reg/rg/self-excl/program-name | String | "Self-exclusion" | SE: Spelpaus · DK: ROFUS · NL: Cruks · ON: ConnexOntario · MT: Gaming-related harm support |
| reg/rg/self-excl/program-url | String | brand-defined | Direct link to register |
| reg/rg/limit/bar-track | Color | color/neutral-200 | Deposit limit progress |
| reg/rg/limit/bar-fill | Color | color/status/success-500 | |
| reg/rg/limit/bar-fill-near | Color | color/status/warning-500 | Near limit |
| reg/rg/limit/bar-fill-at | Color | color/status/error-500 | At / over limit |
| reg/bonus-disclaimer/text | Color | text/secondary | SE: strict "bonus" language rules |
| reg/bonus-disclaimer/min-contrast-hint | String | "AA" | NL: "AAA" |
| reg/bonus-disclaimer/min-size-hint | Number | 12 (px) | Regulator minimum |
| reg/logo/color | Color | text/muted | GamCare / Stödlinjen / Cruks / MGA seal / Spillemyndigheden seal / ConnexOntario |
| reg/logo/hover | Color | text/primary | |
| reg/logo/min-size-hint | Number | 24 (px) | Per regulator spec |
| reg/age-gate/min-age | Number | 18 | ON: 19 · NL ads: 24 |
| reg/age-gate/text | String | "18+" | "19+" (ON) · "24+ in advertising" (NL) |
Per-jurisdiction reference
| Mode | Regulator | Self-exclusion | Min age | Key constraint |
| default | — | generic | 18 | Fallback |
| SE | Spelinspektionen | Spelpaus | 18 | Strict bonus language · deposit-limit mandatory |
| DK | Spillemyndigheden | ROFUS | 18 | Seal placement · mandatory RG info |
| MT | MGA | MGA support | 18 | MGA seal visibility · play reminder |
| ON | iGO / AGCO | ConnexOntario | 19 | No celebrity ads · strict promo restrictions |
| NL | Kansspelautoriteit (KSA) | Cruks | 18 · 24+ for ads | KOA compliance · deposit-limit mandatory |
| PL | Ministerstwo Finansów | — | 18 | State monopoly on sports betting · restricted game types |
Collection 5 · Component global · <10 tokens
Last resort. Only add here if a token genuinely cannot live in Semantic or Primitives. Most v1 Component entries migrated to layout/* or z-index/* in Primitives.
5.1 · Component overrides
| Token | Type | Example value | Why it exists here |
| component/modal/backdrop-opacity-override | Number | brand-defined | Rare brand-specific legal/UX spec above theme default |
| component/card/border-radius-override | Number | brand-defined | Only if a brand varies card radius at component level specifically, not system-wide |
| Budget: keep under 10. If this collection grows, Semantic is under-specified — audit before adding. |
↑ Top