.sp-hero-pattern {
	padding: 0;
	background: transparent;
	color: inherit;
}

.sp-site-main > .sp-hero-pattern,
body.post-type-page .wp-block-post-content > .sp-hero-pattern {
	padding-block: var(--wp--preset--spacing--16, var(--sp-layout-page-padding-block));
}

.sp-site-main > .alignfull.is-style-default,
.sp-site-main > :where(.alignfull, .alignwide):has(> .sp-hero-pattern),
body.post-type-page .wp-block-post-content > .alignfull.is-style-default,
body.post-type-page .wp-block-post-content > :where(.alignfull, .alignwide):has(> .sp-hero-pattern) {
	padding-block: var(--wp--preset--spacing--16, var(--sp-layout-page-padding-block));
}

.sp-hero-pattern__inner {
	display: grid;
	gap: var(--uplift-space-8);
	align-items: center;
}

.sp-hero-pattern__content {
	display: grid;
	gap: var(--uplift-space-4);
	max-width: 48rem;
}

.sp-hero-pattern__content > * {
	margin-block: 0;
}

/* Hero copy wraps into even lines rather than leaving a short last one. */
.sp-hero-pattern__content p {
	text-wrap: balance;
}

/* Bold phrases in hero copy, such as a phone number, stay on one line. */
.sp-hero-pattern__content p strong {
	white-space: nowrap;
}

.sp-hero-pattern__content .wp-block-buttons {
	margin-top: var(--uplift-space-2);
}

.sp-hero-pattern__media {
	display: grid;
	align-content: center;
	min-width: 0;
}

.sp-hero-pattern__image,
.sp-hero-pattern__media .wp-block-image,
.sp-hero-pattern__media .wp-block-southernpartners-theme-slider {
	width: 100%;
	margin: 0;
}

.sp-hero-pattern__media .wp-block-image img,
.sp-hero-pattern__media .sp-slider__image {
	display: block;
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	border-radius: var(--uplift-radius-xl);
	background: var(--sp-color-layer-1);
}

.sp-hero-pattern__media .wp-block-southernpartners-theme-slider.sp-slider.splide.is-initialized .sp-slider__track {
	aspect-ratio: 4 / 3;
}

.sp-hero-pattern--text .sp-hero-pattern__inner {
	justify-items: start;
}

/* Photo heroes run the image edge to edge, as on the front page: the full
   width under the copy when stacked, and to the window's right edge and the
   section's top and bottom beside it. The copy carries the section's padding
   instead. */
.sp-site-main > .alignfull:has(> :is(.sp-hero-pattern--image-right, .sp-hero-pattern--slider-right)),
body.post-type-page .wp-block-post-content > .alignfull:has(> :is(.sp-hero-pattern--image-right, .sp-hero-pattern--slider-right)) {
	padding-block: 0;
}

.wp-site-blocks .sp-hero-pattern:is(.sp-hero-pattern--image-right, .sp-hero-pattern--slider-right),
body.post-type-page .wp-block-post-content .sp-hero-pattern:is(.sp-hero-pattern--image-right, .sp-hero-pattern--slider-right) {
	width: 100%;
	max-width: none;
	margin-inline: 0;
	padding: 0;
}

:is(.sp-hero-pattern--image-right, .sp-hero-pattern--slider-right) .sp-hero-pattern__inner {
	gap: 0;
	align-items: stretch;
}

:is(.sp-hero-pattern--image-right, .sp-hero-pattern--slider-right) .sp-hero-pattern__content {
	align-content: center;
	padding: var(--wp--preset--spacing--16, var(--sp-layout-page-padding-block)) calc(var(--sp-layout-content-gutter) / 2);
}

:is(.sp-hero-pattern--image-right, .sp-hero-pattern--slider-right) .sp-hero-pattern__media .wp-block-image img,
:is(.sp-hero-pattern--image-right, .sp-hero-pattern--slider-right) .sp-hero-pattern__media .sp-slider__image,
:is(.sp-hero-pattern--image-right, .sp-hero-pattern--slider-right) .sp-hero-pattern__media .wp-block-southernpartners-theme-slider.sp-slider .sp-slider__slide,
:is(.sp-hero-pattern--image-right, .sp-hero-pattern--slider-right) .sp-hero-pattern__media .wp-block-southernpartners-theme-slider.sp-slider.splide.is-initialized .sp-slider__track {
	border-radius: 0;
}

.sp-service-shell__body {
	display: grid;
	gap: var(--uplift-space-6);
}

.sp-card-grid {
	display: grid;
	gap: var(--uplift-space-6);
}

.sp-feature-grid {
	display: grid;
	gap: var(--uplift-space-6);
}

.sp-feature-grid__items {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
	gap: var(--uplift-space-6);
}

.sp-feature-grid__item {
	display: grid;
	gap: var(--uplift-space-4);
	align-content: start;
	padding: var(--uplift-space-2);
}

.sp-icon-block {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: var(--sp-icon-block-size, 2.5rem);
	height: var(--sp-icon-block-size, 2.5rem);
	color: var(--sp-pattern-accent, var(--sp-color-text-accent));
}

.sp-icon-block .sp-icon-block__svg {
	display: block;
	width: 100%;
	height: 100%;
}

.sp-feature-grid__icon.wp-block-southernpartners-theme-icon,
.sp-feature-grid__icon.sp-icon-block {
	margin: 0;
	width: var(--sp-icon-block-size, 2.5rem);
	height: var(--sp-icon-block-size, 2.5rem);
}

.sp-feature-grid__item .wp-block-heading {
	margin: 0;
	color: var(--sp-pattern-text-strong, inherit);
	font-size: var(--sp-type-size-heading-4);
}

