Soft Neumorphic
Controls extruded from the background itself, with text kept legible anyway.
Construction · Neumorphic
Surface and page are one sheet. Every control is pressed out of it or into it, by a light shadow up-left and a dark one down-right.
Every style renders this same screen, so the only thing changing between two of them is the style. The component above is the file below, running.
Prompt
Design this interface in the Soft Neumorphic style. Surfaces are the same color as the page and are separated only by light and shade, as if pressed out of one sheet. Text contrast is held to a readable level despite
The numbers in this prompt are printed from the tokens below, so it cannot drift from what the specimen renders.
What carries the look
- surface same color as page
- light and shade instead of borders
- extruded controls
- readable text anyway
What this style refuses
- visible borders
- high-chroma fills
- low-contrast body text
- sharp corners
The refusals are the half that keeps generated interfaces from converging — a prompt that only says what to add gets the default look.
Tokens
Palette
#e8ebf1#22252c#e8ebf1#22252c#cfd5e0#171a20#232833#eef1f6#525a6b#a3aab8#3f56cf#8fa4ff#ffffff#0a1030Shape and type
Measured contrast — body 12.36:1 light, 13.55:1 dark; secondary text 5.8:1 and 6.57:1. Every pair clears WCAG AA in both themes, checked on each build.
Specimen · Specimen.tsx
import type { CSSProperties } from "react";
/**
* Vibary · Soft Neumorphic
*
* Controls extruded from the background itself, with text kept legible anyway.
*
* One complete product screen, rendered from the token object below —