Zurück zu den Designs
BrutalisteMaximaliste
Vorschau

Anti Design Design Reference

Overview

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.


Visual Characteristics

Core Design Traits

  • Asymmetrical layouts -- elements are deliberately placed off-center, off-grid, and off-balance to create visual tension and unpredictability
  • Clashing, jarring color combinations -- neon greens crash into deep purples, hot pinks collide with acid yellows; color harmony is actively avoided
  • Overlapping and layered elements -- text, images, and shapes pile on top of each other, creating a dense, multi-dimensional visual field
  • Deliberately ugly typography -- fonts twist, stretch, break apart, or mismatch; oversized text fights with tiny text for attention
  • Visual clutter and crowded compositions -- negative space is filled rather than preserved; the horror vacui principle is embraced
  • Distorted and glitchy effects -- warped images, pixel displacement, chromatic aberration, and scan-line artifacts signal digital rebellion
  • Misaligned and broken grids -- grid structures are visible only to be violated; columns overlap, rows shift, and alignment is deliberately wrong
  • Raw, unfinished surfaces -- rough edges, unpolished textures, visible construction marks, and a DIY handmade quality
  • Provocative and confrontational imagery -- content is designed to stop the viewer, challenge expectations, and demand engagement
  • Animated chaos -- hover effects distort text, buttons trigger wild animations, scroll interactions feel unpredictable and playful
  • Mixed media collisions -- photography, illustration, 3D renders, hand-drawn elements, and raw HTML coexist without visual coherence

Design Principles

  • Break rules with intention -- understand conventional design deeply enough to violate it with purpose; chaos without knowledge is just mess
  • Ugly is a strategy -- deliberate ugliness is a conscious provocation, not laziness; every jarring element should feel like a decision
  • Emotion over function -- prioritize visceral impact, surprise, and memorability over frictionless usability
  • Tension as composition -- use visual conflict (scale clashes, color clashes, alignment clashes) as the primary compositional tool
  • Reject uniformity -- no two elements should feel like they belong to the same system; internal inconsistency is the point
  • Confront the viewer -- the design should demand attention, not politely request it; passivity is failure
  • Embrace the accidental -- allow happy accidents, glitches, and unplanned collisions to remain in the final design
  • Context determines limits -- Anti Design is not universal; apply it where provocation serves the message and audience

Color Palette

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

CSS Custom Properties

: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;
}

Typography

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

Font Pairing Suggestions

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

CSS Example

@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);
}

Layout Principles

  • Destroy the grid -- if a grid exists, violate it visually; offset elements by inconsistent amounts, let content bleed across column boundaries
  • Embrace overlap -- layer text on images, images on other images, UI elements on content; overlap is not a bug, it is the composition
  • Scale extremes -- combine absurdly large elements with tiny ones in the same viewport; conventional size hierarchy does not apply
  • Offset and misalign -- nudge elements by irregular pixel amounts so nothing quite lines up; use negative margins and odd transforms
  • Fill the space -- minimize empty whitespace; visual density creates the characteristic anti-design tension
  • Let content bleed -- elements should be clipped by viewport edges, suggesting the chaos extends infinitely beyond the screen
  • Z-index warfare -- layer elements in unexpected stacking orders; important content can hide behind decorative noise
  • Responsive chaos -- on smaller screens, the chaos compresses rather than reorganizing into a clean mobile layout; density increases
  • Rotation and skew -- apply small random rotations (1-5 degrees) and skew transforms to elements that should be straight
  • Collision is composition -- where conventional design separates sections with whitespace, Anti Design lets them crash into each other

CSS / Design Techniques

Anti-Design Card

.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-Design Button

.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-Design Navigation

.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-Design Hero Section

.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;
}

Glitch Text Effect

.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); }
}

Noise Overlay

.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;
}

Misaligned Border Effect

.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;
}

Chaotic Marquee Ticker

.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%); }
}

Design Do's and Don'ts

