
/* =============================================================
   GVEC.net — Hero Rebuild styles
   Brand tokens pulled from theme-3 compiled ryno-colors.css:
   red #ed1c24 · red-dark #ba1015 · ink #000/#404040 · gray #f2f2f2
   Fonts: Whitney (display) / Whitney Book (body) — already loaded by theme.
   Prefix: .gvx-  (no collisions with theme-3 classes)
   ============================================================= */

/* Layout safety: padding can never inflate widths inside our components */
.gvx-hero, .gvx-hero *, .gvx-plans, .gvx-plans * {
	box-sizing: border-box;
}

:root {
	--gvx-red: #ed1c24;
	--gvx-red-dark: #ba1015;
	--gvx-ink: #000;
	--gvx-ink-soft: #404040;
	--gvx-gray: #7f7f7f;
	--gvx-gray-light: #f2f2f2;
	--gvx-line: #dbdbdb;
	--gvx-radius-card: 24px;
	--gvx-radius-pill: 999px;
}

/* -------------------------------------------------------------
   HERO — compact slider, inset rounded card like the comp
   ------------------------------------------------------------- */
.gvx-hero {
	position: relative;
	margin: 32px auto 0;
	/* breathing room between nav and hero */
	max-width: 1760px;
	padding: 0 24px;
}

.gvx-hero__slider {
	position: relative;
	border-radius: var(--gvx-radius-card);
	overflow: hidden;
	/* NOT full height — per scope. Clamped compact band. */
	height: clamp(420px, 48vw, 620px);
	background: var(--gvx-gray-light);
}

/* Slick makes .slick-list/.slick-track fill; force slide height */
.gvx-hero__slider .slick-list, .gvx-hero__slider .slick-track {
	height: 100%;
}

.gvx-hero__slide {
	position: relative;
	height: clamp(420px, 48vw, 620px);
}

.gvx-hero__media {
	position: absolute;
	inset: 0;
	overflow: hidden;
}

.gvx-hero__slide-img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

/* Video background layers — sit above the poster image, below scrim/content */
.gvx-hero__slide-video {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	z-index: 1;
}

.gvx-hero__slide-embed {
	position: absolute;
	inset: 0;
	overflow: hidden;
	z-index: 1;
	pointer-events: none;
}

.gvx-hero__slide-embed iframe {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	/* Pre-JS fallback: fill the box (inner player may letterbox for a moment).
     hero-rebuild.js then sets exact 16:9 cover dimensions and keeps them on resize. */
	width: 100%;
	height: 100%;
	border: 0;
}

.gvx-hero__slide-scrim {
	z-index: 2;
}

.gvx-hero__content {
	z-index: 3;
}

/* Gentle continuous drift on all slide images. Runs independently of
   slick's active-class toggling, so crossfades never restart or jump it. */
.gvx-hero__slide-img {
	animation: gvxDrift 18s ease-in-out infinite alternate;
	will-change: transform;
}

@keyframes gvxDrift {
	from {
		transform: scale(1);
	}
	
	to {
		transform: scale(1.05);
	}
}

/* Headline/subheadline rise in each time a slide becomes active */
.gvx-hero__slider--single .gvx-hero__headline, .gvx-hero__slider .slick-active .gvx-hero__headline {
	animation: gvxRiseIn .7s cubic-bezier(.22, .61, .36, 1) both;
}

.gvx-hero__slider--single .gvx-hero__subheadline, .gvx-hero__slider .slick-active .gvx-hero__subheadline {
	animation: gvxRiseIn .7s cubic-bezier(.22, .61, .36, 1) .12s both;
}

@keyframes gvxRiseIn {
	from {
		opacity: 0;
		transform: translateY(18px);
	}
	
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

/* Legibility scrim — subtle, bottom-weighted */
.gvx-hero__slide-scrim {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, .12) 40%, rgba(0, 0, 0, .55) 100%);
	pointer-events: none;
}

.gvx-hero__content {
	position: absolute;
	left: 0;
	right: 0;
	margin: 0 auto;
	/* transform-free centering — nothing for mobile to inherit */
	bottom: 200px;
	/* clears the checker bar */
	width: min(88%, 1180px);
	/* EXACT same geometry as .gvx-hero__checker so left edges align */
	padding: 0;
	color: #fff;
	z-index: 2;
}

