/* =========================================================================
   404 — page not found.

   Owns the "Try one of these" routes strip that sits between the manifest
   hero (page-manifest.css) and the closing band (page-cta.css). Both of
   those are reused as-is, so this file only needs to define the routes
   list and a thin manifest-art tweak when 'error' variant is on.
   ========================================================================= */

.id30-404 {
	display: block;
}

/* --- Manifest art tone (slightly muted so the torn corner reads
   without competing with the title). --------------------------------- */
.id30-page-manifest--error .id30-page-manifest__art {
	color: var(--color-graphite);
	opacity: 0.92;
}

/* --- Routes strip --------------------------------------------------- */
.id30-404__routes {
	padding: 16px 0 clamp(48px, 6vw, 80px);
}

.id30-404__routes-inner {
	max-width: 1180px;
	margin: 0 auto;
	padding: 0 24px;
}

.id30-404__routes-stamp {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	margin: 0 0 24px;
	font-family: var(--font-mono);
	font-size: 11px;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	color: var(--color-ember);
}

.id30-404__routes-tick {
	display: inline-block;
	width: 18px;
	height: 1px;
	background-color: var(--color-ember);
}

.id30-404__routes-list {
	display: grid;
	grid-template-columns: 1fr;
	gap: 0;
	border-top: 1px solid var(--color-line);
}

@media (min-width: 720px) {
	.id30-404__routes-list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		column-gap: 0;
	}
}

@media (min-width: 1040px) {
	.id30-404__routes-list {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

.id30-404__routes-item {
	border-bottom: 1px solid var(--color-line);
}

@media (min-width: 720px) {
	/* Right-column items add a left rule so the grid reads as a table. */
	.id30-404__routes-item:nth-child(2n) {
		border-left: 1px solid var(--color-line);
	}
}

@media (min-width: 1040px) {
	.id30-404__routes-item:nth-child(2n)  { border-left: 1px solid var(--color-line); }
	.id30-404__routes-item:nth-child(3n+1) { border-left: 0; }
	.id30-404__routes-item:nth-child(3n+2),
	.id30-404__routes-item:nth-child(3n)   { border-left: 1px solid var(--color-line); }
}

.id30-404__routes-link {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 22px 4px;
	font-family: var(--font-title);
	font-weight: 300;
	font-size: clamp(1.15rem, 1.8vw, 1.45rem);
	letter-spacing: -0.01em;
	color: var(--color-ink);
	text-decoration: none;
	transition: color 180ms var(--ease-spring);
	position: relative;
}

@media (min-width: 720px) {
	.id30-404__routes-link {
		padding: 26px 24px;
	}
}

.id30-404__routes-link::after {
	/* Ember underline that wipes in on hover, mirroring the link
	   treatment used elsewhere in the editorial chrome. */
	content: "";
	position: absolute;
	left: 4px;
	right: 4px;
	bottom: 14px;
	height: 1px;
	background-color: var(--color-ember);
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform 280ms var(--ease-spring);
}

@media (min-width: 720px) {
	.id30-404__routes-link::after {
		left: 24px;
		right: 24px;
	}
}

.id30-404__routes-link:hover { color: var(--color-deep); }
.id30-404__routes-link:hover::after { transform: scaleX(1); }

.id30-404__routes-link svg {
	flex: 0 0 auto;
	color: var(--color-ember);
	transition: transform 180ms var(--ease-spring);
}

.id30-404__routes-link:hover svg {
	transform: translate(2px, -2px);
}
