/* ================= Vilsa Presence Map — front-end styles ================= */
/* No bundled fonts: the map inherits the fonts from the active WordPress theme. */

.vpm-root{
  /* Defaults — overridden inline per-instance from the plugin settings */
  --vpm-point:#1b2a4a; --vpm-point-hover:#33507f;
  --vpm-land:#e9e6df; --vpm-land-stroke:#ffffff;
  --vpm-bg-top:#fbfaf8; --vpm-bg-bottom:#f6f4ef;
  --vpm-ink:#14171c; --vpm-body:#3c4250; --vpm-muted:#7a8190;
  --vpm-eyebrow:#b08d4f; --vpm-tooltip-bg:#1b2a4a; --vpm-line:#e7e9ee;
  --vpm-font-head:inherit; --vpm-font-body:inherit;
  --vpm-ease:cubic-bezier(.22,.61,.36,1);
  display:block; font-family:var(--vpm-font-body); color:var(--vpm-body);
  padding:64px 0;
}
.vpm-root *{ box-sizing:border-box; }
.vpm-wrap{ max-width:1180px; margin:0 auto; padding:0 28px; }
.vpm-eyebrow{ font-family:var(--vpm-font-head); font-weight:600; font-size:12.5px; letter-spacing:.2em; text-transform:uppercase; color:var(--vpm-eyebrow); margin:0 0 12px; }
.vpm-title{ font-family:var(--vpm-font-head); font-weight:800; color:var(--vpm-ink); letter-spacing:-.02em; line-height:1.1; font-size:clamp(2rem,4.4vw,3rem); margin:0 0 16px; max-width:20ch; }
.vpm-lead{ max-width:64ch; color:var(--vpm-body); margin:0 0 8px; font-size:18px; line-height:1.7; }
.vpm-stats{ display:flex; flex-wrap:wrap; gap:40px; margin:28px 0 4px; }
.vpm-stats > div{ min-width:60px; }
.vpm-stats .n{ font-family:var(--vpm-font-head); font-weight:800; font-size:40px; color:var(--vpm-point); line-height:1; letter-spacing:-.02em; }
.vpm-stats .l{ font-size:14px; color:var(--vpm-muted); margin-top:6px; }
.vpm-map-wrap{ width:100%; margin-top:30px; }
.vpm-map-card{ position:relative; border-top:1px solid var(--vpm-line); border-bottom:1px solid var(--vpm-line);
  background:linear-gradient(180deg, var(--vpm-bg-top), var(--vpm-bg-bottom)); overflow:hidden; }
.vpm-map{ display:block; width:100%; height:auto; }
.vpm-land{ fill:var(--vpm-land); stroke:var(--vpm-land-stroke); stroke-width:.7px; stroke-linejoin:round; }
.vpm-dot{ fill:var(--vpm-point); cursor:pointer; transition:r .2s var(--vpm-ease), fill .2s var(--vpm-ease); }
.vpm-dot:hover{ fill:var(--vpm-point-hover); }
.vpm-ping{ fill:none; stroke:var(--vpm-point); stroke-width:1.4px; transform-box:fill-box; transform-origin:center; animation:vpm-ping 2.8s var(--vpm-ease) infinite; }
@keyframes vpm-ping{ 0%{transform:scale(.6);opacity:.5;} 70%{opacity:0;} 100%{transform:scale(3.4);opacity:0;} }
.vpm-tooltip{ position:absolute; pointer-events:none; background:var(--vpm-tooltip-bg); color:#fff; font-family:var(--vpm-font-head); font-weight:600; font-size:13px; padding:7px 12px; border-radius:8px; white-space:nowrap; transform:translate(-50%,-150%); opacity:0; transition:opacity .15s var(--vpm-ease); box-shadow:0 8px 22px -8px rgba(20,23,28,.5); z-index:5; }
.vpm-tooltip .c{ display:block; font-weight:400; font-size:11px; color:rgba(255,255,255,.7); margin-top:1px; }
.vpm-tooltip.show{ opacity:1; }
@media (prefers-reduced-motion:reduce){ .vpm-ping{ animation:none; opacity:0; } }