.gvx-hero__eyebrow {
	font-family: "Whitney Book", Arial, sans-serif;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: .12em;
	font-size: clamp(.85rem, 1.1vw, 1.05rem);
	color: rgba(255, 255, 255, .92);
	margin: 0 0 .85em;
	text-shadow: 0 1px 8px rgba(0, 0, 0, .35);
}

.gvx-hero__headline {
	font-family: "Whitney", sans-serif;
	font-weight: 800;
	text-transform: none;
	/* brand: sentence case; theme no longer forces caps */
	color: #fff;
	font-size: clamp(1.9rem, 4.2vw, 4rem);
	line-height: 1.05;
	margin: 0 0 .5em;
	text-shadow: 0 2px 14px rgba(0, 0, 0, .35);
}

.gvx-hero__subheadline {
	font-family: "Whitney Book", Arial, sans-serif;
	font-weight: 300;
	color: #fff;
	font-size: clamp(1.05rem, 1.8vw, 1.75rem);
	line-height: 1.42;
	margin: 0;
	text-shadow: 0 1px 10px rgba(0, 0, 0, .35);
}

.gvx-hero__sub-link, .gvx-hero__sub-link:hover {
	color: #fff;
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* Slick dots — white pills like the comp.
   Hardened: max-specificity + !important on visibility to defeat any
   parent-theme .slick-dots{display:none} rules, and a soft shadow so
   the dots stay visible over bright slides/video. */
.gvx-hero .gvx-hero__slider ul.slick-dots {
	position: absolute !important;
	bottom: 22px !important;
	top: auto !important;
	left: 0;
	right: 0;
	width: 100%;
	display: flex !important;
	visibility: visible !important;
	opacity: 1 !important;
	justify-content: center;
	align-items: center;
	gap: 10px;
	list-style: none !important;
	margin: 0 !important;
	padding: 0 !important;
	z-index: 6 !important;
}

.gvx-hero .gvx-hero__slider ul.slick-dots li {
	display: block !important;
	width: auto !important;
	height: auto !important;
	margin: 0 !important;
	padding: 0 !important;
}

.gvx-hero .gvx-hero__slider ul.slick-dots li button {
	display: block !important;
	width: 14px;
	height: 14px;
	border-radius: 999px;
	border: 0 !important;
	padding: 0 !important;
	font-size: 0 !important;
	line-height: 0;
	text-indent: -9999px;
	overflow: hidden;
	background: rgba(255, 255, 255, .75) !important;
	box-shadow: 0 1px 6px rgba(0, 0, 0, .35);
	cursor: pointer;
	transition: width .25s ease, background .25s ease;
}

/* Kill slick-theme.css pseudo-dot glyphs if the parent theme ships them */
.gvx-hero .gvx-hero__slider ul.slick-dots li button:before, .gvx-hero .gvx-hero__slider ul.slick-dots li button:after {
	content: none !important;
	display: none !important;
}

.gvx-hero .gvx-hero__slider ul.slick-dots li.slick-active button {
	width: 56px;
	background: #fff !important;
}

/* -------------------------------------------------------------
   Address availability bar — white pill overlapping slider bottom
   ------------------------------------------------------------- */
.gvx-hero__checker {
	position: absolute;
	left: 0;
	right: 0;
	margin: 0 auto;
	bottom: 68px;
	width: min(88%, 1180px);
	z-index: 4;
}

.gvx-hero__checker-form {
	display: flex;
	align-items: center;
	gap: 8px;
	background: #fff;
	border-radius: var(--gvx-radius-pill);
	padding: 10px 10px 10px 32px;
	box-shadow: 0 12px 34px rgba(0, 0, 0, .22);
	transition: transform .25s ease, box-shadow .25s ease;
}

.gvx-hero__checker-form:focus-within {
	transform: translateY(-2px);
	box-shadow: 0 18px 44px rgba(0, 0, 0, .28);
}

.gvx-hero__checker-input {
	border: 0;
	outline: 0;
	background: transparent;
	font-family: "Whitney Book", Arial, sans-serif;
	font-size: 1.15rem;
	color: var(--gvx-ink);
	padding: 14px 8px;
	min-width: 0;
}

.gvx-hero__checker-input::placeholder {
	color: var(--gvx-gray);
}

.gvx-hero__checker-input:focus-visible {
	outline: 2px solid var(--gvx-red);
	outline-offset: 2px;
	border-radius: 8px;
}

.gvx-hero__checker-input--address {
	flex: 1 1 auto;
}

.gvx-hero__checker-input--unit {
	flex: 0 0 110px;
}

.gvx-hero__checker-input--zip {
	flex: 0 0 110px;
}

.gvx-hero__checker-btn {
	flex: 0 0 auto;
	border: 0;
	cursor: pointer;
	background: var(--gvx-red);
	color: #fff;
	font-family: "Whitney", sans-serif;
	font-weight: 700;
	font-size: 1.1rem;
	padding: 16px 34px;
	border-radius: var(--gvx-radius-pill);
	transition: background .2s ease;
}

.gvx-hero__checker-btn:hover, .gvx-hero__checker-btn:focus-visible {
	background: var(--gvx-red-dark);
}

.gvx-hero__checker-btn:focus-visible {
	outline: 2px solid var(--gvx-ink);
	outline-offset: 2px;
}

/* Mobile-only availability CTA (replaces the input on small screens) */
.gvx-hero__checker-mobile-btn {
	display: none;
}

.gvx-hero__checker-mobile-hint {
	display: none;
}

/* Atlas <address-search-component> wrapper — component styled via its props;
   wrapper supplies the drop shadow + focus lift so it matches the comp */
.gvx-hero__checker-atlas {
	border-radius: 999px;
	filter: drop-shadow(0 12px 34px rgba(0, 0, 0, .22));
	transition: transform .25s ease, filter .25s ease;
}

.gvx-hero__checker-atlas:focus-within {
	transform: translateY(-2px);
	filter: drop-shadow(0 18px 44px rgba(0, 0, 0, .28));
}

/* -------------------------------------------------------------
   PLAN CARDS
   ------------------------------------------------------------- */
.gvx-plans {
	padding: clamp(48px, 6vw, 96px) 0;
	background: #fff;
}

.gvx-plans__heading {
	font-family: "Whitney", sans-serif;
	font-weight: 800;
	color: var(--gvx-ink);
	font-size: clamp(1.8rem, 3.4vw, 3.25rem);
	line-height: 1.08;
	margin: 0 0 .4em;
}

.gvx-plans__intro {
	font-family: "Whitney Book", Arial, sans-serif;
	font-weight: 300;
	color: var(--gvx-ink-soft);
	font-size: clamp(1.05rem, 1.6vw, 1.5rem);
	max-width: 62ch;
	margin: 0 0 clamp(28px, 4vw, 56px);
}

.gvx-plans__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
	gap: clamp(18px, 2.5vw, 32px);
	align-items: stretch;
}

