website_designs

DIY Punk Design Reference

DIY Punk is the raw, anti-establishment visual language that emerged from the late-1970s British punk scene and its global offshoots. It is defined by Xerox-degraded imagery, ransom-note lettering, slapdash collage composition, and an aggressive rejection of professional polish. Every design choice signals that the creator made it themselves – with scissors, glue sticks, a photocopier, and sheer defiance. The aesthetic values authenticity over craft, urgency over refinement, and confrontation over comfort. Where corporate design smooths every edge, DIY Punk tears them apart on purpose. Think zine covers, wheat-pasted flyers, hand-stapled pamphlets, and album sleeves that look like they were assembled in a squat at 3 a.m. – because they were.


Visual Characteristics

Core Motifs and Patterns

Design Principles


Color Palette

Primary Scheme

Role Colors
Base / Background Stark white (copy paper), solid black, raw newsprint gray
Primary text Pure black on white, or reversed white on black
Accent (hot) Violent magenta-pink, safety-pin red, electric pink
Accent (warning) Anarchist red, emergency yellow, hazard orange
Accent (cold) Bruise purple, marker blue, teal-green
Neutral tones Newsprint off-white, photocopy gray, cardboard tan

Detailed Palette

Color Hex Usage
Xerox Black #0A0A0A Primary text, dominant fill, maximum contrast
Copy Paper White #F5F0E8 Page background, simulating cheap copy paper
Pure White #FFFFFF Reversed text on black, stark highlights
Newsprint Gray #C8C3B8 Secondary backgrounds, photocopy mid-tones
Toner Gray #4A4A4A Photocopy shadows, degraded black areas
Smudge Gray #8A8680 Xerox artifacts, fingerprint smudges, worn areas
Punk Pink #FF1493 Primary hot accent, flyer highlights, marker strokes
Safety Pin Red #CC0000 Anarchist A, warning elements, aggressive highlights
Hazard Yellow #FFD700 Caution tape references, bold callouts, stencil fills
Emergency Orange #FF4500 Secondary warm accent, urgent callouts
Bruise Purple #6B0099 Marker accents, stamp ink, secondary cold accent
Marker Blue #0044CC Ballpoint pen marks, circled elements, annotation color
Slime Green #39FF14 Neon accent for later punk variants (optional)
Masking Tape #D4C9A8 Tape strips, adhesive artifacts, aged paper elements
Cardboard Brown #A0845C Packaging references, zine cover material
Dried Glue #E8DFC8 Translucent adhesive marks, layering artifacts

Suggested CSS Custom Properties

:root {
  /* Base tones */
  --punk-black: #0a0a0a;
  --punk-white: #f5f0e8;
  --punk-pure-white: #ffffff;
  --punk-newsprint: #c8c3b8;
  --punk-toner: #4a4a4a;
  --punk-smudge: #8a8680;

  /* Hot accents */
  --punk-pink: #ff1493;
  --punk-red: #cc0000;
  --punk-yellow: #ffd700;
  --punk-orange: #ff4500;

  /* Cold accents */
  --punk-purple: #6b0099;
  --punk-blue: #0044cc;
  --punk-green: #39ff14;

  /* Material tones */
  --punk-tape: #d4c9a8;
  --punk-cardboard: #a0845c;
  --punk-glue: #e8dfc8;

  /* Functional mappings */
  --punk-bg-primary: var(--punk-white);
  --punk-bg-inverse: var(--punk-black);
  --punk-text-primary: var(--punk-black);
  --punk-text-inverse: var(--punk-pure-white);
  --punk-text-muted: var(--punk-toner);
  --punk-accent: var(--punk-pink);
  --punk-accent-danger: var(--punk-red);
  --punk-accent-warning: var(--punk-yellow);
  --punk-border: var(--punk-black);
}

Palette Approaches


Typography

Typeface Characteristics

DIY Punk typography is defined by its deliberate rejection of typographic consistency and professionalism:

Named Typefaces from the Era

These typefaces are historically associated with DIY Punk visual culture (commercial/specialty fonts):

