/* ==========================================================
 * Custom Slider Widget – csw-slider
 * Dependency-free, minimal CSS.
 * ========================================================== */

/* --- Wrapper --- */
.csw-slider {
	position: relative;
	overflow: visible; /* Pfeile dürfen außen liegen; Clipping übernimmt __viewport */
	width: 100%;
	height: 500px; /* fallback, overridden by Elementor selector */
	margin-bottom: 4rem;
}

/* --- Viewport: kapselt den sichtbaren Slide-Bereich ---- */
.csw-slider__viewport {
	position: relative;
	overflow: hidden;
	width: 100%;
	height: 100%;
}

/* --- Track (holds all slides side-by-side for "slide" effect) --- */
.csw-slider__track {
	display: flex;
	width: 100%;
	height: 100%;
	transition-property: transform;
	transition-timing-function: ease-in-out;
}

/* --- Slide --- */
.csw-slide {
	position: relative;
	flex: 0 0 100%;
	width: 100%;
	height: 100%;
	overflow: hidden;
}

/* Fade effect: stack slides on top of each other */
.csw-slider--fade .csw-slider__track {
	display: block;
}

.csw-slider--fade .csw-slide {
	position: absolute;
	inset: 0;
	opacity: 0;
	transition-property: opacity;
	transition-timing-function: ease-in-out;
}

.csw-slider--fade .csw-slide--active {
	opacity: 1;
	position: relative; /* ensures it takes up space */
}

/* --- Image --- */
.csw-slide__media {
	position: absolute;
	inset: 0;
}

.csw-slide__img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover; /* fallback, overridden by Elementor selector */
}

/* --- Overlay / Content (Background Layout) --- */
.csw-slide__overlay {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: flex-end;
	justify-content: flex-start;
	padding: 2rem;
	background: rgba(0, 0, 0, 0.4); /* fallback, overridden via control */
}

.csw-slide__content {
	max-width: 600px;
}

.csw-slide__title {
	margin: 0 0 0.5rem 0;
	font-size: 1.75rem;
	line-height: 1.125 !important;
	color: #fff;
}

.csw-slide__text {
	margin: 0 0 1rem 0;
	font-size: 1rem;
	line-height: 1.5;
	color: #fff;
}

/* WYSIWYG-Inhalt innerhalb der Beschreibung */
.csw-slide__text p {
	margin: 0 0 0.75em 0;
}

.csw-slide__text p:last-child {
	margin-bottom: 0;
}

.csw-slide__text ul,
.csw-slide__text ol {
	margin: 0 0 0.75em 1.25em;
	padding: 0;
}

.csw-slide__link {
	display: inline-block;
	padding: 0.5rem 1.25rem;
	margin-top: 20px;
	border: 2px solid #fff;
	border-radius: 4px;
	color: #fff;
	text-decoration: none;
	font-size: 0.875rem;
	transition: box-shadow 0.3s ease-in-out;
}

.csw-slide__link:hover,
.csw-slide__link:focus-visible {
	background: #fff;
	color: #000;
	box-shadow: 3px 3px 11px #888;
}

/* Wrapper: steuert Ausrichtung des Buttons (flex-start/center/flex-end via Elementor) */
.csw-slide__link-wrap {
	display: flex;
	justify-content: flex-start; /* default, overridden by Elementor selector */
}

/* Text-Breite: Button nimmt nur so viel Platz wie nötig */
.csw-slide__link {
	align-self: flex-start;
}

.csw-slide__link--full {
	display: block;
	width: 100%;
	text-align: center;
	box-sizing: border-box;
	align-self: stretch;
}

/* ==========================================================
 * Split Layouts: image-left / image-right
 * ========================================================== */

/* The slide becomes a flex row */
.csw-slide--split {
	display: flex;
	flex-direction: row;
}

/* Reverse order — either via wrapper (non-alternating) or per-slide (alternating) */
.csw-slider--image-right .csw-slide--split,
.csw-slide--split.csw-slide--image-right {
	flex-direction: row-reverse;
}

/* Explicit left direction (needed when alternating overrides a right-wrapper) */
.csw-slide--split.csw-slide--image-left {
	flex-direction: row;
}

