/* ILTL Sports — homepage v2. Loaded only on the v2 template (see inc/v2/functions.php). */

/* ---------- Fonts (self-hosted) + metric-matched fallbacks ---------- */

@font-face {
	font-family: "Bakbak One";
	src: url("fonts/bakbak-one.woff2") format("woff2");
	font-weight: 400;
	font-style: normal;
	font-display: swap;
}
@font-face {
	font-family: "Archivo";
	src: url("fonts/archivo.woff2") format("woff2-variations"), url("fonts/archivo.woff2") format("woff2");
	font-weight: 100 900;
	font-stretch: 62% 125%;
	font-style: normal;
	font-display: swap;
}
@font-face {
	font-family: "Chivo Mono";
	src: url("fonts/chivo-mono-500.woff2") format("woff2");
	font-weight: 500;
	font-display: swap;
}
@font-face {
	font-family: "Chivo Mono";
	src: url("fonts/chivo-mono-700.woff2") format("woff2");
	font-weight: 700;
	font-display: swap;
}
@font-face {
	font-family: "Bakbak One Fallback";
	src: local("Arial Black"), local("Arial-Black"), local("Arial Bold"), local("Arial");
	size-adjust: 96%;
	ascent-override: 92%;
	descent-override: 22%;
}
@font-face {
	font-family: "Archivo Fallback";
	src: local("Arial"), local("ArialMT");
	size-adjust: 100%;
	ascent-override: 90%;
	descent-override: 22%;
}
@font-face {
	font-family: "Chivo Mono Fallback";
	src: local("Courier New"), local("CourierNewPSMT");
	size-adjust: 96%;
}

/* ---------- Tokens ---------- */

:root {
	--green: #2F9552;
	--green-ink: #236F3D;
	--green-deep: #16492A;
	--volt: #CCF656;
	--cream: #FFFDF6;
	--cream-2: #F1EDDF;
	--charcoal: #343434;
	--ink: #1B1E1C;
	--ink-2: #262A27;
	--line-light: rgba(52, 52, 52, 0.12);
	--line-dark: rgba(255, 253, 246, 0.12);
	--muted-light: rgba(52, 52, 52, 0.68);
	--muted-dark: rgba(255, 253, 246, 0.66);

	--font-display: "Bakbak One", "Bakbak One Fallback", "Arial Black", sans-serif;
	--font-body: "Archivo", "Archivo Fallback", system-ui, sans-serif;
	--font-mono: "Chivo Mono", "Chivo Mono Fallback", ui-monospace, monospace;

	--fs-hero: clamp(44px, 7.2vw, 104px);
	--fs-h2: clamp(32px, 4vw, 56px);
	--fs-h3: clamp(22px, 2.2vw, 30px);
	--fs-stat: clamp(40px, 5vw, 72px);
	--fs-body: clamp(16px, 1.15vw, 18px);
	--fs-small: 14px;
	--fs-label: 12px;

	--wrap: 1200px;
	--gutter: clamp(16px, 4vw, 40px);
	--section: clamp(72px, 10vw, 136px);
	--nav-h: 72px;
	--bar-h: 40px;
	--ease: cubic-bezier(0.16, 1, 0.3, 1);
	--ease-back: cubic-bezier(0.34, 1.56, 0.64, 1);
	--skew: -14deg;
	--focus: var(--volt);
}

/* ---------- Base ---------- */

html { scroll-behavior: smooth; }
.v2 {
	margin: 0;
	background: var(--ink);
	color: var(--cream);
	font-family: var(--font-body);
	font-size: var(--fs-body);
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
	overflow-x: clip;
}
.v2 *, .v2 *::before, .v2 *::after { box-sizing: border-box; }
.v2 :where(img, svg) { display: block; max-width: 100%; }
.v2 :where(img) { height: auto; }
.v2 :where(h1, h2, h3, p, figure, blockquote, dl, dd, ul, ol) { margin: 0; }
.v2 :where(ul, ol) { padding: 0; list-style: none; }
.v2 :where(a) { color: inherit; }
.v2 :where(button) { font: inherit; color: inherit; }
.v2 :focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; border-radius: 4px; }
.v2 [hidden] { display: none !important; }
.v2 section[id] { scroll-margin-top: var(--nav-h); }

.wrap { width: min(100% - 2 * var(--gutter), var(--wrap)); margin-inline: auto; }

.sr-only {
	position: absolute !important;
	width: 1px; height: 1px;
	margin: -1px; padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}
.skip-link {
	position: absolute;
	left: 16px; top: -60px;
	z-index: 1000;
	padding: 10px 16px;
	background: var(--volt);
	color: var(--ink);
	font-weight: 700;
	border-radius: 12px;
	text-decoration: none;
}
.skip-link:focus { top: 12px; }

/* Bands */
.band--ink { background: var(--ink); color: var(--cream); }
.band--cream { background: var(--cream); color: var(--charcoal); --focus: var(--green-ink); }
.band--green { background: var(--green); color: var(--cream); }
.section { padding-block: var(--section); position: relative; }

/* Type */
.mono {
	font-family: var(--font-mono);
	font-size: var(--fs-label);
	font-weight: 500;
	letter-spacing: 0.16em;
	text-transform: uppercase;
}
.eyebrow {
	margin-bottom: 20px !important;
	font-family: var(--font-mono);
	font-size: var(--fs-label);
	font-weight: 700;
	letter-spacing: 0.16em;
	text-transform: uppercase;
}
.eyebrow--volt { color: var(--volt); }
.eyebrow--green { color: var(--green-ink); }

.h2, .final__title, .hero__title, .stat__value, .chart__value, .price__value, .menu__links a {
	font-family: var(--font-display);
	font-style: normal;
	font-weight: 400;
	font-synthesis: none;
	text-transform: uppercase;
	letter-spacing: -0.01em;
}
.h2 { font-size: var(--fs-h2); line-height: 1; text-wrap: balance; max-width: 18ch; }
.band--cream .h2 { color: var(--ink); }
.h3 { font-size: var(--fs-h3); font-weight: 700; line-height: 1.2; letter-spacing: -0.01em; margin-bottom: 10px !important; }

.section__head { margin-bottom: clamp(40px, 6vw, 72px); }
.head-split { display: grid; grid-template-columns: 1fr 1fr; gap: 24px clamp(32px, 6vw, 96px); align-items: end; }
.head-split__aside .section__lead { margin: 0 0 24px !important; }
@media (max-width: 767px) { .head-split { grid-template-columns: 1fr; } }
.section__lead { max-width: 52ch; margin-top: 20px !important; color: var(--muted-light); font-size: clamp(17px, 1.4vw, 20px); }
.section__head--split { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; flex-wrap: wrap; }
.section__more { margin-top: 48px; }
.section__cta { margin-top: 48px; text-align: center; }

/* Buttons & links */
.btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	min-height: 52px;
	padding: 14px 26px;
	border: 1px solid transparent;
	border-radius: 999px;
	font: 700 16px/1 var(--font-body);
	text-decoration: none;
	white-space: nowrap;
	cursor: pointer;
	transition: background-color 0.2s, border-color 0.2s, color 0.2s, transform 0.3s var(--ease);
}
.btn--volt { background: var(--volt); color: var(--ink); }
.btn--green { background: var(--green-ink); color: var(--cream); }
.btn--ghost { border-color: rgba(255, 253, 246, 0.3); color: var(--cream); }
.btn--outline { border-color: var(--charcoal); color: var(--charcoal); }
.btn--sm { min-height: 44px; padding: 10px 20px; font-size: 15px; }
.btn--block { width: 100%; }
@media (hover: hover) {
	.btn:hover { transform: translateY(-2px); }
	.btn--volt:hover { background: #d9fb78; }
	.btn--green:hover { background: var(--green-deep); }
	.btn--ghost:hover { border-color: var(--cream); }
	.btn--outline:hover { background: var(--charcoal); color: var(--cream); }
}

.actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 16px; }
.actions--center { justify-content: center; }

