/* =========================================================
 * Tech Resolve — Closing Proposal Scene
 * Version: 1.0.0
 * ======================================================= */


/* =========================================================
 * Section
 * ======================================================= */

.tr-final-quote {
	position: relative;

	padding:
		44px
		0
		86px;

	background:
		#f4f8f5;
}


.tr-final-quote__shell {
	width: min(
		calc(100% - (var(--tr-gutter) * 2)),
		var(--tr-container-wide)
	);

	margin-inline: auto;
}


/* =========================================================
 * Panel
 * ======================================================= */

.tr-final-quote__panel {
	position: relative;
	isolation: isolate;

	min-height: 720px;

	padding:
		clamp(48px, 5vw, 78px)
		clamp(32px, 5vw, 78px)
		30px;

	overflow: hidden;

	border:
		1px solid rgba(255, 255, 255, 0.08);

	border-radius:
		clamp(30px, 3vw, 44px);

	background:
		linear-gradient(
			125deg,
			#07120f 0%,
			#07171c 50%,
			#09101d 100%
		);

	box-shadow:
		0 45px 110px rgba(4, 24, 18, 0.26),
		inset 0 1px 0 rgba(255, 255, 255, 0.055);
}


/* =========================================================
 * Background
 * ======================================================= */

.tr-final-quote__background {
	position: absolute;
	z-index: -3;

	inset: 0;

	overflow: hidden;

	pointer-events: none;
}


.tr-final-quote__grid {
	position: absolute;

	inset: 0;

	background-image:
		linear-gradient(
			rgba(255, 255, 255, 0.025) 1px,
			transparent 1px
		),
		linear-gradient(
			90deg,
			rgba(255, 255, 255, 0.025) 1px,
			transparent 1px
		);

	background-size:
		52px
		52px;

	mask-image:
		linear-gradient(
			to bottom,
			transparent,
			#000 20%,
			#000 85%,
			transparent
		);
}


.tr-final-quote__glow {
	position: absolute;

	border-radius: 50%;
}


.tr-final-quote__glow--green {
	top: -320px;
	left: 8%;

	width: 700px;
	height: 700px;

	background:
		radial-gradient(
			circle,
			rgba(25, 224, 120, 0.105),
			transparent 70%
		);
}


.tr-final-quote__glow--cyan {
	right: -300px;
	top: 6%;

	width: 720px;
	height: 720px;

	background:
		radial-gradient(
			circle,
			rgba(20, 215, 232, 0.07),
			transparent 72%
		);
}


.tr-final-quote__glow--violet {
	right: 15%;
	bottom: -480px;

	width: 760px;
	height: 760px;

	background:
		radial-gradient(
			circle,
			rgba(135, 87, 255, 0.055),
			transparent 72%
		);
}


.tr-final-quote__beam {
	position: absolute;

	right: 10%;
	bottom: 25%;

	width: 70%;
	height: 1px;

	background:
		linear-gradient(
			90deg,
			transparent,
			rgba(25, 224, 120, 0.22),
			rgba(20, 215, 232, 0.16),
			transparent
		);

	transform:
		rotate(-8deg);

	box-shadow:
		0 0 17px rgba(25, 224, 120, 0.09);
}


/* =========================================================
 * Header
 * ======================================================= */

.tr-final-quote__header {
	position: relative;
	z-index: 10;

	max-width: 1080px;

	margin-bottom:
		45px;
}


.tr-final-quote__eyebrow {
	display: flex;
	align-items: center;
	gap: 12px;

	margin-bottom: 19px;

	color:
		rgba(176, 255, 218, 0.76);

	font-size:
		clamp(10px, 0.72vw, 12px);

	font-weight: 820;

	letter-spacing:
		0.15em;
}


.tr-final-quote__eyebrow-line {
	width: 35px;
	height: 1px;

	background:
		var(--tr-green);

	box-shadow:
		0 0 12px rgba(25, 224, 120, 0.26);
}


.tr-final-quote__title {
	max-width: 1020px;

	margin: 0;

	color:
		#f5faf8;

	font-size:
		clamp(48px, 5.2vw, 84px);

	font-weight:
		790;

	line-height:
		0.98;

	letter-spacing:
		-0.055em;

	text-wrap:
		balance;
}