Font Style Usage
Permanent Marker Bold hand-drawn marker Headlines, confrontational statements, zine titles
Rock Salt Rough handwritten scrawl Handwritten annotations, personal asides, margin notes
Bungee Bold, blocky display Stencil-style headlines, protest sign lettering
Bungee Shade Bold layered display Oversized hero text, poster titles
Special Elite Distressed typewriter Body text, manifesto content, typewritten passages
Courier Prime Clean typewriter monospace Secondary body text, structured content
VT323 Pixel / CRT screen Digital-punk elements, counter-culture tech references
Rubik Mono One Heavy geometric monospace Bold statements, section headers, weight contrast
Faster One Speed-styled display Aggressive callouts, urgency-driven text
Creepster Horror-punk display Dark punk variant headings, shock elements
Londrina Solid Hand-drawn bold Friendly punk variant, zine headings, casual emphasis
Staatliches Condensed block display Stencil-like headings, poster-style text
Archivo Black Heavy grotesque Strong headlines when paired with lighter handwritten body

Typography CSS Example

/* Import punk-appropriate Google Fonts */
@import url('https://fonts.googleapis.com/css2?family=Permanent+Marker&family=Rock+Salt&family=Bungee&family=Special+Elite&family=Courier+Prime:wght@400;700&family=VT323&family=Staatliches&family=Londrina+Solid&display=swap');

/* Hero / Display -- aggressive marker scrawl */
h1 {
  font-family: 'Permanent Marker', 'Rock Salt', cursive;
  font-size: clamp(2.5rem, 8vw, 6rem);
  letter-spacing: -0.02em;
  line-height: 0.95;
  color: var(--punk-black);
  text-transform: uppercase;
  /* Simulated uneven baseline */
  word-spacing: 0.15em;
  transform: rotate(-2deg);
}

/* Section headings -- stencil/block style */
h2 {
  font-family: 'Bungee', 'Staatliches', Impact, sans-serif;
  font-size: clamp(1.5rem, 4vw, 3rem);
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--punk-black);
  border-bottom: 4px solid var(--punk-black);
  display: inline-block;
  padding-bottom: 0.1em;
  transform: rotate(0.5deg);
}

/* Subheadings -- handwritten scrawl */
h3 {
  font-family: 'Rock Salt', 'Permanent Marker', cursive;
  font-size: clamp(1rem, 2.5vw, 1.6rem);
  color: var(--punk-accent);
  transform: rotate(-1deg);
  margin-left: -0.5rem;
}

/* Body text -- typewriter */
body {
  font-family: 'Special Elite', 'Courier Prime', 'Courier New', monospace;
  font-weight: 400;
  font-size: 1rem;
  line-height: 1.75;
  color: var(--punk-text-primary);
}

/* Ransom note text -- mixed fonts per letter (apply via JS or spans) */
.punk-ransom {
  font-size: 1.4rem;
  line-height: 1.6;
  word-spacing: 0.1em;
}

.punk-ransom span {
  display: inline-block;
  padding: 0.05em 0.15em;
  margin: 0 0.05em;
  background: var(--punk-black);
  color: var(--punk-pure-white);
  font-family: serif;
  transform: rotate(calc(var(--r, 0) * 1deg));
  font-size: calc(0.8em + var(--s, 0) * 0.1em);
}

.punk-ransom span:nth-child(odd) {
  background: transparent;
  color: var(--punk-black);
  font-family: sans-serif;
  border: 2px solid var(--punk-black);
}

/* Annotations -- ballpoint pen style */
.punk-annotation {
  font-family: 'Rock Salt', cursive;
  font-size: 0.75rem;
  color: var(--punk-blue);
  transform: rotate(-3deg);
  display: inline-block;
}

/* Stencil text */
.punk-stencil {
  font-family: 'Staatliches', 'Bungee', sans-serif;
  text-transform: uppercase;
  letter-spacing: 0.15em;
  color: var(--punk-black);
}

Layout Principles

Grid and Structure

