Vauban Docs
Design System

Design Charter

Vauban Design Language (VDL) v5.0

The Vauban Design Language is the unified visual system governing all products in the Vauban ecosystem. It ensures visual coherence across 9+ applications while preserving each product's distinct identity through the Zone Accent system.

Design Principles

1. Dark-First, Institutional

Vauban targets sophisticated DeFi users managing real capital. The interface communicates trust, precision, and seriousness -- not playfulness.

  • Dark backgrounds reduce eye strain during extended portfolio monitoring
  • High-contrast text ensures readability across all lighting conditions
  • Subtle brand glow effects guide attention without distraction

2. OKLCH-Sourced, Hex-Delivered

All colors are authored in OKLCH (perceptually uniform, CSS Color Level 4) for precise lightness/chroma control, then compiled to hex for delivery. This guarantees:

  • Perceptually uniform scales -- equal visual steps between shade levels
  • Pixel-identical rendering across Chrome, Firefox, Safari, and mobile browsers
  • Zero runtime overhead -- resolved hex values, no oklch() function calls
  • Generator script: packages/design-tokens/scripts/generate-scales.mjs (culori)

3. Three-Tier Token Architecture

Reference Layer    --vdl-slate-{1-12}, --vdl-indigo-{1-12}, ...
     │             Static, theme-agnostic. Raw 12-step scales.

Semantic Layer     --vdl-bg-void, --vdl-text-primary, ...
     │             Purpose-bound, theme-reactive via CSS selectors.

Component Layer    Per-component aliases (e.g. --card-bg, --btn-text)
                   Defined in component CSS, not in tokens.css.

Semantic tokens reference scale tokens: --vdl-bg-void: var(--vdl-slate-1). Zero visual change when switching layers -- same resolved values.

4. Three Themes, One Source

ThemeSelectorCharacterUse Case
Navy[data-theme="navy"]Deep blue-tinted darkDefault. Financial dashboard feel
Zinc[data-theme="zinc"]Neutral gray darkMinimal, Glacis-style
Light[data-theme="light"]Warm sandstone ("Fortress Stone")Daytime, accessibility

All three themes derive from a single tokens.css file. The :root block defines Navy (default), then [data-theme="zinc"] and [data-theme="light"] selectors override only the semantic variables that change.

5. Zone Accents

Each product has a unique accent with a full 12-step scale, creating instant visual identification:

ZoneProductAnchor (step 9)Hue
BastionStaking dApp#6366F1277
RempartDecentralized Blog#8B5CF6293
CitadelTrading Platform#F59E0B70
BrainKnowledge Protocol#06B6D4215
GlacisBridge Protocol#10B981163

Zone accents are static -- they never change between themes. Each zone has steps 1-12 for tinted backgrounds, borders, and text variants (see Zones).

6. Radix 12-Step Scale Model

Every color scale follows the Radix 12-step convention:

StepsUI PurposeExample
1-2BackgroundsPage backdrop, content area
3-5Component backgroundsCards, buttons, hover states
6-8BordersSubtle, default, hovered
9-10Solid colorsButtons, badges, active states
11-12TextLow-contrast, high-contrast

Token Layers

Layer 4: Tailwind Utilities   bg-vdl-base, text-vdl-primary, text-indigo-9
Layer 3: Tailwind v4 Theme    @theme { --color-vdl-base: var(--vdl-bg-base) }
Layer 2: Semantic Tokens       --vdl-bg-base: var(--vdl-slate-2)
Layer 1: Reference Scales      --vdl-slate-2: #0A0F1A  /* oklch(0.169 0.025 265) */

Background Scale (5 levels)

TokenNavyZincLightPurpose
--vdl-bg-void#050810#09090b#F5F0EBPage backdrop, behind everything
--vdl-bg-base#0A0F1A#18181b#FAF7F4Main content area
--vdl-bg-surface#111827#27272a#FFFFFFCards, panels
--vdl-bg-elevated#1F2937#3f3f46#FFFFFFModals, dropdowns
--vdl-bg-hover#2A3548#52525b#F0EBE5Interactive hover states

Text Scale (4 levels)

TokenNavyZincLightPurpose
--vdl-text-primary#F9FAFB#fafafa#1C1917Headings, key values
--vdl-text-secondary#9CA3AF#a1a1aa#57534EBody text, descriptions
--vdl-text-tertiary#6B7280#71717a#A8A29ELabels, captions
--vdl-text-inverse#111827#18181b#FAFAF9Text on brand buttons

Status Colors

StateColorLight variantDark variant
Success#10B981#D1FAE5#065F46
Warning#F59E0B#FEF3C7#92400E
Error#EF4444#FEE2E2#991B1B
Info#6366F1#EEF2FF#3730A3

Typography

RoleFontTokenUsage
DisplayGeist--vdl-font-displayHero, brand, wordmark
HeadingInter--vdl-font-headingSection headings, UI titles
BodyInter--vdl-font-bodyParagraphs, descriptions
MonoJetBrains Mono--vdl-font-monoCode, addresses, data

Type Scale

LevelSizeLine HeightTrackingWeight (dark / light)
Display48px56px-0.02em800 / 700
H136px44px-0.015em700 / 600
H228px36px-0.01em700 / 600
H324px32px-0.01em700 / 600
Body16px24px0400 / 400
Small14px20px0400 / 400
Mono14px20px-0.02em400 / 400

Dark mode weight compensation: Headings get +100 weight in dark themes to counteract halation (text appears thinner on dark backgrounds).

Font Features

Feature SetOpenTypePurpose
Body'cv01' 1, 'cv02' 1Inter alternate forms
Data'tnum' 1, 'lnum' 1, 'cv01' 1Tabular lining nums for DeFi
Mono'liga' 1, 'calt' 1Code ligatures

Spacing & Layout

  • 8px grid -- All spacing uses multiples of 4px (--vdl-space-1 = 4px through --vdl-space-24 = 96px)
  • Header height: 56px
  • Sidebar width: 256px
  • Max content width: 1280px

Shadows & Effects

Dark themes use deeper, more opaque shadows. Light theme uses warm-toned subtle shadows inspired by natural stone.

The glow effect (--vdl-glow-brand) adds a subtle indigo halo to primary action elements, reinforcing brand identity without being distracting. A 7-intensity scale allows precise glow control for different interaction states.

Motion

VDL v5.0 includes a centralized motion system with spring physics, staggered reveals, and transaction-specific animations. See Motion for details.

Version History

VersionDateStatusFeatures
v5.0Feb 21, 2026ACTIVEOKLCH-sourced scales, three-tier tokens, Radix 12-step, zone scales, motion v2, spring physics, display font (Geist)
v4.0Feb 20, 2026SupersededTailwind v4 layer, motion system, prose/patterns, bridge, version management
v3.0Feb 10, 2026ArchivedInitial system: hex-only, 3 themes, zone accents, brand scale
v3.5Feb 18, 2026REJECTEDOKLCH runtime, circadian engine -- purged for cross-browser issues