/* =========================================================
   Apple Style Carousel - estilos front-end
   ========================================================= */

.asc-carousel {
	position: relative;
	width: 100%;
	/* Valores por defecto: Elementor los sobreescribe con sus controles */
	--asc-slide-width: 85%;
	--asc-gap: 20px;
}

/* Riel scrolleable */
.asc-track {
	display: flex;
	align-items: stretch;
	overflow-x: auto;
	overflow-y: hidden;
	scroll-snap-type: x mandatory;
	-webkit-overflow-scrolling: touch;
	scroll-behavior: smooth;
	gap: var(--asc-gap, 20px);
	cursor: grab;
	scrollbar-width: none;
	-ms-overflow-style: none;
	padding: 4px 0 8px;
}

.asc-track::-webkit-scrollbar {
	display: none;
	height: 0;
}

/*
 * Espaciadores laterales: permiten que la PRIMERA y la ÚLTIMA diapositiva
 * también puedan quedar centradas en el riel. Su ancho es exactamente
 * el espacio sobrante a cada lado de una diapositiva centrada.
 */
.asc-track::before,
.asc-track::after {
	content: '';
	flex: 0 0 auto;
	width: max(0px, calc((100% - var(--asc-slide-width, 85%)) / 2 - var(--asc-gap, 20px)));
	align-self: stretch;
}

.asc-track.is-dragging {
	cursor: grabbing;
	scroll-behavior: auto;
	scroll-snap-type: none;
	user-select: none;
}

/* Cada contenedor / diapositiva */
.asc-slide {
	position: relative;
	flex: 0 0 auto;
	display: flex;
	flex-direction: column;
	/* Centrado: el punto de anclaje es el centro de la diapositiva */
	scroll-snap-align: center;
	scroll-snap-stop: always;
	background-color: #f5f5f7;
	border-radius: 24px;
	overflow: hidden;
	width: var(--asc-slide-width, 85%);
}

.asc-slide-media {
	width: 100%;
	height: 420px;
	flex: 0 0 auto;
	overflow: hidden;
	order: 0; /* la imagen siempre queda "en medio"; el texto se ordena antes o después ajustando su propio order (ver .asc-slide-content) */
}

.asc-slide-media-bg {
	background-repeat: no-repeat;
	background-size: cover;
	background-position: center center;
}

.asc-slide-media img,
.asc-slide-media video {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	pointer-events: none;
}

.asc-slide-html {
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 20px;
	height: auto;
}

/* Bloque de texto (título / descripción / botón) */
.asc-slide-content {
	display: flex;
	flex-direction: column;
	gap: 12px;
	padding: 32px 28px;
	/*
	 * Valor por defecto ("arriba"): el control 'slide_content_position' de
	 * Elementor sobreescribe esto (incluso de forma distinta por
	 * dispositivo) con 'order: calc(valor*2 - 1)'; esto es sólo el
	 * respaldo mientras esa regla generada no esté presente.
	 */
	order: -1;
}

.asc-align-left {
	align-items: flex-start;
	text-align: left;
}

.asc-align-center {
	align-items: center;
	text-align: center;
}

.asc-align-right {
	align-items: flex-end;
	text-align: right;
}

.asc-slide-title {
	font-size: 28px;
	line-height: 1.2;
	font-weight: 700;
	color: #1d1d1f;
	margin: 0;
}

.asc-slide-desc {
	font-size: 17px;
	line-height: 1.45;
	color: #6e6e73;
	margin: 15px 0;
}

.asc-slide-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	padding: 10px 22px;
	border-radius: 999px;
	background: #1d1d1f;
	color: #fff;
	text-decoration: none;
	font-weight: 600;
	font-size: 15px;
	transition: background-color 0.25s ease, color 0.25s ease, transform 0.15s ease;
}

.asc-btn-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	line-height: 0;
}

.asc-btn-icon svg {
	width: 16px;
	height: 16px;
	fill: currentColor;
}

.asc-slide-btn:hover {
	background: #434344;
	transform: translateY(-1px);
}

/* =========================================================
   Modo "texto superpuesto sobre la imagen"
   ========================================================= */

.asc-slide.asc-overlay {
	min-height: 480px;
}

.asc-slide.asc-overlay .asc-slide-media {
	position: absolute;
	inset: 0;
	height: 100% !important;
	z-index: 1;
}

