---
name: email-campaign-writer
description: Generate complete email marketing campaigns including subject lines, body copy, CTAs, and multi-email sequences for promotions, announcements, lead nurturing, and customer engagement. Use when writing promotional emails, crafting announcement campaigns, building welcome series, creating drip campaigns, generating A/B test variations, or optimizing email copy for conversions. Triggers on phrases like "email campaign", "write email", "subject line", "email copy", "welcome email", "promotion email", "announcement email", "email sequence", "drip campaign copy", "email CTA", "email A/B testing", "email template".
---

# Email Campaign Writer

Generate high-converting email campaigns with compelling copy, optimized subject lines, and strategic CTAs.

## Workflow

1. Define campaign objective: Awareness, consideration, conversion, retention, re-engagement.
2. Identify target audience segment and their lifecycle stage.
3. Research competitive messaging and best practices for the campaign type.
4. Generate 8-12 subject line variations for A/B testing with open rate predictions.
5. Write email body copy with persuasive frameworks (AIDA, PAS, story-based).
6. Create CTA buttons with action-oriented, conversion-focused text.
7. Design multi-email sequence with logical progression and behavioral triggers.
8. Optimize for spam filters, mobile rendering, and accessibility.
9. Preview across email clients and validate deliverability score.

## Campaign Types and Frameworks

### Promotional Campaign Copy

```
PROMOTIONAL EMAIL FRAMEWORK
============================

Structure for product launch, sale, or special offer emails:

SUBJECT LINES (10 variations):
  Direct: "Flash Sale: 40% Off Everything — Ends Tonight"
  Urgency: "⏰ 24 Hours Left: Your Exclusive 40% Off Access Expires"
  Curiosity: "We've Been Keeping This From You..."
  Personal: "[First Name], Something Special Is Waiting for You"
  Benefit: "Save $200 on Your Next Order — Here's How"
  Social Proof: "Join 50,000+ Happy Customers — Now 40% Off"
  FOMO: "Last Chance: This Deal Won't Come Around Again"
  Question: "Ready to Transform Your [Problem] for Less?"
  List: "3 Reasons You'll Love Our Summer Sale"
  Preview: "🔥 Sneak Peek: Our Biggest Sale of the Year"

OPEN RATE PREDICTION SCORING (0-100):
  Length 30-50 characters: +15 pts
  Personalization token: +10 pts
  Question or curiosity: +10 pts
  Urgency/Scarcity words: +8 pts
  Emoji (1-2 max): +5 pts
  Number in subject: +5 pts
  ALL CAPS words: -10 pts
  Spam trigger words ("free", "buy now", "act now"): -15 pts
  Exclamation marks >1: -5 pts
  Preview text complement: +10 pts

Preview Text (preheader):
  "Use code SUMMER40 at checkout. Free shipping on orders $50+."
  Max 45 characters visible in inbox. Complement subject, don't repeat.

EMAIL BODY STRUCTURE (AIDA Framework):
  ┌──────────────────────────────────────────────────────────┐
  │ ATTENTION:                                              │
  │   Hero image or bold headline                           │
  │   "Summer Is Here — And So Are Our Best Deals"           │
  │   Grab attention in first 2 seconds (mobile scroll)     │
  ├──────────────────────────────────────────────────────────┤
  │ INTEREST:                                               │
  │   Key benefits (3 max, scannable)                       │
  │   ✓ Premium quality you trust                           │
  │   ✓ New arrivals included                               │
  │   ✓ Free returns, no questions                          │
  │   Use icons/bullet points for quick scanning            │
  ├──────────────────────────────────────────────────────────┤
  │ DESIRE:                                                 │
  │   Social proof + emotional trigger                      │
  │   "Rated 4.8/5 by 12,000+ customers"                    │
  │   [Customer testimonial quote with photo]               │
  │   [Product image with price strikethrough]              │
  │   "Only 200 units available at this price"              │
  ├──────────────────────────────────────────────────────────┤
  │ ACTION:                                                 │
  │   Primary CTA button (above the fold and repeated)      │
  │   "SHOP THE SALE →" (orange/red button, min 44x44px)   │
  │   Secondary CTA: "Browse New Arrivals"                  │
  │   Urgency: "Offer ends Sunday at midnight"              │
  └──────────────────────────────────────────────────────────┘

Best practices:
  - Single primary CTA per email (avoid decision paralysis)
  - Button text: action verb + benefit ("Start Free Trial" not "Click Here")
  - Mobile-first: 60%+ opens on mobile (short paragraphs, large buttons)
  - Link density: 3-5 total links max for best engagement
  - Plain text fallback: always include for accessibility and spam filters
```

