Teenpunk is the commercial youth aesthetic that dominated late-1990s to early-2010s mall culture, fusing punk-inspired motifs with accessible, mass-market fashion. It packages teenage rebellion and non-conformity into a playful, consumer-friendly format – the visual language of Hot Topic clearance racks, Avril Lavigne music videos, Monster High dolls, and Myspace profile pages. The palette is built on a stark black-and-hot-pink foundation with checkerboard patterns, skull-and-crossbones adorned with bows, paint splatters, and fishnet textures. The mood is edgy-but-accessible: punk princess angst filtered through pop hooks and mall retail. Everything looks like it was designed on a composition notebook cover in study hall – stars, hearts, lightning bolts, and band logos scrawled over every surface. Where authentic punk rejects commercialism, Teenpunk is the commercialized rebellion, and it owns that contradiction with neon-streaked confidence.
| Role | Colors |
|---|---|
| Base / Background | Jet black, near-black charcoal, dark slate |
| Primary accent | Hot pink / magenta (the signature color) |
| Secondary accent | Pure white (for contrast and checks) |
| Tertiary accent | Punk red, neon green (hair-streak references) |
| Pattern fill | Black-and-white checkerboard |
| Sparkle / highlight | Silver glitter, rhinestone white |
| Color | Hex | Usage |
|---|---|---|
| Jet Black | #0D0D0D |
Primary background, text, dominant fill |
| Charcoal | #1A1A1A |
Secondary backgrounds, card surfaces, layered panels |
| Dark Slate | #2A2A2A |
Tertiary background, subtle contrast against black |
| Hot Pink | #FF1493 |
Primary accent – headlines, highlights, icons, borders |
| Neon Pink | #FF69B4 |
Lighter pink variant for gradients and hover states |
| Blush Pink | #FF85B3 |
Soft pink for secondary text accents and glows |
| Pure White | #FFFFFF |
Checkerboard squares, stark text on black, highlight sparkles |
| Off-White | #F0E6EF |
Body text on dark backgrounds, slightly warm/pink cast |
| Punk Red | #CC0000 |
Aggressive accent, broken heart motifs, danger elements |
| Neon Green | #39FF14 |
Hair-streak accent, occasional punk energy pop |
| Electric Purple | #9B30FF |
Alternative accent for variety, scene-kid reference |
| Silver Glitter | #C0C0C0 |
Metallic text, sparkle effects, stud details |
| Notebook Blue | #6699CC |
Ruled-line accent from composition notebook motif |
| Plaid Red | #CC3333 |
Tartan pattern accent, flannel/plaid references |
:root {
/* Backgrounds */
--tp-black: #0d0d0d;
--tp-charcoal: #1a1a1a;
--tp-slate: #2a2a2a;
/* Pink spectrum */
--tp-hot-pink: #ff1493;
--tp-neon-pink: #ff69b4;
--tp-blush: #ff85b3;
/* Neutrals */
--tp-white: #ffffff;
--tp-off-white: #f0e6ef;
--tp-silver: #c0c0c0;
/* Accent colors */
--tp-red: #cc0000;
--tp-neon-green: #39ff14;
--tp-purple: #9b30ff;
--tp-notebook-blue: #6699cc;
--tp-plaid-red: #cc3333;
/* Functional mappings */
--tp-bg-primary: var(--tp-black);
--tp-bg-surface: var(--tp-charcoal);
--tp-bg-elevated: var(--tp-slate);
--tp-text-primary: var(--tp-off-white);
--tp-text-heading: var(--tp-hot-pink);
--tp-text-muted: var(--tp-silver);
--tp-accent: var(--tp-hot-pink);
--tp-accent-secondary: var(--tp-neon-pink);
--tp-border: var(--tp-hot-pink);
--tp-glow: rgba(255, 20, 147, 0.4);
}
Teenpunk typography is bold, angular, and slightly distressed – it looks like band merchandise lettering and notebook scrawl:
| Font | Style | Usage |
|---|---|---|
| Permanent Marker | Bold hand-drawn marker | Hero headlines, bold statements, notebook scrawl |
| Bangers | Comic/pop bold | Section headings, callouts, energetic display text |
| Rock Salt | Rough handwritten | Annotations, personal asides, doodle-style labels |
| Bungee | Bold block display | Stencil-style headings, band-logo-adjacent display |
| Londrina Solid | Hand-drawn bold | Friendly punk headings, casual emphasis |
| Cabin Sketch | Sketchy hand-drawn | Notebook doodle headings, illustrated feel |
| Staatliches | Condensed block display | Stencil headings, poster-style text |
| Nunito | Rounded sans-serif | Body text – readable, friendly, slightly rounded |
| Quicksand | Rounded geometric sans | Alternative body text, softer youth-friendly reading |
| Patrick Hand | Clean handwritten | Body text alternative with hand-lettered character |
/* Import Teenpunk-appropriate Google Fonts */
@import url('https://fonts.googleapis.com/css2?family=Permanent+Marker&family=Bangers&family=Rock+Salt&family=Bungee&family=Londrina+Solid&family=Cabin+Sketch:wght@700&family=Nunito:wght@400;700&family=Patrick+Hand&display=swap');
/* Hero / Display -- aggressive marker scrawl */
h1 {
font-family: 'Permanent Marker', 'Bangers', cursive;
font-size: clamp(2.5rem, 8vw, 6rem);
letter-spacing: 0.02em;
line-height: 1.0;
color: var(--tp-hot-pink);
text-transform: uppercase;
text-shadow:
2px 2px 0 rgba(0, 0, 0, 0.8),
0 0 20px rgba(255, 20, 147, 0.4),
0 0 40px rgba(255, 20, 147, 0.2);
}
/* Section headings -- bold block style */
h2 {
font-family: 'Bangers', 'Bungee', Impact, sans-serif;
font-size: clamp(1.5rem, 4vw, 3rem);
letter-spacing: 0.06em;
text-transform: uppercase;
color: var(--tp-white);
text-shadow:
2px 2px 0 var(--tp-hot-pink),
4px 4px 0 rgba(0, 0, 0, 0.5);
}
/* Subheadings -- handwritten notebook scrawl */
h3 {
font-family: 'Rock Salt', 'Permanent Marker', cursive;
font-size: clamp(1rem, 2.5vw, 1.5rem);
color: var(--tp-neon-pink);
transform: rotate(-1deg);
margin-left: -0.3rem;
}
/* Body text -- friendly rounded sans */
body {
font-family: 'Nunito', 'Quicksand', sans-serif;
font-weight: 400;
font-size: 1rem;
line-height: 1.7;
color: var(--tp-text-primary);
}
/* Doodle / annotation text */
.tp-doodle {
font-family: 'Patrick Hand', 'Rock Salt', cursive;
font-size: 0.85rem;
color: var(--tp-neon-pink);
transform: rotate(-2deg);
display: inline-block;
}
/* Sticker label text */
.tp-label {
font-family: 'Bangers', cursive;
font-size: 0.9rem;
text-transform: uppercase;
letter-spacing: 0.1em;
color: var(--tp-black);
}
/* Classic Teenpunk checkerboard background */
.tp-checkerboard {
background-image:
linear-gradient(45deg, var(--tp-black) 25%, transparent 25%),
linear-gradient(-45deg, var(--tp-black) 25%, transparent 25%),
linear-gradient(45deg, transparent 75%, var(--tp-black) 75%),
linear-gradient(-45deg, transparent 75%, var(--tp-black) 75%);
background-size: 20px 20px;
background-position: 0 0, 0 10px, 10px -10px, -10px 0;
background-color: var(--tp-white);
}
/* Smaller check for borders and accent strips */
.tp-checkerboard-sm {
background-image:
linear-gradient(45deg, var(--tp-black) 25%, transparent 25%),
linear-gradient(-45deg, var(--tp-black) 25%, transparent 25%),
linear-gradient(45deg, transparent 75%, var(--tp-black) 75%),
linear-gradient(-45deg, transparent 75%, var(--tp-black) 75%);
background-size: 12px 12px;
background-position: 0 0, 0 6px, 6px -6px, -6px 0;
background-color: var(--tp-white);
}
/* Checkerboard strip divider */
.tp-check-divider {
height: 16px;
border: none;
margin: 2rem 0;
}
/* Skull-and-crossbones with a feminine twist (using pseudo-elements) */
.tp-skull-icon {
position: relative;
display: inline-block;
font-size: 2rem;
color: var(--tp-white);
text-shadow: 0 0 10px rgba(255, 20, 147, 0.5);
}
.tp-skull-icon::before {
content: '\2620'; /* skull and crossbones unicode */
display: block;
}
/* Bow on top of the skull (CSS triangle ribbon) */
.tp-skull-icon::after {
content: '\2764'; /* heart as stand-in for bow */
position: absolute;
top: -8px;
right: -6px;
font-size: 0.6em;
color: var(--tp-hot-pink);
text-shadow: none;
}
/* Paint splatter background decoration */
.tp-splatter {
position: relative;
}
.tp-splatter::before {
content: '';
position: absolute;
top: -20px;
right: -15px;
width: 80px;
height: 80px;
border-radius: 60% 40% 55% 45% / 50% 60% 40% 50%;
background: var(--tp-hot-pink);
opacity: 0.15;
transform: rotate(-15deg);
pointer-events: none;
z-index: 0;
}
.tp-splatter::after {
content: '';
position: absolute;
bottom: -10px;
left: 10%;
width: 40px;
height: 40px;
border-radius: 50% 40% 60% 45% / 55% 45% 50% 50%;
background: var(--tp-neon-pink);
opacity: 0.12;
transform: rotate(20deg);
pointer-events: none;
z-index: 0;
}
/* Fishnet stocking pattern overlay */
.tp-fishnet {
position: relative;
}
.tp-fishnet::after {
content: '';
position: absolute;
inset: 0;
background-image:
linear-gradient(45deg, transparent 46%, rgba(255, 20, 147, 0.08) 46%, rgba(255, 20, 147, 0.08) 54%, transparent 54%),
linear-gradient(-45deg, transparent 46%, rgba(255, 20, 147, 0.08) 46%, rgba(255, 20, 147, 0.08) 54%, transparent 54%);
background-size: 16px 16px;
pointer-events: none;
}
/* Torn-out notebook page panel */
.tp-notebook {
background: var(--tp-white);
color: var(--tp-black);
padding: 2rem 2rem 2rem 3.5rem;
position: relative;
transform: rotate(calc(var(--tilt, -1) * 1deg));
box-shadow:
3px 3px 10px rgba(0, 0, 0, 0.5),
0 0 0 1px rgba(0, 0, 0, 0.05);
}
/* Ruled lines */
.tp-notebook::before {
content: '';
position: absolute;
inset: 1.5rem 1rem 1rem 1rem;
background-image:
repeating-linear-gradient(
transparent,
transparent 27px,
#B8D4E8 27px,
#B8D4E8 28px
);
pointer-events: none;
}
/* Red margin line */
.tp-notebook::after {
content: '';
position: absolute;
top: 1rem;
bottom: 1rem;
left: 3rem;
width: 2px;
background: #CC4444;
opacity: 0.5;
}
/* Puffy sticker / badge element */
.tp-sticker {
display: inline-block;
padding: 0.5rem 1.3rem;
font-family: 'Bangers', cursive;
font-size: 1rem;
text-transform: uppercase;
letter-spacing: 0.06em;
color: var(--tp-white);
background: var(--tp-hot-pink);
border: 2px solid var(--tp-white);
border-radius: 4px;
transform: rotate(var(--sticker-tilt, 2deg));
box-shadow:
2px 2px 0 rgba(0, 0, 0, 0.4),
0 0 12px rgba(255, 20, 147, 0.3);
position: relative;
}
/* Alternate sticker style -- black with pink border */
.tp-sticker--dark {
background: var(--tp-black);
color: var(--tp-hot-pink);
border-color: var(--tp-hot-pink);
}
/* Neon-sign-style pink glow on panels */
.tp-glow-panel {
border: 2px solid var(--tp-hot-pink);
background: var(--tp-charcoal);
padding: 2rem;
box-shadow:
0 0 5px var(--tp-hot-pink),
0 0 15px rgba(255, 20, 147, 0.3),
inset 0 0 20px rgba(255, 20, 147, 0.05);
border-radius: 2px;
}
/* Row of studs / rivets divider */
.tp-studs {
border: none;
height: 12px;
position: relative;
margin: 2rem 0;
}
.tp-studs::before {
content: '';
position: absolute;
top: 4px;
left: 5%;
right: 5%;
height: 4px;
background: repeating-linear-gradient(
90deg,
var(--tp-silver) 0px,
var(--tp-silver) 4px,
transparent 4px,
transparent 12px
);
border-radius: 2px;
}
/* Decorative scattered stars */
.tp-stars {
position: relative;
}
.tp-stars::before,
.tp-stars::after {
position: absolute;
font-size: 1.2rem;
color: var(--tp-hot-pink);
pointer-events: none;
opacity: 0.6;
}
.tp-stars::before {
content: '\2605 \2605 \2605'; /* filled stars */
top: -15px;
right: 10px;
transform: rotate(8deg);
letter-spacing: 6px;
font-size: 0.8rem;
}
.tp-stars::after {
content: '\2605 \2605';
bottom: -12px;
left: 20px;
transform: rotate(-5deg);
letter-spacing: 8px;
font-size: 0.6rem;
}
.tp-button {
display: inline-block;
padding: 0.7rem 2rem;
font-family: 'Bangers', 'Permanent Marker', cursive;
font-size: 1.1rem;
letter-spacing: 0.08em;
text-transform: uppercase;
text-decoration: none;
color: var(--tp-white);
background: var(--tp-hot-pink);
border: 2px solid var(--tp-white);
cursor: pointer;
position: relative;
transform: rotate(-1deg);
box-shadow:
3px 3px 0 rgba(0, 0, 0, 0.5),
0 0 15px rgba(255, 20, 147, 0.3);
transition: all 0.15s ease;
}
.tp-button:hover {
background: var(--tp-white);
color: var(--tp-hot-pink);
border-color: var(--tp-hot-pink);
transform: rotate(1deg) scale(1.05);
box-shadow:
4px 4px 0 rgba(0, 0, 0, 0.5),
0 0 25px rgba(255, 20, 147, 0.5);
}
.tp-button:active {
transform: rotate(0deg) scale(0.98);
box-shadow: 1px 1px 0 rgba(0, 0, 0, 0.5);
}
/* Black variant */
.tp-button--dark {
background: var(--tp-black);
border-color: var(--tp-hot-pink);
color: var(--tp-hot-pink);
}
.tp-button--dark:hover {
background: var(--tp-hot-pink);
color: var(--tp-black);
}
/* MySpace-era glitter sparkle effect */
@keyframes tp-sparkle {
0%, 100% { opacity: 0; transform: scale(0.5) rotate(0deg); }
50% { opacity: 1; transform: scale(1) rotate(180deg); }
}
.tp-glitter {
position: relative;
}
.tp-glitter::before,
.tp-glitter::after {
content: '\2726'; /* four-pointed star */
position: absolute;
color: var(--tp-white);
font-size: 0.6rem;
animation: tp-sparkle 2s ease-in-out infinite;
pointer-events: none;
}
.tp-glitter::before {
top: 5%;
right: 8%;
animation-delay: 0s;
}
.tp-glitter::after {
bottom: 10%;
left: 12%;
animation-delay: 1s;
font-size: 0.4rem;
}
/* Punk plaid pattern (pink-and-black tartan) */
.tp-plaid {
background-color: var(--tp-black);
background-image:
repeating-linear-gradient(
0deg,
transparent,
transparent 18px,
rgba(255, 20, 147, 0.15) 18px,
rgba(255, 20, 147, 0.15) 20px,
transparent 20px,
transparent 28px,
rgba(255, 20, 147, 0.08) 28px,
rgba(255, 20, 147, 0.08) 29px
),
repeating-linear-gradient(
90deg,
transparent,
transparent 18px,
rgba(255, 20, 147, 0.15) 18px,
rgba(255, 20, 147, 0.15) 20px,
transparent 20px,
transparent 28px,
rgba(255, 20, 147, 0.08) 28px,
rgba(255, 20, 147, 0.08) 29px
);
}
/* Pink neon pulse on borders */
@keyframes tp-neon-pulse {
0%, 100% {
box-shadow:
0 0 5px var(--tp-hot-pink),
0 0 15px rgba(255, 20, 147, 0.3);
}
50% {
box-shadow:
0 0 10px var(--tp-hot-pink),
0 0 30px rgba(255, 20, 147, 0.5),
0 0 50px rgba(255, 20, 147, 0.2);
}
}
.tp-pulse {
animation: tp-neon-pulse 2.5s ease-in-out infinite;
}
/* Splatter pop-in entrance */
@keyframes tp-splat-in {
0% { transform: scale(0) rotate(-20deg); opacity: 0; }
70% { transform: scale(1.15) rotate(3deg); opacity: 1; }
100% { transform: scale(1) rotate(0deg); opacity: 1; }
}
.tp-splat-enter {
animation: tp-splat-in 0.4s ease-out forwards;
}
Physical Teenpunk materials and their web equivalents:
| Physical Material | Web Equivalent |
|---|---|
| Fishnet stockings | Crossed diagonal linear-gradient lines at 45deg/-45deg with low-opacity pink |
| Checkerboard Vans | Alternating black-and-white square pattern via linear-gradient at 45deg |
| Studded belt / wristband | Repeating small circles or squares in silver along a dark border strip |
| Notebook paper | White background with repeating-linear-gradient ruled lines and a red margin line |
| Iron-on patches | Rounded-corner panels with thick borders and slight rotate transforms |
| Sticker sheet | Collection of inline-block elements with varied rotations, colored borders, and drop shadows |
| Punk plaid skirt | Tartan pattern via crossed repeating-linear-gradient in pink on black |
| Paint-splattered black tee | Dark background with irregular border-radius blobs in hot pink at low opacity |
| Glitter graphics | Small four-pointed star characters with @keyframes opacity/rotation animation |
| Band poster on wall | Cards with slight rotate, box-shadow depth, and rough-edge treatment |
| Safety pins | Small angled metallic-colored line segments used as decorative list markers |
| Neon hair streak | Thin gradient stripe in neon pink or green used as accent highlights |
The following define the Teenpunk visual language and serve as design references:
| Aesthetic | Relationship to Teenpunk |
|---|---|
| Emo | Overlapping 2000s youth subculture; shares the black base and emotional intensity but is more introspective and melancholy; Teenpunk is more extroverted and playful |
| Scene | Direct sibling aesthetic; Scene pushes Teenpunk’s neon accents and hair styling to extremes; more digitally oriented with heavier MySpace/Photoshop editing |
| Mallgoth | Shares the Hot Topic retail origin and dark base palette; Mallgoth leans darker, more gothic, less pink, and less pop |
| Punk / DIY Punk | The authentic ancestor; Teenpunk borrows punk’s visual vocabulary (skulls, safety pins, studs, plaid) but strips away the anti-commercial ideology |
| Skater | Parallel youth subculture; shares checkerboard Vans, casual attitude, and board-sports energy; Skater is more neutral-toned where Teenpunk is pink |
| Glitter Graphics | The digital arm of the same era; sparkle GIFs, animated MySpace layouts, and blingy text effects that decorated Teenpunk’s online presence |
| Tweencore | The younger-skewing variant; same motifs but aimed at 8–12 year olds rather than teenagers; more wholesome, less edgy |
| Pop-Punk | The musical genre that provides Teenpunk’s soundtrack; the band merch aesthetic feeds directly into the visual identity |
| Vectordelia | Shares the 2000s digital era and bold graphic style; more illustrative and psychedelic, but overlaps in the use of stars, hearts, and splatter effects |
| Parisian Girly | A softer, more feminine counterpart; shares the pink-and-black palette but replaces punk edge with French romantic elegance |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Teenpunk Page</title>
<link href="https://fonts.googleapis.com/css2?family=Permanent+Marker&family=Bangers&family=Rock+Salt&family=Nunito:wght@400;700&family=Patrick+Hand&display=swap" rel="stylesheet">
<style>
:root {
--tp-black: #0d0d0d;
--tp-charcoal: #1a1a1a;
--tp-slate: #2a2a2a;
--tp-hot-pink: #ff1493;
--tp-neon-pink: #ff69b4;
--tp-blush: #ff85b3;
--tp-white: #ffffff;
--tp-off-white: #f0e6ef;
--tp-silver: #c0c0c0;
--tp-red: #cc0000;
--tp-neon-green: #39ff14;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
background: var(--tp-black);
color: var(--tp-off-white);
font-family: 'Nunito', sans-serif;
font-weight: 400;
line-height: 1.7;
position: relative;
overflow-x: hidden;
}
/* Fishnet overlay on entire page */
body::before {
content: '';
position: fixed;
inset: 0;
background-image:
linear-gradient(45deg, transparent 46%, rgba(255, 20, 147, 0.03) 46%, rgba(255, 20, 147, 0.03) 54%, transparent 54%),
linear-gradient(-45deg, transparent 46%, rgba(255, 20, 147, 0.03) 46%, rgba(255, 20, 147, 0.03) 54%, transparent 54%);
background-size: 20px 20px;
pointer-events: none;
z-index: 9999;
}
.hero {
text-align: center;
padding: 6rem 2rem 4rem;
position: relative;
background:
radial-gradient(ellipse at 30% 50%, rgba(255, 20, 147, 0.08) 0%, transparent 50%),
radial-gradient(ellipse at 70% 30%, rgba(255, 105, 180, 0.05) 0%, transparent 40%);
}
.hero h1 {
font-family: 'Permanent Marker', cursive;
font-size: clamp(3rem, 10vw, 7rem);
line-height: 1.0;
text-transform: uppercase;
color: var(--tp-hot-pink);
text-shadow:
3px 3px 0 rgba(0, 0, 0, 0.8),
0 0 30px rgba(255, 20, 147, 0.4),
0 0 60px rgba(255, 20, 147, 0.2);
margin-bottom: 1rem;
}
.hero .subtitle {
font-family: 'Rock Salt', cursive;
font-size: 0.85rem;
color: var(--tp-neon-pink);
transform: rotate(-2deg);
display: inline-block;
}
/* Checkerboard strip divider */
.tp-check-divider {
height: 16px;
border: none;
margin: 0;
background-image:
linear-gradient(45deg, var(--tp-black) 25%, transparent 25%),
linear-gradient(-45deg, var(--tp-black) 25%, transparent 25%),
linear-gradient(45deg, transparent 75%, var(--tp-black) 75%),
linear-gradient(-45deg, transparent 75%, var(--tp-black) 75%);
background-size: 16px 16px;
background-position: 0 0, 0 8px, 8px -8px, -8px 0;
background-color: var(--tp-white);
}
section {
max-width: 800px;
margin: 0 auto;
padding: 3rem 2rem;
position: relative;
}
h2 {
font-family: 'Bangers', cursive;
font-size: clamp(1.8rem, 5vw, 3rem);
text-transform: uppercase;
letter-spacing: 0.06em;
color: var(--tp-white);
text-shadow:
2px 2px 0 var(--tp-hot-pink),
4px 4px 0 rgba(0, 0, 0, 0.5);
margin-bottom: 1.5rem;
}
h3 {
font-family: 'Rock Salt', cursive;
font-size: 1.1rem;
color: var(--tp-neon-pink);
transform: rotate(-1deg);
margin: 1.5rem 0 0.75rem;
}
/* Notebook page card */
.tp-notebook-card {
background: var(--tp-white);
color: var(--tp-black);
padding: 2rem 2rem 2rem 3.5rem;
position: relative;
transform: rotate(calc(var(--tilt, -1) * 1deg));
box-shadow:
3px 3px 12px rgba(0, 0, 0, 0.6),
0 0 0 1px rgba(0, 0, 0, 0.1);
margin: 1.5rem 0;
font-family: 'Patrick Hand', cursive;
font-size: 1.05rem;
line-height: 1.8;
}
/* Ruled lines on notebook card */
.tp-notebook-card::before {
content: '';
position: absolute;
inset: 1.5rem 1rem 1rem 1rem;
background-image: repeating-linear-gradient(
transparent, transparent 27px, #B8D4E8 27px, #B8D4E8 28px
);
pointer-events: none;
}
/* Red margin line */
.tp-notebook-card::after {
content: '';
position: absolute;
top: 1rem;
bottom: 1rem;
left: 3rem;
width: 2px;
background: #CC4444;
opacity: 0.4;
}
/* Glow panel */
.tp-glow-panel {
border: 2px solid var(--tp-hot-pink);
background: var(--tp-charcoal);
padding: 2rem;
margin: 1.5rem 0;
box-shadow:
0 0 5px var(--tp-hot-pink),
0 0 15px rgba(255, 20, 147, 0.3),
inset 0 0 20px rgba(255, 20, 147, 0.05);
}
/* Sticker badge */
.tp-sticker {
display: inline-block;
padding: 0.4rem 1.1rem;
font-family: 'Bangers', cursive;
font-size: 0.9rem;
text-transform: uppercase;
letter-spacing: 0.06em;
color: var(--tp-white);
background: var(--tp-hot-pink);
border: 2px solid var(--tp-white);
border-radius: 3px;
transform: rotate(2deg);
box-shadow:
2px 2px 0 rgba(0, 0, 0, 0.4),
0 0 10px rgba(255, 20, 147, 0.3);
}
/* Annotation / doodle */
.tp-doodle {
font-family: 'Rock Salt', cursive;
font-size: 0.7rem;
color: var(--tp-neon-pink);
transform: rotate(-3deg);
display: inline-block;
margin-left: 0.5rem;
}
/* Button */
.tp-button {
display: inline-block;
padding: 0.7rem 2rem;
font-family: 'Bangers', cursive;
font-size: 1.1rem;
letter-spacing: 0.08em;
text-transform: uppercase;
text-decoration: none;
color: var(--tp-white);
background: var(--tp-hot-pink);
border: 2px solid var(--tp-white);
cursor: pointer;
transform: rotate(-1deg);
box-shadow:
3px 3px 0 rgba(0, 0, 0, 0.5),
0 0 15px rgba(255, 20, 147, 0.3);
transition: all 0.15s ease;
}
.tp-button:hover {
background: var(--tp-white);
color: var(--tp-hot-pink);
border-color: var(--tp-hot-pink);
transform: rotate(1deg) scale(1.05);
box-shadow:
4px 4px 0 rgba(0, 0, 0, 0.5),
0 0 25px rgba(255, 20, 147, 0.5);
}
a {
color: var(--tp-hot-pink);
text-decoration: none;
border-bottom: 2px solid rgba(255, 20, 147, 0.4);
transition: all 0.15s;
}
a:hover {
color: var(--tp-neon-pink);
border-bottom-color: var(--tp-neon-pink);
text-shadow: 0 0 8px rgba(255, 20, 147, 0.4);
}
/* Decorative star scatter */
.star-scatter::before {
content: '\2605 \2605 \2605';
position: absolute;
top: -10px;
right: 15px;
font-size: 0.7rem;
color: var(--tp-hot-pink);
letter-spacing: 5px;
transform: rotate(5deg);
opacity: 0.5;
}
</style>
</head>
<body>
<div class="hero">
<h1>Title Here</h1>
<span class="subtitle">a punk princess production</span>
</div>
<hr class="tp-check-divider">
<section>
<h2>Section One</h2>
<div class="tp-notebook-card" style="--tilt: -1.5">
<p>Content styled with the Teenpunk aesthetic. Bold pink on black, notebook scrawl, and mall-punk attitude. <span class="tp-doodle">^ so punk!</span></p>
</div>
<div class="tp-glow-panel">
<p>A glowing panel with neon pink borders. <span class="tp-sticker">Hot Topic Approved</span></p>
</div>
<br>
<a href="#" class="tp-button">Let's Go</a>
</section>
</body>
</html>