/**
 * MarketPlace – układ archiwum, panel filtrów, siatka produktów.
 * Ładowane warunkowo (archiwum MP + single produktu) z functions.php.
 *
 * Zasada kafelka: sztywna struktura + przycinanie tekstu, dzięki czemu
 * wszystkie kafelki w wierszu mają identyczną wysokość.
 */

:root {
	--mp-gap: 1.5rem;
	--mp-pad: 2.5rem;
	--mp-radius: 10px;
	--mp-border: #e8ebee;
	--mp-accent: #0066cc;
	--mp-ink: #1b2430;
	--mp-muted: #5b6570;
	--mp-faint: #98a2ad;

	/* Jeden rozmiar dla wszystkich treści kafelka poza tytułem i kategorią. */
	--mp-text: 0.875rem;
	--mp-cat: 0.6875rem;

	/* Tytuł i opis kafelka – mniejsze niż reszta interfejsu, żeby przy tych
	   samych 2 i 3 liniach zmieścić więcej tekstu. */
	--mp-card-title: 0.9375rem;
	--mp-card-desc: 0.8125rem;
}

/* --------------------------------------------------------------------------
   Układ strony
   -------------------------------------------------------------------------- */

.mp-archive {
	padding-left: var(--mp-pad);
	padding-right: var(--mp-pad);
}

.mp-archive__header {
	margin-bottom: 2rem;
}

.mp-archive__breadcrumb {
	font-size: var(--mp-cat);
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var(--mp-faint);
	margin: 0 0 0.4rem;
}

.mp-archive__breadcrumb a {
	color: var(--mp-accent);
	text-decoration: none;
}

.mp-layout {
	display: grid;
	grid-template-columns: 250px minmax(0, 1fr);
	gap: 2.5rem;
	align-items: start;
}

.mp-results {
	min-width: 0;
}

/* --------------------------------------------------------------------------
   Panel filtrów
   -------------------------------------------------------------------------- */

.mp-sidebar {
	position: sticky;
	top: 90px;
}

.mp-sidebar__inner {
	padding: 1.1rem 1.2rem 1.25rem;
	border: 1px solid var(--mp-border);
	border-radius: var(--mp-radius);
	background: #fff;
}

.mp-facet__reset {
	display: block;
	margin-bottom: 1rem;
	padding-bottom: 0.85rem;
	border-bottom: 1px solid #eef1f4;
	font-size: var(--mp-text);
	font-weight: 600;
	color: var(--mp-ink);
	text-decoration: none;
}

.mp-facet__reset:hover,
.mp-facet__reset.is-active {
	color: var(--mp-accent);
}

.mp-facet {
	margin-bottom: 1rem;
}

.mp-facet:last-of-type {
	margin-bottom: 0;
}

.mp-facet__title {
	list-style: none;
	cursor: pointer;
	padding: 0.35rem 0;
	font-size: var(--mp-cat);
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--mp-faint);
}

.mp-facet__title::-webkit-details-marker {
	display: none;
}

.mp-facet__title::after {
	content: '+';
	float: right;
	font-size: 1rem;
	line-height: 1;
	color: var(--mp-faint);
}

.mp-facet[open] > .mp-facet__title::after {
	content: '–';
}

.mp-facet__list {
	margin: 0.35rem 0 0;
	padding: 0;
	list-style: none;
}

.mp-facet__item {
	margin: 0;
}

.mp-facet__link {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 0.5rem;
	padding: 0.3rem 0;
	font-size: var(--mp-text);
	line-height: 1.35;
	color: var(--mp-muted);
	text-decoration: none;
}

.mp-facet__link:hover,
.mp-facet__link:focus-visible {
	color: var(--mp-accent);
}

.mp-facet__link.is-active {
	color: var(--mp-accent);
	font-weight: 700;
}

.mp-facet__count {
	flex: 0 0 auto;
	font-size: var(--mp-cat);
	color: var(--mp-faint);
}

/* Nawigacja po drzewie kategorii */

.mp-facet__back {
	display: block;
	margin: 0.35rem 0 0.5rem;
	font-size: var(--mp-cat);
	font-weight: 600;
	letter-spacing: 0.02em;
	color: var(--mp-faint);
	text-decoration: none;
}

.mp-facet__back:hover,
.mp-facet__back:focus-visible {
	color: var(--mp-accent);
}

.mp-facet__link--self {
	font-weight: 700;
	color: var(--mp-ink);
	border-bottom: 1px solid #eef1f4;
	padding-bottom: 0.45rem;
	margin-bottom: 0.2rem;
}

/* Kategoria z podkategoriami – strzałka sygnalizuje zejście poziom niżej. */
.mp-facet__link.has-children .mp-facet__name::after {
	content: ' ›';
	color: var(--mp-faint);
	font-weight: 700;
}

/* Przełączniki trybów */

.mp-modes {
	display: flex;
	flex-direction: column;
	gap: 0.4rem;
	margin-top: 1.1rem;
	padding-top: 0.9rem;
	border-top: 1px solid #eef1f4;
}

