dark · sans · condensed · bold · minimal · ai · design

DESIGN.md inspired by Recraft

A jet-black studio where ABC Gravity Condensed slams the headline at weight 900 and a single electric-lime CTA does all the shouting.

By webdesignhot · www.recraft.ai
$ npx @webdesignhot/design-md add recraft
Learn more about the CLI
Compare to…
try on →
theme
1440 × 900
mobile · 390 × 844
Tokens webdesignhot/0.1
  • bg #000000
  • bg-alt #0a0a0a
  • surface #141414
  • surface-soft #1c1c1c
  • surface-elevated #242424
  • text AAA · 21.0 #ffffff
  • text-strong #ffffff
  • text-muted #a3a3a3
  • text-soft #737373
  • text-faint — · 2.7 #525252
  • brand AAA · 17.7 #d2fc31
  • brand-deep #bce815
  • brand-soft rgba(210, 252, 49, 0.14)
  • on-brand #0000ee
  • on-brand-ink #000000
  • link #ffffff
  • link-hover #d2fc31
  • cta-secondary-bg rgba(255, 255, 255, 0.9)
  • cta-secondary-text #0000ee
  • selected-bg rgba(255, 255, 255, 0.08)
  • disabled #525252
  • border — · 1.2 rgba(255, 255, 255, 0.10)
  • border-strong — · 1.5 rgba(255, 255, 255, 0.18)
  • border-subtle rgba(255, 255, 255, 0.05)
  • border-lime rgba(210, 252, 49, 0.45)
  • success-bg rgba(74, 222, 128, 0.12)
  • success-text #86efac
  • warning-bg rgba(250, 204, 21, 0.12)
  • warning-text #fde047
  • danger-bg rgba(248, 113, 113, 0.12)
  • danger-text #fca5a5
  • info-bg rgba(210, 252, 49, 0.10)
  • info-text #d2fc31
Typography
Ship faster than ever.
display-hero "ABC Gravity Condensed" 80px w900 -0.03em
Ship faster than ever.
display-lg "ABC Gravity Condensed" 56px w900 -0.02em
Ship faster than ever.
h1 "ABC Gravity Condensed" 40px w800 -0.018em
Built for teams that ship.
h2 "ABC Gravity Condensed" 32px w800 -0.012em
A complete kit
h3 "ABC Gravity Condensed" 24px w700 -0.005em
The quick brown fox jumps over the lazy dog.
h4 Inter 20px w600 0
The quick brown fox jumps over the lazy dog.
lede Inter 20px w400 0
The quick brown fox jumps over the lazy dog.
body-lg Inter 18px w400 0
The quick brown fox jumps over the lazy dog.
body Inter 16px w400 0
The quick brown fox jumps over the lazy dog.
button Inter 15px w600 0
The quick brown fox jumps over the lazy dog.
body-sm Inter 14px w400 0
OUR DESIGN SYSTEM
label Inter 13px w500 0
npx @webdesignhot/design-md add stripe
code ui-monospace 13px w400
The quick brown fox jumps over the lazy dog.
eyebrow Inter 12px w600 0.08em
OUR DESIGN SYSTEM
caption Inter 12px w500 0.02em
npx @webdesignhot/design-md add stripe
code-micro ui-monospace 11px w400
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 2px
  • sm 4px
  • md 8px
  • lg 12px
  • card 12px
  • xl 16px
  • 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 brand
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: Recraft
tagline: A jet-black studio where ABC Gravity Condensed slams the headline at weight 900 and a single electric-lime CTA does all the shouting.
updated_at: 2026-05-29T00:00:00.000Z
published_at: 2026-05-28T23:11:27.326Z
author: webdesignhot
source_url: https://www.recraft.ai
spec: webdesignhot/0.1
quality: curated
featured: false
categories: [ai, design-tools]
tags: [dark, sans, condensed, bold, minimal, ai, design]
preview_swatch: ['#000000', '#d2fc31', '#0000ee']
related: [krea, leonardo-ai, fal]
description: 'Recraft''s site is a jet-black AI design studio that lets one colour carry the entire brand. The canvas is pure `#000000`, the headline is set in **ABC Gravity Condensed** at 56px / weight **900** in white — a heavy, narrow display face that reads like a poster slab, not a SaaS hero. The single chromatic moment is an electric lime `#d2fc31` (rgb 210, 252, 49) reserved for the primary "Try Recraft Studio" CTA, paired with raw browser-blue link text `#0000ee` for a deliberately un-designed, tool-not-toy register. Everything else is grayscale: white type, neutral captions, hairline borders, 8px button radius. Where Krea commits to absolute black with quiet 400-weight Suisse Intl and a single cobalt, Recraft commits to the same black but cranks the display to 900-weight condensed and swaps the cool cobalt for an alarmingly bright lime — louder, more graphic, more poster than placard.'


# 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: brand

themes:
  default: dark
  available: [dark]
  switch-via: 'Dark-only marketing surface. The studio app itself flips to a light editing canvas (white artboard) so generated art reads true, but the public site, hero, and pricing stay on absolute black. Lime brand is invariant.'

colors:
  bg: '#000000'                    # pure black studio canvas
  bg-alt: '#0a0a0a'                # near-black alternate band
  surface: '#141414'               # raised card / panel
  surface-soft: '#1c1c1c'          # secondary panel
  surface-elevated: '#242424'      # popover / modal raised
  text: '#ffffff'                  # display white — h1, headings, body on dark
  text-strong: '#ffffff'
  text-muted: '#a3a3a3'            # captions, secondary copy
  text-soft: '#737373'             # quiet labels, helper text
  text-faint: '#525252'            # disabled chrome
  brand: '#d2fc31'                 # electric lime — the brand; primary CTA fill (rgb 210,252,49)
  brand-deep: '#bce815'            # pressed/active lime
  brand-soft: 'rgba(210, 252, 49, 0.14)'  # lime wash for selected pills / highlight
  on-brand: '#0000ee'              # raw browser-blue link text on the lime CTA
  on-brand-ink: '#000000'          # alternate near-black ink on lime
  link: '#ffffff'                  # links default white on dark
  link-hover: '#d2fc31'            # lime on hover
  cta-secondary-bg: 'rgba(255, 255, 255, 0.9)'  # near-white "Sign in" pill
  cta-secondary-text: '#0000ee'    # browser-blue text on the white pill
  selected-bg: 'rgba(255, 255, 255, 0.08)'
  disabled: '#525252'
  border: 'rgba(255, 255, 255, 0.10)'         # 10% white hairline — default rule on dark
  border-strong: 'rgba(255, 255, 255, 0.18)'  # emphasized rule, inputs
  border-subtle: 'rgba(255, 255, 255, 0.05)'  # quietest division
  border-lime: 'rgba(210, 252, 49, 0.45)'     # lime ring on focus/selected
  success-bg: 'rgba(74, 222, 128, 0.12)'
  success-text: '#86efac'
  warning-bg: 'rgba(250, 204, 21, 0.12)'
  warning-text: '#fde047'
  danger-bg: 'rgba(248, 113, 113, 0.12)'
  danger-text: '#fca5a5'
  info-bg: 'rgba(210, 252, 49, 0.10)'
  info-text: '#d2fc31'

typography:
  display:
    family: '"ABC Gravity Condensed", "Arial Narrow", system-ui, -apple-system, sans-serif'
    weights: [700, 800, 900]
    opentype-features: ['kern', 'liga']
  body:
    family: 'Inter, ui-sans-serif, system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif'
    weights: [400, 500, 600]
    opentype-features: ['kern', 'liga']
  mono:
    family: 'ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", monospace'
    weights: [400, 500]
    opentype-features: ['tnum', 'zero']
  scale:
    display-hero:    { size: 80, weight: 900, lineHeight: 0.98, tracking: '-0.03em',  family: display, transform: uppercase }
    display-lg:      { size: 56, weight: 900, lineHeight: 1.0,  tracking: '-0.02em',  family: display }
    h1:              { size: 40, weight: 800, lineHeight: 1.08, tracking: '-0.018em', family: display }
    h2:              { size: 32, weight: 800, lineHeight: 1.15, tracking: '-0.012em', family: display }
    h3:              { size: 24, weight: 700, lineHeight: 1.25, tracking: '-0.005em', family: display }
    h4:              { size: 20, weight: 600, lineHeight: 1.3,  tracking: '0',        family: body }
    eyebrow:         { size: 12, weight: 600, lineHeight: 1.4,  tracking: '0.08em',   family: body, transform: uppercase }
    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 }
    lede:            { size: 20, weight: 400, lineHeight: 1.5,  tracking: '0',        family: body }
    label:           { size: 13, weight: 500, lineHeight: 1.4,  tracking: '0',        family: body }
    button:          { size: 15, weight: 600, lineHeight: 1.0,  tracking: '0',        family: body }
    caption:         { size: 12, weight: 500, lineHeight: 1.4,  tracking: '0.02em',   family: body }
    code:            { size: 13, weight: 400, lineHeight: 1.55, family: mono, opentype: 'tnum zero' }
    code-micro:      { size: 11, weight: 400, lineHeight: 1.4,  family: mono }

radius:
  micro: 2
  sm: 4
  md: 8
  lg: 12
  xl: 16
  card: 12
  pill: 9999

spacing:
  base: 4
  scale: [0, 4, 8, 12, 16, 24, 32, 48, 64, 96, 128]

layout:
  page-width: 1280
  prose-width: 720
  site-gutter: 'clamp(20px, 4vw, 48px)'
  header-height: 64
  grid-columns: 12
  section-rhythm: '96-128px'

