/*
 * Only what theme.json cannot express. Tokens come from theme.json presets.
 * Spark orange, terracotta and cream; Poppins; the red monkey. Spacing on a 4px grid.
 * Icons are Lucide (ISC licence), drawn as CSS masks so they take the text colour.
 */

:root {
	--aspire-i-phone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z'/%3E%3C/svg%3E");
	--aspire-i-mail: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='20' height='16' x='2' y='4' rx='2'/%3E%3Cpath d='m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7'/%3E%3C/svg%3E");
	--aspire-i-pin: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0Z'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E");
	--aspire-i-clock: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/svg%3E");
	--aspire-i-blocks: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='7' height='7' x='14' y='3' rx='1'/%3E%3Cpath d='M10 21V8a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1H3'/%3E%3C/svg%3E");
	--aspire-i-users: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='9' cy='7' r='4'/%3E%3Cpath d='M22 21v-2a4 4 0 0 0-3-3.87'/%3E%3Cpath d='M16 3.13a4 4 0 0 1 0 7.75'/%3E%3C/svg%3E");
	--aspire-i-cap: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 10v6M2 10l10-5 10 5-10 5z'/%3E%3Cpath d='M6 12v5c3 3 9 3 12 0v-5'/%3E%3C/svg%3E");
	--aspire-i-calendar: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='18' height='18' x='3' y='4' rx='2'/%3E%3Cpath d='M16 2v4M8 2v4M3 10h18'/%3E%3Cpath d='m9 16 2 2 4-4'/%3E%3C/svg%3E");
	--aspire-i-pencil: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z'/%3E%3Cpath d='m15 5 4 4'/%3E%3C/svg%3E");
	--aspire-i-bars: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 3v16a2 2 0 0 0 2 2h16'/%3E%3Crect x='7' y='13' width='3' height='5' rx='1'/%3E%3Crect x='12' y='9' width='3' height='9' rx='1'/%3E%3Crect x='17' y='5' width='3' height='13' rx='1'/%3E%3C/svg%3E");
	--aspire-i-solve: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='m9 12 2 2 4-4'/%3E%3C/svg%3E");
	--aspire-i-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");
	--aspire-i-plus: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'/%3E%3Cpath d='M12 5v14'/%3E%3C/svg%3E");
	--aspire-i-up: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12 7-7 7 7'/%3E%3Cpath d='M12 19V5'/%3E%3C/svg%3E");
	--aspire-i-facebook: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z'/%3E%3C/svg%3E");
	--aspire-i-instagram: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect width='20' height='20' x='2' y='2' rx='5' ry='5'/%3E%3Cpath d='M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z'/%3E%3Cpath d='M17.5 6.5h.01'/%3E%3C/svg%3E");
	--aspire-i-quote: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z'/%3E%3Cpath d='M5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z'/%3E%3C/svg%3E");
}

:root {
	--aspire-hairline: rgba(42, 30, 23, 0.1);
	--aspire-ease: cubic-bezier(0.22, 1, 0.36, 1);
	--aspire-spring: cubic-bezier(0.34, 1.4, 0.64, 1);
	--aspire-shadow: 0 1px 2px rgba(42, 30, 23, 0.04), 0 8px 24px rgba(42, 30, 23, 0.06);
	--aspire-shadow-lift: 0 2px 6px rgba(42, 30, 23, 0.05), 0 18px 44px rgba(42, 30, 23, 0.12);
	--aspire-sun: #ffc83d;
	--aspire-sticky-top: calc(var(--wp-admin--admin-bar--height, 0px) + 104px);
	interpolate-size: allow-keywords;
}

.aspire-i-blocks { --icon: var(--aspire-i-blocks); }
.aspire-i-users { --icon: var(--aspire-i-users); }
.aspire-i-cap { --icon: var(--aspire-i-cap); }
.aspire-i-calendar { --icon: var(--aspire-i-calendar); }
.aspire-i-bars { --icon: var(--aspire-i-bars); }
.aspire-i-solve { --icon: var(--aspire-i-solve); }
.aspire-i-pin { --icon: var(--aspire-i-pin); }
.aspire-i-phone { --icon: var(--aspire-i-phone); }
.aspire-i-mail { --icon: var(--aspire-i-mail); }
.aspire-i-clock { --icon: var(--aspire-i-clock); }

:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
	outline: 2px solid var(--wp--preset--color--ink);
	outline-offset: 3px;
}

.wp-element-button,
.aspire-carousel-nav button {
	transition: background-color 150ms var(--aspire-ease), color 150ms var(--aspire-ease), border-color 150ms var(--aspire-ease), transform 150ms var(--aspire-ease), box-shadow 150ms var(--aspire-ease);
}

.wp-element-button:active {
	transform: scale(0.98);
}

.wp-block-button:not(.is-style-quiet):not(.is-style-contrast) .wp-element-button:hover {
	box-shadow: 0 6px 16px rgba(232, 130, 42, 0.28);
}

.wp-block-button.is-style-quiet .wp-element-button:hover,
.wp-block-button.is-style-quiet .wp-element-button:focus {
	background-color: var(--wp--preset--color--raised);
	border-color: rgba(42, 30, 23, 0.24);
	color: var(--wp--preset--color--ink);
}

.wp-block-button.is-style-contrast .wp-element-button:hover,
.wp-block-button.is-style-contrast .wp-element-button:focus {
	background-color: #4a372c;
	color: var(--wp--preset--color--page);
}

/* Template parts sit flush; sections bring their own spacing. */
.wp-site-blocks > * + * {
	margin-block-start: 0;
}

.wp-block-post-content > .alignfull,
.aspire-page-body > .alignfull {
	margin-block: 0;
}

/* ---------- Header ---------- */

header.wp-block-template-part {
	position: sticky;
	top: var(--wp-admin--admin-bar--height, 0px);
	z-index: 100;
	transition: transform 300ms var(--aspire-ease);
}

