/* =====================================================================
   CARRUSEL PREMIUM NUMEROLOGÍA — assets/css/carousel.css
   Paleta:
   --ncp-rose:   #EEAAE9
   --ncp-purple: #8c6ac9
   --ncp-black:  #000000
   --ncp-mauve:  #8A71C2
   --ncp-bg:     #FFFCFF
   --ncp-bg-alt: #C9BFE2
   ===================================================================== */

.ncp-carousel {
	--ncp-rose: #EEAAE9;
	--ncp-purple: #8c6ac9;
	--ncp-black: #000000;
	--ncp-mauve: #8A71C2;
	--ncp-bg: #FFFCFF;
	--ncp-bg-alt: #C9BFE2;
	--ncp-radius: 18px;

	position: relative;
	width: 100%;
	max-width: 100%;
	margin: 0 auto 10px auto;
	overflow: hidden;
	border-radius: var(--ncp-radius);
	background: linear-gradient(135deg, var(--ncp-bg-alt) 0%, var(--ncp-bg) 100%);
	box-shadow: 0 10px 40px rgba(140, 106, 201, 0.25), 0 0 0 1px rgba(138, 113, 194, 0.15);
	font-family: 'Roboto', Arial, sans-serif;
	outline: none;
	isolation: isolate;
}

.ncp-carousel:focus-visible {
	box-shadow: 0 0 0 3px var(--ncp-purple), 0 10px 40px rgba(140, 106, 201, 0.25);
}

/* Marco decorativo dorado-místico sutil */
.ncp-carousel::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: var(--ncp-radius);
	border: 1px solid rgba(238, 170, 233, 0.35);
	pointer-events: none;
	z-index: 5;
}

/* -------------------- RESET FIGURE/FIGCAPTION (marcado semántico) -------------------- */
.ncp-slide {
	margin: 0;
}

/* Texto visualmente oculto pero 100% legible por buscadores y motores de IA (GEO) */
.ncp-carousel .screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

/* -------------------- TRACK / SLIDES -------------------- */
.ncp-track {
	display: flex;
	width: 100%;
	height: 100% !important;
	will-change: transform;
}

.ncp-transition-slide .ncp-track {
	transition: transform 0.7s cubic-bezier(0.65, 0, 0.35, 1);
}

.ncp-transition-fade .ncp-track {
	transition: none;
}

.ncp-slide {
	position: relative;
	flex: 0 0 100%;
	width: 100%;
	height: 100% !important;
	max-width: 100%;
	overflow: hidden;
}

.ncp-transition-fade .ncp-slide {
	position: absolute;
	inset: 0;
	opacity: 0;
	transition: opacity 0.9s ease-in-out;
	z-index: 1;
}

.ncp-transition-fade .ncp-slide.is-active {
	opacity: 1;
	position: relative;
	z-index: 2;
}

.ncp-slide-link {
	display: block !important;
	width: 100% !important;
	height: 100% !important;
	text-decoration: none;
	outline: none;
}

.ncp-slide-img {
	display: block !important;
	width: 100% !important;
	height: 100% !important;
	max-width: 100% !important;
	min-width: 100%;
	min-height: 100%;
	object-fit: cover !important;
	object-position: center;
	transform: scale(1);
	transition: transform 6.5s ease-out;
	user-select: none;
}

/* Efecto "Ken Burns" sutil en la diapositiva activa: zoom lento premium */
.ncp-slide.is-active .ncp-slide-img {
	transform: scale(1.07);
}

/* -------------------- ALTURAS RESPONSIVE --------------------
   Altura fija mediante clamp() en lugar de aspect-ratio en
   elementos flex anidados: este método es mucho más estable en
   móviles y dentro del editor de Elementor, evitando los huecos
   en blanco que aparecen cuando aspect-ratio se combina con
   flexbox en varios niveles a la vez. */
.ncp-carousel {
	height: clamp(280px, 42vw, 560px);
}

@media (max-width: 1024px) {
	.ncp-carousel {
		height: clamp(240px, 46vw, 440px);
	}
}

@media (max-width: 768px) {
	.ncp-carousel {
		height: clamp(220px, 58vw, 380px);
	}
}

@media (max-width: 480px) {
	.ncp-carousel {
		height: clamp(190px, 62vw, 320px);
		border-radius: 12px;
	}
}

/* -------------------- CAPTION (opcional) -------------------- */
.ncp-slide-caption {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	padding: 28px 24px 22px;
	background: linear-gradient(to top, rgba(0, 0, 0, 0.55) 0%, rgba(0, 0, 0, 0) 100%);
	color: #fff;
	font-family: 'Roboto', sans-serif;
	font-weight: 500;
	font-size: clamp(18px, 1.8vw, 22px);
	line-height: 1.4;
	letter-spacing: 0.2px;
	z-index: 3;
}

/* -------------------- FLECHAS (solo el ícono, sin caja) -------------------- */
.ncp-arrow {
	position: absolute !important;
	top: 50%;
	transform: translateY(-50%);
	width: clamp(18px, 2.4vw, 24px) !important;
	height: clamp(18px, 2.4vw, 24px) !important;
	min-width: 0 !important;
	min-height: 0 !important;
	margin: 0 !important;
	border-radius: 0 !important;
	border: 0 !important;
	background: transparent !important;
	background-image: none !important;
	box-shadow: none !important;
	appearance: none !important;
	-webkit-appearance: none !important;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 0 !important;
	color: var(--ncp-purple);
	filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.3));
	z-index: 10;
	transition: transform 0.25s ease, opacity 0.25s ease, color 0.25s ease;
	opacity: 0.55;
}

.ncp-arrow svg {
	width: 100%;
	height: 100%;
	display: block;
}