Section Organization


CSS/Design Techniques

Xerox / Photocopy Background Texture

/* Simulated photocopy paper background with toner artifacts */
.punk-xerox-bg {
  background-color: var(--punk-white);
  background-image:
    /* Toner speckle */
    radial-gradient(circle at 15% 25%, rgba(10, 10, 10, 0.03) 0%, transparent 3%),
    radial-gradient(circle at 45% 75%, rgba(10, 10, 10, 0.02) 0%, transparent 2%),
    radial-gradient(circle at 80% 40%, rgba(10, 10, 10, 0.04) 0%, transparent 4%),
    radial-gradient(circle at 60% 10%, rgba(10, 10, 10, 0.02) 0%, transparent 2%),
    radial-gradient(circle at 30% 90%, rgba(10, 10, 10, 0.03) 0%, transparent 3%);
  position: relative;
}

/* Heavy photocopy grain overlay */
.punk-xerox-bg::before {
  content: '';
  position: absolute;
  inset: 0;
  opacity: 0.04;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='6' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");
  background-size: 512px 512px;
  pointer-events: none;
  mix-blend-mode: multiply;
}

Ransom Note Letter Effect

/* Individual letter styling for ransom-note text */
.punk-letter {
  display: inline-block;
  padding: 0.05em 0.12em;
  margin: 0.05em;
  line-height: 1.2;
  /* Each letter gets custom properties via inline style or JS */
  transform: rotate(calc(var(--rot, 0) * 1deg))
             translateY(calc(var(--lift, 0) * 1px));
  font-size: calc(1em * var(--scale, 1));
}

/* Alternating letter styles */
.punk-letter--dark {
  background: var(--punk-black);
  color: var(--punk-pure-white);
  font-family: 'Times New Roman', serif;
  font-weight: 700;
}

.punk-letter--light {
  background: transparent;
  color: var(--punk-black);
  font-family: Arial, Helvetica, sans-serif;
  border: 2px solid var(--punk-black);
  font-weight: 400;
}

.punk-letter--accent {
  background: var(--punk-pink);
  color: var(--punk-pure-white);
  font-family: 'Impact', sans-serif;
  font-style: italic;
}

.punk-letter--serif {
  background: var(--punk-newsprint);
  color: var(--punk-black);
  font-family: 'Georgia', serif;
  font-size: calc(1.2em * var(--scale, 1));
}

/* JavaScript helper to randomize ransom-note letters:
document.querySelectorAll('.punk-letter').forEach(el => {
  el.style.setProperty('--rot', (Math.random() * 10 - 5).toFixed(1));
  el.style.setProperty('--lift', (Math.random() * 6 - 3).toFixed(1));
  el.style.setProperty('--scale', (0.85 + Math.random() * 0.35).toFixed(2));
});
*/

Torn Paper Edge Effect

/* Torn top and bottom edges on a section */
.punk-torn {
  position: relative;
  padding: 3rem 2rem;
  background: var(--punk-white);
}

.punk-torn::before {
  content: '';
  position: absolute;
  top: -12px;
  left: 0;
  right: 0;
  height: 14px;
  background: var(--punk-white);
  clip-path: polygon(
    0% 100%, 2% 40%, 4% 80%, 7% 20%, 10% 60%, 13% 10%,
    16% 70%, 19% 30%, 22% 90%, 25% 15%, 28% 55%, 31% 5%,
    34% 65%, 37% 25%, 40% 85%, 43% 35%, 46% 75%, 49% 10%,
    52% 60%, 55% 20%, 58% 80%, 61% 40%, 64% 90%, 67% 30%,
    70% 70%, 73% 15%, 76% 55%, 79% 5%, 82% 60%, 85% 25%,
    88% 80%, 91% 45%, 94% 75%, 97% 20%, 100% 60%,
    100% 100%
  );
}

