/**
 * Campañas Dinámicas — estilos del front.
 *
 * Todo cuelga de variables CSS para que puedas ajustar la paleta al tema sin
 * tocar los selectores. Redefine :root o .cdm-slider en el CSS de tu tema.
 */

/*
 * No se usa `prefers-color-scheme` a propósito.
 *
 * El plugin se inserta dentro de un tema que ya define el fondo de la página.
 * Si aquí se invirtiera el color del texto según la preferencia del navegador,
 * un visitante con el sistema en modo oscuro vería texto claro sobre el fondo
 * claro del tema y los títulos quedarían ilegibles. El esquema de color de la
 * página lo manda el tema: este CSS solo fija colores donde también pinta el
 * fondo, y en el resto hereda con `inherit` / `currentColor`.
 */
:root {
	/* Azul primario de Flatsome tal como está hoy en regalos-corporativos.com.
	   Si cambias el color primario del tema, cambia también este valor. */
	--cdm-acento: #446084;
	--cdm-acento-txt: #fff;
	--cdm-panel: #f6f7f9;
	--cdm-panel-txt: #16181d;
	--cdm-borde: rgba(128, 138, 158, .28);
	--cdm-radio: 14px;
	--cdm-sombra: 0 1px 2px rgba(16, 18, 24, .06), 0 8px 24px rgba(16, 18, 24, .07);
	--cdm-alto: 460px;
}

/* ---------------------------------------------------------------- Slider */

.cdm-slider {
	position: relative;
	overflow: hidden;
	border-radius: var(--cdm-radio);
	background: var(--cdm-panel);
	color: var(--cdm-panel-txt);
	min-height: var(--cdm-alto);
}

.cdm-slider__pista {
	position: relative;
	min-height: var(--cdm-alto);
}

.cdm-slide {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	opacity: 0;
	visibility: hidden;
	transition: opacity .5s ease;
}

.cdm-slide.is-activa {
	position: relative;
	opacity: 1;
	visibility: visible;
}

/*
 * Dos maquetaciones según de dónde salga la imagen:
 *
 *  --banner    Imagen propia subida para la campaña. Va a sangre completa con
 *              un degradado encima y el texto en blanco.
 *  --producto  Foto tomada del catálogo. Como son objetos recortados sobre
 *              fondo blanco, estirarlas a sangre se ve mal: van en una columna
 *              al costado, con el texto sobre el fondo del panel.
 *  --plano     Sin imagen. Solo el panel de color.
 */

.cdm-slide__fondo {
	position: absolute;
	inset: 0;
	background-size: cover;
	background-position: center;
}

.cdm-slide__fondo::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(100deg, rgba(0, 0, 0, .78) 0%, rgba(0, 0, 0, .55) 45%, rgba(0, 0, 0, .15) 100%);
}

.cdm-slide--producto.is-activa {
	display: grid;
	grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr);
	align-items: center;
	gap: 1rem;
}

.cdm-slide--producto .cdm-slide__contenido { max-width: none; }

.cdm-slide__figura {
	align-self: stretch;
	display: flex;
	align-items: center;
	justify-content: center;
	/* 4.6rem a la derecha para que la flecha "siguiente" no caiga sobre la foto. */
	padding: 1.5rem 4.6rem 1.5rem 0;
	min-width: 0;
}

.cdm-slide__figura img {
	max-width: 100%;
	max-height: calc(var(--cdm-alto) - 3rem);
	width: auto;
	height: auto;
	object-fit: contain;
	border-radius: calc(var(--cdm-radio) - 4px);
	mix-blend-mode: multiply;
}

@media (max-width: 782px) {
	.cdm-slide--producto.is-activa { grid-template-columns: 1fr; }
	.cdm-slide__figura { display: none; }
}

.cdm-slide__contenido {
	position: relative;
	z-index: 1;
	max-width: 46rem;
	/* El mínimo de 4.6rem evita que las flechas laterales tapen la bajada. */
	padding: clamp(1.75rem, 5vw, 4rem) max(clamp(1.75rem, 5vw, 4rem), 4.6rem);
	color: inherit;
}