### Announcement Email Copy

```
ANNOUNCEMENT EMAIL TEMPLATE
=============================

Product Launch / Company News / Feature Release:

SUBJECT LINE OPTIONS:
  "Introducing [Product] — The [Category] You've Been Waiting For"
  "Big News: [Company] Is Doing Something New"
  "It's Here: [Product] Officially Launches Today"
  "You Asked, We Built: [Feature Name] Is Live"
  "Meet [Product]: Redesigned for [Key Benefit]"

EMAIL BODY:

  [Hero Image / Product Visual]

  HEADLINE: "Introducing [Product Name]"
  SUBHEAD: One-line value proposition
           "Finally, a way to [solve problem] without [common pain point]"

  SECTION 1 — THE PROBLEM:
  "We've heard from thousands of customers like you:"
  [Customer quote about the problem]
  "That's why we built [Product]."

  SECTION 2 — THE SOLUTION (3 Key Benefits):
  Benefit 1: [Name]
    Description with specific metric or outcome
    [Supporting visual or icon]
  Benefit 2: [Name]
    Description with specific metric or outcome
    [Supporting visual or icon]
  Benefit 3: [Name]
    Description with specific metric or outcome
    [Supporting visual or icon]

  SECTION 3 — SOCIAL PROOF:
  [Beta tester quote with photo and title]
  "Early results: [metric] improvement in [timeframe]"
  [Press mention logos if applicable]

  SECTION 4 — CTA:
  Primary: "Get Early Access" or "Try It Free" or "Learn More"
  Secondary: "Watch Demo Video" or "Read Case Study"

  SIGN-OFF:
  "We can't wait for you to try it,"
  [Founder/CEO name]

Timing guidelines:
  - Teaser email: 7-14 days before launch (build anticipation)
  - Launch email: Day of (full details, CTA)
  - Follow-up: 3 days after (social proof, FAQ)
  - Retargeting: 7 days after (testimonial, limited offer)

Open rate benchmark by company size:
  Startup (< 100 employees): 35-45%
  Mid-market (100-1000): 25-35%
  Enterprise (1000+): 20-30%
  Overall industry average: 21.33% (Litmus 2024)
```

### Welcome Email Series

```
WELCOME EMAIL SEQUENCE (5-Email Series)
=========================================

EMAIL 1 — Immediate (Trigger: Sign-up)
  Subject: "Welcome to [Company], [First Name]! 🎉"
  Body:
    - Thank them for joining
    - Reinforce value proposition
    - Set expectations (what they'll receive)
    - Link to getting started guide
    - CTA: "Complete Your Profile" or "Get Started"
  Send time: Within 5 minutes of signup (75% higher open rate than delayed)
  Expected open rate: 45-55%

EMAIL 2 — Day 1
  Subject: "Here's How to Get the Most Out of [Product]"
  Body:
    - Quick tutorial (3 key features)
    - Screenshot or video embed
    - Common use case example
    - CTA: "Try Feature X"
  Expected open rate: 25-35%

EMAIL 3 — Day 3
  Subject: "[Customer Name] Used [Product] to [Result] — Here's How"
  Body:
    - Mini case study or testimonial
    - Show, don't just tell
    - Include specific metrics/results
    - CTA: "See Full Case Study"
  Expected open rate: 20-28%

EMAIL 4 — Day 7
  Subject: "Your First Week with [Product] — How's It Going?"
  Body:
    - Check-in (personal tone)
    - Highlight advanced features
    - Invite to community/webinar
    - CTA: "Join Our Community" or "Schedule a Demo"
  Expected open rate: 15-22%

EMAIL 5 — Day 14
  Subject: "Ready for [Next Step]? Here's What's Coming"
  Body:
    - Introduce premium features or upsell
    - Share roadmap/what's next
    - Offer personal onboarding call
    - CTA: "Upgrade Your Plan" or "Book a Call"
  Expected open rate: 12-18%

Performance benchmarks:
  Average welcome series completion rate: 30-45%
  Activation rate after welcome series: 20-40% (depends on product)
  Revenue attribution: Welcome series drives 10-25% of first purchase revenue

Personalization tokens to use:
  - {{first_name}}: First name (always)
  - {{company_name}}: Company (B2B)
  - {{signup_date}}: Date joined
  - {{plan_type}}: Subscription tier
  - {{referral_source}}: How they found you
  - {{product_category}}: Interest category
```

