A brand that sounds like someone is actually there.

Most AI products in 2026 sound the same — Inter, purple gradient, breezy marketing voice, a rounded icon tile over every heading. ETS serves pastors, and pastors notice when something has nobody home. v3 is the rebuild: warm surface, editorial type, color used like it means something, and a voice that can sit at a kitchen table.

Sunday's message deserves more than a Monday morning.

ETS is a tool for the small communications team behind a local-church pastor. We turn one sermon — the Sunday sermon — into the blog, the email, the five social posts, the discussion guide, and the kids' sheet that the team would have rebuilt by hand on Tuesday. We do it in twelve minutes. We do it in your pastor's voice. We do it because the message was already good — it shouldn't need to be made from scratch every Monday.

The brand serves the same purpose. It's designed to feel like a thoughtful neighbour, not a SaaS pitch. Warm cream, not electric purple. A serif that reads like a book, not a system font that reads like a setup screen. A small accent of warm red that does what punctuation does — one mark, in the right place, to make the sentence land.

“Your pastor already did the hard work. We just keep it working all week.”

How the brand talks.

ETS sounds like a thoughtful church-comms director who knows the pastor personally. Plain words. No SaaS vocabulary. No exclamation points. Specific instead of general. Warm without being twee.

01

Warm

We're on your Monday with you, not pitching at you.

02

Blunt

Direct sentences. No hedging. No qualifiers we don't mean.

03

Pastoral

We respect the work of the pulpit. We never replace it.

04

Specific

Numbers, names, exact times. “Twelve minutes,” not “quick.”

What ETS says

We'll have your week's content back in your inbox in about twelve minutes.
Your pastor preached this. We're just keeping it in front of people.
Edit anything. Skip anything. Publish anything. It's your church.
We don't generate sermons. We don't generate theology. We work from what your pastor already said.

What ETS doesn't say

🚀 Supercharge your church's content engine!
AI-powered all-in-one content suite for the modern ministry.
Unleash the power of your sermons across every channel — at scale.
Generative ministry content, reimagined.

“If a pastor wouldn't say it from a pulpit, ETS doesn't say it on a screen.”

The palette, spoken for.

Color in ETS is a role, not a decoration. Every value below earns its place by meaning something on the page — violet means brand, lime means “the one thing,” the cream surface means “you are home.” All values specified in OKLCH so lightness is perceptually uniform across hues.

Color has purpose

Every hue is tied to a specific meaning — violet for brand, lime for the one accent, spark for section rules. Decoration is reserved for illustration.

Color has impact

The base palette is warm cream and tinted neutral on purpose. When violet or lime show up, they land — not because they're loud, but because the rest of the page is quiet.

Color is accessible

Every text pairing in the system clears WCAG AA at minimum (4.5:1 body, 3:1 for ≥24px text). Never use color alone to convey meaning.

Eight roles.

Designers pick a role, not a hex. The role maps to a token, which maps to a value that can change without breaking the page. The table below is the canonical assignment.

RoleSwatchUseToken
primary
Brand actions, key links, the violet that means ETS--c-violet-500
accent
Single moment per page — CTA on dark, status pip--c-lime-500
surface
Page background, default container fill--c-paper
raised
Card on top of surface — one elevation only--c-paper-lift
muted
Section alt background, gentle separation--c-paper-deep
neutral
Body text, default ink--c-body
display
Headings, deep panels--c-display
spark
Section rule, one accent moment — sparingly--c-spark

Primary and accent, in context.

Violet is the brand. Lime is the punch — one moment per surface, never more. Below: how each plays the role it owns.

Sunday
all week.
--c-violet-500oklch(54% 0.235 290)
The punch.
--c-lime-500oklch(85% .215 117)

Violet scale.

The full perceptual range of the brand hue. 500 is canonical; 700 is the hover; 900 is the editorial deep panel.

