{"product_id":"sillon-estilo-nube-modular","title":"Sillon Estilo Nube Modular","description":"\u003c!-- ====== Avisos de compra rotativos · Sillón Estilo Nube Modular · México ====== --\u003e\n\u003cdiv id=\"live-purchase-nube-banner\" style=\"\n       margin:12px 0 0 0;\n       font-family:system-ui,-apple-system,'Segoe UI',Roboto,Arial,sans-serif;\n     \"\u003e\n\n  \u003cdiv id=\"live-purchase-nube-box\" style=\"\n         display:flex;\n         gap:10px;\n         align-items:center;\n         border:1px solid #E2E5E9;\n         border-radius:10px;\n         padding:10px 12px;\n         background:#EEF1F4;\n         color:#111;\n         font-size:13.5px;\n       \"\u003e\n\n    \u003cspan aria-hidden=\"true\" style=\"\n            display:inline-flex;\n            width:24px;\n            height:24px;\n            flex-shrink:0;\n            align-items:center;\n            justify-content:center;\n            border-radius:999px;\n            background:#111;\n            color:#fff;\n            font-size:13px;\n            line-height:1;\n          \"\u003e\n      ✓\n    \u003c\/span\u003e\n\n    \u003cdiv style=\"line-height:1.35;color:#111;\"\u003e\n      \u003cstrong style=\"color:#111;\"\u003eHace un momento\u003c\/strong\u003e:\n\n      \u003cspan id=\"lp-nube-name\" style=\"font-weight:600;color:#111;\"\u003e\n        —\n      \u003c\/span\u003e\n\n      compró\n\n      \u003cstrong id=\"lp-nube-item\" style=\"color:#111;\"\u003e\n        Sillón Estilo Nube Modular\n      \u003c\/strong\u003e\n\n      desde\n\n      \u003cspan id=\"lp-nube-city\" style=\"color:#555;\"\u003e\n        —\n      \u003c\/span\u003e.\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function(){\n\n  \/* Evita que el código se ejecute más de una vez *\/\n  if (window.__livePurchaseNubeModularMX) return;\n  window.__livePurchaseNubeModularMX = true;\n\n  \/* ====== Nombres mexicanos ====== *\/\n  const names = [\n    \"José Hernández\",\n    \"María García\",\n    \"Juan Martínez\",\n    \"Guadalupe López\",\n    \"Carlos González\",\n    \"Fernanda Rodríguez\",\n    \"Miguel Sánchez\",\n    \"Alejandra Ramírez\",\n    \"Luis Pérez\",\n    \"Daniela Flores\",\n    \"Jorge Torres\",\n    \"Mariana Gómez\",\n    \"Ricardo Díaz\",\n    \"Andrea Morales\",\n    \"Eduardo Cruz\",\n    \"Sofía Reyes\",\n    \"Fernando Ortiz\",\n    \"Paola Gutiérrez\",\n    \"Roberto Chávez\",\n    \"Valeria Mendoza\",\n    \"Antonio Vargas\",\n    \"Karla Castillo\",\n    \"Manuel Aguilar\",\n    \"Gabriela Romero\",\n    \"Francisco Jiménez\",\n    \"Ximena Navarro\",\n    \"Alejandro Ruiz\",\n    \"Mónica Herrera\",\n    \"Jesús Medina\",\n    \"Adriana Rojas\",\n    \"Raúl Salazar\",\n    \"Patricia Luna\",\n    \"Óscar Campos\",\n    \"Claudia Vázquez\",\n    \"Héctor Cabrera\"\n  ];\n\n  \/* ====== Ciudades y estados de México ====== *\/\n  const cities = [\n    \"Ciudad de México\",\n    \"Guadalajara, Jalisco\",\n    \"Monterrey, Nuevo León\",\n    \"Puebla, Puebla\",\n    \"Querétaro, Querétaro\",\n    \"Mérida, Yucatán\",\n    \"León, Guanajuato\",\n    \"Tijuana, Baja California\",\n    \"Toluca, Estado de México\",\n    \"Cancún, Quintana Roo\",\n    \"San Luis Potosí, SLP\",\n    \"Aguascalientes, Aguascalientes\",\n    \"Morelia, Michoacán\",\n    \"Hermosillo, Sonora\",\n    \"Chihuahua, Chihuahua\",\n    \"Veracruz, Veracruz\",\n    \"Xalapa, Veracruz\",\n    \"Cuernavaca, Morelos\",\n    \"Oaxaca de Juárez, Oaxaca\",\n    \"Tuxtla Gutiérrez, Chiapas\",\n    \"Villahermosa, Tabasco\",\n    \"Culiacán, Sinaloa\",\n    \"Mazatlán, Sinaloa\",\n    \"Saltillo, Coahuila\",\n    \"Torreón, Coahuila\",\n    \"Durango, Durango\",\n    \"Acapulco, Guerrero\",\n    \"Pachuca, Hidalgo\",\n    \"Naucalpan, Estado de México\",\n    \"Ecatepec, Estado de México\"\n  ];\n\n  \/* Detecta el nombre de la variante seleccionada *\/\n  function getSelectedVariantName(){\n\n    const productForm =\n      document.querySelector('form[action*=\"\/cart\/add\"]');\n\n    if (!productForm) return '';\n\n    \/* Variante en selector desplegable *\/\n    const variantSelect =\n      productForm.querySelector('select[name=\"id\"]');\n\n    if (\n      variantSelect \u0026\u0026\n      variantSelect.options \u0026\u0026\n      variantSelect.selectedIndex \u003e= 0\n    ){\n      const selectedText = (\n        variantSelect.options[\n          variantSelect.selectedIndex\n        ].textContent || ''\n      ).trim();\n\n      if (selectedText) return selectedText;\n    }\n\n    \/* Opciones seleccionadas mediante botones o radios *\/\n    const checkedOptions = Array.from(\n      productForm.querySelectorAll(\n        'input[type=\"radio\"][name^=\"options\"]:checked'\n      )\n    )\n    .map(function(input){\n      return input.value;\n    })\n    .filter(Boolean);\n\n    if (checkedOptions.length){\n      return checkedOptions.join(' \/ ').trim();\n    }\n\n    \/* Opciones mediante menús desplegables *\/\n    const selectedOptions = Array.from(\n      productForm.querySelectorAll(\n        'select[name^=\"options\"]'\n      )\n    )\n    .map(function(select){\n      return select.value;\n    })\n    .filter(Boolean);\n\n    if (selectedOptions.length){\n      return selectedOptions.join(' \/ ').trim();\n    }\n\n    return '';\n  }\n\n  \/* Determina el nombre mostrado según la configuración *\/\n  function getDisplayItem(){\n\n    const variant = getSelectedVariantName();\n\n    const text = (variant || '')\n      .toLowerCase()\n      .normalize('NFD')\n      .replace(\/[\\u0300-\\u036f]\/g, '');\n\n    \/*\n     * Se revisan primero las configuraciones más específicas\n     * para evitar confundir 2 sillones con 2 sillones + otomano.\n     *\/\n\n    if (\n      (\n        text.includes('4 sillones') ||\n        text.includes('4 modulos') ||\n        text.includes('4 piezas')\n      ) \u0026\u0026\n      (\n        text.includes('otomano') ||\n        text.includes('reposapies') ||\n        text.includes('reposapiés')\n      )\n    ){\n      return 'Sillón Estilo Nube Modular de 4 Sillones + Otomano';\n    }\n\n    if (\n      (\n        text.includes('3 sillones') ||\n        text.includes('3 modulos') ||\n        text.includes('3 piezas')\n      ) \u0026\u0026\n      (\n        text.includes('otomano') ||\n        text.includes('reposapies') ||\n        text.includes('reposapiés')\n      )\n    ){\n      return 'Sillón Estilo Nube Modular de 3 Sillones + Otomano';\n    }\n\n    if (\n      (\n        text.includes('2 sillones') ||\n        text.includes('2 modulos') ||\n        text.includes('2 piezas')\n      ) \u0026\u0026\n      (\n        text.includes('otomano') ||\n        text.includes('reposapies') ||\n        text.includes('reposapiés')\n      )\n    ){\n      return 'Sillón Estilo Nube Modular de 2 Sillones + Otomano';\n    }\n\n    if (\n      text.includes('4 sillones') ||\n      text.includes('4 modulos')\n    ){\n      return 'Sillón Estilo Nube Modular de 4 Sillones';\n    }\n\n    if (\n      text.includes('3 sillones') ||\n      text.includes('3 modulos')\n    ){\n      return 'Sillón Estilo Nube Modular de 3 Sillones';\n    }\n\n    if (\n      text.includes('2 sillones') ||\n      text.includes('2 modulos') ||\n      text.includes('doble')\n    ){\n      return 'Sillón Estilo Nube Modular de 2 Sillones';\n    }\n\n    if (\n      text.includes('1 sillon') ||\n      text.includes('individual') ||\n      text.includes('1 modulo')\n    ){\n      return 'Sillón Estilo Nube Modular Individual';\n    }\n\n    return 'Sillón Estilo Nube Modular';\n  }\n\n  const nameElement =\n    document.getElementById('lp-nube-name');\n\n  const cityElement =\n    document.getElementById('lp-nube-city');\n\n  const itemElement =\n    document.getElementById('lp-nube-item');\n\n  const boxElement =\n    document.getElementById('live-purchase-nube-box');\n\n  let lastName = '';\n  let lastCity = '';\n\n  \/* Evita mostrar el mismo nombre o ciudad dos veces seguidas *\/\n  function getRandomDifferent(list, previousValue){\n\n    if (!list.length) return '';\n\n    let value = list[\n      Math.floor(Math.random() * list.length)\n    ];\n\n    if (list.length \u003e 1){\n      while (value === previousValue){\n        value = list[\n          Math.floor(Math.random() * list.length)\n        ];\n      }\n    }\n\n    return value;\n  }\n\n  \/* Genera un nuevo aviso *\/\n  function nextNotice(){\n\n    if (\n      !nameElement ||\n      !cityElement ||\n      !itemElement ||\n      !boxElement\n    ) return;\n\n    const randomName =\n      getRandomDifferent(names, lastName);\n\n    const randomCity =\n      getRandomDifferent(cities, lastCity);\n\n    const selectedItem =\n      getDisplayItem();\n\n    lastName = randomName;\n    lastCity = randomCity;\n\n    boxElement.style.opacity = '0';\n\n    setTimeout(function(){\n      nameElement.textContent = randomName;\n      cityElement.textContent = randomCity;\n      itemElement.textContent = selectedItem;\n      boxElement.style.opacity = '1';\n    }, 180);\n  }\n\n  \/* Muestra el primer aviso *\/\n  nextNotice();\n\n  \/* Cambia el aviso cada 30 segundos *\/\n  setInterval(nextNotice, 30000);\n\n  \/* Actualiza al cambiar la variante *\/\n  document.addEventListener('change', function(event){\n\n    if (!event.target) return;\n\n    if (\n      event.target.matches('select[name=\"id\"]') ||\n      event.target.matches('input[name=\"id\"]') ||\n      event.target.matches(\n        'input[type=\"radio\"][name^=\"options\"]'\n      ) ||\n      event.target.matches(\n        'select[name^=\"options\"]'\n      )\n    ){\n      setTimeout(nextNotice, 80);\n    }\n  });\n\n  \/* Compatibilidad con temas Shopify *\/\n  document.addEventListener(\n    'variant:change',\n    function(){\n      setTimeout(nextNotice, 80);\n    }\n  );\n\n})();\n\u003c\/script\u003e\n\n\u003cstyle\u003e\n#live-purchase-nube-box{\n  transition:opacity .25s ease;\n}\n\n@media (max-width:480px){\n  #live-purchase-nube-box{\n    font-size:12.5px !important;\n    padding:9px 10px !important;\n  }\n}\n\u003c\/style\u003e\n\n\u003c!-- ====== \/Avisos de compra rotativos · Sillón Estilo Nube Modular · México ====== --\u003e\n\n\n\n\u003cp class=\"p1\"\u003e \u003c\/p\u003e\n\u003ch3\u003e\u003cspan class=\"s1\"\u003e🛋 \u003c\/span\u003e\u003c\/h3\u003e\n\u003ch3\u003e\u003cspan class=\"s1\"\u003eSofá Estilo Nube: Comodidad Instantánea y Elegancia Moderna\u003c\/span\u003e\u003c\/h3\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp class=\"p2\"\u003e\u003cspan class=\"s2\"\u003e\u003c\/span\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp class=\"p3\"\u003e\u003cspan class=\"s2\"\u003e✨ \u003c\/span\u003e\u003cspan class=\"s3\"\u003eRebote instantáneo, cero herramientas\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"p3\"\u003e\u003cspan class=\"s2\"\u003e¡Desempaca y disfruta! Nuestro sofá estilo nube se expande automáticamente a su tamaño completo en solo \u003c\/span\u003e\u003cspan class=\"s3\"\u003e48-72 horas\u003c\/span\u003e\u003cspan class=\"s2\"\u003e. Olvídate de montajes complicados: perfecto para casas, departamentos o espacios pequeños.\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"p2\"\u003e\u003cspan class=\"s2\"\u003e\u003c\/span\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp class=\"p3\"\u003e\u003cspan class=\"s2\"\u003e💎 \u003c\/span\u003e\u003cspan class=\"s3\"\u003eComodidad superior y soporte duradero\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"p3\"\u003e\u003cspan class=\"s2\"\u003eFabricado con \u003c\/span\u003e\u003cspan class=\"s3\"\u003eespuma de alta densidad 30D\u003c\/span\u003e\u003cspan class=\"s2\"\u003e y cojines de 15 cm, ofrece un soporte ergonómico para espalda, cintura y piernas. Se adapta a tu cuerpo, aliviando puntos de presión y asegurando una alineación óptima para relajarte todo el día.\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"p2\"\u003e\u003cspan class=\"s2\"\u003e\u003c\/span\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp class=\"p3\"\u003e\u003cspan class=\"s2\"\u003e🎨 \u003c\/span\u003e\u003cspan class=\"s3\"\u003eTapizado de lujo en pana premium\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"p3\"\u003e\u003cspan class=\"s2\"\u003eSu textura aterciopelada es \u003c\/span\u003e\u003cspan class=\"s3\"\u003esuave, resistente a manchas y amigable con mascotas\u003c\/span\u003e\u003cspan class=\"s2\"\u003e. El material transpirable mantiene frescura en verano y calidez en invierno. Sus tonos neutros combinan con estilos modernos, minimalistas o acogedores.\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"p2\"\u003e\u003cspan class=\"s2\"\u003e\u003c\/span\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp class=\"p3\"\u003e\u003cspan class=\"s2\"\u003e🔀 \u003c\/span\u003e\u003cspan class=\"s3\"\u003eFlexibilidad modular para cualquier espacio\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"p3\"\u003e\u003cspan class=\"s2\"\u003eConvierte tu sofá en chaise longue para ver películas, reorganízalo en sofá cama para invitados o adapta las secciones para reuniones. Sus módulos ligeros (~15 kg cada uno) facilitan moverlo y rediseñar tu sala cuando lo necesites.\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"p2\"\u003e\u003cspan class=\"s2\"\u003e\u003c\/span\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp class=\"p3\"\u003e\u003cspan class=\"s2\"\u003e📦 \u003c\/span\u003e\u003cspan class=\"s3\"\u003eEntrega práctica y segura\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"p3\"\u003e\u003cspan class=\"s2\"\u003eLlega en \u003c\/span\u003e\u003cspan class=\"s3\"\u003e2 cajas compactas\u003c\/span\u003e\u003cspan class=\"s2\"\u003e, fáciles de maniobrar por pasillos y puertas. Puede que las cajas lleguen en días distintos, pero siempre con envío asegurado y seguimiento.\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"p2\"\u003e\u003cspan class=\"s2\"\u003e\u003c\/span\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp class=\"p3\"\u003e\u003cspan class=\"s2\"\u003e🤝 \u003c\/span\u003e\u003cspan class=\"s3\"\u003eSoporte confiable 24\/7\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"p3\"\u003e\u003cspan class=\"s2\"\u003e¿Dudas o asistencia? Nuestro equipo de atención al cliente está disponible todo el tiempo para acompañarte antes, durante y después de tu compra.\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"p2\"\u003e\u003cspan class=\"s2\"\u003e\u003c\/span\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cp class=\"p3\"\u003e\u003cspan class=\"s2\"\u003e🚚 \u003c\/span\u003e\u003cspan class=\"s3\"\u003eEnvío gratis y compra protegida\u003c\/span\u003e\u003c\/p\u003e\n\u003cp class=\"p3\"\u003e\u003cspan class=\"s2\"\u003eCada pedido está respaldado por pagos seguros y garantía de satisfacción.\u003c\/span\u003e\u003c\/p\u003e\n\n\n\u003c!-- ====== Reseñas México · Sillón Estilo Nube Modular · Carrusel Compacto ====== --\u003e\n\u003cdiv id=\"reviews-nube-modular\" style=\"\n       --tiempo:4500ms;\n       font-family:'Jost',system-ui,-apple-system,'Segoe UI',Roboto,Arial,sans-serif;\n       margin:12px auto;\n       max-width:350px;\n       background:#FAF7F0;\n       padding:12px;\n       border-radius:10px;\n       border:1px solid #E8E1D4;\n       color:#26221C;\n       box-shadow:0 2px 8px rgba(35,81,125,0.06);\n     \"\u003e\n\n  \u003c!-- Encabezado --\u003e\n  \u003cdiv style=\"text-align:center;margin-bottom:8px;\"\u003e\n    \u003cdiv class=\"rg-promedio\" style=\"\n           display:inline-flex;\n           align-items:center;\n           gap:6px;\n           background:#FFFFFF;\n           border:1px solid #E8E1D4;\n           padding:4px 10px;\n           border-radius:999px;\n         \"\u003e\n\n      \u003cspan aria-hidden=\"true\" style=\"\n              color:#C0603A;\n              font-size:12px;\n              letter-spacing:.5px;\n            \"\u003e\n        ★★★★★\n      \u003c\/span\u003e\n\n      \u003cstrong style=\"font-size:11px;color:#26221C;\"\u003e\n        4.8 de 5\n      \u003c\/strong\u003e\n\n      \u003cspan style=\"font-size:10px;color:#6B7052;\"\u003e\n        (327 opiniones)\n      \u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003c!-- Título --\u003e\n  \u003ch2 style=\"\n        text-align:center;\n        margin:0 0 6px 0;\n        font-size:14px;\n        color:#26221C;\n        font-weight:600;\n      \"\u003e\n    Opiniones sobre el Sillón Estilo Nube Modular 🇲🇽\n  \u003c\/h2\u003e\n\n  \u003cdiv class=\"rg-slider\" style=\"\n         position:relative;\n         overflow:hidden;\n         border:1px solid #E8E1D4;\n         border-radius:8px;\n         background:#FFFFFF;\n       \"\u003e\n\n    \u003cdiv class=\"rg-track\" role=\"region\" aria-label=\"Opiniones de clientes del Sillón Estilo Nube Modular\" style=\"\n           display:flex;\n           transition:transform .5s ease;\n         \"\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- Flecha anterior --\u003e\n    \u003cbutton class=\"rg-prev\" type=\"button\" aria-label=\"Opinión anterior\" style=\"\n              position:absolute;\n              left:4px;\n              top:50%;\n              transform:translateY(-50%);\n              border:1px solid #E8E1D4;\n              background:#FAF7F0;\n              color:#23517D;\n              border-radius:999px;\n              width:24px;\n              height:24px;\n              box-shadow:0 2px 6px rgba(0,0,0,.08);\n              cursor:pointer;\n              font-size:14px;\n              line-height:1;\n              display:flex;\n              align-items:center;\n              justify-content:center;\n              z-index:2;\n            \"\u003e\n      ‹\n    \u003c\/button\u003e\n\n    \u003c!-- Flecha siguiente --\u003e\n    \u003cbutton class=\"rg-next\" type=\"button\" aria-label=\"Siguiente opinión\" style=\"\n              position:absolute;\n              right:4px;\n              top:50%;\n              transform:translateY(-50%);\n              border:1px solid #E8E1D4;\n              background:#FAF7F0;\n              color:#23517D;\n              border-radius:999px;\n              width:24px;\n              height:24px;\n              box-shadow:0 2px 6px rgba(0,0,0,.08);\n              cursor:pointer;\n              font-size:14px;\n              line-height:1;\n              display:flex;\n              align-items:center;\n              justify-content:center;\n              z-index:2;\n            \"\u003e\n      ›\n    \u003c\/button\u003e\n\n    \u003c!-- Puntos --\u003e\n    \u003cdiv class=\"rg-dots\" style=\"\n           display:flex;\n           gap:4px;\n           justify-content:center;\n           align-items:center;\n           padding:6px 8px;\n         \"\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cscript\u003e\n(function(){\n\n  const root = document.getElementById('reviews-nube-modular');\n\n  if (!root || root.dataset.initialized === 'true') return;\n  root.dataset.initialized = 'true';\n\n  const track = root.querySelector('.rg-track');\n  const dots = root.querySelector('.rg-dots');\n  const prevBtn = root.querySelector('.rg-prev');\n  const nextBtn = root.querySelector('.rg-next');\n\n  \/* ====== Opiniones México · Sillón Estilo Nube Modular ====== *\/\n  const reviews = [\n    {\n      name: \"Carlos H.\",\n      city: \"Ciudad de México\",\n      rating: 5,\n      text: \"Está muy cómodo y los módulos se pueden acomodar fácilmente según el espacio.\"\n    },\n    {\n      name: \"Mariana L.\",\n      city: \"Guadalajara, Jalisco\",\n      rating: 5,\n      text: \"Elegí la opción con otomano y me encantó. El color se ve igual que en las fotos.\"\n    },\n    {\n      name: \"José R.\",\n      city: \"Monterrey, Nuevo León\",\n      rating: 4,\n      text: \"Llegó bien protegido. Tardó un poco en recuperar su forma, pero después quedó excelente.\"\n    },\n    {\n      name: \"Fernanda M.\",\n      city: \"Puebla, Puebla\",\n      rating: 5,\n      text: \"Es amplio, suave y muy cómodo. Mi sala se ve mucho más moderna.\"\n    },\n    {\n      name: \"Miguel T.\",\n      city: \"Querétaro, Querétaro\",\n      rating: 5,\n      text: \"No necesité herramientas para acomodarlo. Los módulos son prácticos y se sienten firmes.\"\n    },\n    {\n      name: \"Alejandra S.\",\n      city: \"Mérida, Yucatán\",\n      rating: 5,\n      text: \"Compré la configuración de tres sillones con otomano y quedó perfecta en mi sala.\"\n    },\n    {\n      name: \"Luis G.\",\n      city: \"León, Guanajuato\",\n      rating: 4,\n      text: \"El envío llegó con seguimiento y todo venía bien empacado. Muy buena compra.\"\n    },\n    {\n      name: \"Daniela F.\",\n      city: \"Tijuana, Baja California\",\n      rating: 5,\n      text: \"Me gustó que puedo cambiar la distribución de los módulos cuando lo necesito.\"\n    }\n  ];\n\n  function stars(number){\n    return (\n      '\u003cspan style=\"color:#C0603A;\"\u003e' +\n      '★'.repeat(number) +\n      '\u003c\/span\u003e' +\n      '\u003cspan style=\"color:#D8D2C4;\"\u003e' +\n      '★'.repeat(5 - number) +\n      '\u003c\/span\u003e'\n    );\n  }\n\n  reviews.forEach(function(review, index){\n\n    const slide = document.createElement('article');\n\n    slide.style.cssText = `\n      min-width:100%;\n      padding:10px 34px;\n      background:#FFFFFF;\n      display:flex;\n      flex-direction:column;\n      justify-content:center;\n      font-size:11px;\n      line-height:1.35;\n      color:#26221C;\n      border-radius:6px;\n      box-sizing:border-box;\n    `;\n\n    slide.innerHTML = `\n      \u003cdiv style=\"\n        display:flex;\n        justify-content:space-between;\n        align-items:center;\n        gap:8px;\n        margin-bottom:4px;\n      \"\u003e\n        \u003cdiv aria-label=\"${review.rating} de 5 estrellas\"\u003e\n          ${stars(review.rating)}\n        \u003c\/div\u003e\n\n        \u003cdiv style=\"\n          font-weight:600;\n          color:#26221C;\n          font-size:10px;\n          text-align:right;\n        \"\u003e\n          ${review.name}\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cp style=\"\n        margin:0;\n        color:#4C463C;\n        font-size:10.5px;\n      \"\u003e\n        «${review.text}»\n      \u003c\/p\u003e\n\n      \u003cdiv style=\"\n        margin-top:5px;\n        font-size:8.5px;\n        color:#6B7052;\n        display:flex;\n        flex-wrap:wrap;\n        gap:4px 8px;\n      \"\u003e\n        \u003cspan\u003e✓ Compra verificada\u003c\/span\u003e\n        \u003cspan\u003e📍 ${review.city}\u003c\/span\u003e\n      \u003c\/div\u003e\n    `;\n\n    track.appendChild(slide);\n\n    const dot = document.createElement('button');\n\n    dot.type = 'button';\n    dot.setAttribute(\n      'aria-label',\n      'Ir a la opinión ' + (index + 1)\n    );\n\n    dot.style.cssText = `\n      width:5px;\n      height:5px;\n      border-radius:999px;\n      border:none;\n      background:#D8D2C4;\n      cursor:pointer;\n      padding:0;\n    `;\n\n    dots.appendChild(dot);\n  });\n\n  let currentIndex = 0;\n  let timer = null;\n\n  const total = reviews.length;\n  const dotElements = Array.from(dots.children);\n\n  function goTo(index){\n\n    currentIndex = (index + total) % total;\n\n    track.style.transform =\n      `translateX(-${currentIndex * 100}%)`;\n\n    dotElements.forEach(function(dot, dotIndex){\n      dot.style.background =\n        dotIndex === currentIndex\n          ? '#23517D'\n          : '#D8D2C4';\n    });\n  }\n\n  function stop(){\n    if (timer){\n      clearInterval(timer);\n      timer = null;\n    }\n  }\n\n  function start(){\n    stop();\n\n    timer = setInterval(function(){\n      goTo(currentIndex + 1);\n    }, 4500);\n  }\n\n  prevBtn.addEventListener('click', function(){\n    goTo(currentIndex - 1);\n    start();\n  });\n\n  nextBtn.addEventListener('click', function(){\n    goTo(currentIndex + 1);\n    start();\n  });\n\n  dotElements.forEach(function(dot, dotIndex){\n    dot.addEventListener('click', function(){\n      goTo(dotIndex);\n      start();\n    });\n  });\n\n  root.addEventListener('mouseenter', stop);\n  root.addEventListener('mouseleave', start);\n\n  root.addEventListener('touchstart', stop, {\n    passive:true\n  });\n\n  root.addEventListener('touchend', start, {\n    passive:true\n  });\n\n  goTo(0);\n  start();\n\n})();\n\u003c\/script\u003e\n\n\u003cstyle\u003e\n@media (max-width:480px){\n\n  #reviews-nube-modular .rg-prev,\n  #reviews-nube-modular .rg-next{\n    top:auto !important;\n    bottom:40px;\n    transform:none !important;\n  }\n}\n\u003c\/style\u003e\n\n\u003c!-- ====== \/Fin reseñas México · Sillón Estilo Nube Modular ====== --\u003e","brand":"Super-Ofertas-Online","offers":[{"title":"2  Sillones \/ Azul","offer_id":43899069104246,"sku":null,"price":1299.99,"currency_code":"MXN","in_stock":true},{"title":"2  Sillones \/ Gris","offer_id":43899069137014,"sku":null,"price":1299.99,"currency_code":"MXN","in_stock":true},{"title":"2  Sillones \/ Blanco","offer_id":43899069169782,"sku":null,"price":1299.99,"currency_code":"MXN","in_stock":true},{"title":"2  Sillones \/ Beige","offer_id":43899069202550,"sku":null,"price":1299.99,"currency_code":"MXN","in_stock":true},{"title":"2  Sillones \/ Negro","offer_id":43899069235318,"sku":null,"price":1299.99,"currency_code":"MXN","in_stock":true},{"title":"2 Sillones 1 Otomano \/ Azul","offer_id":43899069268086,"sku":null,"price":1699.99,"currency_code":"MXN","in_stock":true},{"title":"2 Sillones 1 Otomano \/ Gris","offer_id":43899069300854,"sku":null,"price":1699.99,"currency_code":"MXN","in_stock":true},{"title":"2 Sillones 1 Otomano \/ Blanco","offer_id":43899069333622,"sku":null,"price":1699.99,"currency_code":"MXN","in_stock":true},{"title":"2 Sillones 1 Otomano \/ Beige","offer_id":43899069366390,"sku":null,"price":1699.99,"currency_code":"MXN","in_stock":true},{"title":"2 Sillones 1 Otomano \/ Negro","offer_id":43899069399158,"sku":null,"price":1699.99,"currency_code":"MXN","in_stock":true},{"title":"3 Sillones 1 Otomano \/ Azul","offer_id":43899069431926,"sku":null,"price":1999.99,"currency_code":"MXN","in_stock":true},{"title":"3 Sillones 1 Otomano \/ Gris","offer_id":43899069464694,"sku":null,"price":1999.99,"currency_code":"MXN","in_stock":true},{"title":"3 Sillones 1 Otomano \/ Blanco","offer_id":43899069497462,"sku":null,"price":1999.99,"currency_code":"MXN","in_stock":true},{"title":"3 Sillones 1 Otomano \/ Beige","offer_id":43899069530230,"sku":null,"price":1999.99,"currency_code":"MXN","in_stock":true},{"title":"3 Sillones 1 Otomano \/ Negro","offer_id":43899069562998,"sku":null,"price":1999.99,"currency_code":"MXN","in_stock":true},{"title":"4 Sillones 1 Otomano \/ Azul","offer_id":43899069595766,"sku":null,"price":2499.99,"currency_code":"MXN","in_stock":true},{"title":"4 Sillones 1 Otomano \/ Gris","offer_id":43899069628534,"sku":null,"price":2499.99,"currency_code":"MXN","in_stock":true},{"title":"4 Sillones 1 Otomano \/ Blanco","offer_id":43899069661302,"sku":null,"price":2499.99,"currency_code":"MXN","in_stock":true},{"title":"4 Sillones 1 Otomano \/ Beige","offer_id":43899069694070,"sku":null,"price":2499.99,"currency_code":"MXN","in_stock":true},{"title":"4 Sillones 1 Otomano \/ Negro","offer_id":43899069726838,"sku":null,"price":2499.99,"currency_code":"MXN","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0711\/8297\/5094\/files\/CapturadePantalla2025-09-21ala_s_22.41.05.png?v=1784927276","url":"https:\/\/nimbos.store\/products\/sillon-estilo-nube-modular","provider":"NIMBO","version":"1.0","type":"link"}