Every sermon deserves a second life.

One sermon.
A full week of content.

Every Sunday, a pastor pours their heart into a message that reaches 200 people in a room. By Monday, it's gone. ETS exists to make sure no sermon dies on the stage.

1 sermon
5 Posts1 Blog1 Guide1 Email1 Newsletter

“I got Monday back.”

— Comms Director, 350-member church
Domain  extendthesermon.comType  SaaS ProductParent  Church Media SquadEst.  2026
Brand Guidelines v2.0March 2026
Brand Manifesto
Your pastor spent 20 hours on that sermon.
It reached 200 people in one room.
By Monday morning, it was gone.

We don't accept that.

Every sermon holds a week of content — social posts, blog articles, discussion guides, newsletters — waiting to be unlocked. ETS is the key. Upload once. Reach thousands. No sermon dies on the stage.
Internal Positioning

For church communications directors at 100–2,000 attendance churches who spend hours repurposing sermon content, Extend the Sermon is an AI content engine that produces a full week of multi-platform content from one upload in under 12 minutes — unlike manual workflows or generic AI tools — because it understands the language, tone, and structure of church communication.

“We take the sermon your pastor already preached and turn it into content your church actually needs — fast, branded, and done.
01 — Foundation

Voice & Personality

ETS speaks like a sharp, capable friend on your church comms team. Not preachy. Not corporate. Not robotic. We understand the mission — we're here to multiply it.

Direct
Short sentences. Active voice. No filler. Every word earns its place.
YES
"Upload. Process. Done."
NO
"Our platform leverages AI to facilitate multi-channel content creation."
Warm
We get it — churches are busy. We're here to help, not lecture.
YES
"Built for churches that do more with less."
NO
"Optimized for faith-based organizational entities."
Confident
The product works. No hedging, no "might" or "could potentially."
YES
"ETS turns one sermon into a full week of content."
NO
"ETS may potentially help improve your content workflow."
Plain
No jargon. No buzzwords. If a volunteer can't understand it, rewrite it.
YES
"Upload your sermon. Get content back."
NO
"Seamlessly integrate your homiletic assets into a digital ecosystem."
Brand Personality
ETS sounds like a sharp friend on your church comms team who happens to be really good at their job. Not a pastor. Not a consultant. Not a robot.
Voice in Action
Three real-world specimens showing the brand voice applied to actual content. Use these as pattern-match references.
Marketing Email
Subject: Your sermon just made Monday easier.

Hey Sarah,

Last Sunday's message on forgiveness? It's now 5 social posts, a blog article, and a small-group guide — all ready to review.

No editing. No rewriting. Just your pastor's words, extended.

See your content →
WARMDIRECT
Error / Empty States
Upload didn't go through.
The file was too large (max 500 MB). Try a shorter recording or compress the audio first.
No sermons yet.
Upload your first sermon and we'll turn it into a full week of content. Takes about 5 minutes.
WARMPLAIN
Social Post
Extend the Sermon
@extendthesermon
Your pastor spent 20 hours on Sunday's message.

What if it could reach your church all week?

Upload → 5 posts, 1 blog, 1 discussion guide. Done in minutes.

