/* ═══════════════════════════════════════════════════════════════════════════
   CABECEROS CON CONFIGURADOR DE COLOR (inc/configurador-cabecero.php)

   Solo se carga en las fichas que lo llevan. Respeta el modo brutal: la foto a
   cuadro, los controles con el redondeo de control, sin sombras, y el morado
   únicamente en lo elegido.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Para que la foto pueda quedarse fija ─────────────────────────────────────
   base.css pone `overflow-x: hidden` en el body y woocommerce.css pone `clip`
   en html. Juntos convierten el body en un contenedor de scroll que nunca se
   desplaza, y ningún `position: sticky` de dentro llega a pegarse. `clip`
   recorta lo que se salga igual que `hidden`, sin ese efecto. */
body:has(.zi-cfg-escena) {
	overflow-x: clip;
}

/* ── La foto ──────────────────────────────────────────────────────────────── */

.zi-cfg-escena {
	position: relative;
	aspect-ratio: var(--zi-cfg-proporcion, 1442 / 1224);
	overflow: hidden;
	background: var(--zihouse-shop-media-bg, var(--zihouse-color-surface));
	border-radius: var(--zihouse-radius-media);
}

.zi-cfg-escena__foto,
.zi-cfg-escena canvas {
	position: absolute;
	inset: 0;
	display: block;
	width: 100%;
	height: 100%;
	max-width: none;
}

.zi-cfg-escena__lienzo {
	opacity: 0;
	transition: opacity 500ms var(--zihouse-ease-out-quint);
	touch-action: manipulation;
}

.zi-cfg-escena.is-lista .zi-cfg-escena__lienzo {
	opacity: 1;
}

.zi-cfg-escena__contorno {
	pointer-events: none;
	opacity: 0;
	filter: drop-shadow(0 0 2px rgba(255, 255, 255, 0.9)) drop-shadow(0 0 8px rgba(255, 255, 255, 0.55));
	transition: opacity 260ms var(--zihouse-ease-out-quint);
}

.zi-cfg-escena__contorno.is-visible {
	opacity: 0.95;
}

.zi-cfg-escena__pista {
	position: absolute;
	left: 50%;
	bottom: 18px;
	transform: translateX(-50%);
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0;
	padding: 8px 14px;
	max-width: calc(100% - 24px);
	border-radius: 999px;
	background: rgba(41, 36, 31, 0.78);
	-webkit-backdrop-filter: blur(6px);
	backdrop-filter: blur(6px);
	color: #fff;
	font-size: 13px;
	line-height: 1.3;
	white-space: nowrap;
	pointer-events: none;
	opacity: 0;
	transition: opacity 400ms var(--zihouse-ease-out-quint);
}

.zi-cfg-escena.is-lista .zi-cfg-escena__pista {
	opacity: 1;
	transition-delay: 1400ms;
}

.zi-cfg-escena.is-lista .zi-cfg-escena__pista.is-oculta,
.zi-cfg-escena.is-error .zi-cfg-escena__pista {
	opacity: 0;
	transition-delay: 0ms;
}

/* ── Controles ────────────────────────────────────────────────────────────── */

.zi-cfg {
	margin: 0 0 var(--zihouse-space-md);
}

.zi-cfg-oculto {
	position: absolute !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}

.zi-cfg__paso {
	padding-top: var(--zihouse-space-sm);
	margin-top: var(--zihouse-space-sm);
	border-top: 1px solid var(--zihouse-color-border);
}

.zi-cfg__paso:first-child {
	margin-top: 0;
}

.zi-cfg__titulo {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 0 0 12px;
	font-size: 15px;
	font-weight: 600;
	color: var(--zihouse-color-ink);
}

.zi-cfg__titulo span {
	display: inline-grid;
	place-items: center;
	flex: none;
	width: 22px;
	height: 22px;
	border: 1px solid var(--zihouse-color-border-strong);
	border-radius: 50%;
	font-size: 12px;
	font-variant-numeric: tabular-nums;
}

.zi-cfg__titulo em {
	font-style: normal;
	color: var(--zihouse-color-accent);
}

.zi-cfg__actual {
	margin: -4px 0 12px;
	font-size: 14.5px;
	color: var(--zihouse-color-ink-muted);
}

.zi-cfg__actual strong {
	font-weight: 600;
	color: var(--zihouse-color-ink);
}

/* Radios de verdad, escondidos: se pinta la etiqueta. Selectores con la
   etiqueta delante para ganar a las reglas generales de formulario del tema. */
