DESIGN.md inspired by Aave
Ghost-soft DeFi — lavender #978fff on white, custom Aave Repro sans, pastel gradients in a usually-brutalist lending space.
Compare to…
- bg
#ffffff - bg-soft
#f7f6ff - bg-lavender
#f1eeff - surface
#ffffff - surface-soft
#faf9ff - surface-strong
#f1eeff - brand — · 2.7
#978fff - brand-hover
#857cf5 - brand-pressed
#6f63ff - brand-deep
#5b4fee - brand-strong
#5448d6 - brand-tint
#ece9ff - brand-soft
#c9c3ff - on-brand
#ffffff - text AAA · 16.7
#211d1d - text-strong
#000000 - text-muted
#5c5658 - text-soft
#8a8488 - text-faint — · 1.8
#c4c0c2 - text-on-brand
#ffffff - link
#5b4fee - link-hover
#5448d6 - selected-bg
#ece9ff - border — · 1.2
#e8e6ec - border-strong — · 1.5
#d5d2dd - border-soft
#f2f1f6 - border-brand
#978fff - gradient-pink
#ffb8e6 - gradient-peach
#ffd6b8 - gradient-mint
#b8f0d6 - gradient-sky
#b8d6ff - success
#1bbf8a - warning
#f5b948 - danger
#f0506e - info
#5b4fee
- step-0 0px
- step-1 4px
- step-2 8px
- step-3 12px
- step-4 16px
- step-5 24px
- step-6 32px
- step-7 48px
- step-8 64px
- step-9 96px
- step-10 128px
- micro
4px - sm
8px - md
12px - lg
16px - xl
24px - pill
9999px
Maps the 8 canonical role names to this entry's actual tokens. Use these to plug the design into role-aware tools — shadcn/ui themes, role-aware Tailwind plugins, atelier-lint — without hard-coding token names.
- background → bg
- foreground → text
- primary → brand
- primary-foreground → on-brand
- accent → —
- muted → text-muted
- border → border
- ring → border-brand
Aave (Finnish for "ghost") began life in 2017 as ETHLend before its 2020 rebrand to Aave under founder Stani Kulechov. The rename brought the ghost — a friendly, rounded mascot that signals trust and softness in a category dominated by brutalist black-and-blue interfaces. The lavender-purple `#978fff` is the ghost's color, carried through pastel gradient washes (pink, peach, mint, sky) that give the marketing site a warm, almost candy register. The custom Aave Repro sans handles every heading and body line — a low-contrast geometric grotesque set at large display sizes (h1 at 72px / weight 500) with tight tracking. Pure white canvas, near-black `#211d1d` text. Where Compound and Curve leaned terminal-brutalist, Aave deliberately leaned approachable to make a multibillion-dollar money market feel safe enough for first-time depositors. The voice is calm: "Use Aave", "Earn interest", "Supply and borrow" — protocol confidence without crypto hype.
- origin and the ghost-mascot rebrand
- friendly softness defining the lavender brand register
- DeFi peer that also chose playful-color over brutalism
- brutalist DeFi peers Aave differentiated against with pastel softness
- gradient-wash + clean-sans fintech reference
theme.extend block for tailwind.config.js
:root { --bg, --text, --brand, … } you can paste anywhere
W3C Design Tokens Community Group format
Importable into Figma → Variables → Import
---
name: Aave
tagline: 'Ghost-soft DeFi — lavender #978fff on white, custom Aave Repro sans, pastel gradients in a usually-brutalist lending space.'
updated_at: 2026-05-28T23:13:45.033Z
published_at: 2026-05-28T23:13:45.033Z
author: webdesignhot
source_url: https://aave.com
spec: webdesignhot/0.1
quality: curated
featured: false
categories: [saas]
tags: [light, friendly, sans, crypto, defi, gradient]
preview_swatch: ['#ffffff', '#978fff', '#211d1d']
related: [uniswap, metamask, arbitrum]
description: 'Aave is the rare DeFi lending protocol that decided softness is on-brand. The canvas is pure white `#ffffff`, body and headings sit in the custom Aave Repro sans (h1 at 72px / weight 500), and the signature color is a friendly lavender-purple `#978fff` — the same hue carried by Aave''s ghost mascot and the site''s pastel gradient washes. Near-black text `#211d1d` keeps reading warm rather than clinical. Where Compound and Curve leaned brutalist black-and-blue, Aave leaned approachable: pill-radius CTAs (50px and beyond), gentle gradient registers, and a mascot that makes a multibillion-dollar lending market feel safe. The voice is calm and reassuring — "Use Aave", "Earn interest" — never hype. The whole brand reads as friendly-DeFi: serious enough to custody real capital, soft enough that a first-time supplier isn''t scared off.'
# Canonical 8-role aliases (bg / text / brand / border / accent / muted / surface / danger).
# Maps role names to this entry's actual token names so role-aware
# downstream tools resolve `theme.background` → entry's `bg`, etc.
# Auto-generated by scripts/add-aliases.mjs — do not edit manually;
# regenerate after changing color token names.
aliases:
background: bg
foreground: text
primary: brand
primary-foreground: on-brand
muted: text-muted
border: border
ring: border-brand
colors:
bg: '#ffffff'
bg-soft: '#f7f6ff'
bg-lavender: '#f1eeff'
surface: '#ffffff'
surface-soft: '#faf9ff'
surface-strong: '#f1eeff'
brand: '#978fff'
brand-hover: '#857cf5'
brand-pressed: '#6f63ff'
brand-deep: '#5b4fee'
brand-strong: '#5448d6'
brand-tint: '#ece9ff'
brand-soft: '#c9c3ff'
on-brand: '#ffffff'
text: '#211d1d'
text-strong: '#000000'
text-muted: '#5c5658'
text-soft: '#8a8488'
text-faint: '#c4c0c2'
text-on-brand: '#ffffff'
link: '#5b4fee'
link-hover: '#5448d6'
selected-bg: '#ece9ff'
border: '#e8e6ec'
border-strong: '#d5d2dd'
border-soft: '#f2f1f6'
border-brand: '#978fff'
gradient-pink: '#ffb8e6'
gradient-peach: '#ffd6b8'
gradient-mint: '#b8f0d6'
gradient-sky: '#b8d6ff'
success: '#1bbf8a'
warning: '#f5b948'
danger: '#f0506e'
info: '#5b4fee'
typography:
display:
family: '"Aave Repro", system-ui, -apple-system, BlinkMacSystemFont, sans-serif'
weights: [500, 600, 700]
body:
family: '"Aave Repro", system-ui, -apple-system, BlinkMacSystemFont, sans-serif'
weights: [400, 500, 600]
mono:
family: 'ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace'
weights: [400, 500]
scale:
display-hero: { size: 88, weight: 500, lineHeight: 1.0, tracking: '-0.03em', family: display }
display-lg: { size: 72, weight: 500, lineHeight: 1.05, tracking: '-0.025em', family: display }
h1: { size: 72, weight: 500, lineHeight: 1.05, tracking: '-0.022em', family: display }
h2: { size: 48, weight: 500, lineHeight: 1.1, tracking: '-0.018em', family: display }
h3: { size: 32, weight: 500, lineHeight: 1.2, tracking: '-0.012em', family: display }
h4: { size: 24, weight: 500, lineHeight: 1.25, tracking: '-0.005em', family: display }
h5: { size: 20, weight: 600, lineHeight: 1.3, tracking: '0', family: body }
eyebrow: { size: 13, weight: 600, lineHeight: 1.2, tracking: '0.08em', family: body }
body-lg: { size: 18, weight: 400, lineHeight: 1.55, tracking: '0', family: body }
body: { size: 16, weight: 400, lineHeight: 1.55, tracking: '0', family: body }
body-sm: { size: 14, weight: 400, lineHeight: 1.5, tracking: '0', family: body }
label: { size: 13, weight: 500, lineHeight: 1.4, tracking: '0', family: body }
button: { size: 16, weight: 500, lineHeight: 1.0, tracking: '0', family: body }
metric: { size: 40, weight: 500, lineHeight: 1.0, tracking: '-0.015em', family: display }
caption: { size: 12, weight: 500, lineHeight: 1.4, tracking: '0.02em', family: body }
radius:
micro: 4
sm: 8
md: 12
lg: 16
xl: 24
pill: 9999
spacing:
base: 4
scale: [0, 4, 8, 12, 16, 24, 32, 48, 64, 96, 128]
layout:
page-width: 1280
prose-width: 720
header-height: 72
motion:
ease-standard: 'cubic-bezier(0.4, 0, 0.2, 1)'
ease-emphasized: 'cubic-bezier(0.22, 1, 0.36, 1)'
duration-fast: 150
duration-standard: 240
duration-slow: 360
reduced-motion: 'respects prefers-reduced-motion: reduce'
breakpoints:
mobile: 640
tablet: 1024
desktop: 1280
wide: 1536
shadows:
card: '0 2px 16px rgba(151, 143, 255, 0.08)'
card-hover: '0 12px 32px rgba(151, 143, 255, 0.16)'
brand-glow: '0 8px 28px rgba(151, 143, 255, 0.28)'
modal: '0 24px 64px rgba(33, 29, 29, 0.18)'
accessibility:
contrast-text-on-bg: 16.7
contrast-text-on-brand: 6.1
contrast-white-on-brand: 2.7
focus-ring: '3px solid #978fff'
reduced-motion-honored: true
components:
button-primary: { bg: brand, text: text, padding: '14px 28px', radius: pill, font: button }
button-dark: { bg: text, text: on-brand, padding: '14px 28px', radius: pill, font: button }
button-secondary: { bg: brand-tint, text: brand-strong, padding: '12px 26px', radius: pill, font: button }
button-ghost: { bg: transparent, text: text, border: border, padding: '12px 24px', radius: pill }
card: { bg: surface, radius: 24, padding: 24, shadow: 'card' }
metric-card: { bg: surface-soft, radius: 16, padding: 20, border: '1px solid border-soft' }
pill: { bg: surface-strong, text: text, radius: pill, padding: '6px 14px', font: 'label' }
input: { bg: surface-soft, border: '1px solid border', text: text, radius: 12, padding: '12px 16px', focus-border: brand }
lineage:
summary: 'Aave (Finnish for "ghost") began life in 2017 as ETHLend before its 2020 rebrand to Aave under founder Stani Kulechov. The rename brought the ghost — a friendly, rounded mascot that signals trust and softness in a category dominated by brutalist black-and-blue interfaces. The lavender-purple `#978fff` is the ghost''s color, carried through pastel gradient washes (pink, peach, mint, sky) that give the marketing site a warm, almost candy register. The custom Aave Repro sans handles every heading and body line — a low-contrast geometric grotesque set at large display sizes (h1 at 72px / weight 500) with tight tracking. Pure white canvas, near-black `#211d1d` text. Where Compound and Curve leaned terminal-brutalist, Aave deliberately leaned approachable to make a multibillion-dollar money market feel safe enough for first-time depositors. The voice is calm: "Use Aave", "Earn interest", "Supply and borrow" — protocol confidence without crypto hype.'
influences:
- { name: 'Stani Kulechov (founder, ETHLend → Aave 2020)', role: 'origin and the ghost-mascot rebrand', url: 'https://en.wikipedia.org/wiki/Aave' }
- { name: 'Aave ghost mascot', role: 'friendly softness defining the lavender brand register', url: 'https://aave.com' }
- { name: 'Uniswap', role: 'DeFi peer that also chose playful-color over brutalism', url: 'https://uniswap.org' }
- { name: 'Compound / Curve', role: 'brutalist DeFi peers Aave differentiated against with pastel softness', url: 'https://compound.finance' }
- { name: 'Stripe marketing aesthetic', role: 'gradient-wash + clean-sans fintech reference', url: 'https://stripe.com' }
---
## 1. Visual Theme & Atmosphere
Aave is the rare DeFi lending protocol that decided softness is the point. The canvas is pure white `#ffffff`, body and headings sit in the custom **Aave Repro** sans (h1 at 72px, weight 500), and the signature color is a friendly lavender-purple `#978fff` — the same hue carried by Aave's ghost mascot and the pastel gradient washes that drift behind hero sections. Near-black text `#211d1d` is warm rather than clinical: it has a faint red lean (R slightly above G/B) that keeps the page from feeling like a terminal.
Where Compound and Curve leaned brutalist — monospace, hard black, electric blue, no rounding — Aave leaned the opposite direction. The ghost ("aave" is Finnish for ghost) is the organizing metaphor: rounded, weightless, reassuring. That softness propagates into the whole system. CTAs are deeply pill-radiused (the live site samples a 50px supply button and a 1584px-radius "Download on iOS" pill — effectively a full pill). Gradient registers in pink, peach, mint, and sky pastels appear as ambient washes, never as flat fills on functional surfaces.
The brand operates in two registers at once. There's a **dark register** — a near-black `#211d1d` pill used for high-intent product entry ("Use Aave") — and a **lavender register** — the `#978fff` brand pill used for softer asks ("Download on iOS", "Get started"). Both share the same pill geometry; the color signals intent weight, not hierarchy of importance. A site visitor reads the dark button as "enter the app" and the lavender button as "explore."
The product itself is the hero. Aave's marketing pattern is the live market table — supply APY, borrow APY, total value locked — rendered in clean Aave Repro numerals inside soft 16-24px-radius cards. Numbers are the proof; the design's job is to make billions of dollars in TVL feel calm and legible. Metrics use a 40px display weight so they read as confident statements, not nervous tickers.
The result is friendly-DeFi: serious enough to custody real capital, soft enough that a first-time supplier isn't scared off. Pastel gradients, a ghost, and lavender-on-white turn an intimidating money market into something that feels like it wants you to succeed.
**Key Characteristics:**
- Pure white canvas `#ffffff` + warm near-black text `#211d1d`
- Signature lavender-purple `#978fff` (the ghost's color)
- Custom **Aave Repro** sans for display and body alike
- Large display headings (h1 72px / weight 500) with tight tracking
- Deep pill-radius CTAs (50px+, up to full-pill)
- Dual button register: dark pill (high intent) + lavender pill (soft ask)
- Pastel gradient washes — pink, peach, mint, sky — as ambient background
- The Aave ghost mascot as trust signal
- Live market-table metrics as product hero, 40px display numerals
- Calm, reassuring voice — never crypto hype
- Soft lavender-tinted shadows, generous 24px card radius
## 2. Color Palette & Roles
### Primary
- **Background** (`#ffffff`): pure white page canvas.
- **Bg Soft** (`#f7f6ff`): faint lavender-tinted alternate section background.
- **Bg Lavender** (`#f1eeff`): soft lavender wash behind feature blocks.
- **Text** (`#211d1d`): warm near-black for all body and headings.
### Brand — Aave Lavender
- **Brand** (`#978fff`): the ghost's lavender-purple, primary brand pill and accent.
- **Brand Hover** (`#857cf5`): one step deeper on hover.
- **Brand Pressed** (`#6f63ff`): active/pressed state.
- **Brand Deep** (`#5b4fee`): used where white text needs ≥5:1 contrast (links, deep CTAs).
- **Brand Strong** (`#5448d6`): strongest tier, link-hover and high-contrast text-on-purple.
- **Brand Tint** (`#ece9ff`): selection wash, secondary-button fill.
- **Brand Soft** (`#c9c3ff`): muted lavender for chips and inactive accents.
### Dark Register (high-intent CTA)
- **Text-as-button** (`#211d1d`): the near-black pill used for "Use Aave" / app-entry.
- **On-brand** (`#ffffff`): white label on the dark pill.
### Gradient Pastels (ambient only)
- **Gradient Pink** (`#ffb8e6`), **Peach** (`#ffd6b8`), **Mint** (`#b8f0d6`), **Sky** (`#b8d6ff`): the four pastel washes that compose hero gradients. Never used as functional UI fills.
### Neutral / Text
- **Text Muted** (`#5c5658`): secondary copy, captions.
- **Text Soft** (`#8a8488`): tertiary, helper text.
- **Text Faint** (`#c4c0c2`): placeholders, disabled.
### Surface
- **Surface** (`#ffffff`): card background.
- **Surface Soft** (`#faf9ff`): inset inputs, metric cards.
- **Surface Strong** (`#f1eeff`): pills, token chips.
### Borders
- **Border** (`#e8e6ec`): default hairline.
- **Border Strong** (`#d5d2dd`): emphasized dividers.
- **Border Soft** (`#f2f1f6`): faintest separation.
- **Border Brand** (`#978fff`): focus ring, selected card outline.
### Semantic
- **Success** (`#1bbf8a`): positive APY, confirmed states.
- **Warning** (`#f5b948`): health-factor caution, alerts.
- **Danger** (`#f0506e`): liquidation risk, errors.
- **Info** (`#5b4fee`): informational, also link color.
## 3. Typography Rules
### Font Family
- **Display + Body**: **Aave Repro** — a custom low-contrast geometric grotesque used for everything from 72px headlines to 13px labels. Falls back to `system-ui` → `-apple-system` → `BlinkMacSystemFont` → `sans-serif`.
- **Mono**: system mono stack (`ui-monospace`, `SFMono-Regular`, `SF Mono`, `Menlo`) for wallet addresses and hashes.
### Hierarchy
| Role | Font | Size | Weight | LH | Tracking |
|------|------|------|--------|-----|----------|
| display-hero | Aave Repro | 88 | 500 | 1.0 | -0.03em |
| display-lg | Aave Repro | 72 | 500 | 1.05 | -0.025em |
| h1 | Aave Repro | 72 | 500 | 1.05 | -0.022em |
| h2 | Aave Repro | 48 | 500 | 1.1 | -0.018em |
| h3 | Aave Repro | 32 | 500 | 1.2 | -0.012em |
| h4 | Aave Repro | 24 | 500 | 1.25 | -0.005em |
| h5 | Aave Repro | 20 | 600 | 1.3 | 0 |
| eyebrow | Aave Repro | 13 | 600 | 1.2 | 0.08em UPPER |
| metric | Aave Repro | 40 | 500 | 1.0 | -0.015em |
| body-lg | Aave Repro | 18 | 400 | 1.55 | 0 |
| body | Aave Repro | 16 | 400 | 1.55 | 0 |
| body-sm | Aave Repro | 14 | 400 | 1.5 | 0 |
| label | Aave Repro | 13 | 500 | 1.4 | 0 |
| button | Aave Repro | 16 | 500 | 1.0 | 0 |
| caption | Aave Repro | 12 | 500 | 1.4 | 0.02em |
| address | system mono | 13 | 400 | 1.5 | 0 |
### Principles
- **Aave Repro for everything.** One typeface carries display through caption — the brand never mixes in a second sans. Mono is reserved strictly for addresses and hashes.
- **Weight 500 dominates display.** Headlines are medium, not bold — the softness comes from weight restraint, not thin strokes. Confident, never aggressive.
- **Tight tracking scales with size.** Hero −0.03em down to 0 at body. The negative tracking on large display knits letterforms into calm, solid headlines.
- **Generous body line-height (1.55).** Reading comfort over density; the page breathes.
- **Large numerals for metrics.** APY and TVL figures use the 40px display tier so financial numbers read as confident statements.
- **Mixed-case display, uppercase eyebrows.** Headlines are sentence case; only the small 13px eyebrows go uppercase with 0.08em tracking.
- **No italics for emphasis.** Emphasis comes from weight (500→600) and the lavender accent, not slant.
## 4. Component Stylings
### Buttons (4 variants — all pill-radius)
**Primary (lavender)** — the soft ask:
- bg `#978fff`, text `#211d1d` (near-black on lavender = 6.1:1, AA), 16px Aave Repro 500
- Padding 14×28, radius 9999 (pill, sampled live at 50px+)
- Hover: bg `#857cf5`, subtle lift `translateY(-1px)` + brand-glow shadow
- Note: if a *white* label is required on lavender, deepen the fill to `#5b4fee` (white = 5.5:1) — `#978fff` with white text only passes at 2.7:1 (decorative).
**Dark (high-intent)** — the app-entry CTA ("Use Aave"):
- bg `#211d1d`, text `#ffffff` (15:1, AAA), 16px Aave Repro 500
- Padding 14×28, radius 9999 (pill)
- Hover: bg lightens to `#352f2f`, slight scale 1.02
**Secondary (tint)**:
- bg `#ece9ff` (brand-tint), text `#5448d6` (brand-strong), pill radius
- Padding 12×26; hover: bg `#dedaff`
**Ghost**:
- bg transparent, text `#211d1d`, 1px `#e8e6ec` border, pill radius, padding 12×24
- Hover: bg `#faf9ff`, border `#d5d2dd`
### Cards
- bg white `#ffffff`, **24px radius**, padding 24
- Soft lavender-tinted shadow `0 2px 16px rgba(151,143,255,0.08)`
- Hover: shadow deepens to `0 12px 32px rgba(151,143,255,0.16)`, optional `border-brand` outline on selection
### Metric Cards (the market-table cells)
- bg `#faf9ff` (surface-soft), **16px radius**, padding 20, 1px `#f2f1f6` border
- 40px Aave Repro 500 numeral on top, 13px muted label below
- Positive APY rendered in `#1bbf8a` (success), risk values in `#f0506e` (danger)
### Badges / Tags / Pills
- **Token pill**: bg `#f1eeff` (surface-strong), pill radius, token icon + symbol, 13px label
- **Status badge**: pill, tinted fill matching semantic role (success-tint / warning-tint / danger-tint) with darker text
- **Network chip**: pill radius, network-color dot + name, soft border
### Inputs / Forms
- bg `#faf9ff` (surface-soft), 1px `#e8e6ec` border, **12px radius**, padding 12×16
- Placeholder `#c4c0c2`, value `#211d1d`
- Focus: border `#978fff`, 3px `rgba(151,143,255,0.3)` ring
- Amount inputs (supply/borrow) use larger 24px display type, right-aligned, with a "MAX" lavender ghost button
### Navigation
- 72px sticky header, white bg, faint bottom border `#f2f1f6` on scroll
- Aave ghost wordmark left, top-level nav center (Markets / Stake / Governance / Docs)
- Right: a lavender or dark "Use Aave" pill CTA
- Mobile: hamburger collapsing the center nav into a sheet
## 5. Layout Principles
### Spacing System
- Base unit **4px**. Scale: 0, 4, 8, 12, 16, 24, 32, 48, 64, 96, 128.
- Component padding clusters at 16-24px; section rhythm at 96-128px.
### Grid & Container
- Page max width **1280px**, centered, with 24px gutters that widen at desktop.
- Prose blocks cap at **720px** for readability.
- Market tables span full container width; feature blocks use a 12-column grid (3-up desktop, 2-up tablet, stacked mobile).
### Whitespace Philosophy
- Whitespace is the brand's calm. Generous vertical rhythm (96-128px between sections) lets pastel gradient washes breathe behind content without crowding.
- Cards are never wall-to-wall — there's always lavender-tinted negative space framing them.
### Section Cadence
- Hero (gradient wash + 72px headline + dual CTA) → live market metrics → feature trio → trust/security band → footer.
- Each section alternates between pure white and a faint `#f7f6ff` / `#f1eeff` lavender background to segment without hard dividers.
## 6. Shapes & Radius Scale
| Tier | Value | Use |
|------|-------|-----|
| Micro | 4 | indicators, tiny chips |
| Standard | 8 | tooltips, small controls |
| Comfortable | 12 | **inputs**, dropdowns |
| Relaxed | 16 | **metric cards** |
| Featured | 24 | **default cards** (product hero) |
| Pill | 9999 | **all buttons + token pills** |
Aave runs soft across the board. The default card radius (24px) is at the upper end of the DeFi range, and buttons go fully pill. There are no sharp corners anywhere in the functional UI — every surface echoes the rounded ghost.
## 7. Depth & Elevation
| Level | Treatment | Use |
|-------|-----------|-----|
| 0 | none | flat sections on white |
| 1 | `0 2px 16px rgba(151,143,255,0.08)` | resting cards |
| 2 | `0 12px 32px rgba(151,143,255,0.16)` | card hover |
| 3 | `0 8px 28px rgba(151,143,255,0.28)` | brand-glow on primary CTA hover |
| 4 | `0 24px 64px rgba(33,29,29,0.18)` | modals, wallet sheet |
### Shadow Philosophy
Shadows are lavender-tinted, not neutral-grey. Resting elevation is whisper-soft (8% alpha) so cards feel like they float a millimeter above white rather than casting hard depth. The brand-glow on CTA hover is the one place opacity climbs (28%) to make the lavender pill feel reachable. Modals are the only neutral-shadowed surface, using the warm near-black at 18% for a grounded overlay.
## 8. Interaction & Motion
### Easing
- **Standard**: `cubic-bezier(0.4, 0, 0.2, 1)` — material-style for most transitions.
- **Emphasized**: `cubic-bezier(0.22, 1, 0.36, 1)` — gentle overshoot for entrances and the ghost mascot's float.
### Durations
- **Fast** 150ms: hover color/shadow shifts.
- **Standard** 240ms: dropdowns, card expand, tab switches.
- **Slow** 360ms: section reveals, modal open.
### Per-component micro-states
- **Primary CTA**: hover → deeper lavender + `translateY(-1px)` + brand-glow (240ms standard).
- **Card**: hover → shadow level 1→2, optional brand-border fade (240ms).
- **Metric numerals**: count-up animation on scroll-into-view (emphasized, ~800ms once).
- **Token selector**: 240ms slide-down dropdown with soft fade.
- **Ghost mascot**: slow idle float (emphasized ease, ~3s loop) — purely decorative.
### Page transitions
- Section content fades up 16px on scroll-into-view (emphasized, staggered ~60ms per item).
- Gradient washes shift hue subtly over a long loop — ambient, never attention-grabbing.
### Reduced motion
- Respects `prefers-reduced-motion: reduce`: count-ups jump to final value, ghost float and gradient drift freeze, fades become instant. No essential information lives in motion.
## 9. Accessibility & A11y
### Computed contrast pairs (from live tokens)
- **Text on bg** — `#211d1d` on `#ffffff` = **16.7:1** (AAA, all sizes).
- **Near-black on brand** — `#211d1d` on `#978fff` = **6.1:1** (AA, all sizes). This is the *correct* primary-button pairing: dark text on lavender.
- **White on brand** — `#ffffff` on `#978fff` = **2.7:1** (fails AA). The live "Download on iOS" pill uses white-on-lavender, which only passes for large/decorative text — for real white-on-purple labels, deepen to `#5b4fee` (= **5.5:1**, AA) or `#5448d6` (= **6.4:1**).
- **White on dark CTA** — `#ffffff` on `#211d1d` = **15:1** (AAA).
- **Link** — `#5b4fee` on `#ffffff` = **5.7:1** (AA).
### Focus indicators
- 3px `#978fff` focus ring (or `rgba(151,143,255,0.5)` outer glow) on all interactive elements. Never remove outline without an equivalent.
### ARIA patterns
- Token selectors as `role="combobox"` with `aria-expanded`.
- Market table as a real `<table>` with scope headers; APY/risk values get `aria-label` spelling out the number and unit.
- Health-factor color is paired with text/icon so risk isn't conveyed by color alone.
### Keyboard nav
- Full tab order through nav → hero CTA → market rows → footer. Modal/wallet sheet traps focus and restores on close. Esc closes overlays.
### Screen reader hints
- Truncated addresses expose the full value via `aria-label` and a copy button. Gradient washes and the ghost mascot are `aria-hidden`.
### Reduced motion
- All count-ups, floats, and gradient drift honor `prefers-reduced-motion: reduce`.
## 10. Responsive Behavior
| Breakpoint | Width | Behavior |
|------------|-------|----------|
| mobile | <640 | hero 72→40px, single-column, nav → hamburger, CTAs full-width |
| tablet | 640–1024 | 2-up feature grid, market table scrolls horizontally |
| desktop | 1024–1280 | 3-up grid, full market table, dual-CTA hero |
| wide | >1536 | content caps at 1280, gradient washes extend to viewport edges |
- **Touch targets**: minimum 44×44px; pill CTAs are comfortably taller on mobile.
- **Per-component collapsing**: nav center links collapse into a sheet; market table becomes horizontally scrollable cards on mobile; metric cards stack single-column.
- **Image / gradient behavior**: pastel gradient washes scale to fill but reduce intensity on small screens to preserve text contrast. Ghost mascot shrinks and may drop on the smallest breakpoint.
- **Container queries**: market-table cells switch from row to stacked label/value layout below a card-width threshold rather than a viewport breakpoint.
## 11. Content & Voice
### Tone
**Calm and reassuring.** Aave talks like a trustworthy institution that happens to be friendly — plain language about supplying, borrowing, and earning, with zero crypto hype, moon-talk, or urgency theater. Confidence comes from clarity, not exclamation points.
### Microcopy patterns
- Primary CTA: **"Use Aave"** / **"Get started"** / **"Supply"** / **"Borrow"**
- Secondary: **"Download on iOS"** / **"Read the docs"** / **"View markets"**
- Errors: **"Insufficient balance to supply"** / **"Health factor too low to borrow"**
- Loading: **"Confirming transaction…"**
- Success: **"Supplied 1,000 USDC — earning 3.2% APY"**
### Empty states
- Calm and instructive: **"No positions yet. Supply an asset to start earning."** — paired with the ghost mascot and a single lavender CTA.
### CTA verb conventions
- **Use / Supply / Borrow / Earn / Stake / Withdraw** — direct financial verbs.
- Avoid: "ape in", "to the moon", "🚀", urgency countdowns, or any speculative framing. Aave is a money market, not a casino.
## 12. Dark Mode & Theming
The marketing site (`aave.com`) is **light-only** — pure white canvas with the lavender brand and pastel gradient washes. The Aave **app** (`app.aave.com`) ships a dark theme: a deep near-black `#1b1a1f`-class background with the lavender `#978fff` brand carried through unchanged, and the pastel gradients dimmed to subtle glows. When building a dark variant of this system, keep `#978fff` as the constant brand anchor, swap white surfaces for warm-dark `#1b1a1f`/`#26242b`, lift text to `#f5f3f7`, and reduce gradient-wash opacity so it reads as ambient light rather than color blocks.
## 13. Lineage & Influences
Aave began in 2017 as **ETHLend**, a peer-to-peer lending dApp, before its 2020 rebrand to Aave — Finnish for "ghost" — under founder Stani Kulechov. The rename brought the mascot: a friendly, rounded ghost that signals trust and approachability in a category otherwise dominated by brutalist black-and-blue terminals. The ghost's lavender-purple `#978fff` became the brand anchor, extended into pastel gradient washes (pink, peach, mint, sky) that give the marketing site a warm, almost candy register entirely unlike the austere DeFi default.
Typographically, Aave commissioned **Aave Repro**, a custom low-contrast geometric grotesque, and uses it everywhere from 72px headlines (weight 500) to 13px labels — a single-typeface discipline that keeps the system coherent. The choice to lean soft was strategic: where Compound and Curve courted power-users with dense brutalism, Aave deliberately designed to make a multibillion-dollar money market feel safe enough for first-time depositors. It shares that playful-color-over-brutalism instinct with Uniswap, and borrows gradient-wash-plus-clean-sans fintech polish from the Stripe lineage.
**Named influences:**
- **Stani Kulechov (founder)** — ETHLend → Aave 2020 rebrand and the ghost identity
- **The Aave ghost mascot** — friendly softness defining the lavender register
- **Uniswap** — DeFi peer that also chose playful color over brutalism
- **Compound / Curve** — brutalist DeFi peers Aave differentiated against
- **Stripe marketing aesthetic** — gradient-wash + clean-sans fintech reference
## 14. Do's and Don'ts
### Do
- **Use lavender `#978fff` for the brand pill and accents** — it's the ghost's color, the single identity anchor.
- **Pair dark text `#211d1d` on lavender CTAs** (6.1:1, AA) — that's the correct contrast.
- **Use the dark `#211d1d` pill for high-intent app entry** ("Use Aave").
- **Set everything in Aave Repro** (or system-ui fallback) at weight 500 for display.
- **Go pill-radius on every button, 24px on cards.**
- **Render metrics large** (40px display) — APY and TVL are the proof.
- **Use pastel gradients as ambient washes only** — pink/peach/mint/sky behind heroes.
- **Keep the voice calm and reassuring** — plain financial language.
- **Tint shadows lavender** `rgba(151,143,255,…)`, soft and low-alpha.
- **Honor `prefers-reduced-motion`** — freeze the ghost and gradient drift.
### Don't
- **Don't substitute the lavender.** `#978fff` is the brand, not a generic Tailwind purple.
- **Don't put white text on `#978fff`** for body-size labels — it fails at 2.7:1. Deepen to `#5b4fee`+ first.
- **Don't mistake "Accept All" for brand.** That dark pill is the cookie banner, not a brand CTA.
- **Don't introduce a second typeface.** Aave Repro carries the whole system.
- **Don't use sharp corners.** Everything echoes the rounded ghost.
- **Don't apply gradient pastels to functional fills** — they're ambient background only.
- **Don't use brutalist DeFi aesthetics** — monospace-everywhere, hard black, electric blue. Soft lavender IS Aave.
- **Don't add crypto hype** — no "ape in", rockets, or urgency countdowns.
- **Don't hard-shadow with neutral grey** — shadows are lavender-tinted.
- **Don't anthropomorphize the ghost into a hype character** — it's a calm trust signal, used sparingly.
## 15. Agent Prompt Guide
### Quick Color Reference
- bg: `#ffffff`
- text: `#211d1d`
- brand (Aave lavender): `#978fff` / hover `#857cf5`
- brand-deep (white-text-safe): `#5b4fee`
- dark CTA pill: `#211d1d` (white text)
- brand-tint (secondary fill): `#ece9ff`
- gradient pastels: pink `#ffb8e6` · peach `#ffd6b8` · mint `#b8f0d6` · sky `#b8d6ff`
- border: `#e8e6ec`
- success `#1bbf8a` · danger `#f0506e`
### Example Component Prompts
> Build an Aave-style hero: pure white canvas with a soft pastel gradient wash (lavender → pink → sky) drifting behind. 72px Aave Repro weight-500 headline "Earn interest on your crypto" with -0.022em tracking. Below it a dark `#211d1d` pill CTA "Use Aave" (white text) next to a lavender `#978fff` pill "Download on iOS" (dark `#211d1d` text). Calm, lots of whitespace.
> Design an Aave market table: full-width container, rows of metric cards on `#faf9ff` 16px-radius surfaces. Each cell: 40px Aave Repro 500 numeral on top (supply APY in green `#1bbf8a`), 13px muted `#5c5658` label below. Soft lavender shadow `0 2px 16px rgba(151,143,255,0.08)`.
> Render an Aave supply card: white surface, 24px radius, lavender-tinted shadow. Asset row with token pill (`#f1eeff` bg, icon + "USDC"), a large 24px right-aligned amount input with a lavender "MAX" ghost button, and a full-width lavender `#978fff` "Supply" pill CTA with dark text at the bottom.
> Build an Aave primary button: lavender `#978fff` fill, near-black `#211d1d` 16px Aave Repro 500 label, pill radius, padding 14×28. Hover: bg `#857cf5`, lift 1px, lavender brand-glow shadow. (If white text is required, deepen fill to `#5b4fee`.)
> Design an Aave dark CTA: near-black `#211d1d` pill, white 16px Aave Repro 500 "Use Aave", padding 14×28, radius 9999. Hover: lighten to `#352f2f`, scale 1.02.
> Create an Aave empty state: centered ghost mascot illustration, 24px Aave Repro 500 "No positions yet", 16px muted helper line "Supply an asset to start earning", single lavender `#978fff` pill CTA "Supply".
### Iteration Guide
1. **White canvas + lavender `#978fff` + Aave Repro + the ghost.** That quartet is the brand.
2. **Dark text on lavender CTAs** (6.1:1) — never white text on `#978fff` for labels.
3. **Two CTA registers**: dark `#211d1d` pill for app entry, lavender pill for soft asks. Same pill geometry, different intent.
4. **Pill buttons, 24px cards, 12px inputs.** Nothing sharp.
5. **Pastel gradient washes are ambient only** — behind heroes, never on functional fills.
6. **Metrics go large** (40px display) — the live market table is the product hero.
7. **Lavender-tinted soft shadows**, low alpha, floating-not-grounded.
8. **Calm reassuring voice** — reject crypto hype, urgency, and brutalist DeFi aesthetics. Soft lavender IS Aave.
1. Visual Theme & Atmosphere
Aave is the rare DeFi lending protocol that decided softness is the point. The canvas is pure white #ffffff, body and headings sit in the custom Aave Repro sans (h1 at 72px, weight 500), and the signature color is a friendly lavender-purple #978fff — the same hue carried by Aave’s ghost mascot and the pastel gradient washes that drift behind hero sections. Near-black text #211d1d is warm rather than clinical: it has a faint red lean (R slightly above G/B) that keeps the page from feeling like a terminal.
Where Compound and Curve leaned brutalist — monospace, hard black, electric blue, no rounding — Aave leaned the opposite direction. The ghost (“aave” is Finnish for ghost) is the organizing metaphor: rounded, weightless, reassuring. That softness propagates into the whole system. CTAs are deeply pill-radiused (the live site samples a 50px supply button and a 1584px-radius “Download on iOS” pill — effectively a full pill). Gradient registers in pink, peach, mint, and sky pastels appear as ambient washes, never as flat fills on functional surfaces.
The brand operates in two registers at once. There’s a dark register — a near-black #211d1d pill used for high-intent product entry (“Use Aave”) — and a lavender register — the #978fff brand pill used for softer asks (“Download on iOS”, “Get started”). Both share the same pill geometry; the color signals intent weight, not hierarchy of importance. A site visitor reads the dark button as “enter the app” and the lavender button as “explore.”
The product itself is the hero. Aave’s marketing pattern is the live market table — supply APY, borrow APY, total value locked — rendered in clean Aave Repro numerals inside soft 16-24px-radius cards. Numbers are the proof; the design’s job is to make billions of dollars in TVL feel calm and legible. Metrics use a 40px display weight so they read as confident statements, not nervous tickers.
The result is friendly-DeFi: serious enough to custody real capital, soft enough that a first-time supplier isn’t scared off. Pastel gradients, a ghost, and lavender-on-white turn an intimidating money market into something that feels like it wants you to succeed.
Key Characteristics:
- Pure white canvas
#ffffff+ warm near-black text#211d1d - Signature lavender-purple
#978fff(the ghost’s color) - Custom Aave Repro sans for display and body alike
- Large display headings (h1 72px / weight 500) with tight tracking
- Deep pill-radius CTAs (50px+, up to full-pill)
- Dual button register: dark pill (high intent) + lavender pill (soft ask)
- Pastel gradient washes — pink, peach, mint, sky — as ambient background
- The Aave ghost mascot as trust signal
- Live market-table metrics as product hero, 40px display numerals
- Calm, reassuring voice — never crypto hype
- Soft lavender-tinted shadows, generous 24px card radius
2. Color Palette & Roles
Primary
- Background (
#ffffff): pure white page canvas. - Bg Soft (
#f7f6ff): faint lavender-tinted alternate section background. - Bg Lavender (
#f1eeff): soft lavender wash behind feature blocks. - Text (
#211d1d): warm near-black for all body and headings.
Brand — Aave Lavender
- Brand (
#978fff): the ghost’s lavender-purple, primary brand pill and accent. - Brand Hover (
#857cf5): one step deeper on hover. - Brand Pressed (
#6f63ff): active/pressed state. - Brand Deep (
#5b4fee): used where white text needs ≥5:1 contrast (links, deep CTAs). - Brand Strong (
#5448d6): strongest tier, link-hover and high-contrast text-on-purple. - Brand Tint (
#ece9ff): selection wash, secondary-button fill. - Brand Soft (
#c9c3ff): muted lavender for chips and inactive accents.
Dark Register (high-intent CTA)
- Text-as-button (
#211d1d): the near-black pill used for “Use Aave” / app-entry. - On-brand (
#ffffff): white label on the dark pill.
Gradient Pastels (ambient only)
- Gradient Pink (
#ffb8e6), Peach (#ffd6b8), Mint (#b8f0d6), Sky (#b8d6ff): the four pastel washes that compose hero gradients. Never used as functional UI fills.
Neutral / Text
- Text Muted (
#5c5658): secondary copy, captions. - Text Soft (
#8a8488): tertiary, helper text. - Text Faint (
#c4c0c2): placeholders, disabled.
Surface
- Surface (
#ffffff): card background. - Surface Soft (
#faf9ff): inset inputs, metric cards. - Surface Strong (
#f1eeff): pills, token chips.
Borders
- Border (
#e8e6ec): default hairline. - Border Strong (
#d5d2dd): emphasized dividers. - Border Soft (
#f2f1f6): faintest separation. - Border Brand (
#978fff): focus ring, selected card outline.
Semantic
- Success (
#1bbf8a): positive APY, confirmed states. - Warning (
#f5b948): health-factor caution, alerts. - Danger (
#f0506e): liquidation risk, errors. - Info (
#5b4fee): informational, also link color.
3. Typography Rules
Font Family
- Display + Body: Aave Repro — a custom low-contrast geometric grotesque used for everything from 72px headlines to 13px labels. Falls back to
system-ui→-apple-system→BlinkMacSystemFont→sans-serif. - Mono: system mono stack (
ui-monospace,SFMono-Regular,SF Mono,Menlo) for wallet addresses and hashes.
Hierarchy
| Role | Font | Size | Weight | LH | Tracking |
|---|---|---|---|---|---|
| display-hero | Aave Repro | 88 | 500 | 1.0 | -0.03em |
| display-lg | Aave Repro | 72 | 500 | 1.05 | -0.025em |
| h1 | Aave Repro | 72 | 500 | 1.05 | -0.022em |
| h2 | Aave Repro | 48 | 500 | 1.1 | -0.018em |
| h3 | Aave Repro | 32 | 500 | 1.2 | -0.012em |
| h4 | Aave Repro | 24 | 500 | 1.25 | -0.005em |
| h5 | Aave Repro | 20 | 600 | 1.3 | 0 |
| eyebrow | Aave Repro | 13 | 600 | 1.2 | 0.08em UPPER |
| metric | Aave Repro | 40 | 500 | 1.0 | -0.015em |
| body-lg | Aave Repro | 18 | 400 | 1.55 | 0 |
| body | Aave Repro | 16 | 400 | 1.55 | 0 |
| body-sm | Aave Repro | 14 | 400 | 1.5 | 0 |
| label | Aave Repro | 13 | 500 | 1.4 | 0 |
| button | Aave Repro | 16 | 500 | 1.0 | 0 |
| caption | Aave Repro | 12 | 500 | 1.4 | 0.02em |
| address | system mono | 13 | 400 | 1.5 | 0 |
Principles
- Aave Repro for everything. One typeface carries display through caption — the brand never mixes in a second sans. Mono is reserved strictly for addresses and hashes.
- Weight 500 dominates display. Headlines are medium, not bold — the softness comes from weight restraint, not thin strokes. Confident, never aggressive.
- Tight tracking scales with size. Hero −0.03em down to 0 at body. The negative tracking on large display knits letterforms into calm, solid headlines.
- Generous body line-height (1.55). Reading comfort over density; the page breathes.
- Large numerals for metrics. APY and TVL figures use the 40px display tier so financial numbers read as confident statements.
- Mixed-case display, uppercase eyebrows. Headlines are sentence case; only the small 13px eyebrows go uppercase with 0.08em tracking.
- No italics for emphasis. Emphasis comes from weight (500→600) and the lavender accent, not slant.
4. Component Stylings
Buttons (4 variants — all pill-radius)
Primary (lavender) — the soft ask:
- bg
#978fff, text#211d1d(near-black on lavender = 6.1:1, AA), 16px Aave Repro 500 - Padding 14×28, radius 9999 (pill, sampled live at 50px+)
- Hover: bg
#857cf5, subtle lifttranslateY(-1px)+ brand-glow shadow - Note: if a white label is required on lavender, deepen the fill to
#5b4fee(white = 5.5:1) —#978fffwith white text only passes at 2.7:1 (decorative).
Dark (high-intent) — the app-entry CTA (“Use Aave”):
- bg
#211d1d, text#ffffff(15:1, AAA), 16px Aave Repro 500 - Padding 14×28, radius 9999 (pill)
- Hover: bg lightens to
#352f2f, slight scale 1.02
Secondary (tint):
- bg
#ece9ff(brand-tint), text#5448d6(brand-strong), pill radius - Padding 12×26; hover: bg
#dedaff
Ghost:
- bg transparent, text
#211d1d, 1px#e8e6ecborder, pill radius, padding 12×24 - Hover: bg
#faf9ff, border#d5d2dd
Cards
- bg white
#ffffff, 24px radius, padding 24 - Soft lavender-tinted shadow
0 2px 16px rgba(151,143,255,0.08) - Hover: shadow deepens to
0 12px 32px rgba(151,143,255,0.16), optionalborder-brandoutline on selection
Metric Cards (the market-table cells)
- bg
#faf9ff(surface-soft), 16px radius, padding 20, 1px#f2f1f6border - 40px Aave Repro 500 numeral on top, 13px muted label below
- Positive APY rendered in
#1bbf8a(success), risk values in#f0506e(danger)
Badges / Tags / Pills
- Token pill: bg
#f1eeff(surface-strong), pill radius, token icon + symbol, 13px label - Status badge: pill, tinted fill matching semantic role (success-tint / warning-tint / danger-tint) with darker text
- Network chip: pill radius, network-color dot + name, soft border
Inputs / Forms
- bg
#faf9ff(surface-soft), 1px#e8e6ecborder, 12px radius, padding 12×16 - Placeholder
#c4c0c2, value#211d1d - Focus: border
#978fff, 3pxrgba(151,143,255,0.3)ring - Amount inputs (supply/borrow) use larger 24px display type, right-aligned, with a “MAX” lavender ghost button
Navigation
- 72px sticky header, white bg, faint bottom border
#f2f1f6on scroll - Aave ghost wordmark left, top-level nav center (Markets / Stake / Governance / Docs)
- Right: a lavender or dark “Use Aave” pill CTA
- Mobile: hamburger collapsing the center nav into a sheet
5. Layout Principles
Spacing System
- Base unit 4px. Scale: 0, 4, 8, 12, 16, 24, 32, 48, 64, 96, 128.
- Component padding clusters at 16-24px; section rhythm at 96-128px.
Grid & Container
- Page max width 1280px, centered, with 24px gutters that widen at desktop.
- Prose blocks cap at 720px for readability.
- Market tables span full container width; feature blocks use a 12-column grid (3-up desktop, 2-up tablet, stacked mobile).
Whitespace Philosophy
- Whitespace is the brand’s calm. Generous vertical rhythm (96-128px between sections) lets pastel gradient washes breathe behind content without crowding.
- Cards are never wall-to-wall — there’s always lavender-tinted negative space framing them.
Section Cadence
- Hero (gradient wash + 72px headline + dual CTA) → live market metrics → feature trio → trust/security band → footer.
- Each section alternates between pure white and a faint
#f7f6ff/#f1eefflavender background to segment without hard dividers.
6. Shapes & Radius Scale
| Tier | Value | Use |
|---|---|---|
| Micro | 4 | indicators, tiny chips |
| Standard | 8 | tooltips, small controls |
| Comfortable | 12 | inputs, dropdowns |
| Relaxed | 16 | metric cards |
| Featured | 24 | default cards (product hero) |
| Pill | 9999 | all buttons + token pills |
Aave runs soft across the board. The default card radius (24px) is at the upper end of the DeFi range, and buttons go fully pill. There are no sharp corners anywhere in the functional UI — every surface echoes the rounded ghost.
7. Depth & Elevation
| Level | Treatment | Use |
|---|---|---|
| 0 | none | flat sections on white |
| 1 | 0 2px 16px rgba(151,143,255,0.08) | resting cards |
| 2 | 0 12px 32px rgba(151,143,255,0.16) | card hover |
| 3 | 0 8px 28px rgba(151,143,255,0.28) | brand-glow on primary CTA hover |
| 4 | 0 24px 64px rgba(33,29,29,0.18) | modals, wallet sheet |
Shadow Philosophy
Shadows are lavender-tinted, not neutral-grey. Resting elevation is whisper-soft (8% alpha) so cards feel like they float a millimeter above white rather than casting hard depth. The brand-glow on CTA hover is the one place opacity climbs (28%) to make the lavender pill feel reachable. Modals are the only neutral-shadowed surface, using the warm near-black at 18% for a grounded overlay.
8. Interaction & Motion
Easing
- Standard:
cubic-bezier(0.4, 0, 0.2, 1)— material-style for most transitions. - Emphasized:
cubic-bezier(0.22, 1, 0.36, 1)— gentle overshoot for entrances and the ghost mascot’s float.
Durations
- Fast 150ms: hover color/shadow shifts.
- Standard 240ms: dropdowns, card expand, tab switches.
- Slow 360ms: section reveals, modal open.
Per-component micro-states
- Primary CTA: hover → deeper lavender +
translateY(-1px)+ brand-glow (240ms standard). - Card: hover → shadow level 1→2, optional brand-border fade (240ms).
- Metric numerals: count-up animation on scroll-into-view (emphasized, ~800ms once).
- Token selector: 240ms slide-down dropdown with soft fade.
- Ghost mascot: slow idle float (emphasized ease, ~3s loop) — purely decorative.
Page transitions
- Section content fades up 16px on scroll-into-view (emphasized, staggered ~60ms per item).
- Gradient washes shift hue subtly over a long loop — ambient, never attention-grabbing.
Reduced motion
- Respects
prefers-reduced-motion: reduce: count-ups jump to final value, ghost float and gradient drift freeze, fades become instant. No essential information lives in motion.
9. Accessibility & A11y
Computed contrast pairs (from live tokens)
- Text on bg —
#211d1don#ffffff= 16.7:1 (AAA, all sizes). - Near-black on brand —
#211d1don#978fff= 6.1:1 (AA, all sizes). This is the correct primary-button pairing: dark text on lavender. - White on brand —
#ffffffon#978fff= 2.7:1 (fails AA). The live “Download on iOS” pill uses white-on-lavender, which only passes for large/decorative text — for real white-on-purple labels, deepen to#5b4fee(= 5.5:1, AA) or#5448d6(= 6.4:1). - White on dark CTA —
#ffffffon#211d1d= 15:1 (AAA). - Link —
#5b4feeon#ffffff= 5.7:1 (AA).
Focus indicators
- 3px
#978ffffocus ring (orrgba(151,143,255,0.5)outer glow) on all interactive elements. Never remove outline without an equivalent.
ARIA patterns
- Token selectors as
role="combobox"witharia-expanded. - Market table as a real
<table>with scope headers; APY/risk values getaria-labelspelling out the number and unit. - Health-factor color is paired with text/icon so risk isn’t conveyed by color alone.
Keyboard nav
- Full tab order through nav → hero CTA → market rows → footer. Modal/wallet sheet traps focus and restores on close. Esc closes overlays.
Screen reader hints
- Truncated addresses expose the full value via
aria-labeland a copy button. Gradient washes and the ghost mascot arearia-hidden.
Reduced motion
- All count-ups, floats, and gradient drift honor
prefers-reduced-motion: reduce.
10. Responsive Behavior
| Breakpoint | Width | Behavior |
|---|---|---|
| mobile | <640 | hero 72→40px, single-column, nav → hamburger, CTAs full-width |
| tablet | 640–1024 | 2-up feature grid, market table scrolls horizontally |
| desktop | 1024–1280 | 3-up grid, full market table, dual-CTA hero |
| wide | >1536 | content caps at 1280, gradient washes extend to viewport edges |
- Touch targets: minimum 44×44px; pill CTAs are comfortably taller on mobile.
- Per-component collapsing: nav center links collapse into a sheet; market table becomes horizontally scrollable cards on mobile; metric cards stack single-column.
- Image / gradient behavior: pastel gradient washes scale to fill but reduce intensity on small screens to preserve text contrast. Ghost mascot shrinks and may drop on the smallest breakpoint.
- Container queries: market-table cells switch from row to stacked label/value layout below a card-width threshold rather than a viewport breakpoint.
11. Content & Voice
Tone
Calm and reassuring. Aave talks like a trustworthy institution that happens to be friendly — plain language about supplying, borrowing, and earning, with zero crypto hype, moon-talk, or urgency theater. Confidence comes from clarity, not exclamation points.
Microcopy patterns
- Primary CTA: “Use Aave” / “Get started” / “Supply” / “Borrow”
- Secondary: “Download on iOS” / “Read the docs” / “View markets”
- Errors: “Insufficient balance to supply” / “Health factor too low to borrow”
- Loading: “Confirming transaction…”
- Success: “Supplied 1,000 USDC — earning 3.2% APY”
Empty states
- Calm and instructive: “No positions yet. Supply an asset to start earning.” — paired with the ghost mascot and a single lavender CTA.
CTA verb conventions
- Use / Supply / Borrow / Earn / Stake / Withdraw — direct financial verbs.
- Avoid: “ape in”, “to the moon”, ”🚀”, urgency countdowns, or any speculative framing. Aave is a money market, not a casino.
12. Dark Mode & Theming
The marketing site (aave.com) is light-only — pure white canvas with the lavender brand and pastel gradient washes. The Aave app (app.aave.com) ships a dark theme: a deep near-black #1b1a1f-class background with the lavender #978fff brand carried through unchanged, and the pastel gradients dimmed to subtle glows. When building a dark variant of this system, keep #978fff as the constant brand anchor, swap white surfaces for warm-dark #1b1a1f/#26242b, lift text to #f5f3f7, and reduce gradient-wash opacity so it reads as ambient light rather than color blocks.
13. Lineage & Influences
Aave began in 2017 as ETHLend, a peer-to-peer lending dApp, before its 2020 rebrand to Aave — Finnish for “ghost” — under founder Stani Kulechov. The rename brought the mascot: a friendly, rounded ghost that signals trust and approachability in a category otherwise dominated by brutalist black-and-blue terminals. The ghost’s lavender-purple #978fff became the brand anchor, extended into pastel gradient washes (pink, peach, mint, sky) that give the marketing site a warm, almost candy register entirely unlike the austere DeFi default.
Typographically, Aave commissioned Aave Repro, a custom low-contrast geometric grotesque, and uses it everywhere from 72px headlines (weight 500) to 13px labels — a single-typeface discipline that keeps the system coherent. The choice to lean soft was strategic: where Compound and Curve courted power-users with dense brutalism, Aave deliberately designed to make a multibillion-dollar money market feel safe enough for first-time depositors. It shares that playful-color-over-brutalism instinct with Uniswap, and borrows gradient-wash-plus-clean-sans fintech polish from the Stripe lineage.
Named influences:
- Stani Kulechov (founder) — ETHLend → Aave 2020 rebrand and the ghost identity
- The Aave ghost mascot — friendly softness defining the lavender register
- Uniswap — DeFi peer that also chose playful color over brutalism
- Compound / Curve — brutalist DeFi peers Aave differentiated against
- Stripe marketing aesthetic — gradient-wash + clean-sans fintech reference
14. Do’s and Don’ts
Do
- Use lavender
#978ffffor the brand pill and accents — it’s the ghost’s color, the single identity anchor. - Pair dark text
#211d1don lavender CTAs (6.1:1, AA) — that’s the correct contrast. - Use the dark
#211d1dpill for high-intent app entry (“Use Aave”). - Set everything in Aave Repro (or system-ui fallback) at weight 500 for display.
- Go pill-radius on every button, 24px on cards.
- Render metrics large (40px display) — APY and TVL are the proof.
- Use pastel gradients as ambient washes only — pink/peach/mint/sky behind heroes.
- Keep the voice calm and reassuring — plain financial language.
- Tint shadows lavender
rgba(151,143,255,…), soft and low-alpha. - Honor
prefers-reduced-motion— freeze the ghost and gradient drift.
Don’t
- Don’t substitute the lavender.
#978fffis the brand, not a generic Tailwind purple. - Don’t put white text on
#978ffffor body-size labels — it fails at 2.7:1. Deepen to#5b4fee+ first. - Don’t mistake “Accept All” for brand. That dark pill is the cookie banner, not a brand CTA.
- Don’t introduce a second typeface. Aave Repro carries the whole system.
- Don’t use sharp corners. Everything echoes the rounded ghost.
- Don’t apply gradient pastels to functional fills — they’re ambient background only.
- Don’t use brutalist DeFi aesthetics — monospace-everywhere, hard black, electric blue. Soft lavender IS Aave.
- Don’t add crypto hype — no “ape in”, rockets, or urgency countdowns.
- Don’t hard-shadow with neutral grey — shadows are lavender-tinted.
- Don’t anthropomorphize the ghost into a hype character — it’s a calm trust signal, used sparingly.
15. Agent Prompt Guide
Quick Color Reference
- bg:
#ffffff - text:
#211d1d - brand (Aave lavender):
#978fff/ hover#857cf5 - brand-deep (white-text-safe):
#5b4fee - dark CTA pill:
#211d1d(white text) - brand-tint (secondary fill):
#ece9ff - gradient pastels: pink
#ffb8e6· peach#ffd6b8· mint#b8f0d6· sky#b8d6ff - border:
#e8e6ec - success
#1bbf8a· danger#f0506e
Example Component Prompts
Build an Aave-style hero: pure white canvas with a soft pastel gradient wash (lavender → pink → sky) drifting behind. 72px Aave Repro weight-500 headline “Earn interest on your crypto” with -0.022em tracking. Below it a dark
#211d1dpill CTA “Use Aave” (white text) next to a lavender#978fffpill “Download on iOS” (dark#211d1dtext). Calm, lots of whitespace.
Design an Aave market table: full-width container, rows of metric cards on
#faf9ff16px-radius surfaces. Each cell: 40px Aave Repro 500 numeral on top (supply APY in green#1bbf8a), 13px muted#5c5658label below. Soft lavender shadow0 2px 16px rgba(151,143,255,0.08).
Render an Aave supply card: white surface, 24px radius, lavender-tinted shadow. Asset row with token pill (
#f1eeffbg, icon + “USDC”), a large 24px right-aligned amount input with a lavender “MAX” ghost button, and a full-width lavender#978fff“Supply” pill CTA with dark text at the bottom.
Build an Aave primary button: lavender
#978ffffill, near-black#211d1d16px Aave Repro 500 label, pill radius, padding 14×28. Hover: bg#857cf5, lift 1px, lavender brand-glow shadow. (If white text is required, deepen fill to#5b4fee.)
Design an Aave dark CTA: near-black
#211d1dpill, white 16px Aave Repro 500 “Use Aave”, padding 14×28, radius 9999. Hover: lighten to#352f2f, scale 1.02.
Create an Aave empty state: centered ghost mascot illustration, 24px Aave Repro 500 “No positions yet”, 16px muted helper line “Supply an asset to start earning”, single lavender
#978fffpill CTA “Supply”.
Iteration Guide
- White canvas + lavender
#978fff+ Aave Repro + the ghost. That quartet is the brand. - Dark text on lavender CTAs (6.1:1) — never white text on
#978ffffor labels. - Two CTA registers: dark
#211d1dpill for app entry, lavender pill for soft asks. Same pill geometry, different intent. - Pill buttons, 24px cards, 12px inputs. Nothing sharp.
- Pastel gradient washes are ambient only — behind heroes, never on functional fills.
- Metrics go large (40px display) — the live market table is the product hero.
- Lavender-tinted soft shadows, low alpha, floating-not-grounded.
- Calm reassuring voice — reject crypto hype, urgency, and brutalist DeFi aesthetics. Soft lavender IS Aave.
Drop aave into your project, then ship the actual sections in an afternoon.
npx @webdesignhot/design-md add aave npx agentkit init --design aave