Editorialbrutalistplayful

Brutalist

Loud neo-brutalist theme — hard edges, offset shadows.

by PromptsRush· MIT· v1.0.0· 1· shadcn, tailwind, css-vars
Download design.md
Lumen
Get started
✦ New release

Build something people love.

A live preview of this theme — every color, font, radius, and shadow you see is rendered straight from its tokens.

Start free Live demo
12.4k
Active users+18%
$48.2k
Revenue+7.1%
4.9
Rating2.1k
Quick actions
Prov2.0
Search anything…
CreateInvite

Color system

Click any swatch to copy. Contrast graded against WCAG.

Contrast (WCAG)AAA ≥ 7 · AA ≥ 4.5
AaBody text
19.8:1AAA
AaMuted text
11.37:1AAA
AaPrimary button
14.8:1AAA
AaCard text
19.8:1AAA
AaAccent
6.37:1AA

Typography

5xl3remDesign with intent
4xl2.25remDesign with intent
3xl1.875remDesign with intent
2xl1.5remDesign with intent
xl1.25remThe quick brown fox jumps over the lazy dog
lg1.125remThe quick brown fox jumps over the lazy dog
base1remThe quick brown fox jumps over the lazy dog
sm0.875remThe quick brown fox jumps over the lazy dog
xs0.75remThe quick brown fox jumps over the lazy dog

Body sample. Space Grotesk carries running text — readable paragraphs, comfortable measure, and a rhythm that holds up across long pages of content and UI.

Radius, shadow & fonts

Radius · base 0rem
sm
base
lg
xl
Shadow
sm
md
lg
Fonts
Sans
Space Grotesk
Aa Bb Cc 0123
Mono
Space Mono
Aa Bb Cc 0123

Components

Real UI rendered with this theme's tokens.

Buttons
PrimarySecondaryOutlineAccentGhostDelete
Badges
PrimarySecondaryAccent
Input
you@example.com
Card title

A surface for grouping content, with the theme's border, radius, and shadow.

Accent callout
Use the accent surface for highlights, tips, and gentle emphasis.

Principles, guidelines & component specs

Do's & don'ts, spacing, motion, iconography, accessibility, and exact component specs — all in the design.md too.

Do

  • Outline every surface with a thick border.
  • Use solid offset shadows, never blur.
  • Go high-contrast: yellow and pink on black and white.

Don't

  • Don't round corners.
  • Don't soften shadows.
  • Don't be timid with color.
Spacing · base 0.25rem
1
2
4
6
8
12
16
24
Motion
fast · 80msbase · 120msslow · 160ms
ease · linear
  • Snap, don't ease — motion is blunt and fast.
  • No bounce, no soft fades.
Easing & duration (hover)

Hover to feel this theme's base transition.

Iconography

Lucide · 2.5px stroke · 1.1rem. Bold 2.5px stroke, square chips, black outlines.

Accessibility
Contrast
WCAG AA+ — high contrast by design
Focus
3px solid var(--ring)
Targets
44x44px
  • High contrast is core — keep it.
  • Ensure the yellow primary keeps dark text on it.
Component specs
Button
Backgroundvar(--primary)
Textvar(--primary-foreground)
Radius0rem
Padding0.5rem 1rem
Height2.75rem
Weight700
Badge
Backgroundvar(--accent) / var(--primary)
Textvar(--accent-foreground) / var(--primary-foreground)
Radius0rem
Padding0.15rem 0.55rem
Font size0.75rem
Weight700

Use for status, counts, and short labels. Keep to one or two words.

Alert
Radius0rem
Padding1rem 1.25rem
Border2px solid var(--border)

Always pair the color with an icon and a text label — never rely on color alone.

Form field
Backgroundvar(--background)
Border2px solid var(--border)
Radius0rem
Height2.5rem
Padding0.5rem 0.75rem

Label sits above the field; helper or error text sits below.

Card
Backgroundvar(--card)
Textvar(--card-foreground)
Border1px solid var(--border)
Radius0rem
Padding1.25rem
Shadow4px 4px 0 0 rgba(10,10,10,1)

The design brief

Brutalist is loud on purpose — hard edges, thick borders, offset shadows, and zero radius.

Principles

  • Borders do the work. Every surface is outlined; shadows are solid offsets, never blurred.
  • High contrast, high energy. A yellow primary and pink accent on stark black and white.
  • No softness. Radius is zero; nothing apologizes.

When to use

Landing pages, portfolios, launches, and anything that needs to stop the scroll.

Use this with your AI

Download or copy the design.md and paste it into Claude, Cursor, or v0 — it tells the agent exactly which colors, fonts, radii, and shadows to use, so your site comes out looking like this.

Export tokens

Drop straight into your codebase.

:root {
  --radius: 0rem;
  --background: #ffffff;
  --foreground: #0a0a0a;
  --card: #ffffff;
  --card-foreground: #0a0a0a;
  --popover: #ffffff;
  --popover-foreground: #0a0a0a;
  --primary: #ffde03;
  --primary-foreground: #0a0a0a;
  --secondary: #f0f0f0;
  --secondary-foreground: #0a0a0a;
  --muted: #f0f0f0;
  --muted-foreground: #3a3a3a;
  --accent: #ff5470;
  --accent-foreground: #0a0a0a;
  --destructive: #ff0000;
  --border: #0a0a0a;
  --input: #0a0a0a;
  --ring: #0a0a0a;
  --shadow-sm: 2px 2px 0 0 rgba(10,10,10,1);
  --shadow-md: 4px 4px 0 0 rgba(10,10,10,1);
  --shadow-lg: 6px 6px 0 0 rgba(10,10,10,1);
  --font-sans: 'Space Grotesk', ui-sans-serif, system-ui, sans-serif;
  --font-mono: 'Space Mono', ui-monospace, SFMono-Regular, monospace;
  --ease-standard: linear;
  --ease-emphasized: cubic-bezier(0.2,0,0,1);
  --duration-base: 120ms;
}

.dark {
  --background: #0a0a0a;
  --foreground: #fafafa;
  --card: #141414;
  --card-foreground: #fafafa;
  --popover: #141414;
  --popover-foreground: #fafafa;
  --primary: #ffde03;
  --primary-foreground: #0a0a0a;
  --secondary: #1f1f1f;
  --secondary-foreground: #fafafa;
  --muted: #1f1f1f;
  --muted-foreground: #a3a3a3;
  --accent: #ff5470;
  --accent-foreground: #0a0a0a;
  --destructive: #ff5a5a;
  --border: #fafafa;
  --input: #fafafa;
  --ring: #fafafa;
}