Barion design system

A living reference for Barion's brand foundations and UI components. Source of truth: the Figma Brand Guidelines & Design System. Where a component can't be reproduced 1:1 here (real system icons, illustrations), follow the Figma link in that section.

1 · Color Figma ↗

All swatches reference tokens. Every primitive and semantic alias from brand-tokens.css is listed below with its intended usage.

Primary brand
TokenHexUsage
--barion-blue / --blue-500#0097DBPrimary brand, buttons, links, active states
--blue-gray / --grey-900#2C3446Primary text, sidebar surfaces — never pure black
--white-gray#F9F9F9Canvas background — never pure white for large fills
Blues scale
TokenHexUsage
--blue-50#EEFAFFSidebar active background, menu-item selected
--blue-100#C8EDFFSecondary button hover tint, light surfaces
--blue-200 / --focus-blue#99D5F1Input focus border (Archita audit), light divider
--blue-300#33ACE2Secondary icon brand
--blue-500#0097DBSame as Barion Blue — primary brand
--blue-700-deep#0074C7Primary button gradient start (158°)
--blue-700#0772CFLink color, button hover, active tab underline
--blue-800#007FDBBrand gradient start (180°)
--blue-900#045691Deep brand accent
Grays (blue-gray family)
TokenHexUsage
--grey-200 / --border-secondary / --surface-disabled#ECEDF1Default border, disabled surfaces
--grey-300 / --border-primary#DCDFE5Stronger border
--grey-400 / --border-strong#C4CAD7Heavy border (rare)
--grey-500 / --text-disabled#BABFCCDisabled text
--grey-600 / --text-inactive#979FB2Placeholder text, inactive labels
--grey-700 / --text-tertiary#525F7FTertiary body text
--grey-800 / --text-secondary#46516DSecondary body text
--grey-900 / --text-primary#2C3446Primary body text
Marketing edge-case extras (not for product UI)
TokenHexUsage
--marketing-blue#087FE7Half-step between --blue-700 and --blue-500 — marketing layouts only
--marketing-ink#252D3CDeeper than --blue-gray — marketing backgrounds only
Accent · Status sentiment
TokenHexUsage
--accent-200 / Accent-300#F89C63Status accent — Figma Accent/300
--icon-success#207811Success icon fill (snackbar) — Figma value
--text-error / --border-error#C32D48Error states, validation — Figma value
--icon-error#D1314FError icon fill — Figma value
Alert surfaces (pastel — for snackbars/notifications)
TokenHexUsage
--surface-alert-success#EDFFEASuccess snackbar background
--surface-alert-error#FFE8EDError snackbar background, delete button
--surface-alert-warning#FFF1E4Warning snackbar background
--surface-alert-message#FFFFFFNeutral message snackbar background
Status chip surfaces (saturated — for entity state on tables/cards)
TokenHexUsage
--surface-status-success#D8FFD1Active/completed chip fill
--surface-status-error#FFE0E6Rejected/failed chip fill
--surface-status-warning#FFE8D3Inactivated/pending chip fill
--surface-status-neutral#ECEDF1Draft chip fill
Two distinct sentiment families. Alert surfaces are pastel and reserved for transient snackbars. Status surfaces are saturated and reserved for persistent state on entities (chips in tables, cards, lists). Never cross them.
Pending token rename. The CSS variable names --grey-* retain British spelling for back-compat with the barion-design skill and downstream consumers. User-facing copy uses "gray". A coordinated rename to --gray-* is a follow-up across all consumers.

2 · Typography Figma ↗

WeblySleek UI → system fallback. Body is Semilight (300). Buttons and headings are Semibold (600). H1 is Semibold at 32px per Figma brand-guideline spec. Caption and Body SM both 14px Semilight per Archita audit.

