Lime-bright fintech with weight-900 display at 0.85 line-height — billboard-density typography, dark-green-on-lime pill CTAs, ring-shadow depth.
A complete design system, ready for your AI coding agent. Every primitive, token, and pattern below is generated straight from DESIGN.md — drop the file in your project and ship matching UI in minutes.
Prose-first token file — decisions live next to their reasoning.
Fine micro-scale (1–5px) for pills, editorial scale (12–21px) for the grid.
The system's own radius tokens — sm for chips and inputs, md for buttons, lg for cards, pill for fully-rounded CTAs.
Tokens describe the resting state. A real product needs every interaction state. Hover, focus, active, disabled, loading — all derived from the system's resting tokens.
1---2name: "Limepress Fintech"3description: "Lime-bright fintech with weight-900 display at 0.85 line-height — billboard-density typography, dark-green-on-lime pill CTAs, ring-shadow depth."4tags: [fintech, bold, warm, playful]5colors:6 primary: "#0e0f0c"7 secondary: "#454745"8 tertiary: "#9fe870"9 neutral: "#e8ebe6"10 surface: "#ffffff"11typography:12 display: "Archivo Black"13 body: Inter14 mono: "JetBrains Mono"15 scale:16 hero: "5.5rem / 0.85 / 900 / 0"17 h1: "4rem / 0.85 / 900 / 0"18 h2: "2.5rem / 0.85 / 900 / 0"19 body: "1.125rem / 1.44 / 600 / 0.18px"20radius:21 sm: 10px22 md: 16px23 lg: 30px24 pill: 9999px25shadows:26 card: "rgba(14,15,12,0.12) 0 0 0 1px"27borders:28 card: "1px solid rgba(14,15,12,0.12)"29 divider: rgba(14,15,12,0.12)30buttons:31 primary:32 background: #9fe87033 color: #16330034 border: none35 shape: pill36 padding: 12px 24px37 font: 60038 hover: scale39 secondary:40 background: rgba(22,51,0,0.08)41 color: #0e0f0c42 border: none43 shape: pill44 padding: 10px 20px45 font: 60046 hover: scale47 outline:48 background: #ffffff49 color: #0e0f0c50 border: none51 shape: pill52 padding: 10px 20px53 font: 60054 shadow: rgba(14,15,12,0.12) 0 0 0 1px55 hover: scale56 ghost:57 background: rgba(211,242,192,0.4)58 color: #0e0f0c59 border: none60 shape: pill61 padding: 10px 16px62 font: 60063charts:64 variant: bars65 stroke_width: 366 fill_opacity: 0.267 gridlines: false68 bar_radius: "6px 6px 0 0"69 bar_gap: 12px70 highlight: single71 dot_marker: false72fonts_url: "https://fonts.googleapis.com/css2?family=Archivo+Black&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400&display=swap"73dependencies: ["lucide-react"]74---75 76# Limepress Fintech77 78## AI Build Instructions79 80> **Read this section before writing any code.** The rules below81> are non-negotiable. Every value used in the UI must come from this82> file's frontmatter — never substitute, approximate, or invent new83> colors, fonts, radii, or shadows. If a value is missing, ask the84> user before adding one.85 86### 1 · Your role87 88You are building UI for a project that has adopted **Limepress Fintech** as its89design system. Treat `DESIGN.md` as the single source of truth.90Your job is to translate the user's product requirements into91components and pages that look like they were designed by the same92person who authored this file.93 94### 2 · Token compliance95 96- Pull every color, font family, radius, shadow, and spacing value97 from the frontmatter at the top of this file.98- Use semantic roles (e.g. `primary`, `accent`, `muted`) — never99 hard-code hex values that bypass the system.100- When a token can be expressed as a CSS variable, declare it once101 in your global stylesheet and reference it everywhere downstream.102- The Google Fonts `<link>` is provided in the Typography section.103 Add it to `<head>` before any component renders.104 105### 3 · Component recipes106 107Use these recipes verbatim when building the corresponding component.108 109#### Buttons110 111Four variants are defined. Pick one — never blend variants or invent a fifth.112 113- **Primary** — pill shape, bg `#9fe870`, text `#163300`, padding `12px 24px`, weight `600`.114- **Secondary** — pill shape, bg `rgba(22,51,0,0.08)`, text `#0e0f0c`, padding `10px 20px`, weight `600`.115- **Outline** — pill shape, bg `#ffffff`, text `#0e0f0c`, padding `10px 20px`, weight `600`, shadow `rgba(14,15,12,0.12) 0 0 0 1px`.116- **Ghost** — pill shape, bg `rgba(211,242,192,0.4)`, text `#0e0f0c`, padding `10px 16px`, weight `600`.117 118Reach for **primary** as the single dominant CTA per screen.119**Secondary** for the supporting action. **Outline** for tertiary120actions in toolbars. **Ghost** for inline links and table actions.121 122#### Cards123 124- Background: `#ffffff`125- Border: `1px solid rgba(14,15,12,0.12)`126- Shadow: `rgba(14,15,12,0.12) 0 0 0 1px`127- Radius: `radius.lg` (`30px`)128- Internal padding: `20px` for compact cards, `24–28px` for content cards.129 130#### Charts131 132- Bar/line variant: `bars`133- Bar radius: `6px 6px 0 0`134- No gridlines — let the bars/lines carry the data.135- Highlight strategy: `single` — emphasize a single bar/point per chart.136 137#### Typography pairings138 139- **Display (`Archivo Black`)** — h1, h2, hero headlines, brand wordmarks.140- **Body (`Inter`)** — paragraphs, labels, button text, form inputs.141- **Mono (`JetBrains Mono`)** — code, eyebrows, metadata, numerals in tables.142 143### 4 · Hard constraints144 145Never do any of the following without explicit instruction from the user:146 147- Introduce a new color, font, radius, or shadow that isn't declared above.148- Mix this system with another (e.g. don't paste in Material or Bootstrap defaults).149- Use generic gradient defaults (purple→blue, peach→pink) — they break the system's voice.150- Reach for emoji icons. Use a consistent icon library and size icons in line with body type.151- Add motion that exceeds the system's restraint — keep transitions short (≤200ms) and subtle.152 153### 5 · Before you finish — verify154 155Run through this checklist for every screen you produce:156 157- [ ] Every color used appears in the Colors table above.158- [ ] Headlines use the display font; body copy uses the body font.159- [ ] Buttons match one of the declared variants exactly (shape, padding, weight).160- [ ] Border-radius values come from `radius.sm` / `radius.md` / `radius.lg` / `radius.pill`.161- [ ] Cards and dividers use the declared border + shadow tokens.162- [ ] No values were invented; if you needed something missing, you stopped and asked.163 164---165 166## 1. Atmosphere167 168Limepress Fintech is the visual translation of "money without borders" — a bold, confident fintech surface that throws out corporate-blue convention in favor of a single, electric **lime-green** (`#9fe870`) accent paired with warm near-black (`#0e0f0c`). The page is a calm warm white, but the typography turns up the volume: display headlines run at weight **900** with a remarkable **0.85 line-height**, so the letters nearly stack on top of each other. The result reads like a protest sign — urgent, physical, impossible to ignore.169 170The accent strategy is disciplined: lime green is reserved for primary CTAs, with **dark forest green** (`#163300`) as the contrasting button text. This nature-pairing feels alive and optimistic, completely unlike the saturated blues of legacy banking. Hover behavior is physical, not chromatic — buttons grow with `scale(1.05)` and compress to `scale(0.95)` on press. The button literally responds to your cursor like a tactile object.171 172The body voice is Inter at weight **600** by default — confident, never light. Combined with OpenType `"calt"` (contextual alternates) on every text element, the whole system reads as one continuous, deliberate voice.173 174**Signature moves**175- Display weight 900 at 0.85 line-height — the densest type stack in the catalog176- Lime Green (`#9fe870`) on `#163300` — nature-inspired CTA combo177- Inter weight 600 as body default — never 400178- Scale(1.05) on hover, scale(0.95) on active — physical button motion179- OpenType `"calt"` enabled globally180- Pill buttons (9999px) and big rounded cards (30–40px)181- **Ring shadow** (`0 0 0 1px`) as the entire elevation system — no soft blur182 183## 2. Palette184 185### Primary186- **Near Black** `#0e0f0c` — text, dark sections (warm green undertone)187- **Limepress Green** `#9fe870` — primary CTA, brand identity188- **Dark Green** `#163300` — button label on green189- **Light Mint** `#e2f6d5` — soft surface, badge190- **Pastel Green** `#cdffad` — interactive hover accent191 192### Semantic193- Positive `#054d28` · Danger `#d03238` · Warning `#ffd11a`194- Background Cyan `rgba(56,200,255,0.10)` · Bright Orange `#ffc091`195 196### Neutral197- Warm Dark `#454745` · Gray `#868685` · Light Surface `#e8ebe6`198 199## 3. Typography200 201| Role | Font | Size | Weight | Leading | Tracking |202|------|------|------|--------|---------|----------|203| Display Mega | Display | 126px | 900 | 0.85 | 0 |204| Display Hero | Display | 96px | 900 | 0.85 | 0 |205| Section | Display | 64px | 900 | 0.85 | 0 |206| Sub-heading | Display | 40px | 900 | 0.85 | 0 |207| Card title | Body | 26px | 600 | 1.23 | -0.39px |208| Feature | Body | 22px | 600 | 1.25 | -0.4px |209| Body | Body | 18px | 400 | 1.44 | +0.18px |210| Body Semibold | Body | 18px | 600 | 1.44 | -0.108px |211| Button | Body | 18–22px | 600 | 1.00–1.44 | -0.108px |212| Caption | Body | 14px | 400–600 | 1.50–1.86 | -0.084 to -0.108px |213 214**Weight 900 is the identity.** Letters overlap vertically. Body weight is 600 (not 400) — confidence reads in every paragraph.215 216## 4. Buttons217 218### Primary Pill219```css220background: #9fe870;221color: #163300;222padding: 12px 24px;223border-radius: 9999px;224```225Hover: `scale(1.05)`. Active: `scale(0.95)`.226 227### Secondary Pill228- Background `rgba(22,51,0,0.08)`, text `#0e0f0c`229- 9999px radius, same scale animation230 231## 5. Cards232- Background `#ffffff`233- Radius: 16/30/40px234- Border: `1px solid rgba(14,15,12,0.12)` or `1px solid #9fe870`235- Shadow: `rgba(14,15,12,0.12) 0 0 0 1px` ring236 237## 6. Charts238**Chunky lime bars with single-bar highlight, no gridlines** — flat, billboard-style. Line charts at 3px stroke with 20% lime fill: a confident, hand-drawn feel rather than a data-grid.239 240## 7. Spacing241- Base: 8px242- Scale: `1, 2, 3, 4, 5, 8, 10, 11, 12, 16, 18, 19, 20, 22, 24`243 244## 8. Depth & elevation245 246| Level | Treatment | Use |247|-------|-----------|-----|248| 0 | Flat | Default |249| 1 | `rgba(14,15,12,0.12) 0 0 0 1px` | Card border |250| 2 | `rgb(134,134,133) 0 0 0 1px inset` | Input focus |251 252**Ring shadow is the entire shadow system.** No blur shadows anywhere.253 254## 9. Do's & don'ts255 256✅ **Do**257- Use weight 900 on display — the extreme weight IS the brand258- Hold display line-height at 0.85 — never relax it259- Lime CTAs only — `#9fe870` background, `#163300` text260- Apply scale(1.05) hover and scale(0.95) active261- Use Inter weight 600 as body default262 263❌ **Don't**264- Use lighter weights for display — only 900265- Use lime as a large background — CTAs and small accents only266- Skip the scale animation on buttons267- Use blur shadows — ring shadows only268 269---270 271## Tokens272 273> Generated from the same source the live preview renders from.274> Treat the values below as the contract — never substitute approximations.275 276### Colors277 278| Role | Value |279|-----------|-------|280| primary | `#0e0f0c` |281| secondary | `#454745` |282| tertiary | `#9fe870` |283| neutral | `#e8ebe6` |284| surface | `#ffffff` |285 286### Typography287 288- **Display:** Archivo Black289- **Body:** Inter290- **Mono:** JetBrains Mono291 292| Role | size / leading / weight / tracking |293|------|------------------------------------|294| Hero | 5.5rem / 0.85 / 900 / 0 |295| H1 | 4rem / 0.85 / 900 / 0 |296| H2 | 2.5rem / 0.85 / 900 / 0 |297| Body | 1.125rem / 1.44 / 600 / 0.18px |298 299### Radius300 301- sm: `10px`302- md: `16px`303- lg: `30px`304- pill: `9999px`305 306### Shadows307 308- **card:** `rgba(14,15,12,0.12) 0 0 0 1px`309 310### Borders311 312- **card:** `1px solid rgba(14,15,12,0.12)`313- **divider:** `rgba(14,15,12,0.12)`314 315### Buttons316 317Four variants, each fully tokenized. The preview renders from these exact values.318 319#### Primary320 321| Property | Value |322|----------|-------|323| shape | `pill` |324| background | `#9fe870` |325| color | `#163300` |326| border | `none` |327| padding | `12px 24px` |328| fontWeight | `600` |329| hoverHint | `scale` |330 331#### Secondary332 333| Property | Value |334|----------|-------|335| shape | `pill` |336| background | `rgba(22,51,0,0.08)` |337| color | `#0e0f0c` |338| border | `none` |339| padding | `10px 20px` |340| fontWeight | `600` |341| hoverHint | `scale` |342 343#### Outline344 345| Property | Value |346|----------|-------|347| shape | `pill` |348| background | `#ffffff` |349| color | `#0e0f0c` |350| border | `none` |351| padding | `10px 20px` |352| fontWeight | `600` |353| shadow | `rgba(14,15,12,0.12) 0 0 0 1px` |354| hoverHint | `scale` |355 356#### Ghost357 358| Property | Value |359|----------|-------|360| shape | `pill` |361| background | `rgba(211,242,192,0.4)` |362| color | `#0e0f0c` |363| border | `none` |364| padding | `10px 16px` |365| fontWeight | `600` |366 367### Charts368 369| Property | Value |370|----------|-------|371| variant | `bars` |372| strokeWidth | `3` |373| fillOpacity | `0.2` |374| gridlines | `false` |375| barRadius | `6px 6px 0 0` |376| barGap | `12px` |377| highlight | `single` |378| dotMarker | `false` |379 380---381 382## Pro tokens383 384> Production-fidelity tokens. States, density, motion, elevation,385> content rules and a measured WCAG contract — derived from the386> resting tokens unless explicitly authored.387 388### States389 390#### Button391 392- **hover** — bg: `rgba(159, 232, 112, 0.92)`, shadow: `0 4px 20px -8px rgba(159, 232, 112, 0.4)`393- **focus** — outline: `1.5px solid #9fe870`, outline-offset: `4px`394- **active** — transform: `translateY(1px)`, filter: `brightness(0.95)`395- **disabled** — opacity: `0.45`396- **loading** — opacity: `0.7`397- **selected** — bg: `#0e0f0c`, color: `#ffffff`398 399#### Input400 401- **hover** — border: `1px solid #0e0f0c`402- **focus** — border: `1px solid #9fe870`, shadow: `0 1px 0 0 #9fe870`403- **disabled** — opacity: `0.45`404- **error** — border: `1px solid #991B1B`, shadow: `0 1px 0 0 #991B1B`405 406#### Card407 408- **hover** — shadow: `0 8px 24px -12px rgba(15,23,42,0.14)`, transform: `translateY(-1px)`409- **selected** — border: `1px solid #0e0f0c`410 411#### Tab412 413- **hover** — color: `#0e0f0c`414- **focus** — outline: `1.5px solid #9fe870`, outline-offset: `3px`415- **selected** — color: `#9fe870`, border: `0 0 2px 0 solid #9fe870`416 417### Density418 419| Mode | padding × | row × | body | radius × | Use for |420|------|-----------|-------|------|----------|---------|421| compact | 0.72 | 0.78 | 0.8125rem | 0.85 | Information-dense — tables, IDEs, dashboards |422| comfortable | 1 | 1 | 0.9375rem | — | Default — most product UI |423| spacious | 1.35 | 1.3 | 1rem | 1.15 | Editorial — marketing, long-form, settings |424 425### Motion426 427**Signature — Page turn.** Deliberate, measured motion — like turning a magazine page. Never jerky, never overdone.428 429```css430transition: all 320ms cubic-bezier(0.25, 0.46, 0.45, 0.94);431```432 433| Token | Value |434|-------|-------|435| duration.instant | `80ms` |436| duration.fast | `180ms` |437| duration.base | `320ms` |438| duration.slow | `500ms` |439| easing.standard | `cubic-bezier(0.25, 0.46, 0.45, 0.94)` |440| easing.decelerate | `cubic-bezier(0.0, 0, 0.2, 1)` |441| easing.accelerate | `cubic-bezier(0.4, 0, 1, 1)` |442| easing.spring | `cubic-bezier(0.5, 1.2, 0.6, 1)` |443 444### Elevation445 446Five-level scale, system-specific recipe.447 448| Level | Shadow | Recipe |449|-------|--------|--------|450| level0 | `none` | Hairline only — typical editorial resting state. |451| level1 | `0 1px 2px rgba(15,23,42,0.04)` | Barely visible — list rows, dividers. |452| level2 | `0 8px 24px -12px rgba(15,23,42,0.12)` | Pull-quote, sidebar — soft lift. |453| level3 | `0 16px 40px -16px rgba(15,23,42,0.18)` | Cover story card — clear lift. |454| level4 | `0 32px 80px -24px rgba(15,23,42,0.28)` | Modal — overlays the layout, with scrim. |455 456### Content457 458- **measure:** `60ch` (max line length for body prose)459- **paragraph spacing:** `1.5em`460- **list indent:** `1.75em`461- **list gap:** `0.55em`462- **link:** color `#9fe870`, underline `always`463- **blockquote:** border `4px solid #9fe870`, padding `0.4em 0 0.4em 1.5em`464- **code:** background `rgba(14, 15, 12, 0.06)`, color `#0e0f0c`465 466### Accessibility (WCAG 2.1)467 468**Overall:** FAIL469 470| Pair | Ratio | Required | Grade | Suggested fix |471|------|-------|----------|-------|---------------|472| Body text on surface | 19.23:1 | AA | AAA | — |473| Body text on canvas | 15.98:1 | AA | AAA | — |474| Muted text on surface | 9.37:1 | AA | AAA | — |475| Accent on surface | 1.47:1 | AA-Large | FAIL | `#3f8115` → 4.81:1 (AA) |476| Accent on canvas | 1.22:1 | AA-Large | FAIL | `#377012` → 5:1 (AA) |477 # CLAUDE.md Reference @DESIGN.md for all styling decisions. Apply tokens strictly — do not introduce colors, fonts, or radii outside the system. When in doubt, prefer the values declared in DESIGN.md frontmatter.<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Archivo+Black&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400&display=swap" />npm install lucide-react// tailwind.config.jsexport default { theme: { extend: { fontFamily: { display: ['"Archivo Black"', 'serif'], sans: ['"Inter"', 'sans-serif'], mono: ['"JetBrains Mono"', 'monospace'], }, colors: { primary: '#0e0f0c', secondary: '#454745', accent: '#9fe870', neutral: '#e8ebe6', surface: '#ffffff', }, borderRadius: { sm: '10px', md: '16px', lg: '30px', }, }, },};Mid-tone soft glass. Warm dusty-sand canvas with a peach-and-rose aurora behind; cards float as cream-tinted frosted panes with 26px backdrop-blur and a faint inset top highlight. The mid-tone is the system.
Emerald on near-black. Monospace developer aesthetic with thin borders.