/**
 * Slider block styles.
 */

@layer ftps-defaults {

.page-section-slider {
	--ftps-slider-nav-border-color: transparent;
	--ftps-radius-control-pill: var(--border-radius-round, 2rem);
	--ftps-slider-radius-control: var(--ftps-radius-control-pill);
	--ftps-slider-nav-button-radius: var(--ftps-slider-radius-control);
	--ftps-slider-text-color: var(--color-white, #fff);

	/* Nav button colors — override these per-section via inline style or a theme token file */
	--ftps-slider-nav-color: currentcolor;
	--ftps-slider-nav-bg: transparent;
	--ftps-slider-nav-color-hover: currentcolor;
	--ftps-slider-nav-bg-hover: transparent;
}

.page-section-slider.slider--text-row {
	--ftps-section-margin-md: 0;

	/* Compact announcement-bar layout defaults */
	--ftps-text-row-bg: transparent;
	--ftps-text-row-padding-block: 0.5rem;
	--ftps-text-row-slide-padding-inline: 1.25rem;
	--ftps-text-row-separator-color: currentcolor;
	--ftps-slider-nav-row-gap: 0;
	background-color: var(--ftps-text-row-bg);
	color: var(--ftps-slider-text-color);
}

} /* end @layer ftps-defaults */

.page-section-slider .ftps-slider-slide {
	box-sizing: border-box;
	height: 100%;
	min-height: 100%;
}

.page-section-slider .ftps-slider-slide section,
.page-section-slider .ftps-slider-slide .page-section-inner,
.page-section-slider .ftps-slider-slide .page-section-inner > div {
	height: 100%;
	min-height: 100%;
}

.page-section-slider .ftps-slider-navigation {
	margin-block: 12px;
}

.page-section-slider .ftps-slider-buttons {
	display: flex;
	gap: 8px;
}

.page-section-slider .ftps-slider-nav-button {
	align-items: center;
	background: var(--ftps-slider-nav-bg);
	border: 1px solid var(--ftps-slider-nav-border-color, currentcolor);
	border-radius: var(--ftps-slider-nav-button-radius);
	color: var(--ftps-slider-nav-color);
	cursor: pointer;
	display: inline-flex;
	height: 2.25rem;
	justify-content: center;
	width: 2.25rem;
}

.page-section-slider .ftps-slider-nav-button:hover,
.page-section-slider .ftps-slider-nav-button:focus-visible {
	background: var(--ftps-slider-nav-bg-hover);
	color: var(--ftps-slider-nav-color-hover);
}

/* Hide navigation when all slides fit in view (Swiper watchOverflow locks navigation). */
.page-section-slider:has(.swiper.swiper-navigation-disabled) .ftps-slider-navigation {
	display: none;
}

.page-section-slider .ftps-slider-pagination {
	margin-top: 16px;
}

.page-section-slider .swiper-pagination-bullets {
	position: static;
}

.page-section-slider .swiper-pagination-bullet {
	height: 14px;
	opacity: 1;
	width: 14px;
}

.page-section-slider .custom-pagination {
	background: transparent;
	border: 0;
	cursor: pointer;
	font: inherit;
	padding: 6px 10px;
}

/* Promo bar (text row) mode: compact announcement-bar layout. */
.page-section-slider.slider--text-row {
	margin-block: 0;
}

.page-section-slider.slider--text-row .ftps-slider-slide {
	align-items: center;
	display: flex;
	height: auto;
	justify-content: center;
	min-height: 0;
	padding-block: var(--ftps-text-row-padding-block, 0.5rem);
	text-align: center;
}

/* Strip default paragraph margins inside text-row slides. */
.page-section-slider.slider--text-row .ftps-slider-slide p {
	margin-block: 0;
}

/* Lay out nav and slides in a row at all viewport sizes. */
.page-section-slider.slider--text-row .ftps-slider-inner {
	align-items: center;
	display: flex;
	gap: var(--ftps-slider-nav-row-gap, 12px);
	max-width: none;
}

.page-section-slider.slider--text-row .ftps-slider-slides {
	flex: 1;
	min-width: 0;
}

.page-section-slider.slider--text-row .ftps-slider-navigation {
	flex-shrink: 0;
	margin-block: 0;
}

/* Promo bar mode: disable Swiper and render horizontal cards on desktop. */
@media (min-width: 1025px) {

	.page-section-slider.slider--text-row .ftps-slider-slides,
	.page-section-slider.slider--text-row .swiper {
		overflow: visible;
	}

	.page-section-slider.slider--text-row .swiper-wrapper {
		display: flex;
		flex-wrap: nowrap;

		/* No flex gap between slides: the divider is pinned to the slide
		   boundary, so inter-message spacing comes from each slide's
		   (symmetric) padding instead — keeping equal space on both sides of
		   the divider. The configured gap is folded into that padding below. */
		gap: 0;
		justify-content: center;
		transform: none !important;
		width: auto !important;
	}

	.page-section-slider.slider--text-row .swiper-slide {
		flex: 0 0 auto !important;
		margin-right: 0 !important;
		width: auto !important;
	}

	.page-section-slider.slider--text-row .ftps-slider-navigation,
	.page-section-slider.slider--text-row .ftps-slider-pagination {
		display: none;
	}

	/*
	 * Slide padding and vertical separator between items in row mode.
	 *
	 * Padding is the base value plus half the configured inter-message gap, so
	 * the two slides meet at the divider with equal space on each side of it.
	 */
	.page-section-slider.slider--text-row .swiper-slide .ftps-slider-slide {
		padding-inline: calc(
			var(--ftps-text-row-slide-padding-inline, 1.25rem) + var(--ftps-text-row-gap, 0px) / 2
		);
	}

	.page-section-slider.slider--text-row .swiper-slide + .swiper-slide .ftps-slider-slide {
		position: relative;
	}

	.page-section-slider.slider--text-row .swiper-slide + .swiper-slide .ftps-slider-slide::before {
		background-color: var(--ftps-text-row-separator-color, currentcolor);
		content: '';
		height: 1em;
		inset-block-start: 50%;
		inset-inline-start: 0;
		position: absolute;
		transform: translateY(-50%);
		width: 1px;
	}
}

.swiper-fade .swiper-slide {
	opacity: 0 !important;
}

.swiper-fade .swiper-slide-active {
	opacity: 1 !important;
}