.text-link {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 44px;
	color: var(--green-ink);
	font-weight: 700;
	text-decoration: none;
}
.text-link--volt { color: var(--volt); }
.text-link--cream { color: var(--cream); }
.text-link .icon { transition: transform 0.3s var(--ease); }
@media (hover: hover) { .text-link:hover .icon { transform: translateX(4px); } .text-link:hover { text-decoration: underline; text-underline-offset: 4px; } }

.icon { width: 1.15em; height: 1.15em; flex: none; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }

.social { display: flex; gap: 8px; }
.social a { display: grid; place-items: center; width: 44px; height: 44px; border: 1px solid var(--line-dark); border-radius: 50%; color: var(--cream); }
.social .icon { width: 20px; height: 20px; }
@media (hover: hover) { .social a:hover { border-color: var(--volt); color: var(--volt); } }

/* ---------- 4.1 Announcement bar ---------- */

.bar {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	height: var(--bar-h);
	padding: 0 48px;
	background: var(--green);
	color: var(--cream);
	font-size: 14px;
	font-weight: 600;
}
.bar__text { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.bar__link { margin-left: 6px; font-weight: 700; text-underline-offset: 3px; }
.bar__close {
	position: absolute;
	right: 0; top: 0;
	display: grid;
	place-items: center;
	width: 40px; height: 40px;
	padding: 0;
	background: none;
	border: 0;
	cursor: pointer;
}

/* ---------- 4.2 Nav ---------- */

.nav {
	position: sticky;
	top: env(safe-area-inset-top, 0);
	z-index: 100;
	height: var(--nav-h);
	margin-bottom: calc(-1 * var(--nav-h));
	border-bottom: 1px solid transparent;
	transition: background-color 0.3s, border-color 0.3s;
}
.admin-bar .nav { top: 32px; }
@media (max-width: 782px) { .admin-bar .nav { top: 46px; } }
@media (max-width: 600px) { .admin-bar .nav { top: 0; } }
.nav.is-solid { background: var(--ink); border-bottom-color: var(--line-dark); }

.nav__inner { display: flex; align-items: center; justify-content: space-between; gap: 24px; height: 100%; }
.nav__brand { display: block; color: var(--cream); }
.mark { width: 88px; height: auto; }
.nav__links ul { display: flex; gap: 28px; }
.nav__links a {
	position: relative;
	display: inline-block;
	padding: 10px 0;
	color: var(--muted-dark);
	font-size: 15px;
	font-weight: 600;
	text-decoration: none;
	transition: color 0.2s;
}
.nav__links a::after {
	content: "";
	position: absolute;
	left: 0; right: 0; bottom: 2px;
	height: 2px;
	background: var(--volt);
	transform: skewX(var(--skew)) scaleX(0);
	transform-origin: left;
	transition: transform 0.35s var(--ease);
}
.nav__links a:hover, .nav__links a.is-active { color: var(--cream); }
.nav__links a.is-active::after { transform: skewX(var(--skew)) scaleX(1); }
.nav__actions { display: flex; align-items: center; gap: 20px; }
.nav__login { display: inline-flex; align-items: center; min-height: 44px; color: var(--cream); font-size: 15px; font-weight: 600; text-decoration: none; }
.nav__toggle {
	display: none;
	place-items: center;
	width: 44px; height: 44px;
	padding: 0;
	background: none;
	border: 1px solid var(--line-dark);
	border-radius: 50%;
	color: var(--cream);
	cursor: pointer;
}

@media (max-width: 1023px) {
	.nav__links, .nav__login { display: none; }
	.nav__toggle { display: grid; }
	.nav__actions { gap: 10px; }
	.nav__actions .btn { padding-inline: 16px; }
}

/* Mobile sheet */
.menu { position: fixed; inset: 0; z-index: 200; }
.menu__backdrop { position: absolute; inset: 0; background: rgba(27, 30, 28, 0.6); opacity: 0; transition: opacity 0.3s; }
.menu__sheet {
	position: absolute;
	top: 0; right: 0; bottom: 0;
	display: flex;
	flex-direction: column;
	width: min(420px, 100%);
	padding: 16px var(--gutter) max(24px, env(safe-area-inset-bottom));
	background: var(--ink);
	overflow-y: auto;
	transform: translateX(100%);
	transition: transform 0.45s var(--ease);
}
.menu.is-open .menu__backdrop { opacity: 1; }
.menu.is-open .menu__sheet { transform: none; }
.menu__top { display: flex; align-items: center; justify-content: space-between; height: 56px; color: var(--cream); }
.menu__close { display: grid; place-items: center; width: 44px; height: 44px; padding: 0; background: none; border: 1px solid var(--line-dark); border-radius: 50%; cursor: pointer; }
.menu__links { margin: 32px 0 !important; }
.menu__links a { display: block; padding: 10px 0; font-size: 32px; line-height: 1.1; text-decoration: none; color: var(--cream); }
.menu__foot { display: grid; gap: 12px; margin-top: auto; }
.menu__foot .social { margin-top: 12px; }
.no-scroll { overflow: hidden; }

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

.hero {
	position: relative;
	isolation: isolate;
	display: flex;
	align-items: center;
	min-height: min(calc(100svh - var(--bar-h)), 960px);
	padding: calc(var(--nav-h) + clamp(24px, 4vw, 48px)) 0 clamp(80px, 9vw, 120px);
	overflow: hidden;
}

/* Background video: poster first, then a muted looping embed sized to cover. */
.hero__bg {
	position: absolute;
	inset: -6% 0;
	z-index: -2;
	overflow: hidden;
	background: var(--ink);
	container-type: size;
}
.hero__poster { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hero__bg iframe {
	position: absolute;
	top: 50%; left: 50%;
	width: max(100cqw, 177.78cqh);
	height: max(100cqh, 56.25cqw);
	border: 0;
	pointer-events: none;
	/* Slight over-scale crops YouTube's edge chrome; fade in once playback has started. */
	transform: translate(-50%, -50%) scale(1.15);
	opacity: 0;
	transition: opacity 0.8s ease;
}
.hero__bg.is-playing iframe { opacity: 1; }

/* Legibility: dark on the left where the copy sits, a little darker at the bottom edge. */
.hero::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background:
		linear-gradient(90deg, rgba(27, 30, 28, 0.92) 0%, rgba(27, 30, 28, 0.72) 38%, rgba(27, 30, 28, 0.28) 72%, rgba(27, 30, 28, 0.18) 100%),
		linear-gradient(0deg, rgba(27, 30, 28, 0.55) 0%, rgba(27, 30, 28, 0) 30%);
	pointer-events: none;
}
@media (max-width: 767px) {
	.hero::after {
		background:
			linear-gradient(0deg, rgba(27, 30, 28, 0.85) 0%, rgba(27, 30, 28, 0.6) 45%, rgba(27, 30, 28, 0.78) 100%);
	}
}

.hero__content { position: relative; }
.hero__head, .hero__copy { max-width: 640px; }
.hero__head { margin-bottom: clamp(20px, 2.5vw, 32px); }

.hero__pause {
	position: absolute;
	right: max(var(--gutter), (100% - var(--wrap)) / 2);
	bottom: clamp(24px, 4vw, 40px);
	display: grid;
	place-items: center;
	width: 48px; height: 48px;
	padding: 0;
	border: 1px solid rgba(255, 253, 246, 0.3);
	border-radius: 50%;
	background: rgba(27, 30, 28, 0.55);
	-webkit-backdrop-filter: blur(8px);
	backdrop-filter: blur(8px);
	color: var(--cream);
	cursor: pointer;
	transition: background-color 0.2s, border-color 0.2s;
}
.hero__pause .icon { width: 18px; height: 18px; }
.hero__pause .icon--play { display: none; margin-left: 2px; }
.hero__pause.is-paused .icon--play { display: block; }
.hero__pause.is-paused .hero__pause-icon { display: none; }
@media (hover: hover) { .hero__pause:hover { background: rgba(27, 30, 28, 0.8); border-color: var(--cream); } }

/* Three short stacked words; the longest ("CONNECT." with its highlight) is ~5.5em, so size it to fill its column. */
.hero__title { font-size: clamp(44px, (100vw - 2 * var(--gutter)) / 5.7, 104px); line-height: 0.92; }
@media (min-width: 1024px) {
	.hero__title { font-size: min(128px, (min(100vw, 1280px) - 2 * var(--gutter) - 64px) / 2 / 5.7); }
}
.hero__title .line { display: block; overflow: hidden; padding: 0.04em 0.14em 0.04em 0; margin: -0.04em -0.14em -0.04em 0; }
.hero__title .line > span { display: block; }
.hl { position: relative; z-index: 0; color: var(--ink); padding-inline: 0.06em; }
.hl::before {
	content: "";
	position: absolute;
	inset: 0.1em -0.08em 0.02em -0.1em;
	z-index: -1;
	background: var(--volt);
	transform: skewX(var(--skew));
	transform-origin: left;
}
.hero__sub { max-width: 46ch; margin-bottom: 28px !important; color: var(--muted-dark); font-size: clamp(17px, 1.4vw, 20px); }
.hero__micro { margin-top: 20px !important; color: var(--muted-dark); }

/* Load moment (only with JS; content is visible by default). */
html.js .hero .line > span { transform: translateY(105%); }
html.js .hero .hl::before { transform: skewX(var(--skew)) scaleX(0); }
html.js .hero .hero__sub, html.js .hero .hero__actions, html.js .hero .hero__micro, html.js .hero .eyebrow { opacity: 0; transform: translateY(16px); }
.hero .line > span, .hero .hero__sub, .hero .hero__actions, .hero .hero__micro, .hero .eyebrow { transition: transform 0.7s var(--ease), opacity 0.6s var(--ease); }
.hero .line:nth-child(2) > span { transition-delay: 60ms; }
.hero .line:nth-child(3) > span { transition-delay: 120ms; }
.hero .hl::before { transition: transform 0.45s var(--ease) 0.42s; }
.hero .hero__sub { transition-delay: 0.3s; }
.hero .hero__actions { transition-delay: 0.38s; }
.hero .hero__micro { transition-delay: 0.46s; }
html.js .hero.is-loaded .line > span { transform: none; }
html.js .hero.is-loaded .hl::before { transform: skewX(var(--skew)) scaleX(1); }
html.js .hero.is-loaded .hero__sub, html.js .hero.is-loaded .hero__actions, html.js .hero.is-loaded .hero__micro, html.js .hero.is-loaded .eyebrow { opacity: 1; transform: none; }

/* YouTube facade */
.yt { position: relative; aspect-ratio: 16 / 9; overflow: hidden; border-radius: 20px; background: var(--ink-2); }
.yt__thumb, .yt iframe { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; border: 0; }
.yt__play { position: absolute; inset: 0; display: grid; place-items: center; color: var(--ink); text-decoration: none; }
.yt__play::before { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, rgba(27, 30, 28, 0.55), rgba(27, 30, 28, 0) 55%); }
.yt__btn {
	position: relative;
	display: grid;
	place-items: center;
	width: 76px; height: 76px;
	border-radius: 50%;
	background: var(--volt);
	transition: transform 0.35s var(--ease);
}
.yt__btn .icon { width: 30px; height: 30px; margin-left: 4px; }
.yt__chip {
	position: absolute;
	left: 16px; bottom: 16px;
	max-width: calc(100% - 32px);
	padding: 8px 12px;
	border-radius: 999px;
	background: rgba(27, 30, 28, 0.78);
	color: var(--cream);
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
}
@media (hover: hover) { .yt__play:hover .yt__btn { transform: scale(1.08); } }

