Inspired by Neumorphism

Neumorphism

Dribbble dreamed it. Production rejected it.
We keep the soft extrusion. We fix everything else.

Neumorphism was gorgeous on Dribbble and unusable in production. The double-shadow technique is genuinely clever — surfaces that push out of the page, not float above it.

The fatal flaw was zero contrast. Every element melted into its background, and users couldn't tell a button from a panel. WCAG? Not a chance.

Here's our proposal: keep the extrusion, add the affordance. Every component on this page proves that neumorphism can work in production — if you respect the user's ability to see and operate it.

The Double Shadow

One dark shadow cast to the bottom-right. One light shadow cast to the top-left. That's the entire trick. The dark shadow mimics an absence of light. The light shadow mimics a reflection. Together: box-shadow creates the illusion of physical extrusion. It's the only CSS technique that makes a surface look like it's pushing out of the page — not floating above it, but growing from it.

Raised
Extruded surface
Dark bottom-right, light top-left
Flat
No shadows
Same color — invisible
#a3b1c6 bottom-right
#ffffff top-left
/* The neumorphic double shadow */
background: #e0e5ec;
box-shadow:
  8px 8px 16px #a3b1c6,   /* dark — bottom-right */
  -8px -8px 16px #ffffff/* light — top-left */

Pressed vs Raised

Invert the shadows with inset and the surface flips from extruded to pressed. Two states from one technique. Click or press Enter on the panels below — raised becomes inset, extruded becomes carved.

Toggle me
Raised
Toggle me
Raised
Toggle me
Pressed
/* Raised — pushes out */
box-shadow:
  8px 8px 16px #a3b1c6,
  -8px -8px 16px #ffffff;

/* Pressed — pushes in (just add inset) */
box-shadow:
  inset 4px 4px 8px #a3b1c6,
  inset -4px -4px 8px #ffffff;

Monochrome Discipline

Here's what makes neumorphism neumorphism: everything is the same base color. Background, foreground, buttons, cards — all #e0e5ec. Shadows do all the work. No borders. No gradients. The discipline is beautiful. One background, one dark shadow, one light shadow — three values, and the visual complexity comes entirely from how light interacts with depth. This is what we love about it.

Shadow
Base
Highlight
+ Accent

This monochrome foundation is sacred. We don't abandon it. The fix is surgical: add one accent color, only where the user needs to know "this is interactive." Everything else stays monochrome.

Adding Affordance

Shadows alone cannot carry affordance — when everything is the same color, nothing says "click me." But we don't need to abandon the aesthetic. One accent color, applied only to interactive elements, solves the problem without breaking the monochrome spell.

Buttons: accent signals action

Classic Neumorphism
Submit
Cancel
Same color. Same shadow. Which is primary?
Accessible
Accent fills the primary action. Shadow keeps the depth.

Toggle: color confirms state

Classic Neumorphism
ON
OFF
Position is the only clue. Low vision users can't tell.
Accessible
ON
OFF
Accent color = on. Neutral = off. Still neumorphic.

Input: focus ring marks the boundary

The inset shadow creates the "pressed" input feel. On focus, an accent ring appears — keyboard users always know where they are.

Accessible Neumorphic Player

Double shadows + accent affordance + focus rings. The play button uses accent color because it's the primary action. The progress bar uses accent to show position. Everything still looks extruded from the surface.

Soft Extrusion
The Neumorphists

The Rules

  • All-monochrome interactive elements — shadows can't carry affordance alone
  • Text below WCAG AA contrast (4.5:1 normal, 3:1 large)
  • State changes communicated only by shadow direction
  • "Looks good on Dribbble" as a design rationale
  • Raised shadows on large elements — they stop looking extruded and start looking floaty
  • Inset on non-interactive containers — inset is for inputs and control trays, not reading areas
  • Elements packed too tight — overlapping shadows kill the extrusion illusion
  • Accent color for primary actions — shadows keep the depth
  • Color change on toggle/checkbox states — not just position
  • Focus rings styled to match the aesthetic
  • Double shadows for decorative depth on containers