/* Topad — carte des repères (front et administration) */
.tp-map {
	--tp-map-h: clamp(380px, 56vh, 620px);
	position: relative; height: var(--tp-map-h); overflow: hidden;
	background: #E8EEEC; color: #152D32; font-family: inherit;
	touch-action: pan-y; user-select: none; -webkit-user-select: none; cursor: grab;
}
.tp-map.is-dragging { cursor: grabbing; }
.tp-map:focus-visible { outline: 3px solid #37A5D7; outline-offset: 3px; }
.tp-map__pane { position: absolute; left: 0; top: 0; will-change: transform; }
.tp-map__tiles img {
	position: absolute; width: 256px !important; height: 256px !important; max-width: none !important;
	margin: 0; padding: 0; border: 0; border-radius: 0 !important; box-shadow: none;
	opacity: 0; transition: opacity .25s ease; -webkit-user-drag: none; pointer-events: none;
}
.tp-map__tiles img.is-loaded { opacity: 1; }
.tp-map--mono .tp-map__tiles { filter: grayscale(1) contrast(1.04) brightness(1.03); }
.tp-map__markers { position: absolute; left: 0; top: 0; }
.tp-map__marker {
	position: absolute; width: 40px; height: 52px; margin: 0; padding: 0;
	border: 0; background: none; cursor: pointer; transform: translate(-50%, -100%);
	filter: drop-shadow(0 6px 8px rgba(15, 34, 38, .35)); transition: transform .15s ease;
}
.tp-map__marker svg { display: block; width: 100%; height: 100%; }
.tp-map__marker:hover, .tp-map__marker[aria-expanded=true] { transform: translate(-50%, -100%) scale(1.08); z-index: 2; }
.tp-map__marker:focus-visible { outline: 3px solid #37A5D7; outline-offset: 2px; }
.tp-map__controls { position: absolute; z-index: 4; right: 14px; top: 14px; display: flex; flex-direction: column; gap: 1px; box-shadow: 0 6px 18px rgba(15, 34, 38, .18); }
.tp-map__controls button {
	width: 42px; height: 42px; margin: 0; padding: 0; border: 0; border-radius: 0;
	background: #fff; color: #152D32; font: 700 22px/1 Arial, sans-serif; cursor: pointer;
}
.tp-map__controls button:hover { background: #152D32; color: #fff; }
.tp-map__controls button:focus-visible { outline: 3px solid #37A5D7; outline-offset: -3px; }
.tp-map__attr { position: absolute; z-index: 4; right: 0; bottom: 0; padding: 3px 8px; background: rgba(255, 255, 255, .88); color: #3C4D51; font: 400 11px/1.4 Arial, sans-serif; }
.tp-map__attr a { color: inherit; }
.tp-map__hint {
	position: absolute; z-index: 5; inset: 0; display: flex; align-items: center; justify-content: center;
	padding: 20px; background: rgba(21, 45, 50, .58); color: #fff; font-weight: 700; text-align: center;
	opacity: 0; pointer-events: none; transition: opacity .25s ease;
}
.tp-map__hint.is-visible { opacity: 1; }
.tp-map__popup {
	position: absolute; z-index: 6; width: 270px; max-width: 80vw; padding: 16px 44px 18px 20px;
	transform: translate(-50%, calc(-100% - 62px)); cursor: auto; user-select: text;
	background: #fff; color: #152D32; border-top: 3px solid #37A5D7; box-shadow: 0 18px 40px rgba(15, 34, 38, .28);
}
.tp-map__popup::after { content: ""; position: absolute; left: 50%; bottom: -8px; width: 16px; height: 16px; background: #fff; transform: translateX(-50%) rotate(45deg); }
.tp-map__popup p { margin: 0; }
.tp-map__popup-type { font-size: 12px; font-weight: 700; color: #0C6F9D; }
.tp-map__popup-title { margin-top: 4px !important; font-size: 17px; font-weight: 700; line-height: 1.3; }
.tp-map__popup-text { margin-top: 6px !important; font-size: 14px; line-height: 1.5; color: #536468; }
.tp-map__popup-link { display: inline-block; margin-top: 10px; color: #0C6F9D; font-size: 14px; font-weight: 700; text-decoration: underline; text-underline-offset: 4px; }
.tp-map__close { position: absolute; right: 6px; top: 6px; width: 32px; height: 32px; padding: 0; border: 0; background: none; color: #152D32; font: 400 24px/1 Arial, sans-serif; cursor: pointer; }
.tp-map-list { display: flex; flex-wrap: wrap; gap: 8px 26px; margin: 18px 0 0; padding: 0; list-style: none; font-size: 14px; color: #536468; }
.tp-map-list li { display: flex; align-items: center; gap: 8px; }
.tp-map-list li::before { content: ""; flex: none; width: 10px; height: 10px; border-radius: 50%; background: #37A5D7; }
.tp-map-list li[data-type=reseller]::before { background: #152D32; }
.tp-map-list a { color: #152D32; font-weight: 700; }
.tp-map-list span { color: #536468; }
.tp-map-empty { padding: 20px 24px; border: 1px dashed #B7C6C2; font-size: 14px; }
