website_designs

Polish Poster School Design Reference

The Polish Poster School (Polska Szkoła Plakatu) is an internationally renowned graphic design movement that flourished in Poland from the 1950s through the 1980s. It fuses fine art expressionism with poster communication, rejecting Western commercial conventions (the “floating heads” approach) in favor of surreal, symbolic, and deeply metaphorical imagery. Emerging under Soviet-era constraints where foreign film posters received relaxed censorship, Polish artists transformed advertising into a vehicle for artistic subversion, intellectual provocation, and emotional storytelling. The style is defined by painterly gesture, morbid wit, allegorical symbolism, and a stark tension between folk color vibrancy and oppressive gray atmospheres. Key figures include Henryk Tomaszewski, Jan Lenica, Franciszek Starowieyski, Waldemar Świerzy, Roman Cieślewicz, and Andrzej Pągowski.


Visual Characteristics

Core Design Traits

Design Principles


Color Palette

Primary Palette

The Polish Poster School uses vivid, expressionistic color drawn from folk art traditions, applied in isolated bursts against muted, oppressive grounds. The palette oscillates between vibrant saturated hues and somber, desaturated tones to create emotional tension.

Color Name Hex Role / Usage
Poster Red #CC2936 Primary accent, dominant symbolic element, blood and urgency
Deep Crimson #8B1A1A Darker red for shadows, depth within red forms, morbid undertones
Folk Yellow #E8B630 Warm accent, isolated highlights, folk art reference
Ochre #C4913D Earthy warm tone, aged paper feel, secondary warmth
Cobalt Blue #1B4B8A Cool contrast accent, symbolic depth, dreamlike atmosphere
Slate Blue #3D5A80 Muted cool secondary, transitional tone
Bone White #E8E0D0 Exposed paper ground, negative space, skull and skeletal forms
Parchment #D5C9B1 Aged poster stock, warm neutral ground
Charcoal #2B2B2B Dense blacks for outlines, text, oppressive atmosphere
Soot Black #1A1A1A Maximum-darkness ground, ink-heavy areas
Ash Gray #6B6B6B Muted urban atmosphere, Soviet-era drabness
Warm Gray #8C8378 Desaturated mid-tone, gritty poster texture
Verdigris #3D7B6F Cool accent, oxidized/aged quality, secondary symbolic color
Dried Blood #5C1A1A Darkest morbid tone, deep shadows, decay
Ink Violet #3D2B56 Bruised, nocturnal accent, surreal atmosphere

Suggested CSS Custom Properties

:root {
  /* Vivid accents (folk art-derived) */
  --pps-red: #cc2936;
  --pps-crimson: #8b1a1a;
  --pps-yellow: #e8b630;
  --pps-ochre: #c4913d;
  --pps-blue: #1b4b8a;
  --pps-slate-blue: #3d5a80;

  /* Dark tones */
  --pps-charcoal: #2b2b2b;
  --pps-black: #1a1a1a;
  --pps-dried-blood: #5c1a1a;
  --pps-ink-violet: #3d2b56;

  /* Neutrals (muted, oppressive) */
  --pps-ash: #6b6b6b;
  --pps-warm-gray: #8c8378;
  --pps-bone: #e8e0d0;
  --pps-parchment: #d5c9b1;

  /* Secondary accents */
  --pps-verdigris: #3d7b6f;

  /* Functional assignments */
  --pps-bg-primary: var(--pps-charcoal);
  --pps-bg-light: var(--pps-bone);
  --pps-bg-dark: var(--pps-black);
  --pps-text-primary: var(--pps-bone);
  --pps-text-dark: var(--pps-charcoal);
  --pps-accent: var(--pps-red);
  --pps-accent-warm: var(--pps-yellow);
  --pps-accent-cool: var(--pps-blue);
}

Color Usage Guidelines


Typography

Typeface Characteristics

Polish Poster School typography is defined by:

