/* Global
---------------------------------------------------------------------------- */

.section {
	clear: both;
	position: relative;
}

header.site-header {
	left: 0;
	position: absolute;
	top: 0;
	width: 100%;
	z-index: 9999;
}


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

.hero.wp-block-group.alignfull > div,
.hero *.alignfull > div {
	max-width: 100%;
}

.hero {
	--hero-header-offset: 0px;
	--hero-copy-space-bottom: clamp(260px, 26vw, 420px);
	
	--hero-bg-parallax-y: 0px;
	--hero-fg-parallax-y: 0px;
	--hero-bg-scale: 1.04;
	--hero-fg-scale: 1.02;

	position: relative;
	overflow: hidden;
}

/* Optional header fade 
.hero::before {
	background: linear-gradient(
		to bottom,
		rgba(255,255,255,1) 0%,
		rgba(255,255,255,0) 100%
	);
	content: '';
	display: block;
	height: var(--hero-header-offset);
	left: 0;
	pointer-events: none;
	position: absolute;
	top: 0;
	width: 100%;
	z-index: 20;
}*/

/* Remove spacing quirks */
.hero,
.hero .wp-block-cover,
.hero .wp-block-image,
.hero figure {
	margin-block: 0;
}

.hero .wp-block-cover.background {
	position: relative;
	min-height: 0;
	padding: 0;
	overflow: hidden;
}

/* Background image fills whatever height the content creates */
.hero .wp-block-cover.background > .wp-block-cover__image-background {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: 35% 100%;
	//transform: translate3d(0, var(--hero-bg-parallax-y), 0) scale(var(--hero-bg-scale));
	transform-origin: center bottom;
	will-change: transform;
}

/* Keep Gutenberg overlay harmless */
.hero .wp-block-cover__background {
	pointer-events: none;
}

/* The inner container now controls the hero height */
.hero .wp-block-cover.background > .wp-block-cover__inner-container {
	box-sizing: border-box;
	display: grid;
	grid-template-columns:
		minmax(5vw, 1fr)
		minmax(0, 1.15fr)
		minmax(320px, 650px)
		minmax(5vw, 1fr);
	position: relative;
	width: 100%;
	z-index: 5;
}

/* Message creates the vertical space */
.hero .message {
	grid-column: 3 / 4;
	grid-row: 1;
	align-self: start;
	position: relative;
	z-index: 6;
	width: 100%;

	padding-top: calc(var(--hero-header-offset) + clamp(20px, 2vw, 32px));
	padding-bottom: var(--hero-copy-space-bottom);
}

.hero .message .gb-container-content {
	margin-left: auto;
	margin-right: 0;
}

.hero .message h1,
.hero .message p {
	text-shadow:
		0 1px 2px rgba(255, 255, 255, 0.45),
		0 6px 18px rgba(255, 255, 255, 0.25);
}

/* Foreground image becomes a bottom-aligned visual layer */
.hero figure.foreground {
	grid-column: 1 / -1;
	grid-row: 1;
	align-self: end;
	justify-self: stretch;

	position: absolute;
	inset-inline: 0;
	bottom: 0;
	z-index: 4;

	width: 100%;
	pointer-events: none;
}

/* Foreground image keeps its real aspect ratio and aligns to the bottom */
.hero figure.foreground img {
	display: block;
	width: 100%;
	height: auto;
	object-fit: contain;
	object-position: 35% 100%;
	transform: translate3d(0, var(--hero-fg-parallax-y), 0) scale(var(--hero-fg-scale));
	transform-origin: center bottom;
	will-change: transform;
}

@media (min-width: 782px) {
	
	.hero .wp-block-cover.background > .wp-block-cover__inner-container {
		grid-template-columns:
			minmax(0, 1fr)
			minmax(30vw, 2fr)
			minmax(340px, 650px)
			minmax(5vw, 1fr)
	}
	
	.hero .message {
		grid-column: 3 / 4;
		align-self: start;
	}
	
	.hero .message .gb-container-content {
		width: 100%;
		max-width: 100%;
	}
	
	.hero figure.foreground {
		grid-column: 1 / -1;
		grid-row: 1;

		position: absolute;
		inset: 0;
		z-index: 4;

		width: 100%;
		height: 100%;
		min-height: 100%;

		pointer-events: none;

		/* Allow the image/art to extend beyond this layer if needed */
		overflow: visible;
	}

	.hero figure.foreground img {
		display: block;
	
		width: 100%;
		height: 100%;
	
		object-fit: cover;
		object-position: 50% 100%;
	
		transform: translate3d(0, var(--hero-fg-parallax-y), 0) scale(var(--hero-fg-scale));
		transform-origin: center bottom;
		will-change: transform;
	}
}

/*@media (max-width: 959px) {
	.hero {
		text-align: center;
	}
	
	.hero .wp-block-buttons.is-layout-flex {
		justify-content: center;
	}
}*/