### Lead Nurture Sequence

```
LEAD NURTURE CAMPAIGN (7-Email Drip)
======================================

Goal: Convert MQLs to SQLs through education and trust-building

Timing cadence: Day 0, 2, 5, 9, 14, 21, 30

EMAIL 1 (Day 0) — Thank You + Immediate Value
  Subject: "Thanks for downloading [Lead Magnet], [Name]"
  Content:
    - Deliver the promised lead magnet
    - Brief context on how to use it
    - One helpful tip they can implement immediately
    - Soft CTA: "Read our related article on [topic]"
  Tone: Helpful, no hard sell

EMAIL 2 (Day 2) — Problem Awareness
  Subject: "The #1 Mistake [Profession] Make When [Topic]"
  Content:
    - Educational blog-style email
    - Identify a common pain point
    - Show why traditional approaches fail
    - Soft pitch: "This is exactly why we built [solution]"
    - CTA: "See how it works"
  Goal: Deepen problem awareness

EMAIL 3 (Day 5) — Solution Introduction
  Subject: "How [Customer] Reduced [Problem] by [X]%"
  Content:
    - Case study format (real customer, real numbers)
    - Problem → Solution → Results structure
    - Focus on outcomes, not features
    - CTA: "Read the full story"
  Goal: Build proof and credibility

EMAIL 4 (Day 9) — Social Proof Stack
  Subject: "What 500+ [Industry] Professionals Are Saying"
  Content:
    - 3 customer testimonials with photos
    - Industry recognition or awards
    - Media mentions or press
    - Customer logos (if B2B)
    - CTA: "See all reviews"
  Goal: Overcome social proof objections

EMAIL 5 (Day 14) — Educational Deep Dive
  Subject: "[Industry] Report: 2024 Trends You Can't Ignore"
  Content:
    - Original research or industry data
    - Position brand as thought leader
    - 3-5 actionable insights
    - CTA: "Download full report"
  Goal: Establish expertise

EMAIL 6 (Day 21) — Objection Handling
  Subject: "Thinking About [Product]? Here's What You Need to Know"
  Content:
    - Address top 3 objections directly
    - Pricing transparency (if applicable)
    - Comparison with alternatives
    - Risk reversal (guarantee, trial)
    - CTA: "Start Your Free Trial"
  Goal: Remove remaining barriers

EMAIL 7 (Day 30) — Final Offer
  Subject: "Last Chance: [Special Offer] Ends This Week"
  Content:
    - Exclusive time-limited offer
    - Clear value proposition
    - Urgency element (real, not manufactured)
    - CTA: "Claim Your Discount"
  Goal: Close or recycle to nurture loop

Engagement triggers:
  - If clicked 3+ emails: Route to sales (hot lead)
  - If opened but not clicked: Increase frequency to every 3 days
  - If not opened after 2 emails: Switch to different subject line style
  - If clicked CTA: Remove from nurture, add to onboarding sequence
```

## Subject Line Optimization

```
SUBJECT LINE TESTING FRAMEWORK
================================

A/B TEST MATRIX (test one variable at a time):

  VARIABLE: Length
    Variant A: Short (3-5 words) — "New features inside"
    Variant B: Long (7-10 words) — "Check out these 5 new features that will save you time"
    Test size: 20% of list each, wait 4 hours, send winner to remaining 60%

  VARIABLE: Personalization
    Variant A: "Your weekly update"
    Variant B: "[First Name], your weekly update is here"

  VARIABLE: Question vs. Statement
    Variant A: "Are you making this SEO mistake?"
    Variant B: "The SEO mistake costing you traffic"

  VARIABLE: Urgency
    Variant A: "Sale ends soon"
    Variant B: "Sale ends Thursday at 11:59 PM PST"

  VARIABLE: Emoji
    Variant A: "Your report is ready"
    Variant B: "📊 Your report is ready"

STATISTICAL SIGNIFICANCE CALCULATOR:
  Minimum sample size for 95% confidence:
    - List > 10,000: 20% each variant (4,000 per group)
    - List 1,000–10,000: 25% each variant
    - List < 1,000: 30% each variant
  Wait time before declaring winner:
    - High-volume senders (50K+): 2-4 hours
    - Mid-volume (5K–50K): 4-8 hours
    - Low-volume (< 5K): 12-24 hours

TOP PERFORMING SUBJECT LINE FORMULAS:
  1. "How to [achieve desirable outcome]" — Avg open: 28%
  2. "The [number] [industry] trends you need to know" — Avg open: 26%
  3. "[First Name], [personalized insight]" — Avg open: 31%
  4. "Urgent: [time-sensitive information]" — Avg open: 24%
  5. "You're invited: [exclusive event/offer]" — Avg open: 22%
  6. "We noticed you [behavior] — here's what to do next" — Avg open: 29%
```

