<!DOCTYPE html>
<html>
<head>
  <style> body { margin: 0; background: #000; } </style>
  <script src="https://unpkg.com"></script>
</head>

<body>
  <div id="globeViz"></div>

  <script type="module">
    import * as THREE from 'https://esm.sh';

    // 1. Datos de los 4 países
    const p1 = { name: 'España', lat: 40.46, lng: -3.74 };
    const p2 = { name: 'México', lat: 23.63, lng: -102.55 };
    const p3 = { name: 'Colombia', lat: 4.57, lng: -74.29 };
    const p4 = { name: 'Argentina', lat: -38.41, lng: -63.61 };

    const paises = [p1, p2, p3, p4];

    // 2. Definir los saltos (arcos) del balón entre ellos
    const saltosBalon = [
      { startLat: p1.lat, startLng: p1.lng, endLat: p2.lat, endLng: p2.lng },
      { startLat: p2.lat, startLng: p2.lng, endLat: p3.lat, endLng: p3.lng },
      { startLat: p3.lat, startLng: p3.lng, endLat: p4.lat, endLng: p4.lng },
      { startLat: p4.lat, startLng: p4.lng, endLat: p1.lat, endLng: p1.lng }
    ];

    const world = Globe()(document.getElementById('globeViz'))
      // Imagen del mundo oscura para resaltar el oro
      .globeImageUrl('//cdn.jsdelivr.net/npm/three-globe/example/img/earth-dark.jpg')
      .bumpImageUrl('//cdn.jsdelivr.net/npm/three-globe/example/img/earth-topology.png')
      
      // Configuración de los puntos (países)
      .pointsData(paises)
      .pointColor(() => '#907d5f')
      .pointRadius(0.7)
      .pointAltitude(0.02)
      
      // Configuración del balón saltando (Arcos)
      .arcsData(saltosBalon)
      .arcColor(() => '#907d5f')
      .arcDashLength(0.5) // Tamaño del rastro/balón
      .arcDashGap(2)
      .arcDashAnimateTime(2000) // Velocidad del salto
      .arcAltitude(0.3) // Altura del salto
      .arcStroke(1.2)
      
      .showAtmosphere(true)
      .atmosphereColor('#907d5f')
      .atmosphereDaylightAlpha(0.1);

    // 3. Silueta dorada exterior
    const silhouetteGeom = new THREE.SphereGeometry(world.getGlobeRadius() * 1.015, 75, 75);
    const silhouetteMat = new THREE.MeshBasicMaterial({
      color: '#907d5f',
      side: THREE.BackSide,
      transparent: true,
      opacity: 0.25
    });
    world.scene().add(new THREE.Mesh(silhouetteGeom, silhouetteMat));

    // Rotación automática
    world.controls().autoRotate = true;
    world.controls().autoRotateSpeed = 0.6;
    world.controls().enableZoom = false; // Opcional: bloquea el zoom para que se vea fijo

  </script>
</body>
</html>

sdfadsafdsafgsa