/* Homepage specific styling goes here. Excluded on all subpages */
/* For most builds, this stylesheet should be wiped and started fresh */

/* Pending fadeInUp (homepage only): matches style.css @keyframes fadeInUp "from" until .animated runs */
.home-page .animate.fadeInUp:not(.animated) {
	opacity: 0;
	transform: translate3d(0, 100%, 0);
}

/* PRELOADER */
.preloader-outer {
	position: fixed;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 9;
	width: 100%;
	height: 100vh;
	background-color: var(--color-white);
	transition: opacity 600ms ease-out;
}

.preloader-outer.active {
	visibility: visible !important;
}

.preloader-outer.preloader-remove {
	opacity: 0;
	pointer-events: none;
}

.preloader-inner {
	display: flex;
	align-items: center;
	justify-content: center;
	height: 100%;
}

.preloader-inner p {
	margin-bottom: 15px;
}

.preloader-inner p:last-of-type {
	margin: 0;
}

.preloader-part {
	margin: 20px;
	display: none;
}

.preloader-part-left.active {
	display: block;
	-webkit-animation: fadeinright 800ms ease-out;
	animation: fadeInRight 800ms ease-out;
}

.preloader-part-right.active {
	display: block;
	-webkit-animation: fadeinleft 500ms ease-out;
	animation: fadeInLeft 500ms ease-out;
}

/* HERO */
.hero {
	width: 100%;
	position: relative;
}

.hero-image {
	width: 100%;
	display: block;
	position: relative;
}

.hero-image:after {
	width: 100%;
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	height: 80px;
	background: linear-gradient(to bottom, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%);
}

.hero-image img {
	width: 100%;
	object-fit: cover;
	display: block;
	height: 100%;
}

.hero-content {
	width: 100%;
	z-index: 2;
	background: var(--color-white);
	padding-top: 30px;
	padding-bottom: 30px;
}

.hero-content h1 {
	font-size: 3.75rem;
	line-height: 1;
	margin-bottom: 15px;
	letter-spacing: -0.02em;
}

.hero-content h1 span {
	animation-delay: .6s;
	display: block;
}

.hero-content h1 span:nth-child(2) span {
	animation-delay: 1s;
	padding-bottom: 15px;
}

/* Second hero line: navy first; .hero-line2-accent added by homepage.js after fadeIn stagger (transition is reliable vs. keyframes + var()) */
.hero-content h1 strong {
	display: block;
	color: var(--color-primary);
	transition: color 0.85s ease;
}

.hero-content h1 strong.hero-line2-accent {
	color: var(--color-secondary);
}

.hero-content .button {
	animation-delay: 1.4s;
}

@media screen and (min-width: 1025px) {
	.hero {
		height: 100dvh;
	}

	.hero-image {
		width: 100%;
		height: 100%;
		position: absolute;
		top: 0;
		left: 0;
	}

	.hero-image:after {
		height: 150px;
		background: linear-gradient(to bottom, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0.52) 50%, rgba(255, 255, 255, 0) 100%);
	}

	.hero-content {
		position: absolute;
		top: 50%;
		transform: translateY(-50%);
		left: 0;
		width: 100%;
		z-index: 2;
		padding-top: 100px;
		background: transparent;
	}
}

@media screen and (min-width: 1280px) {
	.hero-content h1 {
		font-size: 5.625rem;
	}
}

@media screen and (min-width: 1440px) {
	.hero-content h1 {
		font-size: 6.875rem;
		margin-bottom: 35px;
	}
}

/* INTRO */
.intro {
	width: 100%;
	position: relative;
	background: var(--color-primary);
	color: var(--color-white);
	padding-top: var(--margin-normal);
	padding-bottom: var(--margin-normal);
}

.intro-image {
	width: 100%;
	margin-bottom: 20px;
}

.intro-image .youtube-player {
	aspect-ratio: 16 / 9;
}

.intro-content {
	width: 100%;
	font-weight: 500;
	font-size: 1.125rem;
}

.intro-content h2 {
	font-size: 2.5rem;
	color: var(--color-white);
	letter-spacing: -0.025em;
}

.intro-content h5 {
	font-size: 1.375rem;
	font-weight: 500;
	color: var(--color-secondary);
}

.intro-content p:last-of-type {
	margin-bottom: 0;
}

@media screen and (min-width: 768px) {
	.intro-inner {
		display: flex;
		flex-wrap: wrap;
		align-items: center;
	}

	.intro-image {
		order: 1;
		width: 43%;
		margin-bottom: 0;
	}

	.intro-content {
		width: 57%;
		padding-right: 50px;
	}
}

@media screen and (min-width: 1025px) {
	.intro-image {
		width: 37.5%;
	}

	.intro-content {
		width: 62.5%;
		padding-right: 100px;
		margin-top: -10px;
	}

	.intro-content h2 {
		font-size: 3.125rem;
	}

	.intro-content h5 {
		font-size: 1.5rem;
	}

	.intro-play-btn {
		bottom: 20px;
		right: 40px;
	}
}

