Skip to content
SloplessTry the picker

Base style · 2010s · balanced

Neumorphism

Soft UI: panels and controls extruded from, or pressed into, one same-coloured ground by paired light and dark shadows, with rounded keys, dials and toggles, strong ink and one clear accent for actions.

Moods
calm, minimal, futuristic, cool, friendly
Suits
saas, fintech, finance, health, wellness, music
Type
Plus Jakarta Sans

Principles

  • One ground colour: page, panels and keys share it; depth comes only from a light top-left and dark bottom-right shadow pair
  • Raised means touchable or grouped; pressed (inset) means a field, a well or an active state, never decoration
  • Build the page from physical controls: round keys, dials, sliders, toggles and segmented pills, not from flat cards
  • Text stays strong ink on the ground and the accent fills every primary action, so nothing relies on a shadow to be read
  • Soft 22 px radii, wide 28 px gutters so the shadows breathe, and a calm device-dashboard rhythm

Hard rules

  • No borders or hairlines on panels, and no panel in a different colour from the ground; the moment a card has its own fill, it stops being neumorphism.
  • No light-grey text, no ghost buttons that are only a shadow, no grey-on-grey primary actions: low contrast is the failure this style is known for.
  • No shadows on text, no glow, no gradients on the ground, no glass blur, no hard offset shadows.
  • No pure white or pure black ground: the highlight needs a lighter colour above the ground and the shade a darker one below it.
  • No more than one accent hue on a page; never colour body text with it.
  • No raised panel inside a raised panel inside a raised panel: at most two levels (panel, then keys in it).

Full page preview with sample copy, rendered from the same tokens and layout the agent receives.

For coding agents

Rules and live patterns

Every pattern Neumorphism owns, drawn by the same renderer as the picker with the style's default tokens and sample copy. Each has an anchor (#<pattern id>). A design's own DESIGN.md and tokens.json stay the source of truth; this page shows what the patterns look like.

Do

  • Use one ground colour for the page, panels and keys: `surface` equals `bg`. A panel is drawn only by the shadow pair: `box-shadow: 8px 8px 18px <bg mixed 16% toward black>, -8px -8px 18px <bg mixed 80% toward white>` (dark variants: 50% toward black and 8% toward white). No border, no fill change.
  • Press, don't raise, anything you type into or anything that is "on": inputs, search fields, slider tracks and the active segment of a control use the inset pair (`inset 5px 5px 10px <dark>, inset -5px -5px 10px <light>`) on the ground colour.
  • Fill every primary action with the accent (`accent` fill, `onAccent` text, raised shadow). Secondary actions are raised keys the colour of the page with heading-colour text; on `:hover` and `:active` they sink into the inset pair.
  • Keep text strong: headings in `heading`, body in `text`, captions in `textMuted`. All pass AA 4.5:1 on the ground. Never emboss or deboss text with shadows.
  • Show a focus ring on every control: `outline: 2px solid var(--accent); outline-offset: 3px`. Shadows alone never show focus or state; a toggle that is on also shows the accent dot.
  • Round everything softly: panels at the `radius` token (22 px), keys and inputs at 16 px, round keys and dials fully round, pills at 999 px.
  • Leave room for the shadows: 24–32 px gaps between raised elements (the `gutter` token is 28 px) and at least 24 px of padding inside a panel, so the light and dark halos never overlap a neighbour.
  • Build sections from controls: a dial ring with a big reading beside it, a row of round keys with short names, a list where each row ends in a round toggle key, numbered steps inside small round keys.
  • Set readings big and tight (weight 700, tabular figures) with a small muted caption; labels are small uppercase with wide tracking in the link colour.
  • Animate only the press: 240 ms ease for box-shadow (raised to inset) and a 1 px translate; nothing loops. Under `prefers-reduced-motion` the state change is instant.
  • At 375 px: panels stack full width in source order and keep their padding (20 px minimum) and shadows; key rows of three stay three across, gauge rows go two across.