50violet
100violet
200violet
400violet
500violet
600violet
700violet
900violet

Warm-tinted neutrals.

On a 75° axis with low chroma (0.005–0.025) so they read as neutral but carry the brand quietly. Every “gray” in ETS has hue.

paper-lift98% 0.010 75
paper96.5% 0.015 75
paper-deep93% 0.020 75
hairline88% 0.018 75
rule80% 0.022 75
muted58% 0.020 75
body32% 0.020 75
display14% 0.014 75

Contrast, measured.

Every text-on-color pair below has been measured against WCAG 2.1 AA. The right column is the actual ratio, the badge is the tier it clears. AA is the floor; we hit AAA wherever we can.

PairUse caseRatioTier
The quick brown fox
Body on cream16.2 :1AAA
The quick brown fox
Body text9.8 :1AAA
The quick brown fox
On violet button7.4 :1AAA
The quick brown fox
On charcoal panel15.9 :1AAA
The quick brown fox
Dark text on lime8.6 :1AAA
The quick brown fox
Violet link on cream8.1 :1AAA
The quick brown fox
Caption (small)6.2 :1AA
The quick brown fox
Muted (≥24px only)3.9 :1AA·24px
The quick brown fox
Cream on violet7.4 :1AAA
The quick brown fox
Cream on lime — never1.6 :1FAIL

On color, in copy.

What it looks like when paragraphs land on each colored panel. Body always uses the matching --c-on-* token — never gray, never a guess.

Sunday's sermon, working all week.

Drop in your sermon. Twelve minutes later, nine pieces of content land in your team's review queue.

Sunday's sermon, working all week.

Drop in your sermon. Twelve minutes later, nine pieces of content land in your team's review queue.

Sunday's sermon, working all week.

Drop in your sermon. Twelve minutes later, nine pieces of content land in your team's review queue.

Rules of engagement.

  • +Use violet-500 for every primary CTA, every brand moment.
  • +Reserve lime-500 for one moment per surface — CTA on dark, status pip, single emphasis.
  • +Pair body copy on cream with --c-body or --c-display, never with --c-muted.
  • +Use violet-900 only as a deep editorial panel — for pull-quotes and the closing CTA.
  • +Pair the spark warm-red only with section rules and section numbers.
  • ×Don't use the violet-to-violet gradient — it's the v1 tell.
  • ×Don't put cream text on lime — fails contrast hard. Use --c-on-lime instead.
  • ×Don't fill more than ~64×64 with lime on a light surface.
  • ×Don't mix violet-500 with pure #000; always pair with the warm --c-display.
  • ×Don't use color alone to convey state — always pair with an icon or a label.

Two families. One voice.

Outfit Variable carries everything — display, headlines, body, UI. Fraunces appears in italic only, for flourish words and the single pull-quote per section. JetBrains Mono is reserved for editorial metadata (bylines, version stamps).

Aa
Aa100
Aa200
Aa300
Aa400
Aa500
Aa600
Aa700
Aa800
Aa900
Aa

Fraunces shows up here, in the soft places — italic words that warm a headline, a pull-quote that asks to be read slowly. Two per section, maximum.

The scale.

132pxdisplay-l
The week your sermon does the talking· Hero only
104pxdisplay
The week your sermon does the talking· Section opener (mobile)
76pxh1
The week your sermon does the talking· Section headline
50pxh2
The week your sermon does the talking· Subsection
38pxh3
The week your sermon does the talking· Block head
28pxh4
The week your sermon does the talking· Card title
22pxh5
The week your sermon does the talking· Inline emphasis
19pxlead
The week your sermon does the talking· Lead paragraph
16pxbase
The week your sermon does the talking· Body
14pxsmall
The week your sermon does the talking· Spec, caption
12pxmicro
The week your sermon does the talking· Eyebrow, label

The surface, composed.