.zi-cfg label.zi-cfg__pieza input[type="radio"],
.zi-cfg label.zi-cfg__tela input[type="radio"] {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: 0;
	padding: 0;
	opacity: 0;
	pointer-events: none;
}

/* Sin JavaScript no hay selector de pieza ni combinaciones: se ven las cuatro
   paletas a la vez, cada una con su título, y se compra igual. */
.zi-cfg:not(.is-activo) .zi-cfg__paso--piezas,
.zi-cfg:not(.is-activo) .zi-cfg__paso--ideas,
.zi-cfg:not(.is-activo) .zi-cfg__titulo--tela,
.zi-cfg:not(.is-activo) .zi-cfg__actual,
.zi-cfg:not(.is-activo) .zi-cfg__copiar {
	display: none;
}

.zi-cfg.is-activo .zi-cfg__telas:not(.is-visible) {
	display: none;
}

/* 1 · Piezas */

.zi-cfg__piezas {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 8px;
}

.zi-cfg__pieza {
	position: relative;
	display: flex;
	align-items: center;
	gap: 10px;
	min-height: 56px;
	margin: 0;
	padding: 9px 11px;
	border: 1px solid var(--zihouse-color-border-strong);
	border-radius: var(--zihouse-radius-control);
	background: var(--zihouse-color-surface-raised, #fff);
	cursor: pointer;
	transition: border-color 160ms, background-color 160ms;
}

.zi-cfg__pieza:hover {
	border-color: var(--zihouse-color-ink);
}

.zi-cfg__pieza:has(input:checked) {
	border-color: var(--zihouse-color-accent);
	background: var(--zihouse-tint-accent);
	box-shadow: inset 0 0 0 1px var(--zihouse-color-accent);
}

.zi-cfg__pieza:has(input:focus-visible),
.zi-cfg__combo:focus-visible,
.zi-cfg__copiar:focus-visible {
	outline: var(--zihouse-focus-ring-width) solid var(--zihouse-color-accent);
	outline-offset: var(--zihouse-focus-ring-offset);
}

.zi-cfg__pieza-muestra {
	flex: none;
	width: 34px;
	height: 34px;
	border-radius: 4px;
	background-size: cover;
	background-position: center;
	box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.08);
}

.zi-cfg__pieza-texto {
	display: grid;
	min-width: 0;
	line-height: 1.25;
}

.zi-cfg__pieza-nombre {
	font-size: 14.5px;
	font-weight: 600;
	color: var(--zihouse-color-ink);
}

.zi-cfg__pieza-ref {
	overflow: hidden;
	font-size: 12.5px;
	color: var(--zihouse-color-ink-muted);
	white-space: nowrap;
	text-overflow: ellipsis;
}

/* 2 · Telas */

.zi-cfg__telas {
	display: grid;
	/* Nueve columnas: la serie más larga cabe en una fila y ninguna muestra
	   se queda sola en la suya. En móvil, reparto automático (ver abajo). */
	grid-template-columns: repeat(9, minmax(0, 1fr));
	gap: 10px 8px;
	min-width: 0;
	margin: 0;
	padding: 0;
	border: 0;
}

.zi-cfg__leyenda {
	grid-column: 1 / -1;
	float: left;
	width: 100%;
	margin: 0 0 4px;
	padding: 0;
	font-size: 14.5px;
	font-weight: 600;
	color: var(--zihouse-color-ink);
}

.zi-cfg.is-activo .zi-cfg__leyenda {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
}

.zi-cfg:not(.is-activo) .zi-cfg__telas + .zi-cfg__telas {
	margin-top: var(--zihouse-space-sm);
}

.zi-cfg__tela {
	position: relative;
	display: grid;
	justify-items: center;
	gap: 5px;
	margin: 0;
	cursor: pointer;
}

.zi-cfg__tela-muestra {
	position: relative;
	width: 100%;
	aspect-ratio: 1;
	border-radius: var(--zihouse-radius-control);
	background-size: cover;
	background-position: center;
	box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.08);
	transition: transform 180ms var(--zihouse-ease-out-quint);
}

.zi-cfg__tela:hover .zi-cfg__tela-muestra {
	transform: translateY(-2px);
}

.zi-cfg__tela:has(input:checked) .zi-cfg__tela-muestra {
	outline: 2px solid var(--zihouse-color-accent);
	outline-offset: 2px;
}

/* Título de cada serie de la carta: ocupa la fila entera. */
.zi-cfg__serie {
	grid-column: 1 / -1;
	margin: 6px 0 -2px;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--zihouse-color-ink-muted);
}

