<!DOCTYPE html>
<html lang="en" data-theme="light">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Sanctum Live helps church tech teams monitor livestreams, capture timestamped service issues, and turn them into follow-up tasks before next Sunday." />
<title>Sanctum Live | AI-Powered Service Monitoring for Church Tech Teams</title>
<style>
:root {
color-scheme: light;
--bg: #f7f5f0;
--surface: #ffffff;
--surface-muted: #efebe3;
--text: #161513;
--text-muted: #5f5b53;
--text-soft: #807a70;
--border: #dfd8cb;
--border-strong: #cfc5b5;
--accent: #8b5e34;
--accent-strong: #6f4725;
--accent-soft: #efe3d4;
--success: #4f6b58;
--shadow: 0 24px 70px rgba(37, 31, 23, 0.11);
--shadow-soft: 0 14px 36px rgba(37, 31, 23, 0.08);
--radius-xl: 28px;
--radius-lg: 20px;
--radius-md: 14px;
--max: 1160px;
--font: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
--serif: Georgia, "Times New Roman", serif;
}
html[data-theme="dark"] {
color-scheme: dark;
--bg: #11100e;
--surface: #191713;
--surface-muted: #242019;
--text: #f4efe5;
--text-muted: #c7beb0;
--text-soft: #91897d;
--border: #342f27;
--border-strong: #4b4236;
--accent: #d4a36f;
--accent-strong: #e5b987;
--accent-soft: #32261b;
--success: #91b49a;
--shadow: 0 24px 70px rgba(0, 0, 0, 0.38);
--shadow-soft: 0 14px 36px rgba(0, 0, 0, 0.28);
}
* {
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
}
body {
margin: 0;
font-family: var(--font);
background:
radial-gradient(circle at top left, rgba(139, 94, 52, 0.11), transparent 34rem),
linear-gradient(180deg, var(--bg), var(--bg));
color: var(--text);
line-height: 1.5;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
}
a {
color: inherit;
text-decoration: none;
}
button,
input,
textarea {
font: inherit;
}
.page-shell {
overflow: hidden;
}
.container {
width: min(var(--max), calc(100% - 40px));
margin: 0 auto;
}
.nav {
position: sticky;
top: 0;
z-index: 20;
backdrop-filter: blur(18px);
background: color-mix(in srgb, var(--bg) 82%, transparent);
border-bottom: 1px solid color-mix(in srgb, var(--border) 75%, transparent);
}
.nav-inner {
height: 76px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 20px;
}
.brand {
display: flex;
align-items: center;
gap: 12px;
font-weight: 750;
letter-spacing: -0.03em;
}
.brand-mark {
width: 38px;
height: 38px;
display: grid;
place-items: center;
border-radius: 12px;
background: var(--text);
color: var(--bg);
box-shadow: var(--shadow-soft);
font-size: 15px;
}
.brand small {
display: block;
color: var(--text-soft);
font-weight: 550;
letter-spacing: 0;
font-size: 12px;
margin-top: 1px;
}
.nav-links {
display: flex;
align-items: center;
gap: 26px;
color: var(--text-muted);
font-size: 14px;
font-weight: 600;
}
.nav-links a:hover {
color: var(--text);
}
.nav-actions {
display: flex;
align-items: center;
gap: 12px;
}
.theme-toggle {
border: 1px solid var(--border);
background: var(--surface);
color: var(--text);
border-radius: 999px;
padding: 9px 12px;
cursor: pointer;
display: inline-flex;
align-items: center;
gap: 8px;
box-shadow: 0 1px 0 rgba(255,255,255,0.04) inset;
}
.theme-toggle span {
font-size: 13px;
font-weight: 650;
}
.btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 10px;
min-height: 46px;
padding: 0 18px;
border-radius: 999px;
border: 1px solid transparent;
font-weight: 750;
font-size: 14px;
letter-spacing: -0.01em;
cursor: pointer;
transition: transform 180ms ease, box-shadow 180ms ease, background 180ms ease, border-color 180ms ease;
}
.btn:hover {
transform: translateY(-1px);
}
.btn-primary {
background: var(--text);
color: var(--bg);
box-shadow: var(--shadow-soft);
}
.btn-primary:hover {
box-shadow: var(--shadow);
}
.btn-secondary {
background: var(--surface);
border-color: var(--border);
color: var(--text);
}
.btn-secondary:hover {
border-color: var(--border-strong);
}
.hero {
padding: 84px 0 72px;
}
.hero-grid {
display: grid;
grid-template-columns: 1.02fr 0.98fr;
gap: 54px;
align-items: center;
}
.eyebrow {
display: inline-flex;
align-items: center;
gap: 9px;
padding: 8px 12px;
border: 1px solid var(--border);
background: color-mix(in srgb, var(--surface) 80%, transparent);
border-radius: 999px;
color: var(--text-muted);
font-size: 13px;
font-weight: 700;
margin-bottom: 22px;
}
.eyebrow-dot {
width: 8px;
height: 8px;
border-radius: 50%;
background: var(--success);
box-shadow: 0 0 0 5px color-mix(in srgb, var(--success) 16%, transparent);
}
h1,
h2,
h3,
p {
margin-top: 0;
}
h1 {
font-size: clamp(44px, 6vw, 76px);
line-height: 0.94;
letter-spacing: -0.075em;
margin-bottom: 24px;
max-width: 780px;
}
.hero-copy {
color: var(--text-muted);
font-size: clamp(18px, 2vw, 21px);
line-height: 1.55;
max-width: 650px;
margin-bottom: 32px;
}
.hero-actions {
display: flex;
align-items: center;
gap: 12px;
flex-wrap: wrap;
margin-bottom: 34px;
}
.hero-note {
display: flex;
flex-wrap: wrap;
gap: 14px;
color: var(--text-soft);
font-size: 14px;
font-weight: 620;
}
.hero-note span {
display: inline-flex;
align-items: center;
gap: 8px;
}
.check {
width: 18px;
height: 18px;
border-radius: 999px;
display: inline-grid;
place-items: center;
background: var(--accent-soft);
color: var(--accent-strong);
font-size: 12px;
font-weight: 900;
flex: 0 0 auto;
}
.product-card {
border: 1px solid var(--border);
background: color-mix(in srgb, var(--surface) 86%, transparent);
border-radius: var(--radius-xl);
box-shadow: var(--shadow);
overflow: hidden;
position: relative;
}
.product-card::before {
content: "";
position: absolute;
inset: 0;
pointer-events: none;
background: linear-gradient(135deg, color-mix(in srgb, var(--accent) 10%, transparent), transparent 38%);
}
.dashboard-top {
padding: 18px 18px 0;
position: relative;
z-index: 1;
}
.browser-bar {
height: 42px;
border: 1px solid var(--border);
border-radius: 16px 16px 0 0;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 14px;
background: var(--surface-muted);
}
.browser-dots {
display: flex;
gap: 6px;
}
.browser-dots i {
width: 8px;
height: 8px;
background: var(--border-strong);
border-radius: 50%;
display: block;
}
.live-badge {
color: var(--success);
font-size: 12px;
font-weight: 800;
display: flex;
align-items: center;
gap: 7px;
}
.live-badge::before {
content: "";
width: 7px;
height: 7px;
border-radius: 50%;
background: currentColor;
}
.dashboard-body {
padding: 20px;
position: relative;
z-index: 1;
}
.monitor-grid {
display: grid;
grid-template-columns: 1fr 0.82fr;
gap: 16px;
}
.video-panel {
min-height: 258px;
border-radius: 20px;
background:
linear-gradient(180deg, rgba(0,0,0,0.03), rgba(0,0,0,0.12)),
repeating-linear-gradient(90deg, color-mix(in srgb, var(--text) 10%, transparent) 0 1px, transparent 1px 44px),
linear-gradient(135deg, var(--surface-muted), color-mix(in srgb, var(--accent-soft) 68%, var(--surface)));
border: 1px solid var(--border);
padding: 16px;
display: flex;
flex-direction: column;
justify-content: space-between;
overflow: hidden;
position: relative;
}
.video-panel::after {
content: "";
position: absolute;
width: 180px;
height: 180px;
border: 1px solid color-mix(in srgb, var(--accent) 24%, transparent);
border-radius: 50%;
right: -44px;
bottom: -76px;
}
.service-title {
display: flex;
justify-content: space-between;
gap: 14px;
position: relative;
z-index: 1;
}
.service-title strong {
font-size: 14px;
letter-spacing: -0.01em;
}
.service-title small {
display: block;
color: var(--text-soft);
margin-top: 3px;
}
.health-score {
width: 70px;
height: 70px;
border-radius: 18px;
background: color-mix(in srgb, var(--surface) 70%, transparent);
border: 1px solid var(--border);
display: grid;
place-items: center;
text-align: center;
flex: 0 0 auto;
}
.health-score b {
display: block;
font-size: 25px;
letter-spacing: -0.05em;
}
.health-score span {
display: block;
color: var(--text-soft);
font-size: 10px;
font-weight: 800;
text-transform: uppercase;
letter-spacing: 0.08em;
}
.timeline {
position: relative;
z-index: 1;
background: color-mix(in srgb, var(--surface) 64%, transparent);
border: 1px solid var(--border);
border-radius: 16px;
padding: 12px;
}
.timeline-track {
height: 8px;
border-radius: 999px;
background: var(--border);
overflow: hidden;
margin-bottom: 12px;
}
.timeline-progress {
height: 100%;
width: 67%;
background: var(--accent);
border-radius: inherit;
}
.markers {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 8px;
font-size: 11px;
color: var(--text-muted);
font-weight: 700;
}
.issue-panel {
display: grid;
gap: 12px;
}
.issue-card,
.metric-card,
.task-row {
border: 1px solid var(--border);
border-radius: 18px;
background: color-mix(in srgb, var(--surface) 82%, transparent);
padding: 14px;
}
.issue-card header {
display: flex;
justify-content: space-between;
align-items: flex-start;
gap: 12px;
margin-bottom: 9px;
}
.timestamp {
color: var(--accent-strong);
background: var(--accent-soft);
border-radius: 999px;
padding: 5px 8px;
font-size: 12px;
font-weight: 850;
white-space: nowrap;
}
.issue-card strong {
display: block;
font-size: 14px;
line-height: 1.28;
}
.issue-card p {
color: var(--text-muted);
font-size: 12px;
margin-bottom: 0;
}
.metric-row {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 10px;
margin-top: 16px;
}
.metric-card b {
display: block;
font-size: 22px;
letter-spacing: -0.05em;
}
.metric-card span {
display: block;
color: var(--text-soft);
font-size: 12px;
font-weight: 700;
margin-top: 2px;
}
section {
padding: 76px 0;
}
.section-kicker {
color: var(--accent-strong);
font-size: 13px;
font-weight: 850;
letter-spacing: 0.1em;
text-transform: uppercase;
margin-bottom: 12px;
}
.section-header {
max-width: 760px;
margin-bottom: 36px;
}
.section-header.center {
margin-left: auto;
margin-right: auto;
text-align: center;
}
h2 {
font-size: clamp(34px, 4vw, 54px);
line-height: 1.02;
letter-spacing: -0.06em;
margin-bottom: 16px;
}
kjef.section-header p {
color: var(--text-muted);
font-size: 18px;
line-height: 1.65;
margin-bottom: 0;
}
.problem-grid {
display: grid;
grid-template-columns: 0.95fr 1.05fr;
gap: 24px;
align-items: stretch;
}
.problem-card {
background: var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius-xl);
padding: 30px;
box-shadow: var(--shadow-soft);
}
.problem-card h3 {
font-size: 24px;
letter-spacing: -0.04em;
margin-bottom: 12px;
}
.problem-card p {
color: var(--text-muted);
margin-bottom: 0;
font-size: 16px;
}
.pain-list {
display: grid;
gap: 14px;
}
.pain-item {
display: grid;
grid-template-columns: auto 1fr;
gap: 14px;
padding: 18px;
border: 1px solid var(--border);
background: color-mix(in srgb, var(--surface) 72%, transparent);
border-radius: 18px;
}
.pain-icon {
width: 36px;
height: 36px;
border-radius: 12px;
background: var(--surface-muted);
display: grid;
place-items: center;
color: var(--accent-strong);
font-weight: 850;
}
.pain-item strong {
display: block;
margin-bottom: 4px;
letter-spacing: -0.02em;
}
.pain-item span {
color: var(--text-muted);
font-size: 14px;
}
.steps {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 18px;
counter-reset: step;
}
.step-card {
counter-increment: step;
background: var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius-xl);
padding: 26px;
position: relative;
min-height: 270px;
box-shadow: var(--shadow-soft);
}
.step-card::before {
content: "0" counter(step);
display: inline-grid;
place-items: center;
width: 46px;
height: 46px;
border-radius: 16px;
background: var(--text);
color: var(--bg);
font-weight: 850;
margin-bottom: 42px;
letter-spacing: -0.03em;
}
.step-card h3,
.feature-card h3,
.proof-card h3 {
font-size: 22px;
letter-spacing: -0.04em;
margin-bottom: 10px;
}
.step-card p,
.feature-card p,
.proof-card p {
color: var(--text-muted);
margin-bottom: 0;
}
.features-layout {
display: grid;
grid-template-columns: 0.88fr 1.12fr;
gap: 26px;
align-items: start;
}
.feature-list {
display: grid;
gap: 14px;
}
.feature-card {
border: 1px solid var(--border);
background: var(--surface);
border-radius: 22px;
padding: 22px;
display: grid;
grid-template-columns: auto 1fr;
gap: 16px;
box-shadow: 0 10px 28px rgba(0,0,0,0.03);
}
.feature-icon {
width: 42px;
height: 42px;
border-radius: 14px;
background: var(--accent-soft);
color: var(--accent-strong);
display: grid;
place-items: center;
font-weight: 900;
}
.ops-panel {
position: sticky;
top: 100px;
border: 1px solid var(--border);
background: var(--surface);
border-radius: var(--radius-xl);
padding: 20px;
box-shadow: var(--shadow);
}
.ops-panel-header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 16px;
padding-bottom: 16px;
border-bottom: 1px solid var(--border);
margin-bottom: 16px;
}
.ops-panel-header strong {
font-size: 16px;
letter-spacing: -0.02em;
}
.ops-panel-header span {
color: var(--text-soft);
font-size: 12px;
font-weight: 700;
}
.pill {
display: inline-flex;
align-items: center;
justify-content: center;
border: 1px solid var(--border);
border-radius: 999px;
padding: 6px 10px;
color: var(--text-muted);
font-size: 12px;
font-weight: 800;
white-space: nowrap;
}
.task-list {
display: grid;
gap: 10px;
}
.task-row {
display: grid;
grid-template-columns: auto 1fr auto;
align-items: center;
gap: 12px;
}
.task-row input {
width: 18px;
height: 18px;
accent-color: var(--accent);
}
.task-row strong {
display: block;
font-size: 14px;
margin-bottom: 2px;
}
.task-row span {
display: block;
color: var(--text-soft);
font-size: 12px;
font-weight: 650;
}
.proof-section {
background: var(--surface-muted);
border-block: 1px solid var(--border);
}
.proof-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 18px;
}
.proof-card {
background: color-mix(in srgb, var(--surface) 76%, transparent);
border: 1px solid var(--border);
border-radius: var(--radius-xl);
padding: 26px;
}
.proof-stat {
font-family: var(--serif);
font-size: 44px;
line-height: 1;
letter-spacing: -0.05em;
margin-bottom: 18px;
color: var(--accent-strong);
}
.faq-wrap {
max-width: 860px;
margin: 0 auto;
}
.faq-list {
display: grid;
gap: 12px;
}
details {
background: var(--surface);
border: 1px solid var(--border);
border-radius: 18px;
padding: 4px 18px;
box-shadow: 0 8px 24px rgba(0,0,0,0.03);
}
summary {
cursor: pointer;
list-style: none;
padding: 18px 0;
font-weight: 800;
letter-spacing: -0.02em;
display: flex;
align-items: center;
justify-content: space-between;
gap: 18px;
}
summary::-webkit-details-marker {
display: none;
}
summary::after {
content: "+";
width: 28px;
height: 28px;
border-radius: 999px;
display: grid;
place-items: center;
border: 1px solid var(--border);
color: var(--text-muted);
flex: 0 0 auto;
}
details[open] summary::after {
content: "−";
}
details p {
color: var(--text-muted);
margin: 0;
padding: 0 0 18px;
}
.final-cta {
padding: 88px 0 96px;
}
.cta-card {
border-radius: 36px;
border: 1px solid var(--border);
background:
linear-gradient(135deg, color-mix(in srgb, var(--accent-soft) 46%, transparent), transparent 38%),
var(--surface);
box-shadow: var(--shadow);
padding: clamp(30px, 6vw, 64px);
display: grid;
grid-template-columns: 1fr auto;
align-items: center;
gap: 34px;
}
.cta-card h2 {
margin-bottom: 14px;
}
.cta-card p {
color: var(--text-muted);
font-size: 18px;
margin-bottom: 0;
max-width: 690px;
}
footer {
border-top: 1px solid var(--border);
padding: 28px 0;
color: var(--text-soft);
font-size: 14px;
}
.footer-inner {
display: flex;
justify-content: space-between;
gap: 18px;
flex-wrap: wrap;
}
.mobile-menu-btn {
display: none;
}
.mobile-panel {
display: none;
}
@media (max-width: 980px) {
.hero-grid,
.problem-grid,
.features-layout,
.cta-card {
grid-template-columns: 1fr;
}
.ops-panel {
position: relative;
top: auto;
}
.steps,
.proof-grid {
grid-template-columns: 1fr;
}
.step-card {
min-height: auto;
}
.step-card::before {
margin-bottom: 30px;
}
}
@media (max-width: 760px) {
.container {
width: min(100% - 28px, var(--max));
}
.nav-inner {
height: 68px;
}
.nav-links,
.nav-actions .btn {
display: none;
}
.mobile-menu-btn {
display: inline-flex;
}
.mobile-panel {
display: none;
border-top: 1px solid var(--border);
padding: 14px 0 18px;
}
.mobile-panel.open {
display: grid;
gap: 10px;
}
.mobile-panel a,
.mobile-panel .btn {
width: 100%;
justify-content: center;
}
.hero {
padding: 56px 0 44px;
}
section {
padding: 58px 0;
}
h1 {
font-size: clamp(42px, 14vw, 62px);
}
.monitor-grid,
.metric-row {
grid-template-columns: 1fr;
}
.video-panel {
min-height: 220px;
}
.feature-card,
.pain-item {
grid-template-columns: 1fr;
}
.task-row {
grid-template-columns: auto 1fr;
}
.task-row .pill {
grid-column: 2;
justify-self: start;
}
.cta-card {
border-radius: 28px;
}
}
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
scroll-behavior: auto !important;
transition: none !important;
}
}
</style>
</head>
<body>
<div class="page-shell">
<nav class="nav" aria-label="Main navigation">
<div class="container">
<div class="nav-inner">
<a class="brand" href="#top" aria-label="Sanctum Live home">
<span class="brand-mark" aria-hidden="true">SL</span>
<span>Sanctum Live<small>Service monitoring for church teams</small></span>
</a>
<div class="nav-links" aria-label="Primary links">
<a href="#problem">Problem</a>
<a href="#how">How it works</a>
<a href="#features">Features</a>
<a href="#faq">FAQ</a>
</div>
<div class="nav-actions">
<button class="theme-toggle" type="button" aria-label="Toggle light and dark mode" id="themeToggle"><span aria-hidden="true">◐</span><span id="themeLabel">Dark</span></button>
<a class="btn btn-primary" href="#pilot">Join the pilot</a>
<button class="btn btn-secondary mobile-menu-btn" type="button" id="mobileMenuBtn" aria-expanded="false" aria-controls="mobilePanel">Menu</button>
</div>
</div>
<div class="mobile-panel" id="mobilePanel">
<a href="#problem">Problem</a>
<a href="#how">How it works</a>
<a href="#features">Features</a>
<a href="#faq">FAQ</a>
<a class="btn btn-primary" href="#pilot">Join the pilot</a>
</div>
</div>
</nav>
<main id="top">
<section class="hero" aria-labelledby="hero-title">
<div class="container hero-grid">
<div>
<div class="eyebrow"><span class="eyebrow-dot" aria-hidden="true"></span> Pilot program opening for weekly livestream churches</div>
<h1 id="hero-title">Catch livestream issues before they become next Sunday’s repeat mistakes.</h1>
<p class="hero-copy">Sanctum Live helps church tech teams monitor services, capture timestamped issues, and convert them into clear follow-up tasks while the service is still fresh.</p>
<div class="hero-actions">
<a class="btn btn-primary" href="#pilot">Join the pilot</a>
<a class="btn btn-secondary" href="#how">See how it works</a>
</div>
<div class="hero-note" aria-label="Pilot benefits">
<span><span class="check" aria-hidden="true">✓</span> Designed for Sunday service workflows</span>
<span><span class="check" aria-hidden="true">✓</span> Built for follow-up before next weekend</span>
<span><span class="check" aria-hidden="true">✓</span> AI-assisted, human-owned</span>
</div>
</div>
<aside class="product-card" aria-label="Sanctum Live dashboard preview">
<div class="dashboard-top">
<div class="browser-bar">
<div class="browser-dots" aria-hidden="true"><i></i><i></i><i></i></div>
<div class="live-badge">Monitoring live</div>
</div>
</div>
<div class="dashboard-body">
<div class="monitor-grid">
<div class="video-panel">
<div class="service-title">
<div>
<strong>Sunday 10:30am Service</strong>
<small>YouTube livestream · Worship center</small>
</div>
<div class="health-score"><div><b>92</b><span>Score</span></div></div>
</div>
<div class="timeline">
<div class="timeline-track" aria-hidden="true"><div class="timeline-progress"></div></div>
<div class="markers">
<span>0:00 Worship</span>
<span>24:12 Message</span>
<span>58:40 Close</span>
</div>
</div>
</div>
<div class="issue-panel">
<article class="issue-card">
<header><strong>Broadcast audio dipped under speaking level</strong><span class="timestamp">24:12</span></header>
<p>Flagged during sermon transition. Assign to broadcast mix review.</p>
</article>
<article class="issue-card">
<header><strong>Lower third covered scripture reference</strong><span class="timestamp">31:48</span></header>
<p>Create follow-up task for ProPresenter template adjustment.</p>
</article>
<article class="issue-card">
<header><strong>Camera 2 focus drift during altar response</strong><span class="timestamp">52:05</span></header>
<p>Add pre-service lens check to camera operator checklist.</p>
</article>
</div>
</div>
<div class="metric-row" aria-label="Dashboard metrics">
<div class="metric-card"><b>8</b><span>Issues captured</span></div>
<div class="metric-card"><b>5</b><span>Tasks drafted</span></div>
<div class="metric-card"><b>3</b><span>Assigned owners</span></div>
</div>
</div>
</aside>
</div>
</section>
<section id="problem" aria-labelledby="problem-title">
<div class="container">
<div class="section-header">
<div class="section-kicker">The weekly gap</div>
<h2 id="problem-title">Most churches notice production issues. Fewer churches have a system to close the loop.</h2>
<p>After service, everyone remembers a different version of what went wrong. By Wednesday, the details are fuzzy. By Sunday, the same avoidable issue can show up again.</p>
</div>
<div class="problem-grid">
<article class="problem-card">
<h3>Sanctum Live is built for the handoff between “we saw it” and “we fixed it.”</h3>
<p>It gives tech directors and production leaders a calmer way to review the service, document issues with timestamps, assign next steps, and improve without turning Sunday into a blame session.</p>
</article>
<div class="pain-list">
<div class="pain-item"><div class="pain-icon">01</div><div><strong>Problems get discussed but not owned.</strong><span>Audio drops, missed graphics, camera framing, and stream interruptions need clear owners—not hallway comments.</span></div></div>
<div class="pain-item"><div class="pain-icon">02</div><div><strong>Volunteers need coaching, not vague feedback.</strong><span>Timestamped examples make follow-up specific, fair, and easier to learn from.</span></div></div>
<div class="pain-item"><div class="pain-icon">03</div><div><strong>Sunday pressure makes memory unreliable.</strong><span>Capturing issues as they happen protects your team from relying on scattered notes and exhausted recall.</span></div></div>
</div>
</div>
</div>
</section>
<section id="how" aria-labelledby="how-title">
<div class="container">
<div class="section-header center">
<div class="section-kicker">How it works</div>
<h2 id="how-title">A simple service-review workflow your team can actually keep using.</h2>
<p>Sanctum Live is intentionally practical: monitor the stream, capture what matters, and leave with a next-Sunday action list.</p>
</div>
<div class="steps">
<article class="step-card">
<h3>Monitor the livestream</h3>
<p>Connect your weekly stream and let Sanctum Live watch for production moments your team should review, from audio level changes to visual presentation issues.</p>
</article>
<article class="step-card">
<h3>Capture timestamped notes</h3>
<p>Issue notes are tied to the exact service moment, so your team can review the clip, understand the context, and coach with clarity.</p>
</article>
<article class="step-card">
<h3>Turn issues into follow-up</h3>
<p>Convert notes into assigned tasks, checklist updates, volunteer coaching points, and pre-service reminders before next Sunday arrives.</p>
</article>
</div>
</div>
</section>
<section id="features" aria-labelledby="features-title">
<div class="container features-layout">
<div>
<div class="section-header">
<div class="section-kicker">Capabilities</div>
<h2 id="features-title">Operational clarity for the tech team behind the stream.</h2>
<p>The goal is not to replace your team. The goal is to give your team a tighter feedback loop.</p>
</div>
<div class="feature-list">
<article class="feature-card"><div class="feature-icon">↯</div><div><h3>Livestream monitoring</h3><p>Track service quality moments across the stream so your team can review the issues that affect the online congregation.</p></div></article>
<article class="feature-card"><div class="feature-icon">⌁</div><div><h3>Timestamped production notes</h3><p>Capture what happened, when it happened, and why it matters—without scrubbing through the whole service from memory.</p></div></article>
<article class="feature-card"><div class="feature-icon">✓</div><div><h3>Issue follow-up</h3><p>Move from “that happened again” to a clear owner, due date, and next action for audio, video, lighting, graphics, or stream teams.</p></div></article>
<article class="feature-card"><div class="feature-icon">↗</div><div><h3>Planning Center integration direction</h3><p>The pilot will help shape how service plans, team assignments, and follow-up tasks can connect with Planning Center workflows over time.</p></div></article>
</div>
</div>
<aside class="ops-panel" aria-label="Follow-up task preview">
<div class="ops-panel-header">
<div><strong>Next Sunday follow-up</strong><br /><span>Drafted from service review</span></div>
<span class="pill">Pilot workflow</span>
</div>
<div class="task-list">
<label class="task-row"><input type="checkbox" checked /><span><strong>Review sermon transition audio dip</strong><span>Owner: Broadcast audio · Due: Wednesday</span></span><em class="pill">24:12</em></label>
<label class="task-row"><input type="checkbox" /><span><strong>Update lower-third safe zone</strong><span>Owner: Graphics · Due: Thursday</span></span><em class="pill">31:48</em></label>
<label class="task-row"><input type="checkbox" /><span><strong>Add Camera 2 focus check</strong><span>Owner: Video lead · Due: Pre-service</span></span><em class="pill">52:05</em></label>
<label class="task-row"><input type="checkbox" /><span><strong>Send coaching note to volunteer</strong><span>Owner: Production director · Due: Tuesday</span></span><em class="pill">Follow-up</em></label>
</div>
</aside>
</div>
</section>
<section class="proof-section" aria-labelledby="proof-title">
<div class="container">
<div class="section-header center">
<div class="section-kicker">Pilot credibility</div>
<h2 id="proof-title">Built with real church production pain in mind.</h2>
<p>Sanctum Live is looking for pilot churches that livestream weekly and want a stronger rhythm for review, coaching, and service improvement.</p>
</div>
<div class="proof-grid">
<article class="proof-card"><div class="proof-stat">01</div><h3>Weekly-service focused</h3><p>The workflow is shaped around Sunday teams that need practical action items before the next rehearsal or service.</p></article>
<article class="proof-card"><div class="proof-stat">02</div><h3>Leadership-ready reporting</h3><p>Give worship pastors and church leadership a clearer view of what is improving without burying them in technical noise.</p></article>
<article class="proof-card"><div class="proof-stat">03</div><h3>Pilot churches shape the product</h3><p>Early teams will influence integrations, review flows, task structure, and the details that make this useful in real ministry environments.</p></article>
</div>
</div>
</section>
<section id="faq" aria-labelledby="faq-title">
<div class="container faq-wrap">
<div class="section-header center">
<div class="section-kicker">FAQ</div>
<h2 id="faq-title">Questions pilot churches usually ask.</h2>
</div>
<div class="faq-list">
<details>
<summary>Is Sanctum Live replacing our production team?</summary>
<p>No. Sanctum Live is designed to support the people already carrying the service. It helps them see patterns, review exact moments, and turn observations into follow-up.</p>
</details>
<details>
<summary>What kinds of issues can it help track?</summary>
<p>The pilot is focused on livestream and production issues such as audio consistency, camera moments, graphics problems, stream interruptions, missed cues, and recurring checklist gaps.</p>
</details>
<details>
<summary>Do we need a large church tech department?</summary>
<p>No. The best fit is any church that livestreams weekly and wants a more organized way to improve. That could be a single tech director, a worship pastor with volunteers, or a larger production team.</p>
</details>
<details>
<summary>How does AI fit into the workflow?</summary>
<p>AI assists with monitoring, summarizing, and organizing possible follow-up. Your team still decides what matters, who owns it, and what changes before next Sunday.</p>
</details>
<details>
<summary>Will Sanctum Live integrate with Planning Center?</summary>
<p>Planning Center integration is part of the product direction. The pilot will help define the most useful connection points, including assignments, service plans, team notes, and recurring follow-up tasks.</p>
</details>
<details>
<summary>What does the pilot involve?</summary>
<p>Pilot churches will test the service-monitoring workflow, give feedback on real Sunday use cases, and help shape the product around church production realities.</p>
</details>
</div>
</div>
</section>
<section class="final-cta" id="pilot" aria-labelledby="pilot-title">
<div class="container">
<div class="cta-card">
<div>
<div class="section-kicker">Join the pilot</div>
<h2 id="pilot-title">Build a calmer, clearer review rhythm before next Sunday.</h2>
<p>Sanctum Live is opening early access for churches that want fewer repeated mistakes, stronger volunteer coaching, and more confidence in the livestream every week.</p>
</div>
<a class="btn btn-primary" href="mailto:pilot@sanctumlive.com?subject=Sanctum%20Live%20Pilot%20Interest">Join the pilot</a>
</div>
</div>
</section>
</main>
<footer>
<div class="container footer-inner">
<span>© <span id="year"></span> Sanctum Live. Built for church production teams.</span>
<span>AI-assisted service monitoring · Human-led follow-up</span>
</div>
</footer>
</div>
<script>
const root = document.documentElement;
const themeToggle = document.getElementById('themeToggle');
const themeLabel = document.getElementById('themeLabel');
const mobileMenuBtn = document.getElementById('mobileMenuBtn');
const mobilePanel = document.getElementById('mobilePanel');
const year = document.getElementById('year');
year.textContent = new Date().getFullYear();
const savedTheme = localStorage.getItem('sanctum-theme');
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
const initialTheme = savedTheme || (prefersDark ? 'dark' : 'light');
function setTheme(theme) {
root.setAttribute('data-theme', theme);
localStorage.setItem('sanctum-theme', theme);
themeLabel.textContent = theme === 'dark' ? 'Light' : 'Dark';
}
setTheme(initialTheme);
themeToggle.addEventListener('click', () => {
const nextTheme = root.getAttribute('data-theme') === 'dark' ? 'light' : 'dark';
setTheme(nextTheme);
});
mobileMenuBtn.addEventListener('click', () => {
const isOpen = mobilePanel.classList.toggle('open');
mobileMenuBtn.setAttribute('aria-expanded', String(isOpen));
mobileMenuBtn.textContent = isOpen ? 'Close' : 'Menu';
});
mobilePanel.querySelectorAll('a').forEach((link) => {
link.addEventListener('click', () => {
mobilePanel.classList.remove('open');
mobileMenuBtn.setAttribute('aria-expanded', 'false');
mobileMenuBtn.textContent = 'Menu';
});
});
</script>
</body>
</html>