## Email Copywriting Techniques

```
PERSUASIVE COPY FRAMEWORKS
============================

AIDA (Attention → Interest → Desire → Action):
  Best for: Product launches, promotional emails
  Example:
    Attention: "Stop wasting 10 hours a week on manual reporting"
    Interest: "Introducing the only tool that automates your entire reporting workflow"
    Desire: "Teams using [Product] save an average of 12.5 hours per week"
    Action: "Start your free 14-day trial →"

PAS (Problem → Agitate → Solution):
  Best for: Lead nurture, pain-point focused emails
  Example:
    Problem: "Your email open rates have dropped 15% this quarter"
    Agitate: "That means 15,000 potential customers aren't seeing your offers — costing you an estimated $45K in lost revenue"
    Solution: "Our new segmentation engine helped [Company] increase open rates by 34% in 30 days"

BAB (Before → After → Bridge):
  Best for: Case study emails, transformation stories
  Example:
    Before: "Before [Product], the team spent Fridays manually compiling reports"
    After: "Now, reports generate automatically every Monday morning"
    Bridge: "Here's exactly how the transition works..."

Story Framework:
  Best for: Founder emails, brand storytelling
  Structure:
    - Opening hook (unexpected statement or question)
    - The struggle (vulnerability builds trust)
    - The turning point (insight or discovery)
    - The result (tangible outcome with numbers)
    - The lesson (applicable to reader)
    - The CTA (natural next step)
  Length: 300-500 words (keep it tight)
  Tone: Conversational, authentic, first-person

SCARF Model for Emotional Triggers:
  Status: "Join the 500+ companies already using [Product]"
  Certainty: "Predictable results — 90-day money-back guarantee"
  Autonomy: "Choose your plan, customize your workflow"
  Relatedness: "Built by marketers, for marketers"
  Fairness: "Transparent pricing, no hidden fees"
```

## CTA Optimization

```
CTA BEST PRACTICES
===================

BUTTON COPY FORMULAS:
  Action + Benefit: "Get My Free Report" (vs. "Download")
  First-person: "Start My Trial" (outperforms 3rd person by 10%)
  Specific: "Schedule My 15-Min Demo" (vs. "Contact Us")
  Low commitment: "See How It Works" (for early-funnel)
  Urgent: "Claim My Spot" (for events/webinars)

PERFORMANCE DATA BY CTA TYPE:
  "Download Now" — CTR: 2.1%
  "Get Started Free" — CTR: 2.8%
  "Schedule a Demo" — CTR: 1.4% (B2B)
  "Shop Now" — CTR: 1.9% (eCommerce)
  "Learn More" — CTR: 1.7%
  "Yes, I Want This!" — CTR: 2.5% (high commitment, high conversion)
  "Claim Your Discount" — CTR: 3.2% (urgency + benefit)

DESIGN SPECIFICATIONS:
  Button size: Minimum 44x44px (mobile touch target)
  Button width: Full-width on mobile, 150-250px on desktop
  Button color: High contrast against background (WCAG AA minimum 4.5:1)
  Best performing colors: Orange (#FF6B35), Green (#28A745), Red (#DC3545)
  Shape: Rounded corners (8-12px radius) outperform sharp by ~10%
  Placement: Above fold (first CTA) + below fold (second CTA)
  Micro-copy under button: "No credit card required" or "Takes 30 seconds"

CTA TESTING PRIORITIES:
  1. Text copy (biggest impact)
  2. Button color (second biggest)
  3. Button size/placement
  4. Micro-copy addition
  5. First vs. third person
```

