/**
 * Variant CSS: process--sticky-side-steps
 *
 * A left heading column that pins (position:sticky) while a right numbered steps
 * list scrolls past it. The right list is open (no card/panel framing): a thin
 * vertical guide rail runs behind large display numbers, with hairline row
 * separators between steps. The sticky aside + open numbered list set it apart
 * from checklist-panel (framed bordered card + small badge rows), the timeline
 * and the full-width step rows. Numbers + em take --accent; titles stay --ink
 * (polarity-aware), descriptions muted. Columns stack on mobile and the sticky
 * behaviour is dropped. Part of the `process` role. Every selector scoped.
 */

body.aibt-universal .universal-process--sticky-side-steps {
	background: var(--background);
	color: var(--text-primary);
	padding-block: calc(clamp(3rem, 7vw, 5.5rem) * var(--density, 1));
}

body.aibt-universal .universal-process--sticky-side-steps .universal-process__grid {
	align-items: flex-start;
}

/* Sticky aside — the heading column rides along as the list scrolls. The inner
   wrapper is what actually sticks (the WP flex column is the scroll context). */
body.aibt-universal .universal-process--sticky-side-steps .universal-process__aside-inner {
	position: sticky;
	top: clamp(1.5rem, 6vw, 3rem);
}

body.aibt-universal .universal-process--sticky-side-steps .universal-process__kicker {
	font-family: var(--font-body) !important;
	font-size: var(--text-xs) !important;
	font-weight: 600 !important;
	letter-spacing: var(--tracking-widest) !important;
	text-transform: uppercase !important;
	color: var(--accent) !important;
	margin: 0 0 var(--space-sm) 0 !important;
}

body.aibt-universal .universal-process--sticky-side-steps .universal-process__headline {
	font-family: var(--font-display) !important;
	color: var(--ink) !important;
	margin: 0 0 var(--space-md) 0 !important;
}

body.aibt-universal .universal-process--sticky-side-steps .universal-process__headline em {
	color: var(--accent) !important;
	font-style: italic;
}

body.aibt-universal .universal-process--sticky-side-steps .universal-process__deck {
	font-family: var(--font-body) !important;
	font-size: var(--text-base) !important;
	line-height: var(--leading-relaxed) !important;
	color: var(--ink) !important;
	opacity: 0.74;
	max-width: 36ch;
	margin: 0 !important;
}

/* The open list — a vertical guide rail runs behind the number column. */
body.aibt-universal .universal-process--sticky-side-steps .universal-process__list {
	position: relative;
}

/* Guide rail: positioned at the horizontal center of the number column. Numbers
   are ~2.6rem wide; the rail sits at half that (~1.3rem) from the list edge. */
body.aibt-universal .universal-process--sticky-side-steps .universal-process__list::before {
	content: "";
	position: absolute;
	top: clamp(1.5rem, 4vw, 2rem);
	bottom: clamp(1.5rem, 4vw, 2rem);
	left: 1.3rem;
	width: 2px;
	background: color-mix(in srgb, var(--ink) 12%, transparent);
	z-index: 0;
}

/* Step row — number beside body, hairline separator between rows. */
body.aibt-universal .universal-process--sticky-side-steps .universal-process__step {
	position: relative;
	z-index: 1;
	gap: clamp(1rem, 2.4vw, 1.6rem) !important;
	align-items: flex-start !important;
	flex-wrap: nowrap !important;
	padding-block: calc(clamp(1.3rem, 3vw, 1.9rem) * var(--density, 1)) !important;
	border-bottom: 1px solid color-mix(in srgb, var(--ink) 11%, transparent);
}

body.aibt-universal .universal-process--sticky-side-steps .universal-process__step:first-child {
	padding-top: 0 !important;
}

body.aibt-universal .universal-process--sticky-side-steps .universal-process__step:last-child {
	border-bottom: 0;
	padding-bottom: 0 !important;
}

/* Large display number on a solid disc so the guide rail reads as "passing
   behind". Accent digit on the section background, ringed by a hairline. */
body.aibt-universal .universal-process--sticky-side-steps .universal-process__num {
	flex: 0 0 auto !important;
	width: 2.6rem;
	height: 2.6rem;
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: var(--decor-radius-pill, 999px);
	background: var(--background) !important;
	border: 2px solid color-mix(in srgb, var(--accent) 45%, transparent);
	color: var(--accent) !important;
	font-family: var(--font-display) !important;
	font-size: 0.95rem !important;
	font-weight: 700 !important;
	line-height: 1 !important;
	margin: 0 !important;
	font-variant-numeric: tabular-nums;
}

body.aibt-universal .universal-process--sticky-side-steps .universal-process__step-body {
	flex: 1 1 auto;
	min-width: 0;
	padding-top: 0.15rem;
}

body.aibt-universal .universal-process--sticky-side-steps .universal-process__step-title {
	font-family: var(--font-display) !important;
	font-size: clamp(1.15rem, 2.2vw, 1.4rem) !important;
	font-weight: 600 !important;
	line-height: 1.25 !important;
	color: var(--ink) !important;
	margin: 0 0 0.35rem 0 !important;
}

body.aibt-universal .universal-process--sticky-side-steps .universal-process__step-desc {
	font-family: var(--font-body) !important;
	font-size: var(--text-sm) !important;
	line-height: var(--leading-relaxed) !important;
	color: var(--ink) !important;
	opacity: 0.7;
	margin: 0 !important;
}

/* Tablet/mobile: WP stacks the columns; release the sticky pin so the heading
   simply sits above the list, and let the deck use the full width. */
@media (max-width: 781px) {
	body.aibt-universal .universal-process--sticky-side-steps .universal-process__aside-inner {
		position: static;
		top: auto;
	}
	body.aibt-universal .universal-process--sticky-side-steps .universal-process__deck {
		max-width: none;
	}
}

/* A5: drop wide kicker tracking on narrow phones so the uppercase label never
   strains or wraps. */
@media (max-width: 640px) {
	body.aibt-universal .universal-process--sticky-side-steps .universal-process__kicker {
		letter-spacing: 0 !important;
	}
}