Font Style Best For
Caveat Handwritten, expressive Headlines that need hand-drawn quality
Permanent Marker Bold hand-lettered Display titles with raw, gestural energy
Amatic SC Thin hand-drawn, uppercase Lighter hand-lettered secondary text
Oswald Condensed geometric sans Formal headlines with Eastern European poster feel
Bebas Neue Bold condensed uppercase Strong poster titles when hand-drawn feel is not needed
Teko Condensed, angular, geometric Headlines with blocky, stencil-like quality
Stint Ultra Expanded Ultra-wide, heavy Display text with monumental, unusual proportions
Roboto Condensed Condensed grotesque Supporting text, credits, secondary information
PT Sans Humanist sans, Cyrillic heritage Body text with Eastern European typographic DNA
Source Serif 4 Transitional serif Body text when a more literary, intellectual tone is needed

Font Pairing Suggestions

Heading Font Body Font Character
Permanent Marker (400) PT Sans (400) Raw, hand-lettered impact with readable Eastern European body
Caveat (700) Roboto Condensed (400) Expressive, personal headlines with clean condensed body
Oswald (700) Source Serif 4 (400) Formal poster strength with intellectual, literary body text
Teko (600) PT Sans (400) Angular, stencil-like headlines with approachable body

Typography CSS Example

/* Import fonts */
@import url('https://fonts.googleapis.com/css2?family=Permanent+Marker&family=Caveat:wght@400;700&family=Oswald:wght@500;700&family=PT+Sans:wght@400;700&family=Source+Serif+4:wght@400;600&display=swap');

/* Headlines -- hand-drawn, expressive, integrated with composition */
h1, h2, h3 {
  font-family: 'Permanent Marker', 'Caveat', cursive;
  letter-spacing: 0.02em;
  color: var(--pps-accent);
  line-height: 1.1;
}

/* Display / Hero text -- maximum poster impact with hand-rendered feel */
.pps-display {
  font-family: 'Permanent Marker', cursive;
  font-size: clamp(3rem, 10vw, 8rem);
  line-height: 0.95;
  color: var(--pps-bone);
  text-shadow: 3px 3px 0 var(--pps-black);
}

/* Alternative formal headline -- Eastern European poster style */
.pps-headline-formal {
  font-family: 'Oswald', 'Teko', sans-serif;
  font-weight: 700;
  font-size: clamp(2rem, 6vw, 5rem);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  line-height: 1.0;
  color: var(--pps-yellow);
}

/* Body text */
body {
  font-family: 'PT Sans', 'Source Serif 4', sans-serif;
  font-weight: 400;
  font-size: 1rem;
  line-height: 1.7;
  color: var(--pps-text-primary);
}

/* Credit / attribution text (small, understated) */
.pps-credit {
  font-family: 'PT Sans', sans-serif;
  font-weight: 400;
  font-size: 0.75rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--pps-ash);
}

Layout Principles

Composition and Structure

Polish Poster School layout follows the logic of an expressive, single-image poster – one dominant symbolic form commands the space, surrounded by charged negative space, with text emerging from or dissolving into the image.

Section Organization

Responsive Approach


CSS / Design Techniques

Textured Poster Background

/* Aged, worn poster ground with noise and staining */
.pps-poster-bg {
  background-color: var(--pps-charcoal);
  background-image:
    radial-gradient(
      ellipse at 30% 20%,
      rgba(200, 180, 150, 0.06) 0%,
      transparent 50%
    ),
    radial-gradient(
      ellipse at 70% 80%,
      rgba(92, 26, 26, 0.05) 0%,
      transparent 40%
    ),
    linear-gradient(
      to bottom,
      rgba(0, 0, 0, 0.08) 0%,
      transparent 15%,
      transparent 85%,
      rgba(0, 0, 0, 0.1) 100%
    );
  position: relative;
}

