/**
 * Codingharz Elementor Kit – Testimonial-Slider (Styles)
 *
 * @author   Codingharz (https://codingharz.de)
 * @version  1.0.0
 * @since    1.0.0
 *
 * Farben und Maße kommen als CSS-Variablen aus den Elementor-Style-Controls
 * (pro Widget-Instanz gesetzt); die Werte hier sind nur Fallbacks. Das
 * Zentrieren der aktiven Karte erledigt das JavaScript per translateX.
 */

/* ==========================================================================
   #TESTIMONIAL-SLIDER
   ========================================================================== */

.cdh-ts {
	--cdh-ts-cpv: 1.4;
	--cdh-ts-gap: 10px;
	--cdh-ts-card-bg: #ffffff;
	--cdh-ts-card-radius: 16px;
	--cdh-ts-inactive-op: 45;
	--cdh-ts-inactive-scale: 93;
	--cdh-ts-star-color: #688b23;
	--cdh-ts-star-empty: #d8d3c6;
	--cdh-ts-star-size: 16px;
	--cdh-ts-quote-color: #2b2b2b;
	--cdh-ts-name-color: #1a1a1a;
	--cdh-ts-role-color: #757575;
	--cdh-ts-avatar-bg: #253417;
	--cdh-ts-avatar-color: #ffffff;
	--cdh-ts-avatar-size: 40px;
	--cdh-ts-dot-color: #c5bfb0;
	--cdh-ts-dot-active: #688b23;
	--cdh-ts-dot-hover: #688b23;
	--cdh-ts-dot-size: 8px;
	--cdh-ts-nav-gap: 4px;
	--cdh-ts-anim: 0.6s;
}

.cdh-ts__viewport {
	position: relative;
	overflow-x: hidden;
	overflow-y: visible;
	padding: 12px 0;
}

/* Anfassen und schieben: Greif-Cursor am Desktop, und auf Touch bleibt das
   senkrechte Scrollen der Seite erhalten (nur das Ziehen nach links/rechts
   uebernimmt der Slider). */
.cdh-ts--draggable .cdh-ts__viewport {
	cursor: grab;
	touch-action: pan-y;
}

.cdh-ts--dragging .cdh-ts__viewport {
	cursor: grabbing;
}

/* Auf ziehbaren Slidern die Textmarkierung ganz abschalten – sonst wird beim
   Anfassen Text markiert statt die Karte geschoben. */
.cdh-ts--draggable {
	-webkit-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none;
}

.cdh-ts__track {
	display: flex;
	align-items: stretch;
	transition: transform var(--cdh-ts-anim) cubic-bezier(0.4, 0, 0.2, 1);
	will-change: transform;
}

.cdh-ts__card {
	/* Breite = Ansicht geteilt durch "Karten pro Ansicht", minus die seitlichen
	   Abstaende. Dadurch entspricht die Nachkommastelle direkt dem Anschnitt. */
	flex: 0 0 calc(100% / var(--cdh-ts-cpv, 1.4) - var(--cdh-ts-gap) * 2);
	box-sizing: border-box;
	margin: 8px var(--cdh-ts-gap) 16px;
	padding: 24px 20px 20px;
	background: var(--cdh-ts-card-bg);
	border-radius: var(--cdh-ts-card-radius);
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	text-align: left;
	opacity: calc(var(--cdh-ts-inactive-op) / 100);
	transform: scale(calc(var(--cdh-ts-inactive-scale) / 100));
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
	transition: transform var(--cdh-ts-anim) cubic-bezier(0.4, 0, 0.2, 1), box-shadow var(--cdh-ts-anim) ease, opacity var(--cdh-ts-anim) cubic-bezier(0.4, 0, 0.2, 1);
}

.cdh-ts__card.is-active {
	opacity: 1;
	transform: scale(1);
	box-shadow: 0 8px 24px rgba(0, 0, 0, 0.13);
}

/* Während des Loop-Sprungs (JS) werden alle Übergänge kurz abgeschaltet. */
.cdh-ts--no-anim .cdh-ts__track,
.cdh-ts--no-anim .cdh-ts__card {
	transition: none;
}

.cdh-ts__stars {
	display: flex;
	gap: 2px;
	margin-bottom: 12px;
	color: var(--cdh-ts-star-color);
}

.cdh-ts__star {
	width: var(--cdh-ts-star-size);
	height: var(--cdh-ts-star-size);
	flex-shrink: 0;
}

.cdh-ts__star--empty {
	color: var(--cdh-ts-star-empty);
}

.cdh-ts__quote {
	margin: 0 0 16px;
	font-size: 13px;
	line-height: 1.6;
	color: var(--cdh-ts-quote-color);
}

/* Der Voll-Editor liefert Absätze; deren Aussenabstände hier neutralisieren. */
.cdh-ts__quote p {
	margin: 0;
}

.cdh-ts__quote p + p {
	margin-top: 0.6em;
}

.cdh-ts__person {
	display: flex;
	align-items: center;
	gap: 10px;
	margin-top: auto; /* schiebt die Person ans Kartenende, damit alle Karten gleich wirken. */
}

.cdh-ts__avatar {
	width: var(--cdh-ts-avatar-size);
	height: var(--cdh-ts-avatar-size);
	border-radius: 50%;
	background: var(--cdh-ts-avatar-bg);
	color: var(--cdh-ts-avatar-color);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 13px;
	font-weight: 700;
	flex-shrink: 0;
}

.cdh-ts__name {
	font-size: 14px;
	font-weight: 700;
	color: var(--cdh-ts-name-color);
	margin-bottom: 2px;
}

.cdh-ts__role {
	font-size: 12px;
	color: var(--cdh-ts-role-color);
}

/* --------------------------------------------------------------------------
   Punkte-Navigation
   -------------------------------------------------------------------------- */

.cdh-ts__dots {
	display: flex;
	gap: 8px;
	justify-content: center;
	margin-top: var(--cdh-ts-nav-gap);
}

/* Reset gegen Theme-Button-Styles (min-width, Padding, Hintergrund, Hover-Farbe).
   !important, weil manche Themes Buttons mit hoher Spezifitaet stylen – nur so
   bleiben es echte runde Punkte in der gewünschten Größe und Farbe. */
.cdh-ts__dot {
	-webkit-appearance: none !important;
	appearance: none !important;
	box-sizing: border-box !important;
	flex: 0 0 auto !important;
	width: var(--cdh-ts-dot-size) !important;
	height: var(--cdh-ts-dot-size) !important;
	min-width: 0 !important;
	min-height: 0 !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 50% !important;
	background-color: var(--cdh-ts-dot-color) !important;
	background-image: none !important;
	box-shadow: none !important;
	line-height: 0 !important;
	cursor: pointer;
	transition: background-color 0.25s ease, transform 0.25s ease;
}

.cdh-ts__dot:hover {
	background-color: var(--cdh-ts-dot-hover) !important;
}

.cdh-ts__dot.is-active {
	background-color: var(--cdh-ts-dot-active) !important;
	transform: scale(1.2);
}

.cdh-ts__dot:focus-visible {
	outline: 2px solid var(--cdh-ts-dot-active);
	outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
	.cdh-ts__track,
	.cdh-ts__card {
		transition: none;
	}
}