/* Once the page scrolls, the info bar slides away and the main bar stays. */
header.wp-block-template-part.is-scrolled:not(:has(.is-menu-open)) {
	transform: translateY(calc(-1 * var(--aspire-topbar-h, 0px)));
}

.aspire-topbar {
	padding-block: 8px;
}

.aspire-topbar-inner {
	gap: 24px;
}

.aspire-topbar a {
	color: inherit;
	font-weight: 400;
	text-decoration: none;
}

.aspire-topbar a:hover {
	color: var(--wp--preset--color--primary);
}

.aspire-topbar-contact {
	display: flex;
	flex-wrap: wrap;
	gap: 4px 24px;
	margin: 0;
}

.aspire-topbar-contact p,
.aspire-topbar-note {
	margin: 0;
}

.aspire-topbar-note a {
	margin-left: 4px;
	color: var(--wp--preset--color--primary);
	font-weight: 500;
}

.aspire-topbar-note a:hover {
	color: var(--wp--preset--color--page);
}

.aspire-header {
	position: relative;
	padding-block: 14px;
	border-bottom: 1px solid var(--aspire-hairline);
	background: var(--wp--preset--color--page);
	transition: box-shadow 250ms var(--aspire-ease);
}

header.is-scrolled .aspire-header {
	box-shadow: 0 8px 24px rgba(42, 30, 23, 0.08);
}

.aspire-progress {
	position: absolute;
	right: 0;
	bottom: -1px;
	left: 0;
	height: 2px;
	background: var(--wp--preset--color--primary);
	transform: scaleX(var(--aspire-progress, 0));
	transform-origin: 0 50%;
	pointer-events: none;
}

.aspire-brand .wp-block-site-logo img {
	width: auto;
	height: 34px;
}