/* =========================================================
 * Scene
 * ======================================================= */

.tr-final-quote__scene {
	position: relative;

	display: grid;

	grid-template-columns:
		minmax(340px, 0.85fr)
		minmax(0, 1.15fr);

	align-items: end;

	gap:
		clamp(35px, 6vw, 90px);

	min-height:
		420px;
}


/* =========================================================
 * Portrait
 * ======================================================= */

.tr-final-quote__portrait {
	position: relative;

	width: min(100%, 440px);
	height: 420px;

	margin-left:
		clamp(0px, 2vw, 30px);
}


/* =========================================================
 * Portrait Orbit
 * ======================================================= */

.tr-final-quote__portrait-orbit {
	position: absolute;

	top: 48%;
	left: 48%;

	width: 400px;
	height: 400px;

	border:
		1px solid rgba(25, 224, 120, 0.10);

	border-radius: 50%;

	transform:
		translate(-50%, -50%);

	pointer-events: none;
}


.tr-final-quote__portrait-orbit::before {
	content: "";

	position: absolute;

	inset: 46px;

	border:
		1px dashed rgba(20, 215, 232, 0.09);

	border-radius: 50%;
}


.tr-final-quote__portrait-orbit span {
	position: absolute;

	top: 12%;
	right: 15%;

	width: 7px;
	height: 7px;

	border-radius: 50%;

	background:
		var(--tr-green);

	box-shadow:
		0 0 14px rgba(25, 224, 120, 0.65);
}


/* =========================================================
 * Portrait Frame
 * ======================================================= */

.tr-final-quote__portrait-frame {
	position: absolute;
	z-index: 4;

	right: 0;
	bottom: 0;
	left: 0;

	height: 390px;

	overflow: hidden;

	border:
		1px solid rgba(255, 255, 255, 0.09);

	background:
		#0d1919;

	box-shadow:
		0 38px 80px rgba(0, 0, 0, 0.30);

	clip-path:
		polygon(
			0 0,
			calc(100% - 24px) 0,
			100% 24px,
			100% 100%,
			24px 100%,
			0 calc(100% - 24px)
		);

	transform:
		rotate(-2deg);

	transition:
		transform 650ms var(--tr-ease),
		box-shadow 400ms ease;
}


.tr-final-quote__portrait:hover
.tr-final-quote__portrait-frame {
	transform:
		rotate(0deg)
		translateY(-5px);

	box-shadow:
		0 45px 95px rgba(0, 0, 0, 0.36),
		0 0 48px rgba(25, 224, 120, 0.05);
}


.tr-final-quote__portrait-image {
	width: 100%;
	height: 100%;

	object-fit:
		cover;

	object-position:
		center top;

	filter:
		saturate(0.86)
		contrast(1.03);

	transform:
		scale(1.02);

	transition:
		transform 850ms var(--tr-ease),
		filter 450ms ease;
}


.tr-final-quote__portrait:hover
.tr-final-quote__portrait-image {
	filter:
		saturate(1)
		contrast(1.03);

	transform:
		scale(1.055);
}


/* =========================================================
 * Portrait Overlay
 * ======================================================= */

.tr-final-quote__portrait-overlay {
	position: absolute;

	inset: 0;

	background:
		linear-gradient(
			180deg,
			transparent 52%,
			rgba(3, 16, 13, 0.18) 78%,
			rgba(3, 16, 13, 0.58)
		),
		linear-gradient(
			115deg,
			rgba(25, 224, 120, 0.08),
			transparent 38%
		);

	pointer-events: none;
}


.tr-final-quote__portrait-grid {
	position: absolute;

	inset: 0;

	background-image:
		linear-gradient(
			rgba(255, 255, 255, 0.03) 1px,
			transparent 1px
		),
		linear-gradient(
			90deg,
			rgba(255, 255, 255, 0.03) 1px,
			transparent 1px
		);

	background-size:
		36px
		36px;

	mask-image:
		linear-gradient(
			to bottom,
			transparent,
			#000
		);

	opacity: 0;

	transition:
		opacity 400ms ease;

	pointer-events: none;
}


.tr-final-quote__portrait:hover
.tr-final-quote__portrait-grid {
	opacity: 0.55;
}


/* =========================================================
 * 24H
 * ======================================================= */