components:
  button-primary:
    background: '#d2fc31'
    text: '#0000ee'
    padding: '10px 16px'
    radius: 8
    border: 'none'
    font: 'Inter 600 / 15px'
    hover-bg: '#bce815'
    active-bg: '#a9d40f'
    use: 'Primary CTA — Try Recraft Studio. The lime is the brand; it is the only chromatic moment in the chrome.'
  button-secondary:
    background: 'rgba(255, 255, 255, 0.9)'
    text: '#0000ee'
    padding: '10px 16px'
    radius: 8
    border: 'none'
    font: 'Inter 600 / 15px'
    hover-bg: '#ffffff'
    use: 'Sign in — near-white pill with browser-blue text; the inverted twin to the lime CTA.'
  button-ghost:
    background: 'transparent'
    text: '#ffffff'
    padding: '10px 16px'
    radius: 8
    border: '1px solid rgba(255, 255, 255, 0.18)'
    font: 'Inter 600 / 15px'
    hover-bg: 'rgba(255, 255, 255, 0.06)'
    use: 'Outline / quiet utility — secondary actions, nav, repeated inline buttons on dark.'
  button-text:
    background: 'transparent'
    text: '#ffffff'
    padding: '8px 4px'
    radius: 8
    font: 'Inter 500 / 15px'
    hover-text: '#d2fc31'
    use: 'Link-style button — inline text actions; hover shifts to lime.'
  card:
    background: '#141414'
    border: '1px solid rgba(255, 255, 255, 0.10)'
    radius: 12
    padding: '24px'
    use: 'Feature / capability card — near-black fill, hairline edge, no shadow at rest.'
  card-showcase:
    background: '#141414'
    border: 'none'
    radius: 12
    padding: '0'
    use: 'Generated-art showcase tile — image bleeds to the rounded edge; the work supplies all colour.'
  input:
    background: '#141414'
    border: '1px solid rgba(255, 255, 255, 0.18)'
    radius: 8
    padding: '10px 14px'
    font: 'Inter 400 / 15px'
    placeholder-color: '#737373'
    focus-ring: '0 0 0 2px #d2fc31'
    use: 'Form fields, search, prompt composer.'
  badge-tag:
    background: 'rgba(255, 255, 255, 0.08)'
    text: '#a3a3a3'
    padding: '4px 10px'
    radius: 9999
    font: 'Inter 500 / 12px'
    use: 'Category / style chip — quiet white-wash pill.'
  badge-lime:
    background: 'rgba(210, 252, 49, 0.14)'
    text: '#d2fc31'
    border: '1px solid rgba(210, 252, 49, 0.45)'
    padding: '4px 10px'
    radius: 9999
    font: 'Inter 600 / 12px'
    use: 'New-feature / beta badge — borrows the brand lime at low saturation.'
  nav-link:
    background: 'transparent'
    text: '#ffffff'
    padding: '8px 12px'
    font: 'Inter 500 / 15px'
    hover-text: '#a3a3a3'
    active-bg: 'rgba(255, 255, 255, 0.08)'

motion:
  ease-standard: 'cubic-bezier(0.4, 0, 0.2, 1)'
  ease-emphasized: 'cubic-bezier(0.2, 0, 0, 1)'
  duration-fast: 150
  duration-standard: 240
  duration-slow: 320
  duration-page: 420
  reduced-motion: 'respects prefers-reduced-motion: reduce — looping showcase reels pause on a static frame, transforms collapse to opacity-only, durations halve.'

breakpoints:
  mobile: 640
  tablet: 1024
  desktop: 1280
  wide: 1536

shadows:
  none: 'none'
  ambient: 'rgba(0, 0, 0, 0.25) 0 1px 3px'
  standard: 'rgba(0, 0, 0, 0.35) 0 4px 12px'
  elevated: 'rgba(0, 0, 0, 0.45) 0 16px 32px -8px'
  modal: 'rgba(0, 0, 0, 0.65) 0 24px 48px -12px'
  ring: '0 0 0 2px #d2fc31'
  ring-soft: '0 0 0 3px rgba(210, 252, 49, 0.30)'

accessibility:
  contrast-text-on-bg: 21.0          # #ffffff on #000000 — AAA at all sizes
  contrast-text-muted-on-bg: 8.3     # #a3a3a3 on #000000 — AAA at body sizes
  contrast-text-soft-on-bg: 4.4      # #737373 on #000000 — AA large; borderline AA body
  contrast-brand-on-bg: 17.7         # #d2fc31 on #000000 — AAA
  contrast-on-brand-on-brand: 7.9    # #0000ee on #d2fc31 — AAA at large, AA at body
  focus-ring: '2px solid #d2fc31 with 2px offset on dark'
  reduced-motion-honored: true
  keyboard-nav: 'tab order: skip-link → masthead → primary CTA → showcase grid → footer; Esc dismisses modals.'
  prose-line-length: 'capped at 720px on text pages; showcase galleries bleed to viewport.'

dark-mode: default                  # Recraft's marketing surface is dark-only.
colors-dark: same as colors          # primary surface is already dark — see colors map.
---

## 1. Visual Theme & Atmosphere

Recraft opens on a jet-black studio. The canvas is pure `#000000` — the same absolute black that turns a page into a stage — but where a quieter AI tool would lay a thin 400-weight headline across it, Recraft does the opposite: it slams the hero in **ABC Gravity Condensed** at 56px, weight **900**, in pure white. ABC Gravity is a Dinamo display face built for impact — narrow, dense, with tightly nested counters — and at weight 900 it reads like a screen-printed poster slab. The headline doesn't whisper a positioning statement; it shouts a name. This is the single most defining decision on the page, and it's the inverse of the Swiss-placard restraint you see across the rest of the dark-AI category.

Against that heavy display, the supporting palette is disciplined to near-silence. Body copy is a clean neutral sans — Inter or its system fallbacks — set small and calm at 16px. Captions step down to `#a3a3a3`, quiet labels to `#737373`. Borders are 10% white hairlines, surfaces lift by tonal stepping (`#000000` → `#141414` → `#1c1c1c`) rather than by shadow. The chrome is grayscale top to bottom. Everything that isn't the headline is built to disappear so the two loud things on the page can land.

The two loud things are the headline and the colour. Recraft's brand colour is an electric lime `#d2fc31` (rgb 210, 252, 49) — alarmingly bright, nearly fluorescent, with a measured luminance of 0.84, which makes it one of the brightest brand colours in the entire AI-tools category. It appears once, on the primary "Try Recraft Studio" CTA, and it is paired with a deliberately raw detail: the CTA's text is rendered in `#0000ee`, the default browser-link blue. That blue-on-lime combination is not a tasteful brand pairing — it's an intentionally un-designed, almost developer-default choice that signals tool-not-toy. The lime is the brand; the raw blue is the attitude.

The atmospheric vocabulary: **jet-black stage, poster-slab headline, condensed-900-display, electric-lime-shout, browser-blue-ink, grayscale-chrome, tonal-elevation, single-colour-discipline, graphic-not-corporate.** Card radii sit at a comfortable 12px; buttons at 8px. Section rhythm runs 96–128px. There are no gradients, no meshes, no glow — just black, white, one ferocious lime, and the work the studio generates, which supplies every other colour on the page.

When the lime appears, it pulls the entire composition toward it. Because the rest of the page is grayscale, a single lime button at the top of the fold is impossible to miss — it functions like a highlighter stroke across a printed page. The discipline of using it exactly once keeps the lime-on-black signature recognisable from a thumbnail.

**Key Characteristics**

- Pure `#000000` canvas — absolute black, untinted, dark-only marketing surface
- ABC Gravity Condensed display — 56px headline at weight **900** (the poster-slab move)
- Electric-lime brand `#d2fc31` (rgb 210, 252, 49) — used once, on the primary CTA
- Raw browser-blue `#0000ee` CTA text on the lime — deliberately un-designed, tool-not-toy register
- Clean neutral body sans (Inter / system) at 16px — calm against the heavy display
- 10% white hairline borders — tonal stacking, no heavy shadows
- 8px button radius / 12px card radius — comfortable, not pill-soft
- Grayscale chrome — every pixel of saturation belongs to the lime or to the generated art
- 96–128px section rhythm — confident, poster-paced cadence
- No gradients, no meshes, no glow — flat black ground

## 2. Color Palette & Roles

### Primary

- **bg** `#000000` — pure black studio canvas; the stage the headline and lime perform on.
- **text** `#ffffff` — display white; headline, headings, and body on dark. 21:1 against the canvas.
- **bg-alt** `#0a0a0a` — near-black alternate band for section separation without a hairline.

### Brand & Accent

- **brand** `#d2fc31` — electric lime (rgb 210, 252, 49). The brand. Primary CTA fill, focus ring, link-hover.
- **brand-deep** `#bce815` — pressed/active lime; a half-step darker for tactile feedback.
- **brand-soft** `rgba(210, 252, 49, 0.14)` — lime wash for selected pills, beta badges, highlight zones.
- **on-brand** `#0000ee` — raw browser-blue text rendered on the lime CTA; the brand's signature un-designed detail.
- **on-brand-ink** `#000000` — alternate near-black ink for lime fills where the blue would read as a defect.

### Interactive

- **link** `#ffffff` — links default white on dark; underlined for affordance.
- **link-hover** `#d2fc31` — lime on hover; the only chromatic shift in running text.
- **cta-secondary-bg** `rgba(255, 255, 255, 0.9)` — near-white "Sign in" pill at 90% opacity over the black.
- **cta-secondary-text** `#0000ee` — browser-blue text on the white pill, mirroring the lime CTA's blue ink.
- **selected-bg** `rgba(255, 255, 255, 0.08)` — active nav, selected filter chip.
- **disabled** `#525252` — neutral disabled chrome.

### Neutral Scale

- **white** `#ffffff` — display value, maximum contrast.
- **neutral-400** `#a3a3a3` — muted captions and secondary copy (8.3:1 on black).
- **neutral-500** `#737373` — quiet labels, helper text, placeholders (4.4:1 on black).
- **neutral-600** `#525252` — disabled, faint chrome.
- **near-black-1** `#0a0a0a` — alternate band ground.
- **near-black-2** `#141414` — raised card / panel surface.
- **near-black-3** `#1c1c1c` — secondary panel.
- **near-black-4** `#242424` — popover / modal raised.

### Surface & Borders

- **surface-0 (page)** `#000000` — pure black.
- **surface-1 (band)** `#0a0a0a` — near-black alternate band.
- **surface-2 (raised)** `#141414` — card / panel.
- **surface-3 (panel)** `#1c1c1c` — nested panel.
- **surface-4 (elevated)** `#242424` — popover / modal.
- **border** `rgba(255, 255, 255, 0.10)` — 10% white hairline, the default rule on dark.
- **border-strong** `rgba(255, 255, 255, 0.18)` — emphasized rule on inputs, dividers, ghost buttons.
- **border-subtle** `rgba(255, 255, 255, 0.05)` — quietest division.
- **border-lime** `rgba(210, 252, 49, 0.45)` — lime ring on focus and selected states.

### Shadow Colors

