/*
 * Sober AF redesign (s421) -- the rest of the public surface: the simple pages and the taxonomy / archive
 * templates, built from the redesign canvas (design-system/redesign-canvas/project/New*.dc.html) in the Home
 * vocabulary. The shared saf-h-* classes live in saf-redesign-home.css (loaded first); only what those pages add
 * goes here.
 *
 * Loaded (soberafe-child/functions.php) on a page whose redesign one-shot set `_saf_redesign_pages` = 1, and on
 * every taxonomy / archive view. Same rules as saf-redesign-home.css: double the class to beat the Elementor kit,
 * states one level higher (.claude/rules/css-cascade-and-specificity.md sec. 3).
 */

/* ---- Become a sponsor (s421, scripts/oneshot/saf-redesign-sponsor.php) ------- */
/* The impact row sits right under the hero: a white strip of live counts. */
.saf-h-band.saf-h-facts-band {
	padding: 0 0 8px;
}

.saf-h-facts-band .saf-h-wrap.saf-h-wrap {
	gap: 16px;
}

.saf-h-facts__title.saf-h-facts__title .elementor-heading-title {
	font-size: 22px;
	font-weight: 700;
	line-height: 1.25;
}

.saf-h-facts.saf-h-facts {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 0;
	overflow: hidden;
	border: 1px solid #d8d1c0;
	border-radius: 16px;
	background: #ffffff;
}

.saf-h-facts__item.saf-h-facts__item {
	gap: 4px;
	padding: 18px 20px;
	border-left: 1px solid #d8d1c0;
}

.saf-h-facts__item.saf-h-facts__item:first-child {
	border-left: 0;
}

/* [saf_impact_stat] carries no fallback number: a failed read prints nothing, so that count is hidden. */
.saf-h-facts__item.saf-h-facts__item:has(.elementor-shortcode:empty) {
	display: none;
}

.saf-h-facts__n.saf-h-facts__n {
	font-size: 26px;
	font-weight: 700;
	line-height: 1.2;
	font-variant-numeric: tabular-nums;
}

.saf-h-facts__label.saf-h-facts__label {
	font-size: 13px;
	font-weight: 700;
	line-height: 1.4;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: #5a554e;
}

