20-Brand White Label · Casino & Sportsbook · v3.2 · 2026-04-30 · Final

Design Token Reference v3.2

The final catalogue. Six collections, two locked invariants, nine brand modes, Light + Dark theme. Live in Figma file fysBbW10LRJUNgisaBKXJo — landed 2026-04-29. See the Architecture v3.2 deck for rationale and the Component Audit for the components-page gap analysis. Previous version: v3.1 reference.

9 brand modes Light + Dark Figma Enterprise · native strict 4-pt scale hex invariant marketing edits Modes DNA only
116
Global vars
140
Modes vars × 9
31
Theme vars × 2
53
Semantic vars
38
Component Packs
4
Regulatory × 7

How to read v3.2

Conventions

Token path is the Figma Variable name (slashes become groups). Type is the Figma Variable type (Color, Number, String, Boolean, Effect). Value / Alias shows the raw value or the alias target. Dimension Numbers are px in Figma; the export script converts to rem (rem = px / 16).

Status badges: stable unchanged from v3.1 · evolved renamed or restructured · v3.2 introduced or promoted · final the locked v3.2 form.

Two locked invariants

  • Hex invariant — raw hex lives in exactly two homes: Global (color/black, /white, /black-alpha/*, /white-alpha/*, /system/*) and Modes brand DNA (color/{primary, secondary, neutral, tertiary}/{50..900}). Every other colour token in every collection is an alias.
  • Strict 4-point scaleGlobal/scale/* contains only [0, 4, 8, 12, 16, 20, 24, 28, 32, 40, 48, 56, 64, 72, 80, 96, 112, 128, 144, 160]. Twenty stops. Off-grid legacy values round to the closest stop (radii) or round up (typography).

Collection 1 · Global single Default mode

Brand-invariant raw values plus the canonical 4-point scale. 116 variables + 5 elevation Effect Styles. One of the two homes for raw hex.

1.1 · Color · Base — raw hex

Global color base tokens
TokenTypeValueNotes
color/blackColor#000000Pure black · invariant
color/whiteColor#FFFFFFPure white · invariant

1.2 · Color · Alpha — overlay alphas

Ten stops each. Use these wherever a translucent black or white overlay is needed — replaces the legacy Generic/Stroke 10, Stroke 30, Base/Base Black 10, etc.

Global alpha tokens
Token familyTypeStopsUse
color/black-alpha/{0,5,10,20,30,40,50,60,70,80,90}Color × 10#00000000 → #000000E6Borders, scrims, dim overlays on light surfaces
color/white-alpha/{0,5,10,20,30,40,50,60,70,80,90}Color × 10#FFFFFF00 → #FFFFFFE6Highlights, soft strokes on dark surfaces

1.3 · Color · System — brand-invariant feedback

Status colours that should not vary across brands. Ten stops each per family. Use these on every brand — system semantics ride above brand identity.

Global system color families
FamilyTypeAnchor (500)Notes
color/system/success/{50..900}Color × 10#00B894Confirmations, success notifications
color/system/warning/{50..900}Color × 10#FDCB6ECaution; pair with dark text on light tints
color/system/error/{50..900}Color × 10#E17055Validation errors, destructive actions
color/system/info/{50..900}Color × 10#74B9FFInformational messages, neutral feedback

1.4 · Scale · 4-point — strict, 20 stops

The single source of truth for every dimension token (radii, spacing, type, line-height, icon-size). All 20 stops below; nothing else.

Global scale stops
TokenTypepx / remCommon use
scale/0Number0No-spacing baseline
scale/4Number4 · 0.25remHairline gap, small radii
scale/8Number8 · 0.5remInline padding
scale/12Number12 · 0.75remCard radii, caption type
scale/16Number16 · 1remBody, icon-size sm
scale/20Number20 · 1.25remHeading 4, icon-size md
scale/24Number24 · 1.5remHeading 2, icon-size lg, lg spacing
scale/28Number28 · 1.75remHeading 1
scale/32Number32 · 2remDisplay body, icon-size xl, xl spacing
scale/40Number40 · 2.5remHeading 1 line-height
scale/48Number48 · 3remDisplay 2, 2xl spacing
scale/56Number56 · 3.5remSection padding
scale/64Number64 · 4remDisplay 2 line-height, 3xl spacing
scale/72Number72 · 4.5remHero spacing
scale/80Number80 · 5remPage sections
scale/96Number96 · 6remPill radius (legacy 100 rounds here)
scale/112, 128, 144, 160Number × 4112 / 128 / 144 / 160Large layout, true-pill radius (160)

1.5 · Typography — Global scale aliases + raw letter-spacing

Every size and line-height aliases scale/N. Letter-spacing is the explicit exception to the 4-point rule — it lives in its own micro-scale.

Global typography size, line-height, letter-spacing
TokenTypeAliases / valueNotes
typography/size/x-smallNumber→ scale/8Decorative only — fails text minimums for body
typography/size/smallNumber→ scale/12Captions (rounded up from legacy 11)
typography/size/captionNumber→ scale/12Footnotes
typography/size/labelNumber→ scale/16UI labels (rounded up from legacy 15)
typography/size/bodyNumber→ scale/16Body base
typography/size/heading-5Number→ scale/16Smallest heading
typography/size/heading-4Number→ scale/20(rounded up from legacy 17)
typography/size/heading-3Number→ scale/20(rounded up from legacy 19)
typography/size/heading-2Number→ scale/24(rounded up from legacy 22)
typography/size/heading-1Number→ scale/28Page heading
typography/size/display-3Number→ scale/32Display tier
typography/size/display-2Number→ scale/48(rounded from legacy 50)
typography/line-height/* (matched to size)Number × ~10→ scale/{14..64}All aliased to scale stops
typography/letter-spacing/tightNumber-0.02Raw FLOAT · explicit 4-pt exception
typography/letter-spacing/normalNumber0Raw FLOAT
typography/letter-spacing/wideNumber0.04Raw FLOAT

1.6 · Stroke — alias of scale

Global stroke widths
TokenTypeAliasesNotes
stroke/hairlineNumber0.5Sub-pixel divider
stroke/defaultNumber1Standard border
stroke/thickNumber→ scale/4 (used as 2)Focus ring base
stroke/strongNumber→ scale/4Heavy emphasis

1.7 · Breakpoint — FLOAT

Global breakpoint thresholds
TokenTypeValueNotes
breakpoint/mobileNumber360Smallest supported width
breakpoint/tabletNumber768
breakpoint/desktopNumber1024
breakpoint/desktop-wideNumber1440Promo / dashboard layouts

1.8 · Elevation — Effect Styles, 5 levels

Effect Styles, not Variables. Replace the legacy raw DROP_SHADOW patterns embedded inline in component masters.

Global elevation effect styles
StyleTypeCompositionUse
elevation/0EFFECTflat (no shadow)Inline content
elevation/1EFFECTy2, blur 4, alpha 8%Resting cards
elevation/2EFFECTy4, blur 12, alpha 12%Raised, dropdowns
elevation/3EFFECTy8, blur 24, alpha 16%Modals
elevation/4EFFECTy12, blur 36, alpha 20%Bottom sheets, hero overlays

Collection 2 · Modes 9 brand modes

Brand DNA + brand-tinted alias chrome. 140 variables × 9 modes. The other home for raw hex (DNA only). Marketing edits only this collection.

2.1 · Brand DNA final — 4 ramps × 10 stops, raw hex per brand

The only place outside Global where raw hex is allowed. 40 raw hex tokens × 9 brand modes = 360 raw hex values.

Modes brand DNA ramps
Token familyTypeStopsAnchor (Lyllo / Snabarre / Mobilespin)
color/primary/{50..900}Color × 1010 brand-defined#F02884 / green / #D6112B
color/secondary/{50..900}Color × 1010 brand-definedbrand-defined per ramp
color/neutral/{50..900}Color × 1010 brand-tinted greysEach brand has its own tint
color/tertiary/{50..900}Color × 1010 brand-definedLyllo: #FD6A00 (orange) · Comeon: #C3FF00 (lime) · others mirror primary

Tertiary ramp added in v3.2

Tertiary unblocks brands that need a third hue (Lyllo accent orange, Comeon lime). Brands without a third accent mirror primary as a placeholder so the alias chain stays valid.

2.2 · Color · Brand alias — alias of DNA

Modes brand alias tokens
TokenTypeAliasesNotes
color/brand/primaryColor→ Modes/color/primary/500Single role-named anchor
color/brand/primary-hoverColor→ Modes/color/primary/600Hover state
color/brand/primary-pressedColor→ Modes/color/primary/700Pressed state
color/brand/secondaryColor→ Modes/color/secondary/500
color/brand/tertiaryColor→ Modes/color/tertiary/500Accent
color/brand/on-primaryColor→ Global/color/white (most brands)Foreground on primary surfaces

2.3 · Color · Surface — alias of neutral DNA

Modes surface tokens
TokenAliases (Light)Aliases (Dark)
color/surface/page→ neutral/100→ neutral/900
color/surface/raised→ neutral/50→ neutral/800
color/surface/sunken→ neutral/200→ neutral/950
color/surface/sidebar→ neutral/100→ neutral/800
color/surface/bottomsheet→ neutral/50→ neutral/800

2.4 · Color · Text — alias of neutral / brand DNA

Modes text color tokens
TokenAliasesNotes
color/text/primary→ neutral/900 (Light) / neutral/100 (Dark)Body text
color/text/secondary→ neutral/700 (Light) / neutral/300 (Dark)Helper, supportive
color/text/disabled→ neutral/400Use sparingly
color/text/link→ Modes/color/primary/500Brand-coloured links
color/text/on-brand→ Global/color/white (most brands)Foreground on brand surfaces · brand can override (888 yellow uses black)
color/text/on-surface-dark→ neutral/100Foreground on darker surfaces

2.5 · Color · Icon — 3-way split

Modes icon color tokens
TokenAliasesNotes
color/icon/content→ neutral/700Content icons (heading prefix, list bullets)
color/icon/action→ Modes/color/primary/500Tappable / interactive icons
color/icon/descriptive→ neutral/600Decorative / informational
color/icon/inverse→ neutral/100On dark surfaces

Mobilespin overrides action to charcoal (DNA neutral/900) — black icons, red CTAs is the brand rule.

2.6 · Color · Border — alias of alpha or neutral

Modes border tokens
TokenAliasesNotes
color/border/subtle→ Global/color/black-alpha/10 (Light) / white-alpha/10 (Dark)Faint dividers
color/border/default→ neutral/300Standard borders
color/border/strong→ Global/color/black-alpha/30Emphatic borders
color/border/focus→ Modes/color/primary/500Focus ring base · see WCAG 2.4.13

2.8 · Banner / Landing — alias chrome

Modes banner and landing tokens
TokenAliases
color/banner/background→ neutral/700 / brand override
color/banner/text→ neutral/100
color/banner/cta→ Modes/color/primary/500
color/landing/icon-cta/bg→ neutral/100
color/landing/icon-cta/icon→ Modes/color/primary/500
color/landing/secondary-cta/bg→ Modes/color/tertiary/500
color/landing/tag→ Modes/color/tertiary/500 (5 of 9 brands use a third accent here)

2.10 · Radius — alias of Global/scale

Modes radius tokens
TokenAliasesNotes
radius/base-3→ Global/scale/4Legacy 3 rounded up
radius/cta→ Global/scale/4Default CTA · brand may override
radius/input→ Global/scale/4
radius/box→ Global/scale/8Legacy 6 rounded
radius/card→ Global/scale/12Already on grid
radius/large→ Global/scale/24Hero / promo
radius/navigation→ Global/scale/12 (Reviant-A) / 0 (Reviant-B)Brand-divergent
radius/pill→ Global/scale/96 (or 160 for true pill)Legacy 100 rounded down

2.11 · Typography family + weight — STRING per brand

Modes typography family and weight
TokenTypeExample
typography/family/headingStringbrand-defined (Open Sauce One, etc.)
typography/family/bodyStringbrand-defined
typography/family/monoStringJetBrains Mono / IBM Plex Mono
typography/weight/regular .. extraboldString × ~5brand-defined

2.12 · Meta + Flag — STRING / BOOL per brand

Modes meta and flag tokens
TokenTypeExample
meta/brandString"Lyllo" / "Snabarre" / …
meta/web-addressString"lyllo.com"
meta/in-house-jackpotsString"Jackpots" or alt name
flag/grayscaleBooleantrue / false
flag/dark-color-schemeBooleantrue / false
flag/logged-inBooleantrue / false
flag/product-nav/{casino,sport,live}Boolean × ~3brand-defined

Collection 3 · Theme Light + Dark

31 variables × 2 modes. 100% alias. Every Theme token chains through Modes back to brand DNA. Switching Theme = Dark at the frame swaps only the Theme leg.

3.1 · Surface

Theme surface tokens
TokenLightDark
theme/surface/page→ Modes/color/surface/page→ Modes/color/surface/page (Dark stop)
theme/surface/raised→ Modes/color/surface/raised→ Modes/color/surface/raised (Dark)
theme/surface/sunken→ Modes/color/surface/sunken→ Modes/color/surface/sunken (Dark)
theme/surface/sidebar→ Modes/color/surface/sidebar→ Modes/color/surface/sidebar (Dark)
theme/surface/bottomsheet→ Modes/color/surface/bottomsheet→ Modes/color/surface/bottomsheet (Dark)

3.2 · Text

Theme text tokens
TokenLightDark
theme/text/primary→ Modes/color/text/primary→ Modes/color/text/primary (Dark)
theme/text/secondary→ Modes/color/text/secondary→ Modes/color/text/secondary (Dark)
theme/text/disabled→ Modes/color/text/disabled→ Modes/color/text/disabled (Dark)
theme/text/link→ Modes/color/text/link→ Modes/color/text/link (Dark)

3.3 · Border

Theme border tokens
TokenLightDark
theme/border/subtle→ Global/color/black-alpha/10→ Global/color/white-alpha/10
theme/border/default→ Modes/color/border/default→ Modes/color/border/default (Dark)
theme/border/strong→ Global/color/black-alpha/30→ Global/color/white-alpha/30
theme/border/focus→ Modes/color/border/focus→ Modes/color/border/focus (Dark)

3.4 · Icon

Theme icon tokens
TokenLightDark
theme/icon/content→ Modes/color/icon/content→ Modes/color/icon/content-dark
theme/icon/action→ Modes/color/icon/action→ Modes/color/icon/action-dark
theme/icon/descriptive→ Modes/color/icon/descriptive→ Modes/color/icon/descriptive-dark

3.5 · Nav

Theme nav tokens
TokenLightDark
theme/nav/background→ Modes/color/nav/background→ Modes/color/nav/background (Dark)
theme/nav/shadow→ Global/color/black-alpha/10→ Global/color/black-alpha/0

Collection 4 · Semantic single mode · all aliases

53 variables. Role-named tokens for designers and developers. Spacing + icon-size are new in v3.2 — components consume these instead of free FLOATs.

4.1 · Spacing v3.2 — alias of Global/scale

Semantic spacing scale
TokenAliasespx / remUse
spacing/xxs→ Global/scale/44 / 0.25Hairline gap
spacing/xs→ Global/scale/88 / 0.5Inline padding
spacing/sm→ Global/scale/1212 / 0.75List row gap
spacing/md→ Global/scale/1616 / 1Card padding
spacing/lg→ Global/scale/2424 / 1.5Section padding
spacing/xl→ Global/scale/3232 / 2Hero padding
spacing/2xl→ Global/scale/4848 / 3Large hero
spacing/3xl→ Global/scale/6464 / 4Page sections

4.2 · Icon size v3.2 — alias of Global/scale

Semantic icon sizes
TokenAliasespxUse
icon-size/sm→ Global/scale/1616Inline with body
icon-size/md→ Global/scale/2020Default UI icons
icon-size/lg→ Global/scale/2424Touch-friendly · meets WCAG 2.5.8 minimum
icon-size/xl→ Global/scale/3232Feature icons

4.3 · Color · all roles — 36 aliases

Same shape as Modes color groups but consumed at the role level. Components prefer Semantic over Modes when the role does not need component-specific naming.

Semantic color tokens summary
GroupTokensAliases
color/brand/*primary, primary-hover, secondary, tertiary, on-brand→ Modes/color/brand/*
color/surface/*page, raised, sunken, sidebar, bottomsheet→ Theme/surface/*
color/text/*primary, secondary, disabled, link, on-brand→ Theme/text/*
color/icon/*content, action, descriptive, inverse→ Theme/icon/*
color/border/*subtle, default, strong, focus→ Theme/border/*
color/system/*success, warning, error, info (× state)→ Global/color/system/*/500

Collection 5 · Component Packs 38 vars · all aliases

Last-mile alias packs for component masters. Used when a component needs a token name that does not generalise to a Semantic role.

5.1 · cta.*

Component pack cta tokens
TokenAliases
cta/primary/background→ Semantic/color/brand/primary
cta/primary/text→ Semantic/color/text/on-brand
cta/primary/hover→ Modes/color/brand/primary-hover
cta/secondary/background→ Semantic/color/surface/raised
cta/secondary/border→ Modes/color/border/strong
cta/disabled/background→ Modes/color/neutral/200
cta/disabled/text→ Modes/color/neutral/500
cta/radius→ Modes/radius/cta
cta/padding-x→ Semantic/spacing/md
cta/padding-y→ Semantic/spacing/sm

5.2 · menu-row.*

Component pack menu-row tokens
TokenAliases
menu-row/surface→ Modes/color/menu-row/surface
menu-row/label→ Modes/color/menu-row/label
menu-row/icon→ Modes/color/menu-row/icon
menu-row/chevron→ Modes/color/menu-row/chevron
menu-row/divider→ Theme/border/subtle

5.3 · nav.*

Component pack nav tokens
TokenAliases
nav/icon-default→ Modes/color/nav/default-icon
nav/icon-selected→ Modes/color/nav/selected-icon
nav/text-default→ Modes/color/nav/default-text
nav/text-selected→ Modes/color/nav/selected-text
nav/background→ Theme/nav/background
nav/shadow→ Theme/nav/shadow

5.4 · header.*

Component pack header tokens
TokenAliases
header/background→ Modes/color/header/background
header/surface-primary→ Modes/color/header/surface-primary
header/active-selected→ Modes/color/primary/500 (brand colour, not neutral)
header/on-surface-primary→ Modes/color/header/on-surface-primary
header/text→ Modes/color/header/text
header/cta→ Modes/color/header/cta

5.5 · other packs

Other component packs
PackVarsNotes
view-all/*3label, chevron, hover
pill/*4surface, on-surface, border, radius
badge/*3surface, on-surface, radius
banner/*3surface, on-surface, cta
notification/*4background, text, icon, dismiss · status × bg/text computed at use site

Collection 6 · Regulatory 7 modes

4 variables × 7 jurisdictional modes (default, SE, DK, MT, ON, NL, PL). Compliance owns this collection.

6.1 · All tokens

Regulatory tokens
TokenTypeNotes
reg/rg/program-nameString"Spelpaus" (SE), "ROFUS" (DK), "Cruks" (NL), "ConnexOntario" (ON), …
reg/rg/program-urlStringSelf-exclusion program URL
reg/age-gateNumberMinimum age (18 / 19 / 21)
reg/bonus-disclaimerStringJurisdiction-specific disclaimer

Appendix · v3.1 → v3.2 migration map

Renames preserve binding IDs in Figma. Components pick up new names without per-instance edits.
v3.1 to v3.2 migration map
v3.1 token / familyv3.2 locationChange
color/brand/primary-NModes/color/primary/NRenamed · group flat
color/brand/secondary-NModes/color/secondary/NRenamed
color/brand/tertiary-NModes/color/tertiary/NPromoted from optional
color/neutral-NModes/color/neutral/NBrand-tinted, moved to Modes
color/status/*Global/color/system/*Renamed · Global, brand-invariant
color/always/{black,white}Global/color/{black,white}Flat in Global
color/always/transparentGlobal/color/black-alpha/0Subsumed
color/special/*case-by-casePitch / jackpot / live-pulse map to Modes/color/tertiary or remain as raw if invariant
spacing/NGlobal/scale/N + Semantic/spacing/{xxs..3xl}Two-layer · scale + named
radius/{base-3,input,box,card,pill,navigation,large}Modes/radius/* → Global/scale/*All aliased to scale
icon/sizesSemantic/icon-size/{sm,md,lg,xl}Promoted to Semantic
elevation tokensGlobal/elevation/0..4 (Effect Style)Effect Styles · 5 levels
launcher/* · platform/*Stays deferred · backlog

Appendix · Audit rules

Run these checks any time. They make a v3.2 violation cheap to find and cheap to fix.

Hex invariant audit

getLocalVariablesAsync() filtered to COLOR; for each var, if collection is Modes and name does not match color/(primary|secondary|neutral|tertiary)/*, the value must be a VARIABLE_ALIAS in every mode. If collection is Theme / Semantic / Component Packs / Regulatory, same rule (no exceptions). The only places raw hex is allowed are Global/color/{black, white, black-alpha/*, white-alpha/*, system/*} and the four DNA ramps in Modes.

Strict 4-point scale audit

For every Global/scale/N, assert N is in the canonical 20-stop set. For every other dimension consumer (Modes/radius/*, Semantic/spacing/*, Semantic/icon-size/*, Global/typography/{size, line-height}/*, Global/stroke/*), assert it aliases a scale/N. Letter-spacing is the explicit exception.

Header rule audit

For each brand mode, resolve Modes/color/header/active-selected and Modes/color/header/surface-primary. If both resolve to the same neutral/N stop, fail — re-point active-selected to primary/500.

↑ Top