W3C Design Tokens
3 filesCross-tool design-token spec (DTCG/W3C). Light + dark mode siblings.
The European Digital Identity (EUDI) Wallet is a flagship European Commission programme that gives EU citizens, residents, and businesses a single digital wallet for authenticating identity, storing credentials (diplomas, driving licences, prescriptions, tickets), and creating qualified electronic signatures across borders. The visual identity inherits the institutional Europa Component Library (ECL) — Branding blue (#004494) as the European Commission identity colour, a deep Primary blue scale for interaction, a warm Secondary gold scale for accents (the chromatic echo of the EU emblem stars), and the ECL status set for feedback. Typography on EC digital surfaces is Arial; this atom substitutes Public Sans (heading) and Manrope (body) as the open-source rendering proxies and documents the substitution.
Use the [email protected] brand from brand-atoms.com.
Fetch https://brand-atoms.com/dist/brands/eudi/1.0.0/json/brand.json
and apply its role mappings (primary, accent, identity, etc.),
reference the fonts in references.fonts, and honor every rule where
severity is "error". Surface any deviation you choose to make.
All converter outputs for [email protected]. Served from
/dist/brands/eudi/1.0.0/.
Cross-tool design-token spec (DTCG/W3C). Light + dark mode siblings.
Plain JSON mirror of the resolved brand — palette, fonts, roles, rules.
CSS custom properties on :root with prefers-color-scheme dark.
SCSS variables + Sass maps for swatches, roles, and fonts.
Tailwind v3 theme.extend.colors + fontFamily.
Figma Tokens plugin JSON (Tokens Studio compatible).
Swift enums for SwiftUI / UIKit color + font tokens.
Kotlin objects for Jetpack Compose color + typography tokens.
Human-readable brand guide. Same source as the on-page Brand Guide.
Inline rendering of the Markdown brand guide. Same source as the
markdown/brand-guide.md download.
The European Digital Identity (EUDI) Wallet is a flagship European Commission programme that gives EU citizens, residents, and businesses a single digital wallet for authenticating identity, storing credentials (diplomas, driving licences, prescriptions, tickets), and creating qualified electronic signatures across borders. The visual identity inherits the institutional Europa Component Library (ECL) — Branding blue (#004494) as the European Commission identity colour, a deep Primary blue scale for interaction, a warm Secondary gold scale for accents (the chromatic echo of the EU emblem stars), and the ECL status set for feedback. Typography on EC digital surfaces is Arial; this atom substitutes Public Sans (heading) and Manrope (body) as the open-source rendering proxies and documents the substitution.
Tags: eudi, european-commission, ecl, europa, government, civic, digital-identity, light-first
European Digital Identity · [email protected] · Proprietary — © European Union
The European Digital Identity (EUDI) Wallet is a European Commission programme rendered through the institutional Europa Component Library (ECL) visual identity. The palette is anchored by the European Commission's Branding blue (#004494) and an EC Primary blue scale that runs from #051036 (Primary-180) up through #D8E0FB (Primary-20), paired with a warm Secondary gold scale (Secondary-180 #8F5600 through Secondary-20 #FFF2DE) used for ceremonial and editorial accents. Status colours follow the ECL feedback set (Info #3860ED, Success #24A148, Warning #F39811, Error #DA1E28). Neutrals are the ECL "Dark" trio plus a blue-tinted Neutral scale.
| Role | Font | License | Classification |
|---|---|---|---|
heading |
Public Sans ([email protected]) |
OFL-1.1 | sans-serif |
body |
Manrope ([email protected]) |
OFL-1.1 | sans-serif |
mono |
Roboto Mono ([email protected]) |
Apache-2.0 | monospace |
| ID | Name | Value |
|---|---|---|
branding |
Branding | #004494 |
primary-180 |
Primary 180 | #051036 |
primary-160 |
Primary 160 | #0A1F6C |
primary-140 |
Primary 140 | #0F2FA2 |
primary-120 |
Primary 120 | #143FD9 |
primary-100 |
Primary 100 | #3860ED |
primary-80 |
Primary 80 | #5577F0 |
primary-60 |
Primary 60 | #89A1F4 |
primary-40 |
Primary 40 | #B1C0F8 |
primary-20 |
Primary 20 | #D8E0FB |
secondary-180 |
Secondary 180 | #8F5600 |
secondary-160 |
Secondary 160 | #E08700 |
secondary-140 |
Secondary 140 | #FF9D0A |
secondary-120 |
Secondary 120 | #FFAD33 |
secondary-100 |
Secondary 100 | #FFBE5C |
secondary-80 |
Secondary 80 | #FFCB7C |
secondary-60 |
Secondary 60 | #FFD89D |
secondary-40 |
Secondary 40 | #FFE5BE |
secondary-20 |
Secondary 20 | #FFF2DE |
dark-100 |
Dark 100 | #26324B |
dark-80 |
Dark 80 | #546FA6 |
dark-60 |
Dark 60 | #99AACC |
neutral-180 |
Neutral 180 | #6C85D1 |
neutral-160 |
Neutral 160 | #7F95D7 |
neutral-140 |
Neutral 140 | #92A5DD |
neutral-120 |
Neutral 120 | #A6B5E3 |
neutral-100 |
Neutral 100 | #B9C5E9 |
neutral-80 |
Neutral 80 | #CDD5EF |
neutral-60 |
Neutral 60 | #E0E5F5 |
neutral-40 |
Neutral 40 | #F3F5FB |
neutral-20 |
Neutral 20 | #F8F9FD |
info |
Info | #3860ED |
success |
Success | #24A148 |
warning |
Warning | #F39811 |
error |
Error | #DA1E28 |
background |
Background | #FCFCFC |
white |
White | #FFFFFF |
| Role | Swatch | Hex |
|---|---|---|
background |
background |
#FCFCFC |
surface |
neutral-40 |
#F3F5FB |
surface-elevated |
white |
#FFFFFF |
text-primary |
dark-100 |
#26324B |
text-secondary |
dark-80 |
#546FA6 |
text-tertiary |
dark-60 |
#99AACC |
primary |
branding |
#004494 |
primary-hover |
primary-140 |
#0F2FA2 |
accent |
secondary-100 |
#FFBE5C |
accent-hover |
secondary-140 |
#FF9D0A |
warning |
warning |
#F39811 |
warning-hover |
secondary-180 |
#8F5600 |
error |
error |
#DA1E28 |
success |
success |
#24A148 |
border |
neutral-100 |
#B9C5E9 |
| Role | Swatch | Hex |
|---|---|---|
background |
primary-180 |
#051036 |
surface |
primary-160 |
#0A1F6C |
surface-elevated |
primary-140 |
#0F2FA2 |
text-primary |
neutral-60 |
#E0E5F5 |
text-secondary |
neutral-100 |
#B9C5E9 |
text-tertiary |
neutral-140 |
#92A5DD |
primary |
primary-60 |
#89A1F4 |
primary-hover |
primary-40 |
#B1C0F8 |
accent |
secondary-100 |
#FFBE5C |
accent-hover |
secondary-80 |
#FFCB7C |
warning |
warning |
#F39811 |
warning-hover |
secondary-120 |
#FFAD33 |
error |
error |
#DA1E28 |
success |
success |
#24A148 |
border |
primary-140 |
#0F2FA2 |
| Role | Swatch | Hex |
|---|---|---|
identity |
white |
#FFFFFF |
on-identity |
dark-100 |
#26324B |
primary |
branding |
#004494 |
primary-hover |
primary-140 |
#0F2FA2 |
accent |
secondary-100 |
#FFBE5C |
accent-hover |
secondary-140 |
#FF9D0A |
mark |
branding |
#004494 |
success |
success |
#24A148 |
warning |
warning |
#F39811 |
error |
error |
#DA1E28 |
text-primary-light |
dark-100 |
#26324B |
text-primary-dark |
neutral-60 |
#E0E5F5 |
background-light |
background |
#FCFCFC |
background-dark |
primary-180 |
#051036 |
surface-light |
neutral-40 |
#F3F5FB |
surface-dark |
primary-160 |
#0A1F6C |
text-secondary-light |
dark-80 |
#546FA6 |
text-tertiary-light |
dark-60 |
#99AACC |
border-light |
neutral-100 |
#B9C5E9 |
| Role | Font role key |
|---|---|
display |
heading |
prose |
body |
code |
mono |
colorChoice → roles.colors.primaryThe European Commission's institutional identity blue is Branding (#004494), with ECL Primary 100 (#3860ED) carrying the default interactive role inside the component library. The warm Secondary scale, the success/warning/error status hues, and the Neutral scale all have their own roles — substituting any of them for the primary action colour breaks the institutional identity that EU citizens recognise as "European Commission."
colorChoice → roles.colors.markThe EC identity mark renders in Branding blue (#004494) specifically — not the ECL Primary 100 used for interactive controls and not Dark 100 used for ink. The mark colour and the interaction colour are intentionally distinct so that brand presence is visually separable from clickable affordance.
contrastRatio → text-primarybackground4.5WCAG-AAECL components are documented to target WCAG 2.1 Level AA across European Commission digital surfaces, in line with Directive (EU) 2016/2102 on the accessibility of public- sector websites and mobile applications. Dark 100 (#26324B) on the near-white background (#FCFCFC) clears AA at ~12:1.
accessibilityRequirement → *WCAG-AA1.4.3WCAG 2.1 Success Criterion 1.4.3 (Contrast Minimum) — Level AA. The EUDI Wallet, as a Commission service programme rolling out to every Member State by end-2026, is in scope of the EU Public Sector Accessibility Directive; AA conformance is the regulatory floor for every consuming Member State implementation.
forbiddenTreatment → logoThe European emblem (twelve gold stars on Reflex Blue) is governed by EU interinstitutional rules and the European Commission emblem-use guidelines. The emblem MUST render in its supplied proportions, in its supplied colours, on a clear field. Recolouring, distortion, rotation, or placement on a busy photographic background is prohibited.
fontPairing → typography.displayprose1.5ECL's documented type scale steps from a 16px body anchor through 20px lede, 24px small heading, and up to 52px Heading 1 desktop. Every step preserves at least a 1.5× ratio against the body anchor; collapsing display to body size destroys the scannability ECL components rely on for multilingual readability across 24 official EU languages.
contextRestriction → roles.colors.errorECL Error (#DA1E28) is the documented destructive / validation-failure colour. Reusing it for confirmation inverts the semantic contract built into ECL's Banner, Notification, and Form-validation components — components that EUDI Wallet implementations across 27+ Member States compose with directly.
enumMembership → typography.heading.fontWeightECL's published typography reference specifies Arial at weight 400 (Regular) for all heading levels except Heading 6, which uses 700 (Bold). Constraining the substitute (Public Sans) to Regular and Bold preserves the typographic flatness of the EC institutional surface — extra display weights would introduce hierarchy ECL doesn't itself use.
compositionConstraint → roles.colors.markBranding blue reads as institutional EC identity against the white canvas, the near-white background, or the deep Primary 180 navy. Placing it adjacent to the Secondary gold, Warning orange, or Error red at equal weight produces chromatic competition that fights the measured civic voice EUDI inherits from the Commission's institutional identity.
Proprietary — © European Union2026-05-19identity and mark roles and ECL Primary 100 to the default interactive primary, with the warm Secondary scale carrying the accent role.Generated by the brand-atoms converter. Source: [email protected] from the encyclopedia.
Every block below renders from the resolved palette + font references on this brand. Swap the brand and the same template re-themes — no per-brand component code required.
Body copy renders in the brand's prose font on the brand's background.
Inline links and highlighted phrases pick up
the brand's primary and highlight roles. Code spans like brand.references.palette
fall back to the monospace face.
A blockquote uses the brand's accent color as its rule. Useful for pulling tagline copy out of running prose.
Neutral status — provides supplemental context without urgency. Uses the brand's primary as the rule.
Confirms a completed action — palette role success determines the rule color.
Calls out something that needs attention but isn't an error — palette role warning.
Surfaces a failure that blocks progress — palette role error. Use sparingly.
| Role | Resolves to | Mode |
|---|---|---|
| primary | brand color #1 | light + dark |
| accent | brand color #2 | light + dark |
| warning | brand warning | light + dark |
| error | brand error | light + dark |
[email protected][email protected][email protected][email protected]Brand-level role overrides on top of palette-default mappings. Each role resolves to a concrete swatch or font reference.
→ secondary-100 #FFBE5C → secondary-140 #FF9D0A → primary-180 #051036 → background #FCFCFC → neutral-100 #B9C5E9 → error #DA1E28 → white #FFFFFF → branding #004494 → dark-100 #26324B → branding #004494 → primary-140 #0F2FA2 → success #24A148 → primary-160 #0A1F6C → neutral-40 #F3F5FB → neutral-60 #E0E5F5 → dark-100 #26324B → dark-80 #546FA6 → dark-60 #99AACC → warning #F39811 → mono Roboto Mono → heading Public Sans → body Manrope → secondary-100 → secondary-140 → background → neutral-100 → error → branding → primary-140 → success → neutral-40 → white → dark-100 → dark-80 → dark-60 → warning → secondary-180 → secondary-100 → secondary-80 → primary-180 → primary-140 → error → primary-60 → primary-40 → success → primary-160 → primary-140 → neutral-60 → neutral-100 → neutral-140 → warning → secondary-120 colorChoice roles.colors.primary allowed branding, primary-100, primary-140 forbidden secondary-100, error, success, warning The European Commission's institutional identity blue is Branding (#004494), with ECL Primary 100 (#3860ED) carrying the default interactive role inside the component library. The warm Secondary scale, the success/warning/error status hues, and the Neutral scale all have their own roles — substituting any of them for the primary action colour breaks the institutional identity that EU citizens recognise as "European Commission."
colorChoice roles.colors.mark allowed branding forbidden primary-100, primary-140, secondary-100, dark-100 The EC identity mark renders in Branding blue (#004494) specifically — not the ECL Primary 100 used for interactive controls and not Dark 100 used for ink. The mark colour and the interaction colour are intentionally distinct so that brand presence is visually separable from clickable affordance.
contrastRatio text-primary against background minRatio 4.5 standard WCAG-AA ECL components are documented to target WCAG 2.1 Level AA across European Commission digital surfaces, in line with Directive (EU) 2016/2102 on the accessibility of public- sector websites and mobile applications. Dark 100 (#26324B) on the near-white background (#FCFCFC) clears AA at ~12:1.
accessibilityRequirement * standard WCAG-AA criterion 1.4.3 WCAG 2.1 Success Criterion 1.4.3 (Contrast Minimum) — Level AA. The EUDI Wallet, as a Commission service programme rolling out to every Member State by end-2026, is in scope of the EU Public Sector Accessibility Directive; AA conformance is the regulatory floor for every consuming Member State implementation.
forbiddenTreatment logo treatments stretched, rotated, recolored, drop-shadow, gradient-fill, outlined, on-busy-photo, tilted The European emblem (twelve gold stars on Reflex Blue) is governed by EU interinstitutional rules and the European Commission emblem-use guidelines. The emblem MUST render in its supplied proportions, in its supplied colours, on a clear field. Recolouring, distortion, rotation, or placement on a busy photographic background is prohibited.
fontPairing typography.display requires prose minSizeRatio 1.5 ECL's documented type scale steps from a 16px body anchor through 20px lede, 24px small heading, and up to 52px Heading 1 desktop. Every step preserves at least a 1.5× ratio against the body anchor; collapsing display to body size destroys the scannability ECL components rely on for multilingual readability across 24 official EU languages.
contextRestriction roles.colors.error forbiddenContexts confirmation, completion, data-viz-positive allowedContexts error-state, destructive-action, validation-failure ECL Error (#DA1E28) is the documented destructive / validation-failure colour. Reusing it for confirmation inverts the semantic contract built into ECL's Banner, Notification, and Form-validation components — components that EUDI Wallet implementations across 27+ Member States compose with directly.
enumMembership typography.heading.fontWeight allowed 400, 700 ECL's published typography reference specifies Arial at weight 400 (Regular) for all heading levels except Heading 6, which uses 700 (Bold). Constraining the substitute (Public Sans) to Regular and Bold preserves the typographic flatness of the EC institutional surface — extra display weights would introduce hierarchy ECL doesn't itself use.
compositionConstraint roles.colors.mark pairsWith white, background, neutral-40, primary-180 doesNotPairWith secondary-100, error, warning, web-magenta Branding blue reads as institutional EC identity against the white canvas, the near-white background, or the deep Primary 180 navy. Placing it adjacent to the Secondary gold, Warning orange, or Error red at equal weight produces chromatic competition that fights the measured civic voice EUDI inherits from the Commission's institutional identity.
Proprietary — © European Union2026-05-19