/* ==========================================================================
   The Recyclers — sections and block styles
   Every `is-style-rcy-*` rule here matches a variation in inc/block-styles.php.
   ========================================================================== */

/* Frame ------------------------------------------------------------------- */

/* Sections butt together; each carries its own padding. */
.entry__content > .alignfull + .alignfull {
	margin-block-start: 0;
}

.rcy-section {
	padding-block: clamp(3.5rem, 7vw, 6rem);
}

/* Zero-weight on purpose, so the rhythm steps below always win. */
.rcy-section :where(.fwf-container, .wp-block-column, .is-layout-flow) > * + * {
	margin-block-start: 0;
}

.rcy-section h2 {
	margin-block: 0.35rem 0;
}

.rcy-section .rcy-section__head {
	align-items: flex-end;
	gap: var(--wp--preset--spacing--30);
	margin-block-end: var(--wp--preset--spacing--50);
}

.rcy-section p {
	margin-block: 0;
}

/*
 * Vertical rhythm, one set of steps for every section: eyebrow to heading,
 * heading to copy, paragraph to paragraph, copy to actions. Sibling selectors
 * so a block an editor adds in between still gets sensible space.
 */
:root {
	--rcy-step-eyebrow: 0.85rem;
	--rcy-step-copy: 1.35rem;
	--rcy-step-para: 1rem;
	--rcy-step-actions: 2.25rem;
}

.rcy-section :is(.is-style-rcy-eyebrow, .is-style-rcy-pill-outline) + h2 {
	margin-block-start: var(--rcy-step-eyebrow);
}

.rcy-section .is-style-rcy-pill-outline + h2 {
	margin-block-start: 1.25rem;
}

.rcy-section h2 + p {
	margin-block-start: var(--rcy-step-copy);
}

/* Stacked copy only — paragraphs side by side in a row (partners) stay level. */
.rcy-section :is(.is-layout-flow, .wp-block-column) > p + p:not(.is-style-rcy-arrow-link) {
	margin-block-start: var(--rcy-step-para);
}

.rcy-section :is(p, .wp-block-group) + .wp-block-buttons {
	margin-block-start: var(--rcy-step-actions);
}

/* Eyebrow ------------------------------------------------------------------ */

.is-style-rcy-eyebrow {
	margin: 0;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 0.9375rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--wp--preset--color--primary);
}

/* Pill --------------------------------------------------------------------- */

.is-style-rcy-pill {
	display: inline-flex;
	align-items: center;
	gap: 0.55em;
	width: fit-content;
	padding: 0.4rem 0.95rem;
	border: 1px solid rgb(126 231 135 / 45%);
	border-radius: 999px;
	background: rgb(13 43 30 / 55%);
	font-size: 0.8125rem;
	font-weight: 700;
	letter-spacing: 0.02em;
	text-transform: uppercase;
	color: var(--wp--preset--color--base);
}

.is-style-rcy-pill::before {
	content: "";
	width: 0.95em;
	height: 0.95em;
	background: var(--wp--preset--color--primary-tint);
	mask: var(--rcy-icon-shield-halved) center / contain no-repeat;
}

.is-style-rcy-pill-outline {
	display: inline-block;
	width: fit-content;
	padding: 0.45rem 1.1rem;
	border: 1px solid var(--wp--preset--color--border);
	border-radius: 999px;
	font-size: 0.875rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--wp--preset--color--primary);
}

/* Arrow Link ---------------------------------------------------------------- */

.is-style-rcy-arrow-link a {
	display: inline-flex;
	align-items: center;
	gap: 0.4em;
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 700;
	color: var(--wp--preset--color--primary);
	text-decoration: none;
}

.is-style-rcy-arrow-link a::after {
	content: "";
	width: 0.8em;
	height: 0.8em;
	background: currentcolor;
	mask: var(--rcy-icon-arrow-right) center / contain no-repeat;
	transition: translate 0.2s ease;
}

.is-style-rcy-arrow-link a:hover::after {
	translate: 3px 0;
}

/* Buttons ------------------------------------------------------------------- */

.wp-block-button[class*="is-style-rcy-"] .wp-block-button__link {
	display: inline-flex;
	align-items: center;
	gap: 0.55em;
}

.wp-block-button.is-style-rcy-bright .wp-block-button__link {
	padding: 1rem 1.75rem;
	border-radius: 999px;
	background: var(--wp--preset--color--primary-tint);
	color: var(--wp--preset--color--secondary);
}

.wp-block-button.is-style-rcy-bright .wp-block-button__link:hover {
	background: var(--wp--preset--color--base);
}

.wp-block-button.is-style-rcy-phone .wp-block-button__link {
	padding: 1rem 1.6rem;
	border-radius: 999px;
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--contrast);
}

/* On ::after, placed first: the parent's hover sweep owns ::before. */
.wp-block-button.is-style-rcy-phone .wp-block-button__link::after {
	content: "";
	order: -1;
	flex: none;
	width: 0.95em;
	height: 0.95em;
	background: var(--wp--preset--color--primary);
	mask: var(--rcy-icon-phone) center / contain no-repeat;
}

