/* Latorium — shared stylesheet. */

:root {
	--ink: #f2f2f5;
	--ink-2: #b2b2bb;
	--paper: #0b0b0e;
	--paper-2: #141419;
	--rule: #26262e;
	--rule-dark: #35353f;
	--accent: #e0bc77;
	--night: #141419;
	--night-ink: #f2f2f5;
	--night-ink-2: #b2b2bb;
	--measure: 40ch;
	--page: 1220px;
	--ease: cubic-bezier(0.28, 0.11, 0.32, 1);
	--font-sans: "Helvetica Neue", "Haas Grotesk Display", Helvetica, Arial, sans-serif;
	--font-mono: "SF Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	--font-serif: Georgia, "Times New Roman", serif;
	color-scheme: dark;
}

* {
	box-sizing: border-box;
}
html {
	scroll-behavior: smooth;
	-webkit-text-size-adjust: 100%;
}

/* Film grain overlay so the background isn't dead flat.
 * This is a tiny base64 SVG noise tile — no external request. */
body {
	margin: 0;
	background: var(--paper);
	color: var(--ink);
	font-family: var(--font-sans);
	font-size: 17px;
	line-height: 1.5;
	letter-spacing: -0.011em;
	-webkit-font-smoothing: antialiased;
	overflow-x: hidden;
}
body::before {
	content: "";
	position: fixed;
	inset: 0;
	z-index: 9999;
	pointer-events: none;
	opacity: 0.028;
	background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
	background-repeat: repeat;
	background-size: 200px 200px;
}

.page {
	max-width: var(--page);
	margin: 0 auto;
	padding: 0 32px;
}
@media (max-width: 640px) {
	.page {
		padding: 0 20px;
	}
}
a {
	color: inherit;
	text-decoration: none;
}

::selection {
	background: var(--accent);
	color: var(--paper);
	text-shadow: none;
}

:focus-visible {
	outline: 2px solid var(--accent);
	outline-offset: 3px;
	border-radius: 2px;
}
.skip {
	position: absolute;
	left: 16px;
	top: -60px;
	z-index: 100;
	padding: 10px 16px;
	background: var(--ink);
	color: var(--paper);
	border-radius: 6px;
	font-size: 14px;
	transition: top 0.2s var(--ease);
}
.skip:focus-visible {
	top: 12px;
}
mono,
code,
.mono {
	font-family: var(--font-mono);
}

/* ------------------------------------------------------------------ nav */
.masthead {
	position: sticky;
	top: 0;
	z-index: 40;
	background: rgba(11, 11, 14, 0.82);
	backdrop-filter: blur(8px) saturate(120%);
	border-bottom: 1px solid var(--rule);
}
.masthead nav {
	display: flex;
	align-items: center;
	gap: 40px;
	height: 56px;
	max-width: var(--page);
	margin: 0 auto;
	padding: 0 32px;
}
.wordmark {
	display: flex;
	align-items: center;
	gap: 10px;
	font-size: 17px;
	font-weight: 600;
	letter-spacing: -0.02em;
	flex: none;
}
.wordmark img {
	width: 27px;
	height: 27px;
	display: block;
	border-radius: 6px;
}
.masthead .links {
	display: flex;
	gap: 34px;
	font-size: 14px;
	color: var(--ink-2);
	font-family: var(--font-mono);
	letter-spacing: 0;
}
.masthead .links a {
	transition: color 0.25s var(--ease);
}
.masthead .links a:hover,
.masthead .links a[aria-current] {
	color: var(--ink);
}
.masthead .tail {
	margin-left: auto;
	display: flex;
	gap: 26px;
	align-items: center;
	font-size: 14px;
}
.nav-signin {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 34px;
	padding: 0 14px;
	border: 1px solid var(--rule-dark);
	border-radius: 4px;
	color: var(--ink);
	font-weight: 600;
	transition:
		background-color 0.2s var(--ease),
		border-color 0.2s var(--ease);
}
.nav-signin:hover,
.nav-signin:focus-visible {
	background: var(--rule);
	border-color: var(--ink-3);
}
@media (max-width: 820px) {
	.masthead .links {
		display: none;
	}
	.masthead nav {
		padding: 0 20px;
		gap: 20px;
	}
}

/* --------------------------------------------------------------- opener */
.opener {
	padding: 96px 0 64px;
}
.opener h1 {
	margin: 0 0 24px;
	font-size: clamp(34px, 5.2vw, 64px);
	line-height: 1.06;
	letter-spacing: -0.026em;
	font-weight: 500;
	max-width: 21ch;
	text-wrap: balance;
}
.opener .standfirst {
	margin: 0;
	max-width: 52ch;
	font-size: clamp(18px, 1.9vw, 21px);
	line-height: 1.5;
	letter-spacing: -0.012em;
	color: var(--ink-2);
	text-wrap: pretty;
}
.opener .actions {
	margin-top: 32px;
	display: flex;
	gap: 28px;
	align-items: center;
	flex-wrap: wrap;
}

.opener > .page {
	display: grid;
	grid-template-columns: minmax(0, 7fr) minmax(0, 4fr);
	gap: 72px;
	align-items: start;
}
.opener .aside {
	padding-top: 8px;
}
.opener .aside .cap {
	margin: 0 0 4px;
	font-size: 12px;
	color: var(--ink-2);
	padding-bottom: 14px;
	border-bottom: 1px solid var(--ink);
	font-family: var(--font-mono);
	text-transform: uppercase;
	letter-spacing: 0.06em;
}
.opener .aside .ledger {
	margin-top: 0;
	border-top: 0;
}
.opener .aside .ledger dd {
	font-size: 24px;
	font-weight: 500;
	font-family: var(--font-mono);
	letter-spacing: -0.02em;
}
.opener .aside .note {
	margin: 16px 0 0;
	font-size: 13px;
	line-height: 1.55;
	color: var(--ink-2);
	font-family: var(--font-mono);
}
@media (max-width: 1000px) {
	.opener > .page {
		grid-template-columns: 1fr;
		gap: 44px;
	}
	.opener .aside {
		max-width: 46ch;
	}
}

/* Underline that draws on hover — kept, but slightly slower and rougher. */
.pull {
	font-size: 17px;
	position: relative;
	padding-bottom: 3px;
}
.pull::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	height: 1px;
	width: 100%;
	background: currentColor;
	transform-origin: left;
	transform: scaleX(0);
	transition: transform 0.55s cubic-bezier(0.22, 1, 0.36, 1);
}
.pull:hover::after {
	transform: scaleX(1);
}
.pull.lead {
	color: var(--accent);
}

/* ------------------------------------------------------------- chapters */
.chapter {
	padding: 108px 0;
	border-top: 1px solid var(--rule);
}
/* Every second chapter gets slightly different padding so the rhythm breathes. */
.chapter:nth-child(even) {
	padding: 96px 0 120px;
}

.chapter > .page {
	display: grid;
	grid-template-columns: minmax(0, 5fr) minmax(0, 6fr);
	gap: 72px;
	align-items: start;
}
.chapter h2 {
	margin: 0;
	font-size: clamp(30px, 4.6vw, 56px);
	line-height: 1.04;
	letter-spacing: -0.026em;
	font-weight: 500;
	max-width: 18ch;
	text-wrap: balance;
}
.chapter .body {
	max-width: var(--measure);
}
.chapter .body p {
	margin: 0 0 20px;
	color: var(--ink-2);
	font-size: 18px;
	line-height: 1.55;
	text-wrap: pretty;
}
.chapter .body p.first {
	color: var(--ink);
	font-size: 21px;
	line-height: 1.45;
	letter-spacing: -0.014em;
}
.chapter .body p:last-child {
	margin-bottom: 0;
}
@media (max-width: 900px) {
	.chapter > .page {
		grid-template-columns: 1fr;
		gap: 28px;
	}
	.chapter {
		padding: 76px 0;
	}
}

.chapter.night {
	background: var(--paper-2);
	border-top-color: var(--rule);
}
.chapter.night .body p {
	color: var(--night-ink-2);
}
.chapter.night .body p.first {
	color: var(--night-ink);
}
.chapter.night .slab {
	border-color: var(--rule-dark);
}
.chapter.night .ledger div {
	border-color: var(--rule-dark);
}

/* --------------------------------------------------------------- slabs */
/* Asymmetric radius: looks like a panel that was cut by hand, not generated. */
.slab {
	border: 1px solid var(--rule);
	border-radius: 4px 10px 10px 4px;
	border-left: 2px solid var(--accent);
	overflow: hidden;
	margin-top: 34px;
}
.slab.tight {
	margin-top: 0;
}
.slab pre {
	margin: 0;
	padding: 26px;
	overflow-x: auto;
	white-space: pre-wrap;
	font-family: var(--font-mono);
	font-size: 13px;
	line-height: 1.85;
	letter-spacing: 0;
}
.chapter.night .slab pre {
	color: var(--night-ink);
}
.q {
	color: var(--ink-2);
}
.chapter.night .q {
	color: var(--night-ink-2);
}
.a {
	color: var(--ink);
	font-weight: 500;
}
.chapter.night .a,
.stage .slab .a {
	color: #ffffff;
	font-weight: 500;
}
.caret {
	display: inline-block;
	width: 7px;
	height: 14px;
	background: currentColor;
	vertical-align: -2px;
	animation: caret 1.1s steps(1) infinite;
}
@keyframes caret {
	50% {
		opacity: 0;
	}
}

/* Ledger — figures as typography, now in monospace because they are measurements. */
.ledger {
	margin-top: 34px;
	border-top: 1px solid var(--rule);
}
.chapter.night .ledger {
	border-top-color: var(--rule-dark);
}
.ledger div {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 24px;
	padding: 17px 0;
	border-bottom: 1px solid var(--rule);
}
.ledger dt {
	margin: 0;
	font-size: 15px;
	color: var(--ink-2);
	font-family: var(--font-sans);
}
.chapter.night .ledger dt {
	color: var(--night-ink-2);
}
.ledger dd {
	margin: 0;
	font-size: 21px;
	letter-spacing: -0.02em;
	font-variant-numeric: tabular-nums;
	font-family: var(--font-mono);
}

.draw {
	transform: scaleX(0);
	transform-origin: left;
	transition: transform 1.1s var(--ease);
}
.draw.in {
	transform: scaleX(1);
}

/* --------------------------------------------------------------- prices */
.prices {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	border-top: 1px solid var(--rule);
}
.prices > div {
	padding: 40px 32px 44px;
	border-bottom: 1px solid var(--rule);
	border-right: 1px solid var(--rule);
}
.prices > div:last-child {
	border-right: 0;
}
.prices h3 {
	margin: 0 0 22px;
	font-size: 15px;
	font-weight: 500;
	color: var(--ink-2);
	font-family: var(--font-mono);
	text-transform: uppercase;
	letter-spacing: 0.04em;
}
.prices .figure {
	font-size: 42px;
	letter-spacing: -0.03em;
	font-weight: 500;
	line-height: 1;
	font-family: var(--font-mono);
}
.prices .figure em {
	font-style: normal;
	font-size: 16px;
	font-weight: 400;
	color: var(--ink-2);
	letter-spacing: -0.01em;
	font-family: var(--font-sans);
}
.prices .terms {
	margin: 10px 0 30px;
	font-size: 14px;
	color: var(--ink-2);
	min-height: 20px;
	font-family: var(--font-mono);
}
.prices ul {
	list-style: none;
	margin: 0 0 32px;
	padding: 0;
}
.prices li {
	padding: 9px 0;
	border-bottom: 1px solid var(--rule);
	font-size: 15px;
	color: var(--ink-2);
}
.prices li:last-child {
	border-bottom: 0;
}
.prices li b {
	color: var(--ink);
	font-weight: 500;
}
/* The two sales-led tiers sit in their own row. Five cards do not divide into
   three, and putting Team and Enterprise beside the self-serve plans implies
   they can be bought the same way. */
.prices.duo {
	grid-template-columns: repeat(2, 1fr);
	border-top: 0;
}
@media (max-width: 900px) {
	.prices,
	.prices.duo {
		grid-template-columns: 1fr;
	}
	.prices > div {
		border-right: 0;
	}
}

/* ----------------------------------------------------------------- misc */
.steps {
	list-style: none;
	margin: 30px 0 0;
	padding: 0;
	counter-reset: none;
}
.steps li {
	padding: 18px 0;
	border-top: 1px solid var(--rule);
	color: var(--ink-2);
	font-size: 17px;
}
.chapter.night .steps li {
	border-top-color: var(--rule-dark);
}
.footnote {
	margin-top: 30px;
	font-size: 14px;
	line-height: 1.6;
	color: var(--ink-2);
	max-width: 62ch;
	font-family: var(--font-mono);
}

/* Editorial side-notes that break the grid on wide screens. */
.margin-note {
	float: right;
	clear: right;
	width: 16ch;
	margin-right: -20ch;
	font-size: 13px;
	line-height: 1.5;
	color: var(--ink-2);
	font-family: var(--font-mono);
	border-top: 1px solid var(--accent);
	padding-top: 8px;
}
@media (max-width: 1200px) {
	.margin-note {
		float: none;
		width: auto;
		margin: 20px 0;
		border-top: 0;
		border-left: 2px solid var(--accent);
		padding: 0 0 0 14px;
	}
}