## Deliverability and Spam Prevention

```
DELIVERABILITY CHECKLIST
=========================

SPAM SCORE ANALYSIS (Mail-Tester / SpamAssassin):
  Target score: Below 3.0 out of 10
  Each item adds to score:

  Content triggers:
    "Buy now" — +1.5
    "Free" (repeated) — +1.0
    "Act now" — +1.5
    "Limited time" — +0.5
    ALL CAPS in body — +1.0
    Excessive links (>10) — +1.5
    Image-to-text ratio > 65% — +2.0
    Hidden text — +3.0
    Too many exclamation marks — +0.5

  Technical requirements:
    SPF record configured: Required (−3.0 if missing)
    DKIM signed: Required (−3.0 if missing)
    DMARC policy: Required (−2.0 if missing)
    Reverse DNS: Required (−2.0 if missing)
    SSL certificate: Required

  OPTIMIZATION CHECKLIST:
  ☐ Text-to-image ratio at least 60% text
  ☐ One unsubscribe link (visible, not hidden)
  ☐ Physical mailing address in footer (CAN-SPAM requirement)
  ☐ No spam trigger words in first 50 characters
  ☐ Links use HTTPS
  ☐ Images have alt text
  ☐ HTML source is clean (minified, no comments)
  ☐ Plain text version included
  ☐ Send from authenticated domain
  ☐ Warm-up IP address for new domains (2 weeks minimum)

AUTHENTICATION SETUP:
  SPF Record: "v=spf1 include:_spf.sending-domain.com ~all"
  DKIM: Generated by ESP (typically 2048-bit key)
  DMARC Policy: "v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com"
    → Progress to p=quarantine after 30 days
    → Progress to p=reject after 60 days
  BIMI: Brand logo in inbox (requires DMARC p=reject + signed certificate)

WARM-UP SCHEDULE (New Sending Domain):
  Week 1: 50 emails/day (high-engagement list only)
  Week 2: 150 emails/day
  Week 3: 400 emails/day
  Week 4: 1,000 emails/day
  Week 5: 2,500 emails/day
  Week 6: 5,000+ emails/day
  Monitor: Complaint rate < 0.1%, bounce rate < 2%

CAN-SPAM COMPLIANCE REQUIREMENTS:
  - Valid physical postal address (footer)
  - Clear and conspicuous unsubscribe mechanism
  - Honor opt-out within 10 business days
  - No deceptive subject lines or From addresses
  - Include opt-out on every commercial email
  - Penalty for violation: Up to $50,120 per email (2024 adjusted)

GDPR EMAIL REQUIREMENTS (EU recipients):
  - Explicit opt-in consent required (pre-checked boxes illegal)
  - Consent record must be maintainable (date, method, IP)
  - Right to be forgotten (delete within 30 days of request)
  - Clear privacy notice link
  - Data Protection Officer contact if processing > 100K records
```

## Performance Benchmarks

```
EMAIL METRICS BENCHMARKS (2024 INDUSTRY AVERAGES)
===================================================

By Industry:
  Technology:       Open Rate 21.2% | CTR 2.6% | Unsubscribe 0.3%
  eCommerce:        Open Rate 24.1% | CTR 3.1% | Unsubscribe 0.4%
  B2B Services:     Open Rate 19.8% | CTR 2.2% | Unsubscribe 0.2%
  Healthcare:       Open Rate 22.4% | CTR 2.0% | Unsubscribe 0.2%
  Finance:          Open Rate 20.6% | CTR 2.3% | Unsubscribe 0.3%
  Media/Publishing: Open Rate 25.3% | CTR 3.4% | Unsubscribe 0.5%
  Non-profit:       Open Rate 28.7% | CTR 3.6% | Unsubscribe 0.4%
  SaaS:             Open Rate 22.8% | CTR 2.9% | Unsubscribe 0.3%

By Campaign Type:
  Welcome series:         Open 45-55% | CTR 10-15%
  Promotional:            Open 20-30% | CTR 2-4%
  Newsletter:             Open 18-28% | CTR 2-3%
  Transactional:          Open 40-60% | CTR 5-10%
  Announcement:           Open 25-35% | CTR 3-5%
  Re-engagement:          Open 15-25% | CTR 1-3%
  Cart abandonment:       Open 35-45% | CTR 5-8%

By Company Size:
  Small (<500 subs):  Open 28% | CTR 3.2%
  Medium (500-10K):   Open 24% | CTR 2.8%
  Large (10K-100K):   Open 22% | CTR 2.4%
  Enterprise (100K+): Open 20% | CTR 2.1%

OPTIMAL SEND TIMES BY INDUSTRY:
  B2B: Tuesday-Thursday, 10 AM - 2 PM (recipient timezone)
  B2C: Tuesday, Thursday, Sunday, 8-10 AM and 7-9 PM
  eCommerce: Wednesday 2 PM, Sunday 10 AM
  SaaS: Tuesday 10 AM, Thursday 2 PM
  Media: Monday 6 AM, Friday 12 PM

LIFETIME VALUE IMPACT:
  Customers who engage with email series: 2.5x higher LTV
  Revenue per email send: $0.08 average (eCommerce), $0.15 (SaaS)
  ROI: $36 for every $1 spent (DMA 2024 benchmark)
```