Typeface specimen — WeblySleek UI Semibold and Semilight
Semibold · 600 Aa
Semilight · 300 Aa
Type scale
H1 (page)Activity32 / 600 Semibold
H2Section heading24 / 600 Semibold
H3Sub-heading20 / 600 Semibold
H4 / Card titleCard title18 / 600 Semibold
Body (default)Default UI body — buttons, inputs, table cells.16 / Semilight
Body SMHelper text, secondary buttons, sidebar nav.14 / Semilight
CaptionField hints, supporting text.14 / Semilight
Body XS (optional)Metadata rows, timestamps, micro-copy.12 / Semilight
Title scale — large headings, aligned to Figma title styles
Title 1Big idea64 / 600 Semibold
Title 2Headline48 / 600 Semibold
The named title steps align to Figma (--fs-title-lg 64 / --fs-title-md 48). The --fs-display-* tokens (100 / 60 / 42) are a marketing-only extension — not part of the Figma product scale and never used in product UI.
Type don'ts
PAYMENTS AND MUCH MORE
✗ Don't use all caps in headlines
Payments and much more
✗ Don't mix italics for emphasis
Right-aligned body text breaks the reading rhythm in left-to-right languages.
✗ Don't right-align body text (LTR only)
Use weight (Semibold / Bold) to emphasise, not italics. Keep line length 70–80 characters. Right-align only for right-to-left languages.

4 · Shape Figma ↗

Each radius maps to specific components per Archita audit. Pill (999) is a contingency reserved for the onboarding-entry surface.

4px
XXS — 4pxChips
6px
XS — 6pxSmall button, selectors, alerts, inputs
8px
S — 8pxMedium / large button, accordions
10px
M — 10pxContainers
14px
Mobile L — 14pxLarge mobile — bottom sheets, cards
16px
L — 16pxModals
The system is flat. No shadows on buttons, cards, or inputs. Shadows reserved for overlays — modals (--shadow-modal), dropdowns/popovers (--shadow-overlay), tooltips (--shadow-tooltip), keyboard focus (--shadow-focus).

5 · Spacing Figma ↗

Modular scale — tighter control at smaller values, broader spatial jumps at larger ones. Not a strict 4pt grid.

s-1 · 4
s-2 · 8
s-2-5 · 10
s-3 · 12
s-4 · 16
s-5 · 20
s-6 · 24
s-8 · 32
s-10 · 40
s-12 · 48
s-16 · 64
s-20 · 80
s-24 · 96

6 · Motion Figma ↗

Hover the tiles. Buttons use 300ms ease-in-out per Figma spec. No bounce.

120ms · fast (links, micro)
200ms · base (general UI)
300ms · button (--dur-button)
320ms · slow (max allowed)

7 · Gradients Figma ↗

Brand vertical = hero/marketing only. Button gradient = primary CTA.

Brand vertical (hero)
--gradient-brand · 180°
Primary button
--gradient-brand-button · 158° · #0074C7 → #0097DB
Always vertical. Per Figma brand guidelines, gradients never run horizontally and Barion Blue must stay the dominant stop. --gradient-brand-horiz is deprecated — kept only for back-compat, never use it in new UI.

8 · Icons Figma ↗

This page is a reference, not the icon set. The Barion Figma System-icon library is the single source of truth — go there for the actual glyphs. The example below illustrates how icons behave technically, not which icons exist.

Not the icon catalogue. The full library (~130 system icons plus flags and payment-brand marks) lives in Figma node 1-865. To avoid confusion this page intentionally does not reproduce the set — the single glyph shown is an illustrative stand-in (Lucide, the sanctioned substitution) for behaviour only. Always pull the real exports from Figma.
One illustrative example — size scale (16 · 20 · 24 · 28 px)
Inline SVG on a 24×24 grid, single stroke weight — crisp at every size
Same example — recolours with currentColor — default · brand · success · error
Colour set to currentColor, inherited from context. That's why active sidebar & tab icons turn blue.

9 · Buttons Figma ↗

8px radius for in-app product UI. Never use a drop shadow on a button (the pressed state uses a subtle inset shadow only).

