{"id":2739,"date":"2025-07-07T23:18:08","date_gmt":"2025-07-07T23:18:08","guid":{"rendered":"https:\/\/godsgalaxygame.com\/GGG\/?page_id=2739"},"modified":"2026-01-01T06:31:03","modified_gmt":"2026-01-01T06:31:03","slug":"thematic-tours","status":"publish","type":"page","link":"https:\/\/godsgalaxygame.com\/GGG\/thematic-tours\/","title":{"rendered":"Thematic Tours"},"content":{"rendered":"\n<!-- ===== FULLSCREEN STARFIELD (ASTRO STYLE) for THEMATIC TOURS ===== -->\n<canvas id=\"ttStarfield\" aria-hidden=\"true\"><\/canvas>\n\n<style>\n  \/* fixed, full-bleed background behind everything in this block *\/\n  #ttStarfield{\n    position: fixed; inset: 0;\n    width: 100%; height: 100%;\n    display: block; z-index: 0; pointer-events: none;\n  }\n  html, body { background:#000; }\n<\/style>\n\n<script>\n  (function(){\n    const c = document.getElementById('ttStarfield');\n    if(!c) return;\n    const ctx = c.getContext('2d');\n    let W=0, H=0, dpr=1, stars=[], meteors=[];\n\n    function resize(){\n      dpr = Math.max(1, Math.min(2, window.devicePixelRatio||1));\n      W = c.width  = Math.floor(innerWidth  * dpr);\n      H = c.height = Math.floor(innerHeight * dpr);\n      c.style.width  = innerWidth  + 'px';\n      c.style.height = innerHeight + 'px';\n      buildStars();\n    }\n\n    function buildStars(){\n      const count = Math.floor((W*H) \/ (14000*dpr));\n      stars = Array.from({length: count}, () => ({\n        x: Math.random()*W,\n        y: Math.random()*H,\n        r: (Math.random()*1.2+0.4)*dpr,\n        a: Math.random()*1\n      }));\n    }\n\n    function spawnMeteor(){\n      const startX = Math.random()<0.5 ? -50*dpr : W+50*dpr;\n      const dir = startX<0 ? 1 : -1;\n      const startY = Math.random()*H*0.6 + H*0.1;\n      meteors.push({ x:startX, y:startY, vx: dir*(3.2*dpr), vy: 1.2*dpr, life: 0, max: 1600 });\n    }\n\n    let last=0, accum=0;\n    function tick(ts){\n      const dt = Math.min(33, ts-last || 16); last=ts; accum+=dt;\n      if (accum>900+Math.random()*900) { spawnMeteor(); accum=0; }\n\n      ctx.setTransform(1,0,0,1,0,0);\n      ctx.clearRect(0,0,W,H);\n\n      const g = ctx.createRadialGradient(W\/2,H*0.15,0, W\/2,H*0.4, Math.hypot(W,H)\/1.4);\n      g.addColorStop(0,'rgba(0,220,255,0.10)');\n      g.addColorStop(1,'rgba(0,0,0,0)');\n      ctx.fillStyle=g; ctx.fillRect(0,0,W,H);\n\n      for(const s of stars){\n        s.a += (Math.random()*0.06-0.03);\n        const a = 0.35+0.35*Math.sin(s.a);\n        ctx.fillStyle = `rgba(200,245,255,${a})`;\n        ctx.beginPath(); ctx.arc(s.x,s.y,s.r,0,Math.PI*2); ctx.fill();\n      }\n\n      for (let i=meteors.length-1;i>=0;i--){\n        const m = meteors[i];\n        m.x += m.vx; m.y += m.vy; m.life += dt;\n\n        const trailX = m.x - m.vx*6;\n        const trailY = m.y - m.vy*6;\n        const grad = ctx.createLinearGradient(m.x,m.y, trailX,trailY);\n        grad.addColorStop(0,'rgba(0,255,255,0.9)');\n        grad.addColorStop(1,'rgba(0,255,255,0)');\n        ctx.strokeStyle = grad; ctx.lineWidth = 2*dpr; ctx.lineCap='round';\n        ctx.beginPath(); ctx.moveTo(m.x,m.y); ctx.lineTo(trailX, trailY); ctx.stroke();\n\n        if (m.x<-200*dpr || m.x>W+200*dpr || m.y>H+200*dpr || m.life>m.max){\n          meteors.splice(i,1);\n        }\n      }\n      requestAnimationFrame(tick);\n    }\n\n    addEventListener('resize', resize, {passive:true});\n    resize(); requestAnimationFrame(tick);\n  })();\n<\/script>\n<!-- ===== end starfield ===== -->\n\n\n<!-- ===== BLOQUE 1 \u2013 Thematic Tours Selector ===== -->\n<div class=\"thematicSelector\" id=\"thematicSelector\">\n  <div id=\"thematicCircleContainer\">\n    <div id=\"centerLabel\">Thematic<br>Tours<\/div>\n\n    <div class=\"theme-button btn1\" onclick=\"activateAncestralCube()\">\n      <span>\ud83d\udc63<\/span>Ancestral\n    <\/div>\n    <div class=\"theme-button btn2\" onclick=\"location.href='\/GGG\/adventure\/'\">\n      <span>\ud83e\uddd7<\/span>Adventure\n    <\/div>\n    <div class=\"theme-button btn3\" onclick=\"location.href='\/GGG\/well-being\/'\">\n      <span>\ud83e\uddd8<\/span>Well-Being\n    <\/div>\n    <div class=\"theme-button btn4\" onclick=\"location.href='\/GGG\/cultural\/'\">\n      <span>\ud83d\udd4c<\/span>Cultural\n    <\/div>\n    <div class=\"theme-button btn5\" onclick=\"location.href='\/GGG\/entertainment\/'\">\n      <span>\ud83c\udfad<\/span>Entertainment\n    <\/div>\n    <div class=\"theme-button btn6\" onclick=\"location.href='\/GGG\/history\/'\">\n      <span>\ud83d\udcdc<\/span>History\n    <\/div>\n  <\/div>\n<\/div>\n\n<style>\n  \/* Stage that centers everything above the starfield *\/\n  .thematicSelector{\n    position: fixed; inset: 0;\n    display: grid; place-items: center;\n    z-index: 5;\n    transition: opacity .6s ease, transform .6s ease;\n  }\n  .thematicSelector.hidden{\n    opacity:.0; transform: translateY(-12vh); pointer-events:none;\n  }\n\n  \/* === MASTER SIZING (vmin so it fills phones & desktops) === *\/\n  #thematicCircleContainer{\n    position: relative;\n    width: 94vmin;          \/* overall orbit diameter *\/\n    height: 94vmin;\n    max-width: 1100px;      \/* gentle cap on huge monitors *\/\n    max-height: 1100px;\n  }\n\n  \/* Center circle \u2014 larger *\/\n  #centerLabel{\n    position: absolute; left:50%; top:50%;\n    transform: translate(-50%,-50%);\n    width: 28vmin; height: 28vmin;          \/* center size *\/\n    display:flex; align-items:center; justify-content:center;\n    text-align:center; border-radius:50%;\n    background: radial-gradient(circle, rgba(0,0,0,.82), rgba(0,0,0,.45));\n    border: .45vmin solid #fff;\n    box-shadow: 0 0 3vmin #fff;\n    color:#fff; font-family: Orbitron, sans-serif;\n    font-size: 2.7vmin; font-weight: 700;\n    z-index: 10;\n  }\n\n  \/* Outer buttons \u2014 BIGGER *\/\n  .theme-button{\n    position: absolute;\n    width: 20vmin; height: 20vmin;          \/* planet size *\/\n    border-radius: 50%;\n    border: .45vmin solid cyan;\n    background: rgba(0,0,0,.6);\n    color:#fff; font-family: Orbitron, sans-serif;\n    font-size: 2.2vmin; line-height:1.05;\n    display:flex; flex-direction:column; align-items:center; justify-content:center;\n    text-align:center; box-shadow: 0 0 2.6vmin cyan;\n    cursor:pointer;\n  }\n  .theme-button span{\n    font-size: 4.2vmin; margin-bottom: .6vmin; line-height:1;\n  }\n\n  \/* Positions around the ring (percentages keep the layout) *\/\n  .btn1 { top: 22%; left: 50%; transform: translate(-50%, -50%); }\n  .btn2 { top: 38%; left: 78%; transform: translate(-50%, -50%); }\n  .btn3 { top: 66%; left: 78%; transform: translate(-50%, -50%); }\n  .btn4 { top: 90%; left: 50%; transform: translate(-50%, -100%); }\n  .btn5 { top: 66%; left: 22%; transform: translate(-50%, -50%); }\n  .btn6 { top: 38%; left: 22%; transform: translate(-50%, -50%); }\n\n  \/* Small phones: let it truly fill *\/\n  @media (max-width: 480px){\n    #thematicCircleContainer{ width: 100vmin; height: 100vmin; }\n    #centerLabel{ width: 30vmin; height: 30vmin; font-size: 3vmin; }\n    .theme-button{ width: 22vmin; height: 22vmin; font-size: 2.6vmin; }\n    .theme-button span{ font-size: 4.8vmin; }\n    \/* tiny nudge to keep spacing comfortable *\/\n    .btn1{ top: 21%; }\n    .btn4{ top: 92%; }\n  }\n<\/style>\n\n<script>\n  function activateAncestralCube() {\n    const selector = document.querySelector(\".thematicSelector\");\n    if (selector) selector.classList.add(\"hidden\");\n\n    const cube  = document.getElementById(\"AncestralCubeContainer\");\n    const map   = document.getElementById(\"glowMapContainer\");\n    const swipe = document.getElementById(\"swipeImage\");\n\n    if (cube){ cube.style.opacity=\"1\"; cube.style.pointerEvents=\"auto\"; }\n    if (map){  map.style.opacity=\"1\";  map.style.pointerEvents=\"auto\"; }\n\n    if (swipe){\n      swipe.style.display=\"block\";\n      setTimeout(()=>{ swipe.style.display=\"none\"; }, 3500);\n    }\n  }\n\n  function activateAriesCube(){\n    const z = document.getElementById(\"zodiacSelector\");\n    if (z){ z.style.opacity=\"0\"; z.style.pointerEvents=\"none\"; }\n  }\n<\/script>\n\n\n\n<!-- =====================\nPOP-UP BEFORE RESERVATION (LEVEL 3 \u2192 EVOLUTION TOURS)\n===================== -->\n\n<style>\n  #evoReservePopupOverlay {\n    position: fixed;\n    top: 0; left: 0;\n    width: 100%; height: 100%;\n    background: rgba(0,0,0,0.85);\n    display: none;\n    justify-content: center;\n    align-items: center;\n    z-index: 999999;\n  }\n\n  #evoReservePopup {\n    background: #111;\n    border: 2px solid #ffffff55;\n    padding: 30px 35px;\n    border-radius: 18px;\n    text-align: center;\n    width: 300px;\n    box-shadow: 0 0 25px #ffffff88;\n  }\n\n  #evoReservePopup h2 {\n    color: white;\n    font-size: 20px;\n    margin-bottom: 25px;\n  }\n\n  .evo-reserve-btn {\n    padding: 10px 20px;\n    margin: 8px;\n    border-radius: 10px;\n    border: none;\n    cursor: pointer;\n    font-weight: bold;\n    font-size: 15px;\n  }\n\n  .evo-yes {\n    background: #6a00ff;\n    color: white;\n    box-shadow: 0 0 12px #6a00ff;\n  }\n\n  .evo-no {\n    background: #ff0066;\n    color: white;\n    box-shadow: 0 0 12px #ff0066;\n  }\n<\/style>\n\n<div id=\"evoReservePopupOverlay\">\n  <div id=\"evoReservePopup\">\n    <h2>Would you like to see Evolution Tours of the area?<\/h2>\n \n   <button class=\"evo-reserve-btn evo-yes\" onclick=\"goToEvolution()\">Yes<\/button>\n    <button class=\"evo-reserve-btn evo-no\" onclick=\"handleReserveClick()\">No<\/button>\n  <\/div>\n<\/div>\n\n<script>\n  const EVOLUTION_URL = \"\/GGG\/evolution-tours\/\";          \/\/ Level 4 page\n  const ELEMENTS_URL_3 = \"https:\/\/godsgalaxygame.com\/GGG\/medayork-pyramid-2\/?travelclub=1\"; \/\/ Same Elements Club (change if needed)\n\n  function openEvolutionPopup() {\n    document.getElementById(\"evoReservePopupOverlay\").style.display = \"flex\";\n  }\n\n  function goToEvolution() {\n  if (window.openEvolutionGate) {\n    window.openEvolutionGate(); \/\/ opens Evolution popup from footer\n  } else {\n    window.location.href = EVOLUTION_URL; \/\/ fallback if footer missing\n  }\n}\n\n  function continueReservationFromThematic() {\n    window.location.href = ELEMENTS_URL_3;\n  }\n<\/script>\n\n\n\n<!-- BLOQUE 2 - Ancestral Cube V19 Completo + Mapa Circular + API -->\n<style>\n  @media (max-width: 768px) {\n    #glowMapContainer {\n      margin-top: -55px !important;\n    }\n  }\n<\/style>\n<div id=\"AncestralCubeContainer\" style=\"opacity:0; pointer-events:none; transition: opacity 0.6s ease;\">\n  <!-- ESCENA CUBO -->\n  <div class=\"cube-scene\" style=\"width:180px; height:180px; perspective:1000px; position:fixed; bottom:20px; left:20px; z-index:1000;\">\n    <div class=\"cube\" id=\"ancestralCube\" style=\"width:100%; height:100%; position:relative; transform-style:preserve-3d; transform:rotateX(0deg) rotateY(0deg); transition:transform 0.3s ease;\">\n   <!-- FRONT -->\n      <div class=\"face front\" style=\"width:180px; height:180px; background:transparent; border:2px solid white; box-shadow:0 0 20px white; position:absolute; transform:rotateY(0deg) translateZ(90px); display:flex; flex-direction:column; justify-content:center; align-items:center; font-family:Orbitron;\">\n        <div style=\"font-size:42px; color:white; text-shadow:0 0 15px white;\">\ud83d\udc63<\/div>\n        <div style=\"font-size:16px; color:white; font-weight:bold; text-shadow:0 0 10px white; margin-top:6px;\">Ancestral<\/div>\n      <\/div>\n\n      <!-- Cara Trasera del Cubo: Transportation -->\n<!-- Back Face - Transportation Cube - Nuevo Dise\u00f1o con Botones Circulares -->\n<div class=\"face back\" style=\"width:180px; height:180px; background:#000; border:2px solid white; box-shadow:0 0 15px white; position:absolute; transform:rotateY(180deg) translateZ(90px); font-family:Orbitron,sans-serif;\">\n\n  <!-- Sol central -->\n  <img decoding=\"async\" src=\"http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/06\/1000065346-scaled.jpg\"\n       style=\"width:70px; height:70px; border-radius:50%; position:absolute; top:50%; left:50%; transform:translate(-50%, -50%); box-shadow:0 0 20px white;\" \/>\n\n  <!-- Reserve -->\n<a onclick=\"openEvolutionPopup()\"\n   style=\"position:absolute; top:8px; left:8px; width:44px; height:44px; border-radius:50%; background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/06\/Screenshot_20240108-225452_Chrome-scaled.jpg'); background-size:cover; box-shadow:0 0 12px cyan; cursor:pointer;\"\n   title=\"Reserve\"><\/a>\n\n\n  <!-- Bliss Coin -->\n  <div onclick=\"openBlissCoinPopup()\"\n       style=\"position:absolute; top:8px; right:8px; width:44px; height:44px; border-radius:50%; background:#222; font-size:40px; display:flex; justify-content:center; align-items:center; color:white; box-shadow:0 0 10px cyan; cursor:pointer;\"\n       title=\"Pay with Bliss Coin\">\ud83d\udcb3<\/div>\n\n   <!-- Coupon Button (Bottom-Left Corner) -->\n<a href=\"https:\/\/godsgalaxygame.com\/GGG\/discounts-gift\/\"\n   target=\"_blank\"\n   style=\"position: absolute;\n          bottom: 8px;\n          left: 8px;\n          width: 44px;\n          height: 44px;\n          border-radius: 50%;\n          background-image: url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/06\/Screenshot_20240108-225546_Chrome.jpg');\n          background-size: cover;\n          box-shadow: 0 0 12px cyan;\n          cursor: pointer;\"\n   title=\"Get Coupons\">\n<\/a>\n\n\n  <!-- Become a Host -->\n  <a href=\"https:\/\/luxus2.godaddysites.com\/\" target=\"_blank\"\n     style=\"position:absolute; bottom:8px; right:8px; width:44px; height:44px; border-radius:50%; background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/06\/Screenshot_20240108-224514_Chrome-scaled.jpg'); background-size:cover; box-shadow:0 0 12px cyan;\"\n     title=\"Become a Host\"><\/a>\n<\/div>\n\n\n\n      <!-- RIGHT (Aire) -->\n      <div class=\"face right\" style=\"width:180px; height:180px; background:#000; border:2px solid beige; box-shadow:0 0 15px beige; position:absolute; transform:rotateY(90deg) translateZ(90px); font-family:Orbitron;\">\n        <button onclick=\"showHostButtons('aire-god')\" style=\"position:absolute; top:8px; left:27px; width:126px; height:17px; border:1px solid beige; color:white; background:transparent;\">God<\/button>\n        <button onclick=\"showHostButtons('aire-story')\" style=\"position:absolute; bottom:8px; left:27px; width:126px; height:17px; border:1px solid beige; color:white; background:transparent;\">Story<\/button>\n        <button onclick=\"showHostButtons('aire-birds')\" style=\"position:absolute; top:27px; left:8px; height:126px; width:17px; border:1px solid beige; color:white; writing-mode:vertical-rl; background:transparent;\">Birds<\/button>\n        <button onclick=\"showHostButtons('aire-traditions')\" style=\"position:absolute; top:27px; right:8px; height:126px; width:17px; border:1px solid beige; color:white; writing-mode:vertical-lr; background:transparent;\">Traditions<\/button>\n        <div style=\"position:absolute; top:50%; left:50%; transform:translate(-50%, -50%); text-align:center;\">\n          <div style=\"color:beige; font-size:16px; font-weight:bold;\">Aire<\/div>\n          <img decoding=\"async\" src=\"http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/06\/Screenshot_20250612_075245_Gallery.jpg\" style=\"width:65px; height:65px; border-radius:50%; box-shadow:0 0 12px beige;\">\n        <\/div>\n      <\/div>\n\n      <!-- LEFT (Rivers) -->\n      <div class=\"face left\" style=\"width:180px; height:180px; background:#000; border:2px solid #00ccff; box-shadow:0 0 15px #00ccff; position:absolute; transform:rotateY(-90deg) translateZ(90px); font-family:Orbitron;\">\n        <button onclick=\"showHostButtons('rivers-medellin')\" style=\"position:absolute; top:8px; left:27px; width:126px; height:17px; border:1px solid #00ccff; color:white; background:transparent;\">Medellin<\/button>\n        <button onclick=\"showHostButtons('rivers-embalses')\" style=\"position:absolute; bottom:8px; left:27px; width:126px; height:17px; border:1px solid #00ccff; color:white; background:transparent;\">Embalses<\/button>\n        <button onclick=\"showHostButtons('rivers-cleancana')\" style=\"position:absolute; top:27px; left:8px; height:126px; width:17px; border:1px solid #00ccff; color:white; writing-mode:vertical-rl; background:transparent;\">Clean Canal<\/button>\n        <button onclick=\"showHostButtons('rivers-thermals')\" style=\"position:absolute; top:27px; right:8px; height:126px; width:17px; border:1px solid #00ccff; color:white; writing-mode:vertical-lr; background:transparent;\">Thermals<\/button>\n        <div style=\"position:absolute; top:50%; left:50%; transform:translate(-50%, -50%); text-align:center;\">\n          <div style=\"color:#00ccff; font-size:16px; font-weight:bold;\">Rivers<\/div>\n          <img decoding=\"async\" src=\"http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/06\/Screenshot_20250612_075344_Gallery.jpg\" style=\"width:65px; height:65px; border-radius:50%; box-shadow:0 0 12px #00ccff;\">\n        <\/div>\n      <\/div>\n\n      <!-- TOP (Indians) -->\n      <div class=\"face top\" style=\"width:180px; height:180px; background:#000; border:2px solid green; box-shadow:0 0 15px #33ff33; position:absolute; transform:rotateX(90deg) translateZ(90px); font-family:Orbitron;\">\n        <button onclick=\"showHostButtons('indians-antioquia')\" style=\"position:absolute; top:8px; left:27px; width:126px; height:17px; border:1px solid green; color:white; background:transparent;\">Antioquia<\/button>\n        <button onclick=\"showHostButtons('indians-caciq')\" style=\"position:absolute; bottom:8px; left:27px; width:126px; height:17px; border:1px solid green; color:white; background:transparent;\">Cacique<\/button>\n        <button onclick=\"showHostButtons('indians-cultures')\" style=\"position:absolute; top:27px; left:8px; height:126px; width:17px; border:1px solid green; color:white; writing-mode:vertical-rl; background:transparent;\">Cultures<\/button>\n        <button onclick=\"showHostButtons('indiand-medicinal')\" style=\"position:absolute; top:27px; right:8px; height:126px; width:17px; border:1px solid green; color:white; writing-mode:vertical-lr; background:transparent;\">Medicinal<\/button>\n        <div style=\"position:absolute; top:50%; left:50%; transform:translate(-50%, -50%); text-align:center;\">\n          <div style=\"color:#33ff33; font-size:16px; font-weight:bold;\">Indians<\/div>\n          <img decoding=\"async\" src=\"http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/06\/Screenshot_20250612_075305_Gallery.jpg\" style=\"width:65px; height:65px; border-radius:50%; box-shadow:0 0 12px #33ff33;\">\n        <\/div>\n      <\/div>\n\n      <!-- BOTTOM (Leyends) -->\n      <div class=\"face bottom\" style=\"width:180px; height:180px; background:#000; border:2px solid red; box-shadow:0 0 15px red; position:absolute; transform:rotateX(-90deg) translateZ(90px); font-family:Orbitron;\">\n        <button onclick=\"showHostButtons('leyends-asteroid')\" style=\"position:absolute; top:8px; left:27px; width:126px; height:17px; border:1px solid red; color:white; background:transparent;\">Asteroid<\/button>\n        <button onclick=\"showHostButtons('leyends-pablo')\" style=\"position:absolute; bottom:8px; left:27px; width:126px; height:17px; border:1px solid red; color:white; background:transparent;\">Pablo<\/button>\n        <button onclick=\"showHostButtons('leyends-pirata')\" style=\"position:absolute; top:27px; left:8px; height:126px; width:17px; border:1px solid red; color:white; writing-mode:vertical-rl; background:transparent;\">Piratas Paisas<\/button>\n        <button onclick=\"showHostButtons('leyends-traditions')\" style=\"position:absolute; top:27px; right:8px; height:126px; width:17px; border:1px solid red; color:white; writing-mode:vertical-lr; background:transparent;\">Traditions<\/button>\n        <div style=\"position:absolute; top:50%; left:50%; transform:translate(-50%, -50%); text-align:center;\">\n          <div style=\"color:red; font-size:16px; font-weight:bold;\">Leyends<\/div>\n          <img decoding=\"async\" src=\"http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/06\/Screenshot_20250612_075325_Gallery.jpg\" style=\"width:65px; height:65px; border-radius:50%; box-shadow:0 0 12px red;\">\n        <\/div>\n      <\/div>\n\n    <\/div>\n  <\/div>\n\n  <!-- MAPA CIRCULAR -->\n  <div id=\"glowMapContainer\" style=\"opacity:0; pointer-events:none; transition: opacity 0.6s ease; margin: 0 auto; margin-top: -95px; margin-bottom: 40px; width: 320px; height: 320px; border-radius: 50%; overflow: hidden; border: 6px solid rgba(0,255,255,0.6); box-shadow: 0 0 25px cyan; position: relative; z-index: 900;\">\n    <div id=\"googleMap\" style=\"width:100%; height:100%;\"><\/div>\n  <\/div>\n<\/div>\n\n<!-- Google Maps API (clave v\u00e1lida y correcta) -->\n<script src=\"https:\/\/maps.googleapis.com\/maps\/api\/js?key=AIzaSyDLPhx98z9AgoqXS6VeoESE9NV6URuOhiE&#038;callback=initMap\" async defer><\/script>\n\n<script>\n  function activateancestralCube() {\n    \/\/ Oculta el grid de opciones\n    const thematicSelector = document.getElementById(\"thematicSelector\");\n    if (thematicSelector) {\n      thematicSelector.style.display = \"none\";\n    }\n\n    \/\/ Muestra el contenedor del cubo Ancestral\n    const container = document.getElementById(\"AncestralCubeContainer\");\n    if (container) {\n      container.style.opacity = \"1\";\n      container.style.pointerEvents = \"auto\";\n    }\n\n    \/\/ Muestra el mapa\n    const map = document.getElementById(\"glowMapContainer\");\n    if (map) {\n      map.style.opacity = \"1\";\n      map.style.pointerEvents = \"auto\";\n    }\n\n    \/\/ Reinicia el mapa si es necesario\n    if (typeof initMap === \"function\") {\n      initMap();\n    }\n  }\n<\/script>\n<script>\n function initMap() {\n  const map = new google.maps.Map(document.getElementById(\"googleMap\"), {\n    center: { lat: 6.2414088, lng: -75.22951 },  \/\/ Bliss Glamping\n    zoom: 15,\n    disableDefaultUI: true,\n    gestureHandling: \"greedy\"\n  });\n\n  \/\/ \ud83d\udfe2 Add this to show the marker\n  const marker = new google.maps.Marker({\n    position: { lat: 6.2414088, lng: -75.22951 },\n    map: map,\n    title: \"Bliss Glamping\"\n  });\n\n  \/\/ Optional: save the map to global variable if needed later\n  window.ggMap = map;\n}\n<\/script>\n<!-- POP-UP para Bliss Coin -->\n<div id=\"blissCoinPopup\" style=\"display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.9); z-index:9999; justify-content:center; align-items:center; font-family:Orbitron;\">\n  <div style=\"background:#111; padding:30px 20px; border:2px solid cyan; border-radius:20px; color:white; width:300px; text-align:center; box-shadow:0 0 20px cyan;\">\n    <h3 style=\"font-size:18px;\">\ud83d\udcb3 Pay with Bliss Coin<\/h3>\n    <p style=\"font-size:14px;\">Enter your digital wallet #:<\/p>\n    <input type=\"text\" placeholder=\"Your Wallet #\" style=\"width:90%; padding:8px; border-radius:10px; border:1px solid white; background:#000; color:white; margin-top:8px;\" \/>\n    <p style=\"margin-top:14px;\">Send payment to:<\/p>\n    <div style=\"margin:8px auto; padding:6px; background:#222; border:1px solid cyan; border-radius:8px;\">\n      <code style=\"font-size:13px;\">HOST-WALLET-ADDRESS-123<\/code>\n    <\/div>\n    <button onclick=\"closeBlissCoinPopup()\" style=\"margin-top:12px; padding:6px 16px; border-radius:10px; background:cyan; border:none; color:#000; font-weight:bold; cursor:pointer;\">\n      Close\n    <\/button>\n  <\/div>\n<\/div>\n\n<script>\n  function openBlissCoinPopup() {\n    document.getElementById('blissCoinPopup').style.display = 'flex';\n  }\n  function closeBlissCoinPopup() {\n    document.getElementById('blissCoinPopup').style.display = 'none';\n  }\n<\/script>\n\n\n\n<!-- ============================\nGLOBAL PREVIEW + SHOW ROUTE\n(para Ancestral \/ Level 3)\n============================ -->\n<script>\n(() => {\n  \/* ============ 1) VIDEOS POR SUBOPCI\u00d3N (PREVIEW) ============ *\/\n  \/\/ La clave debe ser una clase que tenga el c\u00edrculo .host-circle\n  const PREVIEW_MEDIA = {\n    \/\/ AIRE \u2192 GOD\n    \"aire-god\": {\n      type: \"video\",\n      src: \"https:\/\/youtu.be\/vkgX58ojl2A?si=ZJ2UCHKfScSGV25x\"\n    },\n\n    \/\/ RIVERS \u2192 MEDELLIN\n    \"rivers-medellin\": {\n      type: \"video\",\n      src: \"video\"\n    },\n\n    \/\/ RIVERS \u2192 EMBALSES\n    \"rivers-embalses\": {\n      type: \"video\",\n      src: \"https:\/\/youtu.be\/5ov-kb9jTZg?si=H-yVaTzRf07arSBI\"\n    },\n\n    \/\/ RIVERS \u2192 CANALS (Clean Canal)\n    \"rivers-cleancana\": {\n      type: \"video\",\n      src: \"https:\/\/youtu.be\/ETiqzf7-G20?si=HvABrrSUWwtuQRki\"\n    },\n\n    \/\/ INDIANS \u2192 MEDICINAL\n    \"indiand-medicinal\": {\n      type: \"video\",\n      src: \"https:\/\/youtu.be\/8zlHjWMkQ0A?si=76715AnqD_-uVp7P\"\n    }\n  };\n\n  \/* ============ 1.5) RUTAS KML POR SUBOPCI\u00d3N (SHOW ROUTE) ============ *\/\n  const ROUTE_KMLS = {\n    \/\/ Aire\n    \"aire-god\":   \"https:\/\/godsgalaxygame.com\/Kml\/Ancestral%20Aire.kml\",\n    \"aire-story\": \"https:\/\/godsgalaxygame.com\/Kml\/Ancestral%20Aire%20(1).kml\",\n\n    \/\/ Rivers\n    \"rivers-medellin\":  \"https:\/\/godsgalaxygame.com\/Kml\/Ancestral%20Rivers.kml\",\n    \"rivers-embalses\":  \"https:\/\/godsgalaxygame.com\/Kml\/Ancestral%20Rivers%20(1).kml\",\n    \"rivers-cleancana\": \"https:\/\/godsgalaxygame.com\/Kml\/Ancestral%20Rivers%20(2).kml\",\n    \"rivers-thermals\":  \"https:\/\/godsgalaxygame.com\/Kml\/Ancestral%20Rivers%20(3).kml\",\n\n    \/\/ Indians\n    \"indiand-medicinal\": \"https:\/\/godsgalaxygame.com\/Kml\/Ancestral%20Indians.kml\",\n\n    \/\/ Leyends\n    \"leyends-pablo\": \"https:\/\/godsgalaxygame.com\/Kml\/Ancestral%20Leyends.kml\"\n  };\n\n  \/* ============ 2) ESTADO INTERNO ============ *\/\n  let state = { key: null, type: null, src: null, title: null };\n  let currentKmlLayer = null;\n\n  const until = (fn, timeout = 8000, every = 120) => new Promise((res, rej) => {\n    const t0 = performance.now();\n    const tick = () => {\n      const out = fn();\n      if (out) return res(out);\n      if (performance.now() - t0 > timeout) return rej(new Error('timeout'));\n      setTimeout(tick, every);\n    };\n    tick();\n  });\n\n  const getBgURL = (el) => {\n    const bg = (getComputedStyle(el).backgroundImage || '').trim();\n    return bg.replace(\/^url\\((['\"]?)(.*)\\1\\)$\/, '$2');\n  };\n\n  const make = (tag, attrs = {}, html = '') => {\n    const el = document.createElement(tag);\n    Object.entries(attrs).forEach(([k, v]) => el.setAttribute(k, v));\n    if (html) el.innerHTML = html;\n    return el;\n  };\n\n  \/\/ Convierte YouTube\/Vimeo en iframe con AUTOPLAY\n  const embedFrom = (url) => {\n    if (\/youtube\\.com\\\/embed\\\/\/i.test(url)) {\n      const hasQuery = url.includes(\"?\");\n      return `<iframe src=\"${url}${hasQuery ? \"&#038;\" : \"?\"}autoplay=1&#038;rel=0&#038;playsinline=1\"\n        allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n        allowfullscreen><\/iframe>`;\n    }\n\n    const yt = url.match(\/(?:youtu\\.be\\\/|youtube\\.com\\\/watch\\?v=)([\\w\\-]+)\/i);\n    const vm = url.match(\/vimeo\\.com\\\/(\\d+)\/i);\n\n    if (yt) {\n      const id = yt[1];\n      return `<iframe src=\"https:\/\/www.youtube.com\/embed\/${id}?autoplay=1&#038;rel=0&#038;playsinline=1\"\n        allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n        allowfullscreen><\/iframe>`;\n    }\n\n    if (vm) {\n      const id = vm[1];\n      return `<iframe src=\"https:\/\/player.vimeo.com\/video\/${id}?autoplay=1\"\n        allow=\"autoplay; fullscreen; picture-in-picture; clipboard-write\"\n        allowfullscreen><\/iframe>`;\n    }\n\n    return `<a href=\"${url}\" target=\"_blank\" style=\"color:#00ffff; font-weight:900; text-decoration:underline;\">Open video<\/a>`;\n  };\n\n  \/* ============ 3) ESTILOS + UI EN EL MAPA ============ *\/\n  function injectStyles() {\n    if (document.getElementById('ggg-preview-styles')) return;\n    const css = `\n#glowMapContainer{ position:relative; }\n#accSeePreview, #accShowRoute{\n  position:absolute; left:50%; transform:translateX(-50%);\n  padding:8px 14px;\n  border-radius:999px; border:2px solid rgba(0,255,255,.7);\n  background:rgba(0,0,0,.65); color:#eafcff;\n  font-family:Orbitron,system-ui,sans-serif; font-weight:900; letter-spacing:.2px;\n  box-shadow:0 0 16px rgba(0,255,255,.45);\n  cursor:pointer; z-index:1200; display:none;\n}\n#accSeePreview{ bottom:46px; }\n#accShowRoute{ bottom:10px; }\n\n#accSeePreview:hover, #accShowRoute:hover{\n  box-shadow:0 0 22px rgba(0,255,255,.85);\n}\n#accPreviewOverlay{\n  position:absolute; inset:0; display:none; place-items:center;\n  background: radial-gradient(ellipse at 50% 50%, rgba(0,0,0,.30), rgba(0,0,0,.65) 70%);\n  z-index:1300;\n}\n.acc-preview-circle{\n  width: clamp(200px, 62%, 300px); aspect-ratio:1\/1;\n  border-radius:50%; border:4px solid rgba(0,255,255,.75);\n  box-shadow: 0 0 28px rgba(0,255,255,.6), inset 0 0 22px rgba(0,255,255,.25);\n  background:#000; overflow:hidden; position:relative;\n  display:grid; place-items:center;\n}\n.acc-closeX{\n  position:absolute; top:6px; right:8px; z-index:2;\n  border:0; background:rgba(0,0,0,.55); color:#9fefff;\n  font-size:20px; font-weight:900; width:28px; height:28px;\n  border-radius:50%; cursor:pointer; line-height:26px;\n  box-shadow:0 0 10px rgba(0,255,255,.35);\n}\n#accPreviewMedia{ width:92%; height:92%; display:grid; place-items:center; }\n#accPreviewMedia img{ width:100%; height:100%; object-fit:cover; border-radius:50%; display:block; }\n#accPreviewMedia iframe{ width:100%; height:100%; border:0; border-radius:50%; }`;\n    const style = make('style', { id: 'ggg-preview-styles' }, css);\n    document.head.appendChild(style);\n  }\n\n  function mountUI(mapWrap) {\n    if (document.getElementById('accSeePreview')) {\n      return {\n        btnPreview: document.getElementById('accSeePreview'),\n        btnRoute: document.getElementById('accShowRoute'),\n        overlay: document.getElementById('accPreviewOverlay'),\n        media: document.getElementById('accPreviewMedia')\n      };\n    }\n\n    const btnPrev = make('button', { id: 'accSeePreview', 'aria-haspopup': 'dialog' }, '\ud83d\udc41\ufe0f See Preview');\n    const btnRoute = make('button', { id: 'accShowRoute', 'aria-haspopup': 'false' }, '\ud83d\udccd Show Route');\n\n    const overlay = make('div', { id: 'accPreviewOverlay', 'aria-hidden': 'true' });\n    overlay.innerHTML = `\n      <div class=\"acc-preview-circle\" role=\"dialog\" aria-label=\"Map preview\">\n        <button class=\"acc-closeX\" aria-label=\"Close preview\">\u00d7<\/button>\n        <div id=\"accPreviewMedia\"><\/div>\n      <\/div>`;\n\n    mapWrap.appendChild(btnPrev);\n    mapWrap.appendChild(btnRoute);\n    mapWrap.appendChild(overlay);\n\n    const media = document.getElementById('accPreviewMedia');\n    const closeBtn = overlay.querySelector('.acc-closeX');\n\n    \/\/ Abrir PREVIEW\n    btnPrev.addEventListener('click', () => {\n      if (!state.src) return;\n      media.innerHTML = state.type === 'video'\n        ? embedFrom(state.src)\n        : `<img decoding=\"async\" src=\"${state.src}\" alt=\"${state.title || 'Preview'}\">`;\n\n      overlay.style.display = 'grid';\n      overlay.setAttribute('aria-hidden', 'false');\n    });\n\n    \/\/ Cerrar PREVIEW\n    const close = () => {\n      overlay.style.display = 'none';\n      overlay.setAttribute('aria-hidden', 'true');\n      media.innerHTML = '';\n    };\n    closeBtn.addEventListener('click', close);\n    overlay.addEventListener('click', (e) => { if (e.target === overlay) close(); });\n    window.addEventListener('keydown', (e) => { if (e.key === 'Escape') close(); }, { passive: true });\n\n    \/\/ CLICK EN SHOW ROUTE (zoom fijo 13)\n    btnRoute.addEventListener('click', () => {\n      if (!state.key) return;\n      const url = ROUTE_KMLS[state.key];\n      if (!url || !window.ggMap || !window.google) return;\n\n      \/\/ Limpia la ruta anterior\n      if (currentKmlLayer) {\n        currentKmlLayer.setMap(null);\n        currentKmlLayer = null;\n      }\n\n      \/\/ Carga la nueva ruta y deja que el KML mueva el mapa\n      currentKmlLayer = new google.maps.KmlLayer({\n        url,\n        map: window.ggMap,\n        suppressInfoWindows: false,\n        preserveViewport: false\n      });\n\n      \/\/ Cuando el KML termine de cargar, forzamos zoom 13 SIEMPRE\n      google.maps.event.addListenerOnce(currentKmlLayer, 'status_changed', () => {\n        google.maps.event.addListenerOnce(window.ggMap, 'idle', () => {\n          window.ggMap.setZoom(13);\n        });\n      });\n    });\n\n    return { btnPreview: btnPrev, btnRoute, overlay, media };\n  }\n\n  \/* ============ 4) LEER CLAVE DESDE EL C\u00cdRCULO ============ *\/\n  function keyFromClasses(el) {\n    const classes = [...el.classList];\n    \/\/ Primero busca una clase que exista en PREVIEW_MEDIA o ROUTE_KMLS\n    const anyKnown = classes.find(c => PREVIEW_MEDIA[c] || ROUTE_KMLS[c]);\n    return anyKnown || null;\n  }\n\n  function hookCircles(btnPrev, btnRoute) {\n    const wrap = document.getElementById('hostButtons');\n    if (!wrap) return;\n\n    wrap.addEventListener('click', (e) => {\n      const el = e.target.closest('.host-circle');\n      if (!el) return;\n\n      const key = keyFromClasses(el);\n      const cfg = key ? PREVIEW_MEDIA[key] : null;\n      const title = el.getAttribute('title') || '';\n\n      const fallbackImg = getBgURL(el);\n      state = {\n        key,\n        type: cfg?.type || 'image',\n        src:  cfg?.src || fallbackImg,\n        title\n      };\n\n\n      \/\/ === AQU\u00cd EST\u00c1 LA PARTE CLAVE ===\n      \/\/ See Preview: se muestra si tenemos ALGO que mostrar (video o imagen)\n      if (btnPrev) {\n        btnPrev.style.display = state.src ? 'block' : 'none';\n      }\n\n      \/\/ Show Route: solo si existe KML para esa key\n      if (btnRoute) {\n        btnRoute.style.display = (key && ROUTE_KMLS[key]) ? 'block' : 'none';\n      }\n      \/\/ ================================\n\n    }, { passive: true });\n  }\n\n  \/* ============ 5) ARRANQUE ============ *\/\n  async function boot() {\n    try {\n      injectStyles();\n\n      \/\/ Espera a que exista el mapa y el contenedor\n      await until(() => window.ggMap && document.getElementById('glowMapContainer'));\n      const mapWrap = document.getElementById('glowMapContainer');\n      const refs = mountUI(mapWrap);\n\n      \/\/ Espera a que exista hostButtons\n      await until(() => document.getElementById('hostButtons'));\n      hookCircles(refs.btnPreview, refs.btnRoute);\n\n      console.log('%c[GGG Ancestral Preview+Route] Ready', 'color:#0ff');\n    } catch (e) {\n      console.warn('[GGG Ancestral Preview+Route] init failed:', e);\n    }\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', boot);\n  } else {\n    boot();\n  }\n})();\n<\/script>\n\n\n\n<!-- BLOQUE 3 \u2013 Movimiento + Swipe + SignIn + Favoritos (First You) -->\n\n<!-- ESTILOS -->\n<style>\n  #floatingButtons {\n    position: fixed;\n    top: 14px;\n    right: 14px;\n    display: flex;\n    flex-direction: row;\n    gap: 10px;\n    z-index: 3000;\n  }\n\n  #favoritesBtn, #signinBtn {\n    font-size: 15px;\n    padding: 6px 10px;\n    border-radius: 8px;\n    border: 2px solid white;\n    color: white;\n    background: rgba(0, 0, 0, 0.6);\n    cursor: pointer;\n    box-shadow: 0 0 8px cyan;\n    font-family: Orbitron;\n  }\n\n  #favoritesBtn:hover::after {\n    content: ' Double click a Host to add \ud83d\udc98';\n    font-size: 10px;\n    margin-left: 8px;\n    color: cyan;\n  }\n#pyramidBtn {\n    width: 38px;\n    height: 38px;\n    background-color: black;\n    border: 2px solid white;\n    border-radius: 50%;\n    box-shadow: 0 0 10px cyan; \/* glow *\/\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    font-size: 20px; \/* emoji size *\/\n    cursor: pointer;\n    margin-top: 2px; \/* align with rose *\/\n  }\n\n  #pyramidBtn:hover {\n    transform: scale(1.2);\n  }\n\n#roseBtn {\n  width: 38px;\n  height: 38px;\n  background-color: black; \/* Keep black background *\/\n  background-image: url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/07\/ChatGPT-Image-Jul-7-2025-05_11_38-PM.png');\n  background-size: cover;\n  background-position: center;\n  border: 2px solid white; \/* Optional white border *\/\n  border-radius: 50%;\n  box-shadow: 0 0 10px white; \/* White glow around the button *\/\n  cursor: pointer;\n  margin-top: 2px; \/* Adjust position to align with others *\/\n}\n\n#roseBtn:hover {\n  transform: scale(1.2);\n}\n\n  #signinBtn:hover::after {\n    content: ' Sign in to save your Favorites';\n    font-size: 10px;\n    margin-left: 8px;\n    color: cyan;\n  }\n\n  #swipeImage {\n    position: fixed;\n    top: 0;\n    left: 50%;\n    transform: translateX(-50%);\n    width: 160px;\n    z-index: 1200;\n    display: none;\n  }\n#swipeImage {\n  display: none !important;\n}\n\n<\/style>\n\n<!-- BOTONES FLOTANTES -->\n<div id=\"floatingButtons\">\n<button\n    id=\"pyramidBtn\"\n    title=\"Back to MedaYork Pyramid\"\n    onclick=\"window.location.href='https:\/\/godsgalaxygame.com\/GGG\/medayork-pyramid-2\/';\">\n    \ud83e\uddca\n  <\/button>\n<button id=\"roseBtn\"><\/button>\n\n  <button id=\"favoritesBtn\">\ud83d\udc96<\/button>\n  <button id=\"signinBtn\">Sign In \/ Sign Up<\/button>\n<\/div>\n\n<!-- IMAGEN DE SWIPE -->\n<img decoding=\"async\" id=\"swipeImage\" src=\"https:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/06\/Screenshot_20250627_154147_Gallery.jpg\" alt=\"Swipe\" \/>\n\n<!-- SCRIPT DE FUNCIONALIDAD -->\n<script>\n  \/\/ Movimiento del cubo Ancestral\n  let isDragging = false, startX, startY, rotateX = 0, rotateY = 0;\n  const cube = document.getElementById('ancestralCube');\n\n  function updateRotation(x, y) {\n    cube.style.transform = `rotateX(${x}deg) rotateY(${y}deg)`;\n  }\n\n  function onMouseDown(e) {\n    isDragging = true;\n    startX = e.clientX;\n    startY = e.clientY;\n  }\n\n  function onMouseMove(e) {\n    if (!isDragging) return;\n    const deltaX = e.clientX - startX;\n    const deltaY = e.clientY - startY;\n    rotateY += deltaX * 0.5;\n    rotateX -= deltaY * 0.5;\n    updateRotation(rotateX, rotateY);\n    startX = e.clientX;\n    startY = e.clientY;\n  }\n\n  function onMouseUp() {\n    isDragging = false;\n  }\n\n  function onTouchStart(e) {\n    isDragging = true;\n    startX = e.touches[0].clientX;\n    startY = e.touches[0].clientY;\n  }\n\n  function onTouchMove(e) {\n    if (!isDragging) return;\n    const deltaX = e.touches[0].clientX - startX;\n    const deltaY = e.touches[0].clientY - startY;\n    rotateY += deltaX * 0.5;\n    rotateX -= deltaY * 0.5;\n    updateRotation(rotateX, rotateY);\n    startX = e.touches[0].clientX;\n    startY = e.touches[0].clientY;\n  }\n\n  function onTouchEnd() {\n    isDragging = false;\n  }\n\n  const cubeContainer = document.querySelector('.cube-scene');\n  if (cubeContainer) {\n    cubeContainer.addEventListener('mousedown', onMouseDown);\n    window.addEventListener('mousemove', onMouseMove);\n    window.addEventListener('mouseup', onMouseUp);\n    cubeContainer.addEventListener('touchstart', onTouchStart);\n    window.addEventListener('touchmove', onTouchMove);\n    window.addEventListener('touchend', onTouchEnd);\n  }\n\n  \/\/ Swipe image cuando aparece el cubo\n  const observer = new MutationObserver(() => {\n    const ancestral = document.getElementById('AncestralCubeContainer');\n    if (ancenstral && ancestral.style.opacity === \"1\") {\n      const swipe = document.getElementById('swipeImage');\n      swipe.style.display = 'block';\n      setTimeout(() => {\n        swipe.style.display = 'none';\n      }, 3500);\n      observer.disconnect();\n    }\n  });\n  observer.observe(document.body, { childList: true, subtree: true });\n\n  \/\/ Sistema de favoritos \ud83d\udc96 \u2192 \ud83d\udc98\n  const favorites = [];\n\n  function toggleFavorite(id, imgUrl, mapLat, mapLng) {\n    if (!favorites.some(f => f.id === id)) {\n      favorites.push({ id, imgUrl, lat: mapLat, lng: mapLng });\n      document.getElementById(\"favoritesBtn\").textContent = \"\ud83d\udc98\";\n      console.log(\"Favorito agregado:\", id);\n    }\n  }\nfunction handleReserveClick() {\n  const TRAVEL_CLUB_URL = \"https:\/\/godsgalaxygame.com\/GGG\/medayork-pyramid-2\/?travelclub=1\";\n  const selected = Array.isArray(favorites) ? favorites : [];\n\n  \/\/ If there ARE favorites \u2192 send email\n  if (selected.length > 0) {\n    const lines = selected.map((f, i) => {\n      const id = f.id || `Host ${i+1}`;\n      const lat = (f.lat ?? \"\");\n      const lng = (f.lng ?? \"\");\n      return `${i + 1}. ${id}${(lat !== \"\" && lng !== \"\") ? ` (${lat}, ${lng})` : \"\"}`;\n    });\n\n    const subject = encodeURIComponent(\"GGG \u2013 Selected Hosts\");\n    const body = encodeURIComponent(\n      \"User selected the following hosts:\\n\\n\" + lines.join(\"\\n\")\n    );\n\n    window.location.href =\n      `mailto:edwardraigozallc@gmail.com?subject=${subject}&body=${body}`;\n  }\n\n  \/\/ ALWAYS go to Travel Club (favorites or not)\n  setTimeout(() => {\n    window.location.href = TRAVEL_CLUB_URL;\n  }, 650);\n}\n\n\n  function clearFavorites() {\n    favorites.length = 0;\n    document.getElementById(\"favoritesBtn\").textContent = \"\ud83d\udc96\";\n  }\n\n  function focusOnHost(lat, lng) {\n    if (window.ggMap) {\n      window.ggMap.setCenter({ lat, lng });\n      window.ggMap.setZoom(15);\n      new google.maps.Marker({ position: { lat, lng }, map: window.ggMap });\n    }\n  }\n\n  document.getElementById(\"favoritesBtn\").addEventListener(\"click\", () => {\n    if (favorites.length === 0) return;\n    document.querySelectorAll('.host-circle').forEach(btn => btn.style.display = 'none');\n    favorites.forEach(fav => {\n      const existing = document.querySelector(`.${fav.id}`);\n      if (existing) existing.style.display = 'inline-block';\n    });\n  });\n<\/script>\n\n\n\n<!-- HOST CIRCLES \u2014 CSS (Accommodations) -->\n<style>\n  \/* container *\/\n  #hostButtons{\n    display:none;                 \/* hidden until a sub-option is clicked *\/\n    position:absolute;\n    top:50%; left:50%;\n    transform:translate(-50%,-50%);\n    width:100%; max-width:500px; height:500px;\n    pointer-events:none;          \/* turned ON in JS when shown *\/\n    z-index:3000;\n  }\n\n  \/* buttons *\/\n  #hostButtons .host-circle{\n    width:80px; height:80px; border-radius:50%;\n    border:2px solid #fff; box-shadow:0 0 14px #fff;\n    background-size:cover; background-position:center;\n    position:absolute; pointer-events:auto; cursor:pointer;\n    transition:transform .3s, box-shadow .3s;\n  }\n  #hostButtons .host-circle:hover{ transform:scale(1.15); box-shadow:0 0 20px cyan; }\n\n  \/* desktop placement (around the circle) *\/\n  #hostButtons .one    { top:4%;    left:10%; }\n  #hostButtons .five   { top:4%;    right:10%; }\n  #hostButtons .seven  { bottom:8%; left:10%; }\n  #hostButtons .month  { bottom:8%; right:10%; }\n\n  \/* color accents per family (match cube face glows) *\/\n  #hostButtons .highrise { border-color:beige;   box-shadow:0 0 14px beige; }\n  #hostButtons .historic { border-color:#00ccff; box-shadow:0 0 14px #00ccff; }\n  #hostButtons .ecostay  { border-color:#33ff33; box-shadow:0 0 14px #33ff33; }\n  #hostButtons .mansions { border-color:red;     box-shadow:0 0 14px red; }\n\n  \/* phone: turn into one row under the map *\/\n  @media (max-width:768px){\n    #hostButtons{\n      position:relative; top:auto; left:auto; transform:none;\n      height:auto; margin-top:-35px;\n      display:none;               \/* still hidden by default *\/\n      flex-wrap:nowrap; justify-content:center; gap:10px;\n    }\n    #hostButtons .host-circle{ position:relative; width:75px; height:75px; margin:0 6px; }\n  }\n<\/style>\n\n<!-- HOST CIRCLES \u2014 HTML (Ancestral: Aire\n \/ Rivers \/ Indians \/ Leyends) -->\n<div id=\"hostButtons\">\n  <!-- Aire (beige) -->\n  <button class=\"host-circle aire aire-god one\"\n    data-lat=\"6.2414088\" data-lng=\"-75.22951\"\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20251220_212328_Google.jpg');\"\n    title=\"Aire \u2022 God\"><\/button>\n\n  <button class=\"host-circle aire aire-story five\"\n    data-lat=\"6.22663\" data-lng=\"-75.1831\"\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240831_160025_YouTube.jpg');\"\n    title=\"Aire \u2022 Story\"><\/button>\n\n  <button class=\"host-circle aire aire-birds seven\"\n    data-lat=\"6.2288021\" data-lng=\"-75.2142911\"\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240831_161056_Chrome.jpg');\"\n    title=\"Aire \u2022 Birds\"><\/button>\n\n  <button class=\"host-circle aire aire-traditions month\"\n    data-lat=\"6.24426\" data-lng=\"-75.217632\"\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20251220_211145_Google.jpg');\"\n    title=\"Aire \u2022 Traditions\"><\/button>\n\n  <!-- Rivers (cyan) -->\n  <button class=\"host-circle rivers rivers-medellin one\"\n    data-lat=\"6.2414088\" data-lng=\"-75.2315485\"\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240831_165509_YouTube.jpg');\"\n    title=\"Rivers \u2022 Medellin\"><\/button>\n\n  <button class=\"host-circle rivers rivers-embalses five\"\n    data-lat=\"6.24426\" data-lng=\"-75.217632\"\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240831_170646_YouTube.jpg');\"\n    title=\"Rivers \u2022 Embalses\"><\/button>\n\n  <button class=\"host-circle rivers rivers-cleancana seven\"\n    data-lat=\"6.2083202\" data-lng=\"-75.5677995\"\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240831_171513_YouTube.jpg');\"\n    title=\"Rivers \u2022 Clean Canals\"><\/button>\n\n  <button class=\"host-circle rivers rivers-thermals month\"\n    data-lat=\"6.2252116\" data-lng=\"-75.1800426\"\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240831_171954_Maps.jpg');\"\n    title=\"Rivers \u2022 Thermals\"><\/button>\n\n  <!-- Indians (green) -->\n  <button class=\"host-circle indians indians-antioquia one\"\n    data-lat=\"6.2414088\" data-lng=\"-75.22951\"\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240831_172919_Chrome.jpg');\"\n    title=\"Indians \u2022 Antioquia\"><\/button>\n\n  <button class=\"host-circle indians indians-caciq five\"\n    data-lat=\"6.22663\" data-lng=\"-75.1831\"\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240831_174624_Chrome.jpg');\"\n    title=\"Indians \u2022 Cacique\"><\/button>\n\n  <button class=\"host-circle indians indians-cultures seven\"\n    data-lat=\"6.2288021\" data-lng=\"-75.2142911\"\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240831_175404_Chrome.jpg');\"\n    title=\"Indians \u2022 Cultures\"><\/button>\n\n  <button class=\"host-circle indians indians-medicinal month\"\n    data-lat=\"6.24426\" data-lng=\"-75.217632\"\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240831_180108_Google.jpg');\"\n    title=\"Indians \u2022 Medicinal\"><\/button>\n\n  <!-- Leyends (red) -->\n  <button class=\"host-circle leyends leyends-asteroid one\"\n    data-lat=\"6.2414088\" data-lng=\"-75.22951\"\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240831_180956_Chrome.jpg');\"\n    title=\"Leyends \u2022 Asteroid\"><\/button>\n\n  <button class=\"host-circle leyends leyends-pablo five\"\n    data-lat=\"6.22663\" data-lng=\"-75.1831\"\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240831_181614_Chrome.jpg');\"\n    title=\"Leyends \u2022 Pablo\"><\/button>\n\n  <button class=\"host-circle leyends leyends-piratas seven\"\n    data-lat=\"6.2288021\" data-lng=\"-75.2142911\"\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240831_183834_YouTube.jpg');\"\n    title=\"Leyends \u2022 Piratas Paisas\"><\/button>\n\n  <button class=\"host-circle leyends leyends-traditions month\"\n    data-lat=\"6.24426\" data-lng=\"-75.217632\"\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240831_184424_Chrome.jpg');\"\n    title=\"Leyends \u2022 Traditions\"><\/button>\n<\/div>\n\n<!-- HOST CIRCLES \u2014 JS (Ancestral) -->\n<script>\n  \/* Show only the requested key, e.g., 'highrise-one' *\/\n  function showHostButtons(suboption){\n    const wrap = document.getElementById('hostButtons');\n    if(!wrap) return;\n\n    \/\/ hide all\n    wrap.querySelectorAll('.host-circle').forEach(el => el.style.display = 'none');\n\n    \/\/ show only requested group (class names include exact key)\n    wrap.querySelectorAll('.' + suboption).forEach(el => el.style.display = 'inline-block');\n\n    \/\/ reveal the container and allow clicks\n    wrap.style.display = 'flex';\n    wrap.style.pointerEvents = 'auto';\n  }\n\n  \/\/ dbl-tap \/ dbl-click to favorite (uses your existing toggleFavorite)\n  document.addEventListener('DOMContentLoaded', () => {\n    document.querySelectorAll('#hostButtons .host-circle').forEach(btn => {\n      btn.addEventListener('dblclick', (e) => {\n        e.preventDefault();\n\n        \/\/ \u2705 Get the specific key like \"heli-around\" \/ \"yacht-goto\"\n        const id = [...btn.classList].find(c =>\n          c.includes('-') &&\n          !['host-circle','around','goto','emergency','adventure'].includes(c)\n        );\n\n        if (!id) {\n          console.warn(\"No favorite id found for button:\", btn.className);\n          return;\n        }\n\n        \/\/ background-image: url(\"...\") or url('...')\n        const bg = btn.style.backgroundImage || '';\n        const img = bg.startsWith('url(')\n          ? bg.slice(4, -1).replace(\/^[\"']|[\"']$\/g, '')\n          : '';\n\n        const lat = parseFloat(btn.dataset.lat);\n        const lng = parseFloat(btn.dataset.lng);\n\n        if (typeof toggleFavorite === 'function') {\n          toggleFavorite(id, img, lat, lng);\n        } else {\n          console.warn(\"toggleFavorite() is not defined yet.\");\n        }\n      });\n    });\n  });\n\n  \/* Center the map when any host circle is clicked *\/\n  document.addEventListener('click', function (e) {\n    const btn = e.target.closest('#hostButtons .host-circle');\n    if (!btn) return;\n\n    const lat = parseFloat(btn.dataset.lat);\n    const lng = parseFloat(btn.dataset.lng);\n    if (!Number.isFinite(lat) || !Number.isFinite(lng)) return;\n\n    if (typeof window.focusOnHost === 'function') {\n      focusOnHost(lat, lng);\n      return;\n    }\n\n    if (window.ggMap && window.google) {\n      const pos = new google.maps.LatLng(lat, lng);\n      ggMap.setCenter(pos);\n      ggMap.setZoom(15);\n      new google.maps.Marker({ position: pos, map: ggMap });\n    }\n  });\n<\/script>\n\n\n\n&#8211; AVATAR &#8211;>\n<div id=\"avatarContainer\" onclick=\"showAvatarCloud()\" \n     style=\"position:fixed; bottom:80px; right:20px; z-index:9999; cursor:pointer; display:none;\">\n  <img decoding=\"async\" src=\"http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/07\/Screenshot_20231118-120724_Instagram-scaled.jpg\" \n       style=\"width:180px; height:auto; border-radius: 50% \/ 30%; object-fit: cover; box-shadow: 0 0 12px aqua; filter: invert(100%) contrast(120%) brightness(110%);\">\n<\/div>\n\n<!-- CLOUD BUBBLE -->\n<div id=\"avatarCloud\" style=\"position:fixed; bottom:310px; right:30px; max-width:250px; background:rgba(0,0,0,0.7); \n     color:white; font-family:Orbitron, sans-serif; font-size:12px; line-height:16px; border-radius:20px 20px 20px 0px; \n     padding:14px 16px; box-shadow:0 0 15px aqua; display:none; z-index:9999; text-align:center;\n     border: 1px solid aqua;\">\n  <div id=\"avatarCloudMsg\">Loading&#8230;<\/div>\n  <div style=\"margin-top:10px;\">\n    <button onclick=\"acceptAvatarSuggestion()\" style=\"background:lime; color:black; border:none; padding:6px 10px; font-weight:bold;\">Yes<\/button>\n    <button onclick=\"dismissAvatarCloud()\" style=\"background:aqua; color:white; border:none; padding:6px 10px; font-weight:bold;\">No<\/button>\n  <\/div>\n  <div style=\"position:absolute; bottom:-18px; right:10px; width:0; height:0; border-left:10px solid transparent; \n              border-right:10px solid transparent; border-top:18px solid rgba(0,255,255,0.6); filter:blur(0.5px);\">\n  <\/div>\n<\/div>\n\n<!-- MOBILE ASSISTANT BUTTON -->\n<div id=\"avatarMobileBtn\" onclick=\"toggleMobileAvatar()\" style=\"display:none;\">\n  \ud83d\udc64 Assistant\n<\/div>\n\n<!-- ESTILOS -->\n<style>\n  #avatarMobileBtn {\n    position: fixed;\n    bottom: 18px;\n    right: 18px;\n    z-index: 9999;\n    background: rgba(0, 0, 0, 0.7);\n    color: white;\n    font-family: Orbitron, sans-serif;\n    font-size: 13px;\n    padding: 10px 14px;\n    border: 2px solid aqua;\n    border-radius: 14px;\n    box-shadow: 0 0 12px aqua;\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    gap: 8px;\n  }\n\n  @media (min-width: 769px) {\n    #avatarMobileBtn {\n      display: none !important;\n    }\n  }\n\n  @media (max-width: 768px) {\n    #avatarContainer {\n      bottom: 30px !important;\n      right: 90px !important;\n      width: 100px !important;\n      display: none;\n      pointer-events: none;\n    }\n\n    #avatarContainer img {\n      width: 100%;\n      height: auto;\n      border-radius: 50% \/ 30%;\n      object-fit: cover;\n      filter: grayscale(0%) brightness(1.1) contrast(1.2);\n      box-shadow: 0 0 12px aqua;\n    }\n  }\n\n  @media (min-width: 769px) {\n    #avatarContainer {\n      pointer-events: auto;\n    }\n  }\n<\/style>\n\n<!-- L\u00d3GICA -->\n<script>\n  const entertainmentQuestions = [\n    \"Ready to see what\u2019s out there today?\",\n    \"Want entertainment options nearby?\",\n    \"Looking for something fun to do?\",\n    \"Need ideas for your free time?\",\n    \"Want something exciting tonight?\"\n  ];\n\n  const gastronomyQuestions = [\n    \"Want to see gastronomy options nearby?\",\n    \"Ready to have dinner tonight?\",\n    \"Would you like some brunch spots?\",\n    \"Hungry for something special?\",\n    \"Looking for restaurants around you?\"\n  ];\n\n  function showAvatarCloud(forcedType = null) {\n    const hour = new Date().getHours();\n    const type = forcedType || (hour % 2 === 0 ? \"gastronomy\" : \"entertainment\");\n    const question = (type === \"gastronomy\" ? gastronomyQuestions : entertainmentQuestions)[Math.floor(Math.random() * 5)];\n\n    document.getElementById(\"avatarCloudMsg\").innerText = question;\n    document.getElementById(\"avatarCloud\").style.display = \"block\";\n  }\n\n  function acceptAvatarSuggestion() {\n    dismissAvatarCloud();\n    alert(\"\u2705 Showing Aries recommendations near you...\");\n  }\n\n  function dismissAvatarCloud() {\n    document.getElementById(\"avatarCloud\").style.display = \"none\";\n  }\n\n  \/\/ \ud83d\udcbb Show avatar automatically after 3 seconds (desktop only)\n  function showAvatarAssistant() {\n    const avatar = document.getElementById(\"avatarContainer\");\n    if (window.innerWidth > 768) {\n      avatar.style.display = \"block\";\n      avatar.style.pointerEvents = \"auto\";\n    }\n  }\n  setTimeout(showAvatarAssistant, 3000);\n\n  \/\/ \ud83d\udcf1 Toggle mobile avatar on\/off\n  let avatarVisible = false;\n  function toggleMobileAvatar() {\n    const avatar = document.getElementById(\"avatarContainer\");\n    const btn = document.getElementById(\"avatarMobileBtn\");\n\n    if (!avatarVisible) {\n      avatar.style.display = \"block\";\n      avatar.style.pointerEvents = \"auto\";\n      showAvatarCloud();\n      btn.innerHTML = \"\u274c Close\";\n    } else {\n      avatar.style.display = \"none\";\n      avatar.style.pointerEvents = \"none\";\n      dismissAvatarCloud();\n      btn.innerHTML = \"\ud83d\udc64 Assistant\";\n    }\n\n    avatarVisible = !avatarVisible;\n  }\n\n  \/\/ \ud83d\udcf1 Show mobile button on load\n  window.addEventListener(\"load\", () => {\n    if (window.innerWidth <= 768) {\n      document.getElementById(\"avatarMobileBtn\").style.display = \"flex\";\n    }\n  });\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>ThematicTours \ud83d\udc63Ancestral \ud83e\uddd7Adventure \ud83e\uddd8Well-Being \ud83d\udd4cCultural \ud83c\udfadEntertainment \ud83d\udcdcHistory Would you like to see Evolution Tours of the area? Yes No \ud83d\udc63 Ancestral \ud83d\udcb3 God Story Birds Traditions Aire Medellin Embalses Clean Canal Thermals Rivers Antioquia Cacique Cultures Medicinal Indians Asteroid Pablo Piratas Paisas Traditions Leyends \ud83d\udcb3 Pay with Bliss Coin Enter your digital wallet #: Send [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2739","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/godsgalaxygame.com\/GGG\/wp-json\/wp\/v2\/pages\/2739","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/godsgalaxygame.com\/GGG\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/godsgalaxygame.com\/GGG\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/godsgalaxygame.com\/GGG\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/godsgalaxygame.com\/GGG\/wp-json\/wp\/v2\/comments?post=2739"}],"version-history":[{"count":181,"href":"https:\/\/godsgalaxygame.com\/GGG\/wp-json\/wp\/v2\/pages\/2739\/revisions"}],"predecessor-version":[{"id":6865,"href":"https:\/\/godsgalaxygame.com\/GGG\/wp-json\/wp\/v2\/pages\/2739\/revisions\/6865"}],"wp:attachment":[{"href":"https:\/\/godsgalaxygame.com\/GGG\/wp-json\/wp\/v2\/media?parent=2739"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}