/* With a logo set in Site Identity the logo carries the name. */
.aspire-brand:has(.wp-block-site-logo img) .wp-block-site-title {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

.aspire-nav .wp-block-navigation__container {
	gap: 28px;
}

.aspire-nav .wp-block-navigation-item__content {
	position: relative;
	padding-block: 6px;
}

.aspire-nav .wp-block-navigation-item__content::after {
	content: "";
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	height: 2px;
	border-radius: 2px;
	background: var(--wp--preset--color--primary);
	transform: scaleX(0);
	transition: transform 250ms var(--aspire-ease);
}

.aspire-nav .wp-block-navigation-item__content:hover::after,
.aspire-nav .current-menu-item > .wp-block-navigation-item__content::after,
.aspire-nav .wp-block-navigation-item__content.is-current::after {
	transform: scaleX(1);
}

.aspire-nav:not(.has-background) .wp-block-navigation__responsive-container.is-menu-open {
	padding: 24px clamp(1rem, 4vw, 2rem);
	background: var(--wp--preset--color--page);
	color: var(--wp--preset--color--ink);
}

.aspire-nav .is-menu-open .wp-block-navigation__responsive-container-content,
.aspire-nav .is-menu-open .wp-block-navigation__container {
	align-items: flex-start !important;
}

.aspire-nav .is-menu-open .wp-block-navigation__responsive-container-content {
	padding-top: 48px;
}

.aspire-nav .is-menu-open .wp-block-navigation__container {
	gap: 20px;
}

.aspire-nav .is-menu-open .wp-block-navigation-item__content {
	font-size: 1.5rem;
}

.aspire-header .wp-element-button {
	padding: 10px 18px;
	font-size: 0.9375rem;
}

@media (max-width: 781px) {
	.aspire-topbar .aspire-business-details [data-field="address"],
	.aspire-topbar .aspire-business-details [data-field="email"] {
		display: none;
	}
}

@media (max-width: 781px) {
	.aspire-header-actions {
		gap: 12px;
	}

	.aspire-header-actions .aspire-nav {
		order: 2;
	}
}

@media (max-width: 600px) {
	.aspire-topbar-note {
		display: none;
	}

	.aspire-header-cta .wp-element-button {
		padding: 8px 12px;
		white-space: nowrap;
	}

	.aspire-brand .wp-block-site-logo img {
		height: 28px;
	}
}

/* ---------- Small icons beside contact details ---------- */

.aspire-business-details [data-field="address"],
.aspire-business-details [data-field="phone"],
.aspire-business-details [data-field="email"],
.aspire-business-details [data-field="hours"] {
	display: flex;
	gap: 10px;
}

.aspire-business-details [data-field="address"]::before,
.aspire-business-details [data-field="phone"]::before,
.aspire-business-details [data-field="email"]::before,
.aspire-business-details [data-field="hours"]::before {
	content: "";
	flex: none;
	width: 16px;
	height: 16px;
	margin-top: 0.3em;
	background: currentColor;
	opacity: 0.8;
	-webkit-mask: var(--icon) center / contain no-repeat;
	mask: var(--icon) center / contain no-repeat;
}

.aspire-business-details [data-field="address"] { --icon: var(--aspire-i-pin); }
.aspire-business-details [data-field="phone"] { --icon: var(--aspire-i-phone); }
.aspire-business-details [data-field="email"] { --icon: var(--aspire-i-mail); }
.aspire-business-details [data-field="hours"] { --icon: var(--aspire-i-clock); }

/* Inside the contact cards the card carries the icon. */
.aspire-contact-card .aspire-business-details p::before {
	display: none;
}

/* ---------- Signature: the Spark spark, before each reason ---------- */

.aspire-reason h3 {
	display: flex;
	align-items: center;
	gap: 12px;
}

.aspire-reason h3::before {
	content: "";
	flex: none;
	width: 20px;
	height: 20px;
	background: var(--wp--preset--color--primary-dark);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M10 1v5M3.6 3.6l3.5 3.5M16.4 3.6l-3.5 3.5M1 10h5M14 10h5' stroke='%23000' stroke-width='2.2' stroke-linecap='round' fill='none'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M10 1v5M3.6 3.6l3.5 3.5M16.4 3.6l-3.5 3.5M1 10h5M14 10h5' stroke='%23000' stroke-width='2.2' stroke-linecap='round' fill='none'/%3E%3C/svg%3E") center / contain no-repeat;
}

.aspire-reasons {
	gap: 24px;
	margin-block-start: 32px;
}

.aspire-reason > * {
	margin-block: 0;
}

.aspire-reason > * + * {
	margin-block-start: 4px;
}

/* ---------- Sections ---------- */

.aspire-section {
	position: relative;
	padding-top: 112px;
	padding-bottom: 112px;
}

.aspire-section > * + * {
	margin-block-start: 48px;
}

/* Two sections on the same background share one gap instead of stacking two. */
.aspire-section:not(.has-background) + .aspire-section:not(.has-background),
.aspire-hero + .aspire-section:not(.has-background) {
	padding-top: 0;
}

.aspire-section-head > * {
	margin-block: 0;
}

.aspire-section-head > p {
	margin-block-start: 16px;
}

.aspire-section-head.is-centered {
	text-align: center;
}

@media (max-width: 781px) {
	.aspire-section {
		padding-top: 72px;
		padding-bottom: 72px;
	}

	.aspire-section > * + * {
		margin-block-start: 32px;
	}
}

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

.aspire-hero {
	position: relative;
	isolation: isolate;
	padding-top: 128px;
	padding-bottom: 152px;
	overflow-x: clip;
}

/* Decoration: a dot grid and a sun-yellow block, drifting slightly with the pointer and the scroll. */
.aspire-hero::before,
.aspire-hero::after {
	content: "";
	position: absolute;
	z-index: -1;
	pointer-events: none;
	transform: translate3d(calc(var(--mx, 0) * -14px), calc(var(--my, 0) * -14px + var(--sy, 0) * 0.12px), 0);
	transition: transform 600ms var(--aspire-ease);
}

.aspire-hero::before {
	top: 48px;
	left: max(1rem, calc(50% - 680px));
	width: 168px;
	height: 128px;
	background-image: radial-gradient(circle, rgba(255, 155, 57, 0.5) 2px, transparent 2.5px);
	background-size: 20px 20px;
}

.aspire-hero::after {
	bottom: 120px;
	left: calc(50% - 72px);
	width: 36px;
	height: 36px;
	border-radius: 10px;
	background: var(--aspire-sun);
	rotate: 14deg;
}

.aspire-hero-text > * {
	margin-block: 0;
}

.aspire-hero h1,
.aspire-page-hero h1,
.aspire-section h2 {
	text-wrap: balance;
}

.aspire-hero-text > p {
	margin-block-start: 20px;
	max-width: 36rem;
	color: var(--wp--preset--color--secondary);
}

.aspire-hero-text > .wp-block-buttons {
	margin-block-start: 32px;
	gap: 12px;
}

.aspire-checks {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 20px;
	margin-block-start: 28px !important;
	padding: 0;
	list-style: none;
	color: var(--wp--preset--color--ink);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 500;
}

.aspire-checks li {
	display: flex;
	align-items: center;
	gap: 8px;
}

.aspire-checks li::before {
	content: "";
	flex: none;
	width: 20px;
	height: 20px;
	border-radius: 50%;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232A1E17' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / 12px no-repeat, var(--wp--preset--color--primary);
}

.aspire-hero-media {
	position: relative;
	isolation: isolate;
}

/* A peach block behind the photo and an orange ring at its corner. */
.aspire-hero-media::before,
.aspire-hero-media::after {
	content: "";
	position: absolute;
	z-index: -1;
	pointer-events: none;
	transition: transform 600ms var(--aspire-ease);
}

.aspire-hero-media::before {
	inset: 28px -28px -28px 28px;
	border-radius: var(--wp--custom--radius--panel);
	background: var(--wp--preset--color--raised);
	transform: translate3d(calc(var(--mx, 0) * 8px), calc(var(--my, 0) * 8px), 0);
}

.aspire-hero-media::after {
	top: -28px;
	left: -28px;
	width: 72px;
	height: 72px;
	border: 3px solid var(--wp--preset--color--primary);
	border-radius: 50%;
	transform: translate3d(calc(var(--mx, 0) * 18px), calc(var(--my, 0) * 18px + var(--sy, 0) * -0.08px), 0);
}

.aspire-hero-photo {
	position: relative;
	isolation: isolate;
	margin: 0;
}

.aspire-hero-photo img {
	position: relative;
	z-index: 1;
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	object-position: 62% 50%;
	border-radius: var(--wp--custom--radius--panel);
}

.aspire-float {
	position: absolute;
	z-index: 2;
	display: flex;
	align-items: center;
	gap: 12px;
	max-width: 15rem;
	padding: 12px 18px 12px 16px;
	border-radius: var(--wp--custom--radius--card);
	background: var(--wp--preset--color--white);
	box-shadow: var(--aspire-shadow-lift);
}

.aspire-float > p {
	margin: 0;
	color: var(--wp--preset--color--secondary);
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.35;
}

.aspire-float > .aspire-float-big {
	flex: none;
	color: var(--wp--preset--color--terracotta);
	font-size: 1.625rem;
	font-weight: 600;
	line-height: 1;
}

.aspire-float--ages {
	top: 42%;
	left: -44px;
}

.aspire-float--trial {
	right: -20px;
	bottom: -32px;
}

/* Entrance: text rises line by line, the photo settles in, then the fact cards pop. */
.aspire-hero-text > * {
	animation: aspire-rise 700ms var(--aspire-ease) both;
}

.aspire-hero-text > :nth-child(2) { animation-delay: 90ms; }
.aspire-hero-text > :nth-child(3) { animation-delay: 180ms; }
.aspire-hero-text > :nth-child(4) { animation-delay: 270ms; }

.aspire-hero-photo img {
	animation: aspire-settle 900ms 120ms var(--aspire-ease) both;
}

.aspire-float--ages {
	animation: aspire-pop 600ms 700ms var(--aspire-spring) both, aspire-bob 6s 1.6s ease-in-out infinite;
}

.aspire-float--trial {
	animation: aspire-pop 600ms 850ms var(--aspire-spring) both, aspire-bob 6s 2.4s ease-in-out infinite;
}

@keyframes aspire-rise {
	from { opacity: 0; transform: translateY(16px); }
	to { opacity: 1; transform: none; }
}

@keyframes aspire-settle {
	from { opacity: 0; transform: scale(1.04); }
	to { opacity: 1; transform: none; }
}

@keyframes aspire-pop {
	from { opacity: 0; transform: translateY(12px) scale(0.9); }
	to { opacity: 1; transform: none; }
}

@keyframes aspire-bob {
	0%, 100% { transform: translateY(0); }
	50% { transform: translateY(-8px); }
}

@media (max-width: 781px) {
	.aspire-hero {
		padding-top: 40px;
		padding-bottom: 112px;
	}

	/* Room for the monkey above the photo; WordPress zeroes a first child's top margin, so this needs !important. */
	.aspire-hero-media {
		margin-top: 112px !important;
	}

	.aspire-hero::before,
	.aspire-hero-media::after {
		display: none;
	}

	.aspire-hero-photo img {
		aspect-ratio: 3 / 2;
	}

	.aspire-hero-media::before {
		inset: 16px -12px -16px 16px;
	}

	.aspire-float--ages {
		top: auto;
		bottom: -28px;
		left: 12px;
	}

	.aspire-float--trial {
		display: none;
	}
}

/* ---------- Highlights: a white panel over the hero's lower edge ---------- */

.aspire-section.aspire-highlights-wrap {
	z-index: 3;
	margin-top: -88px !important;
	padding-top: 0;
}

.aspire-highlights {
	gap: 32px;
	padding: 36px 40px;
	border-radius: var(--wp--custom--radius--panel);
	box-shadow: var(--aspire-shadow-lift);
}

.aspire-highlight,
.aspire-step,
.aspire-contact-card {
	position: relative;
}

.aspire-highlight {
	padding-left: 64px;
}

.aspire-highlight > * {
	margin: 0;
}

.aspire-highlight h3 {
	margin-bottom: 4px;
	font-weight: 600;
}

/* Icon in a peach circle: the circle is ::before, the icon ::after. */
.aspire-highlight::before,
.aspire-contact-card::before {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	width: 48px;
	height: 48px;
	border-radius: 14px;
	background: var(--wp--preset--color--raised);
}

.aspire-highlight::after,
.aspire-contact-card::after,
.aspire-step::after {
	content: "";
	position: absolute;
	top: 12px;
	left: 12px;
	width: 24px;
	height: 24px;
	background: var(--wp--preset--color--terracotta);
	-webkit-mask: var(--icon) center / contain no-repeat;
	mask: var(--icon) center / contain no-repeat;
}

@media (max-width: 781px) {
	.aspire-section.aspire-highlights-wrap {
		margin-top: -64px !important;
	}

	.aspire-highlights {
		padding: 28px 24px;
	}
}

/* ---------- How a lesson works ---------- */

.aspire-steps {
	position: relative;
	gap: 40px;
	grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
	counter-reset: aspire-step;
}

/* A dashed line joins the three steps; it draws in when the section scrolls into view. */
.aspire-steps::before {
	content: "";
	position: absolute;
	top: 40px;
	right: calc(100% / 6);
	left: calc(100% / 6);
	height: 2px;
	background: repeating-linear-gradient(90deg, var(--wp--preset--color--primary) 0 10px, transparent 10px 18px);
	transform-origin: 0 50%;
}

.aspire-js .aspire-reveal .aspire-steps::before {
	transform: scaleX(0);
	transition: transform 1400ms var(--aspire-ease) 300ms;
}

.aspire-js .aspire-reveal.is-in .aspire-steps::before {
	transform: scaleX(1);
}

.aspire-step {
	counter-increment: aspire-step;
	padding-top: 108px;
	text-align: center;
}

.aspire-step > * {
	margin: 0;
}

.aspire-step > p {
	max-width: 22rem;
	margin: 8px auto 0;
}

.aspire-step::before {
	content: "";
	position: absolute;
	z-index: 1;
	top: 0;
	left: 50%;
	width: 80px;
	height: 80px;
	margin-left: -40px;
	border: 1px solid var(--aspire-hairline);
	border-radius: 50%;
	background: var(--wp--preset--color--white);
	box-shadow: var(--aspire-shadow);
}

.aspire-step::after {
	z-index: 2;
	top: 24px;
	left: 50%;
	width: 32px;
	height: 32px;
	margin-left: -16px;
}

.aspire-step h3::before {
	content: counter(aspire-step);
	display: inline-grid;
	place-items: center;
	width: 28px;
	height: 28px;
	margin-right: 10px;
	border-radius: 50%;
	background: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--ink);
	font-size: 0.875rem;
	font-weight: 600;
	vertical-align: 0.15em;
}

