/*
 * Tienda: filtros de catálogo.
 *
 * Este fichero se imprime en wp_head(), es decir ANTES del style.css que header.php
 * carga a mano. Por eso toda regla que pise algo del tema lleva un selector más
 * específico (.tienda ul.productos, 0-2-1, frente a ul.productos, 0-1-1).
 *
 * Solo se usan las variables del tema: --c-dest (verde de marca), --c-verdclar,
 * --c-verdsemi, --c-subdest, --f-norm y --x-dest (filtro que recolorea los SVG).
 */

/* -------------------------------------------------------------------------
 * Barra de tipos de vino
 * ---------------------------------------------------------------------- */

.tipo-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin: 0 0 24px 0;
}

/* -------------------------------------------------------------------------
 * Estructura: barra lateral + listado
 * ---------------------------------------------------------------------- */

.tienda {
	display: grid;
	grid-template-columns: 280px 1fr;
	gap: 30px;
	align-items: start;
	margin: 0 0 40px 0;
}

.tienda .filtros {
	position: sticky;
	top: 95px; /* El header del tema es sticky y mide 80px. */
	max-height: calc(100vh - 110px);
	overflow-y: auto;
	border: 5px solid var(--c-verdclar);
	border-radius: 12px;
	padding: 14px 16px;
	box-sizing: border-box;
}

/* La rejilla del tema es de 4 columnas; con barra lateral caben 3. */
.tienda ul.productos {
	grid-template-columns: repeat(3, 1fr);
	gap: 24px;
}

.tienda .listado {
	min-width: 0; /* Sin esto, un hijo ancho desbordaría la columna del grid. */
	scroll-margin-top: 95px;
}

/* -------------------------------------------------------------------------
 * Cabecera de la barra lateral
 * ---------------------------------------------------------------------- */

.filtros-head {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 4px 10px;
	margin-bottom: 6px;
}

.filtros-tit {
	font-family: var(--f-norm);
	color: var(--c-dest);
	letter-spacing: -0.04em;
	font-size: 20px;
	font-weight: bold;
	line-height: 1.1em;
	margin: 0;
	white-space: nowrap;
}

.filtros-reset {
	font-size: 14px;
	color: #000;
	text-decoration: underline;
	text-decoration-color: var(--c-dest);
	text-decoration-thickness: 2px;
	white-space: nowrap;
}

.filtros-reset:hover {
	color: var(--c-dest);
}

.filtros-abrir,
.filtros-cerrar {
	display: none;
}

/* -------------------------------------------------------------------------
 * Grupos de filtro (<details>)
 * ---------------------------------------------------------------------- */

.fgrp {
	border-top: 1px solid var(--c-verdclar);
	padding: 10px 0 8px 0;
}

.fgrp-tit {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	font-family: var(--f-norm);
	font-weight: bold;
	font-size: 17px;
	letter-spacing: -0.03em;
	cursor: pointer;
	list-style: none;
}

.fgrp-tit::-webkit-details-marker {
	display: none;
}

.fgrp-tit::after {
	content: '';
	flex: 0 0 13px;
	width: 13px;
	height: 13px;
	background: url('../img/chevron.svg') center no-repeat;
	background-size: contain;
	filter: var(--x-dest);
	transform: rotate(-90deg);
	transition: transform 0.25s ease;
}

.fgrp[open] > .fgrp-tit::after {
	transform: none;
}

.fgrp-body {
	padding: 12px 0 2px 0;
}

.fgrp-sub-tit {
	font-family: var(--f-norm);
	font-weight: bold;
	font-size: 15px;
	letter-spacing: -0.03em;
	margin: 16px 0 8px 0;
}

.fgrp-sub {
	font-weight: bold;
	font-size: 13px;
	letter-spacing: -0.03em;
	color: var(--c-dest);
	margin: 12px 0 4px 0;
}

.fgrp-sub:first-child {
	margin-top: 0;
}

.fgrp-opts {
	display: grid;
	gap: 6px;
}