@media (max-width: 479px) {
	.hero__actions .btn { width: 100%; }
}

/* ---------- 4.4 Proof: headline, bento grid, sponsors ---------- */

.proof { border-bottom: 1px solid var(--line-light); }
.proof__head {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 24px clamp(32px, 6vw, 96px);
	align-items: start;
	margin-bottom: clamp(40px, 5vw, 64px);
}
.proof__title { max-width: 14ch; }
.proof__intro p { margin-bottom: 28px !important; color: var(--muted-light); font-size: clamp(17px, 1.4vw, 20px); max-width: 46ch; }
@media (max-width: 767px) { .proof__head { grid-template-columns: 1fr; } }

.bento {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	grid-template-rows: repeat(2, clamp(176px, 16vw, 232px));
	gap: clamp(12px, 1.6vw, 24px);
}
.bento__tile { position: relative; overflow: hidden; border-radius: 20px; }
.bento__stat { display: flex; align-items: center; justify-content: center; padding: clamp(20px, 3vw, 40px); text-align: center; }
.bento__stat dl { display: flex; flex-direction: column-reverse; align-items: center; gap: 10px; }
.bento__value { font-family: var(--font-display); font-weight: 400; line-height: 0.95; font-size: clamp(40px, 4.8vw, 72px); color: var(--ink); font-variant-numeric: tabular-nums; }
.bento__label { color: var(--ink); font-family: var(--font-display); font-size: clamp(14px, 1.3vw, 18px); text-transform: uppercase; }
.bento__stat { background: var(--ink); isolation: isolate; }
.bento__bg { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; }
.bento__stat::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(0deg, rgba(27, 30, 28, 0.88) 0%, rgba(27, 30, 28, 0.55) 55%, rgba(27, 30, 28, 0.35) 100%); }
.bento__stat .bento__value { color: var(--volt); }
.bento__stat .bento__label { color: var(--cream); }
.bento__stat--tall { grid-column: 1; grid-row: 1 / span 2; align-items: flex-end; justify-content: flex-start; text-align: left; }
.bento__stat--tall .bento__bg { object-position: 42% 50%; }
.bento__stat--tall dl { align-items: flex-start; }
.bento__stat--tall .bento__value { font-size: clamp(56px, 6.6vw, 100px); }
.bento__stat--volt { grid-column: 3; grid-row: 1; }
.bento__stat--volt::after { background: linear-gradient(0deg, rgba(22, 73, 42, 0.92) 0%, rgba(22, 73, 42, 0.6) 60%, rgba(22, 73, 42, 0.45) 100%); }
.bento__stat--cream { grid-column: 2; grid-row: 2; }
.bento__photo { margin: 0; background: var(--ink-2); }
.bento__photo--a { grid-column: 2; grid-row: 1; }
.bento__photo--b { grid-column: 3; grid-row: 2; }
.bento__art-inner { position: absolute; inset: -8% 0; }
.bento__photo img { width: 100%; height: 100%; object-fit: cover; }

@media (max-width: 767px) {
	.bento { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: none; grid-auto-rows: clamp(150px, 42vw, 220px); }
	.bento__stat--tall { grid-column: 1 / -1; grid-row: auto; }
	.bento__photo--a, .bento__stat--volt, .bento__stat--cream, .bento__photo--b { grid-column: auto; grid-row: auto; }
	.bento__value { font-size: clamp(36px, 11vw, 56px); }
	.bento__stat--tall .bento__value { font-size: clamp(56px, 18vw, 96px); }
	.bento__label { font-size: 14px; }
}

.sponsors { display: flex; align-items: center; gap: 32px; margin-top: clamp(40px, 5vw, 64px); }
.sponsors__label { flex: none; color: var(--muted-light); }
.sponsors__row { display: flex; align-items: center; gap: clamp(28px, 4vw, 48px); flex-wrap: wrap; }
.sponsors__row a { display: flex; align-items: center; min-height: 44px; }
.sponsors__row img { width: auto; height: 32px; filter: brightness(0); opacity: 0.55; transition: opacity 0.2s; }
.sponsors__row a:hover img, .sponsors__row a:focus-visible img { opacity: 0.9; }
@media (max-width: 767px) {
	.sponsors { flex-direction: column; align-items: flex-start; gap: 16px; }
	.sponsors__row {
		flex-wrap: nowrap;
		width: calc(100% + 2 * var(--gutter));
		margin-inline: calc(-1 * var(--gutter));
		padding-inline: var(--gutter);
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		scroll-padding-inline: var(--gutter);
		scrollbar-width: none;
	}
	.sponsors__row::-webkit-scrollbar { display: none; }
	.sponsors__row li { flex: none; scroll-snap-align: start; }
}

/* ---------- 4.5 How it works ---------- */