.wp-block-button.is-style-rcy-phone .wp-block-button__link:hover {
	background: var(--wp--preset--color--mint-strong);
}

.wp-block-button.is-style-rcy-arrow .wp-block-button__link {
	border-radius: 999px;
	background: var(--wp--preset--color--primary-bright);
}

.wp-block-button.is-style-rcy-arrow .wp-block-button__link:hover {
	background: var(--wp--preset--color--primary);
}

.wp-block-button.is-style-rcy-white .wp-block-button__link {
	padding: 0.95rem 2rem;
	border-radius: 999px;
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--primary);
	font-weight: 800;
	letter-spacing: 0.02em;
	text-transform: uppercase;
}

.wp-block-button.is-style-rcy-white .wp-block-button__link:hover {
	background: var(--wp--preset--color--primary-tint);
	color: var(--wp--preset--color--secondary);
}

.wp-block-button.is-style-rcy-blue .wp-block-button__link {
	border-radius: 999px;
	background: var(--wp--preset--color--blue);
	font-size: 0.9375rem;
}

.wp-block-button.is-style-rcy-blue .wp-block-button__link:hover {
	background: var(--wp--preset--color--primary);
}

/* Icons --------------------------------------------------------------------- */

/*
 * The class is doubled on purpose: the parent sizes every image inside Columns
 * to 100% at (0,3,0), which stretched these into ovals.
 */
figure.wp-block-image.is-style-rcy-icon.is-style-rcy-icon,
figure.wp-block-image.is-style-rcy-icon-square.is-style-rcy-icon-square {
	display: grid;
	flex: none;
	justify-self: center;
	place-items: center;
	width: 2.75rem;
	height: 2.75rem;
	margin: 0;
	border-radius: 50%;
	background: var(--wp--preset--color--mint-strong);
}

figure.wp-block-image.is-style-rcy-icon-square.is-style-rcy-icon-square {
	width: 3rem;
	height: 3rem;
	border-radius: 10px;
}

.wp-block-image.is-style-rcy-icon img,
.wp-block-image.is-style-rcy-icon-square img {
	width: 1.1rem !important;
	height: 1.1rem !important;
	object-fit: contain;
}

.wp-block-image.is-style-rcy-icon-plain {
	margin: 0 auto;
}

.wp-block-image.is-style-rcy-icon-plain img {
	width: 1rem !important;
	height: 1rem !important;
	object-fit: contain;
}

/* Page Hero ---------------------------------------------------------------- */

.wp-block-cover.is-style-rcy-hero {
	min-height: clamp(560px, 52vw, 760px);
	padding: 0;
	align-items: center;
}

.wp-block-cover.is-style-rcy-hero .wp-block-cover__image-background {
	object-position: 70% center;
}

.wp-block-cover.is-style-rcy-hero .wp-block-cover__inner-container {
	width: 100%;
	color: var(--wp--preset--color--base);
}

.is-style-rcy-hero .rcy-hero__inner > * {
	max-width: 36rem;
	margin: 0;
}

.is-style-rcy-hero .rcy-hero__inner > h1 {
	margin-block: 1.25rem;
	color: var(--wp--preset--color--base);
}

.is-style-rcy-hero .rcy-hero__lead {
	font-size: 1.125rem;
	line-height: 1.6;
	color: rgb(255 255 255 / 90%);
}

.is-style-rcy-hero .wp-block-buttons {
	gap: 1rem;
	margin-block: 2rem 2.25rem;
}

/* Hero slider (assets/js/hero-slider.js) ----------------------------------- */

/* The extra photos are a gallery in the Cover; the script lifts them out.
   Hidden on the front end only — the editor shows it so slides can be edited. */
.wp-site-blocks .is-style-rcy-hero .rcy-hero__slides {
	display: none;
}

.editor-styles-wrapper .is-style-rcy-hero .rcy-hero__slides {
	max-width: 24rem;
	margin-block-start: 1.5rem;
	opacity: 0.85;
}

.wp-block-cover.is-style-rcy-hero .wp-block-cover__image-background.rcy-hero__slide {
	opacity: 0;
	transition: opacity 1.2s ease;
}

.wp-block-cover.is-style-rcy-hero .wp-block-cover__image-background.rcy-hero__slide.is-active {
	opacity: 1;
}

.rcy-hero__controls {
	position: absolute;
	right: clamp(1rem, 4vw, 3rem);
	bottom: 1.25rem;
	z-index: 2;
	display: flex;
	align-items: center;
	gap: 0.15rem;
}

/* A 24px target round a small dot (WCAG 2.5.8). */
.rcy-hero__dot {
	display: grid;
	place-items: center;
	width: 1.5rem;
	height: 1.5rem;
	padding: 0;
	border: 0;
	background: transparent;
	cursor: pointer;
}

.rcy-hero__dot::before {
	content: "";
	width: 0.6rem;
	height: 0.6rem;
	border-radius: 999px;
	background: rgb(255 255 255 / 55%);
	transition: width 0.3s ease, background-color 0.3s ease;
}

.rcy-hero__dot[aria-current]::before {
	width: 1.4rem;
	background: var(--wp--preset--color--primary-tint);
}