Visual language is the grammar that connects every screen — the fingerprints that tell a pastor “this is ETS” before the wordmark loads. Five signatures, one imagery policy, one composition rule.

Five signatures.

Repeating moves that show up in every section. None is loud alone, but together they read like one hand made the whole page.

A short warm-toned rule under every section headline. The brand's exclamation mark — used once per section.

3px tall · 48–96px wide · --c-spark

A row of mono text above every section. Section number, group, and one editorial fact.

JetBrains Mono · 12px · 0.14em tracking
“quiet weight.”

The one dark surface per section. Pull-quotes, testimonials, the closing CTA.

ink-900 fill · 16px radius · inset --s-8
The week works.

One italic accent word per headline, set in violet-700 or lime depending on surface. Earns the eye's attention without shouting.

Fraunces · italic · SOFT 100
9
pieces
12
min
1
sermon

Three big numbers across the bottom of editorial sections. Tabular figures so the columns line up — the data carries because the type behaves.

3-up · numerals tabular · byline label above
ets-primary-logo.png2125 × 1500

A row of mono metadata under a figure — file name, dimension, source. Editorial detail, never decoration.

JetBrains Mono · 11px · 0.4 tracking

Surface stack.

Four layers, never more. Page sits at the bottom. Section alt breaks rhythm without leaving the family. Cards lift on top. Deep panels are the rare, intentional moment.

Layer · 1 — Page surface
Page surface
--c-paper
The default — warm cream. Where everything begins.
Section alt
--c-paper-deep
Alternating section background. Breaks rhythm without breaking surface.
Card / raised
--c-paper-lift
Things that sit above the page — cards, asides, tiles.
Deep panel
--c-display
One per section maximum. The intentional dark moment.

Photography.

Real moments, not stock. A pastor mid-sentence, a comms director at a laptop on a Tuesday morning, a kid bringing the discussion guide home. Photos sit inside flat color plates with a 16px radius. Type never lands directly on a photo — it lands on the plate beside or below.

real moment · 4:3
Sunday morning · 9:42am · Grace City

A real moment, on a plate. Real teaching moment, inset 24px inside a paper-deep plate, mono caption below. Type lands beside the photo, never on it.

Empower your ministry today
stock · full-bleed · type over photo

Stock shoot, full-bleed. Stock-photo “diverse smiling team,” full-bleed, headline overlaid on the face. Every AI app does this. ETS doesn't.

Imagery rules.

Real moments onlyNo generic stock. If the image isn't of someone actually doing the thing, don't use it.
Inside a color platePhoto lives inside a paper, paper-deep, or violet-900 plate. 16px radius. Inset ≥ --s-5.
Type stays outsideHeadlines and body never overlap the photo edge. Mono caption goes below the plate, not on it.
Three aspect ratios only4:3 (default), 3:2 (landscape feature), 1:1 (avatar / square card). No 16:9, no portraits.
No filters, no duotoneColor correction only — never the violet-tinted overlay every AI app applies.
No people-as-propsDiverse hands holding things, anonymous backs of heads, “a person typing.” If we don't know who they are, we don't use them.

No illustration.

ETS doesn't use illustration. It's the second-most-overused AI tell after the violet gradient — a friendly squiggle, a floating laptop, a hand holding an iPhone. The brand is built on real type, real photography, and the icon system. If a moment can't be told in those three, it probably shouldn't be on the page.

Five kinds of break.

Dividers do the work of paragraphs — they pace the page. ETS ships five, ordered from quietest to loudest. The rule: start at hairline and only escalate when meaning requires.

Hairline

Between table rows, list items, sub-blocks inside a card
1px · --c-hairline · oklch(88% 0.018 75)

Rule

Between paragraphs in long-form, between card-on-card groups
1px · --c-rule · oklch(80% 0.022 75)

Section underline

Between major sections, full-width within wrap container
1px · --c-hairline · full width

Spark rule

Under every section headline — the brand's exclamation mark
3px · 48–96px · --c-spark · radius 2px