.sp-feature-grid__item p {
	margin: 0;
	color: var(--sp-pattern-text-muted, var(--sp-color-text-muted));
	font-size: var(--sp-type-size-body);
	text-wrap: balance;
}

@keyframes sp-ida-mesh-gradient {
	0% {
		background-position: 8% 50%;
	}

	45% {
		background-position: 92% 48%;
	}

	100% {
		background-position: 50% 62%;
	}
}

.sp-service-card,
.sp-proof-card,
.sp-list-panel,
.sp-query-card,
.sp-story-card {
	height: 100%;
	display: grid;
	gap: var(--uplift-space-2);
	align-content: start;
}

.sp-service-card .wp-block-heading,
.sp-query-card .wp-block-post-title {
	margin: 0;
	font-size: 1.35rem;
}

.sp-service-card p,
.sp-proof-card p,
.sp-list-panel p,
.sp-query-card .wp-block-post-excerpt,
.sp-entry-shell__lede {
	color: var(--sp-pattern-text-muted, var(--sp-color-text-muted));
}

.sp-list-panel ul,
.sp-link-list {
	margin: 0;
	padding-left: 1rem;
}

.wp-block-group.sp-link-list {
	padding-left: 0;
}

.sp-link-list li + li {
	margin-top: 0.5rem;
}

.sp-link-list p {
	margin: 0;
}

.sp-link-list p + p {
	margin-top: 0.5rem;
}

.sp-entry-shell__header {
	display: grid;
	gap: var(--uplift-space-2);
	margin-bottom: var(--uplift-space-6);
}

.sp-entry-shell__lede {
	margin: 0;
	max-width: 48rem;
	font-size: var(--sp-type-size-body-lg);
}

.sp-query-card .wp-block-post-featured-image,
.sp-entry-shell .wp-block-post-featured-image {
	margin: 0;
}

@keyframes sp-404-spin {
	to {
		transform: rotate(1turn);
	}
}

@media (min-width: 861px) {
	.sp-service-shell__body {
		grid-template-columns: minmax(0, 1.3fr) minmax(18rem, 0.9fr);
	}

	.sp-hero-pattern--image-right .sp-hero-pattern__inner,
	.sp-hero-pattern--slider-right .sp-hero-pattern__inner {
		grid-template-columns: minmax(0, 1fr) minmax(18rem, 0.9fr);
	}

	/* The copy starts on the wide column's left edge; the photo fills the
	   rest of the row at the copy's full height. */
	:is(.sp-hero-pattern--image-right, .sp-hero-pattern--slider-right) .sp-hero-pattern__inner {
		column-gap: clamp(var(--uplift-space-8), 4vw, var(--uplift-space-16));
		padding-inline-start: max(calc(var(--sp-layout-content-gutter) / 2), calc((100% - var(--wp--style--global--wide-size, 75rem)) / 2));
	}

	:is(.sp-hero-pattern--image-right, .sp-hero-pattern--slider-right) .sp-hero-pattern__content {
		padding-inline: 0;
	}

	/* Taken out of flow so the photo's own height never sets the row's. */
	:is(.sp-hero-pattern--image-right, .sp-hero-pattern--slider-right) .sp-hero-pattern__media {
		position: relative;
		min-height: clamp(22rem, 30vw, 32rem);
	}

	:is(.sp-hero-pattern--image-right, .sp-hero-pattern--slider-right) .sp-hero-pattern__media > .wp-block-image,
	:is(.sp-hero-pattern--image-right, .sp-hero-pattern--slider-right) .sp-hero-pattern__media > .wp-block-southernpartners-theme-slider.sp-slider.splide {
		position: absolute;
		inset: 0;
	}

	:is(.sp-hero-pattern--image-right, .sp-hero-pattern--slider-right) .sp-hero-pattern__media .wp-block-image img,
	:is(.sp-hero-pattern--image-right, .sp-hero-pattern--slider-right) .sp-hero-pattern__media .sp-slider__image,
	:is(.sp-hero-pattern--image-right, .sp-hero-pattern--slider-right) .sp-hero-pattern__media .wp-block-southernpartners-theme-slider.sp-slider.splide.is-initialized .sp-slider__track {
		height: 100%;
		aspect-ratio: auto;
	}

	.sp-card-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (min-width: 981px) {
	.sp-feature-grid__items {
		grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
	}
}

/* Contact page details: business hours and the mailing address as cards
   below the page hero. */
.sp-contact-details {
	display: grid;
	gap: var(--uplift-space-6);
}

.sp-contact-card {
	display: grid;
	align-content: start;
	gap: var(--uplift-space-4);
	padding: var(--uplift-space-8);
	border: 1px solid var(--sp-color-border-subtle);
	border-radius: var(--uplift-radius-xl);
	background: var(--sp-color-layer-2);
	color: var(--sp-color-text-primary);
}

.sp-contact-card > * {
	margin-block: 0;
}

.sp-contact-card .sp-contact-card__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 3.5rem;
	height: 3.5rem;
	border-radius: var(--uplift-radius-lg);
	background: var(--sp-component-mega-menu-icon-bg);
	color: var(--sp-color-text-accent);
}

.sp-contact-card .sp-contact-card__icon svg,
.sp-contact-card .sp-contact-card__icon img {
	width: 1.75rem;
	height: 1.75rem;
}

.sp-contact-card p {
	font-size: var(--sp-type-size-body-lg);
	line-height: 1.6;
	text-wrap: balance;
}

.sp-contact-card strong {
	color: var(--sp-color-text-heading);
	font-family: var(--sp-type-family-heading);
	font-weight: var(--sp-type-weight-semibold);
}

@media (min-width: 761px) {
	.sp-contact-details {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
