The People's Professors

Design System & Style Guide — Zine Aesthetic

Emily Green Design | Capstone 2025 | v1.0

01 Design Philosophy

This design system embodies the thesis: legitimate knowledge emerges from unexpected, democratized sources. The zine aesthetic connects TikTok's creator-educators to a longer history of grassroots publishing—zines, pamphlets, samizdat—where barrier-free entry and DIY production challenged institutional gatekeeping.

Core Tension: Intentional imperfection that still communicates clearly.

Guiding Principles

  1. Democratic over polished — The aesthetic should feel accessible, not exclusive
  2. Energetic over static — Rotation, collage, and visual "noise" create movement
  3. Mixed over uniform — Typography and elements should feel assembled, not templated
  4. Readable over decorative — Accessibility always wins; imperfection shouldn't impede comprehension
  5. Meaningful over random — Every "messy" element should serve communication
Rise/Mighty Note: Rise has clean, minimal defaults. Use Mighty's CSS injection and custom blocks strategically—don't fight every default, but disrupt key moments (headers, callouts, section transitions) to establish the zine personality.

02 Typography

Font Stack

Display / Headers / Emphasis — Permanent Marker
The algorithm is the syllabus

Use for: Section headers, pull quotes, handwritten annotations, emotional emphasis
Google Fonts: family=Permanent+Marker

Impact / Headlines / Labels — Work Sans Black
Democratizing Education

Use for: Major headlines, bold statements, UI labels, buttons
Google Fonts: family=Work+Sans:wght@400;500;600;700;800;900

Body / Content / Instructions — Courier Prime
Content creators intuitively apply principles that took educational psychologists decades to codify. The constraint of short-form video forces pedagogical precision.

Use for: Body copy, instructions, longer-form content, captions
Google Fonts: family=Courier+Prime:ital,wght@0,400;0,700;1,400

Type Scale

Name Size Use Case
--text-xs 12px / 0.75rem Labels, captions, metadata
--text-sm 14px / 0.875rem Secondary text, annotations
--text-base 16px / 1rem Body copy (Courier Prime)
--text-lg 18px / 1.125rem Lead paragraphs, emphasis
--text-xl 20px / 1.25rem Subheadings
--text-2xl 24px / 1.5rem Section headers
--text-3xl 32px / 2rem Page titles
--text-4xl 40px / 2.5rem Hero headlines
--text-5xl 56px / 3.5rem Display / Cover

Line Height & Spacing

  • Marker font: line-height: 1.1–1.2 (tight)
  • Work Sans headlines: line-height: 0.9–1.0 (very tight, uppercase)
  • Courier Prime body: line-height: 1.7–1.8 (generous for readability)
  • Paragraph spacing: 1em between paragraphs
Accessibility Note: The typewriter font at body size (16px+) with generous line-height maintains readability. Never use Permanent Marker for body copy or long passages—it's for impact moments only.

03 Color System

Core Palette

Paper #f5f0e6 Primary background
Newsprint #e8e3d9 Cards, sections
Ink #1a1a1a Text, borders
Gray #888888 Secondary text

Riso Accent Colors

Inspired by risograph printing—saturated, slightly imperfect, limited palette. Use intentionally, not everywhere.

Riso Pink #ff6b9d Primary accent, alerts, emphasis
Riso Blue #0078bf Links, info, secondary accent
Riso Yellow #ffe042 Highlights, labels, tape
Riso Green #00a95c Success, stamps, tertiary

Color Usage Rules

  • Limit to 2–3 accent colors per screen — Zine ≠ rainbow explosion
  • Pink for primary calls-to-action and key emphasis
  • Yellow for highlights and "tape" elements — it reads as annotation
  • Blue for informational content and links
  • Green sparingly — success states, stamps, variety
  • Never use riso colors for body text — readability first
