/**
 * Widgets de producto de ConvierteMejor.
 *
 * Todo cuelga de .cm-w y no de clases sueltas: estos bloques conviven con
 * WoodMart, que estiliza de forma agresiva botones y enlaces, y sin ese
 * ancestro cualquier regla del tema se cuela.
 */

.cm-w {
	--cm-w-marca:  #0048E6;
	--cm-w-tinta:  #1d1d1f;
	--cm-w-suave:  #6e6e73;
	--cm-w-borde:  #e8e8ed;
	--cm-w-fondo:  #f5f5f7;
	--cm-w-panel-1: #1B2A4A;
	--cm-w-panel-2: #0B1220;
	--cm-w-radio:  18px;

	color: var(--cm-w-tinta);
	font-synthesis: none;
}

.cm-w *, .cm-w *::before, .cm-w *::after { box-sizing: border-box; }

.cm-w .cm-w-vacio {
	margin: 0;
	padding: 28px;
	text-align: center;
	color: var(--cm-w-suave);
	background: var(--cm-w-fondo);
	border-radius: var(--cm-w-radio);
}

/* ---------------- Cabecera ---------------- */

.cm-w-head {
	display: flex;
	align-items: flex-start;
	gap: 24px;
	margin-bottom: 26px;
}

.cm-w-head__texto { flex: 1 1 auto; min-width: 0; }

.cm-w .cm-w-eyebrow {
	display: block;
	margin-bottom: 8px;
	color: var(--cm-w-marca);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .12em;
	text-transform: uppercase;
}