.cdm-slide__fondo ~ .cdm-slide__contenido {
	color: #fff;
}

.cdm-slide__subtitulo {
	margin: 0 0 .6rem;
	font-size: .8rem;
	font-weight: 700;
	letter-spacing: .1em;
	text-transform: uppercase;
	opacity: .85;
}

.cdm-slide__titulo {
	margin: 0 0 .9rem;
	font-size: clamp(1.65rem, 4.2vw, 3rem);
	line-height: 1.1;
	font-weight: 800;
	letter-spacing: -.02em;
}

.cdm-slide__bajada {
	margin: 0 0 1.6rem;
	font-size: clamp(.98rem, 1.5vw, 1.14rem);
	line-height: 1.6;
	max-width: 40rem;
	opacity: .92;
}

.cdm-slide__pie {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 1rem;
}

.cdm-slide__cta {
	display: inline-block;
	padding: .85rem 1.6rem;
	border-radius: 999px;
	background: var(--cdm-acento);
	color: var(--cdm-acento-txt) !important;
	font-weight: 700;
	text-decoration: none;
	transition: transform .15s ease, filter .15s ease;
}

.cdm-slide__cta:hover {
	transform: translateY(-1px);
	filter: brightness(1.08);
}

.cdm-slide__dias {
	font-size: .88rem;
	font-weight: 600;
	padding: .4rem .8rem;
	border-radius: 999px;
	border: 1px solid currentColor;
	opacity: .8;
}

/* Flechas y puntos */

.cdm-slider__flecha {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	z-index: 2;
	width: 44px;
	height: 44px;
	border: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, .9);
	color: #16181d;
	font-size: 1.6rem;
	line-height: 1;
	cursor: pointer;
	box-shadow: var(--cdm-sombra);
}

