{
  "version": 3,
  "sources": ["/cdn/shop/t/3/assets/ns-scripts.js?nocache=1794182773054"],
  "sourcesContent": ["/* Nube Seda \u2014 scripts propios (sin librer\u00EDas) */\n(function () {\n  var reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n  var finePointer = window.matchMedia && window.matchMedia('(hover: hover) and (pointer: fine)').matches;\n  var designMode = document.documentElement.classList.contains('shopify-design-mode');\n\n  function once(el, key) {\n    if (el.dataset[key]) return false;\n    el.dataset[key] = '1';\n    return true;\n  }\n\n  /* Divide un titular en palabras para revelarlas una a una */\n  function initSplit() {\n    document.querySelectorAll('[data-ns-split]').forEach(function (el) {\n      if (!once(el, 'nsSplit')) return;\n      var words = el.textContent.trim().split(/\\s+/);\n      el.setAttribute('aria-label', el.textContent.trim());\n      el.innerHTML = words.map(function (w, i) {\n        return '<span class=\"ns-w\" aria-hidden=\"true\"><span style=\"--i:' + i + '\">' + w.replace(/</g, '&lt;') + '</span></span>';\n      }).join(' ');\n    });\n  }\n\n  /* Entrada al hacer scroll */\n  var io;\n  function initReveal() {\n    var els = document.querySelectorAll('.ns-reveal, [data-ns-split]:not(.ns-banner [data-ns-split])');\n    if (!els.length) return;\n    if (reduce || designMode || !('IntersectionObserver' in window)) {\n      els.forEach(function (el) { el.classList.add('ns-visible'); });\n      return;\n    }\n    if (!io) {\n      io = new IntersectionObserver(function (entries) {\n        entries.forEach(function (e) {\n          if (e.isIntersecting) { e.target.classList.add('ns-visible'); io.unobserve(e.target); }\n        });\n      }, { threshold: 0.14, rootMargin: '0px 0px -40px 0px' });\n    }\n    els.forEach(function (el) {\n      if (el.classList.contains('ns-visible')) return;\n      var d = el.getAttribute('data-ns-delay');\n      if (d) el.style.transitionDelay = d + 'ms';\n      io.observe(el);\n    });\n  }\n\n  /* Intro del banner de apertura */\n  function initIntro() {\n    document.querySelectorAll('[data-ns-intro]').forEach(function (el) {\n      if (!once(el, 'nsIntro')) return;\n      if (reduce || designMode) { el.classList.add('is-in'); return; }\n      var img = el.querySelector('img');\n      var go = function () { requestAnimationFrame(function () { el.classList.add('is-in'); }); };\n      if (img && !img.complete) { img.addEventListener('load', go, { once: true }); setTimeout(go, 1200); } else { go(); }\n    });\n  }\n\n  /* Parallax suave (solo transform) */\n  var parallaxEls = [];\n  var ticking = false;\n  function updateParallax() {\n    var vh = window.innerHeight;\n    parallaxEls.forEach(function (el) {\n      var r = el.parentElement.getBoundingClientRect();\n      if (r.bottom < -100 || r.top > vh + 100) return;\n      var f = parseFloat(el.getAttribute('data-ns-parallax')) || 0;\n      var center = r.top + r.height / 2 - vh / 2;\n      el.style.transform = 'translate3d(0,' + (center * -f).toFixed(1) + 'px,0)';\n    });\n    ticking = false;\n  }\n  function initParallax() {\n    if (reduce) return;\n    parallaxEls = Array.prototype.slice.call(document.querySelectorAll('[data-ns-parallax]'));\n    if (!parallaxEls.length) return;\n    if (!window.__nsParallax) {\n      window.__nsParallax = true;\n      window.addEventListener('scroll', function () {\n        if (!ticking) { ticking = true; requestAnimationFrame(updateParallax); }\n      }, { passive: true });\n      window.addEventListener('resize', updateParallax);\n    }\n    updateParallax();\n  }\n\n  /* Inclinaci\u00F3n 3D de tarjetas al pasar el rat\u00F3n */\n  function initTilt() {\n    if (reduce || !finePointer) return;\n    document.querySelectorAll('[data-ns-tilt]').forEach(function (card) {\n      if (!once(card, 'nsTilt')) return;\n      var max = parseFloat(card.getAttribute('data-ns-tilt')) || 4;\n      card.addEventListener('pointermove', function (e) {\n        var r = card.getBoundingClientRect();\n        var x = (e.clientX - r.left) / r.width - 0.5;\n        var y = (e.clientY - r.top) / r.height - 0.5;\n        card.style.setProperty('--ry', (x * max).toFixed(2) + 'deg');\n        card.style.setProperty('--rx', (-y * max).toFixed(2) + 'deg');\n      });\n      card.addEventListener('pointerleave', function () {\n        card.style.setProperty('--ry', '0deg');\n        card.style.setProperty('--rx', '0deg');\n      });\n    });\n  }\n\n  /* Escena de pasos: la foto cambia seg\u00FAn el paso que se lee */\n  function initScrolly() {\n    document.querySelectorAll('[data-ns-scrolly]').forEach(function (root) {\n      if (!once(root, 'nsScrolly')) return;\n      var pasos = Array.prototype.slice.call(root.querySelectorAll('[data-ns-paso]'));\n      var imgs = Array.prototype.slice.call(root.querySelectorAll('[data-ns-paso-img]'));\n      var badge = root.querySelector('[data-ns-paso-badge]');\n      if (!pasos.length) return;\n      function set(i) {\n        pasos.forEach(function (p, k) { p.classList.toggle('is-active', k === i); });\n        imgs.forEach(function (m, k) { m.classList.toggle('is-active', k === i); });\n        root.style.setProperty('--ns-progreso', String((i + 1) / pasos.length));\n        if (badge) badge.textContent = (i + 1) + ' / ' + pasos.length;\n      }\n      set(0);\n      if (!('IntersectionObserver' in window)) return;\n      var obs = new IntersectionObserver(function (entries) {\n        entries.forEach(function (e) { if (e.isIntersecting) set(pasos.indexOf(e.target)); });\n      }, { rootMargin: '-45% 0px -45% 0px' });\n      pasos.forEach(function (p) { obs.observe(p); });\n    });\n  }\n\n  /* Acorde\u00F3n con animaci\u00F3n de altura.\n     En ordenador la respuesta se abre sola al pasar el rat\u00F3n por la pregunta; en m\u00F3vil, al tocarla. */\n  function initAcordeon() {\n    /* Solo UNA pregunta abierta a la vez: al abrir una (con el rat\u00F3n o tocando) se cierra la anterior. */\n    document.querySelectorAll('[data-ns-acordeon]').forEach(function (lista) {\n      if (!once(lista, 'nsAcc')) return;\n      var items = [];\n      var bloqueo = 0;          // hasta cu\u00E1ndo ignoramos el rat\u00F3n (mientras se mueve la lista)\n      var px = -9, py = -9;     // d\u00F3nde estaba el rat\u00F3n en el \u00FAltimo cambio\n      var ux = -9, uy = -9;     // \u00FAltima posici\u00F3n conocida del rat\u00F3n\n      function abrir(it) {\n        if (it.abierto) return;\n        it.abierto = true;\n        it.tAbierto = performance.now();\n        var desde = 0;\n        if (it.an) { desde = it.c.getBoundingClientRect().height; it.an.cancel(); it.an = null; }\n        it.d.classList.remove('is-cerrando');\n        it.d.open = true;\n        if (!it.anima) return;\n        var hasta = it.c.scrollHeight;\n        var b = it.an = it.c.animate([{ height: desde + 'px', opacity: desde ? 0.6 : 0 }, { height: hasta + 'px', opacity: 1 }], { duration: 380, easing: 'cubic-bezier(.22,1,.36,1)' });\n        b.onfinish = function () { if (it.an === b) it.an = null; };\n      }\n      function cerrar(it) {\n        if (!it.abierto) return;\n        it.abierto = false;\n        if (!it.anima) { it.d.open = false; return; }\n        var desde = it.c.getBoundingClientRect().height;\n        if (it.an) { it.an.cancel(); it.an = null; }\n        it.d.classList.add('is-cerrando');\n        var a = it.an = it.c.animate([{ height: desde + 'px', opacity: 1 }, { height: '0px', opacity: 0 }], { duration: 300, easing: 'cubic-bezier(.4,0,.2,1)' });\n        a.onfinish = function () { if (it.an !== a) return; it.an = null; it.d.open = false; it.d.classList.remove('is-cerrando'); };\n      }\n      function soloEste(it) {\n        items.forEach(function (o) { if (o !== it) cerrar(o); });\n        abrir(it);\n        bloqueo = performance.now() + 420;\n      }\n      lista.querySelectorAll('details').forEach(function (d) {\n        var s = d.querySelector('summary');\n        var c = d.querySelector('.ns-faq__respuesta');\n        if (!s || !c) return;\n        var it = { d: d, c: c, an: null, abierto: d.open, tAbierto: 0, anima: !reduce && !!c.animate, t: null, pausa: false };\n        items.push(it);\n        s.addEventListener('click', function (e) {\n          e.preventDefault();\n          clearTimeout(it.t);\n          if (it.abierto) {\n            // si se acaba de abrir sola al pasar el rat\u00F3n, el clic no la cierra\n            if (performance.now() - it.tAbierto < 700) return;\n            it.pausa = true; // la cerr\u00F3 ella: no se reabre hasta que el rat\u00F3n salga y vuelva\n            cerrar(it);\n          } else {\n            soloEste(it);\n          }\n        });\n        if (designMode || !finePointer) return;\n        function intentar(e) {\n          if (it.abierto || it.pausa) return;\n          // el rat\u00F3n tiene que haberse movido de verdad (no vale que la lista se mueva debajo de \u00E9l)\n          if (Math.abs(e.clientX - px) < 3 && Math.abs(e.clientY - py) < 3) return;\n          if (performance.now() < bloqueo) return;\n          if (it.t) return;\n          it.t = setTimeout(function () {\n            it.t = null;\n            if (!d.matches(':hover')) return;\n            px = ux; py = uy;\n            soloEste(it);\n          }, 110); // peque\u00F1a pausa para no abrir al pasar de largo\n        }\n        d.addEventListener('mouseenter', function (e) { ux = e.clientX; uy = e.clientY; intentar(e); });\n        d.addEventListener('mousemove', function (e) { ux = e.clientX; uy = e.clientY; intentar(e); });\n        d.addEventListener('mouseleave', function () { clearTimeout(it.t); it.t = null; it.pausa = false; });\n      });\n    });\n  }\n\n  /* Descripci\u00F3n del producto: se ve el inicio. En ordenador se abre al pasar el rat\u00F3n y se cierra al quitarlo;\n     en m\u00F3vil se abre sola al llegar a ella. El bot\u00F3n sirve siempre. */\n  function initDescripcion() {\n    document.querySelectorAll('[data-ns-desc]').forEach(function (el) {\n      if (!once(el, 'nsDesc')) return;\n      var cuerpo = el.querySelector('[data-ns-desc-cuerpo]');\n      var boton = el.querySelector('[data-ns-desc-boton]');\n      var texto = el.querySelector('[data-ns-desc-texto]');\n      if (!cuerpo || !boton) return;\n      var abierta = false, manual = false;\n      var marcado = false, anim = null;\n      function poner(abrir) {\n        if (abrir === abierta) return;\n        abierta = abrir;\n        var desde = cuerpo.getBoundingClientRect().height;\n        var contenido = cuerpo.firstElementChild;\n        if (abrir && !marcado && contenido && !reduce) {\n          // lo que no se ve\u00EDa en la vista previa entra poco a poco\n          marcado = true;\n          var lim = (parseFloat(getComputedStyle(el).getPropertyValue('--ns-desc-previa')) || 168) - 24, k = 0;\n          Array.prototype.forEach.call(contenido.children, function (c) {\n            if (c.offsetTop - cuerpo.offsetTop > lim) { c.classList.add('ns-desc__nuevo'); c.style.setProperty('--i', String(Math.min(k++, 14))); }\n          });\n          void contenido.offsetWidth;\n        }\n        if (!abrir && marcado && contenido) {\n          // al cerrar, la vista previa vuelve a verse igual que al principio\n          Array.prototype.forEach.call(contenido.children, function (c) { c.classList.remove('ns-desc__nuevo'); });\n          marcado = false;\n        }\n        var r0 = el.getBoundingClientRect();\n        el.classList.toggle('is-abierta', abrir);\n        boton.setAttribute('aria-expanded', abrir ? 'true' : 'false');\n        if (texto) texto.textContent = texto.getAttribute(abrir ? 'data-menos' : 'data-mas');\n        if (anim) { anim.cancel(); anim = null; }\n        cuerpo.style.maxHeight = 'none';\n        var hasta = abrir ? cuerpo.scrollHeight : parseFloat(getComputedStyle(el).getPropertyValue('--ns-desc-previa')) || 168;\n        cuerpo.style.maxHeight = abrir ? 'none' : '';\n        if (!abrir && r0.top < 0 && r0.bottom <= window.innerHeight) {\n          // La clienta ya va leyendo m\u00E1s abajo: se cierra de una y lo que est\u00E1 mirando no se mueve\n          var salto = el.getBoundingClientRect().bottom - r0.bottom;\n          if (Math.abs(salto) > 1) window.scrollBy({ top: salto, left: 0, behavior: 'instant' });\n          return;\n        }\n        if (reduce || !cuerpo.animate) return;\n        var a = anim = cuerpo.animate([{ maxHeight: desde + 'px' }, { maxHeight: hasta + 'px' }], { duration: abrir ? 900 : 600, easing: 'cubic-bezier(.22,1,.36,1)' });\n        a.onfinish = function () { if (anim === a) anim = null; };\n        if (!abrir && r0.top < 0) window.scrollTo({ top: window.scrollY + r0.top - 120, behavior: 'smooth' });\n      }\n      boton.addEventListener('click', function () { manual = true; clearTimeout(tHover); poner(!abierta); });\n      if (designMode) return;\n      var tHover = null;\n      if (finePointer) {\n        // Ordenador: se abre al pasar el rat\u00F3n y se vuelve a cerrar al quitarlo\n        el.addEventListener('mouseenter', function () {\n          clearTimeout(tHover);\n          if (manual) return; // acaba de usar el bot\u00F3n: se respeta hasta que el rat\u00F3n salga\n          tHover = setTimeout(function () { poner(true); }, 150);\n        });\n        el.addEventListener('mouseleave', function () {\n          clearTimeout(tHover);\n          manual = false;\n          tHover = setTimeout(function () { poner(false); }, 260);\n        });\n        return;\n      }\n      if ('IntersectionObserver' in window) {\n        var io = new IntersectionObserver(function (entries) {\n          entries.forEach(function (en) {\n            if (!en.isIntersecting) return;\n            io.disconnect();\n            setTimeout(function () { if (!manual) poner(true); }, 450); // deja ver la vista previa un momento\n          });\n        }, { rootMargin: '0px 0px -38% 0px', threshold: 0.2 });\n        io.observe(el);\n      }\n    });\n  }\n\n  /* Brillo que sigue al cursor en el cierre */\n  function initGlow() {\n    if (reduce || !finePointer) return;\n    document.querySelectorAll('[data-ns-glow]').forEach(function (el) {\n      if (!once(el, 'nsGlow')) return;\n      el.addEventListener('pointermove', function (e) {\n        var r = el.getBoundingClientRect();\n        var x = (e.clientX - r.left) / r.width, y = (e.clientY - r.top) / r.height;\n        el.style.setProperty('--mx', (x * 100).toFixed(1) + '%');\n        el.style.setProperty('--my', (y * 100).toFixed(1) + '%');\n        // de -1 a 1: el pase de spa se inclina un poco hacia el rat\u00F3n\n        el.style.setProperty('--gx', Math.max(-1, Math.min(1, x * 2 - 1)).toFixed(3));\n        el.style.setProperty('--gy', Math.max(-1, Math.min(1, y * 2 - 1)).toFixed(3));\n      });\n      el.addEventListener('pointerleave', function () { el.style.setProperty('--gx', '0'); el.style.setProperty('--gy', '0'); });\n    });\n  }\n\n  /* Galer\u00EDa de producto */\n  /* Galer\u00EDa del producto: carrusel con todas las fotos (dedo, flechas, puntos y miniaturas) */\n  function initGaleria() {\n    document.querySelectorAll('[data-ns-galeria]').forEach(function (g) {\n      if (!once(g, 'nsGal')) return;\n      var pista = g.querySelector('[data-ns-pista-galeria]');\n      if (!pista) return;\n      var total = pista.children.length, actual = 0, espera;\n      var minis = Array.prototype.slice.call(g.querySelectorAll('[data-ns-mini]'));\n      var puntos = Array.prototype.slice.call(g.querySelectorAll('.ns-galeria__puntos span'));\n      var num = g.querySelector('[data-ns-gal-num]');\n      var filaMinis = g.querySelector('.ns-galeria__miniaturas');\n      g.setAttribute('data-indice', '0');\n      function marcar(i) {\n        actual = i;\n        g.setAttribute('data-indice', String(i));\n        minis.forEach(function (b, k) { b.setAttribute('aria-current', k === i ? 'true' : 'false'); });\n        puntos.forEach(function (p, k) { p.classList.toggle('is-activo', k === i); });\n        if (num) num.textContent = String(i + 1);\n        var mini = minis[i];\n        if (mini && filaMinis && filaMinis.scrollWidth > filaMinis.clientWidth) {\n          filaMinis.scrollTo({ left: mini.offsetLeft - filaMinis.clientWidth / 2 + mini.offsetWidth / 2, behavior: reduce ? 'auto' : 'smooth' });\n        }\n      }\n      function ir(i) {\n        i = (i + total) % total;\n        pista.scrollTo({ left: i * pista.clientWidth, behavior: reduce ? 'auto' : 'smooth' });\n        marcar(i);\n      }\n      pista.addEventListener('scroll', function () {\n        clearTimeout(espera);\n        espera = setTimeout(function () { var i = Math.round(pista.scrollLeft / Math.max(1, pista.clientWidth)); if (i !== actual) marcar(i); }, 60);\n      }, { passive: true });\n      minis.forEach(function (b, k) { b.addEventListener('click', function () { ir(k); }); });\n      var prev = g.querySelector('[data-ns-gal-prev]'), next = g.querySelector('[data-ns-gal-next]');\n      if (prev) prev.addEventListener('click', function (e) { e.stopPropagation(); ir(actual - 1); });\n      if (next) next.addEventListener('click', function (e) { e.stopPropagation(); ir(actual + 1); });\n      pista.addEventListener('keydown', function (e) {\n        if (e.key === 'ArrowLeft') { e.preventDefault(); ir(actual - 1); }\n        if (e.key === 'ArrowRight') { e.preventDefault(); ir(actual + 1); }\n      });\n      window.addEventListener('resize', function () { pista.scrollLeft = actual * pista.clientWidth; });\n      // las dem\u00E1s fotos se precargan cuando la p\u00E1gina ya carg\u00F3 (o al primer toque), para que no aparezcan en blanco al deslizar\n      var precargar = function () { pista.querySelectorAll('img[loading=\"lazy\"]').forEach(function (img) { img.loading = 'eager'; }); };\n      if (document.readyState === 'complete') setTimeout(precargar, 600); else window.addEventListener('load', function () { setTimeout(precargar, 600); });\n      ['pointerdown', 'touchstart', 'scroll'].forEach(function (ev) { pista.addEventListener(ev, precargar, { once: true, passive: true }); });\n    });\n  }\n\n  function formatMoney(cents, fmt) {\n    var n = (cents / 100).toFixed(0).replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.');\n    return (fmt || '${{amount_no_decimals_with_comma_separator}}').replace(/\\{\\{\\s*\\w+\\s*\\}\\}/, n);\n  }\n\n  /* Variantes del producto */\n  function initVariantes() {\n    document.querySelectorAll('[data-ns-producto]').forEach(function (root) {\n      if (!once(root, 'nsVar')) return;\n      var dataEl = root.querySelector('[data-ns-variantes-json]');\n      if (!dataEl) return;\n      var variantes;\n      try { variantes = JSON.parse(dataEl.textContent); } catch (e) { return; }\n      var fmt = root.getAttribute('data-money-format');\n      var idInput = root.querySelector('input[name=\"id\"]');\n      var btn = root.querySelector('[data-ns-boton]');\n      var actual = root.querySelectorAll('[data-ns-precio-actual]');\n      var antes = root.querySelectorAll('[data-ns-precio-antes]');\n      var textoAgotado = root.getAttribute('data-texto-agotado');\n      var textoBoton = btn ? btn.getAttribute('data-texto') : '';\n      function actualizar() {\n        var sel = [];\n        root.querySelectorAll('[data-ns-opcion]').forEach(function (fs) {\n          var c = fs.querySelector('input:checked');\n          sel.push(c ? c.value : null);\n        });\n        var v = variantes.find(function (x) { return x.options.every(function (o, i) { return o === sel[i]; }); });\n        if (!v) return;\n        if (idInput) idInput.value = v.id;\n        actual.forEach(function (el) { el.textContent = formatMoney(v.price, fmt); });\n        antes.forEach(function (el) {\n          if (v.compare_at_price && v.compare_at_price > v.price) { el.textContent = formatMoney(v.compare_at_price, fmt); el.hidden = false; }\n          else { el.hidden = true; }\n        });\n        if (btn) { btn.disabled = !v.available; btn.querySelector('span').textContent = v.available ? textoBoton : textoAgotado; }\n      }\n      root.querySelectorAll('[data-ns-opcion] input').forEach(function (i) { i.addEventListener('change', actualizar); });\n    });\n  }\n\n  /* Barra de compra fija en m\u00F3vil */\n  function initBarraMovil() {\n    var barra = document.querySelector('[data-ns-barra-movil]');\n    var form = document.querySelector('[data-ns-form-principal]');\n    if (!barra || !form || !('IntersectionObserver' in window) || !once(barra, 'nsBarra')) return;\n    var obs = new IntersectionObserver(function (entries) {\n      entries.forEach(function (e) { barra.classList.toggle('ns-visible', !e.isIntersecting && e.boundingClientRect.top < 0); });\n    });\n    obs.observe(form);\n    var b = barra.querySelector('button');\n    if (b) b.addEventListener('click', function () {\n      var sub = form.querySelector('[data-ns-boton]');\n      if (sub && !sub.disabled) sub.click();\n    });\n  }\n\n  /* =========================================================\n     ESCENAS AL HACER SCROLL (estilo Apple)\n     Un \u00FAnico bucle requestAnimationFrame actualiza todas.\n     ========================================================= */\n  var escenas = [], frases = [], horizontales = [];\n  var pildoras = [];\n  var scrollTick = false;\n  var esMovil = function () { return window.innerWidth < 750; };\n  function clamp(v, a, b) { return Math.max(a, Math.min(b, v)); }\n\n  function actualizarEscenas() {\n    var vh = window.innerHeight;\n    escenas.forEach(function (el) {\n      var r = el.getBoundingClientRect();\n      if (r.bottom < -vh || r.top > vh * 2) return;\n      var total = r.height - vh;\n      var p = total > 0 ? clamp(-r.top / total, 0, 1) : clamp((vh - r.top) / (vh + r.height), 0, 1);\n      el.style.setProperty('--p', p.toFixed(4));\n      el.classList.toggle('is-avanzada', p > 0.3); // el texto ya se desvaneci\u00F3: que no reciba clics\n      el.querySelectorAll('[data-ns-umbral]').forEach(function (c) {\n        c.classList.toggle('is-on', p >= parseFloat(c.getAttribute('data-ns-umbral')));\n      });\n    });\n    frases.forEach(function (f) {\n      var r = f.el.getBoundingClientRect();\n      if (r.bottom < -vh || r.top > vh * 2) return;\n      var p = clamp((vh * 0.82 - r.top) / (r.height + vh * 0.25), 0, 1);\n      var n = Math.round(p * f.palabras.length * 1.08);\n      f.palabras.forEach(function (w, i) { w.classList.toggle('is-on', i < n); });\n    });\n    horizontales.forEach(function (h) {\n      if (esMovil()) { h.pista.style.transform = ''; return; }\n      var r = h.el.getBoundingClientRect();\n      var total = r.height - vh;\n      var p = total > 0 ? clamp(-r.top / total, 0, 1) : 0;\n      h.pista.style.transform = 'translate3d(' + (-p * h.sobra).toFixed(1) + 'px,0,0)';\n      h.el.style.setProperty('--p', p.toFixed(4));\n    });\n    /* Bot\u00F3n flotante: entra en cuanto la compra de la apertura empieza a desvanecerse,\n       as\u00ED la opci\u00F3n de comprar nunca desaparece al bajar */\n    var apertura = document.querySelector('.ns-ah');\n    var pApertura = apertura ? parseFloat(apertura.style.getPropertyValue('--p')) || 0 : 0;\n    var formPrincipal = document.querySelector('[data-ns-form-principal]');\n    pildoras.forEach(function (pl) {\n      var pasado;\n      var ocultar = false;\n      if (apertura) pasado = pApertura > 0.15 || apertura.getBoundingClientRect().bottom < vh * 0.5;\n      else if (formPrincipal) {\n        // p\u00E1gina de compra: aparece en cuanto el bot\u00F3n principal sale de la pantalla y ya no se va\n        var rf = formPrincipal.getBoundingClientRect();\n        pasado = rf.bottom < 0 || rf.top > vh;\n      } else pasado = window.scrollY > vh * 0.5;\n      document.querySelectorAll('[data-ns-ocultar-pildora]').forEach(function (z) {\n        var rz = z.getBoundingClientRect();\n        if (rz.top < vh && rz.bottom > 0) ocultar = true;\n      });\n      pl.classList.toggle('is-on', pasado && !ocultar);\n    });\n    scrollTick = false;\n  }\n  /* Apertura: el producto empieza en su hueco (junto al bot\u00F3n de compra)\n     y al bajar viaja al centro creciendo hasta su tama\u00F1o final. */\n  function offsetRel(nodo, ancestro) {\n    var x = 0, y = 0;\n    while (nodo && nodo !== ancestro) { x += nodo.offsetLeft; y += nodo.offsetTop; nodo = nodo.offsetParent; }\n    return { x: x, y: y };\n  }\n  function medirAperturas() {\n    // La portada ya trae esta medici\u00F3n en l\u00EDnea (para que el cepillo se vea al instante); se reutiliza\n    if (typeof window.__nsMedirAperturas === 'function') return window.__nsMedirAperturas();\n    var vh = window.innerHeight, vw = window.innerWidth;\n    document.querySelectorAll('.ns-ah').forEach(function (el) {\n      var st = el.querySelector('.ns-ah__sticky');\n      if (!st) return;\n      var huecos = el.querySelectorAll('.ns-ah__hueco');\n      var hueco = null;\n      huecos.forEach(function (h) { if (!hueco && h.offsetWidth > 0 && h.offsetHeight > 0) hueco = h; });\n      var cabecera = Math.max(0, Math.min(220, el.getBoundingClientRect().top + window.scrollY));\n      st.style.setProperty('--ns-head', cabecera.toFixed(0) + 'px');\n      var max = parseFloat(getComputedStyle(el).getPropertyValue('--ns-ah-prod')) || 560;\n      var sFin = Math.min(max, vh * (vw < 750 ? 0.48 : 0.62), vw * 0.88);\n      st.style.setProperty('--s', sFin.toFixed(0) + 'px');\n      if (!hueco) { el.classList.add('is-medido'); return; }\n      var o = offsetRel(hueco, st);\n      var hw = hueco.offsetWidth, hh = hueco.offsetHeight;\n      var s0 = vw < 990 ? hh : Math.min(hw, hh);\n      var x0 = o.x + hw / 2 - s0 / 2;\n      var y0 = o.y + hh / 2 - s0 / 2;\n      var anchoSticky = st.clientWidth || vw;\n      st.style.setProperty('--ns-s0', s0.toFixed(0) + 'px');\n      st.style.setProperty('--ns-x0', x0.toFixed(0) + 'px');\n      st.style.setProperty('--ns-y0', y0.toFixed(0) + 'px');\n      st.style.setProperty('--ns-dx', (anchoSticky / 2 - (x0 + s0 / 2)).toFixed(0) + 'px');\n      st.style.setProperty('--ns-dy', (vh / 2 - (y0 + s0 / 2)).toFixed(0) + 'px');\n      st.style.setProperty('--ns-k', (sFin / s0).toFixed(3));\n      el.classList.add('is-medido');\n    });\n  }\n  function medirHorizontales() {\n    medirAperturas();\n    horizontales.forEach(function (h) {\n      if (esMovil() || reduce) { h.el.style.height = ''; h.sobra = 0; return; }\n      h.sobra = Math.max(0, h.pista.scrollWidth - h.ventana.clientWidth);\n      h.el.style.height = (h.sobra * 0.6 + window.innerHeight * 1.02) + 'px'; // menos recorrido: se pasa r\u00E1pido a la siguiente secci\u00F3n\n    });\n  }\n  function initEscenas() {\n    escenas = Array.prototype.slice.call(document.querySelectorAll('[data-ns-escena]'));\n    frases = [];\n    document.querySelectorAll('[data-ns-frase]').forEach(function (el) {\n      if (!el.dataset.nsFrase2) {\n        el.dataset.nsFrase2 = '1';\n        var txt = el.textContent.trim();\n        el.setAttribute('aria-label', txt.replace(/\\*/g, ''));\n        el.innerHTML = txt.split(/\\s+/).map(function (w) {\n          var acento = w.indexOf('*') > -1;\n          var limpio = w.replace(/\\*/g, '').replace(/</g, '&lt;');\n          return '<span class=\"ns-frase__w' + (acento ? ' ns-frase__w--acento' : '') + '\" aria-hidden=\"true\">' + limpio + '</span>';\n        }).join(' ');\n      }\n      frases.push({ el: el, palabras: Array.prototype.slice.call(el.querySelectorAll('.ns-frase__w')) });\n    });\n    horizontales = [];\n    document.querySelectorAll('[data-ns-horizontal]').forEach(function (el) {\n      var pista = el.querySelector('[data-ns-pista]');\n      var ventana = el.querySelector('[data-ns-ventana]') || el;\n      if (pista) horizontales.push({ el: el, pista: pista, ventana: ventana, sobra: 0 });\n    });\n    pildoras = Array.prototype.slice.call(document.querySelectorAll('[data-ns-pildora]'));\n    if (reduce || designMode) {\n      escenas.forEach(function (el) {\n        if (el.classList.contains('ns-ah')) { el.style.setProperty('--p', '0'); return; }\n        el.style.setProperty('--p', '1');\n        el.querySelectorAll('[data-ns-umbral]').forEach(function (c) { c.classList.add('is-on'); });\n      });\n      frases.forEach(function (f) { f.palabras.forEach(function (w) { w.classList.add('is-on'); }); });\n    }\n    medirHorizontales();\n    if (!window.__nsEscenas) {\n      window.__nsEscenas = true;\n      window.addEventListener('scroll', function () {\n        if (!scrollTick) { scrollTick = true; requestAnimationFrame(actualizarEscenas); }\n      }, { passive: true });\n      window.addEventListener('resize', function () { medirHorizontales(); actualizarEscenas(); });\n      window.addEventListener('load', function () { medirHorizontales(); actualizarEscenas(); });\n      if (document.fonts && document.fonts.ready) document.fonts.ready.then(function () { medirHorizontales(); actualizarEscenas(); });\n    }\n    if (!reduce && !designMode) actualizarEscenas();\n    else pildoras.forEach(function (pl) { pl.classList.add('is-on'); });\n  }\n\n  /* Cifras que cuentan hacia arriba */\n  function initContadores() {\n    var els = document.querySelectorAll('[data-ns-contar]');\n    if (!els.length) return;\n    function animar(el) {\n      if (el.dataset.nsContado) return;\n      el.dataset.nsContado = '1';\n      var to = parseFloat(el.getAttribute('data-ns-contar')) || 0;\n      var dec = parseInt(el.getAttribute('data-ns-decimales') || '0', 10);\n      if (reduce || designMode) { el.textContent = to.toFixed(dec); return; }\n      var t0 = null, dur = 1600;\n      function paso(t) {\n        if (!t0) t0 = t;\n        var k = clamp((t - t0) / dur, 0, 1);\n        var e = 1 - Math.pow(1 - k, 3);\n        el.textContent = (to * e).toFixed(dec);\n        if (k < 1) requestAnimationFrame(paso);\n      }\n      requestAnimationFrame(paso);\n    }\n    if (!('IntersectionObserver' in window)) { els.forEach(animar); return; }\n    var obs = new IntersectionObserver(function (entries) {\n      entries.forEach(function (e) { if (e.isIntersecting) { animar(e.target); obs.unobserve(e.target); } });\n    }, { threshold: 0.6 });\n    els.forEach(function (el) { obs.observe(el); });\n  }\n\n  /* Comparador antes / despu\u00E9s */\n  function initComparadores() {\n    document.querySelectorAll('[data-ns-comparador]').forEach(function (m) {\n      if (!once(m, 'nsComp')) return;\n      var r = m.querySelector('.ns-ad__rango');\n      if (!r) return;\n      var tocado = false;\n      function poner(v) { m.style.setProperty('--pos', v + '%'); }\n      poner(r.value);\n      r.addEventListener('input', function () { tocado = true; poner(r.value); });\n      r.addEventListener('pointerdown', function () { tocado = true; m.classList.add('is-drag'); });\n      window.addEventListener('pointerup', function () { m.classList.remove('is-drag'); });\n      if (m.getAttribute('data-ns-intro-auto') !== 'true' || reduce || designMode || !('IntersectionObserver' in window)) return;\n      var inicio = parseFloat(r.value) || 50;\n      var obs = new IntersectionObserver(function (entries) {\n        entries.forEach(function (e) {\n          if (!e.isIntersecting) return;\n          obs.disconnect();\n          var claves = [inicio, 80, 20, inicio], dur = 3600, t0 = null;\n          function paso(t) {\n            if (tocado) return;\n            if (!t0) t0 = t;\n            var k = clamp((t - t0) / dur, 0, 1) * (claves.length - 1);\n            var i = Math.min(Math.floor(k), claves.length - 2), f = k - i;\n            var ease = f < 0.5 ? 2 * f * f : 1 - Math.pow(-2 * f + 2, 2) / 2;\n            var v = claves[i] + (claves[i + 1] - claves[i]) * ease;\n            r.value = v; poner(v.toFixed(1));\n            if (k < claves.length - 1) requestAnimationFrame(paso);\n          }\n          setTimeout(function () { requestAnimationFrame(paso); }, 700);\n        });\n      }, { threshold: 0.55 });\n      obs.observe(m);\n    });\n  }\n\n  /* Cintas en movimiento continuo (rese\u00F1as y frases): se pausan al pasar el rat\u00F3n y se pueden arrastrar */\n  function initMarquesinas() {\n    document.querySelectorAll('[data-ns-marquesina]').forEach(function (m) {\n      if (!once(m, 'nsMarq')) return;\n      var pista = m.querySelector('[data-ns-pista]');\n      if (!pista) return;\n      var vel = parseFloat(m.getAttribute('data-ns-vel')) || 40;\n      var dir = parseFloat(m.getAttribute('data-ns-dir')) || 1;\n      var auto = !reduce && !designMode;\n      var x = 0, mitad = 0, visible = false, pausa = false, esperaHasta = 0, arrastre = null, ultimo = null, corriendo = false;\n      var copias = parseFloat(m.getAttribute('data-ns-copias')) || 2;\n      function medir() { mitad = pista.scrollWidth / copias; envolver(); pintar(); }\n      function envolver() { if (mitad <= 0) return; while (x <= -mitad) x += mitad; while (x > 0) x -= mitad; }\n      function pintar() { pista.style.transform = 'translate3d(' + x.toFixed(2) + 'px,0,0)'; }\n      function bucle(t) {\n        if (!visible) { corriendo = false; ultimo = null; return; }\n        if (ultimo !== null && auto && !pausa && !arrastre && t > esperaHasta) {\n          x -= dir * vel * Math.min(t - ultimo, 64) / 1000;\n          envolver(); pintar();\n        }\n        ultimo = t;\n        requestAnimationFrame(bucle);\n      }\n      function arrancar() { if (corriendo) return; corriendo = true; requestAnimationFrame(bucle); }\n      if (dir < 0) x = -1;\n      medir();\n      if ('ResizeObserver' in window) new ResizeObserver(medir).observe(pista);\n      window.addEventListener('load', medir);\n      if ('IntersectionObserver' in window) {\n        new IntersectionObserver(function (entries) {\n          entries.forEach(function (e) {\n            visible = e.isIntersecting;\n            if (!visible) return;\n            /* Las fotos que a\u00FAn est\u00E1n fuera por los lados se cargan ya, para que no entren en blanco */\n            m.querySelectorAll('img[loading=\"lazy\"]').forEach(function (img) { img.loading = 'eager'; });\n            arrancar();\n          });\n        }, { rootMargin: '400px 0px' }).observe(m);\n      } else { visible = true; arrancar(); }\n      if (finePointer) {\n        m.addEventListener('mouseenter', function () { pausa = true; });\n        m.addEventListener('mouseleave', function () { pausa = false; });\n      }\n      m.addEventListener('pointerdown', function (e) {\n        if (e.pointerType === 'mouse' && e.button !== 0) return;\n        arrastre = { x0: e.clientX, y0: e.clientY, base: x, id: e.pointerId, mov: false };\n      });\n      m.addEventListener('pointermove', function (e) {\n        if (!arrastre) return;\n        var dx = e.clientX - arrastre.x0;\n        if (!arrastre.mov) {\n          if (Math.abs(e.clientY - arrastre.y0) > Math.abs(dx) + 4) { arrastre = null; return; }\n          if (Math.abs(dx) < 6) return;\n          arrastre.mov = true;\n          m.classList.add('is-drag');\n          try { m.setPointerCapture(arrastre.id); } catch (err) {}\n        }\n        x = arrastre.base + dx; envolver(); pintar();\n      });\n      function soltar(e) {\n        if (!arrastre) return;\n        arrastre = null;\n        m.classList.remove('is-drag');\n        if (e && e.pointerType !== 'mouse') esperaHasta = performance.now() + 1500;\n        ultimo = null;\n      }\n      m.addEventListener('pointerup', soltar);\n      m.addEventListener('pointercancel', soltar);\n      m.addEventListener('dragstart', function (e) { e.preventDefault(); });\n    });\n  }\n\n  /* Botones \"Comprar\" extra: en la p\u00E1gina del producto NO van al carrito;\n     suben suavemente hasta la caja de compra y el bot\u00F3n principal se ilumina */\n  function initComprarExtra() {\n    if (window.__nsComprar) return;\n    window.__nsComprar = true;\n    document.addEventListener('click', function (e) {\n      var a = e.target.closest ? e.target.closest('[data-ns-comprar]') : null;\n      if (!a) return;\n      var form = document.querySelector('[data-ns-form-principal]');\n      var sub = form ? form.querySelector('[data-ns-boton]') : null;\n      if (!sub) return;\n      e.preventDefault();\n      var caja = form.closest('.ns-compra__caja') || form;\n      var r = caja.getBoundingClientRect();\n      var vh = window.innerHeight;\n      var destino = window.scrollY + r.top - Math.max(90, (vh - r.height) / 2);\n      window.scrollTo({ top: Math.max(0, destino), behavior: reduce ? 'auto' : 'smooth' });\n      var hecho = false;\n      function iluminar() {\n        if (hecho) return; hecho = true;\n        caja.classList.remove('is-llamada'); sub.classList.remove('is-llamada');\n        void sub.offsetWidth;\n        caja.classList.add('is-llamada'); sub.classList.add('is-llamada');\n        setTimeout(function () { caja.classList.remove('is-llamada'); sub.classList.remove('is-llamada'); }, 2600);\n        try { sub.focus({ preventScroll: true }); } catch (err) {}\n      }\n      // espera a que termine el desplazamiento (o como mucho 1,2 s)\n      var ultimo = window.scrollY, quieto = 0;\n      var vig = setInterval(function () {\n        if (Math.abs(window.scrollY - ultimo) < 1) quieto++; else quieto = 0;\n        ultimo = window.scrollY;\n        if (quieto >= 2) { clearInterval(vig); iluminar(); }\n      }, 80);\n      setTimeout(function () { clearInterval(vig); iluminar(); }, 1200);\n    });\n  }\n\n  /* Fecha estimada de entrega (d\u00EDas h\u00E1biles, de lunes a viernes) */\n  function initEntrega() {\n    var dias = ['dom', 'lun', 'mar', 'mi\u00E9', 'jue', 'vie', 's\u00E1b'];\n    var meses = ['ene', 'feb', 'mar', 'abr', 'may', 'jun', 'jul', 'ago', 'sep', 'oct', 'nov', 'dic'];\n    function sumar(n) { var d = new Date(); var c = 0; while (c < n) { d.setDate(d.getDate() + 1); var w = d.getDay(); if (w !== 0 && w !== 6) c++; } return d; }\n    document.querySelectorAll('[data-ns-entrega]').forEach(function (el) {\n      if (!once(el, 'nsEnt')) return;\n      var min = parseInt(el.getAttribute('data-min'), 10) || 2, max = parseInt(el.getAttribute('data-max'), 10) || 5;\n      var d1 = sumar(min), d2 = sumar(Math.max(min, max));\n      var f1 = dias[d1.getDay()] + ' ' + d1.getDate() + (d1.getMonth() !== d2.getMonth() ? ' de ' + meses[d1.getMonth()] : '');\n      var f2 = dias[d2.getDay()] + ' ' + d2.getDate() + ' de ' + meses[d2.getMonth()];\n      var t = el.querySelector('[data-ns-fecha]');\n      if (t) t.innerHTML = (el.getAttribute('data-prefijo') || '') + ' entre el <strong>' + f1 + '</strong> y el <strong>' + f2 + '</strong>';\n    });\n  }\n\n  /* Fotos del producto a pantalla completa (toca, desliza o usa las flechas) */\n  function initZoom() {\n    document.querySelectorAll('[data-ns-galeria]').forEach(function (g) {\n      var marco = g.querySelector('[data-ns-zoom]');\n      var principal = g.querySelector('[data-ns-principal]');\n      if (!marco || !principal || !once(marco, 'nsZoom')) return;\n      var minis = Array.prototype.slice.call(g.querySelectorAll('[data-ns-mini]'));\n      var fotos = minis.length ? minis.map(function (m) { return { src: m.getAttribute('data-src'), alt: m.getAttribute('data-alt') || '' }; }) : [{ src: principal.currentSrc || principal.src, alt: principal.alt }];\n      var caja = document.createElement('div');\n      caja.className = 'ns-zoomcaja'; caja.setAttribute('role', 'dialog'); caja.setAttribute('aria-modal', 'true'); caja.setAttribute('aria-label', 'Fotos del producto'); caja.hidden = true;\n      caja.innerHTML = '<button type=\"button\" class=\"ns-zoomcaja__cerrar\" aria-label=\"Cerrar\">\u00D7</button>' +\n        (fotos.length > 1 ? '<button type=\"button\" class=\"ns-zoomcaja__flecha ns-zoomcaja__flecha--prev\" aria-label=\"Foto anterior\">\u2039</button><button type=\"button\" class=\"ns-zoomcaja__flecha ns-zoomcaja__flecha--next\" aria-label=\"Foto siguiente\">\u203A</button>' : '') +\n        '<img alt=\"\"><span class=\"ns-zoomcaja__cuenta\"></span>';\n      document.body.appendChild(caja);\n      var img = caja.querySelector('img'), cuenta = caja.querySelector('.ns-zoomcaja__cuenta'), i = 0;\n      var base = function (u) { return (u || '').split('?')[0].replace(/_\\d+x\\d*(\\.\\w+)$/, '$1'); };\n      function mostrar(n) { i = (n + fotos.length) % fotos.length; img.src = fotos[i].src; img.alt = fotos[i].alt; cuenta.textContent = (i + 1) + ' / ' + fotos.length; }\n      function abrir(e) {\n        if (e && e.target.closest && e.target.closest('button')) return;\n        var k = parseInt(g.getAttribute('data-indice') || '', 10);\n        if (isNaN(k)) { var actual = base(principal.currentSrc || principal.src); k = 0; fotos.forEach(function (f, j) { if (base(f.src) === actual) k = j; }); }\n        mostrar(k); caja.hidden = false; document.documentElement.classList.add('ns-sin-scroll');\n        requestAnimationFrame(function () { caja.classList.add('is-abierta'); });\n      }\n      function cerrar() { caja.classList.remove('is-abierta'); document.documentElement.classList.remove('ns-sin-scroll'); setTimeout(function () { caja.hidden = true; }, 300); }\n      marco.addEventListener('click', abrir);\n      caja.addEventListener('click', function (e) {\n        if (e.target.closest('.ns-zoomcaja__flecha--prev')) return mostrar(i - 1);\n        if (e.target.closest('.ns-zoomcaja__flecha--next')) return mostrar(i + 1);\n        if (e.target === caja || e.target.closest('.ns-zoomcaja__cerrar')) cerrar();\n      });\n      document.addEventListener('keydown', function (e) {\n        if (caja.hidden) return;\n        if (e.key === 'Escape') cerrar(); else if (e.key === 'ArrowLeft') mostrar(i - 1); else if (e.key === 'ArrowRight') mostrar(i + 1);\n      });\n      var x0 = null;\n      caja.addEventListener('touchstart', function (e) { x0 = e.touches[0].clientX; }, { passive: true });\n      caja.addEventListener('touchend', function (e) { if (x0 === null) return; var dx = e.changedTouches[0].clientX - x0; if (Math.abs(dx) > 50) mostrar(i + (dx < 0 ? 1 : -1)); x0 = null; });\n    });\n  }\n\n  /* Regalo: cada coraz\u00F3n marcado agrega una unidad al carrito con la nota \"Regalo: Para \u2026\"; al desmarcarlo se quita */\n  function initCorazones() {\n    document.querySelectorAll('[data-ns-corazones]').forEach(function (lista) {\n      if (!once(lista, 'nsCor')) return;\n      var variante = lista.getAttribute('data-variante');\n      var botones = Array.prototype.slice.call(lista.querySelectorAll('[data-ns-corazon]'));\n      var estado = lista.parentNode.querySelector('[data-ns-regalo-estado]');\n      var claves = {};\n      function pintar() {\n        var n = 0;\n        botones.forEach(function (b) { var on = !!claves[b.getAttribute('data-ns-corazon')]; if (on) n++; b.setAttribute('aria-pressed', on ? 'true' : 'false'); });\n        if (!estado) return;\n        estado.hidden = n === 0;\n        estado.querySelector('[data-ns-regalo-num]').textContent = String(n);\n        estado.querySelector('[data-ns-regalo-cuenta]').textContent = n === 1 ? '1 regalo en tu carrito' : n + ' regalos en tu carrito';\n      }\n      function leer() {\n        return fetch('/cart.js', { headers: { Accept: 'application/json' } }).then(function (r) { return r.json(); }).then(function (c) {\n          claves = {};\n          (c.items || []).forEach(function (it) { var p = it.properties && it.properties.Regalo; if (p && String(it.variant_id) === String(variante)) claves[p] = it.key; });\n          pintar();\n        });\n      }\n      function burbuja() { // actualiza el n\u00FAmero del carrito de la cabecera\n        return fetch(window.location.pathname + '?sections=cart-icon-bubble').then(function (r) { return r.json(); }).then(function (s) {\n          var cont = document.getElementById('cart-icon-bubble');\n          if (!cont || !s || !s['cart-icon-bubble']) return;\n          var d = new DOMParser().parseFromString(s['cart-icon-bubble'], 'text/html');\n          var nuevo = d.querySelector('.shopify-section');\n          cont.innerHTML = nuevo ? nuevo.innerHTML : d.body.innerHTML;\n        }).catch(function () {});\n      }\n      botones.forEach(function (b) {\n        b.addEventListener('click', function () {\n          if (b.getAttribute('aria-busy') === 'true') return;\n          b.setAttribute('aria-busy', 'true');\n          var nombre = b.getAttribute('data-ns-corazon');\n          var peticion;\n          if (claves[nombre]) {\n            peticion = fetch('/cart/change.js', { method: 'POST', headers: { 'Content-Type': 'application/json', Accept: 'application/json' }, body: JSON.stringify({ id: claves[nombre], quantity: 0 }) });\n          } else {\n            b.classList.remove('is-latido'); void b.offsetWidth; b.classList.add('is-latido');\n            b.setAttribute('aria-pressed', 'true');\n            peticion = fetch('/cart/add.js', { method: 'POST', headers: { 'Content-Type': 'application/json', Accept: 'application/json' }, body: JSON.stringify({ items: [{ id: Number(variante), quantity: 1, properties: { Regalo: nombre } }] }) });\n          }\n          peticion.then(leer).then(burbuja).catch(function () { pintar(); }).then(function () { b.removeAttribute('aria-busy'); });\n        });\n      });\n      leer().catch(function () {});\n    });\n  }\n\n  /* Visor de fotos: al tocar una foto del mosaico se abre en grande (flechas, teclado y deslizar) */\n  function initVisor() {\n    document.querySelectorAll('[data-ns-visor]').forEach(function (g) {\n      if (!once(g, 'nsVisor')) return;\n      var items = Array.prototype.slice.call(g.querySelectorAll('[data-ns-visor-foto]'));\n      if (!items.length) return;\n      var fotos = items.map(function (it) { return { src: it.getAttribute('data-src'), alt: it.getAttribute('data-alt') || '' }; });\n      var caja = document.createElement('div');\n      caja.className = 'ns-zoomcaja ns-visor'; caja.setAttribute('role', 'dialog'); caja.setAttribute('aria-modal', 'true');\n      caja.setAttribute('aria-label', g.getAttribute('data-ns-visor-titulo') || 'Fotos'); caja.hidden = true;\n      caja.innerHTML = '<button type=\"button\" class=\"ns-zoomcaja__cerrar\" aria-label=\"Cerrar\">\u00D7</button>' +\n        (fotos.length > 1 ? '<button type=\"button\" class=\"ns-zoomcaja__flecha ns-zoomcaja__flecha--prev\" aria-label=\"Foto anterior\">\u2039</button><button type=\"button\" class=\"ns-zoomcaja__flecha ns-zoomcaja__flecha--next\" aria-label=\"Foto siguiente\">\u203A</button>' : '') +\n        '<img alt=\"\"><span class=\"ns-zoomcaja__cuenta\"></span>';\n      document.body.appendChild(caja);\n      var img = caja.querySelector('img'), cuenta = caja.querySelector('.ns-zoomcaja__cuenta'), i = 0, origen = null;\n      function mostrar(n) { i = (n + fotos.length) % fotos.length; img.src = fotos[i].src; img.alt = fotos[i].alt; cuenta.textContent = (i + 1) + ' / ' + fotos.length + (fotos[i].alt ? ' \u00B7 ' + fotos[i].alt : ''); }\n      function abrir(k) {\n        mostrar(k); caja.hidden = false; document.documentElement.classList.add('ns-sin-scroll');\n        requestAnimationFrame(function () { caja.classList.add('is-abierta'); });\n        var c = caja.querySelector('.ns-zoomcaja__cerrar'); if (c) c.focus({ preventScroll: true });\n      }\n      function cerrar() {\n        caja.classList.remove('is-abierta'); document.documentElement.classList.remove('ns-sin-scroll');\n        setTimeout(function () { caja.hidden = true; }, 300);\n        if (origen) origen.focus({ preventScroll: true });\n      }\n      items.forEach(function (it, k) { it.addEventListener('click', function () { origen = it; abrir(k); }); });\n      caja.addEventListener('click', function (e) {\n        if (e.target.closest('.ns-zoomcaja__flecha--prev')) return mostrar(i - 1);\n        if (e.target.closest('.ns-zoomcaja__flecha--next')) return mostrar(i + 1);\n        if (e.target === caja || e.target.closest('.ns-zoomcaja__cerrar')) cerrar();\n      });\n      document.addEventListener('keydown', function (e) {\n        if (caja.hidden) return;\n        if (e.key === 'Escape') cerrar(); else if (e.key === 'ArrowLeft') mostrar(i - 1); else if (e.key === 'ArrowRight') mostrar(i + 1);\n      });\n      var x0 = null;\n      caja.addEventListener('touchstart', function (e) { x0 = e.touches[0].clientX; }, { passive: true });\n      caja.addEventListener('touchend', function (e) { if (x0 === null) return; var dx = e.changedTouches[0].clientX - x0; if (Math.abs(dx) > 50) mostrar(i + (dx < 0 ? 1 : -1)); x0 = null; });\n    });\n  }\n\n  /* Pesta\u00F1as del antes y despu\u00E9s: una comparaci\u00F3n a la vista; cambian solas mientras la secci\u00F3n se ve,\n     hasta que la clienta toca una pesta\u00F1a o mueve el deslizador */\n  function initPestanas() {\n    document.querySelectorAll('[data-ns-pestanas]').forEach(function (raiz) {\n      if (!once(raiz, 'nsPest')) return;\n      var botones = Array.prototype.slice.call(raiz.querySelectorAll('[data-ns-pestana]'));\n      var paneles = Array.prototype.slice.call(raiz.querySelectorAll('[data-ns-panel]'));\n      if (botones.length < 2 || paneles.length < 2) return;\n      var actual = 0, manual = false, visible = false, t = null;\n      var espera = 7000;\n      function ir(n) {\n        n = (n + paneles.length) % paneles.length;\n        if (n === actual) return;\n        botones.forEach(function (b, k) { var on = k === n; b.classList.toggle('is-activa', on); b.setAttribute('aria-selected', on ? 'true' : 'false'); });\n        paneles.forEach(function (p, k) {\n          var on = k === n;\n          p.hidden = !on; p.classList.toggle('is-activo', on);\n          if (on) { p.classList.remove('is-entra'); void p.offsetWidth; p.classList.add('is-entra'); }\n        });\n        actual = n;\n        programar();\n      }\n      function programar() {\n        clearTimeout(t);\n        raiz.classList.remove('is-contando');\n        if (manual || !visible || raiz.getAttribute('data-ns-rotar') !== 'true' || reduce || designMode) return;\n        void raiz.offsetWidth; raiz.classList.add('is-contando');\n        raiz.style.setProperty('--ns-espera', espera + 'ms');\n        t = setTimeout(function () { ir(actual + 1); }, espera);\n      }\n      function parar() { manual = true; clearTimeout(t); raiz.classList.remove('is-contando'); }\n      botones.forEach(function (b, k) { b.addEventListener('click', function () { parar(); ir(k); }); });\n      raiz.addEventListener('pointerdown', function (e) { if (e.target.closest('.ns-ad__marco')) parar(); });\n      raiz.addEventListener('keydown', function (e) {\n        if (!e.target.closest('[role=\"tablist\"]')) return;\n        if (e.key === 'ArrowRight' || e.key === 'ArrowLeft') { e.preventDefault(); parar(); ir(actual + (e.key === 'ArrowRight' ? 1 : -1)); botones[actual].focus(); }\n      });\n      if ('IntersectionObserver' in window) {\n        new IntersectionObserver(function (entries) {\n          entries.forEach(function (en) { visible = en.isIntersecting; if (visible) programar(); else { clearTimeout(t); raiz.classList.remove('is-contando'); } });\n        }, { threshold: 0.5 }).observe(raiz);\n      }\n    });\n  }\n\n  function init() {\n    initVisor();\n    initPestanas();\n    initCorazones();\n    initEntrega();\n    initZoom();\n    initComprarExtra();\n    initMarquesinas();\n    initComparadores();\n    initEscenas();\n    initContadores();\n    initSplit();\n    initIntro();\n    initReveal();\n    initParallax();\n    initTilt();\n    initScrolly();\n    initAcordeon();\n    initDescripcion();\n    initGlow();\n    initGaleria();\n    initVariantes();\n    initBarraMovil();\n  }\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init);\n  else init();\n  document.addEventListener('shopify:section:load', init);\n})();\n"],
  "mappings": "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",
  "names": ["io"]
}
