{"id":3,"date":"2022-10-15T06:48:29","date_gmt":"2022-10-15T06:48:29","guid":{"rendered":"http:\/\/box2217\/cgi\/addon_GT.cgi?s=GT::WP::Install::EIG+%28idelivec%29+-+10.0.87.10+%5BWordpress%3b+\/var\/hp\/common\/lib\/Wordpress.pm%3b+588%3b+Hosting::gap_call%5D\/?page_id=3"},"modified":"2026-03-31T12:50:14","modified_gmt":"2026-03-31T10:50:14","slug":"privacy-policy","status":"publish","type":"page","link":"https:\/\/idelive.com\/es\/privacy-policy\/","title":{"rendered":"Pol\u00edtica de privacidad"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"3\" class=\"elementor elementor-3\" data-elementor-post-type=\"page\">\n\t\t\t\t<section data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-section elementor-top-section elementor-element elementor-element-6bfb13d7 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"6bfb13d7\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7302d959\" data-id=\"7302d959\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-723fabf elementor-widget elementor-widget-heading\" data-id=\"723fabf\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Pol\u00edtica de privacidad<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1c47bd05 elementor-widget elementor-widget-text-editor\" data-id=\"1c47bd05\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\"><h2 class=\"wp-block-heading\">Quienes somos<\/h2><p>La direcci\u00f3n de nuestro sitio web es: https:\/\/idelive.com\/.<\/p><h2 class=\"wp-block-heading\">Comentarios<\/h2><p>Cuando los visitantes dejan comentarios en el sitio, recopilamos los datos que se muestran en el formulario de comentarios, y tambi\u00e9n la direcci\u00f3n IP del visitante y la cadena del agente de usuario del navegador para ayudar a la detecci\u00f3n de spam.<\/p><p>Se puede proporcionar una cadena an\u00f3nima creada a partir de su direcci\u00f3n de correo electr\u00f3nico (tambi\u00e9n llamada hash) al servicio Gravatar para ver si la est\u00e1 utilizando. La pol\u00edtica de privacidad del servicio Gravatar est\u00e1 disponible aqu\u00ed: https:\/\/automattic.com\/privacy\/. Despu\u00e9s de la aprobaci\u00f3n de su comentario, su foto de perfil es visible para el p\u00fablico en el contexto de su comentario.<\/p><h2 class=\"wp-block-heading\">Medios de comunicaci\u00f3n<\/h2><p>Si subes im\u00e1genes al sitio web, debes evitar subir im\u00e1genes con datos de ubicaci\u00f3n incrustados (GPS EXIF) incluidos. Los visitantes del sitio web pueden descargar y extraer cualquier dato de ubicaci\u00f3n de las im\u00e1genes del sitio web.<\/p><h2 class=\"wp-block-heading\">Galletas<\/h2><p>Si deja un comentario en nuestro sitio, puede optar por guardar su nombre, direcci\u00f3n de correo electr\u00f3nico y sitio web en cookies. Estos son para su comodidad, para que no tenga que volver a rellenar sus datos cuando deje otro comentario. Estas cookies tendr\u00e1n una duraci\u00f3n de un a\u00f1o.<\/p><p>Si visita nuestra p\u00e1gina de inicio de sesi\u00f3n, estableceremos una cookie temporal para determinar si su navegador acepta cookies. Esta cookie no contiene datos personales y se descarta cuando cierra su navegador.<\/p><p>Cuando inicie sesi\u00f3n, tambi\u00e9n configuraremos varias cookies para guardar su informaci\u00f3n de inicio de sesi\u00f3n y sus opciones de visualizaci\u00f3n de pantalla. Las cookies de inicio de sesi\u00f3n duran dos d\u00edas y las cookies de opciones de pantalla duran un a\u00f1o. Si selecciona &quot;Recordarme&quot;, su inicio de sesi\u00f3n persistir\u00e1 durante dos semanas. Si cierra sesi\u00f3n en su cuenta, se eliminar\u00e1n las cookies de inicio de sesi\u00f3n.<\/p><p>Si edita o publica un art\u00edculo, se guardar\u00e1 una cookie adicional en su navegador. Esta cookie no incluye datos personales y simplemente indica el ID de publicaci\u00f3n del art\u00edculo que acaba de editar. Caduca despu\u00e9s de 1 d\u00eda.<\/p><h2 class=\"wp-block-heading\">Contenido incrustado de otros sitios web<\/h2><p>Los art\u00edculos en este sitio pueden incluir contenido incrustado (por ejemplo, videos, im\u00e1genes, art\u00edculos, etc.). El contenido incrustado de otros sitios web se comporta exactamente de la misma manera que si el visitante hubiera visitado el otro sitio web.<\/p><p>Estos sitios web pueden recopilar datos sobre usted, usar cookies, incrustar un seguimiento adicional de terceros y monitorear su interacci\u00f3n con ese contenido incrustado, incluido el seguimiento de su interacci\u00f3n con el contenido incrustado si tiene una cuenta y ha iniciado sesi\u00f3n en ese sitio web.<\/p><h2 class=\"wp-block-heading\">Con qui\u00e9n compartimos sus datos<\/h2><p>Si solicita un restablecimiento de contrase\u00f1a, su direcci\u00f3n IP se incluir\u00e1 en el correo electr\u00f3nico de restablecimiento.<\/p><h2 class=\"wp-block-heading\">Cu\u00e1nto tiempo conservamos sus datos<\/h2><p>Si deja un comentario, el comentario y sus metadatos se conservan indefinidamente. Esto es para que podamos reconocer y aprobar cualquier comentario de seguimiento autom\u00e1ticamente en lugar de mantenerlos en una cola de moderaci\u00f3n.<\/p><p>Para los usuarios que se registran en nuestro sitio web (si los hay), tambi\u00e9n almacenamos la informaci\u00f3n personal que proporcionan en su perfil de usuario. Todos los usuarios pueden ver, editar o eliminar su informaci\u00f3n personal en cualquier momento (excepto que no pueden cambiar su nombre de usuario). Los administradores del sitio web tambi\u00e9n pueden ver y editar esa informaci\u00f3n.<\/p><h2 class=\"wp-block-heading\">Qu\u00e9 derechos tienes sobre tus datos<\/h2><p>Si tiene una cuenta en este sitio o ha dejado comentarios, puede solicitar recibir un archivo exportado de los datos personales que tenemos sobre usted, incluidos los datos que nos haya proporcionado. Tambi\u00e9n puede solicitar que eliminemos cualquier dato personal que tengamos sobre usted. Esto no incluye ning\u00fan dato que estemos obligados a conservar con fines administrativos, legales o de seguridad.<\/p><h2 class=\"wp-block-heading\">D\u00f3nde se env\u00edan sus datos<\/h2><p>Los comentarios de los visitantes puede que los revise un servicio de detecci\u00f3n autom\u00e1tica de spam.<\/p>\n<h2>Direcci\u00f3n fiscal<\/h2>\n<p>Romestone SL<br \/>B05443155<br \/>Carrer Mallorca 221 3\u00ba 1\u00aa. Barcelona<\/p><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f76ebfe elementor-widget elementor-widget-html\" data-id=\"f76ebfe\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"es\">\r\n<head>\r\n  <meta charset=\"UTF-8\">\r\n  <title>IDELIVE Chat<\/title>\r\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no\">\r\n\r\n  <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\r\n  <link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\r\n  <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Montserrat:wght@400;500;600;700&display=swap\" rel=\"stylesheet\">\r\n\r\n  <style>\r\n    * {\r\n      box-sizing: border-box;\r\n    }\r\n\r\n    :root {\r\n  --accent: #7D7D7D; \/* Gris para acento *\/\r\n  --bg1: #B0B0B0; \/* Gris para fondo del t\u00edtulo *\/\r\n  --bg2: #D3D3D3; \/* Gris m\u00e1s claro *\/\r\n  --panel: rgba(189, 189, 189, 0.18); \/* Gris suave para panel *\/\r\n  --stroke: rgba(189, 189, 189, 0.28); \/* Gris para borde *\/\r\n  --shadow: 0 20px 60px rgba(0, 0, 0, 0.18);\r\n  --text: #333333; \/* Gris oscuro para el texto *\/\r\n  --bubble: rgba(200, 200, 200, 0.72); \/* Gris claro para los mensajes del bot *\/\r\n  --bubbleStroke: rgba(200, 200, 200, 0.55); \/* Gris m\u00e1s tenue para borde de burbuja *\/\r\n}\r\n\r\n    body {\r\n      margin: 0;\r\n      padding: 0;\r\n      font-family: \"Montserrat\", sans-serif;\r\n    }\r\n\r\n    \/* ===== Bot\u00f3n Flotante ===== *\/\r\n    .chat-button {\r\n      position: fixed;\r\n      bottom: 80px;\r\n      right: 25px;\r\n      background: transparent;\r\n      border-radius: 50%;\r\n      width: 60px;\r\n      height: 60px;\r\n      display: flex;\r\n      justify-content: center;\r\n      align-items: center;\r\n      cursor: pointer;\r\n      z-index: 10000;\r\n      transition: opacity 0.3s ease, transform 0.2s ease;\r\n      filter: drop-shadow(0 10px 10px rgba(0.80, 0.80, 0.80, 0.60));\r\n    }\r\n    \r\n    .message a {\r\n  display: inline-block;\r\n  margin-top: 4px;\r\n  padding: 6px 10px;\r\n  border-radius: 8px;\r\n  background: rgba(0, 0, 0, 0.08);\r\n  color: #2f5cff;\r\n  text-decoration: none;\r\n  font-size: 11px;\r\n  line-height: 1.2;\r\n  max-width: 100%;\r\n}\r\n.link-center {\r\n  display: flex;\r\n  justify-content: center;\r\n  margin: 10px 0 6px;\r\n}\r\n\r\n.message a.chat-link-btn {\r\n  display: inline-flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n  min-width: 110px;\r\n  padding: 7px 14px;\r\n  border-radius: 10px;\r\n  background: rgba(255, 255, 255, 0.45);\r\n  color: #4a4a4a;\r\n  text-decoration: none;\r\n  font-size: 11px;\r\n  font-weight: 600;\r\n  line-height: 1.2;\r\n  text-align: center;\r\n  border: 1px solid rgba(0, 0, 0, 0.06);\r\n}\r\n\r\n.message a.chat-link-btn:hover {\r\n  background: rgba(255, 255, 255, 0.62);\r\n}\r\n\r\n.chat-separator {\r\n  border: 0;\r\n  height: 1px;\r\n  margin: 12px 0;\r\n  background: linear-gradient(\r\n    to right,\r\n    rgba(0,0,0,0),\r\n    rgba(0,0,0,0.18),\r\n    rgba(0,0,0,0)\r\n  );\r\n}\r\n.message a:hover {\r\n  background: rgba(0, 0, 0, 0.12);\r\n}\r\n\r\n.bot-message a {\r\n  background: rgba(0, 0, 0, 0.06);\r\n}\r\n\r\n    .chat-button:active { transform: scale(0.9); }\r\n\r\n   .chat-button {\r\n  overflow: hidden; \/* Recorta lo que se salga *\/\r\n}\r\n\r\n.chat-button img {\r\n  width: 100%;\r\n  height: 100%;\r\n  object-fit: cover; \/* Ajusta la imagen al c\u00edrculo *\/\r\n  border-radius: 50%;\r\n}\r\n\r\n    \/* ===== Chat App Container ===== *\/\r\n    .chat-app {\r\n      position: fixed;\r\n      bottom: 80px;\r\n      right: 16px;\r\n      width: 280px;\r\n      height: 400px;\r\n      border-radius: 16px;\r\n      overflow: hidden;\r\n      background: var(--panel);\r\n      border: 1px solid var(--stroke);\r\n      box-shadow: var(--shadow);\r\n      backdrop-filter: blur(18px) saturate(160%);\r\n      -webkit-backdrop-filter: blur(18px) saturate(160%);\r\n      display: flex;\r\n      flex-direction: column;\r\n      \r\n      \/* Estado Inicial (Oculto abajo) *\/\r\n      transform: translateY(120%);\r\n      opacity: 0;\r\n      pointer-events: none;\r\n      transition: transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.1), opacity 0.3s ease;\r\n      z-index: 9999;\r\n    }\r\n\r\n    .chat-app.open {\r\n      transform: translateY(0);\r\n      opacity: 1;\r\n      pointer-events: auto;\r\n    }\r\n\r\n    \/* ===== Header ===== *\/\r\n    .chat-header {\r\n  padding: 10px 14px;\r\n  background: linear-gradient(135deg, rgba(189, 189, 189, 0.85), rgba(169, 169, 169, 0.78)); \/* Fondo gris *\/\r\n  color: #fff;\r\n  border-bottom: 1px solid rgba(200, 200, 200, 0.25); \/* Gris m\u00e1s suave *\/\r\n}\r\n\r\n    .chat-header .title {\r\n      font-size: 14px;\r\n      font-weight: 700;\r\n      text-align: center;\r\n      margin: 0;\r\n    }\r\n\r\n    .chat-header .session { display: none; }\r\n\r\n    \/* ===== Body ===== *\/\r\n    .chat-body {\r\n      flex: 1;\r\n      padding: 10px;\r\n      overflow-y: auto;\r\n      display: flex;\r\n      flex-direction: column;\r\n      gap: 8px;\r\n      background: linear-gradient(180deg, rgba(255, 255, 255, .10), rgba(255, 255, 255, .06));\r\n    }\r\n    .chat-body {\r\n  overflow-y: auto;\r\n\r\n  \/* Firefox *\/\r\n  scrollbar-width: none;\r\n\r\n  \/* IE y Edge antiguos *\/\r\n  -ms-overflow-style: none;\r\n}\r\n\r\n.chat-body::-webkit-scrollbar {\r\n  display: none; \/* Chrome, Safari *\/\r\n}\r\n\r\n    \/* ===== Messages ===== *\/\r\n    .message {\r\n      max-width: 88%;\r\n      padding: 8px 12px;\r\n      border-radius: 15px;\r\n      font-size: 12px;\r\n      line-height: 1.3;\r\n      word-wrap: break-word;\r\n      animation: fadeIn .22s ease;\r\n      \r\n    }\r\n    .bot-row {\r\n  display: flex;\r\n  align-items: flex-start;\r\n  gap: 8px;\r\n}\r\n\r\n.bot-avatar {\r\n  width: 28px;\r\n  height: 28px;\r\n  border-radius: 50%;\r\n  object-fit: cover;\r\n  flex-shrink: 0;\r\n  margin-top: 2px;\r\n}\r\n\r\n.bot-row .bot-message {\r\n  align-self: unset;\r\n  max-width: calc(100% - 40px);\r\n}\r\n\r\n    .message img {\r\n      max-width: 100%;\r\n      border-radius: 8px;\r\n      margin-bottom: 4px;\r\n      display: block;\r\n    }\r\n    .message {\r\n  white-space: normal;\r\n  overflow-wrap: anywhere;\r\n  word-break: break-word;\r\n}\r\n\r\n.message a {\r\n  color: #2f5cff;\r\n  text-decoration: underline;\r\n  word-break: break-word;\r\n}\r\n\r\n.message strong {\r\n  font-weight: 700;\r\n}\r\n\r\n.message ul {\r\n  margin: 6px 0 0 16px;\r\n  padding: 0;\r\n}\r\n\r\n.message li {\r\n  margin: 4px 0;\r\n}\r\n\r\n.message img {\r\n  max-width: 100%;\r\n  border-radius: 8px;\r\n  margin-bottom: 6px;\r\n  display: block;\r\n}\r\n\r\n.bot-message,\r\n.user-message {\r\n  overflow-wrap: anywhere;\r\n}\r\n\r\n.user-message {\r\n  align-self: flex-end;\r\n  color: #fff;\r\n  background: linear-gradient(135deg, #6b6b6b, #8a8a8a);\r\n  border: 1px solid rgba(255, 255, 255, 0.12);\r\n  border-bottom-right-radius: 4px;\r\n}\r\n\r\n    .bot-message {\r\n  align-self: flex-start;\r\n  color: var(--text);\r\n  background: var(--bubble); \/* Fondo gris claro para los mensajes del bot *\/\r\n  border: 1px solid var(--bubbleStroke); \/* Borde gris m\u00e1s tenue *\/\r\n  border-bottom-left-radius: 4px;\r\n}\r\n    \r\n\r\n    \/* ===== Typing indicator ===== *\/\r\n    .typing {\r\n      align-self: flex-start;\r\n      display: flex;\r\n      gap: 4px;\r\n      padding: 10px 14px;\r\n      background: var(--bubble);\r\n      border-radius: 15px;\r\n      border-bottom-left-radius: 4px;\r\n    }\r\n    .typing span {\r\n      width: 6px; height: 6px;\r\n      background: rgba(0, 0, 0, .4);\r\n      border-radius: 50%;\r\n      animation: blink 1.4s infinite both;\r\n    }\r\n    .typing span:nth-child(2) { animation-delay: .2s; }\r\n    .typing span:nth-child(3) { animation-delay: .4s; }\r\n\r\n    @keyframes blink { 0%, 100% { opacity: .2; } 20% { opacity: 1; } }\r\n\r\n    \/* ===== Input Bar ===== *\/\r\n    .chat-input {\r\n  padding: 10px;\r\n   background: rgba(169, 169, 169, 1); \/* Fondo opaco *\/\r\n  background: rgba(169, 169, 169, 1); \/* Fondo opaco *\/\r\n}\r\n\r\n    .input-shell {\r\n      display: flex;\r\n      align-items: center;\r\n      gap: 8px;\r\n      padding: 6px 10px;\r\n      border-radius: 20px;\r\n      background: rgba(255, 255, 255, 10.7);\r\n      border: 1px solid rgba(255, 255, 255, .5);\r\n    }\r\n\r\n    .chat-input input {\r\n      flex: 1;\r\n      border: none;\r\n      outline: none;\r\n      background: rgba(169, 169, 169, 0.05); \/* Fondo m\u00e1s tenue y gris oscuro *\/\r\n      font-size: 12px;\r\n      color: var(--text);\r\n    }\r\n    \r\n    \r\n    \/* Desplazar el bot\u00f3n solo en m\u00f3viles *\/\r\n@media (max-width: 767px) {\r\n  .chat-button {\r\n    right: 4px;  \/* Desplaza el bot\u00f3n un poco m\u00e1s a la derecha *\/\r\n  }\r\n}\r\n\/* Asegurarse de que el bot\u00f3n flotante est\u00e9 encima del chat *\/\r\n.chat-button {\r\n  z-index: 10001;  \/* Asegura que est\u00e9 sobre el chat *\/\r\n}\r\n\r\n    .send-btn {\r\n      width: 30px; height: 30px;\r\n      border: none; border-radius: 50%;\r\n       background: #7D7D7D; \/* Gris para el bot\u00f3n de enviar *\/\r\n      cursor: pointer;\r\n      display: flex; justify-content: center; align-items: center;\r\n    }\r\n\r\n    .send-btn svg {\r\n  width: 16px;\r\n  height: 16px;\r\n  fill: #fff;\r\n}\r\n\r\n    @keyframes fadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }\r\n  <\/style>\r\n<\/head>\r\n\r\n<body data-rsssl=1 data-rsssl=\"1\">\r\n\r\n  <div class=\"chat-button\" id=\"chat-toggle\">\r\n  <img decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/d\/1iiDxNA7P9_6zTChQswArq9ZSwcTGqkbp\" alt=\"chat\" \/>\r\n<\/div>\r\n\r\n  <div class=\"chat-app\" id=\"chat-app\">\r\n    <div class=\"chat-header\">\r\n      <div class=\"title\"><\/div>\r\n      <div id=\"session-id\" class=\"session\"><\/div>\r\n    <\/div>\r\n\r\n    <div id=\"chat-container\" class=\"chat-body\"><\/div>\r\n\r\n    <div class=\"chat-input\">\r\n      <div class=\"input-shell\">\r\n        <input type=\"text\" id=\"message-box\" placeholder=\"Escribe tu mensaje\u2026\" autocomplete=\"off\">\r\n        <button class=\"send-btn\" id=\"send-btn\" aria-label=\"Enviar\">\r\n          <svg viewbox=\"0 0 24 24\"><path d=\"M2.01 21L23 12 2.01 3 2 10l15 2-15 2z\"\/><\/svg>\r\n        <\/button>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <script>\r\n    const chatToggleBtn = document.getElementById(\"chat-toggle\");\r\n    const chatApp = document.getElementById(\"chat-app\");\r\n    const chat = document.getElementById(\"chat-container\");\r\n    const input = document.getElementById(\"message-box\");\r\n    const sendBtn = document.getElementById(\"send-btn\");\r\n    const sessionId = \"session-\" + Date.now();\r\n    let typingBubble = null;\r\n\r\n    \/* --- L\u00d3GICA DE APERTURA Y CIERRE (Clic fuera) --- *\/\r\n\r\n    chatToggleBtn.addEventListener(\"click\", (e) => {\r\n      e.stopPropagation();\r\n      chatApp.classList.add(\"open\");\r\n      chatToggleBtn.style.opacity = \"0\";\r\n      \/\/ Esperamos el fade out para quitar el bot\u00f3n del flujo\r\n      setTimeout(() => { chatToggleBtn.style.display = \"none\"; }, 300);\r\n    });\r\n\r\n    document.addEventListener(\"click\", (e) => {\r\n      if (chatApp.classList.contains(\"open\") && !chatApp.contains(e.target)) {\r\n        chatApp.classList.remove(\"open\");\r\n        \/\/ Restaurar bot\u00f3n despu\u00e9s de que el chat baje\r\n        setTimeout(() => {\r\n          chatToggleBtn.style.display = \"flex\";\r\n          setTimeout(() => { chatToggleBtn.style.opacity = \"1\"; }, 10);\r\n        }, 400);\r\n      }\r\n    });\r\n\r\n    \/* --- FUNCIONES DE LIMPIEZA Y RENDERIZADO (Originales) --- *\/\r\n\r\n    function sanitizeText(str){\r\n      str = String(str ?? \"\").replace(\/<br\\s*\\\/?>\/gi, \"\\n\");\r\n      str = str.replace(\/[\\u0000-\\u0008\\u000B\\u000C\\u000E-\\u001F\\u007F-\\u009F]\/g, \"\");\r\n      str = str.replace(\/[\\uE000-\\uF8FF]\/g, \"\");\r\n      return str.replace(\/\\uFFFD\/g, \"\");\r\n    }\r\n\r\n    function escapeHtml(str){\r\n      return str.replace(\/&\/g,\"&amp;\").replace(\/<\/g,\"&lt;\").replace(\/>\/g,\"&gt;\").replace(\/\"\/g,\"&quot;\").replace(\/'\/g,\"&#039;\");\r\n    }\r\n\r\n    function renderMarkdown(text){\r\n  let safe = sanitizeText(text);\r\n\r\n  \/\/ Normaliza saltos\r\n  safe = safe\r\n    .replace(\/\\\\n\/g, \"\\n\")\r\n    .replace(\/\\\\t\/g, \"\\t\")\r\n    .replace(\/\\r\\n\/g, \"\\n\")\r\n    .replace(\/\\r\/g, \"\\n\");\r\n\r\n  \/\/ Escapa HTML\r\n  safe = escapeHtml(safe);\r\n\r\n  const linkPlaceholders = [];\r\n  const saveLink = (url, label = \"Abrir enlace\") => {\r\n    const cleanUrl = url.replace(\/&amp;\/g, \"&\");\r\n    const html = `<div class=\"link-center\"><a href=\"${cleanUrl}\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"chat-link-btn\">${label}<\/a><\/div>`;\r\n    const token = `%%LINK_${linkPlaceholders.length}%%`;\r\n    linkPlaceholders.push({ token, html });\r\n    return token;\r\n  };\r\n\r\n  \/\/ Negritas\r\n  safe = safe.replace(\/\\*\\*(.*?)\\*\\*\/g, \"<strong>$1<\/strong>\");\r\n\r\n  \/\/ Convierte l\u00edneas separadoras tipo ---\r\n  safe = safe.replace(\/^\\s*---\\s*$\/gm, \"%%HR%%\");\r\n\r\n  \/\/ Elimina textos redundantes antes de enlaces de reserva\r\n  safe = safe.replace(\/Reserva aqui:\\s*\/gi, \"\");\r\n  safe = safe.replace(\/Reserva aqu\u00ed:\\s*\/gi, \"\");\r\n  safe = safe.replace(\/Enlace de reserva:\\s*\/gi, \"\");\r\n  safe = safe.replace(\/\ud83d\udd17\\s*Enlace de reserva:\\s*\/gi, \"\");\r\n\r\n  \/\/ Links markdown [texto](url)\r\n  safe = safe.replace(\r\n    \/\\[([^\\]]+)\\]\\((https?:\\\/\\\/[^\\s)]+)\\)\/g,\r\n    (match, textLabel, url) => {\r\n      let label = textLabel.trim();\r\n\r\n      if (url.includes(\"typeform\")) label = \"Reserva\";\r\n      else if (url.includes(\"youtube\")) label = \"Ver video\";\r\n      else if (url.includes(\"details-stay\")) label = \"Ver detalles\";\r\n         else if (url.includes(\"available\")) label = \"Ver disponibilidad\";\r\n else if (url.includes(\"checkout\")) label = \"Checkout\";\r\n  else if (url.includes(\"waiting\")) label = \"Lista de espera\";\r\n  else if (url.includes(\"https:\/\/idelive.com\/\")) label = \"Idelive\";\r\n    else if (url.includes(\"switch\")) label = \"Switch\";\r\n  else if (url.includes(\"switch\")) label = \"Switch\";\r\n  else if (url.includes(\"guests\")) label = \"Cita en oficina\";\r\n      return saveLink(url, label);\r\n    }\r\n  );\r\n\r\n  \/\/ Links entre <https:\/\/...>\r\n  safe = safe.replace(\r\n    \/&lt;(https?:\\\/\\\/.*?)&gt;\/g,\r\n    (match, url) => {\r\n      let label = \"Abrir enlace\";\r\n\r\n      if (url.includes(\"typeform\")) label = \"Reservar\";\r\n      else if (url.includes(\"youtube\")) label = \"Ver video\";\r\n      else if (url.includes(\"idealive\")) label = \"Ver detalles\";\r\n\r\n      return saveLink(url, label);\r\n    }\r\n  );\r\n\r\n  \/\/ URLs planas en una l\u00ednea sola\r\n  safe = safe.replace(\r\n    \/(^|[\\n\\s])((https?:\\\/\\\/[^\\s<]+))\/g,\r\n    (match, prefix, fullUrl) => {\r\n      let label = \"Abrir enlace\";\r\n\r\n      if (fullUrl.includes(\"typeform\")) label = \"Reservar\";\r\n      else if (fullUrl.includes(\"youtube\")) label = \"Ver video\";\r\n      else if (fullUrl.includes(\"idealive\")) label = \"Ver detalles\";\r\n\r\n      return `${prefix}${saveLink(fullUrl, label)}`;\r\n    }\r\n  );\r\n\r\n  \/\/ Listas con \"- \"\r\n  safe = safe.replace(\/(?:^|\\n)- (.*?)(?=\\n|$)\/g, \"<li>$1<\/li>\");\r\n  safe = safe.replace(\/(<li>.*?<\\\/li>)\/gs, \"<ul>$1<\/ul>\");\r\n  safe = safe.replace(\/<\\\/ul>\\s*<ul>\/g, \"\");\r\nsafe = safe.replace(\/\ud83d\udc49\\s*\/g, \"\");\r\n\/\/ Limpieza de placeholders y l\u00edneas no deseadas\r\nsafe = safe\r\n  .replace(\/^.*\ud83d\udcce.*$\/gim, \"\")\r\n  .replace(\/^.*\ud83d\udcf8\\s*Fotos.*$\/gim, \"\")\r\n  .replace(\/^\\s*[-\u2022]\\s*\\[[^\\]]+\\]\\(\\)\\s*$\/gim, \"\")\r\n  .replace(\/^\\s*\\[[^\\]]+\\]\\(\\)\\s*$\/gim, \"\")\r\n  .replace(\/^\\s*[\ud83d\udcce\ud83d\udcf8]\\s*$\/gim, \"\")\r\n  .replace(\/\\n{3,}\/g, \"\\n\\n\");\r\n  \/\/ Saltos de l\u00ednea\r\n  safe = safe.replace(\/\\n\/g, \"<br>\");\r\n\r\n  \/\/ Restaurar separadores\r\n  safe = safe.replace(\/%%HR%%\/g, '<hr class=\"chat-separator\">');\r\n\r\n  \/\/ Restaurar enlaces al final para que no se vuelvan a procesar\r\n  linkPlaceholders.forEach(item => {\r\n    safe = safe.replace(item.token, item.html);\r\n  });\r\n\r\n  \/\/ Limpieza opcional de <br> sobrantes alrededor de botones y hr\r\n  safe = safe\r\n    .replace(\/(<br>\\s*)+(<div class=\"link-center\">)\/g, \"$2\")\r\n    .replace(\/(<\\\/div>)(\\s*<br>)+\/g, \"$1\")\r\n    .replace(\/(<br>\\s*)+(<hr class=\"chat-separator\">)\/g, \"$2\")\r\n    .replace(\/(<hr class=\"chat-separator\">)(\\s*<br>)+\/g, \"$1\");\r\n\r\n  return safe;\r\n}\r\n\r\n    \/* --- INTERFAZ --- *\/\r\n\r\n    function showTyping(){\r\n      if(typingBubble) return;\r\n      typingBubble = document.createElement(\"div\");\r\n      typingBubble.className = \"typing\";\r\n      typingBubble.innerHTML = \"<span><\/span><span><\/span><span><\/span>\";\r\n      chat.appendChild(typingBubble);\r\n      chat.scrollTop = chat.scrollHeight;\r\n    }\r\n\r\n    function hideTyping(){\r\n      if(typingBubble){ typingBubble.remove(); typingBubble = null; }\r\n    }\r\n\r\n   function addMessage(text, type){\r\n  const rawText = String(text ?? \"\");\r\n\r\n  const imageRegex = \/(https?:\\\/\\\/(?:lh3\\.googleusercontent\\.com\\\/d\\\/[A-Za-z0-9_-]+|[^\\s]+?\\.(?:jpg|jpeg|png|gif|webp)(?:\\?[^\\s]+)?))\/gi;\r\n  const images = rawText.match(imageRegex) || [];\r\n\r\n  let cleanText = rawText.replace(imageRegex, \"\").trim();\r\n\r\n  const div = document.createElement(\"div\");\r\n  div.className = \"message \" + (type === \"user\" ? \"user-message\" : \"bot-message\");\r\n\r\n  images.forEach(url => {\r\n    const img = document.createElement(\"img\");\r\n    img.src = url;\r\n    img.alt = \"Imagen\";\r\n    img.loading = \"lazy\";\r\n    div.appendChild(img);\r\n  });\r\n\r\n  if (cleanText || (!images.length && !cleanText)) {\r\n    const textDiv = document.createElement(\"div\");\r\n    textDiv.innerHTML = renderMarkdown(cleanText || rawText);\r\n    div.appendChild(textDiv);\r\n  }\r\n\r\n  if(type === \"bot\"){\r\n    const row = document.createElement(\"div\");\r\n    row.className = \"bot-row\";\r\n\r\n    const avatar = document.createElement(\"img\");\r\n    avatar.className = \"bot-avatar\";\r\n    avatar.src = \"https:\/\/lh3.googleusercontent.com\/d\/1iiDxNA7P9_6zTChQswArq9ZSwcTGqkbp\";\r\n    avatar.alt = \"Avatar bot\";\r\n\r\n    row.appendChild(avatar);\r\n    row.appendChild(div);\r\n    chat.appendChild(row);\r\n  } else {\r\n    chat.appendChild(div);\r\n  }\r\n\r\n  chat.scrollTop = chat.scrollHeight;\r\n}\r\n\r\n    \/* --- ENV\u00cdO DE MENSAJES --- *\/\r\n\r\nasync function sendMessage(){\r\n  const msg = input.value.trim();\r\n  if(!msg) return;\r\n\r\n  input.value = \"\";\r\n  addMessage(msg, \"user\");\r\n  showTyping();\r\n\r\n  try {\r\n    const response = await fetch(\"https:\/\/n8n.srv965472.hstgr.cloud\/webhook\/87cc5e12-4f11-4f4c-82d6-a80f3f9323c8\", {\r\n      method: \"POST\",\r\n      headers: { \"Content-Type\": \"application\/json\" },\r\n      body: JSON.stringify({ sessionId, message: msg })\r\n    });\r\n\r\n    if (!response.ok) {\r\n      const errorText = await response.text();\r\n      throw new Error(`HTTP ${response.status}: ${errorText}`);\r\n    }\r\n\r\n    const data = await response.json();\r\n    hideTyping();\r\n\r\n    const reply =\r\n      data?.reply ??\r\n      data?.output ??\r\n      data?.data?.reply ??\r\n      (Array.isArray(data) ? data[0]?.reply || data[0]?.output : null);\r\n\r\n    if (reply) {\r\n      addMessage(reply, \"bot\");\r\n    } else {\r\n      console.log(\"Respuesta sin reply:\", data);\r\n      addMessage(\"\u26a0\ufe0f Sin respuesta del servidor\", \"bot\");\r\n    }\r\n  } catch (err) {\r\n    hideTyping();\r\n    console.error(\"Error en fetch:\", err);\r\n    addMessage(\"\u274c Error de conexi\u00f3n\", \"bot\");\r\n  }\r\n}\r\n    sendBtn.addEventListener(\"click\", sendMessage);\r\n    input.addEventListener(\"keydown\", e => { if(e.key === \"Enter\") sendMessage(); });\r\n\r\n    \/\/ Bienvenida\r\n    addMessage(\"\ud83d\udc4b **Bienvenido a IDELIVE**\\nEstoy aqu\u00ed para ayudarte a comenzar tu aventura.\", \"bot\");\r\n  <\/script>\r\n\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Privacy Policy Who we are Our website address is: https:\/\/idelive.com\/. Comments When visitors leave comments on the site we collect the data shown in the comments form, and also the visitor\u2019s IP address and browser user agent string to help spam detection. An anonymized string created from your email address (also called a hash) may [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-3","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Privacy Policy - Idelive<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/idelive.com\/es\/privacy-policy\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Privacy Policy - Idelive\" \/>\n<meta property=\"og:description\" content=\"Privacy Policy Who we are Our website address is: https:\/\/idelive.com\/. Comments When visitors leave comments on the site we collect the data shown in the comments form, and also the visitor\u2019s IP address and browser user agent string to help spam detection. An anonymized string created from your email address (also called a hash) may [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/idelive.com\/es\/privacy-policy\/\" \/>\n<meta property=\"og:site_name\" content=\"Idelive\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-31T10:50:14+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/lh3.googleusercontent.com\/d\/1iiDxNA7P9_6zTChQswArq9ZSwcTGqkbp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/idelive.com\/privacy-policy\/\",\"url\":\"https:\/\/idelive.com\/privacy-policy\/\",\"name\":\"Privacy Policy - Idelive\",\"isPartOf\":{\"@id\":\"https:\/\/idelive.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/idelive.com\/privacy-policy\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/idelive.com\/privacy-policy\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/lh3.googleusercontent.com\/d\/1iiDxNA7P9_6zTChQswArq9ZSwcTGqkbp\",\"datePublished\":\"2022-10-15T06:48:29+00:00\",\"dateModified\":\"2026-03-31T10:50:14+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/idelive.com\/privacy-policy\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/idelive.com\/privacy-policy\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/idelive.com\/privacy-policy\/#primaryimage\",\"url\":\"https:\/\/lh3.googleusercontent.com\/d\/1iiDxNA7P9_6zTChQswArq9ZSwcTGqkbp\",\"contentUrl\":\"https:\/\/lh3.googleusercontent.com\/d\/1iiDxNA7P9_6zTChQswArq9ZSwcTGqkbp\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/idelive.com\/privacy-policy\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/idelive.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Privacy Policy\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/idelive.com\/#website\",\"url\":\"https:\/\/idelive.com\/\",\"name\":\"Idelive\",\"description\":\"Private Residences\",\"publisher\":{\"@id\":\"https:\/\/idelive.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/idelive.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/idelive.com\/#organization\",\"name\":\"Idelive\",\"url\":\"https:\/\/idelive.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/idelive.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/idelive.com\/wp-content\/uploads\/2022\/10\/cropped-Only-Square.png\",\"contentUrl\":\"https:\/\/idelive.com\/wp-content\/uploads\/2022\/10\/cropped-Only-Square.png\",\"width\":512,\"height\":512,\"caption\":\"Idelive\"},\"image\":{\"@id\":\"https:\/\/idelive.com\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Privacy Policy - Idelive","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/idelive.com\/es\/privacy-policy\/","og_locale":"es_ES","og_type":"article","og_title":"Privacy Policy - Idelive","og_description":"Privacy Policy Who we are Our website address is: https:\/\/idelive.com\/. Comments When visitors leave comments on the site we collect the data shown in the comments form, and also the visitor\u2019s IP address and browser user agent string to help spam detection. An anonymized string created from your email address (also called a hash) may [&hellip;]","og_url":"https:\/\/idelive.com\/es\/privacy-policy\/","og_site_name":"Idelive","article_modified_time":"2026-03-31T10:50:14+00:00","og_image":[{"url":"https:\/\/lh3.googleusercontent.com\/d\/1iiDxNA7P9_6zTChQswArq9ZSwcTGqkbp","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/idelive.com\/privacy-policy\/","url":"https:\/\/idelive.com\/privacy-policy\/","name":"Privacy Policy - Idelive","isPartOf":{"@id":"https:\/\/idelive.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/idelive.com\/privacy-policy\/#primaryimage"},"image":{"@id":"https:\/\/idelive.com\/privacy-policy\/#primaryimage"},"thumbnailUrl":"https:\/\/lh3.googleusercontent.com\/d\/1iiDxNA7P9_6zTChQswArq9ZSwcTGqkbp","datePublished":"2022-10-15T06:48:29+00:00","dateModified":"2026-03-31T10:50:14+00:00","breadcrumb":{"@id":"https:\/\/idelive.com\/privacy-policy\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/idelive.com\/privacy-policy\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/idelive.com\/privacy-policy\/#primaryimage","url":"https:\/\/lh3.googleusercontent.com\/d\/1iiDxNA7P9_6zTChQswArq9ZSwcTGqkbp","contentUrl":"https:\/\/lh3.googleusercontent.com\/d\/1iiDxNA7P9_6zTChQswArq9ZSwcTGqkbp"},{"@type":"BreadcrumbList","@id":"https:\/\/idelive.com\/privacy-policy\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/idelive.com\/"},{"@type":"ListItem","position":2,"name":"Privacy Policy"}]},{"@type":"WebSite","@id":"https:\/\/idelive.com\/#website","url":"https:\/\/idelive.com\/","name":"Idelive","description":"Private Residences","publisher":{"@id":"https:\/\/idelive.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/idelive.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/idelive.com\/#organization","name":"Idelive","url":"https:\/\/idelive.com\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/idelive.com\/#\/schema\/logo\/image\/","url":"https:\/\/idelive.com\/wp-content\/uploads\/2022\/10\/cropped-Only-Square.png","contentUrl":"https:\/\/idelive.com\/wp-content\/uploads\/2022\/10\/cropped-Only-Square.png","width":512,"height":512,"caption":"Idelive"},"image":{"@id":"https:\/\/idelive.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/idelive.com\/es\/wp-json\/wp\/v2\/pages\/3","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/idelive.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/idelive.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/idelive.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/idelive.com\/es\/wp-json\/wp\/v2\/comments?post=3"}],"version-history":[{"count":16,"href":"https:\/\/idelive.com\/es\/wp-json\/wp\/v2\/pages\/3\/revisions"}],"predecessor-version":[{"id":7668,"href":"https:\/\/idelive.com\/es\/wp-json\/wp\/v2\/pages\/3\/revisions\/7668"}],"wp:attachment":[{"href":"https:\/\/idelive.com\/es\/wp-json\/wp\/v2\/media?parent=3"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}