/* ==========================================================================
   Santa Rita — Motion layer
   Pinned hero sequence (Aon-style), kinetic type, tilt cards, marquee,
   custom cursor. Hidden/animated states only apply when <html> has
   `.sr-motion` (set in <head> unless the visitor prefers reduced motion).
   ========================================================================== */
:root {
	--sr-ease: cubic-bezier(0.77, 0, 0.18, 1);
	--sr-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
	--sr-hx-intro-w: 64%;
}

/* `overflow-x: hidden` on body/.site turns them into scroll containers, which
   breaks `position: sticky` for the pinned hero; `clip` hides overflow without that. */
body,
.site {
	overflow-x: clip;
}

/* --------------------------------------------------------------------------
   Scroll progress bar
   -------------------------------------------------------------------------- */
.sr-progress {
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 3px;
	background: var(--primary-color);
	transform-origin: 0 50%;
	transform: scaleX(var(--sr-p, 0));
	z-index: 1100;
	pointer-events: none;
}

/* Header hides while scrolling down (below the hero), returns on scroll up */
.site-header {
	transition: transform 0.5s var(--sr-ease-out), background-color 0.3s ease, box-shadow 0.3s ease;
}
.site-header.sr-header-hidden {
	transform: translateY(-100%);
}

/* --------------------------------------------------------------------------
   Word splitting (filled by JS)
   -------------------------------------------------------------------------- */
.sr-w {
	display: inline-block;
	overflow: hidden;
	vertical-align: top;
	padding-bottom: 0.08em;
	margin-bottom: -0.08em;
}
.sr-w-i {
	display: inline-block;
	will-change: transform;
}

/* ==========================================================================
   HERO — base / static layout (mobile, reduced motion, no JS)
   ========================================================================== */
.sr-hx.hero-section {
	height: auto;
	min-height: 0;
	display: block;
	text-align: left;
	background: var(--dark-bg);
	color: #fff;
	padding: 0;
}

.sr-hx-sticky {
	position: relative;
	display: flex;
	flex-direction: column;
}