.punk-torn::after {
  content: '';
  position: absolute;
  bottom: -12px;
  left: 0;
  right: 0;
  height: 14px;
  background: var(--punk-white);
  clip-path: polygon(
    0% 0%, 3% 70%, 6% 30%, 9% 80%, 12% 20%, 15% 65%,
    18% 5%, 21% 50%, 24% 85%, 27% 35%, 30% 75%, 33% 10%,
    36% 60%, 39% 25%, 42% 70%, 45% 40%, 48% 90%, 51% 15%,
    54% 55%, 57% 5%, 60% 45%, 63% 80%, 66% 30%, 69% 65%,
    72% 10%, 75% 50%, 78% 85%, 81% 35%, 84% 70%, 87% 20%,
    90% 60%, 93% 40%, 96% 80%, 100% 25%,
    100% 0%
  );
}

Collage Layer / Pasted Flyer Effect

/* A "pasted flyer" element that looks physically attached */
.punk-flyer {
  background: var(--punk-pure-white);
  border: none;
  padding: 1.5rem;
  position: relative;
  transform: rotate(calc(var(--tilt, -2) * 1deg));
  box-shadow:
    2px 2px 0 rgba(0, 0, 0, 0.15),
    0 0 0 1px rgba(0, 0, 0, 0.05);
  /* Simulate paper wrinkle with subtle internal shadows */
  background-image:
    linear-gradient(135deg, transparent 40%, rgba(0,0,0,0.02) 45%, transparent 50%),
    linear-gradient(225deg, transparent 40%, rgba(0,0,0,0.015) 45%, transparent 50%);
}

/* Tape strip holding the flyer */
.punk-flyer::before {
  content: '';
  position: absolute;
  top: -8px;
  left: 50%;
  transform: translateX(-50%) rotate(var(--tape-tilt, 3deg));
  width: 70px;
  height: 22px;
  background: rgba(212, 201, 168, 0.6);
  border: 1px solid rgba(212, 201, 168, 0.3);
  /* Tape has slightly rough edges */
  clip-path: polygon(2% 0%, 98% 2%, 100% 98%, 0% 100%);
}

/* Wheat-paste drip marks */
.punk-flyer::after {
  content: '';
  position: absolute;
  bottom: -6px;
  left: 15%;
  width: 30%;
  height: 8px;
  background: rgba(232, 223, 200, 0.4);
  border-radius: 0 0 50% 50%;
  filter: blur(1px);
}

Safety Pin Divider

/* Punk safety-pin horizontal divider */
.punk-pin-divider {
  border: none;
  height: 30px;
  position: relative;
  margin: 2rem 0;
}

/* Dashed line through the middle */
.punk-pin-divider::before {
  content: '';
  position: absolute;
  top: 50%;
  left: 0;
  right: 0;
  height: 2px;
  background: repeating-linear-gradient(
    90deg,
    var(--punk-black) 0px,
    var(--punk-black) 8px,
    transparent 8px,
    transparent 14px
  );
  opacity: 0.4;
}

/* Safety pin symbol in the center */
.punk-pin-divider::after {
  content: '\1F9F7'; /* safety pin emoji fallback, replace with SVG for production */
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%) rotate(-30deg);
  font-size: 1.5rem;
  background: var(--punk-bg-primary);
  padding: 0 0.5rem;
}

X-Mark / Cross-Out Effect

/* Crossed-out text with aggressive scribble */
.punk-crossed-out {
  position: relative;
  display: inline;
  color: var(--punk-toner);
}

.punk-crossed-out::before {
  content: '';
  position: absolute;
  top: 50%;
  left: -4px;
  right: -4px;
  height: 3px;
  background: var(--punk-red);
  transform: rotate(-2deg);
}

.punk-crossed-out::after {
  content: '';
  position: absolute;
  top: 45%;
  left: -2px;
  right: -2px;
  height: 3px;
  background: var(--punk-red);
  transform: rotate(1.5deg);
  opacity: 0.7;
}

/* Big X mark overlay */
.punk-x-mark {
  position: relative;
}

.punk-x-mark::before,
.punk-x-mark::after {
  content: '';
  position: absolute;
  inset: 10%;
  border-top: 4px solid var(--punk-red);
  transform-origin: center;
}