.tr-final-quote__portrait-index {
	position: absolute;
	z-index: 9;

	top: 7px;
	left: -24px;

	display: flex;
	align-items: flex-end;
	gap: 5px;

	padding:
		15px
		17px;

	border:
		1px solid rgba(25, 224, 120, 0.15);

	background:
		#0a1c17;

	box-shadow:
		0 18px 40px rgba(0, 0, 0, 0.22);

	transform:
		rotate(-6deg);
}


.tr-final-quote__portrait-index span {
	color:
		var(--tr-green);

	font-size:
		40px;

	font-weight:
		850;

	line-height:
		0.78;

	letter-spacing:
		-0.06em;
}


.tr-final-quote__portrait-index small {
	color:
		rgba(176, 255, 218, 0.50);

	font-size:
		9px;

	font-weight:
		800;

	letter-spacing:
		0.12em;
}


/* =========================================================
 * Portrait Signal
 * ======================================================= */

.tr-final-quote__portrait-signal {
	position: absolute;
	z-index: 9;

	right: -8px;
	bottom: 50px;

	display: grid;
	place-items: center;

	width: 28px;
	height: 28px;

	border:
		1px solid rgba(20, 215, 232, 0.18);

	border-radius:
		50%;

	background:
		#081a1e;
}


.tr-final-quote__portrait-signal span {
	width: 7px;
	height: 7px;

	border-radius: 50%;

	background:
		var(--tr-spectrum-cyan);

	box-shadow:
		0 0 14px rgba(20, 215, 232, 0.65);
}


/* =========================================================
 * Conversion Module
 * ======================================================= */

.tr-final-quote__conversion {
	position: relative;
	isolation: isolate;

	max-width: 680px;

	padding:
		clamp(28px, 3.4vw, 45px);

	overflow: hidden;

	border:
		1px solid rgba(255, 255, 255, 0.07);

	background:
		linear-gradient(
			115deg,
			rgba(255, 255, 255, 0.045),
			rgba(255, 255, 255, 0.014)
		);

	box-shadow:
		0 30px 70px rgba(0, 0, 0, 0.16),
		inset 0 1px 0 rgba(255, 255, 255, 0.04);

	clip-path:
		polygon(
			0 0,
			calc(100% - 21px) 0,
			100% 21px,
			100% 100%,
			21px 100%,
			0 calc(100% - 21px)
		);
}


.tr-final-quote__conversion::before {
	content: "";

	position: absolute;
	z-index: -1;

	top: -220px;
	left: -120px;

	width: 470px;
	height: 470px;

	border-radius: 50%;

	background:
		radial-gradient(
			circle,
			rgba(25, 224, 120, 0.10),
			transparent 70%
		);
}


/* =========================================================
 * Conversion Top
 * ======================================================= */

.tr-final-quote__conversion-top {
	display: flex;
	align-items: center;
	justify-content: space-between;

	gap: 20px;

	margin-bottom:
		28px;
}


.tr-final-quote__conversion-code,
.tr-final-quote__conversion-state {
	color:
		rgba(208, 225, 218, 0.32);

	font-size:
		8px;

	font-weight:
		800;

	letter-spacing:
		0.13em;
}


.tr-final-quote__conversion-state {
	display: inline-flex;
	align-items: center;
	gap: 7px;

	color:
		rgba(176, 255, 218, 0.55);
}


.tr-final-quote__conversion-state i {
	width: 6px;
	height: 6px;

	border-radius: 50%;

	background:
		var(--tr-green);

	box-shadow:
		0 0 12px rgba(25, 224, 120, 0.65);
}


/* =========================================================
 * Description
 * ======================================================= */

.tr-final-quote__description {
	max-width: 590px;

	margin:
		0
		0
		27px;

	color:
		rgba(222, 234, 230, 0.68);

	font-size:
		clamp(15px, 1.15vw, 18px);

	line-height:
		1.72;
}


/* =========================================================
 * Benefits
 * ======================================================= */

.tr-final-quote__benefits {
	display: grid;

	gap: 10px;

	margin-bottom:
		31px;
}


.tr-final-quote__benefit {
	display: flex;
	align-items: center;

	gap: 11px;

	color:
		rgba(230, 240, 236, 0.74);

	font-size:
		13px;
}