.gvx-plan {
	position: relative;
	display: flex;
	flex-direction: column;
	background: #fff;
	border: 1px solid var(--gvx-line);
	border-radius: var(--gvx-radius-card);
	padding: clamp(24px, 2.6vw, 40px);
	transition: transform .3s cubic-bezier(.22, .61, .36, 1), box-shadow .3s ease;
}

.gvx-plan:hover {
	transform: translateY(-6px);
	box-shadow: 0 22px 44px rgba(0, 0, 0, .1);
}

/* Scroll reveal: elements start hidden, JS adds .is-visible when scrolled into view.
   If JS never runs, the no-js fallback in hero-rebuild.js removes the class list. */
.gvx-reveal {
	opacity: 0;
	transform: translateY(26px);
	transition: opacity .6s ease, transform .6s cubic-bezier(.22, .61, .36, 1);
	transition-delay: var(--gvx-delay, 0s);
}

.gvx-reveal.is-visible {
	opacity: 1;
	transform: translateY(0);
}

.gvx-plan--popular {
	border: 2px solid var(--gvx-red);
}

.gvx-plan__badge {
	position: absolute;
	top: -1px;
	right: 24px;
	transform: translateY(-50%);
	background: var(--gvx-red-dark);
	color: #fff;
	font-family: "Whitney", sans-serif;
	font-weight: 600;
	font-size: .95rem;
	padding: 8px 18px;
	border-radius: 6px;
}

.gvx-plan__eyebrow {
	font-family: "Whitney Book", Arial, sans-serif;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: var(--gvx-gray);
	font-size: 1rem;
	margin-bottom: 10px;
}

.gvx-plan__title {
	font-family: "Whitney", sans-serif;
	font-weight: 800;
	color: var(--gvx-ink);
	font-size: clamp(1.4rem, 2vw, 1.9rem);
	margin: 0 0 8px;
}