@media (max-width: 781px) {
	.aspire-steps {
		grid-template-columns: minmax(0, 1fr) !important;
	}

	.aspire-steps::before {
		display: none;
	}
}

/* ---------- Photos ---------- */

.aspire-photo {
	margin: 0;
}

.aspire-photo img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: var(--wp--custom--radius--panel);
}

.aspire-photo-offset {
	position: relative;
	isolation: isolate;
}

.aspire-photo-offset::before {
	content: "";
	position: absolute;
	z-index: -1;
	inset: 24px -24px -24px 24px;
	border-radius: var(--wp--custom--radius--panel);
	background: var(--wp--preset--color--raised);
}

.aspire-mosaic {
	display: grid;
	grid-template-columns: 1.35fr 1fr;
	grid-template-rows: 1fr 1fr;
	gap: 16px;
}

.aspire-mosaic > * {
	margin: 0 !important;
}

.aspire-mosaic-main {
	grid-row: 1 / 3;
}

.aspire-mosaic img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: var(--wp--custom--radius--card);
}

.aspire-mosaic-main img {
	aspect-ratio: 4 / 5;
}

.aspire-split h2 {
	margin-block-end: 0;
}

.aspire-split h2 + p {
	margin-block-start: 12px;
}

/* ---------- Cards (programmes, news) ---------- */

