/**
 * WPFlexStudio Slider widget.
 *
 * Slide gap and item gap are intentionally absent from this stylesheet.
 * Elementor writes them through the responsive Slide Gap and Item Gap
 * controls. The script reads --wpfs-slider-gap for Swiper's spaceBetween.
 * Control-owned colors, sizes, padding, borders, radii and typography are
 * also absent here to prevent same-selector/property collisions.
 */
.wpflexstudio-slider,
.wpflexstudio-slider *,
.wpflexstudio-slider *::before,
.wpflexstudio-slider *::after {
	box-sizing: border-box;
}

.wpflexstudio-slider {
	position: relative;
	overflow: hidden;
}

.wpflexstudio-slider__track {
	display: flex;
	transition-timing-function: linear !important;
}

.wpflexstudio-slider__slide {
	flex-shrink: 0;
	min-width: 0;
}

.wpflexstudio-slider__item {
	display: flex;
	flex-direction: column;
	min-width: 0;
	/* gap is written only by the Item Gap control. */
}

.wpflexstudio-slider__image-wrap {
	overflow: hidden;
	min-width: 0;
	/* height: 525px; */
	height: clamp(300px, 40vw, 525px);
}

.wpflexstudio-slider__image {
	display: block;
	width: 100%;
	height: 100% !important;
	object-fit: cover;
	transition: transform 0.3s ease;
}

.wpflexstudio-slider__item:hover .wpflexstudio-slider__image {
	transform: scale(1.03);
}

.wpflexstudio-slider__title,
.wpflexstudio-slider__text,
.wpflexstudio-slider__link {
	min-width: 0;
	overflow-wrap: break-word;
}

.wpflexstudio-slider__link {
	display: block;
	width: fit-content;
	text-decoration: none;
}

.wpflexstudio-slider__link:hover,
.wpflexstudio-slider__link:focus {
	text-decoration: underline;
}

.wpflexstudio-slider__arrow {
	position: absolute;
	top: 50%;
	z-index: 2;
	padding: 0;
	border: 0;
	background: transparent;
	cursor: pointer;
	line-height: 1;
	transform: translateY(-50%);
}

.wpflexstudio-slider__arrow--prev {
	left: 8px;
}

.wpflexstudio-slider__arrow--next {
	right: 8px;
}

.wpflexstudio-slider__pagination {
	position: relative;
	text-align: center;
}

.wpflexstudio-slider__editor-notice {
	padding: 16px;
	border: 1px dashed #d0d0d0;
	color: #6d6d6d;
	font-style: italic;
}

/**
 * Centered mode ("peek slider": 1 full slide + a fractional neighbor
 * visible on each side). The peek itself needs no CSS — it comes
 * entirely from Swiper's `centeredSlides: true` + fractional numeric
 * `slidesPerView` (see wpflexstudio-slider.js buildSwiperOptions() /
 * buildBreakpoints(), fed by the widget's "Slides Per View (centered)"
 * control). With numeric (non-"auto") slidesPerView, Swiper sizes every
 * slide to (container width / slidesPerView), so the active slide plus
 * its two half-neighbors always sum to exactly the container's own
 * width — nothing is ever positioned past `.wpflexstudio-slider`'s own
 * bounds. That means the base selector's `overflow: hidden` above
 * (required so Swiper can hide non-active slides; left untouched here)
 * never clips the peek — there is no clipping bug to fix, only this
 * documented guarantee.
 *
 * `padding: 0` is explicit rather than left to inherit/default so a
 * future control or theme rule can't add asymmetric horizontal padding
 * on this modifier that would throw off the peek math on one side only.
 * Scoped strictly to `--centered` — standard mode's selector and
 * behavior above are untouched.
 */
.wpflexstudio-slider--centered {
	padding: 0;
}