Shadows on Recraft are **deep-black, low-opacity, and rare**. The black canvas absorbs cast shadows, so most surfaces lift via tonal stepping (`#000000` → `#141414` → `#1c1c1c`) rather than blur. When shadows do appear — popovers, modals — they're declared at 25–65% black with large blur radii. The brand never uses lime-tinted shadows; the lime stays in fills and rings.

### Semantic

- **success** — bg `rgba(74, 222, 128, 0.12)`, text `#86efac` (green-300).
- **warning** — bg `rgba(250, 204, 21, 0.12)`, text `#fde047` (yellow-300).
- **danger** — bg `rgba(248, 113, 113, 0.12)`, text `#fca5a5` (red-300).
- **info** — bg `rgba(210, 252, 49, 0.10)`, text `#d2fc31` — borrows the brand lime at low saturation for in-product hints.

Note: Recraft uses **Tailwind 300-step text colours** for semantic text on dark so they stay legible against black without competing with the lime. Saturated 500s would fight the brand colour for attention.

## 3. Typography Rules

### Font Family

- **Display**: `"ABC Gravity Condensed", "Arial Narrow", system-ui, sans-serif` — Dinamo's high-impact condensed grotesque, licensed and self-hosted. Narrow, dense, poster-grade. Used for the hero and all headings at weight 700–900.
- **Body**: `Inter, ui-sans-serif, system-ui, "Helvetica Neue", Arial, sans-serif` — a clean neutral sans for all running copy, UI labels, and buttons. (The audit's reported `sans-serif` 12px is a measurement-noise fallback from an unbranded utility node, not the real body face; the visible body type is a clean grotesque set at 16px.)
- **Mono**: `ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, monospace` — for dimensions, seed values, API snippets, and rare inline code.
- **OpenType features**: `kern` and `liga` always on. `tnum` (tabular figures) and `zero` (slashed zero) enabled in mono.

### Hierarchy

| Role | Font | Size | Weight | Line Height | Letter Spacing | Transform | Notes |
|---|---|---|---|---|---|---|---|
| Display Hero | ABC Gravity Condensed | 80px | 900 | 0.98 | -0.03em | uppercase | Reserved for major launch slabs |
| Display LG | ABC Gravity Condensed | 56px | 900 | 1.0 | -0.02em | none | Homepage hero — the signature |
| H1 | ABC Gravity Condensed | 40px | 800 | 1.08 | -0.018em | none | Page title |
| H2 | ABC Gravity Condensed | 32px | 800 | 1.15 | -0.012em | none | Major section heading |
| H3 | ABC Gravity Condensed | 24px | 700 | 1.25 | -0.005em | none | Sub-section heading |
| H4 | Inter | 20px | 600 | 1.3 | normal | none | Card heading — drops to body face |
| Eyebrow | Inter | 12px | 600 | 1.4 | 0.08em | uppercase | Section pre-label |
| Lede | Inter | 20px | 400 | 1.5 | normal | none | Hero sub-paragraph |
| Body Large | Inter | 18px | 400 | 1.55 | normal | none | Feature paragraph |
| Body | Inter | 16px | 400 | 1.55 | normal | none | Default body |
| Body Small | Inter | 14px | 400 | 1.5 | normal | none | Compact UI body |
| Button | Inter | 15px | 600 | 1.0 | normal | none | CTA + nav button label |
| Label | Inter | 13px | 500 | 1.4 | normal | none | Form labels, UI chrome |
| Caption | Inter | 12px | 500 | 1.4 | 0.02em | none | Captions, helper text |
| Code | mono | 13px | 400 | 1.55 | normal | none | Inline + block code |
| Code Micro | mono | 11px | 400 | 1.4 | normal | none | Model version, footnote |

### Principles

- **The display/body split is the whole system.** ABC Gravity Condensed carries every heading at heavy weight; Inter (or system sans) carries everything else at 400–600. The two faces are tonally opposite on purpose — slab versus calm.
- **Display weight is 800–900, never lighter.** The hero at 900 is the brand statement; dropping headings below 700 loses the poster character entirely.
- **The body face is light and quiet.** Body never goes above 600. The contrast between a 900 headline and a 400 body is the point.
- **Negative tracking scales with size.** -0.03em at 80px, -0.02em at 56px, easing to near-normal by 24px. The condensed face already runs tight; over-tracking it muddies the counters.
- **Headings can go uppercase at hero scale only.** The 80px launch slab uppercases; the 56px homepage hero stays sentence-case to keep the longer line legible.
- **Body size is 16px / line-height 1.55.** Generous leading keeps the small neutral body readable below the heavy display.
- **Eyebrow uses 0.08em tracking, uppercase.** The single widely-tracked element — it signals the section break against the otherwise tight type.
- **Mono only for data.** Dimensions, seed values, API snippets — never button labels or UI chrome.

## 4. Component Stylings

### Buttons

**Primary (Lime)**
- Background: `#d2fc31` electric lime. Text: `#0000ee` browser-blue, Inter 600 / 15px.
- Padding: `10px 16px`. Radius: `8px`. No border.
- Hover: bg → `#bce815`; transition `240ms ease-standard`.
- Active: bg → `#a9d40f`.
- Focus: 2px lime ring with 2px offset (uses `brand` for the ring, with a near-black gap so it reads on black).
- Use: The single primary CTA — *Try Recraft Studio, Get started.* The lime is the brand; deploy it exactly once per view.

**Secondary (Near-white pill — "Sign in")**
- Background: `rgba(255, 255, 255, 0.9)`. Text: `#0000ee` browser-blue, Inter 600 / 15px.
- Padding: `10px 16px`. Radius: `8px`. No border.
- Hover: bg → `#ffffff` (full opacity).
- Use: The inverted twin to the lime CTA — sign-in, account entry. Mirrors the blue ink so the two CTAs read as a pair.

**Ghost (Outline)**
- Background: transparent. Text: `#ffffff`, Inter 600 / 15px.
- Border: `1px solid rgba(255, 255, 255, 0.18)`. Padding: `10px 16px`. Radius: `8px`.
- Hover: bg → `rgba(255, 255, 255, 0.06)`; border → `rgba(255, 255, 255, 0.28)`.
- Use: Secondary actions on dark — *Watch demo, View pricing, Read docs.*

**Text (Link-style)**
- Background: transparent. Text: `#ffffff`, Inter 500 / 15px. Padding: `8px 4px`.
- Hover: text → `#d2fc31` lime.
- Use: Inline text actions, footer links, repeated low-emphasis controls.

### Cards

**Feature Card**
- Background: `#141414`. Border: `1px solid rgba(255, 255, 255, 0.10)`. Radius: `12px`. Padding: `24px`.
- Shadow: none at rest; on hover, `rgba(0, 0, 0, 0.35) 0 4px 12px` + border → `rgba(255, 255, 255, 0.18)`.
- Use: Capability tile, feature block, pricing tier card.

**Showcase Tile (Generated art)**
- Background: `#141414` (placeholder ground). Border: none. Radius: `12px`. Padding: `0`.
- Hover: 1.02× scale + 16px soft shadow at 35% black.
- Use: Generated-image gallery — the art bleeds to the rounded edge and supplies all the colour the chrome withholds.

**Inset Panel**
- Background: `#1c1c1c`. Border: `1px solid rgba(255, 255, 255, 0.05)`. Radius: `8px`. Padding: `16px`.
- Use: Quiet info zone — cookie banner, in-feed note, nested settings block.

### Badges, Tags, Pills

**Tag Chip** — bg `rgba(255, 255, 255, 0.08)`, text `#a3a3a3`, Inter 500 / 12px, padding `4px 10px`, radius `9999`. Hover deepens bg to `rgba(255, 255, 255, 0.12)`.

**Lime Badge** — bg `rgba(210, 252, 49, 0.14)`, text `#d2fc31`, border `1px solid rgba(210, 252, 49, 0.45)`, radius `9999`, Inter 600 / 12px. Used for "new," "beta," and feature-flag callouts.

**Eyebrow Label** — no chrome, just type. Inter 600 / 12px / uppercase / 0.08em tracking, colour `#737373`.

### Inputs / Forms

**Text Input**
- Background: `#141414`. Border: `1px solid rgba(255, 255, 255, 0.18)`. Radius: `8px`. Padding: `10px 14px`.
- Font: Inter 400 / 15px. Placeholder: `#737373`.
- Focus: `0 0 0 2px #d2fc31` ring, border → `rgba(210, 252, 49, 0.45)`.
- Error: border → `#f87171`, helper red `#fca5a5` below.

**Prompt Composer**
- Background: `#141414`. Border: `1px solid rgba(255, 255, 255, 0.18)`. Radius: `12px`. Padding: `12px 16px`.
- Font: Inter 400 / 16px. Placeholder: `#737373`.
- Inner button: lime `#d2fc31` generate button, 8px radius, blue arrow / label.
- Focus: ring grows to 3px at 30% lime.
- Use: Studio entry — the multi-line prompt box that opens the editor.

### Navigation

- Header height `64px`. Background `transparent` over hero; gains `backdrop-filter: blur(12px)` + `#0a0a0a` wash on scroll.
- Logo: Recraft wordmark in white.
- Nav links: Inter 500 / 15px, colour `#ffffff`, padding `8px 12px`. Hover: text → `#a3a3a3`.
- Right side: near-white "Sign in" pill + lime "Try Recraft Studio" primary CTA.
- Mobile (<640px): hamburger collapses to a full-screen sheet; links stack at 18px / 500.

### Optional Components

**Dropdown Menu** — bg `#141414`, border `rgba(255, 255, 255, 0.10)`, radius `8px`, shadow `rgba(0, 0, 0, 0.45) 0 12px 24px -8px`. Items: Inter 400 / 15px, hover bg `rgba(255, 255, 255, 0.06)`.

**Tooltip** — bg `#242424`, text `#ffffff`, radius `4px`, padding `6px 10px`, Inter 500 / 12px.

**Toast** — bg `#141414`, border `rgba(255, 255, 255, 0.10)`, radius `8px`, padding `12px 16px`, shadow `rgba(0, 0, 0, 0.45) 0 8px 24px -4px`.

**Modal** — bg `#141414`, radius `12px`, shadow `rgba(0, 0, 0, 0.65) 0 24px 48px -12px`, max-width `560px`. Backdrop: 70% black.

## 5. Layout Principles

### Spacing System

- **Base unit**: 4px.
- **Scale**: 0, 4, 8, 12, 16, 24, 32, 48, 64, 96, 128 — a compact-to-generous ladder.
- **Density observation**: Recraft is *medium-dense* at the chrome level (96–128px section rhythm) and *medium-dense* at the content level (12-col grid, 24px gutters). The heavy display headline carries the visual weight, so the surrounding layout doesn't need extreme whitespace to feel confident.

### Grid & Container

- **Page max width**: `1280px` — a focused frame, narrower than Krea's cinematic 1440px.
- **Site gutter**: `clamp(20px, 4vw, 48px)`.
- **Grid**: 12 columns with 24px gutters.
- **Hero treatment**: 56px condensed headline left-aligned (or centred on landing), lede 18–20px below, primary lime CTA + secondary sign-in directly under the lede; showcase grid begins ~64px below.

### Whitespace Philosophy

The whitespace is **confident, not luxurious**. Section gutters run 96–128px between major blocks; minor blocks sit on 48–64px gaps; intra-section spacing uses 16–32px. The heavy headline does the work that whitespace does on quieter sites — the page reads decisive because the type is loud, not because the margins are vast.

### Section Cadence

- Hero (black, headline + lime CTA + showcase preview) → Capability ladder (black, 12-col cards) → Generated-art gallery (black, masonry/grid of showcase tiles) → Social proof / logos (black) → Pricing (black) → Footer (`#0a0a0a` near-black).
- The whole site stays in dark territory; no light/dark alternation on the marketing surface.
- Section breaks are vertical space + occasional 1px hairlines (`rgba(255, 255, 255, 0.10)`) or a near-black band swap.

## 6. Shapes & Radius Scale

| Tier | Value | Use |
|---|---|---|
| Micro | 2px | Decorative dividers, icon-corner inheritance |
| Standard (sm) | 4px | Tooltips, compact status pills |
| Comfortable (md) | 8px | Buttons, inputs, dropdowns — the dominant radius |
| Relaxed (lg) | 12px | Cards, showcase tiles, modals — Recraft's card signature |
| Featured (xl) | 16px | Large hero panels, full-bleed feature embeds |
| Pill | 9999px | Tag chips, badges, sign-in pill |

Recraft's button radius is **8px** and its card radius is **12px** — comfortable and graphic, neither sharp-corporate nor pill-soft. The 8px buttons keep the lime CTA looking like a stamped slab rather than a rounded toy; the 12px cards give the showcase tiles a gentle frame without softening the poster register. There are no zero-radius marketing surfaces. Compound radii are rare; the scale reads as a flat ladder.

## 7. Depth & Elevation

| Level | Treatment | Use |
|---|---|---|
| 0 | Flat — no shadow | Default page surface, hero, body sections |
| 1 | Tonal — `#141414` against `#000000` | Cards, inset panels |
| 2 | `rgba(0,0,0,0.25) 0 1px 3px` | Sticky nav on scroll |
| 3 | `rgba(0,0,0,0.35) 0 4px 12px` | Hover-lifted cards, showcase tiles |
| 4 | `rgba(0,0,0,0.45) 0 16px 32px -8px` | Dropdowns, popovers |
| 5 | `rgba(0,0,0,0.65) 0 24px 48px -12px` | Modals, dialogs |

### Shadow Philosophy

Recraft's depth is **tonal first, shadow second**. The grayscale ladder (`#000000` → `#141414` → `#1c1c1c` → `#242424`) does the primary elevation work — surfaces step up by value rather than by cast shadow. Cast shadows appear only for floating elements (dropdowns, modals, hover-lifted tiles) and use deep black at 25–65% opacity. The brand never tints a shadow with lime; the lime stays in fills and focus rings. Because the canvas is absolute black, blur-based depth barely registers — so the system leans on value contrast to read elevation.

## 8. Interaction & Motion

### Easing Curves

- **`ease-standard`**: `cubic-bezier(0.4, 0, 0.2, 1)` — default for hover, focus, colour transitions.
- **`ease-emphasized`**: `cubic-bezier(0.2, 0, 0, 1)` — punchier exit; modal enter, hero reveal.

### Duration Buckets

- **Fast (150ms)** — colour transitions, focus rings, link hovers.
- **Standard (240ms)** — button hover, card hover, dropdown reveal.
- **Slow (320ms)** — modal enter/exit, section fade-in.
- **Page (420ms)** — route transitions, hero reveal sequences.

### Per-Component Micro-States

- **Button hover (primary)**: bg `#d2fc31` → `#bce815` over 240ms; no transform — the lime stays planted.
- **Button hover (ghost)**: bg transparent → `rgba(255, 255, 255, 0.06)`; border lightens over 240ms.
- **Card hover**: border `rgba(255, 255, 255, 0.10)` → `rgba(255, 255, 255, 0.18)` + 4px soft shadow over 240ms.
- **Showcase tile hover**: scale 1.02× over 240ms + 16px soft shadow at 35% black.
- **Link hover**: colour `#ffffff` → `#d2fc31` over 150ms; underline thickens 1px → 2px.
- **Input focus**: 2px lime ring fades in over 150ms; border picks up lime at 45%.

### Page Transitions

Showcase reels auto-play silently with `prefers-reduced-motion` honoured. Below-fold sections use `IntersectionObserver` to fade in at ~80% viewport, 320ms, 12px translate-up.

### Reduced Motion

`@media (prefers-reduced-motion: reduce)` — looping showcase reels pause on a static frame; all transforms collapse to opacity-only; durations halve.

## 9. Accessibility & A11y

### Contrast Pairs

- **`#ffffff` text on `#000000` bg**: 21.0:1 — AAA at all sizes.
- **`#a3a3a3` text on `#000000` bg**: 8.3:1 — AAA at body sizes.
- **`#737373` text on `#000000` bg**: 4.4:1 — AA at large sizes; borderline at body, reserve for non-essential labels.
- **`#d2fc31` lime on `#000000` bg**: 17.7:1 — AAA; the lime is exceptionally legible on black.
- **`#0000ee` blue text on `#d2fc31` lime CTA**: 7.9:1 — AAA at large (button label is 15px/600 bold, qualifies as large), AA at body sizes.
- **`#a3a3a3` text on `#141414` surface**: 7.6:1 — AAA at body sizes.

Note: the signature `#0000ee`-on-lime CTA clears AA comfortably thanks to the lime's very high luminance — the "raw" pairing is legible as well as expressive. The one watch-point is `#737373` on pure black at small body sizes; promote secondary copy to `#a3a3a3` when it must be read.

### Focus Indicators

- Default ring: `0 0 0 2px #d2fc31` with a 2px near-black offset so the lime ring reads against both dark and lime surfaces.
- Soft ring (prompt composer focus): `0 0 0 3px rgba(210, 252, 49, 0.30)`.
- Every interactive surface shows a visible focus state — the lime ring doubles as a brand cue.

### ARIA Patterns

- **Navigation**: `<nav aria-label="Main">` with a skip-link to `#main-content`.
- **Prompt composer**: `<form aria-label="Generate with Recraft Studio">` with `aria-label` on the textarea.
- **Showcase gallery**: `aria-label="Generated artwork gallery"`; each tile has an `aria-label` describing the generated image.
- **Dialog**: `role="dialog" aria-modal="true" aria-labelledby` with focus trap and Esc-to-close.
- **Live regions**: `aria-live="polite"` for generation status and toast messages.

### Keyboard Navigation

- Tab order: skip-link → masthead nav → primary CTA → showcase grid → footer.
- Arrow keys navigate within the showcase grid; Space/Enter opens a tile.
- `Esc` closes dropdowns and modals.

### Screen Reader Hints

- Decorative showcase reels with no semantic content: `aria-hidden="true"`.
- Icon-only buttons carry an `aria-label`.
- The lime CTA's accessible name is its text ("Try Recraft Studio"); colour is never the sole signal.

### Reduced Motion

Honoured globally. Showcase reels pause on a static frame; tile-scale hover disabled; durations halved.

## 10. Responsive Behavior

### Breakpoints

| Name | Width | Use |
|---|---|---|
| Mobile | < 640px | Single-column, full-bleed showcase tiles, stacked CTAs |
| Tablet | 640–1024px | 2-column tile grid, condensed nav |
| Desktop | 1024–1280px | 3-column grid, full nav |
| Wide | 1280–1536px | Page locks near 1280px; gutters expand |
| Ultra | > 1536px | Centred 1280px frame, generous outer gutters |

### Touch Targets

- Minimum tap target: 44×44px.
- Buttons: 44px minimum height on mobile.
- Showcase tile: the full tile is the tap target; controls reveal on tap.

### Collapsing Strategy

- **Header**: full nav at ≥1024px; hamburger sheet below.
- **Hero**: 56px → 44px → 34px headline across desktop/tablet/mobile (the condensed face stays legible scaling down).
- **CTA pair**: lime CTA + sign-in sit inline on desktop; stack vertically (lime on top) on mobile.
- **Tile grid**: 3-up → 2-up → 1-up across sizes.
- **Section spacing**: 128px → 96px → 64px across sizes.

### Image Behavior

- Showcase reels use `<video autoplay muted loop playsinline>` with a poster frame for `prefers-reduced-motion`.
- Static generated images use `srcset` with breakpoint-derived sizes; native lazy-loading.
- Tile aspect ratios vary with the generated art; the grid uses masonry or fixed cells depending on section.

### Container Queries

Used inside capability cards to switch icon-left vs. icon-top layout when card width crosses ~320px.

## 11. Content & Voice

### Tone

**Direct, capable, made-for-pros.** Recraft writes like a tool built by people who ship — short declaratives, concrete verbs, no consumer-app exuberance. The headline names what it is ("AI for designers, creatives, sellers, and teams"); the copy below it lists capabilities rather than promises. The voice positions Recraft as professional infrastructure for visual production, not a novelty generator.

### Microcopy Patterns

- **Button verbs**: "Try Recraft Studio," "Sign in," "Generate," "Export," "Upscale." Never "Start your creative journey!"
- **Error messages**: "Generation failed. Adjust the prompt and try again." — plain, recoverable.
- **Success confirmations**: "Exported." "Saved to project." Brief, past-tense, done.
- **Loading states**: "Generating…" with a subtle progress indicator.

### Empty States

- *"No projects yet. Open the Studio to create your first design."* — explain, offer the next step.
- *"No results."* — search empty, no apology.
- Never uses "Oops!" or apologetic exclamation marks.

### CTA Verb Conventions

- Primary on hero: "Try Recraft Studio," "Get started," "Open Studio"
- Secondary: "Sign in," "See pricing," "View the gallery," "Read the API docs"
- Footer: "Pricing," "API," "Blog," "Careers"

The voice is **confident and utilitarian** — it assumes you already make things for a living and just need a faster, more controllable way to do it.

## 12. Dark Mode & Theming

**Dark-only marketing surface.** The site, hero, pricing, and gallery all render on the absolute black canvas — that's the brand's defining choice, and there is no light variant of the marketing pages.

The one place the palette inverts is *inside* the Studio editor, where the working artboard is light (a white or neutral canvas) so generated art reads true to how it will be used — but that's an application-canvas decision, not a site theme. The public brand never appears on a light ground.

The single rule: **never** render the Recraft marketing surface in light mode. Black is the stage; the lime and the work are the only colour. If you find yourself building a light hero, you've left the brand.

## 13. Lineage & Influences

Recraft's design DNA is **the pure-black AI-tool canvas (Vercel / Krea) crossed with the high-impact condensed-display poster tradition (Dinamo's ABC Gravity, screen-print and risograph culture) and a single fluorescent spot-colour borrowed from sportswear and rave-flyer graphics.** Where Krea commits to absolute black with quiet 400-weight Suisse Intl and a single cobalt, and where Runway goes editorial near-black with Söhne, Recraft keeps the black but cranks the display to 900-weight condensed and swaps the cool cobalt for an alarmingly bright lime. It's the same dark-AI category, played loud.

