light · friendly · sans · crypto · defi · gradient

DESIGN.md inspired by Aave

Ghost-soft DeFi — lavender #978fff on white, custom Aave Repro sans, pastel gradients in a usually-brutalist lending space.

By webdesignhot · aave.com
$ npx @webdesignhot/design-md add aave
Learn more about the CLI
Compare to…
try on →
theme
1440 × 900
mobile · 390 × 844
Tokens webdesignhot/0.1
  • 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
Typography
Ship faster than ever.
display-hero "Aave Repro" 88px w500 -0.03em
Ship faster than ever.
display-lg "Aave Repro" 72px w500 -0.025em
Ship faster than ever.
h1 "Aave Repro" 72px w500 -0.022em
Built for teams that ship.
h2 "Aave Repro" 48px w500 -0.018em
The quick brown fox jumps over the lazy dog.
metric "Aave Repro" 40px w500 -0.015em
A complete kit
h3 "Aave Repro" 32px w500 -0.012em
The quick brown fox jumps over the lazy dog.
h4 "Aave Repro" 24px w500 -0.005em
The quick brown fox jumps over the lazy dog.
h5 "Aave Repro" 20px w600 0
The quick brown fox jumps over the lazy dog.
body-lg "Aave Repro" 18px w400 0
The quick brown fox jumps over the lazy dog.
body "Aave Repro" 16px w400 0
The quick brown fox jumps over the lazy dog.
button "Aave Repro" 16px w500 0
The quick brown fox jumps over the lazy dog.
body-sm "Aave Repro" 14px w400 0
The quick brown fox jumps over the lazy dog.
eyebrow "Aave Repro" 13px w600 0.08em
OUR DESIGN SYSTEM
label "Aave Repro" 13px w500 0
OUR DESIGN SYSTEM
caption "Aave Repro" 12px w500 0.02em
Spacing
  • 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
Radius
  • micro 4px
  • sm 8px
  • md 12px
  • lg 16px
  • xl 24px
  • pill 9999px
Components
Text link →
Card preview A complete kit — everything your product needs. Hero, pricing, FAQ, dashboard, docs — every layout your product needs.
New Stable v1.0
Design roles 7/8 mapped · webdesignhot/0.1

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
Lineage & influences

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.

Export 4 formats · paste-ready
Tailwind

theme.extend block for tailwind.config.js

tailwind.config.js
CSS variables

:root { --bg, --text, --brand, … } you can paste anywhere

design.css
DTCG JSON

W3C Design Tokens Community Group format

design.tokens.json
Figma Variables

Importable into Figma → Variables → Import

figma-variables.json
The file
---
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.
Prose

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-systemBlinkMacSystemFontsans-serif.
  • Mono: system mono stack (ui-monospace, SFMono-Regular, SF Mono, Menlo) for wallet addresses and hashes.

Hierarchy

RoleFontSizeWeightLHTracking
display-heroAave Repro885001.0-0.03em
display-lgAave Repro725001.05-0.025em
h1Aave Repro725001.05-0.022em
h2Aave Repro485001.1-0.018em
h3Aave Repro325001.2-0.012em
h4Aave Repro245001.25-0.005em
h5Aave Repro206001.30
eyebrowAave Repro136001.20.08em UPPER
metricAave Repro405001.0-0.015em
body-lgAave Repro184001.550
bodyAave Repro164001.550
body-smAave Repro144001.50
labelAave Repro135001.40
buttonAave Repro165001.00
captionAave Repro125001.40.02em
addresssystem mono134001.50

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
  • 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

TierValueUse
Micro4indicators, tiny chips
Standard8tooltips, small controls
Comfortable12inputs, dropdowns
Relaxed16metric cards
Featured24default cards (product hero)
Pill9999all 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

LevelTreatmentUse
0noneflat sections on white
10 2px 16px rgba(151,143,255,0.08)resting cards
20 12px 32px rgba(151,143,255,0.16)card hover
30 8px 28px rgba(151,143,255,0.28)brand-glow on primary CTA hover
40 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

BreakpointWidthBehavior
mobile<640hero 72→40px, single-column, nav → hamburger, CTAs full-width
tablet640–10242-up feature grid, market table scrolls horizontally
desktop1024–12803-up grid, full market table, dual-CTA hero
wide>1536content 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.
Ship with this

Drop aave into your project, then ship the actual sections in an afternoon.

1 · install design
npx @webdesignhot/design-md add aave
2 · ship landing page
npx agentkit init --design aave
How AgentKit reads DESIGN.md