.ncp-carousel:hover .ncp-arrow {
	opacity: 0.75;
}

.ncp-arrow:hover,
.ncp-arrow:focus-visible {
	transform: translateY(-50%) scale(1.15);
	color: var(--ncp-rose);
	opacity: 1;
	outline: none;
	background: transparent !important;
	box-shadow: none !important;
}

.ncp-arrow-prev {
	left: 8px;
}

.ncp-arrow-next {
	right: 8px;
}

@media (max-width: 768px) {
	.ncp-arrow {
		width: 15px !important;
		height: 15px !important;
		opacity: 0.5;
	}
	.ncp-arrow-prev {
		left: 6px;
	}
	.ncp-arrow-next {
		right: 6px;
	}
}

@media (max-width: 480px) {
	.ncp-arrow {
		width: 13px !important;
		height: 13px !important;
	}
}

/* En dispositivos táctiles no hay estado :hover fiable, así que se
   mantienen algo más visibles para no perder usabilidad */
@media (hover: none) {
	.ncp-arrow {
		opacity: 0.6;
		color: #fff;
		filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.5));
	}
}

/* -------------------- INDICADORES: "." (círculos) y "_" (rayas) planos -------------------- */
.ncp-indicators {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 8px;
	display: flex;
	justify-content: center;
	align-items: center;
	gap: 5px;
	z-index: 10;
}

.ncp-dot {
	border: 0 !important;
	border-radius: 50%;
	background-image: none !important;
	box-shadow: none !important;
	appearance: none !important;
	-webkit-appearance: none !important;
	min-width: 0 !important;
	min-height: 0 !important;
	margin: 0 !important;
	cursor: pointer;
	padding: 0 !important;
	transition: all 0.35s ease;
	opacity: 0.6;
	background-color: rgba(0, 0, 0, 0.35);
}

.ncp-dot:hover {
	opacity: 1;
}

/* Estilo "." — punto */
.ncp-indicator-circles .ncp-dot {
	width: 5px !important;
	height: 5px !important;
	border-radius: 50% !important;
}

.ncp-indicator-circles .ncp-dot.is-active {
	background-color: var(--ncp-purple) !important;
	opacity: 1;
}

/* Estilo "_" — raya */
.ncp-indicator-lines .ncp-dot {
	width: 13px !important;
	height: 2px !important;
	border-radius: 0 !important;
}

.ncp-indicator-lines .ncp-dot.is-active {
	background-color: var(--ncp-purple) !important;
	opacity: 1;
}

@media (max-width: 768px) {
	.ncp-indicators {
		bottom: 6px;
		gap: 4px;
	}
	.ncp-indicator-lines .ncp-dot {
		width: 11px !important;
		height: 1.5px !important;
	}
	.ncp-indicator-circles .ncp-dot {
		width: 4px !important;
		height: 4px !important;
	}
}

@media (max-width: 480px) {
	.ncp-indicators {
		bottom: 5px;
		gap: 3px;
	}
	.ncp-indicator-lines .ncp-dot {
		width: 9px !important;
		height: 1.5px !important;
	}
	.ncp-indicator-circles .ncp-dot {
		width: 3.5px !important;
		height: 3.5px !important;
	}
}

/* -------------------- REFUERZO ANTI-CONFLICTOS DE TEMA --------------------
   Bloque de mayor especificidad (usa el contenedor padre) para
   garantizar que ningún estilo global de tema (button{...}) pueda
   volver a añadir fondo, borde o padding a flechas e indicadores. */
.ncp-carousel .ncp-arrow,
.ncp-carousel .ncp-arrow:hover,
.ncp-carousel .ncp-arrow:focus {
	background: transparent !important;
	background-color: transparent !important;
	background-image: none !important;
	border: 0 !important;
	box-shadow: none !important;
	padding: 0 !important;
	border-radius: 0 !important;
}

.ncp-carousel .ncp-dot,
.ncp-carousel .ncp-dot:hover,
.ncp-carousel .ncp-dot:focus {
	border: 0 !important;
	box-shadow: none !important;
	padding: 0 !important;
}

/* -------------------- EFECTO NUMEROLÓGICO DE FONDO -------------------- */
.ncp-numero-fx {
	position: absolute;
	inset: 0;
	pointer-events: none;
	overflow: hidden;
	z-index: 4;
	mix-blend-mode: screen;
}

.ncp-numero-fx span {
	position: absolute;
	bottom: -10%;
	font-family: 'Roboto', sans-serif;
	font-weight: 700;
	color: rgba(255, 255, 255, 0.55);
	text-shadow: 0 0 8px rgba(238, 170, 233, 0.9), 0 0 16px rgba(140, 106, 201, 0.6);
	opacity: 0;
	animation-name: ncp-float-up;
	animation-timing-function: ease-in;
	animation-iteration-count: infinite;
	user-select: none;
}

@keyframes ncp-float-up {
	0% {
		transform: translateY(0) rotate(0deg) scale(0.8);
		opacity: 0;
	}
	12% {
		opacity: 0.7;
	}
	85% {
		opacity: 0.35;
	}
	100% {
		transform: translateY(-260px) rotate(25deg) scale(1.1);
		opacity: 0;
	}
}

/* -------------------- ESTADOS DE CARGA / ACCESIBILIDAD -------------------- */
.ncp-carousel.ncp-paused .ncp-track {
	transition-duration: 0.5s;
}

@media (prefers-reduced-motion: reduce) {
	.ncp-track,
	.ncp-slide-img,
	.ncp-arrow,
	.ncp-dot,
	.ncp-numero-fx span {
		transition: none !important;
		animation: none !important;
	}
	.ncp-slide.is-active .ncp-slide-img {
		transform: none;
	}
}