/* The charter plans: gold and silver top rules (the board's), and a bold "Get started" link at the card's foot. */
.saf-h-plan--gold.saf-h-plan--gold {
	border-top: 6px solid var(--saf-goldenrod, #ebad2e);
}

.saf-h-plan--silver.saf-h-plan--silver {
	border-top: 6px solid #95aaaa;
}

.saf-h-plan.saf-h-plan .saf-h-plan__link.saf-h-plan__link {
	margin-top: auto;
}

.saf-h-plan__link.saf-h-plan__link .elementor-heading-title {
	font-size: 17px;
	font-weight: 700;
	line-height: 1.4;
}

.saf-h-plan__link.saf-h-plan__link .elementor-heading-title a {
	color: var(--saf-brick-red, #be2727);
	text-decoration: none;
}

.saf-h-plan__link.saf-h-plan__link .elementor-heading-title a:hover,
.saf-h-plan__link.saf-h-plan__link .elementor-heading-title a:focus-visible {
	color: var(--saf-burgundy, #7b181a);
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* The inquiry band is a jump target (#inquiry): land below the sticky header. */
.saf-h-band.saf-h-anchor {
	scroll-margin-top: 96px;
}

.saf-h-photo--wide.saf-h-photo--wide img {
	aspect-ratio: 16 / 10;
}

@media (max-width: 600px) {
	.saf-h-facts.saf-h-facts {
		grid-template-columns: minmax(0, 1fr);
	}

	.saf-h-facts__item.saf-h-facts__item {
		border-left: 0;
		border-top: 1px solid #d8d1c0;
	}

	.saf-h-facts__item.saf-h-facts__item:first-child {
		border-top: 0;
	}
}

/* ---- Hero of a simple page (scripts/oneshot/saf-redesign-simple.php) ------------------------------------
   The same hero on an Elementor page (widgets) and on a page that renders its post_content (plain tags), so each
   rule names both: the Elementor heading's .elementor-heading-title, and the bare h1 / p. */
.saf-h-band.saf-p-hero {
	padding-bottom: 24px;
}

.saf-p-intro.saf-p-intro {
	display: flex;
	flex-direction: column;
	gap: 22px;
}

.saf-p-eyebrow.saf-p-eyebrow,
.saf-p-eyebrow.saf-p-eyebrow p {
	margin: 0;
	font-size: 14px;
	font-weight: 700;
	line-height: 1.3;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--saf-denim, #004263);
}

.saf-p-eyebrow.saf-p-eyebrow em,
.saf-p-eyebrow.saf-p-eyebrow strong {
	font-style: normal;
	font-weight: 700;
}

/* The crisis line closing the /request-a-resource/ hero (NewRequestResource.dc.html). */
.saf-p-crisis.saf-p-crisis {
	padding: 12px 22px;
	border-radius: 12px;
	background: #1c1710;
	color: #f5f1e7;
	font-size: 16px;
}

/* s423: the Home sheet's text-widget rule (color: inherit at 0,3,0) painted this dark on dark. */
.saf-h-band .saf-p-crisis.saf-p-crisis.saf-p-crisis,
.saf-h-band .saf-p-crisis.saf-p-crisis.saf-p-crisis p,
.saf-h-band .saf-p-crisis.saf-p-crisis.saf-p-crisis strong {
	color: #f5f1e7;
}

.saf-p-crisis.saf-p-crisis p {
	margin: 0;
	line-height: 1.5;
}

.saf-p-crisis.saf-p-crisis strong {
	margin-right: 14px;
	font-size: 17px;
}

.saf-p-crisis.saf-p-crisis a,
.saf-p-crisis.saf-p-crisis a:hover {
	display: inline-block;
	min-width: 44px;
	min-height: 44px;
	text-align: center;
	color: #ebad2e;
	font-weight: 700;
}

/* The 44px target stays; the negative margins keep it from opening gaps in the sentence or between wrapped lines. */
.saf-p-crisis.saf-p-crisis a {
	margin: -10px -9px;
	line-height: 44px;
}

h1.saf-p-h1.saf-p-h1,
.saf-p-h1.saf-p-h1 .elementor-heading-title {
	margin: 0;
	font-size: clamp(2.5rem, 6vw, 4.5rem);
	line-height: 1.04;
	letter-spacing: -0.02em;
	font-weight: 700;
	color: var(--saf-charcoal, #1c1710);
	overflow-wrap: break-word;
}

.saf-p-lede.saf-p-lede {
	max-width: 46rem;
}

.saf-h-band .saf-p-lede.saf-p-lede p + p {
	margin-top: 14px;
}

/* ---- Policy layout: "On this page" beside the body (canvas .pol-layout) ---------------------------------- */
.saf-p-pol.saf-p-pol {
	display: grid;
	grid-template-columns: 260px minmax(0, 1fr);
	gap: 56px;
	align-items: start;
}

/* The grid item is the one that sticks: the nav itself on a content page, the HTML widget around it on an
   Elementor page. */
.saf-p-pol.saf-p-pol > .saf-p-toc,
.saf-p-pol.saf-p-pol > .saf-p-toc-w {
	position: sticky;
	top: 24px;
}

.saf-p-toc.saf-p-toc {
	display: flex;
	flex-direction: column;
	gap: 12px;
	font-size: 15px;
	line-height: 1.35;
}

.saf-p-toc.saf-p-toc ol {
	display: flex;
	flex-direction: column;
	gap: 8px;
	margin: 0;
	padding: 0 0 0 20px;
}

.saf-p-toc.saf-p-toc a {
	color: var(--saf-denim, #004263);
	text-decoration: none;
}

.saf-p-toc.saf-p-toc a:hover,
.saf-p-toc.saf-p-toc a:focus-visible {
	text-decoration: underline;
}

.saf-p-toc__also.saf-p-toc__also {
	display: flex;
	flex-direction: column;
	gap: 8px;
	padding-top: 16px;
	border-top: 1px solid #d8d1c0;
}

.saf-p-pol__body.saf-p-pol__body {
	min-width: 0;
	max-width: 68ch;
	font-size: 17px;
	line-height: 1.7;
	overflow-wrap: anywhere;
}

.saf-h-band .saf-p-pol__body.saf-p-pol__body h2 {
	margin: 44px 0 12px;
	font-size: 26px;
	line-height: 1.2;
	font-weight: 700;
	color: var(--saf-charcoal, #1c1710);
	scroll-margin-top: 24px;
}

.saf-h-band .saf-p-pol__body.saf-p-pol__body h2:first-child {
	margin-top: 0;
}

.saf-h-band .saf-p-pol__body.saf-p-pol__body h3 {
	margin: 28px 0 10px;
	font-size: 20px;
	line-height: 1.25;
	font-weight: 700;
	color: var(--saf-charcoal, #1c1710);
}

.saf-h-band .saf-p-pol__body.saf-p-pol__body p {
	margin: 0 0 14px;
}

.saf-h-band .saf-p-pol__body.saf-p-pol__body ul {
	display: flex;
	flex-direction: column;
	gap: 8px;
	margin: 0 0 16px;
	padding-left: 22px;
}

@media (max-width: 900px) {
	.saf-p-pol.saf-p-pol {
		grid-template-columns: minmax(0, 1fr);
		gap: 28px;
	}

	.saf-p-pol.saf-p-pol > .saf-p-toc,
	.saf-p-pol.saf-p-pol > .saf-p-toc-w {
		position: static;
	}
}

/* ---- Resources (s421, scripts/oneshot/saf-redesign-resources.php) ----------- */
/* The hero is short (the directory follows at once) and its heading keeps the board's 15ch measure. */
.saf-h-band.saf-h-rs-hero {
	padding-bottom: 32px;
}

.saf-h-rs-hero .saf-h-h1 .elementor-heading-title {
	max-width: 15ch;
}

.saf-h-rs-hero .saf-h-lede.saf-h-lede {
	max-width: 38rem;
}

.saf-h-band.saf-h-dir {
	padding-top: 48px;
}

/* [saf_resource_directory] (sober-af-resources) keeps its own markup and layout; only its search panel and the
   category links take the canvas look: a white panel, and .choice pills (white, warm grey rule, charcoal) with the
   current category filled charcoal. The plugin's pills are (0,2,0) and its hover (0,3,0), so these sit at
   (0,3,0) and states at (0,4,0). */
.saf-h-dir .saf-search.saf-search {
	padding: 20px;
	border-color: #d8d1c0;
	border-radius: 16px;
	box-shadow: 0 1px 2px rgba(28, 23, 16, 0.06);
}

.saf-h-dir .saf-search__roots.saf-search__roots {
	gap: 10px;
}

.saf-h-dir .saf-search__root.saf-search__root {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0 18px;
	border: 1px solid #b9b09c;
	background: #ffffff;
	color: var(--saf-charcoal, #1c1710);
	font-size: 15px;
	font-weight: 600;
}

.saf-h-dir .saf-search__root.saf-search__root:hover,
.saf-h-dir .saf-search__root.saf-search__root:focus-visible {
	border-color: var(--saf-charcoal, #1c1710);
	background: #ffffff;
	color: var(--saf-charcoal, #1c1710);
}

.saf-h-dir .saf-search__root.saf-search__root.is-active {
	border-color: var(--saf-charcoal, #1c1710);
	background: var(--saf-charcoal, #1c1710);
	color: var(--saf-linen, #f5f1e7);
}

/* ---- Resource topic page + single (s423, saf-redesign-templates.php; markup from sober-af-resources) -----------
   The plugin's shortcodes print these classes; the plugin ships no CSS for the topic page, and the single's sheet
   (resources.css) styles only its own old panel. Public page: classes doubled to beat the Elementor kit, states
   restated at (0,3,0), [hidden] restated, every link a 44px target. */

/* Topic page: the term's own description, the topic chips, the count and the Add link. */
.saf-t-topic-w:has(.elementor-shortcode:empty),
.saf-t-topic-bar-w:has(.elementor-shortcode:empty) {
	display: none;
}

.saf-t-topic.saf-t-topic {
	display: flex;
	flex-direction: column;
	gap: 20px;
}

.saf-t-topic-lede.saf-t-topic-lede {
	max-width: 38rem;
	margin: 0;
	font-size: 19px;
	line-height: 1.6;
	color: #3a352d;
}

.saf-t-topic-chips.saf-t-topic-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}

.saf-t-topic-chip.saf-t-topic-chip {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0 18px;
	border: 1px solid #b9b09c;
	border-radius: 9999px;
	background: #ffffff;
	color: var(--saf-charcoal, #1c1710);
	font-size: 15px;
	font-weight: 600;
	text-decoration: none;
}

.saf-t-topic-chip.saf-t-topic-chip:hover,
.saf-t-topic-chip.saf-t-topic-chip:focus-visible {
	border-color: var(--saf-charcoal, #1c1710);
	background: #ffffff;
	color: var(--saf-charcoal, #1c1710);
	text-decoration: none;
}

.saf-t-topic-chip.saf-t-topic-chip.is-on,
.saf-t-topic-chip.saf-t-topic-chip.is-on:hover,
.saf-t-topic-chip.saf-t-topic-chip.is-on:focus-visible {
	border-color: var(--saf-charcoal, #1c1710);
	background: var(--saf-charcoal, #1c1710);
	color: var(--saf-linen, #f5f1e7);
}

.saf-t-topic-bar.saf-t-topic-bar {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: 12px;
	margin-bottom: 16px;
}

.saf-t-topic-count.saf-t-topic-count {
	margin: 0;
	font-size: 22px;
	line-height: 1.3;
}

/* The gap stands in for the space before the arrow span, which a flex item drops. */
.saf-t-topic-add.saf-t-topic-add {
	display: inline-flex;
	align-items: center;
	gap: 0.25em;
	min-height: 44px;
	color: var(--saf-burgundy, #7b181a);
	font-weight: 700;
	text-decoration: underline;
}

.saf-t-topic-add.saf-t-topic-add:hover,
.saf-t-topic-add.saf-t-topic-add:focus-visible {
	color: var(--saf-charcoal, #1c1710);
	text-decoration: underline;
}

/* Single: the hero is the board's (back link, title, tags, lede, buttons); the title is smaller than a view's. */
.saf-t-rs-hero.saf-t-rs-hero {
	gap: 18px;
}

.saf-t-rs-hero.saf-t-rs-hero .saf-t-h1.saf-t-h1 .jet-listing-dynamic-field__content,
.saf-t-rs-hero.saf-t-rs-hero .saf-t-h1.saf-t-h1 h1 {
	font-size: clamp(2.4rem, 5vw, 3.75rem) !important;
}

.saf-t-facts.saf-t-facts {
	width: 100%;
}

.saf-t-facts:has(.elementor-shortcode:empty) {
	display: none;
}

/* Single: the hero's tags, lede and the Call / Visit buttons. */
.saf-t-rhero-w:has(.elementor-shortcode:empty) {
	display: none;
}

.saf-t-rhero.saf-t-rhero {
	display: flex;
	flex-direction: column;
	gap: 18px;
}

.saf-t-tags.saf-t-tags {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.saf-t-tag.saf-t-tag {
	display: inline-flex;
	align-items: center;
	padding: 6px 14px;
	border: 1px solid #b9b09c;
	border-radius: 9999px;
	background: #ffffff;
	color: var(--saf-charcoal, #1c1710);
	font-size: 14px;
	font-weight: 700;
	line-height: 1.3;
}

.saf-t-tag.saf-t-tag.saf-t-tag--denim {
	border-color: transparent;
	background: rgba(0, 66, 99, 0.1);
	color: var(--saf-denim, #004263);
}

.saf-t-tag.saf-t-tag.saf-t-tag--emerald {
	border-color: transparent;
	background: rgba(23, 96, 59, 0.12);
	color: #17603b;
}

.saf-t-tag.saf-t-tag.saf-t-tag--claimed {
	border-color: var(--saf-charcoal, #1c1710);
	background: var(--saf-charcoal, #1c1710);
	color: var(--saf-linen, #f5f1e7);
}

.saf-t-hero-lede.saf-t-hero-lede {
	max-width: 46rem;
	margin: 0;
	font-size: 19px;
	line-height: 1.6;
	color: #3a352d;
}

.saf-t-btnrow.saf-t-btnrow {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
}

.saf-t-btn.saf-t-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 48px;
	padding: 0 24px;
	border: 2px solid var(--saf-brick-red, #be2727);
	border-radius: 8px;
	background: var(--saf-brick-red, #be2727);
	color: var(--saf-linen, #f5f1e7);
	font-size: 16px;
	font-weight: 700;
	line-height: 1.2;
	text-align: center;
	text-decoration: none;
}

.saf-t-btn.saf-t-btn.saf-t-btn--call {
	border-color: var(--saf-brick-red, #be2727);
	background: var(--saf-brick-red, #be2727);
}

.saf-t-btn.saf-t-btn:hover,
.saf-t-btn.saf-t-btn:focus-visible {
	border-color: var(--saf-burgundy, #7b181a);
	background: var(--saf-burgundy, #7b181a);
	color: var(--saf-linen, #f5f1e7);
	text-decoration: none;
}

.saf-t-btn.saf-t-btn.saf-t-btn--visit {
	border-color: var(--saf-charcoal, #1c1710);
	background: #ffffff;
	color: var(--saf-charcoal, #1c1710);
}

.saf-t-btn.saf-t-btn.saf-t-btn--visit:hover,
.saf-t-btn.saf-t-btn.saf-t-btn--visit:focus-visible {
	background: var(--saf-charcoal, #1c1710);
	color: var(--saf-linen, #f5f1e7);
}

.saf-t-btn.saf-t-btn.saf-t-btn--denim {
	border-color: var(--saf-denim, #004263);
	background: var(--saf-denim, #004263);
	color: var(--saf-linen, #f5f1e7);
}

.saf-t-btn.saf-t-btn.saf-t-btn--denim:hover,
.saf-t-btn.saf-t-btn.saf-t-btn--denim:focus-visible {
	border-color: var(--saf-charcoal, #1c1710);
	background: var(--saf-charcoal, #1c1710);
	color: var(--saf-linen, #f5f1e7);
}

/* Single: the "How to reach them" panel, the Helping someone panel and the FAQ. */
.saf-rsd.saf-rsd {
	padding: clamp(20px, 3vw, 28px);
	border: 1px solid #d8d1c0;
	border-radius: 16px;
	background: #ffffff;
	box-shadow: 0 1px 2px rgba(28, 23, 16, 0.06);
}

.saf-rsd--facts.saf-rsd--facts {
	margin: 0;
}

.saf-rsd-title.saf-rsd-title {
	margin: 0 0 10px;
	font-size: 24px;
	line-height: 1.25;
}

.saf-rsd-list.saf-rsd-list {
	display: flex;
	flex-direction: column;
	margin: 0;
}

.saf-rsd-row.saf-rsd-row {
	display: grid;
	grid-template-columns: 140px minmax(0, 1fr);
	gap: 16px;
	padding: 14px 0;
	border-bottom: 1px solid #ece6d6;
}

.saf-rsd-row.saf-rsd-row dt {
	margin: 0;
	color: #5a554e;
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.saf-rsd-row.saf-rsd-row dd {
	min-width: 0;
	margin: 0;
	font-size: 16px;
	line-height: 1.5;
	overflow-wrap: anywhere;
}

.saf-rsd-row.saf-rsd-row dd > a:not(.saf-rsd-chip) {
	display: inline-flex;
	align-items: center;
	max-width: 100%;
	min-height: 44px;
	color: var(--saf-burgundy, #7b181a);
	text-decoration: underline;
}

.saf-rsd-row.saf-rsd-row dd > a:not(.saf-rsd-chip):hover,
.saf-rsd-row.saf-rsd-row dd > a:not(.saf-rsd-chip):focus-visible {
	color: var(--saf-charcoal, #1c1710);
	text-decoration: underline;
}

.saf-rsd-chips.saf-rsd-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.saf-rsd-chip.saf-rsd-chip {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0 16px;
	border: 1px solid #b9b09c;
	border-radius: 9999px;
	background: #ffffff;
	color: var(--saf-charcoal, #1c1710);
	font-size: 15px;
	font-weight: 600;
	text-decoration: none;
}

a.saf-rsd-chip.saf-rsd-chip:hover,
a.saf-rsd-chip.saf-rsd-chip:focus-visible {
	border-color: var(--saf-charcoal, #1c1710);
	background: #ffffff;
	color: var(--saf-charcoal, #1c1710);
	text-decoration: none;
}

.saf-rsd-chip.saf-rsd-chip.saf-rsd-chip--plain {
	border-color: transparent;
	background: #ece6d6;
}

.saf-rsd-actions.saf-rsd-actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 24px;
	margin-top: 8px;
	font-size: 15px;
}

.saf-rsd-action.saf-rsd-action {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	color: var(--saf-burgundy, #7b181a);
	font-weight: 600;
	text-decoration: underline;
}

.saf-rsd-action.saf-rsd-action:hover,
.saf-rsd-action.saf-rsd-action:focus-visible {
	color: var(--saf-charcoal, #1c1710);
	text-decoration: underline;
}

.saf-t-doors.saf-t-doors {
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.saf-rsd--help.saf-rsd--help {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 10px;
	padding: 24px;
}

.saf-rsd-help-title.saf-rsd-help-title {
	margin: 0;
	font-size: 19px;
	line-height: 1.3;
}

.saf-rsd-help-text.saf-rsd-help-text {
	margin: 0;
	color: #5a554e;
	font-size: 15px;
	line-height: 1.55;
}

/* The three doors keep their forms; each is a row of the FAQ, not a boxed block. Both panels come out of one
 * shortcode, so the column's gap never reaches between them. */
.saf-rsd--faq.saf-rsd--faq {
	padding: 4px 24px;
}

.saf-rsd--help.saf-rsd--help + .saf-rsd--faq {
	margin-top: 16px;
}

.saf-rsd--faq .saf-ra.saf-ra--single {
	margin: 0;
	padding: 0;
	border: 0;
	border-bottom: 1px solid #ece6d6;
	border-radius: 0;
	background: transparent;
}

.saf-rsd--faq .saf-ra.saf-ra--single:last-child {
	border-bottom: 0;
}

.saf-rsd--faq .saf-ra__summary.saf-ra__summary {
	display: flex;
	align-items: center;
	min-height: 44px;
	padding: 8px 0;
	font-size: 16px;
}

.saf-rsd--faq .saf-ra__form {
	max-width: none;
	margin: 0;
	padding: 0 0 16px;
}

.saf-rsd--faq .saf-ra__other[hidden] {
	display: none;
}

/* The request form keeps its own panel under the doors. */
.saf-t-side--doors.saf-t-side--doors {
	gap: 16px;
}

@media (max-width: 720px) {
	.saf-rsd-row.saf-rsd-row {
		grid-template-columns: minmax(0, 1fr);
		gap: 4px;
	}

	.saf-t-btnrow.saf-t-btnrow .saf-t-btn {
		flex: 1 1 100%;
	}
}

/* ---- Peers + Apply to be a peer (s421, scripts/oneshot/saf-redesign-peer-pages.php) ------------------------
   Both pages keep their own JetEngine listings; .saf-h-lgrid turns each listing item into a Home card (white,
   16px radius). Its fields are read by position: two fields = a title and a line; --lead puts a big red number
   first (the steps' own num); --facts makes a label over a value (the "Who can apply" tiles); --count numbers the
   cards in order. The listing's own element CSS is (0,3,0)-(0,4,0), so these sit at (0,6,0) and the variants at
   (0,7,0). */
.saf-h-actions.saf-h-actions {
	flex-direction: row;
	flex-wrap: wrap;
	align-items: center;
	gap: 14px 28px;
}

.saf-h-actions.saf-h-actions > .elementor-widget {
	width: auto;
	margin: 0;
}

/* A standalone link in a row of actions is a 44px target, not a 21px line of text. The gap stands in for the space
   before the arrow span, which a flex item drops. */
.saf-h-actions .saf-h-more.saf-h-more .elementor-heading-title a {
	display: inline-flex;
	align-items: center;
	gap: 0.25em;
	min-height: 44px;
}

/* The hero is short (cards follow at once), as on /resources/. */
.saf-h-band.saf-h-pe-hero {
	padding-bottom: 32px;
}

.saf-h-pe-hero .saf-h-h1 .elementor-heading-title,
.saf-h-ap-hero .saf-h-h1 .elementor-heading-title {
	max-width: 16ch;
}

.saf-h-pe-hero .saf-h-lede.saf-h-lede,
.saf-h-ap-hero .saf-h-lede.saf-h-lede {
	max-width: 42rem;
}

.saf-h-lgrid.saf-h-lgrid .jet-listing-grid__item .elementor .e-con.e-parent {
	gap: 8px;
	height: 100%;
	padding: 24px;
	border: 0;
	border-radius: 16px;
	background: #ffffff;
	box-shadow: 0 1px 2px rgba(28, 23, 16, 0.06);
}

.saf-h-lgrid.saf-h-lgrid .jet-listing-grid__item .elementor-widget-jet-listing-dynamic-field {
	margin: 0;
}

.saf-h-lgrid.saf-h-lgrid .jet-listing-grid__item .elementor-widget:nth-child(1) .jet-listing-dynamic-field__content {
	font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
	font-size: 19px;
	font-weight: 700;
	line-height: 1.25;
	color: var(--saf-charcoal, #1c1710);
}

.saf-h-lgrid.saf-h-lgrid .jet-listing-grid__item .elementor-widget:nth-child(n+2) .jet-listing-dynamic-field__content {
	font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
	font-size: 15.5px;
	font-weight: 400;
	line-height: 1.55;
	color: #5a554e;
}

/* --lead: number, title, line. */
.saf-h-lgrid.saf-h-lgrid.saf-h-lgrid--lead .jet-listing-grid__item .elementor-widget:nth-child(1) .jet-listing-dynamic-field__content {
	font-size: 30px;
	line-height: 1.1;
	color: var(--saf-brick-red, #be2727);
	font-variant-numeric: tabular-nums;
}

.saf-h-lgrid.saf-h-lgrid.saf-h-lgrid--lead .jet-listing-grid__item .elementor-widget:nth-child(2) .jet-listing-dynamic-field__content {
	font-size: 19px;
	font-weight: 700;
	line-height: 1.25;
	color: var(--saf-charcoal, #1c1710);
}

/* --facts: a small label over a bold value, ruled tiles rather than raised cards. */
.saf-h-lgrid.saf-h-lgrid.saf-h-lgrid--facts .jet-listing-grid__item .elementor .e-con.e-parent {
	gap: 6px;
	padding: 18px 20px;
	border: 1px solid #d8d1c0;
	box-shadow: none;
}

.saf-h-lgrid.saf-h-lgrid.saf-h-lgrid--facts .jet-listing-grid__item .elementor-widget:nth-child(1) .jet-listing-dynamic-field__content {
	font-size: 13px;
	line-height: 1.4;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: #5a554e;
}

.saf-h-lgrid.saf-h-lgrid.saf-h-lgrid--facts .jet-listing-grid__item .elementor-widget:nth-child(2) .jet-listing-dynamic-field__content {
	font-size: 18px;
	font-weight: 700;
	line-height: 1.35;
	color: var(--saf-charcoal, #1c1710);
}

/* --count: the cards carry no number of their own, so the grid numbers them in order. */
.saf-h-lgrid.saf-h-lgrid--count .jet-listing-grid__items {
	counter-reset: saf-h-step;
}

.saf-h-lgrid.saf-h-lgrid--count .jet-listing-grid__item {
	counter-increment: saf-h-step;
}

/* On the first field, not the card: Elementor owns a container's ::before (its absolutely placed background overlay). */
.saf-h-lgrid.saf-h-lgrid.saf-h-lgrid--count .jet-listing-grid__item .elementor-widget:nth-child(1) .jet-listing-dynamic-field__content::before {
	content: counter(saf-h-step);
	display: block;
	margin-bottom: 8px;
	font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
	font-size: 30px;
	font-weight: 700;
	line-height: 1.1;
	color: var(--saf-brick-red, #be2727);
	font-variant-numeric: tabular-nums;
}

.saf-h-ap-not.saf-h-ap-not strong {
	color: var(--saf-charcoal, #1c1710);
}

/* The two links in that sentence are 24px targets (SC 2.5.8; the walk measured 21px). */
.saf-h-ap-not.saf-h-ap-not a {
	display: inline-block;
	padding: 2px 0;
}

/* s430 (owner Q12, scripts/oneshot/saf-s430-peer-apply-extras.php): the hero line under the h1 and the booth photo
   beside the text; the "Your path" aside beside the application form. Both splits stack at 900px and under. */
.saf-h-wrap.saf-h-ap-split {
	display: grid;
	grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
	gap: 48px;
	align-items: center;
}

.saf-h-ap-line.saf-h-ap-line .elementor-heading-title {
	max-width: 30ch;
	font-size: clamp(1.25rem, 2.2vw, 1.5rem);
	font-weight: 700;
	line-height: 1.35;
	color: var(--saf-charcoal, #1c1710);
}

.saf-h-ap-photo.saf-h-ap-photo .saf-photo {
	margin: 0;
}

.saf-h-ap-photo.saf-h-ap-photo .saf-photo__img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	border-radius: 16px;
}

.saf-h-ap-formsplit.saf-h-ap-formsplit {
	display: grid;
	grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
	gap: 32px;
	align-items: start;
}

/* A box inside a grid track needs min-width 0, or a wide form field blows the track out. */
.saf-h-ap-formsplit.saf-h-ap-formsplit > .e-con {
	min-width: 0;
}

.saf-h-ap-path.saf-h-ap-path {
	gap: 12px;
}

.saf-h-ap-path-h.saf-h-ap-path-h .elementor-heading-title {
	font-size: 22px;
	font-weight: 700;
	line-height: 1.25;
	color: var(--saf-charcoal, #1c1710);
}

.saf-h-ap-path.saf-h-ap-path .saf-h-ap-steps {
	margin: 0;
	padding-left: 1.25em;
	font-size: 16px;
	line-height: 1.55;
	color: #5a554e;
}

.saf-h-ap-path.saf-h-ap-path .saf-h-ap-steps li + li {
	margin-top: 10px;
}

.saf-h-ap-path.saf-h-ap-path .saf-h-ap-steps strong {
	color: var(--saf-charcoal, #1c1710);
}

@media (max-width: 900px) {
	.saf-h-wrap.saf-h-ap-split,
	.saf-h-ap-formsplit.saf-h-ap-formsplit {
		grid-template-columns: 1fr;
		gap: 24px;
	}
}

/* ---- Donate (s421, scripts/oneshot/saf-redesign-donate.php) --------------------------------------------------
   The giving form takes live payments: nothing here reaches inside [saf_giving_form]. A white panel goes around it
   and the "Or give with" row sits under it; the Give button's anchor (#donate) lands on the panel. */
.saf-h-dn-split.saf-h-dn-split {
	align-items: start;
}

.saf-h-give.saf-h-give {
	gap: 20px;
	scroll-margin-top: 96px;
}

.saf-h-dn-pay.saf-h-dn-pay {
	padding-top: 16px;
	border-top: 1px solid #d8d1c0;
}

/* The logos are 20px tall; their links are 44px targets, as the action links are. */
.saf-h-dn-pay.saf-h-dn-pay .saf-h-pay__logo a {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
}

/* --tiers: the tier listing on the dark band, a goldenrod rule over each amount (the board's). */
.saf-h-lgrid.saf-h-lgrid.saf-h-lgrid--tiers .jet-listing-grid__item .elementor .e-con.e-parent {
	gap: 10px;
	padding: 20px 0 0;
	border: 0;
	border-top: 2px solid var(--saf-goldenrod, #ebad2e);
	border-radius: 0;
	background: transparent;
	box-shadow: none;
}

.saf-h-lgrid.saf-h-lgrid.saf-h-lgrid--tiers .jet-listing-grid__item .elementor-widget:nth-child(1) .jet-listing-dynamic-field__content {
	font-size: 40px;
	line-height: 1.1;
	color: var(--saf-goldenrod, #ebad2e);
	font-variant-numeric: tabular-nums;
}

.saf-h-lgrid.saf-h-lgrid.saf-h-lgrid--tiers .jet-listing-grid__item .elementor-widget:nth-child(2) .jet-listing-dynamic-field__content {
	font-size: 20px;
	font-weight: 700;
	line-height: 1.25;
	color: var(--saf-linen, #f5f1e7);
}

.saf-h-lgrid.saf-h-lgrid.saf-h-lgrid--tiers .jet-listing-grid__item .elementor-widget:nth-child(3) .jet-listing-dynamic-field__content {
	font-size: 16px;
	line-height: 1.55;
	color: rgba(245, 241, 231, 0.9);
}

/* s430 (owner Q9, scripts/oneshot/saf-s430-donate-before-you-give.php): the board's peer quote, then "Before you
   give" as three answer panels (the tax receipt, a monthly gift, a check). The giving form's band is not touched. */
.saf-h-dn-quote__fig.saf-h-dn-quote__fig {
	max-width: 52rem;
	margin: 0 auto;
	text-align: center;
}

.saf-h-dn-quote__text.saf-h-dn-quote__text {
	margin: 0;
	padding: 0;
	border: 0;
}

.saf-h-dn-quote__text.saf-h-dn-quote__text p {
	margin: 0;
	font-size: clamp(1.25rem, 2.4vw, 1.625rem);
	font-weight: 700;
	line-height: 1.4;
	color: var(--saf-charcoal, #1c1710);
}

.saf-h-dn-quote__by.saf-h-dn-quote__by {
	margin-top: 16px;
	font-size: 14px;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--saf-denim, #004263);
}

.saf-h-dn-qs.saf-h-dn-qs {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 24px;
	align-items: stretch;
}

.saf-h-dn-q.saf-h-dn-q {
	gap: 10px;
	min-width: 0;
}

.saf-h-dn-q__h.saf-h-dn-q__h .elementor-heading-title {
	font-size: 20px;
	font-weight: 700;
	line-height: 1.3;
	color: var(--saf-charcoal, #1c1710);
}

.saf-h-dn-q__a.saf-h-dn-q__a p {
	margin: 0;
	font-size: 16px;
	line-height: 1.6;
	color: #5a554e;
}

.saf-h-dn-q__a.saf-h-dn-q__a a {
	color: var(--saf-brick-red, #be2727);
	text-decoration: underline;
}

.saf-h-dn-q__a.saf-h-dn-q__a a:hover,
.saf-h-dn-q__a.saf-h-dn-q__a a:focus-visible {
	color: var(--saf-burgundy, #7b181a);
}

@media (max-width: 900px) {
	.saf-h-dn-qs.saf-h-dn-qs {
		grid-template-columns: 1fr;
	}
}

/* ---- Events (s421, scripts/oneshot/saf-redesign-events.php) --------------------------------------------------
 * The filter pills, labels, inputs, pagination and the "Past Events" divider stay in saf-events-filters.css (loaded
 * on this page only); the event card is the listing's own. This section only lays the pieces out. */

/* The hero sits close to the filters (the board's). */
.saf-h-band.saf-h-ev-hero {
	padding-bottom: 24px;
}

.saf-h-band.saf-h-ev-list {
	padding-top: 8px;
}

.saf-h-ev-filters.saf-h-ev-filters {
	gap: 16px;
	padding: 18px 20px;
	border: 1px solid #d8d1c0;
}

.saf-h-ev-bar.saf-h-ev-bar {
	gap: 12px 20px;
}

.saf-h-ev-bar.saf-h-ev-bar > .elementor-widget {
	flex: 1 1 180px;
	width: auto;
	margin: 0;
}

/* Upcoming / Past is the first choice: its own row, as on the board. */
.saf-h-ev-bar.saf-h-ev-bar > .elementor-widget:first-child {
	flex-basis: 100%;
}

.saf-h-ev-grid.saf-h-ev-grid {
	margin-top: 32px;
}

@media (max-width: 600px) {
	.saf-h-ev-bar.saf-h-ev-bar > .elementor-widget {
		flex-basis: 100%;
	}
}

/* ---- Events, s423 (scripts/oneshot/saf-redesign-events.php, saf-redesign-templates.php) ------------------------
 * Hero link under the lede; the Filters button on a phone; the white event card; the Upcoming / Past bands. */

/* Title, lede, then "Submit an event" under them: the h1 runs two lines, the link is a 44px target. */
.saf-h-ev-hero .saf-h-h1 .elementor-heading-title {
	max-width: 16ch;
}

.saf-h-ev-hero .saf-h-lede.saf-h-lede {
	max-width: 42rem;
}

.saf-h-ev-hero.saf-h-ev-hero .saf-h-more.saf-h-more .elementor-heading-title a {
	display: inline-flex;
	align-items: center;
	gap: 0.25em;
	min-height: 44px;
}

/* The Filters button: the events script shows it (hidden until then) and marks the panel collapsible; phones only. */
.saf-h-ev-toggle.saf-h-ev-toggle {
	display: none;
	align-items: center;
	gap: 10px;
	min-height: 44px;
	padding: 0 20px;
	border: 1px solid #b9b09c;
	border-radius: 9999px;
	background: #ffffff;
	color: #1c1710;
	font: inherit;
	font-size: 15px;
	font-weight: 600;
	cursor: pointer;
}

.saf-h-ev-toggle.saf-h-ev-toggle:hover,
.saf-h-ev-toggle.saf-h-ev-toggle:focus-visible {
	border-color: #1c1710;
	background: #ffffff;
	color: #1c1710;
}

.saf-h-ev-toggle.saf-h-ev-toggle:focus-visible {
	outline: 3px solid #004263;
	outline-offset: 2px;
}

.saf-h-ev-toggle.saf-h-ev-toggle::after {
	content: "";
	width: 8px;
	height: 8px;
	border-right: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: translateY(-2px) rotate(45deg);
}

.saf-h-ev-toggle.saf-h-ev-toggle[aria-expanded="true"]::after {
	transform: translateY(2px) rotate(-135deg);
}

.saf-h-ev-toggle.saf-h-ev-toggle .saf-h-ev-toggle__count {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 24px;
	height: 24px;
	padding: 0 6px;
	border-radius: 9999px;
	background: #be2727;
	color: #ffffff;
	font-size: 13px;
	font-weight: 700;
}

.saf-h-ev-toggle.saf-h-ev-toggle .saf-h-ev-toggle__count[hidden] {
	display: none;
}

.saf-h-ev-toggle.saf-h-ev-toggle[hidden] {
	display: none;
}

/* Its widget wrapper takes no room while the button is hidden or the page is wider than a phone. */
.saf-h-ev-toggle-wrap.saf-h-ev-toggle-wrap:not(:has(.saf-h-ev-toggle:not([hidden]))) {
	display: none;
}

@media (min-width: 601px) {
	.saf-h-ev-toggle-wrap.saf-h-ev-toggle-wrap {
		display: none;
	}
}

@media (max-width: 600px) {
	.saf-h-ev-toggle.saf-h-ev-toggle:not([hidden]) {
		display: inline-flex;
		align-self: flex-start;
	}

	.saf-h-ev-filters.saf-h-ev-filters.is-collapsible:not(.is-open) {
		display: none;
	}
}

/* Band headings: a full row of the listing grid, on /events/ and on a topic page (the mu-plugin prints them). */
.saf-events-band.saf-events-band {
	grid-column: 1 / -1;
	flex-basis: 100%;
	width: 100%;
	margin: 8px 0 0;
	padding: 0;
	border: 0;
}

.saf-events-band.saf-events-band--past {
	margin-top: 32px;
}

.saf-events-band.saf-events-band .saf-events-band__title {
	margin: 0;
	color: #1c1710;
	font-size: clamp(1.75rem, 3.5vw, 2.25rem);
	font-weight: 700;
	line-height: 1.1;
}

.saf-events-band-empty.saf-events-band-empty {
	grid-column: 1 / -1;
	flex-basis: 100%;
	width: 100%;
	display: flex;
	flex-direction: column;
	gap: 6px;
	padding: 24px;
	border-radius: 16px;
	background: #ffffff;
	box-shadow: 0 1px 2px rgba(28, 23, 16, 0.06);
	color: #1c1710;
}

/* A topic page has no .saf-ev-cards to pull its grid in: the bands line up with the title and the cards, 10px inside the grid's gutter. */
body.tax-event_category .saf-events-band.saf-events-band,
body.tax-event_tag .saf-events-band.saf-events-band {
	flex-basis: calc(100% - 20px);
	width: calc(100% - 20px);
	margin: 16px 10px 12px;
}

body.tax-event_category .saf-events-band.saf-events-band--past,
body.tax-event_tag .saf-events-band.saf-events-band--past {
	margin-top: 32px;
}

body.tax-event_category .saf-events-band-empty.saf-events-band-empty,
body.tax-event_tag .saf-events-band-empty.saf-events-band-empty {
	flex-basis: calc(100% - 20px);
	width: calc(100% - 20px);
	margin: 0 10px;
}

.saf-events-band-empty.saf-events-band-empty span {
	color: #5a554e;
}

.saf-events-band-empty.saf-events-band-empty a {
	display: inline-flex;
	align-items: center;
	align-self: flex-start;
	gap: 0.25em;
	min-height: 44px;
	color: var(--saf-brick-red, #be2727);
	font-weight: 700;
	text-decoration: none;
}

.saf-events-band-empty.saf-events-band-empty a:hover,
.saf-events-band-empty.saf-events-band-empty a:focus-visible {
	color: var(--saf-brick-red, #be2727);
	text-decoration: underline;
}

/* A topic page's lede is the term's own description; with none the slot is gone. */
.saf-t-lede-slot.saf-t-lede-slot:not(:has(.saf-archive-lede)) {
	display: none;
}

.saf-t-lede-slot.saf-t-lede-slot .saf-archive-lede {
	max-width: 42rem;
	margin: 0;
	font-size: 18px;
	line-height: 1.65;
}

/* The event card (listing saf-events-poster-card) in white, on the grids that carry .saf-ev-cards (the /events/
 * grid and the topic pages' when the seed finds the poster card there). Upcoming cards are two to a row beside a
 * 220px flyer; the cards after the "Past events" heading are small, five to a row. The grid counts in tenths
 * (6 / 2 on a tablet, 2 / 1 on a phone) so both sizes share one row of columns. The !important on the margin, width
 * and padding answers the grid's own per-widget gap rule, whose :is() carries (0,8,0): without it the cards sat 14px
 * inside the band headings, 52px apart. */
.saf-ev-cards.saf-ev-cards .jet-listing-grid__items.jet-listing-grid__items {
	display: grid;
	grid-template-columns: repeat(10, minmax(0, 1fr));
	gap: 24px;
	width: auto !important;
	margin: 0 !important;
}

.saf-ev-cards.saf-ev-cards .jet-listing-grid__items .jet-listing-grid__item.jet-listing-grid__item {
	display: flex;
	grid-column: span 5;
	flex: none;
	width: auto;
	max-width: none;
	min-width: 0;
	padding: 0 !important;
}

.saf-ev-cards.saf-ev-cards .jet-listing-grid__items .saf-events-band--past ~ .jet-listing-grid__item.jet-listing-grid__item {
	grid-column: span 2;
}

.saf-ev-cards.saf-ev-cards .jet-listing-grid__item > .elementor {
	flex: 1;
	min-width: 0;
}

/* The card: flyer on the left, the words on the right, white. */
.saf-ev-cards.saf-ev-cards .jet-listing-grid__item .saf-card-lift.saf-card-lift {
	position: relative;
	display: grid;
	grid-template-columns: 220px minmax(0, 1fr);
	gap: 0;
	height: 100%;
	min-height: 220px;
	padding: 0;
	border-radius: 16px;
	background: #ffffff;
	box-shadow: 0 1px 2px rgba(28, 23, 16, 0.06);
	overflow: hidden;
}

.saf-ev-cards.saf-ev-cards .saf-card-lift.saf-card-lift > .elementor-widget-jet-listing-dynamic-image {
	position: relative;
	min-height: 220px;
	margin: 0;
}

.saf-ev-cards.saf-ev-cards .saf-card-lift.saf-card-lift > .elementor-widget-jet-listing-dynamic-image .jet-listing-dynamic-image__link,
.saf-ev-cards.saf-ev-cards .saf-card-lift.saf-card-lift > .elementor-widget-jet-listing-dynamic-image .jet-listing-dynamic-image__img {
	position: absolute;
	inset: 0;
	display: block;
	width: 100%;
	height: 100%;
	max-width: none;
	object-fit: cover;
}

/* The navy tear under the flyer goes. */
.saf-ev-cards.saf-ev-cards .saf-card-lift.saf-card-lift > .elementor-widget-image {
	display: none;
}

/* The date chip stays on the flyer, at its top left. */
.saf-ev-cards.saf-ev-cards .saf-card-lift.saf-card-lift > .elementor-widget-jet-listing-dynamic-field {
	position: absolute;
	inset-block-start: 12px;
	inset-inline-start: 12px;
	inset-inline-end: auto;
	right: auto;
	left: 12px;
	top: 12px;
	width: auto;
	margin: 0;
}

.saf-ev-cards.saf-ev-cards .saf-card-lift.saf-card-lift > .e-con {
	display: flex;
	flex-flow: row wrap;
	align-content: flex-start;
	align-items: center;
	gap: 8px 20px;
	padding: 24px;
	background: transparent;
}

.saf-ev-cards.saf-ev-cards .saf-card-lift.saf-card-lift > .e-con > .elementor-widget {
	flex: 0 0 100%;
	min-width: 0;
	margin: 0;
}

.saf-ev-cards.saf-ev-cards .saf-card-lift.saf-card-lift > .e-con > .elementor-widget-jet-listing-dynamic-link,
.saf-ev-cards.saf-ev-cards .saf-card-lift.saf-card-lift > .e-con > .elementor-widget-shortcode {
	flex: 0 0 auto;
}

/* The topic tag: a denim pill drawn behind a 44px link. */
.saf-ev-cards.saf-ev-cards .saf-card-lift .jet-listing-dynamic-terms__link.jet-listing-dynamic-terms__link {
	position: relative;
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0 12px;
	isolation: isolate;
	background: transparent;
	color: #f5f1e7;
	font-size: 13px;
	font-weight: 700;
	text-decoration: none;
}

.saf-ev-cards.saf-ev-cards .saf-card-lift .jet-listing-dynamic-terms__link.jet-listing-dynamic-terms__link::before {
	content: "";
	position: absolute;
	inset: 9px 0;
	z-index: -1;
	border-radius: 9999px;
	background: #004263;
}

.saf-ev-cards.saf-ev-cards .saf-card-lift .jet-listing-dynamic-terms__link.jet-listing-dynamic-terms__link:hover,
.saf-ev-cards.saf-ev-cards .saf-card-lift .jet-listing-dynamic-terms__link.jet-listing-dynamic-terms__link:focus-visible {
	background: transparent;
	color: #f5f1e7;
	text-decoration: underline;
}

/* The words: the first line field is the title; the others (time, place) are the muted lines. */
.saf-ev-cards.saf-ev-cards .saf-card-lift .e-con .jet-listing-dynamic-field__content {
	color: #5a554e;
	font-size: 15px;
	line-height: 1.4;
}

.saf-ev-cards.saf-ev-cards .saf-card-lift .e-con .elementor-widget-jet-listing-dynamic-field:not(.elementor-widget-jet-listing-dynamic-field ~ .elementor-widget-jet-listing-dynamic-field) .jet-listing-dynamic-field__content {
	color: #1c1710;
	font-size: 24px;
	font-weight: 700;
	line-height: 1.2;
}

/* View event, then Save, on one row. */
.saf-ev-cards.saf-ev-cards .saf-card-lift .jet-listing-dynamic-link__link.jet-listing-dynamic-link__link {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0;
	border: 0;
	background: transparent;
	color: var(--saf-brick-red, #be2727);
	font-size: 16px;
	font-weight: 700;
	text-decoration: none;
}

.saf-ev-cards.saf-ev-cards .saf-card-lift .jet-listing-dynamic-link__link.jet-listing-dynamic-link__link::after {
	content: "\2192";
	order: 3;
	margin-left: 0.4em;
}

.saf-ev-cards.saf-ev-cards .saf-card-lift .jet-listing-dynamic-link__link.jet-listing-dynamic-link__link:hover,
.saf-ev-cards.saf-ev-cards .saf-card-lift .jet-listing-dynamic-link__link.jet-listing-dynamic-link__link:focus-visible {
	border: 0;
	background: transparent;
	color: var(--saf-brick-red, #be2727);
	text-decoration: underline;
}

/* Save: the dark variant the navy card needed is the light one again. */
.saf-ev-cards.saf-ev-cards .saf-save-toggle--dark .saf-save-toggle__btn {
	background: transparent;
	color: var(--saf-brand, #be2727);
	border-color: var(--saf-brand, #be2727);
}

.saf-ev-cards.saf-ev-cards .saf-save-toggle--dark .saf-save-toggle__btn:hover,
.saf-ev-cards.saf-ev-cards .saf-save-toggle--dark .saf-save-toggle__btn[aria-pressed="true"] {
	background: var(--saf-brand, #be2727);
	color: #ffffff;
	border-color: var(--saf-brand, #be2727);
}

.saf-ev-cards.saf-ev-cards .saf-save-toggle--dark .saf-save-toggle__btn:focus-visible {
	outline-color: var(--saf-brand, #be2727);
}

.saf-ev-cards.saf-ev-cards .saf-save-toggle--dark .saf-save-toggle__signin.saf-save-toggle__signin {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0;
	color: var(--saf-brand, #be2727);
}

.saf-ev-cards.saf-ev-cards .saf-save-toggle--dark .saf-save-toggle__btn.saf-save-toggle__btn[hidden],
.saf-ev-cards.saf-ev-cards .saf-save-toggle--dark .saf-save-toggle__signin.saf-save-toggle__signin[hidden] {
	display: none;
}

/* The past band: small cards, no frame; the date, title and place under a 4:5 flyer; no tag, link or Save (the
 * flyer is the card's one link, named by the event title). */
.saf-ev-cards.saf-ev-cards .saf-events-band--past ~ .jet-listing-grid__item .saf-card-lift.saf-card-lift {
	display: flex;
	flex-direction: column;
	gap: 6px;
	min-height: 0;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
	overflow: visible;
}

.saf-ev-cards.saf-ev-cards .saf-events-band--past ~ .jet-listing-grid__item .saf-card-lift.saf-card-lift > .elementor-widget-jet-listing-dynamic-image {
	order: 0;
	width: 100%; /* Below 768px a stretched width does not feed the aspect ratio: the flyer collapsed to 0 tall. */
	min-height: 0;
	aspect-ratio: 4 / 5;
	border-radius: 8px;
	overflow: hidden;
}

.saf-ev-cards.saf-ev-cards .saf-events-band--past ~ .jet-listing-grid__item .saf-card-lift.saf-card-lift > .elementor-widget-jet-listing-dynamic-field {
	position: static;
	order: 1;
	background: transparent;
	padding: 0;
	border-radius: 0;
}

.saf-ev-cards.saf-ev-cards .saf-events-band--past ~ .jet-listing-grid__item .saf-card-lift.saf-card-lift > .elementor-widget-jet-listing-dynamic-field .jet-listing-dynamic-field__content {
	color: #5a554e;
	font-size: 12px;
	font-weight: 600;
}

.saf-ev-cards.saf-ev-cards .saf-events-band--past ~ .jet-listing-grid__item .saf-card-lift.saf-card-lift > .e-con {
	order: 2;
	padding: 0;
	gap: 4px;
}

.saf-ev-cards.saf-ev-cards .saf-events-band--past ~ .jet-listing-grid__item .saf-card-lift .e-con .jet-listing-dynamic-field__content {
	font-size: 13px;
}

.saf-ev-cards.saf-ev-cards .saf-events-band--past ~ .jet-listing-grid__item .saf-card-lift .e-con .elementor-widget-jet-listing-dynamic-field:not(.elementor-widget-jet-listing-dynamic-field ~ .elementor-widget-jet-listing-dynamic-field) .jet-listing-dynamic-field__content {
	font-size: 15px;
	line-height: 1.3;
}

.saf-ev-cards.saf-ev-cards .saf-events-band--past ~ .jet-listing-grid__item .saf-card-lift .e-con > .elementor-widget-jet-listing-dynamic-terms,
.saf-ev-cards.saf-ev-cards .saf-events-band--past ~ .jet-listing-grid__item .saf-card-lift .e-con > .elementor-widget-jet-listing-dynamic-link,
.saf-ev-cards.saf-ev-cards .saf-events-band--past ~ .jet-listing-grid__item .saf-card-lift .e-con > .elementor-widget-shortcode {
	display: none;
}

@media (max-width: 1024px) {
	.saf-ev-cards.saf-ev-cards .jet-listing-grid__items.jet-listing-grid__items {
		grid-template-columns: repeat(6, minmax(0, 1fr));
	}

	/* One upcoming card to a row: two beside a 220px flyer left 136px of words, and a long title was cut off. */
	.saf-ev-cards.saf-ev-cards .jet-listing-grid__items .jet-listing-grid__item.jet-listing-grid__item {
		grid-column: span 6;
	}
}

@media (max-width: 767px) {
	.saf-ev-cards.saf-ev-cards .jet-listing-grid__items.jet-listing-grid__items {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 16px;
	}

	.saf-ev-cards.saf-ev-cards .jet-listing-grid__items .jet-listing-grid__item.jet-listing-grid__item {
		grid-column: span 2;
	}

	.saf-ev-cards.saf-ev-cards .jet-listing-grid__items .saf-events-band--past ~ .jet-listing-grid__item.jet-listing-grid__item {
		grid-column: span 1;
	}

	.saf-ev-cards.saf-ev-cards .jet-listing-grid__item .saf-card-lift.saf-card-lift {
		grid-template-columns: 120px minmax(0, 1fr);
		min-height: 160px;
	}

	.saf-ev-cards.saf-ev-cards .saf-card-lift.saf-card-lift > .elementor-widget-jet-listing-dynamic-image {
		min-height: 160px;
	}

	.saf-ev-cards.saf-ev-cards .saf-card-lift.saf-card-lift > .e-con {
		padding: 16px;
	}

	.saf-ev-cards.saf-ev-cards .saf-card-lift.saf-card-lift > .elementor-widget-jet-listing-dynamic-field {
		inset-inline-start: 8px;
		left: 8px;
		top: 8px;
		max-width: 104px;
	}

	.saf-ev-cards.saf-ev-cards .saf-card-lift.saf-card-lift > .elementor-widget-jet-listing-dynamic-field .jet-listing-dynamic-field__content {
		font-size: 11px;
		line-height: 1.2;
	}

	.saf-ev-cards.saf-ev-cards .saf-card-lift .e-con .elementor-widget-jet-listing-dynamic-field:not(.elementor-widget-jet-listing-dynamic-field ~ .elementor-widget-jet-listing-dynamic-field) .jet-listing-dynamic-field__content {
		font-size: 20px;
	}

	.saf-ev-cards.saf-ev-cards .saf-events-band--past ~ .jet-listing-grid__item .saf-card-lift.saf-card-lift {
		grid-template-columns: none;
		min-height: 0;
	}

	.saf-ev-cards.saf-ev-cards .saf-events-band--past ~ .jet-listing-grid__item .saf-card-lift.saf-card-lift > .e-con {
		padding: 0;
	}

	.saf-ev-cards.saf-ev-cards .saf-events-band--past ~ .jet-listing-grid__item .saf-card-lift.saf-card-lift > .elementor-widget-jet-listing-dynamic-image {
		min-height: 0;
	}

	.saf-ev-cards.saf-ev-cards .saf-events-band--past ~ .jet-listing-grid__item .saf-card-lift.saf-card-lift > .elementor-widget-jet-listing-dynamic-field {
		max-width: none;
	}

	.saf-ev-cards.saf-ev-cards .saf-events-band--past ~ .jet-listing-grid__item .saf-card-lift .e-con .elementor-widget-jet-listing-dynamic-field:not(.elementor-widget-jet-listing-dynamic-field ~ .elementor-widget-jet-listing-dynamic-field) .jet-listing-dynamic-field__content {
		font-size: 15px;
	}
}

/* ---- Sections and bands shapes (saf-redesign-simple.php) ----------------------------------------------------
   Sections: a content page cut at its h2s, one band each. Bands: an Elementor page's own bands re-laid in the
   Home vocabulary. Live parts (forms, listing grids) sit in a white panel or as they render today. */
.saf-p-sec.saf-p-sec,
.saf-p-narrow.saf-p-narrow {
	display: flex;
	flex-direction: column;
	gap: 20px;
}

/* A form band reads at the canvas's .wrap-narrow measure (800px of content). */
.saf-p-narrow.saf-p-narrow {
	max-width: 832px;
}

h2.saf-p-h2.saf-p-h2,
.saf-p-h2.saf-p-h2 .elementor-heading-title {
	margin: 0;
	font-size: clamp(1.9rem, 3.6vw, 2.75rem);
	line-height: 1.08;
	font-weight: 700;
	color: var(--saf-charcoal, #1c1710);
}

/* A short line under a heading (canvas .pg-muted): "501(c)(3) · Stripe Verified", a form's footnote. */
.saf-p-note.saf-p-note .elementor-heading-title {
	max-width: 70ch;
	font-size: 16px;
	font-weight: 400;
	line-height: 1.55;
	color: #5a554e;
}

.saf-p-text.saf-p-text,
.saf-p-text.saf-p-text > .elementor-widget-container {
	display: flex;
	flex-direction: column;
	gap: 14px;
	max-width: 46rem;
	font-size: 17px;
	line-height: 1.7;
}

.saf-p-text.saf-p-text p {
	margin: 0;
}

/* The canvas .btn-row: a filled button and arrow links on one line, wrapping on a phone. The row centres them
   itself: the seed's container setting does not reach the page (align-items computed "normal", so an arrow link
   stretched to the button's height and its text sat at the top). */
.saf-p-btns.saf-p-btns {
	gap: 12px 28px;
	align-items: center;
}

.saf-p-form.saf-p-form {
	min-width: 0;
}

/* A form's own heading or wrapper must not add a second card inside the panel. */
.saf-p-form.saf-p-form > :first-child {
	margin-top: 0;
}

.saf-p-form.saf-p-form > :last-child {
	margin-bottom: 0;
}

/* A wide table in a policy (the cookie list) scrolls inside the column instead of widening the page. */
.saf-p-pol__body.saf-p-pol__body table {
	display: block;
	max-width: 100%;
	overflow-x: auto;
}

/* A live widget carried over verbatim (a listing grid, a shortcode) takes the band's full measure. */
.saf-p-live.saf-p-live {
	width: 100%;
	min-width: 0;
}

/* /blogs/ hero (NewBlogs): the text, and beside it the newest post as a card. With no post the feature holds nothing,
   so it is hidden and the text keeps the band alone; the split only exists when a post card is there. */
.saf-p-feature-split.saf-p-feature-split {
	display: flex;
	flex-direction: column;
	gap: 32px;
	min-width: 0;
}

.saf-p-feature-intro.saf-p-feature-intro,
.saf-p-feature.saf-p-feature,
.saf-p-feature__grid.saf-p-feature__grid {
	min-width: 0;
}

.saf-p-feature.saf-p-feature:not(:has(.jet-listing-grid__item)) {
	display: none;
}

/* The hero's feature is the newest post, and the page's list starts with the same one: it shows once. */
.saf-p-feature__rest.saf-p-feature__rest .jet-listing-grid__items > .jet-listing-grid__item:first-child {
	display: none;
}

@media (min-width: 900px) {
	.saf-p-feature-split.saf-p-feature-split:has(.jet-listing-grid__item) {
		display: grid;
		grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
		align-items: center;
		gap: 48px;
	}
}

/* A filled button and an arrow link share the row's centre line: the widgets keep no width or bottom margin of
   their own (Elementor gives a heading widget both). */
.saf-p-btns.saf-p-btns > .elementor-widget {
	width: auto;
	margin: 0;
}

.saf-p-btns.saf-p-btns .elementor-heading-title {
	margin: 0;
}

/* An arrow link in the row is a 44px target like the button beside it, not a 21px line of text. The gap stands in
   for the space before the arrow span, which a flex item drops. */
.saf-p-btns .saf-h-more.saf-h-more .elementor-heading-title a {
	display: inline-flex;
	align-items: center;
	gap: 0.25em;
	min-height: 44px;
}

/* /log-hours/ signed in: the forms plugin puts its "Back to my dashboard" line before the content, so before the
   hero; it takes the band's measure and gutter instead of sitting against the window edge. */
.saf-forms-return:has(+ .saf-h-band.saf-p-hero) {
	box-sizing: border-box;
	max-width: 1232px;
	margin: 0 auto;
	padding: 24px max(16px, env(safe-area-inset-right, 0px)) 0 max(16px, env(safe-area-inset-left, 0px));
	font-size: 15px;
}

/* ---- s421 JetThemeCore templates: 404, search, category and single views (saf-redesign-templates.php). ---- */
.saf-t-back.saf-t-back .elementor-heading-title a {
	font-size: 16px;
}

/* A single view's title is a dynamic field and a category's is a shortcode with its own inline type, not a heading. */
.saf-t-h1.saf-t-h1 .jet-listing-dynamic-field__content,
.saf-t-h1.saf-t-h1 h1 {
	margin: 0;
	font-size: clamp(2.75rem, 7vw, 5.5rem) !important;
	line-height: 1.02 !important;
	letter-spacing: -0.02em;
	font-weight: 700;
	color: var(--saf-ink, #1c1710);
}

.saf-t-meta.saf-t-meta .jet-listing-dynamic-field__content {
	font-size: 18px;
	line-height: 1.65;
}

.saf-t-split.saf-t-split {
	align-items: start;
}

.saf-t-main.saf-t-main {
	gap: 24px;
	min-width: 0;
}

.saf-t-photo.saf-t-photo img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: 16px;
}

.saf-t-body.saf-t-body .jet-listing-dynamic-field__content {
	font-size: 17px;
	line-height: 1.65;
}

.saf-t-side.saf-t-side {
	gap: 14px;
}

/* No panel: the body keeps the hero's left edge at a reading measure. */
.saf-t-solo.saf-t-solo {
	max-width: 800px;
}

/* The board photo's own width: 100% left the grid under-counting its height: on a phone the body sat on top of it. */
.saf-t-main.saf-t-main .saf-board-photo,
.saf-t-main.saf-t-main .saf-award-photo,
.saf-t-main.saf-t-main .saf-sponsor-logo {
	width: 280px;
	max-width: 100%;
}
.saf-t-side-h.saf-t-side-h .elementor-heading-title {
	font-size: 21px;
	line-height: 1.2;
	font-weight: 700;
}

.saf-t-fact.saf-t-fact,
.saf-t-fact.saf-t-fact .jet-listing-dynamic-field__content {
	font-size: 16px;
	line-height: 1.55;
}

/* The 404's search box and links. */
.saf-t-find.saf-t-find {
	width: 100%;
}

.saf-t-search__label {
	display: block;
	margin-bottom: 8px;
	font-weight: 700;
}

.saf-t-search__row {
	display: flex;
	gap: 8px;
}

.saf-t-search__input.saf-t-search__input {
	flex: 1 1 auto;
	min-width: 0;
	min-height: 44px;
	padding: 8px 14px;
	border: 1px solid var(--saf-ink, #1c1710);
	border-radius: 8px;
	background: #ffffff;
	font-size: 16px;
}

.saf-t-search__go.saf-t-search__go {
	flex: 0 0 auto;
	min-height: 44px;
	padding: 8px 20px;
	border: 0;
	border-radius: 8px;
	background: var(--saf-brick-red, #be2727);
	color: #ffffff;
	font-size: 16px;
	font-weight: 700;
	cursor: pointer;
}

.saf-t-search__go.saf-t-search__go:hover,
.saf-t-search__go.saf-t-search__go:focus-visible {
	background: #7b181a;
}

.saf-t-choices {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 8px;
	margin-top: 20px;
}

.saf-t-choice.saf-t-choice {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0 18px;
	border: 1px solid #d8d1c0;
	border-radius: 999px;
	background: #ffffff;
	color: var(--saf-ink, #1c1710);
	font-weight: 600;
	text-decoration: none;
}

.saf-t-choice.saf-t-choice:hover,
.saf-t-choice.saf-t-choice:focus-visible {
	border-color: var(--saf-ink, #1c1710);
}

/* Search shares the Home blog card, whose "Blog" line is wrong for a resource or event; a result with no photo keeps no empty link. */
.saf-t-results.saf-t-results .saf-h-post__meta,
.saf-t-results.saf-t-results .saf-h-post__img:not(:has(img)) {
	display: none;
}
/* s430 (owner Q15): a post's category above its title, in the Home eyebrow's type; a post with no real category has no
   slot. Under the excerpt, author, date and read time on one line (sober-af-jtc-bridge: [saf_post_eyebrow], [saf_post_meta]). */
.saf-t-eyebrow-slot.saf-t-eyebrow-slot:not(:has(.saf-post-eyebrow)) {
	display: none;
}

.saf-t-eyebrow-slot.saf-t-eyebrow-slot .saf-post-eyebrow {
	margin: 0;
	font-size: 14px;
	font-weight: 700;
	line-height: 1.3;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--saf-denim, #004263);
}

.saf-t-post-meta.saf-t-post-meta .saf-post-meta {
	margin: 0;
	font-size: 18px;
	line-height: 1.65;
}

/* A post's excerpt under its title, its body at reading size, and the latest posts three across. */
.saf-t-lede.saf-t-lede .jet-listing-dynamic-field__content {
	font-size: 19px;
	line-height: 1.6;
}

.saf-t-article.saf-t-article .jet-listing-dynamic-field__content {
	font-size: 19px;
	line-height: 1.75;
}

.saf-t-more.saf-t-more .jet-listing-grid__items {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

/* The event board: the flyer beside the title, key facts and sign-up. */
.saf-t-ev-hero.saf-t-ev-hero {
	display: grid;
	grid-template-columns: minmax(0, 0.8fr) minmax(0, 1fr);
	gap: 56px;
	align-items: start;
}

.saf-t-ev-stack.saf-t-ev-stack {
	gap: 16px;
}

.saf-t-flyer.saf-t-flyer img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: 16px;
	box-shadow: 0 20px 48px rgba(28, 23, 16, 0.12);
}

.saf-t-h1--ev.saf-t-h1--ev .jet-listing-dynamic-field__content {
	font-size: clamp(2.5rem, 5vw, 4rem) !important;
	line-height: 1.05 !important;
}

/* An event with no description has no about band. */
.saf-t-about.saf-t-about:not(:has(.jet-listing-dynamic-field__content)) {
	display: none;
}

/* Beside the title down to 700: stacked, a 736px flyer filled the first screen at 768. */
@media (max-width: 700px) {
	.saf-t-ev-hero.saf-t-ev-hero {
		grid-template-columns: minmax(0, 1fr);
	}
}

@media (max-width: 900px) {
	.saf-t-ev-hero.saf-t-ev-hero {
		gap: 28px;
	}

	.saf-t-more.saf-t-more .jet-listing-grid__items {
		grid-template-columns: minmax(0, 1fr);
	}
}
/* The Home sheet's .saf-h-band.saf-h-band p { margin: 0 } reached every paragraph of a post, venue or board body. */
.saf-t-body.saf-t-body .jet-listing-dynamic-field__content p {
	margin: 0 0 1em;
}

.saf-t-body.saf-t-body .jet-listing-dynamic-field__content p:last-child {
	margin-bottom: 0;
}

/* The post photo is a band, not the upload's own shape: a 551x827 portrait filled 1200x1801. */
.saf-t-photo.saf-t-photo--cover img {
	aspect-ratio: 21 / 9;
	object-fit: cover;
}

@media (max-width: 600px) {
	.saf-t-photo.saf-t-photo--cover img {
		aspect-ratio: 4 / 3;
	}
}

/* Shortcode output on the page's edges: each brought its own inset. */
.saf-t-full .saf-container.saf-container {
	max-width: none;
	padding-left: 0;
	padding-right: 0;
}

.saf-t-tail .saf-resource-related.saf-resource-related {
	max-width: none;
	margin-left: 0;
	margin-right: 0;
}

.saf-t-tail .saf-resource-related__grid.saf-resource-related__grid {
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 24px;
	max-width: none;
	margin-left: 0;
	margin-right: 0;
}

@media (max-width: 767px) {
	.saf-t-tail .saf-resource-related__grid.saf-resource-related__grid {
		grid-template-columns: minmax(0, 1fr);
		gap: 16px;
	}
}

.saf-t-tail .saf-resource-related__card-link.saf-resource-related__card-link,
.saf-t-tail .saf-resource-related__card-link.saf-resource-related__card-link span {
	text-decoration: none;
}
/* ---- end s421 JetThemeCore templates ---- */

/* /referral-feedback/: a good link prints the form under its own h1, so the page's hero steps aside; a bad or missing
   link prints only the refusal, and the hero's h1 is the page's one. Either way the shortcode's box takes the panel's
   measure and the site's type and red (its own sheet centres it at 560px in the old burgundy). */
.saf-p-hero.saf-p-hero:has(~ .saf-h-band [data-saf-ref-fb]) {
	display: none;
}

.saf-p-form .saf-ref-fb.saf-ref-fb {
	max-width: none;
	margin: 0;
	padding: 0;
	font-family: inherit;
	text-align: left;
}

/* The Home sheet's .saf-h-band.saf-h-band p { margin: 0 } reaches every paragraph a shortcode prints inside a band: the
   lede's own margin needs saying again here. */
.saf-p-form .saf-ref-fb__lede.saf-ref-fb__lede {
	margin: 0 0 1.5rem;
}

.saf-p-form .saf-ref-fb--error.saf-ref-fb--error > p {
	margin: 0;
	font-size: 17px;
	line-height: 1.6;
}

.saf-p-form .saf-ref-fb--error.saf-ref-fb--error > p + p {
	margin-top: 12px;
}

/* The outcome question has no rules of its own: it takes the rating box's look, one answer to a line, each a real
   touch target. */
.saf-p-form .saf-ref-fb__outcome.saf-ref-fb__outcome {
	display: flex;
	flex-direction: column;
	margin: 0;
	padding: 0.75rem 1rem;
	border: 1px solid #e8e2d2;
	border-radius: 8px;
}

.saf-p-form .saf-ref-fb__outcome.saf-ref-fb__outcome legend {
	padding: 0 0.25rem;
	font-weight: 600;
}

.saf-p-form .saf-ref-fb__outcome-opt.saf-ref-fb__outcome-opt {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	min-height: 44px;
}

.saf-p-form .saf-ref-fb__title.saf-ref-fb__title {
	font-size: clamp(1.9rem, 3.6vw, 2.75rem);
	line-height: 1.08;
	font-weight: 700;
	color: var(--saf-charcoal, #1c1710);
}

.saf-p-form .saf-ref-fb__submit.saf-ref-fb__submit,
.saf-p-form .saf-ref-fb__submit.saf-ref-fb__submit:hover,
.saf-p-form .saf-ref-fb__submit.saf-ref-fb__submit:focus {
	background: var(--saf-brick-red, #be2727);
	color: #fff;
	min-height: 44px;
}

/* ---- /help/ (the help shape, NewHelp) ----------------------------------------------------------------------
   The audience lists stick beside one card per guide. The plugin's figures keep their markup and its sheet; this only
   takes off their page margins inside a card that spaces its own children. */
.saf-p-hc.saf-p-hc {
	display: grid;
	grid-template-columns: 592px minmax(0, 1fr);
	gap: 32px;
	align-items: start;
}

.saf-p-hc__nav.saf-p-hc__nav {
	position: sticky;
	top: 24px;
	display: grid;
	grid-template-columns: 300px 260px;
	gap: 32px;
	align-items: start;
	max-height: calc(100vh - 48px);
	overflow-y: auto;
}

.saf-h-band .saf-p-hc__group.saf-p-hc__group h2 {
	margin: 0 0 8px;
	font-size: 14px;
	line-height: 1.3;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--saf-denim, #004263);
}

.saf-h-band .saf-p-hc__group.saf-p-hc__group ul + h2 {
	margin-top: 24px;
}

.saf-p-hc__group.saf-p-hc__group ul {
	display: flex;
	flex-direction: column;
	gap: 4px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.saf-p-hc__group.saf-p-hc__group a {
	display: block;
	padding: 10px 14px;
	border-radius: 10px;
	font-size: 16px;
	line-height: 1.35;
	font-weight: 700;
	color: var(--saf-charcoal, #1c1710);
	text-decoration: none;
}

.saf-p-hc__group.saf-p-hc__group a:hover,
.saf-p-hc__group.saf-p-hc__group a:focus-visible {
	background: #fff;
	color: var(--saf-charcoal, #1c1710);
}

.saf-p-hc__guides.saf-p-hc__guides {
	display: flex;
	flex-direction: column;
	gap: 24px;
	min-width: 0;
}

.saf-p-hc__guide.saf-p-hc__guide {
	display: flex;
	flex-direction: column;
	gap: 18px;
	min-width: 0;
	padding: 28px;
	border-radius: 16px;
	background: #fff;
	font-size: 16px;
	line-height: 1.6;
	overflow-wrap: anywhere;
}

.saf-h-band .saf-p-hc__guide.saf-p-hc__guide h2 {
	margin: 0;
	font-size: 26px;
	line-height: 1.2;
	font-weight: 700;
	color: var(--saf-charcoal, #1c1710);
	scroll-margin-top: 52px;
}

.saf-h-band .saf-p-hc__guide.saf-p-hc__guide h3 {
	margin: 10px 0 0;
	font-size: 20px;
	line-height: 1.25;
	font-weight: 700;
	color: var(--saf-charcoal, #1c1710);
	scroll-margin-top: 52px;
}

.saf-p-hc__guide.saf-p-hc__guide ol {
	display: flex;
	flex-direction: column;
	gap: 10px;
	margin: 0;
	padding-left: 22px;
}

/* wpautop wraps a figure shortcode in a p the browser then breaks open, leaving an empty p and a br between figures:
   each would be a flex item and double the gap. */
.saf-p-hc__guide.saf-p-hc__guide > p:empty,
.saf-p-hc__guide.saf-p-hc__guide > br {
	display: none;
}

.saf-p-hc__guide .saf-howto.saf-howto,
.saf-p-hc__guide .saf-howto-shot.saf-howto-shot {
	margin: 0;
	max-width: none;
}

/* The figures print no width or height, so each one starts at no height and a #help-* link from the dashboard landed
   2000+ px off as they loaded. Reserve the usual shape until the real one is known. */
.saf-p-hc__guide .saf-howto-shot__img.saf-howto-shot__img {
	aspect-ratio: auto 8 / 5;
}

.saf-p-hc__guide .saf-howto__video--desktop.saf-howto__video--desktop {
	aspect-ratio: auto 16 / 9;
}

.saf-p-hc__guide .saf-howto__video--mobile.saf-howto__video--mobile {
	aspect-ratio: auto 9 / 16;
}

.saf-p-hc__guide .saf-howto__cap.saf-howto__cap,
.saf-p-hc__guide .saf-howto-shot__cap.saf-howto-shot__cap {
	font-style: normal;
}

.saf-p-hc__guide .saf-howto__transcript.saf-howto__transcript {
	margin-top: 12px;
	border-top: 1px solid #d8d1c0;
}

.saf-h-band .saf-p-hc__guide .saf-howto__transcript p {
	margin: 0 0 0.5em;
}

/* s423 saf-help-switcher.js: one guide at a time and a search box. Without the script the mount stays hidden and every
   guide shows, so nothing here may depend on it. The buttons replace the list's links and keep their look. */
.saf-p-hc__hero.saf-p-hc__hero {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: 32px 56px;
}

.saf-p-hc__hero .saf-p-intro.saf-p-intro {
	flex: 11 1 520px;
	min-width: 0;
}

.saf-p-hc__find.saf-p-hc__find {
	flex: 10 1 360px;
	min-width: 0;
}

.saf-p-hc__find.saf-p-hc__find[hidden],
.saf-p-hc__guide.saf-p-hc__guide[hidden],
.saf-p-hc__group.saf-p-hc__group ul[hidden],
.saf-p-hc__group.saf-p-hc__group li[hidden],
.saf-h-band .saf-p-hc__group.saf-p-hc__group h2[hidden] {
	display: none;
}

.saf-p-hc__form.saf-p-hc__form {
	display: flex;
	flex-direction: column;
	gap: 6px;
	padding: 20px;
}

.saf-p-hc__label.saf-p-hc__label {
	font-size: 15px;
	line-height: 1.4;
	font-weight: 600;
	color: var(--saf-charcoal, #1c1710);
}

.saf-p-hc__input.saf-p-hc__input,
.saf-p-hc__input.saf-p-hc__input:hover,
.saf-p-hc__input.saf-p-hc__input:focus {
	box-sizing: border-box;
	width: 100%;
	min-height: 48px;
	padding: 12px 14px;
	border: 1px solid #8a8170;
	border-radius: 6px;
	background: #fff;
	font: inherit;
	font-size: 16px;
	font-weight: 400;
	color: var(--saf-charcoal, #1c1710);
}

.saf-p-hc__input.saf-p-hc__input:focus-visible {
	outline: 2px solid var(--saf-denim, #004263);
	outline-offset: 2px;
}

/* In the page from the start, with its height kept, so the first answer does not move the lists. */
.saf-h-band .saf-p-hc__form .saf-p-hc__status.saf-p-hc__status {
	min-height: 20px;
	margin: 0;
	font-size: 14px;
	line-height: 20px;
	color: #5a554e;
}

.saf-p-hc__pick.saf-p-hc__pick,
.saf-p-hc__pick.saf-p-hc__pick:hover,
.saf-p-hc__pick.saf-p-hc__pick:focus {
	display: block;
	box-sizing: border-box;
	width: 100%;
	min-height: 44px;
	padding: 10px 14px;
	border: 0;
	border-radius: 10px;
	box-shadow: none;
	background: transparent;
	font-family: inherit;
	font-size: 16px;
	line-height: 1.35;
	font-weight: 700;
	letter-spacing: normal;
	text-align: left;
	text-transform: none;
	color: var(--saf-charcoal, #1c1710);
	cursor: pointer;
}

.saf-p-hc__pick.saf-p-hc__pick:hover,
.saf-p-hc__pick.saf-p-hc__pick:focus-visible {
	background: #fff;
}

.saf-p-hc__pick.saf-p-hc__pick:focus-visible {
	outline: 2px solid var(--saf-denim, #004263);
	outline-offset: -2px;
}

.saf-p-hc__pick.saf-p-hc__pick[aria-current="true"],
.saf-p-hc__pick.saf-p-hc__pick[aria-current="true"]:hover,
.saf-p-hc__pick.saf-p-hc__pick[aria-current="true"]:focus {
	background: #fff;
	box-shadow: inset 3px 0 0 var(--saf-brick-red, #be2727);
}

@media (max-width: 1240px) {
	.saf-p-hc.saf-p-hc {
		grid-template-columns: 280px minmax(0, 1fr);
	}

	.saf-p-hc__nav.saf-p-hc__nav {
		grid-template-columns: minmax(0, 1fr);
		gap: 24px;
	}
}

@media (max-width: 900px) {
	.saf-p-hc.saf-p-hc {
		grid-template-columns: minmax(0, 1fr);
		gap: 28px;
	}

	.saf-p-hc__nav.saf-p-hc__nav {
		position: static;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		max-height: none;
		overflow-y: visible;
	}
}

@media (max-width: 600px) {
	.saf-p-hc__nav.saf-p-hc__nav {
		grid-template-columns: minmax(0, 1fr);
	}

	.saf-p-hc__guide.saf-p-hc__guide {
		padding: 20px;
	}
}

/* ---- s421 store: /merch/, /shop/, /cart/ (saf-redesign-store.php). /checkout/ is not styled here. ---- */
.saf-t-store-head.saf-t-store-head {
	box-sizing: border-box;
	max-width: 1232px;
	margin: 0 auto;
	padding: 64px 16px 24px;
}

.saf-t-store-h1.saf-t-store-h1,
body.woocommerce-shop .woocommerce-products-header__title.woocommerce-products-header__title {
	margin: 0;
	font-size: clamp(2.75rem, 7vw, 5.5rem);
	line-height: 1.02;
	letter-spacing: -0.02em;
	font-weight: 700;
	color: var(--saf-ink, #1c1710);
}

/* Merch: the shortcode's grid and its empty line, at the header's edges. */
.saf-t-store-head ~ .saf-merch-grid.saf-merch-grid,
.saf-t-store-head ~ .saf-merch-empty.saf-merch-empty {
	box-sizing: border-box;
	max-width: 1232px;
	margin: 0 auto 72px;
	padding: 0 16px;
}

.saf-t-store-head ~ .saf-merch-empty.saf-merch-empty p {
	margin: 0;
	font-size: 19px;
	line-height: 1.6;
}

.saf-t-store-head ~ .saf-merch-grid .saf-merch-card__cta.saf-merch-card__cta {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
}

/* Shop: the archive's own markup, on the same edges, with the board's plain head. */
body.woocommerce-shop main.site-main {
	box-sizing: border-box;
	max-width: 1232px;
	margin: 0 auto;
	padding: 64px 16px 72px;
}

body.woocommerce-shop .woocommerce-breadcrumb.woocommerce-breadcrumb {
	display: none;
}

body.woocommerce-shop .woocommerce-products-header.woocommerce-products-header {
	margin-bottom: 24px;
}

body.woocommerce-shop ul.products li.product .woocommerce-loop-product__title {
	color: var(--saf-ink, #1c1710);
}

body.woocommerce-shop .woocommerce-no-products-found {
	font-size: 19px;
	line-height: 1.6;
}

body.woocommerce-shop .add_to_cart_button.add_to_cart_button {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
}

/* Cart: the block's wide layout hung 80px off the left edge. Filled-cart parts keep WooCommerce's own look. */
.saf-t-store-head ~ .wp-block-woocommerce-cart.wp-block-woocommerce-cart {
	box-sizing: border-box;
	width: auto;
	max-width: 1232px;
	margin: 0 auto 72px;
	padding: 0 16px;
}

.saf-t-store-head ~ .wp-block-woocommerce-cart .wp-block-heading.wp-block-heading {
	margin: 0 0 20px;
	font-size: clamp(1.9rem, 3.6vw, 2.75rem);
	line-height: 1.08;
	font-weight: 700;
	text-align: left;
	color: var(--saf-ink, #1c1710);
}

.saf-t-store-head ~ .wp-block-woocommerce-cart .with-empty-cart-icon.with-empty-cart-icon::before,
.saf-t-store-head ~ .wp-block-woocommerce-cart .wp-block-separator.is-style-dots {
	display: none;
}

/* The block's button: its link colour sat red on a dark fill. */
.saf-t-store-head ~ .wp-block-woocommerce-cart .wc-block-grid__product-add-to-cart .wp-block-button__link.wp-block-button__link {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	border: 0;
	border-radius: 8px;
	background: var(--saf-brick-red, #be2727);
	color: #ffffff;
	font-size: 14px;
	font-weight: 700;
	text-decoration: none;
}

.saf-t-store-head ~ .wp-block-woocommerce-cart .wc-block-grid__product-title.wc-block-grid__product-title,
.saf-t-store-head ~ .wp-block-woocommerce-cart .wc-block-grid__product-link.wc-block-grid__product-link {
	color: var(--saf-ink, #1c1710);
}

.saf-t-store-head ~ .wp-block-woocommerce-cart .wc-block-grid__products.wc-block-grid__products {
	margin: 0;
}
.saf-t-store-head ~ .wp-block-woocommerce-cart .wc-block-cart__submit-button.wc-block-cart__submit-button {
	text-decoration: none;
}
/* ---- end s421 store ---- */

/* Job single (s424): the panel is the apply box, so the plugin's own box, rule and second title stand down inside it. */
.saf-t-side .saf-job-detail.saf-job-detail {
	margin-top: 0;
	padding-top: 0;
	border-top: 0;
}

.saf-t-side .saf-job-apply.saf-job-apply {
	max-width: none;
	padding: 0;
	border: 0;
	background: none;
}

.saf-t-side .saf-job-apply__title.saf-job-apply__title {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

.saf-t-side .saf-job-apply.saf-job-apply input:not([type="checkbox"]):not([type="radio"]),
.saf-t-side .saf-job-apply.saf-job-apply textarea {
	box-sizing: border-box;
	min-height: 44px;
	border-radius: 8px;
}

.saf-t-side .saf-job-apply.saf-job-apply button[type="submit"],
.saf-t-side .saf-job-detail__apply-link.saf-job-detail__apply-link {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	padding: 0.6rem 1.5rem;
	border-radius: 8px;
	font-weight: 700;
}

/* Single product (s424): no board, so the shop's edges and the site's button, field and panel looks. CSS only, and nothing
   here reaches the express pay buttons: those are Stripe's own frames. The only tab gets no tab bar; several keep theirs. */
body.single-product main.site-main {
	box-sizing: border-box;
	max-width: 1232px;
	margin: 0 auto;
	padding: 40px 16px 72px;
}

body.single-product .woocommerce-breadcrumb.woocommerce-breadcrumb,
body.single-product .product_meta .posted_in:has(a[href*="uncategorized"]) {
	display: none;
}

.saf-t-product-back.saf-t-product-back {
	margin: 0 0 24px;
	font-size: 16px;
	font-weight: 700;
}

.saf-t-product-back.saf-t-product-back a {
	color: var(--saf-brick-red, #be2727);
	text-decoration: none;
}

.saf-t-product-back.saf-t-product-back a:hover,
.saf-t-product-back.saf-t-product-back a:focus-visible {
	color: var(--saf-burgundy, #7b181a);
	text-decoration: underline;
}

body.single-product div.product .woocommerce-product-gallery__image img {
	border-radius: 16px;
}

body.single-product div.product h1.product_title.product_title {
	margin: 0 0 12px;
	font-size: clamp(2.25rem, 4.5vw, 3.25rem);
	line-height: 1.05;
	letter-spacing: -0.02em;
	color: var(--saf-ink, #1c1710);
}

body.single-product div.product .summary p.price.price {
	margin: 0 0 24px;
	font-size: 24px;
	font-weight: 700;
	color: var(--saf-ink, #1c1710);
}

body.single-product div.product form.cart.cart {
	display: flex;
	flex-wrap: wrap;
	align-items: stretch;
	gap: 12px;
	margin-bottom: 24px;
}

/* WooCommerce's clearfix pseudo-elements would count as flex items and indent the row by one gap. */
body.single-product div.product form.cart.cart::before,
body.single-product div.product form.cart.cart::after {
	display: none;
}

body.single-product div.product form.cart div.quantity.quantity {
	float: none;
	margin: 0;
}

body.single-product div.product form.cart input.qty.qty {
	box-sizing: border-box;
	width: 5rem;
	height: 100%;
	min-height: 52px;
	border-radius: 8px;
}

body.single-product div.product form.cart button.single_add_to_cart_button.single_add_to_cart_button {
	float: none;
	min-height: 52px;
	padding: 0.75rem 2rem;
	border: 2px solid var(--saf-brick-red, #be2727);
	border-radius: 8px;
	background: var(--saf-brick-red, #be2727);
	color: var(--saf-linen, #f5f1e7);
	font-size: 18px;
	font-weight: 700;
	line-height: 1.2;
}

body.single-product div.product form.cart button.single_add_to_cart_button.single_add_to_cart_button:hover,
body.single-product div.product form.cart button.single_add_to_cart_button.single_add_to_cart_button:focus-visible {
	border-color: var(--saf-burgundy, #7b181a);
	background: var(--saf-burgundy, #7b181a);
	color: var(--saf-linen, #f5f1e7);
}

body.single-product div.product .product_meta {
	font-size: 14px;
	color: #5a554e;
}

body.single-product div.product .woocommerce-tabs.woocommerce-tabs {
	clear: both;
	padding-top: 56px;
}

body.single-product div.product .woocommerce-tabs ul.tabs:has(> li:only-child) {
	display: none;
}

body.single-product div.product .woocommerce-tabs .panel.panel {
	margin: 0;
	padding: clamp(24px, 4vw, 40px);
	border-radius: 16px;
	background: #ffffff;
	box-shadow: 0 1px 2px rgba(28, 23, 16, 0.06);
}

body.single-product div.product .woocommerce-tabs .panel h2,
body.single-product section.related.products > h2 {
	margin: 0 0 16px;
	font-size: clamp(2rem, 4vw, 3rem);
	line-height: 1.05;
	font-weight: 700;
	color: var(--saf-ink, #1c1710);
}

body.single-product #review_form input[type="text"],
body.single-product #review_form input[type="email"],
body.single-product #review_form textarea {
	box-sizing: border-box;
	width: 100%;
	min-height: 44px;
	border-radius: 8px;
}

body.single-product #review_form #respond input#submit.submit {
	min-height: 44px;
	padding: 0.6rem 1.5rem;
	border-radius: 8px;
	font-weight: 700;
}

body.single-product section.related.products {
	clear: both;
	padding-top: 56px;
}

body.single-product section.related.products ul.products li.product img {
	border-radius: 12px;
}

body.single-product section.related.products ul.products li.product .woocommerce-loop-product__title,
body.single-product section.related.products ul.products li.product .price {
	color: var(--saf-ink, #1c1710);
}

body.single-product section.related.products .add_to_cart_button.add_to_cart_button {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	border-radius: 8px;
	font-weight: 700;
}

/* ---- A centred hero (SAF_RSP_CENTERED: /donate/thank-you/) ---- */
.saf-p-center .saf-p-intro.saf-p-intro {
	max-width: 832px;
	align-items: center;
	text-align: center;
}

.saf-p-center .saf-p-btns.saf-p-btns {
	justify-content: center;
}

/* A form's fields side by side: a field's rows stretch to the tallest neighbour, so the Birthday hint made Zip's input
   67px and pushed it 16px down. Rows keep their own height; the directory check's first label wraps at the panel's
   width, so its inputs line up on their bottom edge instead. */
.saf-p-form .saf-form__field.saf-form__field {
	align-content: start;
}

.saf-p-form .saf-rs-find .saf-form__field.saf-form__field {
	align-content: end;
}

/* ---- Chapters (s450 PR B: [saf_chapters] from sober-af-chapters, page /chapters/ seeded by
   scripts/oneshot/saf-s450-chapters-page.php). Plain markup, not Elementor widgets, so every rule names its own
   saf-ch-* class; links and buttons double the class to beat the kit's (0,1,1) and states sit at (0,3,0). ---- */
.saf-ch-wrap.saf-ch-wrap {
	display: flex;
	flex-direction: column;
	gap: 20px;
}

.saf-ch-hero.saf-ch-hero {
	padding-bottom: 32px;
}

.saf-ch-eyebrow.saf-ch-eyebrow {
	margin: 0;
	font-size: 14px;
	font-weight: 700;
	line-height: 1.3;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--saf-denim, #004263);
}

h1.saf-ch-h1.saf-ch-h1 {
	margin: 0;
	font-size: clamp(2.25rem, 6vw, 4rem);
	line-height: 1.05;
	letter-spacing: -0.02em;
	font-weight: 700;
	color: var(--saf-charcoal, #1c1710);
	overflow-wrap: break-word;
}

.saf-ch-lede.saf-ch-lede {
	max-width: 46rem;
	margin: 0;
	font-size: 19px;
	line-height: 1.6;
	color: #5a554e;
}

h2.saf-ch-h2.saf-ch-h2 {
	margin: 12px 0 0;
	font-size: clamp(1.5rem, 3vw, 2rem);
	line-height: 1.2;
	font-weight: 700;
	color: var(--saf-charcoal, #1c1710);
}

h2.saf-ch-h2.saf-ch-h2:first-child {
	margin-top: 0;
}

.saf-ch-meta.saf-ch-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 20px;
	margin: 0;
	font-size: 16px;
	font-weight: 700;
	color: var(--saf-charcoal, #1c1710);
}

.saf-ch-meta__stage.saf-ch-meta__stage {
	color: var(--saf-brick-red, #be2727);
}

.saf-ch-cards.saf-ch-cards {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 20px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.saf-ch-cards__item.saf-ch-cards__item {
	display: flex;
	margin: 0;
}

a.saf-ch-card.saf-ch-card {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: 8px;
	padding: 24px;
	border-radius: 16px;
	background: #ffffff;
	box-shadow: 0 1px 2px rgba(28, 23, 16, 0.06);
	color: var(--saf-charcoal, #1c1710);
	text-decoration: none;
	transition: transform 0.15s ease;
}

a.saf-ch-card.saf-ch-card:hover,
a.saf-ch-card.saf-ch-card:focus-visible {
	color: var(--saf-charcoal, #1c1710);
	text-decoration: none;
	transform: translateY(-3px);
}

a.saf-ch-card.saf-ch-card:focus-visible {
	outline: 3px solid var(--saf-denim, #004263);
	outline-offset: 3px;
}

.saf-ch-card__kicker.saf-ch-card__kicker {
	font-size: 13px;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--saf-brick-red, #be2727);
}

.saf-ch-card__title.saf-ch-card__title {
	font-size: 22px;
	font-weight: 700;
	line-height: 1.2;
}

.saf-ch-card__where.saf-ch-card__where {
	font-size: 15px;
	font-weight: 700;
	color: #5a554e;
}

.saf-ch-card__summary.saf-ch-card__summary {
	font-size: 16px;
	line-height: 1.55;
	color: #5a554e;
}

.saf-ch-card__go.saf-ch-card__go {
	margin-top: auto;
	padding-top: 8px;
	font-weight: 700;
	color: var(--saf-brick-red, #be2727);
}

.saf-ch-empty.saf-ch-empty {
	margin: 0;
	font-size: 18px;
	color: #5a554e;
}

.saf-ch-actions.saf-ch-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	margin: 4px 0 0;
}

a.saf-ch-btn.saf-ch-btn {
	display: inline-flex;
	align-items: center;
	min-height: 48px;
	padding: 0.8rem 1.6rem;
	border: 2px solid var(--saf-brick-red, #be2727);
	border-radius: 8px;
	background: var(--saf-brick-red, #be2727);
	color: var(--saf-linen, #f5f1e7);
	font-size: 17px;
	font-weight: 700;
	text-decoration: none;
}

a.saf-ch-btn.saf-ch-btn.saf-ch-btn:hover,
a.saf-ch-btn.saf-ch-btn.saf-ch-btn:focus-visible {
	border-color: var(--saf-burgundy, #7b181a);
	background: var(--saf-burgundy, #7b181a);
	color: var(--saf-linen, #f5f1e7);
	text-decoration: none;
}

a.saf-ch-btn--quiet.saf-ch-btn--quiet.saf-ch-btn--quiet {
	background: transparent;
	color: var(--saf-brick-red, #be2727);
}

a.saf-ch-btn--quiet.saf-ch-btn--quiet.saf-ch-btn--quiet.saf-ch-btn:hover,
a.saf-ch-btn--quiet.saf-ch-btn--quiet.saf-ch-btn--quiet.saf-ch-btn:focus-visible {
	border-color: var(--saf-burgundy, #7b181a);
	background: transparent;
	color: var(--saf-burgundy, #7b181a);
}

.saf-ch-back.saf-ch-back {
	margin: 0;
}

.saf-ch-back.saf-ch-back a {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	min-height: 44px;
	font-weight: 700;
	color: var(--saf-denim, #004263);
	text-decoration: none;
}

.saf-ch-back.saf-ch-back a:hover,
.saf-ch-back.saf-ch-back a:focus-visible {
	color: var(--saf-charcoal, #1c1710);
	text-decoration: underline;
}

.saf-ch-orgs__list.saf-ch-orgs__list {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.saf-ch-orgs__list.saf-ch-orgs__list li {
	margin: 0;
	padding: 10px 16px;
	border: 1px solid #d9d1bf;
	border-radius: 8px;
	background: #ffffff;
	font-weight: 700;
}

/* The event cards on a chapter page are the Home ones (saf-redesign-home.css); their empty line sits on the alt band. */
.saf-ch-events .saf-ecards__empty {
	margin: 0;
	font-size: 18px;
	color: #5a554e;
}

@media (max-width: 1024px) {
	.saf-ch-cards.saf-ch-cards {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 640px) {
	.saf-ch-cards.saf-ch-cards {
		grid-template-columns: minmax(0, 1fr);
	}

	a.saf-ch-card.saf-ch-card {
		padding: 20px;
	}

	.saf-ch-lede.saf-ch-lede {
		font-size: 17px;
	}

	a.saf-ch-btn.saf-ch-btn {
		width: 100%;
		justify-content: center;
	}
}
/* ---- end Chapters ---- */

/* ---- Submit an event, host intro (s450 PR C: shown only while saf_events_host_v2_enabled = '1';
   markup in sober-af-events templates/form-submit-event.php). Kit tokens only. ---- */
.saf-es__intro.saf-es__intro {
	margin: 0 0 2rem;
	padding: 1.5rem 1.75rem;
	border-left: 4px solid var(--saf-brick-red, #be2727);
	border-radius: 4px;
	background: #fff;
}
.saf-es__intro-title.saf-es__intro-title {
	margin: 0 0 0.75rem;
	font-size: 1.375rem;
	line-height: 1.25;
	color: var(--saf-charcoal, #1c1710);
}
.saf-es__steps.saf-es__steps,
.saf-es__next.saf-es__next {
	margin: 0 0 1rem;
	padding: 0;
	list-style: none;
	counter-reset: saf-es-step;
}
.saf-es__steps.saf-es__steps > li,
.saf-es__next.saf-es__next > li {
	position: relative;
	margin: 0 0 0.625rem;
	padding-left: 2.25rem;
	line-height: 1.5;
	color: var(--saf-charcoal, #1c1710);
	counter-increment: saf-es-step;
}
.saf-es__steps.saf-es__steps > li::before,
.saf-es__next.saf-es__next > li::before {
	content: counter(saf-es-step);
	position: absolute;
	top: 0;
	left: 0;
	width: 1.5rem;
	height: 1.5rem;
	border-radius: 50%;
	background: var(--saf-brick-red, #be2727);
	color: var(--saf-linen, #f5f1e7);
	font-size: 0.875rem;
	font-weight: 700;
	line-height: 1.5rem;
	text-align: center;
}
.saf-es__next.saf-es__next {
	margin-top: 0.75rem;
}
.saf-es__guide.saf-es__guide {
	margin: 0;
	color: var(--saf-charcoal, #1c1710);
}
.saf-es__guide.saf-es__guide a,
.saf-es .saf-form__notice a {
	color: var(--saf-denim, #004263);
	font-weight: 700;
	text-decoration: underline;
}
.saf-es__guide.saf-es__guide a:hover,
.saf-es__guide.saf-es__guide a:focus,
.saf-es .saf-form__notice a:hover,
.saf-es .saf-form__notice a:focus {
	color: var(--saf-burgundy, #7b181a);
}
/* The chapter select (the form's only select) takes the same box as the inputs beside it
   (sober-af-events events.css styles input and textarea only). Doubled class beats the kit. */
.saf-es.saf-es .saf-form select {
	display: block;
	width: 100%;
	min-height: 44px;
	padding: 0.75rem 1rem;
	border: 1.5px solid var(--saf-border);
	border-radius: var(--saf-radius);
	background-color: #fff;
	font: inherit;
	color: inherit;
}
.saf-es.saf-es .saf-form select:focus {
	outline: none;
	border-color: var(--saf-brick-red, #be2727);
	box-shadow: 0 0 0 3px rgba(190, 39, 39, 0.15);
}
@media (max-width: 640px) {
	.saf-es__intro.saf-es__intro {
		padding: 1.25rem 1rem;
	}
}
/* ---- end Submit an event, host intro ---- */