.mp-mode {
	display: block;
	padding: 0.5rem 0.65rem;
	border: 1px solid var(--mp-border);
	border-radius: 6px;
	text-decoration: none;
	transition: border-color 0.15s ease, background-color 0.15s ease;
}

.mp-mode:hover,
.mp-mode:focus-visible {
	border-color: var(--mp-accent);
	text-decoration: none;
}

.mp-mode.is-active {
	border-color: var(--mp-accent);
	background: #f2f7fd;
}

.mp-mode__label {
	display: block;
	font-size: var(--mp-text);
	font-weight: 600;
	color: var(--mp-accent);
}

.mp-mode__hint {
	display: block;
	margin-top: 0.15rem;
	font-size: var(--mp-cat);
	line-height: 1.4;
	color: var(--mp-faint);
}

/* --------------------------------------------------------------------------
   Siatka: 3 kolumny (wcześniej 4), sidebar zabiera czwartą
   -------------------------------------------------------------------------- */

.mp-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--mp-gap);
	margin: 0 0 2.5rem;
}

/* Wiersze siatki są równe – kafelek rozciąga się na całą wysokość komórki. */
.mp-card {
	height: 100%;
}

.mp-grid__empty {
	padding: 3rem 0;
	text-align: center;
	color: var(--mp-muted);
}

/* --------------------------------------------------------------------------
   Kafelek
   -------------------------------------------------------------------------- */

.mp-card {
	display: flex;
	flex-direction: column;
	background: #fff;
	border: 1px solid var(--mp-border);
	border-radius: var(--mp-radius);
	overflow: hidden;
	transition: box-shadow 0.2s ease, transform 0.2s ease, border-color 0.2s ease;
}

.mp-card:hover {
	border-color: #d3dae1;
	box-shadow: 0 8px 24px rgba(16, 24, 40, 0.08);
	transform: translateY(-2px);
}

.mp-card__media {
	position: relative;
	display: block;
	aspect-ratio: 16 / 10;
	overflow: hidden;
	background: #f3f5f7;
	flex: 0 0 auto;
}

@supports not (aspect-ratio: 16 / 10) {
	.mp-card__media {
		height: 0;
		padding-bottom: 62.5%;
	}
}

.mp-card__img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: opacity 0.3s ease, transform 0.4s ease;
}