What it inherits: the pure-black canvas with monochrome chrome and the work-supplies-the-colour discipline (Vercel, Krea); the heavy-condensed display slab as a poster device (Dinamo / ABC Gravity, broadside and screen-print typography); a single fluorescent spot-colour used with discipline (sportswear, Highsnobiety / hype-graphic culture). The raw `#0000ee` browser-blue link text on the lime CTA is a deliberate borrow from un-styled, developer-default web aesthetics — a knowing "we didn't soften this" gesture. What it rejects: gradient meshes, soft pastel AI clichés, robotic-face iconography, the friendly rounded-everything consumer look.

**Named influences:**

- **Dinamo (ABC Gravity)** — the condensed high-impact display foundry whose face sets Recraft's poster headline. *https://abcdinamo.com*
- **Vercel** — pure-black canvas with monochrome chrome and product-as-colour. *https://vercel.com*
- **Krea** — the dark-first creative-AI gallery with one disciplined accent; Recraft's nearest category neighbour. *https://www.krea.ai*
- **Inter (Rasmus Andersson)** — the neutral grotesque carrying all of Recraft's body copy. *https://rsms.me/inter/*
- **Swiss / International Typographic Style** — grid discipline, restricted palette, function-led layout under the loud display. *https://en.wikipedia.org/wiki/International_Typographic_Style*