.tr-final-quote__benefit-icon {
	display: grid;
	place-items: center;

	width: 28px;
	height: 28px;

	flex:
		0
		0
		28px;

	border:
		1px solid rgba(25, 224, 120, 0.16);

	border-radius:
		50%;

	background:
		rgba(25, 224, 120, 0.065);

	color:
		var(--tr-green);
}


.tr-final-quote__benefit-icon svg {
	width: 14px;
	height: 14px;
}


/* =========================================================
 * Button
 * ======================================================= */

.tr-final-quote__button {
	--tr-final-quote-x: 50%;
	--tr-final-quote-y: 50%;

	position: relative;
	isolation: isolate;

	display: inline-flex;
	align-items: center;
	justify-content: space-between;

	gap: 20px;

	min-width: 245px;
	min-height: 62px;

	padding:
		0
		10px
		0
		23px;

	overflow: hidden;

	border:
		1px solid rgba(61, 247, 152, 0.45);

	border-radius:
		17px;

	background:
		linear-gradient(
			135deg,
			#22ea83,
			#0bc96a
		);

	color:
		#03170d;

	font-size:
		13px;

	font-weight:
		780;

	text-decoration:
		none;

	box-shadow:
		0 18px 45px rgba(15, 211, 106, 0.20),
		0 0 0 7px rgba(25, 224, 120, 0.025);

	transform-style:
		preserve-3d;

	will-change:
		transform;

	transition:
		transform 160ms ease-out,
		box-shadow 320ms ease,
		filter 300ms ease;
}


.tr-final-quote__button::before {
	content: "";

	position: absolute;

	inset: 0;

	background:
		radial-gradient(
			100px circle at
			var(--tr-final-quote-x)
			var(--tr-final-quote-y),
			rgba(255, 255, 255, 0.45),
			rgba(255, 255, 255, 0.10) 38%,
			transparent 72%
		);

	opacity: 0;

	transition:
		opacity 220ms ease;
}


.tr-final-quote__button:hover::before {
	opacity: 1;
}


.tr-final-quote__button:hover {
	color:
		#021209;

	filter:
		brightness(1.04)
		saturate(1.06);

	box-shadow:
		0 24px 55px rgba(15, 211, 106, 0.28),
		0 0 38px rgba(25, 224, 120, 0.10);
}


.tr-final-quote__button-text,
.tr-final-quote__button-icon {
	position: relative;
	z-index: 2;
}


.tr-final-quote__button-icon {
	display: grid;
	place-items: center;

	width: 41px;
	height: 41px;

	flex:
		0
		0
		41px;

	border-radius:
		12px;

	background:
		rgba(1, 35, 17, 0.13);

	transition:
		transform 350ms var(--tr-ease);
}


.tr-final-quote__button-icon svg {
	width: 18px;
	height: 18px;
}


.tr-final-quote__button:hover
.tr-final-quote__button-icon {
	transform:
		translateX(4px)
		rotate(-5deg);
}


/* =========================================================
 * Conversion Bars
 * ======================================================= */

.tr-final-quote__conversion-bars {
	position: absolute;

	right: 35px;
	bottom: 37px;

	display: flex;
	align-items: flex-end;
	gap: 5px;

	height: 38px;

	opacity: 0.35;
}


.tr-final-quote__conversion-bars span {
	display: block;

	width: 6px;

	border-radius:
		2px
		2px
		0
		0;

	background:
		linear-gradient(
			to top,
			rgba(25, 224, 120, 0.18),
			var(--tr-green)
		);
}


.tr-final-quote__conversion-bars span:nth-child(1) {
	height: 24%;
}


.tr-final-quote__conversion-bars span:nth-child(2) {
	height: 40%;
}


.tr-final-quote__conversion-bars span:nth-child(3) {
	height: 59%;
}


.tr-final-quote__conversion-bars span:nth-child(4) {
	height: 76%;
}


.tr-final-quote__conversion-bars span:nth-child(5) {
	height: 100%;
}


/* =========================================================
 * Bottom Rail
 * ======================================================= */

.tr-final-quote__rail {
	display: flex;
	align-items: center;
	justify-content: space-between;

	gap: 25px;

	margin-top:
		30px;

	color:
		rgba(205, 222, 216, 0.28);

	font-size:
		8px;

	font-weight:
		800;

	letter-spacing:
		0.13em;
}