.rcy-hero__dot[aria-current] {
	width: 2rem;
}

.rcy-hero__pause {
	position: relative;
	width: 2rem;
	height: 2rem;
	margin-inline-start: 0.5rem;
	padding: 0;
	border: 1px solid rgb(255 255 255 / 40%);
	border-radius: 50%;
	background: rgb(13 43 30 / 45%);
	cursor: pointer;
}

/* Two bars; a triangle when paused. */
.rcy-hero__pause::before,
.rcy-hero__pause::after {
	content: "";
	position: absolute;
	top: 50%;
	width: 3px;
	height: 0.65rem;
	translate: 0 -50%;
	background: var(--wp--preset--color--base);
}

.rcy-hero__pause::before { left: calc(50% - 4px); }
.rcy-hero__pause::after { left: calc(50% + 1px); }

.rcy-hero__pause.is-paused::before {
	left: calc(50% - 3px);
	width: 0;
	height: 0;
	border-block: 0.4rem solid transparent;
	border-inline-start: 0.6rem solid var(--wp--preset--color--base);
	background: none;
}

.rcy-hero__pause.is-paused::after {
	display: none;
}

.rcy-hero__dot:focus-visible,
.rcy-hero__pause:focus-visible {
	outline: 2px solid var(--wp--preset--color--primary-tint);
	outline-offset: 2px;
}

/* Google Rating ------------------------------------------------------------- */

.is-style-rcy-rating {
	position: relative;
	display: grid;
	align-content: center;
	min-height: 3.25rem;
	padding-inline-start: 4.25rem;
	font-weight: 600;
	font-size: 0.9375rem;
}

.is-style-rcy-rating::before {
	content: "";
	position: absolute;
	inset: 0 auto 0 0;
	width: 3.25rem;
	border-radius: 10px;
	background: #fff var(--rcy-google) center / 1.4rem no-repeat;
}

.is-style-rcy-rating::after {
	content: "";
	order: -1;
	width: 6.5rem;
	height: 1.1rem;
	margin-block-end: 0.2rem;
	background: var(--wp--preset--color--accent);
	mask: var(--rcy-icon-star) left center / 1.1rem 1.1rem space;
}

/* Stat Strip ---------------------------------------------------------------- */

.is-style-rcy-strip {
	padding-block: 1.5rem;
	border-block-end: 1px solid var(--wp--preset--color--border);
	background: var(--wp--preset--color--surface);
}

.is-style-rcy-strip .rcy-strip__grid {
	gap: 0;
	max-width: 72rem;
	margin-inline: auto;
}



.is-style-rcy-stat {
	display: grid;
	justify-items: center;
	gap: 0.15rem;
	padding: 0.25rem 1rem;
	text-align: center;
}

.is-style-rcy-stat + .is-style-rcy-stat {
	border-inline-start: 1px solid var(--wp--preset--color--border);
}

.is-style-rcy-stat > * {
	margin: 0 !important;
}

.is-style-rcy-stat .wp-block-image {
	margin-block-end: 0.6rem !important;
}

.is-style-rcy-stat .rcy-stat__title {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 1.0625rem;
}

.is-style-rcy-stat .rcy-stat__sub {
	font-size: 0.8125rem;
	color: var(--wp--preset--color--muted);
}

@media (max-width: 900px) {
	.is-style-rcy-strip .rcy-strip__grid {
		row-gap: 1.5rem;
	}

	.is-style-rcy-stat + .is-style-rcy-stat {
		border-inline-start: 0;
	}
}

/* Service Card ---------------------------------------------------------------- */

.rcy-services .rcy-services__grid {
	gap: 1.25rem;
}

.is-style-rcy-service-card {
	display: flex;
	flex-direction: column;
	align-items: center;
	padding: 0.875rem 0.875rem 1.5rem;
	border: 1px solid var(--wp--preset--color--border);
	border-radius: var(--rcy-radius);
	background: var(--wp--preset--color--surface-alt);
	text-align: center;
	transition: background-color 0.2s ease, translate 0.2s ease, box-shadow 0.2s ease;
}

.is-style-rcy-service-card:hover,
.is-style-rcy-service-card:focus-within {
	background: var(--wp--preset--color--mint-strong);
	box-shadow: var(--rcy-shadow);
	translate: 0 -3px;
}

.is-style-rcy-service-card > * {
	margin: 0 !important;
}

.is-style-rcy-service-card .rcy-service-card__photo {
	width: 100%;
}

.is-style-rcy-service-card .rcy-service-card__photo img {
	width: 100% !important;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	border-radius: 10px;
}

.is-style-rcy-service-card .is-style-rcy-icon {
	margin-block-start: -1.375rem !important;
	border: 3px solid var(--wp--preset--color--base);
	box-sizing: content-box;
	position: relative;
}

.is-style-rcy-service-card h3 {
	margin-block: 0.85rem 1.25rem !important;
	font-size: 1.0625rem;
	line-height: 1.25;
}

.is-style-rcy-service-card .is-style-rcy-arrow-link {
	margin-block-start: auto !important;
	font-size: 0.9375rem;
}

