Best For
claymorphism / clay ui / clay effect
A soft clay-textured design that creates adorable 3D effects through extra-large border radii, combined inner and outer shadows, and gentle gradients, ideal for children's apps and playful products.
Best For
claymorphism / clay ui / clay effect
Primary Move
Use extra-large border radii rounded-3xl or rounded-full
Watch Out
Do NOT use sharp corners rounded-none
AI Implementation
Use the Hard Prompt by default to generate UI. Use the Design Spec to understand, modify, and review the style. Use the Creative Brief for early exploration.
Use this by default: copy it, append the concrete requirement, and let AI generate consistent production UI.
When to use
How to use
STYLEKIT_STYLE_REFERENCE
style_name: Claymorphism
style_slug: claymorphism
style_source: /styles/claymorphism
# Hard Prompt
## When To Use
Use this when you want AI to generate code with strict style consistency. It is the safest default for production UI.
## How To Use
- Copy the full prompt into ChatGPT, Claude, Cursor, or another coding assistant.
- Append the concrete product/page requirement after the prompt.
- After generation, check the forbidden rules and interaction states before accepting the output.
Strictly follow the style rules below and maintain consistency. No style drift allowed.
## Requirements
- Prioritize style consistency first, then creative extension.
- When conflicts arise, treat prohibitions as the highest priority.
- Self-check before output: verify colors, typography, spacing, and interactions still match this style.
## Style Rules
You are a Claymorphism design style frontend development expert. All generated code must strictly follow these constraints:
## Absolute Prohibitions
- Using sharp corners rounded-none or small radii rounded-sm
- Using hard-edge shadows shadow-[Xpx_Xpx_0px]
- Using high-contrast dark color schemes
- Using pure black text text-black
- Omitting inner shadow effects
- Using plain translation instead of deformation physics (cannot only use translate-y)
- Using linear easing (must use spring easing)
## Must Follow
- Extra-large radii rounded-3xl, rounded-[32px], rounded-full
- Combined shadows: outer shadow + inner highlight + inner shadow
- Soft gradient backgrounds bg-gradient-to-b, bg-gradient-to-br
- Candy color palette (pink, yellow, green, purple, orange)
## Animation & Interaction Rules
- Squishy Physics: On click (:active) use Squash & Stretch deformation -- active:scale-x-105 active:scale-y-90, simulating clay being pressed and deformed.
- Deep Impression: On press, significantly increase inner shadow (inset shadow from 4px to 8px) while reducing outer shadow, simulating a finger pressing clay inward.
- Bouncy Easing: Must use spring easing ease-[cubic-bezier(0.34,1.56,0.64,1)] with duration-300, giving elements an elastic bounce-back feel on release.
- Floating Hover: On hover, float up -translate-y-1 with slightly expanded outer shadow, expressing the element being gently lifted.
## Color Palette
Primary colors:
- Pink: from-pink-300 to-pink-400, text-pink-600
- Cream: from-amber-100 to-amber-200, text-amber-700
- Mint: from-green-200 to-green-300, text-green-700
- Lavender: from-purple-200 to-purple-300, text-purple-700
- Lemon: from-yellow-200 to-yellow-300, text-yellow-700
## Shadow Formula
Raised elements (buttons, cards):
shadow-[8px_8px_16px_rgba(0,0,0,0.08),inset_4px_4px_8px_rgba(255,255,255,0.6),inset_-2px_-2px_4px_rgba(0,0,0,0.08)]
Inset elements (inputs):
shadow-[inset_4px_4px_8px_rgba(0,0,0,0.1),inset_-4px_-4px_8px_rgba(255,255,255,0.9)]
Pressed state (active):
shadow-[2px_2px_4px_rgba(0,0,0,0.05),inset_8px_8px_16px_rgba(0,0,0,0.15),inset_-4px_-4px_8px_rgba(255,255,255,0.5)]
## Self-Check
After generating code, verify:
1. Border radii are large enough (at least rounded-2xl)
2. Has combined inner and outer shadows
3. Uses soft gradient colors
4. Has scale-x-105 scale-y-90 deformation on press
5. Uses spring easing instead of linear easing
---
# Claymorphism Design System
> A soft clay-textured design that creates adorable 3D effects through extra-large border radii, combined inner and outer shadows, and gentle gradients, ideal for children's apps and playful products.
## Design Philosophy
Claymorphism is a UI design style that simulates the texture of clay or plasticine, creating soft, adorable 3D effects through extra-large border radii, combined inner and outer shadows, and gentle gradient colors.
Core principles:
- Softness: Extra-large radii and gentle shadows create a squishy texture
- Dimensionality: Inner shadow + outer shadow combination simulates 3D effects
- Playfulness: Candy color palette and rounded shapes convey joyful emotions
- Tactility: Design elements look touchable and squeezable
- Bouncy physics: Squash deformation on press, elastic bounce-back on release
---
## Token Dictionary (exact class mapping)
### Border
```
Width: border-0
Color: border-transparent
Radius: rounded-3xl
```
### Shadow
```
sm: shadow-[4px_4px_8px_rgba(0,0,0,0.08),inset_2px_2px_4px_rgba(255,255,255,0.5),inset_-1px_-1px_2px_rgba(0,0,0,0.05)]
md: shadow-[8px_8px_16px_rgba(0,0,0,0.1),inset_4px_4px_8px_rgba(255,255,255,0.4),inset_-2px_-2px_4px_rgba(0,0,0,0.1)]
lg: shadow-[12px_12px_24px_rgba(0,0,0,0.12),inset_6px_6px_12px_rgba(255,255,255,0.5),inset_-3px_-3px_6px_rgba(0,0,0,0.1)]
hover: hover:shadow-[4px_4px_8px_rgba(0,0,0,0.1),inset_4px_4px_8px_rgba(255,255,255,0.4),inset_-2px_-2px_4px_rgba(0,0,0,0.1)]
focus: focus:shadow-[8px_8px_16px_rgba(0,0,0,0.1),inset_4px_4px_8px_rgba(255,255,255,0.4),inset_-2px_-2px_4px_rgba(0,0,0,0.1),0_0_0_4px_rgba(248,180,217,0.3)]
```
### Interaction
```
Hover translate: hover:translate-y-1
Hover scale: (none)
Hover opacity: (none)
Transition: transition-all duration-200
Active: active:translate-y-2
```
### Typefaces
```
Heading: font-bold text-pink-700
Body: text-pink-600
Mono: font-mono text-pink-500
```
### Type scale
```
Hero: text-4xl md:text-6xl
H1: text-3xl md:text-5xl
H2: text-2xl md:text-3xl
H3: text-xl md:text-2xl
Body: text-base
Small: text-sm
```
### Spacing
```
Section: py-16 md:py-24
Container: px-6 md:px-8
Card: p-6 md:p-8
Gap sm: gap-4
Gap md: gap-6
Gap lg: gap-8
```
### Color roles
```
Background primary: bg-gradient-to-br from-amber-100 via-pink-100 to-purple-100
Background secondary: bg-gradient-to-br from-white to-pink-50
Background accent: bg-gradient-to-b from-pink-300 to-pink-400, bg-gradient-to-b from-green-200 to-green-300, bg-gradient-to-b from-purple-200 to-purple-300, bg-gradient-to-b from-yellow-200 to-yellow-300
Text primary: text-pink-700
Text secondary: text-pink-600
Text muted: text-pink-400
Button primary: bg-gradient-to-b from-pink-300 to-pink-400 text-white
Button secondary: bg-gradient-to-b from-amber-200 to-amber-300 text-amber-800
```
---
## [FORBIDDEN]
These classes are banned in this style. Check for them before returning code:
### Banned classes
- `rounded-none`
- `rounded-sm`
- `rounded`
- `shadow-none`
- `bg-black`
- `text-black`
- `border-black`
### Banned patterns
- matches `^rounded-(?:none|sm|md)$`
- matches `^shadow-\[\d+px_\d+px_0px`
- matches `^bg-(?:black|gray-900|slate-900)`
### Why they are banned
- `rounded-none`: Claymorphism requires large rounded corners (rounded-3xl or larger)
- `rounded-sm`: Claymorphism requires large rounded corners (rounded-3xl or larger)
- `shadow-none`: Claymorphism requires combined inner and outer shadows for 3D effect
- `bg-black`: Claymorphism uses soft, candy-colored backgrounds
- `text-black`: Claymorphism uses soft colored text, not pure black
> WARNING: if your code contains any of the above, replace it before shipping.
---
## [REQUIRED]
### Every button must include
```
bg-gradient-to-b from-pink-300 to-pink-400
rounded-full
text-white font-bold
shadow-[8px_8px_16px_rgba(0,0,0,0.1),inset_4px_4px_8px_rgba(255,255,255,0.4),inset_-2px_-2px_4px_rgba(0,0,0,0.1)]
hover:translate-y-1
transition-all duration-200
```
### Every card must include
```
bg-gradient-to-br from-white to-pink-50
rounded-[32px]
shadow-[12px_12px_24px_rgba(0,0,0,0.1),inset_6px_6px_12px_rgba(255,255,255,0.6),inset_-4px_-4px_8px_rgba(0,0,0,0.05)]
```
### Every input must include
```
bg-gradient-to-b from-gray-100 to-gray-200
rounded-2xl
shadow-[inset_4px_4px_8px_rgba(0,0,0,0.1),inset_-4px_-4px_8px_rgba(255,255,255,0.9)]
focus:outline-none
transition-all
```
---
## [COMPARE] Claymorphism wrong vs right
The wrong examples below stand for generic library defaults that were never adapted to this style. Do not read them as visual suggestions.
### Button
[WRONG] **Wrong** (generic component library default, do not copy):
```html
<button class="{GENERIC_LIBRARY_BUTTON_DEFAULT}">
Click me
</button>
```
[CORRECT] **Right** (uses this style's tokens):
```html
<button class="bg-gradient-to-b from-pink-300 to-pink-400 rounded-full text-white font-bold shadow-[8px_8px_16px_rgba(0,0,0,0.1),inset_4px_4px_8px_rgba(255,255,255,0.4),inset_-2px_-2px_4px_rgba(0,0,0,0.1)] hover:translate-y-1 transition-all duration-200 bg-gradient-to-b from-pink-300 to-pink-400 text-white">
Click me
</button>
```
### Card
[WRONG] **Wrong** (generic card, not adapted to this style):
```html
<div class="{GENERIC_LIBRARY_CARD_DEFAULT}">
<h3>{TITLE}</h3>
</div>
```
[CORRECT] **Right** (uses this style's card tokens):
```html
<div class="bg-gradient-to-br from-white to-pink-50 rounded-[32px] shadow-[12px_12px_24px_rgba(0,0,0,0.1),inset_6px_6px_12px_rgba(255,255,255,0.6),inset_-4px_-4px_8px_rgba(0,0,0,0.05)] p-6 md:p-8">
<h3 class="font-bold text-pink-700 text-xl md:text-2xl">{TITLE}</h3>
</div>
```
### Input
[WRONG] **Wrong** (generic input, not adapted to this style):
```html
<input class="{GENERIC_LIBRARY_INPUT_DEFAULT}" />
```
[CORRECT] **Right** (uses this style's input tokens):
```html
<input class="bg-gradient-to-b from-gray-100 to-gray-200 rounded-2xl shadow-[inset_4px_4px_8px_rgba(0,0,0,0.1),inset_-4px_-4px_8px_rgba(255,255,255,0.9)] focus:outline-none transition-all" placeholder="{PLACEHOLDER}" />
```
---
## [TEMPLATES] Claymorphism page skeletons
These skeletons use this style's tokens only. Replace `{PLACEHOLDER}` values, but keep every token in place:
### Navigation
```html
<nav class="bg-gradient-to-br from-amber-100 via-pink-100 to-purple-100 text-pink-700 border-0 border-transparent px-6 md:px-8">
<div class="flex items-center justify-between max-w-6xl mx-auto gap-6">
<a href="/" class="font-bold text-pink-700 text-xl md:text-2xl">
{LOGO_TEXT}
</a>
<div class="flex gap-6 text-pink-600 text-sm">
{NAV_LINKS}
</div>
</div>
</nav>
```
### Hero section
```html
<section class="bg-gradient-to-b from-pink-300 to-pink-400 text-pink-700 py-16 md:py-24 px-6 md:px-8">
<div class="max-w-4xl mx-auto">
<h1 class="font-bold text-pink-700 text-4xl md:text-6xl">
{HEADLINE}
</h1>
<p class="text-pink-600 text-base max-w-xl">
{SUBHEADLINE}
</p>
<button class="bg-gradient-to-b from-pink-300 to-pink-400 rounded-full text-white font-bold shadow-[8px_8px_16px_rgba(0,0,0,0.1),inset_4px_4px_8px_rgba(255,255,255,0.4),inset_-2px_-2px_4px_rgba(0,0,0,0.1)] hover:translate-y-1 transition-all duration-200 bg-gradient-to-b from-pink-300 to-pink-400 text-white">
{CTA_TEXT}
</button>
</div>
</section>
```
### Card grid
```html
<section class="bg-gradient-to-br from-amber-100 via-pink-100 to-purple-100 text-pink-700 py-16 md:py-24 px-6 md:px-8">
<div class="max-w-6xl mx-auto">
<h2 class="font-bold text-pink-700 text-2xl md:text-3xl">{SECTION_TITLE}</h2>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
<!-- Card template - repeat for each card -->
<div class="bg-gradient-to-br from-white to-pink-50 rounded-[32px] shadow-[12px_12px_24px_rgba(0,0,0,0.1),inset_6px_6px_12px_rgba(255,255,255,0.6),inset_-4px_-4px_8px_rgba(0,0,0,0.05)] p-6 md:p-8">
<h3 class="font-bold text-pink-700 text-xl md:text-2xl">{CARD_TITLE}</h3>
<p class="text-pink-600 text-base text-pink-400">{CARD_DESCRIPTION}</p>
</div>
</div>
</div>
</section>
```
### Form input
```html
<input class="bg-gradient-to-b from-gray-100 to-gray-200 rounded-2xl shadow-[inset_4px_4px_8px_rgba(0,0,0,0.1),inset_-4px_-4px_8px_rgba(255,255,255,0.9)] focus:outline-none transition-all" placeholder="{PLACEHOLDER}" />
```
### Footer
```html
<footer class="bg-gradient-to-br from-white to-pink-50 text-pink-600 py-16 md:py-24 px-6 md:px-8">
<div class="max-w-6xl mx-auto">
<div class="grid grid-cols-1 md:grid-cols-3 gap-8">
<div>
<span class="font-bold text-pink-700 text-xl md:text-2xl">{LOGO_TEXT}</span>
<p class="text-pink-600 text-sm">{TAGLINE}</p>
</div>
<div>
<h4 class="font-bold text-pink-700 text-xl md:text-2xl">{COLUMN_TITLE}</h4>
<ul class="text-pink-600 text-sm">
{FOOTER_LINKS}
</ul>
</div>
</div>
</div>
</footer>
```
---
## [CHECKLIST] Claymorphism post-generation self check
**Before returning code, verify every token and rule below. Fix any violation before delivering:**
### Token check
- [ ] Button includes: `bg-gradient-to-b from-pink-300 to-pink-400 rounded-full text-white font-bold shadow-[8px_8px_16px_rgba(0,0,0,0.1),inset_4px_4px_8px_rgba(255,255,255,0.4),inset_-2px_-2px_4px_rgba(0,0,0,0.1)] hover:translate-y-1 transition-all duration-200`
- [ ] Card includes: `bg-gradient-to-br from-white to-pink-50 rounded-[32px] shadow-[12px_12px_24px_rgba(0,0,0,0.1),inset_6px_6px_12px_rgba(255,255,255,0.6),inset_-4px_-4px_8px_rgba(0,0,0,0.05)]`
- [ ] Input includes: `bg-gradient-to-b from-gray-100 to-gray-200 rounded-2xl shadow-[inset_4px_4px_8px_rgba(0,0,0,0.1),inset_-4px_-4px_8px_rgba(255,255,255,0.9)] focus:outline-none transition-all`
### Forbidden check
- [ ] Not using `rounded-none`
- [ ] Not using `rounded-sm`
- [ ] Not using `rounded`
- [ ] Not using `shadow-none`
- [ ] Not using `bg-black`
- [ ] Not using `text-black`
- [ ] Not using `border-black`
### Style rule check
- [ ] Use extra-large border radii rounded-3xl or rounded-full
- [ ] Combine inner and outer shadows to create dimensionality
- [ ] Use soft candy color palette
- [ ] Add subtle gradient backgrounds to simulate lighting
- [ ] Maintain sufficient spacing between elements
### Style drift check
- [ ] Does not violate: Do NOT use sharp corners rounded-none
- [ ] Does not violate: Do NOT use hard-edge shadows shadow-[Xpx_Xpx_0px]
- [ ] Does not violate: Do NOT use high-contrast dark color schemes
- [ ] Does not violate: Do NOT use overly complex gradients
- [ ] Does not violate: Do NOT overcrowd elements
### Delivery check
- [ ] Responsive layout holds on phone, tablet and desktop with no horizontal overflow
- [ ] Every interactive element has a visible focus state, an accessible name and a reduced-motion path
- [ ] Text contrast meets WCAG AA and colour alone never carries state
- [ ] The result is still recognizable at a glance as Claymorphism
## Absolute Bans (Match and Refuse)
If any of the following patterns appear, it is a style violation — rewrite without exception.
- use sharp corners rounded-none
- use hard-edge shadows shadow-[Xpx_Xpx_0px]
- use high-contrast dark color schemes
- use overly complex gradients
- overcrowd elements
- use plain translate-y instead of real deformation physics
- use linear ease or ease-in-out (lacks bounciness)
## Self-Check (Verify Before Shipping)
If any item fails, the style has drifted — fix before shipping.
- [ ] No purple-to-blue gradients
- [ ] No overused fonts (Inter, Roboto, Geist, Fraunces, Plus Jakarta Sans)
- [ ] No nested cards (cards inside cards)
- [ ] No gray text on colored backgrounds
- [ ] Body text contrast meets WCAG AA (>= 4.5:1)
- [ ] No bounce or elastic easing curves
- [ ] Animations have a prefers-reduced-motion fallback
- [ ] Body text line length capped at 65-75 characters
- [ ] No side-stripe accent borders (border-left/right > 1px)
- [ ] No gradient text (background-clip: text)
- [ ] No glassmorphism used as the default surface treatment
- [ ] No tiny uppercase tracked eyebrow labels above every section heading
- [ ] do NOT use sharp corners rounded-none
- [ ] do NOT use hard-edge shadows shadow-[Xpx_Xpx_0px]
- [ ] do NOT use high-contrast dark color schemes
- [ ] do NOT use overly complex gradients
- [ ] do NOT overcrowd elementsMore prompt libraries: All UI Prompts · Tailwind UI Prompts · Dark Mode UI Prompts
Component Templates
粘土风格按钮,Q弹按压形变 + 弹簧缓动
Pointer Interactions
Pointer interactions tailored to this style — same cursor, completely different character. Move around the stage to feel it.
Frontend Readiness
This layer tracks whether the style is ready for real websites: theme modes, state feedback, keyboard access, and performance constraints.
Overall
58%
Fallback
Dark Mode
35%
FallbackUI States
79%
PartialMotion
70%
PartialA11y
70%
PartialPerformance
35%
FallbackButton
Default / Hover / Focus Visible / Active / Disabled
Input
Default / Hover / Focus Visible / Disabled / Error
Card
Default / Hover / Focus Visible / Loading / Skeleton
Form
Default / Focus Visible / Disabled / Loading / Error
FAQ
/* Claymorphism 全局样式 */
:root {
--clay-pink: #f8b4d9;
--clay-cream: #fef3c7;
--clay-mint: #a7f3d0;
--clay-lavender: #c4b5fd;
--clay-lemon: #fcd34d;
--clay-shadow-light: rgba(255, 255, 255, 0.7);
--clay-shadow-dark: rgba(0, 0, 0, 0.08);
--clay-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
}
/* 基础粘土效果类 */
.clay {
border-radius: 24px;
box-shadow:
8px 8px 16px var(--clay-shadow-dark),
inset 4px 4px 8px var(--clay-shadow-light),
inset -2px -2px 4px var(--clay-shadow-dark);
}
/* 粘土按钮效果 — Q弹物理 */
.clay-button {
border-radius: 9999px;
box-shadow:
6px 6px 12px var(--clay-shadow-dark),
inset 3px 3px 6px var(--clay-shadow-light),
inset -2px -2px 4px var(--clay-shadow-dark);
transition: all 0.3s var(--clay-spring);
}
.clay-button:hover {
transform: translateY(-4px);
box-shadow:
10px 10px 20px var(--clay-shadow-dark),
inset 3px 3px 6px var(--clay-shadow-light),
inset -2px -2px 4px var(--clay-shadow-dark);
}
.clay-button:active {
transform: scaleX(1.05) scaleY(0.9) translateY(2px);
box-shadow:
2px 2px 4px var(--clay-shadow-dark),
inset 8px 8px 16px rgba(0, 0, 0, 0.15),
inset -2px -2px 4px var(--clay-shadow-light);
}
/* 粘土输入框(内凹效果) */
.clay-input {
border-radius: 16px;
box-shadow:
inset 4px 4px 8px var(--clay-shadow-dark),
inset -4px -4px 8px var(--clay-shadow-light);
transition: all 0.3s var(--clay-spring);
}
@keyframes claymorphism-fade-in {
from { opacity: 0; transform: translateY(8px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes claymorphism-pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.7; }
}
.claymorphism-card {
position: relative;
overflow: hidden;
}
.claymorphism-card::before {
content: "";
position: absolute;
inset: 0;
opacity: 0;
transition: opacity 0.3s ease;
background: linear-gradient(135deg, rgba(248, 180, 217, 0.05), transparent);
pointer-events: none;
}
.claymorphism-card:hover::before {
opacity: 1;
}
.claymorphism-gradient {
background: linear-gradient(135deg, #f8b4d9, #a7f3d0);
}
.claymorphism-gradient-text {
background: linear-gradient(135deg, #f8b4d9, #a7f3d0);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
.claymorphism-frosted {
backdrop-filter: blur(12px) saturate(180%);
-webkit-backdrop-filter: blur(12px) saturate(180%);
background: rgba(248, 180, 217, 0.08);
}
.claymorphism-accent-corner {
clip-path: polygon(0 0, 100% 0, 100% calc(100% - 2rem), calc(100% - 2rem) 100%, 0 100%);
}
.claymorphism-animate-in {
animation: claymorphism-fade-in 0.5s ease-out both;
}Related Styles
Explore these styles for ready-made tokens and components.
IDE Integration
Download configuration files for AI coding assistants to generate code in this style.
Style Pack
Get complete machine-readable style assets including design tokens, Tailwind presets, CSS variables, and shadcn/ui themes.
Metadata
Style metadata including version information
Design Tokens
Compatible with Figma / Style Dictionary / Tokens Studio
Tailwind Preset
Tailwind CSS theme preset, import directly in config
Global CSS
CSS variables and base styles
shadcn Theme
shadcn/ui theme configuration
CSS Variables
Pure CSS variables, works with any project
SKILL.md
Loadable skill pack for Cursor / Claude Code / VS Code
Claymorphism is a UI design style that simulates the texture of clay or plasticine, creating soft, adorable 3D effects through extra-large border radii, combined inner and outer shadows, and gentle gradient colors.
WCAG 2.1 compliance analysis based on color contrast and typography readability.
Overall Score
Grade: C - Fair
Contrast Ratios
Readability
Score
90/100
Font Size
text-base
Font Weight
font-bold text-pink-700
Line Height
default
Scoring is based on WCAG 2.1 standards. AA requires 4.5:1 contrast for normal text, 3:1 for large text; AAA requires 7:1 for normal text, 4.5:1 for large text.