/* Partner Map — страница партнёра (/partner/{slug}/, фаза 4i).
 *
 * Система: страница — колонка читаемой ширины по центру; всё содержимое лежит на одинаковых карточках
 * (белая поверхность, рамка 1px, радиус 16px, общие отступы), поэтому левая и правая колонки выглядят
 * единым целым. Сверху панель-шапка: слева сведения и кнопки, справа фотография во всю высоту панели
 * без зазора. Ниже две колонки: слева «Über den Partner», «Produkte & Leistungen» и «Weitere Partner»,
 * справа липкие карточки «Kontakt & Adresse» и мини-карта. Один вертикальный ритм — переменная --pmp-gap.
 * Токены и боковое поле — те же, что в каталоге и сквозной шапке. */

.pm-partner-main { max-width: none; width: 100%; }

.pm-partner {
	--pmp-line: #e2e8f0; --pmp-muted: #64748b; --pmp-primary: #0f766e; --pmp-soft: #f8fafc;
	--pmp-radius: 16px; --pmp-pad: 1.35rem; --pmp-gap: 1.25rem;
	--pmp-gutter: clamp(16px, 2vw, 24px);
	--pmp-max: 1180px;
	box-sizing: border-box; width: 100%; max-width: calc(var(--pmp-max) + 2 * var(--pmp-gutter));
	margin: 1.25rem auto 3rem; padding-inline: var(--pmp-gutter);
	color: #1f2937;
}
.pm-partner *, .pm-partner *::before, .pm-partner *::after { box-sizing: border-box; }
.pm-partner__placeholder { padding: 1rem; border: 1px dashed var(--pmp-line); border-radius: 12px; color: var(--pmp-muted); }

/* ---------- Крошки */
.pm-partner__crumbs { display: flex; flex-wrap: wrap; gap: 0.35rem; margin: 0 0 0.9rem; font-size: 0.85em; color: var(--pmp-muted); }
.pm-partner__crumbs a { color: inherit; text-decoration: none; }
.pm-partner__crumbs a:hover { text-decoration: underline; }

