{"product_id":"pack-de-6-limes-recip-one-1","title":"Pack de 6 limas Recip-One Silver - ROGIN","description":"\u003cdiv class=\"oofti-tier-offer\" data-product-handle=\"recip-one-rogin\" data-unit-price-ttc=\"22.80\"\u003e\n  \u003cdiv class=\"oofti-tier-offer__header\"\u003e\n    \u003cstrong\u003eOferta por cantidad\u003c\/strong\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"oofti-tier-offer__intro\"\u003e\n    Ahorra más según la cantidad pedida.\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"oofti-tier-offer__tiers\"\u003e\n    \u003cdiv class=\"oofti-tier-offer__tier\" data-tier=\"1\"\u003e\n      \u003cdiv class=\"oofti-tier-offer__tier-left\"\u003e\n        \u003cstrong\u003eCompra entre 5-9\u003c\/strong\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"oofti-tier-offer__tier-right\"\u003e\n        ahorra \u003cstrong\u003e5 %\u003c\/strong\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"oofti-tier-offer__tier\" data-tier=\"2\"\u003e\n      \u003cdiv class=\"oofti-tier-offer__tier-left\"\u003e\n        \u003cstrong\u003eCompra entre 10-49\u003c\/strong\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"oofti-tier-offer__tier-right\"\u003e\n        ahorra \u003cstrong\u003e9 %\u003c\/strong\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"oofti-tier-offer__tier\" data-tier=\"3\"\u003e\n      \u003cdiv class=\"oofti-tier-offer__tier-left\"\u003e\n        \u003cstrong\u003eCompra entre 50-100\u003c\/strong\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"oofti-tier-offer__tier-right\"\u003e\n        ahorra \u003cstrong\u003e13 %\u003c\/strong\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"oofti-tier-offer__note\"\u003e\n    Descuento visible al momento del pago.\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"oofti-tier-offer__progress\"\u003e\n    \u003cdiv class=\"oofti-tier-offer__progress-bar\" data-offer-bar\u003e\u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"oofti-tier-offer__status\" data-offer-status\u003e\n    Verificando la oferta…\n  \u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003cstyle\u003e\n  .oofti-tier-offer {\n    margin: 16px 0;\n    padding: 16px;\n    border: 1px solid #bfe7df;\n    border-radius: 12px;\n    background: #f6fffc;\n    font-family: inherit;\n  }\n\n  .oofti-tier-offer__header {\n    margin-bottom: 6px;\n    font-size: 16px;\n    line-height: 1.3;\n    color: #163342;\n  }\n\n  .oofti-tier-offer__intro {\n    font-size: 14px;\n    color: #163342;\n    margin-bottom: 12px;\n  }\n\n  .oofti-tier-offer__tiers {\n    display: flex;\n    flex-direction: column;\n    gap: 8px;\n    margin-bottom: 10px;\n  }\n\n  .oofti-tier-offer__tier {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    gap: 12px;\n    padding: 10px 12px;\n    border-radius: 10px;\n    background: #ffffff;\n    border: 1px solid #d9ece7;\n    font-size: 14px;\n    color: #163342;\n  }\n\n  .oofti-tier-offer__tier.is-active {\n    border-color: #39bfa7;\n    background: #ecfbf7;\n  }\n\n  .oofti-tier-offer__tier.is-reached {\n    border-color: #8ad8c7;\n    background: #f3fffb;\n  }\n\n  .oofti-tier-offer__note {\n    font-size: 13px;\n    color: #4f6b78;\n    margin-bottom: 12px;\n  }\n\n  .oofti-tier-offer__progress {\n    width: 100%;\n    height: 10px;\n    background: #dfeceb;\n    border-radius: 999px;\n    overflow: hidden;\n    margin-bottom: 10px;\n  }\n\n  .oofti-tier-offer__progress-bar {\n    height: 100%;\n    width: 0%;\n    border-radius: 999px;\n    background: #39bfa7;\n    transition: width 0.25s ease;\n  }\n\n  .oofti-tier-offer__status {\n    font-size: 14px;\n    color: #163342;\n  }\n\u003c\/style\u003e\n\n\u003cscript\u003e\n  (function() {\n    const container = document.querySelector('.oofti-tier-offer');\n    if (!container) return;\n\n    const productHandle = container.getAttribute('data-product-handle');\n    const unitPriceTTC = Number(container.getAttribute('data-unit-price-ttc')) || 22.8;\n\n    const statusEl = container.querySelector('[data-offer-status]');\n    const barEl = container.querySelector('[data-offer-bar]');\n    const tierEls = container.querySelectorAll('.oofti-tier-offer__tier');\n\n    const tiers = [\n      { min: 5, max: 9, discount: 5 },\n      { min: 10, max: 11, discount: 9 },\n      { min: 50, max: 100, discount: 13 }\n    ];\n\n    function formatEuro(value) {\n      return value.toLocaleString('fr-FR', {\n        style: 'currency',\n        currency: 'EUR'\n      });\n    }\n\n    function clearTierStates() {\n      tierEls.forEach(function(el) {\n        el.classList.remove('is-active');\n        el.classList.remove('is-reached');\n      });\n    }\n\n    function markTierState(qty) {\n      clearTierStates();\n\n      tierEls.forEach(function(el, index) {\n        const tier = tiers[index];\n        if (!tier) return;\n\n        if (qty \u003e= tier.min \u0026\u0026 qty \u003c= tier.max) {\n          el.classList.add('is-active');\n        } else if (qty \u003e tier.max) {\n          el.classList.add('is-reached');\n        }\n      });\n    }\n\n    function getCurrentTier(qty) {\n      return tiers.find(function(tier) {\n        return qty \u003e= tier.min \u0026\u0026 qty \u003c= tier.max;\n      });\n    }\n\n    function getNextTier(qty) {\n      return tiers.find(function(tier) {\n        return qty \u003c tier.min;\n      });\n    }\n\n    function updateProgress(qty) {\n      let progress = 0;\n\n      if (qty \u003c= 0) {\n        progress = 0;\n      } else if (qty \u003c 5) {\n        progress = (qty \/ 5) * 100;\n      } else if (qty \u003c 10) {\n        progress = 100;\n      } else if (qty \u003c 50) {\n        progress = 100;\n      } else {\n        progress = 100;\n      }\n\n      if (barEl) {\n        barEl.style.width = Math.min(progress, 100) + '%';\n      }\n    }\n\n    function updateUI(qty) {\n      markTierState(qty);\n      updateProgress(qty);\n\n      const currentTier = getCurrentTier(qty);\n      const nextTier = getNextTier(qty);\n\n      if (qty \u003c 5) {\n        const remaining = 5 - qty;\n        statusEl.innerHTML =\n          'Ajoutez encore \u003cstrong\u003e' + remaining + '\u003c\/strong\u003e unité' + (remaining \u003e 1 ? 's' : '') +\n          ' pour débloquer \u003cstrong\u003e5 %\u003c\/strong\u003e de remise.';\n        return;\n      }\n\n      if (currentTier) {\n        const unitAfter = unitPriceTTC * (1 - currentTier.discount \/ 100);\n        statusEl.innerHTML =\n          '✅ Offre active : \u003cstrong\u003e' + currentTier.discount + ' %\u003c\/strong\u003e de remise appliquée, soit \u003cstrong\u003e' +\n          formatEuro(unitAfter) + '\u003c\/strong\u003e TTC par unité.';\n        return;\n      }\n\n      if (qty \u003e= 12 \u0026\u0026 qty \u003c 50) {\n        const remaining = 50 - qty;\n        statusEl.innerHTML =\n          'Aucun palier promo entre \u003cstrong\u003e12\u003c\/strong\u003e et \u003cstrong\u003e49\u003c\/strong\u003e unités dans cette configuration. Ajoutez encore \u003cstrong\u003e' +\n          remaining + '\u003c\/strong\u003e unité' + (remaining \u003e 1 ? 's' : '') +\n          ' pour atteindre \u003cstrong\u003e13 %\u003c\/strong\u003e.';\n        return;\n      }\n\n      if (qty \u003e 100) {\n        statusEl.innerHTML =\n          '✅ Vous avez dépassé le palier affiché de \u003cstrong\u003e100\u003c\/strong\u003e unités. Vérifiez dans BOGOS si la remise doit continuer au-delà.';\n        return;\n      }\n\n      if (nextTier) {\n        const remaining = nextTier.min - qty;\n        statusEl.innerHTML =\n          'Ajoutez encore \u003cstrong\u003e' + remaining + '\u003c\/strong\u003e unité' + (remaining \u003e 1 ? 's' : '') +\n          ' pour atteindre \u003cstrong\u003e' + nextTier.discount + ' %\u003c\/strong\u003e de remise.';\n        return;\n      }\n\n      statusEl.innerHTML = 'Remise visible au moment du paiement.';\n    }\n\n    function itemMatchesProduct(item) {\n      if (!item) return false;\n\n      if (item.handle \u0026\u0026 item.handle === productHandle) {\n        return true;\n      }\n\n      if (item.url \u0026\u0026 item.url.indexOf('\/products\/' + productHandle) !== -1) {\n        return true;\n      }\n\n      return false;\n    }\n\n    async function refreshOffer() {\n      try {\n        const res = await fetch('\/cart.js', { credentials: 'same-origin' });\n        const cart = await res.json();\n\n        let totalQty = 0;\n\n        if (cart \u0026\u0026 cart.items \u0026\u0026 Array.isArray(cart.items)) {\n          cart.items.forEach(function(item) {\n            if (itemMatchesProduct(item)) {\n              totalQty += Number(item.quantity || 0);\n            }\n          });\n        }\n\n        updateUI(totalQty);\n      } catch (error) {\n        statusEl.textContent = 'Remise visible au moment du paiement.';\n      }\n    }\n\n    refreshOffer();\n\n    document.addEventListener('DOMContentLoaded', refreshOffer);\n    document.addEventListener('cart:refresh', refreshOffer);\n    document.addEventListener('ajaxProduct:added', refreshOffer);\n\n    document.addEventListener('click', function(e) {\n      const btn = e.target.closest('button[type=\"submit\"], [name=\"add\"], .shopify-payment-button__button');\n      if (!btn) return;\n      setTimeout(refreshOffer, 1200);\n    });\n\n    const cartDrawer = document.querySelector('cart-drawer, .drawer, .cart-drawer');\n    if (cartDrawer \u0026\u0026 window.MutationObserver) {\n      const observer = new MutationObserver(function() {\n        refreshOffer();\n      });\n      observer.observe(cartDrawer, { childList: true, subtree: true });\n    }\n  })();\n\u003c\/script\u003e\n\n   \u003cp\u003eHerramienta de reciprocidad para el tratamiento del conducto radicular. Instrumentos en blíster estéril, recomendados para un solo uso para ofrecer una eficacia de corte constante, reducir el riesgo de fracturas y disminuir los riesgos de contaminación cruzada.\u003c\/p\u003e\n\u003cp\u003e\u003cspan style=\"color: rgb(64, 64, 64);\"\u003e\u003cstrong\u003e\"Hicimos probar estas limas por numerosos endodoncistas exclusivos, y el veredicto es unánime: «Las Recip-One azules son comparables en todos los aspectos a las mejores limas del mercado, ofreciendo un rendimiento inigualable, una resistencia excepcional y una precisión incomparable.» Sus comentarios unánimes confirman la calidad superior y la fiabilidad indiscutible de este producto, diseñado para cumplir con las exigencias de las prácticas clínicas más rigurosas.\"\u003c\/strong\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003eLas limas Recip-One se presentan en tres versiones con características distintas adaptadas a las necesidades específicas de los profesionales:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eRecip-One Plata\u003c\/strong\u003e: Muy eficientes en términos de trabajo y eficacia de corte, están diseñadas para conductos rectos. Su rigidez las hace menos flexibles, pero su capacidad de corte es óptima en casos donde la curvatura del conducto es mínima.\u003c\/p\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eRecip-One Azules\u003c\/strong\u003e: Estas limas son extremadamente flexibles, lo que las hace ideales para conductos con curvaturas pronunciadas. Su flexibilidad permite una adaptación precisa a los contornos del conducto, minimizando los riesgos de desviación y fractura.\u003c\/p\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eRecip-One Doradas\u003c\/strong\u003e: Combinando flexibilidad y capacidad de corte, las limas doradas ofrecen un equilibrio perfecto entre trabajo y maniobrabilidad. Son ideales para conductos mixtos, es decir, aquellos que requieren tanto una buena capacidad de corte como cierta flexibilidad.\u003c\/p\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eCada tipo de lima está diseñada para responder a las especificidades de los tratamientos endodónticos, ofreciendo a los profesionales una elección adaptada a la complejidad de los conductos a tratar.\u003c\/p\u003e\n\u003cp\u003e \u003c\/p\u003e\n\u003cp\u003eLe ofrecemos en este producto las variantes  \u003c\/p\u003e\n\u003cp\u003eLongitud: 21, 25, 31 mm\u003c\/p\u003e\n\u003cp\u003eTipo#: 25 que ofrece 8% de conicidad,\u003cspan\u003e \u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan data-mce-fragment=\"1\"\u003e#\u003c\/span\u003e40\u003cspan\u003e \u003c\/span\u003e\u003cspan data-mce-fragment=\"1\"\u003eque ofrece 6\u003c\/span\u003e\u003cspan data-mce-fragment=\"1\"\u003e% de conicidad\u003c\/span\u003e,\u003c\/p\u003e\n\u003cp\u003e\u003cspan data-mce-fragment=\"1\"\u003e#\u003c\/span\u003e\u003cspan\u003e \u003c\/span\u003e50 \u003cspan data-mce-fragment=\"1\"\u003eque ofrece 5\u003c\/span\u003e\u003cspan data-mce-fragment=\"1\"\u003e% de conicidad\u003c\/span\u003e\u003cspan\u003e \u003c\/span\u003e\u003cbr\u003e\u003c\/p\u003e\n\u003cdiv style=\"text-align: left;\"\u003e\u003cimg style=\"float: none;\" alt=\"\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0335\/9873\/4474\/files\/reciponecross_100x100.jpg?v=1603209004\"\u003e\u003c\/div\u003e\n\u003cp\u003e\u003cspan\u003eSu forma en S (corte transversal) mejora su flexibilidad. \u003cstrong\u003eUn solo instrumento puede usarse para la preparación de un conducto radicular.\u003c\/strong\u003e\u003cbr\u003e\u003c\/span\u003e\u003c\/p\u003e\n\u003cp\u003e\u003cspan\u003eVendido en pack de 6 limas\u003c\/span\u003e\u003c\/p\u003e","brand":"Dental Coop","offers":[{"title":"L 21mm, #25","offer_id":38010429243544,"sku":"RECIPLIMNRM_21_25","price":19.0,"currency_code":"EUR","in_stock":true},{"title":"L 21mm #40","offer_id":38010429276312,"sku":"RECIPLIMNRM_21_40","price":19.0,"currency_code":"EUR","in_stock":true},{"title":"L 21mm #50","offer_id":38010429309080,"sku":"RECIPLIMNRM_21_50","price":19.0,"currency_code":"EUR","in_stock":true},{"title":"L 25mm, n.º 25","offer_id":38010429341848,"sku":"RECIPLIMNRM_25_25","price":19.0,"currency_code":"EUR","in_stock":true},{"title":"L 25mm, #40","offer_id":38010429374616,"sku":"RECIPLIMNRM_25_40","price":19.0,"currency_code":"EUR","in_stock":true},{"title":"L 25mm, #50","offer_id":38010429407384,"sku":"RECIPLIMNRM_25_50","price":19.0,"currency_code":"EUR","in_stock":true},{"title":"L 25 mm, n.º 25 n.º 40 n.º 50","offer_id":38010429440152,"sku":"RECIPLIMNRM_25_ASS","price":19.0,"currency_code":"EUR","in_stock":true},{"title":"L 31 mm, n.º 25","offer_id":38010429472920,"sku":"RECIPLIMNRM_31_25","price":19.0,"currency_code":"EUR","in_stock":true},{"title":"L 31mm, #40","offer_id":38010429505688,"sku":"RECIPLIMNRM_31_40","price":19.0,"currency_code":"EUR","in_stock":true},{"title":"L 31 mm, n.º 50","offer_id":38010429538456,"sku":"RECIPLIMNRM_31_50","price":19.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0335\/9873\/4474\/products\/recipfiles2_b509328a-b8b5-4c18-8495-9685099a87d6.jpg?v=1618931724","url":"https:\/\/oofti.fr\/es\/products\/pack-de-6-limes-recip-one-1","provider":"oofti.fr","version":"1.0","type":"link"}