.aspire-cards {
	gap: 24px;
}

.aspire-card {
	height: 100%;
	gap: 0;
	overflow: hidden;
	border: 1px solid var(--aspire-hairline);
	border-radius: var(--wp--custom--radius--card);
	transition: transform 300ms var(--aspire-ease), box-shadow 300ms var(--aspire-ease);
}

.aspire-card:hover {
	transform: translateY(-4px);
	box-shadow: var(--aspire-shadow-lift);
}

.aspire-card > * {
	margin: 0;
}

.aspire-card-media {
	width: 100%;
	margin: 0;
	overflow: hidden;
}

.aspire-card-media img {
	transition: transform 600ms var(--aspire-ease);
}

.aspire-card:hover .aspire-card-media img {
	transform: scale(1.05);
}

.aspire-card-body {
	flex: 1;
	gap: 12px;
	width: 100%;
	padding: 24px;
}

.aspire-card-body > * {
	margin: 0;
}

.aspire-card .wp-block-post-excerpt__excerpt {
	margin: 0;
}

.aspire-more {
	margin-top: auto !important;
	padding-top: 4px;
	color: var(--wp--preset--color--terracotta);
	font-weight: 500;
	text-decoration: none;
}

.aspire-more:hover {
	color: var(--wp--preset--color--ink);
	text-decoration: underline;
}

.aspire-tags {
	gap: 8px;
}

.aspire-tag {
	display: inline-block;
	margin: 0;
	padding: 2px 10px;
	border-radius: var(--wp--custom--radius--tag);
	background: var(--wp--preset--color--raised);
	color: var(--wp--preset--color--ink);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 500;
}

.aspire-tag.is-quiet {
	background: transparent;
	box-shadow: inset 0 0 0 1px rgba(42, 30, 23, 0.16);
	color: var(--wp--preset--color--secondary);
}

.aspire-page-hero .aspire-tag {
	background: var(--wp--preset--color--white);
}

.aspire-tag:empty {
	display: none;
}

.aspire-programs .wp-block-query + .wp-block-buttons {
	margin-block-start: 40px;
}

/* ---------- Testimonials ---------- */

.aspire-quotes[data-carousel] {
	display: flex;
	gap: 24px;
	margin: 0;
	padding: 8px 0 16px;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
}

.aspire-quotes[data-carousel] > li {
	box-sizing: border-box;
	flex: 0 0 calc((100% - 24px) / 2);
	margin: 0;
	padding: 36px 32px 32px;
	border-radius: var(--wp--custom--radius--panel);
	background: var(--wp--preset--color--white);
	box-shadow: var(--aspire-shadow);
	list-style: none;
	scroll-snap-align: start;
}

.aspire-quotes > li::before {
	content: "";
	display: block;
	width: 32px;
	height: 32px;
	margin-bottom: 16px;
	background: var(--wp--preset--color--primary);
	-webkit-mask: var(--aspire-i-quote) center / contain no-repeat;
	mask: var(--aspire-i-quote) center / contain no-repeat;
}

.aspire-quote {
	color: var(--wp--preset--color--ink);
	font-size: var(--wp--preset--font-size--large);
	line-height: 1.55;
}

.aspire-quote > * {
	margin-block: 0;
}

.aspire-quote-by {
	margin-block-start: 20px;
	color: var(--wp--preset--color--secondary);
	font-weight: 500;
}

.aspire-carousel-nav {
	display: none;
	justify-content: center;
	gap: 8px;
}

.is-carousel-ready .aspire-carousel-nav {
	display: flex;
}

.aspire-carousel-nav button {
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	padding: 0;
	border: 1px solid var(--aspire-hairline);
	border-radius: 50%;
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--ink);
	cursor: pointer;
}

.aspire-carousel-nav button:hover {
	border-color: var(--wp--preset--color--primary);
	background: var(--wp--preset--color--primary);
}

@media (max-width: 781px) {
	.aspire-quotes[data-carousel] > li {
		flex-basis: 100%;
	}
}

/* ---------- Free trial band ---------- */

.aspire-section.aspire-cta-band {
	padding-top: 96px;
	padding-bottom: 96px;
}

@media (max-width: 781px) {
	.aspire-section.aspire-cta-band {
		padding-top: 72px;
		padding-bottom: 72px;
	}
}

.aspire-cta-text > * {
	margin-block: 0;
}

.aspire-cta-text > * + * {
	margin-block-start: 16px;
}

.aspire-cta-text > .wp-block-buttons {
	margin-block-start: 32px;
}

.aspire-cta-steps {
	display: grid;
	gap: 12px;
	margin: 0;
	padding: 0;
	list-style: none;
	counter-reset: aspire-cta;
}

.aspire-cta-steps li {
	position: relative;
	padding: 18px 20px 18px 72px;
	border-radius: var(--wp--custom--radius--card);
	background: rgba(255, 255, 255, 0.6);
	counter-increment: aspire-cta;
}

.aspire-cta-steps li::before {
	content: counter(aspire-cta);
	position: absolute;
	top: 50%;
	left: 20px;
	display: grid;
	place-items: center;
	width: 36px;
	height: 36px;
	margin-top: -18px;
	border-radius: 50%;
	background: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--page);
	font-weight: 600;
}

.aspire-cta-steps strong {
	color: var(--wp--preset--color--ink);
	font-weight: 600;
}