.steps { position: relative; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; }
.steps::before {
	content: "";
	position: absolute;
	top: 128px; left: 12%; right: 12%;
	border-top: 2px dashed var(--green);
	opacity: 0.5;
}
.step { position: relative; min-width: 0; }
.step > p:last-child { color: var(--muted-light); max-width: 36ch; }
.step__num { margin-bottom: 8px !important; color: var(--green-ink); font-weight: 700; }

.vignette {
	position: relative;
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 12px;
	height: 256px;
	margin-bottom: 24px;
	padding: 24px;
	overflow: hidden;
	background: var(--cream-2);
	border-radius: 20px;
	color: var(--charcoal);
	font-size: 14px;
}
/* The four cards step from beige to brand green, left to right. */
.vignette--rating { background: #F1EDDF; }
.vignette--league { background: #E1E9D1; }
.vignette--app { background: #BFDDB8; }
.vignette--app .app__title { color: var(--green-deep); }

/* Step 1: the app's rating card, flat-illustrated. */
.vignette--rating { justify-content: center; gap: 14px; padding: 20px; }
.me { display: flex; align-items: center; gap: 12px; }
.me__avatar { width: 44px; height: 44px; flex: none; }
.me__hi { color: var(--ink); font-weight: 800; font-size: 17px; line-height: 1.2; }
.me__wave { font-size: 15px; }
.me__member { margin-top: 4px !important; }
.me__badge { display: inline-block; padding: 3px 10px; border-radius: 99px; background: var(--green); color: var(--volt); font: 400 11px/1.4 var(--font-display); text-transform: uppercase; letter-spacing: 0.02em; }
.rcard { min-width: 0; padding: 14px 16px; border: 2px solid var(--green); border-radius: 14px; background: #E6F4E3; }
.rcard__sport { display: flex; align-items: center; gap: 6px; margin-bottom: 8px !important; color: var(--charcoal); font-weight: 800; font-size: 12px; letter-spacing: 0.06em; text-transform: uppercase; }
.rcard__sport svg { width: 16px; height: 16px; }
.rcard__grid { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px; }
.rcard__side { padding-left: 12px; border-left: 1.5px dashed rgba(35, 111, 61, 0.3); }
.rcard__label { color: var(--muted-light); font-weight: 700; font-size: 10px; letter-spacing: 0.08em; text-transform: uppercase; }
.rcard__value { color: var(--ink); font: 800 30px/1.1 var(--font-body); letter-spacing: -0.02em; }
.rcard__spark { width: 100%; height: 18px; margin-top: 4px; }
.rcard__chip { display: inline-block; margin: 4px 0 6px; padding: 2px 8px; border-radius: 99px; background: var(--cream); color: var(--green-ink); font-weight: 700; font-size: 11px; }
.rcard__wl { color: var(--charcoal); font-size: 11px; white-space: nowrap; }

/* Step 2: a league card from "Join a League or Competition". */
.vignette--league { justify-content: flex-start; gap: 12px; padding: 20px; }
.league { min-width: 0; display: grid; gap: 8px; padding: 14px; border-radius: 14px; background: var(--cream); box-shadow: 0 10px 24px rgba(52, 52, 52, 0.08); }
.league__top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.league__sport { display: inline-flex; align-items: center; gap: 6px; color: var(--ink); font-weight: 700; font-size: 13px; }
.league__sport svg { width: 18px; height: 18px; }
.league__type { padding: 3px 8px; border-radius: 6px; background: var(--cream-2); color: var(--ink); font: 400 10px/1.3 var(--font-display); letter-spacing: 0.02em; text-transform: uppercase; white-space: nowrap; }
.league__name { color: var(--ink); font-weight: 800; font-size: 15px; line-height: 1.25; }
.league__dates { display: flex; align-items: center; gap: 6px; color: var(--muted-light); font-size: 12px; }
.league__dates svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.4; stroke-linecap: round; }
.league__foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding-top: 10px; border-top: 1px solid var(--line-light); color: var(--charcoal); font-size: 12px; }
.league__foot strong { color: var(--ink); }

/* Step 3: the app's ladder screen, issuing a challenge. */
.vignette--app { justify-content: flex-start; gap: 12px; padding: 22px; }
.app__title { color: var(--green-ink); font-weight: 800; font-size: 15px; }
.app__btn { display: inline-flex; align-items: center; justify-content: center; gap: 4px; padding: 7px 12px; border: 1.5px solid var(--green-ink); border-radius: 10px; color: var(--green-ink); font-weight: 700; font-size: 12px; white-space: nowrap; }
.app__btn svg { width: 12px; height: 12px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.app__btn--primary { background: var(--volt); border-color: var(--volt); color: var(--ink); }

.ladder { display: grid; gap: 8px; min-width: 0; }
.ladder__row {
	display: grid;
	grid-template-columns: 22px minmax(0, 1fr) auto;
	grid-template-areas: "rank who form" "status status btn";
	gap: 6px 8px;
	align-items: center;
	padding: 8px 10px;
	border-radius: 12px;
	background: var(--cream);
	box-shadow: 0 6px 16px rgba(52, 52, 52, 0.06);
	font-size: 12px;
}
.ladder__rank { grid-area: rank; display: grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; font: 700 11px/1 var(--font-mono); color: var(--ink); }
.ladder__rank--1 { background: #F4C542; box-shadow: inset 0 0 0 2px #E0A82E; }
.ladder__rank--2 { background: #D5DDE0; box-shadow: inset 0 0 0 2px #AFBCC1; }
.ladder__who { grid-area: who; display: flex; flex-direction: column; min-width: 0; line-height: 1.25; }
.ladder__who strong { color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ladder__who span { color: var(--muted-light); font-size: 11px; }
.ladder__form { grid-area: form; display: flex; gap: 3px; }
.ladder__form i { display: grid; place-items: center; width: 18px; height: 18px; border-radius: 50%; background: var(--green); color: var(--cream); font: normal 700 9px/1 var(--font-body); }
.ladder__form i.is-loss { background: #D9534F; }
.ladder__status { grid-area: status; justify-self: start; padding: 3px 8px; border-radius: 6px; font-size: 11px; font-weight: 700; }
.ladder__status--busy { background: #F6DCC8; color: #7A4A2A; }
.ladder__status--ok { background: #CFEBD8; color: var(--green-deep); }
.ladder__status--sent { background: #F6E7A8; color: #6B5300; }
/* Before/after states stacked in one cell; the resting state is "after". */
.ladder__swap { position: relative; display: inline-grid; }
.ladder__swap > .ladder__before, .ladder__swap > .ladder__after { grid-area: 1 / 1; display: inline-flex; align-items: center; justify-content: center; gap: 4px; }
.ladder__status.ladder__swap { padding: 0; background: none; }
.ladder__status.ladder__swap > span { padding: 3px 8px; border-radius: 6px; }
.ladder__before { opacity: 0; }
.ladder__btn .icon { width: 12px; height: 12px; stroke-width: 3; }
.ladder__pointer { position: absolute; right: -6px; bottom: -18px; width: 26px; height: 26px; opacity: 0; pointer-events: none; filter: drop-shadow(0 3px 4px rgba(0, 0, 0, 0.25)); }
.ladder__btn--go::after { content: ""; position: absolute; inset: 0; border-radius: inherit; box-shadow: 0 0 0 0 rgba(204, 246, 86, 0.9); opacity: 0; }
.ladder__btn { position: relative; grid-area: btn; padding: 6px 12px; border-radius: 8px; background: var(--cream-2); color: rgba(52, 52, 52, 0.4); font-weight: 700; font-size: 11px; }
.ladder__btn--go { background: var(--volt); color: var(--ink); }
.ladder__row--compact { grid-template-columns: 22px minmax(0, 1fr) auto; grid-template-areas: "rank who status"; padding-block: 7px; opacity: 0.85; }
.ladder__row--compact .ladder__status { justify-self: end; }
.ladder__toast {
	display: flex; align-items: center; gap: 6px;
	padding: 9px 12px;
	border-radius: 10px;
	background: var(--ink);
	color: var(--cream);
	font-size: 11px;
	font-weight: 700;
	box-shadow: 0 10px 24px rgba(0, 0, 0, 0.2);
}
.ladder__toast .icon { width: 14px; height: 14px; color: var(--volt); stroke-width: 3; }
.vignette--app { justify-content: flex-start; gap: 10px; padding: 20px; }

/* Card 1: assessment chip. */
.me__done { margin-left: auto; display: inline-flex; align-items: center; gap: 4px; padding: 3px 8px; border-radius: 99px; background: var(--cream); color: var(--green-ink); font-size: 10px; font-weight: 700; letter-spacing: 0; text-transform: none; }
.me__done .icon { width: 11px; height: 11px; stroke-width: 3; }

/* Step 4: cartoon match-result card. */
.vignette--result { justify-content: flex-start; gap: 0; padding: 0; background: var(--green-ink); color: var(--cream); }
.vignette--result { box-shadow: 0 0 0 1px rgba(204, 246, 86, 0.35), 0 16px 44px rgba(204, 246, 86, 0.22); }
.result__win { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.result__victory { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px 3px 8px; background: var(--volt); color: var(--ink); font: 400 13px/1.3 var(--font-display); text-transform: uppercase; clip-path: polygon(0 0, 100% 0, calc(100% - 8px) 50%, 100% 100%, 0 100%); }
.result__victory .icon { width: 14px; height: 14px; }
.result__points { padding: 3px 9px; border-radius: 99px; background: rgba(204, 246, 86, 0.16); border: 1px solid rgba(204, 246, 86, 0.6); color: var(--volt); font: 700 11px/1.3 var(--font-mono); letter-spacing: 0.06em; text-transform: uppercase; }
.result__scene { width: 100%; height: 108px; flex: none; }
.result__body { min-width: 0; display: grid; gap: 9px; padding: 12px 18px 16px; }
.result__rank { font: 700 12px/1.2 var(--font-mono); letter-spacing: 0.06em; text-transform: uppercase; color: var(--volt); }
.result__rank s { color: rgba(255, 253, 246, 0.6); text-decoration-thickness: 2px; }
.result__rank-up { display: inline-block; }
.result__score { display: grid; grid-template-columns: 1fr 28px 28px; row-gap: 6px; align-items: center; font: 400 22px/1 var(--font-display); text-transform: uppercase; }
.result__name { font-size: 18px; color: var(--cream); }
.result__name--win, .result__set--win { color: var(--volt); }
.result__set { text-align: right; }
.result__score > :nth-child(-n+3) { padding-bottom: 8px; border-bottom: 1px solid var(--line-dark); }

.player { display: flex; align-items: center; gap: 12px; }
.player__avatar { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%; background: var(--green); color: var(--cream); font-weight: 700; }
.player__info { display: flex; flex-direction: column; line-height: 1.3; }
.player__info span { color: var(--muted-light); font-size: 13px; }
.player__meta { display: flex; gap: 8px; }
.player__meta span { padding: 4px 10px; border-radius: 99px; background: var(--cream); font-size: 12px; }
.pill { align-self: flex-start; padding: 8px 16px; border-radius: 99px; font-weight: 700; font-size: 13px; }
.pill--volt { background: var(--volt); color: var(--ink); }

.score { display: grid; grid-template-columns: 1fr 44px 44px; gap: 8px; align-items: center; }
.score__name { font-weight: 700; }
.score__box { display: grid; place-items: center; height: 44px; border-radius: 10px; background: var(--cream); font: 400 22px/1 var(--font-display); color: var(--muted-light); }
.score__box--win { background: var(--ink); color: var(--volt); }
.vignette__ok { display: flex; align-items: center; gap: 6px; color: var(--green-ink); font-weight: 700; }

@media (max-width: 1023px) {
	.steps { grid-template-columns: minmax(0, 1fr); gap: 40px; }
	.steps::before { display: none; }
}
@media (min-width: 1024px) and (max-width: 1199px) {
	.steps { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 48px; }
	.steps::before { display: none; }
}
@media (min-width: 768px) and (max-width: 1023px) {
	.step { display: grid; grid-template-columns: 40% 1fr; column-gap: 32px; align-items: center; }
	.step .vignette { grid-row: 1 / span 3; margin-bottom: 0; height: 240px; }
}

/* ---------- 4.6 Rating ---------- */

.rating__grid { display: grid; grid-template-columns: 5fr 7fr; gap: clamp(40px, 6vw, 80px); align-items: center; }
.rating .h2 { color: var(--cream); }
.rating__lead { margin: 24px 0 32px !important; color: var(--muted-dark); max-width: 52ch; }
.rules { display: grid; gap: 20px; margin-bottom: 24px !important; }
.rule { display: grid; grid-template-columns: 32px 1fr; gap: 16px; color: var(--muted-dark); }
.rule strong { color: var(--cream); }
.rule__icon { width: 32px; height: 32px; fill: none; stroke: var(--volt); stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }

.chart { padding: clamp(20px, 3vw, 32px); background: var(--ink-2); border: 1px solid var(--line-dark); border-radius: 28px; }
.chart__head { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; margin-bottom: 8px; }
.chart__label { color: var(--muted-dark); }
.chart__value { font-size: clamp(48px, 6vw, 72px); line-height: 0.9; color: var(--volt); font-variant-numeric: tabular-nums; }
.chart__svg { width: 100%; height: auto; overflow: visible; }
.chart__arc path { fill: none; stroke: var(--volt); stroke-width: 2; opacity: 0.18; }
.chart__grid line { stroke: var(--line-dark); stroke-width: 1; }
.chart__grid text, .chart__note { fill: var(--muted-dark); font-family: var(--font-mono); font-size: 12px; letter-spacing: 0.08em; }
.chart__line { fill: none; stroke: var(--volt); stroke-width: 3; stroke-linejoin: round; stroke-linecap: round; stroke-dasharray: 1; stroke-dashoffset: 0; }
.chart__dot--start { fill: var(--cream); }
.chart__dot--win { fill: var(--volt); }
.chart__dot--loss { fill: var(--ink-2); stroke: var(--cream); stroke-width: 2; }
.chart__pill text { font-family: var(--font-mono); font-size: 12px; font-weight: 700; letter-spacing: 0.04em; }
.chart__pill--win rect { fill: var(--volt); }
.chart__pill--win text { fill: var(--ink); }
.chart__pill--loss rect { fill: var(--ink-2); stroke: var(--cream); stroke-width: 1.5; }
.chart__pill--loss text { fill: var(--cream); }
.chart__point > * { transform-box: fill-box; transform-origin: center; }

/* Chart story (all keyed off .is-drawn, final state is the default):
 * 0–1.3s   earlier matches draw, number counts start → before-last
 * 1.6–3.4s "Log match result" card: scores fill, Submit → Confirmed, card leaves
 * 3.4–4s   last segment draws, W +22 pops, number bumps live with a floating +22 */
html.js .chart:not(.is-drawn) .chart__line { stroke-dashoffset: 1; }
html.js .chart:not(.is-drawn) .chart__area { opacity: 0; }
html.js .chart:not(.is-drawn) .chart__point > * { opacity: 0; transform: scale(0.4); }
.chart .chart__line--past { transition: stroke-dashoffset 1.3s cubic-bezier(0.45, 0, 0.25, 1); }
.chart .chart__line--last { transition: stroke-dashoffset 0.55s ease-out 3.4s; }
.chart .chart__area { transition: opacity 0.8s ease 4s; }
.chart .chart__point > * { transition: transform 0.45s var(--ease-back), opacity 0.2s; transition-delay: var(--delay, 0s); }

.chart { position: relative; }
.chart__value-wrap { position: relative; display: inline-block; }
.chart__bump {
	position: absolute;
	right: 0; top: -6px;
	padding: 4px 10px;
	border-radius: 999px;
	background: var(--volt);
	color: var(--ink);
	font: 700 14px/1.2 var(--font-mono);
	opacity: 0;
	pointer-events: none;
}
.chart.is-drawn .chart__bump { animation: iltl-bump 1.3s var(--ease) 3.7s both; }
.chart.is-drawn .chart__value { animation: iltl-flash 0.7s var(--ease-back) 3.7s; }
@keyframes iltl-bump { 0% { opacity: 0; translate: 0 10px; } 25% { opacity: 1; translate: 0 -14px; } 75% { opacity: 1; translate: 0 -22px; } 100% { opacity: 0; translate: 0 -34px; } }
@keyframes iltl-flash { 0%, 100% { scale: 1; } 40% { scale: 1.08; text-shadow: 0 0 24px rgba(204, 246, 86, 0.6); } }

/* Log-result card. Invisible at rest; only appears during the animation. */
.logcard {
	position: absolute;
	right: clamp(16px, 3vw, 32px);
	bottom: clamp(16px, 3vw, 32px);
	display: grid;
	gap: 10px;
	width: min(230px, 62%);
	padding: 14px 16px 16px;
	border: 1px solid var(--line-dark);
	border-radius: 16px;
	background: var(--cream);
	color: var(--ink);
	box-shadow: 0 18px 40px rgba(0, 0, 0, 0.35);
	opacity: 0;
	pointer-events: none;
}
.logcard__title { color: var(--green-ink); font-weight: 800; font-size: 13px; }
.logcard__score { display: grid; grid-template-columns: 1fr 26px 26px; gap: 6px; align-items: center; font-size: 13px; font-weight: 700; }
.logcard__set { display: grid; place-items: center; height: 26px; border-radius: 6px; background: var(--cream-2); font: 400 15px/1 var(--font-display); }
/* Your winning sets. */
.logcard__score > .logcard__set:nth-child(-n+3) { background: var(--ink); color: var(--volt); }
.logcard__btn { position: relative; display: grid; place-items: center; height: 34px; border-radius: 10px; background: var(--volt); font-weight: 800; font-size: 13px; overflow: hidden; }
.logcard__btn-label, .logcard__btn-done { grid-area: 1 / 1; display: inline-flex; align-items: center; gap: 6px; }
.logcard__btn-done { opacity: 0; color: var(--cream); }
.logcard__btn-done .icon { width: 14px; height: 14px; stroke-width: 3; }

.chart.is-drawn .logcard { animation: iltl-logcard 2s var(--ease) 1.5s both; }
.chart.is-drawn .logcard__set { animation: iltl-type 0.3s var(--ease-back) both; animation-delay: calc(1.95s + var(--k) * 0.25s); }
.chart.is-drawn .logcard__btn { animation: iltl-submit 0.5s ease 2.6s both; }
.chart.is-drawn .logcard__btn-label { animation: iltl-out 0.2s ease 2.85s both; }
.chart.is-drawn .logcard__btn-done { animation: iltl-in 0.25s ease 2.85s both; }
@keyframes iltl-logcard { 0% { opacity: 0; translate: 0 18px; scale: 0.96; } 14% { opacity: 1; translate: 0 0; scale: 1; } 82% { opacity: 1; translate: 0 0; } 100% { opacity: 0; translate: 0 -10px; } }
@keyframes iltl-type { from { opacity: 0; scale: 0.5; } }
@keyframes iltl-submit { 0% { scale: 1; } 35% { scale: 0.92; } 70% { scale: 1; background: var(--green); } 100% { background: var(--green); } }
@keyframes iltl-out { to { opacity: 0; translate: 0 -8px; } }
@keyframes iltl-in { from { opacity: 0; translate: 0 8px; } to { opacity: 1; translate: 0 0; } }

@media (max-width: 1023px) { .rating__grid { grid-template-columns: 1fr; } }
/* The SVG scales down ~2.4× on phones; enlarge labels so they stay legible. */
@media (max-width: 767px) {
	.chart__pill { scale: 1.55; }
	.chart__grid text { font-size: 20px; }
	.chart__note { font-size: 19px; }
	.chart__note--above { translate: 0 -12px; }
	.chart__note--below { translate: 0 14px; }
	.chart__line { stroke-width: 5; }
	.chart__dot { r: 9; }
}

/* ---------- 4.7 Events ---------- */

.events { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.event {
	position: relative;
	display: flex;
	flex-direction: column;
	background: var(--cream-2);
	border-radius: 20px;
	overflow: hidden;
	transition: transform 0.35s var(--ease), box-shadow 0.35s var(--ease);
}
.event__art { display: grid; place-items: center; aspect-ratio: 16 / 11; padding: 16px; background: var(--ink); }
.event__art { overflow: hidden; }
.event__art-inner { width: 100%; height: 100%; }
.event__art svg { width: 100%; height: 100%; }
.event__body { display: flex; flex-direction: column; flex: 1; padding: 28px; }
.event__body > p { flex: 1; margin-bottom: 20px !important; color: var(--muted-light); }
.event__link { margin-top: 18px; align-self: flex-start; color: var(--green-ink); text-decoration: none; }
.event__link::after { content: ""; position: absolute; inset: 0; border-radius: 20px; }
.event__link:focus-visible { outline: none; }
.event__link:focus-visible::after { outline: 2px solid var(--green-ink); outline-offset: 3px; }
.chips { display: flex; flex-wrap: wrap; gap: 8px; }
/* Shared illustration style: cream line art, volt accents, dark panel. */
.event__art svg { fill: none; stroke: rgba(255, 253, 246, 0.85); stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
.event__art svg text { stroke: none; }
.art-label { fill: rgba(255, 253, 246, 0.5); font: 700 13px var(--font-mono); }
.art-dim { stroke: rgba(255, 253, 246, 0.22); }
.event__art .art-accent-line { stroke: var(--volt); }
.art-accent rect { fill: var(--volt); stroke: none; }
.art-accent text { fill: var(--ink); font: 700 12px var(--font-mono); letter-spacing: 0.06em; }
.art-vs text { font: 400 16px var(--font-display); letter-spacing: 0; }
.art-shield { fill: var(--cream); font: 400 44px var(--font-display); }
.art-shield--volt { fill: var(--volt); }
.art-dots circle { fill: rgba(255, 253, 246, 0.85); stroke: none; }
.art-accent-dot { fill: var(--volt); stroke: none; }

/* Draw-in when the card reveals; accents pop once the lines are down. */
.art-accent, .art-trophy, .art-accent-dot { transform-box: fill-box; transform-origin: center; }
html.js .event.reveal .draw { stroke-dasharray: 1; stroke-dashoffset: 1; transition: stroke-dashoffset 1.1s var(--ease); transition-delay: calc(var(--d, 0) * 110ms + 0.25s); }
html.js .event.reveal.is-in .draw { stroke-dashoffset: 0; }
.event.is-in .art-accent, .event.is-in .art-accent-dot { animation: iltl-pop 0.45s var(--ease-back) calc(var(--d, 0) * 110ms + 1.05s) both; }
.event.is-in .art-you { animation: iltl-pop 0.45s var(--ease-back) calc(var(--d, 0) * 110ms + 1.05s) both, iltl-climb 0.8s var(--ease) calc(var(--d, 0) * 110ms + 1.6s) both; }
@keyframes iltl-climb { from { translate: 0 38px; } }
.chip { padding: 6px 10px; border-radius: 99px; background: var(--cream); color: var(--charcoal); font-size: 11px; }
@media (hover: hover) {
	.event:hover { transform: translateY(-4px); box-shadow: 0 0 0 2px var(--green); }
}


@media (max-width: 1023px) { .events { grid-template-columns: 1fr; } }
@media (min-width: 768px) and (max-width: 1023px) {
	.event { flex-direction: row; }
	.event__art { flex: 0 0 40%; aspect-ratio: auto; }
}

/* ---------- 4.8 Membership ---------- */

.membership__grid { display: grid; grid-template-columns: 5fr 7fr; gap: clamp(40px, 6vw, 96px); align-items: center; }
.membership .h2 { color: var(--cream); margin-bottom: 28px !important; }

.badge { display: grid; justify-items: center; gap: 20px; }
.badge__label { position: relative; height: 1.4em; color: var(--cream); font-weight: 700; }
.badge__label span { display: block; transition: opacity 0.35s, transform 0.35s var(--ease); }
.badge__label-non { position: absolute; left: 50%; transform: translateX(-50%); opacity: 0; }
.badge__flip {
	position: relative;
	width: min(380px, 100%);
	aspect-ratio: 105 / 45;
	transform-style: preserve-3d;
	transform: rotateY(180deg);
	transition: transform 0.7s var(--ease);
}
/* Shadow lives on the faces: a filter on the 3D container would flatten it and break backface-visibility. */
.badge__face { position: absolute; inset: 0; width: 100%; height: 100%; -webkit-backface-visibility: hidden; backface-visibility: hidden; filter: drop-shadow(0 18px 30px rgba(22, 73, 42, 0.55)); }
.badge__face--back { transform: rotateY(180deg); }
html.js .badge:not(.is-flipped) .badge__flip { transform: none; }
html.js .badge:not(.is-flipped) .badge__label-non { opacity: 1; }
html.js .badge:not(.is-flipped) .badge__label-member { opacity: 0; }
.badge { perspective: 1200px; }

.perks { display: grid; gap: 14px; margin-bottom: 36px !important; }
.perks li { display: flex; align-items: center; gap: 14px; font-weight: 700; font-size: clamp(17px, 1.3vw, 19px); }
.perks__check { display: grid; place-items: center; flex: none; width: 28px; height: 28px; border-radius: 50%; background: var(--volt); color: var(--ink); }
.perks__check .icon { width: 16px; height: 16px; stroke-width: 3; }

.price { margin-bottom: 36px !important; }
.price__tag {
	display: inline-block;
	padding: 10px 28px 12px;
	background: var(--volt);
	color: var(--ink);
	transform: skewX(var(--skew));
	box-shadow: 8px 8px 0 var(--green-deep);
}
.price__inner { display: inline-flex; align-items: baseline; gap: 10px; transform: skewX(14deg); }
.price__value { font-size: clamp(48px, 5vw, 64px); line-height: 1; white-space: nowrap; }
.price__period { white-space: nowrap; }
@media (max-width: 479px) {
	.price__tag { padding-inline: 20px; }
	.price__value { font-size: clamp(36px, 11vw, 48px); font-stretch: 100%; }
}
.price__period { font-weight: 700; }

@media (max-width: 1023px) {
	.membership__grid { grid-template-columns: 1fr; }
	.badge { justify-items: start; }
	.badge__label-non { left: 0; transform: none; }
	.badge__flip { width: min(300px, 100%); }
}

/* ---------- 4.9 Community ---------- */

/* Event photo gallery: one large photo with smaller ones around it. */
.gallery {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	grid-auto-rows: clamp(130px, 13vw, 190px);
	gap: clamp(10px, 1.4vw, 16px);
	margin-bottom: clamp(40px, 5vw, 64px) !important;
}
.gallery__item { overflow: hidden; border-radius: 16px; background: var(--cream-2); }
.gallery__item img { width: 100%; height: 100%; object-fit: cover; }
.gallery__item--1 { grid-column: 1 / span 2; grid-row: 1 / span 2; border-radius: 20px; }
.gallery__item--4 { grid-column: 3 / span 2; }
@media (hover: hover) {
	.gallery__item img, .bento__photo img { transition: scale 0.6s var(--ease); }
	.gallery__item.is-in:hover img, .bento__photo.is-in:hover img { scale: 1.04; }
}
@media (max-width: 767px) {
	.gallery {
		grid-template-columns: none;
		grid-auto-flow: column;
		grid-auto-columns: 82%;
		grid-auto-rows: auto;
		margin-inline: calc(-1 * var(--gutter));
		padding-inline: var(--gutter);
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		scroll-padding-inline: var(--gutter);
		scrollbar-width: none;
	}
	.gallery::-webkit-scrollbar { display: none; }
	.gallery__item, .gallery__item--1, .gallery__item--4 { grid-column: auto; grid-row: auto; aspect-ratio: 4 / 3; scroll-snap-align: start; }
}

.community__video { margin-bottom: 56px !important; }
.community__video figcaption { margin-top: 12px; color: var(--muted-light); font-size: var(--fs-small); }

.carousel { position: relative; }
.carousel__controls { display: flex; justify-content: flex-end; gap: 8px; margin-bottom: 20px; }
.carousel__btn {
	display: grid;
	place-items: center;
	width: 44px; height: 44px;
	padding: 0;
	background: none;
	border: 1px solid var(--charcoal);
	border-radius: 50%;
	color: var(--charcoal);
	cursor: pointer;
	transition: background-color 0.2s, color 0.2s, opacity 0.2s;
}
.carousel__btn:disabled { opacity: 0.3; cursor: default; }
@media (hover: hover) { .carousel__btn:not(:disabled):hover { background: var(--charcoal); color: var(--cream); } }
html:not(.js) .carousel__controls { display: none; }

.carousel__track {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: calc((100% - 48px) / 3);
	gap: 24px;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	scrollbar-width: none;
	padding-bottom: 4px;
}
@media (max-width: 767px) {
	.carousel__track { margin-inline: calc(-1 * var(--gutter)); padding-inline: var(--gutter); scroll-padding-inline: var(--gutter); }
}
.carousel__track::-webkit-scrollbar { display: none; }
.carousel__track:focus-visible { outline-offset: 6px; }

.quote { display: flex; flex-direction: column; gap: 20px; padding: 28px; background: var(--cream-2); border-radius: 20px; scroll-snap-align: start; }
.quote__who { display: flex; align-items: center; gap: 14px; }
.quote__who img { width: 56px; height: 56px; border-radius: 50%; object-fit: cover; }
.quote__name { color: var(--ink); font-weight: 700; }
.quote__title { display: flex; align-items: center; gap: 6px; margin-top: 2px !important; color: var(--green-ink); font-size: 11px; letter-spacing: 0.1em; }
.quote__title .icon { width: 14px; height: 14px; }
.quote__text { color: var(--charcoal); font-size: 17px; line-height: 1.55; }

@media (max-width: 1023px) { .carousel__track { grid-auto-columns: calc((100% - 24px) / 2); } }
@media (max-width: 767px) { .carousel__track { grid-auto-columns: 92%; gap: 16px; } }

/* ---------- 4.10 Final CTA ---------- */

.final { overflow: hidden; text-align: center; }
.final__arc { position: absolute; inset: 0; width: 100%; height: 100%; fill: none; stroke: var(--volt); stroke-width: 2; opacity: 0.45; }
.final__inner { position: relative; display: flex; flex-direction: column; align-items: center; }
.final__title { max-width: 14ch; font-size: calc(var(--fs-hero) * 0.8); line-height: 0.95; text-wrap: balance; margin-bottom: 24px !important; }
.final__sub { max-width: 46ch; margin-bottom: 36px !important; color: var(--muted-dark); font-size: clamp(17px, 1.4vw, 20px); }
@media (max-width: 479px) { .final .actions .btn { width: 100%; } }

/* ---------- 4.11 Footer ---------- */

.footer { padding-top: clamp(56px, 7vw, 88px); border-top: 1px solid var(--line-dark); font-size: 15px; }
.footer__grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1.3fr; gap: 40px; padding-bottom: 48px; }
.footer__brand p { max-width: 34ch; margin: 20px 0 !important; color: var(--muted-dark); }
.footer__heading { margin-bottom: 16px !important; color: var(--cream); font-size: 12px; font-weight: 700; }
.footer__col li + li { margin-top: 6px; }
.footer a { color: var(--muted-dark); text-decoration: none; transition: color 0.2s; }
.footer a:hover { color: var(--cream); }
.footer__col a { display: inline-flex; align-items: center; gap: 8px; min-height: 32px; }
.footer address { color: var(--muted-dark); font-style: normal; line-height: 1.5; }
.footer__email { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 8px; }
.copy {
	display: inline-grid;
	place-items: center;
	width: 36px; height: 36px;
	padding: 0;
	background: none;
	border: 1px solid var(--line-dark);
	border-radius: 50%;
	color: var(--muted-dark);
	cursor: pointer;
}
.copy .icon { width: 16px; height: 16px; }
.copy:hover { color: var(--cream); border-color: var(--cream); }
.copy__status { color: var(--volt); font-size: 11px; }
.footer__legal {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 12px 24px;
	padding-block: 24px max(24px, env(safe-area-inset-bottom));
	border-top: 1px solid var(--line-dark);
	color: var(--muted-dark);
	font-size: 14px;
}
.footer__legal ul { display: flex; flex-wrap: wrap; gap: 8px 24px; }
.footer__legal a { display: inline-flex; min-height: 32px; align-items: center; }

@media (max-width: 1023px) { .footer__grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 599px) { .footer__grid { grid-template-columns: 1fr; } }

/* ---------- Parallax (JS sets --py; `translate` stacks with any transform) ---------- */

html.js [data-parallax] { translate: 0 var(--py, 0px); will-change: translate; }

/* ---------- Scroll reveal (JS only) ---------- */

html.js .reveal { opacity: 0; transform: translateY(24px); transition: opacity 0.7s var(--ease), transform 0.7s var(--ease); transition-delay: calc(var(--d, 0) * 110ms); }
html.js .reveal.is-in { opacity: 1; transform: none; }

/* ---------- Scroll micro-interactions (bento + steps) ----------
 * Each runs once when its tile/step gets .is-in. Base styles are the final state,
 * so with reduced motion (animations off) everything simply shows as-is.
 * SVG parts animate rotate/scale/translate, not transform, so their own
 * transform attributes are kept.
 */

/* Bento: tiles pop up in sequence. */
html.js .bento__tile.reveal { transform: translateY(28px) scale(0.96); }
html.js .bento__tile.reveal.is-in { transform: none; }

/* Photos settle from a slight zoom as their tile lands. */
html.js .bento__photo.reveal img, html.js .bento__stat.reveal .bento__bg, html.js .gallery__item.reveal img { scale: 1.12; transition: scale 1.4s var(--ease); transition-delay: inherit; }
html.js .bento__photo.reveal.is-in img, html.js .bento__stat.reveal.is-in .bento__bg, html.js .gallery__item.reveal.is-in img { scale: 1; }

/* Steps: connector draws across, cards follow it in sequence. */
.steps::before { transform-origin: left center; transition: transform 3.8s cubic-bezier(0.45, 0, 0.55, 1) 0.2s; }
html.js .steps:not(.is-in)::before { transform: scaleX(0); }
/* Cards play one after another on a single timeline (--t0 = each card's start).
 * Stacked layouts play each card as it scrolls into view instead. */
html.js .step.reveal { transition-delay: 0s; }
html.js .step.reveal .vignette > * { opacity: 0; translate: 0 12px; transition: opacity 0.4s var(--ease), translate 0.5s var(--ease); transition-delay: var(--t0, 0s); }
html.js .step.reveal.is-in .vignette > * { opacity: 1; translate: 0 0; }
@media (max-width: 1023px) { .step { --t0: 0s !important; } }

/* Inside each card, once it lands. */
.rcard__spark-line { transform-box: fill-box; transform-origin: left center; }
.step.is-in .rcard__spark-line { animation: iltl-grow-x 0.9s ease calc(var(--t0, 0s) + 0.4s) both; }
.step.is-in .league__join { animation: iltl-pulse 0.7s ease calc(var(--t0, 0s) + 0.7s) 1; }
.step.is-in .result__score > * { animation: iltl-slide 0.5s var(--ease) both; animation-delay: calc(var(--t0, 0s) + 0.5s); }
/* Card 3: pointer glides to Challenge, taps, button and status flip, toast follows. */
.step.is-in .ladder__pointer { animation: iltl-pointer 0.85s var(--ease) calc(var(--t0, 0s) + 0.35s) both; }
.step.is-in .ladder__btn--go { animation: iltl-tap 0.3s ease calc(var(--t0, 0s) + 0.8s) both; }
.step.is-in .ladder__btn--go::after { animation: iltl-ripple 0.55s ease-out calc(var(--t0, 0s) + 0.85s) both; }
.step.is-in .ladder__swap > .ladder__before { animation: iltl-hide 0.2s ease calc(var(--t0, 0s) + 0.95s) both; }
.step.is-in .ladder__swap > .ladder__after { animation: iltl-show 0.25s ease calc(var(--t0, 0s) + 1s) both; }
.step.is-in .ladder__toast { animation: iltl-toast 0.4s var(--ease-back) calc(var(--t0, 0s) + 1.25s) both; }
@keyframes iltl-pointer { 0% { opacity: 0; translate: 46px 56px; } 20% { opacity: 1; } 50% { translate: 0 0; scale: 1; } 58% { scale: 0.82; } 66% { scale: 1; } 85% { opacity: 1; translate: 0 0; } 100% { opacity: 0; translate: 8px 14px; } }
@keyframes iltl-ripple { 0% { opacity: 1; box-shadow: 0 0 0 0 rgba(204, 246, 86, 0.9); } 100% { opacity: 0; box-shadow: 0 0 0 12px rgba(204, 246, 86, 0); } }
@keyframes iltl-hide { from { opacity: 1; } to { opacity: 0; } }
@keyframes iltl-show { from { opacity: 0; scale: 0.8; } to { opacity: 1; scale: 1; } }
.step.is-in .result__win { animation: iltl-pop 0.45s var(--ease-back) calc(var(--t0, 0s) + 0.85s) both; transform-origin: left center; }
.step.is-in .result__rank { animation: iltl-slide 0.45s var(--ease) calc(var(--t0, 0s) + 1s) both; }
.step.is-in .result__rank-up { animation: iltl-rank-up 0.5s var(--ease-back) calc(var(--t0, 0s) + 1.2s) 2; }
@keyframes iltl-rank-up { 50% { translate: 0 -4px; } }
.step.is-in .vignette--result { animation: iltl-glow 1.3s ease calc(var(--t0, 0s) + 0.9s) 1; }
@keyframes iltl-toast { from { opacity: 0; translate: 0 14px; } }
@keyframes iltl-pop { 0% { scale: 0; } 70% { scale: 1.15; } 100% { scale: 1; } }
@keyframes iltl-glow { 50% { box-shadow: 0 0 0 1px rgba(204, 246, 86, 0.7), 0 16px 60px rgba(204, 246, 86, 0.45); } }
.step.is-in .result__score > :nth-child(n+4) { animation-delay: calc(var(--t0, 0s) + 0.65s); }
@keyframes iltl-grow-x { from { scale: 0 1; } }
@keyframes iltl-pulse { 0%, 100% { scale: 1; box-shadow: 0 0 0 0 rgba(204, 246, 86, 0.8); } 50% { scale: 1.08; box-shadow: 0 0 0 10px rgba(204, 246, 86, 0); } }
@keyframes iltl-tap { 0% { scale: 1; } 40% { scale: 0.9; } 100% { scale: 1; } }
@keyframes iltl-slide { from { opacity: 0; translate: -14px 0; } }

/* ---------- Reduced motion ---------- */

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	.v2 *, .v2 *::before, .v2 *::after { transition-duration: 0.01ms !important; transition-delay: 0s !important; animation: none !important; }
	html.js .reveal, html.js .hero .line > span, html.js .hero .hero__sub, html.js .hero .hero__actions, html.js .hero .hero__micro, html.js .hero .eyebrow { opacity: 1; transform: none; }
	html.js .hero .hl::before { transform: skewX(var(--skew)); }
	html.js .chart:not(.is-drawn) .chart__line { stroke-dashoffset: 0; }
	html.js .chart:not(.is-drawn) .chart__area, html.js .chart:not(.is-drawn) .chart__point > * { opacity: 1; transform: none; }
	html.js .badge:not(.is-flipped) .badge__flip { transform: rotateY(180deg); }
	html.js .badge:not(.is-flipped) .badge__label-non { opacity: 0; }
	html.js .badge:not(.is-flipped) .badge__label-member { opacity: 1; }
	.carousel__track { scroll-behavior: auto; }
	html.js [data-parallax] { translate: none; }
	html.js .event.reveal .draw { stroke-dashoffset: 0; }
	html.js .step.reveal .vignette > * { opacity: 1; translate: none; }
	html.js .steps:not(.is-in)::before { transform: none; }
	html.js .bento__tile.reveal { scale: 1; transform: none; }
	html.js .bento__photo.reveal img, html.js .bento__stat.reveal .bento__bg, html.js .gallery__item.reveal img { scale: 1; }
}