/* Impact (Percentage Ring, Process Row) ------------------------------------------ */

.rcy-impact .wp-block-columns {
	gap: clamp(2rem, 6vw, 6rem);
}

.rcy-impact .wp-block-column > p:not([class*="is-style"]) {
	max-width: 34rem;
	font-size: 1.0625rem;
	color: var(--wp--preset--color--muted);
}

.is-style-rcy-card {
	padding: clamp(1.25rem, 3vw, 2rem);
	border: 1px solid var(--wp--preset--color--border);
	border-radius: var(--rcy-radius-lg);
	background: var(--wp--preset--color--base);
	box-shadow: var(--rcy-shadow);
}

.rcy-impact__figure {
	gap: 1.5rem;
	padding-block-end: 1.75rem;
	border-block-end: 1px solid var(--wp--preset--color--border);
}

.rcy-impact__figure h3 {
	margin: 0 0 0.5rem;
	font-size: 1.125rem;
	text-transform: uppercase;
	letter-spacing: -0.01em;
}

.rcy-impact__figure p {
	font-size: 0.875rem;
	color: var(--wp--preset--color--muted);
}

.is-style-rcy-donut {
	flex: none;
	display: grid;
	place-content: center;
	width: 9rem;
	aspect-ratio: 1;
	border-radius: 50%;
	/* The ring itself is drawn in motion.css, where it can fill. */
	text-align: center;
}

.is-style-rcy-donut > * {
	margin: 0 !important;
	line-height: 1;
}

.is-style-rcy-donut > :first-child {
	font-size: 0.6875rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--wp--preset--color--muted);
}

.is-style-rcy-donut > :last-child {
	font-family: var(--wp--preset--font-family--rounded);
	font-size: 2.25rem;
	font-weight: 800;
	color: var(--wp--preset--color--primary);
}

.is-style-rcy-process {
	align-items: flex-start;
	gap: 0.5rem;
	padding-block-start: 1.75rem;
}

.is-style-rcy-process > .wp-block-group {
	position: relative;
	display: grid;
	justify-items: center;
	flex: 1;
	gap: 0.6rem;
	text-align: center;
	font-size: 0.875rem;
	font-weight: 600;
}

.is-style-rcy-process > .wp-block-group > * {
	margin: 0 !important;
}

.is-style-rcy-process > .wp-block-group + .wp-block-group::before {
	content: "";
	position: absolute;
	top: 1.1rem;
	left: -0.6rem;
	width: 0.75rem;
	height: 0.75rem;
	background: var(--wp--preset--color--muted);
	opacity: 0.5;
	mask: var(--rcy-icon-arrow-right) center / contain no-repeat;
}

@media (max-width: 560px) {
	.rcy-impact__figure {
		flex-wrap: wrap !important;
	}

	.is-style-rcy-process {
		flex-wrap: wrap !important;
	}

	.is-style-rcy-process > .wp-block-group {
		flex: 1 1 40%;
	}

	.is-style-rcy-process > .wp-block-group::before {
		display: none;
	}
}

/* About (Figure Card) --------------------------------------------------------------- */

.rcy-about .wp-block-columns {
	gap: clamp(2rem, 6vw, 6rem);
}

.rcy-about h2 {
	font-size: clamp(2.25rem, 4vw, 3.5rem);
}

.rcy-about .wp-block-column > p:not([class*="is-style"]) {
	max-width: 36rem;
	font-size: 1.0625rem;
	line-height: 1.75;
}

.rcy-about .rcy-about__figures {
	gap: 1rem;
	max-width: 44rem;
	margin-block-start: 2rem;
}

.is-style-rcy-figure-card {
	padding: 1.25rem 0.75rem;
	border: 1px solid var(--wp--preset--color--border);
	border-radius: var(--rcy-radius);
	background: var(--wp--preset--color--base);
	box-shadow: var(--rcy-shadow);
	text-align: center;
}

.is-style-rcy-figure-card > p:last-child {
	margin-block-start: 0.25rem !important;
	font-size: 0.8125rem;
	letter-spacing: 0.04em;
	color: var(--wp--preset--color--muted);
}

.is-style-rcy-figure {
	font-family: var(--wp--preset--font-family--rounded);
	font-size: 1.875rem;
	font-weight: 800;
	line-height: 1.1;
	color: var(--wp--preset--color--primary);
}

.rcy-about .rcy-about__photo img {
	width: 100% !important;
}

/* Offer Band ----------------------------------------------------------------------- */

.wp-block-cover.is-style-rcy-promo {
	min-height: 0;
	padding-block: clamp(3.5rem, 9vw, 7.5rem);
}

.wp-block-cover.is-style-rcy-promo .wp-block-cover__inner-container {
	width: 100%;
}

.is-style-rcy-offer-card {
	max-width: 46rem;
	margin-inline: auto;
	padding: clamp(1.75rem, 4vw, 2.5rem) clamp(1.25rem, 4vw, 3rem);
	border: 4px dashed var(--wp--preset--color--primary-tint);
	border-radius: var(--rcy-radius-lg);
	background: rgb(9 44 29 / 92%);
	color: var(--wp--preset--color--base);
	text-align: center;
}

