{"product_id":"cepillo-magico-multiuso-con-50-toallitas-de-repuesto","title":"Cepillo Mágico Multiuso con 50 Toallitas de Repuesto","description":"\u003cstyle\u003e\n#mg3110{--mg:#08a56e;max-width:780px;margin:28px auto;color:#242a27;font-family:Arial,Helvetica,sans-serif;line-height:1.65}\n#mg3110 *{box-sizing:border-box}\n#mg3110 h2,#mg3110 h3,#mg3110 p{margin:0}\n#mg3110 .mg-label{color:var(--mg);font-size:12px;font-weight:700;letter-spacing:1.4px;text-transform:uppercase;margin-bottom:12px}\n#mg3110 h2{font-size:clamp(28px,5vw,40px);line-height:1.15;letter-spacing:-1px;margin-bottom:20px}\n#mg3110 h2 span{color:var(--mg)}\n#mg3110 p{font-size:16px;color:#505b55}\n#mg3110 p+p{margin-top:12px}\n#mg3110 .mg-image{margin:28px 0;overflow:hidden;border-radius:16px;background:#f3f8f5}\n#mg3110 .mg-image img{display:block;width:100%;height:auto}\n#mg3110 .mg-placeholder{min-height:250px;display:grid;place-content:center;padding:28px;text-align:center;border:1px dashed #a7cdbb;border-radius:16px;color:#527262;font-size:15px}\n#mg3110 .mg-benefit{margin:24px 0}\n#mg3110 h3{font-size:23px;line-height:1.25;margin-bottom:10px;letter-spacing:-.4px}\n#mg3110 .mg-pack{padding:24px;border-radius:16px;background:#edf8f2;margin:28px 0}\n#mg3110 .mg-button{width:100%;display:flex;align-items:center;justify-content:center;gap:12px;padding:18px 20px;border:0;border-radius:10px;background:var(--mg);color:#fff;cursor:pointer;font:700 17px Arial,Helvetica,sans-serif}\n#mg3110 .mg-button:hover{background:#07885b}\n#mg3110 .mg-button:disabled{opacity:.65;cursor:wait}\n#mg3110 .mg-button svg{width:22px;height:22px;flex-shrink:0}\n#mg3110 .mg-button svg:last-child{margin-left:auto}\n#mg3110 .mg-button span{flex:1;text-align:center}\n#mg3110 .mg-status{font-size:14px;margin-top:10px;min-height:22px}\n#mg3110 button:focus-visible,#mg3110 a:focus-visible{outline:3px solid #242a27;outline-offset:4px}\n#mg3110 .mg-cart{border:0;border-radius:16px;padding:26px;width:min(92vw,420px);color:#242a27;background:#fff}\n#mg3110 .mg-cart::backdrop{background:rgba(0,0,0,.4)}\n#mg3110 .mg-cart a{display:block;text-align:center;margin-top:18px;color:var(--mg);font-weight:700}\n#mg3110 .mg-close{display:block;margin:18px auto 0;background:none;border:0;text-decoration:underline;cursor:pointer;color:#505b55;font-size:15px}\n@media(max-width:600px){\n  #mg3110{margin:22px auto}\n  #mg3110 h3{font-size:21px}\n  #mg3110 .mg-pack{padding:20px}\n}\n\u003c\/style\u003e\n\u003csection id=\"mg3110\" data-sku=\"3110-0\"\u003e\n\u003cp class=\"mg-label\"\u003eCepillo multiuso con 50 toallitas\u003c\/p\u003e\n\u003ch2\u003eLimpiá la suciedad.\u003cbr\u003e\u003cspan\u003eDespués, soltala.\u003c\/span\u003e\n\u003c\/h2\u003e\n\u003cp\u003eLa grasa de la cocina ya da suficiente trabajo como para terminar lavando también el trapo.\u003c\/p\u003e\n\u003cp\u003eEste cepillo sostiene una toallita en su base para que puedas limpiar sujetándolo del mango. Cuando la toallita se ensucia, la reemplazás y seguís.\u003c\/p\u003e\n\u003cdiv class=\"mg-image\"\u003e\n\u003cdiv class=\"mg-placeholder\"\u003e\u003cimg src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0758\/3698\/1562\/files\/modelo4_47e53ea5-c0bc-4d27-bee8-d5aa7eeeac39.png?v=1794406379\" alt=\"\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"mg-benefit\"\u003e\n\u003ch3\u003eUn mango para limpiar con más comodidad.\u003c\/h3\u003e\n\u003cp\u003ePasalo sobre la superficie sin tener que sostener directamente la toallita sucia con la mano.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"mg-pack\"\u003e\n\u003ch3\u003eIncluye 50 toallitas de repuesto.\u003c\/h3\u003e\n\u003cp\u003eTenés recambios para empezar a usarlo y cambiar la toallita cuando lo necesites.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cbutton type=\"button\" class=\"mg-button\"\u003e \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" aria-hidden=\"true\"\u003e\n      \u003cpath d=\"M3 3h2l2.5 12h11l2-8H6\"\u003e\u003c\/path\u003e\n      \u003ccircle cx=\"9\" cy=\"20\" r=\"1\"\u003e\u003c\/circle\u003e\n      \u003ccircle cx=\"18\" cy=\"20\" r=\"1\"\u003e\u003c\/circle\u003e\n    \u003c\/svg\u003e \u003cspan\u003eAgregar al carrito\u003c\/span\u003e \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" aria-hidden=\"true\"\u003e\n      \u003cpath d=\"M4 12h15m-6-6 6 6-6 6\"\u003e\u003c\/path\u003e\n    \u003c\/svg\u003e \u003c\/button\u003e\n\u003cp class=\"mg-status\" role=\"status\" aria-live=\"polite\"\u003e \u003c\/p\u003e\n\u003cdialog class=\"mg-cart\" aria-labelledby=\"mg3110-cart-title\"\u003e\n\u003ch3 id=\"mg3110-cart-title\"\u003eAgregado al carrito\u003c\/h3\u003e\n\u003cp class=\"mg-cart-summary\"\u003e \u003c\/p\u003e\n\u003ca class=\"mg-cart-link\" href=\"\/cart\"\u003eVer mi carrito\u003c\/a\u003e \u003cbutton class=\"mg-close\" type=\"button\"\u003eSeguir mirando\u003c\/button\u003e \u003c\/dialog\u003e\u003c\/section\u003e\n\u003cscript\u003e\n(function(){\n  const box = document.getElementById('mg3110');\n  if (!box || box.dataset.ready) return;\n  box.dataset.ready = 'true';\n\n  const button = box.querySelector('.mg-button');\n  const label = button.querySelector('span');\n  const status = box.querySelector('.mg-status');\n  const modal = box.querySelector('dialog');\n  const root = window.Shopify?.routes?.root || '\/';\n\n  box.querySelector('.mg-cart-link').href = root + 'cart';\n\n  box.querySelector('.mg-close').addEventListener('click', () =\u003e {\n    modal.close();\n  });\n\n  modal.addEventListener('click', event =\u003e {\n    if (event.target !== modal) return;\n    const r = modal.getBoundingClientRect();\n    if (\n      event.clientX \u003c r.left ||\n      event.clientX \u003e r.right ||\n      event.clientY \u003c r.top ||\n      event.clientY \u003e r.bottom\n    ) modal.close();\n  });\n\n  async function json(url, options) {\n    const response = await fetch(url, options);\n    const data = await response.json();\n\n    if (!response.ok) {\n      throw new Error(\n        typeof data.description === 'string'\n          ? data.description\n          : 'No pudimos completar la operación. Intentá de nuevo.'\n      );\n    }\n\n    return data;\n  }\n\n  button.addEventListener('click', async () =\u003e {\n    button.disabled = true;\n    label.textContent = 'Agregando…';\n    status.textContent = '';\n\n    let added = false;\n\n    try {\n      const match = window.location.pathname.match(\/\\\/products\\\/([^\/]+)\/);\n\n      if (!match) {\n        throw new Error(\n          'Abrí la página del producto para agregarlo al carrito.'\n        );\n      }\n\n      const product = await json(\n        root + 'products\/' + match[1] + '.js'\n      );\n\n      const variant = product.variants.find(\n        v =\u003e String(v.sku).trim() === box.dataset.sku\n      );\n\n      if (!variant) {\n        throw new Error(\n          'No pudimos identificar este producto. Usá el botón principal de la página.'\n        );\n      }\n\n      if (!variant.available) {\n        throw new Error(\n          'Este producto está agotado por el momento.'\n        );\n      }\n\n      const drawer = document.querySelector('cart-drawer');\n\n      const sections =\n        drawer \u0026\u0026 typeof drawer.getSectionsToRender === 'function'\n          ? drawer.getSectionsToRender().map(s =\u003e s.id)\n          : [];\n\n      const payload = {\n        items: [{ id: variant.id, quantity: 1 }]\n      };\n\n      if (sections.length) {\n        payload.sections = sections;\n        payload.sections_url = window.location.pathname;\n      }\n\n      if (drawer \u0026\u0026 typeof drawer.setActiveElement === 'function') {\n        drawer.setActiveElement(button);\n      }\n\n      const result = await json(root + 'cart\/add.js', {\n        method: 'POST',\n        headers: { 'Content-Type': 'application\/json' },\n        body: JSON.stringify(payload)\n      });\n\n      added = true;\n      label.textContent = 'Agregado al carrito';\n      status.textContent =\n        'El cepillo con sus 50 toallitas ya está en tu carrito.';\n\n      let opened = false;\n\n      if (\n        drawer \u0026\u0026\n        typeof drawer.renderContents === 'function' \u0026\u0026\n        sections.length \u0026\u0026\n        sections.every(id =\u003e result.sections?.[id])\n      ) {\n        try {\n          drawer.classList.remove('is-empty');\n          drawer.renderContents(result);\n\n          if (typeof drawer.open === 'function') drawer.open();\n\n          opened = true;\n        } catch (e) {\n          opened = false;\n        }\n      }\n\n      if (!opened) {\n        let summary =\n          'El cepillo con 50 toallitas se agregó correctamente.';\n\n        try {\n          const cart = await json(root + 'cart.js');\n          summary +=\n            ' Tenés ' + cart.item_count + ' ' +\n            (cart.item_count === 1 ? 'artículo' : 'artículos') +\n            ' en tu carrito.';\n        } catch (e) {}\n\n        box.querySelector('.mg-cart-summary').textContent = summary;\n        modal.showModal();\n      }\n\n    } catch (error) {\n      status.textContent = added\n        ? 'El producto se agregó al carrito. Podés verlo desde el carrito de la tienda.'\n        : error.message;\n\n    } finally {\n      button.disabled = false;\n\n      if (!added) {\n        label.textContent = 'Agregar al carrito';\n      } else {\n        setTimeout(() =\u003e {\n          label.textContent = 'Agregar al carrito';\n        }, 2200);\n      }\n    }\n  });\n})();\n\u003c\/script\u003e","brand":"Clara (Yiwu Mayhome Import\u0026export Co.,ltd) (0.0 Unidades - 76,16 $)","offers":[{"title":"Default Title","offer_id":67951838789946,"sku":"3110-0","price":690.0,"currency_code":"UYU","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0758\/3698\/1562\/files\/Portada_c718ae0f-df3c-4732-a60a-e4f61a55913e.png?v=1794404625","url":"https:\/\/milgenialuruguay.com\/products\/cepillo-magico-multiuso-con-50-toallitas-de-repuesto","provider":"MilGenial Uruguay","version":"1.0","type":"link"}