.mp-card__img--empty {
	background: linear-gradient(135deg, #eef1f4 0%, #dfe4ea 100%);
}

.mp-card__img--hover {
	opacity: 0;
}

.mp-card:hover .mp-card__img--hover {
	opacity: 1;
}

.mp-card:hover .mp-card__img {
	transform: scale(1.03);
}

.mp-card__badge {
	position: absolute;
	top: 0.7rem;
	left: 0.7rem;
	z-index: 2;
	padding: 0.25em 0.7em;
	border-radius: 999px;
	font-size: var(--mp-cat);
	font-weight: 600;
	letter-spacing: 0.02em;
	text-transform: uppercase;
	color: #fff;
	background: #14804a;
}

.mp-card__body {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	padding: 0.9rem 1rem 1rem;
}

/* Kategoria: najmniejszy tekst, zawsze dokładnie jedna linia. */
.mp-card__cat {
	margin: 0 0 0.4rem;
	font-size: var(--mp-cat);
	font-weight: 600;
	line-height: 1.3;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--mp-accent);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.mp-card__cat a {
	color: inherit;
	text-decoration: none;
}

.mp-card__cat a:hover {
	text-decoration: underline;
}

/* Tytuł: dokładnie 2 linie – rezerwujemy wysokość niezależnie od długości. */
.mp-card__title {
	margin: 0 0 0.45rem;
	font-size: var(--mp-card-title);
	font-weight: 700;
	line-height: 1.35;
	min-height: calc(2 * 1.35em);
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.mp-card__title a {
	color: var(--mp-ink);
	text-decoration: none;
}

.mp-card__title a:hover {
	color: var(--mp-accent);
}

/* Opis: dokładnie 3 linie, tekst przycięty już po stronie PHP. */
.mp-card__desc {
	margin: 0;
	font-size: var(--mp-card-desc);
	line-height: 1.5;
	color: var(--mp-muted);
	min-height: calc(3 * 1.5em);
	display: -webkit-box;
	-webkit-line-clamp: 3;
	-webkit-box-orient: vertical;
	overflow: hidden;
}

.mp-card__footer {
	margin-top: auto;
	padding-top: 0.85rem;
}

/* Blok ceny ma stałą wysokość (kwota + dopisek), więc przyciski
   w sąsiednich kafelkach są zawsze na tej samej wysokości. */
.mp-card__price {
	margin: 0 0 0.7rem;
}

.mp-card__price-main,
.mp-card__price-note {
	margin: 0;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.mp-card__price-main {
	min-height: 1.5em;
	font-size: var(--mp-text);
	line-height: 1.5;
	color: var(--mp-muted);
}

.mp-card__price-label {
	color: var(--mp-faint);
}

.mp-card__price-value {
	font-weight: 700;
	color: var(--mp-ink);
}

/* Dopisek z pola „cena" (to, co w danych stoi w nawiasie). */
.mp-card__price-note {
	min-height: 1.45em;
	font-size: var(--mp-cat);
	line-height: 1.45;
	color: var(--mp-faint);
}

.mp-card__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
}

/* --------------------------------------------------------------------------
   Przyciski
   -------------------------------------------------------------------------- */

.mp-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: 1 1 auto;
	padding: 0.55em 1em;
	border: 1px solid transparent;
	border-radius: 6px;
	font-size: var(--mp-text);
	font-weight: 600;
	line-height: 1.3;
	text-align: center;
	text-decoration: none;
	cursor: pointer;
	transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.mp-btn--primary {
	background: var(--mp-accent);
	border-color: var(--mp-accent);
	color: #fff;
}

.mp-btn--primary:hover,
.mp-btn--primary:focus-visible {
	background: #0052a3;
	border-color: #0052a3;
	color: #fff;
	text-decoration: none;
}

.mp-btn--ghost {
	background: #fff;
	border-color: #cfd6dd;
	color: #384049;
}

.mp-btn--ghost:hover,
.mp-btn--ghost:focus-visible {
	border-color: var(--mp-accent);
	color: var(--mp-accent);
	text-decoration: none;
}

/* --------------------------------------------------------------------------
   Klauzula afiliacyjna pod siatką
   -------------------------------------------------------------------------- */

.mp-disclaimer {
	margin: 1.5rem 0 2.5rem;
	padding: 0.9rem 1.1rem;
	background: #f3f5f7;
	border: 1px solid #e8ebee;
	border-radius: 6px;
	color: #6b7480;
}

.mp-disclaimer p {
	margin: 0 0 0.5em;
	font-size: 12px;
	line-height: 1.55;
}

.mp-disclaimer p:last-child {
	margin-bottom: 0;
}

.mp-disclaimer a {
	color: #6b7480;
	text-decoration: underline;
}

/* --------------------------------------------------------------------------
   Chipy (pasek [mp_filtry] i terminy pod produktem)
   -------------------------------------------------------------------------- */

.mp-chip {
	display: inline-flex;
	align-items: center;
	gap: 0.4em;
	padding: 0.35em 0.85em;
	border: 1px solid #dfe3e8;
	border-radius: 999px;
	background: #fff;
	color: #384049;
	font-size: var(--mp-text);
	line-height: 1.4;
	text-decoration: none;
	transition: border-color 0.15s ease, color 0.15s ease, background-color 0.15s ease;
}

.mp-chip:hover,
.mp-chip:focus-visible {
	border-color: var(--mp-accent);
	color: var(--mp-accent);
	text-decoration: none;
}

.mp-chip.is-active {
	background: var(--mp-accent);
	border-color: var(--mp-accent);
	color: #fff;
}

.mp-chip__count {
	font-size: 0.75em;
	opacity: 0.7;
}

.mp-filters {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin-top: 1.25rem;
}

/* --------------------------------------------------------------------------
   Linki terminów pod treścią produktu
   -------------------------------------------------------------------------- */

.mp-terms {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
	margin: 2rem 0 0;
	padding-top: 1.25rem;
	border-top: 1px solid #eef1f4;
}

.mp-terms__group {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem;
}

.mp-terms__label {
	font-size: var(--mp-cat);
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--mp-faint);
}

.mp-terms__list {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.mp-terms__item {
	margin: 0;
}

/* --------------------------------------------------------------------------
   Responsywność
   -------------------------------------------------------------------------- */

@media (max-width: 1200px) {
	.mp-archive {
		padding-left: 1.5rem;
		padding-right: 1.5rem;
	}

	.mp-layout {
		grid-template-columns: 220px minmax(0, 1fr);
		gap: 1.75rem;
	}

	.mp-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 900px) {
	.mp-layout {
		grid-template-columns: minmax(0, 1fr);
		gap: 1.5rem;
	}

	.mp-sidebar {
		position: static;
	}

	.mp-sidebar__inner {
		padding: 0.9rem 1rem 1rem;
	}

	.mp-facet__list {
		max-height: 320px;
		overflow-y: auto;
	}
}

@media (max-width: 600px) {
	.mp-archive {
		padding-left: 1rem;
		padding-right: 1rem;
	}

	.mp-grid {
		grid-template-columns: minmax(0, 1fr);
		gap: 1.15rem;
	}

	.mp-card__actions {
		flex-direction: column;
	}
}

@media (prefers-reduced-motion: reduce) {
	.mp-card,
	.mp-card__img,
	.mp-chip,
	.mp-btn {
		transition: none;
	}

	.mp-card:hover {
		transform: none;
	}

	.mp-card:hover .mp-card__img {
		transform: none;
	}
}