.punk-x-mark::before {
  transform: rotate(45deg);
}

.punk-x-mark::after {
  transform: rotate(-45deg);
}

Stencil / Spray Paint Text

/* Spray-painted stencil text with overspray halo */
.punk-spray {
  font-family: 'Bungee', 'Staatliches', Impact, sans-serif;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--punk-black);
  text-shadow:
    0 0 6px rgba(10, 10, 10, 0.3),
    0 0 15px rgba(10, 10, 10, 0.1),
    2px 2px 0 rgba(10, 10, 10, 0.05);
  /* SVG displacement for rough edges */
  filter: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='spray'%3E%3CfeTurbulence baseFrequency='0.05' numOctaves='3' type='fractalNoise' seed='2'/%3E%3CfeDisplacementMap in='SourceGraphic' scale='2'/%3E%3C/filter%3E%3C/svg%3E#spray");
}

/* Dripping paint effect on text */
.punk-drip {
  position: relative;
}

.punk-drip::after {
  content: '';
  position: absolute;
  bottom: -12px;
  left: 20%;
  width: 4px;
  height: 14px;
  background: var(--punk-black);
  border-radius: 0 0 50% 50%;
  opacity: 0.7;
  box-shadow:
    30px 4px 0 2px var(--punk-black),
    80px -2px 0 1px var(--punk-black);
}

Photocopy Image Treatment

/* High-contrast Xerox-degraded image effect */
.punk-xerox-img {
  filter: contrast(2.2) grayscale(1) brightness(1.2);
  mix-blend-mode: multiply;
}

/* Coarse halftone dot overlay for images */
.punk-halftone {
  position: relative;
  overflow: hidden;
}

.punk-halftone img {
  filter: contrast(1.8) grayscale(1);
}

.punk-halftone::after {
  content: '';
  position: absolute;
  inset: 0;
  background-image: radial-gradient(circle, #000 1.5px, transparent 1.5px);
  background-size: 5px 5px;
  opacity: 0.1;
  mix-blend-mode: multiply;
  pointer-events: none;
}

/* Photocopied-multiple-times degradation */
.punk-degraded {
  filter: contrast(3) grayscale(1) brightness(1.4);
  opacity: 0.85;
  image-rendering: pixelated;
}

Punk Button / Call to Action

.punk-button {
  display: inline-block;
  padding: 0.6rem 1.8rem;
  font-family: 'Permanent Marker', 'Special Elite', cursive;
  font-size: 1.1rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--punk-pure-white);
  background: var(--punk-black);
  border: 3px solid var(--punk-black);
  cursor: pointer;
  position: relative;
  transform: rotate(-1deg);
  transition: transform 0.1s ease;
  text-decoration: none;
}

.punk-button:hover {
  background: var(--punk-accent);
  border-color: var(--punk-accent);
  transform: rotate(1deg) scale(1.05);
}

.punk-button:active {
  transform: rotate(-0.5deg) scale(0.98);
}

/* "Sticker" variant -- looks like a peeling sticker */
.punk-button--sticker {
  background: var(--punk-yellow);
  color: var(--punk-black);
  border: 2px solid var(--punk-black);
  border-radius: 0;
  transform: rotate(2deg);
  box-shadow: 2px 2px 0 rgba(0, 0, 0, 0.3);
}

.punk-button--sticker:hover {
  transform: rotate(-1deg) scale(1.08);
  box-shadow: 3px 3px 0 rgba(0, 0, 0, 0.4);
}

Zine Page Border / Frame

/* Simulated zine page with staple marks and fold line */
.punk-zine-page {
  background: var(--punk-white);
  border: 2px solid var(--punk-black);
  padding: 2rem;
  position: relative;
  max-width: 700px;
  margin: 2rem auto;
  transform: rotate(calc(var(--page-tilt, 0.5) * 1deg));
}