/* Explore Start */
.explore {
	margin-top: var(--margin-normal);
	margin-bottom: var(--margin-normal);
}

.explore h2 {
	font-size: 2.5rem;
	margin-bottom: 20px;
}

.explore .content-tab {
	display: none;
}

.explore .content-tab.active {
	display: block;
}

.explore .row-narrow {
	max-width: 950px;
	margin: 0 auto;
}

.explore-tabs {
	background: #f5eedc;
	border-radius: 100px;
	padding: 10px;
	margin-bottom: 20px;
}

.explore-tabs select {
	color: var(--color-alternate);
	cursor: pointer;
	font-weight: 400;
	height: 50px;
	padding: 0 25px;
	background-image: url('../images/caret-down-large.svg');
	background-repeat: no-repeat;
	background-position: right 20px center;
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
	border: 0;
	border-radius: 100px;
	font-size: 1.5rem;
	background-color: var(--color-white);
	width: 100%;
}

@media screen and (min-width: 768px) {
	.explore-tabs button {
		font-size: 1.125rem;
		font-weight: 500;
		height: 50px;
		display: inline-flex;
		align-items: center;
		padding: 0 25px;
		border-radius: 100px;
		color: var(--color-body-text);
	}

	.explore-tabs button:hover,
	.explore-tabs button:focus,
	.explore-tabs button.active {
		color: var(--color-alternate);
		background: var(--color-white);
	}

	.explore-tabs {
		display: flex;
		align-items: center;
		justify-content: center;
		gap: 4px;
		width: fit-content;
		max-width: 100%;
		margin-left: auto;
		margin-right: auto;
		margin-bottom: 50px;
		padding: 12px;
	}
}

@media screen and (min-width: 1025px) {
	.explore h2 {
		font-size: 3.125rem;
	}

	.explore-tabs button {
		padding: 0 35px;
		font-size: 1.5rem;
	}
}

/* Spotlight Section */
.spotlight {
	margin-top: var(--margin-normal);
	margin-bottom: var(--margin-normal);
}

.spotlight img {
	width: 100%;
	display: block;
	border-radius: 15px;
}

@media screen and (min-width: 1025px) {
	.spotlight img {
		border-radius: 20px;
	}
}

/* Features Section */
.features {
	padding-top: 40px;
	position: relative;
	padding-bottom: 40px;
	background: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, var(--color-white) 100%), rgba(39, 84, 138, .1);
}

.features-top {
	font-weight: 500;
	font-size: 1.5rem;
	margin-bottom: 30px;
}

.features-top span {
	display: inline-flex;
	align-items: center;
	padding: 0 20px;
	height: 50px;
	background: var(--color-white);
	color: var(--color-primary);
	border-radius: 15px;
	font-weight: 600;
	font-size: 1.5rem;
	margin-bottom: 30px;
}

.features-top h2 {
	font-size: 3.125rem;
	margin-bottom: 0;
	line-height: 1;
}

.features-top h2 strong {
	color: var(--color-secondary);
}

.features-left {
	width: 100%;
	position: relative;
	padding-left: 95px;
	margin-bottom: 35px;
}

.features-left img {
	border-radius: 20px;
	width: 100%;
	display: block;
}

.features-image1 {
	width: 100%;
}

.features-image2 {
	position: absolute;
	left: 0;
	bottom: 50px;
	width: 135px;
}

.features-block {
	display: flex;
	flex-wrap: wrap;
	padding-bottom: 26px;
	margin-bottom: 26px;
	border-bottom: 1px solid var(--color-gray);
}

.features-block:last-of-type {
	border-bottom: 0;
	padding-bottom: 0;
	margin-bottom: 0;
}

.features-icon {
	width: 32px;
	min-width: 32px;
	margin-right: 20px;
	margin-top: 5px;
}

.features-block:nth-child(2) .features-icon {
	animation-delay: .2s;
}

.features-block:nth-child(3) .features-icon {
	animation-delay: .4s;
}

.features-block:nth-child(4) .features-icon {
	animation-delay: .6s;
}

.features-text {
	flex: 1;
	font-weight: 500;
	font-size: 1.25rem;
}

.features-text h5 {
	color: var(--color-gray);
	margin-bottom: 5px;
	font-size: 1.563rem;
	font-weight: 700;
}

.features-text p {
	margin-bottom: 0;
}

.features-mark {
	position: absolute;
	top: 222px;
	z-index: -1;
	left: 50%;
	width: 295px;
	margin-left: -80px;
	transform: translateX(-50%);
}

@media screen and (min-width: 768px) {
	.features {
		padding-top: 60px;
		padding-bottom: 60px;
	}

	.features-mark {
		top: 120px;
		width: 474px;
		margin-left: -250px;
	}

	.features-holder {
		display: flex;
		flex-wrap: wrap;
		align-items: flex-start;
	}

	.features-left {
		width: 48%;
		padding-left: 115px;
		margin-bottom: 0;
	}

	.features-right {
		width: 48%;
		padding-top: 10px;
		margin-left: 20px;
	}
}