.tr-final-quote__rail-progress {
	flex: 1;

	height: 2px;

	background:
		rgba(255, 255, 255, 0.06);
}


.tr-final-quote__rail-progress span {
	display: block;

	width: 100%;
	height: 100%;

	background:
		linear-gradient(
			90deg,
			var(--tr-green),
			var(--tr-spectrum-cyan),
			var(--tr-spectrum-violet)
		);

	box-shadow:
		0 0 12px rgba(25, 224, 120, 0.18);
}


/* =========================================================
 * Entrance
 * ======================================================= */

.tr-has-final-quote-js
.tr-final-quote__header,
.tr-has-final-quote-js
.tr-final-quote__portrait,
.tr-has-final-quote-js
.tr-final-quote__conversion {
	opacity: 0;

	transform:
		translateY(26px);
}


.tr-has-final-quote-js
.tr-final-quote.is-inview
.tr-final-quote__header,
.tr-has-final-quote-js
.tr-final-quote.is-inview
.tr-final-quote__portrait,
.tr-has-final-quote-js
.tr-final-quote.is-inview
.tr-final-quote__conversion {
	opacity: 1;

	transform:
		translateY(0);

	transition:
		opacity 850ms ease,
		transform 950ms var(--tr-ease);
}


.tr-has-final-quote-js
.tr-final-quote.is-inview
.tr-final-quote__portrait {
	transition-delay:
		120ms;
}


.tr-has-final-quote-js
.tr-final-quote.is-inview
.tr-final-quote__conversion {
	transition-delay:
		210ms;
}


/* =========================================================
 * Tablet
 * ======================================================= */

@media (max-width: 1050px) {

	.tr-final-quote__scene {
		grid-template-columns:
			0.85fr
			1.15fr;

		gap: 35px;
	}


	.tr-final-quote__portrait {
		height: 390px;
	}


	.tr-final-quote__portrait-frame {
		height: 355px;
	}


	.tr-final-quote__portrait-orbit {
		width: 340px;
		height: 340px;
	}

}


/* =========================================================
 * Mobile
 * ======================================================= */

@media (max-width: 720px) {

	.tr-final-quote {
		padding:
			25px
			0
			54px;
	}


	.tr-final-quote__shell {
		width:
			calc(100% - 24px);
	}


	.tr-final-quote__panel {
		min-height: 0;

		padding:
			42px
			20px
			24px;

		border-radius:
			27px;
	}


	.tr-final-quote__header {
		margin-bottom:
			30px;
	}


	.tr-final-quote__title {
		font-size:
			clamp(38px, 10.8vw, 52px);
	}


	.tr-final-quote__scene {
		display: flex;
		flex-direction: column;

		gap: 15px;

		min-height: 0;
	}


	.tr-final-quote__portrait {
		order: 2;

		width: 100%;
		height: 340px;

		margin: 0;
	}


	.tr-final-quote__portrait-frame {
		height: 315px;
	}


	.tr-final-quote__portrait-orbit {
		width: 290px;
		height: 290px;
	}


	.tr-final-quote__portrait-index {
		left: 8px;
	}


	.tr-final-quote__conversion {
		order: 1;

		max-width: none;

		width: 100%;

		padding:
			26px
			20px;
	}


	.tr-final-quote__description {
		font-size:
			15px;
	}


	.tr-final-quote__button {
		width: 100%;

		min-width: 0;
	}


	.tr-final-quote__conversion-bars {
		display: none;
	}


	.tr-final-quote__rail {
		margin-top:
			23px;
	}


	.tr-final-quote__rail > span {
		display: none;
	}

}


/* =========================================================
 * Reduced Motion
 * ======================================================= */

@media (prefers-reduced-motion: reduce) {

	.tr-final-quote__portrait-frame,
	.tr-final-quote__portrait-image,
	.tr-final-quote__button {
		transition: none;
	}


	.tr-has-final-quote-js
	.tr-final-quote__header,
	.tr-has-final-quote-js
	.tr-final-quote__portrait,
	.tr-has-final-quote-js
	.tr-final-quote__conversion {
		opacity: 1;

		transform: none;

		transition: none;
	}

}