/* ---------- FAQ ---------- */

.aspire-faq-intro > * {
	margin-block: 0;
}

.aspire-faq-intro > * + * {
	margin-block-start: 16px;
}

.aspire-faq-intro > .wp-block-buttons {
	margin-block-start: 24px;
}

@media (min-width: 782px) {
	.aspire-faq-intro {
		position: sticky;
		top: var(--aspire-sticky-top);
		align-self: flex-start;
	}
}

.aspire-faq .wp-block-details {
	margin: 0;
	border-bottom: 1px solid var(--aspire-hairline);
}

.aspire-faq .wp-block-details:first-child {
	border-top: 1px solid var(--aspire-hairline);
}

.aspire-faq summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 22px 0;
	color: var(--wp--preset--color--ink);
	font-size: 1.0625rem;
	font-weight: 500;
	list-style: none;
	cursor: pointer;
}

.aspire-faq summary::-webkit-details-marker {
	display: none;
}

.aspire-faq summary::after {
	content: "";
	flex: none;
	width: 32px;
	height: 32px;
	border-radius: 50%;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232A1E17' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E") center / 16px no-repeat, var(--wp--preset--color--raised);
	transition: transform 300ms var(--aspire-ease), background-color 300ms var(--aspire-ease);
}

.aspire-faq summary:hover::after {
	background-color: #f7e2cc;
}

.aspire-faq details[open] summary::after {
	background-color: var(--wp--preset--color--primary);
	transform: rotate(45deg);
}

.aspire-faq details::details-content {
	block-size: 0;
	overflow: clip;
	transition: block-size 350ms var(--aspire-ease), content-visibility 350ms allow-discrete;
}

.aspire-faq details[open]::details-content {
	block-size: auto;
}

.aspire-faq .wp-block-details p {
	max-width: 40rem;
	margin-block: 0 22px;
}

/* ---------- Inner pages: banner, body, sidebars ---------- */

.aspire-page-hero {
	position: relative;
	isolation: isolate;
	padding-top: 64px;
	padding-bottom: 72px;
	overflow: hidden;
}

.aspire-page-hero::before {
	content: "";
	position: absolute;
	z-index: -1;
	top: 32px;
	right: max(1rem, calc(50% - 600px));
	width: 200px;
	height: 140px;
	background-image: radial-gradient(circle, rgba(232, 130, 42, 0.45) 2px, transparent 2.5px);
	background-size: 20px 20px;
}

.aspire-page-hero::after {
	content: "";
	position: absolute;
	z-index: -1;
	right: max(10rem, calc(50% - 420px));
	bottom: -36px;
	width: 120px;
	height: 120px;
	border: 3px solid var(--wp--preset--color--primary);
	border-radius: 50%;
	opacity: 0.6;
}

.aspire-page-hero-inner > * {
	margin-block: 0;
}

.aspire-page-hero-inner > * + * {
	margin-block-start: 16px;
}

.aspire-page-hero h1 {
	max-width: 48rem;
	font-size: clamp(2.25rem, 1.6rem + 2.4vw, 3.25rem);
}

.aspire-page-hero-inner > .has-large-font-size {
	max-width: 40rem;
}

.aspire-page-hero-inner > * {
	animation: aspire-rise 600ms var(--aspire-ease) both;
}

.aspire-page-hero-inner > :nth-child(2) { animation-delay: 70ms; }
.aspire-page-hero-inner > :nth-child(3) { animation-delay: 140ms; }
.aspire-page-hero-inner > :nth-child(4) { animation-delay: 210ms; }

.aspire-breadcrumb {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	color: var(--wp--preset--color--secondary);
}

.aspire-breadcrumb a {
	color: var(--wp--preset--color--secondary);
	font-weight: 400;
	text-decoration: none;
}

.aspire-breadcrumb a:hover {
	color: var(--wp--preset--color--terracotta);
	text-decoration: underline;
}

.aspire-breadcrumb [aria-current] {
	color: var(--wp--preset--color--ink);
	font-weight: 500;
}

.aspire-breadcrumb-sep {
	margin-inline: 10px;
	opacity: 0.5;
}

.aspire-page-meta {
	color: var(--wp--preset--color--secondary);
}

.aspire-page-body {
	padding-top: 72px;
	padding-bottom: 112px;
}

.aspire-page-body:has(> .aspire-section:first-child) {
	padding-top: 0;
}

.aspire-page-body:has(> .aspire-section:last-child) {
	padding-bottom: 0;
}

.aspire-page-body > p + .aspire-section {
	padding-top: 48px;
}

/* An intro line above a wide section lines up with it. */
.aspire-page-body > p:first-child:has(+ .aspire-section) {
	max-width: var(--wp--style--global--wide-size);
	font-size: var(--wp--preset--font-size--large);
}

.aspire-page-body > .aspire-photo {
	margin-block-end: 40px;
}

.aspire-booking-form {
	padding: 40px;
	border: 1px solid var(--aspire-hairline);
	border-radius: var(--wp--custom--radius--panel);
	background: var(--wp--preset--color--white);
	box-shadow: var(--aspire-shadow);
}

.aspire-booking-form .wp-block-post-content > p:first-child {
	margin-top: 0;
}

.aspire-next-steps > * {
	margin-block: 0;
}

.aspire-next-steps > * + * {
	margin-block-start: 24px;
}

.aspire-next-steps .aspire-cta-steps li {
	background: var(--wp--preset--color--white);
	box-shadow: var(--aspire-shadow);
}

.aspire-help,
.aspire-aside-card {
	padding: 24px;
	border-radius: var(--wp--custom--radius--card);
}

.aspire-help > *,
.aspire-aside-card > * {
	margin-block: 0;
}

.aspire-help > * + * {
	margin-block-start: 8px;
}

.aspire-help-details p {
	margin: 0 0 4px;
}

