The single source of truth for every Nio DBP experience.
A practical design system for the Nio Digital Business Platform — principles, brand, tokens, and components that let designers, developers, and partners ship consistent products fast.
Design principles
Four commitments that guide every decision. When guidance is unclear or two patterns compete, the principles decide.
Simplicity first
Remove before you add. Every element earns its place; the shortest path to the task wins over the cleverest interface.
Accessibility by default
Designed for everyone from the start — AA contrast, full keyboard support, and clear focus are requirements, not options.
Consistent interactions
The same action behaves the same way everywhere. Shared components, states, and motion build trust and muscle memory.
Mobile-friendly
Layouts respond from 360px up. Touch targets stay at least 44px, and content reflows gracefully on every screen.
Logos
The Nio DBP logo pairs the Primary “nio” with the Secondary “DBP” and the Digital Business Platform descriptor. Download the approved artwork and use the version that matches the background.
Variations
Clear space & minimum size
| Rule | Value |
|---|---|
| Clear space (x) | Height of the “n” on every side |
| Min. width · digital | 160 px |
| Min. width · print | 35 mm |
| Favicon / avatar | Use “nio” only, 32 px+ |
Usage
Partner co-brand & “Powered by Nio”
Colors
Three brand colours carry the identity. Primary and Secondary drive calls to action; Deep Navy anchors text and dark surfaces. Neutrals do the rest.
- HEX
- #3A2EAF
- RGB
- 58 · 46 · 175
- CMYK
- 88 · 89 · 0 · 0
- HEX
- #007FC4
- RGB
- 0 · 127 · 196
- CMYK
- 84 · 42 · 0 · 0
- HEX
- #010133
- RGB
- 1 · 1 · 51
- CMYK
- 100 · 89 · 41 · 48
Interaction states
| Colour | Default | Hover | Pressed | Soft fill | Used for |
|---|---|---|---|---|---|
| Primary | #3A2EAF | #2F2491 | #261D78 | #ECEBFA | Main CTA, links, focus, selection |
| Secondary | #007FC4 | #006AA3 | #00507D | #E3F1FA | Second CTA, info, highlights |
| Deep Navy | #010133 | #14145C | #000020 | #ECECF5 | Headings, footers, dark surfaces |
Neutrals
Status
Light & dark mode
Account overview
Balances update in real time. Review pending transfers before the 4 PM cut-off.
Account overview
Balances update in real time. Review pending transfers before the 4 PM cut-off.
In dark mode the brand colours shift one step lighter so buttons and links keep AA contrast against Deep Navy. Secondary CTAs switch to navy labels.
Typography
Inter is the Nio DBP typeface for product, web, and print. JetBrains Mono is reserved for code, data, and labels.
Type scale
line-height 1.1
line-height 1.15
line-height 1.25
line-height 1.3
line-height 1.4
letter-spacing .06em
line-height 1.5
line-height 1.5
line-height 1.4
JetBrains Mono
| Style | Size | Weight | Line height | Letter spacing |
|---|---|---|---|---|
| H1 | 36px | 700 Bold | 1.1 | −0.02em |
| H2 | 28px | 600 SemiBold | 1.15 | −0.01em |
| H3 | 22px | 600 SemiBold | 1.25 | −0.01em |
| H4 | 18px | 600 SemiBold | 1.3 | 0 |
| H5 | 16px | 600 SemiBold | 1.4 | 0 |
| H6 / Overline | 14px | 700 Bold | 1.4 | 0.06em |
| Body | 16px | 400 Regular | 1.5 | 0 |
| Body small | 14px | 400 Regular | 1.5 | 0 |
| Caption | 12px | 500 Medium | 1.4 | 0 |
Icons
One line-icon set for the website and product, drawn on a 24 px grid with a 1.75 px stroke and rounded joins. Icons support labels; they never replace them.
Icon treatments
Line · defaultDeep Navy on light surfaces
Tinted tileFeature lists, cards
Solid PrimaryHero and campaign use
ReversedDark mode, footers
| Context | Size | Stroke | Colour |
|---|---|---|---|
| Inline with text | 16 px | 1.75 px | Inherit text colour |
| Buttons & inputs | 20 px | 1.75 px | Inherit label colour |
| Navigation & standalone | 24 px | 1.75 px | Deep Navy / Slate |
| Feature tiles | 28 px in 64 px tile | 1.75 px | Primary or Secondary on soft fill |
Marketing materials
Presentations, letterhead, and printed collateral follow the same tokens as the product UI. Use these page specs so every document reads as one brand.
| Document | Page size | Margins | Body type | Logo |
|---|---|---|---|---|
| Presentation | 1920×1080px | 96px safe area | 18px min | Bottom-right, 180px |
| Letterhead | A4 / Letter | 20mm | 10pt / 1.5 | Top-left, 42mm |
| Report | A4 portrait | 18mm | 11pt / 1.5 | Cover + footer |
| Business card | 85×55mm | 5mm | 8pt | Reverse, 30mm |
| Email signature | 320px wide | — | 12px | 140px |
- Start from the approved template rather than a blank file.
- Keep one accent colour per document.
- Embed Inter, or fall back to Arial for external files.
- Export print work as CMYK PDF/X-1a.
- Restyle headers or footers per document.
- Stretch the logo to fill a corner.
- Mix decorative fonts into brand documents.
- Screenshot slides in place of vector exports.
Spacing system
A 4px base scale governs all padding, margins, and gaps. Sticking to the scale keeps vertical rhythm and component density consistent.
Inside components
8–16px between related controls; 4px for tight icon/label pairs.
Between sections
24–48px to separate groups; 64px+ for major page sections.
Radius
4 / 8 / 12 / 16px. Inputs & buttons use 12px; cards 16px; pills 999px.
Layout & grid
A responsive 12-column grid structures every page. Columns flex; gutters and page margins stay fixed to the spacing scale.
| Breakpoint | Min width | Columns | Gutter | Margin |
|---|---|---|---|---|
Mobile · sm | 0–639px | 4 | 16px | 16px |
Tablet · md | 640px | 8 | 20px | 24px |
Desktop · lg | 1024px | 12 | 24px | 32px |
Wide · xl | 1440px | 12 | 24px | auto · max container 1200px |
Core components
The building blocks of every Nio DBP screen. Each is shown live with its variants — copy the markup and the scoped classes below.
Buttons
Six variants × three sizes. Primary for the main action, one per view.
Text input & textarea
Dropdown & choices
Badges
Tooltip & navigation
Alerts
Card & table
| Payee | Status | Amount |
|---|---|---|
| Northwind Ltd. | Paid | $12,400.00 |
| Atlas Freight | Pending | $3,275.50 |
| Civic Power Co. | Failed | $842.10 |
Modal
| Component | Variants | Accessibility requirement |
|---|---|---|
| Button | Primary, secondary, tertiary, danger, ghost, sizes sm/md/lg | Real ‹button›; visible focus ring; label or aria-label. |
| Text input | Default, with icon, prefix, error, disabled | Bound ‹label›; aria-invalid + described error. |
| Select | Native, sizes | Native control or full ARIA listbox + keyboard. |
| Checkbox / radio | Default, checked, indeterminate, disabled | Grouped with fieldset/legend. |
| Switch | On, off, disabled | role="switch" + aria-checked. |
| Modal | Dialog, confirm, sheet | Focus trap; Esc closes; aria-modal; return focus. |
| Tooltip | Top / bottom / left / right | Keyboard-reachable; aria-describedby. |
| Alert | Info, success, warning, danger | role="status" or alert for urgency. |
Component states
Every interactive element ships the same set of states so behaviour is predictable across the platform.
Button
Text input
Accessibility
Nio DBP targets WCAG 2.2 AA. Accessibility is a requirement for every component and every release.
Color contrast
Text ≥ 4.5:1, large text & UI ≥ 3:1. Never rely on color alone — pair with text or an icon.
Keyboard
Every action reachable and operable by keyboard, in a logical order, with no traps.
Focus indicators
A visible 4px focus ring on every interactive element. Never remove outlines without a replacement.
Screen readers
Semantic HTML first; ARIA only to fill gaps. Label every control and announce state changes.
Touch targets
Minimum 44×44px hit area on touch, with at least 8px between adjacent targets.
Motion
Respect prefers-reduced-motion; keep essential motion under 5s and non-looping.
| Pair | Ratio | Result |
|---|---|---|
| Deep Navy #010133 on White | 19.9:1 | AAA |
| Primary #3A2EAF on White | 9.6:1 | AAA |
| White on Primary #3A2EAF | 9.6:1 | AAA |
| Secondary #007FC4 on White | 4.3:1 | Large / bold text, UI |
| White on Secondary #007FC4 | 4.3:1 | Bold labels 14 pt+ |
| Secondary 600 #006AA3 on White | 5.8:1 | AA text |
| Dark mode · #A9A2F0 link on Deep Navy | 8.7:1 | AAA |
| Dark mode · Navy on #5FB3E2 | 8.6:1 | AAA |
Design tokens
Design decisions stored as reusable values, shared one-to-one between design and code. CSS custom properties are the runtime source of truth; JSON feeds the build.
CSS custom properties
:root { --color-primary: #3A2EAF; --color-primary-hover: #2F2491; --color-secondary: #007FC4; --color-secondary-hover:#006AA3; --color-navy: #0A1F44; --color-success: #079455; --color-warning: #DC6803; --color-error: #D92D20; --color-info: #007FC4; --color-bg: #F7F8FA; --color-text: #0F1B33; --space-md: 16px; --radius: 8px; --font-family: 'Inter', sans-serif; } [data-theme="dark"] { --color-bg: #0A1F44; --color-surface: #142B57; --color-text: #FFFFFF; --color-primary: #5B50D6; --color-secondary: #5FB3E2; }
tokens.json
{
"color-primary": "#3A2EAF",
"color-secondary": "#007FC4",
"color-navy": "#0A1F44",
"color-success": "#079455",
"color-warning": "#DC6803",
"color-error": "#D92D20",
"color-info": "#007FC4",
"color-bg": "#F7F8FA",
"color-text": "#0F1B33",
"spacing-md": "16px",
"border-radius": "8px",
"font-size-body": "16px"
}
| Token | Value | Purpose |
|---|---|---|
color-primary | #3A2EAF | Main CTA, links, focus, selection. |
color-secondary | #007FC4 | Second CTA, info, highlights. |
color-navy | #010133 | Headings, footers, dark surfaces. |
color-success / warning / error | #079455 · #DC6803 · #D92D20 | Status only, never decoration. |
spacing-md | 16px | Default gap between elements. |
border-radius | 8px | Base corner radius. |
font-size-body | 16px | Default body text size. |
font-family | Inter | Primary typeface. |
For developers
How to consume the system in the Nio DBP React app and elsewhere. Reference tokens by name, lean on semantic HTML, and never fork a component.
Use the tokens & classes
import "@nio/tokens/css"; .card { background: var(--color-bg); color: var(--color-text); padding: var(--space-md); border-radius: var(--radius); }
React component
import { Button, Input } from "@nio/react"; export function Pay() { return ( ‹form› ‹Input label="Amount" prefix="$" /› ‹Button variant="primary"›Send‹/Button› ‹/form› ); }
The prompt
Copy everything in the box below.
# Nio DBP design system: instructions for any interface or document
You are designing or building something that carries the Nio DBP brand (Nio
Digital Business Platform). Apply every rule below unless the task explicitly
overrides one. If a rule can't be met in the target format, use the closest
equivalent and say which rule you adapted. Never invent brand values; if you
need one that isn't here, ask.
## 1. Brand in one line
Nio DBP is a business platform for small and mid-sized organizations in
Trinidad and Tobago and the Caribbean. It should feel calm, precise and
trustworthy: dark, quiet grounds; one violet accent; clear type; nothing
loud.
## 2. Colour
Use only these values. Never sample colours from reference images or other
brands.
Core
- Nio Violet #3A2EAF: primary accent. Buttons, links on light grounds, active
states, icons on light grounds.
- DBP Blue #007FC4: secondary accent. Data, secondary highlights, the "DBP"
in the logo. Never compete with violet in the same component.
- Deep Navy #010133: headings and dark text on light grounds; dark brand
surfaces.
- Black #04060E: the darkest ground (hero, footer-level bands).
Supporting
- Violet light #5B50D6 (glows and hover tints only), Sky #5FB3E2 (eyebrow
labels and focus rings on dark), Lavender #A9A2F0 (icon glow on dark).
- Light ground #F7F8FA, White #FFFFFF.
- Text on dark: #FFFFFF headings, #B4BDD0 body. Text on light: #010133
headings, #5B6478 body.
- Lines: rgba(255,255,255,.09) on dark; rgba(1,1,51,.10) on light.
- Status (product UI only): use your framework's success, warning and danger
colours, tuned to pass contrast. Never use violet or blue for an error.
Balance
- Marketing surfaces (website, landing pages, decks): about 70% dark grounds,
20% mid-dark bands, 10% light.
- Product UI and working documents (dashboards, forms, reports, letters):
light-led. White or #F7F8FA grounds, navy text, violet for actions. A dark
theme, if offered, follows the dark-ground rules.
- Violet is a tint, never a flood. No full-violet or full-blue page
backgrounds.
## 3. Gradients (dark grounds)
Four families. Each must read as blackish or deep navy overall, never as
purple or bright blue.
- G1 Night: #04060E with a soft violet glow, rgba(91,80,214,.16), from the
top centre. Heroes and calls to action.
- G2 Deep: #04060E to #00001F, with faint violet glows in opposite corners.
Problem, risk and control content.
- G3 Ocean: medium-dark DBP blue (#0A4C8C to #13226A) with a violet tint in
one corner. Lighter than G2, used sparingly for proof and benefits.
- G4 Light: flat #F7F8FA. Feature lists, forms, logos, dense reading.
Don't put two bands of the same family next to each other. In documents and
slides, use the flat base colour where gradients aren't supported.
## 4. Typography
- Typeface: Inter for everything. Fallback: system-ui, -apple-system, Segoe
UI, Roboto, Arial, sans-serif. In Office documents where Inter isn't
installed, use Arial.
- Weights: 500 for display, 600 to 700 for headings, 400 body, 500 buttons
and labels.
- Minimum size 16px for any readable text on screen (11pt in print). Never go
smaller for captions, labels or legal lines.
- Headings: tight tracking (-0.02em), sentence case, usually ending with a
full stop on marketing pages ("Three ways to partner.").
- Eyebrows: 16px, 700, uppercase, +0.06em tracking. Sky on dark, violet on
light.
- Body: line-height 1.5 to 1.65, line length 60 to 75 characters.
## 5. Layout and shape
- 8px spacing grid. Section padding 96 to 128px on desktop, 64px on mobile.
- Radius: 10px buttons and inputs, 20 to 22px cards and panels, fully round
pills and badges.
- Content width 1140 to 1320px; text blocks under 44rem.
- Mobile first: every layout works at 390px wide with no horizontal scroll.
- Prefer left/right splits and centred feature visuals over grids of
identical cards. Use cards only when items are truly parallel.
## 6. Components
- Primary button on dark: violet glow. Translucent violet fill,
rgba(201,196,250,.42) border, soft inner glow. On light: solid #3A2EAF with
white text.
- Secondary button: transparent with a faint white border on dark; navy
outline on light.
- Text link: violet on light, white with an arrow on dark.
- Badge: pill with a small glowing sky dot, lavender text, faint violet fill.
- Feature cards (Reflect style): no box at rest, thin divider lines between
items. On hover, a soft violet glow rises behind the item and the icon glows
brighter.
- Forms: a white card on any ground, navy labels, 10px inputs, required
fields marked with *, a violet submit button.
- Tables: navy header text, hairline rows, no zebra stripes on dark, numbers
right-aligned.
- Focus: a visible 4px sky ring (rgba(95,179,226,.55)) on every interactive
element.
## 7. Icons
- Line icons only, 1.5px stroke, rounded caps and joins, on a 24 or 40px
grid. Lucide is the base set.
- On dark: white with a soft lavender glow. On light: Nio Violet, no glow.
- Pick an icon that means the specific idea. Never a generic one used for
decoration.
- No filled, duotone, emoji or 3D icons.
## 8. Logo
- Use only the supplied logo files: the indigo "nio" wordmark with a blue
"DBP". Never redraw, recolour, stretch, outline, shadow or animate it.
- Use the reversed (white) version on dark grounds.
- Keep clear space around it of at least the height of the "n".
## 9. Imagery
- Real people and real Caribbean businesses: shops, warehouses, credit
unions, field technicians, offices. Natural light, warm skin tones, no staged
handshakes.
- Product visuals: clean, cropped UI on a dark ground with a soft violet glow
behind it.
- Every image must be replaceable by the content team without a developer.
- Always give images alt text that says what they show.
## 10. Motion
- Subtle and purposeful. Slow orbits, a sweep, a gentle glow, content that
types or fades in. 4 to 10 second loops; 150 to 250ms for hover states.
- Use CSS or the platform's native animation. No heavy libraries for
decoration.
- Never repeat the same animated visual on one page or screen.
- Don't use constellation, polygon or network-mesh effects.
- Respect prefers-reduced-motion: show a still, finished state.
## 11. Accessibility
- WCAG 2.2 AA at minimum: 4.5:1 for text, 3:1 for large text and UI parts.
Check text over gradients at its worst point.
- 16px minimum text, 44px minimum touch targets.
- Decorative graphics are hidden from screen readers; meaningful ones are
labelled.
- Never use colour alone to carry meaning.
## 12. Voice and copy
- English (UK) is the default language. Spanish is a supported second
language, never the default.
- Plain, short and specific. Lead with what the reader gets. Sentences under
25 words.
- No hype words (revolutionary, seamless, cutting-edge), no exclamation
marks, no emoji.
- Use approved copy word for word when it's supplied. Never invent client
names, statistics, prices or quotes; mark gaps as [To confirm].
- Product names: Nio DBP, Nio Insight, Nio Cloud, Nio Transform, SME
Essentials.
## 13. Before you hand anything over, check
1. Only the colours above, and no background reads as purple or bright blue.
2. Inter (or the stated fallback), nothing under 16px.
3. Contrast passes AA everywhere, including over gradients and images.
4. Line icons only, each one meaningful.
5. It works at 390px wide and with reduced motion.
6. The logo is a supplied file, untouched.
7. Copy is UK English, matches approved text, and has no invented facts.
8. Images can be swapped by a non-developer and have alt text.
- Reference tokens by name — never a raw hex or px.
- Use semantic HTML:
‹button›,‹a›,‹table›. - Run an accessibility check in CI.
- Use tabular numerals for money.
- Fork or copy-paste a component to tweak it.
- Hard-code colors, spacing, or font sizes.
- Remove focus outlines without a replacement.
- Build a new pattern when one already exists.