/* Mobile: content first, subject image below as normal flow */
@media (max-width: 781px) {
	.hero {
		--hero-copy-space-bottom: 0px;
	}
	
	.hero .wp-block-cover.background {
		background-color: #fff;
	}
	
	.hero .wp-block-cover.background > .wp-block-cover__image-background {
		position: absolute;
		inset: auto auto 0 50%;
		top: auto;
		bottom: 0;
		left: 50%;
	
		width: 180vw;
		max-width: none;
		height: auto;
	
		object-fit: contain;
		object-position: center bottom;
	
		transform: translate3d(-50%, var(--hero-bg-parallax-y), 0) scale(var(--hero-bg-scale));
		transform-origin: center bottom;
	}

	.hero .wp-block-cover.background > .wp-block-cover__inner-container {
		display: flex;
		flex-direction: column;
	}

	.hero .message {
		order: 1;
		width: min(90%, 650px);
		margin-inline: auto;

		padding-top: calc(var(--hero-header-offset) + 20px);
		padding-bottom: clamp(12px, 4vw, 32px);
	}

	.hero .message .gb-container-content {
		margin-left: 0;
		margin-right: auto;
	}

	.hero figure.foreground {
		order: 2;

		position: relative;
		inset: auto;
		bottom: auto;

		width: 100%;
		z-index: 4;

		margin-top: clamp(-80px, -10vw, -40px);
		overflow: hidden;
		pointer-events: none;
	}

	.hero figure.foreground img {
		display: block;
		width: 165vw;
		max-width: none;
		height: auto;
		margin-left: -5vw;
		object-fit: contain;
		object-position: center bottom;
	
		transform: translate3d(0, var(--hero-fg-parallax-y), 0) scale(var(--hero-fg-scale));
		transform-origin: center bottom;
		will-change: transform;
	}
}

@media (prefers-reduced-motion: reduce) {
	.hero .wp-block-cover.background > .wp-block-cover__image-background,
	.hero figure.foreground img {
		will-change: auto;
	}

	.hero .wp-block-cover.background > .wp-block-cover__image-background {
		transform: scale(1) !important;
	}

	@media (max-width: 781px) {
		.hero .wp-block-cover.background > .wp-block-cover__image-background {
			transform: translateX(-50%) !important;
		}
	}

	.hero figure.foreground img {
		transform: none !important;
	}
}


/* CTA
---------------------------------------------------------------------------- */

.cta {
	border-radius: 5px;
	box-shadow: 0 0 20px rgba(0,0,0,0.15);
	margin: -45px -4% 0;
	padding: 40px 4%;
	position: relative;
	width: 108%;
	z-index: 5;
}

@media only screen and (max-width: 600px) {
	.cta {
		margin-top: -15px;
		text-align: center;
	}
}

.cta .gb-layout-column-wrap {
	align-items: center;
	grid-row-gap: 1em;
}

.cta .wp-block-heading {
	margin-bottom: 0;
}

.cta p:last-child {
	margin: 0;
}


/* Mission
---------------------------------------------------------------------------- */

.site-container .mission .wp-block-quote {
	margin: 0;
	position: relative;
}

.site-container .mission .wp-block-quote::before {
	background: url(../../images/icon-quote.webp) no-repeat center;
	background-size: 52px 38px;
	content: '';
	display: block;
	height: 38px;
	pointer-events: none;
	position: absolute;
	right: calc(100% - 5px);
	top: -20px;
	width: 52px;
}

@media only screen and (max-width: 1023px) {
	
	.site-container .mission .wp-block-quote::before {
		left: 0;
		right: auto;
		top: 0;
		transform: translateY(calc(-100% - 10px));
	}
}

.site-container .mission .wp-block-quote p {
	font-family: unset;
	font-size: unset;
	font-style: unset;
	line-height: unset;
	margin: unset;
}

.mission .gb-layout-column-wrap {
	align-items: center;
	grid-gap: 2em 8%;
	grid-template-columns: minmax(50%, 1fr) minmax(auto, 400px);
}

.mission .gb-block-layout-column:nth-child(2) {
	align-self: start;
}

@media only screen and (max-width: 960px ) {
	
	.mission .wp-block-buttons>.wp-block-button {
		flex-grow: 1;
	}

	.mission .wp-block-buttons>.wp-block-button a {
		width: 100%;
	}
		
}


/* Reviews
---------------------------------------------------------------------------- */

.review .review-content {
	font-size: 24px;
	font-style: italic;
	line-height: 1.33;
}

.review .review-title {
	font-family: 'League Spartan', 'Source Sans 3', sans-serif;
	font-size: 18px;
	font-weight: 700;
	text-transform: uppercase;
}

.reviews div.bx-wrapper .bx-prev::before,
.reviews div.bx-wrapper .bx-next::before {
	//color: #fff;
}

.reviews div.bx-wrapper .bx-pager.bx-default-pager a,
.reviews div.bx-wrapper .bx-pager.bx-default-pager a:hover,
.reviews div.bx-wrapper .bx-pager.bx-default-pager a:focus,
.reviews div.bx-wrapper .bx-pager.bx-default-pager a.active {
	background-color: #fff
}


/* Programs Slider
---------------------------------------------------------------------------- */

.programs.bxslider {
	z-index: 1;
}