extendthesermon.com
CONFIDENTDIRECT
Messaging Hierarchy
Organized by function. Tier 1 leads everywhere. Tier 3 drives action.
Tier 1 — Primary Claim
Heroes, billboards, paid ads
“One sermon. A full week.”
“Your sermon, extended.”
Tier 2 — Value Statements
Landing pages, onboarding, features
“Content your church needs.”
“Built for busy churches.”
“From pulpit to platform.”
Tier 3 — Proof / CTA
Buttons, email subjects, CTAs
“Upload. Process. Done.”
“See it in action →”
“Try your first sermon free.”
Pain Phrases
Lead with the buyer's reality before the solution. Use in ads, landing pages, and onboarding.
Sunday's over. The week of content isn't.
Great sermon. No time to extend it.
Your pastor preached it. Now what?
Six hours on content. Still feels thin.
The message was powerful. The reach wasn't.
Too many platforms. Too little time.
Power Phrases
Use these in headlines, CTAs, and product copy. They embody the brand voice.
One sermon. A full week.
Upload. Process. Done.
Your sermon, extended.
Content your church needs.
Built for busy churches.
From pulpit to platform.
Tone Modulation Matrix
Voice attributes shift emphasis by context. Each column shows the dominant two attributes.
Context
Lead With
Support With
Onboarding
Warm
Plain
Pricing / Sales
Confident
Direct
Error States
Warm
Direct
Feature Announcements
Confident
Plain
Support / Help
Warm
Plain
Audience Message Map
Two buyers, different motivations. Tailor copy to the reader.
Comms Director (Buyer)
First impression: “This saves me 6+ hours every week.”
Objection: “Is this going to create more work to edit?”
Reframe: “Every output is review-ready, not raw.”
Proof: “5 posts, 1 blog, 1 guide — from one upload.”
Senior Pastor (Approver)
First impression: “My sermon reaches further without extra staff.”
Objection: “Will this dilute the sermon's message?”
Reframe: “The words stay yours. We just extend their reach.”
Proof: “Under $100/mo, no new hire needed.”
Copy Watch List — Anti-Patterns
Common traps that break the brand voice. Always rewrite.
Hedge words
NO
"ETS may help improve your workflow."
YES
"ETS turns one sermon into a full week."
Tech jargon
NO
"Leverage AI to facilitate content."
YES
"Upload your sermon. Get content back."
Church jargon as filler
NO
"Our ministry-focused SaaS solution."
YES
"Built for churches that do more with less."
Passive voice
NO
"Content is generated by the platform."
YES
"ETS generates your content."
Corporate-speak
NO
"Seamlessly integrate your homiletic assets."
YES
"Connect your sermon. Done."
Vague hedging
NO
"Potentially unlock new engagement."
YES
"Reach more people this week."
ETS Purple
#513DE5
Lime
#D5F610
Charcoal
#333232
Wash
#EEEDF9
03 — Identity

Color System

Purple-first, grounded by charcoal and electrified by lime. The palette communicates both trust (purple) and energy (lime). Light backgrounds are default. Dark mode is supported but not primary.