Contrast Ratios: Ink (#1a1a1a) on Paper (#f5f0e6) = 12.6:1 ✓ | Riso Pink on white = 3.5:1 (use for large text/decorative only) | Always pair colored backgrounds with appropriate text contrast.

04 Spacing System

Based on an 8px grid. Use consistent spacing to create rhythm even within the "chaotic" aesthetic.

xs
sm
md
lg
xl
2xl
Token Value Use Case
--space-xs 4px / 0.25rem Tight gaps, inline spacing
--space-sm 8px / 0.5rem Related element spacing, padding
--space-md 16px / 1rem Default spacing, card padding
--space-lg 24px / 1.5rem Section padding, generous gaps
--space-xl 32px / 2rem Major section spacing
--space-2xl 48px / 3rem Page sections
--space-3xl 64px / 4rem Major page divisions

05 Rotation & Imperfection

The "messy" zine feeling comes from controlled imperfection. Use rotation and offset deliberately.

Rotation Tokens

  • --rotate-slight: 1.5deg — Subtle, almost subconscious tilt. Use for: body elements that need slight energy
  • --rotate-medium: 3deg — Noticeable but not distracting. Use for: callout boxes, stickers, labels
  • --rotate-strong: 6deg — Clear intention. Use for: hero elements, feature callouts, phone mockups

Rules for Rotation

✓ Do
  • Rotate decorative elements (stickers, tape, stamps)
  • Tilt callout boxes and pull quotes
  • Offset elements from strict grid alignment
  • Vary rotation direction (mix positive/negative)
  • Use rotation on hover states for interactivity
✗ Don't
  • Rotate body text blocks
  • Rotate navigation or critical UI
  • Use the same rotation angle for everything
  • Rotate to the point of illegibility
  • Overdo it—chaos should be orchestrated
Technical Note: In CSS, use transform: rotate(). Combine with box-shadow for the cut-out effect. In Figma, rotate frames and use drop shadows to simulate layering.

06 Content Guidance

Voice & Tone

The People's Professors voice is:

  • Confident but not academic — Make claims, but accessibly
  • Enthusiastic but not hype-y — Genuine excitement, not marketing speak
  • Direct — Short sentences. Clear points. No hedging.
  • Occasionally irreverent — Emoji, asides, personality welcome

Writing Style

✓ Do
  • Use active voice
  • Front-load key information
  • Break up long passages with visuals
  • Use annotations/marginalia for asides
  • Include the occasional emoji for tone 💡
  • Reference the platform naturally (TikTok, algorithm, FYP)
✗ Don't
  • Use jargon without defining it
  • Write dense academic paragraphs
  • Be condescending about the subject matter
  • Over-explain or pad content
  • Use corporate/marketing language

Content Structure (for Rise)

Recommended lesson flow:

  1. Hook — Bold statement, question, or provocative framing (use Marker font)
  2. Context — Brief setup, 2–3 sentences max
  3. Core Content — Chunked into digestible blocks
  4. Example/Evidence — Embedded video or case study
  5. Application — How does this connect to their work?
  6. Takeaway — One clear thing to remember (use callout component)

07 Accessibility

The zine aesthetic can coexist with accessibility. Here's how:

Non-Negotiables

  • Color contrast: All text must meet WCAG AA (4.5:1 for body, 3:1 for large text)
  • Don't convey info by color alone: Pair with icons, labels, or patterns
  • Keyboard navigation: All interactive elements must be focusable
  • Alt text: Decorative elements can be empty alt, but meaningful images need descriptions
  • Reduced motion: Respect prefers-reduced-motion for any animations

Rotation & Screen Readers

CSS rotation is purely visual—screen readers read content in DOM order regardless of rotation. The only concern is if rotation causes text clipping or overflow issues.

Rise Note: Rise has solid baseline accessibility. When adding custom HTML/CSS, test with keyboard navigation and VoiceOver/NVDA to ensure you haven't broken anything.

08 Rise + Mighty Notes

What to Customize

  • Lesson headers — Replace with custom HTML using Marker font + rotation
  • Continue buttons — Style with cut-out shadow treatment
  • Quote blocks — Restyle as "tape" callouts
  • Dividers — Replace with torn paper SVG
  • Knowledge checks — Add sticker decorations, zine-style feedback

What to Leave Alone

  • Navigation — Rise's nav works; don't break it
  • Video embeds — Let Rise handle responsive video
  • Accordion/tabs — Functionality first; light styling only
  • Form inputs — Focus states and accessibility are critical
CSS Injection Strategy: Use Mighty to inject the CSS variables and font imports globally. Then use class-based overrides for specific components. Keep specificity low to avoid fighting Rise's defaults.