Anti Design is the deliberate, confrontational rejection of every polished convention that mainstream graphic and web design holds sacred. Born from the Italian Radical Design movement of the late 1960s and early 1970s – where architects and industrial designers revolted against post-war modernism’s insistence on function-over-form minimalism – Anti Design has since evolved into a digital-age provocation that sets fire to grids, harmony, whitespace, and corporate polish. Where conventional design smooths and reassures, Anti Design disrupts and unsettles. It embraces chaos-driven layouts, clashing color combinations, deliberately ugly typography, overlapping visual elements, and an aggressive refusal to follow any established rule about what good design should look like.
The movement gained renewed momentum in the 1990s through the work of designers like David Carson, whose legendary Ray Gun magazine layouts shattered typographic convention with crowded, asymmetrical compositions where legibility was optional and emotional impact was mandatory. In the 2000s and 2010s, the rise of standardized web templates and homogeneous UI kits produced a sea of identical-looking websites, fueling a counter-reaction: designers began deliberately breaking those templates to create memorable, provocative digital experiences. Today, Anti Design is embraced by fashion brands, music labels, art publications, streetwear companies, and creative agencies who want to signal rebellion, individuality, and cultural awareness. Notable examples include Bloomberg Businessweek’s experimental political coverage layouts, the Adidas Yung-1 campaign page, and editorial projects like Wrong Wrong magazine.
Anti Design is not random noise – it is intentional chaos. Every broken grid, every clashing neon, every overlapping text block is a conscious decision to provoke a reaction. The aesthetic demands that designers understand conventional rules deeply enough to break them with purpose. Studies suggest that these disruptive designs can boost brand recall by as much as 25% and increase dwell time by up to 30%, proving that memorable experiences are not always defined by simplicity but sometimes by complexity and challenge. The trade-off is real: accessibility suffers, usability can decline, and scaling across large systems is difficult. But for the right context – cultural projects, editorial experiments, youth-oriented campaigns, artistic portfolios – Anti Design delivers a visceral, unforgettable punch that no amount of careful grid alignment can match.
Anti Design rejects harmonious palettes in favor of deliberately jarring, high-contrast color collisions. Neon accents slam into dark backgrounds, warm and cool tones fight for dominance, and traditional color theory rules about complementary or analogous relationships are intentionally violated. The goal is visual friction – colors should feel uncomfortable together, creating the same kind of tension that the layout and typography produce.
| Swatch | Hex | Role / Usage |
|---|---|---|
| Void Black | #0D0D0D |
Primary dark background, maximum contrast base |
| Dirty White | #F0EDE5 |
Off-white surface, raw paper tone, anti-pristine |
| Toxic Neon Green | #39FF14 |
Primary neon accent, aggressive highlight, shock value |
| Hot Magenta | #FF0090 |
Secondary neon accent, clashing with green for maximum friction |
| Acid Yellow | #E8FF00 |
Warning-level accent, text highlight, attention hijacker |
| Electric Blue | #0055FF |
Cool accent for links and interactive chaos |
| Bruise Purple | #7B00FF |
Tertiary accent, unexpected intrusions, overlay tint |
| Danger Red | #FF1A1A |
Error-state red pushed into decorative use, urgency signifier |
| Concrete Gray | #4A4A4A |
Muted structural elements, dividers, secondary text |
| Rust Orange | #FF5E00 |
Warm clash accent, fights with blue and purple |
| Slime Green | #A8FF00 |
Secondary green for gradient collisions with toxic neon |
| Bubblegum Pink | #FF6EC7 |
Ironic sweetness against dark and gritty elements |
| Midnight Navy | #0A0A2E |
Deep alternative background, near-black blue |
| Static Gray | #B0B0B0 |
Noise overlays, disabled-state text, scan-line tone |
| Glitch Cyan | #00F5FF |
Chromatic aberration accent, digital artifact color |
:root {
/* Backgrounds */
--anti-bg-void: #0d0d0d;
--anti-bg-dirty: #f0ede5;
--anti-bg-navy: #0a0a2e;
/* Neon accents */
--anti-neon-green: #39ff14;
--anti-hot-magenta: #ff0090;
--anti-acid-yellow: #e8ff00;
--anti-electric-blue: #0055ff;
--anti-bruise-purple: #7b00ff;
--anti-danger-red: #ff1a1a;
--anti-rust-orange: #ff5e00;
--anti-slime-green: #a8ff00;
--anti-bubblegum: #ff6ec7;
--anti-glitch-cyan: #00f5ff;
/* Neutrals */
--anti-concrete: #4a4a4a;
--anti-static: #b0b0b0;
/* Utility */
--anti-glow-spread: 0 0 20px;
}
Anti Design typography is deliberately confrontational. Fonts are mismatched, oversized, stretched, overlapping, and frequently illegible on purpose. The goal is not communication efficiency but emotional disruption. Headings might be set in a grotesque black-weight sans-serif while body text uses an absurdly decorative display face – or vice versa. Mixing three or four typefaces in a single composition is not excess; it is the baseline.
| Font | Weight(s) | Usage | Link |
|---|---|---|---|
| Bebas Neue | 400 | Uppercase display headlines, compressed and loud | Bebas Neue |
| Space Grotesk | 300, 400, 700 | Angular geometric body text, techy tension | Space Grotesk |
| Rubik Glitch | 400 | Glitched display text, hero accents, digital chaos | Rubik Glitch |
| Syne | 400, 700, 800 | Expressive headlines with quirky geometry | Syne |
| IBM Plex Mono | 400, 700 | Monospace contrast against display faces, raw code feel | IBM Plex Mono |
| Unbounded | 400, 700, 900 | Rounded but aggressive display type, oversized headings | Unbounded |
| Heading | Body | Mood |
|---|---|---|
| Bebas Neue 400 (massive, uppercase) | IBM Plex Mono 400 | Industrial clash: compressed display vs. raw monospace |
| Rubik Glitch 400 | Space Grotesk 300 | Digital chaos meets clean geometry; visual friction |
| Syne 800 (skewed via CSS) | IBM Plex Mono 400 | Expressive rebellion paired with clinical precision |
| Unbounded 900 (neon colored) | Space Grotesk 400 | Loud, rounded aggression against angular body text |
@import url('https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Space+Grotesk:wght@300;400;700&family=Rubik+Glitch&family=Syne:wght@400;700;800&family=IBM+Plex+Mono:wght@400;700&family=Unbounded:wght@400;700;900&display=swap');
body {
font-family: 'Space Grotesk', sans-serif;
font-weight: 400;
font-size: 1rem;
line-height: 1.6;
color: var(--anti-bg-dirty);
background: var(--anti-bg-void);
-webkit-font-smoothing: antialiased;
}
h1, h2 {
font-family: 'Bebas Neue', sans-serif;
font-weight: 400;
text-transform: uppercase;
letter-spacing: -0.02em;
line-height: 0.9;
}
h3 {
font-family: 'Syne', sans-serif;
font-weight: 800;
text-transform: none;
}
h1 {
font-size: clamp(4rem, 12vw, 10rem);
color: var(--anti-neon-green);
/* Deliberately break alignment */
margin-left: -0.05em;
}
code, .mono {
font-family: 'IBM Plex Mono', monospace;
font-weight: 400;
}
.glitch-text {
font-family: 'Rubik Glitch', cursive;
font-size: 3rem;
color: var(--anti-hot-magenta);
}
.anti-card {
background: var(--anti-bg-void);
border: 3px solid var(--anti-neon-green);
padding: 32px 28px;
max-width: 480px;
position: relative;
transform: rotate(-1.5deg);
overflow: visible;
}
.anti-card::before {
content: '';
position: absolute;
top: -3px;
left: -3px;
right: -3px;
bottom: -3px;
border: 2px solid var(--anti-hot-magenta);
transform: translate(6px, 6px);
pointer-events: none;
z-index: -1;
}
.anti-card::after {
content: 'ERROR';
position: absolute;
top: -14px;
right: 16px;
font-family: 'IBM Plex Mono', monospace;
font-size: 0.7rem;
letter-spacing: 0.2em;
color: var(--anti-danger-red);
background: var(--anti-bg-void);
padding: 2px 8px;
}
.anti-card h3 {
font-family: 'Bebas Neue', sans-serif;
font-size: 2rem;
color: var(--anti-neon-green);
text-transform: uppercase;
margin-bottom: 12px;
transform: skewX(-3deg);
}
.anti-card p {
font-family: 'Space Grotesk', sans-serif;
font-size: 0.95rem;
color: var(--anti-static);
line-height: 1.7;
}
.anti-button {
display: inline-block;
background: var(--anti-hot-magenta);
color: var(--anti-bg-void);
border: 3px solid var(--anti-neon-green);
padding: 14px 32px;
font-family: 'Bebas Neue', sans-serif;
font-size: 1.2rem;
letter-spacing: 0.1em;
text-transform: uppercase;
text-decoration: none;
cursor: pointer;
transform: rotate(1deg);
position: relative;
transition: all 0.15s ease;
}
.anti-button:hover {
background: var(--anti-neon-green);
color: var(--anti-bg-void);
border-color: var(--anti-hot-magenta);
transform: rotate(-2deg) scale(1.08);
box-shadow: var(--anti-glow-spread) var(--anti-neon-green);
}
.anti-button:active {
transform: rotate(0deg) scale(0.95);
box-shadow: none;
}
/* Deliberately offset pseudo-label */
.anti-button::after {
content: '\2197'; /* arrow */
position: absolute;
top: -10px;
right: -10px;
font-size: 1rem;
color: var(--anti-acid-yellow);
background: var(--anti-bg-void);
padding: 2px 4px;
}
.anti-nav {
display: flex;
flex-wrap: wrap;
gap: 0;
padding: 12px 16px;
background: var(--anti-bg-void);
border-bottom: 3px solid var(--anti-neon-green);
position: relative;
overflow: hidden;
}
.anti-nav::after {
content: '///';
position: absolute;
right: 16px;
top: 50%;
transform: translateY(-50%);
font-family: 'IBM Plex Mono', monospace;
font-size: 0.8rem;
color: var(--anti-concrete);
letter-spacing: 0.3em;
}
.anti-nav a {
font-family: 'Bebas Neue', sans-serif;
font-size: 1rem;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--anti-bg-dirty);
text-decoration: none;
padding: 8px 18px;
border: 1px solid transparent;
transition: all 0.15s ease;
}
.anti-nav a:nth-child(odd) {
transform: translateY(-2px);
}
.anti-nav a:nth-child(even) {
transform: translateY(2px);
color: var(--anti-neon-green);
}
.anti-nav a:hover {
border-color: var(--anti-hot-magenta);
color: var(--anti-hot-magenta);
transform: skewX(-5deg);
background: rgba(255, 0, 144, 0.08);
}
.anti-nav a.active {
color: var(--anti-acid-yellow);
border-bottom: 2px solid var(--anti-acid-yellow);
}
.anti-hero {
min-height: 100vh;
display: flex;
flex-direction: column;
justify-content: center;
padding: 60px 40px;
background: var(--anti-bg-void);
position: relative;
overflow: hidden;
}
.anti-hero h1 {
font-family: 'Bebas Neue', sans-serif;
font-size: clamp(5rem, 15vw, 14rem);
text-transform: uppercase;
color: var(--anti-neon-green);
line-height: 0.85;
margin-left: -0.04em;
position: relative;
z-index: 2;
}
.anti-hero h1 .clash {
color: var(--anti-hot-magenta);
display: block;
transform: translateX(8vw) skewX(-4deg);
}
.anti-hero .subtitle {
font-family: 'IBM Plex Mono', monospace;
font-size: clamp(0.8rem, 1.5vw, 1.1rem);
color: var(--anti-static);
margin-top: 24px;
max-width: 50ch;
transform: rotate(0.5deg);
}
/* Decorative noise lines */
.anti-hero::before {
content: '';
position: absolute;
inset: 0;
background: repeating-linear-gradient(
0deg,
transparent,
transparent 2px,
rgba(57, 255, 20, 0.03) 2px,
rgba(57, 255, 20, 0.03) 4px
);
pointer-events: none;
z-index: 1;
}
/* Oversized background text */
.anti-hero::after {
content: 'BREAK';
position: absolute;
right: -5%;
bottom: 10%;
font-family: 'Unbounded', sans-serif;
font-size: 20vw;
font-weight: 900;
color: rgba(255, 0, 144, 0.06);
text-transform: uppercase;
pointer-events: none;
z-index: 0;
}
.anti-glitch {
position: relative;
display: inline-block;
font-family: 'Rubik Glitch', cursive;
color: var(--anti-bg-dirty);
}
.anti-glitch::before,
.anti-glitch::after {
content: attr(data-text);
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
pointer-events: none;
}
.anti-glitch::before {
color: var(--anti-glitch-cyan);
clip-path: inset(0 0 60% 0);
transform: translate(-3px, -2px);
animation: anti-glitch-top 2.5s infinite linear alternate;
}
.anti-glitch::after {
color: var(--anti-hot-magenta);
clip-path: inset(60% 0 0 0);
transform: translate(3px, 2px);
animation: anti-glitch-bottom 3s infinite linear alternate;
}
@keyframes anti-glitch-top {
0%, 90% { transform: translate(-3px, -2px); }
92% { transform: translate(4px, -1px); }
94% { transform: translate(-2px, 1px); }
96% { transform: translate(3px, -3px); }
100% { transform: translate(-3px, -2px); }
}
@keyframes anti-glitch-bottom {
0%, 88% { transform: translate(3px, 2px); }
90% { transform: translate(-4px, 1px); }
93% { transform: translate(2px, -2px); }
96% { transform: translate(-3px, 3px); }
100% { transform: translate(3px, 2px); }
}
.anti-noise {
position: relative;
}
.anti-noise::after {
content: '';
position: absolute;
inset: 0;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.06'/%3E%3C/svg%3E");
pointer-events: none;
z-index: 100;
mix-blend-mode: overlay;
}
.anti-misaligned {
position: relative;
border: 2px solid var(--anti-neon-green);
padding: 24px;
}
.anti-misaligned::before {
content: '';
position: absolute;
top: 4px;
left: -4px;
right: 4px;
bottom: -4px;
border: 2px solid var(--anti-hot-magenta);
z-index: -1;
}
.anti-misaligned::after {
content: '';
position: absolute;
top: 8px;
left: 8px;
right: -8px;
bottom: -8px;
border: 1px solid var(--anti-acid-yellow);
opacity: 0.4;
z-index: -2;
}
.anti-ticker {
overflow: hidden;
white-space: nowrap;
background: var(--anti-neon-green);
color: var(--anti-bg-void);
font-family: 'Bebas Neue', sans-serif;
font-size: 1rem;
letter-spacing: 0.15em;
text-transform: uppercase;
padding: 6px 0;
border-top: 2px solid var(--anti-hot-magenta);
border-bottom: 2px solid var(--anti-hot-magenta);
}
.anti-ticker span {
display: inline-block;
animation: anti-scroll 12s linear infinite;
padding-left: 100%;
}
@keyframes anti-scroll {
from { transform: translateX(0); }
to { transform: translateX(-100%); }
}
| Aesthetic | Relationship |
|---|---|
| Dadaism | Direct historical ancestor; Dada’s anti-art nihilism, chance operations, and collage chaos laid the philosophical groundwork for Anti Design |
| Neubrutalism | Digital cousin that shares raw, unpolished surfaces and bold typography but maintains more structural discipline |
| DIY Punk | Shares the anti-establishment attitude, hand-made roughness, and deliberate amateurism; punk is Anti Design’s streetwise sibling |
| Brutalism (Web) | Shares rejection of decorative polish, but Brutalism tends toward minimalist rawness while Anti Design embraces maximalist chaos |
| Memphis Design | Fellow Italian rebel; Memphis broke modernist rules with color and pattern excess in the 1980s, paving the way for Anti Design’s digital revival |
| Corporate Grunge | Domesticated rebellion; Corporate Grunge applies controlled roughness within corporate structures, whereas Anti Design burns the structure down |
| Acid Design | Shares neon palettes and psychedelic distortion, but Acid Design leans into trippy beauty while Anti Design leans into deliberate ugliness |
| Maximalism | Shares the density and horror vacui, but Maximalism can be ornate and luxurious where Anti Design is raw and confrontational |
| Glitch Art | Shares the corrupted-digital aesthetic; glitch effects are a core Anti Design technique but Glitch Art is often more contemplative |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Anti Design Layout</title>
<link href="https://fonts.googleapis.com/css2?family=Bebas+Neue&family=Space+Grotesk:wght@300;400;700&family=Rubik+Glitch&family=Syne:wght@400;700;800&family=IBM+Plex+Mono:wght@400;700&family=Unbounded:wght@400;700;900&display=swap" rel="stylesheet">
<style>
*, *::before, *::after {
margin: 0;
padding: 0;
box-sizing: border-box;
}
:root {
/* Backgrounds */
--anti-bg-void: #0d0d0d;
--anti-bg-dirty: #f0ede5;
--anti-bg-navy: #0a0a2e;
/* Neon accents */
--anti-neon-green: #39ff14;
--anti-hot-magenta: #ff0090;
--anti-acid-yellow: #e8ff00;
--anti-electric-blue: #0055ff;
--anti-bruise-purple: #7b00ff;
--anti-danger-red: #ff1a1a;
--anti-rust-orange: #ff5e00;
--anti-slime-green: #a8ff00;
--anti-bubblegum: #ff6ec7;
--anti-glitch-cyan: #00f5ff;
/* Neutrals */
--anti-concrete: #4a4a4a;
--anti-static: #b0b0b0;
}
body {
font-family: 'Space Grotesk', sans-serif;
background: var(--anti-bg-void);
color: var(--anti-bg-dirty);
min-height: 100vh;
overflow-x: hidden;
position: relative;
}
/* ========== NOISE OVERLAY ========== */
body::after {
content: '';
position: fixed;
inset: 0;
background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.05'/%3E%3C/svg%3E");
pointer-events: none;
z-index: 9999;
mix-blend-mode: overlay;
}
/* ========== TICKER ========== */
.ticker {
overflow: hidden;
white-space: nowrap;
background: var(--anti-neon-green);
color: var(--anti-bg-void);
font-family: 'Bebas Neue', sans-serif;
font-size: 0.85rem;
letter-spacing: 0.2em;
text-transform: uppercase;
padding: 5px 0;
border-bottom: 2px solid var(--anti-hot-magenta);
}
.ticker span {
display: inline-block;
animation: scroll-ticker 18s linear infinite;
padding-left: 100%;
}
@keyframes scroll-ticker {
from { transform: translateX(0); }
to { transform: translateX(-100%); }
}
/* ========== NAVIGATION ========== */
.nav {
display: flex;
flex-wrap: wrap;
gap: 0;
padding: 14px 24px;
background: var(--anti-bg-void);
border-bottom: 2px solid var(--anti-neon-green);
position: sticky;
top: 0;
z-index: 100;
}
.nav::before {
content: '[ X ]';
font-family: 'IBM Plex Mono', monospace;
font-size: 0.75rem;
color: var(--anti-danger-red);
align-self: center;
margin-right: 24px;
letter-spacing: 0.1em;
}
.nav a {
font-family: 'Bebas Neue', sans-serif;
font-size: 1rem;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--anti-bg-dirty);
text-decoration: none;
padding: 8px 18px;
border: 1px solid transparent;
transition: all 0.15s ease;
}
.nav a:nth-child(odd) {
transform: translateY(-2px);
}
.nav a:nth-child(even) {
transform: translateY(3px);
color: var(--anti-neon-green);
}
.nav a:hover {
border-color: var(--anti-hot-magenta);
color: var(--anti-hot-magenta);
transform: skewX(-5deg);
background: rgba(255, 0, 144, 0.08);
}
/* ========== HERO SECTION ========== */
.hero {
min-height: 100vh;
display: flex;
flex-direction: column;
justify-content: center;
padding: 80px 40px 60px;
position: relative;
overflow: hidden;
}
.hero::before {
content: '';
position: absolute;
inset: 0;
background: repeating-linear-gradient(
0deg,
transparent,
transparent 2px,
rgba(57, 255, 20, 0.03) 2px,
rgba(57, 255, 20, 0.03) 4px
);
pointer-events: none;
z-index: 1;
}
.hero::after {
content: 'BREAK';
position: absolute;
right: -5%;
bottom: 5%;
font-family: 'Unbounded', sans-serif;
font-size: clamp(8rem, 22vw, 20rem);
font-weight: 900;
color: rgba(255, 0, 144, 0.05);
text-transform: uppercase;
pointer-events: none;
z-index: 0;
}
.hero h1 {
font-family: 'Bebas Neue', sans-serif;
font-size: clamp(5rem, 14vw, 13rem);
text-transform: uppercase;
color: var(--anti-neon-green);
line-height: 0.85;
margin-left: -0.04em;
position: relative;
z-index: 2;
}
.hero h1 .clash {
color: var(--anti-hot-magenta);
display: block;
transform: translateX(8vw) skewX(-4deg);
}
.hero .subtitle {
font-family: 'IBM Plex Mono', monospace;
font-size: clamp(0.8rem, 1.2vw, 1rem);
color: var(--anti-static);
margin-top: 28px;
max-width: 55ch;
line-height: 1.8;
transform: rotate(0.5deg);
position: relative;
z-index: 2;
}
.hero .subtitle span {
color: var(--anti-acid-yellow);
text-decoration: line-through;
}
.hero-cta {
display: inline-block;
margin-top: 36px;
background: var(--anti-hot-magenta);
color: var(--anti-bg-void);
border: 3px solid var(--anti-neon-green);
padding: 14px 36px;
font-family: 'Bebas Neue', sans-serif;
font-size: 1.2rem;
letter-spacing: 0.12em;
text-transform: uppercase;
text-decoration: none;
cursor: pointer;
transform: rotate(1deg);
position: relative;
z-index: 2;
transition: all 0.15s ease;
}
.hero-cta:hover {
background: var(--anti-neon-green);
color: var(--anti-bg-void);
border-color: var(--anti-hot-magenta);
transform: rotate(-2deg) scale(1.08);
box-shadow: 0 0 20px var(--anti-neon-green);
}
.hero-cta::after {
content: '\2197';
position: absolute;
top: -10px;
right: -10px;
font-size: 0.9rem;
color: var(--anti-acid-yellow);
background: var(--anti-bg-void);
padding: 2px 4px;
}
/* ========== GLITCH TEXT ========== */
.glitch {
position: relative;
display: inline-block;
font-family: 'Rubik Glitch', cursive;
}
.glitch::before,
.glitch::after {
content: attr(data-text);
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
pointer-events: none;
}
.glitch::before {
color: var(--anti-glitch-cyan);
clip-path: inset(0 0 60% 0);
transform: translate(-3px, -2px);
animation: glitch-top 2.5s infinite linear alternate;
}
.glitch::after {
color: var(--anti-hot-magenta);
clip-path: inset(60% 0 0 0);
transform: translate(3px, 2px);
animation: glitch-bottom 3s infinite linear alternate;
}
@keyframes glitch-top {
0%, 90% { transform: translate(-3px, -2px); }
92% { transform: translate(4px, -1px); }
94% { transform: translate(-2px, 1px); }
96% { transform: translate(3px, -3px); }
100% { transform: translate(-3px, -2px); }
}
@keyframes glitch-bottom {
0%, 88% { transform: translate(3px, 2px); }
90% { transform: translate(-4px, 1px); }
93% { transform: translate(2px, -2px); }
96% { transform: translate(-3px, 3px); }
100% { transform: translate(3px, 2px); }
}
/* ========== CONTENT SECTIONS ========== */
.section {
padding: 80px 40px;
position: relative;
}
.section:nth-child(odd) {
background: var(--anti-bg-void);
}
.section:nth-child(even) {
background: var(--anti-bg-navy);
}
.section-label {
font-family: 'IBM Plex Mono', monospace;
font-size: 0.7rem;
letter-spacing: 0.3em;
text-transform: uppercase;
color: var(--anti-concrete);
margin-bottom: 12px;
}
.section h2 {
font-family: 'Bebas Neue', sans-serif;
font-size: clamp(2.5rem, 6vw, 5rem);
text-transform: uppercase;
color: var(--anti-neon-green);
line-height: 0.95;
margin-bottom: 32px;
}
.section h2 em {
font-style: normal;
color: var(--anti-hot-magenta);
}
/* ========== CARD GRID ========== */
.card-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 32px;
margin-top: 40px;
}
.card {
background: var(--anti-bg-void);
border: 2px solid var(--anti-neon-green);
padding: 28px 24px;
position: relative;
transform: rotate(-1deg);
transition: transform 0.2s ease;
}
.card:nth-child(2) {
transform: rotate(1.5deg);
border-color: var(--anti-hot-magenta);
}
.card:nth-child(3) {
transform: rotate(-0.5deg);
border-color: var(--anti-acid-yellow);
}
.card:hover {
transform: rotate(0deg) scale(1.03);
box-shadow: 0 0 20px rgba(57, 255, 20, 0.15);
}
.card::before {
content: '';
position: absolute;
top: 4px;
left: -4px;
right: 4px;
bottom: -4px;
border: 1px solid var(--anti-hot-magenta);
z-index: -1;
}
.card-number {
font-family: 'Unbounded', sans-serif;
font-size: 3rem;
font-weight: 900;
color: var(--anti-bruise-purple);
opacity: 0.3;
line-height: 1;
margin-bottom: 8px;
}
.card h3 {
font-family: 'Syne', sans-serif;
font-weight: 800;
font-size: 1.3rem;
color: var(--anti-bg-dirty);
margin-bottom: 12px;
transform: skewX(-2deg);
}
.card p {
font-size: 0.9rem;
color: var(--anti-static);
line-height: 1.7;
}
/* ========== SPLIT SECTION ========== */
.split {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 0;
min-height: 60vh;
}
.split-left {
background: var(--anti-hot-magenta);
padding: 60px 40px;
display: flex;
flex-direction: column;
justify-content: center;
position: relative;
}
.split-left h2 {
color: var(--anti-bg-void);
font-family: 'Bebas Neue', sans-serif;
font-size: clamp(3rem, 5vw, 6rem);
text-transform: uppercase;
line-height: 0.9;
transform: rotate(-2deg);
}
.split-left p {
font-family: 'IBM Plex Mono', monospace;
font-size: 0.85rem;
color: var(--anti-bg-void);
margin-top: 20px;
max-width: 40ch;
line-height: 1.7;
opacity: 0.8;
}
.split-right {
background: var(--anti-bg-void);
padding: 60px 40px;
display: flex;
align-items: center;
justify-content: center;
border-left: 3px solid var(--anti-neon-green);
}
.split-right .glitch-block {
font-family: 'Rubik Glitch', cursive;
font-size: clamp(3rem, 6vw, 5rem);
color: var(--anti-neon-green);
text-align: center;
}
/* ========== TICKER DIVIDER ========== */
.divider-ticker {
overflow: hidden;
white-space: nowrap;
background: var(--anti-acid-yellow);
color: var(--anti-bg-void);
font-family: 'Bebas Neue', sans-serif;
font-size: 0.8rem;
letter-spacing: 0.25em;
text-transform: uppercase;
padding: 4px 0;
transform: rotate(-0.5deg);
margin: -2px 0;
}
.divider-ticker span {
display: inline-block;
animation: scroll-ticker 14s linear infinite;
padding-left: 100%;
}
/* ========== FEATURE BLOCK ========== */
.feature {
padding: 80px 40px;
background: var(--anti-bg-void);
}
.feature-inner {
max-width: 800px;
margin: 0 auto;
border: 2px solid var(--anti-neon-green);
padding: 48px 40px;
position: relative;
}
.feature-inner::before {
content: 'MANIFESTO';
position: absolute;
top: -12px;
left: 24px;
font-family: 'IBM Plex Mono', monospace;
font-size: 0.7rem;
letter-spacing: 0.3em;
color: var(--anti-danger-red);
background: var(--anti-bg-void);
padding: 0 8px;
}
.feature-inner::after {
content: '';
position: absolute;
top: 6px;
left: -6px;
right: 6px;
bottom: -6px;
border: 1px solid var(--anti-hot-magenta);
z-index: -1;
}
.feature h2 {
font-family: 'Syne', sans-serif;
font-weight: 800;
font-size: 2rem;
color: var(--anti-acid-yellow);
margin-bottom: 24px;
}
.feature p {
font-size: 1rem;
line-height: 1.8;
color: var(--anti-static);
margin-bottom: 16px;
}
.feature p strong {
color: var(--anti-neon-green);
}
.feature p em {
color: var(--anti-hot-magenta);
font-style: normal;
text-decoration: line-through;
}
/* ========== FOOTER ========== */
.footer {
padding: 40px;
background: var(--anti-bg-void);
border-top: 3px solid var(--anti-neon-green);
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
gap: 16px;
}
.footer-left {
font-family: 'IBM Plex Mono', monospace;
font-size: 0.75rem;
color: var(--anti-concrete);
letter-spacing: 0.1em;
}
.footer-right {
display: flex;
gap: 16px;
}
.footer-right a {
font-family: 'Bebas Neue', sans-serif;
font-size: 0.9rem;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--anti-neon-green);
text-decoration: none;
transition: color 0.15s ease;
}
.footer-right a:hover {
color: var(--anti-hot-magenta);
}
/* ========== RESPONSIVE ========== */
@media (max-width: 768px) {
.hero {
padding: 60px 20px 40px;
}
.hero h1 .clash {
transform: translateX(4vw) skewX(-2deg);
}
.section {
padding: 60px 20px;
}
.split {
grid-template-columns: 1fr;
}
.split-right {
border-left: none;
border-top: 3px solid var(--anti-neon-green);
}
.nav {
padding: 10px 16px;
}
.nav a {
font-size: 0.85rem;
padding: 6px 12px;
}
.feature-inner {
padding: 32px 20px;
}
.footer {
flex-direction: column;
text-align: center;
}
}
</style>
</head>
<body>
<!-- Marquee Ticker -->
<div class="ticker">
<span>ANTI DESIGN — BREAK EVERYTHING — NO RULES — CHAOS IS THE PLAN — UGLY ON PURPOSE — REJECT POLISH — ANTI DESIGN — BREAK EVERYTHING — NO RULES — CHAOS IS THE PLAN — UGLY ON PURPOSE — REJECT POLISH — </span>
</div>
<!-- Navigation -->
<nav class="nav">
<a href="#manifesto">Manifesto</a>
<a href="#work">Work</a>
<a href="#chaos">Chaos</a>
<a href="#contact">Contact</a>
</nav>
<!-- Hero Section -->
<section class="hero">
<h1>
KILL THE<br>
<span class="clash">GRID.</span>
</h1>
<p class="subtitle">
Good design is <span>invisible</span>. We disagree.
Design should scream, collide, and refuse to behave.
Welcome to the other side of the rulebook.
</p>
<a href="#" class="hero-cta">Enter the Chaos</a>
</section>
<!-- Ticker Divider -->
<div class="divider-ticker">
<span>ERROR ERROR ERROR — THIS IS NOT A BUG — THIS IS A FEATURE — ERROR ERROR ERROR — THIS IS NOT A BUG — THIS IS A FEATURE — </span>
</div>
<!-- Card Section -->
<section class="section" id="work">
<span class="section-label">// 001 — Principles</span>
<h2>RULES WE <em>BROKE</em></h2>
<div class="card-grid">
<div class="card">
<div class="card-number">01</div>
<h3>Destroy the Grid</h3>
<p>Alignment is a prison. Offset everything by irregular amounts. Let columns bleed into each other. Nothing lines up because nothing should.</p>
</div>
<div class="card">
<div class="card-number">02</div>
<h3>Clash Every Color</h3>
<p>Neon green against hot magenta against acid yellow. Color harmony is a corporate construct. Visual friction is the entire palette.</p>
</div>
<div class="card">
<div class="card-number">03</div>
<h3>Fight Typography</h3>
<p>Mix four typefaces in one headline. Stretch, skew, and rotate letterforms. If it is comfortable to read, it is not trying hard enough.</p>
</div>
</div>
</section>
<!-- Split Section -->
<div class="split" id="chaos">
<div class="split-left">
<h2>UGLY<br>ON<br>PURPOSE.</h2>
<p>Anti Design is not laziness dressed as rebellion. It is the deliberate, informed destruction of conventions by people who understand exactly what they are breaking and why.</p>
</div>
<div class="split-right">
<div class="glitch-block glitch" data-text="GLITCH">GLITCH</div>
</div>
</div>
<!-- Ticker Divider -->
<div class="divider-ticker">
<span>REJECT POLISH — EMBRACE CHAOS — FORM FOLLOWS DYSFUNCTION — REJECT POLISH — EMBRACE CHAOS — FORM FOLLOWS DYSFUNCTION — </span>
</div>
<!-- Manifesto Feature Section -->
<section class="feature" id="manifesto">
<div class="feature-inner">
<h2>The Anti-Design Manifesto</h2>
<p>We believe that <strong>memorable experiences are not defined by simplicity</strong> but by friction, surprise, and visual confrontation. We reject the tyranny of the 12-column grid, the sacred whitespace, and the safe corporate color palette.</p>
<p>Every element on this page is <em>perfectly aligned</em> misaligned. Every color clash is a <strong>conscious decision</strong>. Every broken convention is a statement that design can be more than polite communication -- it can be a visceral experience.</p>
<p>Anti Design is not the absence of rules. It is the <strong>presence of all the rules, on fire</strong>.</p>
</div>
</section>
<!-- Footer -->
<footer class="footer" id="contact">
<div class="footer-left">
© 2025 — ANTI DESIGN COLLECTIVE // NO RIGHTS RESERVED
</div>
<div class="footer-right">
<a href="#">Destroy</a>
<a href="#">Rebuild</a>
<a href="#">Repeat</a>
</div>
</footer>
</body>
</html>
::before and ::after to create misaligned borders, noise overlays, decorative labels, and background text without adding extra HTML