.cm-w .cm-w-eyebrow--claro { color: #8AB4FF; }

.cm-w .cm-w-titulo {
	margin: 0 0 10px;
	font-size: clamp(28px, 3.4vw, 40px);
	line-height: 1.1;
	font-weight: 800;
	letter-spacing: -.02em;
	color: var(--cm-w-tinta);
}

.cm-w .cm-w-titulo--sm { font-size: clamp(22px, 2.4vw, 28px); margin-bottom: 0; }

.cm-w .cm-w-sub {
	margin: 0;
	max-width: 52ch;
	color: var(--cm-w-suave);
	font-size: 15px;
	line-height: 1.5;
}

.cm-w a.cm-w-verlink {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 11px 22px;
	border: 1px solid var(--cm-w-borde);
	border-radius: 999px;
	color: var(--cm-w-marca);
	font-size: 14px;
	font-weight: 600;
	text-decoration: none;
	background: #fff;
	transition: border-color .18s ease, background .18s ease;
}

.cm-w a.cm-w-verlink:hover { border-color: var(--cm-w-marca); background: #f7f9ff; }
.cm-w a.cm-w-verlink--movil { display: none; }

/* ---------------- Rejilla de tarjetas ---------------- */

.cm-w-grid {
	--cm-w-cols: 5;
	display: grid;
	grid-template-columns: repeat(var(--cm-w-cols), minmax(0, 1fr));
	gap: 16px;
}

.cm-w-card {
	display: flex;
	flex-direction: column;
	padding: 14px;
	background: #fff;
	border: 1px solid var(--cm-w-borde);
	border-radius: var(--cm-w-radio);
	transition: box-shadow .2s ease, transform .2s ease;
}

.cm-w-card:hover {
	box-shadow: 0 10px 30px rgba(0, 0, 0, .08);
	transform: translateY(-2px);
}

.cm-w-card__img {
	position: relative;
	display: block;
	margin-bottom: 12px;
	padding: 12px;
	background: var(--cm-w-fondo);
	border-radius: 14px;
	line-height: 0;
	text-align: center;
}

.cm-w-card__img img {
	width: 100%;
	height: auto;
	max-height: 170px;
	object-fit: contain;
	mix-blend-mode: multiply; /* funde el fondo blanco de las fotos con el gris */
}

.cm-w .cm-w-badge {
	position: absolute;
	top: 10px;
	left: 10px;
	z-index: 2;
	padding: 4px 10px;
	border-radius: 999px;
	background: #E8EFFF;
	color: var(--cm-w-marca);
	font-size: 10.5px;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	line-height: 1.4;
}

.cm-w-swatches { display: flex; gap: 6px; margin-bottom: 10px; }

.cm-w-swatches i {
	width: 11px;
	height: 11px;
	border-radius: 50%;
	border: 1px solid rgba(0, 0, 0, .14);
}

.cm-w .cm-w-card__nombre {
	margin: 0 0 4px;
	font-size: 15px;
	line-height: 1.35;
	font-weight: 700;
}

.cm-w .cm-w-card__nombre a { color: inherit; text-decoration: none; }

.cm-w .cm-w-card__meta {
	margin: 0 0 10px;
	color: var(--cm-w-suave);
	font-size: 13px;
}

.cm-w .cm-w-card__precio {
	margin: 0 0 2px;
	font-size: 19px;
	font-weight: 800;
	letter-spacing: -.01em;
}

/* WooCommerce mete su propio marcado dentro del precio. */
.cm-w .cm-w-card__precio del { font-size: .72em; font-weight: 500; opacity: .5; margin-right: 6px; }
.cm-w .cm-w-card__precio ins { text-decoration: none; }

.cm-w .cm-w-card__cuota {
	margin: 0 0 14px;
	color: var(--cm-w-suave);
	font-size: 12.5px;
}

.cm-w-card__acciones { display: flex; gap: 8px; margin-top: auto; }

/* ---------------- Botones ---------------- */

.cm-w a.cm-w-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 11px 18px;
	border-radius: 999px;
	font-size: 14px;
	font-weight: 600;
	line-height: 1.2;
	text-decoration: none;
	border: 1px solid transparent;
	transition: filter .18s ease, background .18s ease, border-color .18s ease;
	white-space: nowrap;
}

.cm-w a.cm-w-btn--primary { flex: 1 1 auto; background: var(--cm-w-marca); color: #fff; }
.cm-w a.cm-w-btn--primary:hover { filter: brightness(1.08); color: #fff; }

.cm-w a.cm-w-btn--ghost { background: #fff; color: var(--cm-w-tinta); border-color: var(--cm-w-borde); }
.cm-w a.cm-w-btn--ghost:hover { border-color: var(--cm-w-suave); }

.cm-w a.cm-w-btn--claro { background: #fff; color: #101828; }
.cm-w a.cm-w-btn--claro:hover { filter: brightness(.94); color: #101828; }

.cm-w a.cm-w-btn--borde { background: transparent; color: #fff; border-color: rgba(255, 255, 255, .45); }
.cm-w a.cm-w-btn--borde:hover { border-color: #fff; color: #fff; }

.cm-w a.cm-w-btn--suave {
	padding: 8px 18px;
	background: #E8EFFF;
	color: var(--cm-w-marca);
	font-size: 13px;
}
.cm-w a.cm-w-btn--suave:hover { background: #d8e4ff; color: var(--cm-w-marca); }

/* El "añadido" de WooCommerce colgando del botón rompe la caja. */
.cm-w a.added_to_cart { display: none !important; }
.cm-w a.cm-w-btn.loading { opacity: .65; pointer-events: none; }

/* ---------------- Vitrina ---------------- */

.cm-w-vitrina__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	margin-bottom: 20px;
}

.cm-w-chips { display: flex; gap: 8px; flex-wrap: wrap; }

.cm-w button.cm-w-chip {
	padding: 8px 16px;
	border: 1px solid var(--cm-w-borde);
	border-radius: 999px;
	background: #fff;
	color: var(--cm-w-tinta);
	font-size: 13.5px;
	font-weight: 600;
	cursor: pointer;
	transition: border-color .18s ease, background .18s ease, color .18s ease;
}

.cm-w button.cm-w-chip:hover { border-color: var(--cm-w-suave); }

.cm-w button.cm-w-chip.is-activo {
	background: var(--cm-w-marca);
	border-color: var(--cm-w-marca);
	color: #fff;
}

.cm-w-vitrina__cuerpo {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	gap: 18px;
	align-items: start;
}

.cm-w-panel {
	position: relative;
	overflow: hidden;
	min-height: 440px;
	padding: 40px;
	border-radius: 22px;
	background: linear-gradient(150deg, var(--cm-w-panel-1) 0%, var(--cm-w-panel-2) 100%);
	color: #fff;
	display: flex;
	flex-direction: column;
}

.cm-w-panel__texto { position: relative; z-index: 2; max-width: 52%; }

.cm-w .cm-w-panel__titulo {
	margin: 0 0 14px;
	font-size: clamp(30px, 3.2vw, 42px);
	line-height: 1.06;
	font-weight: 800;
	letter-spacing: -.02em;
	color: #fff;
}

.cm-w .cm-w-panel__desc {
	margin: 0 0 22px;
	max-width: 30ch;
	color: rgba(255, 255, 255, .74);
	font-size: 14.5px;
	line-height: 1.5;
}

.cm-w .cm-w-panel__precio {
	margin: 0 0 4px;
	font-size: clamp(26px, 2.8vw, 34px);
	font-weight: 800;
	color: #fff;
	letter-spacing: -.01em;
}

.cm-w .cm-w-panel__precio del { font-size: .6em; font-weight: 500; opacity: .55; margin-right: 8px; }
.cm-w .cm-w-panel__precio ins { text-decoration: none; }

.cm-w .cm-w-panel__cuota {
	margin: 0 0 26px;
	color: #8AB4FF;
	font-size: 13.5px;
	font-weight: 500;
}

.cm-w-panel__acciones { display: flex; gap: 10px; flex-wrap: wrap; }

.cm-w-panel__img {
	position: absolute;
	right: 3%;
	bottom: 5%;
	width: 44%;
	max-width: 300px;
	/* Acotada en alto además de en ancho: la foto normal de un producto es
	   cuadrada y, sin este tope, crece hasta cruzarse con el texto. */
	max-height: 60%;
	line-height: 0;
	z-index: 1;
	pointer-events: none;
}

.cm-w-panel__img img {
	width: 100%;
	height: 100%;
	max-height: 100%;
	object-fit: contain;
	object-position: right bottom;
	filter: drop-shadow(0 24px 40px rgba(0, 0, 0, .45));
}

/* ---------------- Lista lateral ---------------- */

.cm-w-lista { display: flex; flex-direction: column; gap: 12px; }

.cm-w-fila {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 14px 16px;
	background: #fff;
	border: 1px solid var(--cm-w-borde);
	border-radius: 16px;
	transition: border-color .18s ease, box-shadow .18s ease;
}

.cm-w-fila:hover { border-color: #d6d6de; box-shadow: 0 6px 18px rgba(0, 0, 0, .05); }
.cm-w-fila[hidden] { display: none; }

.cm-w-fila__img {
	flex: 0 0 auto;
	width: 62px;
	height: 62px;
	display: flex;
	align-items: center;
	justify-content: center;
	background: var(--cm-w-fondo);
	border-radius: 12px;
	line-height: 0;
	overflow: hidden;
}

.cm-w-fila__img img { width: 100%; height: 100%; object-fit: contain; mix-blend-mode: multiply; }

.cm-w-fila__texto { flex: 1 1 auto; min-width: 0; }

.cm-w .cm-w-fila__texto h4 {
	margin: 0 0 2px;
	font-size: 14.5px;
	font-weight: 700;
	line-height: 1.3;
}

.cm-w .cm-w-fila__texto h4 a { color: inherit; text-decoration: none; }

.cm-w .cm-w-fila__meta { margin: 0; color: var(--cm-w-suave); font-size: 12.5px; }
.cm-w .cm-w-fila__cuota { margin: 2px 0 0; color: var(--cm-w-marca); font-size: 12.5px; font-weight: 600; }

.cm-w-fila__fin {
	flex: 0 0 auto;
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 8px;
	text-align: right;
}

.cm-w .cm-w-fila__precio { font-size: 15.5px; font-weight: 800; white-space: nowrap; }
.cm-w .cm-w-fila__precio del { display: none; } /* en una fila estrecha, sobra */

.cm-w .cm-w-sinresultados {
	margin: 0;
	padding: 22px;
	text-align: center;
	color: var(--cm-w-suave);
	background: var(--cm-w-fondo);
	border-radius: 14px;
}

/* ---------------- Carrusel y móvil ---------------- */

.cm-w-dots { display: none; justify-content: center; gap: 7px; margin-top: 16px; }

.cm-w-dots i {
	width: 7px;
	height: 7px;
	border-radius: 999px;
	background: #d2d2d7;
	transition: width .2s ease, background .2s ease;
}

.cm-w-dots i.is-activo { width: 20px; background: var(--cm-w-marca); }

@media (max-width: 1024px) {
	.cm-w-vitrina__cuerpo { grid-template-columns: minmax(0, 1fr); }
	.cm-w-panel { min-height: 400px; }
	.cm-w-panel__texto { max-width: 100%; }
	.cm-w-panel__img { position: relative; right: auto; bottom: auto; width: 74%; margin: 24px auto -10px; }
}

@media (max-width: 782px) {
	/* Las tarjetas dejan de apilarse y pasan a deslizarse. */
	.cm-w-grid {
		display: flex;
		gap: 12px;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		-webkit-overflow-scrolling: touch;
		margin: 0 -16px;
		padding: 4px 16px 10px;
		scrollbar-width: none;
	}

	.cm-w-grid::-webkit-scrollbar { display: none; }

	.cm-w-card {
		flex: 0 0 min(72vw, 260px);
		scroll-snap-align: start;
	}

	.cm-w-head { flex-direction: column; gap: 12px; }
	.cm-w .cm-w-sub { font-size: 14px; }
	.cm-w a.cm-w-verlink { display: none; }

	.cm-w a.cm-w-verlink--movil {
		display: flex;
		justify-content: center;
		width: 100%;
		margin-top: 16px;
	}

	.cm-w-dots { display: flex; }

	.cm-w-vitrina__head { flex-direction: column; align-items: stretch; gap: 14px; }

	.cm-w-chips {
		flex-wrap: nowrap;
		overflow-x: auto;
		margin: 0 -16px;
		padding: 2px 16px 6px;
		scrollbar-width: none;
	}

	.cm-w-chips::-webkit-scrollbar { display: none; }
	.cm-w button.cm-w-chip { flex: 0 0 auto; }

	.cm-w-panel { min-height: 0; padding: 26px 22px; }
	.cm-w-panel__acciones { width: 100%; }
	.cm-w a.cm-w-btn--claro, .cm-w a.cm-w-btn--borde { flex: 1 1 auto; }

	.cm-w-fila { padding: 12px; gap: 11px; }
	.cm-w-fila__img { width: 54px; height: 54px; }
}

@media (prefers-reduced-motion: reduce) {
	.cm-w-card, .cm-w-fila, .cm-w a.cm-w-btn { transition: none; }
	.cm-w-card:hover { transform: none; }
}

/* ------------------------------------------------------------------ */
/* Color de los precios                                                */
/* ------------------------------------------------------------------ */

/*
 * WoodMart pinta todos los precios en su azul de marca, y aquí eso hace daño
 * en dos sitios: sobre el panel oscuro el azul se funde con el fondo y el
 * precio deja de leerse, y en las tarjetas compite con los botones, que son
 * lo único que debería ser azul.
 *
 * El importe se imprime como .woocommerce-Price-amount > bdi, con el símbolo
 * en su propio span, así que hay que alcanzar los tres. Lleva !important
 * porque las reglas del tema son más específicas que cualquier cosa razonable
 * que se escriba aquí.
 */

.cm-w .cm-w-card__precio,
.cm-w .cm-w-card__precio .woocommerce-Price-amount,
.cm-w .cm-w-card__precio .woocommerce-Price-currencySymbol,
.cm-w .cm-w-card__precio bdi,
.cm-w .cm-w-card__precio ins,
.cm-w .cm-w-fila__precio,
.cm-w .cm-w-fila__precio .woocommerce-Price-amount,
.cm-w .cm-w-fila__precio .woocommerce-Price-currencySymbol,
.cm-w .cm-w-fila__precio bdi,
.cm-w .cm-w-fila__precio ins {
	color: var(--cm-w-tinta) !important;
}

/* El precio anterior sí se apaga: es una referencia, no el dato. */
.cm-w .cm-w-card__precio del,
.cm-w .cm-w-card__precio del * {
	color: var(--cm-w-suave) !important;
}

/* La cuota es texto de apoyo: gris entero, sin el importe destacado dentro. */
.cm-w .cm-w-card__cuota,
.cm-w .cm-w-card__cuota * {
	color: var(--cm-w-suave) !important;
	font-weight: 400 !important;
}

/* En el panel oscuro el precio va en blanco, que es lo único legible ahí. */
.cm-w .cm-w-panel__precio,
.cm-w .cm-w-panel__precio .woocommerce-Price-amount,
.cm-w .cm-w-panel__precio .woocommerce-Price-currencySymbol,
.cm-w .cm-w-panel__precio bdi,
.cm-w .cm-w-panel__precio ins {
	color: #fff !important;
}

.cm-w .cm-w-panel__precio del,
.cm-w .cm-w-panel__precio del * {
	color: rgba(255, 255, 255, .5) !important;
}

.cm-w .cm-w-panel__cuota,
.cm-w .cm-w-panel__cuota * {
	color: #9FC0FF !important;
	font-weight: 500 !important;
}

/* En la lista lateral la cuota sí es azul: ahí no compite con nada. */
.cm-w .cm-w-fila__cuota,
.cm-w .cm-w-fila__cuota * {
	color: var(--cm-w-marca) !important;
	font-weight: 600 !important;
}

/* La cabecera de la vitrina ahora puede llevar antetítulo y descripción. */
.cm-w-vitrina__head { align-items: flex-end; }
.cm-w-vitrina__head-texto { flex: 1 1 auto; min-width: 0; }
.cm-w-vitrina__head-texto .cm-w-sub { margin-top: 8px; }

@media (max-width: 782px) {
	.cm-w-vitrina__head { align-items: stretch; }
}