@media screen and (min-width: 1025px) {
	.features {
		padding-top: 95px;
		padding-bottom: 125px;
	}

	.features-top {
		margin-bottom: 45px;
	}

	.features-top h2 {
		font-size: 5.625rem;
	}

	.features h5 {
		font-size: 1.875rem;
	}

	.features-left {
		width: 42.5%;
		padding-left: 115px;
	}

	.features-right {
		width: 46%;
		margin-left: 60px;
	}

	.features-image2 {
		width: 200px;
		left: -25px;
		bottom: 80px;
	}
}

@media screen and (min-width: 1280px) {
	.features-mark {
		top: 135px;
		width: 674px;
		margin-left: -380px;
	}
}

/* Steps Section */
.steps {
	background-image: url('../images/works-bg.jpg');
	background-repeat: no-repeat;
	background-position: center center;
	background-size: cover;
	color: var(--color-white);
	padding-top: 40px;
	padding-bottom: 40px;
}

.steps h2 {
	color: inherit;
	margin-bottom: 0;
	font-size: 3.125rem;
}

.steps h5 {
	color: inherit;
	font-weight: 700;
	font-size: 1.5rem;
	margin-bottom: 5px;
}

.steps-top {
	font-weight: 500;
	font-size: 1.5rem;
	margin-bottom: 30px;
}

.steps-list {
	margin-bottom: 50px;
}

.steps-block {
	display: flex;
	margin-bottom: 25px;
}

.steps-number {
	width: 55px;
	height: 55px;
	background: var(--color-cream);
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
	font-size: 2.5rem;
	color: var(--color-secondary);
	font-weight: 700;
	margin-right: 20px;
}

.steps-block:nth-child(2) .steps-number {
	animation-delay: .2s;
}

.steps-block:nth-child(3) .steps-number {
	animation-delay: .4s;
}

.steps-block:nth-child(4) .steps-number {
	animation-delay: .6s;
}

.steps-text {
	flex: 1;
	font-weight: 500;
	font-size: 1.125rem;
}

.steps-text p:last-child {
	margin-bottom: 0;
}

.steps-bottom h5 {
	margin-top: 30px;
	margin-bottom: 0;
}

@media screen and (min-width: 768px) {
	.steps {
		padding-top: 60px;
		padding-bottom: 60px;
	}

	.steps-list {
		column-count: 2;
		column-gap: 50px;
		row-gap: 50px;
		margin-bottom: 0;
	}

	.steps-block {
		margin-bottom: 50px;
	}

	.steps-bottom h5 {
		margin-top: 40px;
	}
}

@media screen and (min-width: 1025px) {
	.steps {
		padding-top: 90px;
		padding-bottom: 90px;
	}

	.steps-top {
		margin-bottom: 80px;
	}

	.steps h2 {
		font-size: 5.625rem;
	}

	.steps-block {
		margin-bottom: 75px;
	}
}

@keyframes faqsTitleMaskReveal {
	from {
		clip-path: inset(0 100% 0 0);
	}

	to {
		clip-path: inset(0 0 0 0);
	}
}

/* FAQs Section */
.faqs {
	padding-top: 40px;
	position: relative;
	padding-bottom: 40px;
	background: rgba(239, 233, 213, .3);
}

.faqs h2 {
	font-size: 3.125rem;
	margin-bottom: 5px;
}

.faqs-button {
	row-gap: 15px;
	display: flex;
	column-gap: 20px;
	margin-top: 45px;
	flex-direction: column;
}

.faqs-image {
	width: 100%;
	overflow: hidden;
	border-radius: 20px;
	margin-bottom: 20px;
}

.faqs-image img {
	width: 100%;
	display: block;
}

@media screen and (min-width: 768px) {
	.faqs {
		padding-top: 60px;
		padding-bottom: 60px;
	}

	.faqs-title {
		position: absolute;
		top: 0;
		line-height: 1;
		z-index: -1;
		left: 50%;
		white-space: nowrap;
		transform: translateX(-50%);
		color: rgba(39, 68, 93, .05);
		font-weight: 700;
		font-size: 20rem;
	}

	.faqs-title span {
		display: inline-block;
	}

	/* Decorative FAQs background title: horizontal mask reveal (replaces slideInLeft) */
	.home-page .faqs-title .faqs-title-reveal:not(.animated) {
		clip-path: inset(0 100% 0 0);
	}

	.home-page .faqs-title .faqs-title-reveal.animated {
		animation: faqsTitleMaskReveal 1.4s ease-out both;
	}

	.faqs-button {
		flex-direction: row;
	}

	.faqs-inner {
		display: flex;
		align-items: flex-start;
	}

	.faqs-content {
		flex: 1;
		align-self: center;
	}

	.faqs-image {
		order: 1;
		width: 31.5%;
		margin-left: 36px;
		margin-bottom: 0;
	}
}

@media screen and (min-width: 1025px) {
	.faqs {
		padding-top: 110px;
		padding-bottom: 110px;
	}

	.faqs-title {
		line-height: .8;
		font-size: 33.125rem;
	}

	.faqs-image {
		margin-left: 76px;
	}
}