/* =============================================================================
 * Vitalum Exchange Map — exact port of the RIGHT column of the
 * "Exchange roadmap" section from exchanges.html (:216-243).
 * All rules scoped under .vxm-scope so nothing leaks in or out.
 * ============================================================================= */

.vxm-scope,
.vxm-scope *,
.vxm-scope *::before,
.vxm-scope *::after { box-sizing: border-box; }

.vxm-scope {
  --vxm-primary:   #1ebf95;
  --vxm-secondary: #2ac7dc;

  display: block;
  width: 100%;
  color: #f2f7fb;
  font-family: "Poppins", system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  text-align: center;
}

/* Wrap the whole widget in a centered flex so image + legend stack cleanly */
.vxm-scope .vxm-center {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
}

/* -------- Map -------- */
.vxm-scope .ex-map-wrap {
  position: relative;
  display: inline-block;
  width: 100%;
  max-width: 700px;
  margin: 0 auto;
}
.vxm-scope .ex-map-img {
  width: 100%;
  height: auto;
  display: block;
  opacity: .92;
}
.vxm-scope.vxm-tint .ex-map-img {
  filter: brightness(0) saturate(100%) invert(60%) sepia(35%) saturate(280%) hue-rotate(120deg) brightness(55%) contrast(105%);
}

/* -------- Glowing dots -------- */
.vxm-scope .ex-map-dot {
  position: absolute;
  width: 10px;
  height: 10px;
  background: var(--vxm-primary);
  border-radius: 50%;
  transform: translate(-50%, -50%);
  box-shadow: 0 0 0 3px rgba(30, 191, 149, .22), 0 0 14px rgba(30, 191, 149, .5);
  animation: vxmDotPulse 3s ease-in-out infinite;
}
.vxm-scope .ex-map-dot.lg {
  width: 14px;
  height: 14px;
  box-shadow: 0 0 0 4px rgba(30, 191, 149, .22), 0 0 22px rgba(30, 191, 149, .6);
}
.vxm-scope .ex-map-dot.me {
  background: var(--vxm-secondary);
  box-shadow: 0 0 0 4px rgba(42, 199, 220, .22), 0 0 22px rgba(42, 199, 220, .65);
  animation-name: vxmDotPulseMe;
}
.vxm-scope .ex-map-dot.lg.me { width: 14px; height: 14px; }

@keyframes vxmDotPulse {
  0%, 100% { box-shadow: 0 0 0 3px rgba(30, 191, 149, .22), 0 0 14px rgba(30, 191, 149, .5); }
  50%      { box-shadow: 0 0 0 6px rgba(30, 191, 149, .10), 0 0  6px rgba(30, 191, 149, .2); }
}
@keyframes vxmDotPulseMe {
  0%, 100% { box-shadow: 0 0 0 3px rgba(42, 199, 220, .22), 0 0 14px rgba(42, 199, 220, .5); }
  50%      { box-shadow: 0 0 0 6px rgba(42, 199, 220, .10), 0 0  6px rgba(42, 199, 220, .2); }
}

/* -------- Bottom legend -------- */
.vxm-scope .vxm-legend {
  display: flex;
  justify-content: center;
  gap: 1.5rem;
  margin-top: 1rem;
  flex-wrap: wrap;
  font-size: .74rem;
  color: #4d7870 !important;
}
.vxm-scope .vxm-legend-item {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
}
.vxm-scope .vxm-legend-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
  display: inline-block;
}
