{"id":3015,"date":"2025-07-08T09:47:35","date_gmt":"2025-07-08T09:47:35","guid":{"rendered":"https:\/\/godsgalaxygame.com\/GGG\/?page_id=3015"},"modified":"2026-05-28T09:11:37","modified_gmt":"2026-05-28T09:11:37","slug":"gift","status":"publish","type":"page","link":"https:\/\/godsgalaxygame.com\/GGG\/gift\/","title":{"rendered":"Gift"},"content":{"rendered":"\r\n<!-- =====================\r\nPOP-UP BEFORE RESERVATION (LEVEL 5 \u2192 LOCAL INVESTMENTS)\r\n===================== -->\r\n\r\n<style>\r\n  #investReservePopupOverlay {\r\n    position: fixed;\r\n    top: 0; left: 0;\r\n    width: 100%; height: 100%;\r\n    background: rgba(0,0,0,0.85);\r\n    display: none;\r\n    justify-content: center;\r\n    align-items: center;\r\n    z-index: 999999;\r\n  }\r\n\r\n  #investReservePopup {\r\n    background: #111;\r\n    border: 2px solid #ffffff55;\r\n    padding: 30px 35px;\r\n    border-radius: 18px;\r\n    text-align: center;\r\n    width: 300px;\r\n    box-shadow: 0 0 25px #ffffff88;\r\n  }\r\n\r\n  #investReservePopup h2 {\r\n    color: white;\r\n    font-size: 20px;\r\n    margin-bottom: 25px;\r\n  }\r\n\r\n  .invest-reserve-btn {\r\n    padding: 10px 20px;\r\n    margin: 8px;\r\n    border-radius: 10px;\r\n    border: none;\r\n    cursor: pointer;\r\n    font-weight: bold;\r\n    font-size: 15px;\r\n  }\r\n\r\n  .invest-yes {\r\n    background: #6a00ff;\r\n    color: white;\r\n    box-shadow: 0 0 12px #6a00ff;\r\n  }\r\n\r\n  .invest-no {\r\n    background: #ff0066;\r\n    color: white;\r\n    box-shadow: 0 0 12px #ff0066;\r\n  }\r\n<\/style>\r\n\r\n<div id=\"investReservePopupOverlay\">\r\n  <div id=\"investReservePopup\">\r\n    <h2>Do you want to see Local Investments?<\/h2>\r\n    <button class=\"invest-reserve-btn invest-yes\" onclick=\"goToInvestments()\">Yes<\/button>\r\n    <button class=\"invest-reserve-btn invest-no\" onclick=\"continueReservationFromDiscounts()\">No<\/button>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n  \/\/ Level 6 \u2013 Limitless Investments (ajusta si tu URL es distinta)\r\n  const INVESTMENTS_URL = \"\/GGG\/limitless-investments\/\";\r\n\r\n  \/\/ P\u00e1gina de reservas para Discounts & Gifting (Level 5)\r\n  \/\/ C\u00e1mbiala si este nivel usa otra URL\r\n  const ELEMENTS_URL_5 = \"https:\/\/godsgalaxygame.com\/GGG\/discounts-gift\/?dgi=1\";\r\n\r\n  function openInvestmentsPopup() {\r\n    document.getElementById(\"investReservePopupOverlay\").style.display = \"flex\";\r\n  }\r\n\r\n  function goToInvestments() {\r\n    window.location.href = INVESTMENTS_URL;\r\n  }\r\n\r\n  function continueReservationFromDiscounts() {\r\n    window.location.href = ELEMENTS_URL_5;\r\n  }\r\n<\/script>\r\n\r\n\r\n\r\n<!-- BLOQUE 2 - Conference Cube V19 Completo + Mapa Circular + API -->\r\n<style>\r\n  @media (max-width: 768px) {\r\n    #glowMapContainer {\r\n      margin-top: -55px !important;\r\n    }\r\n  }\r\n<\/style>\r\n<div id=\"giftCubeContainer\" style=\"opacity:1; pointer-events: auto; transition: opacity 0.6s ease;\">\r\n  <!-- ESCENA CUBO -->\r\n  <div class=\"cube-scene\" style=\"width:180px; height:180px; perspective:1000px; position:fixed; bottom:20px; left:20px; z-index:1000;\">\r\n    <div class=\"cube\" id=\"giftCube\" style=\"width:100%; height:100%; position:relative; transform-style:preserve-3d; transform:rotateX(0deg) rotateY(0deg); transition:transform 0.3s ease;\">\r\n   <!-- FRONT -->\r\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;\">\r\n        <div style=\"font-size:42px; color:white; text-shadow:0 0 15px white;\">\ud83d\udc9d<\/div>\r\n        <div style=\"font-size:16px; color:white; font-weight:bold; text-shadow:0 0 10px white; margin-top:6px;\">Gift<\/div>\r\n      <\/div>\r\n\r\n      <!-- Cara Trasera del Cubo: Transportation -->\r\n<!-- Back Face - Transportation Cube - Nuevo Dise\u00f1o con Botones Circulares -->\r\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;\">\r\n\r\n  <!-- Sol central -->\r\n  <img decoding=\"async\" src=\"http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/06\/1000065346-scaled.jpg\"\r\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;\" \/>\r\n\r\n  <!-- RESERVE (LEVEL 5 \u2013 DISCOUNTS & GIFTING) -->\r\n<a href=\"javascript:void(0)\"\r\n   onclick=\"openInvestmentsPopup()\"\r\n   style=\"position:absolute; top:8px; left:8px; width:44px; height:44px; border-radius:50%;\r\n          background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/06\/Screenshot_20240108-225452_Chrome-scaled.jpg');\r\n          background-size:cover; box-shadow:0 0 12px cyan;\"\r\n   title=\"Reserve\"><\/a>\r\n\r\n\r\n  <!-- Bliss Coin -->\r\n  <div onclick=\"openBlissCoinPopup()\"\r\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;\"\r\n       title=\"Pay with Bliss Coin\">\ud83d\udcb3<\/div>\r\n\r\n  <!-- Coupon Button (Bottom-Left Corner) -->\r\n<a href=\"https:\/\/godsgalaxygame.com\/GGG\/discounts-gift\/\"\r\n   target=\"_blank\"\r\n   style=\"position: absolute;\r\n          bottom: 8px;\r\n          left: 8px;\r\n          width: 44px;\r\n          height: 44px;\r\n          border-radius: 50%;\r\n          background-image: url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/06\/Screenshot_20240108-225546_Chrome.jpg');\r\n          background-size: cover;\r\n          box-shadow: 0 0 12px cyan;\r\n          cursor: pointer;\"\r\n   title=\"Get Coupons\">\r\n<\/a>\r\n\r\n\r\n\r\n  <!-- Become a Host -->\r\n  <a href=\"https:\/\/luxus2.godaddysites.com\/\" target=\"_blank\"\r\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;\"\r\n     title=\"Become a Host\"><\/a>\r\n<\/div>\r\n\r\n\r\n\r\n      <!-- RIGHT (Hotel) -->\r\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;\">\r\n        <button onclick=\"showHostButtons('hotel-ecos')\" style=\"position:absolute; top:8px; left:27px; width:126px; height:17px; border:1px solid beige; color:white; background:transparent;\">Eco<\/button>\r\n        <button onclick=\"showHostButtons('hotel-homes')\" style=\"position:absolute; bottom:8px; left:27px; width:126px; height:17px; border:1px solid beige; color:white; background:transparent;\">Home<\/button>\r\n        <button onclick=\"showHostButtons('hotel-mansio')\" style=\"position:absolute; top:27px; left:8px; height:126px; width:17px; border:1px solid beige; color:white; writing-mode:vertical-rl; background:transparent;\">Mansions<\/button>\r\n        <button onclick=\"showHostButtons('hotel-pent')\" style=\"position:absolute; top:27px; right:8px; height:126px; width:17px; border:1px solid beige; color:white; writing-mode:vertical-lr; background:transparent;\">Penthouse<\/button>\r\n        <div style=\"position:absolute; top:50%; left:50%; transform:translate(-50%, -50%); text-align:center;\">\r\n          <div style=\"color:beige; font-size:16px; font-weight:bold;\">Hotels<\/div>\r\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;\">\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <!-- LEFT (Spa) -->\r\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;\">\r\n        <button onclick=\"showHostButtons('spas-kidz')\" style=\"position:absolute; top:8px; left:27px; width:126px; height:17px; border:1px solid #00ccff; color:white; background:transparent;\">Kids<\/button>\r\n        <button onclick=\"showHostButtons('spas-wome')\" style=\"position:absolute; bottom:8px; left:27px; width:126px; height:17px; border:1px solid #00ccff; color:white; background:transparent;\">Women<\/button>\r\n        <button onclick=\"showHostButtons('spas-mens')\" style=\"position:absolute; top:27px; left:8px; height:126px; width:17px; border:1px solid #00ccff; color:white; writing-mode:vertical-rl; background:transparent;\">Men<\/button>\r\n        <button onclick=\"showHostButtons('spas-pet')\" style=\"position:absolute; top:27px; right:8px; height:126px; width:17px; border:1px solid #00ccff; color:white; writing-mode:vertical-lr; background:transparent;\">Pets<\/button>\r\n        <div style=\"position:absolute; top:50%; left:50%; transform:translate(-50%, -50%); text-align:center;\">\r\n          <div style=\"color:#00ccff; font-size:16px; font-weight:bold;\">Spa<\/div>\r\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;\">\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <!-- TOP (Restaurants) -->\r\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;\">\r\n        <button onclick=\"showHostButtons('rests-stea')\" style=\"position:absolute; top:8px; left:27px; width:126px; height:17px; border:1px solid green; color:white; background:transparent;\">Steak<\/button>\r\n        <button onclick=\"showHostButtons('rests-vegans')\" style=\"position:absolute; bottom:8px; left:27px; width:126px; height:17px; border:1px solid green; color:white; background:transparent;\">Vegan<\/button>\r\n        <button onclick=\"showHostButtons('rests-seaf')\" style=\"position:absolute; top:27px; left:8px; height:126px; width:17px; border:1px solid green; color:white; writing-mode:vertical-rl; background:transparent;\">Sea Food<\/button>\r\n        <button onclick=\"showHostButtons('rests-local')\" style=\"position:absolute; top:27px; right:8px; height:126px; width:17px; border:1px solid green; color:white; writing-mode:vertical-lr; background:transparent;\">Locals<\/button>\r\n        <div style=\"position:absolute; top:50%; left:50%; transform:translate(-50%, -50%); text-align:center;\">\r\n          <div style=\"color:#33ff33; font-size:16px; font-weight:bold;\">Restaurants<\/div>\r\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;\">\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <!-- BOTTOM (Work Formation) -->\r\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;\">\r\n        <button onclick=\"showHostButtons('wrkfo-semis')\" style=\"position:absolute; top:8px; left:27px; width:126px; height:17px; border:1px solid red; color:white; background:transparent;\">Seminars<\/button>\r\n        <button onclick=\"showHostButtons('wrkfo-bootk')\" style=\"position:absolute; bottom:8px; left:27px; width:126px; height:17px; border:1px solid red; color:white; background:transparent;\">Bootcamp<\/button>\r\n        <button onclick=\"showHostButtons('wrkfo-online')\" style=\"position:absolute; top:27px; left:8px; height:126px; width:17px; border:1px solid red; color:white; writing-mode:vertical-rl; background:transparent;\">Online<\/button>\r\n        <button onclick=\"showHostButtons('wrkfo-book')\" style=\"position:absolute; top:27px; right:8px; height:126px; width:17px; border:1px solid red; color:white; writing-mode:vertical-lr; background:transparent;\">Books<\/button>\r\n        <div style=\"position:absolute; top:50%; left:50%; transform:translate(-50%, -50%); text-align:center;\">\r\n          <div style=\"color:red; font-size:16px; font-weight:bold;\">Work Formation<\/div>\r\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;\">\r\n        <\/div>\r\n      <\/div>\r\n\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- MAPA CIRCULAR -->\r\n  <div id=\"glowMapContainer\" style=\"opacity:1; pointer-events:auto; 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;\">\r\n    <div id=\"googleMap\" style=\"width:100%; height:100%;\"><\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<!-- Google Maps API (clave v\u00e1lida y correcta) -->\r\n<script src=\"https:\/\/maps.googleapis.com\/maps\/api\/js?key=AIzaSyDLPhx98z9AgoqXS6VeoESE9NV6URuOhiE&#038;callback=initMap\" async defer><\/script>\r\n\r\n<script>\r\n  function activategiftCube() {\r\n    \/\/ Oculta el grid de opciones\r\n    const rrGrid = document.getElementById(\"rrGrid\");\r\n    if (rrGrid) {\r\n      rrGrid.style.display = \"none\";\r\n    }\r\n\r\n    \/\/ Muestra el contenedor del cubo Gift\r\n    const container = document.getElementById(\"giftContainer\");\r\n    if (container) {\r\n      container.style.opacity = \"1\";\r\n      container.style.pointerEvents = \"auto\";\r\n    }\r\n\r\n    \/\/ Muestra el mapa\r\n    const map = document.getElementById(\"glowMapContainer\");\r\n    if (map) {\r\n      map.style.opacity = \"1\";\r\n      map.style.pointerEvents = \"auto\";\r\n    }\r\n\r\n    \/\/ Reinicia el mapa si es necesario\r\n    if (typeof initMap === \"function\") {\r\n      initMap();\r\n    }\r\n  }\r\n<\/script>\r\n<script>\r\n function initMap() {\r\n  const map = new google.maps.Map(document.getElementById(\"googleMap\"), {\r\n    center: { lat: 6.2414088, lng: -75.22951 },  \/\/ Bliss Glamping\r\n    zoom: 15,\r\n    disableDefaultUI: true,\r\n    gestureHandling: \"greedy\"\r\n  });\r\n\r\n  \/\/ \ud83d\udfe2 Add this to show the marker\r\n  const marker = new google.maps.Marker({\r\n    position: { lat: 6.2414088, lng: -75.22951 },\r\n    map: map,\r\n    title: \"Bliss Glamping\"\r\n  });\r\n\r\n  \/\/ Optional: save the map to global variable if needed later\r\n  window.ggMap = map;\r\n}\r\n<\/script>\r\n<!-- POP-UP para Bliss Coin -->\r\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;\">\r\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;\">\r\n    <h3 style=\"font-size:18px;\">\ud83d\udcb3 Pay with Bliss Coin<\/h3>\r\n    <p style=\"font-size:14px;\">Enter your digital wallet #:<\/p>\r\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;\" \/>\r\n    <p style=\"margin-top:14px;\">Send payment to:<\/p>\r\n    <div style=\"margin:8px auto; padding:6px; background:#222; border:1px solid cyan; border-radius:8px;\">\r\n      <code style=\"font-size:13px;\">HOST-WALLET-ADDRESS-123<\/code>\r\n    <\/div>\r\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;\">\r\n      Close\r\n    <\/button>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n  function openBlissCoinPopup() {\r\n    document.getElementById('blissCoinPopup').style.display = 'flex';\r\n  }\r\n  function closeBlissCoinPopup() {\r\n    document.getElementById('blissCoinPopup').style.display = 'none';\r\n  }\r\n<\/script>\r\n\r\n\r\n\r\n<!-- BLOQUE 3 \u2013 Movimiento + Swipe + SignIn + Favoritos (First You) -->\r\n\r\n<!-- ESTILOS -->\r\n<style>\r\n  #floatingButtons {\r\n    position: fixed;\r\n    top: 14px;\r\n    right: 14px;\r\n    display: flex;\r\n    flex-direction: row;\r\n    gap: 10px;\r\n    z-index: 3000;\r\n  }\r\n\r\n  #favoritesBtn, #signinBtn {\r\n    font-size: 15px;\r\n    padding: 6px 10px;\r\n    border-radius: 8px;\r\n    border: 2px solid white;\r\n    color: white;\r\n    background: rgba(0, 0, 0, 0.6);\r\n    cursor: pointer;\r\n    box-shadow: 0 0 8px cyan;\r\n    font-family: Orbitron;\r\n  }\r\n\r\n  #favoritesBtn:hover::after {\r\n    content: ' Double click a Host to add \ud83d\udc98';\r\n    font-size: 10px;\r\n    margin-left: 8px;\r\n    color: cyan;\r\n  }\r\n\r\n#roseBtn {\r\n  width: 38px;\r\n  height: 38px;\r\n  background-color: black; \/* Keep black background *\/\r\n  background-image: url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/07\/ChatGPT-Image-Jul-7-2025-05_11_38-PM.png');\r\n  background-size: cover;\r\n  background-position: center;\r\n  border: 2px solid white; \/* Optional white border *\/\r\n  border-radius: 50%;\r\n  box-shadow: 0 0 10px white; \/* White glow around the button *\/\r\n  cursor: pointer;\r\n  margin-top: 2px; \/* Adjust position to align with others *\/\r\n}\r\n\r\n#roseBtn:hover {\r\n  transform: scale(1.2);\r\n}\r\n  #pyramidBtn {\r\n    width: 38px;\r\n    height: 38px;\r\n    background-color: black;\r\n    border: 2px solid white;\r\n    border-radius: 50%;\r\n    box-shadow: 0 0 10px cyan; \/* glow *\/\r\n    display: flex;\r\n    justify-content: center;\r\n    align-items: center;\r\n    font-size: 20px; \/* emoji size *\/\r\n    cursor: pointer;\r\n    margin-top: 2px; \/* align with rose *\/\r\n  }\r\n\r\n  #signinBtn:hover::after {\r\n    content: ' Sign in to save your Favorites';\r\n    font-size: 10px;\r\n    margin-left: 8px;\r\n    color: cyan;\r\n  }\r\n\r\n  #swipeImage {\r\n    position: fixed;\r\n    top: 0;\r\n    left: 50%;\r\n    transform: translateX(-50%);\r\n    width: 160px;\r\n    z-index: 1200;\r\n    display: none;\r\n  }\r\n#swipeImage {\r\n  display: none !important;\r\n}\r\n\r\n<\/style>\r\n\r\n<!-- BOTONES FLOTANTES -->\r\n<div id=\"floatingButtons\">\r\n<button\r\n    id=\"pyramidBtn\"\r\n    title=\"Back to MedaYork Pyramid\"\r\n    onclick=\"window.location.href='https:\/\/godsgalaxygame.com\/GGG\/medayork-pyramid-2\/';\">\r\n    \ud83e\uddca\r\n  <\/button>\r\n<button id=\"roseBtn\"><\/button>\r\n\r\n  <button id=\"favoritesBtn\">\ud83d\udc96<\/button>\r\n  <button id=\"signinBtn\">Sign In \/ Sign Up<\/button>\r\n<\/div>\r\n\r\n<!-- IMAGEN DE SWIPE -->\r\n<img decoding=\"async\" id=\"swipeImage\" src=\"https:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/06\/Screenshot_20250627_154147_Gallery.jpg\" alt=\"Swipe\" \/>\r\n\r\n<!-- SCRIPT DE FUNCIONALIDAD -->\r\n<script>\r\n  \/\/ Movimiento del cubo Gift\r\n  let isDragging = false, startX, startY, rotateX = 0, rotateY = 0;\r\n  const cube = document.getElementById('giftCube');\r\n\r\n  function updateRotation(x, y) {\r\n    cube.style.transform = `rotateX(${x}deg) rotateY(${y}deg)`;\r\n  }\r\n\r\n  function onMouseDown(e) {\r\n    isDragging = true;\r\n    startX = e.clientX;\r\n    startY = e.clientY;\r\n  }\r\n\r\n  function onMouseMove(e) {\r\n    if (!isDragging) return;\r\n    const deltaX = e.clientX - startX;\r\n    const deltaY = e.clientY - startY;\r\n    rotateY += deltaX * 0.5;\r\n    rotateX -= deltaY * 0.5;\r\n    updateRotation(rotateX, rotateY);\r\n    startX = e.clientX;\r\n    startY = e.clientY;\r\n  }\r\n\r\n  function onMouseUp() {\r\n    isDragging = false;\r\n  }\r\n\r\n  function onTouchStart(e) {\r\n    isDragging = true;\r\n    startX = e.touches[0].clientX;\r\n    startY = e.touches[0].clientY;\r\n  }\r\n\r\n  function onTouchMove(e) {\r\n    if (!isDragging) return;\r\n    const deltaX = e.touches[0].clientX - startX;\r\n    const deltaY = e.touches[0].clientY - startY;\r\n    rotateY += deltaX * 0.5;\r\n    rotateX -= deltaY * 0.5;\r\n    updateRotation(rotateX, rotateY);\r\n    startX = e.touches[0].clientX;\r\n    startY = e.touches[0].clientY;\r\n  }\r\n\r\n  function onTouchEnd() {\r\n    isDragging = false;\r\n  }\r\n\r\n  const cubeContainer = document.querySelector('.cube-scene');\r\n  if (cubeContainer) {\r\n    cubeContainer.addEventListener('mousedown', onMouseDown);\r\n    window.addEventListener('mousemove', onMouseMove);\r\n    window.addEventListener('mouseup', onMouseUp);\r\n    cubeContainer.addEventListener('touchstart', onTouchStart);\r\n    window.addEventListener('touchmove', onTouchMove);\r\n    window.addEventListener('touchend', onTouchEnd);\r\n  }\r\n\r\n  \/\/ Swipe image cuando aparece el cubo\r\n  const observer = new MutationObserver(() => {\r\n    const gift = document.getElementById('giftCubeContainer');\r\n    if (gift && gift.style.opacity === \"1\") {\r\n      const swipe = document.getElementById('swipeImage');\r\n      swipe.style.display = 'block';\r\n      setTimeout(() => {\r\n        swipe.style.display = 'none';\r\n      }, 3500);\r\n      observer.disconnect();\r\n    }\r\n  });\r\n  observer.observe(document.body, { childList: true, subtree: true });\r\n\r\n  \/\/ Sistema de favoritos \ud83d\udc96 \u2192 \ud83d\udc98\r\n  const favorites = [];\r\n\r\n  function toggleFavorite(id, imgUrl, mapLat, mapLng) {\r\n    if (!favorites.some(f => f.id === id)) {\r\n      favorites.push({ id, imgUrl, lat: mapLat, lng: mapLng });\r\n      document.getElementById(\"favoritesBtn\").textContent = \"\ud83d\udc98\";\r\n      console.log(\"Favorito agregado:\", id);\r\n    }\r\n  }\r\n\r\n  function clearFavorites() {\r\n    favorites.length = 0;\r\n    document.getElementById(\"favoritesBtn\").textContent = \"\ud83d\udc96\";\r\n  }\r\n\r\n  function focusOnHost(lat, lng) {\r\n    if (window.ggMap) {\r\n      window.ggMap.setCenter({ lat, lng });\r\n      window.ggMap.setZoom(15);\r\n      new google.maps.Marker({ position: { lat, lng }, map: window.ggMap });\r\n    }\r\n  }\r\n\r\n  document.getElementById(\"favoritesBtn\").addEventListener(\"click\", () => {\r\n    if (favorites.length === 0) return;\r\n    document.querySelectorAll('.host-circle').forEach(btn => btn.style.display = 'none');\r\n    favorites.forEach(fav => {\r\n      const existing = document.querySelector(`.${fav.id}`);\r\n      if (existing) existing.style.display = 'inline-block';\r\n    });\r\n  });\r\n<\/script>\r\n\r\n\r\n\r\n<!-- HOST CIRCLES \u2014 CSS (Gifting) -->\r\n<style>\r\n  \/* container *\/\r\n  #hostButtons{\r\n    display:none;                 \/* hidden until a sub-option is clicked *\/\r\n    position:absolute;\r\n    top:50%; left:50%;\r\n    transform:translate(-50%,-50%);\r\n    width:100%; max-width:500px; height:500px;\r\n    pointer-events:none;          \/* turned ON in JS when shown *\/\r\n    z-index:3000;\r\n  }\r\n\r\n  \/* buttons *\/\r\n  #hostButtons .host-circle{\r\n    width:80px; height:80px; border-radius:50%;\r\n    border:2px solid #fff; box-shadow:0 0 14px #fff;\r\n    background-size:cover; background-position:center;\r\n    position:absolute; pointer-events:auto; cursor:pointer;\r\n    transition:transform .3s, box-shadow .3s;\r\n  }\r\n  #hostButtons .host-circle:hover{ transform:scale(1.15); box-shadow:0 0 20px cyan; }\r\n\r\n  \/* desktop placement (around the circle) *\/\r\n  #hostButtons .one    { top:4%;    left:10%; }\r\n  #hostButtons .five   { top:4%;    right:10%; }\r\n  #hostButtons .seven  { bottom:8%; left:10%; }\r\n  #hostButtons .month  { bottom:8%; right:10%; }\r\n\r\n  \/* color accents per family (match cube face glows) *\/\r\n  #hostButtons .hotel { border-color:beige;   box-shadow:0 0 14px beige; }\r\n  #hostButtons .spas { border-color:#00ccff; box-shadow:0 0 14px #00ccff; }\r\n  #hostButtons .rests  { border-color:#33ff33; box-shadow:0 0 14px #33ff33; }\r\n  #hostButtons .wrkfo { border-color:red;     box-shadow:0 0 14px red; }\r\n\r\n  \/* phone: turn into one row under the map *\/\r\n  @media (max-width:768px){\r\n    #hostButtons{\r\n      position:relative; top:auto; left:auto; transform:none;\r\n      height:auto; margin-top:-35px;\r\n      display:none;               \/* still hidden by default *\/\r\n      flex-wrap:nowrap; justify-content:center; gap:10px;\r\n    }\r\n    #hostButtons .host-circle{ position:relative; width:75px; height:75px; margin:0 6px; }\r\n  }\r\n<\/style>\r\n\r\n<!-- HOST CIRCLES \u2014 HTML (Gifting: Hotels\r\n \/ Spa \/ Restaurants \/ Work Formation) -->\r\n<div id=\"hostButtons\">\r\n  <!-- Hotels (beige) -->\r\n  <button class=\"host-circle hotel hotel-ecos one\"\r\n    data-lat=\"6.2414088\" data-lng=\"-75.22951\"\r\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240908_173957_Instagram.jpg');\"\r\n    title=\"Hotel \u2022 Eco\"><\/button>\r\n\r\n  <button class=\"host-circle hotel hotel-homes five\"\r\n    data-lat=\"6.22663\" data-lng=\"-75.1831\"\r\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240908_175125_Maps-scaled.jpg');\"\r\n    title=\"Hotel \u2022 Home\"><\/button>\r\n\r\n  <button class=\"host-circle hotel hotel-mansio seven\"\r\n    data-lat=\"6.2288021\" data-lng=\"-75.2142911\"\r\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240908_181851_Chrome-scaled.jpg');\"\r\n    title=\"Hotel \u2022 Mansions\"><\/button>\r\n\r\n  <button class=\"host-circle hotel hotel-pent month\"\r\n    data-lat=\"6.24426\" data-lng=\"-75.217632\"\r\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240908_183125_Chrome.jpg');\"\r\n    title=\"Hotel \u2022 Penthouse\"><\/button>\r\n\r\n  <!-- Spa (cyan) -->\r\n  <button class=\"host-circle spas spas-kidz one\"\r\n    data-lat=\"6.2414088\" data-lng=\"-75.2315485\"\r\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240908_184319_Chrome-scaled.jpg');\"\r\n    title=\"Spa \u2022 Kids\"><\/button>\r\n\r\n  <button class=\"host-circle spas spas-wome five\"\r\n    data-lat=\"6.24426\" data-lng=\"-75.217632\"\r\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240908_190902_Google.jpg');\"\r\n    title=\"Spa \u2022 Women\"><\/button>\r\n\r\n  <button class=\"host-circle spas spas-mens seven\"\r\n    data-lat=\"6.2083202\" data-lng=\"-75.5677995\"\r\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240908_185944_Google.jpg');\"\r\n    title=\"Spa \u2022 Men\"><\/button>\r\n\r\n  <button class=\"host-circle spas spas-pet month\"\r\n    data-lat=\"6.2252116\" data-lng=\"-75.1800426\"\r\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240908_185152_Chrome.jpg');\"\r\n    title=\"Spa \u2022 Pets\"><\/button>\r\n\r\n  <!-- Restaurants (green) -->\r\n  <button class=\"host-circle rests rests-stea one\"\r\n    data-lat=\"6.2414088\" data-lng=\"-75.22951\"\r\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240908_194330_Maps-scaled.jpg');\"\r\n    title=\"Restaurants \u2022 Steak\"><\/button>\r\n\r\n  <button class=\"host-circle rests rests-vegans five\"\r\n    data-lat=\"6.22663\" data-lng=\"-75.1831\"\r\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240908_195140_Instagram.jpg');\"\r\n    title=\"Restaurants \u2022 Vegan\"><\/button>\r\n\r\n  <button class=\"host-circle rests rests-seaf seven\"\r\n    data-lat=\"6.2288021\" data-lng=\"-75.2142911\"\r\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240908_195555_Maps.jpg');\"\r\n    title=\"Restaurants \u2022 Sea Food\"><\/button>\r\n\r\n  <button class=\"host-circle rests rests-local month\"\r\n    data-lat=\"6.24426\" data-lng=\"-75.217632\"\r\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240908_194330_Maps-scaled.jpg');\"\r\n    title=\"Restaurants \u2022 Locals\"><\/button>\r\n\r\n  <!-- Work Formation (red) -->\r\n  <button class=\"host-circle wrkfo wrkfo-semis one\"\r\n    data-lat=\"6.2414088\" data-lng=\"-75.22951\"\r\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240908_201528_Gallery.jpg');\"\r\n    title=\"Work Formation \u2022 Seminars\"><\/button>\r\n\r\n  <button class=\"host-circle wrkfo wrkfo-bootk five\"\r\n    data-lat=\"6.22663\" data-lng=\"-75.1831\"\r\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240908_202111_Chrome.jpg');\"\r\n    title=\"Work Formation \u2022 Bootcamp\"><\/button>\r\n\r\n  <button class=\"host-circle wrkfo wrkfo-online seven\"\r\n    data-lat=\"6.2288021\" data-lng=\"-75.2142911\"\r\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240908_201528_Gallery.jpg');\"\r\n    title=\"Work Formation \u2022 Online\"><\/button>\r\n\r\n  <button class=\"host-circle wrkfo wrkfo-book month\"\r\n    data-lat=\"6.24426\" data-lng=\"-75.217632\"\r\n    style=\"background-image:url('http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/12\/Screenshot_20240908_201528_Gallery.jpg');\"\r\n    title=\"Work Formation \u2022 Books\"><\/button>\r\n<\/div>\r\n\r\n<!-- HOST CIRCLES \u2014 JS (Gifting) -->\r\n<script>\r\n  \/* Show only the requested key, e.g., 'hotel-ecos' *\/\r\n  function showHostButtons(suboption){\r\n    const wrap = document.getElementById('hostButtons');\r\n    if(!wrap) return;\r\n\r\n    \/\/ hide all\r\n    wrap.querySelectorAll('.host-circle').forEach(el => el.style.display = 'none');\r\n\r\n    \/\/ show only requested group (class names include exact key)\r\n    wrap.querySelectorAll('.' + suboption).forEach(el => el.style.display = 'inline-block');\r\n\r\n    \/\/ reveal the container and allow clicks\r\n    wrap.style.display = 'flex';\r\n    wrap.style.pointerEvents = 'auto';\r\n  }\r\n\r\n  \/\/ dbl-tap \/ dbl-click to favorite (uses your existing toggleFavorite)\r\n  document.addEventListener('DOMContentLoaded', () => {\r\n    document.querySelectorAll('#hostButtons .host-circle').forEach(btn => {\r\n      btn.addEventListener('dblclick', (e) => {\r\n        e.preventDefault();\r\n\r\n        \/\/ \u2705 Get the specific key like \"heli-around\" \/ \"yacht-goto\"\r\n        const id = [...btn.classList].find(c =>\r\n          c.includes('-') &&\r\n          !['host-circle','around','goto','emergency','adventure'].includes(c)\r\n        );\r\n\r\n        if (!id) {\r\n          console.warn(\"No favorite id found for button:\", btn.className);\r\n          return;\r\n        }\r\n\r\n        \/\/ background-image: url(\"...\") or url('...')\r\n        const bg = btn.style.backgroundImage || '';\r\n        const img = bg.startsWith('url(')\r\n          ? bg.slice(4, -1).replace(\/^[\"']|[\"']$\/g, '')\r\n          : '';\r\n\r\n        const lat = parseFloat(btn.dataset.lat);\r\n        const lng = parseFloat(btn.dataset.lng);\r\n\r\n        if (typeof toggleFavorite === 'function') {\r\n          toggleFavorite(id, img, lat, lng);\r\n        } else {\r\n          console.warn(\"toggleFavorite() is not defined yet.\");\r\n        }\r\n      });\r\n    });\r\n  });\r\n\r\n  \/* Center the map when any host circle is clicked *\/\r\n  document.addEventListener('click', function (e) {\r\n    const btn = e.target.closest('#hostButtons .host-circle');\r\n    if (!btn) return;\r\n\r\n    const lat = parseFloat(btn.dataset.lat);\r\n    const lng = parseFloat(btn.dataset.lng);\r\n    if (!Number.isFinite(lat) || !Number.isFinite(lng)) return;\r\n\r\n    if (typeof window.focusOnHost === 'function') {\r\n      focusOnHost(lat, lng);\r\n      return;\r\n    }\r\n\r\n    if (window.ggMap && window.google) {\r\n      const pos = new google.maps.LatLng(lat, lng);\r\n      ggMap.setCenter(pos);\r\n      ggMap.setZoom(15);\r\n      new google.maps.Marker({ position: pos, map: ggMap });\r\n    }\r\n  });\r\n<\/script>\r\n\r\n\r\n\r\n&#8211; AVATAR &#8211;>\r\n<div id=\"avatarContainer\" onclick=\"showAvatarCloud()\" \r\n     style=\"position:fixed; bottom:80px; right:20px; z-index:9999; cursor:pointer; display:none;\">\r\n  <img decoding=\"async\" src=\"http:\/\/godsgalaxygame.com\/GGG\/wp-content\/uploads\/2025\/07\/Screenshot_20231118-120724_Instagram-scaled.jpg\" \r\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%);\">\r\n<\/div>\r\n\r\n<!-- CLOUD BUBBLE -->\r\n<div id=\"avatarCloud\" style=\"position:fixed; bottom:310px; right:30px; max-width:250px; background:rgba(0,0,0,0.7); \r\n     color:white; font-family:Orbitron, sans-serif; font-size:12px; line-height:16px; border-radius:20px 20px 20px 0px; \r\n     padding:14px 16px; box-shadow:0 0 15px aqua; display:none; z-index:9999; text-align:center;\r\n     border: 1px solid aqua;\">\r\n  <div id=\"avatarCloudMsg\">Loading&#8230;<\/div>\r\n  <div style=\"margin-top:10px;\">\r\n    <button onclick=\"acceptAvatarSuggestion()\" style=\"background:lime; color:black; border:none; padding:6px 10px; font-weight:bold;\">Yes<\/button>\r\n    <button onclick=\"dismissAvatarCloud()\" style=\"background:aqua; color:white; border:none; padding:6px 10px; font-weight:bold;\">No<\/button>\r\n  <\/div>\r\n  <div style=\"position:absolute; bottom:-18px; right:10px; width:0; height:0; border-left:10px solid transparent; \r\n              border-right:10px solid transparent; border-top:18px solid rgba(0,255,255,0.6); filter:blur(0.5px);\">\r\n  <\/div>\r\n<\/div>\r\n\r\n<!-- MOBILE ASSISTANT BUTTON -->\r\n<div id=\"avatarMobileBtn\" onclick=\"toggleMobileAvatar()\" style=\"display:none;\">\r\n  \ud83d\udc64 Assistant\r\n<\/div>\r\n\r\n<!-- ESTILOS -->\r\n<style>\r\n  #avatarMobileBtn {\r\n    position: fixed;\r\n    bottom: 18px;\r\n    right: 18px;\r\n    z-index: 9999;\r\n    background: rgba(0, 0, 0, 0.7);\r\n    color: white;\r\n    font-family: Orbitron, sans-serif;\r\n    font-size: 13px;\r\n    padding: 10px 14px;\r\n    border: 2px solid aqua;\r\n    border-radius: 14px;\r\n    box-shadow: 0 0 12px aqua;\r\n    cursor: pointer;\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 8px;\r\n  }\r\n\r\n  @media (min-width: 769px) {\r\n    #avatarMobileBtn {\r\n      display: none !important;\r\n    }\r\n  }\r\n\r\n  @media (max-width: 768px) {\r\n    #avatarContainer {\r\n      bottom: 30px !important;\r\n      right: 90px !important;\r\n      width: 100px !important;\r\n      display: none;\r\n      pointer-events: none;\r\n    }\r\n\r\n    #avatarContainer img {\r\n      width: 100%;\r\n      height: auto;\r\n      border-radius: 50% \/ 30%;\r\n      object-fit: cover;\r\n      filter: grayscale(0%) brightness(1.1) contrast(1.2);\r\n      box-shadow: 0 0 12px aqua;\r\n    }\r\n  }\r\n\r\n  @media (min-width: 769px) {\r\n    #avatarContainer {\r\n      pointer-events: auto;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<!-- L\u00d3GICA -->\r\n<script>\r\n  const entertainmentQuestions = [\r\n    \"Ready to see what\u2019s out there today?\",\r\n    \"Want entertainment options nearby?\",\r\n    \"Looking for something fun to do?\",\r\n    \"Need ideas for your free time?\",\r\n    \"Want something exciting tonight?\"\r\n  ];\r\n\r\n  const gastronomyQuestions = [\r\n    \"Want to see gastronomy options nearby?\",\r\n    \"Ready to have dinner tonight?\",\r\n    \"Would you like some brunch spots?\",\r\n    \"Hungry for something special?\",\r\n    \"Looking for restaurants around you?\"\r\n  ];\r\n\r\n  function showAvatarCloud(forcedType = null) {\r\n    const hour = new Date().getHours();\r\n    const type = forcedType || (hour % 2 === 0 ? \"gastronomy\" : \"entertainment\");\r\n    const question = (type === \"gastronomy\" ? gastronomyQuestions : entertainmentQuestions)[Math.floor(Math.random() * 5)];\r\n\r\n    document.getElementById(\"avatarCloudMsg\").innerText = question;\r\n    document.getElementById(\"avatarCloud\").style.display = \"block\";\r\n  }\r\n\r\n  function acceptAvatarSuggestion() {\r\n    dismissAvatarCloud();\r\n    alert(\"\u2705 Showing Aries recommendations near you...\");\r\n  }\r\n\r\n  function dismissAvatarCloud() {\r\n    document.getElementById(\"avatarCloud\").style.display = \"none\";\r\n  }\r\n\r\n  \/\/ \ud83d\udcbb Show avatar automatically after 3 seconds (desktop only)\r\n  function showAvatarAssistant() {\r\n    const avatar = document.getElementById(\"avatarContainer\");\r\n    if (window.innerWidth > 768) {\r\n      avatar.style.display = \"block\";\r\n      avatar.style.pointerEvents = \"auto\";\r\n    }\r\n  }\r\n  setTimeout(showAvatarAssistant, 3000);\r\n\r\n  \/\/ \ud83d\udcf1 Toggle mobile avatar on\/off\r\n  let avatarVisible = false;\r\n  function toggleMobileAvatar() {\r\n    const avatar = document.getElementById(\"avatarContainer\");\r\n    const btn = document.getElementById(\"avatarMobileBtn\");\r\n\r\n    if (!avatarVisible) {\r\n      avatar.style.display = \"block\";\r\n      avatar.style.pointerEvents = \"auto\";\r\n      showAvatarCloud();\r\n      btn.innerHTML = \"\u274c Close\";\r\n    } else {\r\n      avatar.style.display = \"none\";\r\n      avatar.style.pointerEvents = \"none\";\r\n      dismissAvatarCloud();\r\n      btn.innerHTML = \"\ud83d\udc64 Assistant\";\r\n    }\r\n\r\n    avatarVisible = !avatarVisible;\r\n  }\r\n\r\n  \/\/ \ud83d\udcf1 Show mobile button on load\r\n  window.addEventListener(\"load\", () => {\r\n    if (window.innerWidth <= 768) {\r\n      document.getElementById(\"avatarMobileBtn\").style.display = \"flex\";\r\n    }\r\n  });\r\n<\/script>\r\n\r\n\r\n\r\n<!-- GGG LIMITLESS INVENTORY CONTROL PANEL \u2014 MASTER V4 \/ 100X STRUCTURE -->\r\n<style>\r\n#gggLimitlessInventoryPage{\r\n  display:none;\r\n  position:fixed;\r\n  inset:0;\r\n  z-index:2147483647;\r\n  background:\r\n    radial-gradient(circle at 18% 12%, rgba(88,219,255,.16), transparent 28%),\r\n    radial-gradient(circle at 82% 18%, rgba(139,92,246,.16), transparent 30%),\r\n    radial-gradient(circle at 50% 92%, rgba(244,210,122,.10), transparent 34%),\r\n    linear-gradient(180deg,#01030b,#040715,#02040d);\r\n  color:#fff;\r\n  font-family:Arial,Helvetica,sans-serif;\r\n  overflow:auto;\r\n}\r\nbody.gggLimitlessInventoryActive{\r\n  overflow:hidden!important;\r\n  background:#000!important;\r\n}\r\n#gggLimitlessInventoryPage *{box-sizing:border-box;}\r\n\r\n.gli-wrap{\r\n  width:min(96vw,1560px);\r\n  margin:auto;\r\n  padding:24px 14px 90px;\r\n}\r\n.gli-top{\r\n  display:flex;\r\n  justify-content:space-between;\r\n  align-items:center;\r\n  gap:12px;\r\n  margin-bottom:18px;\r\n}\r\n.gli-actions{\r\n  display:flex;\r\n  gap:10px;\r\n  flex-wrap:wrap;\r\n}\r\n.gli-back,.gli-save,.gli-reload,.gli-add,.gli-delete,.gli-tab,.gli-cat,.gli-mini,.gli-dup{\r\n  border:0;\r\n  border-radius:999px;\r\n  cursor:pointer;\r\n  font-weight:900;\r\n  text-transform:uppercase;\r\n  letter-spacing:.08em;\r\n}\r\n.gli-back{\r\n  width:48px;\r\n  height:48px;\r\n  background:rgba(255,255,255,.08);\r\n  color:#fff;\r\n  border:1px solid rgba(255,255,255,.16);\r\n  font-size:1.2rem;\r\n}\r\n.gli-save{\r\n  padding:14px 24px;\r\n  background:linear-gradient(135deg,#f4d27a,#dca63a);\r\n  color:#111;\r\n}\r\n.gli-reload,.gli-add,.gli-mini,.gli-dup{\r\n  padding:13px 18px;\r\n  background:rgba(255,255,255,.07);\r\n  color:#fff;\r\n  border:1px solid rgba(255,255,255,.15);\r\n}\r\n.gli-panel{\r\n  background:rgba(5,10,22,.94);\r\n  border:1px solid rgba(88,219,255,.25);\r\n  border-radius:28px;\r\n  padding:22px;\r\n  box-shadow:0 0 50px rgba(88,219,255,.10);\r\n}\r\n.gli-title{\r\n  margin:0;\r\n  font-size:clamp(2rem,6vw,4rem);\r\n  text-transform:uppercase;\r\n}\r\n.gli-note{\r\n  color:rgba(255,255,255,.78);\r\n  line-height:1.6;\r\n  margin:8px 0 0;\r\n}\r\n.gli-main-tabs,.gli-cats{\r\n  display:flex!important;\r\n  gap:10px;\r\n  flex-wrap:wrap;\r\n  margin:18px 0;\r\n}\r\n.gli-tab,.gli-cat{\r\n  padding:13px 18px;\r\n  border:1px solid rgba(255,255,255,.14);\r\n  background:rgba(255,255,255,.06);\r\n  color:#fff;\r\n}\r\n.gli-tab.active,.gli-cat.active{\r\n  background:linear-gradient(135deg,#58dbff,#8b5cf6);\r\n  color:#02040d;\r\n}\r\n.gli-layout{\r\n  display:grid;\r\n  grid-template-columns:360px 1fr;\r\n  gap:18px;\r\n  margin-top:18px;\r\n}\r\n.gli-list,.gli-editor{\r\n  border-radius:24px;\r\n  background:rgba(255,255,255,.045);\r\n  border:1px solid rgba(255,255,255,.12);\r\n  padding:16px;\r\n}\r\n.gli-item{\r\n  display:flex;\r\n  align-items:center;\r\n  gap:12px;\r\n  width:100%;\r\n  padding:12px;\r\n  margin-bottom:10px;\r\n  border-radius:18px;\r\n  border:1px solid rgba(255,255,255,.12);\r\n  background:rgba(0,0,0,.25);\r\n  color:#fff;\r\n  cursor:pointer;\r\n  text-align:left;\r\n}\r\n.gli-item.active{\r\n  border-color:#f4d27a;\r\n  box-shadow:0 0 18px rgba(244,210,122,.24);\r\n}\r\n.gli-circle{\r\n  width:58px;\r\n  height:58px;\r\n  border-radius:50%;\r\n  background-size:cover;\r\n  background-position:center;\r\n  border:2px solid #58dbff;\r\n  box-shadow:0 0 16px rgba(88,219,255,.55);\r\n  flex:0 0 auto;\r\n  background-color:#070b17;\r\n}\r\n.gli-name{\r\n  font-weight:900;\r\n  text-transform:uppercase;\r\n  color:#f4d27a;\r\n}\r\n.gli-small{\r\n  font-size:.8rem;\r\n  opacity:.75;\r\n  margin-top:4px;\r\n}\r\n.gli-editor h2{\r\n  margin:0 0 14px;\r\n  text-transform:uppercase;\r\n  color:#f4d27a;\r\n}\r\n.gli-section-title{\r\n  grid-column:1\/-1;\r\n  margin:18px 0 4px;\r\n  color:#f4d27a;\r\n  text-transform:uppercase;\r\n  letter-spacing:.14em;\r\n  font-weight:900;\r\n  border-top:1px solid rgba(255,255,255,.12);\r\n  padding-top:16px;\r\n}\r\n.gli-section-help{\r\n  grid-column:1\/-1;\r\n  color:rgba(255,255,255,.72);\r\n  line-height:1.6;\r\n  background:rgba(88,219,255,.06);\r\n  border:1px solid rgba(88,219,255,.16);\r\n  border-radius:14px;\r\n  padding:12px;\r\n}\r\n.gli-grid{\r\n  display:grid;\r\n  grid-template-columns:repeat(2,minmax(0,1fr));\r\n  gap:12px;\r\n}\r\n.gli-field{\r\n  display:flex;\r\n  flex-direction:column;\r\n  gap:6px;\r\n}\r\n.gli-field.full{grid-column:1\/-1;}\r\n.gli-field label{\r\n  font-size:.72rem;\r\n  text-transform:uppercase;\r\n  letter-spacing:.12em;\r\n  color:#8eeaff;\r\n  font-weight:900;\r\n}\r\n.gli-field input,.gli-field textarea,.gli-field select{\r\n  width:100%;\r\n  border-radius:12px;\r\n  border:1px solid rgba(255,255,255,.14);\r\n  background:#02040d;\r\n  color:#fff;\r\n  padding:12px;\r\n  outline:none;\r\n}\r\n.gli-field textarea{\r\n  min-height:82px;\r\n  resize:vertical;\r\n}\r\n.gli-field input[readonly]{\r\n  opacity:.75;\r\n  background:rgba(255,255,255,.06);\r\n}\r\n.gli-check{\r\n  display:flex;\r\n  align-items:center;\r\n  gap:10px;\r\n  background:rgba(255,255,255,.045);\r\n  border:1px solid rgba(255,255,255,.12);\r\n  padding:12px;\r\n  border-radius:12px;\r\n}\r\n.gli-check input{\r\n  width:20px;\r\n  height:20px;\r\n}\r\n.gli-check.on{\r\n  border-color:rgba(88,219,255,.55);\r\n  box-shadow:0 0 16px rgba(88,219,255,.12);\r\n}\r\n.gli-delete{\r\n  margin-top:14px;\r\n  padding:11px 16px;\r\n  background:rgba(255,67,97,.18);\r\n  color:#fff;\r\n  border:1px solid rgba(255,67,97,.45);\r\n}\r\n.gli-dup{\r\n  margin-top:14px;\r\n}\r\n.gli-pill-row{\r\n  display:flex;\r\n  gap:8px;\r\n  flex-wrap:wrap;\r\n  grid-column:1\/-1;\r\n}\r\n.gli-pill{\r\n  padding:10px 12px;\r\n  border-radius:999px;\r\n  border:1px solid rgba(255,255,255,.14);\r\n  background:rgba(255,255,255,.055);\r\n  color:#fff;\r\n  font-weight:900;\r\n  cursor:pointer;\r\n}\r\n.gli-pill.active{\r\n  background:linear-gradient(135deg,#58dbff,#f4d27a);\r\n  color:#02040d;\r\n}\r\n.gli-preview{\r\n  grid-column:1\/-1;\r\n  display:flex;\r\n  gap:12px;\r\n  flex-wrap:wrap;\r\n  align-items:center;\r\n  border:1px solid rgba(244,210,122,.2);\r\n  background:rgba(244,210,122,.06);\r\n  padding:12px;\r\n  border-radius:16px;\r\n}\r\n.gli-preview img{\r\n  width:92px;\r\n  height:62px;\r\n  border-radius:12px;\r\n  object-fit:cover;\r\n  border:1px solid rgba(255,255,255,.18);\r\n}\r\n.gli-badge{\r\n  display:inline-flex;\r\n  align-items:center;\r\n  justify-content:center;\r\n  padding:8px 12px;\r\n  border-radius:999px;\r\n  background:rgba(255,255,255,.08);\r\n  border:1px solid rgba(255,255,255,.14);\r\n  font-weight:900;\r\n}\r\n#gliMsg{\r\n  margin-top:14px;\r\n  color:#58dbff;\r\n  font-weight:900;\r\n  white-space:pre-wrap;\r\n}\r\n@media(max-width:900px){\r\n  .gli-layout{grid-template-columns:1fr}\r\n  .gli-grid{grid-template-columns:1fr}\r\n}\r\n<\/style>\r\n\r\n<div id=\"gggLimitlessInventoryPage\">\r\n  <div class=\"gli-wrap\">\r\n    <div class=\"gli-top\">\r\n      <button class=\"gli-back\" id=\"gliBack\" type=\"button\">\u2190<\/button>\r\n      <div class=\"gli-actions\">\r\n        <button class=\"gli-reload\" id=\"gliReload\" type=\"button\">Reload<\/button>\r\n        <button class=\"gli-save\" id=\"gliSave\" type=\"button\">Save Inventory<\/button>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"gli-panel\">\r\n      <h1 class=\"gli-title\">Limitless Mission Control<\/h1>\r\n      <p class=\"gli-note\">\r\n        This controls Discounts, Gift, and the Business Growth Album. Use ON\/OFF switches for what appears in the hidden page.\r\n        Automatic counts are prepared here, but they need the hidden-page click tracker connected next.\r\n      <\/p>\r\n\r\n      <div class=\"gli-main-tabs\" id=\"gliMainTabs\"><\/div>\r\n      <div class=\"gli-cats\" id=\"gliCats\"><\/div>\r\n\r\n      <button class=\"gli-add\" id=\"gliAdd\" type=\"button\">+ Add New Item<\/button>\r\n\r\n      <div class=\"gli-layout\">\r\n        <div class=\"gli-list\" id=\"gliList\"><\/div>\r\n        <div class=\"gli-editor\" id=\"gliEditor\"><\/div>\r\n      <\/div>\r\n\r\n      <div id=\"gliMsg\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n(function(){\r\n  if(new URLSearchParams(location.search).get('limitlesspanel') !== '1') return;\r\n\r\n  const page = document.getElementById('gggLimitlessInventoryPage');\r\n  document.body.appendChild(page);\r\n  document.body.classList.add('gggLimitlessInventoryActive');\r\n  page.style.display = 'block';\r\n\r\n  const AJAX_URL = '\/GGG\/wp-admin\/admin-ajax.php';\r\n\r\n  let main = 'business_growth';\r\n  let cat = 'artists';\r\n  let selected = 0;\r\n\r\n  const normalCats = {\r\n    hotels:'Hotels',\r\n    restaurants:'Restaurants',\r\n    spa:'Spa',\r\n    work:'Work Formation'\r\n  };\r\n\r\n  const growthCats = {\r\n    artists:'Artists',\r\n    athletes:'Athletes',\r\n    entrepreneurs:'Entrepreneurs'\r\n  };\r\n\r\n  let inventory = {\r\n    discounts:{hotels:[],restaurants:[],spa:[],work:[]},\r\n    gift:{hotels:[],restaurants:[],spa:[],work:[]},\r\n    business_growth:{artists:[],athletes:[],entrepreneurs:[]}\r\n  };\r\n\r\n  const mainTabs = document.getElementById('gliMainTabs');\r\n  const cats = document.getElementById('gliCats');\r\n  const listBox = document.getElementById('gliList');\r\n  const editor = document.getElementById('gliEditor');\r\n  const msg = document.getElementById('gliMsg');\r\n\r\n  document.getElementById('gliBack').onclick = () => history.length > 1 ? history.back() : location.href = '\/GGG\/';\r\n  document.getElementById('gliReload').onclick = loadInventory;\r\n  document.getElementById('gliSave').onclick = saveInventory;\r\n  document.getElementById('gliAdd').onclick = addItem;\r\n\r\n  function esc(v){\r\n    return String(v ?? '').replace(\/[&<>\"']\/g, m => ({\r\n      '&':'&amp;',\r\n      '<':'&lt;',\r\n      '>':'&gt;',\r\n      '\"':'&quot;',\r\n      \"'\":'&#039;'\r\n    }[m]));\r\n  }\r\n\r\n  function pathToId(path){\r\n    return 'gli_' + String(path).replace(\/[^a-zA-Z0-9]\/g,'_');\r\n  }\r\n\r\n  function getDeep(obj,path){\r\n    return String(path).split('.').reduce((o,k)=>o && o[k] !== undefined ? o[k] : undefined, obj);\r\n  }\r\n\r\n  function setDeep(obj,path,value){\r\n    const keys = String(path).split('.');\r\n    let o = obj;\r\n    while(keys.length > 1){\r\n      const k = keys.shift();\r\n      if(!o[k] || typeof o[k] !== 'object') o[k] = {};\r\n      o = o[k];\r\n    }\r\n    o[keys[0]] = value;\r\n  }\r\n\r\n  function deepMerge(base, extra){\r\n    const out = Array.isArray(base) ? [] : {};\r\n    Object.keys(base || {}).forEach(k=>{\r\n      const v = base[k];\r\n      out[k] = v && typeof v === 'object' && !Array.isArray(v) ? deepMerge(v,{}) : v;\r\n    });\r\n    Object.keys(extra || {}).forEach(k=>{\r\n      const v = extra[k];\r\n      if(v && typeof v === 'object' && !Array.isArray(v) && out[k] && typeof out[k] === 'object'){\r\n        out[k] = deepMerge(out[k], v);\r\n      }else{\r\n        out[k] = v;\r\n      }\r\n    });\r\n    return out;\r\n  }\r\n\r\n  function isOn(v){\r\n    return v === true || v === 'true' || v === 1 || v === '1' || v === 'yes' || v === 'on';\r\n  }\r\n\r\n  function normalize(data){\r\n    let d = data || {};\r\n    if(d.level5) d = d.level5;\r\n\r\n    inventory.discounts = Object.assign({hotels:[],restaurants:[],spa:[],work:[]}, d.discounts || {});\r\n    inventory.gift = Object.assign({hotels:[],restaurants:[],spa:[],work:[]}, d.gift || {});\r\n\r\n    const bg = d.business_growth || d.investments || d.businessGrowth || {\r\n      artists:d.artists || [],\r\n      athletes:d.athletes || [],\r\n      entrepreneurs:d.entrepreneurs || []\r\n    };\r\n\r\n    inventory.business_growth = Object.assign({artists:[],athletes:[],entrepreneurs:[]}, bg);\r\n\r\n    ['artists','athletes','entrepreneurs'].forEach(type=>{\r\n      inventory.business_growth[type] = (inventory.business_growth[type] || []).map(x => mergeProfileDefaults(x,type));\r\n    });\r\n  }\r\n\r\n  function render(){\r\n    renderMainTabs();\r\n    renderCats();\r\n    renderList();\r\n    renderEditor();\r\n  }\r\n\r\n  function renderMainTabs(){\r\n    mainTabs.innerHTML = '';\r\n    [\r\n      ['discounts','Discounts'],\r\n      ['gift','Gift'],\r\n      ['business_growth','Business Growth \/ Album']\r\n    ].forEach(([key,label])=>{\r\n      const b = document.createElement('button');\r\n      b.className = 'gli-tab' + (main === key ? ' active' : '');\r\n      b.type = 'button';\r\n      b.textContent = label;\r\n      b.onclick = ()=>{\r\n        main = key;\r\n        cat = key === 'business_growth' ? 'artists' : 'hotels';\r\n        selected = 0;\r\n        render();\r\n      };\r\n      mainTabs.appendChild(b);\r\n    });\r\n  }\r\n\r\n  function renderCats(){\r\n    cats.innerHTML = '';\r\n    const obj = main === 'business_growth' ? growthCats : normalCats;\r\n\r\n    Object.keys(obj).forEach(key=>{\r\n      const b = document.createElement('button');\r\n      b.className = 'gli-cat' + (cat === key ? ' active' : '');\r\n      b.type = 'button';\r\n      b.textContent = obj[key];\r\n      b.onclick = ()=>{\r\n        cat = key;\r\n        selected = 0;\r\n        render();\r\n      };\r\n      cats.appendChild(b);\r\n    });\r\n  }\r\n\r\n  function currentList(){\r\n    if(!inventory[main]) inventory[main] = {};\r\n    if(!inventory[main][cat]) inventory[main][cat] = [];\r\n    return inventory[main][cat];\r\n  }\r\n\r\n  function currentItem(){\r\n    const arr = currentList();\r\n    if(!arr[selected]) selected = 0;\r\n    return arr[selected];\r\n  }\r\n\r\n  function renderList(){\r\n    const arr = currentList();\r\n    listBox.innerHTML = '';\r\n\r\n    if(!arr.length){\r\n      listBox.innerHTML = '<p>No items yet. Click <b>Add New Item<\/b>.<\/p>';\r\n      return;\r\n    }\r\n\r\n    arr.forEach((item,i)=>{\r\n      const image = main === 'business_growth'\r\n        ? item.sticker_image\r\n        : (main === 'gift' ? item.gift_image : item.circle_image);\r\n\r\n      const name = main === 'business_growth'\r\n        ? item.name\r\n        : item.title;\r\n\r\n      const sub = main === 'business_growth'\r\n        ? ((item.rarity_symbol || '') + ' ' + (item.rarity_name || item.rarity || item.profile_type || cat))\r\n        : (main === 'gift' ? item.gift_name : item.host_name);\r\n\r\n      const btn = document.createElement('button');\r\n      btn.className = 'gli-item' + (selected === i ? ' active' : '');\r\n      btn.type = 'button';\r\n      btn.innerHTML = `\r\n        <div class=\"gli-circle\" style=\"background-image:url('${esc(image || '')}')\"><\/div>\r\n        <div>\r\n          <div class=\"gli-name\">${esc(name || 'Untitled')}<\/div>\r\n          <div class=\"gli-small\">${esc(sub || cat)}<\/div>\r\n        <\/div>\r\n      `;\r\n      btn.onclick = ()=>{\r\n        selected = i;\r\n        renderList();\r\n        renderEditor();\r\n      };\r\n      listBox.appendChild(btn);\r\n    });\r\n  }\r\n\r\n  function renderEditor(){\r\n    const arr = currentList();\r\n\r\n    if(!arr.length){\r\n      editor.innerHTML = '<h2>No Item Selected<\/h2><p>Add an item to begin.<\/p>';\r\n      return;\r\n    }\r\n\r\n    if(!arr[selected]) selected = 0;\r\n    let x = arr[selected];\r\n\r\n    if(main === 'business_growth'){\r\n      arr[selected] = mergeProfileDefaults(x,cat);\r\n      x = arr[selected];\r\n    }\r\n\r\n    if(main === 'discounts') editor.innerHTML = discountEditor(x);\r\n    if(main === 'gift') editor.innerHTML = giftEditor(x);\r\n    if(main === 'business_growth') editor.innerHTML = growthEditor(x);\r\n\r\n    bindEditorInputs();\r\n    bindGoalPills();\r\n  }\r\n\r\n  function field(path,label,value,full,type){\r\n    const id = pathToId(path);\r\n    const cls = full === 'full' ? 'gli-field full' : 'gli-field';\r\n    return `\r\n      <div class=\"${cls}\">\r\n        <label for=\"${id}\">${esc(label)}<\/label>\r\n        <input id=\"${id}\" data-gli-path=\"${esc(path)}\" type=\"${type || 'text'}\" value=\"${esc(value || '')}\">\r\n      <\/div>\r\n    `;\r\n  }\r\n\r\n  function readonlyField(label,value,full){\r\n    const cls = full === 'full' ? 'gli-field full' : 'gli-field';\r\n    return `\r\n      <div class=\"${cls}\">\r\n        <label>${esc(label)}<\/label>\r\n        <input type=\"text\" value=\"${esc(value || '0')}\" readonly>\r\n      <\/div>\r\n    `;\r\n  }\r\n\r\n  function area(path,label,value,full){\r\n    const id = pathToId(path);\r\n    const cls = full === 'full' ? 'gli-field full' : 'gli-field';\r\n    return `\r\n      <div class=\"${cls}\">\r\n        <label for=\"${id}\">${esc(label)}<\/label>\r\n        <textarea id=\"${id}\" data-gli-path=\"${esc(path)}\">${esc(value || '')}<\/textarea>\r\n      <\/div>\r\n    `;\r\n  }\r\n\r\n  function selectField(path,label,value,options,full){\r\n    const id = pathToId(path);\r\n    const cls = full === 'full' ? 'gli-field full' : 'gli-field';\r\n    return `\r\n      <div class=\"${cls}\">\r\n        <label for=\"${id}\">${esc(label)}<\/label>\r\n        <select id=\"${id}\" data-gli-path=\"${esc(path)}\">\r\n          ${options.map(o=>{\r\n            const val = Array.isArray(o) ? o[0] : o;\r\n            const text = Array.isArray(o) ? o[1] : o;\r\n            return `<option value=\"${esc(val)}\" ${String(value || '') === String(val) ? 'selected' : ''}>${esc(text)}<\/option>`;\r\n          }).join('')}\r\n        <\/select>\r\n      <\/div>\r\n    `;\r\n  }\r\n\r\n  function check(path,label,value){\r\n    const id = pathToId(path);\r\n    return `\r\n      <label class=\"gli-check ${isOn(value) ? 'on' : ''}\" for=\"${id}\">\r\n        <input id=\"${id}\" data-gli-path=\"${esc(path)}\" type=\"checkbox\" ${isOn(value) ? 'checked' : ''}>\r\n        <span>${esc(label)}<\/span>\r\n      <\/label>\r\n    `;\r\n  }\r\n\r\n  function bindEditorInputs(){\r\n    editor.querySelectorAll('[data-gli-path]').forEach(el=>{\r\n      el.oninput = el.onchange = function(){\r\n        const item = currentItem();\r\n        if(!item) return;\r\n\r\n        const path = el.dataset.gliPath;\r\n        const value = el.type === 'checkbox' ? el.checked : el.value;\r\n\r\n        setDeep(item,path,value);\r\n\r\n        if(el.type === 'checkbox'){\r\n          el.closest('.gli-check')?.classList.toggle('on', el.checked);\r\n        }\r\n\r\n        renderList();\r\n      };\r\n    });\r\n  }\r\n\r\n  function discountEditor(x){\r\n    return `\r\n      <h2>Discount Host Circle<\/h2>\r\n      <div class=\"gli-grid\">\r\n        ${field('title','Suboption Title',x.title)}\r\n        ${field('host_name','Host Name',x.host_name)}\r\n        ${field('circle_image','Host Circle Image URL',x.circle_image,'full')}\r\n        ${area('desc','Description',x.desc,'full')}\r\n        ${field('offer','Discount Offer Label, Example: 30% OFF',x.offer)}\r\n        ${field('offer_badge','Badge Text',x.offer_badge || 'Discount')}\r\n        ${field('checkout_url','Discount Checkout URL',x.checkout_url,'full')}\r\n        ${field('action_url','Host Website \/ Action URL',x.action_url,'full')}\r\n        ${field('favorite_id','Favorite ID \/ Circle Key',x.favorite_id)}\r\n        ${field('lat','Latitude',x.lat)}\r\n        ${field('lng','Longitude',x.lng)}\r\n        ${field('map_url','Google Maps URL',x.map_url,'full')}\r\n      <\/div>\r\n      <button class=\"gli-dup\" onclick=\"gliDuplicateItem()\">Duplicate<\/button>\r\n      <button class=\"gli-delete\" onclick=\"gliDeleteItem()\">Delete This Discount<\/button>\r\n    `;\r\n  }\r\n\r\n  function giftEditor(x){\r\n    return `\r\n      <h2>Gift Item<\/h2>\r\n      <div class=\"gli-grid\">\r\n        ${field('title','Gift Suboption Title',x.title)}\r\n        ${field('gift_name','Gift Name',x.gift_name)}\r\n        ${field('gift_image','Gift Image URL',x.gift_image,'full')}\r\n        ${area('desc','Gift Description',x.desc,'full')}\r\n        ${field('gift_price','Gift Price',x.gift_price)}\r\n        ${field('gift_checkout_url','Gift Checkout URL',x.gift_checkout_url,'full')}\r\n        ${area('recipient_message','Recipient Message \/ Notes',x.recipient_message,'full')}\r\n        ${field('favorite_id','Favorite ID \/ Circle Key',x.favorite_id)}\r\n        ${field('lat','Latitude',x.lat)}\r\n        ${field('lng','Longitude',x.lng)}\r\n        ${field('map_url','Google Maps URL',x.map_url,'full')}\r\n      <\/div>\r\n      <button class=\"gli-dup\" onclick=\"gliDuplicateItem()\">Duplicate<\/button>\r\n      <button class=\"gli-delete\" onclick=\"gliDeleteItem()\">Delete This Gift<\/button>\r\n    `;\r\n  }\r\n\r\n  function growthEditor(x){\r\n    return `\r\n      <h2>Album Profile<\/h2>\r\n\r\n      <div class=\"gli-grid\">\r\n        <div class=\"gli-section-title\">1. Profile Card<\/div>\r\n        <div class=\"gli-section-help\">\r\n          Main manual identity fields. The hidden album must be connected next to display banner_image and sponsor placements.\r\n        <\/div>\r\n        ${field('name','Profile Name',x.name)}\r\n        ${field('profile_type','Profile Type',x.profile_type || cat)}\r\n        ${field('favorite_id','Favorite ID \/ Profile Key',x.favorite_id)}\r\n        ${field('sticker_image','Front Sticker Image URL',x.sticker_image,'full')}\r\n        ${field('back_sticker_image','Back Sticker \/ Investment Image URL',x.back_sticker_image,'full')}\r\n        ${field('banner_image','Banner Image URL \u2014 Shows in Hidden Album Header',x.banner_image,'full')}\r\n        ${field('intro_video','Intro Video URL',x.intro_video,'full')}\r\n        ${field('presentation_video','Presentation Video URL',x.presentation_video,'full')}\r\n\r\n        ${x.banner_image ? `\r\n          <div class=\"gli-preview\">\r\n            <img decoding=\"async\" src=\"${esc(x.banner_image)}\" alt=\"\">\r\n            <span class=\"gli-badge\">Banner Preview<\/span>\r\n          <\/div>\r\n        ` : ''}\r\n\r\n        <div class=\"gli-section-title\">2. Status + Rarity Symbol System<\/div>\r\n        ${check('status_active','Turn Status ON',x.status_active)}\r\n        ${field('status','Status Text',x.status)}\r\n        ${check('rarity_active','Turn Rarity ON',x.rarity_active)}\r\n        ${selectField('rarity_symbol','Rarity Symbol',x.rarity_symbol,[\r\n          ['\ud83d\udc8e','\ud83d\udc8e Diamond'],\r\n          ['\ud83d\udc51','\ud83d\udc51 Crown'],\r\n          ['\ud83d\udd25','\ud83d\udd25 Flame'],\r\n          ['\u2b50','\u2b50 Star'],\r\n          ['\ud83c\udf0c','\ud83c\udf0c Galaxy'],\r\n          ['\ud83d\udee1\ufe0f','\ud83d\udee1\ufe0f Shield'],\r\n          ['\ud83d\ude80','\ud83d\ude80 Rocket'],\r\n          ['\ud83c\udfc6','\ud83c\udfc6 Trophy'],\r\n          ['\ud83e\udd81','\ud83e\udd81 Lion'],\r\n          ['\ud83e\udebd','\ud83e\udebd Wings'],\r\n          ['VIP','VIP Text Badge']\r\n        ])}\r\n        ${field('rarity_name','Rarity Name',x.rarity_name || x.rarity)}\r\n\r\n        <div class=\"gli-section-title\">3. Reward Buttons \u2014 Star \/ Percent \/ Crown \/ VIP \/ Gift<\/div>\r\n        <div class=\"gli-section-help\">\r\n          These are the five reward buttons. Counts should come from hidden-page clicks later. Manual text explains the popup.\r\n        <\/div>\r\n\r\n        ${rewardEditor(x,'star','Star \/ Likes Reward','Likes, stars, fan support, public love.')}\r\n        ${rewardEditor(x,'percent','Percent \/ Discount Reward','Discount offered for this profile\u2019s services.')}\r\n        ${rewardEditor(x,'crown','Crown \/ Achievement Reward','Champion wins, success count, achievement history.')}\r\n        ${rewardEditor(x,'vip','VIP Status Reward','VIP approvals, VIP moments, special access.')}\r\n        ${rewardEditor(x,'gift','Gift Reward','Send a gift, sponsor a gift, or gift this profile something.')}\r\n\r\n        <div class=\"gli-section-title\">4. Save Profile + Like \/ Star \u2014 Automatic System<\/div>\r\n        <div class=\"gli-section-help\">\r\n          The panel only enables these buttons and shows totals. Totals should be created by hidden-page clicks, not typed manually.\r\n        <\/div>\r\n        ${check('social_save.save_enabled','Enable Save Profile Button',getDeep(x,'social_save.save_enabled'))}\r\n        ${check('social_save.like_enabled','Enable Like \/ Star Button',getDeep(x,'social_save.like_enabled'))}\r\n        ${field('social_save.favorite_php_key','Favorites PHP Key',getDeep(x,'social_save.favorite_php_key'))}\r\n        ${field('social_save.like_php_key','Like \/ Vote PHP Key',getDeep(x,'social_save.like_php_key'))}\r\n        ${readonlyField('Automatic Save Count',getDeep(x,'auto_metrics.saves'))}\r\n        ${readonlyField('Automatic Like Count',getDeep(x,'auto_metrics.likes'))}\r\n\r\n        <div class=\"gli-section-title\">5. Request System \u2014 Heavy Duty<\/div>\r\n        <div class=\"gli-section-help\">\r\n          Controls the Request button. The hidden page should show service, booking, sponsor, investment, and custom request choices.\r\n        <\/div>\r\n        ${check('request.active','Turn Request System ON',getDeep(x,'request.active'))}\r\n        ${field('request.service_name','Primary Service Name',getDeep(x,'request.service_name'))}\r\n        ${field('request.headline','Request Popup Headline',getDeep(x,'request.headline'))}\r\n        ${area('request.preview_text','Free Premium Preview Text',getDeep(x,'request.preview_text'),'full')}\r\n        ${field('request.request_email','Request Email',getDeep(x,'request.request_email'),'full')}\r\n        ${field('request.form_url','Optional Request Form URL',getDeep(x,'request.form_url'),'full')}\r\n        ${check('request.options.service','Enable Service Request',getDeep(x,'request.options.service'))}\r\n        ${check('request.options.booking','Enable Booking Request',getDeep(x,'request.options.booking'))}\r\n        ${check('request.options.sponsor','Enable Sponsor Request',getDeep(x,'request.options.sponsor'))}\r\n        ${check('request.options.invest','Enable Investment Request',getDeep(x,'request.options.invest'))}\r\n        ${check('request.options.custom','Enable Custom Request',getDeep(x,'request.options.custom'))}\r\n\r\n        <div class=\"gli-section-title\">6. Contact \/ Connect<\/div>\r\n        ${check('contact.active','Turn Contact ON',getDeep(x,'contact.active'))}\r\n        ${field('contact.instagram','Instagram URL',getDeep(x,'contact.instagram'),'full')}\r\n        ${field('contact.tiktok','TikTok URL',getDeep(x,'contact.tiktok'),'full')}\r\n        ${field('contact.facebook','Facebook URL',getDeep(x,'contact.facebook'),'full')}\r\n        ${field('contact.youtube','YouTube URL',getDeep(x,'contact.youtube'),'full')}\r\n        ${field('contact.website','Website URL',getDeep(x,'contact.website'),'full')}\r\n        ${field('contact.whatsapp','WhatsApp Number Only',getDeep(x,'contact.whatsapp'))}\r\n        ${field('contact.phone','Phone Number',getDeep(x,'contact.phone'))}\r\n        ${field('contact.email','Profile Email',getDeep(x,'contact.email'),'full')}\r\n\r\n        <div class=\"gli-section-title\">7. Sponsor System \u2014 Life Film \/ City Stage \/ Create Event \/ Global Movement<\/div>\r\n        <div class=\"gli-section-help\">\r\n          This is where sponsor logos, sponsor badge\/orbit\/showcase, and sponsor payment packages are controlled.\r\n        <\/div>\r\n        ${check('sponsor.active','Turn Sponsor Button ON',getDeep(x,'sponsor.active'))}\r\n        ${field('sponsor.logo','Sponsor Logo URL',getDeep(x,'sponsor.logo'),'full')}\r\n        ${field('sponsor.name','Sponsor Name',getDeep(x,'sponsor.name'))}\r\n        ${field('sponsor.link','Sponsor Website \/ Instagram URL',getDeep(x,'sponsor.link'),'full')}\r\n        ${selectField('sponsor.placement','Sponsor Logo Placement',getDeep(x,'sponsor.placement'),[\r\n          ['orbit','Orbit Around Profile'],\r\n          ['badge','Badge On Profile'],\r\n          ['portal','Sponsor Portal Only'],\r\n          ['all','All Premium Placements']\r\n        ])}\r\n        ${area('sponsor.showcase_text','Sponsor Showcase Text',getDeep(x,'sponsor.showcase_text'),'full')}\r\n\r\n        ${sponsorPathEditor(x,'life_film','Life Film','Sponsor their real story.')}\r\n        ${sponsorPathEditor(x,'city_stage','City Stage','Sponsor them in city events.')}\r\n        ${sponsorPathEditor(x,'create_event','Create Event','Create an event and sponsor them into it.')}\r\n        ${sponsorPathEditor(x,'global_movement','Global Movement','Help local power reach the world.')}\r\n\r\n        <div class=\"gli-section-title\">8. Investment \/ Dream Engine<\/div>\r\n        <div class=\"gli-section-help\">\r\n          Controls the Investment button: Superhero Dream, Start-Up Dream, 10X Dream, and 17 Goals.\r\n        <\/div>\r\n        ${check('investment.active','Turn Investment Button ON',getDeep(x,'investment.active'))}\r\n        ${investPathEditor(x,'hero','Superhero Dream')}\r\n        ${investPathEditor(x,'startup','Start-Up Dream')}\r\n        ${investPathEditor(x,'tenx','10X Dream')}\r\n\r\n        <div class=\"gli-section-title\">17 Goals Selector<\/div>\r\n        <div class=\"gli-pill-row\" id=\"gliGoalPills\">${goalPills(x)}<\/div>\r\n        ${field('investment.pitch_url','Main Pitch Deck \/ Presentation URL',getDeep(x,'investment.pitch_url'),'full')}\r\n        ${field('investment.live_presentation_url','Live Presentation URL',getDeep(x,'investment.live_presentation_url'),'full')}\r\n        ${field('investment.contact_email','Investment Contact Email',getDeep(x,'investment.contact_email'),'full')}\r\n\r\n        <div class=\"gli-section-title\">9. Metrics \u2014 Automatic + Manual Display<\/div>\r\n        <div class=\"gli-section-help\">\r\n          These totals should update automatically from hidden-page clicks later. Manual followers remains editable for social proof.\r\n        <\/div>\r\n        ${field('metrics.followers','Manual Followers \/ Audience Size',getDeep(x,'metrics.followers'))}\r\n        ${readonlyField('Automatic Views',getDeep(x,'auto_metrics.views'))}\r\n        ${readonlyField('Automatic Saves',getDeep(x,'auto_metrics.saves'))}\r\n        ${readonlyField('Automatic Likes',getDeep(x,'auto_metrics.likes'))}\r\n        ${readonlyField('Automatic Shares',getDeep(x,'auto_metrics.shares'))}\r\n        ${readonlyField('Automatic Request Clicks',getDeep(x,'auto_metrics.request_clicks'))}\r\n        ${readonlyField('Automatic Sponsor Clicks',getDeep(x,'auto_metrics.sponsor_clicks'))}\r\n        ${readonlyField('Automatic Invest Clicks',getDeep(x,'auto_metrics.invest_clicks'))}\r\n\r\n        <div class=\"gli-section-title\">10. Live \/ Event \/ Map<\/div>\r\n        ${check('live.active','Turn Live\/Event ON',getDeep(x,'live.active'))}\r\n        ${field('live.title','Live Title',getDeep(x,'live.title'))}\r\n        ${field('live.url','Live Stream URL',getDeep(x,'live.url'),'full')}\r\n        ${field('live.location','Live Location',getDeep(x,'live.location'))}\r\n        ${field('live.time','Live Time \/ Date',getDeep(x,'live.time'))}\r\n        ${field('event.title','Event Title',getDeep(x,'event.title'))}\r\n        ${field('event.type','Event Type',getDeep(x,'event.type'))}\r\n        ${field('event.city','Event City \/ Area',getDeep(x,'event.city'))}\r\n        ${field('event.stream','Event Stream URL',getDeep(x,'event.stream'),'full')}\r\n        ${field('event.banner','Event Banner Image URL',getDeep(x,'event.banner'),'full')}\r\n        ${field('lat','Latitude',x.lat)}\r\n        ${field('lng','Longitude',x.lng)}\r\n        ${field('map_url','Google Maps URL',x.map_url,'full')}\r\n      <\/div>\r\n\r\n      <button class=\"gli-dup\" onclick=\"gliDuplicateItem()\">Duplicate Profile<\/button>\r\n      <button class=\"gli-delete\" onclick=\"gliDeleteItem()\">Delete This Profile<\/button>\r\n    `;\r\n  }\r\n\r\n  function rewardEditor(x,key,label,help){\r\n    const base = 'rewards.' + key;\r\n    return `\r\n      <div class=\"gli-section-title\">${esc(label)}<\/div>\r\n      <div class=\"gli-section-help\">${esc(help)}<\/div>\r\n      ${check(base + '.active','Turn ' + label + ' ON',getDeep(x,base + '.active'))}\r\n      ${field(base + '.title','Popup Title',getDeep(x,base + '.title'))}\r\n      ${area(base + '.copy','Popup Text \/ Meaning',getDeep(x,base + '.copy'),'full')}\r\n      ${field(base + '.url','Optional URL',getDeep(x,base + '.url'),'full')}\r\n      ${field(base + '.manual_label','Display Label, Example: 30% OFF \/ 12 Wins',getDeep(x,base + '.manual_label'))}\r\n      ${readonlyField('Automatic Count For ' + label,getDeep(x,'auto_metrics.reward_' + key))}\r\n    `;\r\n  }\r\n\r\n  function sponsorPathEditor(x,key,title,copy){\r\n    const base = 'sponsor.paths.' + key;\r\n    return `\r\n      <div class=\"gli-section-title\">Sponsor Path \u2014 ${esc(title)}<\/div>\r\n      ${check(base + '.active','Show ' + title + ' Orb',getDeep(x,base + '.active') || getDeep(x,'sponsor.paths.' + key) === true)}\r\n      ${field(base + '.title','Orb Title',getDeep(x,base + '.title') || title)}\r\n      ${area(base + '.copy','Orb Text',getDeep(x,base + '.copy') || copy,'full')}\r\n      ${field(base + '.support_url','Support Checkout URL',getDeep(x,base + '.support_url'),'full')}\r\n      ${field(base + '.power_url','Power Checkout URL',getDeep(x,base + '.power_url'),'full')}\r\n      ${field(base + '.sponsor_url','Main Sponsor Checkout URL',getDeep(x,base + '.sponsor_url'),'full')}\r\n    `;\r\n  }\r\n\r\n  function investPathEditor(x,key,title){\r\n    const base = 'investment.' + key;\r\n    return `\r\n      <div class=\"gli-section-title\">Investment Path \u2014 ${esc(title)}<\/div>\r\n      ${check(base + '.active','Activate ' + title + ' Orb',getDeep(x,base + '.active'))}\r\n      ${area(base + '.summary',title + ' Summary',getDeep(x,base + '.summary'),'full')}\r\n      ${area(base + '.dream',title + ' Dream \/ Business Vision',getDeep(x,base + '.dream'),'full')}\r\n      ${area(base + '.need',title + ' Need',getDeep(x,base + '.need'),'full')}\r\n      ${field(base + '.offer',title + ' Offer \/ Percentage',getDeep(x,base + '.offer'),'full')}\r\n      ${field(base + '.minimum','Minimum Participation',getDeep(x,base + '.minimum'))}\r\n      ${field(base + '.url',title + ' Specific URL',getDeep(x,base + '.url'),'full')}\r\n    `;\r\n  }\r\n\r\n  function goalPills(x){\r\n    const selectedGoals = getDeep(x,'investment.goals') || [];\r\n    const goals = [\r\n      'No Poverty','Zero Hunger','Good Health','Quality Education',\r\n      'Gender Equality','Clean Water','Clean Energy','Decent Work',\r\n      'Innovation','Reduced Inequalities','Sustainable Cities','Responsible Consumption',\r\n      'Climate Action','Life Below Water','Life on Land','Peace & Justice','Partnerships'\r\n    ];\r\n\r\n    return goals.map((g,i)=>`\r\n      <button type=\"button\" class=\"gli-pill ${selectedGoals.includes(g) ? 'active' : ''}\" data-goal=\"${esc(g)}\">\r\n        ${i+1}. ${esc(g)}\r\n      <\/button>\r\n    `).join('');\r\n  }\r\n\r\n  function bindGoalPills(){\r\n    const row = document.getElementById('gliGoalPills');\r\n    if(!row) return;\r\n\r\n    row.querySelectorAll('[data-goal]').forEach(btn=>{\r\n      btn.onclick = function(){\r\n        const item = currentItem();\r\n        let goals = getDeep(item,'investment.goals') || [];\r\n        const goal = btn.dataset.goal;\r\n\r\n        if(goals.includes(goal)){\r\n          goals = goals.filter(x => x !== goal);\r\n        }else{\r\n          goals.push(goal);\r\n        }\r\n\r\n        setDeep(item,'investment.goals',goals);\r\n        renderEditor();\r\n      };\r\n    });\r\n  }\r\n\r\n  function growthDefault(){\r\n    return mergeProfileDefaults({\r\n      name:'New Sticker Profile',\r\n      profile_type:cat,\r\n      favorite_id:'growth-' + Date.now()\r\n    },cat);\r\n  }\r\n\r\n  function mergeProfileDefaults(x,type){\r\n    x = x || {};\r\n\r\n    const base = {\r\n      name:'',\r\n      profile_type:type,\r\n      favorite_id:'growth-' + Date.now(),\r\n      sticker_image:'',\r\n      back_sticker_image:'',\r\n      banner_image:'',\r\n      intro_video:'',\r\n      presentation_video:'',\r\n\r\n      status_active:false,\r\n      status:'',\r\n      rarity_active:false,\r\n      rarity_symbol:'\ud83d\udc8e',\r\n      rarity_name:'',\r\n      rarity:'',\r\n\r\n      rewards:{\r\n        star:{active:false,title:'Star Power',copy:'',url:'',manual_label:''},\r\n        percent:{active:false,title:'Discount Power',copy:'',url:'',manual_label:''},\r\n        crown:{active:false,title:'Crown Status',copy:'',url:'',manual_label:''},\r\n        vip:{active:false,title:'VIP Access',copy:'',url:'',manual_label:''},\r\n        gift:{active:false,title:'Gift This Profile',copy:'',url:'',manual_label:''}\r\n      },\r\n\r\n      social_save:{\r\n        save_enabled:false,\r\n        like_enabled:false,\r\n        favorite_php_key:'',\r\n        like_php_key:''\r\n      },\r\n\r\n      auto_metrics:{\r\n        views:0,\r\n        saves:0,\r\n        likes:0,\r\n        shares:0,\r\n        request_clicks:0,\r\n        sponsor_clicks:0,\r\n        invest_clicks:0,\r\n        reward_star:0,\r\n        reward_percent:0,\r\n        reward_crown:0,\r\n        reward_vip:0,\r\n        reward_gift:0\r\n      },\r\n\r\n      request:{\r\n        active:false,\r\n        service_name:'',\r\n        headline:'',\r\n        preview_text:'',\r\n        request_email:'godsgalaxygame@gmail.com',\r\n        form_url:'',\r\n        options:{\r\n          service:true,\r\n          booking:true,\r\n          sponsor:true,\r\n          invest:true,\r\n          custom:true\r\n        }\r\n      },\r\n\r\n      contact:{\r\n        active:false,\r\n        instagram:'',\r\n        tiktok:'',\r\n        facebook:'',\r\n        youtube:'',\r\n        website:'',\r\n        whatsapp:'',\r\n        phone:'',\r\n        email:''\r\n      },\r\n\r\n      sponsor:{\r\n        active:false,\r\n        logo:'',\r\n        name:'',\r\n        link:'',\r\n        placement:'orbit',\r\n        showcase_text:'',\r\n        custom_email:'godsgalaxygame@gmail.com',\r\n        support_10_url:'',\r\n        power_25_url:'',\r\n        sponsor_100_url:'',\r\n        paths:{\r\n          life_film:{active:false,title:'Life Film',copy:'Sponsor their real story.',support_url:'',power_url:'',sponsor_url:''},\r\n          city_stage:{active:false,title:'City Stage',copy:'Sponsor them in city events.',support_url:'',power_url:'',sponsor_url:''},\r\n          create_event:{active:false,title:'Create Event',copy:'Create an event and sponsor them into it.',support_url:'',power_url:'',sponsor_url:''},\r\n          global_movement:{active:false,title:'Global Movement',copy:'Help local power reach the world.',support_url:'',power_url:'',sponsor_url:''}\r\n        }\r\n      },\r\n\r\n      investment:{\r\n        active:false,\r\n        hero:{active:false,summary:'',dream:'',need:'',offer:'',minimum:'',url:''},\r\n        startup:{active:false,summary:'',dream:'',need:'',offer:'',minimum:'',url:''},\r\n        tenx:{active:false,summary:'',dream:'',need:'',offer:'',minimum:'',url:''},\r\n        goals:[],\r\n        pitch_url:'',\r\n        live_presentation_url:'',\r\n        contact_email:'godsgalaxygame@gmail.com'\r\n      },\r\n\r\n      live:{active:false,title:'',url:'',location:'',time:''},\r\n      event:{title:'',type:'',city:'',stream:'',banner:''},\r\n      metrics:{followers:'',views:'',votes:'',shares:''},\r\n      lat:'',\r\n      lng:'',\r\n      map_url:''\r\n    };\r\n\r\n    const merged = deepMerge(base,x);\r\n\r\n    \/* Legacy compatibility from older reward fields *\/\r\n    if(x.reward_star && !merged.rewards.star.copy){\r\n      merged.rewards.star.active = true;\r\n      merged.rewards.star.copy = x.reward_star;\r\n    }\r\n    if(x.reward_percent && !merged.rewards.percent.copy){\r\n      merged.rewards.percent.active = true;\r\n      merged.rewards.percent.copy = x.reward_percent;\r\n    }\r\n    if(x.reward_crown && !merged.rewards.crown.copy){\r\n      merged.rewards.crown.active = true;\r\n      merged.rewards.crown.copy = x.reward_crown;\r\n    }\r\n    if(x.reward_vip && !merged.rewards.vip.copy){\r\n      merged.rewards.vip.active = true;\r\n      merged.rewards.vip.copy = x.reward_vip;\r\n    }\r\n    if(x.reward_gift && !merged.rewards.gift.copy){\r\n      merged.rewards.gift.active = true;\r\n      merged.rewards.gift.copy = x.reward_gift;\r\n    }\r\n\r\n    \/* Sponsor legacy compatibility *\/\r\n    ['life_film','city_stage','create_event','global_movement'].forEach(k=>{\r\n      if(typeof x.sponsor?.paths?.[k] === 'boolean'){\r\n        merged.sponsor.paths[k].active = x.sponsor.paths[k];\r\n      }\r\n    });\r\n\r\n    if(x.sponsor?.support_10_url && !merged.sponsor.paths.life_film.support_url){\r\n      Object.keys(merged.sponsor.paths).forEach(k=>{\r\n        merged.sponsor.paths[k].support_url ||= x.sponsor.support_10_url;\r\n        merged.sponsor.paths[k].power_url ||= x.sponsor.power_25_url;\r\n        merged.sponsor.paths[k].sponsor_url ||= x.sponsor.sponsor_100_url;\r\n      });\r\n    }\r\n\r\n    return merged;\r\n  }\r\n\r\n  function addItem(){\r\n    const arr = currentList();\r\n\r\n    if(main === 'discounts'){\r\n      arr.push({\r\n        title:'New Discount',\r\n        host_name:'',\r\n        circle_image:'',\r\n        desc:'',\r\n        offer:'',\r\n        offer_badge:'Discount',\r\n        checkout_url:'',\r\n        action_url:'',\r\n        favorite_id:'discount-' + Date.now(),\r\n        lat:'',\r\n        lng:'',\r\n        map_url:''\r\n      });\r\n    }\r\n\r\n    if(main === 'gift'){\r\n      arr.push({\r\n        title:'New Gift',\r\n        gift_name:'',\r\n        gift_image:'',\r\n        desc:'',\r\n        gift_price:'',\r\n        gift_checkout_url:'',\r\n        recipient_message:'',\r\n        favorite_id:'gift-' + Date.now(),\r\n        lat:'',\r\n        lng:'',\r\n        map_url:''\r\n      });\r\n    }\r\n\r\n    if(main === 'business_growth'){\r\n      arr.push(growthDefault());\r\n    }\r\n\r\n    selected = arr.length - 1;\r\n    render();\r\n  }\r\n\r\n  async function loadInventory(){\r\n    msg.textContent = 'Loading inventory...';\r\n    render();\r\n\r\n    const tryActions = ['ggg_get_limitless_inventory','ggg_get_limitless_album_inventory'];\r\n\r\n    for(const action of tryActions){\r\n      try{\r\n        const form = new FormData();\r\n        form.append('action',action);\r\n\r\n        const res = await fetch(AJAX_URL,{method:'POST',body:form});\r\n        const json = await res.json();\r\n\r\n        if(json && json.success){\r\n          normalize(json.data);\r\n          selected = 0;\r\n          render();\r\n          msg.textContent = 'Inventory loaded using ' + action + '.';\r\n          return;\r\n        }\r\n      }catch(e){}\r\n    }\r\n\r\n    msg.textContent = 'Panel opened, but inventory did not load. You can still add and save new items.';\r\n  }\r\n\r\n  function prepareForSave(){\r\n    ['artists','athletes','entrepreneurs'].forEach(type=>{\r\n      inventory.business_growth[type] = (inventory.business_growth[type] || []).map(x=>mergeProfileDefaults(x,type));\r\n    });\r\n  }\r\n\r\n  async function saveInventory(){\r\n    msg.textContent = 'Saving inventory...';\r\n\r\n    prepareForSave();\r\n\r\n    const payload = {\r\n      discounts:inventory.discounts,\r\n      gift:inventory.gift,\r\n      business_growth:inventory.business_growth,\r\n\r\n      \/* Critical compatibility aliases for hidden album page *\/\r\n      artists:inventory.business_growth.artists,\r\n      athletes:inventory.business_growth.athletes,\r\n      entrepreneurs:inventory.business_growth.entrepreneurs\r\n    };\r\n\r\n    const actions = ['ggg_save_limitless_inventory','ggg_save_limitless_album_inventory'];\r\n    let success = false;\r\n    let notes = [];\r\n\r\n    for(const action of actions){\r\n      try{\r\n        const form = new FormData();\r\n        form.append('action',action);\r\n        form.append('inventory',JSON.stringify(payload));\r\n\r\n        const res = await fetch(AJAX_URL,{method:'POST',body:form});\r\n        const json = await res.json();\r\n\r\n        if(json && json.success){\r\n          success = true;\r\n          notes.push('Saved with ' + action);\r\n        }else{\r\n          notes.push(action + ' returned no success');\r\n        }\r\n      }catch(e){\r\n        notes.push(action + ' AJAX error');\r\n      }\r\n    }\r\n\r\n    msg.textContent = success\r\n      ? 'Inventory saved.\\n' + notes.join('\\n')\r\n      : 'Save failed.\\n' + notes.join('\\n');\r\n  }\r\n\r\n  window.gliDeleteItem = function(){\r\n    const arr = currentList();\r\n    if(!arr.length) return;\r\n    if(!confirm('Delete this item?')) return;\r\n\r\n    arr.splice(selected,1);\r\n    selected = Math.max(0, selected - 1);\r\n    render();\r\n  };\r\n\r\n  window.gliDuplicateItem = function(){\r\n    const arr = currentList();\r\n    const item = currentItem();\r\n    if(!item) return;\r\n\r\n    const copy = JSON.parse(JSON.stringify(item));\r\n    if(copy.name) copy.name += ' Copy';\r\n    if(copy.title) copy.title += ' Copy';\r\n    copy.favorite_id = (copy.favorite_id || 'item') + '-copy-' + Date.now();\r\n\r\n    arr.splice(selected + 1,0,copy);\r\n    selected = selected + 1;\r\n    render();\r\n  };\r\n\r\n  loadInventory();\r\n})();\r\n<\/script>\r\n","protected":false},"excerpt":{"rendered":"<p>Do you want to see Local Investments? Yes No \ud83d\udc9d Gift \ud83d\udcb3 Eco Home Mansions Penthouse Hotels Kids Women Men Pets Spa Steak Vegan Sea Food Locals Restaurants Seminars Bootcamp Online Books Work Formation \ud83d\udcb3 Pay with Bliss Coin Enter your digital wallet #: Send payment to: HOST-WALLET-ADDRESS-123 Close \ud83e\uddca \ud83d\udc96 Sign In \/ Sign [&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-3015","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/godsgalaxygame.com\/GGG\/wp-json\/wp\/v2\/pages\/3015","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=3015"}],"version-history":[{"count":36,"href":"https:\/\/godsgalaxygame.com\/GGG\/wp-json\/wp\/v2\/pages\/3015\/revisions"}],"predecessor-version":[{"id":8969,"href":"https:\/\/godsgalaxygame.com\/GGG\/wp-json\/wp\/v2\/pages\/3015\/revisions\/8969"}],"wp:attachment":[{"href":"https:\/\/godsgalaxygame.com\/GGG\/wp-json\/wp\/v2\/media?parent=3015"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}