/**
 * AFAM Africa map (DES-053 / AFAM-MAP-001): own inline SVG, pulsing pins as buttons, popover cards, region list.
 * Author: Kiriago <kiryc0de@gmail.com> (https://github.com/kirycode/)
 */
.afam-map { --map-green: #0c643a; --map-dark: #084c2c; --map-gold: #cbae2d; display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 32px; align-items: start; }
.afam-map__stage { position: relative; width: 100%; max-width: 640px; margin: 0 auto; }
.afam-map__svg { display: block; width: 100%; height: auto; }
.afam-map__c { fill: #e6ece1; stroke: #fff; stroke-width: 1; transition: fill 0.25s ease; }
.afam-map__c.is-region { fill: #7fb069; cursor: pointer; }
.afam-map__c.is-region.is-soon { fill: #f2e6a8; }
.afam-map__c.is-region.is-on { fill: var(--map-dark); }
.afam-map__c.is-region.is-soon.is-on { fill: #cbae2d; }
/* pins: real buttons; 44 px hit area */
.afam-pin { position: absolute; width: 44px; height: 44px; margin: -22px 0 0 -22px; padding: 0; border: 0; border-radius: 50%; background: transparent; cursor: pointer; }
.afam-pin__dot { position: absolute; left: 50%; top: 50%; width: 18px; height: 18px; margin: -9px 0 0 -9px; border-radius: 50%; background: #e06c17; border: 3px solid #fff; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.35); transition: transform 0.2s ease; }
.afam-pin.is-soon .afam-pin__dot { background: var(--map-gold); }
.afam-pin__pulse { position: absolute; left: 50%; top: 50%; width: 18px; height: 18px; margin: -9px 0 0 -9px; border-radius: 50%; background: rgba(224, 108, 23, 0.55); animation: afam-pulse 2.2s ease-out infinite; }
.afam-pin.is-soon .afam-pin__pulse { background: rgba(203, 174, 45, 0.6); }
@keyframes afam-pulse { 0% { transform: scale(1); opacity: 0.9; } 100% { transform: scale(3.2); opacity: 0; } }
.afam-pin:is(:hover, :focus-visible) .afam-pin__dot, .afam-pin[aria-expanded="true"] .afam-pin__dot { transform: scale(1.25); }
.afam-pin:focus-visible { outline: 3px solid var(--map-dark); outline-offset: 0; background: rgba(255, 255, 255, 0.6); }
/* popover */
.afam-pop { position: absolute; z-index: 5; width: min(290px, calc(100% - 16px)); padding: 18px 20px 16px; border-radius: 14px; background: #fff; border-top: 5px solid var(--map-gold); box-shadow: 0 14px 38px rgba(0, 0, 0, 0.28); text-align: left; }
.afam-pop[hidden] { display: none; }
.afam-pop__close { position: absolute; right: 6px; top: 4px; width: 44px; height: 44px; border: 0; background: transparent; font-size: 1.75rem; line-height: 1; color: var(--map-dark); cursor: pointer; border-radius: 50%; }
.afam-pop__close:focus-visible { outline: 3px solid var(--map-dark); }
/* region cards (list and popover) */
.afam-map__list { display: grid; gap: 14px; margin: 0; padding: 0; list-style: none; }
.afam-map__item { margin: 0; padding: 16px 20px; border-radius: 12px; background: #fff; border-left: 6px solid var(--map-green); box-shadow: 0 4px 16px rgba(8, 76, 44, 0.1); transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease; }
.afam-map__item.is-on, .afam-map__item:hover, .afam-map__item:focus-within { transform: translateX(4px); border-left-color: #e06c17; box-shadow: 0 8px 24px rgba(8, 76, 44, 0.2); }
.afam-map .afam-region__name { margin: 0 0 4px; font-family: var(--afam-font-head, serif); font-size: 1.25rem; color: var(--map-dark); }
.afam-map .afam-region__countries, .afam-map .afam-region__note { margin: 0 0 8px; font-size: 0.9375rem; line-height: 1.5; color: #333; }
.afam-map .afam-region__mail { display: inline-block; min-height: 24px; font-weight: 700; color: #336600; overflow-wrap: anywhere; }
.afam-map__credit { grid-column: 1 / -1; margin: 0; font-size: 0.8125rem; color: #555; text-align: center; }
@media (max-width: 900px) { .afam-map { grid-template-columns: minmax(0, 1fr); gap: 24px; } }
@media (prefers-reduced-motion: reduce) { .afam-pin__pulse { animation: none; opacity: 0.35; transform: scale(2); } .afam-pin__dot, .afam-map__item, .afam-map__c { transition: none; } .afam-map__item.is-on, .afam-map__item:hover { transform: none; } }

/* U-024: host institution and regional contact */
.afam-map .afam-region__host { margin: 0 0 8px; padding: 8px 0 0; border-top: 1px solid rgba(12, 100, 58, 0.18); }
.afam-map .afam-region__label { margin: 0 0 2px; font-size: 0.75rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: #5b5b5b; }
.afam-map .afam-region__hostname { margin: 0 0 2px; font-weight: 700; color: var(--map-dark); }
.afam-map .afam-region__addr { margin: 0 0 4px; font-size: 0.9375rem; line-height: 1.45; color: #333; }
.afam-map .afam-region__site { display: inline-block; min-height: 24px; margin-bottom: 4px; font-weight: 700; color: #8f4208; }
.afam-map .afam-region__contact { margin: 0 0 6px; font-size: 0.9375rem; color: #333; }
.afam-map .afam-region__contact .afam-region__label { display: block; }