.aspire-aside-card {
	padding: 32px;
	border: 1px solid var(--aspire-hairline);
	box-shadow: var(--aspire-shadow);
}

.aspire-aside-card > * + * {
	margin-block-start: 16px;
}

.aspire-aside-card .wp-block-buttons {
	margin-block-start: 24px;
	gap: 12px;
}

@media (min-width: 782px) {
	.aspire-next-steps,
	.aspire-aside {
		position: sticky;
		top: var(--aspire-sticky-top);
		align-self: flex-start;
	}
}

@media (max-width: 781px) {
	.aspire-page-hero {
		padding-top: 40px;
		padding-bottom: 48px;
	}

	.aspire-page-body {
		padding-top: 48px;
		padding-bottom: 72px;
	}

	.aspire-booking-form {
		padding: 24px 20px;
	}
}

/* ---------- Contact cards ---------- */

.aspire-contact-cards {
	gap: 20px;
}

/* Fill the row: no empty tracks at the end. */
.aspire-highlights,
.aspire-contact-cards {
	grid-template-columns: repeat(auto-fit, minmax(min(14rem, 100%), 1fr)) !important;
}

.aspire-contact-card {
	padding: 92px 28px 28px;
	border: 1px solid var(--aspire-hairline);
	border-radius: var(--wp--custom--radius--card);
}

.aspire-contact-card::before {
	top: 28px;
	left: 28px;
}

.aspire-contact-card::after {
	top: 40px;
	left: 40px;
}

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

.aspire-contact-card h2 {
	margin-bottom: 8px;
	color: var(--wp--preset--color--ink);
}

.aspire-contact-card address p {
	margin: 0;
}

.aspire-map iframe {
	display: block;
	width: 100%;
	height: 420px;
	border-radius: var(--wp--custom--radius--panel);
}

/* ---------- Footer ---------- */

.aspire-footer {
	position: relative;
	padding-top: 88px;
	padding-bottom: 32px;
}

.aspire-footer-cols {
	gap: 48px;
}

.aspire-footer-brand .wp-block-site-logo img {
	width: auto;
	height: 34px;
}

.aspire-footer-brand > p {
	max-width: 22rem;
	margin-block: 20px 24px;
}

.aspire-footer h2.aspire-footer-heading {
	margin: 0 0 16px;
	color: var(--wp--preset--color--ink);
	font-weight: 600;
	letter-spacing: 0;
}