.qa {
	border-top: 1px solid var(--rule);
}
.qa details {
	border-bottom: 1px solid var(--rule);
}
.qa summary {
	cursor: pointer;
	list-style: none;
	padding: 26px 0;
	font-size: 21px;
	letter-spacing: -0.018em;
	display: flex;
	justify-content: space-between;
	gap: 28px;
}
.qa summary::-webkit-details-marker {
	display: none;
}
.qa summary::after {
	content: "";
	width: 13px;
	height: 13px;
	flex: none;
	margin-top: 9px;
	border-right: 1px solid var(--ink);
	border-bottom: 1px solid var(--ink);
	transform: rotate(45deg);
	transition: transform 0.4s var(--ease);
}
.qa details[open] summary::after {
	transform: rotate(225deg);
}
.qa details p {
	margin: 0 0 28px;
	max-width: 62ch;
	color: var(--ink-2);
	font-size: 17px;
}

footer {
	border-top: 1px solid var(--rule);
	padding: 44px 0 72px;
	font-size: 13px;
	color: var(--ink-2);
	font-family: var(--font-mono);
}
footer .row {
	display: flex;
	justify-content: space-between;
	gap: 28px;
	flex-wrap: wrap;
}
footer .row a:hover {
	color: var(--ink);
}
footer .cols {
	display: flex;
	gap: 34px;
	flex-wrap: wrap;
}

/* Entrance: short travel, long ease. Nothing bounces. */
.enter {
	opacity: 0;
	transform: translateY(14px);
	transition:
		opacity 0.9s var(--ease),
		transform 0.9s var(--ease);
}
.enter.in {
	opacity: 1;
	transform: none;
}
.enter.s1 {
	transition-delay: 0.08s;
}
.enter.s2 {
	transition-delay: 0.16s;
}
.enter.s3 {
	transition-delay: 0.24s;
}

/* ================================================================ motion */
@view-transition {
	navigation: auto;
}
.masthead {
	view-transition-name: masthead;
}
.wordmark img {
	view-transition-name: mark;
}
::view-transition-old(root) {
	animation: vt-out 0.28s var(--ease) both;
}
::view-transition-new(root) {
	animation: vt-in 0.42s var(--ease) both;
}
@keyframes vt-out {
	to {
		opacity: 0;
		transform: translateY(-8px);
	}
}
@keyframes vt-in {
	from {
		opacity: 0;
		transform: translateY(10px);
	}
}

.progress {
	position: fixed;
	top: 0;
	left: 0;
	height: 2px;
	width: 100%;
	z-index: 50;
	background: var(--accent);
	transform: scaleX(0);
	transform-origin: left;
	opacity: 0.85;
}
@supports (animation-timeline: scroll()) {
	.progress {
		animation: fill linear;
		animation-timeline: scroll(root block);
	}
	@keyframes fill {
		to {
			transform: scaleX(1);
		}
	}
}

.split {
	display: inline-block;
	overflow: hidden;
	vertical-align: bottom;
}
.split > i {
	display: inline-block;
	font-style: inherit;
	transform: translateY(105%);
	transition: transform 0.82s var(--ease);
}
.split.in > i {
	transform: none;
}

/* -------------------------------------------------------- pinned sequence */
.sequence {
	border-top: 1px solid var(--rule);
	background: var(--paper-2);
}
.sequence > .page {
	display: grid;
	grid-template-columns: minmax(0, 6fr) minmax(0, 5fr);
	gap: 72px;
	align-items: start;
}
.stage {
	position: sticky;
	top: 96px;
	padding: 96px 0;
}
.stage h2 {
	margin: 0 0 30px;
	font-size: clamp(30px, 4.4vw, 52px);
	line-height: 1.05;
	letter-spacing: -0.026em;
	font-weight: 500;
	max-width: 15ch;
}
.stage .slab {
	margin-top: 0;
	border-color: var(--rule-dark);
	background: #08080b;
	border-left: 2px solid var(--accent);
	border-radius: 4px 10px 10px 4px;
}
.stage .slab pre {
	color: var(--night-ink);
	min-height: 132px;
}

.beats {
	padding: 96px 0;
}
.beat {
	min-height: 58vh;
	display: flex;
	flex-direction: column;
	justify-content: center;
	border-top: 1px solid var(--rule);
	opacity: 0.34;
	transition: opacity 0.55s var(--ease);
}
.beat:first-child {
	border-top: 0;
}
.beat.live {
	opacity: 1;
}
.beat h3 {
	margin: 0 0 14px;
	font-size: 23px;
	letter-spacing: -0.02em;
	font-weight: 500;
}
.beat p {
	margin: 0;
	color: var(--ink-2);
	font-size: 17px;
	max-width: 40ch;
	text-wrap: pretty;
}
.beat .figure {
	margin-top: 22px;
	font-size: clamp(34px, 4.2vw, 50px);
	letter-spacing: -0.03em;
	font-variant-numeric: tabular-nums;
	line-height: 1;
	font-weight: 500;
	font-family: var(--font-mono);
}
.beat .figure small {
	font-size: 15px;
	letter-spacing: -0.01em;
	color: var(--ink-2);
	display: block;
	margin-top: 10px;
	font-weight: 400;
	font-family: var(--font-sans);
}
@media (max-width: 900px) {
	.sequence > .page {
		grid-template-columns: 1fr;
		gap: 0;
	}
	.stage {
		position: static;
		padding: 76px 0 0;
	}
	.beats {
		padding: 40px 0 76px;
	}
	.beat {
		min-height: 0;
		padding: 34px 0;
		opacity: 1;
	}
}

@supports (animation-timeline: view()) {
	.chapter h2 {
		animation: drift linear both;
		animation-timeline: view();
		animation-range: entry 0% cover 60%;
	}
	@keyframes drift {
		from {
			transform: translateY(26px);
		}
		to {
			transform: translateY(-10px);
		}
	}
}

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation: none !important;
		transition: none !important;
	}
	.enter {
		opacity: 1;
		transform: none;
	}
	.draw {
		transform: scaleX(1);
	}
	.split > i {
		transform: none;
	}
	.beat {
		opacity: 1;
	}
	.progress {
		display: none;
	}
	.chapter h2 {
		transform: none;
	}
	body::before {
		display: none;
	}
}

/* ------------------------------------------------------------ screenshots */
.shot {
	margin: 34px 0 0;
}
.shot img {
	display: block;
	width: 100%;
	height: auto;
	border: 1px solid var(--rule-dark);
	border-radius: 8px;
	background: #08080b;
	/* Slight physical shadow so it feels like a screen on a desk, not a floating card. */
	box-shadow:
		0 18px 42px -12px rgba(0, 0, 0, 0.55),
		0 2px 4px rgba(0, 0, 0, 0.4);
}
.shot figcaption {
	margin: 14px 0 0;
	font-size: 13.5px;
	color: var(--ink-2);
	line-height: 1.55;
	font-family: var(--font-mono);
}
.shot.wide {
	grid-column: 1 / -1;
}
.shot.narrow img {
	max-width: 380px;
}

/* Pull quote — a human voice in the machine. */
.pull-quote {
	font-family: var(--font-serif);
	font-size: 24px;
	line-height: 1.35;
	color: var(--ink);
	font-style: italic;
	max-width: 28ch;
	margin: 0;
	padding: 0;
}
.pull-quote::before {
	content: "\201C";
	display: block;
	font-size: 64px;
	line-height: 1;
	color: var(--accent);
	font-family: var(--font-sans);
	margin-bottom: -18px;
	opacity: 0.7;
}
/* ---------------------------------------------------------------- buttons */
/* Cursor leads with a solid primary button and demotes everything else to a
 * text link with an arrow. That hierarchy is worth borrowing: the old site
 * gave every action the same weight, so nothing read as the next step.
 * A flat fill, not a gradient — the slop list objects to the gradient, not
 * to the button. */
.btn {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 11px 20px;
	border-radius: 8px;
	background: var(--ink);
	color: var(--paper);
	font-size: 15px;
	font-weight: 500;
	letter-spacing: -0.011em;
	border: 1px solid var(--ink);
	transition:
		transform 0.18s var(--ease),
		background 0.18s var(--ease);
}
.btn:hover {
	transform: translateY(-1px);
	background: #ffffff;
}
.btn.ghost {
	background: transparent;
	color: var(--ink);
	border-color: var(--rule-dark);
}
.btn.ghost:hover {
	background: transparent;
	border-color: var(--ink);
}

/* The arrow is Cursor's most portable motif: it marks a link as forward
 * motion without needing colour or weight to do it. */
.pull.go::before {
	/* Written as a CSS escape, not a literal arrow: the file then contains only
   * ASCII, so no copy, re-encode or transfer between folders can mangle it. */
	content: "\2192";
	margin-right: 8px;
	display: inline-block;
	transition: transform 0.3s var(--ease);
}
.pull.go:hover::before {
	transform: translateX(4px);
}

/* Product shots carry more of the page, so give them room and lift rather
 * than sitting flush in the column. */
.shot.hero {
	margin-top: 56px;
}
.shot.hero img {
	border-color: var(--rule-dark);
}
.shot figcaption {
	max-width: 62ch;
}

/* ----------------------------------------------------- pricing correction */
/* The three columns were not comparable at a glance:
 *   - a worded figure ("No ceiling") rendered at the same size as "5k" and
 *     swamped the row, so the cheapest plan looked smallest;
 *   - the card with one extra feature pushed its button lower than the others;
 *   - the three calls to action were a ghost button, a solid button and a bare
 *     text link, which reads as three different kinds of thing.
 */
.prices > div {
	display: flex;
	flex-direction: column;
}
/* Push every call to action to the same baseline regardless of list length. */
.prices ul {
	flex: 1 0 auto;
}
.prices > div > .btn {
	align-self: flex-start;
	margin-top: 8px;
}

/* A figure made of words needs less size to carry the same weight than a
 * two-character one does. */
.figure.words {
	font-size: 30px;
	letter-spacing: -0.02em;
	line-height: 1.15;
}
.figure.words em {
	display: block;
	margin-top: 6px;
}

/* Reserve one box for every figure and sit the content on its floor, so a
 * one-line "5k" and a two-line "No ceiling" both put the line beneath them at
 * the same height. Without this the three columns drift out of step and the
 * eye cannot compare them. */
.prices .figure {
	min-height: 78px;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
}

/* Only the recommended plan is solid; the other two are equals beside it. */
.prices .btn {
	min-width: 132px;
	justify-content: center;
}

/* ------------------------------------------------- tiers that do not exist yet */
/* A plan you cannot buy must not look like a button you can press. Same shape as
 * the real call to action so the columns still align, but visibly inert. */
