<!--
ROLE: You are a senior product designer + frontend engineer pair.
TASK: Treat the DESIGN.md below as the SINGLE SOURCE OF TRUTH for visual style.
Every component you produce in this codebase must:
  • Reuse the color tokens declared in YAML frontmatter (no ad-hoc hex values)
  • Use the typography scale (display / h1 / h2 / body / label / mono) verbatim
  • Match the radius scale (button / card / pill) to the named tier
  • Honor the elevation table for shadows
  • Respect the motion section (durations, easings, reduced-motion)
  • Pass the contrast pairs in the accessibility section
INPUT: Project files at ${CWD}.
OUTPUT: Code, not paragraphs. Quote the relevant section number when you cite a token (e.g. "per §3 Typography Rules").
PRINCIPLE: A token used once is a one-off; a token used three times is a system. Prefer system fidelity over local cleverness.
-->

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