/**
 * Home-page "Button Row": a flex row of big linked image buttons with a
 * dimmed background that eases to full brightness (and grows slightly,
 * clipped so the button's own footprint never changes) on hover/focus.
 */

.dfi-button-row {
	position: relative;
	box-sizing: border-box;
	display: flex;
	flex-direction: row;
	align-items: stretch;
	width: 100%;
	height: var(--dfi-br-height, 25vh);
	border-top: var(--dfi-br-border-top-w, 0px) solid var(--dfi-br-border-top-color, transparent);
	border-bottom: var(--dfi-br-border-bottom-w, 0px) solid var(--dfi-br-border-bottom-color, transparent);
}

.dfi-button-row__item {
	position: relative;
	flex: 1 1 0;
	min-width: 0;
	overflow: hidden;
	display: flex;
	align-items: center;
	justify-content: center;
	text-decoration: none;
	border-radius: var(--dfi-br-radius, 0px);
	border-left: var(--dfi-br-sep-w, 0px) solid var(--dfi-br-sep-color, transparent);
}

.dfi-button-row__item:first-child {
	border-left: 0;
}

.dfi-button-row__bg {
	position: absolute;
	inset: 0;
	background-image: var(--dfi-br-bg-image, none);
	background-size: cover;
	background-position: center;
	transform: scale(1);
	transition: transform 0.4s ease;
}

.dfi-button-row__dim {
	position: absolute;
	inset: 0;
	background: #000;
	opacity: var(--dfi-br-dim, 0.4);
	transition: opacity 0.4s ease;
}

.dfi-button-row__item:hover .dfi-button-row__bg,
.dfi-button-row__item:focus-visible .dfi-button-row__bg {
	transform: scale(1.08);
}

.dfi-button-row__item:hover .dfi-button-row__dim,
.dfi-button-row__item:focus-visible .dfi-button-row__dim {
	opacity: 0;
}

.dfi-button-row__content {
	position: relative;
	z-index: 1;
	padding: 0 1rem;
	text-align: center;
}

.dfi-button-row__h2 {
	display: inline-block;
	font-size: var(--dfi-br-h2-size, 1.75rem);
	color: var(--dfi-br-h2-color, #ffffff);
	background-color: var(--dfi-br-h2-bg, transparent);
	padding: calc(0.25em + var(--dfi-br-h2-pad-top, 0px)) 0.6em calc(0.25em + var(--dfi-br-h2-pad-bottom, 0px));
	border-radius: var(--dfi-br-h2-radius, 0px);
	line-height: 1.2;
	margin: 0;
}

.dfi-button-row__sub {
	position: absolute;
	z-index: 1;
	left: 0.75rem;
	right: 0.75rem;
	bottom: 0.6rem;
	font-size: var(--dfi-br-sub-size, 0.75rem);
	color: var(--dfi-br-sub-color, #ffffff);
	text-align: center;
}

/*
 * Text Animation: "Stagger Float" — the H2 title floats in as the row
 * scrolls into view, alternating direction per button (odd from above,
 * even from below; see :nth-child below). The hidden/offset starting
 * state (.dfi-anim-pending) is only added by button-rows-animation.js,
 * and only once IntersectionObserver support and prefers-reduced-motion
 * are confirmed — same approach as image-text-panel.js — so a blocked or
 * failed script just leaves every title in its plain, always-visible
 * state rather than stuck invisible.
 */
.dfi-button-row__h2.dfi-anim-pending {
	opacity: 0;
	transition: opacity 1s ease, transform 1s ease;
}

.dfi-button-row__item:nth-child(odd) .dfi-button-row__h2.dfi-anim-pending {
	transform: translateY(-60px);
}

.dfi-button-row__item:nth-child(even) .dfi-button-row__h2.dfi-anim-pending {
	transform: translateY(60px);
}

.dfi-button-row.is-visible .dfi-button-row__h2.dfi-anim-pending {
	opacity: 1;
	transform: translateY(0);
}

@media (max-width: 768px) {
	.dfi-button-row {
		flex-direction: column;
		height: auto;
	}

	.dfi-button-row__item {
		flex: 0 0 auto;
		width: 100%;
		height: auto;
		aspect-ratio: var(--dfi-br-mobile-aspect-w, 16) / var(--dfi-br-mobile-aspect-h, 9);
		border-left: 0;
		border-top: var(--dfi-br-sep-w, 0px) solid var(--dfi-br-sep-color, transparent);
	}

	.dfi-button-row__item:first-child {
		border-top: 0;
	}
}