/* Grain/noise overlay for print texture */
.pps-poster-bg::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='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.04'/%3E%3C/svg%3E");
  pointer-events: none;
  mix-blend-mode: multiply;
}

Full-Viewport Poster Section

.pps-poster {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background: var(--pps-bg-primary);
  color: var(--pps-text-primary);
  text-align: center;
  padding: 4rem 2rem;
  position: relative;
  overflow: hidden;
}

.pps-poster__symbol {
  max-width: 50vw;
  max-height: 55vh;
  object-fit: contain;
  position: relative;
  z-index: 2;
  filter: contrast(1.1) saturate(0.9);
  /* Slightly desaturated, high-contrast for poster print feel */
}

.pps-poster__title {
  font-family: 'Permanent Marker', cursive;
  font-size: clamp(3rem, 10vw, 8rem);
  color: var(--pps-bone);
  position: relative;
  z-index: 2;
  text-shadow:
    2px 2px 0 var(--pps-black),
    4px 4px 8px rgba(0, 0, 0, 0.4);
  line-height: 0.95;
}

.pps-poster__credit {
  font-family: 'PT Sans', sans-serif;
  font-size: 0.8rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--pps-ash);
  position: relative;
  z-index: 2;
  margin-top: 2rem;
}

Expressionistic Color Block Sections

/* Each section is a distinct poster mood */
.pps-section {
  padding: 6rem 2rem;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2rem;
  position: relative;
}

.pps-section--dark {
  background: var(--pps-black);
  color: var(--pps-bone);
}

.pps-section--bone {
  background: var(--pps-bone);
  color: var(--pps-charcoal);
}

.pps-section--red {
  background: var(--pps-crimson);
  color: var(--pps-bone);
}

.pps-section--blue {
  background: var(--pps-blue);
  color: var(--pps-bone);
}

.pps-section--gray {
  background: var(--pps-ash);
  color: var(--pps-bone);
}

/* Headings adapt to section mood */
.pps-section--dark h2 { color: var(--pps-red); }
.pps-section--bone h2 { color: var(--pps-crimson); }
.pps-section--red h2 { color: var(--pps-yellow); }
.pps-section--blue h2 { color: var(--pps-bone); }
.pps-section--gray h2 { color: var(--pps-yellow); }

Rough Brushstroke Divider

/* Organic, rough divider -- not a clean line */
.pps-divider {
  height: 6px;
  background: var(--pps-red);
  width: 100%;
  position: relative;
  clip-path: polygon(
    0% 20%, 3% 80%, 7% 10%, 12% 70%, 18% 30%, 23% 90%,
    28% 15%, 35% 85%, 40% 25%, 47% 75%, 52% 20%, 58% 80%,
    63% 10%, 70% 70%, 75% 30%, 80% 85%, 85% 15%, 90% 75%,
    95% 30%, 100% 60%, 100% 100%, 0% 100%
  );
}

/* Thicker, more dramatic variant */
.pps-divider--heavy {
  height: 12px;
  background: var(--pps-yellow);
}

Symbolic Icon / Motif Treatment

/* Icons should feel hand-rendered, not polished */
.pps-symbol {
  width: 120px;
  height: 120px;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
}