## 14. Do's and Don'ts

### Do

- **Do** keep the canvas at pure `#000000`. Absolute black is the stage.
- **Do** set the headline in ABC Gravity Condensed at weight **800–900**. The poster slab is the brand.
- **Do** reserve the lime `#d2fc31` for the single primary CTA, focus rings, and link-hover — never for backgrounds.
- **Do** render the CTA text in `#0000ee` browser-blue on the lime. The raw pairing is intentional and on-brand.
- **Do** keep body copy quiet — clean neutral sans at 16px, weight 400, in white or `#a3a3a3`.
- **Do** use 10% white hairlines (`rgba(255, 255, 255, 0.10)`) for borders. Solid borders are too loud against the type.
- **Do** lift surfaces by tonal stepping (`#000000` → `#141414`) rather than shadow.
- **Do** keep buttons at 8px radius and cards at 12px — graphic, not pill-soft.
- **Do** let the generated artwork supply every colour the chrome withholds.
- **Do** deploy the lime exactly once per viewport so it keeps its impact.

### Don't

- **Don't** introduce a second chromatic accent — the lime is the only brand colour.
- **Don't** soften the canvas to `#0a0a0a` or `#111111` for the marketing surface; pure black is the entry ticket.
- **Don't** set the headline in a normal-width or light-weight face — it must be heavy and condensed.
- **Don't** "fix" the `#0000ee`-on-lime CTA to a tasteful navy; the raw blue is the attitude.
- **Don't** use the lime as a fill behind text, a section background, or a card ground.
- **Don't** add gradients, meshes, or glow — the system is flat black and one spot-colour.
- **Don't** bold the body copy to match the headline; the 900-vs-400 contrast is the point.
- **Don't** run the marketing surface in light mode — light belongs only to the in-app artboard.
- **Don't** tint shadows with lime; the lime stays in fills and rings.
- **Don't** apologise in microcopy — empty states and errors are matter-of-fact, never "Oops!"

## 15. Agent Prompt Guide

### Quick Color Reference

```
bg: #000000
bg-alt: #0a0a0a
surface: #141414
surface-soft: #1c1c1c
text: #ffffff
text-muted: #a3a3a3
text-soft: #737373
brand: #d2fc31        (electric lime — the brand)
brand-deep: #bce815
on-brand: #0000ee     (browser-blue CTA text on lime)
border: rgba(255, 255, 255, 0.10)
border-strong: rgba(255, 255, 255, 0.18)
```

### Example Component Prompts

1. **"Create a Recraft-style hero — pure black `#000000` canvas, a 56px headline in ABC Gravity Condensed at weight **900** in white, an 18–20px lede in a clean neutral sans below in `#a3a3a3`. Under the lede, a single primary CTA: a lime `#d2fc31` button at 8px radius with the label in raw browser-blue `#0000ee`, paired with a near-white 'Sign in' pill (`rgba(255,255,255,0.9)` bg, `#0000ee` text). Below, a grid of generated-art showcase tiles at 12px radius."**

2. **"Design a Recraft primary CTA — lime `#d2fc31` fill, no border, 8px radius, `10px 16px` padding, label in Inter 600 / 15px coloured browser-blue `#0000ee`. Hover deepens the fill to `#bce815`; focus shows a 2px lime ring with a 2px near-black offset. Do not soften the blue text."**

3. **"Build a Recraft feature card — `#141414` background, 1px `rgba(255, 255, 255, 0.10)` border, 12px radius, 24px padding. Heading in ABC Gravity Condensed 24px / 700 white; body in Inter 16px / 400 `#a3a3a3`. Hover lightens the border to 18% white and adds a 4px soft black shadow."**

4. **"Compose a Recraft nav — 64px transparent header that gains a `#0a0a0a` blur wash on scroll, wordmark hard-left in white. Link list Inter 500 / 15px white with `#a3a3a3` hover. Right side: near-white 'Sign in' pill + lime `#d2fc31` 'Try Recraft Studio' CTA with `#0000ee` text."**

5. **"Render a Recraft prompt composer — `#141414` background, 1px `rgba(255, 255, 255, 0.18)` border, 12px radius, multi-line textarea with `#737373` placeholder in Inter 16px. A lime `#d2fc31` 'Generate' button bottom-right at 8px radius. Focus grows a 3px lime ring at 30% opacity."**

6. **"Create a Recraft showcase gallery — pure black section, 96px vertical padding, an ABC Gravity Condensed 32px / 800 white section heading, then a 3-column grid of generated-art tiles at 12px radius with no chrome. Tiles scale 1.02× on hover with a 16px soft shadow at 35% black. The art supplies all the colour."**

### Iteration Guide

1. **Start with pure `#000000`.** If the bg is `#0a0a0a` or `#111111`, you've softened the stage. Absolute black is the entry ticket.
2. **Make the headline heavy and condensed.** ABC Gravity Condensed at 800–900 is the brand. If your headline is a normal grotesque, you've lost the poster register.
3. **Use the lime exactly once.** `#d2fc31` belongs on the single primary CTA (plus focus rings and link-hover) — never a second button, never a background.
4. **Keep the raw blue.** The CTA text is `#0000ee` browser-blue on the lime. If you've made it navy or white "to look cleaner," you've removed the attitude — put it back.
5. **Quiet everything that isn't the headline or the lime.** Body in clean sans at 16px / 400, captions in `#a3a3a3`, borders at 10% white. The contrast between loud and quiet is the system.
6. **Lift with tone, not shadow.** `#000000` → `#141414` separates panels; reserve cast shadows for floating elements only.
7. **Buttons 8px, cards 12px.** Don't pill the buttons; don't sharpen the cards. The comfortable-graphic radius keeps the slab feel.
8. **Let the work carry the colour.** Every saturated pixel that isn't the lime should come from the generated artwork in the showcase grid — not from the chrome.
Prose

1. Visual Theme & Atmosphere

Recraft opens on a jet-black studio. The canvas is pure #000000 — the same absolute black that turns a page into a stage — but where a quieter AI tool would lay a thin 400-weight headline across it, Recraft does the opposite: it slams the hero in ABC Gravity Condensed at 56px, weight 900, in pure white. ABC Gravity is a Dinamo display face built for impact — narrow, dense, with tightly nested counters — and at weight 900 it reads like a screen-printed poster slab. The headline doesn’t whisper a positioning statement; it shouts a name. This is the single most defining decision on the page, and it’s the inverse of the Swiss-placard restraint you see across the rest of the dark-AI category.

Against that heavy display, the supporting palette is disciplined to near-silence. Body copy is a clean neutral sans — Inter or its system fallbacks — set small and calm at 16px. Captions step down to #a3a3a3, quiet labels to #737373. Borders are 10% white hairlines, surfaces lift by tonal stepping (#000000#141414#1c1c1c) rather than by shadow. The chrome is grayscale top to bottom. Everything that isn’t the headline is built to disappear so the two loud things on the page can land.

The two loud things are the headline and the colour. Recraft’s brand colour is an electric lime #d2fc31 (rgb 210, 252, 49) — alarmingly bright, nearly fluorescent, with a measured luminance of 0.84, which makes it one of the brightest brand colours in the entire AI-tools category. It appears once, on the primary “Try Recraft Studio” CTA, and it is paired with a deliberately raw detail: the CTA’s text is rendered in #0000ee, the default browser-link blue. That blue-on-lime combination is not a tasteful brand pairing — it’s an intentionally un-designed, almost developer-default choice that signals tool-not-toy. The lime is the brand; the raw blue is the attitude.