.fgrp-opts.pills {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.fgrp-opts.scroll {
	max-height: 250px;
	overflow-y: auto;
	padding-right: 4px;
}

.fgrp-buscar {
	font-family: var(--f-norm);
	font-size: 14px;
	width: 100%;
	box-sizing: border-box;
	border: 1px solid #ccc;
	border-radius: 20px;
	padding: 5px 12px 5px 32px;
	margin-bottom: 10px;
	background: url('../img/search.svg') 9px center no-repeat;
	background-size: 16px 16px;
}

.fgrp-buscar:focus {
	outline: 2px solid var(--c-dest);
	outline-offset: 1px;
}

/* -------------------------------------------------------------------------
 * Opciones: pastillas y lista
 * ---------------------------------------------------------------------- */

.fpill,
.fopt {
	font-family: var(--f-norm);
	letter-spacing: -0.03em;
	text-decoration: none;
	color: #111;
	transition: background 0.25s ease, color 0.25s ease;
}

.fpill {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-size: 15px;
	font-weight: 500;
	background: var(--c-verdclar);
	padding: 6px 15px;
	border-radius: 30px;
}

.fpill:hover {
	background: var(--c-verdsemi);
	color: #000;
}

.fpill.is-on {
	background: var(--c-dest);
	color: #fff;
	font-weight: bold;
}

.fopt {
	display: flex;
	align-items: center;
	gap: 7px;
	font-size: 15px;
	padding: 3px 8px;
	border-radius: 6px;
}

.fopt:hover {
	background: var(--c-verdclar);
}

.fopt.is-on {
	background: var(--c-dest);
	color: #fff;
	font-weight: bold;
}

.fopt.is-sub {
	margin-left: 14px;
	font-size: 14px;
}

/* Sin resultados posibles: se atenúa y no es enlace. */
.fpill.is-cero,
.fopt.is-cero {
	opacity: 0.4;
	cursor: default;
}

.fopt .fname,
.fpill .fname {
	flex-grow: 1;
}

.fnum {
	font-weight: 400;
	font-size: 0.82em;
	opacity: 0.65;
}

/*
 * Los iconos van a color, sin el filter:var(--x-dest) que el tema usa en 404.php.
 * Ahí se pintan a 45px y en verde monocromo, pero aquí miden 22px y el verde los
 * haría inservibles: tintos.svg y blancos.svg son la MISMA copa y solo se
 * distinguen por el color del líquido. Las banderas, además, no tienen sentido
 * recoloreadas. El círculo blanco les da contraste sobre la pastilla verde activa.
 */
.fico {
	flex: 0 0 22px;
	width: 22px;
	height: 22px;
	display: flex;
	align-items: center;
	justify-content: center;
	background: #fff;
	border-radius: 50%;
	box-sizing: border-box;
}

.fico img {
	width: 17px;
	height: 17px;
	margin: 0;
	border-radius: 0;
}

.fpill:focus-visible,
.fopt:focus-visible,
.chip:focus-visible {
	outline: 2px solid var(--c-dest);
	outline-offset: 2px;
}

/* -------------------------------------------------------------------------
 * Cabecera del listado: contador y ordenación
 * ---------------------------------------------------------------------- */

.listado-bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	flex-wrap: wrap;
	margin: 0 0 16px 0;
}

.listado-count {
	font-size: 15px;
	letter-spacing: -0.03em;
	margin: 0;
}

.fsort {
	display: flex;
	gap: 8px;
	align-items: center;
	margin: 0;
}

.fsort-select {
	font-family: var(--f-norm);
	font-size: 15px;
	border: 1px solid #ccc;
	border-radius: 20px;
	padding: 5px 12px;
	background: #fff;
	max-width: 100%;
}

.fsort-go {
	font-family: var(--f-norm);
	background: var(--c-dest);
	color: #fff;
	border: 0;
	padding: 6px 18px;
	border-radius: 30px;
	font-weight: bold;
	font-size: 14px;
	cursor: pointer;
}

/* Con JavaScript el select se envía solo, así que el botón no hace falta. */
.js-on .fsort-go {
	display: none;
}

/* -------------------------------------------------------------------------
 * Pastillas de filtros activos
 * ---------------------------------------------------------------------- */

.chips {
	display: flex;
	flex-wrap: wrap;
	column-gap: 10px;
	row-gap: 8px;
	line-height: 1em;
	margin: 0 0 20px 0;
}

.chips .chip {
	font-family: var(--f-norm);
	font-size: 14px;
	font-weight: 500;
	letter-spacing: -0.04em;
	background: var(--c-subdest);
	color: #000;
	padding: 6px 14px;
	border-radius: 20px;
	text-decoration: none;
	transition: background 0.25s ease, color 0.25s ease;
}

.chips .chip strong {
	font-weight: 400;
	opacity: 0.7;
}

.chips .chip:hover {
	background: #de7700;
	color: #fff;
}

.chips .chip i {
	font-style: normal;
	font-weight: bold;
	margin-left: 7px;
}

.chips .chip-reset {
	background: none;
	padding-inline: 0;
	text-decoration: underline;
	text-decoration-color: var(--c-dest);
	text-decoration-thickness: 2px;
}

.chips .chip-reset:hover {
	background: none;
	color: var(--c-dest);
}

/* -------------------------------------------------------------------------
 * Etiqueta "Agotado" y estado vacío
 * ---------------------------------------------------------------------- */

.product .agotado {
	position: absolute;
	top: 10px;
	right: 10px;
	z-index: 2;
	background: rgba(255, 255, 255, 0.92);
	border: 1px solid #ddd;
	color: #444;
	font-size: 0.72em;
	font-weight: bold;
	letter-spacing: -0.03em;
	padding: 3px 11px;
	border-radius: 30px;
}

