/* v2.9 interactive world map (loaded by map.html only). Colours come from the site's theme variables so light/dark just work. */
.wm-sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.wm-box{position:relative;background:var(--ocean);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;aspect-ratio:3/2;contain:layout paint}
@media(min-width:861px){.wm-box{aspect-ratio:2/1}}
#wm-svg{display:block;width:100%;height:100%;touch-action:pan-y;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;cursor:grab;outline-offset:-3px}
#wm-svg.dragging{cursor:grabbing}
#wm-svg:focus-visible{outline:3px solid var(--brand)}
#wm-svg .grat{stroke:rgba(120,130,140,.2);stroke-width:1;vector-effect:non-scaling-stroke;fill:none}
#wm-svg path.c{fill:var(--chip);stroke:var(--panel);stroke-width:.6;vector-effect:non-scaling-stroke;cursor:pointer;transition:fill-opacity .2s}
#wm-svg path.c.hot{fill:var(--brand)}
#wm-svg path.c.nodata{cursor:default}
#wm-svg.moving path.c{pointer-events:none}
@media(hover:hover){#wm-svg path.c:hover{stroke:var(--ink);stroke-width:1.4}}
#wm-svg path.sel{fill:none;stroke:var(--ink);stroke-width:2.4;vector-effect:non-scaling-stroke;pointer-events:none;stroke-linejoin:round}
#wm-svg path.home{fill:none;stroke:var(--gold);stroke-width:1.6;stroke-dasharray:4 3;vector-effect:non-scaling-stroke;pointer-events:none}
#wm-svg .vdot{fill:#ffb703;stroke:#7a4e00;stroke-width:1;fill-opacity:.85;pointer-events:none}
#wm-svg .cdot{fill:#ffb703;stroke:#7a4e00;stroke-width:.8;fill-opacity:.8;cursor:pointer}
#wm-svg .cdot:hover,#wm-svg .cdot.focus{stroke:#000;stroke-width:2}
.wm-box:not(.zoomed) #wm-svg .cdot{display:none}
.wm-tip{position:absolute;pointer-events:none;background:var(--ink);color:var(--bg);font-size:12px;padding:4px 8px;border-radius:6px;white-space:nowrap;z-index:2;max-width:70%;overflow:hidden;text-overflow:ellipsis}
.wm-ctl{position:absolute;right:10px;top:10px;display:flex;flex-direction:column;gap:6px;z-index:2}
.wm-ctl button{width:40px;height:40px;border-radius:10px;border:1px solid var(--line);background:var(--panel);color:var(--ink);font-size:20px;line-height:1;box-shadow:var(--shadow);cursor:pointer;touch-action:manipulation}
.wm-ctl button:hover{background:var(--chip)}
.wm-ctl button:focus-visible,.wm-seg button:focus-visible,.wm-rank button:focus-visible,.wm-tabs button:focus-visible,.wm-close:focus-visible,.wm-panel a:focus-visible,#wm-pick:focus-visible{outline:3px solid var(--brand);outline-offset:2px}
.wm-hint{position:absolute;left:10px;bottom:8px;font-size:12px;color:var(--muted);background:color-mix(in srgb,var(--panel) 85%,transparent);padding:2px 8px;border-radius:999px;pointer-events:none;max-width:calc(100% - 20px)}
.wm-hint .t{display:none}.wm-hint .m{display:inline}
@media(pointer:coarse){.wm-hint .t{display:inline}.wm-hint .m{display:none}}
.wm-loading{position:absolute;inset:0;display:grid;place-items:center;color:var(--muted);font-size:14px}
.wm-loading[hidden]{display:none}
.maplegend{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);margin:6px 2px}.maplegend i{display:block;width:140px;height:8px;border-radius:4px;background:linear-gradient(90deg,color-mix(in srgb,var(--brand) 18%,var(--chip)),var(--brand))}
.maplegend .wm-keys{margin-left:auto;text-align:right}
.wm-tools{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;margin:10px 0}
.wm-tools label{font-size:13px;color:var(--muted)}
#wm-pick{max-width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--panel);color:var(--ink);font:inherit;font-size:14px;min-height:40px}
.wm-rank{list-style:none;margin:8px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:6px 10px}
.wm-rank button{width:100%;display:flex;align-items:center;gap:8px;text-align:start;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:8px 10px;color:var(--ink);cursor:pointer;min-height:40px;position:relative;overflow:hidden}
.wm-rank button:hover,.wm-rank button[aria-current=true]{border-color:var(--brand)}
.wm-rank .bar{position:absolute;inset:auto 0 0 0;height:3px;background:var(--brand);transform-origin:left;opacity:.55}
.wm-rank .nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;font-size:14px}.wm-rank .n{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
/* the panel: side panel on desktop, slide-up sheet on small screens */
.wm-panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;margin-bottom:12px;position:sticky;top:176px;max-height:calc(100vh - 200px);overflow:auto;overscroll-behavior:contain}
.wm-panel .wm-empty{color:var(--muted);font-size:14px}
.wm-panel.has .wm-empty{display:none}
.wm-head{display:flex;align-items:flex-start;gap:8px}.wm-head h2{margin:0;flex:1;font-size:20px;line-height:1.25;outline:none}
.wm-grip{display:none}
.wm-close{display:none;border:1px solid var(--line);background:var(--chip);color:var(--ink);width:40px;height:40px;border-radius:999px;font-size:18px;cursor:pointer;touch-action:manipulation}
.wm-sub{margin:2px 0 8px;font-size:13px;color:var(--muted)}
.wm-chips{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 10px}.wm-chips span{background:var(--chip);border-radius:999px;padding:3px 10px;font-size:13px}
.wm-seg{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.wm-seg button,.wm-tabs button{border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:999px;padding:6px 12px;font-size:13px;cursor:pointer;min-height:36px;touch-action:manipulation}
.wm-seg button[aria-pressed=true],.wm-tabs button[aria-selected=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.wm-tabs{display:flex;gap:6px;margin:12px 0 6px;flex-wrap:wrap}
.wm-panel h3{margin:14px 0 6px;font-size:14px;text-transform:none;color:var(--muted)}
.wm-list{list-style:none;margin:0;padding:0}.wm-list li{padding:8px 0;border-bottom:1px solid var(--line)}.wm-list li:last-child{border-bottom:0}
.wm-list a{font-weight:600;line-height:1.3;display:inline-block}.wm-list a:hover{color:var(--brand)}
.wm-list .meta{font-size:12px;color:var(--muted);margin-top:2px;display:flex;gap:6px;flex-wrap:wrap}
.wm-badge{background:var(--chip);border-radius:6px;padding:0 6px;font-size:11px}
.wm-note{font-size:12px;color:var(--muted);margin:6px 0}
.wm-actions{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 4px;align-items:center}
.wm-skel{height:12px;border-radius:6px;background:var(--chip);margin:10px 0;animation:wm-pulse 1.1s ease-in-out infinite}.wm-skel:nth-child(2){width:80%}.wm-skel:nth-child(3){width:60%}
@keyframes wm-pulse{50%{opacity:.45}}
@media(max-width:860px){
  .wm-panel{position:fixed;left:0;right:0;bottom:0;top:auto;z-index:45;margin:0;border-radius:18px 18px 0 0;max-height:55vh;padding:6px 16px calc(18px + env(safe-area-inset-bottom));
    transform:translateY(105%);visibility:hidden;transition:transform .28s cubic-bezier(.2,.8,.2,1),visibility 0s .28s;box-shadow:0 -8px 30px rgba(0,0,0,.25);will-change:transform}
  .wm-panel.open{transform:none;visibility:visible;transition:transform .28s cubic-bezier(.2,.8,.2,1)}
  .wm-panel.dragging{transition:none}
  .wm-grip{display:block;width:44px;height:5px;border-radius:3px;background:var(--line);margin:4px auto 8px;touch-action:none}
  .wm-head{touch-action:none}
  .wm-close{display:block}
  body.wm-sheet-open{overscroll-behavior:none}
}
@media(min-width:861px){.wm-close{display:none}}
@media(prefers-reduced-motion:reduce){.wm-panel,.wm-panel.open{transition:none}.wm-skel{animation:none}}