.gvx-plan__desc {
	font-family: "Whitney Book", Arial, sans-serif;
	color: var(--gvx-gray);
	font-size: 1rem;
	line-height: 1.4;
	margin: 0 0 18px;
	min-height: 2.8em;
}

.gvx-plan__pricing {
	margin: 0 0 20px;
}

.gvx-plan__was {
	display: block;
	font-family: "Whitney Book", Arial, sans-serif;
	color: var(--gvx-gray);
	font-size: .85rem;
}

.gvx-plan__price {
	display: flex;
	align-items: flex-start;
	color: var(--gvx-red);
}

.gvx-plan__price-main {
	font-family: "Whitney", sans-serif;
	font-weight: 900;
	font-size: clamp(3rem, 4.4vw, 4.5rem);
	line-height: 1;
}

.gvx-plan__price-frac {
	font-family: "Whitney Book", Arial, sans-serif;
	font-size: 1.35rem;
	padding-top: .5em;
}

.gvx-plan__features {
	list-style: none;
	margin: 0 0 28px;
	padding: 0;
}

.gvx-plan__features li {
	display: flex;
	align-items: center;
	gap: 10px;
	font-family: "Whitney Book", Arial, sans-serif;
	color: var(--gvx-ink);
	font-size: 1.05rem;
	padding: 5px 0;
}

.gvx-plan__check {
	flex: 0 0 auto;
}

.gvx-plan__btn {
	margin-top: auto;
	align-self: center;
	display: inline-block;
	background: var(--gvx-red);
	color: #fff !important;
	font-family: "Whitney", sans-serif;
	font-weight: 700;
	font-size: 1.1rem;
	text-decoration: none;
	padding: 16px 42px;
	border-radius: var(--gvx-radius-pill);
	transition: background .2s ease, transform .2s ease, box-shadow .2s ease;
}

.gvx-plan__btn:hover, .gvx-plan__btn:focus-visible {
	background: var(--gvx-red-dark);
	color: #fff;
	transform: scale(1.03);
	box-shadow: 0 8px 20px rgba(237, 28, 36, .3);
}

.gvx-plan__btn:focus-visible {
	outline: 2px solid var(--gvx-ink);
	outline-offset: 2px;
}

/* -------------------------------------------------------------
   Responsive
   ------------------------------------------------------------- */

/* =============================================================
   MOBILE (≤900px): stacked card — image block on top, text on a
   solid background below it (no overlay), single CTA button.
   ============================================================= */