.pps-symbol svg {
  fill: var(--pps-red);
  width: 100%;
  height: 100%;
  filter: url(#rough-edges); /* Apply SVG filter for imperfect edges */
}

/* Symbol on a rough background block */
.pps-symbol-block {
  width: 160px;
  height: 160px;
  background: var(--pps-charcoal);
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  /* Slightly irregular shape suggesting torn paper or rough cut */
  clip-path: polygon(
    2% 0%, 98% 1%, 100% 3%, 99% 97%, 97% 100%, 3% 99%, 0% 97%, 1% 2%
  );
}

.pps-symbol-block svg {
  fill: var(--pps-yellow);
  width: 55%;
  height: 55%;
}

Poster-Style Card / Panel

.pps-card {
  background: var(--pps-charcoal);
  color: var(--pps-bone);
  padding: 2.5rem 2rem;
  position: relative;
  text-align: left;
  border-left: 4px solid var(--pps-red);
  max-width: 480px;
}

/* Rough top-edge accent */
.pps-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: var(--pps-yellow);
  clip-path: polygon(
    0% 0%, 5% 100%, 10% 0%, 15% 100%, 20% 0%, 25% 100%,
    30% 0%, 35% 100%, 40% 0%, 45% 100%, 50% 0%, 55% 100%,
    60% 0%, 65% 100%, 70% 0%, 75% 100%, 80% 0%, 85% 100%,
    90% 0%, 95% 100%, 100% 0%
  );
}

.pps-card__title {
  font-family: 'Permanent Marker', cursive;
  font-size: 1.5rem;
  color: var(--pps-yellow);
  margin-bottom: 0.75rem;
}

.pps-card__text {
  font-family: 'PT Sans', sans-serif;
  font-size: 0.95rem;
  line-height: 1.7;
  color: var(--pps-bone);
  opacity: 0.85;
}

Expressionistic Button

.pps-button {
  display: inline-block;
  background: var(--pps-red);
  color: var(--pps-bone);
  border: none;
  padding: 14px 40px;
  font-family: 'Oswald', sans-serif;
  font-weight: 700;
  font-size: 1.1rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  cursor: pointer;
  text-decoration: none;
  position: relative;
  transition: background 0.2s ease, transform 0.1s ease;
  /* Slightly irregular shape -- not a perfect rectangle */
  clip-path: polygon(
    1% 0%, 100% 2%, 99% 100%, 0% 98%
  );
}

.pps-button:hover {
  background: var(--pps-crimson);
  transform: translate(1px, 1px);
}

/* Outline variant for light backgrounds */
.pps-button--outline {
  background: transparent;
  color: var(--pps-red);
  border: 3px solid var(--pps-red);
  clip-path: none;
}

.pps-button--outline:hover {
  background: var(--pps-red);
  color: var(--pps-bone);
}

Ink Splatter / Paint Texture Accent

/* Decorative paint splatter using radial gradients */
.pps-splatter {
  position: absolute;
  width: 200px;
  height: 200px;
  pointer-events: none;
  opacity: 0.15;
  background:
    radial-gradient(circle at 30% 40%, var(--pps-red) 0%, var(--pps-red) 8%, transparent 9%),
    radial-gradient(circle at 70% 25%, var(--pps-red) 0%, var(--pps-red) 5%, transparent 6%),
    radial-gradient(circle at 50% 60%, var(--pps-red) 0%, var(--pps-red) 12%, transparent 13%),
    radial-gradient(circle at 20% 75%, var(--pps-red) 0%, var(--pps-red) 4%, transparent 5%),
    radial-gradient(circle at 80% 70%, var(--pps-red) 0%, var(--pps-red) 6%, transparent 7%),
    radial-gradient(circle at 45% 30%, var(--pps-red) 0%, var(--pps-red) 3%, transparent 4%);
}
.pps-nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 20px 40px;
  background: var(--pps-black);
  border-bottom: 2px solid var(--pps-ash);
}

.pps-nav__brand {
  font-family: 'Permanent Marker', cursive;
  font-size: 1.3rem;
  color: var(--pps-red);
  text-decoration: none;
}

.pps-nav__links {
  display: flex;
  gap: 28px;
  list-style: none;
  margin: 0;
  padding: 0;
}

.pps-nav__links a {
  font-family: 'PT Sans', sans-serif;
  font-weight: 400;
  font-size: 0.85rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--pps-ash);
  text-decoration: none;
  transition: color 0.15s ease;
}

.pps-nav__links a:hover {
  color: var(--pps-bone);
}

.pps-nav__links a.active {
  color: var(--pps-yellow);
}

