DESIGN.md inspired by Jupiter
Jupiter lime on near-black — Solana DeFi aggregator with Inter, a cat-in-space mascot, and playful pill-CTA energy.
Compare to…
- bg
#090d10 - bg-deep
#05080a - bg-section
#0d1318 - surface
#19242e - surface-soft
#111922 - surface-strong
#212a36 - brand AAA · 15.3
#c7f284 - brand-hover
#d5f79c - brand-pressed
#b6e96a - brand-deep
#9fd34f - brand-tint
rgba(199, 242, 132, 0.10) - brand-soft
rgba(199, 242, 132, 0.25) - on-brand
#090d10 - text AAA · 19.5
#ffffff - text-strong
#ffffff - text-bright
#e2e8f0 - text-muted
#cad5e2 - text-soft
#90a1b9 - text-faint AA·LG · 4.1
#62748e - link
#c7f284 - link-hover
#d5f79c - selected-bg
rgba(199, 242, 132, 0.12) - border — · 1.3
#1c2530 - border-strong — · 1.6
#2a3542 - border-soft
#141c24 - border-brand
#c7f284 - connect-bg
#212a36 - connect-text
#cad5e2 - success
#4ade80 - warning
#fbbf24 - danger
#f87171 - info
#60a5fa
- 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
- micro
2px - sm
4px - md
8px - lg
12px - xl
16px - 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
Jupiter's design system descends from Solana's playful-but-technical DeFi culture, but deliberately diverges from the brutalist black-and-cyan default of most aggregators. The signature lime-green `#c7f284` is the brand's defining choice — a soft chartreuse that reads warmer and friendlier than Solana's neon `#14f195`, glowing against the near-black `#090d10` canvas. Inter handles every weight (the Vercel/Linear-era neutral sans), keeping the type voice clean while the cat-and-space mascot carries the personality. Full-pill action chips and an 8px-radius slate "Connect" button (`#212a36`) set the interaction language; slate-blue UI text (`#cad5e2`, `#90a1b9`) keeps secondary copy quiet so the lime can pop. The result is DeFi-for-everyone: a serious liquidity router wearing an approachable, slightly whimsical face.
- Layer 1 chain and ecosystem register Jupiter is built on
- neutral neo-grotesque sans for the entire type system
- Solana wallet peer — shared dark-DeFi UI conventions
- playful-confident DeFi precedent rejecting brutalism
- aggregator brand and lime-green identity origin
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: Jupiter
tagline: Jupiter lime on near-black — Solana DeFi aggregator with Inter, a cat-in-space mascot, and playful pill-CTA energy.
updated_at: 2026-05-28T23:13:47.824Z
published_at: 2026-05-28T23:13:47.824Z
author: webdesignhot
source_url: https://jup.ag
spec: webdesignhot/0.1
quality: curated
featured: false
categories: [fintech]
tags: [dark, playful, sans, crypto, defi, green]
preview_swatch: ['#090d10', '#c7f284', '#212a36']
related: [solana-com, phantom-app]
description: 'Jupiter (JUP) is Solana''s dominant DeFi aggregator, and its site reads as playful-DeFi rather than brutalist-DeFi. The canvas is a near-black `#090d10` (rgb 9,13,16), body sits in Inter, and the brand identity is the signature Jupiter lime-green `#c7f284` — a soft chartreuse that glows against the dark and anchors brand marks, reward chips, and accent moments. Where Solana went cinematic-gradient and Phantom went editorial-restrained, Jupiter leaned playful-confident: a cat-and-space mascot, full-pill action chips, an 8px-radius "Connect" wallet button in slate `#212a36`, and slate-blue UI text `#cad5e2` / `#90a1b9`. The voice is warm-crypto-native, the Solana register without the jargon wall: "The Home of Onchain Finance". The whole brand reads as DeFi-for-everyone — deep enough to route liquidity across every Solana DEX, friendly enough that a cat in a spacesuit feels right at home.'
# 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: '#090d10'
bg-deep: '#05080a'
bg-section: '#0d1318'
surface: '#19242e'
surface-soft: '#111922'
surface-strong: '#212a36'
brand: '#c7f284'
brand-hover: '#d5f79c'
brand-pressed: '#b6e96a'
brand-deep: '#9fd34f'
brand-tint: 'rgba(199, 242, 132, 0.10)'
brand-soft: 'rgba(199, 242, 132, 0.25)'
on-brand: '#090d10'
text: '#ffffff'
text-strong: '#ffffff'
text-bright: '#e2e8f0'
text-muted: '#cad5e2'
text-soft: '#90a1b9'
text-faint: '#62748e'
link: '#c7f284'
link-hover: '#d5f79c'
selected-bg: 'rgba(199, 242, 132, 0.12)'
border: '#1c2530'
border-strong: '#2a3542'
border-soft: '#141c24'
border-brand: '#c7f284'
connect-bg: '#212a36'
connect-text: '#cad5e2'
success: '#4ade80'
warning: '#fbbf24'
danger: '#f87171'
info: '#60a5fa'
typography:
display:
family: 'Inter, system-ui, -apple-system, sans-serif'
weights: [500, 600, 700]
body:
family: 'Inter, system-ui, -apple-system, sans-serif'
weights: [400, 500, 600]
mono:
family: 'ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace'
weights: [400, 500]
scale:
display-hero: { size: 80, weight: 700, lineHeight: 1.0, tracking: '-0.03em', family: display }
display-lg: { size: 56, weight: 700, lineHeight: 1.05, tracking: '-0.02em', family: display }
h1: { size: 40, weight: 700, lineHeight: 1.1, tracking: '-0.018em', family: display }
h2: { size: 32, weight: 600, lineHeight: 1.2, tracking: '-0.012em', family: display }
h3: { size: 24, weight: 600, lineHeight: 1.25, tracking: '-0.005em', family: display }
h4: { size: 20, weight: 600, lineHeight: 1.3, tracking: '0', 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 }
caption: { size: 12, weight: 500, lineHeight: 1.4, tracking: '0.02em', family: body }
amount: { size: 36, weight: 600, lineHeight: 1.0, tracking: '-0.012em', family: display }
address: { size: 13, weight: 400, lineHeight: 1.5, tracking: '0', family: mono }
radius:
micro: 2
sm: 4
md: 8
lg: 12
xl: 16
pill: 9999
spacing:
base: 4
scale: [0, 4, 8, 12, 16, 24, 32, 48, 64, 96]
layout:
page-width: 1280
prose-width: 720
header-height: 64
motion:
ease-standard: 'cubic-bezier(0.4, 0, 0.2, 1)'
ease-emphasized: 'cubic-bezier(0.34, 1.56, 0.64, 1)'
duration-fast: 150
duration-standard: 240
duration-slow: 320
reduced-motion: 'respects prefers-reduced-motion: reduce'
breakpoints:
mobile: 640
tablet: 1024
desktop: 1280
wide: 1536
shadows:
card: '0 2px 12px rgba(0, 0, 0, 0.40)'
card-hover: '0 8px 24px rgba(0, 0, 0, 0.55)'
glow: '0 0 0 1px rgba(199, 242, 132, 0.20), 0 8px 32px rgba(199, 242, 132, 0.12)'
modal: '0 24px 64px rgba(0, 0, 0, 0.70)'
accessibility:
contrast-text-on-bg: 19.2
contrast-brand-on-bg: 15.4
contrast-on-brand-on-brand: 14.9
focus-ring: '2px solid #c7f284'
reduced-motion-honored: true
components:
button-primary: { bg: brand, text: on-brand, padding: '10px 20px', radius: pill }
button-connect: { bg: surface-strong, text: text-muted, padding: '10px 16px', radius: 8 }
button-ghost: { bg: transparent, text: text, border: border, padding: '10px 16px', radius: 8 }
button-chip: { bg: brand-tint, text: brand, padding: '6px 14px', radius: pill }
card: { bg: surface-soft, border: '1px solid border', radius: 12, padding: 24, shadow: 'card' }
input: { bg: bg-deep, border: '1px solid border', text: text, radius: 8, padding: '10px 14px', focus-border: brand }
lineage:
summary: 'Jupiter''s design system descends from Solana''s playful-but-technical DeFi culture, but deliberately diverges from the brutalist black-and-cyan default of most aggregators. The signature lime-green `#c7f284` is the brand''s defining choice — a soft chartreuse that reads warmer and friendlier than Solana''s neon `#14f195`, glowing against the near-black `#090d10` canvas. Inter handles every weight (the Vercel/Linear-era neutral sans), keeping the type voice clean while the cat-and-space mascot carries the personality. Full-pill action chips and an 8px-radius slate "Connect" button (`#212a36`) set the interaction language; slate-blue UI text (`#cad5e2`, `#90a1b9`) keeps secondary copy quiet so the lime can pop. The result is DeFi-for-everyone: a serious liquidity router wearing an approachable, slightly whimsical face.'
influences:
- { name: 'Solana', role: 'Layer 1 chain and ecosystem register Jupiter is built on', url: 'https://solana.com' }
- { name: 'Inter by Rasmus Andersson', role: 'neutral neo-grotesque sans for the entire type system', url: 'https://rsms.me/inter/' }
- { name: 'Phantom', role: 'Solana wallet peer — shared dark-DeFi UI conventions', url: 'https://phantom.app' }
- { name: 'Uniswap', role: 'playful-confident DeFi precedent rejecting brutalism', url: 'https://uniswap.org' }
- { name: 'Jupiter / JUP', role: 'aggregator brand and lime-green identity origin', url: 'https://jup.ag' }
---
## 1. Visual Theme & Atmosphere
Jupiter is the Solana DeFi aggregator that decided seriousness and play could share a screen. The canvas is a near-black `#090d10` (rgb 9, 13, 16) — not true black, but a cool, slightly blue-leaning charcoal that softens the contrast and lets the brand color glow rather than scream. Body text sits in **Inter** at 16px, the same neutral neo-grotesque that Vercel and Linear made the default voice of modern product UI. The brand identity is the signature **Jupiter lime-green** `#c7f284` — a soft chartreuse that anchors brand marks, reward chips, and accent highlights. It is warmer and gentler than Solana's neon mint `#14f195`, and that warmth is the whole point: Jupiter is the friendly face of onchain finance.
Where Solana went cinematic-gradient and Phantom went editorial-restrained, Jupiter leaned **playful-confident**. The cat-and-space mascot is the brand's personality engine — a small astronaut cat that turns a liquidity-routing protocol into something you'd actually want to hang out with. Action moments are full-pill chips; the "Rewards" chip glows lime against the dark, the "Search anything /" affordance sits in a translucent slate field, and the headline "Connect" wallet button is an 8px-radius slate rectangle in `#212a36` with slate-blue label text `#cad5e2`. Two interaction shapes coexist on purpose: the soft pill for brand/marketing moments, the tighter 8px rectangle for the utilitarian wallet action.
The supporting palette is a cool slate-blue ramp — `#e2e8f0` for bright headings, `#cad5e2` for primary UI text, `#90a1b9` for muted secondary copy, `#62748e` for the faintest captions. Nothing competes with the lime. Surfaces lift off the canvas in subtle steps (`#111922` → `#19242e` → `#212a36`), and depth comes from dark shadows and the occasional lime glow rather than from heavy borders. The atmosphere is dark, calm, and quietly energetic — a trading floor that happens to have a cat in a spacesuit floating past.
The whole brand reads as **DeFi-for-everyone**: deep enough to route a swap across every Solana DEX for the best price, friendly enough that the playful register never feels like a costume. Lime is the energy; near-black is the focus; Inter is the clarity; the cat is the smile.
**Key Characteristics:**
- Near-black `#090d10` canvas (rgb 9, 13, 16) — cool charcoal, not true black
- Signature Jupiter lime-green `#c7f284` brand accent (warmer than Solana mint)
- Inter for the entire type system (display + body)
- Cat-and-space mascot as the personality engine
- Two CTA shapes: full-pill brand chips + 8px-radius slate "Connect" button
- Slate-blue UI text ramp (`#e2e8f0` → `#cad5e2` → `#90a1b9` → `#62748e`)
- Translucent lime tints for chips and selection states
- Subtle stepped dark surfaces with lime-glow accents instead of heavy borders
- Warm, crypto-native, jargon-light voice ("The Home of Onchain Finance")
- Playful-DeFi register that deliberately rejects brutalist black-and-cyan
## 2. Color Palette & Roles
### Canvas / Background
- **Background** (`#090d10`): near-black canvas, rgb 9, 13, 16 — the live page bg.
- **Bg Deep** (`#05080a`): deepest recessed wells, input fields.
- **Bg Section** (`#0d1318`): alternate section banding, one step up from canvas.
### Surface
- **Surface Soft** (`#111922`): default card surface, one step off the canvas.
- **Surface** (`#19242e`): mid-elevation panels, search field fill.
- **Surface Strong** (`#212a36`): "Connect" button bg and topmost interactive surfaces.
### Text
- **Text** (`#ffffff`): pure white for primary body and high-emphasis copy.
- **Text Bright** (`#e2e8f0`): bright slate for large headings.
- **Text Muted** (`#cad5e2`): primary UI label text (the live "Connect" label color).
- **Text Soft** (`#90a1b9`): muted secondary copy, placeholder text.
- **Text Faint** (`#62748e`): faintest captions and disabled labels.
### Brand — Jupiter Lime
- **Brand** (`#c7f284`): the signature lime accent — brand marks, reward chips, links.
- **Brand Hover** (`#d5f79c`): lighter lime on hover.
- **Brand Pressed** (`#b6e96a`): pressed/active lime.
- **Brand Deep** (`#9fd34f`): deepest lime for fine text on lime or dense fills.
- **Brand Tint** (`rgba(199, 242, 132, 0.10)`): translucent lime chip backgrounds.
- **On Brand** (`#090d10`): near-black text placed on a lime fill.
### Borders
- **Border** (`#1c2530`): default hairline separators on the dark canvas.
- **Border Strong** (`#2a3542`): emphasized dividers and card edges.
- **Border Soft** (`#141c24`): faint internal separators.
- **Border Brand** (`#c7f284`): lime focus ring and active-state outline.
### Semantic
- **Success** (`#4ade80`): confirmed swaps, positive deltas.
- **Warning** (`#fbbf24`): slippage and caution notices.
- **Danger** (`#f87171`): failed transactions, negative deltas.
- **Info** (`#60a5fa`): neutral informational chips.
## 3. Typography Rules
### Font Family
- **Display + Body**: `Inter, system-ui, -apple-system, sans-serif`. Inter carries every weight; system fonts are the graceful fallback. This is the live computed body font.
- **Mono**: `ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace` for wallet addresses, token amounts in dense contexts, and code.
### Hierarchy
| Role | Font | Size | Weight | LH | Tracking |
|------|------|------|--------|-----|----------|
| display-hero | Inter | 80 | 700 | 1.0 | -0.03em |
| display-lg | Inter | 56 | 700 | 1.05 | -0.02em |
| h1 | Inter | 40 | 700 | 1.1 | -0.018em |
| h2 | Inter | 32 | 600 | 1.2 | -0.012em |
| h3 | Inter | 24 | 600 | 1.25 | -0.005em |
| h4 | Inter | 20 | 600 | 1.3 | 0 |
| body-lg | Inter | 18 | 400 | 1.55 | 0 |
| body | Inter | 16 | 400 | 1.55 | 0 |
| body-sm | Inter | 14 | 400 | 1.5 | 0 |
| label | Inter | 13 | 500 | 1.4 | 0 |
| caption | Inter | 12 | 500 | 1.4 | 0.02em |
| amount | Inter | 36 | 600 | 1.0 | -0.012em |
| address | Mono | 13 | 400 | 1.5 | 0 |
| button | Inter | 14 | 600 | 1.0 | 0 |
| nav-link | Inter | 14 | 500 | 1.0 | 0 |
### Principles
- **Inter for everything**, mono reserved for addresses and dense numeric data.
- **700 weight only on display + h1** — confident headlines without shouting.
- **600 on h2–h4 and amounts** — substantial but lighter than the hero.
- **Tight negative tracking on display** (-0.03em hero, easing toward 0 by body).
- **Body line-height stays generous at 1.55** — readable in long-form copy on dark.
- **Slate-blue text colors, not pure white, for secondary copy** — keeps the lime legible as the loudest element.
- **Mixed case throughout** — no all-caps headlines; caption is the only tracked-out role.
## 4. Component Stylings
### Buttons (4 variants)
**Primary (Lime pill)** — the brand action:
- bg `#c7f284`, text `#090d10` (near-black), Inter 14px 600
- Padding 10×20, radius 9999 (full pill)
- Hover: bg `#d5f79c`; Active: bg `#b6e96a`
- Optional lime glow shadow on emphasis: `0 0 0 1px rgba(199,242,132,0.20), 0 8px 32px rgba(199,242,132,0.12)`
**Connect (Slate 8px)** — the wallet action (live spec):
- bg `#212a36`, text `#cad5e2`, Inter 14px 600
- Padding 10×16, radius **8px** (the one place the pill is rejected)
- Hover: bg `#2a3542`, text `#ffffff`
**Chip (Lime tint pill)** — reward/status chips like "Rewards":
- bg `rgba(199,242,132,0.10)`, text `#c7f284`, Inter 13px 500
- Padding 6×14, radius 9999 (full pill)
- Hover: bg `rgba(199,242,132,0.18)`
**Ghost** — quiet tertiary:
- bg transparent, text `#cad5e2`, 1px border `#1c2530`, radius 8
- Hover: bg `#111922`, border `#2a3542`
### Cards
- bg `#111922`, 1px border `#1c2530`, **12px radius**, padding 24
- Dark shadow `0 2px 12px rgba(0,0,0,0.40)`
- Hover: lift to `0 8px 24px rgba(0,0,0,0.55)`, optional border `#2a3542`
- Feature cards may carry a single lime accent (icon, top hairline, or chip)
### Badges / Tags / Pills
- **Reward/status chip**: lime tint bg, lime text, full pill (see Chip button above)
- **Token pill**: surface-strong `#212a36` bg, white text, token icon left, full pill
- **Semantic badge**: tinted bg of the semantic color at 12% alpha, matching text
- **Count badge**: lime `#c7f284` bg, near-black text, micro pill
### Inputs / Forms
- bg `#05080a` (bg-deep), 1px border `#1c2530`, text `#ffffff`, **8px radius**, padding 10×14
- Placeholder `#90a1b9`
- Focus: 2px lime ring `#c7f284`, border `#c7f284`
- The "Search anything /" field uses translucent slate fill `#19242e` with a `/` keyboard hint right-aligned in `#90a1b9`
### Navigation
- 64px sticky header, bg `#090d10` (canvas) with a faint bottom hairline `#1c2530`
- Jupiter wordmark + cat mark left; top-level nav links center in Inter 14px 500 `#cad5e2`
- "Search anything /" field and "Connect" slate 8px button right
- Active/hover nav link: text brightens `#cad5e2` → `#ffffff`, optional lime underline
## 5. Layout Principles
### Spacing System
- Base unit **4px**; scale `[0, 4, 8, 12, 16, 24, 32, 48, 64, 96]`.
- Component padding clusters at 16–24px; section rhythm at 64–96px.
### Grid & Container
- Page max width **1280px**, centered with generous side gutters.
- Prose max width **720px** for long-form readability.
- Feature grids: 3-up at desktop, 2-up at tablet, 1-up at mobile.
### Whitespace Philosophy
- Dark canvas does the breathing — negative space is the near-black itself, not white margin.
- Cards float on the canvas with clear gaps; avoid edge-to-edge density.
- The lime accent is rationed; one lime moment per visual cluster keeps it precious.
### Section Cadence
- Hero with mascot → value props → aggregator/product feature grid → ecosystem/stats band → footer.
- Alternate `#090d10` and `#0d1318` section bands for quiet rhythm without hard dividers.
## 6. Shapes & Radius Scale
| Tier | Value | Use |
|------|-------|-----|
| Micro | 2 | tiny indicators, progress nubs |
| Standard | 4 | small chips, inline tags |
| Comfortable | 8 | **inputs + "Connect" button** (live spec) |
| Relaxed | 12 | **default cards** |
| Large | 16 | featured panels, modals |
| Pill | 9999 | **brand CTAs, reward chips, token pills** |
The defining tension is **8px utility vs. full-pill brand**: the "Connect" wallet action is a tight 8px rectangle, while marketing CTAs and reward chips are full pills. Honor both — never pill the Connect button, never square the reward chips.
## 7. Depth & Elevation
| Level | Treatment | Use |
|-------|-----------|-----|
| 0 | flat on `#090d10`, no shadow | page canvas, section bands |
| 1 | `0 2px 12px rgba(0,0,0,0.40)` | resting cards on `#111922` |
| 2 | `0 8px 24px rgba(0,0,0,0.55)` | hovered cards, dropdowns |
| 3 | `0 0 0 1px rgba(199,242,132,0.20), 0 8px 32px rgba(199,242,132,0.12)` | lime-glow emphasis on hero CTA |
| 4 | `0 24px 64px rgba(0,0,0,0.70)` | modals, wallet-connect overlay |
**Shadow Philosophy:** On a near-black canvas, depth reads through darker, softer shadows and subtle surface-lightness steps rather than crisp drop shadows. Elevation is communicated mostly by surface color (`#111922` → `#19242e` → `#212a36`), with shadow as a secondary cue. The lime glow is the one expressive elevation — reserved for the single most important action on a screen.
## 8. Interaction & Motion
- **Easing**: standard `cubic-bezier(0.4, 0, 0.2, 1)` for most transitions; emphasized `cubic-bezier(0.34, 1.56, 0.64, 1)` for playful overshoot on mascot and celebrate states.
- **Durations**: fast 150ms (hover, color), standard 240ms (panels, dropdowns), slow 320ms (page-level reveals, mascot animation).
- **Buttons**: 150ms bg + text color shift; lime CTA may pulse its glow on hover; "Connect" brightens slate bg and label.
- **Cards**: 240ms shadow + border lift on hover; no scale by default (keep dark UI calm).
- **Chips**: 150ms tint deepen on hover.
- **Mascot**: gentle idle float/bob using emphasized easing; never blocks content or interaction.
- **Page transitions**: 320ms fade + small upward translate on section reveal.
- **Reduced motion**: with `prefers-reduced-motion: reduce`, drop mascot animation, translate, and glow pulse; keep instant color/opacity feedback only.
## 9. Accessibility & A11y
### Computed contrast pairs (from live bg `#090d10`, text `#ffffff`, brand `#c7f284`)
- **Text `#ffffff` on bg `#090d10`** = **19.2:1** — AAA (body and headings).
- **Brand lime `#c7f284` on bg `#090d10`** = **15.4:1** — AAA (lime text/links on dark read effortlessly).
- **On-brand `#090d10` on brand `#c7f284`** = **14.9:1** — AAA (near-black on lime is the correct pairing for lime CTAs).
- **Text Muted `#cad5e2` on bg `#090d10`** = ~13.9:1 — AAA (UI labels).
- **Text Soft `#90a1b9` on bg `#090d10`** = ~7.3:1 — AAA for normal text (secondary copy).
- **Text Faint `#62748e` on bg `#090d10`** = ~3.6:1 — AA for large text only; avoid for body.
### Patterns
- **Focus indicators**: 2px lime ring `#c7f284` (15.4:1 on canvas) — high-visibility on dark.
- **Never use white text on the lime fill** — invert to near-black `#090d10`; white on lime fails contrast.
- **ARIA**: wallet-connect is a modal dialog (`role="dialog"`, focus-trapped); token selectors are `role="combobox"`; reward chips expose `aria-label` with full status.
- **Keyboard nav**: `/` focuses the search field (matches the visible hint); full tab order through nav, CTA, and modal.
- **Screen reader**: the mascot is decorative (`aria-hidden="true"`); truncated addresses expose the full value via `aria-label`/title.
- **Reduced motion**: honored — mascot and glow animations suppressed.
## 10. Responsive Behavior
| Breakpoint | Width | Behavior |
|-----------|-------|----------|
| mobile | <640 | hero 80→40; nav collapses to hamburger; single-column; full-width CTAs |
| tablet | 640–1023 | 2-up feature grids; condensed nav; mascot scales down |
| desktop | 1024–1279 | full nav; 3-up grids; mascot at full size |
| wide | ≥1536 | content capped at 1280px; extra canvas gutter |
- **Touch targets**: minimum 44×44px; pills and the 8px Connect button both meet it with 10px+ vertical padding.
- **Collapsing**: search field collapses to an icon on mobile; nav links move into a sheet; reward chips wrap or scroll horizontally.
- **Images / mascot**: mascot is decorative and may be hidden below tablet to protect layout; never let it overlap CTAs.
## 11. Content & Voice
### Tone
**Warm, crypto-native, jargon-light.** Jupiter speaks the Solana-DeFi register but keeps it human — confident about routing and liquidity, never gatekeeping. The tagline "The Home of Onchain Finance" sets the register: inviting, not intimidating.
### Microcopy patterns
- Primary CTAs: **"Connect"** / **"Swap"** / **"Trade"** / **"Get started"**
- Status chips: **"Rewards"**, **"Earn"**, **"Pro"**
- Search affordance: **"Search anything /"** (with the `/` keyboard hint)
- Errors: **"Insufficient SOL balance — add funds to swap"**
- Loading: **"Finding the best route…"**
- Success: **"Swapped 100 USDC for 0.65 SOL"**
### Empty states
- Pair empty states with the mascot and a single lime CTA — e.g. "No positions yet — make your first swap."
### CTA verb conventions
- **Connect / Swap / Trade / Earn / Bridge / Get started**
- Avoid: brutalist all-caps shouting, dense jargon walls, NFT-bro slang.
## 12. Dark Mode & Theming
**Dark-native** — Jupiter is built dark-first on the near-black `#090d10` canvas. There is no separate light theme on the marketing/app surfaces; the dark canvas *is* the brand. The lime `#c7f284`, slate UI text ramp, and stepped surfaces are all tuned for the dark register. If a light context is ever required (e.g. embeds or docs), keep the lime as the brand but deepen it toward `#9fd34f` so it holds contrast on a light background — never place the dark-tuned `#c7f284` on white as a text color without darkening it.
## 13. Lineage & Influences
Jupiter's design descends from Solana's playful-but-technical DeFi culture, yet it deliberately diverges from the brutalist black-and-cyan default of most aggregators. The defining choice is the lime-green `#c7f284` — a soft chartreuse that reads warmer and friendlier than Solana's neon mint `#14f195`, glowing against the near-black `#090d10` canvas instead of competing with it. Inter handles the entire type system, the same neutral neo-grotesque that Vercel and Linear made the default voice of modern product UI, which keeps the typography clean while the cat-and-space mascot carries the personality.
The interaction language pairs full-pill brand chips (the lime "Rewards" chip, token pills) with a tight 8px-radius slate "Connect" button `#212a36` — two shapes coexisting on purpose. Slate-blue UI text (`#cad5e2`, `#90a1b9`) keeps secondary copy quiet so the lime stays the loudest element. The lineage is Solana-native but the spirit is closer to Uniswap's playful-confident rejection of DeFi brutalism: a serious liquidity router wearing an approachable, slightly whimsical face.
**Named influences:**
- **Solana** — the Layer 1 chain and ecosystem register Jupiter is built on
- **Inter by Rasmus Andersson** — neutral neo-grotesque sans for the whole system
- **Phantom** — Solana wallet peer sharing dark-DeFi UI conventions
- **Uniswap** — playful-confident DeFi precedent that rejects brutalism
- **Jupiter / JUP** — the aggregator brand and lime-green identity origin
## 14. Do's and Don'ts
### Do
- **Use near-black `#090d10` (rgb 9, 13, 16) as the canvas** — the exact live bg, not pure black.
- **Use Jupiter lime `#c7f284` as the brand accent** — rationed, one moment per cluster.
- **Put near-black `#090d10` text on lime fills**, never white.
- **Use Inter for everything**; mono only for addresses and dense numbers.
- **Pill brand CTAs and reward chips** (full 9999 radius).
- **Use 8px radius for the "Connect" button and inputs** — the utility shape.
- **Keep secondary copy in the slate-blue ramp** (`#cad5e2`, `#90a1b9`).
- **Use the cat-and-space mascot for personality and empty states.**
- **Communicate depth through stepped surfaces** before reaching for shadows.
- **Reserve the lime glow for the single most important action on a screen.**
### Don't
- **Don't substitute the lime.** `#c7f284` is the brand, not Tailwind lime/green or Solana's `#14f195`.
- **Don't use pure black `#000000`** — the canvas is the warmer `#090d10`.
- **Don't put white text on the lime fill** — it fails contrast; invert to near-black.
- **Don't pill the "Connect" button** — it is intentionally an 8px rectangle.
- **Don't square the reward/brand chips** — they are full pills.
- **Don't all-caps headlines** — Inter stays mixed-case.
- **Don't drown the screen in lime** — over-use kills the glow.
- **Don't anthropomorphize the mascot into product copy** — it is personality, not a spokesperson.
- **Don't add gradient fills to the lime CTA** — keep it flat.
- **Don't adopt brutalist black-and-cyan DeFi aesthetics** — warm lime on near-black IS Jupiter.
## 15. Agent Prompt Guide
### Quick Color Reference
- bg (canvas): `#090d10`
- bg-deep: `#05080a`
- surface: `#19242e` / surface-strong: `#212a36`
- text (white): `#ffffff`
- text-muted (UI label): `#cad5e2`
- text-soft: `#90a1b9`
- brand (Jupiter lime): `#c7f284` / hover `#d5f79c`
- on-brand (text on lime): `#090d10`
- connect button bg: `#212a36`
- border: `#1c2530`
### Example Component Prompts
> Build a Jupiter-style hero: near-black `#090d10` canvas, 80px Inter 700 -0.03em headline "The Home of Onchain Finance" in white, a cat-in-a-spacesuit mascot floating beside it, and a lime `#c7f284` full-pill CTA "Get started" with near-black `#090d10` text. Quiet slate-blue `#90a1b9` subhead below.
> Design a "Connect" wallet button: slate `#212a36` bg, slate-blue `#cad5e2` text, Inter 14px 600, 8px radius (not a pill), padding 10×16. Hover: bg `#2a3542`, text white.
> Render a reward chip: full-pill, translucent lime bg `rgba(199,242,132,0.10)`, lime `#c7f284` text, Inter 13px 500, padding 6×14, with a small star/gift icon left.
> Build a swap card: surface `#111922`, 1px border `#1c2530`, 12px radius, padding 24, dark shadow. "From" and "To" sections with `#05080a` inputs (8px radius, lime focus ring), token pills in `#212a36`, and a full-pill lime "Swap" CTA at the bottom with near-black text.
> Design a search field: translucent slate `#19242e` fill, placeholder "Search anything" in `#90a1b9`, a `/` keyboard hint right-aligned, 8px radius, lime `#c7f284` focus border.
> Create a feature grid card: near-black canvas, `#111922` card surface, white 24px Inter 600 title, slate `#90a1b9` body, a single lime `#c7f284` icon as the one accent, 12px radius.
### Iteration Guide
1. **Near-black `#090d10` + Jupiter lime `#c7f284` + Inter + the cat mascot** — get these four right first.
2. **Ration the lime** — one lime moment per visual cluster; if everything is lime, nothing is.
3. **Near-black text on lime, never white** — fix this contrast trap immediately.
4. **Two CTA shapes**: full-pill for brand/chips, 8px rectangle for "Connect" and inputs.
5. **Keep secondary copy in slate-blue** (`#cad5e2` / `#90a1b9`) so the lime stays loudest.
6. **Depth via stepped surfaces** (`#111922` → `#19242e` → `#212a36`) before shadows; reserve the lime glow for the one hero action.
7. **Mascot is personality, not chrome** — use it in heroes and empty states, never overlapping CTAs.
8. **Reject brutalist black-and-cyan** — warm lime on warm near-black is the whole identity.
1. Visual Theme & Atmosphere
Jupiter is the Solana DeFi aggregator that decided seriousness and play could share a screen. The canvas is a near-black #090d10 (rgb 9, 13, 16) — not true black, but a cool, slightly blue-leaning charcoal that softens the contrast and lets the brand color glow rather than scream. Body text sits in Inter at 16px, the same neutral neo-grotesque that Vercel and Linear made the default voice of modern product UI. The brand identity is the signature Jupiter lime-green #c7f284 — a soft chartreuse that anchors brand marks, reward chips, and accent highlights. It is warmer and gentler than Solana’s neon mint #14f195, and that warmth is the whole point: Jupiter is the friendly face of onchain finance.
Where Solana went cinematic-gradient and Phantom went editorial-restrained, Jupiter leaned playful-confident. The cat-and-space mascot is the brand’s personality engine — a small astronaut cat that turns a liquidity-routing protocol into something you’d actually want to hang out with. Action moments are full-pill chips; the “Rewards” chip glows lime against the dark, the “Search anything /” affordance sits in a translucent slate field, and the headline “Connect” wallet button is an 8px-radius slate rectangle in #212a36 with slate-blue label text #cad5e2. Two interaction shapes coexist on purpose: the soft pill for brand/marketing moments, the tighter 8px rectangle for the utilitarian wallet action.
The supporting palette is a cool slate-blue ramp — #e2e8f0 for bright headings, #cad5e2 for primary UI text, #90a1b9 for muted secondary copy, #62748e for the faintest captions. Nothing competes with the lime. Surfaces lift off the canvas in subtle steps (#111922 → #19242e → #212a36), and depth comes from dark shadows and the occasional lime glow rather than from heavy borders. The atmosphere is dark, calm, and quietly energetic — a trading floor that happens to have a cat in a spacesuit floating past.
The whole brand reads as DeFi-for-everyone: deep enough to route a swap across every Solana DEX for the best price, friendly enough that the playful register never feels like a costume. Lime is the energy; near-black is the focus; Inter is the clarity; the cat is the smile.
Key Characteristics:
- Near-black
#090d10canvas (rgb 9, 13, 16) — cool charcoal, not true black - Signature Jupiter lime-green
#c7f284brand accent (warmer than Solana mint) - Inter for the entire type system (display + body)
- Cat-and-space mascot as the personality engine
- Two CTA shapes: full-pill brand chips + 8px-radius slate “Connect” button
- Slate-blue UI text ramp (
#e2e8f0→#cad5e2→#90a1b9→#62748e) - Translucent lime tints for chips and selection states
- Subtle stepped dark surfaces with lime-glow accents instead of heavy borders
- Warm, crypto-native, jargon-light voice (“The Home of Onchain Finance”)
- Playful-DeFi register that deliberately rejects brutalist black-and-cyan
2. Color Palette & Roles
Canvas / Background
- Background (
#090d10): near-black canvas, rgb 9, 13, 16 — the live page bg. - Bg Deep (
#05080a): deepest recessed wells, input fields. - Bg Section (
#0d1318): alternate section banding, one step up from canvas.
Surface
- Surface Soft (
#111922): default card surface, one step off the canvas. - Surface (
#19242e): mid-elevation panels, search field fill. - Surface Strong (
#212a36): “Connect” button bg and topmost interactive surfaces.
Text
- Text (
#ffffff): pure white for primary body and high-emphasis copy. - Text Bright (
#e2e8f0): bright slate for large headings. - Text Muted (
#cad5e2): primary UI label text (the live “Connect” label color). - Text Soft (
#90a1b9): muted secondary copy, placeholder text. - Text Faint (
#62748e): faintest captions and disabled labels.
Brand — Jupiter Lime
- Brand (
#c7f284): the signature lime accent — brand marks, reward chips, links. - Brand Hover (
#d5f79c): lighter lime on hover. - Brand Pressed (
#b6e96a): pressed/active lime. - Brand Deep (
#9fd34f): deepest lime for fine text on lime or dense fills. - Brand Tint (
rgba(199, 242, 132, 0.10)): translucent lime chip backgrounds. - On Brand (
#090d10): near-black text placed on a lime fill.
Borders
- Border (
#1c2530): default hairline separators on the dark canvas. - Border Strong (
#2a3542): emphasized dividers and card edges. - Border Soft (
#141c24): faint internal separators. - Border Brand (
#c7f284): lime focus ring and active-state outline.
Semantic
- Success (
#4ade80): confirmed swaps, positive deltas. - Warning (
#fbbf24): slippage and caution notices. - Danger (
#f87171): failed transactions, negative deltas. - Info (
#60a5fa): neutral informational chips.
3. Typography Rules
Font Family
- Display + Body:
Inter, system-ui, -apple-system, sans-serif. Inter carries every weight; system fonts are the graceful fallback. This is the live computed body font. - Mono:
ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospacefor wallet addresses, token amounts in dense contexts, and code.
Hierarchy
| Role | Font | Size | Weight | LH | Tracking |
|---|---|---|---|---|---|
| display-hero | Inter | 80 | 700 | 1.0 | -0.03em |
| display-lg | Inter | 56 | 700 | 1.05 | -0.02em |
| h1 | Inter | 40 | 700 | 1.1 | -0.018em |
| h2 | Inter | 32 | 600 | 1.2 | -0.012em |
| h3 | Inter | 24 | 600 | 1.25 | -0.005em |
| h4 | Inter | 20 | 600 | 1.3 | 0 |
| body-lg | Inter | 18 | 400 | 1.55 | 0 |
| body | Inter | 16 | 400 | 1.55 | 0 |
| body-sm | Inter | 14 | 400 | 1.5 | 0 |
| label | Inter | 13 | 500 | 1.4 | 0 |
| caption | Inter | 12 | 500 | 1.4 | 0.02em |
| amount | Inter | 36 | 600 | 1.0 | -0.012em |
| address | Mono | 13 | 400 | 1.5 | 0 |
| button | Inter | 14 | 600 | 1.0 | 0 |
| nav-link | Inter | 14 | 500 | 1.0 | 0 |
Principles
- Inter for everything, mono reserved for addresses and dense numeric data.
- 700 weight only on display + h1 — confident headlines without shouting.
- 600 on h2–h4 and amounts — substantial but lighter than the hero.
- Tight negative tracking on display (-0.03em hero, easing toward 0 by body).
- Body line-height stays generous at 1.55 — readable in long-form copy on dark.
- Slate-blue text colors, not pure white, for secondary copy — keeps the lime legible as the loudest element.
- Mixed case throughout — no all-caps headlines; caption is the only tracked-out role.
4. Component Stylings
Buttons (4 variants)
Primary (Lime pill) — the brand action:
- bg
#c7f284, text#090d10(near-black), Inter 14px 600 - Padding 10×20, radius 9999 (full pill)
- Hover: bg
#d5f79c; Active: bg#b6e96a - Optional lime glow shadow on emphasis:
0 0 0 1px rgba(199,242,132,0.20), 0 8px 32px rgba(199,242,132,0.12)
Connect (Slate 8px) — the wallet action (live spec):
- bg
#212a36, text#cad5e2, Inter 14px 600 - Padding 10×16, radius 8px (the one place the pill is rejected)
- Hover: bg
#2a3542, text#ffffff
Chip (Lime tint pill) — reward/status chips like “Rewards”:
- bg
rgba(199,242,132,0.10), text#c7f284, Inter 13px 500 - Padding 6×14, radius 9999 (full pill)
- Hover: bg
rgba(199,242,132,0.18)
Ghost — quiet tertiary:
- bg transparent, text
#cad5e2, 1px border#1c2530, radius 8 - Hover: bg
#111922, border#2a3542
Cards
- bg
#111922, 1px border#1c2530, 12px radius, padding 24 - Dark shadow
0 2px 12px rgba(0,0,0,0.40) - Hover: lift to
0 8px 24px rgba(0,0,0,0.55), optional border#2a3542 - Feature cards may carry a single lime accent (icon, top hairline, or chip)
Badges / Tags / Pills
- Reward/status chip: lime tint bg, lime text, full pill (see Chip button above)
- Token pill: surface-strong
#212a36bg, white text, token icon left, full pill - Semantic badge: tinted bg of the semantic color at 12% alpha, matching text
- Count badge: lime
#c7f284bg, near-black text, micro pill
Inputs / Forms
- bg
#05080a(bg-deep), 1px border#1c2530, text#ffffff, 8px radius, padding 10×14 - Placeholder
#90a1b9 - Focus: 2px lime ring
#c7f284, border#c7f284 - The “Search anything /” field uses translucent slate fill
#19242ewith a/keyboard hint right-aligned in#90a1b9
Navigation
- 64px sticky header, bg
#090d10(canvas) with a faint bottom hairline#1c2530 - Jupiter wordmark + cat mark left; top-level nav links center in Inter 14px 500
#cad5e2 - “Search anything /” field and “Connect” slate 8px button right
- Active/hover nav link: text brightens
#cad5e2→#ffffff, optional lime underline
5. Layout Principles
Spacing System
- Base unit 4px; scale
[0, 4, 8, 12, 16, 24, 32, 48, 64, 96]. - Component padding clusters at 16–24px; section rhythm at 64–96px.
Grid & Container
- Page max width 1280px, centered with generous side gutters.
- Prose max width 720px for long-form readability.
- Feature grids: 3-up at desktop, 2-up at tablet, 1-up at mobile.
Whitespace Philosophy
- Dark canvas does the breathing — negative space is the near-black itself, not white margin.
- Cards float on the canvas with clear gaps; avoid edge-to-edge density.
- The lime accent is rationed; one lime moment per visual cluster keeps it precious.
Section Cadence
- Hero with mascot → value props → aggregator/product feature grid → ecosystem/stats band → footer.
- Alternate
#090d10and#0d1318section bands for quiet rhythm without hard dividers.
6. Shapes & Radius Scale
| Tier | Value | Use |
|---|---|---|
| Micro | 2 | tiny indicators, progress nubs |
| Standard | 4 | small chips, inline tags |
| Comfortable | 8 | inputs + “Connect” button (live spec) |
| Relaxed | 12 | default cards |
| Large | 16 | featured panels, modals |
| Pill | 9999 | brand CTAs, reward chips, token pills |
The defining tension is 8px utility vs. full-pill brand: the “Connect” wallet action is a tight 8px rectangle, while marketing CTAs and reward chips are full pills. Honor both — never pill the Connect button, never square the reward chips.
7. Depth & Elevation
| Level | Treatment | Use |
|---|---|---|
| 0 | flat on #090d10, no shadow | page canvas, section bands |
| 1 | 0 2px 12px rgba(0,0,0,0.40) | resting cards on #111922 |
| 2 | 0 8px 24px rgba(0,0,0,0.55) | hovered cards, dropdowns |
| 3 | 0 0 0 1px rgba(199,242,132,0.20), 0 8px 32px rgba(199,242,132,0.12) | lime-glow emphasis on hero CTA |
| 4 | 0 24px 64px rgba(0,0,0,0.70) | modals, wallet-connect overlay |
Shadow Philosophy: On a near-black canvas, depth reads through darker, softer shadows and subtle surface-lightness steps rather than crisp drop shadows. Elevation is communicated mostly by surface color (#111922 → #19242e → #212a36), with shadow as a secondary cue. The lime glow is the one expressive elevation — reserved for the single most important action on a screen.
8. Interaction & Motion
- Easing: standard
cubic-bezier(0.4, 0, 0.2, 1)for most transitions; emphasizedcubic-bezier(0.34, 1.56, 0.64, 1)for playful overshoot on mascot and celebrate states. - Durations: fast 150ms (hover, color), standard 240ms (panels, dropdowns), slow 320ms (page-level reveals, mascot animation).
- Buttons: 150ms bg + text color shift; lime CTA may pulse its glow on hover; “Connect” brightens slate bg and label.
- Cards: 240ms shadow + border lift on hover; no scale by default (keep dark UI calm).
- Chips: 150ms tint deepen on hover.
- Mascot: gentle idle float/bob using emphasized easing; never blocks content or interaction.
- Page transitions: 320ms fade + small upward translate on section reveal.
- Reduced motion: with
prefers-reduced-motion: reduce, drop mascot animation, translate, and glow pulse; keep instant color/opacity feedback only.
9. Accessibility & A11y
Computed contrast pairs (from live bg #090d10, text #ffffff, brand #c7f284)
- Text
#ffffffon bg#090d10= 19.2:1 — AAA (body and headings). - Brand lime
#c7f284on bg#090d10= 15.4:1 — AAA (lime text/links on dark read effortlessly). - On-brand
#090d10on brand#c7f284= 14.9:1 — AAA (near-black on lime is the correct pairing for lime CTAs). - Text Muted
#cad5e2on bg#090d10= ~13.9:1 — AAA (UI labels). - Text Soft
#90a1b9on bg#090d10= ~7.3:1 — AAA for normal text (secondary copy). - Text Faint
#62748eon bg#090d10= ~3.6:1 — AA for large text only; avoid for body.
Patterns
- Focus indicators: 2px lime ring
#c7f284(15.4:1 on canvas) — high-visibility on dark. - Never use white text on the lime fill — invert to near-black
#090d10; white on lime fails contrast. - ARIA: wallet-connect is a modal dialog (
role="dialog", focus-trapped); token selectors arerole="combobox"; reward chips exposearia-labelwith full status. - Keyboard nav:
/focuses the search field (matches the visible hint); full tab order through nav, CTA, and modal. - Screen reader: the mascot is decorative (
aria-hidden="true"); truncated addresses expose the full value viaaria-label/title. - Reduced motion: honored — mascot and glow animations suppressed.
10. Responsive Behavior
| Breakpoint | Width | Behavior |
|---|---|---|
| mobile | <640 | hero 80→40; nav collapses to hamburger; single-column; full-width CTAs |
| tablet | 640–1023 | 2-up feature grids; condensed nav; mascot scales down |
| desktop | 1024–1279 | full nav; 3-up grids; mascot at full size |
| wide | ≥1536 | content capped at 1280px; extra canvas gutter |
- Touch targets: minimum 44×44px; pills and the 8px Connect button both meet it with 10px+ vertical padding.
- Collapsing: search field collapses to an icon on mobile; nav links move into a sheet; reward chips wrap or scroll horizontally.
- Images / mascot: mascot is decorative and may be hidden below tablet to protect layout; never let it overlap CTAs.
11. Content & Voice
Tone
Warm, crypto-native, jargon-light. Jupiter speaks the Solana-DeFi register but keeps it human — confident about routing and liquidity, never gatekeeping. The tagline “The Home of Onchain Finance” sets the register: inviting, not intimidating.
Microcopy patterns
- Primary CTAs: “Connect” / “Swap” / “Trade” / “Get started”
- Status chips: “Rewards”, “Earn”, “Pro”
- Search affordance: “Search anything /” (with the
/keyboard hint) - Errors: “Insufficient SOL balance — add funds to swap”
- Loading: “Finding the best route…”
- Success: “Swapped 100 USDC for 0.65 SOL”
Empty states
- Pair empty states with the mascot and a single lime CTA — e.g. “No positions yet — make your first swap.”
CTA verb conventions
- Connect / Swap / Trade / Earn / Bridge / Get started
- Avoid: brutalist all-caps shouting, dense jargon walls, NFT-bro slang.
12. Dark Mode & Theming
Dark-native — Jupiter is built dark-first on the near-black #090d10 canvas. There is no separate light theme on the marketing/app surfaces; the dark canvas is the brand. The lime #c7f284, slate UI text ramp, and stepped surfaces are all tuned for the dark register. If a light context is ever required (e.g. embeds or docs), keep the lime as the brand but deepen it toward #9fd34f so it holds contrast on a light background — never place the dark-tuned #c7f284 on white as a text color without darkening it.
13. Lineage & Influences
Jupiter’s design descends from Solana’s playful-but-technical DeFi culture, yet it deliberately diverges from the brutalist black-and-cyan default of most aggregators. The defining choice is the lime-green #c7f284 — a soft chartreuse that reads warmer and friendlier than Solana’s neon mint #14f195, glowing against the near-black #090d10 canvas instead of competing with it. Inter handles the entire type system, the same neutral neo-grotesque that Vercel and Linear made the default voice of modern product UI, which keeps the typography clean while the cat-and-space mascot carries the personality.
The interaction language pairs full-pill brand chips (the lime “Rewards” chip, token pills) with a tight 8px-radius slate “Connect” button #212a36 — two shapes coexisting on purpose. Slate-blue UI text (#cad5e2, #90a1b9) keeps secondary copy quiet so the lime stays the loudest element. The lineage is Solana-native but the spirit is closer to Uniswap’s playful-confident rejection of DeFi brutalism: a serious liquidity router wearing an approachable, slightly whimsical face.
Named influences:
- Solana — the Layer 1 chain and ecosystem register Jupiter is built on
- Inter by Rasmus Andersson — neutral neo-grotesque sans for the whole system
- Phantom — Solana wallet peer sharing dark-DeFi UI conventions
- Uniswap — playful-confident DeFi precedent that rejects brutalism
- Jupiter / JUP — the aggregator brand and lime-green identity origin
14. Do’s and Don’ts
Do
- Use near-black
#090d10(rgb 9, 13, 16) as the canvas — the exact live bg, not pure black. - Use Jupiter lime
#c7f284as the brand accent — rationed, one moment per cluster. - Put near-black
#090d10text on lime fills, never white. - Use Inter for everything; mono only for addresses and dense numbers.
- Pill brand CTAs and reward chips (full 9999 radius).
- Use 8px radius for the “Connect” button and inputs — the utility shape.
- Keep secondary copy in the slate-blue ramp (
#cad5e2,#90a1b9). - Use the cat-and-space mascot for personality and empty states.
- Communicate depth through stepped surfaces before reaching for shadows.
- Reserve the lime glow for the single most important action on a screen.
Don’t
- Don’t substitute the lime.
#c7f284is the brand, not Tailwind lime/green or Solana’s#14f195. - Don’t use pure black
#000000— the canvas is the warmer#090d10. - Don’t put white text on the lime fill — it fails contrast; invert to near-black.
- Don’t pill the “Connect” button — it is intentionally an 8px rectangle.
- Don’t square the reward/brand chips — they are full pills.
- Don’t all-caps headlines — Inter stays mixed-case.
- Don’t drown the screen in lime — over-use kills the glow.
- Don’t anthropomorphize the mascot into product copy — it is personality, not a spokesperson.
- Don’t add gradient fills to the lime CTA — keep it flat.
- Don’t adopt brutalist black-and-cyan DeFi aesthetics — warm lime on near-black IS Jupiter.
15. Agent Prompt Guide
Quick Color Reference
- bg (canvas):
#090d10 - bg-deep:
#05080a - surface:
#19242e/ surface-strong:#212a36 - text (white):
#ffffff - text-muted (UI label):
#cad5e2 - text-soft:
#90a1b9 - brand (Jupiter lime):
#c7f284/ hover#d5f79c - on-brand (text on lime):
#090d10 - connect button bg:
#212a36 - border:
#1c2530
Example Component Prompts
Build a Jupiter-style hero: near-black
#090d10canvas, 80px Inter 700 -0.03em headline “The Home of Onchain Finance” in white, a cat-in-a-spacesuit mascot floating beside it, and a lime#c7f284full-pill CTA “Get started” with near-black#090d10text. Quiet slate-blue#90a1b9subhead below.
Design a “Connect” wallet button: slate
#212a36bg, slate-blue#cad5e2text, Inter 14px 600, 8px radius (not a pill), padding 10×16. Hover: bg#2a3542, text white.
Render a reward chip: full-pill, translucent lime bg
rgba(199,242,132,0.10), lime#c7f284text, Inter 13px 500, padding 6×14, with a small star/gift icon left.
Build a swap card: surface
#111922, 1px border#1c2530, 12px radius, padding 24, dark shadow. “From” and “To” sections with#05080ainputs (8px radius, lime focus ring), token pills in#212a36, and a full-pill lime “Swap” CTA at the bottom with near-black text.
Design a search field: translucent slate
#19242efill, placeholder “Search anything” in#90a1b9, a/keyboard hint right-aligned, 8px radius, lime#c7f284focus border.
Create a feature grid card: near-black canvas,
#111922card surface, white 24px Inter 600 title, slate#90a1b9body, a single lime#c7f284icon as the one accent, 12px radius.
Iteration Guide
- Near-black
#090d10+ Jupiter lime#c7f284+ Inter + the cat mascot — get these four right first. - Ration the lime — one lime moment per visual cluster; if everything is lime, nothing is.
- Near-black text on lime, never white — fix this contrast trap immediately.
- Two CTA shapes: full-pill for brand/chips, 8px rectangle for “Connect” and inputs.
- Keep secondary copy in slate-blue (
#cad5e2/#90a1b9) so the lime stays loudest. - Depth via stepped surfaces (
#111922→#19242e→#212a36) before shadows; reserve the lime glow for the one hero action. - Mascot is personality, not chrome — use it in heroes and empty states, never overlapping CTAs.
- Reject brutalist black-and-cyan — warm lime on warm near-black is the whole identity.
Drop jupiter into your project, then ship the actual sections in an afternoon.
npx @webdesignhot/design-md add jupiter npx agentkit init --design jupiter