Primary Colors
#513DE5Click to copy
ETS Purple
RGB 81, 61, 229
Logo mark, CTAs, links
3.9:1 on white · AA Large
#8E81EEClick to copy
Mid Purple
RGB 142, 129, 238
Hover states, secondary
2.5:1 · Decorative only
#B8B0F4Click to copy
Light Purple
RGB 184, 176, 244
Tags, badges, highlights
1.7:1 · Bg use only
#EEEDF9Click to copy
Purple Wash
RGB 238, 237, 249
Section tints, card bg
1.1:1 · Bg use only
Accent & Neutral
#D5F610Click to copy
Electric Lime
RGB 213, 246, 16
Accents on dark bg only
1.2:1 on white · FAIL
#333232Click to copy
Charcoal
RGB 51, 50, 50
Headlines, dark UI
12.6:1 on white · AAA
#EAEAEAClick to copy
Grey
RGB 234, 234, 234
Borders, dividers, subtle bg
1.2:1 · Bg use only
#FFFFFFClick to copy
White
RGB 255, 255, 255
Page backgrounds, cards
Electric Lime — Restricted Usage
Lime (#D5F610) has a 1.2:1 contrast ratio on white — it fails WCAG at all sizes. Use only on dark backgrounds (#111111, #333232, #513DE5) or as a graphic/border accent with no text overlay on light surfaces. Required text color on lime backgrounds: #111111 (12.8:1 — AAA).
Functional / Semantic
#10B981Click to copy
Success Green
RGB 16, 185, 129
Completed, online
3.0:1 · Pair with icon
#EF4444Click to copy
Error Red
RGB 239, 68, 68
Errors, destructive
3.9:1 · Pair with icon
#3B82F6Click to copy
Info Blue
RGB 59, 130, 246
Links, focus, info
3.1:1 · Pair with icon
#F59E0BClick to copy
Warning Amber
RGB 245, 158, 11
Caution, pending
2.1:1 · Pair with icon
Color Blindness Guidance
Functional colors (success, error, warning, info) must never be the sole differentiator — always pair with an icon, label, or pattern. The purple-to-lime Energy gradient degrades under tritanopia; do not use it to encode meaning. Purple and lime remain distinguishable under deuteranopia and protanopia.
Neutral Scale
Cool gray ramp with role assignments. CMS uses warm cream #F9F5F1. ETS uses cool #FAFAFA. Click any swatch to copy.
900
800
700
600
500
400
300
200
100
50
0
#111111 gray-900
Headlines on dark · 18.1:1
#1F2937 gray-800
Body text on dark · 15.4:1
#374151 gray-700
Dark UI surfaces · 10.7:1
#4B5563 gray-600
Secondary text · 7.2:1
#6B7280 gray-500
Muted / captions · 4.6:1
#9CA3AF gray-400
Disabled text · 2.7:1
#D1D5DB gray-300
Borders, dividers · 1.5:1
#E5E7EB gray-200
Subtle borders · 1.3:1
#F3F4F6 gray-100
Card backgrounds · 1.1:1
#FAFAFA gray-50
Page background · 1.0:1
#FFFFFF white
Cards, modals · 1.0:1
Text Hierarchy
Light Mode
Heading
#111111 · 17.1:1 AAA
Body copy
#374151 · 10.3:1 AAA
Caption text
#6B7280 · 4.6:1 AA
Muted
#9CA3AF · 2.8:1 Decorative
Dark Mode
Heading
#F5F5F5 · 17.4:1
Body copy
#D1D5DB · 12.0:1
Caption text
#6B7280 · 4.2:1
Muted
#374151 · 1.9:1 Decorative
Gradients
Purple Fade
Hero sections, premium cards, overlays
Text on gradient ✓
linear-gradient(135deg, #513DE5, #B8B0F4)
Energy
CTAs, progress bars, AI processing states
Text on gradient ✓
linear-gradient(135deg, #513DE5, #D5F610)
Soft Canvas
Page backgrounds, section tints
Text on gradient ✓
linear-gradient(180deg, #FFFFFF, #EEEDF9)
Color in Context
How the palette applies to real UI surfaces.
Extend
the sermon
Gradient Applications
Cards, overlays, hero sections
70%
20%
10%
70 / 20 / 10 Ratio
Purple dominant, charcoal ground, lime spark
Abstract Composition
Brand palette as geometric art
Palette on Dark
Every brand color rendered on dark surfaces with recalculated contrast ratios.
Purple
#513DE5
3.2:1 vs #111
Mid Purple
#8E81EE
5.6:1 vs #111
Light Purple
#B8B0F4
8.4:1 vs #111
Lime
#D5F610
12.8:1 vs #111
White
#FFFFFF
18.1:1 vs #111
Button on dark
Badge on dark
Processing
Text on dark
Heading
Body text on dark
Color Rules
DO
Use #513DE5 for all logo mark instances
Use Electric Lime only on dark backgrounds
Use cool neutral ramp for UI chrome
Pair purple with white or light text
Use Purple Wash (#EEEDF9) for section tints
Always pair functional colors with icons/labels
DON'T
Use lime as text on white/light backgrounds
Use CMS purple (#3B1559) — that's the parent brand
Use #9CA3AF for readable body text (fails AA)
Use warm cream backgrounds (CMS territory)
Use more than 2 accent colors per composition
Rely on color alone to communicate state
From pulpit
to platform.
Upload → Transcribe → Generate → Review → Publish
Typography System
One sermon.
a full week of content.
const voice = 'pastoral, clear, modern';
04 — Identity

Typography

Two typefaces — Inter for everything human-facing, JetBrains Mono for code and data. Both are free, open-source, and optimized for screens. Never substitute.

Aa
Inter
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz 0123456789
Bold
The quick brown fox jumps over the lazy dog. Clear, geometric, built for screens at any size.
Primary
Extend
the sermon
Inter
Headlines, body copy, UI text, buttons. Clean geometric sans with excellent legibility from 11px to 96px.
400500600700800
A B C D E F G H I J K L M
a b c d e f g h i j k l m
0 1 2 3 4 5 6 7 8 9 & % @ ! ?
Mono
const content = await ets.process(sermon);
$47/mo
JetBrains Mono
Code snippets, data, metrics, pricing, hex values. Distinctive ligatures reinforce the tool identity.
400500700
A B C D E F G H I J K L M
{ } => !== && || ++
0 1 2 3 4 5 6 7 8 9 # $ @
Type Scale
Display
56px / 800 / −1.8px
One sermon, a full week
H1
40px / 800 / −1.0px
Your sermon, extended
H2
28px / 600 / −0.8px
How it works
H3
20px / 600 / −0.5px
Upload your sermon
Body
16px / 400 / 1.65
ETS processes your sermon audio, generates a transcript, then creates social posts, blog articles, and discussion guides tailored to your church.
Small
13px / 400 / 1.6
Helper text, captions, meta information, supporting content.
Label
10px / 700 / 1.5px
SECTION LABEL · DATA LABEL · EYEBROW
$47/mo · $97/mo · $197/mo · #513DE5Code — 13px / 400
Type in Use
A real-world editorial layout proving the type system works under production conditions.
This Week's Content

The Power of Grace: Why Forgiveness Starts With Letting Go

Pastor Michael opened Sunday's sermon with a story about a letter he never sent. For fifteen years, it sat in a drawer — addressed, stamped, never mailed. The letter was an apology. Not to someone who had wronged him, but to someone he had failed to forgive. That drawer, he said, is where most of us keep our grace: sealed, ready, but never delivered.

“Grace isn't something you keep. It's something you send.”

The sermon explored three dimensions of grace — receiving it, practicing it, and extending it to people who haven't asked for it. Each dimension mapped to a different part of the prodigal son parable, reframed for modern church life.

Published Mar 16, 20265 min read
Weight Axis Rules
800 — Display scale only (40px+): hero headlines, page titles
700 — Heading scale (20–36px): section titles, pull quotes, card titles
600 — Subheading scale (16–28px): H2, H3, button labels, nav items
500 — UI emphasis: active nav, selected tabs, table headers
400 — Body and caption: all running text, descriptions, help text
DO
Inter for all headlines, body, and UI
JetBrains Mono for code, pricing, and metrics
Tight letter-spacing at display sizes (−1px to −1.8px)
ALL CAPS only at 10–11px label/eyebrow scale
Use font-weight 800 exclusively for ≥40px display
Line height 1.05–1.2 for headings, 1.6–1.65 for body
DON'T
Use system fonts in branded materials
Use Inter below 10px (minimum readable size)
Use weights below 400 (no Light/Thin)
Use decorative or script fonts anywhere
Use JetBrains Mono for body copy or headlines
Mix more than 3 font weights per page
“The icon is a visual system,
not just a logo.”
05 — Expression

Visual Language

The ETS icon — a rounded square with input/output nodes — becomes a pattern element, a section divider, a watermark, a texture. The forward arrow represents transformation: one input, many outputs.

Icon Anatomy
ETS Icon
Full Icon
The complete mark — always includes the input node and output arrow
Input Node
The circle on the left — one sermon goes in
Output Arrow
The chevron on the right — content extends outward
Layout Principles
Light Canvas First
Default to white/near-white. Purple and lime punctuate. Dark mode is supported, not primary.
Generous White Space
The icon needs room to breathe. Crowded layouts kill the brand's sense of clarity and precision.
One Point of Energy
One lime accent per composition. Scattered accents dilute the impact — it must feel like a focused spark.
Patterns & Textures
Repeating patterns for backgrounds, sections, and overlays. Built with CSS for infinite scalability.
Dot Grid
Light watermark repeat
Dense Grid
Diagonal pattern
Node Network
Input → output metaphor
Subtle Texture
Organic scattered
Dividers & Watermarks
Icon Divider
Section separator with brand mark
Wave Divider
Flowing section transition
Watermark
Ghosted overlay for content
05b — Expression

Section Dividers

Three production-ready patterns for giving your landing page rhythm. Drawn from real SaaS reference — adapted to ETS tokens. Each ships as a copy-paste JSX snippet, zero image assets.

Divider 01 — Radial Glow Band
A full-width dark band with a soft radial purple bloom at centre — the same depth technique used by Make.com. Creates atmosphere between a light section and a dark pricing/CTA panel. Pure CSS, no SVG.
Features section (light)
Pricing / CTA section (dark)
JSX + Tailwind
{/* Divider 01 — Radial Glow Band */}
{/* Sits between a light section (above) and dark section (below). */}
{/* Change the top-wave fill to match your light section bg.       */}
{/* Change the bottom-wave fill to match your dark section bg.     */}
<div className="relative bg-[#333232] overflow-hidden">
  {/* top wave — light section colour bites down */}
  <svg viewBox="0 0 1440 80" preserveAspectRatio="none" className="block w-full h-14 -mb-px">
    <path
      d="M0,0 L0,40 C240,80 480,0 720,40 C960,80 1200,0 1440,40 L1440,0 Z"
      fill="#FFFFFF"
    />
  </svg>
  {/* glow body */}
  <div className="relative h-20">
    {/* purple radial bloom */}
    <div
      className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 pointer-events-none"
      style={{
        width: 600,
        height: 240,
        background:
          "radial-gradient(ellipse at center, rgba(81,61,229,0.44) 0%, transparent 70%)",
      }}
    />
    {/* lime spark */}
    <div
      className="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2"
      style={{
        width: 40,
        height: 2,
        borderRadius: 2,
        background: "#D5F610",
        boxShadow: "0 0 16px #D5F610, 0 0 40px rgba(213,246,16,0.27)",
      }}
    />
  </div>
  {/* bottom wave — dark section colour bites up */}
  <svg viewBox="0 0 1440 80" preserveAspectRatio="none" className="block w-full h-14 -mt-px">
    <path
      d="M0,80 L0,40 C240,0 480,80 720,40 C960,0 1200,80 1440,40 L1440,80 Z"
      fill="#111111"
    />
  </svg>
</div>
Best used between
Features → Pricing · Testimonials → CTA · Any light-to-dark transition
Customise
Increase h-24 for more drama · Remove the lime spark for a pure atmosphere version
Divider 02 — SVG Wave Clip
A gentle SVG wave shapes the bottom of a section, revealing the next colour below. Used by Dopper and dozens of SaaS landing pages. Scales to any viewport width. Swap the fill colour to match your outgoing section bg.
Hero / header section (purple)
Features section (white)
JSX + Tailwind
{/* Divider 02 — SVG Wave Clip */}
{/* Place at the BOTTOM of the outgoing section.          */}
{/* Set fill="<outgoing-section-bg>" so it masks cleanly. */}
<div className="relative -mb-px">
  <svg
    viewBox="0 0 1440 80"
    preserveAspectRatio="none"
    className="block w-full h-14"
  >
    <path
      d="M0,40 C240,80 480,0 720,40 C960,80 1200,0 1440,40 L1440,80 L0,80 Z"
      fill="#513DE5"  {/* ← match your section bg */}
    />
  </svg>
</div>
Colour variants
Purple
White
Charcoal
Off-white
White
Lime wash
Best used between
Hero → Features · Any colour-swap section break · Above a testimonials band
Avoid
Using on same-colour sections (pointless) · More than 1–2 waves per page (visual noise)
Divider 03 — Marquee Ticker
An infinitely scrolling strip of brand phrases in lime on charcoal. Separates sections while reinforcing the brand voice mid-scroll. Common across modern SaaS (Typeform, Linear, Vercel). CSS animation only — no JS library needed.
Features section
Upload. Process. Done.One sermon. A week of content.Upload. Process. Done.Extend the Sermon.Upload. Process. Done.5 posts. 1 blog. 1 email.Upload. Process. Done.Built for church comms.
Upload. Process. Done.One sermon. A week of content.Upload. Process. Done.Extend the Sermon.Upload. Process. Done.5 posts. 1 blog. 1 email.Upload. Process. Done.Built for church comms.
Social proof / testimonials
JSX + CSS
{/* Divider 03 — Marquee Ticker */}
{/* globals.css — add once */}
@keyframes ets-marquee {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
.ets-marquee-track {
  display: flex;
  width: max-content;
  animation: ets-marquee 18s linear infinite;
}

{/* component */}
const PHRASES = [
  "Upload. Process. Done.",
  "One sermon. A week of content.",
  "Extend the Sermon.",
  "5 posts. 1 blog. 1 email.",
];

<div className="overflow-hidden bg-[#333232] py-3.5 border-y border-white/5">
  <div className="ets-marquee-track">
    {[...Array(2)].map((_, set) => (
      <div key={set} className="flex items-center">
        {PHRASES.map((phrase, i) => (
          <span key={i} className="flex items-center whitespace-nowrap">
            <span className="px-7 text-[#D5F610] text-xs font-bold tracking-wide">
              {phrase}
            </span>
            <span className="text-[#513DE5] text-[10px]">◆</span>
          </span>
        ))}
      </div>
    ))}
  </div>
</div>
Duplicate the phrase array ×2 and animate to -50% for a seamless infinite loop. No JS library needed.
Best used between
Hero → Social proof · Features → Testimonials · Any section where you want brand voice mid-scroll
Customise
Slow down with 30s for elegance · Speed up with 10s for energy · Pause on hover via animation-play-state
Quick Reference
01
Radial Glow Band
Context: Light → Dark
Atmosphere + depth. Pure CSS.
02
SVG Wave Clip
Context: Any colour swap
Organic shape transition. Scalable SVG.
03
Marquee Ticker
Context: Brand voice moment
Infinite scroll strip. CSS animation only.
06 — Expression

Liquid Purple

The signature motion element of ETS — a spinning conic-gradient ring built from the purple palette. Applied to CTAs, focus rings, active tabs, and loading states.

Processing...68%
Church name...
06 — Expression

Motion & Animation

Movement is purposeful and calm. ETS isn't flashy — animations guide attention, confirm actions, and make the interface feel alive. All animations respect prefers-reduced-motion.

Pulse
Loading states. 2–3s ease-in-out.
Slow Rotate
AI processing. 8–12s linear.
Progress
Build states. Energy gradient.
Breathe
Live/recording indicator.
Hover State Patterns
Hover each card to see the documented behavior live.
CTA Button
scale(1.02) · box-shadow +4px · 250ms ease-out
Hover me
Card / Tile
translateY(-2px) · shadow increase · 250ms ease
Hover me
Icon / Link
opacity 0.85 · 150ms ease
Hover me
Scroll Entry Patterns
Triggered via IntersectionObserver at 10% element visibility. Stagger: 60ms delay per child.
Fade Up
opacity: 0 → 1
transform: translateY(16px) → 0
duration: 400ms
easing: cubic-bezier(0.4,0,0.2,1)
reduced-motion: 150ms opacity only
Fade In
opacity: 0 → 1
transform: none
duration: 400ms
easing: ease
use for: full-width banners, heroes
Timing
150ms  Micro interactions (hover, focus)
250ms  State transitions (toggle, expand)
400ms  Page transitions, modals, scroll entry
2–3s   Loading loops, ambient
Easing
Default: cubic-bezier(0.4, 0, 0.2, 1)
Enter: cubic-bezier(0, 0, 0.2, 1)
Exit: cubic-bezier(0.4, 0, 1, 1)
Spring: cubic-bezier(0.34, 1.2, 0.64, 1)
Motion Reference
Live examples of the brand animation patterns.
Loading Pulse
Sequential appear → grow → pulse
TimeProgressease-outease-in-out
Easing Curves
ease-out (purple) vs ease-in-out (lime)
Enter Sequence
Staggered card entry from below
Built on consistent foundations.
Spacing · Shadows · Grid · Dark Mode · Developer Tokens
07 — System

Design Foundations

Spacing, elevation, and layout tokens that ensure consistency across every page and component. All values are base-8.

Spacing Scale (Base-8)
4px
space-1
8px
space-2
12px
space-3
16px
space-4
20px
space-5
24px
space-6
32px
space-8
40px
space-10
48px
space-12
64px
space-16
80px
space-20
Border Radius
6px
radius-sm
10px
radius-md
12px
radius-lg
16px
radius-xl
20px
radius-2xl
9999px
radius-full
Elevation & Shadows
shadow-sm
0 1px 2px rgba(51,50,50,0.05)
Chips, tags, inline elements
shadow-md
0 2px 8px rgba(51,50,50,0.08)
Cards, dropdowns, popovers
shadow-lg
0 8px 24px rgba(51,50,50,0.12)
Modals, overlays, floating panels
shadow-xl
0 16px 48px rgba(51,50,50,0.16)
Mobile nav drawer, toasts
Responsive Grid & Breakpoints
Breakpoint
Width
Columns
Gutter
sm
640px
1
16px
md
768px
2
16px
lg
1024px
3
24px
xl
1280px
3–4
24px
Max content width: 1200px centered. Dashboard sidebar: 240px fixed on lg+.
Developer Handoff
Copy-paste token definitions. CSS custom properties and Tailwind config extension.
CSS Custom Properties
:root {
  --ets-purple: #513DE5;
  --ets-purple-mid: #8E81EE;
  --ets-purple-light: #B8B0F4;
  --ets-purple-wash: #EEEDF9;
  --ets-purple-deep: #3B2BA8;
  --ets-lime: #D5F610;
  --ets-charcoal: #333232;
  --ets-space-1: 4px;
  --ets-space-2: 8px;
  --ets-space-4: 16px;
  --ets-space-6: 24px;
  --ets-space-8: 32px;
  --ets-space-12: 48px;
  --ets-space-16: 64px;
  --ets-radius-sm: 6px;
  --ets-radius-md: 10px;
  --ets-radius-lg: 12px;
  --ets-radius-xl: 16px;
  --ets-shadow-sm: 0 1px 2px rgba(51,50,50,0.05);
  --ets-shadow-md: 0 2px 8px rgba(51,50,50,0.08);
  --ets-shadow-lg: 0 8px 24px rgba(51,50,50,0.12);
}
Tailwind Config
// tailwind.config.ts
theme: {
  extend: {
    colors: {
      ets: {
        purple: '#513DE5',
        'purple-mid': '#8E81EE',
        'purple-light': '#B8B0F4',
        'purple-wash': '#EEEDF9',
        'purple-deep': '#3B2BA8',
        lime: '#D5F610',
        charcoal: '#333232',
      }
    },
    borderRadius: {
      ets: '12px',
    },
    fontFamily: {
      sans: ['Inter', 'system-ui'],
      mono: ['JetBrains Mono', 'monospace'],
    }
  }
}
Dark Mode Token Map
Dark mode is supported, not primary. Map each light token to its dark equivalent.
Surface Scale (Dark)
bg-base
#333232Page background
bg-surface
#1A1A1ACards, panels
bg-elevated
#252525Dropdowns, popovers
bg-overlay
#303030Modals, toasts
Color Mapping
purple: #513DE5#8E81EE
lime: #D5F610#D5F610 (same)
text: #111111#F5F5F5
body: #4B5563#D1D5DB
border: #E5E7EB#2A2A2A
wash: #EEEDF9#1E1B3A
08 — System

Component Specimens

Core UI patterns used across the product. Every component documents its states. Build these 1:1 in your component library.

Buttons
Hover each button to see its live transition. Four variants with real hover states.
Primary
Accent (Lime)
Outline
Ghost
Upload Dropzone
The first thing users interact with. Shows drag, idle, and processing states.
📁
Drop your sermon here
MP3, MP4, WAV up to 500MB
Idle
📁
Drop to upload
Release to start processing
Drag Over
Processing sermon...
45% — Transcribing audio
Processing
Badges, Alerts & Toasts
Status indicators, system messages, and notification patterns.
Status Badges
ProcessingReadyPublishedErrorDraftNew
Alert Variants
Your content is ready to review.
Upload failed. Please try again.
Your plan includes 2 more sermons this month.
Tab Navigation
Content-type switcher pattern used throughout the product.
Social Posts
Blog Article
Discussion Guide
Newsletter
Tab content area — shows the selected content type for review and editing.
Form Inputs
Text inputs with label, placeholder, filled, error, and success states.
Default
Enter church name...
Error
Grace Community
Name already in use
Success
Grace Community Church
Available
Card Pattern
This Week
5 Posts Ready
Your sermon on Grace has been processed into 5 social posts, 1 blog article, and 1 discussion guide.
View content →
This Week
5 Posts Ready
Your sermon on Grace has been processed into 5 social posts, 1 blog article, and 1 discussion guide.
View content →
Dark Mode Buttons
A design system built for
speed and clarity.
From tokens to components to shipped product.
09 — Application

App Icons

The icon system at various sizes and contexts. The full icon (with nodes) is used at 32px+. Below 32px, crop to the rounded square only.

128px
96px
64px
48px
32px
24px
16px
OG / Social Card
1200x630 Open Graph preview for link sharing. Generated dynamically via app/opengraph-image.tsx.
extend the sermon
One Sermon.
A Full Week of Content.
AI-powered sermon repurposing for churches
extendthesermon.com
Social PostsBlogDiscussion GuideEmail
OG Card Preview
app/opengraph-image.tsx · 1200x630 dynamic
Platform Specifications
Each platform applies its own mask to the icon. Ensure the input node and output arrow remain inside the safe zone.
iOS App Icon
1024x1024 master asset
No transparency — iOS rejects alpha channels
Apple applies squircle mask automatically
Safe zone: 10% inset from all edges
Dark mode tinted variant: iOS 18+ support
ets-icon-ios-1024.png
Android Adaptive
512x512, two layers
Foreground: icon on transparent
Background: solid #513DE5 or gradient
Safe zone: 66% center circle — icon must fit
Renders as circle, squircle, or rounded square
ets-icon-android-fg.png / -bg.png
Favicon
16x16, 32x32, SVG
Simplified glyph at small sizes
SVG favicon for modern browsers
Dark variant: white icon on purple bg
Include ICO fallback for legacy browsers
favicon.ico / favicon.svg
PWA & Social
Manifest + OG cards
PWA manifest: 192x192, 512x512 maskable
Safe area: 80% center for maskable
OG card: 1200x630, logo + headline zone
Purple gradient background, white text
ets-og-card.png / icon-192.png
09b — Application

Icon Library

96 SVG icons for the ETS application. Consistent 24×24 stroke-based design using purple primary, lime accent, and charcoal neutral. Click any icon to copy its filename.

96 icons
Navigation10
Arrows & Direction5
Onboarding5
Upload & Input6
Processing Pipeline6
Content Types7
Social Platforms5
Actions14
Status Indicators7
Pricing & Billing7
Brand Kit5
Utility & Misc19
Developer Reference
All icons live in /brand-guide/icons/[name].svg. Import via Next.js <Image> or inline as React SVG. Purple icons use #513DE5 primary fill. Lime-accented icons use #D5F610 as secondary fill only. Charcoal #333232 for neutral/utility actions.
10 — Application

In Context

How the brand lives across digital and physical touchpoints — prioritizing the surfaces users interact with daily.

Digital Touchpoints
Dashboard
This Week
5 Posts Ready
Posts
Blog
Guide
App Dashboard
Content hub, status cards, nav
Extend the Sermon
@extendthesermon
Your pastor spent 20 hours on Sunday's message. What if it reached your church all week? 🙌
One sermon. A full week.
extendthesermon.com
Social Post Output
Generated Instagram/Twitter post
Your content is ready ✓
Hi Sarah, your sermon on “The Power of Grace” has been processed. 5 social posts, 1 blog, and 1 guide are waiting.
Review Content →
Transactional Email
Content-ready notification
Device Frame Templates
CSS device frames for mockups. Place screenshots or UI designs inside the screen areas.
MacBook
Website / dashboard
iPhone
Mobile responsive
iPad
Tablet layout
Browser
Chrome / Safari
Social Platform Frames
1:1
Instagram Post
Square format
Twitter / X Card
Preview card
CTA
Email Client
Gmail / Apple Mail
extendthesermon.com/dashboard
Browser Tab + Favicon
Chrome/Safari tab context
This Week
5 posts ready
1 blog article
Mobile Responsive
Phone-width dashboard view
Merchandise mockup
Merchandise
T-shirts, stickers, swag
11 — Application

Brand Family

ETS is a sibling brand to Church Media Squad (CMS). Both serve churches, but with distinct visual identities and strategic roles. Understanding the relationship ensures consistent, non-conflicting brand application.

Brand Relationship
CMS is the service brand — human-led, done-for-you media production. ETS is the product brand — AI-led, done-by-you content tools. They share a parent mission (helping churches communicate) but serve different buyer moments: CMS sells ongoing creative relationships; ETS sells immediate, self-serve productivity. They should never be conflated.
Brand Feeling
The emotional territory each brand owns. This is how they should feel, not just look.
CMS feels like...
Your creative agency on speed dial — warm, personal, relationship-first. Think: a coffee meeting with your designer.
ETS feels like...
A precision tool that just works — fast, clean, no small talk. Think: the moment you realize the work is already done.
Brand Architecture
Church Media Squad
Extend the Sermon
Hierarchy
CMS (parent) → ETS (product)
CMSETS
Shared DNA
Overlap: church mission, purple family
Powered by
extend the sermon
Powered-By Badge
Sub-brand attribution lockup
Church Media Squad
Model: Service (done-for-you)
Buyer: Churches needing ongoing creative
Tone: Warm, playful, community-focused
Palette: Warm purples, coral, cream
Price: Custom / relationship-based
Extend the Sermon
Model: Product (self-serve SaaS)
Buyer: Comms directors, <$100/mo budget
Tone: Direct, confident, precise
Palette: Cool purples, lime, charcoal
Price: $47 / $97 / $197 per month
Overlap rule: Purple is shared family DNA, but ETS uses #513DE5 (brighter) while CMS uses #3B1559 (deeper). Never use CMS Coral (#F9635D), CMS Orange (#F2AF39), or CMS Deep Purple (#3B1559) in ETS materials.
Never Use These in ETS
CMS Deep Purple
#3B1559
CMS Coral
#F9635D
CMS Orange
#F2AF39
CMS Pink
#CC4291