/*
 * En un producto agotado WooCommerce cambia el botón por un "Leer más", pero el
 * tema le pone el icono de carrito a todo a.button del listado. Antes no se notaba
 * porque los agotados estaban ocultos del catálogo.
 */
.product.outofstock a.button::before,
.product.outofstock a.button:hover::before {
	display: none;
}

.product.outofstock a.button {
	background: #f1f1f1;
	color: #555;
}

.product.outofstock a.button:hover {
	background: var(--c-verdsemi);
	color: #000;
	padding: 10px 0;
}

.sin-resultados {
	border: 5px solid var(--c-verdclar);
	border-radius: 12px;
	padding: 26px;
	margin-bottom: 30px;
}

.sin-resultados .sin-tit {
	font-family: var(--f-norm);
	font-weight: bold;
	font-size: 21px;
	letter-spacing: -0.04em;
	margin: 0 0 8px 0;
}

.sin-resultados p {
	margin-bottom: 14px;
}

/* -------------------------------------------------------------------------
 * Navegación por categorías al pie
 * ---------------------------------------------------------------------- */

.cat-links {
	display: grid;
	grid-template-columns: repeat(5, 1fr);
	gap: 26px;
	margin: 0 0 20px 0;
}

.cat-links-tit {
	font-family: var(--f-norm);
	font-size: 15px;
	font-weight: bold;
	letter-spacing: -0.03em;
	color: var(--c-dest);
	margin: 0 0 8px 0;
	padding-bottom: 6px;
	border-bottom: 1px solid var(--c-verdclar);
}

.cat-links ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.cat-links li {
	margin: 0 0 4px 0;
	line-height: 1.3em;
}

.cat-links a {
	font-size: 14px;
	letter-spacing: -0.03em;
	color: #333;
	text-decoration: none;
}

.cat-links a:hover {
	color: var(--c-dest);
	text-decoration: underline;
	text-decoration-thickness: 2px;
}

/* -------------------------------------------------------------------------
 * Responsive. Los cortes son los que ya usa el tema: 975, 800, 600, 500, 400.
 *
 * Como .tienda ul.productos es más específico que el ul.productos del tema, hay
 * que redeclarar aquí todos los pasos de columnas del listado.
 * ---------------------------------------------------------------------- */

@media (max-width: 975px) {
	.cat-links {
		grid-template-columns: repeat(3, 1fr);
		gap: 22px;
	}

	.tienda {
		grid-template-columns: 240px 1fr;
		gap: 22px;
	}

	.tienda ul.productos {
		gap: 20px;
	}
}

@media (max-width: 800px) {
	.tienda {
		grid-template-columns: 1fr;
		gap: 24px;
	}

	.tienda .filtros {
		position: static;
		max-height: none;
		overflow: visible;
	}

	.tienda ul.productos {
		grid-template-columns: repeat(3, 1fr);
		gap: 18px;
	}

	/* Sin JavaScript la barra lateral queda apilada y visible, que es lo que la
	   hace usable; el plegado y el botón solo aparecen si hay JS. */
	.js-on .filtros-abrir {
		display: inline-flex;
		align-items: center;
		gap: 8px;
		font-family: var(--f-norm);
		background: var(--c-dest);
		color: #fff;
		border: 0;
		padding: 9px 30px;
		border-radius: 30px;
		font-weight: bold;
		font-size: 16px;
		cursor: pointer;
		margin: 0 0 20px 0;
	}

	.js-on .filtros-abrir b {
		background: #fff;
		color: var(--c-dest);
		border-radius: 30px;
		padding: 1px 9px;
		font-size: 0.85em;
	}

	.js-on .tienda .filtros {
		display: none;
	}

	.js-on .tienda .filtros.on {
		display: block;
	}

	.js-on .filtros-cerrar {
		display: inline-block;
		font-family: var(--f-norm);
		background: none;
		border: 0;
		font-size: 14px;
		font-weight: bold;
		color: var(--c-dest);
		text-decoration: underline;
		cursor: pointer;
		padding: 0;
	}
}

@media (max-width: 600px) {
	.cat-links {
		grid-template-columns: repeat(2, 1fr);
		gap: 18px;
	}

	.tienda ul.productos {
		grid-template-columns: repeat(2, 1fr);
		gap: 14px;
	}

	.listado-bar {
		gap: 10px;
	}

	.fsort,
	.fsort-select {
		width: 100%;
	}
}

@media (max-width: 500px) {
	.tipo-chips {
		flex-wrap: nowrap;
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
		padding-bottom: 10px;
		margin-bottom: 18px;
	}

	.tipo-chips .fpill {
		flex: 0 0 auto;
	}

	.tienda ul.productos {
		gap: 10px;
	}
}