Don't

  • No borders or hairlines on panels, and no panel in a different colour from the ground; the moment a card has its own fill, it stops being neumorphism.
  • No light-grey text, no ghost buttons that are only a shadow, no grey-on-grey primary actions: low contrast is the failure this style is known for.
  • No shadows on text, no glow, no gradients on the ground, no glass blur, no hard offset shadows.
  • No pure white or pure black ground: the highlight needs a lighter colour above the ground and the shade a darker one below it.
  • No more than one accent hue on a page; never colour body text with it.
  • No raised panel inside a raised panel inside a raised panel: at most two levels (panel, then keys in it).
  • No dense hairline tables, no tiny 12 px chips crowded together; the shadows need air.
  • No stock photos of people at laptops; product shots and device renders in rounded wells.

Heroes (4)

Control deck

hero.neumorphism-control-deck · hero

Desktop, 1440 px
Phone, 390 px
Rule
Copy in 1–6 (label, display headline, lead, accent primary and raised secondary key, three raised reading pills); a large raised device panel in 7–12 holding a status row, a dial ring beside a big reading, and three round keys.
Slots
eyebrow, headline, subhead, cta, cta2, stats[3..3], meta, number, tagline, features[3..3]
Notes
Every panel and key is the page colour with the paired shadow; only the primary button, the dial ring and the status dot carry the accent.

Two columns, vertically centred, at least 78 vh. Columns 1–6: a wide-tracked uppercase label in the link colour, the display headline at step 7 (weight 700, tight, ≤15 ch), a muted lead and one row with the accent primary key and a raised secondary key (both large). Under them three raised reading pills in a row, each a number at step 3 (700) over a muted caption. Columns 7–12: one large raised device panel (padding 40 px): a status row (muted label left, accent dot right), then an accent dial ring (180 px) beside a reading at step 8 and the short tagline, then three raised keys in a row, each a muted ring over a short name. Phone: copy first, then the device; the pills and keys stay three across.

Dial console

hero.neumorphism-dial-console · hero

Desktop, 1440 px
Phone, 390 px
Rule
One wide raised console: label, display headline, lead and an inset email field with an accent submit in 1–7; a raised product well in 8–12. Under it, four raised gauge keys with a dial ring, a reading and a caption.
Slots
eyebrow, headline, subhead, signup, heroImage, stats[4..4]

One wide raised console panel (padding 40 px). Inside, columns 1–7 hold the label, the display headline at step 7 (≤15 ch), the lead and an inline email field pressed into the panel with an accent submit; columns 8–12 hold a raised well with a 4:5 product shot, rounded. Under the console, four raised gauge keys in a row: a small accent dial ring beside a reading at step 4 and a muted caption (two per row on phones).

Remote column

hero.neumorphism-remote-column · hero

Desktop, 1440 px
Phone, 390 px
Rule
Three columns: a raised remote in 1–3 with four round keys and their names, the message in 4–9 (label, display headline, lead, keys), and a raised slider panel in 10–12 with three readings on slider tracks.
Slots
eyebrow, headline, subhead, cta, cta2, features[4..4], meta, number, stats[3..3]

Three columns on one row. Columns 4–9 (first in the source, so phones read it first): label, display headline at step 8 (≤12 ch), lead and the two keys. Columns 1–3: a raised remote, four rows each a round raised key with an accent dot beside its name, and a big round wheel key with an accent ring at the bottom (hidden on phones). Columns 10–12: a raised slider panel with a muted label and an accent dial ring beside a reading at step 5 at the top, and three readings at the bottom, each a caption and number on one baseline over a pressed slider track with an accent fill.

Dashboard board

hero.neumorphism-dashboard-board · hero

Desktop, 1440 px
Phone, 390 px
Rule
Display headline in 1–7 with the lead and keys bottom-aligned in 8–12; below, a dashboard: a raised product panel in 1–8 over two rows, a dial panel and a toggle panel stacked in 9–12.
Slots
eyebrow, headline, subhead, cta, cta2, heroImage, meta, number, tagline, features[3..3]

Row 1: label and the display headline at step 7 (≤17 ch) bottom-aligned in 1–7; the lead and the keys bottom-aligned in 8–12. Rows 2–3: a raised panel in 1–8 filled by a rounded 16:9 product shot (12 px inset); in 9–12 a dial panel (muted label, accent ring beside a reading at step 6 and a short caption) over a toggle panel listing three settings, each ending in a round key with an accent dot.

Navigation (2)

Content blocks (14)

Toggle panel

features.neumorphism-toggle-panel · features