/* Image column in split mode */
.csw-slide--split .csw-slide__media {
	position: relative; /* override absolute from background layout */
	flex: 0 0 50%;       /* fallback – overridden by Elementor selector */
	max-width: 50%;
	height: 100%;
}

.csw-slide--split .csw-slide__img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Text column in split mode */
.csw-slide--split .csw-slide__body {
	flex: 0 0 50%;       /* fallback – overridden by Elementor selector */
	max-width: 50%;
	display: flex;
	flex-direction: column;
	justify-content: center; /* fallback – overridden by control */
	padding: 2em 0;          /* kein horizontales Padding per default */
	background: #f5f5f5;    /* fallback – overridden by control */
	overflow-y: auto;
}

.csw-slide--split .csw-slide__title {
	color: #222;
}

.csw-slide--split .csw-slide__text {
	color: #444;
}

.csw-slide--split .csw-slide__link {
	border-color: currentColor;
	color: #222;
}

.csw-slide--split .csw-slide__link:hover,
.csw-slide--split .csw-slide__link:focus-visible {
	background: #222;
	color: #fff;
}

/* --- Arrows --- */
button.csw-slider__arrow {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	z-index: 2;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 56px;
	height: 56px;
	padding: 0;
	border: 1px solid var(--e-global-color-primary);
	border-radius: 50% !important;
	background: rgba(255,255,255,0.5);
	color: #333333;
	cursor: pointer;
	transition: background 0.25s;
}

button.csw-slider__arrow:hover,
button.csw-slider__arrow:focus-visible {
	background: #eeeeee;
}

.csw-slider__arrow--prev {
	left: clamp(0.25rem, 1vw, 0.75rem);
}

.csw-slider__arrow--next {
	right: clamp(0.25rem, 1vw, 0.75rem);
}

/* Pfeile außerhalb – nur Desktop */
@media (min-width: 768px) {
	.csw-slider--arrows-outside .csw-slider__arrow--prev {
		left: 0;
		transform: translateY(-50%) translateX(-100%);
	}
	.csw-slider--arrows-outside .csw-slider__arrow--next {
		right: 0;
		transform: translateY(-50%) translateX(100%);
	}
}

/* --- Dots --- */
.csw-slider__dots {
	position: absolute;
	bottom: -2.5rem;
	left: 50%;
	transform: translateX(-50%);
	z-index: 2;
	display: flex;
	gap: 0.5rem;
}

.csw-slider__dot {
	width: 12px;
	height: 12px;
	border-style: solid;
	border-color: var(--e-global-color-primary);
	border-width: 1px !important;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.5);
	cursor: pointer;
	padding: 0;
	transition: background 0.25s, transform 0.25s;
}

.csw-slider__dot:hover,
.csw-slider__dot:focus-visible {
	transform: scale(1.25);
}

.csw-slider__dot--active {
	background: #fff;
}

/* --- Reduced Motion --- */
@media (prefers-reduced-motion: reduce) {
	.csw-slider__track,
	.csw-slider--fade .csw-slide {
		transition-duration: 0s !important;
	}
}

/* --- Responsive: Mobil (max 767px) --- */
@media (max-width: 767px) {

	/* Split-Layout: Höhe auto damit Content nicht abgeschnitten wird */
	.csw-slider--split,
	.csw-slider--split .csw-slider__viewport,
	.csw-slider--split .csw-slider__track,
	.csw-slider--split .csw-slide--split {
		height: auto !important;
	}

	.csw-slide--split {
		flex-direction: column !important;
	}

	.csw-slide--split .csw-slide__media {
		flex: none !important;
		max-width: 100% !important;
		width: 100%;
		height: 220px;
	}

	.csw-slide--split .csw-slide__body {
		flex: none !important;
		max-width: 100% !important;
		width: 100%;
		height: auto !important;
		padding: 1.25em 0;
	}

	/* Dots: unterhalb des Inhalts im Split-Layout */
	.csw-slider--split .csw-slider__dots {
		position: relative;
		bottom: auto;
		left: auto;
		transform: none;
		justify-content: center;
		padding: 0.75rem 0 0;
	}

	/* Pfeile: kleiner, halb außerhalb des Viewports */
	.csw-slider__arrow {
		width: 36px;
		height: 36px;
	}

	.csw-slider__arrow--prev {
		left: -30px;
	}

	.csw-slider__arrow--next {
		right: -30px;
	}
}