The atmospheric vocabulary: jet-black stage, poster-slab headline, condensed-900-display, electric-lime-shout, browser-blue-ink, grayscale-chrome, tonal-elevation, single-colour-discipline, graphic-not-corporate. Card radii sit at a comfortable 12px; buttons at 8px. Section rhythm runs 96–128px. There are no gradients, no meshes, no glow — just black, white, one ferocious lime, and the work the studio generates, which supplies every other colour on the page.

When the lime appears, it pulls the entire composition toward it. Because the rest of the page is grayscale, a single lime button at the top of the fold is impossible to miss — it functions like a highlighter stroke across a printed page. The discipline of using it exactly once keeps the lime-on-black signature recognisable from a thumbnail.

Key Characteristics

  • Pure #000000 canvas — absolute black, untinted, dark-only marketing surface
  • ABC Gravity Condensed display — 56px headline at weight 900 (the poster-slab move)
  • Electric-lime brand #d2fc31 (rgb 210, 252, 49) — used once, on the primary CTA
  • Raw browser-blue #0000ee CTA text on the lime — deliberately un-designed, tool-not-toy register
  • Clean neutral body sans (Inter / system) at 16px — calm against the heavy display
  • 10% white hairline borders — tonal stacking, no heavy shadows
  • 8px button radius / 12px card radius — comfortable, not pill-soft
  • Grayscale chrome — every pixel of saturation belongs to the lime or to the generated art
  • 96–128px section rhythm — confident, poster-paced cadence
  • No gradients, no meshes, no glow — flat black ground

2. Color Palette & Roles

Primary

  • bg #000000 — pure black studio canvas; the stage the headline and lime perform on.
  • text #ffffff — display white; headline, headings, and body on dark. 21:1 against the canvas.
  • bg-alt #0a0a0a — near-black alternate band for section separation without a hairline.

Brand & Accent

  • brand #d2fc31 — electric lime (rgb 210, 252, 49). The brand. Primary CTA fill, focus ring, link-hover.
  • brand-deep #bce815 — pressed/active lime; a half-step darker for tactile feedback.
  • brand-soft rgba(210, 252, 49, 0.14) — lime wash for selected pills, beta badges, highlight zones.
  • on-brand #0000ee — raw browser-blue text rendered on the lime CTA; the brand’s signature un-designed detail.
  • on-brand-ink #000000 — alternate near-black ink for lime fills where the blue would read as a defect.

Interactive

  • link #ffffff — links default white on dark; underlined for affordance.
  • link-hover #d2fc31 — lime on hover; the only chromatic shift in running text.
  • cta-secondary-bg rgba(255, 255, 255, 0.9) — near-white “Sign in” pill at 90% opacity over the black.
  • cta-secondary-text #0000ee — browser-blue text on the white pill, mirroring the lime CTA’s blue ink.
  • selected-bg rgba(255, 255, 255, 0.08) — active nav, selected filter chip.
  • disabled #525252 — neutral disabled chrome.

Neutral Scale

  • white #ffffff — display value, maximum contrast.
  • neutral-400 #a3a3a3 — muted captions and secondary copy (8.3:1 on black).
  • neutral-500 #737373 — quiet labels, helper text, placeholders (4.4:1 on black).
  • neutral-600 #525252 — disabled, faint chrome.
  • near-black-1 #0a0a0a — alternate band ground.
  • near-black-2 #141414 — raised card / panel surface.
  • near-black-3 #1c1c1c — secondary panel.
  • near-black-4 #242424 — popover / modal raised.

Surface & Borders

  • surface-0 (page) #000000 — pure black.
  • surface-1 (band) #0a0a0a — near-black alternate band.
  • surface-2 (raised) #141414 — card / panel.
  • surface-3 (panel) #1c1c1c — nested panel.
  • surface-4 (elevated) #242424 — popover / modal.
  • border rgba(255, 255, 255, 0.10) — 10% white hairline, the default rule on dark.
  • border-strong rgba(255, 255, 255, 0.18) — emphasized rule on inputs, dividers, ghost buttons.
  • border-subtle rgba(255, 255, 255, 0.05) — quietest division.
  • border-lime rgba(210, 252, 49, 0.45) — lime ring on focus and selected states.

Shadow Colors