@media (max-width: 900px) {
	.gvx-hero {
		padding: 0 12px;
		margin-top: 12px;
	}
	
	/* Slides become auto-height stacked cards */
	.gvx-hero__slider, .gvx-hero__slide {
		height: auto;
	}
	
	.gvx-hero__slider {
		background: #fff;
		border-radius: var(--gvx-radius-card) var(--gvx-radius-card) 0 0;
		/* bottom corners belong to the checker block */
		box-shadow: none;
	}
	
	.gvx-hero__slide {
		display: flex;
		flex-direction: column;
		background: #fff;
	}
	
	/* During crossfades, only the IMAGES should blend. Text-over-text
     ghosting looks broken on the white card, so non-active slides'
     content is hidden instantly the moment the transition starts. */
	.gvx-hero__slider .slick-slide:not(.slick-active) .gvx-hero__content {
		visibility: hidden;
	}
	
	/* Media block: fixed ratio area at the top of the card */
	.gvx-hero__media {
		position: relative;
		inset: auto;
		width: 100%;
		height: 58vw;
		min-height: 220px;
		max-height: 420px;
		border-radius: var(--gvx-radius-card) var(--gvx-radius-card) 0 0;
		overflow: hidden;
	}
	
	.gvx-hero__media::after {
		content: "";
		position: absolute;
		left: 0;
		right: 0;
		bottom: 0;
		height: 64px;
		background: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, .28) 100%);
		pointer-events: none;
	}
	
	/* No scrim needed — text no longer sits on the image */
	.gvx-hero__slide-scrim {
		display: none;
	}
	
	/* Text block: solid background, ink text (Spectrum-style separation) */
	.gvx-hero__content {
		position: static !important;
		transform: none !important;
		left: auto !important;
		right: auto !important;
		width: 100% !important;
		max-width: none !important;
		margin: 0 !important;
		padding: 28px 24px 4px !important;
		color: var(--gvx-ink);
	}
	
	.gvx-hero__eyebrow {
		color: var(--gvx-gray) !important;
		text-shadow: none !important;
		font-size: .85rem;
		margin-bottom: 12px;
	}
	
	.gvx-hero__headline {
		color: var(--gvx-ink);
		text-shadow: none;
		font-size: clamp(2.3rem, 10.5vw, 3rem);
		/* Spectrum-scale headline */
		line-height: 1.08;
		margin-bottom: 16px;
	}
	
	.gvx-hero__subheadline {
		color: var(--gvx-ink-soft);
		text-shadow: none;
		font-size: 1.1rem;
		line-height: 1.55;
		margin-bottom: 6px;
	}
	
	.gvx-hero__sub-link, .gvx-hero__sub-link:hover {
		color: var(--gvx-red);
	}
	
	/* Dots overlay the bottom of the IMAGE block (media height is fixed
     via the same clamp, so we anchor to its bottom edge and shift up) */
	.gvx-hero .gvx-hero__slider ul.slick-dots {
		position: absolute !important;
		top: min(max(58vw, 220px), 420px) !important;
		bottom: auto !important;
		transform: translateY(calc(-100% - 14px)) !important;
		margin: 0 !important;
	}
	
	.gvx-hero .gvx-hero__slider ul.slick-dots li button {
		width: 10px;
		height: 10px;
		background: rgba(255, 255, 255, .8) !important;
		box-shadow: 0 1px 5px rgba(0, 0, 0, .35);
	}
	
	.gvx-hero .gvx-hero__slider ul.slick-dots li.slick-active button {
		width: 40px;
		background: #fff !important;
	}
	
	/* Availability: hide input experiences, show single CTA button */
	.gvx-hero__checker {
		position: static;
		transform: none;
		width: auto;
		padding: 8px 24px 30px;
		background: #fff;
		border-radius: 0 0 var(--gvx-radius-card) var(--gvx-radius-card);
	}
	
	.gvx-hero__checker-atlas, .gvx-hero__checker-form {
		display: none !important;
	}
	
	.gvx-hero__checker-mobile-btn {
		display: block;
		text-align: center;
		background: var(--gvx-red);
		color: #fff !important;
		font-family: "Whitney", sans-serif;
		font-weight: 700;
		font-size: 1.1rem;
		line-height: 1;
		text-decoration: none;
		padding: 16px 20px;
		margin-top: 16px;
		border-radius: var(--gvx-radius-pill);
		box-shadow: 0 6px 16px rgba(237, 28, 36, .25);
	}
	
	.gvx-hero__checker-mobile-btn:active {
		background: var(--gvx-red-dark);
	}
	
	.gvx-hero__checker-mobile-hint {
		display: block;
		color: var(--gvx-gray);
		font-family: "Whitney Book", Arial, sans-serif;
		font-size: .8rem;
		line-height: 1.5;
		text-align: center;
		margin: 14px 0 0;
	}
}

@media (max-width: 600px) {
	.gvx-plan__desc {
		min-height: 0;
	}
}

/* Reduced motion: slider autoplay is also disabled in JS */
@media (prefers-reduced-motion: reduce) {
	.gvx-hero__slider .slick-dots button, .gvx-hero__checker-btn, .gvx-plan__btn, .gvx-plan, .gvx-hero__checker-atlas, .gvx-hero__checker-form {
		transition: none;
	}
	
	.gvx-hero__slider--single .gvx-hero__slide-img, .gvx-hero__slider--single .gvx-hero__headline, .gvx-hero__slider--single .gvx-hero__subheadline, .gvx-hero__slider .slick-active .gvx-hero__slide-img, .gvx-hero__slider .slick-active .gvx-hero__headline, .gvx-hero__slider--single .gvx-hero__subheadline, .gvx-hero__slider .slick-active .gvx-hero__subheadline {
		animation: none;
	}
	
	.gvx-reveal {
		opacity: 1;
		transform: none;
		transition: none;
	}
}

/* =============================================================
   PROMO BANNER — full-width 4th box under the plan grid
   ============================================================= */