.btn.soon {
	background: none;
	border: 1px dashed var(--rule);
	color: var(--ink-3, #8a8a94);
	cursor: default;
	font-style: italic;
}
.btn.soon:hover {
	background: none;
	transform: none;
}

/* ------------------------------------------------------- comparison table */
/* Two columns of numbers beat two paragraphs describing them. Scrolls inside
 * itself on a phone rather than pushing the page sideways. */
.compare {
	width: 100%;
	border-collapse: collapse;
	margin: 26px 0 8px;
	font-size: 15px;
}
.compare th,
.compare td {
	text-align: left;
	padding: 12px 14px;
	border-bottom: 1px solid var(--rule);
}
.compare thead th {
	font-weight: 500;
	color: var(--ink-2);
	font-size: 13px;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}
.compare thead th:not(:first-child),
.compare td:not(:first-child) {
	text-align: right;
	width: 22%;
}
.compare tbody tr:last-child td {
	border-bottom: 0;
}
.compare td:last-child {
	color: var(--ink);
}
.compare td:nth-child(2) {
	color: var(--ink-3, #8a8a94);
}
.compare b {
	font-weight: 600;
}

/* ------------------------------------------------------------ the toolkit */
/* A definition list, not a card grid with icons. Each row is a real tool name
 * and what it does, which is the only thing a reader wants here. */
/* ----------------------------------------------------- the toolkit */
.kit {
	margin: 26px 0 0;
	width: 100%;
	display: grid;
	gap: 1px;
	background: var(--rule);
	border: 1px solid var(--rule);
}
.kit > div {
	background: var(--paper);
	padding: 14px 18px;
	display: grid;
	grid-template-columns: 150px minmax(0, 1fr);
	gap: 28px;
	align-items: start;
}
.kit dt {
	font-weight: 500;
}
.kit dt code {
	font-size: 14px;
}
.kit dd {
	margin: 0;
	color: var(--ink-2);
}

@media (max-width: 820px) {
	.kit > div {
		grid-template-columns: 1fr;
		gap: 6px;
	}
}

@media (max-width: 640px) {
	.compare {
		font-size: 14px;
	}
	.compare th,
	.compare td {
		padding: 10px 8px;
	}
}
.scroll-x {
	overflow-x: auto;
}

/* --------------------------------------------------------------- prose pages */
/* The two-column chapter puts a large heading beside a narrow column, which
 * works when the right side carries a figure, a table or a screenshot. On a
 * page that is only prose it leaves a tall empty well under every heading.
 * Prose chapters run as one column instead, with the heading over the text. */
.chapter.prose > .page {
	display: block;
}
.chapter.prose h2 {
	font-size: clamp(26px, 3.2vw, 38px);
	max-width: 24ch;
	margin-bottom: 26px;
}
.chapter.prose .body {
	max-width: 68ch;
}
.chapter.prose .body p.first {
	font-size: 20px;
}

/* ------------------------------------------------------------- bar chart */
.bars {
	margin: 30px 0 0;
	display: grid;
	gap: 16px;
}
.bars .row {
	display: grid;
	grid-template-columns: 190px minmax(260px, 1fr) 250px;
	gap: 20px;
	align-items: center;
}
.bars .name {
	font-size: 16px;
	color: var(--ink);
	letter-spacing: -0.01em;
}
.bars .track {
	position: relative;
	height: 24px;
	background: var(--paper-2);
	border: 1px solid var(--rule);
	border-radius: 2px;
	overflow: hidden;
}
.bars .paid {
	position: absolute;
	inset: 0 auto 0 0;
	background: #303039;
}
.bars .saved {
	position: absolute;
	inset: 0 0 0 auto;
	background: var(--accent);
	opacity: 0.88;
}
.bars .amount {
	display: flex;
	justify-content: flex-end;
	gap: 10px;
	align-items: baseline;
	font-family: var(--font-mono);
	font-size: 14px;
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
}
.bars .amount .list {
	color: var(--ink-2);
}
.bars .amount b {
	color: var(--ink);
	font-weight: 650;
}
.barkey {
	margin: 17px 0 0;
	display: flex;
	gap: 24px;
	font-size: 14px;
	color: var(--ink-2);
	flex-wrap: wrap;
}
.barkey span {
	display: flex;
	align-items: center;
	gap: 8px;
}
.barkey i {
	width: 10px;
	height: 10px;
	border-radius: 1px;
	display: inline-block;
}
.barkey .k-paid {
	background: #303039;
}
.barkey .k-saved {
	background: var(--accent);
	opacity: 0.88;
}
.chartTitle {
	margin: 42px 0 12px;
	font-size: 23px;
	font-weight: 600;
	line-height: 1.25;
	letter-spacing: -0.02em;
}
.chartTitle:first-of-type {
	margin-top: 34px;
}
.chartTitle--second {
	margin-top: 64px;
	padding-top: 48px;
	border-top: 1px solid var(--rule);
}
.savings-chapter .chartIntro {
	max-width: 74ch !important;
	margin-bottom: 0;
	color: var(--ink-2);
	font-size: 17px;
	line-height: 1.65;
}
.savings-chapter .chartTakeaway {
	max-width: 74ch !important;
	margin-top: 28px;
	color: var(--ink);
	font-size: 17px;
	line-height: 1.6;
}
.savings-chapter .methodology {
	max-width: 84ch !important;
	margin-top: 28px;
	padding-top: 20px;
	border-top: 1px solid var(--rule);
	color: var(--ink-2);
	font-family: var(--font-mono);
	font-size: 13px !important;
	line-height: 1.65;
}
.savings-chapter .methodology strong {
	color: var(--ink);
	font-weight: 600;
}
@media (max-width: 900px) {
	.bars .row {
		grid-template-columns: 150px minmax(180px, 1fr) 220px;
		gap: 14px;
	}
	.bars .name {
		font-size: 15px;
	}
	.bars .amount {
		font-size: 13px;
	}
}
@media (max-width: 640px) {
	.bars {
		gap: 20px;
	}
	.bars .row {
		grid-template-columns: 1fr;
		gap: 7px;
	}
	.bars .amount {
		justify-content: flex-start;
	}
	.bars .track {
		height: 22px;
	}
	.chartTitle {
		font-size: 20px;
	}
	.chartTitle--second {
		margin-top: 48px;
		padding-top: 38px;
	}
}

/* ------------------------------------------------ responsive polish */
img,
svg,
video {
	max-width: 100%;
}
button,
input,
textarea,
select {
	font: inherit;
}

/* Keep anchors from disappearing beneath the sticky masthead. */
:target {
	scroll-margin-top: 76px;
}

.menu-toggle {
	display: none;
	margin-left: auto;
	padding: 7px 10px;
	border: 1px solid var(--rule-dark);
	border-radius: 6px;
	background: transparent;
	color: var(--ink);
	font-family: var(--font-mono);
	font-size: 13px;
	cursor: pointer;
}

@media (max-width: 820px) {
	.masthead nav {
		position: relative;
	}
	.menu-toggle {
		display: inline-flex;
		align-items: center;
		justify-content: center;
	}
	.masthead .tail {
		margin-left: 0;
	}
	.masthead .links {
		display: none;
		position: absolute;
		top: calc(100% + 1px);
		left: 12px;
		right: 12px;
		padding: 10px;
		gap: 2px;
		flex-direction: column;
		background: var(--paper-2);
		border: 1px solid var(--rule-dark);
		border-radius: 8px;
		box-shadow: 0 18px 40px rgba(0, 0, 0, 0.28);
	}
	.masthead.menu-open .links {
		display: flex;
	}
	.masthead .links a {
		display: block;
		padding: 11px 12px;
		border-radius: 5px;
	}
	.masthead .links a:hover,
	.masthead .links a[aria-current] {
		background: var(--rule);
	}
}

@media (max-width: 640px) {
	body {
		font-size: 16px;
	}
	.opener {
		padding: 68px 0 52px;
	}
	.opener h1 {
		font-size: clamp(34px, 11vw, 48px);
	}
	.opener .actions {
		gap: 18px;
	}
	.chapter {
		padding: 68px 0;
	}
	.chapter:nth-child(even) {
		padding: 68px 0 76px;
	}
	.chapter h2 {
		font-size: clamp(30px, 9vw, 42px);
	}
	.chapter .body p {
		font-size: 17px;
	}
	.chapter .body p.first {
		font-size: 19px;
	}
	.slab pre {
		padding: 20px;
		font-size: 12px;
		line-height: 1.7;
	}
	.ledger div {
		gap: 16px;
		align-items: flex-start;
	}
	.ledger dd {
		text-align: right;
		overflow-wrap: anywhere;
	}
	.qa summary {
		padding: 21px 0;
		font-size: 19px;
	}
	footer {
		padding-bottom: 52px;
	}
	footer .cols {
		gap: 18px 24px;
	}
}

@media (max-width: 420px) {
	.wordmark {
		font-size: 0;
		gap: 0;
	}
	.wordmark img {
		width: 29px;
		height: 29px;
	}
	.masthead .tail {
		font-size: 13px;
	}
	.btn {
		width: 100%;
		justify-content: center;
	}
	.opener .actions .pull {
		width: 100%;
	}
	.prices > div {
		padding-left: 20px;
		padding-right: 20px;
	}
}

/* ================================================================
   Desktop composition reset — wide screens get a deliberate layout,
   not a stretched version of the phone stack.
   ================================================================ */
@media (min-width: 1100px) {
	:root {
		--page: 1120px;
		--measure: 56ch;
	}

	body {
		font-size: 16px;
	}
	.page {
		padding-left: 28px;
		padding-right: 28px;
	}

	.masthead nav {
		height: 62px;
		padding: 0 28px;
		gap: 34px;
	}
	.masthead .links {
		gap: 28px;
		font-size: 13px;
	}
	.masthead .tail {
		font-size: 13px;
	}

	.opener {
		padding: 86px 0 82px;
		min-height: calc(88vh - 62px);
		display: flex;
		align-items: center;
	}
	.opener > .page {
		width: 100%;
		grid-template-columns: minmax(0, 7.5fr) minmax(300px, 4.5fr);
		gap: 56px;
		align-items: center;
	}
	.opener h1 {
		font-size: clamp(52px, 4.4vw, 68px);
		line-height: 0.98;
		max-width: 15.5ch;
		margin-bottom: 26px;
	}
	.opener .standfirst {
		max-width: 50ch;
		font-size: 19px;
		line-height: 1.52;
	}
	.opener .actions {
		margin-top: 30px;
	}
	.opener .aside {
		padding: 22px 24px 20px;
		border: 1px solid var(--rule);
		border-radius: 10px;
		background: var(--paper-2);
	}
	.opener .aside .cap {
		border-bottom-color: var(--rule-dark);
		font-size: 11px;
		line-height: 1.45;
	}
	.opener .aside .ledger div {
		padding: 13px 0;
	}
	.opener .aside .ledger dt {
		font-size: 13px;
	}
	.opener .aside .ledger dd {
		font-size: 20px;
	}
	.opener .aside .note {
		font-size: 11px;
		line-height: 1.5;
	}

	.chapter,
	.chapter:nth-child(even) {
		padding: 82px 0 88px;
	}
	.chapter > .page {
		grid-template-columns: repeat(12, minmax(0, 1fr));
		column-gap: 24px;
		row-gap: 44px;
	}
	.chapter h2 {
		grid-column: 1 / span 5;
		font-size: clamp(38px, 3.2vw, 50px);
		line-height: 1.02;
		max-width: 12.5ch;
		position: sticky;
		top: 104px;
	}
	.chapter .body {
		grid-column: 7 / -1;
		max-width: 58ch;
	}
	.chapter .body p {
		font-size: 17px;
		line-height: 1.58;
	}
	.chapter .body p.first {
		font-size: 20px;
		line-height: 1.48;
	}
	.chapter .body .slab {
		margin-top: 28px;
	}
	.chapter .body .ledger {
		margin-top: 28px;
	}
	.chapter .body .compare {
		margin-top: 22px;
	}
	.chapter .body .steps {
		margin-top: 24px;
	}

	.shot.wide {
		grid-column: 1 / -1;
		margin: 10px 0 0;
	}
	.shot.hero {
		margin-top: 4px;
	}
	.shot.wide img {
		max-height: 720px;
		object-fit: contain;
	}
	.shot figcaption {
		max-width: 70ch;
		margin-top: 12px;
	}
	.shot.narrow {
		grid-column: 7 / -1;
		margin-top: 8px;
	}

	.chapter.prose {
		padding-top: 74px;
		padding-bottom: 80px;
	}
	.chapter.prose > .page {
		display: grid;
		grid-template-columns: repeat(12, minmax(0, 1fr));
		gap: 24px;
	}
	.chapter.prose h2 {
		grid-column: 2 / span 4;
		margin: 0;
		font-size: 34px;
		line-height: 1.08;
		position: sticky;
		top: 104px;
	}
	.chapter.prose .body {
		grid-column: 7 / span 5;
		max-width: 62ch;
	}
	.kit > div {
		grid-template-columns: 170px minmax(0, 1fr);
		gap: 30px;
		padding: 16px 20px;
	}

	.sequence > .page {
		grid-template-columns: repeat(12, minmax(0, 1fr));
		gap: 24px;
	}
	.stage {
		grid-column: 1 / span 6;
		top: 92px;
		padding: 76px 0;
	}
	.stage h2 {
		font-size: 42px;
		max-width: 11ch;
		margin-bottom: 24px;
	}
	.beats {
		grid-column: 8 / -1;
		padding: 52px 0;
	}
	.beat {
		min-height: 430px;
		padding: 58px 0;
	}
	.beat h3 {
		font-size: 22px;
	}
	.beat p {
		font-size: 16px;
		max-width: 42ch;
	}
	.beat .figure {
		font-size: 42px;
	}

	.prices {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		border: 1px solid var(--rule);
		border-radius: 10px;
		overflow: hidden;
	}
	.prices > div {
		padding: 32px 26px 34px;
		border-bottom: 0;
	}
	.prices .figure {
		min-height: 70px;
		font-size: 38px;
	}
	.prices li {
		font-size: 14px;
	}

	.compare th,
	.compare td {
		padding: 13px 12px;
	}
	footer {
		padding: 38px 0 52px;
	}
}

@media (min-width: 901px) and (max-width: 1099px) {
	:root {
		--page: 960px;
		--measure: 52ch;
	}
	.page {
		padding-left: 28px;
		padding-right: 28px;
	}
	.opener {
		padding: 78px 0 68px;
	}
	.opener > .page {
		gap: 42px;
	}
	.chapter,
	.chapter:nth-child(even) {
		padding: 78px 0;
	}
	.chapter > .page {
		gap: 46px;
	}
	.chapter h2 {
		font-size: 40px;
	}
	.sequence > .page {
		gap: 46px;
	}
	.beat {
		min-height: 46vh;
	}
}

/* ================================================================
   Desktop consistency pass — 2026-08-07
   One wide, centered shell. Section titles sit above their content.
   Tables and functional UI use the available width instead of being
   squeezed into a secondary column.
   ================================================================ */
@media (min-width: 821px) {
	:root {
		--page: 1280px;
		--measure: 74ch;
	}

	.page {
		width: 100%;
		max-width: var(--page);
		margin-inline: auto;
		padding-inline: 48px;
	}

	/* Header: no mobile control on desktop, and a clear current-page tab. */
	.masthead nav {
		height: 64px;
		max-width: var(--page);
		padding-inline: 48px;
		gap: 38px;
	}
	.menu-toggle {
		display: none !important;
	}
	.masthead .links {
		display: flex !important;
		align-self: stretch;
		align-items: stretch;
		gap: 6px;
	}
	.masthead .links a {
		display: flex;
		align-items: center;
		position: relative;
		padding: 0 14px;
		color: var(--ink-2);
		border-radius: 0;
	}
	.masthead .links a::after {
		content: "";
		position: absolute;
		left: 14px;
		right: 14px;
		bottom: -1px;
		height: 2px;
		background: var(--accent);
		transform: scaleX(0);
		transform-origin: center;
		transition: transform 0.22s var(--ease);
	}
	.masthead .links a:hover {
		color: var(--ink);
	}
	.masthead .links a[aria-current="page"] {
		color: var(--ink);
	}
	.masthead .links a[aria-current="page"]::after {
		transform: scaleX(1);
	}
	.masthead .tail {
		margin-left: auto;
	}

	/* Hero/openers use the same reading axis as the rest of the page. */
	.opener {
		min-height: 0;
		display: block;
		padding: 96px 0 88px;
	}
	.opener > .page {
		display: block;
		width: 100%;
	}
	.opener > .page > div:first-child {
		width: 100%;
	}
	.opener h1 {
		max-width: 18ch;
		margin: 0 0 28px;
		font-size: clamp(52px, 5vw, 76px);
		line-height: 1.01;
	}
	.opener .standfirst {
		max-width: 72ch;
		font-size: 20px;
		line-height: 1.55;
	}
	.opener .actions {
		margin-top: 34px;
	}
	.opener .aside {
		max-width: none;
		width: 100%;
		margin-top: 52px;
		padding: 24px 28px;
	}
	.opener .aside .ledger {
		display: grid;
		grid-template-columns: repeat(4, minmax(0, 1fr));
		border-top: 0;
		gap: 0;
	}
	.opener .aside .ledger div {
		display: block;
		padding: 10px 22px 10px 0;
		border-bottom: 0;
		border-right: 1px solid var(--rule-dark);
	}
	.opener .aside .ledger div + div {
		padding-left: 22px;
	}
	.opener .aside .ledger div:last-child {
		border-right: 0;
	}
	.opener .aside .ledger dt {
		margin-bottom: 6px;
	}
	.opener .aside .ledger dd {
		font-size: 24px;
	}
	.opener .aside .note {
		max-width: 82ch;
		margin-top: 20px;
	}

	/* The single section primitive: heading first, content second. */
	.chapter,
	.chapter:nth-child(even),
	.chapter.prose {
		padding: 82px 0 92px;
	}
	.chapter > .page,
	.chapter.prose > .page {
		display: block;
	}
	.chapter h2,
	.chapter.prose h2 {
		position: static;
		max-width: 20ch;
		margin: 0 0 44px;
		font-size: clamp(40px, 4vw, 58px);
		line-height: 1.02;
	}
	.chapter.prose h2 {
		font-size: clamp(38px, 3.7vw, 54px);
	}

	.chapter .body,
	.chapter.prose .body {
		width: 100%;
		max-width: none;
	}
	.chapter .body > p,
	.chapter.prose .body > p {
		max-width: 78ch;
	}
	.chapter .body p {
		font-size: 18px;
	}
	.chapter .body p.first,
	.chapter.prose .body p.first {
		max-width: 72ch;
		font-size: 21px;
	}

	/* Functional blocks deliberately stretch across the content shell. */
	.chapter .body > .kit,
	.chapter .body > .compare,
	.chapter .body > .scroll-x,
	.chapter .body > .prices,
	.chapter .body > .qa,
	.chapter .body > .ledger,
	.chapter .body > .steps,
	.chapter .body > .slab,
	.chapter .body > .bars,
	.chapter .body > figure {
		width: 100%;
		max-width: none;
	}

	/* Tool table: stable first column, useful description width. */
	.kit {
		margin-top: 30px;
	}
	.kit > div {
		grid-template-columns: minmax(180px, 240px) minmax(0, 1fr);
		gap: 36px;
		padding: 18px 22px;
	}
	.kit dt code {
		font-size: 14px;
	}
	.kit dd {
		max-width: 78ch;
		font-size: 16px;
		line-height: 1.55;
	}

	/* Comparison tables should fill their wrapper and keep columns readable. */
	.scroll-x {
		width: 100%;
	}
	.compare {
		width: 100%;
		min-width: 760px;
		table-layout: auto;
	}
	.compare th,
	.compare td {
		padding: 15px 16px;
	}

	/* FAQ no longer lives in a narrow right-hand column. */
	.qa {
		margin-top: 4px;
	}
	.qa summary {
		width: 100%;
		padding: 26px 0;
	}
	.qa details > div,
	.qa details > p {
		max-width: 82ch;
	}

	/* Lists/prose still read comfortably while their rules span the section. */
	.steps {
		max-width: 100%;
	}
	.steps li {
		max-width: 92ch;
		padding-right: 32px;
	}

	/* Wide media uses the complete shell without odd grid-column leftovers. */
	.shot.wide,
	.shot.narrow,
	.shot.hero {
		width: 100%;
		margin-left: 0;
		margin-right: 0;
	}
	.shot.narrow {
		max-width: 900px;
	}

	/* Keep the scrolling sequence as a purposeful split layout. */
	.sequence > .page {
		display: grid;
		grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
		gap: 64px;
	}
	.stage {
		grid-column: auto;
	}
	.beats {
		grid-column: auto;
	}

	footer .page {
		max-width: var(--page);
	}
}

@media (min-width: 821px) and (max-width: 1040px) {
	:root {
		--page: 100%;
	}
	.page,
	.masthead nav {
		padding-inline: 32px;
	}
	.masthead nav {
		gap: 22px;
	}
	.masthead .links a {
		padding-inline: 9px;
		font-size: 12px;
	}
	.masthead .links a::after {
		left: 9px;
		right: 9px;
	}
	.opener h1 {
		font-size: 56px;
	}
	.chapter h2,
	.chapter.prose h2 {
		font-size: 44px;
	}
	.opener .aside .ledger {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
	.opener .aside .ledger div:nth-child(2) {
		border-right: 0;
	}
	.opener .aside .ledger div:nth-child(n + 3) {
		margin-top: 18px;
	}
	.sequence > .page {
		gap: 40px;
	}
}

/* ================================================================
   Desktop text-width correction — 2026-08-07
   Force wide section flow and let table descriptions actually use
   the available horizontal space. Kept at end of file intentionally
   so it wins over legacy desktop rules.
   ================================================================ */
@media (min-width: 821px) {
	.chapter > .page,
	.chapter.prose > .page {
		display: block;
		grid-template-columns: none;
	}

	.chapter h2,
	.chapter.prose h2 {
		width: 100%;
		max-width: none;
		margin: 0 0 40px;
	}

	.chapter .body,
	.chapter.prose .body {
		width: 100%;
		max-width: none;
	}

	.kit {
		width: 100%;
		max-width: none;
	}

	.kit > div {
		width: 100%;
		grid-template-columns: 210px minmax(0, 1fr);
		column-gap: 40px;
	}

	.kit dd {
		width: 100%;
		max-width: none;
		min-width: 0;
		white-space: normal;
		overflow-wrap: normal;
	}

	/* Standard prose can breathe on desktop too. */
	.chapter .body > p,
	.chapter.prose .body > p,
	.chapter .body p.first,
	.chapter.prose .body p.first {
		width: 100%;
		max-width: 92ch;
	}
}

/* ================================================================
   Desktop motion parity — 2026-08-07
   Preserve the mobile feeling of content arriving progressively even
   when a wide viewport can fit most of a section at the same time.
   ================================================================ */
@media (min-width: 821px) and (prefers-reduced-motion: no-preference) {
	.desktop-enter {
		opacity: 0;
		transform: translateY(16px);
		transition:
			opacity 0.78s var(--ease) var(--reveal-delay, 0ms),
			transform 0.78s var(--ease) var(--reveal-delay, 0ms);
		will-change: opacity, transform;
	}

	.desktop-enter.desktop-in {
		opacity: 1;
		transform: none;
	}

	/* Rows read better with a tiny horizontal component, like the phone stack. */
	.kit > .desktop-enter,
	.steps > .desktop-enter,
	.qa > .desktop-enter,
	.ledger > .desktop-enter {
		transform: translate3d(12px, 8px, 0);
	}
	.kit > .desktop-enter.desktop-in,
	.steps > .desktop-enter.desktop-in,
	.qa > .desktop-enter.desktop-in,
	.ledger > .desktop-enter.desktop-in {
		transform: none;
	}

	/* Keep heading word reveals crisp on desktop; don't let view-timeline
     transform the heading container compete with the split-word transform. */
	.chapter h2[data-split] {
		animation: none;
		transform: none;
	}
}

/* ------------------------------------------------------------------ roadmap */
.roadmap-opener .page {
	align-items: start;
}
.road-kicker {
	margin: 0 0 18px;
	font: 700 11px/1.2 var(--font-mono);
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--muted);
}
.road-summary {
	border-top: 1px solid var(--rule);
	border-bottom: 1px solid var(--rule);
}
.road-summary .page {
	display: block;
	padding-block: 0;
}
.road-phases {
	display: grid;
	grid-template-columns: repeat(6, minmax(0, 1fr));
}
.road-phases a {
	min-height: 138px;
	padding: 24px 18px;
	border-right: 1px solid var(--rule);
	color: inherit;
	text-decoration: none;
	display: flex;
	flex-direction: column;
	gap: 5px;
	transition: background 0.18s ease;
}
.road-phases a:first-child {
	border-left: 1px solid var(--rule);
}
.road-phases a:hover {
	background: rgba(127, 127, 127, 0.06);
}
.road-phases span {
	font: 600 10px/1 var(--font-mono);
	color: var(--muted);
	letter-spacing: 0.1em;
}
.road-phases b {
	margin-top: auto;
	font-size: 18px;
	font-weight: 650;
}
.road-phases small {
	color: var(--muted);
	font-size: 12px;
	line-height: 1.35;
}
.road-section .page {
	display: block;
}
.road-head {
	display: grid;
	grid-template-columns: 76px minmax(0, 760px);
	gap: 28px;
	margin-bottom: 48px;
}
.road-head h2 {
	margin: 0 0 10px;
	max-width: none;
}
.road-head p:not(.road-index) {
	margin: 0;
	color: var(--muted);
	max-width: 680px;
}
.road-index {
	margin: 8px 0 0;
	font: 600 12px/1 var(--font-mono);
	color: var(--muted);
	letter-spacing: 0.12em;
}
.road-list {
	margin-left: 104px;
	max-width: 960px;
}
.road-list ol {
	margin: 0;
	padding: 0;
	list-style: none;
	counter-reset: roadmap;
	border-top: 1px solid var(--rule-dark);
}
.road-list li {
	counter-increment: roadmap;
	display: grid;
	grid-template-columns: 42px minmax(0, 1fr) auto;
	gap: 20px;
	align-items: start;
	padding: 24px 0;
	border-bottom: 1px solid var(--rule);
}
.road-list li::before {
	content: counter(roadmap, decimal-leading-zero);
	font: 500 11px/1.4 var(--font-mono);
	color: var(--muted);
	padding-top: 3px;
}
.road-list ol[start="14"] {
	counter-reset: roadmap 13;
}
.road-list ol[start="27"] {
	counter-reset: roadmap 26;
}
.road-list ol[start="38"] {
	counter-reset: roadmap 37;
}
.road-list ol[start="48"] {
	counter-reset: roadmap 47;
}
.road-list ol[start="53"] {
	counter-reset: roadmap 52;
}
.road-list b {
	display: block;
	margin-bottom: 6px;
	font-size: 16px;
	font-weight: 650;
	letter-spacing: -0.01em;
}
.road-list p {
	margin: 0;
	max-width: 680px;
	color: var(--muted);
	font-size: 14px;
	line-height: 1.6;
}
.road-list em {
	font: 650 10px/1 var(--font-mono);
	font-style: normal;
	text-transform: uppercase;
	letter-spacing: 0.09em;
	border: 1px solid var(--rule-dark);
	border-radius: 999px;
	padding: 7px 9px 6px;
	white-space: nowrap;
}
.road-list li[data-status="next"] em {
	background: var(--ink);
	color: var(--paper);
	border-color: var(--ink);
}
.road-list li[data-status="research"] em {
	border-style: dashed;
}
.road-list li[data-status="external"] em {
	opacity: 0.65;
}
@media (max-width: 900px) {
	.road-phases {
		grid-template-columns: repeat(3, 1fr);
	}
	.road-phases a:nth-child(4) {
		border-left: 1px solid var(--rule);
	}
}
@media (max-width: 700px) {
	.road-phases {
		grid-template-columns: repeat(2, 1fr);
	}
	.road-phases a {
		min-height: 110px;
	}
	.road-head {
		grid-template-columns: 40px 1fr;
		gap: 12px;
	}
	.road-list {
		margin-left: 0;
	}
	.road-list li {
		grid-template-columns: 28px minmax(0, 1fr);
		gap: 12px;
	}
	.road-list em {
		grid-column: 2;
		justify-self: start;
	}
}

/* ------------------------------------------------------- roadmap timeline */
.road-window {
	margin: 0 0 7px !important;
	font: 650 10px/1.2 var(--font-mono);
	letter-spacing: 0.11em;
	text-transform: uppercase;
	color: var(--accent) !important;
}
.road-milestones {
	border-bottom: 1px solid var(--rule);
	background: var(--paper-2);
}
.road-milestones .page {
	display: grid;
	grid-template-columns:
		minmax(0, 1fr) auto minmax(0, 1fr) auto minmax(0, 1fr) auto minmax(0, 1fr)
		auto minmax(0, 1fr);
	gap: 14px;
	align-items: stretch;
	padding-block: 30px;
}
.road-milestone {
	min-width: 0;
	padding: 4px 0;
}
.road-milestone span {
	display: block;
	margin-bottom: 12px;
	font: 650 9px/1.2 var(--font-mono);
	letter-spacing: 0.1em;
	color: var(--accent);
}
.road-milestone b {
	display: block;
	margin-bottom: 7px;
	font-size: 14px;
	font-weight: 650;
}
.road-milestone p {
	margin: 0;
	color: var(--ink-2);
	font-size: 12px;
	line-height: 1.5;
}
.road-arrow {
	align-self: center;
	color: var(--rule-dark);
	font-family: var(--font-mono);
}
@media (max-width: 900px) {
	.road-milestones .page {
		grid-template-columns: 1fr;
		gap: 0;
	}
	.road-milestone {
		padding: 18px 0;
		border-bottom: 1px solid var(--rule);
	}
	.road-milestone:last-child {
		border-bottom: 0;
	}
	.road-arrow {
		display: none;
	}
}

/* ============================================================= ROADMAP V3 */
.rm-page {
	--rm-glow: color-mix(in srgb, var(--accent) 18%, transparent);
}
.rm-hero {
	position: relative;
	overflow: hidden;
	border-bottom: 1px solid var(--rule);
	padding: 118px 0 92px;
	background: radial-gradient(900px 500px at 78% 38%, var(--rm-glow), transparent 62%);
}
.rm-hero::before {
	content: "";
	position: absolute;
	inset: 0;
	pointer-events: none;
	background-image:
		linear-gradient(rgba(255, 255, 255, 0.025) 1px, transparent 1px),
		linear-gradient(90deg, rgba(255, 255, 255, 0.025) 1px, transparent 1px);
	background-size: 44px 44px;
	mask-image: linear-gradient(to bottom, transparent, #000 18%, #000 76%, transparent);
}
.rm-hero-grid {
	position: relative;
	display: grid !important;
	grid-template-columns: minmax(0, 1.15fr) minmax(320px, 0.7fr);
	gap: 80px;
	align-items: center;
}
.rm-kicker {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 0 0 22px;
	font: 650 10px/1 var(--font-mono);
	letter-spacing: 0.15em;
	color: var(--accent);
}
.rm-kicker span {
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--accent);
	box-shadow: 0 0 18px var(--accent);
}
.rm-hero h1 {
	margin: 0 0 26px;
	max-width: 11ch;
	font-size: clamp(54px, 7vw, 96px);
	line-height: 0.94;
	letter-spacing: -0.055em;
	font-weight: 500;
}
.rm-lede {
	max-width: 60ch;
	margin: 0;
	color: var(--ink-2);
	font-size: 18px;
	line-height: 1.6;
}
.rm-orbit {
	position: relative;
	aspect-ratio: 1;
	max-width: 470px;
	margin: auto;
	border: 1px solid var(--rule-dark);
	border-radius: 50%;
	display: grid;
	place-items: center;
}
.rm-orbit::before,
.rm-orbit::after,
.rm-orbit > i {
	content: "";
	position: absolute;
	border: 1px solid var(--rule);
	border-radius: 50%;
}
.rm-orbit::before {
	inset: 12%;
}
.rm-orbit::after {
	inset: 25%;
}
.rm-orbit > i:nth-of-type(1) {
	inset: 38%;
}
.rm-orbit > i:nth-of-type(2) {
	width: 8px;
	height: 8px;
	left: 6%;
	top: 48%;
	background: var(--accent);
	border: 0;
	box-shadow: 0 0 22px var(--accent);
}
.rm-orbit > i:nth-of-type(3) {
	width: 5px;
	height: 5px;
	right: 19%;
	top: 15%;
	background: var(--ink-2);
	border: 0;
}
.rm-orbit-core {
	position: relative;
	z-index: 2;
	width: 42%;
	aspect-ratio: 1;
	border-radius: 50%;
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
	text-align: center;
	background: var(--paper);
	border: 1px solid var(--rule-dark);
	box-shadow: 0 30px 80px rgba(0, 0, 0, 0.35);
}
.rm-orbit-core span,
.rm-orbit-core small {
	font: 650 9px/1 var(--font-mono);
	letter-spacing: 0.14em;
	color: var(--accent);
}
.rm-orbit-core b {
	margin: 12px 0;
	font-size: 20px;
	line-height: 1.05;
	font-weight: 600;
}
.rm-gates {
	border-bottom: 1px solid var(--rule);
	background: var(--paper-2);
}
.rm-gates .page {
	display: grid !important;
	grid-template-columns: 220px 1fr;
	gap: 38px;
	padding-top: 28px;
	padding-bottom: 28px;
}
.rm-gates-label span {
	font: 650 9px/1 var(--font-mono);
	letter-spacing: 0.13em;
	color: var(--accent);
}
.rm-gates-label b {
	display: block;
	margin-top: 9px;
	font-size: 15px;
	line-height: 1.3;
}
.rm-gates-track {
	display: grid;
	grid-template-columns: 1fr auto 1fr auto 1fr auto 1fr auto 1fr;
	align-items: center;
	gap: 12px;
}
.rm-gates-track > div {
	min-width: 0;
}
.rm-gates-track span {
	display: block;
	font: 650 9px/1 var(--font-mono);
	letter-spacing: 0.1em;
	color: var(--accent);
}
.rm-gates-track b {
	display: block;
	margin: 8px 0 4px;
	font-size: 13px;
}
.rm-gates-track small {
	display: block;
	color: var(--ink-2);
	font-size: 11px;
	line-height: 1.3;
}
.rm-gates-track > i {
	width: 22px;
	height: 1px;
	background: var(--rule-dark);
	position: relative;
}
.rm-gates-track > i::after {
	content: "";
	position: absolute;
	right: 0;
	top: -2px;
	width: 5px;
	height: 5px;
	border-top: 1px solid var(--ink-2);
	border-right: 1px solid var(--ink-2);
	transform: rotate(45deg);
}
.rm-roadmap {
	position: relative;
}
.rm-layout {
	display: grid !important;
	grid-template-columns: 290px minmax(0, 1fr);
	gap: 72px;
	align-items: start;
	padding-top: 72px;
	padding-bottom: 96px;
}
.rm-sidebar {
	position: sticky;
	top: 84px;
	max-height: calc(100vh - 108px);
	overflow: auto;
	padding: 22px;
	border: 1px solid var(--rule);
	border-radius: 16px;
	background: color-mix(in srgb, var(--paper-2) 88%, transparent);
	backdrop-filter: blur(18px);
	box-shadow: 0 24px 60px rgba(0, 0, 0, 0.18);
}
.rm-sidebar-top {
	padding-bottom: 18px;
	border-bottom: 1px solid var(--rule);
}
.rm-sidebar-top span,
.rm-progress > span {
	display: block;
	font: 650 9px/1 var(--font-mono);
	letter-spacing: 0.13em;
	color: var(--ink-2);
}
.rm-sidebar-top b {
	display: block;
	margin: 11px 0 5px;
	font-size: 22px;
	line-height: 1.05;
	letter-spacing: -0.025em;
}
.rm-sidebar-top small {
	font: 600 10px/1 var(--font-mono);
	color: var(--accent);
}
.rm-nav {
	padding: 12px 0;
}
.rm-nav a {
	display: grid;
	grid-template-columns: 26px 1fr 8px;
	gap: 10px;
	align-items: center;
	padding: 11px 4px;
	color: var(--ink-2);
	border-radius: 8px;
	transition: 0.2s ease;
}
.rm-nav a:hover {
	color: var(--ink);
	background: rgba(255, 255, 255, 0.025);
}
.rm-nav a > span {
	font: 600 9px/1 var(--font-mono);
}
.rm-nav a b {
	display: block;
	font-size: 12px;
	line-height: 1.2;
}
.rm-nav a small {
	display: block;
	margin-top: 3px;
	font: 500 9px/1.2 var(--font-mono);
}
.rm-nav a i {
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--rule-dark);
	transition: 0.2s;
}
.rm-nav a.is-active {
	color: var(--ink);
}
.rm-nav a.is-active i {
	background: var(--accent);
	box-shadow: 0 0 14px var(--accent);
}
.rm-progress {
	padding-top: 16px;
	border-top: 1px solid var(--rule);
	display: grid;
	grid-template-columns: 1fr auto;
	gap: 9px;
	align-items: end;
}
.rm-progress > span {
	grid-column: 1/-1;
}
.rm-progress > div {
	height: 3px;
	background: var(--rule);
	border-radius: 99px;
	overflow: hidden;
}
.rm-progress > div i {
	display: block;
	width: 100%;
	height: 100%;
	background: var(--accent);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform 0.12s linear;
}
.rm-progress small {
	font: 600 10px/1 var(--font-mono);
	color: var(--ink-2);
}
.rm-content {
	min-width: 0;
}
.rm-phase {
	position: relative;
	padding: 26px 0 96px;
	scroll-margin-top: 92px;
}
.rm-phase:not(:first-child) {
	border-top: 1px solid var(--rule);
	padding-top: 88px;
}
.rm-phase::after {
	content: attr(data-rm-phase);
	position: absolute;
	right: -4px;
	top: 30px;
	font: 700 110px/0.8 var(--font-sans);
	letter-spacing: -0.07em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.018);
	pointer-events: none;
}
.rm-phase-head {
	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: 54px minmax(0, 1fr);
	gap: 24px;
	margin-bottom: 36px;
}
.rm-phase-index {
	font: 600 11px/1 var(--font-mono);
	color: var(--ink-2);
	padding-top: 8px;
}
.rm-eyebrow {
	margin: 0 0 12px !important;
	font: 650 10px/1.2 var(--font-mono) !important;
	letter-spacing: 0.11em;
	color: var(--accent) !important;
}
.rm-phase-head h2 {
	margin: 0 0 14px;
	font-size: clamp(38px, 5vw, 68px);
	line-height: 1;
	letter-spacing: -0.045em;
	font-weight: 500;
}
.rm-phase-head > div:last-child > p:last-child {
	margin: 0;
	max-width: 66ch;
	color: var(--ink-2);
	font-size: 15px;
	line-height: 1.55;
}
.rm-items {
	list-style: none;
	margin: 0;
	padding: 0;
	border-top: 1px solid var(--rule-dark);
}
.rm-items li {
	display: grid;
	grid-template-columns: 38px minmax(0, 1fr) auto;
	gap: 18px;
	align-items: start;
	padding: 22px 8px;
	border-bottom: 1px solid var(--rule);
	transition:
		background 0.2s ease,
		transform 0.2s ease;
}
.rm-items li:hover {
	background: rgba(255, 255, 255, 0.018);
	transform: translateX(4px);
}
.rm-item-no {
	padding-top: 4px;
	font: 500 10px/1 var(--font-mono);
	color: var(--ink-2);
}
.rm-items b {
	display: block;
	margin-bottom: 6px;
	font-size: 15px;
}
.rm-items p {
	margin: 0;
	max-width: 70ch;
	color: var(--ink-2);
	font-size: 13px;
	line-height: 1.55;
}
.rm-items em {
	font: 650 9px/1 var(--font-mono);
	font-style: normal;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	border: 1px solid var(--rule-dark);
	border-radius: 999px;
	padding: 7px 8px;
	white-space: nowrap;
}
.rm-items li[data-status="next"] em {
	background: var(--accent);
	color: var(--paper);
	border-color: var(--accent);
}
.rm-items li[data-status="research"] em {
	border-style: dashed;
}
.rm-items li[data-status="external"] em {
	opacity: 0.6;
}
.rm-rule {
	margin-top: 0;
}
@media (max-width: 1050px) {
	.rm-hero-grid {
		grid-template-columns: 1fr;
	}
	.rm-orbit {
		display: none;
	}
	.rm-gates .page {
		grid-template-columns: 1fr;
	}
	.rm-layout {
		grid-template-columns: 220px minmax(0, 1fr);
		gap: 36px;
	}
	.rm-gates-track {
		overflow-x: auto;
		padding-bottom: 6px;
		grid-template-columns: 170px 22px 170px 22px 170px 22px 170px 22px 170px;
	}
}
@media (max-width: 780px) {
	.rm-hero {
		padding: 84px 0 64px;
	}
	.rm-hero h1 {
		font-size: clamp(46px, 14vw, 70px);
	}
	.rm-lede {
		font-size: 16px;
	}
	.rm-layout {
		display: block !important;
		padding-top: 0;
	}
	.rm-sidebar {
		position: sticky;
		top: 56px;
		z-index: 30;
		max-height: none;
		overflow: visible;
		margin: 0 -20px 36px;
		border-radius: 0;
		border-left: 0;
		border-right: 0;
		padding: 10px 20px;
		background: rgba(11, 11, 14, 0.94);
	}
	.rm-sidebar-top,
	.rm-progress {
		display: none;
	}
	.rm-nav {
		display: flex;
		overflow-x: auto;
		gap: 6px;
		padding: 0;
		scrollbar-width: none;
	}
	.rm-nav::-webkit-scrollbar {
		display: none;
	}
	.rm-nav a {
		flex: 0 0 auto;
		grid-template-columns: auto;
		padding: 9px 12px;
		border: 1px solid var(--rule);
		border-radius: 999px;
	}
	.rm-nav a > span,
	.rm-nav a small,
	.rm-nav a i {
		display: none;
	}
	.rm-nav a b {
		font-size: 11px;
		white-space: nowrap;
	}
	.rm-nav a.is-active {
		border-color: var(--accent);
		color: var(--accent);
		background: rgba(224, 188, 119, 0.06);
	}
	.rm-phase {
		scroll-margin-top: 112px;
		padding-bottom: 68px;
	}
	.rm-phase:not(:first-child) {
		padding-top: 64px;
	}
	.rm-phase-head {
		grid-template-columns: 34px 1fr;
		gap: 12px;
	}
	.rm-phase-head h2 {
		font-size: 40px;
	}
	.rm-items li {
		grid-template-columns: 28px 1fr;
	}
	.rm-items em {
		grid-column: 2;
		justify-self: start;
	}
	.rm-gates {
		display: none;
	}
}
@media (prefers-reduced-motion: reduce) {
	.rm-items li,
	.rm-nav a,
	.rm-progress i {
		transition: none !important;
	}
	.rm-items li:hover {
		transform: none;
	}
}