Shadows on Recraft are deep-black, low-opacity, and rare. The black canvas absorbs cast shadows, so most surfaces lift via tonal stepping (#000000#141414#1c1c1c) rather than blur. When shadows do appear — popovers, modals — they’re declared at 25–65% black with large blur radii. The brand never uses lime-tinted shadows; the lime stays in fills and rings.

Semantic

  • success — bg rgba(74, 222, 128, 0.12), text #86efac (green-300).
  • warning — bg rgba(250, 204, 21, 0.12), text #fde047 (yellow-300).
  • danger — bg rgba(248, 113, 113, 0.12), text #fca5a5 (red-300).
  • info — bg rgba(210, 252, 49, 0.10), text #d2fc31 — borrows the brand lime at low saturation for in-product hints.

Note: Recraft uses Tailwind 300-step text colours for semantic text on dark so they stay legible against black without competing with the lime. Saturated 500s would fight the brand colour for attention.

3. Typography Rules

Font Family

  • Display: "ABC Gravity Condensed", "Arial Narrow", system-ui, sans-serif — Dinamo’s high-impact condensed grotesque, licensed and self-hosted. Narrow, dense, poster-grade. Used for the hero and all headings at weight 700–900.
  • Body: Inter, ui-sans-serif, system-ui, "Helvetica Neue", Arial, sans-serif — a clean neutral sans for all running copy, UI labels, and buttons. (The audit’s reported sans-serif 12px is a measurement-noise fallback from an unbranded utility node, not the real body face; the visible body type is a clean grotesque set at 16px.)
  • Mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, monospace — for dimensions, seed values, API snippets, and rare inline code.
  • OpenType features: kern and liga always on. tnum (tabular figures) and zero (slashed zero) enabled in mono.

Hierarchy

RoleFontSizeWeightLine HeightLetter SpacingTransformNotes
Display HeroABC Gravity Condensed80px9000.98-0.03emuppercaseReserved for major launch slabs
Display LGABC Gravity Condensed56px9001.0-0.02emnoneHomepage hero — the signature
H1ABC Gravity Condensed40px8001.08-0.018emnonePage title
H2ABC Gravity Condensed32px8001.15-0.012emnoneMajor section heading
H3ABC Gravity Condensed24px7001.25-0.005emnoneSub-section heading
H4Inter20px6001.3normalnoneCard heading — drops to body face
EyebrowInter12px6001.40.08emuppercaseSection pre-label
LedeInter20px4001.5normalnoneHero sub-paragraph
Body LargeInter18px4001.55normalnoneFeature paragraph
BodyInter16px4001.55normalnoneDefault body
Body SmallInter14px4001.5normalnoneCompact UI body
ButtonInter15px6001.0normalnoneCTA + nav button label
LabelInter13px5001.4normalnoneForm labels, UI chrome
CaptionInter12px5001.40.02emnoneCaptions, helper text
Codemono13px4001.55normalnoneInline + block code
Code Micromono11px4001.4normalnoneModel version, footnote

Principles

  • The display/body split is the whole system. ABC Gravity Condensed carries every heading at heavy weight; Inter (or system sans) carries everything else at 400–600. The two faces are tonally opposite on purpose — slab versus calm.
  • Display weight is 800–900, never lighter. The hero at 900 is the brand statement; dropping headings below 700 loses the poster character entirely.
  • The body face is light and quiet. Body never goes above 600. The contrast between a 900 headline and a 400 body is the point.
  • Negative tracking scales with size. -0.03em at 80px, -0.02em at 56px, easing to near-normal by 24px. The condensed face already runs tight; over-tracking it muddies the counters.
  • Headings can go uppercase at hero scale only. The 80px launch slab uppercases; the 56px homepage hero stays sentence-case to keep the longer line legible.
  • Body size is 16px / line-height 1.55. Generous leading keeps the small neutral body readable below the heavy display.
  • Eyebrow uses 0.08em tracking, uppercase. The single widely-tracked element — it signals the section break against the otherwise tight type.
  • Mono only for data. Dimensions, seed values, API snippets — never button labels or UI chrome.

4. Component Stylings

Buttons

Primary (Lime)

  • Background: #d2fc31 electric lime. Text: #0000ee browser-blue, Inter 600 / 15px.
  • Padding: 10px 16px. Radius: 8px. No border.
  • Hover: bg → #bce815; transition 240ms ease-standard.
  • Active: bg → #a9d40f.
  • Focus: 2px lime ring with 2px offset (uses brand for the ring, with a near-black gap so it reads on black).
  • Use: The single primary CTA — Try Recraft Studio, Get started. The lime is the brand; deploy it exactly once per view.

Secondary (Near-white pill — “Sign in”)

  • Background: rgba(255, 255, 255, 0.9). Text: #0000ee browser-blue, Inter 600 / 15px.
  • Padding: 10px 16px. Radius: 8px. No border.
  • Hover: bg → #ffffff (full opacity).
  • Use: The inverted twin to the lime CTA — sign-in, account entry. Mirrors the blue ink so the two CTAs read as a pair.

Ghost (Outline)

  • Background: transparent. Text: #ffffff, Inter 600 / 15px.
  • Border: 1px solid rgba(255, 255, 255, 0.18). Padding: 10px 16px. Radius: 8px.
  • Hover: bg → rgba(255, 255, 255, 0.06); border → rgba(255, 255, 255, 0.28).
  • Use: Secondary actions on dark — Watch demo, View pricing, Read docs.

Text (Link-style)

  • Background: transparent. Text: #ffffff, Inter 500 / 15px. Padding: 8px 4px.
  • Hover: text → #d2fc31 lime.
  • Use: Inline text actions, footer links, repeated low-emphasis controls.

Cards

Feature Card

  • Background: #141414. Border: 1px solid rgba(255, 255, 255, 0.10). Radius: 12px. Padding: 24px.
  • Shadow: none at rest; on hover, rgba(0, 0, 0, 0.35) 0 4px 12px + border → rgba(255, 255, 255, 0.18).
  • Use: Capability tile, feature block, pricing tier card.

Showcase Tile (Generated art)

  • Background: #141414 (placeholder ground). Border: none. Radius: 12px. Padding: 0.
  • Hover: 1.02× scale + 16px soft shadow at 35% black.
  • Use: Generated-image gallery — the art bleeds to the rounded edge and supplies all the colour the chrome withholds.

Inset Panel

  • Background: #1c1c1c. Border: 1px solid rgba(255, 255, 255, 0.05). Radius: 8px. Padding: 16px.
  • Use: Quiet info zone — cookie banner, in-feed note, nested settings block.

Badges, Tags, Pills

Tag Chip — bg rgba(255, 255, 255, 0.08), text #a3a3a3, Inter 500 / 12px, padding 4px 10px, radius 9999. Hover deepens bg to rgba(255, 255, 255, 0.12).

Lime Badge — bg rgba(210, 252, 49, 0.14), text #d2fc31, border 1px solid rgba(210, 252, 49, 0.45), radius 9999, Inter 600 / 12px. Used for “new,” “beta,” and feature-flag callouts.

Eyebrow Label — no chrome, just type. Inter 600 / 12px / uppercase / 0.08em tracking, colour #737373.

Inputs / Forms

Text Input

  • Background: #141414. Border: 1px solid rgba(255, 255, 255, 0.18). Radius: 8px. Padding: 10px 14px.
  • Font: Inter 400 / 15px. Placeholder: #737373.
  • Focus: 0 0 0 2px #d2fc31 ring, border → rgba(210, 252, 49, 0.45).
  • Error: border → #f87171, helper red #fca5a5 below.

Prompt Composer

  • Background: #141414. Border: 1px solid rgba(255, 255, 255, 0.18). Radius: 12px. Padding: 12px 16px.
  • Font: Inter 400 / 16px. Placeholder: #737373.
  • Inner button: lime #d2fc31 generate button, 8px radius, blue arrow / label.
  • Focus: ring grows to 3px at 30% lime.
  • Use: Studio entry — the multi-line prompt box that opens the editor.
  • Header height 64px. Background transparent over hero; gains backdrop-filter: blur(12px) + #0a0a0a wash on scroll.
  • Logo: Recraft wordmark in white.
  • Nav links: Inter 500 / 15px, colour #ffffff, padding 8px 12px. Hover: text → #a3a3a3.
  • Right side: near-white “Sign in” pill + lime “Try Recraft Studio” primary CTA.
  • Mobile (<640px): hamburger collapses to a full-screen sheet; links stack at 18px / 500.

Optional Components

Dropdown Menu — bg #141414, border rgba(255, 255, 255, 0.10), radius 8px, shadow rgba(0, 0, 0, 0.45) 0 12px 24px -8px. Items: Inter 400 / 15px, hover bg rgba(255, 255, 255, 0.06).

Tooltip — bg #242424, text #ffffff, radius 4px, padding 6px 10px, Inter 500 / 12px.

Toast — bg #141414, border rgba(255, 255, 255, 0.10), radius 8px, padding 12px 16px, shadow rgba(0, 0, 0, 0.45) 0 8px 24px -4px.

Modal — bg #141414, radius 12px, shadow rgba(0, 0, 0, 0.65) 0 24px 48px -12px, max-width 560px. Backdrop: 70% black.

5. Layout Principles

Spacing System

  • Base unit: 4px.
  • Scale: 0, 4, 8, 12, 16, 24, 32, 48, 64, 96, 128 — a compact-to-generous ladder.
  • Density observation: Recraft is medium-dense at the chrome level (96–128px section rhythm) and medium-dense at the content level (12-col grid, 24px gutters). The heavy display headline carries the visual weight, so the surrounding layout doesn’t need extreme whitespace to feel confident.

Grid & Container

  • Page max width: 1280px — a focused frame, narrower than Krea’s cinematic 1440px.
  • Site gutter: clamp(20px, 4vw, 48px).
  • Grid: 12 columns with 24px gutters.
  • Hero treatment: 56px condensed headline left-aligned (or centred on landing), lede 18–20px below, primary lime CTA + secondary sign-in directly under the lede; showcase grid begins ~64px below.

Whitespace Philosophy

The whitespace is confident, not luxurious. Section gutters run 96–128px between major blocks; minor blocks sit on 48–64px gaps; intra-section spacing uses 16–32px. The heavy headline does the work that whitespace does on quieter sites — the page reads decisive because the type is loud, not because the margins are vast.

Section Cadence

  • Hero (black, headline + lime CTA + showcase preview) → Capability ladder (black, 12-col cards) → Generated-art gallery (black, masonry/grid of showcase tiles) → Social proof / logos (black) → Pricing (black) → Footer (#0a0a0a near-black).
  • The whole site stays in dark territory; no light/dark alternation on the marketing surface.
  • Section breaks are vertical space + occasional 1px hairlines (rgba(255, 255, 255, 0.10)) or a near-black band swap.

6. Shapes & Radius Scale

TierValueUse
Micro2pxDecorative dividers, icon-corner inheritance
Standard (sm)4pxTooltips, compact status pills
Comfortable (md)8pxButtons, inputs, dropdowns — the dominant radius
Relaxed (lg)12pxCards, showcase tiles, modals — Recraft’s card signature
Featured (xl)16pxLarge hero panels, full-bleed feature embeds
Pill9999pxTag chips, badges, sign-in pill

Recraft’s button radius is 8px and its card radius is 12px — comfortable and graphic, neither sharp-corporate nor pill-soft. The 8px buttons keep the lime CTA looking like a stamped slab rather than a rounded toy; the 12px cards give the showcase tiles a gentle frame without softening the poster register. There are no zero-radius marketing surfaces. Compound radii are rare; the scale reads as a flat ladder.

7. Depth & Elevation

LevelTreatmentUse
0Flat — no shadowDefault page surface, hero, body sections
1Tonal — #141414 against #000000Cards, inset panels
2rgba(0,0,0,0.25) 0 1px 3pxSticky nav on scroll
3rgba(0,0,0,0.35) 0 4px 12pxHover-lifted cards, showcase tiles
4rgba(0,0,0,0.45) 0 16px 32px -8pxDropdowns, popovers
5rgba(0,0,0,0.65) 0 24px 48px -12pxModals, dialogs

Shadow Philosophy

Recraft’s depth is tonal first, shadow second. The grayscale ladder (#000000#141414#1c1c1c#242424) does the primary elevation work — surfaces step up by value rather than by cast shadow. Cast shadows appear only for floating elements (dropdowns, modals, hover-lifted tiles) and use deep black at 25–65% opacity. The brand never tints a shadow with lime; the lime stays in fills and focus rings. Because the canvas is absolute black, blur-based depth barely registers — so the system leans on value contrast to read elevation.

8. Interaction & Motion

Easing Curves

  • ease-standard: cubic-bezier(0.4, 0, 0.2, 1) — default for hover, focus, colour transitions.
  • ease-emphasized: cubic-bezier(0.2, 0, 0, 1) — punchier exit; modal enter, hero reveal.

Duration Buckets

  • Fast (150ms) — colour transitions, focus rings, link hovers.
  • Standard (240ms) — button hover, card hover, dropdown reveal.
  • Slow (320ms) — modal enter/exit, section fade-in.
  • Page (420ms) — route transitions, hero reveal sequences.

Per-Component Micro-States

  • Button hover (primary): bg #d2fc31#bce815 over 240ms; no transform — the lime stays planted.
  • Button hover (ghost): bg transparent → rgba(255, 255, 255, 0.06); border lightens over 240ms.
  • Card hover: border rgba(255, 255, 255, 0.10)rgba(255, 255, 255, 0.18) + 4px soft shadow over 240ms.
  • Showcase tile hover: scale 1.02× over 240ms + 16px soft shadow at 35% black.
  • Link hover: colour #ffffff#d2fc31 over 150ms; underline thickens 1px → 2px.
  • Input focus: 2px lime ring fades in over 150ms; border picks up lime at 45%.

Page Transitions

Showcase reels auto-play silently with prefers-reduced-motion honoured. Below-fold sections use IntersectionObserver to fade in at ~80% viewport, 320ms, 12px translate-up.

Reduced Motion

@media (prefers-reduced-motion: reduce) — looping showcase reels pause on a static frame; all transforms collapse to opacity-only; durations halve.

9. Accessibility & A11y

Contrast Pairs

  • #ffffff text on #000000 bg: 21.0:1 — AAA at all sizes.
  • #a3a3a3 text on #000000 bg: 8.3:1 — AAA at body sizes.
  • #737373 text on #000000 bg: 4.4:1 — AA at large sizes; borderline at body, reserve for non-essential labels.
  • #d2fc31 lime on #000000 bg: 17.7:1 — AAA; the lime is exceptionally legible on black.
  • #0000ee blue text on #d2fc31 lime CTA: 7.9:1 — AAA at large (button label is 15px/600 bold, qualifies as large), AA at body sizes.
  • #a3a3a3 text on #141414 surface: 7.6:1 — AAA at body sizes.

Note: the signature #0000ee-on-lime CTA clears AA comfortably thanks to the lime’s very high luminance — the “raw” pairing is legible as well as expressive. The one watch-point is #737373 on pure black at small body sizes; promote secondary copy to #a3a3a3 when it must be read.

Focus Indicators

  • Default ring: 0 0 0 2px #d2fc31 with a 2px near-black offset so the lime ring reads against both dark and lime surfaces.
  • Soft ring (prompt composer focus): 0 0 0 3px rgba(210, 252, 49, 0.30).
  • Every interactive surface shows a visible focus state — the lime ring doubles as a brand cue.

ARIA Patterns

  • Navigation: <nav aria-label="Main"> with a skip-link to #main-content.
  • Prompt composer: <form aria-label="Generate with Recraft Studio"> with aria-label on the textarea.
  • Showcase gallery: aria-label="Generated artwork gallery"; each tile has an aria-label describing the generated image.
  • Dialog: role="dialog" aria-modal="true" aria-labelledby with focus trap and Esc-to-close.
  • Live regions: aria-live="polite" for generation status and toast messages.

Keyboard Navigation

  • Tab order: skip-link → masthead nav → primary CTA → showcase grid → footer.
  • Arrow keys navigate within the showcase grid; Space/Enter opens a tile.
  • Esc closes dropdowns and modals.

Screen Reader Hints

  • Decorative showcase reels with no semantic content: aria-hidden="true".
  • Icon-only buttons carry an aria-label.
  • The lime CTA’s accessible name is its text (“Try Recraft Studio”); colour is never the sole signal.

Reduced Motion

Honoured globally. Showcase reels pause on a static frame; tile-scale hover disabled; durations halved.

10. Responsive Behavior

Breakpoints

NameWidthUse
Mobile< 640pxSingle-column, full-bleed showcase tiles, stacked CTAs
Tablet640–1024px2-column tile grid, condensed nav
Desktop1024–1280px3-column grid, full nav
Wide1280–1536pxPage locks near 1280px; gutters expand
Ultra> 1536pxCentred 1280px frame, generous outer gutters

Touch Targets

  • Minimum tap target: 44×44px.
  • Buttons: 44px minimum height on mobile.
  • Showcase tile: the full tile is the tap target; controls reveal on tap.

Collapsing Strategy

  • Header: full nav at ≥1024px; hamburger sheet below.
  • Hero: 56px → 44px → 34px headline across desktop/tablet/mobile (the condensed face stays legible scaling down).
  • CTA pair: lime CTA + sign-in sit inline on desktop; stack vertically (lime on top) on mobile.
  • Tile grid: 3-up → 2-up → 1-up across sizes.
  • Section spacing: 128px → 96px → 64px across sizes.

Image Behavior

  • Showcase reels use <video autoplay muted loop playsinline> with a poster frame for prefers-reduced-motion.
  • Static generated images use srcset with breakpoint-derived sizes; native lazy-loading.
  • Tile aspect ratios vary with the generated art; the grid uses masonry or fixed cells depending on section.

Container Queries

Used inside capability cards to switch icon-left vs. icon-top layout when card width crosses ~320px.

11. Content & Voice

Tone

Direct, capable, made-for-pros. Recraft writes like a tool built by people who ship — short declaratives, concrete verbs, no consumer-app exuberance. The headline names what it is (“AI for designers, creatives, sellers, and teams”); the copy below it lists capabilities rather than promises. The voice positions Recraft as professional infrastructure for visual production, not a novelty generator.

Microcopy Patterns

  • Button verbs: “Try Recraft Studio,” “Sign in,” “Generate,” “Export,” “Upscale.” Never “Start your creative journey!”
  • Error messages: “Generation failed. Adjust the prompt and try again.” — plain, recoverable.
  • Success confirmations: “Exported.” “Saved to project.” Brief, past-tense, done.
  • Loading states: “Generating…” with a subtle progress indicator.

Empty States

  • “No projects yet. Open the Studio to create your first design.” — explain, offer the next step.
  • “No results.” — search empty, no apology.
  • Never uses “Oops!” or apologetic exclamation marks.

CTA Verb Conventions

  • Primary on hero: “Try Recraft Studio,” “Get started,” “Open Studio”
  • Secondary: “Sign in,” “See pricing,” “View the gallery,” “Read the API docs”
  • Footer: “Pricing,” “API,” “Blog,” “Careers”

The voice is confident and utilitarian — it assumes you already make things for a living and just need a faster, more controllable way to do it.

12. Dark Mode & Theming

Dark-only marketing surface. The site, hero, pricing, and gallery all render on the absolute black canvas — that’s the brand’s defining choice, and there is no light variant of the marketing pages.

The one place the palette inverts is inside the Studio editor, where the working artboard is light (a white or neutral canvas) so generated art reads true to how it will be used — but that’s an application-canvas decision, not a site theme. The public brand never appears on a light ground.

The single rule: never render the Recraft marketing surface in light mode. Black is the stage; the lime and the work are the only colour. If you find yourself building a light hero, you’ve left the brand.

13. Lineage & Influences

Recraft’s design DNA is the pure-black AI-tool canvas (Vercel / Krea) crossed with the high-impact condensed-display poster tradition (Dinamo’s ABC Gravity, screen-print and risograph culture) and a single fluorescent spot-colour borrowed from sportswear and rave-flyer graphics. Where Krea commits to absolute black with quiet 400-weight Suisse Intl and a single cobalt, and where Runway goes editorial near-black with Söhne, Recraft keeps the black but cranks the display to 900-weight condensed and swaps the cool cobalt for an alarmingly bright lime. It’s the same dark-AI category, played loud.

What it inherits: the pure-black canvas with monochrome chrome and the work-supplies-the-colour discipline (Vercel, Krea); the heavy-condensed display slab as a poster device (Dinamo / ABC Gravity, broadside and screen-print typography); a single fluorescent spot-colour used with discipline (sportswear, Highsnobiety / hype-graphic culture). The raw #0000ee browser-blue link text on the lime CTA is a deliberate borrow from un-styled, developer-default web aesthetics — a knowing “we didn’t soften this” gesture. What it rejects: gradient meshes, soft pastel AI clichés, robotic-face iconography, the friendly rounded-everything consumer look.

Named influences:

14. Do’s and Don’ts

Do

  • Do keep the canvas at pure #000000. Absolute black is the stage.
  • Do set the headline in ABC Gravity Condensed at weight 800–900. The poster slab is the brand.
  • Do reserve the lime #d2fc31 for the single primary CTA, focus rings, and link-hover — never for backgrounds.
  • Do render the CTA text in #0000ee browser-blue on the lime. The raw pairing is intentional and on-brand.
  • Do keep body copy quiet — clean neutral sans at 16px, weight 400, in white or #a3a3a3.
  • Do use 10% white hairlines (rgba(255, 255, 255, 0.10)) for borders. Solid borders are too loud against the type.
  • Do lift surfaces by tonal stepping (#000000#141414) rather than shadow.
  • Do keep buttons at 8px radius and cards at 12px — graphic, not pill-soft.
  • Do let the generated artwork supply every colour the chrome withholds.
  • Do deploy the lime exactly once per viewport so it keeps its impact.

Don’t

  • Don’t introduce a second chromatic accent — the lime is the only brand colour.
  • Don’t soften the canvas to #0a0a0a or #111111 for the marketing surface; pure black is the entry ticket.
  • Don’t set the headline in a normal-width or light-weight face — it must be heavy and condensed.
  • Don’t “fix” the #0000ee-on-lime CTA to a tasteful navy; the raw blue is the attitude.
  • Don’t use the lime as a fill behind text, a section background, or a card ground.
  • Don’t add gradients, meshes, or glow — the system is flat black and one spot-colour.
  • Don’t bold the body copy to match the headline; the 900-vs-400 contrast is the point.
  • Don’t run the marketing surface in light mode — light belongs only to the in-app artboard.
  • Don’t tint shadows with lime; the lime stays in fills and rings.
  • Don’t apologise in microcopy — empty states and errors are matter-of-fact, never “Oops!“

15. Agent Prompt Guide

Quick Color Reference

bg: #000000
bg-alt: #0a0a0a
surface: #141414
surface-soft: #1c1c1c
text: #ffffff
text-muted: #a3a3a3
text-soft: #737373
brand: #d2fc31        (electric lime — the brand)
brand-deep: #bce815
on-brand: #0000ee     (browser-blue CTA text on lime)
border: rgba(255, 255, 255, 0.10)
border-strong: rgba(255, 255, 255, 0.18)

Example Component Prompts

  1. “Create a Recraft-style hero — pure black #000000 canvas, a 56px headline in ABC Gravity Condensed at weight 900 in white, an 18–20px lede in a clean neutral sans below in #a3a3a3. Under the lede, a single primary CTA: a lime #d2fc31 button at 8px radius with the label in raw browser-blue #0000ee, paired with a near-white ‘Sign in’ pill (rgba(255,255,255,0.9) bg, #0000ee text). Below, a grid of generated-art showcase tiles at 12px radius.”

  2. “Design a Recraft primary CTA — lime #d2fc31 fill, no border, 8px radius, 10px 16px padding, label in Inter 600 / 15px coloured browser-blue #0000ee. Hover deepens the fill to #bce815; focus shows a 2px lime ring with a 2px near-black offset. Do not soften the blue text.”

  3. “Build a Recraft feature card — #141414 background, 1px rgba(255, 255, 255, 0.10) border, 12px radius, 24px padding. Heading in ABC Gravity Condensed 24px / 700 white; body in Inter 16px / 400 #a3a3a3. Hover lightens the border to 18% white and adds a 4px soft black shadow.”

  4. “Compose a Recraft nav — 64px transparent header that gains a #0a0a0a blur wash on scroll, wordmark hard-left in white. Link list Inter 500 / 15px white with #a3a3a3 hover. Right side: near-white ‘Sign in’ pill + lime #d2fc31 ‘Try Recraft Studio’ CTA with #0000ee text.”

  5. “Render a Recraft prompt composer — #141414 background, 1px rgba(255, 255, 255, 0.18) border, 12px radius, multi-line textarea with #737373 placeholder in Inter 16px. A lime #d2fc31 ‘Generate’ button bottom-right at 8px radius. Focus grows a 3px lime ring at 30% opacity.”

  6. “Create a Recraft showcase gallery — pure black section, 96px vertical padding, an ABC Gravity Condensed 32px / 800 white section heading, then a 3-column grid of generated-art tiles at 12px radius with no chrome. Tiles scale 1.02× on hover with a 16px soft shadow at 35% black. The art supplies all the colour.”

Iteration Guide

  1. Start with pure #000000. If the bg is #0a0a0a or #111111, you’ve softened the stage. Absolute black is the entry ticket.
  2. Make the headline heavy and condensed. ABC Gravity Condensed at 800–900 is the brand. If your headline is a normal grotesque, you’ve lost the poster register.
  3. Use the lime exactly once. #d2fc31 belongs on the single primary CTA (plus focus rings and link-hover) — never a second button, never a background.
  4. Keep the raw blue. The CTA text is #0000ee browser-blue on the lime. If you’ve made it navy or white “to look cleaner,” you’ve removed the attitude — put it back.
  5. Quiet everything that isn’t the headline or the lime. Body in clean sans at 16px / 400, captions in #a3a3a3, borders at 10% white. The contrast between loud and quiet is the system.
  6. Lift with tone, not shadow. #000000#141414 separates panels; reserve cast shadows for floating elements only.
  7. Buttons 8px, cards 12px. Don’t pill the buttons; don’t sharpen the cards. The comfortable-graphic radius keeps the slab feel.
  8. Let the work carry the colour. Every saturated pixel that isn’t the lime should come from the generated artwork in the showcase grid — not from the chrome.
Ship with this

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

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