.gvx-promo {
	position: relative;
	overflow: hidden;
	/* arc + image bleed are clipped to the rounded card */
	display: flex;
	align-items: center;
	gap: clamp(20px, 3vw, 44px);
	margin-top: clamp(18px, 2.5vw, 32px);
	padding: clamp(26px, 3vw, 44px) clamp(24px, 3.5vw, 52px);
	border-radius: var(--gvx-radius-card);
	color: #fff;
	transition: transform .3s cubic-bezier(.22, .61, .36, 1), box-shadow .3s ease;
}

.gvx-promo:hover {
	transform: translateY(-6px);
	box-shadow: 0 22px 44px rgba(0, 0, 0, .18);
}

.gvx-promo--red {
	background: linear-gradient(120deg, var(--gvx-red) 0%, var(--gvx-red-dark) 100%);
}

.gvx-promo--black {
	background: linear-gradient(120deg, #000 0%, #292929 100%);
}

/* Black theme = red + white copy treatment */
.gvx-promo--black .gvx-promo__price, .gvx-promo--black .gvx-promo__no-price {
	color: var(--gvx-red);
}

.gvx-promo--black .gvx-promo__stats-divider {
	background: rgba(237, 28, 36, .55);
}

.gvx-promo--black .gvx-promo__arc, .gvx-promo--black .gvx-promo__arc::after {
	border-color: rgba(237, 28, 36, .18);
}

.gvx-promo--black .gvx-promo__svg {
	color: var(--gvx-red);
}

.gvx-promo--black .gvx-promo__btn {
	background: var(--gvx-red);
	color: #fff !important;
}

.gvx-promo--black .gvx-promo__btn:hover, .gvx-promo--black .gvx-promo__btn:focus-visible {
	background: var(--gvx-red-dark);
}

/* Decorative background arc — brand-swoosh energy behind the content */
.gvx-promo__arc {
	position: absolute;
	top: -85%;
	right: -6%;
	width: 92%;
	aspect-ratio: 1;
	border: clamp(36px, 5vw, 80px) solid rgba(255, 255, 255, .1);
	border-radius: 50%;
	pointer-events: none;
}

.gvx-promo__arc::after {
	content: "";
	position: absolute;
	inset: -38%;
	border: clamp(20px, 3vw, 40px) solid rgba(255, 255, 255, .05);
	border-radius: 50%;
}

/* Icon + its animations */
.gvx-promo__icon {
	order: 2;
	/* visual anchor on the right, like the reference layout */
	flex: 0 0 auto;
	position: relative;
	z-index: 1;
	width: clamp(64px, 7vw, 96px);
	height: clamp(64px, 7vw, 96px);
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: 999px;
	background: rgba(255, 255, 255, .14);
}

.gvx-promo__icon--xl {
	width: clamp(170px, 18vw, 270px);
	height: clamp(170px, 18vw, 270px);
	border-radius: 0;
	background: none;
	margin: clamp(-10px, -1vw, -18px) 0;
}

.gvx-promo__icon--xl .gvx-promo__svg {
	width: 100%;
	height: 100%;
	filter: drop-shadow(0 10px 30px rgba(0, 0, 0, .25));
}

.gvx-promo__svg {
	width: 62%;
	height: 62%;
	color: #fff;
	overflow: visible;
}

/* Custom image mode: large illustration anchored to the banner's right edge */
.gvx-promo__visual {
	order: 2;
	flex: 0 0 auto;
	align-self: stretch;
	position: relative;
	z-index: 1;
	width: clamp(220px, 32vw, 560px);
	margin: clamp(-26px, -3vw, -44px) clamp(-24px, -3.5vw, -52px) clamp(-26px, -3vw, -44px) 0;
	/* bleeds into the banner padding */
	display: flex;
	align-items: flex-end;
	justify-content: flex-end;
}

.gvx-promo__visual img {
	width: 100%;
	height: 100%;
	object-fit: contain;
	object-position: right bottom;
	display: block;
}

.gvx-promo--has-image .gvx-promo__body {
	padding-right: clamp(4px, 1vw, 16px);
}

.gvx-promo__svg--bolt {
	animation: gvxPromoPulse 1.8s ease-in-out infinite;
}

@keyframes gvxPromoPulse {
	0%, 100% {
		transform: scale(1);
		opacity: 1;
	}
	
	50% {
		transform: scale(1.12);
		opacity: .85;
	}
}

.gvx-promo__svg--gauge .gvx-promo__needle {
	transform-origin: 50% 64.5%;
	animation: gvxPromoNeedle 2.6s ease-in-out infinite;
}

@keyframes gvxPromoNeedle {
	0%, 100% {
		transform: rotate(-38deg);
	}
	
	55% {
		transform: rotate(46deg);
	}
	
	70% {
		transform: rotate(34deg);
	}
}

.gvx-promo__svg--rocket {
	animation: gvxPromoFloat 2.4s ease-in-out infinite;
}

@keyframes gvxPromoFloat {
	0%, 100% {
		transform: translateY(4px);
	}
	
	50% {
		transform: translateY(-5px);
	}
}

.gvx-promo__wave {
	opacity: .4;
	animation: gvxPromoWave 2s ease-in-out infinite;
}

.gvx-promo__wave--2 {
	animation-delay: .35s;
}

@keyframes gvxPromoWave {
	0%, 100% {
		opacity: .25;
	}
	
	50% {
		opacity: 1;
	}
}

.gvx-promo__svg--star {
	animation: gvxPromoSparkle 2.2s ease-in-out infinite;
}

@keyframes gvxPromoSparkle {
	0%, 100% {
		transform: scale(1) rotate(0deg);
	}
	
	50% {
		transform: scale(1.1) rotate(8deg);
	}
}

/* Copy block — mirrors plan-card type on a dark surface */
.gvx-promo__body {
	order: 1;
	flex: 1 1 auto;
	min-width: 0;
	position: relative;
	z-index: 1;
}

.gvx-promo__copy {
	max-width: 720px;
}

.gvx-promo__deal .gvx-promo__stats {
	margin-top: clamp(20px, 2.4vw, 32px);
}

/* Big stat row: SPEED · divider · PRICE */
.gvx-promo__stats {
	display: flex;
	align-items: flex-end;
	gap: clamp(14px, 2vw, 26px);
	margin-top: clamp(16px, 2vw, 26px);
}

.gvx-promo__speed {
	font-family: "Whitney", sans-serif;
	font-weight: 900;
	color: #fff;
	font-size: clamp(3.2rem, 6.5vw, 6.5rem);
	line-height: 1;
	white-space: nowrap;
}

.gvx-promo__stats-divider {
	width: 2px;
	align-self: stretch;
	background: rgba(255, 255, 255, .35);
	border-radius: 2px;
}

/* CTA row: button + quiet text link */
.gvx-promo__cta-row {
	display: flex;
	align-items: center;
	gap: clamp(14px, 1.6vw, 22px);
	margin-top: clamp(16px, 2vw, 24px);
	flex-wrap: wrap;
}

.gvx-promo__cta-row {
	row-gap: 10px;
}

.gvx-promo__sec-link {
	font-family: "Whitney Book", Arial, sans-serif;
	font-size: .95rem;
	white-space: nowrap;
	color: #fff !important;
	text-decoration: underline;
	text-underline-offset: 4px;
	text-decoration-color: rgba(255, 255, 255, .5);
	transition: text-decoration-color .2s ease;
}

.gvx-promo__sec-link:hover {
	text-decoration-color: #fff;
}

.gvx-promo__eyebrow {
	display: block;
	font-family: "Whitney Book", Arial, sans-serif;
	font-weight: 600;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, .85);
	font-size: .95rem;
	margin-bottom: 8px;
}