/* Center fold line */
.punk-zine-page::before {
  content: '';
  position: absolute;
  top: 0;
  bottom: 0;
  left: 50%;
  width: 1px;
  background: repeating-linear-gradient(
    180deg,
    var(--punk-newsprint) 0px,
    var(--punk-newsprint) 3px,
    transparent 3px,
    transparent 8px
  );
  opacity: 0.4;
}

/* Staple marks in top-left corner */
.punk-zine-page::after {
  content: '';
  position: absolute;
  top: 12px;
  left: 12px;
  width: 8px;
  height: 3px;
  background: var(--punk-smudge);
  border-radius: 1px;
  box-shadow:
    1px 20px 0 0 var(--punk-smudge); /* second staple */
}

Anarchist “A” Symbol

/* The classic circled-A anarchist symbol as a decorative element */
.punk-anarchy::before {
  content: '\24B6'; /* circled A unicode, or use custom SVG */
  font-size: 4rem;
  color: var(--punk-red);
  opacity: 0.15;
  position: absolute;
  transform: rotate(-15deg);
  font-weight: 900;
  pointer-events: none;
}

Chaotic Collage Layout

/* Container for overlapping, rotated collage elements */
.punk-collage {
  position: relative;
  min-height: 600px;
  overflow: hidden;
}

.punk-collage-item {
  position: absolute;
  background: var(--punk-pure-white);
  padding: 1rem;
  border: 2px solid var(--punk-black);
  box-shadow: 3px 3px 0 rgba(0, 0, 0, 0.2);
  /* Each item gets unique positioning via inline styles */
  transform: rotate(calc(var(--r, 0) * 1deg));
  z-index: var(--z, 1);
  max-width: 300px;
}

/* Overlapping items create depth through stacking */
.punk-collage-item:nth-child(even) {
  background: var(--punk-newsprint);
}

.punk-collage-item:nth-child(3n) {
  border-color: var(--punk-accent);
}

/* Tape strip on collage items */
.punk-collage-item::before {
  content: '';
  position: absolute;
  top: -6px;
  right: 20%;
  width: 50px;
  height: 18px;
  background: rgba(212, 201, 168, 0.5);
  transform: rotate(calc(var(--tape-r, 5) * 1deg));
}

Materials and Textures (Visual Metaphors for Web)

Physical DIY Punk materials and their web equivalents:

Physical Material Web Equivalent
Xeroxed / photocopied paper filter: contrast(2.2) grayscale(1) brightness(1.2) with SVG noise overlay
Cut newspaper clippings Inline <span> elements with varied fonts, sizes, backgrounds, and slight rotation transforms
Masking tape / Scotch tape Semi-transparent cream rectangles with clip-path for irregular edges and subtle rotate
Wheat paste on brick Textured dark background with overlapping, slightly wrinkled white paper elements
Spray paint on wall text-shadow blur halos with SVG feDisplacementMap for rough stencil edges
Safety pins SVG icons or unicode symbols used as decorative list markers or divider elements
Stapled zine pages Border + positioned small gray rectangles simulating staple marks
Ballpoint pen annotations font-family: 'Rock Salt' in blue color with slight rotation, positioned as overlays
Marker highlighter background: linear-gradient(transparent 50%, var(--punk-yellow) 50%) on inline text
Ripped / torn paper clip-path: polygon(...) with irregular, jagged point distributions
Sticker residue Semi-transparent rounded rectangles with slight blur
Crumpled paper Subtle CSS noise texture with multiple soft box-shadow creases

Cultural References and Influences

The following define the DIY Punk visual language and serve as design references:


Aesthetic Relationship to DIY Punk
Post-Punk Evolution of punk’s visual language into more artful, experimental territory; retains the DIY ethos but adds cold-wave sophistication
Hardcore Punk Intensifies DIY Punk’s aggression; bolder, heavier typography, more confrontational imagery, faster visual rhythm
Brutalism (web) Modern web design descendant; shares the raw, unpolished, anti-design philosophy but is typically more minimal and digital
Dada Historical ancestor; the original anti-art movement’s collage techniques, typographic chaos, and subversive attitude directly influenced punk
Cubism Shared interest in fragmentation, multiple perspectives, and breaking conventional composition (a more distant, formal influence)
Industrial Shares dark, aggressive textures and anti-mainstream stance; Industrial adds mechanical, metallic, and electronic elements
Minimal Wave Stripped-down, lo-fi aesthetic cousin; shares the DIY production ethos but is colder, more minimal, and more introspective
Riot Grrrl Feminist punk sub-movement; intensely personal zine culture with handwritten text, collage, and photocopied imagery
Anti-Design Broader movement that encompasses DIY Punk; deliberate rejection of design conventions and professional polish
Grunge 1990s music/fashion descendant; takes punk’s distressed textures and makes them more commercially palatable
Zine Culture The production method IS the aesthetic; photocopied, hand-assembled, small-run publications are punk’s native medium

