/* ═══════════════════════════════════════════════════════════════
   Globe Network Overlay — Premium Marketplace Connection Layer
   All routes constrained inside globe boundary via clip-path
   ═══════════════════════════════════════════════════════════════ */

/* Network canvas sits between globe and pins, clipped to globe circle */
.globe-network-canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
  pointer-events: none;
  /* Match the globe circle clip: center 50% 38%, radius 35% of element */
  clip-path: circle(35% at 50% 38%);
  border-radius: 0;
}

/* ── Marketplace Pins — enhanced with pulse rings ── */
.world-visual .map-pin {
  position: absolute;
  z-index: 4;
  width: 52px;
  height: 52px;
  border-radius: 50%;
  background: #fff;
  padding: 7px;
  display: grid;
  place-items: center;
  box-shadow:
    0 4px 14px rgba(0,0,0,0.18),
    0 0 0 2px rgba(255, 160, 40, 0.35);
  transition: transform 0.25s cubic-bezier(0.34,1.56,0.64,1),
              box-shadow 0.25s ease;
  cursor: pointer;
  animation: pin-float var(--float-dur, 4.2s) var(--delay, 0s) ease-in-out infinite;
}

.world-visual .map-pin:hover {
  transform: scale(1.18) translateY(-3px);
  box-shadow:
    0 8px 22px rgba(255, 100, 20, 0.35),
    0 0 0 3px rgba(255, 140, 40, 0.6);
}

/* Pulse ring on each pin */
.world-visual .map-pin::before {
  content: '';
  position: absolute;
  inset: -6px;
  border-radius: 50%;
  border: 2px solid rgba(255, 120, 20, 0.55);
  animation: pin-pulse var(--float-dur, 4.2s) var(--delay, 0s) ease-out infinite;
  pointer-events: none;
}

/* Arrival glow — triggered by JS class */
.world-visual .map-pin.data-arrived::after {
  content: '';
  position: absolute;
  inset: -10px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255,150,30,0.55) 0%, transparent 70%);
  animation: arrival-burst 0.65s ease-out forwards;
  pointer-events: none;
}

@keyframes pin-float {
  0%, 100% { transform: translateY(0px); }
  50%       { transform: translateY(-5px); }
}

@keyframes pin-pulse {
  0%   { transform: scale(1);   opacity: 0.7; }
  60%  { transform: scale(1.6); opacity: 0;   }
  100% { transform: scale(1.6); opacity: 0;   }
}

@keyframes arrival-burst {
  0%   { transform: scale(0.6); opacity: 1; }
  100% { transform: scale(2.2); opacity: 0; }
}

/* Float durations — stagger per pin */
.world-visual .pin-west   { --float-dur: 4.4s; left: 28%; top: 22%; }
.world-visual .pin-north  { --float-dur: 3.9s; left: 48%; top: 12%; }
.world-visual .pin-center { --float-dur: 4.8s; left: 50%; top: 33%; }
.world-visual .pin-east   { --float-dur: 4.1s; left: 67%; top: 23%; }

/* ── Pause all when motion is paused ── */
.world-visual.paused .map-pin,
.world-visual.paused .map-pin::before {
  animation-play-state: paused !important;
}

/* ── Market Bubble ── */
.world-visual .market-bubble {
  bottom: 2%;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  gap: 10px;
  background: rgba(255,255,255,0.96);
  border: 1.5px solid #ffe0c0;
  border-radius: 14px;
  padding: 10px 16px;
  box-shadow: 0 8px 22px rgba(255,90,10,0.12);
  position: absolute;
  z-index: 5;
  white-space: nowrap;
  backdrop-filter: blur(4px);
}

.world-visual .bubble-icon {
  font-size: 1.1rem;
  color: #ff6010;
}

.world-visual .bubble-check {
  font-size: 0.9rem;
  color: #16a34a;
  font-weight: 700;
}

/* ── Responsive ── */
@media (max-width: 700px) {
  .world-visual .map-pin          { width: 38px; height: 38px; padding: 5px; }
  .world-visual .map-pin .meesho-word { font-size: 7px; }
  .globe-network-canvas           { clip-path: circle(35% at 50% 38%); }
}

@media (prefers-reduced-motion: reduce) {
  .world-visual .map-pin,
  .world-visual .map-pin::before,
  .world-visual .map-pin::after {
    animation: none !important;
  }
}