.gvx-promo__heading {
	font-family: "Whitney", sans-serif;
	font-weight: 800;
	text-transform: none;
	/* brand: sentence case; ALL-CAPS is for eyebrows only */
	color: #fff;
	font-size: clamp(2.4rem, 4.2vw, 4.25rem);
	line-height: 1.05;
	margin: 0 0 12px;
}

.gvx-promo__blurb {
	font-family: "Whitney Book", Arial, sans-serif;
	font-weight: 300;
	color: rgba(255, 255, 255, .92);
	font-size: clamp(1.15rem, 1.6vw, 1.45rem);
	line-height: 1.45;
	margin: 0;
}

.gvx-promo__chips {
	list-style: none;
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin: 14px 0 0;
	padding: 0;
}

.gvx-promo__chips li {
	font-family: "Whitney Book", Arial, sans-serif;
	font-size: 1rem;
	color: #fff;
	background: rgba(255, 255, 255, .16);
	border: 1px solid rgba(255, 255, 255, .28);
	border-radius: 999px;
	padding: 6px 14px;
	white-space: nowrap;
}

.gvx-promo__price {
	display: flex;
	align-items: flex-start;
	color: #fff;
}

.gvx-promo__price-main {
	font-family: "Whitney", sans-serif;
	font-weight: 900;
	font-size: clamp(3.2rem, 6.5vw, 6.5rem);
	line-height: 1;
}