Color band

Major chapter breaks, hero footers — sparingly
24px tall · brand color · radius 4px

In context.

The same five dividers, doing their actual jobs inside a fragment of editorial copy.

Sunday's message

ETS turns one sermon into nine pieces. Drop in the file. Twelve minutes later, the week is in your review queue.

01Five social posts
02One blog post
03One discussion guide
04One email newsletter
05One kids' sheet
Tuesday morning

Anti-patterns.

The dividers ETS doesn't use. If you find yourself reaching for one of these, the answer is more whitespace, not more decoration.

Decorative SVG
Squiggles, stars, dots — every AI app's first idea.
Gradient line
1px line with a violet-to-cream fade. Cheap, decorative, never earned.
Double border
Hairline + thicker line stacked. The eye can't decide what's primary.

Motion that means something.

Motion in ETS does one of four jobs: standard (in-view change), entrance (arrival), exit (departure), or emphasized (the one big moment). Each has a curve, a duration, a use case. Nothing decorates. Nothing loops in the background.

Productive

90 – 220 ms

The motion the user barely notices. Button press, toggle flip, dropdown open. Designed to stay out of the way.

Button hoverToggleDropdownTooltipTab change

Expressive

320 – 480 ms

The motion that earns its weight — significant arrivals, success moments, the rare hero reveal. Used sparingly.

Modal inToast inHero revealFirst-runSuccess state

Four easings, four jobs.

Each card shows the cubic-bezier curve plotted, a live demo of the curve in motion, the CSS token, and the use case. Click any demo to replay it.

Standard

cubic-bezier(0.2, 0, 0.38, 0.9)

Element stays visible from start to finish. Use for moving rows, expanding tiles, sorting, color shifts, focus rings.

Entrance

cubic-bezier(0, 0, 0.38, 0.9)

Element appears, then settles. Use for fade-in, modal-in, toast-in, dropdown-open, anything that wasn't there a moment ago.

Exit

cubic-bezier(0.2, 0, 1, 0.9)

Element accelerates out of view. Use for modal-close, toast-dismiss, route-exit — anything leaving permanently.

Emphasized

cubic-bezier(0.32, 0.72, 0, 1)

Reserved for the few moments worth pausing for — first-run reveal, success state, the one big motion per page. Earns attention.

Duration scale.

Five steps, perceptually scaled. Larger movements take longer — but never longer than 480ms unless the motion is the moment (hero, success, first-run). Bars below are scaled to actual ms.

--d-fast-0190ms
Button press · toggle · hover state
--d-fast-02140ms
Small fade · icon swap · tooltip
--d-moderate-01220ms
Dropdown · popover · tab change
--d-moderate-02320ms
Modal in · toast in · panel slide
--d-slow-01480ms
Hero entrance · page transition

In situ.

The same tokens, applied to real ETS UI. Each demo runs the exact easing + duration shown in its caption.

Modal · open & close
entrance 320ms · exit 220ms
Approve all 9 pieces?
They'll be marked ready to publish.
Toast · auto-dismiss
entrance 320ms · exit 220ms
All 9 pieces ready.12 min
Button · press feedback
standard 90ms
Dropdown · stagger reveal
entrance 220ms · stagger 40ms
Blog post
Instagram caption
Email newsletter
Discussion guide
cubic-bezier(0.68, -0.55, 0.265, 1.55)ease-elastictransform: scale(1.02) on hoveranimation-iteration-count: infiniteduration > 480ms (except hero)bounce / spring / overshootany ambient motion that runs without user input

v1 ran six concurrent ambient animations — pulse, breathe, drift, float, shimmer, marquee. v3 ships zero. Motion happens when a user does something, not when the page exists.

The motion test.

Before shipping any new transition, run it through these four questions. If any answer is no, the motion gets cut or fixed.

Is it purposeful?