.aspire-footer-list {
	display: grid;
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.aspire-footer-list a {
	color: var(--wp--preset--color--secondary);
	font-weight: 400;
	text-decoration: none;
}

.aspire-footer-list a:hover {
	color: var(--wp--preset--color--ink);
	text-decoration: underline;
}

.aspire-footer-list > li {
	margin: 0;
}

.aspire-footer-list .wp-block-post-title {
	margin: 0;
	font-weight: 400;
}

.aspire-footer-more {
	margin-block: 10px 0;
}

.aspire-footer-more a {
	color: var(--wp--preset--color--terracotta);
}

address.aspire-business-details {
	font-style: normal;
}

address.aspire-business-details p {
	margin: 0 0 4px;
}

.aspire-footer-details p {
	margin-bottom: 12px;
}

.aspire-footer-details [data-field="facebook"],
.aspire-footer-details [data-field="instagram"] {
	display: inline-flex;
	margin: 4px 8px 0 0;
}

/* Social links show as round icons; the link text stays for screen readers. */
.aspire-footer-details [data-field="facebook"] a,
.aspire-footer-details [data-field="instagram"] a {
	display: grid;
	place-items: center;
	width: 40px;
	height: 40px;
	border-radius: 50%;
	background: var(--wp--preset--color--white);
	box-shadow: inset 0 0 0 1px var(--aspire-hairline);
	color: var(--wp--preset--color--ink);
	font-size: 0;
	transition: background-color 150ms var(--aspire-ease), transform 150ms var(--aspire-ease);
}

.aspire-footer-details [data-field="facebook"] a:hover,
.aspire-footer-details [data-field="instagram"] a:hover {
	background: var(--wp--preset--color--primary);
	transform: translateY(-2px);
}

.aspire-footer-details [data-field="facebook"] a::before,
.aspire-footer-details [data-field="instagram"] a::before {
	content: "";
	width: 18px;
	height: 18px;
	background: currentColor;
	-webkit-mask: var(--icon) center / contain no-repeat;
	mask: var(--icon) center / contain no-repeat;
}

.aspire-footer-details [data-field="facebook"] { --icon: var(--aspire-i-facebook); }
.aspire-footer-details [data-field="instagram"] { --icon: var(--aspire-i-instagram); }

.aspire-footer-bottom {
	margin-top: 56px !important;
	padding-top: 24px;
	padding-right: 72px; /* clear of the back-to-top button */
	border-top: 1px solid var(--aspire-hairline);
}

.aspire-footer-bottom p {
	margin: 0;
}

/* ---------- Back to top ---------- */

.aspire-top {
	position: fixed;
	z-index: 90;
	right: 24px;
	bottom: 24px;
	display: grid;
	place-items: center;
	width: 48px;
	height: 48px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: var(--wp--preset--color--ink);
	color: var(--wp--preset--color--page);
	box-shadow: var(--aspire-shadow-lift);
	cursor: pointer;
	opacity: 0;
	visibility: hidden;
	transform: translateY(12px);
	transition: opacity 250ms var(--aspire-ease), transform 250ms var(--aspire-ease), background-color 150ms var(--aspire-ease), visibility 0s 250ms;
}

.aspire-top.is-shown {
	opacity: 1;
	visibility: visible;
	transform: none;
	transition: opacity 250ms var(--aspire-ease), transform 250ms var(--aspire-ease), background-color 150ms var(--aspire-ease), visibility 0s;
}

.aspire-top:hover {
	background: var(--wp--preset--color--terracotta);
}

.aspire-top svg {
	width: 20px;
	height: 20px;
}

/* ---------- Spark's mascots (Lottie animations played by effects.js) ---------- */

/*
 * Each animation's bottom edge is the line the characters lean on, so each box sits with its
 * bottom on an edge: the top of the hero photo, the top of the footer, a line under the monkey
 * in the booking thank-you message.
 */
.aspire-mascot,
.aspire-mascots {
	display: block;
	pointer-events: none;
}

/* Box shapes match each animation, so the bottom edge stays on the lean line. */
.aspire-mascot--monkey {
	aspect-ratio: 381 / 387;
}

.aspire-mascot--mouse {
	aspect-ratio: 484 / 348;
}

.aspire-mascot--rabbit {
	aspect-ratio: 565 / 351;
}

.aspire-mascot svg,
.aspire-mascots svg {
	display: block;
}

.aspire-mascot--peek {
	position: absolute;
	z-index: 0;
	right: 8%;
	bottom: 100%;
	width: 112px;
}

@media (max-width: 781px) {
	.aspire-mascot--peek {
		width: 92px;
	}
}

/* The mouse leans on the main photo in "Why families choose us". */
.aspire-mosaic-main {
	position: relative;
}

.aspire-mascot--photos {
	position: absolute;
	z-index: 1;
	bottom: 100%;
	left: 6%;
	width: 170px;
}

/* The rabbit leans on the parent review cards (the list has 8px of padding above them). */
.aspire-testimonials .wp-block-query {
	position: relative;
}

.aspire-mascot--reviews {
	position: absolute;
	z-index: 1;
	right: 8%;
	bottom: calc(100% - 8px);
	width: 230px;
}

@media (max-width: 781px) {
	.aspire-mascot--photos {
		width: 130px;
	}

	.aspire-why .aspire-mosaic {
		margin-top: 64px;
	}

	.aspire-mascot--reviews {
		width: 170px;
	}

	.aspire-testimonials .wp-block-query:has(.aspire-mascot--reviews) {
		margin-block-start: 112px !important;
	}
}

.aspire-mascot--cheer {
	float: left;
	width: 96px;
	margin: -16px 16px 8px 0;
	border-bottom: 3px solid var(--wp--preset--color--primary);
}

.ff-message-success {
	display: flow-root;
}

/* Rabbit, monkey and mouse on the top edge of the footer. */
:root {
	--aspire-mascots-h: clamp(120px, 17vw, 220px);
}

.wp-site-blocks > footer.wp-block-template-part {
	margin-block-start: clamp(56px, 9vw, 120px);
}

.aspire-mascots {
	position: absolute;
	z-index: 1;
	bottom: 100%;
	left: 50%;
	height: var(--aspire-mascots-h);
	aspect-ratio: 1257 / 389;
	transform: translateX(-50%);
}

/* ---------- Sparks from buttons ---------- */

.aspire-spark {
	position: fixed;
	z-index: 9999;
	width: 5px;
	height: 14px;
	margin: -7px 0 0 -2.5px;
	border-radius: 3px;
	background: var(--wp--preset--color--primary);
	pointer-events: none;
	transform: rotate(var(--a)) translateY(0);
	animation: aspire-spark 720ms var(--aspire-ease) forwards;
}

.aspire-spark:nth-child(3n) {
	background: var(--aspire-sun);
}

.aspire-spark:nth-child(3n + 1) {
	background: var(--wp--preset--color--terracotta);
}

@keyframes aspire-spark {
	0% { opacity: 1; transform: rotate(var(--a)) translateY(-6px) scaleY(1); }
	60% { opacity: 1; }
	100% { opacity: 0; transform: rotate(var(--a)) translateY(calc(-1 * var(--d))) scaleY(0.6); }
}

/* ---------- Sections and lists rise into view (classes added by effects.js) ---------- */

.aspire-reveal > *,
.aspire-reveal .aspire-stagger > * {
	opacity: 0;
	transform: translateY(16px);
	transition: opacity 600ms var(--aspire-ease), transform 600ms var(--aspire-ease);
}

.aspire-reveal .aspire-stagger > * {
	transition-delay: calc(var(--i, 0) * 90ms + 150ms);
}

.aspire-reveal.is-in > *,
.aspire-reveal.is-in .aspire-stagger > * {
	opacity: 1;
	transform: none;
}

.aspire-reveal.is-in > :nth-child(2) {
	transition-delay: 60ms;
}

.aspire-reveal.is-in > :nth-child(3) {
	transition-delay: 120ms;
}

/* ---------- Free trial form (Fluent Forms) uses the theme's controls ---------- */

.fluentform .ff-btn-submit {
	padding: 12px 20px !important;
	border: 0 !important;
	border-radius: var(--wp--custom--radius--control) !important;
	background-color: var(--wp--preset--color--primary) !important;
	color: var(--wp--preset--color--ink) !important;
	font-family: inherit !important;
	font-size: 1rem !important;
	font-weight: 500 !important;
}

.fluentform .ff-btn-submit:hover {
	background-color: var(--wp--preset--color--primary-dark) !important;
}

.fluentform .ff-el-form-control {
	border-color: rgba(42, 30, 23, 0.16);
	border-radius: var(--wp--custom--radius--control);
	font-family: inherit;
}

.fluentform .ff-el-form-control:focus {
	border-color: var(--wp--preset--color--primary-dark);
	box-shadow: 0 0 0 3px rgba(255, 155, 57, 0.25);
}

/* ---------- Motion off, print ---------- */

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation: none !important;
		transition: none !important;
		scroll-behavior: auto !important;
	}
}

@media print {
	header.wp-block-template-part {
		position: static;
	}

	.aspire-reveal > *,
	.aspire-reveal .aspire-stagger > * {
		opacity: 1 !important;
		transform: none !important;
	}

	.aspire-top,
	.aspire-mascot,
	.aspire-mascots {
		display: none;
	}
}