/* ---------- Панель-шапка: текст слева, фотография справа во всю высоту панели */
.pm-partner__hero {
	display: grid; grid-template-columns: minmax(0, 1fr); margin: 0 0 var(--pmp-gap);
	border: 1px solid var(--pmp-line); border-radius: var(--pmp-radius); overflow: hidden;
	background: color-mix(in srgb, var(--pm-cat, #0f766e) 5%, #ffffff);
}
.pm-partner__intro { display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: 0.65rem; min-width: 0; padding: var(--pmp-pad); }
.pm-partner__cats { display: flex; flex-wrap: wrap; gap: 0.4rem; margin: 0; }
.pm-partner__cat {
	display: inline-flex; align-items: center; gap: 0.4rem; padding: 0.2rem 0.75rem; border-radius: 999px;
	font-size: 0.8em; font-weight: 600; text-decoration: none; color: inherit;
	background: #ffffff; border: 1px solid color-mix(in srgb, var(--pm-cat, #0f766e) 35%, #ffffff);
}
.pm-partner__cat::before { content: ""; width: 0.55em; height: 0.55em; border-radius: 50%; background: var(--pm-cat, #0f766e); }
.pm-partner__cat:hover { border-color: var(--pm-cat, #0f766e); }
.pm-partner__title { margin: 0; font-size: clamp(1.7rem, 3vw, 2.3rem); line-height: 1.15; letter-spacing: -0.015em; text-wrap: balance; }
.pm-partner__lead { margin: 0; max-width: 56ch; color: #475569; font-size: 1.02em; }
.pm-partner__tags { display: flex; flex-wrap: wrap; gap: 0.35rem; margin: 0; }
.pm-partner__tag { font-size: 0.78em; padding: 0.2rem 0.7rem; border-radius: 999px; background: #ffffff; border: 1px solid var(--pmp-line); color: #475569; text-decoration: none; }
.pm-partner__tag:hover { border-color: #cbd5e1; color: #1f2937; }
.pm-partner__actions { display: flex; flex-wrap: wrap; gap: 0.5rem; margin: 0.35rem 0 0; }
.pm-partner__btn {
	display: inline-flex; align-items: center; gap: 0.45rem; padding: 0.6rem 1.1rem; border: 1px solid var(--pmp-line); border-radius: 999px;
	background: #ffffff; color: inherit; text-decoration: none; font-size: 0.95em; line-height: 1.2; cursor: pointer;
}
.pm-partner__btn svg { width: 18px; height: 18px; }
.pm-partner__btn:hover { border-color: #cbd5e1; color: inherit; }
.pm-partner__btn--primary { background: var(--pmp-primary); border-color: var(--pmp-primary); color: #ffffff; font-weight: 600; }
.pm-partner__btn--primary:hover { background: #0b5f59; border-color: #0b5f59; color: #ffffff; }
/* Фотография позиционируется абсолютно: иначе её собственная высота задаёт высоту всей панели. */
.pm-partner__media { position: relative; margin: 0; min-height: 200px; overflow: hidden; background: color-mix(in srgb, var(--pm-cat, #0f766e) 10%, #ffffff); }
.pm-partner__media img, .pm-partner__img { position: absolute; inset: 0; display: block; width: 100%; height: 100%; object-fit: cover; }

/* ---------- Сетка и карточки */
.pm-partner__grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--pmp-gap); align-items: start; }
.pm-partner__main { display: flex; flex-direction: column; gap: var(--pmp-gap); min-width: 0; }
.pm-partner__aside { display: flex; flex-direction: column; gap: var(--pmp-gap); min-width: 0; }
.pm-partner__card, .pm-partner__box {
	min-width: 0; padding: var(--pmp-pad); background: #ffffff;
	border: 1px solid var(--pmp-line); border-radius: var(--pmp-radius);
}
.pm-partner__box--map { padding: 0; overflow: hidden; }
.pm-partner__h2 { display: flex; align-items: center; gap: 0.5rem; margin: 0 0 0.75rem; font-size: 1.15rem; line-height: 1.25; }
.pm-partner__h2icon { width: 1.15em; height: 1.15em; color: var(--pmp-primary); flex: none; }
.pm-partner__h3 { margin: 0 0 0.75rem; font-size: 1.05rem; line-height: 1.3; }
.pm-partner__hint { margin: -0.4rem 0 0.9rem; color: var(--pmp-muted); font-size: 0.88em; }
.pm-partner__text { color: #334155; }
.pm-partner__text > :first-child { margin-top: 0; }
.pm-partner__text > :last-child { margin-bottom: 0; }
.pm-partner__text img { max-width: 100%; height: auto; border-radius: 12px; }

/* ---------- Товары и услуги: плитки с цветной полосой категории, название сверху, ссылка кнопкой снизу */
.pm-partner__products { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 0.75rem; margin: 0; padding: 0; list-style: none; }
.pm-partner__product {
	position: relative; display: flex; flex-direction: column; justify-content: space-between; gap: 0.7rem; min-height: 6.25rem;
	margin: 0; padding: 0.95rem 1rem 0.9rem; border: 1px solid var(--pmp-line); border-radius: 12px; background: #ffffff;
	box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
	transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.pm-partner__product::before {
	content: ""; position: absolute; inset: 0 0 auto 0; height: 3px;
	background: var(--pm-cat, #0f766e); opacity: 0.85; border-radius: 12px 12px 0 0;
}
.pm-partner__product:hover { border-color: #cbd5e1; box-shadow: 0 8px 20px rgba(15, 23, 42, 0.07); }
.pm-partner__product-name { font-weight: 600; font-size: 1.02em; line-height: 1.3; overflow-wrap: anywhere; }
.pm-partner__product-link {
	align-self: flex-start; display: inline-flex; align-items: center; gap: 0.3rem;
	padding: 0.3rem 0.75rem; border: 1px solid color-mix(in srgb, var(--pmp-primary) 35%, #ffffff); border-radius: 999px;
	font-size: 0.85em; font-weight: 600; color: var(--pmp-primary); text-decoration: none; white-space: nowrap;
}
.pm-partner__product-link:hover { background: var(--pmp-primary); border-color: var(--pmp-primary); color: #ffffff; text-decoration: none; }

/* ---------- Карточка контактов и мини-карта */
.pm-partner__dl { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0.15rem; margin: 0; }
.pm-partner__dl dt { color: var(--pmp-muted); font-size: 0.75em; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; margin-top: 0.85rem; }
.pm-partner__dl dt:first-child { margin-top: 0; }
.pm-partner__dl dd { margin: 0; }
.pm-partner__dl a { color: inherit; }
.pm-partner__area a { text-decoration: none; }
.pm-partner__area a:hover { text-decoration: underline; }
.pm-partner__map { height: 240px; background: #e5e7eb; }
.pm-partner__map--error { display: flex; align-items: center; justify-content: center; }
.pm-partner__maplinks { display: flex; flex-wrap: wrap; gap: 0.5rem 1.25rem; margin: 0; padding: 0.75rem var(--pmp-pad); font-size: 0.9em; border-top: 1px solid var(--pmp-line); }
.pm-partner__maplinks a { color: var(--pmp-primary); text-decoration: none; }
.pm-partner__maplinks a:hover { text-decoration: underline; }
.pm-partner .maplibregl-ctrl-attrib { font-size: 10px; }

/* ---------- Похожие партнёры: карточки каталога чуть компактнее, а без фотографии
 * вместо большой заглушки — узкая цветная полоса с названием категории. */
.pm-partner__related .pm-catalog__cards { gap: 0.9rem; margin-top: 0.15rem; }
.pm-partner__related .pm-ccard { border-radius: 12px; }
.pm-partner__related .pm-ccard__body { padding: 0.8rem 0.9rem 0.9rem; }
/* Одинаковая высота шапки у всех карточек блока: иначе карточка с фотографией и без неё
 * начинают текст на разной высоте и выглядят несогласованно. */
.pm-partner__related .pm-ccard__media { aspect-ratio: auto; height: 6.5rem; }
.pm-partner__related .pm-ccard--noimage .pm-ccard__img--empty svg { width: 28px; height: 28px; opacity: 0.6; }
/* Ссылка в каталог отделена от карточек чертой и оформлена кнопкой, иначе сливалась с ними. */
.pm-partner__more { margin: 1.35rem 0 0; padding-top: 1.1rem; border-top: 1px solid var(--pmp-line); }
.pm-partner__more a {
	display: inline-flex; align-items: center; gap: 0.4rem; padding: 0.5rem 1rem;
	border: 1px solid color-mix(in srgb, var(--pmp-primary) 35%, #ffffff); border-radius: 999px;
	color: var(--pmp-primary); text-decoration: none; font-weight: 600; font-size: 0.95em;
}
.pm-partner__more a:hover { background: var(--pmp-primary); border-color: var(--pmp-primary); color: #ffffff; }

/* ---------- Десктоп */
@media (min-width: 900px) {
	.pm-partner { --pmp-pad: 1.5rem; --pmp-gap: 1.5rem; }
	/* Высоту панели задаёт текст (не меньше 240px), фотография кадрируется по этой высоте. */
	.pm-partner__hero { grid-template-columns: minmax(0, 1fr) minmax(0, 40%); grid-auto-rows: minmax(240px, auto); }
	.pm-partner__hero--nomedia { grid-template-columns: minmax(0, 1fr); grid-auto-rows: auto; }
	.pm-partner__media { height: 100%; min-height: 0; }
	.pm-partner__grid { grid-template-columns: minmax(0, 1fr) 330px; }
	.pm-partner__aside { position: sticky; top: 1rem; }
	.pm-partner__products { grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); }
	.pm-partner__related .pm-catalog__cards { grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); }
}
@media (min-width: 1400px) {
	.pm-partner { --pmp-max: 1280px; }
	.pm-partner__grid { grid-template-columns: minmax(0, 1fr) 360px; }
}