.programs.bxslider::before {
	background-color: #21201d;
	border-radius: 6px;
	content: '';
	display: block;
	height: 225px;
	left: auto;
	margin-right: -4vw;
	opacity: .05;
	pointer-events: none;
	position: absolute;
	right: 100%;
	top: -20px;
	width: 200px;
	z-index: 2;
}

@media only screen and (min-width: 1590px) {
	.programs.bxslider::before {
		left: 0;
		margin: 0;
		right: auto;
		top: 0;
		transform: none;
	}
}

.programs.bxslider.wp-block-group.alignfull > div,
.programs.bxslider.wp-block-group.alignfull > div > div {
	overflow-x: visible;
	position: relative;
}

.programs.bxslider > div::before,
.programs.bxslider > div::after,
.programs.bxslider > div > div::before,
.programs.bxslider > div > div::after {
	content: '';
	display: block;
	height: 100%;
	position: absolute;
	top: 0;
	z-index: 1;
}

.programs.bxslider > div::before,
.programs.bxslider > div > div::before {
	background: linear-gradient(to right,  rgba(255,255,255,0) 0%,rgba(255,255,253,1) 100%,rgba(255,255,250,1) 66%);
	left: auto;
	right: 0;
	width: 10vw;
}

.programs.bxslider > div::after,
.programs.bxslider > div > div::after {
	background-color: #fffffa;
	left: calc(100% - 1px);
	width: 50vw;
}

.programs.bxslider > div > div::before {
	background: linear-gradient(to right,  rgba(255,255,250,1) 0%,rgba(255,255,253,1) 50%,rgba(255,255,255,0) 100%);
	left: auto;
	right: 100%;
	width: 10vw;
}

.programs.bxslider > div > div::after {
	left: auto;
	right: calc(100% + 99px);
}

@media only screen and (min-width: 1240px) {
	
	.programs.bxslider > div > div::before {
		left: auto;
		right: 100%;
		width: 100px;
	}
	
	.programs.bxslider > div > div::after {
		left: auto;
		right: calc(100% + 99px);
	}
	
}

@media only screen and (min-width: 1590px) {

	.programs.bxslider > div::before {
		left: 100%;
		transform: none;
		width: 215px;
	}
	
	.programs.bxslider > div::after {
		left: calc(100% + 214px);
		transform: none;
	}

}

.programs.bxslider .wp-block-genesis-blocks-gb-columns .gb-layout-column-wrap {
	display: block;
}

.programs.bxslider .bx-viewport {
	overflow: visible !important;
}

.programs.bxslider .slide {
	padding: 0 60px 0 0;
}

@media only screen and (max-width: 600px) {
	.programs.bxslider .slide {
		padding: 0 30px;
	}
}

.programs.bxslider .bx-controls-direction {
	height: 100%;
	margin-left: calc(-100vw / 2 + 100% / 2);
	margin-right: calc(-100vw / 2 + 100% / 2);
	max-width: 100vw;
	pointer-events: none;
	position: absolute;
	top: 0;
	width: 100vw;
}

.programs.bxslider .bx-wrapper .bx-controls-direction a {
	pointer-events: all;
	top: 100px;
}

.programs.bxslider .bx-wrapper .bx-pager {
	bottom: -70px;
	z-index: 1;
}

.programs.bxslider .wp-block-image img {
	opacity: 1;
	transition: all .2s ease-in-out;
}

.programs.bxslider .wp-block-image a:focus img,
.programs.bxslider .wp-block-image a:hover img {
	opacity: .8;
	transform: scale(1.02);
}


/* Coaching
---------------------------------------------------------------------------- */

.coaching {
	padding: 10px 0 0;
}

.coaching .wp-block-media-text__media {
	height: 100%;
	margin: 0 !important;
	max-height: 600px;
}

.coaching .wp-block-media-text__media img {
	height: 100%;
	object-fit: contain;
	object-position: 0 100%;
	width: 100%;
}

.coaching .wp-block-media-text>.wp-block-media-text__content {
	padding: 0;
}

@media only screen and (max-width: 767px) {
	
	.coaching {
		text-align: center;
	}
	
	.coaching .wp-block-media-text.is-stacked-on-mobile {
		grid-template-columns: 100% !important;
	}
	
	.coaching .wp-block-media-text.is-stacked-on-mobile>.wp-block-media-text__content {
		grid-column: 1;
		grid-row: 1;
		margin-bottom: -40px;
	}
	
	.coaching .wp-block-media-text.is-stacked-on-mobile>.wp-block-media-text__media {
		grid-column: 1;
		grid-row: 2;
		max-height: 400px;
	}
	
	.coaching .wp-block-buttons {
		justify-content: center;
	}
	
	.coaching .wp-block-media-text__media img {
		object-position: center;
	}
	
}


/* Media Queries
---------------------------------------------------------------------------- */

@media only screen and (min-width: 1024px) {
	
	.hero .gb-block-container {
		max-width: 960px;
	}
	
}

@media only screen and (min-width: 1240px) {
	
	.hero .gb-block-container {
		max-width: 1170px;
	}
	
}