/*──────────────────────────────────────────────────────────────────────────
	PAGE PATTERNS
──────────────────────────────────────────────────────────────────────────*/

/*--------------------------------------------------------------------------
	Homepage
--------------------------------------------------------------------------*/

.wpcore-home-hero .wp-block-heading {
	margin-bottom: 1.75rem;
}

.wpcore-home-hero .wp-block-buttons {
	margin-top: 2.5rem;
}

.wpcore-home-services {
	padding-block: var(--wp--preset--spacing--70) !important;
}

.wpcore-home-services > .wp-block-heading,
.wpcore-home-services > p {
	max-width: 44rem;
	margin-inline: auto;
}

.wpcore-home-services .wp-block-columns {
	margin-top: 3.5rem;
	gap: clamp(2.5rem, 5vw, 4.5rem);
}

.wpcore-home-introduction {
	margin-block: var(--wp--preset--spacing--70);
}

.wpcore-home-cta {
	padding-block: var(--wp--preset--spacing--70) !important;
}

.wpcore-home-cta > p {
	max-width: 40rem;
	margin-inline: auto;
}

.wpcore-home-cta .wp-block-buttons {
	margin-top: 2.5rem;
}

/*--------------------------------------------------------------------------
	Content Page
--------------------------------------------------------------------------*/

.wpcore-content-hero > * {
	max-width: 48rem;
}

.wpcore-content-main {
	padding-block: var(--wp--preset--spacing--70) !important;
}

.wpcore-content-main > :where(h2, p, ul, ol, blockquote) {
	max-width: 48rem;
}

.wpcore-content-cta {
	margin-block: var(--wp--preset--spacing--70);
}

.wpcore-content-cta > p {
	max-width: 40rem;
	margin-inline: auto;
}

.wpcore-content-cta .wp-block-buttons {
	margin-top: 2.5rem;
}

/*--------------------------------------------------------------------------
	Full-width Title Image
--------------------------------------------------------------------------*/

.wpcore-full-width-image {
	width: 100%;
	max-width: none;
	margin-top: 0;
	margin-bottom: 0;
}

.wpcore-full-width-image img,
.wpcore-full-width-image .components-placeholder {
	display: block;
	width: 100%;
	min-height: 22rem;
}

.wpcore-full-width-image img {
	height: clamp(22rem, 42vw, 38rem);
	object-fit: cover;
}

/*--------------------------------------------------------------------------
    Services Page
--------------------------------------------------------------------------*/

.wpcore-services-hero > * {
max-width: 48rem;
}

.wpcore-services-grid {
padding-block: var(--wp--preset--spacing--70) !important;
}

.wpcore-services-grid .wp-block-columns {
align-items: stretch;
gap: clamp(2rem, 4vw, 3.5rem);
}

.wpcore-services-grid .wp-block-column {
display: flex;
flex-direction: column;
}

.wpcore-services-grid .wp-block-column > .wp-block-heading {
	font-size: clamp(1.5rem, 2vw, 2rem);
}

.wpcore-services-process {
padding-block: var(--wp--preset--spacing--70) !important;
}

.wpcore-services-process > .wp-block-columns {
margin-top: 3.5rem;
gap: clamp(2.5rem, 5vw, 4.5rem);
}

.wpcore-services-process .wp-block-column > p {
max-width: 20rem;
margin-inline: auto;
}

.wpcore-services-cta {
padding-block: var(--wp--preset--spacing--70) !important;
}

.wpcore-services-cta > p {
max-width: 42rem;
margin-inline: auto;
}

.wpcore-services-cta .wp-block-buttons {
margin-top: 2.5rem;
}

/*--------------------------------------------------------------------------
    About Page
--------------------------------------------------------------------------*/

.wpcore-about-hero > *,
.wpcore-about-profile > .wp-block-columns {
	width: 100%;
	max-width: 56rem;
	margin-inline: auto;
}

.wpcore-about-principles .wp-block-column > .wp-block-heading {
	font-size: clamp(1.35rem, 2vw, 1.75rem);
}

.wpcore-about-profile {
padding-block: var(--wp--preset--spacing--70) !important;
}

.wpcore-about-profile > .wp-block-columns {
gap: clamp(3rem, 6vw, 5rem);
}

.wpcore-about-profile .wp-block-column:first-child > p {
max-width: 42rem;
}

.wpcore-about-principles {
padding-block: var(--wp--preset--spacing--70) !important;
}

.wpcore-about-principles > .wp-block-columns {
margin-top: 3.5rem;
gap: clamp(2.5rem, 5vw, 4.5rem);
}

.wpcore-about-principles .wp-block-column > p {
max-width: 20rem;
margin-inline: auto;
}

.wpcore-about-cta {
padding-block: var(--wp--preset--spacing--70) !important;
}

.wpcore-about-cta > p {
max-width: 40rem;
margin-inline: auto;
}

.wpcore-about-cta .wp-block-buttons {
margin-top: 2.5rem;
}

/*--------------------------------------------------------------------------
    Contact Page
--------------------------------------------------------------------------*/

.wpcore-contact-hero > *,
.wpcore-contact-layout > .wp-block-columns {
	width: 100%;
	max-width: 56rem;
	margin-inline: auto;
}

.wpcore-contact-layout {
padding-block: var(--wp--preset--spacing--70) !important;
}

.wpcore-contact-layout > .wp-block-columns {
align-items: flex-start;
gap: clamp(3rem, 6vw, 5rem);
}