.gvx-promo__price-frac {
	font-family: "Whitney Book", Arial, sans-serif;
	font-size: 1.5rem;
	padding-top: .5em;
}

/* Stat blocks: optional small caption above each big value */
.gvx-promo__stat-block {
	display: flex;
	flex-direction: column;
}

.gvx-promo__stat-caption {
	font-family: "Whitney Book", Arial, sans-serif;
	font-size: clamp(1rem, 1.3vw, 1.25rem);
	color: rgba(255, 255, 255, .85);
	margin-bottom: 6px;
	white-space: nowrap;
}

/* No-price fallback statement (renders in the price's spot) */
.gvx-promo__no-price {
	font-family: "Whitney", sans-serif;
	font-weight: 800;
	color: #fff;
	font-size: clamp(1.5rem, 2.4vw, 2.4rem);
	line-height: 1.15;
	max-width: 16ch;
}

/* Marked-out original price above the big price */
.gvx-promo__price-block {
	display: flex;
	flex-direction: column;
}

.gvx-promo__was {
	font-family: "Whitney Book", Arial, sans-serif;
	font-size: clamp(1.05rem, 1.4vw, 1.35rem);
	color: rgba(255, 255, 255, .75);
	margin-bottom: 4px;
}

.gvx-promo__was s {
	text-decoration-thickness: 2px;
}

.gvx-promo__btn {
	display: inline-block;
	background: #fff;
	font-family: "Whitney", sans-serif;
	font-weight: 700;
	font-size: 1.2rem;
	text-decoration: none;
	padding: 18px 44px;
	border-radius: var(--gvx-radius-pill);
	box-shadow: 0 10px 26px rgba(0, 0, 0, .22);
	transition: transform .2s ease, box-shadow .2s ease;
	white-space: nowrap;
}

.gvx-promo--red .gvx-promo__btn {
	color: var(--gvx-red) !important;
}

.gvx-promo--black .gvx-promo__btn {
	color: #000 !important;
}

.gvx-promo__btn:hover, .gvx-promo__btn:focus-visible {
	transform: translateY(-2px) scale(1.04);
	box-shadow: 0 14px 32px rgba(0, 0, 0, .3);
}

.gvx-promo__btn:focus-visible {
	outline: 2px solid #fff;
	outline-offset: 3px;
}

/* Mobile: stack it like a plan card */
@media (max-width: 900px) {
	.gvx-promo {
		flex-direction: column;
		align-items: flex-start;
		text-align: left;
		gap: 18px;
	}
	
	.gvx-promo__icon {
		display: none;
	}
	
	/* stat row carries the banner on mobile */
	.gvx-promo__copy {
		max-width: none;
	}
	
	.gvx-promo__deal .gvx-promo__stats {
		margin-top: 16px;
	}
	
	.gvx-promo__visual {
		order: 0;
		width: 100%;
		max-height: 220px;
		margin: -8px 0 0;
		justify-content: center;
		align-items: center;
	}
	
	.gvx-promo__visual img {
		object-position: center;
		max-height: 220px;
	}
	
	.gvx-promo__arc {
		top: auto;
		bottom: -80%;
		right: -30%;
	}
	
	.gvx-promo__stats {
		flex-wrap: wrap;
	}
	
	.gvx-promo__cta-row {
		width: 100%;
		flex-direction: column;
		align-items: stretch;
		gap: 12px;
	}
	
	.gvx-promo__btn {
		width: 100%;
		text-align: center;
	}
	
	.gvx-promo__sec-link {
		text-align: center;
	}
}

/* Reduced motion: static icons, no lifts */
@media (prefers-reduced-motion: reduce) {
	.gvx-promo, .gvx-promo__btn {
		transition: none;
	}
	
	.gvx-promo__svg--bolt, .gvx-promo__svg--rocket, .gvx-promo__svg--star, .gvx-promo__wave, .gvx-promo__svg--gauge .gvx-promo__needle {
		animation: none;
	}
}