.zi-cfg__serie:first-of-type {
	margin-top: 0;
}

/* La marca de elegida, para quien no distingue el color del borde. */
.zi-cfg__tela:has(input:checked) .zi-cfg__tela-muestra::after {
	content: "";
	position: absolute;
	right: 4px;
	bottom: 4px;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: var(--zihouse-color-accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4.5 8.2l2.3 2.3 4.7-4.9' fill='none' stroke='white' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 100% no-repeat;
}

.zi-cfg__tela:has(input:focus-visible) .zi-cfg__tela-muestra {
	outline: 2px solid var(--zihouse-color-ink);
	outline-offset: 2px;
}

.zi-cfg__tela-ref {
	font-size: 12px;
	font-variant-numeric: tabular-nums;
	color: var(--zihouse-color-ink-muted);
}

.zi-cfg__tela:has(input:checked) .zi-cfg__tela-ref {
	font-weight: 600;
	color: var(--zihouse-color-ink);
}

/* Combinaciones */

.zi-cfg__combos {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 8px;
}

.zi-cfg__combo {
	display: grid;
	gap: 5px;
	margin: 0;
	padding: 4px 4px 7px;
	border: 1px solid var(--zihouse-color-border-strong);
	border-radius: var(--zihouse-radius-control);
	background: var(--zihouse-color-surface-raised, #fff);
	color: var(--zihouse-color-ink);
	font: inherit;
	text-align: left;
	cursor: pointer;
	transition: border-color 160ms;
}

.zi-cfg__combo:hover {
	border-color: var(--zihouse-color-ink);
}

.zi-cfg__combo[aria-pressed="true"] {
	border-color: var(--zihouse-color-accent);
	box-shadow: inset 0 0 0 1px var(--zihouse-color-accent);
}

.zi-cfg__combo-vista {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 320 / 196;
	border-radius: 2px;
	background: var(--zihouse-shop-media-bg, var(--zihouse-color-surface));
}

.zi-cfg__combo-nombre {
	padding: 0 3px;
	font-size: 13px;
	font-weight: 600;
}

/* Enlace y nota */

.zi-cfg__copiar {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin: var(--zihouse-space-sm) 0 0;
	padding: 6px 0;
	border: 0;
	background: none;
	color: var(--zihouse-color-ink);
	font: 600 14px/1.3 var(--zihouse-font-body);
	text-decoration: underline;
	text-underline-offset: 3px;
	cursor: pointer;
}

.zi-cfg__copiar:hover {
	color: var(--zihouse-color-accent);
}

.zi-cfg__nota {
	margin: 6px 0 0;
	font-size: 13px;
	line-height: 1.5;
	color: var(--zihouse-color-ink-muted);
}

/* ── Escritorio estrecho: las combinaciones, de dos en dos ───────────────── */

@media (max-width: 1180px) {
	.zi-cfg__combos {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

/* ── Móvil: la foto se queda arriba mientras se elige ────────────────────────
   La galería deja de ser fija por debajo de 56rem (woocommerce.css). Aquí
   vuelve a serlo, pegada bajo la cabecera, y recortada al cabecero (sin el
   edredón) para no quitarle media pantalla a la paleta. */

@media (max-width: 56rem) {
	.zihouse-pdp__gallery:has(.zi-cfg-escena) {
		position: sticky;
		top: var(--zihouse-header-height);
		z-index: 5;
		background: var(--zihouse-color-bg);
		border-bottom: 1px solid var(--zihouse-color-border);
	}

	.zi-cfg__telas {
		grid-template-columns: repeat(auto-fill, minmax(44px, 1fr));
	}

	/* El recorte lo da cada modelo (inc/configurador-cabecero.php). */
	.zi-cfg-escena {
		aspect-ratio: var(--zi-cfg-movil-proporcion, 1442 / 700);
		border-radius: 0;
	}

	.zi-cfg-escena__foto,
	.zi-cfg-escena canvas {
		bottom: auto;
		height: auto;
		aspect-ratio: var(--zi-cfg-proporcion, 1442 / 1224);
		transform: translateY(var(--zi-cfg-movil-desplazar, -9.8%));
	}

	.zi-cfg-escena__pista {
		bottom: 10px;
		padding: 6px 12px;
		font-size: 12.5px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.zi-cfg-escena__lienzo,
	.zi-cfg-escena__contorno,
	.zi-cfg-escena__pista,
	.zi-cfg__tela-muestra {
		transition: none;
	}
}