Primary CTAs — Large · Medium · Small
Press any button (click and hold) to see the :active state — it darkens with a subtle inset shadow, no movement or bounce.
Secondary — White · Large · Medium · Small
Secondary — Light Blue (gentle CTAs)
Secondary — Red / Delete (destructive)
Tertiary (flat — for modal actions, inline CTAs)
Loading states (async / submit — spinner replaces label)
Apply .btn--loading while an async action runs. Pointer events are disabled automatically. Spinner color inherits from the button variant.
Icon buttons — Large 36 · Medium 24 · Small 20 · Extra-small 16 (square, icon-only)
Icon button states (Medium) — default · pressed · disabled (hover is interactive)
Icon buttons are a distinct component from the text-button family. Always include aria-label describing the action since the visible icon alone isn't accessible.

11 · Inputs Figma ↗

6px radius, 10×12 padding, 16px Semilight body. Border #ECEDF1. Focus = border #99D5F1 + 4px --shadow-focus halo (Archita audit). Helper text is 16px to match field content.

We'll send receipts here.
Must be a number.
Field cannot be edited.
Checkbox — default · checked · indeterminate · disabled
Radio — default · checked · disabled
Switch / toggle — off · on · disabled

13 · Date pickers Figma ↗

Input field with calendar icon trigger and popover calendar grid. Built from brand tokens.

Single date — closed · open
May 2026
Mo
Tu
We
Th
Fr
Sa
Su

14 · Chips Figma ↗

Chips use saturated --surface-status-* for persistent state on entities — tables, cards, lists. Alerts use the pastel --surface-alert-* family — see section 15.

Status chips
Active Rejected Inactivated Draft Tag
Removable chips — filter tags with a clear action
Hungary Card payment Completed
Leading icon · count badge
Filtered Tag Notifications3

15 · Alerts & snackbars Figma ↗

Two transient-feedback components. Alerts / notifications use the pastel --surface-alert-* family (one- or two-line, light + dark themes in Figma). The snackbar is a plain white toast — text + optional action, no sentiment colour. Both are distinct from chips, which are persistent.

Alert / notification variants — success · error · warning · message
Payout requested

Funds will arrive in 1–2 business days.

Card declined

Try another payment method.

Add business document

Unlocks higher transaction limits.

Draft saved

Pick up where you left off any time.

In-context positioning
Settings saved

Your changes are live.

One-line — title only (compact)
Payout requested
Draft saved
Inline banner — embedded in page flow, with action (not a toast)
Verify your business to lift limits

Upload a company document to unlock higher daily payouts.

Payment failed

Your last top-up was declined by the bank.

Snackbar — plain toast (no sentiment colour, optional action)
Payout requested.View
Link copied to clipboard.
Settings saved.
Alert ≠ snackbar. The coloured cards above are alerts / notifications — pastel surface + sentiment icon, one- or two-line, light + dark themes in Figma (node 8496:11886). The snackbar (node 10223:6803) is a plain white toast: text plus an optional action link, no sentiment colour. Don't conflate them.

17 · Tables Figma ↗

Header: 14px Semibold, NOT uppercase caption. Row height: ~48px (compact) up to 69px (activity). Subtle zebra: even rows white, odd transparent.

ActionTo / fromDateAmountStatus
Bank card topupVISA •••• 5559May 21 14:32+€100.00Completed
Card topup feeBarionMay 21 14:32−€1.23Fee
Send moneyAcme WebshopMay 21 12:15−€12.50Pending
Card paymentCoffee BeanMay 20 09:00−€3.90Failed

18 · Avatars & transaction lists Figma ↗

Avatars are circular profile containers. Three sizes (32 · 40 · 48). The default is the profile (user) avatar; a small corner badge can carry a status indicator. Transaction list pairs an avatar with name, secondary line, and right-aligned amount.

Profile avatars — 32 · 40 · 48
With status indicators — examples (see Figma for the full set)
The profile avatar is the default. Status is carried by a small corner indicator badge (online · verified · action-needed shown here) — the full indicator set lives in Figma ↗.
Transaction list
Acme Webshop Card payment · May 21 14:32
−€12.50
Coffee Bean Card payment · May 20 09:00
−€3.90
VISA •••• 5559 Bank card topup · May 19 18:11
+€100.00
Unknown merchant Pending verification · May 18 22:04
−€49.90