.wpcore-contact-details {
padding: var(--wp--preset--spacing--40);
background: var(--wp--preset--color--surface);
}

.wpcore-contact-details > :first-child,
.wpcore-contact-form > :first-child {
margin-top: 0;
}

.wpcore-contact-details > .wp-block-heading {
	font-size: clamp(1.5rem, 2vw, 1.875rem);
}

.wpcore-contact-details p {
margin-bottom: 1.5rem;
}

.wpcore-contact-details p:last-child {
margin-bottom: 0;
}

.wpcore-contact-form > p {
max-width: 42rem;
}

.wpcore-contact-form .wp-block-shortcode {
margin-top: 2rem;
}

/*--------------------------------------------------------------------------
	Classic Cards
--------------------------------------------------------------------------*/

.wpcore-card-grid .wp-block-columns {
	align-items: stretch;
	gap: clamp(1.5rem, 3vw, 2.5rem);
}

.wpcore-card-grid .wp-block-column {
	display: flex;
}

.wpcore-card {
	display: flex;
	flex-direction: column;
	width: 100%;
	height: 100%;
	overflow: hidden;
	border: 1px solid var(--wpcore-border-color);
	border-radius: 0.25rem;
	background: var(--wp--preset--color--background);
	transition:
		transform 180ms ease,
		box-shadow 180ms ease;
}

.wpcore-card:hover,
.wpcore-card:focus-within {
	transform: translateY(-2px);
	box-shadow: 0 0.75rem 2rem rgb(0 0 0 / 10%);
}

.wpcore-card__media {
	width: 100%;
	margin: 0;
	overflow: hidden;
	aspect-ratio: 8 / 5;
}

.wpcore-card__media img,
.wpcore-card__media .components-placeholder {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.wpcore-card__content {
	display: flex;
	flex: 1;
	flex-direction: column;
	padding: clamp(1.25rem, 3vw, 2rem);
}

.wpcore-card__content > :first-child {
	margin-top: 0;
}

.wpcore-card__content > :last-child {
	margin-bottom: 0;
}

.wpcore-card__title {
	font-size: clamp(1.35rem, 2vw, 1.75rem);
}

/*--------------------------------------------------------------------------
	Overlay Cards
--------------------------------------------------------------------------*/

.wpcore-card-overlay-grid .wp-block-columns {
	align-items: stretch;
	gap: clamp(1.5rem, 3vw, 2.5rem);
}

.wpcore-card-overlay-grid .wp-block-column {
	display: flex;
}

.wpcore-card-overlay {
	position: relative;
	display: grid;
	width: 100%;
	min-height: 18rem;
	overflow: hidden;
	aspect-ratio: 4 / 3;
	border-radius: 0.25rem;
	background: #000000;
	isolation: isolate;
}

.wpcore-card-overlay::after {
	position: absolute;
	z-index: 1;
	inset: 0;
	background: linear-gradient(
		to top,
		rgb(0 0 0 / 78%) 0%,
		rgb(0 0 0 / 48%) 32%,
		rgb(0 0 0 / 12%) 62%,
		transparent 82%
	);
	content: "";
	transition: opacity 180ms ease;
}

.wpcore-card-overlay__media {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	margin: 0;
}

.wpcore-card-overlay__media img,
.wpcore-card-overlay__media .components-placeholder {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 240ms ease;
}

.wpcore-card-overlay__content {
	position: relative;
	z-index: 2;
	align-self: end;
	width: 100%;
	max-width: 26rem;
	padding: clamp(1.25rem, 3vw, 1.75rem);
	overflow: hidden;
	color: #ffffff;
	text-shadow: 0 1px 2px rgb(0 0 0 / 35%);
}

.wpcore-card-overlay__content > :first-child {
	margin-top: 0;
}

.wpcore-card-overlay__content > :last-child {
	margin-bottom: 0;
}

.wpcore-card-overlay__title {
	margin-bottom: 0;
	color: inherit;
	font-size: clamp(1.25rem, 2vw, 1.625rem);
}

.wpcore-card-overlay__content p {
	margin-top: 0.75rem;
	font-size: 0.95rem;
	line-height: 1.5;
}

@media (hover: hover) and (pointer: fine) {
	.wpcore-card-overlay__content p {
		max-height: 0;
		margin-top: 0;
		overflow: hidden;
		opacity: 0;
		transform: translateY(1rem);
		transition:
			max-height 240ms ease,
			margin-top 240ms ease,
			opacity 180ms ease,
			transform 240ms ease;
	}

	.wpcore-card-overlay:hover .wpcore-card-overlay__content p,
	.wpcore-card-overlay:focus-within .wpcore-card-overlay__content p {
		max-height: 8rem;
		margin-top: 0.75rem;
		opacity: 1;
		transform: translateY(0);
	}
}

.wpcore-card-overlay:hover::after,
.wpcore-card-overlay:focus-within::after {
	opacity: 0.9;
}

.wpcore-card-overlay:hover .wpcore-card-overlay__media img,
.wpcore-card-overlay:focus-within .wpcore-card-overlay__media img {
	transform: scale(1.025);
}

/*--------------------------------------------------------------------------
	Page Start & Full-width Banner
--------------------------------------------------------------------------*/

.page .site-main {
	padding-top: 0;
}

/* Remove the automatic top gap when the first content block is full width. */
.page .entry-content > .alignfull:first-child {
	margin-top: 0;
}

.page .entry-content > .wpcore-full-width-image:first-child {
	margin-bottom: 0;
}