Does the motion solve a problem the user has? (Show state, hint at what's next, confirm an action.) If it's only decoration, cut it.

Is it responsive?

User-input motion (button press, toggle) must use a fast-* duration. The user shouldn't have to wait for the UI to catch up.

Is it considered?

Same family of motion uses the same curve and duration. A modal closing should match the modal opening. Don't mix.

Is it unobtrusive?

The best motion goes unnoticed. If users mention it, it's probably too much. Test it three times in a row — does it start to annoy?

Reduced motion.

Every motion in ETS respects prefers-reduced-motion: reduce. When that media query matches, all transitions become instant. Toggle macOS System Settings → Accessibility → Display → Reduce Motion and every demo on this page will skip the animation entirely. No exceptions.

@media (prefers-reduced-motion: reduce) {
  .bg3 * { animation: none !important; transition: none !important; }
}

The rhythm underneath.

A 4px base unit. Every measurement collapses to a token — no 17px, no 22px, no eyeballed value. Type, space, radius, and breakpoint all share the same grid. The system below is the load-bearing skeleton beneath every screen in ETS.

Spacing tokens.

Eleven tokens on a 4px base, grouped into small (0–8px, inside components), medium (12–32px, between components in a card), and large (48–192px, layout-level breaks).

TokenPxRemRangeUse
--s-140.25smallIcon ↔ label inside a button or chip
--s-280.5smallContainer padding of small components, vertical gap in tight lists
--s-3120.75smallGap between adjacent micro-elements (mono row, byline pieces)
--s-4161mediumDefault body line-height gap, card-internal padding
--s-5241.5mediumCard padding, form-field internal gap
--s-6322mediumSubsection top margin, gap between repeated cards
--s-7483largeSection internal padding, wrap container gutter
--s-8644largeBlock separation, between section H3 groups
--s-9966largeMajor break, between sections on mobile
--s-101288largeSection top/bottom padding on desktop
--s-1119212largeHero spacing only — top of landing pages

The scale, to scale.

--s-1
4px
--s-2
8px
--s-3
12px
--s-4
16px
--s-5
24px
--s-6
32px
--s-7
48px
--s-8
64px
--s-9
96px
--s-10
128px
--s-11
192px

Radius scale.

Four radii. Pills (r-pill) are reserved for buttons and badges. Cards and inputs use r-3; section panels use r-4.

--r-1 · 4px
Pip, micro-badge
--r-2 · 8px
Tag, small chip
--r-3 · 12px
Input, card, modal
--r-4 · 16px
Section panel, hero plate

Breakpoints.

Four breakpoints, named for the device, sized for the content. Content never exceeds 1280px — the page breathes past that point.

mobile< 600px1--s-5Single column, stacked cards
tablet600–9002--s-62-up cards, no sidebar yet
desktop900–12803--s-7Sidebar appears, content centered
wide> 1280--s-7Max 1280, gutters scale outward

Aspect ratios.

Boxes constrain to one of these four ratios. Anything else and the page loses its key lines.

1:1
Avatar, square card, social tile
4:3
Photography plate, hero feature
3:2
Landscape feature, OG card
16:9
Video embed only — never for static UI

Five principles.

The tokens above are the vocabulary. These five rules are how to compose with them.

Group by similarity

Elements that share spacing read as a unit. A table of rows uses one consistent gap; a nav bar uses one consistent item gap.

Group by proximity

Distance creates meaning. Place related content closer together, related-but-distinct content further apart.

Create hierarchy

Larger margins around heavier elements pull the eye. Use whitespace as part of the hierarchy, not just type weight.

Introduce rhythm

Repeating spacing patterns (in a list, a grid) build a scanable cadence. Vary spacing only when meaning requires it.

Optical adjustment

Tokens get you 95% there. The last 5% is the human eye — a 1px nudge is fine if it makes the page balance.

The atoms.

Components are categorized by what they do for the user. Buttons don't scale on hover. Inputs don't glow violet. Cards don't nest. Every component below is built on the tokens above — no inline magic numbers, no decoration.

Actions

Things the user clicks.

Button

.btn · height 52 · radius pill · weight 700

Primary action of the surface. Maximum one per view. Color shifts on hover, no scale.

Icon button

40 × 40 · radius 8 · ghost on hover

When the icon carries the meaning. Always include an aria-label.

Link

violet-700 · underline on hover · matching weight

Inline link, always within or directly after a sentence.

Drop in your sermon and we'll handle the rest. See how processing works.

Inputs

Things the user types or selects.

Field

height 52 · radius 12 · 1px rule on default

Label sits above as a mono byline. Focus state uses violet-500 ring.

Checkbox

22 × 22 · radius 6 · violet-500 fill on check

Always with a label. Tap target wraps the label.

Stream slider

track 4px · thumb 24px · violet fill below

Pricing slider — 1 to 9 streams self-serve, contact for 10+.

1 stream3 streams · $87/mo9 streams

Status

Things that tell you where you are.

Badge

.badge · height 26 · radius pill · mono 11px

Inline status label. Always paired with an icon or context, never color-alone.

GeneratingReadyDraftError

Pip

6 × 6 · 50% radius · 4px ring on active

Status dot. Lime for live/ready, violet for processing, spark for error.

Ready
Generating
Error

Progress

track 8px · radius 4 · violet fill

Linear progress. Pair with mono spec row showing step + ETA.

Generating · 5 of 9~4 min remaining

Feedback

Things that tell you what happened.

Alert

left-rule 4px · radius 12 · padded body

Inline message in flow. Three tones: info (violet), success (lime), critical (spark).

Heads up

Your sermon will finish processing in about eight minutes.

Ready

All nine pieces are in your review queue.

Heads up

Your YouTube link came back as private. Try again with a public link.

Toast

floats top · slides in 320ms · auto-dismiss 2.4s

Transient confirmation. Never blocks. Always dismissible by hover-to-pause.

All 9 pieces ready.12 min

Empty state

centered · 360px wide · single CTA

When a list / page has no data. Always offers the next-step CTA, never just “Empty.”

No sermons yet.

Drop in your first sermon and we'll have your week back in 12 minutes.

Structure

Things that hold other things.

Card

padded · radius 14 · paper-lift fill · hairline border

One-elevation card. Never nest a card inside a card.

“Faith isn't certainty. It's movement.”

From Sunday, March 24 · Pastor Mark's sermon on Hebrews 11. Ready to post.

Tabs

text · 3px violet underline on active

Two or more sibling views. Active is violet, inactive is body. No background fills.

Navigation

Things that move you around.

Top nav

height 72 · paper bg · hairline bottom

The marketing-site header. Logo left, nav center-right, primary CTA right-most.

ETS
How it worksPricingFAQ

Sidebar item

grid 28-1fr-12 · 14px · mono section number

Sidebar nav row — mono section number on left, label center, indicator right.

00Brand Story
01Voice
02Logo System

On every screen.

The canonical icon mark — the S with its input dot and output arrow — works at 128px and at 16px. Below 32px, the input/output ports become visual noise, so the favicon set drops them and uses a simplified violet square with just the S.

The icon mark, at scale.

Same asset (/brand-guide/icon-01.png), rendered at seven sizes. Notice how the input/output ports stay legible down to 32px, where they begin to disappear into pixel noise.

ETS icon mark · 128px
128px
ETS icon mark · 96px
96px
ETS icon mark · 64px
64px
ETS icon mark · 48px
48px
ETS icon mark · 32px
32px
ETS icon mark · 24px
24px
ETS icon mark · 16px
16px

Platform specifications.

Each platform applies its own mask. The PNG files below are the production assets — they ship with the app at the exact dimensions shown.

iOS app icon
iOS app icon
ets-favicon-180.png · ets-favicon-512.png
  • 180×180 (apple-touch-icon) · 512×512 (PWA)
  • Canonical icon mark — ports stay visible at app-icon size
  • No transparency — iOS rejects alpha channels
  • Safe zone: 10% inset from all edges
Android adaptive
Android adaptive
ets-favicon-192.png
  • 192×192 minimum, 512×512 master
  • Foreground: canonical icon mark on transparent
  • Background: solid violet plate
  • Safe zone: 66% center circle — ports inside
OG / social card
OG / social card
opengraph-image.tsx · 1200×630
  • Dynamic, rendered via Satori on Vercel
  • Canonical icon mark at large scale
  • Headline overlays the wordmark lockup
  • Updates whenever the page metadata changes
PWA manifest
PWA manifest
ets-favicon-192.png · ets-favicon-512.png
  • Both maskable and any-purpose entries
  • Masks (Chrome / Safari) crop to safe zone
  • Solid background, no transparency
  • Listed in app/layout.tsx metadata.icons
ETS canonical icon mark on an iOS-style homescreen tile

How it lives on a phone.

The canonical icon mark on a flat violet tile. Saturated violet against the grays and bright colors that dominate the iOS home screen is the entire reason the tile reads from across a room.

96 icons. One system.

Stroke-based, 24×24, consistent terminals. Click any tile to copy its filename. Search to filter, toggle dark to preview on the deep panel.

96 icons
10
5
5
6
6
7
5
14
7
7
5
19

The system, in the app.

Four mocks of real ETS screens, with the tokens that drive them called out alongside. The brand isn't the brand guide — it's how the product feels under a pastor's hand on a Tuesday morning at 9:14am.

Landing hero

The first impression. Type-led, no photography in the hero, the italic flourish word carrying the brand voice in one moment.

extendthesermon.com
Sunday's sermon, working all week.

Drop in your sermon. Twelve minutes later, you have five social posts, a blog, a discussion guide, and an email — in your pastor's voice, on your church's brand.

Surface--c-paper
the warm cream page surface
Display--c-display + Outfit 900 / -0.038em
hero headline
AccentFraunces italic, SOFT 100, --c-violet-700
flourish word
Primary CTA.btn .btn-primary · pill · violet-500
the one action that matters
EditorialJetBrains Mono · 12px · 0.16em tracking
eyebrow text

Upload

The single input. Either paste a YouTube URL or drop a file. The dashed violet plate signals interactivity without shouting.

app.extendthesermon.com/upload

Drop your sermon in.

Drop your audio or video file
or paste a youtube link · mp3 mp4 wav m4a
Step counterbyline · violet-600
always tells the user where they are
HeadlineOutfit 800 · 28px
smaller hero — UI scale, not marketing scale
Drop zone2px dashed --c-violet-400 · violet-100 fill
the only place a dashed border appears
Helper textmono 11px · violet-600
the metadata that explains the drop

Twelve minutes.

The honest progress moment. We tell the user where they are, what's happening right now, and roughly when they'll have it back.

app.extendthesermon.com/processing/j_42a

Writing your blog post.

56%~4 min remaining
Transcribed1m 47s
Pulled scripture references12s
Wrote 5 social posts1m 04s
Wrote discussion guide48s
Writing blog postin progress
Step badgebyline · violet-600 with mono numerals
the progress callout
Stage labelOutfit 800 · 24px
what's happening right now
Progress bar8px · violet-500 · radius 4
the only motion on the screen
ETAmono 11px tabular figures
time remaining, always rounded to the nearest minute

Results queue

What lands in the team's queue twelve minutes after upload. Each piece is its own row with a status badge and a primary action — no decoration, no card-on-card.

app.extendthesermon.com/sermons/j_42a
Blog post1,140 wordsReady
Instagram caption5 postsReady
Email newslettersubject + bodyReady
Discussion guide5 questionsReady
Kids' sheetK–5 take-homeReady
Ready piplime-500 · 6px · 4px ring
the “you're done” signal
Row hairline--c-hairline · 1px between rows
the same divider used throughout the system
Status badge.badge · lime-300 fill, on-lime text
AAA contrast, never color-alone
Primary actionviolet button · 36px · pill
smaller scale of the same canonical button

Tokens, all the way down.

Every screen above uses the same tokens as the brand guide you're reading — same surface colors, same type scale, same buttons, same hairlines, same easings. The brand isn't something we apply to the product after the fact. It is the product, made of the same parts wherever a pastor lands.

ETS is a member of TheSquad.

Six brands under one roof. Each has its own palette and its own job. The compass is shared: take the operational weight off the people who serve the church. Founded September 2017. 3,000+ churches served cumulative. Zero outside investment.

#341756
#A89EF2
#FCFBF9
TheSquad

Ten years of custom media solutions

640+ churches by 2036, $18M ARR, 87% retention. The full media + marketing operation that gives every church on the roster back a pastoral FTE's worth of time per year.

TypographyClarkson · Albra Medium · Arpona Sans
2036 anchor415 churches today → 640+ by 2036
Sourcechurchmediasquad.com (live)
You are here
#513DE5
#D5F610
#333232
ETS

Ten years of Mondays that work harder.

Drop in a sermon. Twelve minutes later, nine pieces of content land in your team's review queue, in the pastor's voice. Launching August 2026.

TypographyGeometric sans (logo) · Outfit · Fraunces italic accent
2036 anchor150 paying churches by Aug 2027 (Phase A)
Sourceofficial PNG assets
#FB8200
#FDCDC1
#141313
Remix Church Media

Ten years of quality church templates

20,000+ browser-editable assets, generated mostly by AI from Squad designs. The obvious starting point for any church doing media on a budget. Funnels 150+ churches/year up to TheSquad.

TypographyAlbra Grotesk · Rubik
2036 anchor262 subs today → 4,200+ by 2036
Sourcemy.corebook.io/remix
#0D8A5C
#A67C00
#FDFBF7
ChurchMrk

Your church deserves a brand that matches its calling.

AI brand-guide generator. $97 one-time + $7/mo Hub or $97/mo Pro. Funnels to GlowBryt or TheSquad as churches grow. Live at churchmrk.vercel.app.

TypographyFigtree · Instrument Sans · Caveat
2036 anchor150 customers by 12mo post-launch (Phase A)
Sourcechurchmrk.vercel.app (live)
#EAB308
#422006
#FFFBEB
GlowBryt

Ten years of websites churches don't outgrow.

Personality-driven site generator. 254 Stitch templates rebuilt at tokenizer_v3 quality. Funnel handoff from ChurchMrk in at least 25 churches by Phase A end.

TypographyPlus Jakarta Sans · EB Garamond italic · DM Sans
2036 anchor150 paying churches by 12mo post-launch (Phase A)
Sourcebrand-guide.html in project repo
#2A1538
#FF5A4D
#FAF6F1
ChurchCreate

An AI designer trained on your church

The 6th TheSquad product (locked May 2026). AI in-house designer that learns each church's brand from website + IG. Weekly graphics, social, chat-based generation. Domain ChurchCreate.com purchased.

TypographyWork Sans
2036 anchor~12-week timeline to public launch
Sourcechurch-create-walkthrough.vercel.app/brandguide

“Give the people who serve the church more time for people ministry.”

Sept 2017
3,000+
$0

That's the brand. Now go use it.

The system is the system, not the document. The brand lives in every product surface the moment we apply these tokens. Compare this register against v1 (Inter, gradient) and v2 (impeccable, flat) to see why v3 lands — and feel free to push back on anything that doesn't.

extend the sermon · brand guide v3 · draft
tokens scoped to .bg3