Design Do’s and Don’ts

Do

Don’t


Materials and Textures (Visual Metaphors for Web)

Physical Polish Poster School materials and their web equivalents:

Physical Material Web Equivalent
Rough poster stock Warm neutral backgrounds (#e8e0d0, #d5c9b1) with subtle noise/grain overlay
Lithographic ink on paper High-contrast flat CSS color fills with slight texture variation
Brush-applied gouache/tempera Uneven background-color with painted-edge clip-path shapes
Hand-drawn ink lines Irregular SVG paths and hand-drawn-style borders
Woodcut / linocut prints Bold silhouette SVGs with rough edges, single-color fills
Aged, stained paper Radial gradient stains and tonal variation overlaid on neutral grounds
Screen-printed layers Slightly offset, overlapping CSS shapes suggesting misregistration
Torn paper collage Irregular clip-path edges on content blocks and images
Pencil and charcoal marks Thin, textured lines using SVG stroke-dasharray and grain

Aesthetic Relationship to Polish Poster School
Heroic Realism Predecessor in the Soviet bloc; Polish Poster School rejected its literal, propagandistic realism in favor of symbolic, personal expression
Plakatstil German poster tradition; shares commitment to bold simplification and single-subject dominance, but Plakatstil is clean and commercial where Polish Poster School is expressionistic and surreal
Expressionism Major artistic influence; the painterly gesture, emotional color, and distorted forms are directly inherited from German and Polish expressionist traditions
Surrealism Core stylistic pillar; dream logic, impossible imagery, and psychological ambiguity are central to the Polish Poster School visual language
Constructivism Contemporary parallel in Soviet graphic design; shares geometric reduction but Polish Poster School rejects Constructivism’s rationality for emotional subjectivity
Psychedelic Art Parallel 1960s movement; shares expressive color, surreal imagery, and hand-drawn typography, but emerges from different cultural and political contexts
DIY Punk Shares the raw, hand-made aesthetic, anti-commercial ethos, and rough printing quality; punk inherited some of the same rejection of polish and convention
Ostalgie Nostalgic aesthetic drawing on Eastern Bloc visual culture; Polish Poster School is a primary source for Ostalgie’s graphic references
New Wave 1980s graphic design movement; shares experimental typography and rejection of Swiss Style rationalism, though New Wave is postmodern where Polish Poster School is existential
Mission School San Francisco art movement sharing the hand-rendered, folk-influenced, rough-edged visual character

Quick-Start: Minimal Polish Poster School Page Template

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Polish Poster School Page</title>
  <link href="https://fonts.googleapis.com/css2?family=Permanent+Marker&family=Caveat:wght@400;700&family=Oswald:wght@500;700&family=PT+Sans:wght@400;700&display=swap" rel="stylesheet">
  <style>
    :root {
      --pps-red: #cc2936;
      --pps-crimson: #8b1a1a;
      --pps-yellow: #e8b630;
      --pps-ochre: #c4913d;
      --pps-blue: #1b4b8a;
      --pps-charcoal: #2b2b2b;
      --pps-black: #1a1a1a;
      --pps-ash: #6b6b6b;
      --pps-bone: #e8e0d0;
      --pps-parchment: #d5c9b1;
      --pps-ink-violet: #3d2b56;
    }

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

    body {
      background: var(--pps-charcoal);
      color: var(--pps-bone);
      font-family: 'PT Sans', sans-serif;
      font-weight: 400;
      line-height: 1.7;
    }

    h1, h2, h3 {
      font-family: 'Permanent Marker', cursive;
      line-height: 1.1;
    }

    /* Navigation */
    nav {
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 20px 40px;
      background: var(--pps-black);
      border-bottom: 2px solid var(--pps-ash);
    }

    nav a.brand {
      font-family: 'Permanent Marker', cursive;
      font-size: 1.3rem;
      color: var(--pps-red);
      text-decoration: none;
    }

    nav ul {
      display: flex;
      gap: 28px;
      list-style: none;
    }

    nav ul a {
      font-family: 'PT Sans', sans-serif;
      font-size: 0.85rem;
      letter-spacing: 0.06em;
      text-transform: uppercase;
      color: var(--pps-ash);
      text-decoration: none;
      transition: color 0.15s ease;
    }

    nav ul a:hover { color: var(--pps-bone); }

    /* Hero -- full-viewport poster with symbolic image */
    .hero {
      min-height: 100vh;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      background: var(--pps-charcoal);
      text-align: center;
      padding: 4rem 2rem;
      gap: 2rem;
      position: relative;
    }

    /* Subtle aged stain on poster ground */
    .hero::before {
      content: '';
      position: absolute;
      inset: 0;
      background:
        radial-gradient(ellipse at 25% 30%, rgba(200, 180, 150, 0.06) 0%, transparent 50%),
        radial-gradient(ellipse at 75% 70%, rgba(92, 26, 26, 0.04) 0%, transparent 40%);
      pointer-events: none;
    }

    .hero h1 {
      font-size: clamp(3rem, 10vw, 8rem);
      color: var(--pps-bone);
      text-shadow:
        2px 2px 0 var(--pps-black),
        4px 4px 8px rgba(0, 0, 0, 0.4);
      position: relative;
      z-index: 2;
    }

    /* Symbolic element -- skull-like form as CSS shape */
    .hero .symbol {
      width: clamp(100px, 25vw, 220px);
      height: clamp(120px, 30vw, 260px);
      background: var(--pps-red);
      border-radius: 50% 50% 45% 45% / 55% 55% 40% 40%;
      position: relative;
      z-index: 2;
    }

    /* Eye sockets */
    .hero .symbol::before,
    .hero .symbol::after {
      content: '';
      position: absolute;
      width: 28%;
      height: 22%;
      background: var(--pps-charcoal);
      border-radius: 50%;
      top: 35%;
    }
    .hero .symbol::before { left: 18%; }
    .hero .symbol::after { right: 18%; }

    .hero .subtitle {
      font-family: 'Caveat', cursive;
      font-size: clamp(1.2rem, 3vw, 2rem);
      color: var(--pps-yellow);
      position: relative;
      z-index: 2;
    }

    /* Rough brushstroke divider */
    .rough-divider {
      height: 6px;
      background: var(--pps-red);
      width: 100%;
      clip-path: polygon(
        0% 20%, 3% 80%, 7% 10%, 12% 70%, 18% 30%, 23% 90%,
        28% 15%, 35% 85%, 40% 25%, 47% 75%, 52% 20%, 58% 80%,
        63% 10%, 70% 70%, 75% 30%, 80% 85%, 85% 15%, 90% 75%,
        95% 30%, 100% 60%, 100% 100%, 0% 100%
      );
    }

    /* Content section on light ground */
    .poster-section {
      padding: 6rem 2rem;
      text-align: center;
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 2rem;
    }

    .poster-section--bone {
      background: var(--pps-bone);
      color: var(--pps-charcoal);
    }

    .poster-section--bone h2 {
      color: var(--pps-crimson);
      font-size: clamp(2rem, 6vw, 5rem);
    }

    .poster-section--dark {
      background: var(--pps-black);
      color: var(--pps-bone);
    }

    .poster-section--dark h2 {
      color: var(--pps-yellow);
      font-size: clamp(2rem, 6vw, 5rem);
    }

    .poster-section p {
      font-size: 1.1rem;
      max-width: 50ch;
      opacity: 0.85;
    }

    /* Feature panels -- stacked poster sequence */
    .features {
      display: flex;
      flex-direction: column;
    }

    .feature {
      padding: 5rem 2rem;
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 1.5rem;
      text-align: left;
      max-width: 600px;
      margin: 0 auto;
      width: 100%;
    }

    .feature:nth-child(1) { background: var(--pps-charcoal); color: var(--pps-bone); }
    .feature:nth-child(2) { background: var(--pps-crimson); color: var(--pps-bone); }
    .feature:nth-child(3) { background: var(--pps-ink-violet); color: var(--pps-bone); }

    .feature h3 {
      font-size: 1.5rem;
      color: var(--pps-yellow);
      align-self: flex-start;
    }

    .feature p {
      font-size: 0.95rem;
      max-width: 45ch;
      opacity: 0.85;
    }

    /* CTA */
    .cta {
      background: var(--pps-bone);
      color: var(--pps-charcoal);
      text-align: center;
      padding: 6rem 2rem;
    }

    .cta h2 {
      font-size: clamp(2.5rem, 7vw, 6rem);
      color: var(--pps-red);
      margin-bottom: 2rem;
    }

    .btn {
      display: inline-block;
      background: var(--pps-red);
      color: var(--pps-bone);
      border: none;
      padding: 14px 40px;
      font-family: 'Oswald', sans-serif;
      font-weight: 700;
      font-size: 1.1rem;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      text-decoration: none;
      cursor: pointer;
      transition: background 0.2s ease, transform 0.1s ease;
      clip-path: polygon(1% 0%, 100% 2%, 99% 100%, 0% 98%);
    }

    .btn:hover {
      background: var(--pps-crimson);
      transform: translate(1px, 1px);
    }

    /* Footer */
    footer {
      background: var(--pps-black);
      color: var(--pps-ash);
      text-align: center;
      padding: 28px;
      font-size: 0.75rem;
      letter-spacing: 0.08em;
      text-transform: uppercase;
      border-top: 2px solid var(--pps-ash);
    }

    @media (max-width: 768px) {
      nav { padding: 16px 20px; }
      nav ul { gap: 18px; }
      .hero { padding: 3rem 1.5rem; }
      .poster-section { padding: 4rem 1.5rem; }
      .feature { padding: 3rem 1.5rem; }
      .cta { padding: 4rem 1.5rem; }
    }
  </style>
</head>
<body>
  <nav>
    <a href="#" class="brand">Plakat</a>
    <ul>
      <li><a href="#">Work</a></li>
      <li><a href="#">About</a></li>
      <li><a href="#">Contact</a></li>
    </ul>
  </nav>

  <section class="hero">
    <h1>Polska Szkoła</h1>
    <div class="symbol"></div>
    <div class="subtitle">The Art of Subversion</div>
  </section>

  <div class="rough-divider"></div>

  <section class="poster-section poster-section--bone">
    <h2>Symbol Over Surface</h2>
    <p>One image. One idea. The poster speaks through metaphor, not description. The viewer must meet the artist halfway.</p>
  </section>

  <div class="features">
    <div class="feature">
      <h3>Surreal Symbolism</h3>
      <p>A skull represents war. A cage represents censorship. Literal depiction is abandoned in favor of concise visual metaphor that rewards interpretation.</p>
    </div>
    <div class="feature">
      <h3>Expressionistic Color</h3>
      <p>Vivid folk-art hues -- red, yellow, blue -- erupt from gray, oppressive grounds. Color is emotional, never decorative.</p>
    </div>
    <div class="feature">
      <h3>The Hand of the Artist</h3>
      <p>Every stroke is visible. Every edge is imperfect. The human touch is the aesthetic, not a flaw to be corrected.</p>
    </div>
  </div>

  <div class="rough-divider" style="background: var(--pps-yellow);"></div>

  <section class="cta">
    <h2>See the Work</h2>
    <a href="#" class="btn">Enter the Gallery</a>
  </section>

  <footer>
    <p>Designed in the tradition of the Polish Poster School. Symbolic. Expressive. Uncompromising.</p>
  </footer>
</body>
</html>