## Integration Points

- **Mailchimp / MailerLite / ConvertKit**: Campaign creation, template editor, A/B testing, automation builder, analytics dashboard
- **SendGrid / Amazon SES / Postmark**: Transactional email delivery, sender reputation monitoring, bounce/complaint tracking
- **HubSpot / Salesforce / Zoho CRM**: Contact segmentation, behavioral triggers, deal integration, email activity logging
- **Litmus / Email on Acid**: Cross-client rendering preview (70+ email clients), spam testing, accessibility validation
- **Canva / Figma**: Email template design, image creation, banner graphics
- **Google Analytics**: UTM parameter tracking, conversion attribution, landing page behavior
- **BreachQuest / GlockApps**: Deliverability testing, inbox placement monitoring, blacklist checking
- **OptinMonster / Sumo**: Landing page integration for email capture forms

## Edge Cases

- **High-volume senders (100K+ emails/day)**: Require dedicated IP warm-up (4-6 weeks), ESP relationship (SendGrid Enterprise, Amazon SES with throughput approval), compliance team for list hygiene
  - Implement throttling: 500 emails/minute per IP to avoid rate limiting
  - Separate transactional and marketing IPs to protect deliverability
  - Set up suppression lists synced across all sending domains

- **B2B cold outreach emails**: Different rules apply — no CAN-SPAM exemption, must include clear opt-out, TCPA compliance for SMS follow-ups
  - Keep under 150 words for cold outreach
  - Use conversational From name (not just company name)
  - Personalize first line with company-specific reference
  - Limit to 1-2 emails per week per prospect
  - Follow up 4-7 times over 30 days before moving to nurture

- **International/multilingual campaigns**: Consider timezone-based sending, cultural differences in humor/tone, local compliance (CASL in Canada, GDPR in EU, LGPD in Brazil)
  - CASL requires express consent (higher bar than opt-in)
  - GDPR requires documented consent with purpose specification
  - Japan's APPI has additional requirements for personal data

- **Email client rendering issues**: Outlook uses Word engine (not HTML), Gmail strips some CSS, Apple Mail handles CSS well
  - Use table-based layout for Outlook compatibility
  - Inline all CSS (no style blocks for maximum compatibility)
  - Test in top 10 clients: Gmail, Apple Mail, Outlook.com, Outlook desktop, Yahoo, Samsung Mail, Android Mail, AOL, Windows Mail, Yahoo Mobile
  - Use MJML or similar framework for responsive email coding

- **List fatigue and engagement decay**: If open rates drop below 15%, implement re-engagement campaign before continuing regular sends
  - Segregate inactive subscribers (90+ days) into separate list
  - Run win-back campaign: "Do you still want to hear from us?"
  - Clean list: Remove non-responders to improve sender score
  - Consider sending frequency reduction for low-engagement segments

- **Email accessibility**: 1 in 4 adults has a disability — accessible emails expand reach
  - Alt text on all images (descriptive, not "image1.jpg")
  - Font size minimum 14px (16px recommended for body)
  - Color contrast ratio minimum 4.5:1 (WCAG AA)
  - Logical heading structure (H1 → H2 → H3)
  - Screen reader testing with VoiceOver (Mac) or TalkBack (Android)
  - Don't convey information by color alone