/* ==========================================================================
   ROADMAP ROUTE BOARD — cinematic, scroll-driven development route
   ========================================================================== */
.roadmap-body {
	--route-amber: #e0bc77;
	--route-red: #8e2b28;
	--route-red-hot: #c44a3f;
	--route-panel: #101014;
	--route-panel-2: #151519;
	--route-dim: #85858e;
}
.route-page {
	background: #0b0b0e;
	overflow: clip;
}
.route-intro {
	position: relative;
	padding: 122px 0 104px;
	border-bottom: 1px solid var(--rule);
	overflow: hidden;
}
.route-intro::before {
	content: "";
	position: absolute;
	inset: -20% -10%;
	pointer-events: none;
	background:
		radial-gradient(circle at 82% 36%, rgba(142, 43, 40, 0.15), transparent 30%),
		linear-gradient(115deg, transparent 52%, rgba(224, 188, 119, 0.035) 52.2%, transparent 52.5%);
}
.route-intro::after {
	content: "";
	position: absolute;
	inset: 0;
	pointer-events: none;
	opacity: 0.16;
	background-image:
		linear-gradient(rgba(255, 255, 255, 0.055) 1px, transparent 1px),
		linear-gradient(90deg, rgba(255, 255, 255, 0.055) 1px, transparent 1px);
	background-size: 56px 56px;
	mask-image: linear-gradient(to bottom, transparent, #000 20%, #000 82%, transparent);
}
.route-intro-grid {
	position: relative;
	z-index: 1;
	display: grid !important;
	grid-template-columns: minmax(0, 1.35fr) minmax(260px, 0.55fr);
	gap: 88px;
	align-items: end;
}
.route-kicker {
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 0 0 28px;
	color: var(--route-amber);
	font: 650 11px/1 var(--font-mono);
	letter-spacing: 0.14em;
}
.route-kicker i {
	width: 34px;
	height: 1px;
	background: currentColor;
	box-shadow: 8px 0 0 rgba(224, 188, 119, 0.28);
}
.route-intro h1 {
	margin: 0 0 28px;
	max-width: 12ch;
	font-size: clamp(58px, 8.3vw, 122px);
	font-weight: 500;
	line-height: 0.86;
	letter-spacing: -0.064em;
	text-wrap: balance;
}
.route-lede {
	max-width: 58ch;
	margin: 0;
	color: var(--ink-2);
	font-size: 18px;
	line-height: 1.65;
}
.route-intro .actions {
	margin-top: 34px;
}
.route-intro-panel {
	position: relative;
	display: grid;
	gap: 12px;
	padding: 22px 24px 20px;
	background: linear-gradient(
		135deg,
		rgba(224, 188, 119, 0.06),
		rgba(255, 255, 255, 0.015) 45%,
		rgba(142, 43, 40, 0.05)
	);
	border: 1px solid var(--rule-dark);
	clip-path: polygon(0 0, calc(100% - 14px) 0, 100% 14px, 100% 100%, 14px 100%, 0 calc(100% - 14px));
}
.route-intro-panel::before,
.route-intro-panel::after {
	content: "";
	position: absolute;
	background: var(--route-amber);
	opacity: 0.8;
}
.route-intro-panel::before {
	top: 0;
	left: 0;
	width: 44px;
	height: 1px;
}
.route-intro-panel::after {
	right: 0;
	bottom: 0;
	width: 1px;
	height: 44px;
}
.route-intro-panel > span {
	color: var(--route-amber);
	font: 650 10px/1 var(--font-mono);
	letter-spacing: 0.14em;
}
.route-intro-panel > b {
	font-size: 21px;
	font-weight: 500;
	letter-spacing: -0.025em;
}
.route-intro-panel > small {
	padding-top: 8px;
	border-top: 1px solid var(--rule);
	color: var(--ink-2);
	font: 11px/1.55 var(--font-mono);
}

.route-scroll {
	position: relative;
	min-height: 520vh;
	background: #09090c;
}
.route-sticky {
	position: sticky;
	top: 56px;
	height: calc(100vh - 56px);
	min-height: 590px;
	overflow: hidden;
	border-bottom: 1px solid #28282f;
	background: radial-gradient(ellipse at 70% 42%, rgba(120, 30, 27, 0.12), transparent 35%), #0a0a0d;
	isolation: isolate;
}
.route-noise {
	position: absolute;
	inset: 0;
	z-index: 0;
	pointer-events: none;
	opacity: 0.045;
	background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.95' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
.route-grid {
	position: absolute;
	inset: 0;
	z-index: 0;
	pointer-events: none;
	opacity: 0.18;
	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: 44px 44px;
	mask-image: radial-gradient(circle at 50% 46%, #000 0, transparent 74%);
}
.route-grid::before {
	content: "";
	position: absolute;
	inset: 8% 3%;
	border: 1px solid rgba(224, 188, 119, 0.07);
	clip-path: polygon(0 0, 78% 0, 80% 3%, 100% 3%, 100% 100%, 12% 100%, 10% 97%, 0 97%);
}
.route-topbar {
	position: absolute;
	z-index: 5;
	top: 0;
	left: 0;
	right: 0;
	height: 42px;
	padding: 0 28px;
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	align-items: center;
	border-bottom: 1px solid #2c2c32;
	background: rgba(10, 10, 13, 0.86);
	backdrop-filter: blur(10px);
	font: 650 10px/1 var(--font-mono);
	letter-spacing: 0.12em;
	color: #9898a0;
}
.route-topbar > span {
	display: flex;
	align-items: center;
	gap: 9px;
}
.route-topbar > span i {
	width: 6px;
	height: 6px;
	background: var(--route-amber);
	transform: rotate(45deg);
	box-shadow: 0 0 18px rgba(224, 188, 119, 0.5);
}
.route-topbar > b {
	color: var(--ink);
	font-weight: 600;
}
.route-topbar > em {
	justify-self: end;
	color: var(--route-amber);
	font-style: normal;
}
.route-stage {
	position: relative;
	z-index: 2;
	height: calc(100% - 184px);
	padding: 76px clamp(28px, 5vw, 82px) 28px;
	display: grid;
	grid-template-columns: minmax(0, 1.35fr) minmax(310px, 0.65fr);
	gap: clamp(40px, 7vw, 110px);
	align-items: center;
}
.route-readout {
	position: relative;
	max-width: 760px;
	padding-left: 74px;
	transition:
		opacity 0.18s ease,
		transform 0.35s var(--ease);
}
.route-readout::before {
	content: "";
	position: absolute;
	left: 18px;
	top: 14px;
	bottom: 10px;
	width: 1px;
	background: linear-gradient(var(--route-amber), rgba(224, 188, 119, 0.08));
}
.route-readout::after {
	content: "";
	position: absolute;
	left: 12px;
	top: 14px;
	width: 13px;
	height: 13px;
	border: 1px solid var(--route-amber);
	transform: rotate(45deg);
	background: #0a0a0d;
}
.route-readout-number {
	position: absolute;
	left: 0;
	top: -82px;
	color: rgba(255, 255, 255, 0.035);
	font: 800 clamp(130px, 17vw, 270px) / 0.75 var(--font-sans);
	letter-spacing: -0.08em;
	pointer-events: none;
	user-select: none;
	z-index: -1;
}
.route-readout > p:first-of-type {
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 0 0 18px;
	font: 650 11px/1 var(--font-mono);
	letter-spacing: 0.13em;
	color: var(--route-amber);
}
.route-readout > p:first-of-type i {
	width: 38px;
	height: 1px;
	background: #45454e;
}
.route-readout > p:first-of-type span:last-child {
	color: #a5a5ad;
}
.route-readout h2 {
	margin: 0;
	max-width: 11ch;
	font-size: clamp(50px, 6.6vw, 96px);
	font-weight: 500;
	line-height: 0.92;
	letter-spacing: -0.056em;
	text-wrap: balance;
}
.route-divider {
	position: relative;
	height: 1px;
	margin: 30px 0 22px;
	background: #34343b;
	overflow: visible;
}
.route-divider::before {
	content: "";
	position: absolute;
	left: 0;
	top: -3px;
	width: 7px;
	height: 7px;
	background: var(--route-amber);
	transform: rotate(45deg);
}
.route-divider span {
	display: block;
	height: 1px;
	width: 0;
	background: linear-gradient(90deg, var(--route-amber), transparent);
	box-shadow: 0 0 12px rgba(224, 188, 119, 0.35);
	transition: width 0.6s var(--ease);
}
.route-sticky.is-live .route-divider span {
	width: 100%;
}
.route-summary {
	margin: 0;
	max-width: 54ch;
	color: #b8b8c0;
	font-size: 16px;
	line-height: 1.65;
}
.route-gate {
	margin-top: 28px;
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 7px 18px;
	align-items: center;
	max-width: 520px;
}
.route-gate small {
	grid-column: 1/-1;
	color: #6f6f77;
	font: 650 9px/1 var(--font-mono);
	letter-spacing: 0.15em;
}
.route-gate b {
	font: 650 12px/1 var(--font-mono);
	letter-spacing: 0.09em;
	color: var(--route-amber);
}
.route-gate > span {
	height: 3px;
	background: #28282f;
	overflow: hidden;
}
.route-gate > span i {
	display: block;
	width: 100%;
	height: 100%;
	transform: scaleX(0.08);
	transform-origin: left;
	background: linear-gradient(90deg, var(--route-red-hot), var(--route-amber));
	transition: transform 0.65s var(--ease);
}
.route-sticky.is-updating .route-readout {
	opacity: 0.22;
	transform: translateY(7px);
}
.route-dossier-card {
	position: relative;
	align-self: center;
	padding: 0;
	border: 1px solid #37373f;
	background: linear-gradient(150deg, rgba(255, 255, 255, 0.028), rgba(255, 255, 255, 0.008));
	clip-path: polygon(0 0, calc(100% - 18px) 0, 100% 18px, 100% 100%, 0 100%);
	box-shadow: 0 28px 80px rgba(0, 0, 0, 0.28);
	transition:
		opacity 0.18s ease,
		transform 0.35s var(--ease);
}
.route-sticky.is-updating .route-dossier-card {
	opacity: 0.25;
	transform: translateX(8px);
}
.route-dossier-card::after {
	content: "";
	position: absolute;
	right: 0;
	top: 0;
	width: 18px;
	height: 18px;
	border-left: 1px solid #37373f;
	transform: rotate(-45deg) translate(-6px, -8px);
	transform-origin: center;
}
.route-dossier-card header {
	height: 44px;
	padding: 0 17px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	border-bottom: 1px solid #35353d;
	background: rgba(224, 188, 119, 0.035);
	font: 650 9px/1 var(--font-mono);
	letter-spacing: 0.13em;
	color: #8d8d95;
}
.route-dossier-card header b {
	min-width: 26px;
	height: 22px;
	display: grid;
	place-items: center;
	border: 1px solid rgba(224, 188, 119, 0.36);
	color: var(--route-amber);
	font-size: 10px;
}
.route-dossier-card ol {
	list-style: none;
	margin: 0;
	padding: 8px 0;
}
.route-dossier-card li {
	display: grid;
	grid-template-columns: 34px 1fr;
	gap: 8px;
	align-items: center;
	min-height: 47px;
	padding: 7px 16px;
	border-bottom: 1px solid rgba(255, 255, 255, 0.055);
}
.route-dossier-card li:last-child {
	border-bottom: 0;
}
.route-dossier-card li span {
	font: 10px/1 var(--font-mono);
	color: #65656d;
}
.route-dossier-card li b {
	font-size: 13px;
	font-weight: 500;
	line-height: 1.25;
}
.route-dossier-card > a {
	display: flex;
	justify-content: space-between;
	padding: 14px 16px;
	border-top: 1px solid #35353d;
	color: var(--route-amber);
	font: 650 10px/1 var(--font-mono);
	letter-spacing: 0.08em;
	transition: background 0.2s;
}
.route-dossier-card > a:hover {
	background: rgba(224, 188, 119, 0.07);
}
.route-map {
	position: absolute;
	z-index: 4;
	left: clamp(28px, 5vw, 82px);
	right: clamp(28px, 5vw, 82px);
	bottom: 50px;
	height: 91px;
	display: grid;
	grid-template-columns: repeat(6, 1fr);
	align-items: start;
}
.route-line {
	position: absolute;
	left: 7.8%;
	right: 7.8%;
	top: 17px;
	height: 2px;
	background: #35353d;
	overflow: hidden;
}
.route-line::after {
	content: "";
	position: absolute;
	inset: 0;
	background: repeating-linear-gradient(90deg, transparent 0 16px, rgba(255, 255, 255, 0.08) 16px 17px);
}
.route-line i {
	display: block;
	width: 100%;
	height: 100%;
	transform: scaleX(0);
	transform-origin: left;
	background: linear-gradient(90deg, var(--route-amber), #be6e47 60%, var(--route-red-hot));
	box-shadow: 0 0 12px rgba(224, 188, 119, 0.28);
}
.route-station {
	position: relative;
	appearance: none;
	border: 0;
	background: transparent;
	color: inherit;
	font: inherit;
	text-align: left;
	padding: 0;
	cursor: pointer;
	min-width: 0;
}
.station-node {
	position: relative;
	display: block;
	width: 36px;
	height: 36px;
	margin: 0 auto 9px;
	border: 1px solid #51515a;
	background: #0a0a0d;
	transform: rotate(45deg);
	transition:
		border-color 0.25s,
		background 0.25s,
		box-shadow 0.25s,
		transform 0.25s;
}
.station-node i {
	position: absolute;
	inset: 9px;
	border: 1px solid #3e3e46;
	background: #17171b;
}
.station-copy {
	display: grid;
	justify-items: center;
	text-align: center;
	gap: 2px;
	transition: opacity 0.25s;
}
.station-copy small {
	font: 650 8px/1 var(--font-mono);
	letter-spacing: 0.12em;
	color: #676770;
}
.station-copy b {
	max-width: 16ch;
	font-size: 11px;
	font-weight: 550;
	line-height: 1.2;
}
.station-copy em {
	font: 8px/1.3 var(--font-mono);
	font-style: normal;
	color: #6f6f78;
}
.route-station.is-active .station-node {
	border-color: var(--route-amber);
	background: rgba(224, 188, 119, 0.12);
	box-shadow:
		0 0 0 5px rgba(224, 188, 119, 0.045),
		0 0 28px rgba(224, 188, 119, 0.2);
	transform: rotate(45deg) scale(1.1);
}
.route-station.is-active .station-node i {
	border-color: var(--route-amber);
	background: var(--route-amber);
}
.route-station.is-active .station-copy small,
.route-station.is-active .station-copy b {
	color: var(--route-amber);
}
.route-station:not(.is-active) .station-copy {
	opacity: 0.62;
}
.route-station:hover .station-copy {
	opacity: 1;
}
.route-foot {
	position: absolute;
	z-index: 5;
	left: 0;
	right: 0;
	bottom: 0;
	height: 34px;
	padding: 0 28px;
	display: grid;
	grid-template-columns: auto 1fr auto;
	gap: 18px;
	align-items: center;
	border-top: 1px solid #292930;
	background: #0a0a0d;
	color: #6e6e76;
	font: 650 8px/1 var(--font-mono);
	letter-spacing: 0.14em;
}
.route-foot > div {
	height: 2px;
	background: #25252c;
	overflow: hidden;
}
.route-foot > div i {
	display: block;
	width: 100%;
	height: 100%;
	transform: scaleX(0);
	transform-origin: left;
	background: var(--route-amber);
}
.route-foot > b {
	color: #a2a2aa;
	font-weight: 600;
}
.route-step {
	height: 84vh;
	min-height: 520px;
	position: relative;
	z-index: -1;
	pointer-events: none;
}
.route-step-marker {
	position: absolute;
	left: -9999px;
}
.route-step-data {
	display: none;
}

.route-transition {
	position: relative;
	padding: 118px 0 88px;
	border-top: 1px solid var(--rule);
	border-bottom: 1px solid var(--rule);
	background: linear-gradient(180deg, #101014, #0b0b0e);
}
.route-transition::before {
	content: "OBJECTIVE RECORD";
	position: absolute;
	right: 2vw;
	top: 16px;
	color: rgba(255, 255, 255, 0.022);
	font: 800 clamp(70px, 12vw, 180px) / 1 var(--font-sans);
	letter-spacing: -0.07em;
	white-space: nowrap;
	pointer-events: none;
}
.route-transition .page {
	position: relative;
}
.route-transition span {
	color: var(--route-amber);
	font: 650 10px/1 var(--font-mono);
	letter-spacing: 0.15em;
}
.route-transition h2 {
	margin: 15px 0 16px;
	font-size: clamp(45px, 6vw, 78px);
	line-height: 0.95;
	font-weight: 500;
	letter-spacing: -0.05em;
}
.route-transition p {
	margin: 0;
	color: var(--ink-2);
}
.route-dossiers {
	padding: 0 0 100px;
}
.dossier {
	scroll-margin-top: 78px;
	padding: 88px 0 26px;
	border-bottom: 1px solid var(--rule);
}
.dossier header {
	display: grid;
	grid-template-columns: 74px minmax(0, 1fr) auto;
	gap: 22px;
	align-items: start;
	margin-bottom: 35px;
}
.dossier-num {
	font: 650 12px/1 var(--font-mono);
	color: var(--route-amber);
	padding-top: 7px;
}
.dossier header p {
	margin: 0 0 9px;
	color: var(--route-amber);
	font: 650 10px/1 var(--font-mono);
	letter-spacing: 0.12em;
}
.dossier header h2 {
	margin: 0;
	font-size: clamp(36px, 5vw, 62px);
	font-weight: 500;
	line-height: 1;
	letter-spacing: -0.045em;
}
.dossier header span {
	display: block;
	margin-top: 14px;
	max-width: 66ch;
	color: var(--ink-2);
	font-size: 14px;
}
.dossier-return {
	margin-top: 7px;
	color: #7f7f87;
	font: 650 9px/1 var(--font-mono);
	letter-spacing: 0.1em;
}
.dossier-return:hover {
	color: var(--route-amber);
}
.dossier ol {
	list-style: none;
	margin: 0 0 0 96px;
	padding: 0;
	border-top: 1px solid #303038;
}
.dossier li {
	position: relative;
	display: grid;
	grid-template-columns: 42px minmax(0, 1fr) auto;
	gap: 16px;
	padding: 18px 0;
	border-bottom: 1px solid #28282f;
	transition:
		background 0.22s,
		padding 0.22s;
}
.dossier li::before {
	content: "";
	position: absolute;
	left: -96px;
	top: -1px;
	bottom: -1px;
	width: 2px;
	background: transparent;
	transition: background 0.22s;
}
.dossier li:hover {
	padding-left: 12px;
	padding-right: 12px;
	background: rgba(255, 255, 255, 0.018);
}
.dossier li:hover::before {
	background: var(--route-amber);
}
.obj-index {
	font: 10px/1.5 var(--font-mono);
	color: #62626a;
}
.dossier li b {
	display: block;
	margin-bottom: 5px;
	font-size: 15px;
	font-weight: 550;
}
.dossier li p {
	margin: 0;
	max-width: 76ch;
	color: var(--ink-2);
	font-size: 13px;
	line-height: 1.55;
}
.dossier li em {
	align-self: start;
	padding: 6px 8px;
	border: 1px solid #3a3a42;
	color: #8e8e97;
	font: 650 8px/1 var(--font-mono);
	font-style: normal;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	clip-path: polygon(5px 0, 100% 0, 100% calc(100% - 5px), calc(100% - 5px) 100%, 0 100%, 0 5px);
}
.dossier li[data-status="next"] em {
	border-color: var(--route-amber);
	color: var(--route-amber);
	background: rgba(224, 188, 119, 0.055);
}
.dossier li[data-status="research"] em {
	border-color: #73413d;
	color: #ba6a62;
}
.dossier li[data-status="external"] em {
	border-style: dashed;
}
.route-rule {
	margin-top: 0;
}

@media (max-width: 980px) {
	.route-intro-grid {
		grid-template-columns: 1fr;
		gap: 50px;
	}
	.route-intro-panel {
		max-width: 430px;
	}
	.route-stage {
		grid-template-columns: 1fr;
		padding-top: 72px;
		align-items: start;
	}
	.route-readout {
		padding-top: 12vh;
	}
	.route-dossier-card {
		display: none;
	}
	.route-map {
		left: 28px;
		right: 28px;
	}
	.station-copy b {
		font-size: 10px;
	}
	.station-copy em {
		display: none;
	}
}
@media (max-width: 700px) {
	.route-intro {
		padding: 86px 0 72px;
	}
	.route-intro h1 {
		font-size: clamp(50px, 15vw, 76px);
	}
	.route-intro-panel {
		display: none;
	}
	.route-sticky {
		top: 56px;
		min-height: 520px;
	}
	.route-topbar {
		padding: 0 18px;
		grid-template-columns: 1fr auto;
	}
	.route-topbar > em {
		display: none;
	}
	.route-stage {
		height: calc(100% - 154px);
		padding: 66px 20px 20px;
		display: block;
	}
	.route-readout {
		padding: 13vh 0 0 42px;
	}
	.route-readout::before {
		left: 8px;
	}
	.route-readout::after {
		left: 2px;
	}
	.route-readout-number {
		top: -16px;
		left: 35px;
		font-size: 120px;
	}
	.route-readout h2 {
		font-size: clamp(44px, 14vw, 68px);
	}
	.route-summary {
		font-size: 14px;
	}
	.route-gate {
		margin-top: 20px;
	}
	.route-map {
		left: 0;
		right: 0;
		bottom: 38px;
		height: 66px;
		padding: 0 12px;
		grid-template-columns: repeat(6, minmax(92px, 1fr));
		overflow-x: auto;
		overflow-y: hidden;
		scrollbar-width: none;
		scroll-snap-type: x proximity;
	}
	.route-map::-webkit-scrollbar {
		display: none;
	}
	.route-line {
		left: 58px;
		right: -400px;
		top: 13px;
	}
	.route-station {
		scroll-snap-align: center;
	}
	.station-node {
		width: 28px;
		height: 28px;
		margin-bottom: 6px;
	}
	.station-node i {
		inset: 7px;
	}
	.station-copy em {
		display: none;
	}
	.station-copy b {
		font-size: 9px;
	}
	.route-foot {
		height: 30px;
		padding: 0 16px;
		gap: 10px;
	}
	.route-step {
		height: 78vh;
		min-height: 500px;
	}
	.dossier {
		padding-top: 68px;
	}
	.dossier header {
		grid-template-columns: 34px 1fr;
		gap: 12px;
	}
	.dossier-return {
		display: none;
	}
	.dossier ol {
		margin-left: 46px;
	}
	.dossier li {
		grid-template-columns: 28px 1fr;
	}
	.dossier li em {
		grid-column: 2;
		justify-self: start;
	}
	.dossier li::before {
		left: -46px;
	}
	.route-transition {
		padding: 84px 0 68px;
	}
}
@media (prefers-reduced-motion: reduce) {
	.route-readout,
	.route-dossier-card,
	.station-node,
	.station-copy,
	.dossier li,
	.route-divider span,
	.route-gate > span i {
		transition: none !important;
	}
	.route-noise {
		display: none;
	}
}

/* Golden route tree ------------------------------------------------------- */
.route-scroll {
	min-height: 0;
}
.route-sticky {
	margin-bottom: calc(-100vh + 56px);
}
.route-stage {
	height: calc(100% - 268px);
	padding-bottom: 18px;
}
.route-map.route-tree {
	position: absolute;
	z-index: 4;
	left: clamp(24px, 4.2vw, 72px);
	right: clamp(24px, 4.2vw, 72px);
	bottom: 38px;
	height: 190px;
	display: block;
	overflow: visible;
	pointer-events: none;
}
.route-tree-lines {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	overflow: visible;
	pointer-events: none;
}
.route-tree-lines path {
	fill: none;
	vector-effect: non-scaling-stroke;
	stroke-linecap: round;
	stroke-linejoin: round;
}
.route-tree-lines .tree-base path {
	stroke: rgba(126, 103, 62, 0.28);
	stroke-width: 1.2;
}
.route-tree-lines .tree-base .tree-twig {
	stroke: rgba(224, 188, 119, 0.13);
	stroke-width: 1;
}
.route-tree-lines .tree-live path {
	stroke: var(--route-amber);
	stroke-width: 2;
	opacity: 0;
	stroke-dasharray: 8 7;
	transition:
		opacity 0.45s ease,
		stroke-width 0.45s ease;
	filter: drop-shadow(0 0 5px rgba(224, 188, 119, 0.3));
}
.route-tree-lines .tree-live path.is-reached {
	opacity: 0.92;
	stroke-width: 2.3;
	animation: routeBranchFlow 2.8s linear infinite;
}
.route-tree-label {
	position: absolute;
	left: 4.8%;
	top: 4px;
	color: rgba(224, 188, 119, 0.48);
	font: 650 8px/1 var(--font-mono);
	letter-spacing: 0.16em;
}
.route-tree .route-station {
	position: absolute;
	width: 150px;
	transform: translate(-50%, -50%);
	pointer-events: auto;
	text-align: center;
}
.route-tree .route-station-1 {
	left: 9.2%;
	top: 51.6%;
}
.route-tree .route-station-2 {
	left: 26%;
	top: 51.6%;
}
.route-tree .route-station-3 {
	left: 43%;
	top: 51.6%;
}
.route-tree .route-station-4 {
	left: 60%;
	top: 51.6%;
}
.route-tree .route-station-5 {
	left: 79%;
	top: 18.4%;
}
.route-tree .route-station-6 {
	left: 80%;
	top: 81%;
}
.route-tree .station-node {
	width: 30px;
	height: 30px;
	margin: 0 auto 7px;
	border-radius: 50%;
	transform: none;
	border: 1px solid #575342;
	background: #0a0a0d;
	box-shadow: inset 0 0 0 5px #0a0a0d;
	overflow: visible;
}
.route-tree .station-node i {
	inset: 7px;
	border: 0;
	border-radius: 50%;
	background: #262219;
	box-shadow: 0 0 0 1px rgba(224, 188, 119, 0.16);
}
.route-tree .station-copy {
	gap: 2px;
	transform: translateY(1px);
}
.route-tree .station-copy small {
	color: #82755c;
}
.route-tree .station-copy b {
	font-size: 10px;
	max-width: 18ch;
}
.route-tree .station-copy em {
	font-size: 7px;
	color: #68625a;
}
.route-tree .route-station.is-reached .station-node {
	border-color: rgba(224, 188, 119, 0.72);
}
.route-tree .route-station.is-reached .station-node i {
	background: rgba(224, 188, 119, 0.65);
	box-shadow: 0 0 14px rgba(224, 188, 119, 0.45);
}
.route-tree .route-station.is-active .station-node {
	border-color: #f0d59a;
	background: rgba(224, 188, 119, 0.08);
	transform: scale(1.12);
	box-shadow:
		0 0 0 5px rgba(224, 188, 119, 0.045),
		0 0 28px rgba(224, 188, 119, 0.36);
}
.route-tree .route-station.is-active .station-node i {
	background: #f0d59a;
	box-shadow: 0 0 18px rgba(240, 213, 154, 0.9);
}
.route-tree .route-station.is-active .station-copy small,
.route-tree .route-station.is-active .station-copy b {
	color: #f0d59a;
}
.route-tree .route-branch .station-copy {
	justify-items: start;
	text-align: left;
	position: absolute;
	left: 96px;
	top: -1px;
	width: 145px;
}
.route-tree .route-station-6 .station-copy {
	top: -8px;
}
.route-tree .station-node::before,
.route-tree .station-node::after {
	content: "";
	position: absolute;
	inset: -1px;
	border: 1px solid rgba(240, 213, 154, 0.75);
	border-radius: 50%;
	opacity: 0;
	pointer-events: none;
}
.route-tree .route-station.is-pulsing .station-node::before {
	animation: routeNodeRipple 1.05s cubic-bezier(0.2, 0.6, 0.2, 1);
}
.route-tree .route-station.is-pulsing .station-node::after {
	animation: routeNodeRipple 1.05s 0.18s cubic-bezier(0.2, 0.6, 0.2, 1);
}
.route-step {
	z-index: 0;
}
@keyframes routeNodeRipple {
	0% {
		transform: scale(0.72);
		opacity: 0.9;
	}
	70% {
		opacity: 0.18;
	}
	100% {
		transform: scale(3.7);
		opacity: 0;
	}
}
@keyframes routeBranchFlow {
	to {
		stroke-dashoffset: -30;
	}
}

@media (max-width: 980px) {
	.route-stage {
		height: calc(100% - 250px);
	}
	.route-map.route-tree {
		left: 18px;
		right: 18px;
		height: 175px;
		bottom: 38px;
	}
	.route-tree .route-station {
		width: 118px;
	}
	.route-tree .station-copy b {
		font-size: 9px;
	}
	.route-tree .route-branch .station-copy {
		left: 78px;
		width: 115px;
	}
}
@media (max-width: 700px) {
	.route-sticky {
		margin-bottom: calc(-100vh + 56px);
	}
	.route-stage {
		height: calc(100% - 222px);
		padding-bottom: 8px;
	}
	.route-map.route-tree {
		left: 8px;
		right: 8px;
		bottom: 31px;
		height: 150px;
		padding: 0;
		overflow: visible;
	}
	.route-tree-lines {
		overflow: visible;
	}
	.route-tree-label {
		display: none;
	}
	.route-tree .route-station {
		width: 80px;
	}
	.route-tree .station-node {
		width: 24px;
		height: 24px;
		margin-bottom: 5px;
	}
	.route-tree .station-node i {
		inset: 6px;
	}
	.route-tree .station-copy b {
		font-size: 8px;
		line-height: 1.08;
	}
	.route-tree .station-copy small {
		font-size: 7px;
	}
	.route-tree .station-copy em {
		display: none;
	}
	.route-tree .route-branch .station-copy {
		left: 54px;
		top: 0;
		width: 78px;
	}
	.route-tree .route-station-6 .station-copy {
		top: -5px;
	}
	.route-step {
		height: 76vh;
		min-height: 480px;
	}
}
@media (prefers-reduced-motion: reduce) {
	.route-tree-lines .tree-live path.is-reached {
		animation: none;
	}
	.route-tree .route-station.is-pulsing .station-node::before,
	.route-tree .route-station.is-pulsing .station-node::after {
		animation: none;
	}
}

/* Golden route tree v2 — vertical, downward-growing scene ---------------- */
.route-scroll {
	position: relative;
	min-height: 560vh;
	background: #09090c;
}
.route-sticky {
	position: sticky;
	top: 56px;
	height: calc(100vh - 56px);
	min-height: 620px;
	margin-bottom: 0;
	overflow: hidden;
}
.route-stage {
	height: 100%;
	padding: 74px clamp(28px, 5vw, 82px) 70px;
	grid-template-columns: minmax(0, 1.05fr) minmax(360px, 0.72fr);
	gap: clamp(34px, 5vw, 82px);
	align-items: center;
}
.route-dossier-card {
	display: none;
}
.route-map.route-tree {
	position: relative;
	z-index: 4;
	inset: auto;
	width: min(100%, 520px);
	height: min(72vh, 650px);
	min-height: 510px;
	justify-self: end;
	align-self: center;
	display: block;
	overflow: visible;
	pointer-events: none;
}
.route-tree-lines {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	overflow: visible;
	pointer-events: none;
}
.route-tree-label {
	left: 50%;
	top: 0;
	transform: translateX(-50%);
	white-space: nowrap;
}
.route-tree .route-station {
	position: absolute;
	width: 190px;
	transform: translate(-50%, -50%);
	pointer-events: auto;
	text-align: left;
}
.route-tree .route-station-1 {
	left: 50%;
	top: 10%;
}
.route-tree .route-station-2 {
	left: 50%;
	top: 30.6%;
}
.route-tree .route-station-3 {
	left: 50%;
	top: 51.6%;
}
.route-tree .route-station-4 {
	left: 50%;
	top: 73.5%;
}
.route-tree .route-station-5 {
	left: 23.8%;
	top: 92%;
}
.route-tree .route-station-6 {
	left: 76.2%;
	top: 92%;
}
.route-tree .station-node {
	width: 32px;
	height: 32px;
	margin: 0;
	border-radius: 50%;
	transform: none;
	border: 1px solid #655d49;
	background: #0a0a0d;
	box-shadow: inset 0 0 0 5px #0a0a0d;
	overflow: visible;
}
.route-tree .station-copy {
	position: absolute;
	left: 48px;
	top: 50%;
	width: 145px;
	transform: translateY(-50%);
	justify-items: start;
	text-align: left;
	gap: 3px;
}
.route-tree .route-station-1 .station-copy,
.route-tree .route-station-2 .station-copy,
.route-tree .route-station-3 .station-copy,
.route-tree .route-station-4 .station-copy {
	left: 49px;
}
.route-tree .route-station-5 .station-copy {
	left: auto;
	right: 48px;
	justify-items: end;
	text-align: right;
	width: 130px;
}
.route-tree .route-station-6 .station-copy {
	left: 48px;
	right: auto;
	top: 50%;
	width: 130px;
}
.route-tree .station-copy b {
	font-size: 11px;
	max-width: 19ch;
}
.route-tree .station-copy em {
	font-size: 7px;
}
.route-tree-lines .tree-base path {
	stroke: rgba(224, 188, 119, 0.23);
	stroke-width: 1.35;
}
.route-tree-lines .tree-base .tree-twig {
	stroke: rgba(224, 188, 119, 0.11);
	stroke-width: 1;
}
.route-tree-lines .tree-live path {
	stroke: #e7c47f;
	stroke-width: 2.15;
	opacity: 0;
	stroke-dasharray: 7 8;
	filter: drop-shadow(0 0 7px rgba(224, 188, 119, 0.5));
}
.route-tree-lines .tree-live path.is-reached {
	opacity: 1;
	stroke-width: 2.45;
}
.route-step {
	position: absolute;
	left: 0;
	width: 1px;
	height: 1px;
	min-height: 0;
	z-index: 0;
	pointer-events: none;
	scroll-margin-top: 52vh;
}
.route-step:nth-of-type(1) {
	top: 3%;
}
.route-step:nth-of-type(2) {
	top: 21%;
}
.route-step:nth-of-type(3) {
	top: 39%;
}
.route-step:nth-of-type(4) {
	top: 57%;
}
.route-step:nth-of-type(5) {
	top: 75%;
}
.route-step:nth-of-type(6) {
	top: 93%;
}
.route-foot {
	z-index: 7;
}
@media (max-width: 980px) {
	.route-stage {
		grid-template-columns: minmax(0, 1fr) minmax(300px, 0.65fr);
		gap: 26px;
		padding-left: 28px;
		padding-right: 28px;
	}
	.route-map.route-tree {
		width: 390px;
		height: min(68vh, 580px);
		min-height: 480px;
	}
	.route-tree .route-station {
		width: 150px;
	}
	.route-tree .station-copy {
		width: 112px;
	}
	.route-tree .station-copy b {
		font-size: 9px;
	}
}
@media (max-width: 700px) {
	.route-scroll {
		min-height: 500vh;
	}
	.route-sticky {
		margin-bottom: 0;
		min-height: 560px;
	}
	.route-stage {
		height: 100%;
		display: block;
		padding: 58px 18px 48px;
	}
	.route-readout {
		position: absolute;
		z-index: 6;
		left: 18px;
		right: 18px;
		top: 56px;
		padding: 0 0 0 38px;
		pointer-events: none;
	}
	.route-readout-number {
		font-size: 96px;
		top: -10px;
	}
	.route-readout h2 {
		font-size: clamp(38px, 11vw, 54px);
		max-width: 9ch;
	}
	.route-summary {
		max-width: 30ch;
		font-size: 12px;
	}
	.route-gate {
		display: none;
	}
	.route-map.route-tree {
		position: absolute;
		right: 2px;
		left: auto;
		bottom: 38px;
		width: 72vw;
		height: 58vh;
		min-height: 390px;
		opacity: 0.9;
	}
	.route-tree .route-station {
		width: 100px;
	}
	.route-tree .station-node {
		width: 24px;
		height: 24px;
	}
	.route-tree .station-node i {
		inset: 6px;
	}
	.route-tree .station-copy {
		left: 34px;
		width: 72px;
	}
	.route-tree .route-station-5 .station-copy {
		right: 34px;
		width: 66px;
	}
	.route-tree .route-station-6 .station-copy {
		left: 34px;
		width: 66px;
	}
	.route-tree .station-copy b {
		font-size: 7px;
	}
	.route-tree .station-copy small {
		font-size: 7px;
	}
	.route-tree .station-copy em {
		display: none;
	}
	.route-tree-label {
		display: none;
	}
}
/* Interactive proof pages */
html {
	scroll-behavior: smooth;
}
.body.wide {
	max-width: none;
}
.security-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 14px;
}
.security-grid article {
	padding: 22px;
	border: 1px solid var(--rule);
	border-radius: 10px;
	transition:
		transform 0.3s var(--ease),
		border-color 0.3s,
		background 0.3s;
}
.security-grid article:hover {
	transform: translateY(-5px);
	border-color: var(--accent);
	background: rgba(224, 188, 119, 0.035);
}
.security-grid span {
	color: var(--accent);
	font: 11px var(--font-mono);
}
.security-grid h3 {
	margin: 24px 0 10px;
	font-size: 20px;
}
.security-grid p {
	margin: 0;
	color: var(--ink-2);
	font-size: 14px;
}
.download-card {
	display: grid;
	grid-template-columns: 1fr auto;
	gap: 22px;
	align-items: center;
	margin: 0 0 26px;
	padding: 22px;
	border: 1px solid rgba(224, 188, 119, 0.42);
	border-radius: 12px;
	background: rgba(224, 188, 119, 0.055);
}
.download-card h3 {
	margin: 0 0 6px;
	color: var(--night-ink);
	font-size: 22px;
}
.download-card p {
	margin: 0;
	color: var(--night-ink-2);
	font-size: 13px;
}
.download-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-top: 14px;
}
.download-meta span {
	padding: 5px 8px;
	border: 1px solid rgba(255, 255, 255, 0.14);
	border-radius: 4px;
	font: 10px var(--font-mono);
}
.hash {
	display: block;
	margin-top: 12px;
	overflow-wrap: anywhere;
	color: var(--night-ink-2);
	font: 10px/1.5 var(--font-mono);
}
@media (max-width: 760px) {
	.security-grid {
		grid-template-columns: 1fr;
	}
	.download-card {
		grid-template-columns: 1fr;
	}
}
@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}
	.security-grid article:hover {
		transform: none;
	}
}
