/**
 * Variant CSS: logos--single-row-ticker
 * Layer 2 - Path B logos role (2026-06-06).
 *
 * ONE slim row of monochrome faux-SVG wordmarks (currentColor) on a TRUE
 * continuous, seamless scroll. The track holds the set twice (the second half
 * is an aria-hidden decorative clone), so translateX from 0 to -50% lands on an
 * identical frame — the loop has no gap or jump. Both edges of the viewport
 * dissolve into the background via a horizontal mask (edge fade). When motion
 * is reduced the animation stops, the clone half is removed, and the row simply
 * centres as a static line (no mask). Logos read muted, lift to the accent on
 * hover. Structurally distinct from the two-row oscillating drift
 * (dual-row-marquee), the static fade-mask text row (marquee-fade), and the
 * static vertical-rule row (mono-row-divided).
 * Every selector scoped to .universal-logos--single-row-ticker (no leak).
 */

body.aibt-universal .universal-logos--single-row-ticker {
	background: var(--background-alt);
	color: var(--text-primary);
	border-block: 1px solid var(--divider-primary);
	overflow: hidden; /* contain the moving track — no page overflow */
	/* Explicit section rhythm (matches sibling logos variants); a slim trust
	   ticker still wants breathing room above/below the row. */
	padding-block: calc(clamp(2.6rem, 5.5vw, 4rem) * var(--density, 1));
}

/* ── Eyebrow ──────────────────────────────────────────────────────── */
body.aibt-universal .universal-logos--single-row-ticker .universal-logos__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;
	/* Centred eyebrow (has-text-align-center): keep horizontal margins auto so WP's
	   constrained margin-inline:auto is not overridden (anti-pattern A8/A9). */
	margin: 0 auto var(--space-lg, 2rem) auto !important;
}

/* ── Viewport: clips the track and fades both edges into the bg ────── */
body.aibt-universal .universal-logos--single-row-ticker .universal-logos__viewport {
	position: relative;
	overflow: hidden;
	/* Edge fade — transparent at the two ends, opaque in the middle. */
	-webkit-mask-image: linear-gradient(to right, transparent 0, #000 12%, #000 88%, transparent 100%);
	mask-image: linear-gradient(to right, transparent 0, #000 12%, #000 88%, transparent 100%);
}

/* ── Track: a single nowrap line holding the set twice; it slides left ─ */
body.aibt-universal .universal-logos--single-row-ticker .universal-logos__track {
	width: max-content;
	flex-wrap: nowrap !important;
	gap: clamp(2rem, 5vw, 4.5rem) !important;
	align-items: center;
	will-change: transform;
	animation: aibt-logos-ticker 38s linear infinite;
}

/* Track holds 2x the set; -50% lands exactly on the start of the clone half
   => the seam is invisible and the loop is continuous. */
@keyframes aibt-logos-ticker {
	from { transform: translateX(0); }
	to   { transform: translateX(-50%); }
}

/* Pause the drift while a visitor inspects (hover/keyboard focus inside). */
body.aibt-universal .universal-logos--single-row-ticker .universal-logos__viewport:hover .universal-logos__track,
body.aibt-universal .universal-logos--single-row-ticker .universal-logos__viewport:focus-within .universal-logos__track {
	animation-play-state: paused;
}

/* ── Each wordmark cell ───────────────────────────────────────────── */
body.aibt-universal .universal-logos--single-row-ticker .universal-logos__item {
	box-sizing: border-box;
	display: flex;
	align-items: center;
	justify-content: center;
	flex: 0 0 auto;
}

/* ── The faux-SVG wordmark itself ─────────────────────────────────── */
body.aibt-universal .universal-logos--single-row-ticker .universal-logos__logo {
	display: inline-flex;
	color: var(--ink);
	opacity: 0.5;
	transition: opacity var(--duration-fast, 0.18s) var(--ease-default, ease),
		color var(--duration-fast, 0.18s) var(--ease-default, ease);
}

body.aibt-universal .universal-logos--single-row-ticker .universal-logos__logo svg {
	display: block;
	width: clamp(96px, 8vw, 128px);
	height: auto;
}

body.aibt-universal .universal-logos--single-row-ticker .universal-logos__item:hover .universal-logos__logo {
	opacity: 1;
	color: var(--accent);
}

/* Keyboard reachability: visible ring should a theme make items focusable. */
body.aibt-universal .universal-logos--single-row-ticker .universal-logos__item:focus-within {
	outline: 2px solid var(--accent);
	outline-offset: 2px;
}
body.aibt-universal .universal-logos--single-row-ticker .universal-logos__item:focus-within .universal-logos__logo {
	opacity: 1;
	color: var(--accent);
}

/* ── ≤640px: drop kicker tracking (A5); shrink marks a touch ──────── */
@media (max-width: 640px) {
	body.aibt-universal .universal-logos--single-row-ticker .universal-logos__kicker {
		letter-spacing: 0 !important;
	}
	body.aibt-universal .universal-logos--single-row-ticker .universal-logos__track {
		gap: clamp(1.5rem, 8vw, 3rem) !important;
	}
	body.aibt-universal .universal-logos--single-row-ticker .universal-logos__logo svg {
		width: clamp(82px, 26vw, 110px);
	}
}

/* ── Reduced motion: stop the ticker, hide clones, centre a static row ─ */
@media (prefers-reduced-motion: reduce) {
	body.aibt-universal .universal-logos--single-row-ticker .universal-logos__track {
		animation: none;
		width: auto;
		flex-wrap: wrap !important; /* let the single set wrap freely, zero overflow */
		justify-content: center;
		transform: none;
	}
	/* Drop the duplicate set — it only exists to feed the loop. */
	body.aibt-universal .universal-logos--single-row-ticker .universal-logos__item--clone {
		display: none;
	}
	/* No movement => no need for the edge fade (would clip a wrapped static row). */
	body.aibt-universal .universal-logos--single-row-ticker .universal-logos__viewport {
		-webkit-mask-image: none;
		mask-image: none;
	}
	body.aibt-universal .universal-logos--single-row-ticker .universal-logos__logo {
		transition: none;
	}
}
