/* IAFR Partner Map — uses the theme's --iafr-* variables with fallbacks. */
.iafr-pmap {
	--pmap-red: var(--iafr-primary, #c90100);
	--pmap-dark: var(--iafr-dark, #2a2525);
	--pmap-muted: var(--iafr-muted, #5a5a5a);
}
.iafr-pmap-map {
	position: relative;
	width: 100%;
}
.iafr-pmap-world {
	display: block;
	width: 100%;
	height: auto;
	user-select: none;
	pointer-events: none;
}

/* Pin */
.iafr-pmap-pin {
	position: absolute;
	width: 28px;
	height: 28px;
	margin: -14px 0 0 -14px;
	padding: 0;
	border: 0;
	background: none;
	cursor: pointer;
	text-decoration: none;
	z-index: 1;
}
.iafr-pmap-pin:hover,
.iafr-pmap-pin:focus-visible,
.iafr-pmap-pin.is-open { z-index: 5; outline: none; }

.iafr-pmap-dot,
.iafr-pmap-dot::after {
	position: absolute;
	left: 50%;
	top: 50%;
	border-radius: 50%;
	background: var(--pmap-red);
}
.iafr-pmap-dot {
	width: 12px;
	height: 12px;
	margin: -6px 0 0 -6px;
	box-shadow: 0 0 0 3px #fff, 0 2px 6px rgba(0, 0, 0, 0.25);
	transition: transform 0.2s;
}
.iafr-pmap-dot::after {
	content: "";
	width: 100%;
	height: 100%;
	margin: -50% 0 0 -50%;
	opacity: 0.5;
	animation: iafr-pmap-pulse 2.4s ease-out infinite;
	animation-delay: var(--d, 0s);
}
.iafr-pmap-pin:hover .iafr-pmap-dot,
.iafr-pmap-pin:focus-visible .iafr-pmap-dot,
.iafr-pmap-pin.is-open .iafr-pmap-dot { transform: scale(1.35); }
.iafr-pmap-pin:focus-visible .iafr-pmap-dot { box-shadow: 0 0 0 3px #fff, 0 0 0 5px var(--pmap-dark); }

@keyframes iafr-pmap-pulse {
	0% { transform: scale(1); opacity: 0.5; }
	70%, 100% { transform: scale(3.2); opacity: 0; }
}

/* Popup — matches the old .partner-card */
.iafr-pmap-pop {
	position: absolute;
	left: 50%;
	bottom: calc(100% + 6px);
	width: 300px;
	max-width: 80vw;
	padding: 20px 22px;
	background: #fff;
	border: 1px solid #d5d5d5;
	border-top: 3px solid var(--pmap-red);
	box-shadow: 0 8px 28px rgba(0, 0, 0, 0.14);
	text-align: left;
	white-space: normal;
	transform: translate(-50%, 6px);
	opacity: 0;
	visibility: hidden;
	pointer-events: none;
	transition: opacity 0.18s, transform 0.18s, visibility 0s 0.18s;
}
.iafr-pmap-pin.is-below .iafr-pmap-pop { bottom: auto; top: calc(100% + 6px); transform: translate(-50%, -6px); }
.iafr-pmap-pin.is-left .iafr-pmap-pop { left: auto; right: -10px; transform: translate(0, 6px); }
.iafr-pmap-pin.is-right .iafr-pmap-pop { left: -10px; transform: translate(0, 6px); }
.iafr-pmap-pin.is-below.is-left .iafr-pmap-pop,
.iafr-pmap-pin.is-below.is-right .iafr-pmap-pop { transform: translate(0, -6px); }

.iafr-pmap-pin:hover .iafr-pmap-pop,
.iafr-pmap-pin:focus-visible .iafr-pmap-pop,
.iafr-pmap-pin.is-open .iafr-pmap-pop {
	opacity: 1;
	visibility: visible;
	transform: translate(-50%, 0);
	transition: opacity 0.18s, transform 0.18s;
	pointer-events: auto;
}
/* Invisible bridge over the gap so the popup stays open while the mouse moves onto it */
.iafr-pmap-pop::before {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	top: 100%;
	height: 10px;
}
.iafr-pmap-pin.is-below .iafr-pmap-pop::before { top: auto; bottom: 100%; }
.iafr-pmap-pin.is-left:hover .iafr-pmap-pop, .iafr-pmap-pin.is-left:focus-visible .iafr-pmap-pop, .iafr-pmap-pin.is-left.is-open .iafr-pmap-pop,
.iafr-pmap-pin.is-right:hover .iafr-pmap-pop, .iafr-pmap-pin.is-right:focus-visible .iafr-pmap-pop, .iafr-pmap-pin.is-right.is-open .iafr-pmap-pop { transform: none; }

.iafr-pmap-pop .partner-region,
.iafr-pmap-list .partner-region {
	display: block;
	font-size: 10px;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--pmap-red);
	margin-bottom: 6px;
}
.iafr-pmap-title {
	display: block;
	font-family: var(--font-display, Georgia, serif);
	font-size: 1.15rem;
	font-weight: 600;
	line-height: 1.25;
	color: var(--pmap-dark);
	margin-bottom: 8px;
}
.iafr-pmap-desc {
	display: block;
	font-size: 0.85rem;
	line-height: 1.6;
	color: var(--pmap-muted);
	margin-bottom: 12px;
}
.iafr-pmap-pop .partner-link {
	display: inline-block;
	font-size: 11px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--pmap-red);
}
.iafr-pmap-pin:hover .partner-link { text-decoration: underline; }

/* Compact list — shown on small screens where pins are too close to tap */
.iafr-pmap-list {
	display: none;
	list-style: none;
	margin: 24px 0 0;
	padding: 0;
	gap: 10px;
}
.iafr-pmap-list a,
.iafr-pmap-list div {
	display: block;
	padding: 14px 16px;
	background: #fff;
	border: 1px solid #d5d5d5;
	text-decoration: none;
}
.iafr-pmap-list a:hover { border-color: var(--pmap-red); }
.iafr-pmap-list .iafr-pmap-title { font-size: 1rem; margin: 0; }

@media (max-width: 767.98px) {
	.iafr-pmap-list { display: grid; }
	.iafr-pmap-pin { width: 20px; height: 20px; margin: -10px 0 0 -10px; pointer-events: none; }
	.iafr-pmap-dot { width: 8px; height: 8px; margin: -4px 0 0 -4px; box-shadow: 0 0 0 2px #fff; }
	.iafr-pmap-pop { display: none; }
}
@media (min-width: 576px) and (max-width: 767.98px) {
	.iafr-pmap-list { grid-template-columns: 1fr 1fr; }
}

@media (prefers-reduced-motion: reduce) {
	.iafr-pmap-dot::after { animation: none; }
	.iafr-pmap-dot, .iafr-pmap-pop { transition: none; }
}
