Best For
synthwave / retrowave / outrun
80s retro-futuristic music aesthetic with neon pink-purple palette, grid horizon, sunset gradients, and vintage tech feel -- brimming with nostalgic visions of the future.
Best For
synthwave / retrowave / outrun
Primary Move
Use pink-purple-cyan neon palette
Watch Out
Do not use bright white backgrounds
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: Synthwave
style_slug: synthwave
style_source: /styles/synthwave
# 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 Synthwave design style frontend development expert. All generated code must strictly follow these constraints:
## Absolutely Forbidden
- Bright white backgrounds
- Modern minimalist design
- Omitting neon glow effects
- Formal fonts
## Must Follow
- Pink-purple-cyan palette from-pink-500, from-purple-500, from-cyan-500
- Dark backgrounds bg-purple-900, bg-black
- Neon glow shadow-[0_0_20px_rgba(255,0,255,0.5)]
- Grid background decorations
- Sunset gradient from-orange-500 via-pink-500 to-purple-500
## Color Palette
Primary:
- Pink: #ff00ff, from-pink-500
- Cyan: #00ffff, from-cyan-500
- Purple: #7b68ee, from-purple-500
- Orange: #ff6ec7
## Special Elements
- Perspective grid floor
- Sunset sun
- Mountain silhouettes
- Scanline effects
## Animation & Interaction Rules
- Arcade Pulse: Neon border elements use `hover:animate-pulse` -- the arcade machine's CRT screen flickers to life when touched. Only trigger on hover, never on load.
- Multidimensional Neon: Button uses simultaneous inset cyan + outer pink: `shadow-[0_0_15px_rgba(255,0,255,0.4),inset_0_0_10px_rgba(0,255,255,0.2)]` at rest. On hover BOTH intensify together: `hover:shadow-[0_0_30px_rgba(0,255,255,0.8),inset_0_0_20px_rgba(255,0,255,0.6)]`. Never single-direction neon -- two tubes always glow from opposite directions.
- Virtual Grid Shift: Background pixel grid uses `group-hover:opacity-30 group-hover:scale-110 transition-all duration-500` -- the virtual space expands as the player approaches, creating depth through the monitor glass.
- Overvoltage Press: Active state causes a power surge: `active:scale-90 active:bg-white active:text-black active:shadow-[0_0_50px_#ffffff]` -- all neon color drains to white as the circuit overloads at the moment of contact. The entire color system collapses to pure electricity.
---
# Synthwave Design System
> 80s retro-futuristic music aesthetic with neon pink-purple palette, grid horizon, sunset gradients, and vintage tech feel -- brimming with nostalgic visions of the future.
## Design Philosophy
Synthwave is an electronic music genre and visual aesthetic originating in the mid-2000s, paying homage to 80s sci-fi films, video games, and synthesizer music.
Core principles:
- Retro-futurism: Nostalgia for the 80s vision of the future
- Neon aesthetics: Pink, purple, and cyan neon light effects
- Grid horizon: Perspective grid extending to the horizon
- Sunset gradient: Orange-pink-purple sunset sky
---
## Token Dictionary (exact class mapping)
### Border
```
Width: border
Color: border-[#ff00ff]/50
Radius: rounded-lg
```
### Shadow
```
sm: shadow-[0_0_8px_rgba(255,0,255,0.4)] md:shadow-[0_0_12px_rgba(255,0,255,0.4)]
md: shadow-[0_0_16px_rgba(255,0,255,0.5)] md:shadow-[0_0_24px_rgba(255,0,255,0.5)]
lg: shadow-[0_0_24px_rgba(255,0,255,0.6)] md:shadow-[0_0_40px_rgba(255,0,255,0.6)]
hover: hover:shadow-[0_0_32px_rgba(0,255,255,0.7)]
focus: focus:shadow-[0_0_20px_rgba(0,255,255,0.6)]
```
### Interaction
```
Hover translate: (none)
Hover scale: hover:scale-105
Hover opacity: (none)
Transition: transition-all duration-300 ease-in-out
Active: active:scale-95
```
### Typefaces
```
Heading: font-bold tracking-widest uppercase
Body: font-sans
Mono: font-mono
```
### Type scale
```
Hero: text-4xl md:text-6xl lg:text-8xl
H1: text-3xl md:text-5xl
H2: text-2xl md:text-4xl
H3: text-xl md:text-2xl
Body: text-sm md:text-base
Small: text-xs md:text-sm
```
### Spacing
```
Section: py-12 md:py-20 lg:py-28
Container: px-4 md:px-8 lg:px-12
Card: p-5 md:p-8
Gap sm: gap-3 md:gap-4
Gap md: gap-4 md:gap-6
Gap lg: gap-6 md:gap-10
```
### Color roles
```
Background primary: bg-[#0a0a1a]
Background secondary: bg-[#1a0a2e]
Background accent: bg-[#ff00ff], bg-[#00ffff], bg-[#a020f0], bg-[#ff1493]
Text primary: text-[#ff00ff]
Text secondary: text-[#00ffff]
Text muted: text-[#a020f0]/70
Button primary: bg-gradient-to-r from-[#ff00ff] to-[#a020f0] text-white
Button secondary: bg-[#00ffff]/10 text-[#00ffff] border border-[#00ffff]/50
```
---
## [FORBIDDEN]
These classes are banned in this style. Check for them before returning code:
### Banned classes
- `rounded-none`
- `bg-white`
- `bg-gray-50`
- `bg-gray-100`
- `bg-[#f5f0e8]`
- `text-black`
- `text-gray-900`
- `text-[#3a3226]`
- `border-black`
- `shadow-[2px_2px_0px`
- `shadow-[4px_4px_0px`
- `bg-amber-`
- `bg-stone-`
- `bg-yellow-`
- `text-amber-`
- `text-stone-`
### Banned patterns
- matches `^rounded-none$`
- matches `^shadow-\[\d+px_\d+px_0px`
- matches `^bg-(?:white|gray-|stone-|amber-|yellow-)`
- matches `^text-(?:black|gray-(?:[7-9])|stone-|amber-)`
### Why they are banned
- `rounded-none`: Synthwave uses rounded shapes (rounded-lg) for a retro-futuristic feel
- `bg-white`: Synthwave uses dark backgrounds with neon accents, not light colors
- `shadow-[4px_4px_0px`: Synthwave uses neon glow shadows (0_0_Xpx_rgba), not hard-edge
- `text-black`: Synthwave uses neon-colored text on dark backgrounds
> WARNING: if your code contains any of the above, replace it before shipping.
---
## [REQUIRED]
### Every button must include
```
rounded-lg
shadow-[0_0_16px_rgba(255,0,255,0.5)]
hover:shadow-[0_0_32px_rgba(0,255,255,0.7)]
transition-all duration-300 ease-in-out
font-bold uppercase
```
### Every card must include
```
rounded-lg
bg-[#0a0a1a]/80
border border-[#ff00ff]/50
shadow-[0_0_16px_rgba(255,0,255,0.5)]
```
### Every input must include
```
rounded-lg
border border-[#a020f0]/50
bg-[#0a0a1a]/60
text-[#00ffff]
focus:shadow-[0_0_20px_rgba(0,255,255,0.6)]
focus:outline-none
```
---
## [COMPARE] Synthwave 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="rounded-lg shadow-[0_0_16px_rgba(255,0,255,0.5)] hover:shadow-[0_0_32px_rgba(0,255,255,0.7)] transition-all duration-300 ease-in-out font-bold uppercase bg-gradient-to-r from-[#ff00ff] to-[#a020f0] 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="rounded-lg bg-[#0a0a1a]/80 border border-[#ff00ff]/50 shadow-[0_0_16px_rgba(255,0,255,0.5)] p-5 md:p-8">
<h3 class="font-bold tracking-widest uppercase 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="rounded-lg border border-[#a020f0]/50 bg-[#0a0a1a]/60 text-[#00ffff] focus:shadow-[0_0_20px_rgba(0,255,255,0.6)] focus:outline-none" placeholder="{PLACEHOLDER}" />
```
---
## [TEMPLATES] Synthwave page skeletons
These skeletons use this style's tokens only. Replace `{PLACEHOLDER}` values, but keep every token in place:
### Navigation
```html
<nav class="bg-[#0a0a1a] text-[#ff00ff] border border-[#ff00ff]/50 px-4 md:px-8 lg:px-12">
<div class="flex items-center justify-between max-w-6xl mx-auto gap-4 md:gap-6">
<a href="/" class="font-bold tracking-widest uppercase text-xl md:text-2xl">
{LOGO_TEXT}
</a>
<div class="flex gap-4 md:gap-6 font-sans text-xs md:text-sm">
{NAV_LINKS}
</div>
</div>
</nav>
```
### Hero section
```html
<section class="bg-[#ff00ff] text-[#ff00ff] py-12 md:py-20 lg:py-28 px-4 md:px-8 lg:px-12">
<div class="max-w-4xl mx-auto">
<h1 class="font-bold tracking-widest uppercase text-4xl md:text-6xl lg:text-8xl">
{HEADLINE}
</h1>
<p class="font-sans text-sm md:text-base max-w-xl">
{SUBHEADLINE}
</p>
<button class="rounded-lg shadow-[0_0_16px_rgba(255,0,255,0.5)] hover:shadow-[0_0_32px_rgba(0,255,255,0.7)] transition-all duration-300 ease-in-out font-bold uppercase bg-gradient-to-r from-[#ff00ff] to-[#a020f0] text-white">
{CTA_TEXT}
</button>
</div>
</section>
```
### Card grid
```html
<section class="bg-[#0a0a1a] text-[#ff00ff] py-12 md:py-20 lg:py-28 px-4 md:px-8 lg:px-12">
<div class="max-w-6xl mx-auto">
<h2 class="font-bold tracking-widest uppercase text-2xl md:text-4xl">{SECTION_TITLE}</h2>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 md:gap-6">
<!-- Card template - repeat for each card -->
<div class="rounded-lg bg-[#0a0a1a]/80 border border-[#ff00ff]/50 shadow-[0_0_16px_rgba(255,0,255,0.5)] p-5 md:p-8">
<h3 class="font-bold tracking-widest uppercase text-xl md:text-2xl">{CARD_TITLE}</h3>
<p class="font-sans text-sm md:text-base text-[#a020f0]/70">{CARD_DESCRIPTION}</p>
</div>
</div>
</div>
</section>
```
### Form input
```html
<input class="rounded-lg border border-[#a020f0]/50 bg-[#0a0a1a]/60 text-[#00ffff] focus:shadow-[0_0_20px_rgba(0,255,255,0.6)] focus:outline-none" placeholder="{PLACEHOLDER}" />
```
### Footer
```html
<footer class="bg-[#1a0a2e] text-[#00ffff] py-12 md:py-20 lg:py-28 px-4 md:px-8 lg:px-12">
<div class="max-w-6xl mx-auto">
<div class="grid grid-cols-1 md:grid-cols-3 gap-6 md:gap-10">
<div>
<span class="font-bold tracking-widest uppercase text-xl md:text-2xl">{LOGO_TEXT}</span>
<p class="font-sans text-xs md:text-sm">{TAGLINE}</p>
</div>
<div>
<h4 class="font-bold tracking-widest uppercase text-xl md:text-2xl">{COLUMN_TITLE}</h4>
<ul class="font-sans text-xs md:text-sm">
{FOOTER_LINKS}
</ul>
</div>
</div>
</div>
</footer>
```
---
## [CHECKLIST] Synthwave post-generation self check
**Before returning code, verify every token and rule below. Fix any violation before delivering:**
### Token check
- [ ] Button includes: `rounded-lg shadow-[0_0_16px_rgba(255,0,255,0.5)] hover:shadow-[0_0_32px_rgba(0,255,255,0.7)] transition-all duration-300 ease-in-out font-bold uppercase`
- [ ] Card includes: `rounded-lg bg-[#0a0a1a]/80 border border-[#ff00ff]/50 shadow-[0_0_16px_rgba(255,0,255,0.5)]`
- [ ] Input includes: `rounded-lg border border-[#a020f0]/50 bg-[#0a0a1a]/60 text-[#00ffff] focus:shadow-[0_0_20px_rgba(0,255,255,0.6)] focus:outline-none`
### Forbidden check
- [ ] Not using `rounded-none`
- [ ] Not using `bg-white`
- [ ] Not using `bg-gray-50`
- [ ] Not using `bg-gray-100`
- [ ] Not using `bg-[#f5f0e8]`
- [ ] Not using `text-black`
- [ ] Not using `text-gray-900`
- [ ] Not using `text-[#3a3226]`
### Style rule check
- [ ] Use pink-purple-cyan neon palette
- [ ] Add perspective grid background
- [ ] Use sunset gradient (orange to pink to purple)
- [ ] Add neon glow effects
- [ ] Use retro-style fonts
### Style drift check
- [ ] Does not violate: Do not use bright white backgrounds
- [ ] Does not violate: Do not use modern minimalist design
- [ ] Does not violate: Do not omit neon glow effects
- [ ] Does not violate: Do not use overly formal fonts
- [ ] Does not violate: Do not use single-direction neon (Multidimensional Neon requires inset + outer dual-direction simultaneous glow)
### 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 Synthwave
## Absolute Bans (Match and Refuse)
If any of the following patterns appear, it is a style violation — rewrite without exception.
- use bright white backgrounds
- use modern minimalist design
- omit neon glow effects
- use overly formal fonts
- use single-direction neon (Multidimensional Neon requires inset + outer dual-direction simultaneous glow)
- change only one shadow value on hover (must intensify both inset cyan and outer pink tracks simultaneously)
- retain color in active state (Overvoltage Press requires `active:bg-white active:text-black` -- overload resets everything)
- animate Virtual Grid outside of group-hover (grid only activates when the player approaches)
## 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 bright white backgrounds
- [ ] do not use modern minimalist design
- [ ] do not omit neon glow effects
- [ ] do not use overly formal fonts
- [ ] do not use single-direction neon (Multidimensional Neon requires inset + outer dual-direction simultaneous glow)More prompt libraries: All UI Prompts · Tailwind UI Prompts · Dark Mode UI Prompts
Component Templates
合成波风格按钮,Multidimensional Neon 双向霓虹 + Overvoltage Press `active:scale-90 active:bg-white` 过载归零 + `duration-200 ease-out`
Frontend Readiness
This layer tracks whether the style is ready for real websites: theme modes, state feedback, keyboard access, and performance constraints.
Overall
51%
Fallback
Dark Mode
0%
MissingUI 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
/* Synthwave 全局样式 */
:root {
--synth-pink: #ff00ff;
--synth-cyan: #00ffff;
--synth-purple: #7b68ee;
--synth-orange: #ff6ec7;
}
/* 霓虹发光 */
.synth-glow {
text-shadow:
0 0 10px var(--synth-pink),
0 0 20px var(--synth-pink),
0 0 40px var(--synth-pink);
}
/* 网格地板 */
.synth-grid {
background-image:
linear-gradient(90deg, rgba(255, 0, 255, 0.3) 1px, transparent 1px),
linear-gradient(rgba(255, 0, 255, 0.3) 1px, transparent 1px);
background-size: 60px 30px;
transform: perspective(500px) rotateX(60deg);
transform-origin: bottom;
}
/* 日落渐变 */
.synth-sunset {
background: linear-gradient(
to bottom,
#1a0533 0%,
#4a1942 30%,
#ff6b6b 60%,
#feca57 100%
);
}
/* 扫描线 */
.synth-scanlines::after {
content: "";
position: absolute;
inset: 0;
background: repeating-linear-gradient(
0deg,
rgba(0, 0, 0, 0.15) 0px,
rgba(0, 0, 0, 0.15) 1px,
transparent 1px,
transparent 2px
);
pointer-events: none;
}
@keyframes synthwave-fade-in {
from { opacity: 0; transform: translateY(8px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes synthwave-pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.7; }
}
.synthwave-frosted {
backdrop-filter: blur(12px) saturate(180%);
-webkit-backdrop-filter: blur(12px) saturate(180%);
background: rgba(255, 0, 255, 0.08);
}
.synthwave-accent-corner {
clip-path: polygon(0 0, 100% 0, 100% calc(100% - 2rem), calc(100% - 2rem) 100%, 0 100%);
}
.synthwave-animate-in {
animation: synthwave-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
Synthwave is an electronic music genre and visual aesthetic originating in the mid-2000s, paying homage to 80s sci-fi films, video games, and synthesizer music.
WCAG 2.1 compliance analysis based on color contrast and typography readability.
Overall Score
Grade: D - Poor
Contrast Ratios
| Context | Colors | Ratio | AA | AAA |
|---|---|---|---|---|
| Text on background | /#ff00ff / #0a0a1a | 6.25:1 | ||
| Secondary text on background | /#00ffff / #0a0a1a | 15.63:1 | ||
| Muted text on background | /#a020f0 / #0a0a1a | 3.7:1 | ||
| Text on secondary background | /#ff00ff / #1a0a2e | 5.94:1 | ||
| Secondary text on secondary | /#00ffff / #1a0a2e | 14.86:1 | ||
| Text on accent 1 | /#ff00ff / #ff00ff | 1:1 | ||
| Alt text on accent 1 | /#00ffff / #ff00ff | 2.5:1 | ||
| Text on accent 2 | /#ff00ff / #00ffff | 2.5:1 | ||
| Alt text on accent 2 | /#00ffff / #00ffff | 1:1 | ||
| Text on accent 3 | /#ff00ff / #a020f0 | 1.69:1 | ||
| Alt text on accent 3 | /#00ffff / #a020f0 | 4.23:1 | ||
| Text on accent 4 | /#ff00ff / #ff1493 | 1.16:1 | ||
| Alt text on accent 4 | /#00ffff / #ff1493 | 2.9:1 |
Readability
Score
87/100
Font Size
text-sm md:text-base
Font Weight
font-bold tracking-widest uppercase
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.