.asc-slide.asc-overlay .asc-slide-content {
	position: absolute;
	left: 0;
	right: 0;
	top: 0; /* respaldo estático; el control responsivo lo sobreescribe */
	z-index: 2;
	--asc-scrim-start: rgba(0, 0, 0, 0.85);
	--asc-scrim-mid: rgba(0, 0, 0, 0.4);
	--asc-scrim-end: rgba(0, 0, 0, 0);
	--asc-scrim-angle: 180deg;
	--asc-scrim-opacity: 1;
}

/*
 * El degradado se pinta en un ::before independiente del contenido para
 * poder controlar su opacidad sin afectar la legibilidad del texto que
 * va encima (que siempre queda a opacidad completa).
 */
.asc-slide-content.asc-has-scrim {
	position: absolute; /* ya lo es en overlay, se refuerza por claridad */
}

.asc-slide-content.asc-has-scrim::before {
	content: '';
	position: absolute;
	inset: 0;
	z-index: -1;
	pointer-events: none;
	opacity: var(--asc-scrim-opacity, 1);
	background: linear-gradient(
		var(--asc-scrim-angle, 180deg),
		var(--asc-scrim-start, rgba(0, 0, 0, 0.85)) 0%,
		var(--asc-scrim-mid, rgba(0, 0, 0, 0.4)) 50%,
		var(--asc-scrim-end, rgba(0, 0, 0, 0)) 100%
	);
}

/* =========================================================
   Controles: puntos de navegación + botón de reproducción
   ========================================================= */

.asc-controls {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 16px;
	margin-top: 28px;
}

.asc-dots {
	display: flex;
	align-items: center;
	gap: 6px;
	background: rgba(0, 0, 0, 0.05);
	border-radius: 999px;
	padding: 7px 29px;
	height:56px;
}

.asc-dot {
	position: relative;
	width: 8px;
	height: 8px;
	border-radius: 999px;
	border: none;
	background: rgba(0, 0, 0, 0.2);
	padding: 0;
	margin: 0;
	cursor: pointer;
	overflow: hidden;
	flex: 0 0 auto;
	transition: width 0.4s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.3s ease;
}

.asc-dot.is-active {
	width: 32px;
	background: rgba(0, 0, 0, 0.15);
}

.asc-dot-fill {
	position: absolute;
	top: 0;
	left: 0;
	bottom: 0;
	width: 0%;
	background: #1d1d1f;
	border-radius: inherit;
	pointer-events: none;
}

.asc-play-btn {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	border-radius: 50%;
	border: none;
	background: rgba(0, 0, 0, 0.05);
	cursor: pointer;
	flex: 0 0 auto;
	transition: background-color 0.25s ease;
	padding: 0;
}

.asc-play-btn:hover {
	background: rgba(0, 0, 0, 0.1);
}

.asc-icon-play {
	width: 0;
	height: 0;
	border-style: solid;
	border-width: 6px 0 6px 10px;
	border-color: transparent transparent transparent #1d1d1f;
	margin-left: 3px;
	display: block;
	transition: border-left-color 0.25s ease;
}

.asc-icon-pause {
	position: relative;
	width: 10px;
	height: 12px;
	display: none;
}

.asc-icon-pause::before,
.asc-icon-pause::after {
	content: '';
	position: absolute;
	top: 0;
	width: 3px;
	height: 12px;
	background: #1d1d1f;
	border-radius: 1px;
	transition: background-color 0.25s ease;
}

.asc-icon-pause::before {
	left: 0;
}

.asc-icon-pause::after {
	right: 0;
}

.asc-carousel.is-playing .asc-icon-play {
	display: none;
}

.asc-carousel.is-playing .asc-icon-pause {
	display: block;
}

/* =========================================================
   Responsive por defecto (Elementor puede sobreescribir
   estos valores mediante sus controles responsive)
   ========================================================= */

@media (max-width: 1024px) {
	.asc-slide-media {
		height: 340px;
	}

	.asc-slide-title {
		font-size: 24px;
	}
}

@media (max-width: 767px) {
	.asc-carousel {
		--asc-gap: 14px;
		--asc-slide-width: 88%;
	}

	.asc-slide {
		border-radius: 18px;
	}

	.asc-slide-media {
		height: 260px;
	}

	.asc-slide-content {
		padding: 22px 20px;
		gap: 8px;
	}

	.asc-slide-title {
		font-size: 21px;
	}

	.asc-slide-desc {
		font-size: 15px;
	}
}

/* Accesibilidad: respetar preferencia de movimiento reducido */
@media (prefers-reduced-motion: reduce) {
	.asc-track {
		scroll-behavior: auto;
	}

	.asc-dot {
		transition: none;
	}
}