19 · Overlays — shadow is allowed here Figma ↗

Modals, dropdowns, tooltips. Only these get elevation tokens. Modal cancel uses tertiary button (flat) per Archita audit.

Modal — primary + tertiary actions
Pagination
Modal on scrim — header, close affordance, primary + tertiary
Destructive confirm
Session expiry — countdown timer
Tooltip variants — dark top · light top · dark bottom · dark right
Download CSV export
View on a desktop
Coming soon
Account holder name

20 · Sentiment indicators Figma ↗

Confirmation badges for transaction outcomes. Coloured circle + white glyph + soft halo. Animated in production with haptic feedback paired.

Variants — success · error · pending
Sizes — Small 24 · Medium 48 · Large 80
Use after a transaction or async confirmation completes. The halo width scales with badge size (4 / 8 / 14 px).
Animated — pending → resolves to success / error (loops; paired with haptics in-app)
In product the pending spinner runs while the request is in flight, then swaps to a success or error badge that pops in with its halo. The full multi-stage illustrations live in Figma ↗ — these are CSS approximations. Respects prefers-reduced-motion.

21 · Selectors (list) Figma ↗

Continuous vertical list of options — each row a circle indicator + title + subtitle. Stays open so every option is visible at once (account picker, payment-method picker, KYC document type). Distinct from Dropdowns (§12). One row per state below, labelled on the right: default · pressed · selected · disabled. Selected = light-blue surface + blue ring + blue label. Sizes: Profiles 36 · Default 24 · Mobile 20 · Web 16 px (see Figma).

Static state matrix — default · pressed · selected · disabled (labelled, non-interactive)
Anna Kovácsanna.kovacs@gmail.com
Default
Bence Tóthbence.toth@gmail.com
Pressed
Csilla Nagycsilla.nagy@gmail.com
Selected
Dávid Szabódavid.szabo@gmail.com
Disabled
Selected = light-blue surface, blue ring on the circle, and a blue title. Pressed = neutral grey with a subtle inset depression.
Live / interactive — click to select, hover for hover state
Anna Kovácsanna.kovacs@gmail.com
Bence Tóthbence.toth@gmail.com
Csilla Nagycsilla.nagy@gmail.com
Dávid Szabódavid.szabo@gmail.com

22 · Progress indicators Figma ↗

Determinate progress bars for known-length tasks; indeterminate spinners for indefinite loading. Blue fill / arc on a light blue track. No bounce — spinners rotate linearly.

Progress bar — determinate (25% · 60% · 100%)
Progress bar — thin (4px)
Spinner — indeterminate loading (Small 24 · Medium 40 · Large 56)
Use a determinate bar whenever the total is known (uploads, multi-step onboarding); fall back to a spinner only for truly indefinite waits. Pair with a short status label so the wait has context.

23 · Hard rules Figma ↗

Cross-cutting principles. Per-component specs (radii, focus colors, typography sizes) live in their own sections above.

Sentence case — headings, buttons, nav, labels
ALL CAPS labels (except acronyms: API, MFA, SCA, KYC)
Flat: NO shadows on buttons, cards, inputs
Shadow on any non-overlay (modals/dropdowns/tooltips are the exceptions)
Blue-tinted shadows — rgba(44, 52, 70, …)
Black shadows — rgba(0, 0, 0, …)
Disabled = token colors (--text-disabled, --surface-disabled)
Disabled via opacity: 0.5
US English in copy — color, gray, behavior
British spellings in copy — colour, grey, behaviour
Orange is marketing-only — never dominant in product UI
Glassmorphism, blur, frosted backgrounds, emoji in product UI
Gradients run vertical — Barion Blue stays the dominant stop, transitions stay soft
Horizontal gradients, harsh stops, or blue losing dominance (--gradient-brand-horiz is deprecated)
Logo keeps clear space = cap-height of the “b”; min 36px digital / 6 mm print
Stretching, rotating, recolouring off-palette, or adding effects to the logo
Text/background pairs meet WCAG AA contrast (4.5:1 body, 3:1 large text)
Low-contrast pairings that fail AA — including placeholder and disabled copy