.is-style-rcy-offer-card > * {
	margin-block: 0 !important;
}

.is-style-rcy-offer-card h2 {
	margin-block: 1rem 0.75rem !important;
	font-family: var(--wp--preset--font-family--rounded);
	font-size: clamp(3rem, 7vw, 4.75rem);
	font-weight: 900;
	letter-spacing: -0.01em;
	line-height: 1;
	color: var(--wp--preset--color--primary-tint);
}

.is-style-rcy-offer-card > p:not([class*="is-style"]) {
	font-size: 1.1875rem;
}

.is-style-rcy-offer-card p.rcy-offer__expires {
	margin-block-start: 0.5rem !important;
	font-size: 0.875rem;
	opacity: 0.85;
}

.is-style-rcy-offer-card .wp-block-buttons {
	justify-content: center;
	margin-block-start: 1.5rem !important;
}

/* Badge */

.is-style-rcy-badge {
	display: inline-flex;
	align-items: center;
	gap: 0.55em;
	padding: 0.5rem 2rem;
	border-radius: 999px;
	background: var(--wp--preset--color--accent);
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--wp--preset--color--secondary);
}

.is-style-rcy-badge::before {
	content: "";
	width: 1em;
	height: 1em;
	background: currentcolor;
	mask: var(--rcy-icon-recycle) center / contain no-repeat;
}

/* Step Card, Tree Line ----------------------------------------------------------------- */

.is-style-rcy-trees {
	position: relative;
	padding-block-end: clamp(5rem, 9vw, 8rem);
}

.is-style-rcy-trees::after {
	content: "";
	position: absolute;
	inset: auto 0 0;
	height: 130px;
	background: var(--rcy-trees) repeat-x left bottom / auto 100%;
	opacity: 0.07;
	pointer-events: none;
}

.is-style-rcy-trees > * {
	position: relative;
	z-index: 1;
}

.rcy-how .rcy-how__grid {
	gap: 2rem;
	margin-block-start: var(--wp--preset--spacing--50);
}

.is-style-rcy-step-card {
	padding: 2rem;
	border: 1px solid var(--wp--preset--color--border);
	border-radius: var(--rcy-radius-lg);
	background: rgb(248 250 252 / 92%);
}

.is-style-rcy-step-card > * {
	margin-block: 0 !important;
}

.is-style-rcy-step-card h3 {
	margin-block: 1.75rem 0.6rem !important;
}

.is-style-rcy-step-card > p {
	font-size: 0.9375rem;
	color: var(--wp--preset--color--muted);
}

.is-style-rcy-number {
	font-family: var(--wp--preset--font-family--rounded);
	font-size: 2rem;
	font-weight: 800;
	line-height: 1;
	color: #cbd5e1;
}

/* Reviews (Review Card, Initial, Five Stars, Captioned Photo) ---------------------------- */

.rcy-reviews .rcy-rating-card {
	position: relative;
	padding: 0.85rem 1.25rem 0.85rem 3.75rem;
	border: 1px solid var(--wp--preset--color--border);
	border-radius: var(--rcy-radius);
	background: var(--wp--preset--color--base);
}

.rcy-reviews .rcy-rating-card::before {
	content: "";
	position: absolute;
	top: 50%;
	left: 1rem;
	width: 1.9rem;
	height: 1.9rem;
	translate: 0 -50%;
	background: var(--rcy-google) center / contain no-repeat;
}

.rcy-reviews .rcy-rating-card > :first-child {
	display: flex;
	align-items: center;
	gap: 0.4rem;
	font-size: 1.375rem;
}

.rcy-reviews .rcy-rating-card > :first-child::after,
.is-style-rcy-stars::before {
	content: "";
	width: 5.5rem;
	height: 0.95rem;
	background: var(--wp--preset--color--accent);
	mask: var(--rcy-icon-star) left center / 0.95rem 0.95rem space;
}

.rcy-reviews .rcy-rating-card > :last-child {
	font-size: 0.8125rem;
	color: var(--wp--preset--color--muted);
}

.rcy-reviews .rcy-reviews__grid {
	gap: 1.5rem;
	grid-template-columns: repeat(auto-fill, minmax(min(15rem, 100%), 1fr));
}

@media (min-width: 1100px) {
	.rcy-reviews .rcy-reviews__grid {
		grid-template-columns: 1.5fr 1fr 1fr 1fr;
	}
}

.wp-block-cover.is-style-rcy-photo-caption {
	min-height: 16rem;
	padding: 1.25rem;
	border: 3px solid var(--wp--preset--color--base);
	border-radius: var(--rcy-radius-lg);
	overflow: hidden;
	box-shadow: var(--rcy-shadow);
}

.wp-block-cover.is-style-rcy-photo-caption .wp-block-cover__background {
	opacity: 0.55 !important;
	background: linear-gradient(0deg, rgb(13 43 30 / 90%), transparent 60%) !important;
}

.wp-block-cover.is-style-rcy-photo-caption p {
	margin: 0;
	font-size: 0.875rem;
	color: rgb(255 255 255 / 90%);
}