Desktop, 1440 px
Phone, 390 px
Rule
Intro in 1–5 (label, h2, line, a raised product well); one large raised panel in 6–12 listing five features, each row a title and line with a round toggle key on the right.
Slots
sectionLabel, title, body, image, features[5..5]

Columns 1–5: label, h2 at step 5 (700, ≤18 ch), a muted line and a raised well with a rounded 4:3 product shot. Columns 6–12: one large raised panel (padding 32 px) listing five features; each row is the title at step 1 (600) and a muted line on the left, a round raised toggle key on the right whose accent knob shows it is on (in code: a 64 × 34 px pressed track with the knob at its right end), 24 px between rows. No dividers: the spacing separates the rows.

Key grid

features.neumorphism-key-grid · features

Desktop, 1440 px
Phone, 390 px
Rule
Header row (label and h2 left, a muted line right); eight raised feature keys in four columns, each with a round dial key and a mono index on top, then the title and a line.
Slots
sectionLabel, title, body, features[4..8]

Header row: label and h2 left, a muted line bottom-aligned right. Then four to eight raised feature keys in four columns with 24 px gaps: on top a small round key holding an accent ring and a mono index on the right, then the title at step 1 (700) and a muted line. One per row on phones.

Gauge row

stats.neumorphism-gauge-row · stats

Desktop, 1440 px
Phone, 390 px
Rule
Header row, then four raised gauges in a row: a dial ring, the reading at step 6 and a caption, centred inside each gauge.
Slots
sectionLabel, title, body, stats[4..4]

Header row as above, then four raised gauges in a row (two per row on phones), everything centred: an accent dial ring (96 px), the reading at step 6 (700, tight), a muted caption and a mono note in the link colour.

Device showcase

content.neumorphism-device-showcase · content

Desktop, 1440 px
Phone, 390 px
Rule
A raised product well in 1–7; in 8–12 the label, h2, a line and three numbered steps, each with its number in a round raised key, then a raised secondary button.
Slots
image, sectionLabel, title, body, steps[3..3], cta

A raised well with a rounded 4:3 product shot in 1–7; in 8–12 the label, h2, a muted line, three numbered steps (the number in the link colour inside a small round raised key, then the title and a line) and a raised secondary key with an arrow.

Quote console

testimonial.neumorphism-quote-console · testimonial

Desktop, 1440 px
Phone, 390 px
Rule
A large raised quote panel in 1–8 (quote at step 4, a round avatar key, name and role at the bottom); two raised reading panels stacked in 9–12.
Slots
quote, author, role, stats[2..2]

A large raised panel in 1–8 (padding 40 px): the quote at step 4 (weight 500) at the top; at the bottom a round raised avatar key with an accent dot, the name (700) and the muted role. Columns 9–12: two raised reading panels stacked to the same height, each a number at step 6 and a caption with a small accent ring on the right.

Plan keys

pricing.neumorphism-plan-keys · pricing

Desktop, 1440 px
Phone, 390 px
Rule
Intro in 1–4 (label, h2, line, a pressed note well); three raised plan panels in 5–12, each with the plan label, name, price at step 6, a line and an accent primary button.
Slots
sectionLabel, title, body, meta, plans[3..3]

Columns 1–4: label, h2, a muted line and a pressed note well (`surfaceAlt`, inset pair) with one line of small print. Columns 5–12: three raised plan panels, each the plan label in the link colour, the name at step 2, the price at step 6 (700), a muted line and an accent primary button pinned to the bottom.

Pressed list

faq.neumorphism-pressed-list · faq

Desktop, 1440 px
Phone, 390 px
Rule
Intro in 1–4 (label, h2, line, a raised secondary key); five raised question panels in 5–12, each with a mono number in a small round key, the question and the answer, all visible.
Slots
sectionLabel, title, body, cta, faqs[5..5]

Columns 1–4: label, h2, a muted line and a raised secondary key. Columns 5–12: five raised question panels with 24 px gaps, each a mono number in a small round key, the question at step 1 (600) and the answer in muted body. All answers visible.

Power key

cta.neumorphism-power-key · cta

Desktop, 1440 px
Phone, 390 px
Rule
One wide raised panel: a big accent dial ring in 1–3 like a power key, label, h2 at step 6 and a line in 4–8, an inset email field with accent submit and a small note in 9–12.
Slots
sectionLabel, title, body, signup, meta

