/* Shared world-map rendering — homepage + schedule journey. */
    .wmap { display: block; width: 100%; height: auto; }
    .wmap .wm-land path { fill: #13211a; stroke: #0a1510; stroke-width: 0.3; transition: fill .45s; }
    .wmap .wm-land path#us, .wmap .wm-land path#ca, .wmap .wm-land path#br, .wmap .wm-land path#gb, .wmap .wm-land path#be, .wmap .wm-land path#jp, .wmap .wm-land path#au { fill: #1c3025; }
    .wm-cont { fill: var(--gray-500); opacity: .13; font-family: var(--font-heading); font-weight: 700; font-size: 15px; letter-spacing: .22em; text-anchor: middle; pointer-events: none; transition: opacity .4s; }
    .wm-route { transition: opacity .4s; }
    .wm-route path { fill: none; stroke: #58b89a; stroke-width: 1; stroke-dasharray: 2.5 7; stroke-linecap: round; opacity: .26; animation: wm-flow 1.15s linear infinite; }
    @keyframes wm-flow { to { stroke-dashoffset: -9.5; } }
    .wmap .pin { --c: var(--lime); cursor: pointer; outline: none; }
    .wmap .pin-am { --c: #c5e000; } .wmap .pin-eu { --c: #5aa9ff; } .wmap .pin-as { --c: #ff6ec7; } .wmap .pin-oc { --c: #ff9f43; }
    .wmap .pin .hit { fill: transparent; r: 15; }
    .wmap .pin .pulse { fill: var(--c); animation: wmpulse 2.6s ease-out infinite; }
    .wmap .pin .ring { fill: none; stroke: var(--c); stroke-width: 1.3; opacity: 0; }
    .wmap .pin.spot .ring, .wmap .pin:hover .ring { animation: wm-ring 1.7s ease-out infinite; }
    @keyframes wm-ring { 0% { r: 11; opacity: .9; stroke-width: 1.8; } 100% { r: 33; opacity: 0; stroke-width: .3; } }
    .wmap .pin .dot { r: 11; fill: var(--c); stroke: #04100d; stroke-width: 1; filter: drop-shadow(0 0 5px var(--c)); transition: r .2s; }
    .wmap .pin.spot .dot, .wmap .pin:hover .dot, .wmap .pin:focus-visible .dot { r: 13.5; }
    .wmap .pin .rnum { font-family: var(--font-heading); font-weight: 700; font-size: 11.5px; fill: #04100d; text-anchor: middle; dominant-baseline: central; pointer-events: none; }
    .wmap .pin .plab { font-family: var(--font-mono); font-weight: 700; font-size: 8.5px; fill: #e6f2e8; stroke: #04100d; stroke-width: 2.4; paint-order: stroke; letter-spacing: .01em; pointer-events: none; opacity: 0; transition: opacity .3s; }
    .wmap:not(.sel) .pin.spot .plab, .wmap .pin:hover .plab, .wmap .pin:focus-visible .plab { opacity: 1; }
    @keyframes wmpulse { 0% { r: 10; opacity: .5; } 100% { r: 29; opacity: 0; } }
    /* leader lines — hidden by default, draw out to the location dot on hover/spot/select */
    .wmap .wm-lead { stroke: var(--c2,#9fb3a8); stroke-width: 1; opacity: 0; stroke-dasharray: 170; stroke-dashoffset: 170; transition: opacity .25s ease, stroke-dashoffset .55s ease; }
    .wmap .wm-lead.l-am{--c2:#c5e000} .wmap .wm-lead.l-eu{--c2:#5aa9ff} .wmap .wm-lead.l-as{--c2:#ff6ec7} .wmap .wm-lead.l-oc{--c2:#ff9f43}
    .wmap .wm-lead.on { opacity: .8; stroke-dashoffset: 0; }
    .wmap .wm-anchor { r: 2.4; opacity: .45; transition: opacity .25s; }
    .wmap .wm-anchor.a-am{fill:#c5e000} .wmap .wm-anchor.a-eu{fill:#5aa9ff} .wmap .wm-anchor.a-as{fill:#ff6ec7} .wmap .wm-anchor.a-oc{fill:#ff9f43}
    .wmap .wm-anchor.on { opacity: 1; }
    .wmap.sel .pin:not(.on) { opacity: .5; }
    .wmap.sel .pin:not(.on) .pulse { animation: none; }
    .wmap.sel .wm-cont, .wmap.sel .wm-route { opacity: 0; }
    .wmap.sel .wm-anchor:not(.on) { opacity: .18; }
    @keyframes wm-ignite { 0%{opacity:0;transform:scale(0)} 55%{opacity:1;transform:scale(1.7)} 100%{transform:scale(1)} }
    .wmap.lit .pin .dot { animation: wm-ignite .55s both; animation-delay: calc(var(--i,0) * .09s); }
    @media (prefers-reduced-motion: reduce) { .wmap.lit .pin .dot { animation: none; } .wm-route path { animation: none; } .wmap .pin.spot .ring { animation: none; } .wm-tip.on { animation: none; } .wm-conn line { animation: none; } }

/* scroll-journey: persistent highlight for the active venue */
.wmap.journey .pin { cursor: default; }
.wmap.journey .pin:not(.active) { opacity: .4; transition: opacity .4s; }
.wmap.journey .pin:not(.active) .pulse { animation: none; }
.wmap.journey .pin.active .dot { r: 14; }
.wmap.journey .pin.active .ring { animation: wm-ring 1.7s ease-out infinite; }
.wmap.journey .pin.active .plab { opacity: 1; }
.wmap.journey .wm-cont, .wmap.journey .wm-route { opacity: 0; }
.wmap.journey .wm-anchor:not(.on) { opacity: .15; }

/* click-driven dashboard: keep pins interactive while highlighting the active venue */
.wmap.dash .pin { cursor: pointer; }
.wmap.dash .pin:not(.active) { opacity: .5; transition: opacity .3s; }
.wmap.dash .pin:not(.active):hover { opacity: .9; }
.wmap.dash .pin:not(.active):hover .ring { animation: wm-ring 1.7s ease-out infinite; }
.wmap.dash .pin:hover .plab, .wmap.dash .pin:focus-visible .plab { opacity: 1; }
