/* Partner Map — каталог партнёров (архивы /partner/, /branche/…, /region/…, /merkmal/…; фаза 4f).
 * Нейтральные стили, наследуют шрифт темы. Страница во всю ширину окна: фасеты прижаты к левому краю,
 * основная колонка растёт вправо, число колонок карточек зависит от ширины экрана (auto-fill).
 * Десктоп (≥ 900px): фасеты слева, справа форма поиска, карта-полоса над карточками (раскрывается плавно) и карточки.
 * Телефон: фасеты за кнопкой «Filter», карта скрыта до нажатия «Karte anzeigen». */

/* Обёртка каталога занимает всю ширину, даже если тема центрирует содержимое. */
.pm-catalog-main, .pm-catalog-main > .pm-catalog { max-width: none; width: 100%; }
.pm-catalog-main { padding-left: 0; padding-right: 0; }

.pm-catalog {
	--pmc-line: #e2e8f0; --pmc-muted: #64748b; --pmc-primary: #0f766e; --pmc-bg: #ffffff; --pmc-soft: #f8fafc; --pmc-radius: 14px;
	--pmc-ease: 0.3s ease;
	--pmc-gutter: clamp(16px, 2vw, 24px); /* совпадает с боковым полем сквозной шапки */
	--pmc-facets: 240px;
	--pmc-card: 250px;                    /* минимальная ширина карточки; колонок столько, сколько влезет */
	box-sizing: border-box;
	width: 100%; max-width: none;
	margin: 1.25rem 0 3rem;
	padding-inline: var(--pmc-gutter);
}
.pm-catalog *, .pm-catalog *::before, .pm-catalog *::after { box-sizing: border-box; }
.pm-catalog__sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.pm-catalog__placeholder { padding: 1rem; border: 1px dashed var(--pmc-line, #e2e8f0); border-radius: 12px; color: #64748b; }

/* ---------- Крошки, заголовок */
.pm-catalog__crumbs { display: flex; flex-wrap: wrap; gap: 0.35rem; font-size: 0.85em; color: var(--pmc-muted); margin: 0 0 0.75rem; }
.pm-catalog__crumbs a { color: inherit; text-decoration: none; }
.pm-catalog__crumbs a:hover { text-decoration: underline; }
.pm-catalog__head { display: flex; align-items: baseline; flex-wrap: wrap; gap: 0.35rem 0.9rem; margin: 0 0 1rem; }
.pm-catalog__title { margin: 0; font-size: clamp(1.5rem, 2.4vw, 2rem); line-height: 1.2; }
.pm-catalog__count { margin: 0; color: var(--pmc-muted); }

/* ---------- Сетка: фасеты + основная колонка (одна форма) */
.pm-catalog__layout { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1.25rem; align-items: start; margin: 0; }
.pm-catalog__facets-check { position: absolute; opacity: 0; pointer-events: none; }
.pm-catalog__facets-toggle { display: none; }
.pm-catalog__facets { display: flex; flex-direction: column; gap: 0.5rem; }
.pm-catalog__facets-body { display: flex; flex-direction: column; gap: 1.1rem; }
.pm-catalog__facet-title { margin: 0 0 0.4rem; font-size: 0.75em; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--pmc-muted); }
.pm-catalog__facet-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.15rem; }
.pm-catalog__facet-link, .pm-catalog__check { display: flex; align-items: center; gap: 0.5rem; padding: 0.3rem 0.5rem; border-radius: 8px; color: inherit; text-decoration: none; font-size: 0.95em; cursor: pointer; }
.pm-catalog__facet-link:hover, .pm-catalog__check:hover { background: var(--pmc-soft); }
.pm-catalog__facet-link.is-active, .pm-catalog__check.is-active { background: #e6f4f1; font-weight: 600; }
.pm-catalog__facet-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pm-catalog__facet-count { margin-left: auto; color: var(--pmc-muted); font-size: 0.85em; font-variant-numeric: tabular-nums; }
.pm-catalog__dot { width: 0.6em; height: 0.6em; border-radius: 50%; background: var(--pm-cat, #64748b); flex: none; }
.pm-catalog__check input { accent-color: var(--pmc-primary); margin: 0; }
.pm-catalog__facet-list--sub { margin: 0.1rem 0 0.35rem 1.5rem; }
.pm-catalog__chips { display: flex; flex-wrap: wrap; gap: 0.4rem; }
.pm-catalog__chip { position: relative; display: inline-flex; align-items: center; gap: 0.35rem; padding: 0.3rem 0.75rem; border: 1px solid var(--pmc-line); border-radius: 999px; background: #ffffff; font-size: 0.9em; cursor: pointer; }
.pm-catalog__chip input { position: absolute; opacity: 0; width: 1px; height: 1px; pointer-events: none; }
.pm-catalog__chip:hover { background: var(--pmc-soft); }
.pm-catalog__chip:focus-within { outline: 2px solid var(--pmc-primary); outline-offset: 1px; }
.pm-catalog__chip.is-active { background: #1f2937; border-color: #1f2937; color: #ffffff; }
.pm-catalog__chip-count { color: var(--pmc-muted); font-size: 0.85em; font-variant-numeric: tabular-nums; }
.pm-catalog__chip.is-active .pm-catalog__chip-count { color: rgba(255, 255, 255, 0.7); }
.pm-catalog__main { display: flex; flex-direction: column; gap: 1rem; min-width: 0; }

/* ---------- Кнопки, форма поиска (поля переносятся в два ряда) */
.pm-catalog__btn {
	font: inherit; font-size: 0.95em; border: 1px solid var(--pmc-line); border-radius: 999px; padding: 0.55rem 1rem;
	background: #ffffff; color: inherit; cursor: pointer; white-space: nowrap; display: inline-flex; align-items: center; gap: 0.4rem; text-decoration: none; line-height: 1.2;
}
.pm-catalog__btn:hover { background: var(--pmc-soft); }
.pm-catalog__btn--primary { background: var(--pmc-primary); border-color: var(--pmc-primary); color: #ffffff; font-weight: 600; }
.pm-catalog__btn--primary:hover { background: #0b5f59; }
/* Форма во всю ширину колонки; поля растягиваются, «Suchen» прижата вправо. */
.pm-catalog__search { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; width: 100%; padding: 0.75rem; background: var(--pmc-soft); border: 1px solid var(--pmc-line); border-radius: var(--pmc-radius); }
.pm-catalog__field { flex: 1 1 160px; min-width: 0; display: flex; }
.pm-catalog__field--q { flex: 2 1 240px; }
/* Подписи вроде «Sortierung: Neueste zuerst» длиннее прочих — своя базовая ширина, иначе обрезаются. */
.pm-catalog__field--sort { flex: 1 1 230px; }
.pm-catalog__search .pm-catalog__btn--primary { margin-left: auto; }
.pm-catalog__field input, .pm-catalog__field select {
	width: 100%; min-width: 0; font: inherit; font-size: 0.95em; padding: 0.55rem 0.8rem; border: 1px solid var(--pmc-line); border-radius: 10px;
	background: #ffffff; color: inherit; -webkit-appearance: none; appearance: none;
}
.pm-catalog__field select {
	padding-right: 2rem;
	background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%2364748b' d='M7 10l5 5 5-5z'/%3E%3C/svg%3E");
	background-repeat: no-repeat; background-position: right 0.5rem center; background-size: 18px;
}
.pm-catalog__field input:focus, .pm-catalog__field select:focus { outline: 2px solid var(--pmc-primary); outline-offset: 1px; }
.pm-catalog__reset { font-size: 0.9em; color: var(--pmc-muted); }

/* ---------- Карта-полоса над карточками: компактная / развёрнутая / скрытая (телефон) */
.pm-catalog__mapwrap { display: flex; flex-direction: column; gap: 0.5rem; }
.pm-catalog__map { height: clamp(240px, 18vw, 360px); border-radius: var(--pmc-radius); overflow: hidden; background: #e5e7eb; transition: height var(--pmc-ease); }
.pm-catalog__mapwrap.is-expanded .pm-catalog__map { height: min(70vh, 640px); }
.pm-catalog__mapwrap.is-hidden .pm-catalog__map { height: 0; }
.pm-catalog__mapbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.5rem; }
.pm-catalog__maplink { font-size: 0.9em; color: var(--pmc-primary); text-decoration: none; }
.pm-catalog__maplink:hover { text-decoration: underline; }
.pm-catalog__map .maplibregl-popup-content { font: inherit; font-size: 0.9em; padding: 0.6rem 0.8rem; border-radius: 10px; }
.pm-catalog__map .maplibregl-popup-content a { font-weight: 600; text-decoration: none; }
.pm-catalog__map .maplibregl-ctrl-attrib { font-size: 10px; }
.pm-catalog__pin { width: 26px; height: 26px; border-radius: 50% 50% 50% 0; transform: rotate(-45deg); background: var(--pm-cat, #0f766e); border: 2px solid #ffffff; box-shadow: 0 2px 6px rgba(15, 23, 42, 0.3); cursor: pointer; }

/* ---------- Карточки */
/* Запасное значение: сетка карточек используется и на странице партнёра, где переменных .pm-catalog нет. */
.pm-catalog__cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(var(--pmc-card, 250px), 1fr)); gap: 1rem; }
/* Карточка самодостаточна: свои токены заданы на ней самой, поэтому она выглядит одинаково
 * в каталоге и на странице партнёра, где переменных .pm-catalog нет (иначе рамка и радиус пропадали). */
.pm-ccard {
	--pmc-line: #e2e8f0; --pmc-muted: #64748b; --pmc-primary: #0f766e; --pmc-bg: #ffffff; --pmc-soft: #f8fafc; --pmc-radius: 14px;
	display: flex; flex-direction: column; overflow: hidden;
	border: 1px solid var(--pmc-line); border-radius: var(--pmc-radius); background: var(--pmc-bg);
	box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
	transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}
.pm-ccard:hover { border-color: #cbd5e1; box-shadow: 0 8px 20px rgba(15, 23, 42, 0.08); transform: translateY(-2px); }
.pm-ccard:focus-within { border-color: var(--pmc-primary); }
.pm-ccard__media { position: relative; display: block; aspect-ratio: 16 / 9; background: color-mix(in srgb, var(--pm-cat, #0f766e) 14%, #ffffff); color: color-mix(in srgb, var(--pm-cat, #0f766e) 60%, #ffffff); }
.pm-ccard__img { display: block; width: 100%; height: 100%; object-fit: cover; }
.pm-ccard__img--empty { display: flex; align-items: center; justify-content: center; }
.pm-ccard__img--empty svg { width: 40px; height: 40px; }
.pm-ccard__badge { position: absolute; left: 0.6rem; top: 0.6rem; padding: 0.15rem 0.6rem; border-radius: 999px; background: rgba(255, 255, 255, 0.92); color: #1f2937; font-size: 0.75em; font-weight: 600; display: inline-flex; align-items: center; gap: 0.35rem; }
.pm-ccard__badge::before { content: ""; width: 0.55em; height: 0.55em; border-radius: 50%; background: var(--pm-cat, #0f766e); }
.pm-ccard__body { display: flex; flex-direction: column; gap: 0.35rem; padding: 0.8rem 0.9rem 0.9rem; flex: 1; }
.pm-ccard__title { margin: 0; font-size: 1.05em; line-height: 1.3; }
.pm-ccard__title a { color: inherit; text-decoration: none; }
.pm-ccard__title a:hover { text-decoration: underline; }
.pm-ccard__where { margin: 0; font-size: 0.85em; color: var(--pmc-muted); }
.pm-ccard__where a { color: inherit; text-decoration: none; }
.pm-ccard__where a:hover { text-decoration: underline; }
.pm-ccard__excerpt { margin: 0; font-size: 0.9em; color: #475569; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.pm-ccard__tags { margin: 0; display: flex; flex-wrap: wrap; gap: 0.3rem; }
.pm-ccard__tag { font-size: 0.75em; padding: 0.1rem 0.55rem; border-radius: 999px; background: #f1f5f9; color: #475569; text-decoration: none; }
.pm-ccard__tag:hover { background: #e2e8f0; }
.pm-ccard__foot { margin: auto 0 0; padding-top: 0.5rem; display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; font-size: 0.9em; }
.pm-ccard__more { font-weight: 600; color: var(--pmc-primary); text-decoration: none; }
.pm-ccard__more:hover { text-decoration: underline; }
.pm-ccard__map { display: inline-flex; align-items: center; gap: 0.3rem; color: var(--pmc-muted); text-decoration: none; font-size: 0.9em; }
.pm-ccard__map svg { width: 16px; height: 16px; }
.pm-ccard__map:hover { color: var(--pmc-primary); }
.pm-catalog__empty { padding: 2rem 0; color: var(--pmc-muted); }

/* ---------- Пагинация (paginate_links, type=list) */
.pm-catalog__pager .page-numbers { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.35rem; list-style: none; margin: 0.5rem 0 0; padding: 0; }
.pm-catalog__pager .page-numbers li { margin: 0; }
.pm-catalog__pager a.page-numbers, .pm-catalog__pager span.page-numbers { display: inline-flex; align-items: center; justify-content: center; min-width: 2.3rem; height: 2.3rem; padding: 0 0.6rem; border: 1px solid var(--pmc-line); border-radius: 999px; text-decoration: none; color: inherit; font-size: 0.95em; }
.pm-catalog__pager span.page-numbers.current { background: #1f2937; border-color: #1f2937; color: #ffffff; }
.pm-catalog__pager span.page-numbers.dots { border: 0; }
.pm-catalog__pager a.page-numbers:hover { background: var(--pmc-soft); }

/* ---------- Десктоп */
@media (min-width: 900px) {
	.pm-catalog__layout { grid-template-columns: var(--pmc-facets) minmax(0, 1fr); gap: 1.75rem; }
	.pm-catalog__facets { position: sticky; top: 1rem; max-height: calc(100vh - 2rem); overflow-y: auto; }
}

/* Широкие экраны: фасеты чуть шире, карточки крупнее — иначе колонок становится слишком много. */
@media (min-width: 1600px) {
	.pm-catalog { --pmc-facets: 270px; --pmc-card: 280px; }
	.pm-catalog__layout { gap: 2.25rem; }
}
@media (min-width: 2200px) {
	.pm-catalog { --pmc-card: 320px; }
}

/* ---------- Телефон: фасеты за «Filter», карта скрыта до нажатия */
@media (max-width: 899px) {
	.pm-catalog__facets-toggle { display: inline-flex; align-self: flex-start; align-items: center; gap: 0.4rem; padding: 0.5rem 1rem; border: 1px solid var(--pmc-line); border-radius: 999px; cursor: pointer; font-size: 0.95em; }
	.pm-catalog__facets-toggle::before { content: ""; width: 14px; height: 10px; background: currentColor; -webkit-mask: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 5h18v2H3zm4 6h10v2H7zm3 6h4v2h-4z'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 5h18v2H3zm4 6h10v2H7zm3 6h4v2h-4z'/%3E%3C/svg%3E") center / contain no-repeat; }
	.pm-catalog__facets-check:not(:checked) ~ .pm-catalog__facets .pm-catalog__facets-body { display: none; }
	.pm-catalog__facets-check:checked ~ .pm-catalog__facets .pm-catalog__facets-toggle { background: #1f2937; border-color: #1f2937; color: #ffffff; }
	.pm-catalog__mapwrap.is-compact .pm-catalog__map { height: 0; }
	.pm-catalog { --pmc-card: 200px; }
}
@media (max-width: 480px) {
	.pm-catalog__cards { grid-template-columns: minmax(0, 1fr); }
	.pm-catalog { --pmc-gutter: 16px; }
}
@media (prefers-reduced-motion: reduce) {
	.pm-catalog__map, .pm-ccard { transition: none; }
	.pm-ccard:hover { transform: none; }
}