.sr-hx-intro {
	order: -1;
	position: relative;
	background: var(--dark-bg);
	padding: 130px 20px 56px;
	display: flex;
	flex-direction: column;
	gap: 40px;
	overflow: hidden;
}
.sr-hx-intro::before {
	/* faint engineering grid */
	content: '';
	position: absolute;
	inset: 0;
	background-image:
		linear-gradient(rgba(255,255,255,0.045) 1px, transparent 1px),
		linear-gradient(90deg, rgba(255,255,255,0.045) 1px, transparent 1px);
	background-size: 64px 64px;
	mask-image: radial-gradient(ellipse at 20% 30%, #000 10%, transparent 75%);
	-webkit-mask-image: radial-gradient(ellipse at 20% 30%, #000 10%, transparent 75%);
	pointer-events: none;
}
.sr-hx-intro::after {
	/* orange glow */
	content: '';
	position: absolute;
	width: 60vmax;
	height: 60vmax;
	left: -20vmax;
	bottom: -35vmax;
	background: radial-gradient(circle, rgba(255, 85, 0, 0.22), transparent 60%);
	pointer-events: none;
}
.sr-hx-intro > * {
	position: relative;
	z-index: 1;
	min-width: 0;
}

.sr-hx .hero-subtitle {
	font-family: var(--font-accent);
	font-size: 0.95rem;
	letter-spacing: 0.35em;
	color: rgba(255,255,255,0.7);
	margin-bottom: 1rem;
}
.sr-hx .hero-title {
	font-size: clamp(2.2rem, 10vw, 7.6rem);
	overflow-wrap: anywhere;
	line-height: 0.92;
	letter-spacing: -0.035em;
	font-weight: 900;
	color: #fff;
	text-shadow: none;
	margin-bottom: 1.6rem;
}
.sr-hx .hero-title .sr-w:last-child .sr-w-i {
	color: var(--primary-color);
}
.sr-hx .hero-description {
	font-size: clamp(1rem, 1.25vw, 1.2rem);
	max-width: 520px;
	color: rgba(255,255,255,0.75);
	margin-bottom: 2rem;
}

.sr-hx-actions .btn {
	padding: 16px 30px;
}
.sr-hx-actions .btn i {
	transition: transform 0.3s var(--sr-ease-out);
}
.sr-hx-actions .btn:hover i {
	transform: translateX(5px);
}

.sr-hx-stats {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 20px 28px;
	margin-top: 44px;
	padding-top: 28px;
	border-top: 1px solid rgba(255,255,255,0.12);
}
.sr-hx-stat strong {
	display: block;
	font-family: var(--font-heading);
	font-size: 2rem;
	font-weight: 800;
	line-height: 1;
	color: #fff;
}
.sr-hx-stat strong small {
	font-size: 0.5em;
	margin-left: 3px;
	color: var(--primary-color);
}
.sr-hx-stat span {
	display: block;
	margin-top: 6px;
	font-size: 0.8rem;
	color: rgba(255,255,255,0.55);
	line-height: 1.35;
}

/* "Quiero…" quick links */
.sr-hx-quick {
	display: flex;
	flex-direction: column;
}
.sr-hx-quick-title {
	font-family: var(--font-accent);
	font-size: 0.8rem;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: rgba(255,255,255,0.5);
	margin-bottom: 10px;
}
.sr-hx-quick a {
	position: relative;
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 16px;
	padding: 16px 0;
	color: #fff;
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 1rem;
	border-bottom: 1px solid rgba(255,255,255,0.14);
}
.sr-hx-quick a::after {
	content: '';
	position: absolute;
	left: 0;
	bottom: -1px;
	height: 2px;
	width: 100%;
	background: var(--primary-color);
	transform: scaleX(0);
	transform-origin: 100% 50%;
	transition: transform 0.5s var(--sr-ease);
}
.sr-hx-quick a:hover,
.sr-hx-quick a:focus-visible {
	color: var(--primary-color);
	padding-left: 10px;
}
.sr-hx-quick a:hover::after,
.sr-hx-quick a:focus-visible::after {
	transform: scaleX(1);
	transform-origin: 0 50%;
}
.sr-hx-quick a i {
	font-size: 0.85em;
	transition: transform 0.4s var(--sr-ease-out);
}
.sr-hx-quick a:hover i {
	transform: translateX(6px) rotate(-45deg);
}

.sr-hx-cue {
	display: none;
}

/* Slides (stacked cards in static layout) */
.sr-hx-slides {
	display: flex;
	flex-direction: column;
}
.sr-hx-slide {
	position: relative;
	min-height: 78vh;
	display: flex;
	align-items: flex-end;
	overflow: hidden;
	isolation: isolate;
}
.sr-hx-slide-bg {
	position: absolute;
	inset: -24px;
	background-size: cover;
	background-position: center;
	z-index: -2;
}
.sr-hx-slide-shade {
	position: absolute;
	inset: 0;
	background:
		linear-gradient(to top, rgba(11,11,12,0.92) 0%, rgba(11,11,12,0.35) 55%, rgba(11,11,12,0.15) 100%),
		linear-gradient(90deg, rgba(11,11,12,0.55), transparent 60%);
	z-index: -1;
}
.sr-hx-slide-num {
	position: absolute;
	top: 0.06em;
	right: -0.04em;
	font-family: var(--font-heading);
	font-weight: 900;
	font-size: 46vw;
	line-height: 0.8;
	letter-spacing: -0.06em;
	color: transparent;
	-webkit-text-stroke: 2px rgba(255,255,255,0.22);
	pointer-events: none;
	z-index: -1;
}
.sr-hx-slide-content {
	width: 100%;
	padding-top: 60px;
	padding-bottom: 60px;
}
.sr-hx-slide-title {
	/* sized so long single words (INFRAESTRUCTURA) stay on one line */
	font-size: clamp(1.7rem, min(4.4vw, 8.5vh), 4.6rem);
	font-weight: 900;
	line-height: 1;
	letter-spacing: -0.02em;
	text-transform: uppercase;
	color: #fff;
	max-width: 22ch;
	margin-bottom: 1.25rem;
}
/* Sentence-length titles (e.g. "El Epicentro del Nearshoring…") */
.sr-hx-slide-title.is-long {
	font-size: clamp(1.6rem, min(3.1vw, 6.2vh), 3.4rem);
	line-height: 1.05;
	max-width: 24ch;
}
@media (max-width: 600px) {
	.sr-hx-slide-title.is-long {
		font-size: 6vw;
	}
	.sr-hx-slide-title {
		font-size: 7vw;
		overflow-wrap: anywhere;
	}
}
.sr-hx-slide-desc {
	font-size: clamp(1rem, 1.3vw, 1.2rem);
	color: rgba(255,255,255,0.82);
	max-width: 560px;
	margin-bottom: 1.75rem;
}
.sr-hx-slide-link {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	color: #fff;
	font-family: var(--font-accent);
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	font-size: 0.9rem;
	padding-bottom: 6px;
	border-bottom: 2px solid var(--primary-color);
}
.sr-hx-slide-link:hover {
	color: var(--primary-color);
	gap: 20px;
}

.sr-hx-nav {
	display: none;
}

@media (min-width: 768px) {
	.sr-hx-stats {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

/* ==========================================================================
   HERO — pinned sequence (desktop, class added by JS)
   ========================================================================== */
.sr-hx.sr-hx--pinned {
	height: calc((var(--sr-hx-count, 4) + 1) * 85vh + 100vh);
}
.sr-hx--pinned .sr-hx-sticky {
	position: sticky;
	top: 0;
	height: 100vh;
	min-height: 640px;
	overflow: hidden;
	display: block;
}

/* Intro panel */
.sr-hx--pinned .sr-hx-intro {
	position: absolute;
	top: 0;
	left: 0;
	bottom: 0;
	width: var(--sr-hx-intro-w);
	z-index: 30;
	padding: 96px 56px 24px max(56px, calc((100vw - 1440px) / 2 + 40px));
	display: grid;
	grid-template-columns: minmax(0, 1fr) 280px;
	/* row 1: content (centered in the free space), row 2: scroll hint */
	grid-template-rows: minmax(0, 1fr) auto;
	align-items: center;
	column-gap: 56px;
	row-gap: 16px;
	transition: transform 1.25s var(--sr-ease);
	will-change: transform;
}
.sr-hx--pinned .hero-title {
	/* limited by height too, so the intro fits short/zoomed screens */
	font-size: clamp(2.4rem, min(4.3vw, 9vh), 5.8rem);
	margin-bottom: min(1.6rem, 2.5vh);
	overflow-wrap: normal;
}
.sr-hx--pinned .hero-subtitle {
	margin-bottom: min(1rem, 1.5vh);
}
.sr-hx--pinned .hero-description {
	font-size: clamp(0.95rem, min(1.2vw, 2.3vh), 1.2rem);
	margin-bottom: min(2rem, 3.5vh);
}
.sr-hx--pinned .sr-hx-actions .btn {
	padding: min(16px, 2vh) 30px;
}
.sr-hx--pinned .sr-hx-stats {
	margin-top: min(32px, 4vh);
	padding-top: min(22px, 3vh);
}
.sr-hx--pinned .sr-hx-stat strong {
	font-size: 1.7rem;
}
.sr-hx--pinned .sr-hx-intro > .sr-hx-intro-main,
.sr-hx--pinned .sr-hx-intro > .sr-hx-quick {
	transition: transform 1.25s var(--sr-ease), opacity 0.8s ease;
}
.sr-hx--pinned .sr-hx-cue {
	grid-column: 1 / -1;
	grid-row: 2;
	display: flex;
	align-items: center;
	gap: 14px;
	font-family: var(--font-accent);
	font-size: 0.75rem;
	letter-spacing: 0.25em;
	text-transform: uppercase;
	color: rgba(255,255,255,0.55);
}
.sr-hx-cue-line {
	position: relative;
	width: 60px;
	height: 1px;
	background: rgba(255,255,255,0.2);
	overflow: hidden;
}
.sr-hx-cue-line::after {
	content: '';
	position: absolute;
	inset: 0;
	background: var(--primary-color);
	animation: sr-cue 2s var(--sr-ease) infinite;
}
@keyframes sr-cue {
	0% { transform: translateX(-100%); }
	60%, 100% { transform: translateX(100%); }
}

/* Slides stack */
.sr-hx--pinned .sr-hx-slides {
	position: absolute;
	inset: 0;
	display: block;
}
.sr-hx--pinned .sr-hx-slide {
	position: absolute;
	inset: 0;
	min-height: 0;
	align-items: center;
	clip-path: inset(0 0 0 100%);
	transition:
		clip-path 1.25s var(--sr-ease),
		transform 1.25s var(--sr-ease),
		filter 1.25s var(--sr-ease);
	will-change: clip-path, transform;
}
.sr-hx--pinned .sr-hx-slide-bg {
	transform:
		translate3d(calc(var(--sr-mx, 0) * -26px), calc(var(--sr-my, 0) * -26px), 0)
		scale(1.35);
	transition: transform 1.8s var(--sr-ease-out);
}
.sr-hx--pinned .sr-hx-slide-content {
	padding-left: max(56px, calc((100vw - 1440px) / 2 + 40px));
	padding-right: 56px;
	padding-top: 110px;
	padding-bottom: 120px;
	max-width: none;
	max-height: 100%;
}
.sr-hx--pinned .sr-hx-slide-num {
	top: auto;
	bottom: -0.12em;
	right: -0.02em;
	font-size: 44vw;
	transform: translateX(40%);
	opacity: 0;
	transition: transform 1.6s var(--sr-ease), opacity 1s ease;
}

/* Step -1: the first slide peeks to the right of the intro panel */
.sr-hx--pinned .sr-hx-slide.is-peek {
	clip-path: inset(0 0 0 var(--sr-hx-intro-w));
}
.sr-hx--pinned .sr-hx-slide.is-peek .sr-hx-slide-bg {
	transform:
		translate3d(calc(var(--sr-mx, 0) * -14px), calc(var(--sr-my, 0) * -14px), 0)
		scale(1.15);
}

/* Active slide */
.sr-hx--pinned .sr-hx-slide.is-active {
	clip-path: inset(0 0 0 0);
}
.sr-hx--pinned .sr-hx-slide.is-active .sr-hx-slide-bg {
	transform:
		translate3d(calc(var(--sr-mx, 0) * -26px), calc(var(--sr-my, 0) * -26px), 0)
		scale(1.06);
}
.sr-hx--pinned .sr-hx-slide.is-active .sr-hx-slide-num {
	transform: translateX(0);
	opacity: 1;
	transition-delay: 0.25s;
}

/* Slides already passed get pushed left, shrunk and darkened */
.sr-hx--pinned .sr-hx-slide.is-past {
	clip-path: inset(0 0 0 0);
	transform: translateX(-28%) scale(0.9);
	filter: brightness(0.3);
}

/* Intro leaves once the sequence starts */
.sr-hx--pinned[data-step]:not([data-step="-1"]) .sr-hx-intro {
	transform: translateX(-101%);
}
.sr-hx--pinned[data-step]:not([data-step="-1"]) .sr-hx-intro-main {
	transform: translateX(-30%);
	opacity: 0;
}
.sr-hx--pinned[data-step]:not([data-step="-1"]) .sr-hx-quick {
	transform: translateX(-60%);
	opacity: 0;
}

/* Slide copy */
.sr-motion .sr-hx--pinned .sr-hx-slide .sr-w-i {
	transform: translateY(115%) rotate(8deg);
	transform-origin: 0 100%;
	transition: transform 1s var(--sr-ease-out);
}
.sr-motion .sr-hx--pinned .sr-hx-slide.is-active .sr-w-i {
	transform: none;
	transition-delay: calc(0.45s + var(--sr-wi, 0) * 0.07s);
}
.sr-motion .sr-hx--pinned .sr-hx-slide-desc,
.sr-motion .sr-hx--pinned .sr-hx-slide-link {
	opacity: 0;
	transform: translateY(40px);
	transition: opacity 0.6s ease, transform 0.9s var(--sr-ease-out);
}
.sr-motion .sr-hx--pinned .sr-hx-slide.is-active .sr-hx-slide-desc {
	opacity: 1;
	transform: none;
	transition-delay: 0.75s;
}
.sr-motion .sr-hx--pinned .sr-hx-slide.is-active .sr-hx-slide-link {
	opacity: 1;
	transform: none;
	transition-delay: 0.9s;
}

/* Bottom navigation */
.sr-hx--pinned .sr-hx-nav {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 40;
	display: grid;
	grid-template-columns: repeat(var(--sr-hx-count, 4), minmax(0, 1fr));
	gap: 28px;
	padding: 0 max(110px, calc((100vw - 1440px) / 2 + 40px)) 34px max(56px, calc((100vw - 1440px) / 2 + 40px));
	transform: translateY(110%);
	opacity: 0;
	transition: transform 1s var(--sr-ease), opacity 0.6s ease;
}
.sr-hx--pinned[data-step]:not([data-step="-1"]) .sr-hx-nav {
	transform: none;
	opacity: 1;
	transition-delay: 0.5s;
}
.sr-hx-nav-item {
	display: grid;
	grid-template-columns: auto 1fr;
	align-items: baseline;
	column-gap: 12px;
	row-gap: 14px;
	background: none;
	border: 0;
	padding: 0;
	text-align: left;
	cursor: pointer;
	color: rgba(255,255,255,0.5);
	font-family: var(--font-heading);
	transition: color 0.3s ease;
}
.sr-hx-nav-item:hover,
.sr-hx-nav-item.is-active {
	color: #fff;
}
.sr-hx-nav-bar {
	grid-column: 1 / -1;
	position: relative;
	height: 2px;
	background: rgba(255,255,255,0.22);
	overflow: hidden;
}
.sr-hx-nav-bar span {
	position: absolute;
	inset: 0;
	background: var(--primary-color);
	transform-origin: 0 50%;
	transform: scaleX(0);
}
.sr-hx-nav-item.is-past .sr-hx-nav-bar span {
	transform: scaleX(1);
}
.sr-hx-nav-bar span {
	transition: transform 1.2s var(--sr-ease);
}
.sr-hx-nav-item.is-active .sr-hx-nav-bar span {
	transform: scaleX(1);
	transition-delay: 0.2s;
}
.sr-hx-nav-num {
	font-size: 0.8rem;
	font-weight: 700;
	color: var(--primary-color);
}
.sr-hx-nav-label {
	font-size: 0.85rem;
	font-weight: 600;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

/* Intro entrance on load */
.sr-motion .sr-hx .sr-hx-intro .sr-w-i {
	transform: translateY(110%);
	transition: transform 1.2s var(--sr-ease-out);
	transition-delay: calc(0.2s + var(--sr-wi, 0) * 0.1s);
}
.sr-motion .sr-hx .sr-hx-in {
	opacity: 0;
	transform: translateY(30px);
	transition: opacity 0.9s ease, transform 1.1s var(--sr-ease-out);
}
.sr-motion .sr-hx.is-ready .sr-hx-intro .sr-w-i,
.sr-motion .sr-hx.is-ready .sr-hx-in {
	opacity: 1;
	transform: none;
}
.sr-motion .sr-hx.is-ready .hero-subtitle.sr-hx-in { transition-delay: 0.1s; }
.sr-motion .sr-hx.is-ready .hero-description.sr-hx-in { transition-delay: 0.55s; }
.sr-motion .sr-hx.is-ready .sr-hx-actions.sr-hx-in { transition-delay: 0.7s; }
.sr-motion .sr-hx.is-ready .sr-hx-stats.sr-hx-in { transition-delay: 0.85s; }
.sr-motion .sr-hx.is-ready .sr-hx-quick.sr-hx-in { transition-delay: 0.6s; }

/* Peek image wipes in on load */
.sr-motion .sr-hx--pinned:not(.is-ready) .sr-hx-slide.is-peek {
	clip-path: inset(0 0 0 100%);
}

/* ==========================================================================
   Kinetic type band
   ========================================================================== */
.sr-kinetic {
	overflow: hidden;
	padding: 6vw 0 4vw;
	background: #fff;
	user-select: none;
}
.sr-kinetic-row {
	display: flex;
	gap: 0.35em;
	white-space: nowrap;
	font-family: var(--font-heading);
	font-weight: 900;
	font-size: clamp(4rem, 13vw, 14rem);
	line-height: 0.92;
	letter-spacing: -0.04em;
	text-transform: uppercase;
	color: var(--text-dark);
	will-change: transform;
}
.sr-kinetic-row:nth-child(2) {
	margin-left: -40vw;
}
.sr-kinetic-row .is-outline {
	color: transparent;
	-webkit-text-stroke: 2px var(--primary-color);
}

/* ==========================================================================
   Headline word reveal for section titles
   ========================================================================== */
.sr-motion .sr-title-split .sr-w-i {
	transform: translateY(105%);
	transition: transform 1s var(--sr-ease-out);
	transition-delay: calc(var(--sr-wi, 0) * 0.06s);
}
.sr-motion .sr-title-split.is-in .sr-w-i {
	transform: none;
}

/* ==========================================================================
   Investment cards: 3D tilt + spotlight
   ========================================================================== */
.inv-card.sr-tilt {
	transform: perspective(900px) rotateX(var(--sr-rx, 0deg)) rotateY(var(--sr-ry, 0deg)) translateZ(0);
	transition: transform 0.5s var(--sr-ease-out), box-shadow 0.4s ease;
	transform-style: preserve-3d;
}
.inv-card.sr-tilt.is-tilting {
	transition: transform 0.1s linear, box-shadow 0.4s ease;
	box-shadow: 0 30px 60px rgba(0,0,0,0.45);
}
.inv-card.sr-tilt::after {
	content: '';
	position: absolute;
	inset: 0;
	border-radius: inherit;
	background: radial-gradient(420px circle at var(--sr-px, 50%) var(--sr-py, 50%), rgba(255,255,255,0.22), transparent 45%);
	opacity: 0;
	transition: opacity 0.3s ease;
	pointer-events: none;
	z-index: 3;
}
.inv-card.sr-tilt.is-tilting::after {
	opacity: 1;
}

/* ==========================================================================
   Partner logos marquee
   ========================================================================== */
.partners-logos.sr-marquee {
	display: block;
	overflow: hidden;
	mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent);
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent);
}
.sr-marquee-track {
	display: flex;
	align-items: center;
	gap: 72px;
	width: max-content;
	animation: sr-marquee 32s linear infinite;
}
.sr-marquee:hover .sr-marquee-track {
	animation-play-state: paused;
}
@keyframes sr-marquee {
	to { transform: translateX(calc(-50% - 36px)); }
}

/* ==========================================================================
   Magnetic buttons + custom cursor
   ========================================================================== */
.sr-magnetic {
	transition: transform 0.4s var(--sr-ease-out), background-color 0.3s ease, box-shadow 0.3s ease;
}

.sr-cursor {
	position: fixed;
	top: 0;
	left: 0;
	width: 44px;
	height: 44px;
	margin: -22px 0 0 -22px;
	border: 1.5px solid var(--primary-color);
	border-radius: 50%;
	pointer-events: none;
	z-index: 2000;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: width 0.35s var(--sr-ease-out), height 0.35s var(--sr-ease-out), margin 0.35s var(--sr-ease-out), background-color 0.3s ease, opacity 0.3s ease, border-color 0.3s ease;
	opacity: 0;
}
.sr-cursor.is-visible {
	opacity: 1;
}
.sr-cursor.is-link {
	width: 72px;
	height: 72px;
	margin: -36px 0 0 -36px;
	background: rgba(255, 85, 0, 0.14);
}
.sr-cursor.is-label {
	width: 96px;
	height: 96px;
	margin: -48px 0 0 -48px;
	background: var(--primary-color);
	border-color: var(--primary-color);
}
.sr-cursor-label {
	font-family: var(--font-accent);
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: #fff;
	opacity: 0;
	transition: opacity 0.2s ease;
}
.sr-cursor.is-label .sr-cursor-label {
	opacity: 1;
}

/* ==========================================================================
   Responsive + reduced motion
   ========================================================================== */
@media (max-height: 700px) {
	.sr-hx--pinned .sr-hx-stat span {
		display: none;
	}
}

@media (max-width: 1199px) {
	.sr-hx--pinned {
		--sr-hx-intro-w: 70%;
	}
	.sr-hx--pinned .sr-hx-intro {
		grid-template-columns: 1fr;
		gap: 32px;
		padding-left: 40px;
		padding-right: 40px;
	}
	.sr-hx--pinned .sr-hx-quick {
		display: none;
	}
}

html:not(.sr-motion) .sr-marquee-track {
	animation: none;
	flex-wrap: wrap;
	justify-content: center;
	width: auto;
}
html:not(.sr-motion) .sr-cursor {
	display: none;
}

/* ==========================================================================
   Extra motion (v1.5)
   ========================================================================== */

/* Slow "Ken Burns" drift on the visible hero images (uses `scale`, so it
   composes with the transform transitions above) */
@keyframes sr-kenburns {
	from { scale: 1; }
	to { scale: 1.1; }
}
.sr-motion .sr-hx-slide.is-active .sr-hx-slide-bg,
.sr-motion .sr-hx-slide.is-peek .sr-hx-slide-bg {
	animation: sr-kenburns 9s ease-in-out infinite alternate;
}

/* Exaggerated vertical shift of the copy while slides change */
.sr-motion .sr-hx--pinned .sr-hx-slide.is-past .sr-hx-slide-content {
	transform: translateY(-80px);
	opacity: 0;
	transition: transform 1s var(--sr-ease), opacity 0.6s ease;
}

/* Page-load curtain */
html:not(.sr-motion) .sr-loader,
html.sr-loader-seen .sr-loader {
	display: none;
}
.sr-loader {
	position: fixed;
	inset: 0;
	z-index: 3000;
	display: flex;
	align-items: center;
	justify-content: center;
	flex-direction: column;
	gap: 22px;
	background: var(--dark-bg);
	color: #fff;
	transition: transform 1.1s var(--sr-ease);
	pointer-events: none;
}
.sr-loader::before {
	/* orange sheet that follows the curtain */
	content: '';
	position: absolute;
	left: 0;
	right: 0;
	top: 100%;
	height: 100vh;
	background: var(--primary-color);
	transition: transform 1.1s var(--sr-ease);
}
.sr-loader-word {
	display: flex;
	overflow: hidden;
	font-family: var(--font-heading);
	font-weight: 900;
	font-size: clamp(2.4rem, 8vw, 7rem);
	letter-spacing: -0.03em;
	line-height: 1;
}
.sr-loader-word span {
	display: inline-block;
	transform: translateY(110%);
	animation: sr-loader-in 0.8s var(--sr-ease-out) forwards;
	animation-delay: calc(var(--i) * 0.05s);
}
.sr-loader-word span.is-accent {
	color: var(--primary-color);
}
@keyframes sr-loader-in {
	to { transform: none; }
}
.sr-loader-bar {
	width: min(280px, 60vw);
	height: 2px;
	background: rgba(255,255,255,0.15);
	overflow: hidden;
}
.sr-loader-bar::after {
	content: '';
	display: block;
	height: 100%;
	background: var(--primary-color);
	transform-origin: 0 50%;
	animation: sr-loader-bar 0.9s var(--sr-ease) forwards;
}
@keyframes sr-loader-bar {
	from { transform: scaleX(0); }
	to { transform: scaleX(1); }
}
.sr-loader.is-out {
	transform: translateY(-100%);
}
.sr-loader.is-out::before {
	transform: translateY(-35%);
}

/* Image curtain reveal (intro photos, gallery, investment cards) */
.sr-motion .sr-img-reveal {
	clip-path: inset(100% 0 0 0);
	transition: clip-path 1.3s var(--sr-ease);
}
.sr-motion .sr-img-reveal img,
.sr-motion .sr-img-reveal .inv-bg {
	scale: 1.35;
	transition: scale 1.8s var(--sr-ease-out);
}
.sr-motion .sr-img-reveal.is-in {
	clip-path: inset(0 0 0 0);
}
.sr-motion .sr-img-reveal.is-in img,
.sr-motion .sr-img-reveal.is-in .inv-bg {
	scale: 1;
}

/* Section tags draw a line in front of them */
.sr-motion .section-tag.sr-tag-line::before {
	content: '';
	display: inline-block;
	vertical-align: middle;
	width: 0;
	height: 2px;
	margin-right: 0;
	background: var(--primary-color);
	transition: width 0.9s var(--sr-ease), margin-right 0.9s var(--sr-ease);
}
.sr-motion .section-tag.sr-tag-line.is-in::before {
	width: 36px;
	margin-right: 12px;
}

/* Stats pop with a skew */
.sr-motion .stat-card.sr-pop {
	opacity: 0;
	transform: translateY(60px) skewY(6deg);
	transition: opacity 0.7s ease, transform 1.1s var(--sr-ease-out);
	transition-delay: calc(var(--sr-i, 0) * 0.12s);
}
.sr-motion .stat-card.sr-pop.is-in {
	opacity: 1;
	transform: none;
}

/* ==========================================================================
   Route map (rmx) — dark, animated, zoomable
   ========================================================================== */
.rmx-section.route-map-section {
	padding: 110px 0;
	background: var(--dark-bg);
	color: #fff;
	overflow: hidden;
}
.rmx-section .section-title {
	color: #fff;
	max-width: 760px;
	margin-bottom: 0;
}
.rmx-head {
	display: flex;
	justify-content: space-between;
	align-items: flex-end;
	gap: 24px;
	flex-wrap: wrap;
	margin-bottom: 32px;
}
.rmx-hint {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	margin: 0;
	padding: 10px 18px;
	border: 1px solid rgba(255,255,255,0.15);
	border-radius: 999px;
	font-family: var(--font-accent);
	font-size: 0.85rem;
	color: rgba(255,255,255,0.75);
}
.rmx-hint i {
	color: var(--primary-color);
	animation: rmx-tap 1.6s ease-in-out infinite;
}
@keyframes rmx-tap {
	0%, 100% { transform: translateY(0); }
	50% { transform: translateY(-4px); }
}

.rmx-layout {
	display: grid;
	grid-template-columns: 260px minmax(0, 1fr);
	gap: 24px;
	align-items: start;
}

/* Destination chips */
.rmx-chips {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 8px;
}
.rmx-chip {
	position: relative;
	width: 100%;
	display: grid;
	grid-template-columns: 38px 1fr auto;
	align-items: center;
	gap: 12px;
	padding: 10px 14px 10px 10px;
	background: rgba(255,255,255,0.04);
	border: 1px solid rgba(255,255,255,0.08);
	border-radius: 12px;
	color: #fff;
	font: inherit;
	text-align: left;
	cursor: pointer;
	overflow: hidden;
	transition: background-color 0.3s ease, border-color 0.3s ease, transform 0.4s var(--sr-ease-out);
}
.rmx-chip:hover,
.rmx-chip:focus-visible {
	background: rgba(255,255,255,0.08);
	transform: translateX(6px);
	outline: none;
}
.rmx-chip.is-active {
	background: rgba(255, 85, 0, 0.14);
	border-color: var(--primary-color);
	transform: translateX(10px);
}
.rmx-chip-icon {
	width: 38px;
	height: 38px;
	display: grid;
	place-items: center;
	border-radius: 10px;
	background: rgba(255,255,255,0.08);
	font-family: 'Font Awesome 5 Free';
	font-weight: 900;
	font-size: 0.95rem;
	color: var(--primary-color);
	transition: background-color 0.3s ease, color 0.3s ease, transform 0.5s var(--sr-ease-out);
}
.rmx-chip.is-active .rmx-chip-icon {
	background: var(--primary-color);
	color: #fff;
	transform: rotate(-8deg) scale(1.08);
}
.rmx-chip-name {
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 0.88rem;
	line-height: 1.2;
}
.rmx-chip-dist {
	font-family: var(--font-heading);
	font-weight: 800;
	font-size: 0.85rem;
	color: var(--primary-color);
	white-space: nowrap;
}
.rmx-chip-timer {
	position: absolute;
	left: 0;
	bottom: 0;
	height: 2px;
	width: 100%;
	background: var(--primary-color);
	transform-origin: 0 50%;
	transform: scaleX(0);
}
.rmx-section.is-touring .rmx-chip.is-active .rmx-chip-timer {
	animation: rmx-timer var(--rmx-tour, 6s) linear forwards;
}
@keyframes rmx-timer {
	to { transform: scaleX(1); }
}

/* Map canvas */
.rmx-map {
	position: relative;
	border-radius: 20px;
	overflow: hidden;
	background: #0F1114;
	border: 1px solid rgba(255,255,255,0.08);
	box-shadow: 0 40px 80px rgba(0,0,0,0.45);
}
.rmx-svg {
	display: block;
	width: 100%;
	height: auto;
	max-height: min(560px, 66vh);
	min-height: 400px;
	aspect-ratio: 600 / 560;
	font-family: var(--font-body);
	--k: 1;
}

.rmx-land { fill: #15171B; }
.rmx-land-us { fill: #1A1D22; }
.rmx-grid-line { stroke: rgba(255,255,255,0.04); stroke-width: calc(var(--k) * 1px); }
.rmx-sea { fill: #0C1824; stroke: #18324A; stroke-width: calc(var(--k) * 1.5px); }
.rmx-sea-label,
.rmx-region-label,
.rmx-border-label {
	font-family: var(--font-heading);
	font-weight: 700;
	letter-spacing: 0.14em;
	pointer-events: none;
}
.rmx-sea-label { font-size: 11px; fill: #2F5677; }
.rmx-region-label { font-size: 12px; fill: #4A515C; }
.rmx-border-label { font-size: 9px; fill: var(--primary-color); text-anchor: end; }
.rmx-border {
	fill: none;
	stroke: var(--primary-color);
	stroke-opacity: 0.7;
	stroke-width: calc(var(--k) * 1.6px);
	stroke-dasharray: calc(var(--k) * 7px) calc(var(--k) * 5px);
}

.rmx-road,
.rmx-rail,
.rmx-route,
.rmx-flow {
	fill: none;
	stroke-linecap: round;
	stroke-linejoin: round;
}
.rmx-road { stroke: #3A414B; stroke-width: calc(var(--k) * 3.2px); }
.rmx-road-secondary { stroke: #2E343C; stroke-width: calc(var(--k) * 2.6px); }
.rmx-rail {
	stroke: #F08A4B;
	stroke-opacity: 0.75;
	stroke-width: calc(var(--k) * 1.8px);
	stroke-dasharray: calc(var(--k) * 4px) calc(var(--k) * 4px);
}
.rmx-flow {
	stroke: rgba(255,255,255,0.55);
	stroke-width: calc(var(--k) * 1.2px);
	stroke-dasharray: calc(var(--k) * 2px) calc(var(--k) * 14px);
	animation: rmx-flow 1.4s linear infinite;
}
@keyframes rmx-flow {
	to { stroke-dashoffset: -16px; }
}

/* Network draws itself when the map enters the viewport */
.sr-motion .rmx-draw {
	stroke-dasharray: 1;
	stroke-dashoffset: 1;
	transition: stroke-dashoffset 2.2s var(--sr-ease);
}
.sr-motion .rmx-section.is-in .rmx-draw {
	stroke-dashoffset: 0;
}
.rmx-rail,
.rmx-flow,
.rmx-traffic {
	transition: opacity 1s ease 1.6s;
}
.sr-motion .rmx-section:not(.is-in) .rmx-rail,
.sr-motion .rmx-section:not(.is-in) .rmx-flow,
.sr-motion .rmx-section:not(.is-in) .rmx-traffic {
	opacity: 0;
}

/* Highlighted route */
.rmx-route {
	stroke: var(--primary-color);
	stroke-width: calc(var(--k) * 4.5px);
	stroke-dasharray: 1;
	stroke-dashoffset: 1;
	opacity: 0;
	filter: drop-shadow(0 0 4px rgba(255, 85, 0, 0.8));
}
.rmx-route.is-active {
	opacity: 1;
}

/* Traffic + runner */
.rmx-vehicle-bg { fill: #24282F; stroke: rgba(255,255,255,0.25); stroke-width: 1; }
.rmx-vehicle-train .rmx-vehicle-bg { fill: #3A2416; stroke: #F08A4B; }
.rmx-vehicle-icon,
.rmx-runner-icon,
.rmx-pin-icon,
.rmx-detail-icon {
	font-family: 'Font Awesome 5 Free';
	font-weight: 900;
	pointer-events: none;
}
.rmx-vehicle-icon { font-size: 7px; fill: #C9D1DB; }
.rmx-vehicle-train .rmx-vehicle-icon { fill: #F08A4B; }
.rmx-traffic { pointer-events: none; }
.rmx-section.is-zoomed .rmx-traffic { opacity: 0.3; transition-delay: 0s; }

.rmx-runner { opacity: 0; transition: opacity 0.3s ease; pointer-events: none; }
.rmx-runner.is-visible { opacity: 1; }
.rmx-runner-bg { fill: var(--primary-color); stroke: #fff; stroke-width: 2; }
.rmx-runner-icon { font-size: 9px; fill: #fff; }

/* Pins */
.rmx-pin {
	cursor: pointer;
	outline: none;
	transition: opacity 0.4s ease;
}
.rmx-pin-inner {
	transform-box: fill-box;
	transform-origin: 50% 50%;
}
.sr-motion .rmx-section:not(.is-in) .rmx-pin-inner {
	opacity: 0;
}
.sr-motion .rmx-section.is-in .rmx-pin-inner {
	animation: rmx-drop 0.9s var(--sr-ease-out) both;
	animation-delay: calc(0.9s + var(--rmx-i, 0) * 0.12s);
}
@keyframes rmx-drop {
	0% { transform: translateY(-40px) scale(0.3); opacity: 0; }
	60% { transform: translateY(4px) scale(1.12); opacity: 1; }
	100% { transform: none; opacity: 1; }
}
.rmx-pin-bg {
	fill: #1E2228;
	stroke: rgba(255,255,255,0.35);
	stroke-width: 1.5;
	transition: fill 0.3s ease, stroke 0.3s ease;
}
.rmx-pin-icon {
	font-size: 11px;
	fill: #fff;
}
.rmx-pin-origin .rmx-pin-bg { fill: var(--primary-color); stroke: #fff; stroke-width: 2; }
.rmx-pin-origin .rmx-pin-icon { font-size: 13px; }
.rmx-pin:hover .rmx-pin-bg,
.rmx-pin:focus-visible .rmx-pin-bg,
.rmx-pin.is-active .rmx-pin-bg {
	fill: var(--primary-color);
	stroke: #fff;
}
.rmx-pin-label {
	font-family: var(--font-heading);
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.06em;
	fill: #fff;
	paint-order: stroke;
	stroke: rgba(15,17,20,0.9);
	stroke-width: 4px;
	stroke-linejoin: round;
	pointer-events: none;
}
.rmx-pin-pulse {
	fill: none;
	stroke: var(--primary-color);
	stroke-width: 2;
	transform-origin: center;
	transform-box: fill-box;
	animation: rm-pulse 2.2s ease-out infinite;
}
.rmx-pin-pulse-2 { animation-delay: 1.1s; }
.rmx-origin-glow {
	transform-box: fill-box;
	transform-origin: center;
	animation: rmx-glow 3s ease-in-out infinite alternate;
	pointer-events: none;
}
@keyframes rmx-glow {
	from { opacity: 0.5; transform: scale(0.85); }
	to { opacity: 1; transform: scale(1.15); }
}
/* While zoomed, other pins step back */
.rmx-section.is-zoomed .rmx-pin:not(.is-active) { opacity: 0.3; }

/* Detail icons around the zoomed location */
.rmx-detail {
	opacity: 0;
	transform-box: fill-box;
	transform-origin: 0 50%;
	transform: translateX(-10px) scale(0.4);
	transition: opacity 0.4s ease, transform 0.7s var(--sr-ease-out);
	transition-delay: calc(0.15s + var(--d, 0) * 0.14s);
}
.rmx-details.is-in .rmx-detail { opacity: 1; transform: none; }
.rmx-detail-line {
	fill: none;
	stroke: var(--primary-color);
	stroke-width: 1.2;
	stroke-dasharray: 1;
	stroke-dashoffset: 1;
	transition: stroke-dashoffset 0.6s var(--sr-ease);
	transition-delay: calc(var(--d, 0) * 0.14s);
}
.rmx-details.is-in .rmx-detail-line { stroke-dashoffset: 0; }
.rmx-detail-bg { fill: #fff; }
.rmx-detail-icon { font-size: 9.5px; fill: var(--primary-color); }
.rmx-detail-label-bg { fill: rgba(15,17,20,0.88); stroke: rgba(255,255,255,0.14); stroke-width: 0.8; }
.rmx-detail-label {
	font-family: var(--font-heading);
	font-size: 8.5px;
	font-weight: 700;
	fill: #fff;
}

/* Zoom card */
.rmx-card {
	position: absolute;
	left: 18px;
	bottom: 18px;
	width: min(320px, calc(100% - 36px));
	padding: 18px 20px;
	border-radius: 16px;
	background: rgba(15, 17, 20, 0.8);
	backdrop-filter: blur(14px);
	-webkit-backdrop-filter: blur(14px);
	border: 1px solid rgba(255,255,255,0.12);
	opacity: 0;
	transform: translateY(30px);
	pointer-events: none;
	transition: opacity 0.4s ease, transform 0.7s var(--sr-ease-out);
}
.rmx-section.is-zoomed .rmx-card {
	opacity: 1;
	transform: none;
	pointer-events: auto;
	transition-delay: 0.4s;
}
.rmx-card-head {
	display: flex;
	align-items: center;
	gap: 14px;
	margin-bottom: 14px;
}
.rmx-card-icon {
	width: 46px;
	height: 46px;
	flex-shrink: 0;
	display: grid;
	place-items: center;
	border-radius: 12px;
	background: var(--primary-color);
	font-family: 'Font Awesome 5 Free';
	font-weight: 900;
	font-size: 1.15rem;
	color: #fff;
}
.rmx-card-kind {
	display: block;
	font-family: var(--font-accent);
	font-size: 0.7rem;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--primary-color);
}
.rmx-card-title {
	margin: 2px 0 0;
	font-size: 1.05rem;
	font-weight: 800;
	color: #fff;
	line-height: 1.2;
}
.rmx-card-stats {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 12px;
	padding-top: 14px;
	border-top: 1px solid rgba(255,255,255,0.1);
}
.rmx-card-stats strong {
	display: block;
	white-space: nowrap;
	font-family: var(--font-heading);
	font-size: 1.3rem;
	font-weight: 900;
	line-height: 1;
	color: #fff;
}
.rmx-card-stats span {
	display: block;
	margin-top: 4px;
	font-size: 0.72rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: rgba(255,255,255,0.5);
}

.rmx-back {
	position: absolute;
	top: 16px;
	right: 16px;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 10px 16px;
	border: 0;
	border-radius: 999px;
	background: #fff;
	color: var(--text-dark);
	font-family: var(--font-accent);
	font-weight: 700;
	font-size: 0.8rem;
	cursor: pointer;
	opacity: 0;
	transform: translateY(-16px);
	pointer-events: none;
	transition: opacity 0.3s ease, transform 0.5s var(--sr-ease-out), background-color 0.2s ease, color 0.2s ease;
}
.rmx-back:hover { background: var(--primary-color); color: #fff; }
.rmx-section.is-zoomed .rmx-back {
	opacity: 1;
	transform: none;
	pointer-events: auto;
}

.rmx-legend {
	position: absolute;
	top: 16px;
	left: 18px;
	display: flex;
	gap: 16px;
	font-size: 0.72rem;
	font-weight: 600;
	color: rgba(255,255,255,0.6);
	transition: opacity 0.3s ease;
	pointer-events: none;
}
.rmx-section.is-zoomed .rmx-legend { opacity: 0; }
.rmx-legend span { display: inline-flex; align-items: center; gap: 6px; }
.rmx-legend i { display: inline-block; width: 20px; border-top: 3px solid #3A414B; }
.rmx-legend .rmx-legend-rail { border-top: 2px dashed #F08A4B; }
.rmx-legend .rmx-legend-border { border-top: 2px dashed var(--primary-color); }

@media (max-width: 991px) {
	.rmx-section.route-map-section {
		padding: 72px 0;
	}
	.rmx-layout {
		grid-template-columns: 1fr;
	}
	.rmx-chips {
		flex-direction: row;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		margin: 0 -20px;
		padding: 0 20px 6px;
		scrollbar-width: none;
	}
	.rmx-chips::-webkit-scrollbar { display: none; }
	.rmx-chips li { flex: 0 0 auto; scroll-snap-align: start; }
	.rmx-chip { width: auto; }
	.rmx-chip:hover,
	.rmx-chip:focus-visible,
	.rmx-chip.is-active { transform: none; }
	.rmx-legend { display: none; }
}
@media (max-width: 600px) {
	.rmx-card {
		left: 10px;
		right: 10px;
		bottom: 10px;
		width: auto;
		padding: 12px 14px;
	}
	.rmx-card-head { margin-bottom: 10px; }
	.rmx-card-icon { width: 38px; height: 38px; font-size: 1rem; }
	.rmx-card-stats { padding-top: 10px; }
	.rmx-card-stats strong { font-size: 1.15rem; }
	.rmx-back { top: 10px; right: 10px; padding: 8px 12px; }
}
