/**
 * Grelha de produtos — layout do container.
 * O estilo do cartão em si é partilhado (product-card.css), fica só
 * aqui a disposição em grelha.
 */

.product-grid-section {
	width: 100vw;
	margin-left: calc(-50vw + 50%); /* descola do padding do container do Elementor, mesmo truque do hero e do gift-slider */
	background: #f6f6f6;
	padding: 40px 24px;
}

.product-grid-inner {
	max-width: 1200px;
	margin: 0 auto;
}

.product-grid-section h2 {
	text-align: center;
	margin-bottom: 24px;
}

.product-grid-tabs {
	display: flex;
	justify-content: center;
	align-items: center;
	flex-wrap: wrap;
	gap: 36px;
	margin-bottom: 40px;
}

.product-grid-tab {
	position: relative;
	padding: 6px 2px 14px;
	border: none;
	background: none;
	color: #333;
	font-size: 1.9rem;
	font-weight: 600;
	line-height: 1;
	cursor: pointer;

	-webkit-tap-highlight-color: transparent;
	outline: none;
	-webkit-appearance: none;
	appearance: none;

	transition: color 0.4s cubic-bezier( 0.4, 0, 0.2, 1 ), font-size 0.4s cubic-bezier( 0.4, 0, 0.2, 1 );
}

.product-grid-tab:focus {
	outline: none;
}

.product-grid-tab:focus-visible {
	outline: 2px solid #0274be;
	outline-offset: 6px;
	border-radius: 4px;
}

.product-grid-tab::after {
	content: '';
	position: absolute;
	left: 50%;
	bottom: 0;
	width: 0;
	height: 3px;
	border-radius: 3px;
	background: #0274be;
	transform: translateX(-50%);
	transition: width 0.4s cubic-bezier( 0.4, 0, 0.2, 1 );
}

/* FIX: o tema Astra tem uma regra global "button:hover" que aplica
   background-color e border-color (a "bola azul"). A nossa regra de
   hover nunca definia essas propriedades, por isso a do Astra
   continuava a aparecer, mesmo o nosso seletor tendo mais
   especificidade nas propriedades que DEFINÍAMOS. Tem de se anular
   explicitamente aqui — o CSS só substitui propriedade a propriedade,
   não "no geral". */
.product-grid-tab:hover,
.product-grid-tab:focus,
.product-grid-tab.active {
	background-color: transparent;
	border-color: transparent;
}

.product-grid-tab:hover {
	color: #000;
	font-size: 2.3rem;
}

.product-grid-tab.active {
	color: #0274be;
	font-size: 2.5rem;
	font-weight: 700;
}

.product-grid-tab.active::after {
	width: 100%;
}

.product-grid-panel {
	opacity: 1;
	transform: translateY(0);
	transition: opacity 0.35s ease-out, transform 0.25s cubic-bezier( 0.4, 0, 0.2, 1 );
}

.product-grid-panel.is-hidden-state {
	opacity: 0;
	transform: translateY(10px);
}

.product-grid {
	display: grid;
	grid-template-columns: repeat( var( --product-grid-columns, 4 ), 1fr );
	gap: 32px;
}

@media (max-width: 1024px) {

	.product-grid {
		grid-template-columns: repeat( min( var( --product-grid-columns, 4 ), 3 ), 1fr );
	}
}

@media (max-width: 768px) {

	.product-grid-tab {
		font-size: 1.3rem;
	}

	.product-grid-tab:hover {
		font-size: 1.4rem;
	}

	.product-grid-tab.active {
		font-size: 1.5rem;
	}

	.product-grid {
		/* No mobile o grid é sempre 2x2, independentemente do número
		   de colunas escolhido para o desktop no painel. */
		grid-template-columns: repeat( 2, 1fr );
		gap: 16px;
	}
}