Best For
海报 / 大字体 / 网格
Swiss Poster
Bold typography, grid alignment, primary color blocks, and experimental layouts. Rooted in the Swiss International Style poster design tradition, building information delivery through oversized type and strong visual hierarchy. Differs from swiss-style by focusing more on poster-level experimental large-scale typography.
Best For
海报 / 大字体 / 网格
Primary Move
Use oversized bold sans-serif type (font-sans font-black)
Watch Out
Do not use decorative, script, or monospace fonts
Showcase Entry
Live preview of the showcase page. Click to explore the full experience.
Color Palette
Primary
#000000
Secondary
#ffffff
Accent 1
#ff0000
Accent 2
#0057b8
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: Swiss Poster
style_slug: swiss-poster
style_source: /styles/swiss-poster
# 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 Swiss Poster design style frontend development expert. All generated code must strictly follow these constraints:
## Absolutely Forbidden
- Decorative, script, or monospace fonts
- Rounded corners larger than rounded-sm (use rounded-none)
- Any shadows (shadow-sm, shadow-md, shadow-lg, etc.) - Swiss Poster has NO shadows
- Gradients of any kind
- Dashed borders (border-dashed) - use border-solid only
- Element spacing/gaps (gap-4, gap-6) - use gap-0 with border dividers
- Backdrop blur or glass effects
- Decorative elements or embellishments
## Must Follow
- Black and white as primary palette: #000000, #ffffff
- Accent color blocks: red #ff0000, blue #0057b8, yellow #ffcc00
- Extra bold sans-serif: font-sans font-black
- All uppercase: uppercase tracking-widest
- Sharp edges: rounded-none everywhere
- 12-column grid alignment: grid-cols-12 with asymmetric splits
- Borders as dividers: border-2 border-[#000000]
- Zero gaps: gap-0, elements butt against each other
- Extreme type scale contrast (160px heading vs 10px label)
- Non-symmetric layouts (3/9, 8/4 column splits)
## Color Palette
Primary:
- Black: #000000 (text, borders, backgrounds)
- White: #ffffff (backgrounds)
- Red: #ff0000 (color blocks, hover states)
- Blue: #0057b8 (color blocks)
- Yellow: #ffcc00 (color blocks)
## Special Elements
- 12-column grid system with visible structural lines
- Asymmetric column splits (not 6/6 - use 3/9, 8/4, etc.)
- Color block backgrounds (full sections in red/blue/yellow)
- Visible grid column markers
- Extreme font size contrasts (160px vs 10px)
- Edge-to-edge button groups (gap-0, border-l-0)
- Vertical text using writing-mode: vertical-lr
- Section borders as visual separators instead of spacing
## Animation & Interaction Rules
- Absolute Objectivity: Zero `translate`, `scale`, or `shadow` changes on any interactive element. Swiss Poster communicates through color and typography alone -- motion is visual noise that undermines the grid's authority.
- Snap Transitions: All state changes use `transition-none` -- color flips are instantaneous, like ink stamped onto paper in a single press. Never use `duration-100` or any timed transition.
- Color Block Invasion: Hover replaces the entire background with solid black `hover:bg-[#000000]` and text inverts to `hover:text-[#ffffff] transition-none`. The color block takes over completely -- no partial fills, no gradients.
- Typographic Highlighting: The year/category label activates to `group-hover:text-[#ff0000] transition-none` on hover -- the red typographic accent fires like a stamp imprint, the only color note in a black-and-white composition.Component Templates
Swiss Poster 风格按钮,Color Block Invasion 整块颜色翻转 + Snap Transitions `transition-none` + active 反转为白底黑字
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
/* Swiss Poster Global Styles */
:root {
--sp-black: #000000;
--sp-white: #ffffff;
--sp-red: #ff0000;
--sp-blue: #0057b8;
--sp-yellow: #ffcc00;
}
/* Structural grid overlay for development */
.sp-grid-overlay {
background-image:
linear-gradient(rgba(0, 0, 0, 0.03) 1px, transparent 1px),
linear-gradient(90deg, rgba(0, 0, 0, 0.03) 1px, transparent 1px);
background-size: calc(100% / 12) 100px;
}
/* Color block accents */
.sp-block-red { background-color: var(--sp-red); }
.sp-block-blue { background-color: var(--sp-blue); }
.sp-block-yellow { background-color: var(--sp-yellow); }
/* Tight tracking for poster headings */
.sp-tight { letter-spacing: -0.05em; }
/* Structural divider line */
.sp-divider {
border-top: 2px solid var(--sp-black);
}
/* Vertical text for sidebar labels */
.sp-vertical-text {
writing-mode: vertical-lr;
transform: rotate(180deg);
letter-spacing: 0.5em;
}
/* Asymmetric grid helper - 3/9 split */
.sp-grid-3-9 {
display: grid;
grid-template-columns: repeat(12, 1fr);
}
.sp-grid-3-9 > :first-child { grid-column: span 3; }
.sp-grid-3-9 > :last-child { grid-column: span 9; }
/* Edge-to-edge buttons */
.sp-button-group {
display: flex;
gap: 0;
}
.sp-button-group > * + * {
border-left: 0;
}
@keyframes swiss-poster-fade-in {
from { opacity: 0; transform: translateY(8px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes swiss-poster-pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.7; }
}
.swiss-poster-card {
position: relative;
overflow: hidden;
}
.swiss-poster-card::before {
content: "";
position: absolute;
inset: 0;
opacity: 0;
transition: opacity 0.3s ease;
background: linear-gradient(135deg, rgba(0, 0, 0, 0.05), transparent);
pointer-events: none;
}
.swiss-poster-card:hover::before {
opacity: 1;
}
.swiss-poster-frosted {
backdrop-filter: blur(12px) saturate(180%);
-webkit-backdrop-filter: blur(12px) saturate(180%);
background: rgba(0, 0, 0, 0.08);
}
.swiss-poster-accent-corner {
clip-path: polygon(0 0, 100% 0, 100% calc(100% - 2rem), calc(100% - 2rem) 100%, 0 100%);
}
.swiss-poster-animate-in {
animation: swiss-poster-fade-in 0.5s ease-out both;
}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
Swiss Poster style originates from the poster tradition of the Swiss International Style design movement, pursuing the ultimate in typographic expressiveness.
WCAG 2.1 compliance analysis based on color contrast and typography readability.
Overall Score
Grade: B - Good
Contrast Ratios
| Context | Colors | Ratio | AA | AAA |
|---|---|---|---|---|
| Text on background | /#000000 / #ffffff | 21:1 | ||
| Secondary text on background | /#000000 / #ffffff | 21:1 | ||
| Muted text on background | /#000000 / #ffffff | 21:1 | ||
| Text on secondary background | /#000000 / #f5f5f5 | 19.26:1 | ||
| Secondary text on secondary | /#000000 / #f5f5f5 | 19.26:1 | ||
| Button primary | /#ffffff / #000000 | 21:1 | ||
| Text on accent 1 | /#000000 / #ff0000 | 5.25:1 | ||
| Alt text on accent 1 | /#000000 / #ff0000 | 5.25:1 | ||
| Text on accent 2 | /#000000 / #0057b8 | 3.06:1 | ||
| Alt text on accent 2 | /#000000 / #0057b8 | 3.06:1 | ||
| Text on accent 3 | /#000000 / #ffcc00 | 13.89:1 | ||
| Alt text on accent 3 | /#000000 / #ffcc00 | 13.89:1 |
Readability
Score
83/100
Font Size
text-sm md:text-base
Font Weight
font-sans font-black uppercase tracking-tighter
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.