.bl-map-head { margin-bottom: clamp(1.75rem, 3.5vw, 2.75rem); max-width: 760px; }
.bl-text-center .bl-map-head { margin-inline: auto; }

/* minmax(0,1fr) вместо 1fr: иначе длинный адрес без пробелов растягивает колонку
   шире контейнера, и весь блок уезжает за экран. */
.bl-map-layout { display: grid; grid-template-columns: minmax(0, 1fr); gap: clamp(1.25rem, 2.5vw, 2rem); }

/* Мобильный порядок задан один раз: карта всегда первая, список под ней. */
.bl-map-canvas { order: 1; min-width: 0; }
.bl-map-list { order: 2; min-width: 0; }

@media (min-width: 900px) {
	.bl-map--map-right .bl-map-layout,
	.bl-map--map-left .bl-map-layout { grid-template-columns: minmax(280px, 360px) minmax(0, 1fr); align-items: start; }
	.bl-map--map-right .bl-map-canvas { order: 2; }
	.bl-map--map-right .bl-map-list { order: 1; }
	.bl-map--map-left .bl-map-canvas { order: 1; }
	.bl-map--map-left .bl-map-list { order: 2; }
	.bl-map--map-full .bl-map-list { grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
}

.bl-map-canvas {
	position: relative;
	border-radius: var(--bl-card-radius);
	overflow: hidden;
	border: 1px solid var(--bl-border);
	box-shadow: var(--bl-shadow, none);
	background: var(--bl-surface);
}
.bl-map-canvas__inner {
	display: block;
	box-sizing: border-box;
	width: 100%;
	height: var(--bl-map-h, 500px);
	min-height: 280px;
	border: 0;
}
@media (max-width: 640px) {
	.bl-map-canvas__inner { height: min(var(--bl-map-h, 500px), 340px); }
}

.bl-map-canvas__fallback,
.bl-map-stub {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 1rem;
	height: 100%;
	padding: 2rem 1.5rem;
	text-align: center;
	color: var(--bl-muted);
}
.bl-map-stub { gap: .6rem; }
.bl-map-canvas__fallback p,
.bl-map-stub p { margin: 0; font-size: .9375rem; max-width: 36ch; overflow-wrap: anywhere; }
.bl-map-stub__name { font-weight: 700; color: var(--bl-text); }
.bl-map-stub__addr { color: var(--bl-text); font-size: 1.0625rem; font-weight: 600; max-width: 32ch; }
.bl-map-stub__hours { color: var(--bl-muted); }
.bl-map-stub .bl-btn { margin-top: .25rem; }

.bl-map-stub__pin {
	width: 44px;
	height: 44px;
	border-radius: 50% 50% 50% 0;
	transform: rotate(-45deg);
	background: var(--bl-accent);
	opacity: .85;
	position: relative;
}
.bl-map-stub__pin::after {
	content: "";
	position: absolute;
	inset: 14px;
	border-radius: 50%;
	background: var(--bl-surface);
}

.bl-map-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: .75rem;
	align-content: start;
}

.bl-map-item {
	position: relative;
	padding: 1.15rem 1.25rem;
	border: 1px solid var(--bl-border);
	border-radius: var(--bl-card-radius);
	background: var(--bl-surface);
	transition: border-color .2s ease, transform .2s ease;
}
.bl-map-item--main { border-color: color-mix(in srgb, var(--bl-accent) 45%, var(--bl-border)); }
.bl-map-item.is-active {
	border-color: var(--bl-accent);
	box-shadow: var(--bl-shadow, none);
}

/* Кнопка-подложка делает кликабельной всю карточку, но ссылки внутри
   лежат выше по z-index и продолжают работать сами по себе. */
.bl-map-item__pick {
	position: absolute;
	inset: 0;
	border: 0;
	padding: 0;
	background: transparent;
	cursor: pointer;
	border-radius: inherit;
}
.bl-map-item__pick:focus-visible { outline: 2px solid var(--bl-accent); outline-offset: 2px; }
.bl-map-item__body { position: relative; min-width: 0; }
/* Текст «прозрачен» для мыши только там, где под ним лежит кнопка-подложка;
   в остальных режимах адрес должен оставаться выделяемым. */
.bl-map-item--pickable .bl-map-item__body { pointer-events: none; }
.bl-map-item--pickable .bl-map-item__body a { position: relative; pointer-events: auto; z-index: 1; }

.bl-map-item__name {
	margin: 0 0 .4rem;
	font-size: 1.0625rem;
	font-weight: 700;
	line-height: 1.3;
	letter-spacing: -0.01em;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .5rem;
	overflow-wrap: anywhere;
}
.bl-map-item__badge {
	font-size: .6875rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: .04em;
	padding: .25em .6em;
	border-radius: var(--bl-radius-pill, 9999px);
	background: color-mix(in srgb, var(--bl-accent) 16%, transparent);
	color: var(--bl-accent);
}
.bl-map-item__addr { margin: 0 0 .35rem; font-size: .9375rem; line-height: 1.5; overflow-wrap: anywhere; }
.bl-map-item__hours,
.bl-map-item__phone { margin: 0 0 .35rem; font-size: .875rem; color: var(--bl-muted); overflow-wrap: anywhere; }
.bl-map-item__phone a { color: inherit; text-decoration: none; }
.bl-map-item__phone a:hover { color: var(--bl-accent); }

.bl-map-item__route {
	display: inline-flex;
	align-items: center;
	gap: .4rem;
	margin-top: .35rem;
	font-size: .875rem;
	font-weight: 600;
	color: var(--bl-accent);
	text-decoration: none;
}
.bl-map-item__route::after { content: "→"; transition: transform .2s ease; }
.bl-map-item__route:hover::after { transform: translateX(3px); }

/* Балун Яндекса живёт вне блока, поэтому стилизуем его глобально. */
.bl-map-balloon { font-size: .875rem; line-height: 1.5; max-width: 260px; }
.bl-map-balloon strong { display: block; font-size: 1rem; margin-bottom: .35rem; }
.bl-map-balloon p { margin: 0 0 .25rem; }
.bl-map-balloon__route {
	display: inline-block;
	margin-top: .5rem;
	font-weight: 600;
	color: var(--bl-accent);
	text-decoration: none;
}