One wide raised panel (padding 48 × 40 px): a raised round well holding a large accent dial ring like a power key in 1–3 (hidden on phones), the label, h2 at step 6 (≤18 ch) and a muted line in 4–8, and in 9–12 an inline email field pressed into the panel with an accent submit and a small muted note.

Control form

contact.neumorphism-control-form · contact

Desktop, 1440 px
Phone, 390 px
Rule
A raised form panel in 1–7 (label, h2, line, name / email / message in inset wells, accent submit); three raised contact panels stacked in 8–12: the email and the phone each beside a round key, then a rounded map well over the hours and address.
Slots
sectionLabel, title, body, contact, email, phone, map, hours, address

A raised form panel in 1–7 (padding 40 × 32 px): label, h2, a muted line, then name, email and message fields pressed into the panel and an accent submit. Columns 8–12: three raised contact panels stacked with 24 px gaps: the email beside a round key with an accent dot, the phone beside a round key with a ring, and a rounded 16:9 map well over the hours and the address.

Chip tray

logos.neumorphism-chip-tray · logos

Desktop, 1440 px
Phone, 390 px
Rule
Label, title at step 4 and a line in 1–4; eight client names as small raised chips in a four-column grid across 5–12 (two columns on phones).
Slots
sectionLabel, title, body, clients[8..8]

Label, title at step 4 and a muted line in 1–4; eight client names as raised chips in a four-column grid across 5–12 (two columns on phones), each name centred in `textMuted` at weight 600.

Feed panels

blog.neumorphism-feed-panels · blog

Desktop, 1440 px
Phone, 390 px
Rule
Label and h2 left, a raised secondary key right; three raised post panels, each a rounded image well, a mono date, the title and a line.
Slots
sectionLabel, title, cta, posts[3..3]

Label and h2 left, a raised secondary key with an arrow right. Three raised post panels (padding 16 px): a rounded 3:2 image well, then a mono date, the title at step 1 (700) and a muted line. One per row on phones.

Avatar keys

team.neumorphism-avatar-keys · team

Desktop, 1440 px
Phone, 390 px
Rule
Header row; four to eight people as raised keys, four per row: a round portrait, the name and the role, centred.
Slots
sectionLabel, title, body, team[4..8]

Header row, then four to eight raised keys, four per row (two on phones): a round portrait, the name at step 1 (700) and the muted role, centred.

Mounted screens

gallery.neumorphism-mounted-screens · gallery

Desktop, 1440 px
Phone, 390 px
Rule
Images mounted in raised wells: a 4:3 well with a caption in 1–7 over two rows and two 16:9 wells stacked in 8–12.
Slots
gallery1, caption, gallery2, gallery3

Images mounted in raised wells (padding 16 px, inner radius 20 px): a 4:3 product shot with a muted caption in 1–7 over two rows, and two 16:9 wells stacked in 8–12.

Scene rows

list.neumorphism-scene-rows · list

Desktop, 1440 px
Phone, 390 px
Rule
Header row; six raised scene rows in two columns: a numbered round key, the title and a line, and a round toggle key on the right.
Slots
sectionLabel, title, body, items[6..6]

Header row, then six raised rows in two columns (one on phones): a numbered round key (number in the link colour), the title at step 1 (600) and a muted line, and a round toggle key with an accent dot on the right.

Footers (2)

Console base

footer.neumorphism-console-base · footer

Desktop, 1440 px
Phone, 390 px
Rule
One raised panel: wordmark, tagline and an inset newsletter field in 1–5; stacked links in 6–8; a status line beside an accent dot and the legal line in 9–12.
Slots
siteName, tagline, newsletter, pages, meta, legal

One raised panel (padding 40 px): the wordmark, a muted tagline and an inline newsletter field pressed in with an accent submit in 1–5; stacked plain links in 6–8; a status line in the link colour beside a small raised key with an accent dot, and the muted legal line, in 9–12.

Soft strip

footer.neumorphism-soft-strip · footer

Desktop, 1440 px
Phone, 390 px
Rule
One row on the ground, no panel: wordmark, pill links and the muted legal line, space between.
Slots
siteName, pages, legal

One row on the ground with no panel: wordmark, pill links and the muted legal line, space between.