/**
 * Homepage "How It Works" process/timeline section styles.
 */

.u3ds-process {
	position: relative;
	background-color: var(--wp--preset--color--bg-primary);
	margin-top: 0;
	padding-top: var(--wp--preset--spacing--4-xl);
	padding-bottom: var(--wp--preset--spacing--4-xl);
	border-top: 1px solid var(--wp--preset--color--border);
}

.u3ds-process__header {
	max-width: 640px;
	margin: 0 0 var(--wp--preset--spacing--3-xl);
}

.u3ds-process__eyebrow {
	display: inline-flex;
	align-items: center;
	gap: var(--wp--preset--spacing--xs);
	color: var(--wp--preset--color--text-secondary);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.14em;
	margin: 0 0 var(--wp--preset--spacing--l);
}

.u3ds-process__eyebrow::before {
	content: "";
	width: 6px;
	height: 6px;
	border-radius: 999px;
	background-color: var(--wp--preset--color--accent);
	flex-shrink: 0;
}

.u3ds-process__headline {
	margin: 0;
}

.u3ds-process__rail {
	position: relative;
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	column-gap: var(--wp--preset--spacing--l);
}

.u3ds-process__rail::before {
	content: "";
	position: absolute;
	top: 11px;
	left: 0;
	right: 0;
	height: 1px;
	background-color: var(--wp--preset--color--border);
}

/* Accent overlay traced on top of the base line above as each step enters
   the viewport (see homepage-interactions.js). Progress is a single
   custom property so this element needs no orientation-specific JS —
   the desktop/mobile media query below decides scaleX vs scaleY. Sits
   inert (0% progress) with no JS, so the base line still fully
   communicates the rail with JavaScript disabled. */
.u3ds-process__rail-fill {
	position: absolute;
	top: 11px;
	left: 0;
	height: 1px;
	width: 100%;
	background-color: var(--wp--preset--color--accent);
	transform: scaleX(var(--u3ds-process-progress, 0));
	transform-origin: left center;
	transition: transform 500ms ease;
	pointer-events: none;
}

.u3ds-process__step {
	position: relative;
	padding-top: var(--wp--preset--spacing--2-xl);
}

/* Progressive-enhancement reveal: only applied once homepage-interactions.js
   confirms IntersectionObserver support and adds this class, so steps stay
   fully visible with no JS or on very old browsers. */
.u3ds-process__rail.u3ds-js-trace .u3ds-process__step {
	opacity: 0;
	transform: translateY(8px);
	transition: opacity 300ms ease, transform 300ms ease;
}

.u3ds-process__rail.u3ds-js-trace .u3ds-process__step.is-visible {
	opacity: 1;
	transform: translateY(0);
}

.u3ds-process__marker {
	position: absolute;
	top: 0;
	left: 0;
	width: 23px;
	height: 23px;
	border-radius: 999px;
	border: 1px solid var(--wp--preset--color--border);
	background-color: var(--wp--preset--color--bg-primary);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 0.6875rem;
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	color: var(--wp--preset--color--accent-highlight);
	transition: border-color 200ms ease, background-color 200ms ease;
}

.u3ds-process__step:hover .u3ds-process__marker,
.u3ds-process__step:focus-within .u3ds-process__marker {
	border-color: var(--wp--preset--color--accent);
	background-color: var(--wp--preset--color--surface-elevated);
}

.u3ds-process__step-title {
	margin: 0 0 var(--wp--preset--spacing--s);
	font-size: var(--wp--preset--font-size--medium);
	font-weight: 700;
	line-height: 1.25;
}

.u3ds-process__step-copy {
	margin: 0;
	color: var(--wp--preset--color--text-secondary);
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.6;
	max-width: 26ch;
}

@media (max-width: 1024px) {
	.u3ds-process__rail {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		row-gap: var(--wp--preset--spacing--2-xl);
	}

	.u3ds-process__rail::before {
		top: 11px;
		bottom: auto;
		height: 1px;
	}
}

@media (max-width: 781px) {
	.u3ds-process {
		padding-top: var(--wp--preset--spacing--3-xl);
		padding-bottom: var(--wp--preset--spacing--3-xl);
	}

	.u3ds-process__rail {
		grid-template-columns: 1fr;
		row-gap: 0;
	}

	.u3ds-process__rail::before {
		top: 0;
		bottom: 0;
		left: 11px;
		right: auto;
		width: 1px;
		height: auto;
	}

	.u3ds-process__rail-fill {
		top: 0;
		bottom: 0;
		left: 11px;
		width: 1px;
		height: 100%;
		transform: scaleY(var(--u3ds-process-progress, 0));
		transform-origin: top center;
	}

	.u3ds-process__step {
		padding-top: 0;
		padding-left: var(--wp--preset--spacing--2-xl);
		padding-bottom: var(--wp--preset--spacing--2-xl);
	}

	.u3ds-process__step:last-child {
		padding-bottom: 0;
	}

	.u3ds-process__marker {
		top: 0;
		left: 0;
	}

	.u3ds-process__step-copy {
		max-width: none;
		font-size: var(--wp--preset--font-size--medium);
		line-height: 1.65;
	}

	.u3ds-process__step-title {
		margin-bottom: var(--wp--preset--spacing--xs);
	}
}

@media (prefers-reduced-motion: reduce) {
	.u3ds-process__marker {
		transition: none;
	}

	.u3ds-process__rail-fill {
		transition: none;
	}

	.u3ds-process__rail.u3ds-js-trace .u3ds-process__step {
		opacity: 1;
		transform: none;
		transition: none;
	}
}