Quick-Start: Minimal DIY Punk Page Template

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>DIY Punk Page</title>
  <link href="https://fonts.googleapis.com/css2?family=Permanent+Marker&family=Rock+Salt&family=Bungee&family=Special+Elite&family=Courier+Prime:wght@400;700&family=Staatliches&display=swap" rel="stylesheet">
  <style>
    :root {
      --punk-black: #0a0a0a;
      --punk-white: #f5f0e8;
      --punk-pure-white: #ffffff;
      --punk-newsprint: #c8c3b8;
      --punk-toner: #4a4a4a;
      --punk-smudge: #8a8680;
      --punk-pink: #ff1493;
      --punk-red: #cc0000;
      --punk-yellow: #ffd700;
      --punk-blue: #0044cc;
      --punk-tape: #d4c9a8;
    }

    * { margin: 0; padding: 0; box-sizing: border-box; }

    body {
      background: var(--punk-white);
      color: var(--punk-black);
      font-family: 'Special Elite', 'Courier New', monospace;
      font-size: 1rem;
      line-height: 1.75;
      position: relative;
      overflow-x: hidden;
    }

    /* Photocopy grain overlay */
    body::before {
      content: '';
      position: fixed;
      inset: 0;
      opacity: 0.035;
      background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='6' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
      background-size: 512px 512px;
      pointer-events: none;
      mix-blend-mode: multiply;
      z-index: 9999;
    }

    .hero {
      padding: 4rem 2rem;
      text-align: left;
      border-bottom: 4px solid var(--punk-black);
      position: relative;
      overflow: hidden;
    }

    .hero h1 {
      font-family: 'Permanent Marker', cursive;
      font-size: clamp(3rem, 10vw, 7rem);
      line-height: 0.9;
      text-transform: uppercase;
      transform: rotate(-2deg);
      margin-bottom: 1rem;
    }

    .hero .subtitle {
      font-family: 'Rock Salt', cursive;
      font-size: 0.9rem;
      color: var(--punk-red);
      transform: rotate(1deg);
      display: inline-block;
    }

    /* Ransom-note word */
    .ransom span {
      display: inline-block;
      padding: 0.05em 0.15em;
      margin: 0.05em;
    }
    .ransom .dark {
      background: var(--punk-black);
      color: var(--punk-pure-white);
      font-family: 'Times New Roman', serif;
      transform: rotate(-3deg);
    }
    .ransom .light {
      background: transparent;
      border: 2px solid var(--punk-black);
      font-family: Arial, sans-serif;
      transform: rotate(2deg);
      font-size: 1.1em;
    }
    .ransom .accent {
      background: var(--punk-pink);
      color: var(--punk-pure-white);
      font-family: Impact, sans-serif;
      transform: rotate(-1deg);
    }

    section {
      padding: 3rem 2rem;
      max-width: 800px;
      margin: 0 auto;
    }

    h2 {
      font-family: 'Bungee', Impact, sans-serif;
      text-transform: uppercase;
      letter-spacing: 0.05em;
      font-size: clamp(1.5rem, 4vw, 2.5rem);
      border-bottom: 3px solid var(--punk-black);
      display: inline-block;
      margin-bottom: 1.5rem;
      transform: rotate(0.5deg);
    }

    h3 {
      font-family: 'Rock Salt', cursive;
      color: var(--punk-red);
      font-size: 1.1rem;
      transform: rotate(-1deg);
      margin: 1.5rem 0 0.75rem -0.5rem;
    }

    /* Torn paper divider */
    .torn-divider {
      border: none;
      height: 14px;
      background: var(--punk-black);
      clip-path: polygon(
        0% 100%, 2% 30%, 5% 70%, 8% 10%, 11% 60%, 14% 25%,
        17% 80%, 20% 15%, 23% 55%, 26% 5%, 29% 70%, 32% 35%,
        35% 90%, 38% 20%, 41% 65%, 44% 10%, 47% 50%, 50% 85%,
        53% 30%, 56% 70%, 59% 15%, 62% 55%, 65% 5%, 68% 45%,
        71% 80%, 74% 25%, 77% 65%, 80% 10%, 83% 50%, 86% 75%,
        89% 20%, 92% 60%, 95% 35%, 98% 80%, 100% 40%,
        100% 100%
      );
      margin: 0;
    }

    /* Flyer card */
    .punk-card {
      background: var(--punk-pure-white);
      border: 2px solid var(--punk-black);
      padding: 1.5rem;
      margin: 1.5rem 0;
      transform: rotate(calc(var(--tilt, -1) * 1deg));
      position: relative;
      box-shadow: 3px 3px 0 rgba(0, 0, 0, 0.2);
    }

    /* Tape on card */
    .punk-card::before {
      content: '';
      position: absolute;
      top: -7px;
      left: 50%;
      transform: translateX(-50%) rotate(3deg);
      width: 60px;
      height: 20px;
      background: rgba(212, 201, 168, 0.55);
      border: 1px solid rgba(212, 201, 168, 0.3);
    }

    /* Highlight marker effect */
    .highlight {
      background: linear-gradient(transparent 55%, var(--punk-yellow) 55%);
      padding: 0 0.15em;
    }

    /* Annotation */
    .annotation {
      font-family: 'Rock Salt', cursive;
      font-size: 0.7rem;
      color: var(--punk-blue);
      transform: rotate(-4deg);
      display: inline-block;
      margin-left: 0.5rem;
    }

    a {
      color: var(--punk-red);
      text-decoration: none;
      border-bottom: 2px solid var(--punk-red);
      font-weight: 700;
      transition: background 0.1s;
    }

    a:hover {
      background: var(--punk-red);
      color: var(--punk-pure-white);
    }

    .punk-button {
      display: inline-block;
      padding: 0.6rem 1.8rem;
      font-family: 'Permanent Marker', cursive;
      font-size: 1.1rem;
      text-transform: uppercase;
      color: var(--punk-pure-white);
      background: var(--punk-black);
      border: 3px solid var(--punk-black);
      cursor: pointer;
      transform: rotate(-1deg);
      text-decoration: none;
      transition: transform 0.1s;
    }

    .punk-button:hover {
      background: var(--punk-pink);
      border-color: var(--punk-pink);
      color: var(--punk-pure-white);
      transform: rotate(1deg) scale(1.05);
    }
  </style>
</head>
<body>
  <div class="hero">
    <h1>Title Here</h1>
    <span class="subtitle">a handmade declaration</span>
  </div>
  <hr class="torn-divider">
  <section>
    <h2>Section One</h2>
    <div class="punk-card" style="--tilt: -1.5">
      <p>Content styled with DIY Punk aesthetic. <span class="highlight">Highlighted text</span> stands out like marker on a flyer. <span class="annotation">^ important!</span></p>
    </div>
    <div class="punk-card" style="--tilt: 1">
      <p class="ransom">
        <span class="dark">THIS</span>
        <span class="light">is</span>
        <span class="accent">RANSOM</span>
        <span class="dark">note</span>
        <span class="light">TEXT</span>
      </p>
    </div>
    <br>
    <a href="#" class="punk-button">Do Something</a>
  </section>
</body>
</html>