Do's

  • Break grid alignment deliberately -- offset elements by irregular amounts so the violation is clearly intentional, not accidental
  • Clash colors with purpose -- pair neons against neons, warm against cool, high saturation against high saturation for maximum friction
  • Mix multiple typefaces in a single composition -- three to four faces fighting for attention creates the characteristic tension
  • Overlap and layer content aggressively -- text on images, images on other images, UI chrome on content
  • Use scale extremes -- place oversized headings next to tiny monospace labels for deliberate hierarchy inversion
  • Embrace glitch effects, noise textures, and scan-line overlays to reinforce the digital-rebellion atmosphere
  • Test on real users despite the chaos -- the design should be provocative, not genuinely unusable
  • Reference the movement's roots -- nod to Italian Radical Design, David Carson, early web, and zine culture

Don'ts

  • Create balanced, symmetrical, harmonious compositions -- visual comfort is the enemy of Anti Design
  • Use a safe, corporate-friendly color palette -- muted tones and careful gradients undermine the entire aesthetic
  • Apply a single typeface consistently across the page -- font uniformity signals exactly the kind of polish being rejected
  • Over-explain with smooth onboarding flows -- Anti Design asks the viewer to figure it out, not be hand-held
  • Sacrifice all readability -- the content should be challenging to navigate but ultimately discoverable; pure illegibility is not the goal
  • Mistake laziness for rebellion -- every broken rule should reflect knowledge of the rule being broken; unintentional mess is not Anti Design
  • Apply Anti Design to contexts that require accessibility compliance -- healthcare, government, and critical-information interfaces are not appropriate
  • Repeat the same disruption pattern -- if every element is broken the same way, the chaos becomes a new kind of boring uniformity

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

Quick-Start HTML Template

<!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 &mdash; BREAK EVERYTHING &mdash; NO RULES &mdash; CHAOS IS THE PLAN &mdash; UGLY ON PURPOSE &mdash; REJECT POLISH &mdash; ANTI DESIGN &mdash; BREAK EVERYTHING &mdash; NO RULES &mdash; CHAOS IS THE PLAN &mdash; UGLY ON PURPOSE &mdash; REJECT POLISH &mdash;&nbsp;</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 &mdash; THIS IS NOT A BUG &mdash; THIS IS A FEATURE &mdash; ERROR ERROR ERROR &mdash; THIS IS NOT A BUG &mdash; THIS IS A FEATURE &mdash;&nbsp;</span>
  </div>

  <!-- Card Section -->
  <section class="section" id="work">
    <span class="section-label">// 001 &mdash; 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 &mdash; EMBRACE CHAOS &mdash; FORM FOLLOWS DYSFUNCTION &mdash; REJECT POLISH &mdash; EMBRACE CHAOS &mdash; FORM FOLLOWS DYSFUNCTION &mdash;&nbsp;</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">
      &copy; 2025 &mdash; 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>

Implementation Tips

  • Start from convention, then break it -- build a standard layout first, then systematically violate its rules; this ensures the chaos reads as intentional rather than incompetent
  • Limit the chaos palette -- even Anti Design benefits from a controlled set of clashing colors (3-5 neons against a dark base) rather than truly random color selection across every element
  • Use CSS transforms strategically -- small rotations (1-3 degrees), skew transforms, and translate offsets create the misaligned feel; overdoing it (10+ degrees on everything) just looks broken
  • Layer pseudo-elements for depth -- use ::before and ::after to create misaligned borders, noise overlays, decorative labels, and background text without adding extra HTML
  • Preserve one axis of readability -- body text should remain legible even when headings, navigation, and decorative elements are chaotic; the viewer needs at least one anchor
  • Test on mobile aggressively -- chaotic desktop layouts compress unpredictably on small screens; use clamp(), min(), and media queries to ensure the chaos remains controlled
  • Use animation sparingly but pointedly -- a single glitch effect or unexpected hover interaction has more impact than animating every element; selective disruption beats uniform motion
  • Document your decisions -- Anti Design looks like it has no system, but the best implementations have a clear internal logic; keep a record of which rules you are breaking and why, for consistency across a multi-page project
Agence WagnerAgence Wagner

© 2026 Agence Wagner. Alle Rechte vorbehalten.

Designs von chrislemke/website_designs, lizenziert unter MIT.