.cdm-slider__flecha--prev { left: 14px; }
.cdm-slider__flecha--next { right: 14px; }
.cdm-slider__flecha:hover { background: #fff; }

.cdm-slider__puntos {
	position: absolute;
	bottom: 18px;
	left: 50%;
	transform: translateX(-50%);
	z-index: 2;
	display: flex;
	gap: .5rem;
}

/*
 * Los puntos flotan sobre el slide activo, que puede ser un panel claro o una
 * foto oscura. Por eso no usan blanco ni el color del texto: llevan un relleno
 * neutro y un aro claro que los despega de cualquiera de los dos fondos.
 */
.cdm-slider__punto {
	width: 10px;
	height: 10px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgba(110, 120, 140, .55);
	box-shadow: 0 0 0 1px rgba(255, 255, 255, .6);
	cursor: pointer;
	transition: width .2s ease, background .2s ease;
}

.cdm-slider__punto.is-activo {
	width: 26px;
	border-radius: 999px;
	background: var(--cdm-acento);
	box-shadow: 0 0 0 1px rgba(255, 255, 255, .8);
}

/* ------------------------------------------------------------- Productos */

.cdm-productos { margin: 2.5rem 0; }

.cdm-productos__cabecera {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 1rem;
	margin-bottom: 1.25rem;
	flex-wrap: wrap;
}

.cdm-productos__titulo {
	margin: 0;
	font-size: clamp(1.2rem, 2.4vw, 1.7rem);
	font-weight: 800;
	letter-spacing: -.01em;
	color: inherit;
}

.cdm-productos__vertodo {
	font-weight: 600;
	color: var(--cdm-acento);
	text-decoration: none;
	white-space: nowrap;
}

.cdm-productos__vertodo:hover { text-decoration: underline; }

.cdm-grid {
	display: grid;
	grid-template-columns: repeat(var(--cdm-columnas, 4), minmax(0, 1fr));
	gap: 1.25rem;
}

@media (max-width: 1024px) { .cdm-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 768px)  { .cdm-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 420px)  { .cdm-grid { grid-template-columns: 1fr; } }

.cdm-card {
	display: flex;
	flex-direction: column;
	border: 1px solid var(--cdm-borde);
	border-radius: var(--cdm-radio);
	overflow: hidden;
	background: var(--cdm-panel);
	color: var(--cdm-panel-txt);
	transition: transform .15s ease, box-shadow .15s ease;
}

.cdm-card:hover {
	transform: translateY(-2px);
	box-shadow: var(--cdm-sombra);
}

.cdm-card__enlace {
	text-decoration: none;
	color: inherit;
	display: flex;
	flex-direction: column;
	flex: 1;
}

.cdm-card__figura {
	aspect-ratio: 1 / 1;
	overflow: hidden;
	background: #fff;
}

.cdm-card__figura img {
	width: 100%;
	height: 100%;
	object-fit: contain;
	display: block;
}

.cdm-card__sinfoto {
	display: block;
	width: 100%;
	height: 100%;
	background: repeating-linear-gradient(45deg, var(--cdm-borde) 0 8px, transparent 8px 16px);
}

.cdm-card__titulo {
	margin: 0;
	padding: .85rem .9rem .35rem;
	font-size: .95rem;
	line-height: 1.35;
	font-weight: 600;
	color: inherit;
	flex: 1;
}

.cdm-card__precio {
	padding: 0 .9rem .95rem;
	font-weight: 700;
	color: var(--cdm-acento);
}

.cdm-card__precio del { opacity: .5; font-weight: 400; margin-right: .35rem; }

/* Tabla */

.cdm-tabla-scroll { overflow-x: auto; }

.cdm-tabla {
	width: 100%;
	border-collapse: collapse;
	font-size: .95rem;
	color: inherit;
}

.cdm-tabla th,
.cdm-tabla td {
	padding: .75rem .8rem;
	border-bottom: 1px solid var(--cdm-borde);
	text-align: left;
	vertical-align: middle;
}

.cdm-tabla thead th {
	font-size: .78rem;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: currentColor;
	opacity: .62;
}

.cdm-tabla__nombre a {
	display: flex;
	align-items: center;
	gap: .7rem;
	text-decoration: none;
	color: inherit;
	font-weight: 600;
}

.cdm-tabla__miniatura { border-radius: 8px; flex-shrink: 0; }
.cdm-tabla__precio { font-weight: 700; color: var(--cdm-acento); white-space: nowrap; }

.cdm-tabla__boton {
	display: inline-block;
	padding: .35rem .85rem;
	border-radius: 999px;
	border: 1px solid var(--cdm-borde);
	text-decoration: none;
	color: inherit;
	font-size: .85rem;
	font-weight: 600;
	white-space: nowrap;
}

.cdm-tabla__boton:hover { border-color: var(--cdm-acento); color: var(--cdm-acento); }

/* --------------------------------------------------------- Cuenta y aviso */

.cdm-cuenta {
	display: inline-flex;
	align-items: center;
	gap: .7rem;
	padding: .7rem 1.1rem;
	border-radius: 999px;
	background: var(--cdm-panel);
	border: 1px solid var(--cdm-borde);
	color: var(--cdm-panel-txt);
}

.cdm-cuenta__numero {
	font-size: 1.7rem;
	font-weight: 800;
	line-height: 1;
	color: var(--cdm-acento);
}

.cdm-cuenta__etiqueta { font-size: .95rem; }
.cdm-cuenta__nota { font-size: .82rem; opacity: .7; border-left: 1px solid var(--cdm-borde); padding-left: .7rem; }

.cdm-aviso {
	padding: .85rem 1rem;
	border-left: 4px solid #d63638;
	background: #fcf0f1;
	color: #6b1113;
	border-radius: 4px;
	font-size: .9rem;
}

/* Accesibilidad */

.screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
	white-space: nowrap;
}

@media (prefers-reduced-motion: reduce) {
	.cdm-slide,
	.cdm-card,
	.cdm-slide__cta {
		transition: none;
	}
}

/* ------------------------------------------------- Bloque de posicionamiento */

.cdm-seo { margin: 2rem 0; }

.cdm-seo__titulo {
	margin: 0 0 .6rem;
	color: inherit;
}

.cdm-seo__texto {
	margin: 0;
	line-height: 1.65;
	color: inherit;
}