.wp-block-cover.is-style-rcy-photo-caption p strong {
	font-size: 1rem;
	color: var(--wp--preset--color--base);
}

.is-style-rcy-review-card {
	padding: 1.5rem;
	border: 1px solid var(--wp--preset--color--border);
	border-radius: var(--rcy-radius-lg);
	background: var(--wp--preset--color--base);
	font-size: 0.875rem;
	line-height: 1.6;
}

.is-style-rcy-review-card > * {
	margin-block: 0 !important;
}

.is-style-rcy-review-card > .wp-block-group:first-child {
	gap: 0.75rem;
	align-items: center;
}

.is-style-rcy-review-card .rcy-review-card__when {
	font-size: 0.75rem;
	color: var(--wp--preset--color--muted);
}

.is-style-rcy-avatar {
	display: grid;
	place-items: center;
	flex: none;
	width: 2.25rem;
	height: 2.25rem;
	margin: 0;
	border-radius: 50%;
	background: var(--wp--preset--color--primary);
	font-weight: 700;
	color: var(--wp--preset--color--base);
}

.is-style-rcy-review-card:nth-child(3) .is-style-rcy-avatar { background: #7e22ce; }
.is-style-rcy-review-card:nth-child(4) .is-style-rcy-avatar { background: #0f766e; }

/* The stars are drawn; the words stay for screen readers. */
.is-style-rcy-stars {
	position: relative;
	height: 0.95rem;
	margin-block: 1rem 0.75rem !important;
	overflow: hidden;
	color: transparent;
	font-size: 0;
}

.is-style-rcy-stars::before {
	position: absolute;
	inset: 0 auto 0 0;
}

.rcy-reviews .wp-block-buttons {
	margin-block-start: var(--wp--preset--spacing--50);
}

/* Community (Mint Card, Partner Row) ----------------------------------------------------- */

.rcy-community .rcy-community__copy {
	max-width: 44rem;
}

.rcy-community .rcy-community__copy > p:last-child {
	font-size: 1.0625rem;
	color: var(--wp--preset--color--muted);
}

.is-style-rcy-card-mint {
	max-width: 30rem;
	gap: 1rem;
	padding: 1.25rem 1.5rem;
	border: 1px solid rgb(34 197 94 / 35%);
	border-radius: var(--rcy-radius);
	background: var(--wp--preset--color--mint);
	font-size: 0.875rem;
	align-self: center;
}

.is-style-rcy-card-mint .is-style-rcy-arrow-link {
	margin-block-start: 0.4rem !important;
}

.is-style-rcy-partners {
	gap: 1.5rem 2rem;
	padding-block-start: var(--wp--preset--spacing--40);
	border-block-start: 1px solid var(--wp--preset--color--border);
}

.is-style-rcy-partner {
	margin: 0;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 1.125rem;
	font-weight: 700;
	color: var(--wp--preset--color--muted);
}

/* Quote Band (Numbered Step, Includes Row, Form Card, Call Line) ------------------------- */

.wp-block-cover.is-style-rcy-cta {
	padding-block: clamp(3.5rem, 7vw, 5rem);
	align-items: flex-start;
}

.wp-block-cover.is-style-rcy-cta .wp-block-cover__inner-container {
	width: 100%;
	color: var(--wp--preset--color--base);
}

.is-style-rcy-cta .wp-block-columns {
	gap: clamp(2rem, 5vw, 5rem);
}

.is-style-rcy-cta .wp-block-column > * {
	margin-block: 0;
}

.is-style-rcy-cta .is-style-rcy-eyebrow {
	letter-spacing: 0.14em;
	color: var(--wp--preset--color--accent);
}

.is-style-rcy-cta h2 {
	margin-block: 1rem 1.75rem;
	font-size: clamp(2.25rem, 4vw, 3.25rem);
	color: var(--wp--preset--color--base);
}

.is-style-rcy-cta .rcy-cta__lead {
	max-width: 38rem;
	margin-block-end: 1.5rem;
	font-size: 1.25rem;
	line-height: 1.5;
}

.is-style-rcy-cta .rcy-cta__steps {
	display: grid;
	gap: 1.5rem;
	margin-block: 3rem;
}

.is-style-rcy-numbered {
	gap: 1.25rem;
}

.is-style-rcy-numbered h3 {
	margin: 0 0 0.25rem;
	font-size: 1.25rem;
	color: var(--wp--preset--color--base);
}

.is-style-rcy-numbered p:not(.is-style-rcy-square-num) {
	margin: 0;
	font-size: 1.0625rem;
	color: rgb(255 255 255 / 88%);
}

.is-style-rcy-square-num {
	display: grid;
	place-items: center;
	flex: none;
	width: 2.9rem;
	height: 2.9rem;
	margin: 0;
	border-radius: 8px;
	background: var(--wp--preset--color--accent);
	font-family: var(--wp--preset--font-family--heading);
	font-size: 1.25rem;
	font-weight: 800;
	color: var(--wp--preset--color--secondary);
}

.is-style-rcy-call {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 1.25rem;
	font-weight: 700;
}

.is-style-rcy-call a {
	color: var(--wp--preset--color--accent);
	text-decoration: none;
}

.is-style-rcy-form-card {
	padding: clamp(1.5rem, 4vw, 3.25rem);
	border-radius: var(--rcy-radius);
	background: var(--wp--preset--color--base);
	box-shadow: var(--rcy-shadow-lg);
	color: var(--wp--preset--color--contrast);
	text-align: center;
}

.is-style-rcy-form-card > * {
	margin-block: 0 !important;
}

.is-style-rcy-form-card h3 {
	position: relative;
	padding-block-end: 1rem;
	font-size: clamp(1.5rem, 2.4vw, 2rem);
	color: var(--wp--preset--color--secondary);
}

.is-style-rcy-form-card h3::after {
	content: "";
	position: absolute;
	bottom: 0;
	left: 50%;
	width: 4rem;
	height: 3px;
	translate: -50% 0;
	background: var(--wp--preset--color--border);
}

.is-style-rcy-form-card > p {
	margin-block-start: 1rem !important;
	font-size: 0.9375rem;
}

.is-style-rcy-form-card .rcy-form-card__includes-title {
	color: var(--wp--preset--color--secondary);
}

.is-style-rcy-includes {
	gap: 0.5rem;
	margin-block: 1rem 1.5rem !important;
	padding: 1.25rem 1rem;
	border-radius: var(--rcy-radius-lg);
	background: var(--wp--preset--color--cream);
}

.is-style-rcy-includes > .wp-block-group {
	display: grid;
	justify-items: center;
	align-content: start;
	gap: 0.4rem;
}

.is-style-rcy-includes p {
	margin: 0;
	font-size: 0.75rem;
	font-weight: 700;
	line-height: 1.3;
	color: var(--wp--preset--color--secondary);
}

.is-style-rcy-includes figure.wp-block-image.is-style-rcy-icon.is-style-rcy-icon {
	width: 2.25rem;
	height: 2.25rem;
	margin-block-end: 0.25rem;
	background: var(--wp--preset--color--base);
	box-shadow: 0 1px 2px rgb(15 23 42 / 8%);
}

.is-style-rcy-includes figure.wp-block-image.is-style-rcy-icon img {
	width: 0.95rem !important;
	height: 0.95rem !important;
}

.is-style-rcy-form-card .rcy-form-card__trust {
	gap: 0.5rem 1.5rem;
	margin-block-start: 1.25rem !important;
	padding-block-start: 1.25rem;
	border-block-start: 1px solid var(--wp--preset--color--border);
}

.rcy-trust {
	display: inline-flex;
	align-items: center;
	gap: 0.35rem;
	margin: 0;
	font-size: 0.75rem;
	font-weight: 600;
}

.rcy-trust::before {
	content: "";
	width: 0.85rem;
	height: 0.85rem;
	background: currentcolor;
	mask: var(--rcy-mask) center / contain no-repeat;
}

.rcy-trust--local::before { --rcy-mask: var(--rcy-icon-location-dot); }
.rcy-trust--clear::before { --rcy-mask: var(--rcy-icon-circle-check); }
.rcy-trust--crew::before { --rcy-mask: var(--rcy-icon-user-group); }

@media (max-width: 781px) {
	.is-style-rcy-includes {
		grid-template-columns: repeat(2, 1fr) !important;
	}
}

/* The quote form sits below a sticky header. */
#quote {
	scroll-margin-top: 7rem;
}

/* Grids ---------------------------------------------------------------------- */

/*
 * The markup fixes each grid's column count, which is what the editor shows.
 * These step them down on narrower screens. Two classes, to beat the
 * `.wp-container-*` rule core prints for the count.
 */
.is-style-rcy-strip .rcy-strip__grid { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.rcy-services .rcy-services__grid { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.rcy-how .rcy-how__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.rcy-about .rcy-about__figures { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.is-style-rcy-form-card .is-style-rcy-includes { grid-template-columns: repeat(4, minmax(0, 1fr)); }

@media (max-width: 1100px) {
	.rcy-services .rcy-services__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 900px) {
	.is-style-rcy-strip .rcy-strip__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.rcy-how .rcy-how__grid { grid-template-columns: minmax(0, 1fr); max-width: 34rem; }
}

@media (max-width: 600px) {
	.is-style-rcy-strip .rcy-strip__grid,
	.rcy-services .rcy-services__grid,
	.is-style-rcy-form-card .is-style-rcy-includes { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.rcy-about .rcy-about__figures { gap: 0.6rem; }
}

/* Interaction ------------------------------------------------------------------ */

/*
 * Every card answers the pointer: a lift, a firmer shadow, and its icon filling
 * with the brand green. Transitions are listed per property so the reveal in
 * motion.css can own opacity without fighting these.
 */
:root {
	--rcy-ease: cubic-bezier(0.22, 1, 0.36, 1);
}

.is-style-rcy-service-card,
.is-style-rcy-step-card,
.is-style-rcy-review-card,
.is-style-rcy-figure-card,
.is-style-rcy-card-mint,
.rcy-rating-card {
	transition:
		translate 0.35s var(--rcy-ease),
		box-shadow 0.35s var(--rcy-ease),
		border-color 0.35s var(--rcy-ease),
		background-color 0.35s var(--rcy-ease);
}

figure.wp-block-image.is-style-rcy-icon,
figure.wp-block-image.is-style-rcy-icon-square {
	transition: background-color 0.3s var(--rcy-ease), scale 0.3s var(--rcy-ease), rotate 0.3s var(--rcy-ease);
}

figure.wp-block-image.is-style-rcy-icon img,
figure.wp-block-image.is-style-rcy-icon-square img {
	transition: filter 0.3s var(--rcy-ease);
}

@media (hover: hover) {
	.is-style-rcy-step-card:hover,
	.is-style-rcy-review-card:hover,
	.is-style-rcy-figure-card:hover,
	.is-style-rcy-card-mint:hover,
	.rcy-rating-card:hover {
		translate: 0 -4px;
		box-shadow: var(--rcy-shadow-lg);
		border-color: rgb(34 197 94 / 45%);
	}

	.is-style-rcy-service-card:hover {
		border-color: rgb(34 197 94 / 45%);
	}

	/* The icon fills green and the glyph turns white. */
	.is-style-rcy-service-card:hover figure.is-style-rcy-icon,
	.is-style-rcy-step-card:hover figure.is-style-rcy-icon-square,
	.is-style-rcy-stat:hover figure.is-style-rcy-icon,
	.is-style-rcy-process > .wp-block-group:hover figure.is-style-rcy-icon,
	.is-style-rcy-card-mint:hover figure.is-style-rcy-icon,
	.is-style-rcy-includes > .wp-block-group:hover figure.is-style-rcy-icon {
		background: var(--wp--preset--color--primary);
		scale: 1.08;
	}

	.is-style-rcy-service-card:hover figure.is-style-rcy-icon img,
	.is-style-rcy-step-card:hover figure.is-style-rcy-icon-square img,
	.is-style-rcy-stat:hover figure.is-style-rcy-icon img,
	.is-style-rcy-process > .wp-block-group:hover figure.is-style-rcy-icon img,
	.is-style-rcy-card-mint:hover figure.is-style-rcy-icon img,
	.is-style-rcy-includes > .wp-block-group:hover figure.is-style-rcy-icon img {
		filter: brightness(0) invert(1);
	}

	.is-style-rcy-step-card:hover .is-style-rcy-number {
		color: var(--wp--preset--color--primary-bright);
	}

	.is-style-rcy-partner:hover {
		color: var(--wp--preset--color--primary);
	}
}

.is-style-rcy-number,
.is-style-rcy-partner {
	transition: color 0.3s var(--rcy-ease);
}

/* Photographs zoom slowly inside their frame. */
.is-style-rcy-service-card .rcy-service-card__photo,
.wp-block-cover.is-style-rcy-photo-caption {
	overflow: hidden;
}

.is-style-rcy-service-card .rcy-service-card__photo {
	border-radius: 10px;
}

.is-style-rcy-service-card .rcy-service-card__photo img,
.wp-block-cover.is-style-rcy-photo-caption .wp-block-cover__image-background {
	transition: scale 0.8s var(--rcy-ease);
}

@media (hover: hover) {
	.is-style-rcy-service-card:hover .rcy-service-card__photo img,
	.wp-block-cover.is-style-rcy-photo-caption:hover .wp-block-cover__image-background {
		scale: 1.06;
	}
}

/* Button arrows nudge toward where they lead. */
.wp-block-button .wp-block-button__link::after,
.site-header .rcy-header__cta .wp-block-button__link::after {
	transition: translate 0.3s var(--rcy-ease);
}

@media (hover: hover) {
	.wp-block-button.is-style-rcy-bright .wp-block-button__link:hover::after,
	.wp-block-button.is-style-rcy-arrow .wp-block-button__link:hover::after,
	.wp-block-button.is-style-rcy-blue .wp-block-button__link:hover::after,
	.site-header .rcy-header__cta .wp-block-button__link:hover::after {
		translate: 4px 0;
	}

	/* The phone glyph rings instead. */
	.wp-block-button.is-style-rcy-phone .wp-block-button__link:hover::after {
		animation: rcy-ring 0.6s var(--rcy-ease);
	}
}

@keyframes rcy-ring {
	0%, 100% { rotate: 0deg; }
	20% { rotate: -14deg; }
	40% { rotate: 12deg; }
	60% { rotate: -8deg; }
	80% { rotate: 4deg; }
}

/* Phones ------------------------------------------------------------------------- */

@media (max-width: 600px) {
	/* Five figures in two columns: the odd one out takes the full row. */
	.is-style-rcy-strip .rcy-strip__grid > :last-child {
		grid-column: 1 / -1;
	}

	.is-style-rcy-stat .rcy-stat__title {
		font-size: 0.9375rem;
		line-height: 1.3;
	}

	.is-style-rcy-hero .wp-block-buttons {
		flex-direction: column;
		align-items: stretch;
	}

	.is-style-rcy-hero .wp-block-button .wp-block-button__link {
		width: 100%;
		justify-content: center;
	}

	.is-style-rcy-pill {
		font-size: 0.6875rem;
	}
}
