.church-card-grid {
	display: grid;
	gap: var(--church-space-5, 1.5rem);
	grid-template-columns: repeat(3, minmax(0, 1fr));
}
.church-card-grid--1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
.church-card-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.church-card-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.church-card-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 1024px) {
	.church-card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.church-card-grid--1 { grid-template-columns: 1fr; }
}
@media (max-width: 767px) {
	.church-card-grid,
	.church-card-grid--1,
	.church-card-grid--2,
	.church-card-grid--3,
	.church-card-grid--4 { grid-template-columns: 1fr; }
}

.church-card {
	background: var(--church-color-surface, #fff);
	border: 1px solid var(--church-color-border, #e6e1d8);
	border-radius: var(--church-radius-lg, 16px);
	overflow: hidden;
	color: var(--church-color-text, #2a241c);
}
.church-card__link { color: inherit; text-decoration: none; display: block; }
.church-card__media img { width: 100%; height: auto; aspect-ratio: 16/11; object-fit: cover; display: block; }
.church-card__body { padding: 1.25rem; }
.church-card__title { font-size: 1.15rem; margin: 0 0 0.5rem; }
.church-card__title a { color: inherit; text-decoration: none; }
.church-card__meta { color: var(--church-color-muted, #6b645b); font-size: 0.875rem; display: flex; gap: 0.75rem; flex-wrap: wrap; margin: 0 0 0.5rem; }
.church-card__excerpt { font-size: 0.95rem; margin: 0; }
.church-card--action { padding: 1.5rem; text-decoration: none; color: inherit; }
.church-card--testimonial { padding: 1.5rem; }

.church-cta { padding: 48px 24px; text-align: center; }
.church-cta h2 { margin-top: 0; }
.church-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	padding: 0.7rem 1.25rem;
	border-radius: 999px;
	border: 1px solid transparent;
	font-weight: 600;
	text-decoration: none;
	cursor: pointer;
}
.church-btn--primary {
	background: var(--church-color-primary, #1b6b62);
	color: var(--church-button-fg, #fff);
}
.church-btn--ghost {
	background: transparent;
	color: var(--church-color-heading, #1a1208);
}
.church-empty { text-align: center; padding: 3rem 1.25rem; color: var(--church-color-muted, #6b645b); }

.church-announcement-bar {
	position: relative;
	padding: 12px 48px 12px 20px;
	background: var(--church-color-primary, #1b6b62);
	color: #fff;
	text-align: center;
}
.church-announcement-bar a { color: inherit; text-decoration: underline; }
.church-announcement-bar__dismiss {
	position: absolute;
	top: 50%;
	right: 12px;
	transform: translateY(-50%);
	width: 32px;
	height: 32px;
	border: 0;
	border-radius: 50%;
	background: transparent;
	color: inherit;
	font-size: 1.35rem;
	line-height: 1;
	cursor: pointer;
}

.church-timeline { padding-left: 1.2rem; margin: 0; }
.church-timeline li { margin: 0 0 0.75rem; }

.church-stats { text-align: center; }

.church-step,
.church-steps { list-style: none; margin: 0; padding: 0; }
.church-step span { display: block; font-weight: 700; color: var(--church-color-primary, #1b6b62); }

.church-accordion { border-bottom: 1px solid var(--church-color-border, #e6e1d8); padding: 0.75rem 0; }
.church-accordion summary { cursor: pointer; font-weight: 600; }
.church-accordion p { margin: 0.5rem 0 0; }

.church-tabs { display: flex; flex-wrap: wrap; gap: 0.5rem 1rem; }
.church-tabs > div { flex: 1 1 100%; }

.church-service-list { list-style: none; margin: 0; padding: 0; }

.church-carousel { position: relative; }
.church-carousel .church-card-grid { margin: 0; }
.church-carousel__nav { display: flex; justify-content: space-between; position: absolute; top: 50%; left: 0; right: 0; transform: translateY(-50%); pointer-events: none; padding: 0 8px; }
.church-carousel__prev, .church-carousel__next { pointer-events: auto; width: 40px; height: 40px; border-radius: 50%; border: 1px solid rgba(0,0,0,.12); background: #fff; cursor: pointer; font-size: 1.25rem; line-height: 1; }
.church-carousel__dots { display: flex; justify-content: center; gap: 8px; margin-top: 12px; }
.church-carousel__dot { width: 8px; height: 8px; border-radius: 50%; border: 0; background: rgba(0,0,0,.2); padding: 0; cursor: pointer; }
.church-carousel__dot[aria-current="true"] { background: currentColor; }
.church-lightbox { position: fixed; inset: 0; background: rgba(0,0,0,.85); display: grid; place-items: center; z-index: 100000; padding: 24px; }
.church-lightbox img { max-width: 100%; max-height: 90vh; object-fit: contain; }
.church-lightbox__close { position: absolute; top: 16px; right: 16px; width: 40px; height: 40px; border-radius: 50%; border: 1px solid rgba(255,255,255,.4); background: transparent; color: #fff; font-size: 1.5rem; cursor: pointer; }
body.church-lightbox-open { overflow: hidden; }
.church-video-facade { position: relative; cursor: pointer; }
.church-video-facade img { width: 100%; height: auto; display: block; }
.church-video-facade .church-play { position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); width: 64px; height: 64px; border-radius: 50%; border: 0; background: rgba(0,0,0,.65); color: #fff; font-size: .85rem; cursor: pointer; }
.church-video-facade__frame { width: 100%; aspect-ratio: 16/9; border: 0; display: block; }

/* ==========================================================================
   Added rules for widget class families previously missing from this file.
   ========================================================================== */

/* Church Gallery / Gallery Albums — photo grid tiles (paired with .church-card-grid). */
.church-gallery a {
	display: block;
	position: relative;
	overflow: hidden;
	border-radius: var(--church-radius-md, 12px);
	cursor: zoom-in;
}
.church-gallery a img {
	width: 100%;
	height: 100%;
	aspect-ratio: 1/1;
	object-fit: cover;
	display: block;
	transition: transform var(--church-fast, 180ms) var(--church-ease, cubic-bezier(0.2, 0.8, 0.2, 1));
}
.church-gallery a:hover img,
.church-gallery a:focus-visible img {
	transform: scale(1.05);
}

/* Responsive Table widget. */
.church-table-wrap {
	overflow-x: auto;
	border: 1px solid var(--church-color-border, #e6d9cc);
	border-radius: var(--church-radius-md, 12px);
}
.church-table {
	width: 100%;
	border-collapse: collapse;
	text-align: left;
}
.church-table caption {
	caption-side: top;
	text-align: left;
	padding: 0.75rem 1rem;
	font-weight: 600;
	color: var(--church-color-heading, #142824);
}
.church-table th,
.church-table td {
	padding: 0.65rem 1rem;
	border-bottom: 1px solid var(--church-color-border, #e6d9cc);
}
.church-table th {
	font-weight: 600;
	color: var(--church-color-heading, #142824);
	background: var(--church-color-surface-alt, #f3e9df);
}
.church-table tbody tr:last-child td {
	border-bottom: 0;
}

/* Quote Block / Scripture Quote widgets. */
.church-quote {
	margin: 0;
	padding: 1.5rem 1.75rem;
	border-left: 4px solid var(--church-color-primary, #1b6b62);
	border-radius: var(--church-radius-sm, 8px);
	background: var(--church-color-surface-alt, #f3e9df);
	color: var(--church-color-heading, #142824);
	font-size: var(--church-fs-lead, 1.125rem);
}
.church-quote p {
	margin: 0 0 0.5rem;
	font-style: italic;
}
.church-quote cite {
	display: block;
	font-style: normal;
	font-size: 0.875rem;
	font-weight: 600;
	color: var(--church-color-muted, #6b645b);
}

/* Section Heading widget. */
.church-section-heading {
	margin: 0 0 1.5rem;
}
.church-section-heading h2 {
	margin: 0;
}
.church-eyebrow {
	margin: 0 0 0.35rem;
	font-size: 0.8125rem;
	font-weight: 700;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--church-color-secondary, #e07a4a);
}

/* Sermon List widget. */
.church-sermon-list {
	list-style: none;
	margin: 0;
	padding: 0;
}
.church-sermon-list li {
	border-bottom: 1px solid var(--church-color-border, #e6d9cc);
}
.church-sermon-list li:last-child {
	border-bottom: 0;
}
.church-sermon-list a {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 1rem;
	padding: 0.85rem 0;
	color: inherit;
	text-decoration: none;
}
.church-sermon-list a:hover strong,
.church-sermon-list a:focus-visible strong {
	color: var(--church-color-primary, #1b6b62);
}
.church-sermon-list span {
	flex-shrink: 0;
	font-size: 0.875rem;
	color: var(--church-color-muted, #6b645b);
}

/* Social Links widget — renders .church-social-menu (not .church-social-links). */
.church-social-menu {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	list-style: none;
	margin: 0;
	padding: 0;
}
.church-social-menu a {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0 1rem;
	border-radius: var(--church-radius-pill, 999px);
	background: var(--church-color-surface-alt, #f3e9df);
	color: var(--church-color-heading, #142824);
	text-decoration: none;
	font-weight: 600;
	font-size: 0.875rem;
	transition: background var(--church-fast, 180ms) var(--church-ease, cubic-bezier(0.2, 0.8, 0.2, 1)),
		color var(--church-fast, 180ms) var(--church-ease, cubic-bezier(0.2, 0.8, 0.2, 1));
}
.church-social-menu a:hover,
.church-social-menu a:focus-visible {
	background: var(--church-color-primary, #1b6b62);
	color: #fff;
}

/* Live Service widget. */
.church-live {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 1rem;
}
.church-live-badge {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	padding: 0.3rem 0.75rem;
	border-radius: var(--church-radius-pill, 999px);
	background: var(--church-color-error, #a54444);
	color: #fff;
	font-size: 0.8125rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
}
.church-live-badge::before {
	content: "";
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: currentColor;
	animation: church-live-pulse 1.6s var(--church-ease, cubic-bezier(0.2, 0.8, 0.2, 1)) infinite;
}
@keyframes church-live-pulse {
	0%, 100% { opacity: 1; }
	50% { opacity: 0.35; }
}

/* Next Service widget. */
.church-chip {
	display: inline-flex;
	align-items: center;
	padding: 0.5rem 1rem;
	border-radius: var(--church-radius-pill, 999px);
	background: var(--church-color-surface-alt, #f3e9df);
	color: var(--church-color-heading, #142824);
	font-size: 0.875rem;
	font-weight: 600;
}

/* Event Countdown widget. */
.church-countdown {
	padding: 1.5rem;
	text-align: center;
}
.church-countdown p {
	margin: 0;
	font-size: var(--church-fs-lead, 1.125rem);
	font-weight: 600;
	color: var(--church-color-heading, #142824);
}

/* Counter / Stats widgets — the big number display. */
.church-display {
	margin: 0 0 0.35rem;
	font-size: var(--church-fs-display, clamp(3.1rem, 2.2rem + 3vw, 4.5rem));
	font-weight: 700;
	line-height: 1;
	color: var(--church-color-primary, #1b6b62);
}

/* Audio Player widget. */
.church-audio {
	display: block;
	width: 100%;
	border-radius: var(--church-radius-pill, 999px);
}

/* Button variant — used by Download Card and any widget wanting an outline button. */
.church-btn--outline {
	background: transparent;
	border-color: var(--church-color-primary, #1b6b62);
	color: var(--church-color-primary, #1b6b62);
	transition: background var(--church-fast, 180ms) var(--church-ease, cubic-bezier(0.2, 0.8, 0.2, 1)),
		color var(--church-fast, 180ms) var(--church-ease, cubic-bezier(0.2, 0.8, 0.2, 1));
}
.church-btn--outline:hover,
.church-btn--outline:focus-visible {
	background: var(--church-color-primary, #1b6b62);
	color: var(--church-button-fg, #fff);
}

/* Per-post-type card accents (templates/cards/*.php). .church-card--testimonial
   already has a rule above; these four modifiers had none. */
.church-card--location,
.church-card--ministry,
.church-card--person,
.church-card--sermon {
	border-top: 3px solid transparent;
}
.church-card--location { border-top-color: var(--church-color-info, #3b6e8f); }
.church-card--ministry { border-top-color: var(--church-color-secondary, #e07a4a); }
.church-card--person { border-top-color: var(--church-color-primary-strong, #0e433d); }
.church-card--sermon { border-top-color: var(--church-color-primary, #1b6b62); }

/* Sermon Filters widget — found via grep, not in the original flagged list. */
.church-filters {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem;
	margin: 0 0 1.5rem;
}
.church-filters input[type="search"] {
	flex: 1 1 220px;
	min-height: 44px;
	padding: 0 1rem;
	border: 1px solid var(--church-color-border, #e6d9cc);
	border-radius: var(--church-radius-pill, 999px);
	background: var(--church-color-surface, #fff8f1);
	color: var(--church-color-text, #3a4744);
}
.church-filters input[type="search"]:focus-visible {
	outline: 2px solid var(--church-focus, #f3c19a);
	outline-offset: 2px;
}
