{
  "version": 3,
  "sources": ["/cdn/shop/t/2/assets/wbx-pdp.js?vv=1785075321"],
  "sourcesContent": ["import { morphSection } from \"@theme/section-renderer\";\nimport { CartErrorEvent, CartLinesUpdateEvent } from \"@shopify/events\";\n\n/* Wrist Bro \u2014 WBX PDP controller (offer sync, cart, countdown, gallery, sticky ATC, UGC nav) */\n(function () {\n  \"use strict\";\n  if (window.__wbxPdpInit) return;\n  window.__wbxPdpInit = true;\n\n  /* refresh always starts at the top: no mid-page scroll restoration.\n     The theme's scroll manager re-applies the saved position after load,\n     so pin the top over the first ~700ms rather than setting it once. */\n  try {\n    if (\"scrollRestoration\" in history) history.scrollRestoration = \"manual\";\n    if (!location.hash) {\n      var wbxTopTicks = 0;\n      var wbxToTop = function () {\n        window.scrollTo({ top: 0, behavior: \"instant\" });\n        var wrap = document.querySelector(\".page-wrapper\");\n        if (wrap && typeof wrap.scrollTo === \"function\")\n          wrap.scrollTo({ top: 0, behavior: \"instant\" });\n      };\n      wbxToTop();\n      var wbxTopIv = setInterval(function () {\n        wbxToTop();\n        if (++wbxTopTicks >= 10) clearInterval(wbxTopIv);\n      }, 70);\n    }\n  } catch (e) {}\n\n  var money = function (cents) {\n    var fmt = window.__wbxMoneyFormat || \"\u00A3{{amount}}\";\n    var amount = (cents / 100).toFixed(2);\n    var withComma = amount.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n    return fmt\n      .replace(/\\{\\{\\s*amount\\s*\\}\\}/, withComma)\n      .replace(\n        /\\{\\{\\s*amount_no_decimals\\s*\\}\\}/,\n        Math.round(cents / 100).toString(),\n      )\n      .replace(\n        /\\{\\{\\s*amount_with_comma_separator\\s*\\}\\}/,\n        amount.replace(\".\", \",\"),\n      );\n  };\n\n  /* ---------- offer selection (synced across all selectors) ---------- */\n  function selectedRadio(fieldset) {\n    return (\n      fieldset.querySelector('input[type=\"radio\"]:checked') ||\n      fieldset.querySelector('input[type=\"radio\"]')\n    );\n  }\n\n  function syncOffers(sourceRadio) {\n    var tier = sourceRadio.getAttribute(\"data-tier\");\n    document.querySelectorAll(\"[data-wbx-offers]\").forEach(function (fs) {\n      var match = fs.querySelector('input[data-tier=\"' + tier + '\"]');\n      if (match && !match.checked) match.checked = true;\n    });\n    updateLadders(sourceRadio);\n    updateSticky(sourceRadio);\n    updateGiftTray(sourceRadio);\n  }\n\n  function updateGiftTray(radio) {\n    var unlocked = !!(radio && radio.getAttribute(\"data-gift-note\"));\n    document\n      .querySelectorAll(\"[data-wbx-gift-guide]\")\n      .forEach(function (cell) {\n        cell.classList.toggle(\"is-locked\", !unlocked);\n        var note = cell.querySelector(\"[data-wbx-gift-guide-note]\");\n        if (note)\n          note.textContent = unlocked\n            ? \"Six exercises for wrist and hand pain\"\n            : \"Unlocks with Both Wrists\";\n      });\n  }\n\n  function updateLadders(radio) {\n    var qty = parseInt(radio.getAttribute(\"data-qty\") || \"1\", 10);\n    document.querySelectorAll(\"[data-wbx-ladder]\").forEach(function (ladder) {\n      ladder.querySelectorAll(\"[data-ladder-qty]\").forEach(function (step) {\n        var need = parseInt(step.getAttribute(\"data-ladder-qty\"), 10);\n        step.classList.toggle(\"is-active\", qty >= need);\n      });\n    });\n  }\n\n  document.addEventListener(\"change\", function (e) {\n    var input = e.target;\n    if (input.matches('[data-wbx-offers] input[type=\"radio\"]'))\n      syncOffers(input);\n  });\n\n  /* ---------- add to cart ---------- */\n  var CART_DRAWER_SECTION_ID = \"cart-drawer-section\";\n\n  function setBusy(btn, busy) {\n    if (!btn) return;\n    btn.disabled = busy;\n    if (busy) {\n      btn.setAttribute(\"data-label\", btn.textContent);\n      btn.textContent = \"Adding\u2026\";\n    } else if (btn.getAttribute(\"data-label\")) {\n      btn.textContent = btn.getAttribute(\"data-label\");\n    }\n  }\n\n  function cartEventLines(items) {\n    return items.map(function (item) {\n      var line = {\n        merchandiseId: String(item.id),\n        quantity: item.quantity,\n      };\n      if (item.properties) {\n        line.attributes = Object.keys(item.properties).map(function (key) {\n          return { key: key, value: String(item.properties[key]) };\n        });\n      }\n      return line;\n    });\n  }\n\n  function openCartDrawer() {\n    return customElements.whenDefined(\"theme-drawer\").then(function () {\n      var drawer = document.querySelector(\"theme-drawer#cart-drawer\");\n      if (drawer && typeof drawer.open === \"function\") {\n        drawer.open();\n        return true;\n      }\n      return false;\n    });\n  }\n\n  function setDrawerLoading(on) {\n    var drawer = document.querySelector(\"#cart-drawer\");\n    if (drawer) drawer.classList.toggle(\"wb-cart-loading\", on);\n  }\n\n  document.addEventListener(\"submit\", function (e) {\n    var form = e.target;\n    if (!form.matches(\"[data-wbx-atc-form]\")) return;\n    e.preventDefault();\n    var fieldset =\n      form.querySelector(\"[data-wbx-offers]\") ||\n      document.querySelector(\"[data-wbx-offers]\");\n    if (!fieldset) return;\n    var radio = selectedRadio(fieldset);\n    if (!radio) return;\n    var items = [\n      {\n        id: parseInt(radio.getAttribute(\"data-variant-id\"), 10),\n        quantity: parseInt(radio.getAttribute(\"data-qty\") || \"1\", 10),\n      },\n    ];\n\n    var giftId = radio.getAttribute(\"data-gift-variant-id\");\n    if (giftId) {\n      /* gift goes FIRST in the add call so the cart (newest first) shows\n         the massager on top and the free guide beneath it */\n      items.unshift({\n        id: parseInt(giftId, 10),\n        quantity: parseInt(radio.getAttribute(\"data-gift-qty\") || \"1\", 10),\n        properties: { _gift: \"bundle\" },\n      });\n    }\n    var btn = form.querySelector('[type=\"submit\"]');\n    var note = form.querySelector(\"[data-wbx-atc-error]\");\n    if (note) {\n      note.hidden = true;\n      note.textContent = \"\";\n    }\n    setBusy(btn, true);\n    /* theme-native feel: slide the drawer out immediately with a loading\n       veil; the add + section morph fill it in when the network returns */\n    setDrawerLoading(true);\n    var drawerOpened = openCartDrawer();\n    var deferredCartEvent = CartLinesUpdateEvent.createPromise();\n    form.dispatchEvent(\n      new CartLinesUpdateEvent({\n        action: \"add\",\n        context: \"product\",\n        lines: cartEventLines(items),\n        promise: deferredCartEvent.promise,\n      }),\n    );\n    var cartAddUrl =\n      (typeof Theme !== \"undefined\" &&\n        Theme.routes &&\n        Theme.routes.cart_add_url) ||\n      \"/cart/add.js\";\n    var cartUrl =\n      (typeof Theme !== \"undefined\" && Theme.routes && Theme.routes.cart_url) ||\n      \"/cart\";\n    fetch(cartAddUrl, {\n      method: \"POST\",\n      headers: {\n        \"Content-Type\": \"application/json\",\n        Accept: \"application/json\",\n      },\n      body: JSON.stringify({\n        items: items,\n        sections: [CART_DRAWER_SECTION_ID],\n        sections_url: window.location.pathname,\n      }),\n    })\n      .then(function (r) {\n        if (!r.ok)\n          return r.json().then(function (d) {\n            throw new Error(\n              d.description || d.message || \"Could not add to cart\",\n            );\n          });\n        return r.json();\n      })\n      .then(function (response) {\n        var drawerHtml =\n          response.sections && response.sections[CART_DRAWER_SECTION_ID];\n        if (!drawerHtml) throw new Error(\"Cart drawer could not be refreshed\");\n        /* morph the drawer and fetch cart state in parallel \u2014 no serial hop */\n        return Promise.all([\n          morphSection(CART_DRAWER_SECTION_ID, drawerHtml, {\n            mode: \"hydration\",\n          }),\n          fetch(cartUrl + \".js\", {\n            headers: { Accept: \"application/json\" },\n            credentials: \"same-origin\",\n          }).then(function (cartResponse) {\n            if (!cartResponse.ok)\n              throw new Error(\"Could not refresh cart details\");\n            return cartResponse.json();\n          }),\n        ]);\n      })\n      .then(function (results) {\n        var cart = results[1];\n        deferredCartEvent.resolve({\n          cart: CartLinesUpdateEvent.createCartFromAjaxResponse(cart),\n          detail: {\n            items: cart.items,\n            itemCount: cart.item_count,\n            source: \"wbx-pdp\",\n            sourceId: form.id || \"wbx-pdp-form\",\n            didError: false,\n          },\n        });\n        setBusy(btn, false);\n        setDrawerLoading(false);\n        /* fallback for themes without the drawer element: only navigate\n           AFTER the add succeeded, so /cart shows the item */\n        return drawerOpened.then(function (opened) {\n          if (!opened) window.location.href = cartUrl;\n        });\n      })\n      .catch(function (err) {\n        deferredCartEvent.reject(err);\n        form.dispatchEvent(\n          new CartErrorEvent({\n            error: err.message || \"Could not add to cart\",\n            code: \"SERVICE_UNAVAILABLE\",\n          }),\n        );\n        setBusy(btn, false);\n        setDrawerLoading(false);\n        if (note) {\n          note.hidden = false;\n          note.textContent = err.message;\n        } else alert(err.message);\n      });\n  });\n\n  /* ---------- countdown ---------- */\n  document.querySelectorAll(\"[data-wbx-countdown]\").forEach(function (el) {\n    var end = new Date(el.getAttribute(\"data-end\"));\n    if (isNaN(end.getTime())) {\n      el.hidden = true;\n      return;\n    }\n    var units = {\n      d: el.querySelector('[data-unit=\"d\"]'),\n      h: el.querySelector('[data-unit=\"h\"]'),\n      m: el.querySelector('[data-unit=\"m\"]'),\n      s: el.querySelector('[data-unit=\"s\"]'),\n    };\n    function tick() {\n      var diff = end.getTime() - Date.now();\n      if (diff <= 0) {\n        el.hidden = true;\n        clearInterval(timer);\n        return;\n      }\n      var s = Math.floor(diff / 1000);\n      var vals = {\n        d: Math.floor(s / 86400),\n        h: Math.floor((s % 86400) / 3600),\n        m: Math.floor((s % 3600) / 60),\n        s: s % 60,\n      };\n      Object.keys(vals).forEach(function (k) {\n        if (units[k]) units[k].textContent = String(vals[k]).padStart(2, \"0\");\n      });\n    }\n    tick();\n    var timer = setInterval(tick, 1000);\n  });\n\n  /* ---------- gallery ---------- */\n  document.querySelectorAll(\"[data-wbx-gallery]\").forEach(function (gallery) {\n    var main = gallery.querySelector(\".wbx-gallery__main\");\n    var thumbs = Array.prototype.slice.call(\n      gallery.querySelectorAll(\".wbx-gallery__thumb\"),\n    );\n    var slides = Array.prototype.slice.call(\n      gallery.querySelectorAll(\".wbx-gallery__slide\"),\n    );\n    if (!main || !slides.length) return;\n    function setActive(i) {\n      thumbs.forEach(function (t, j) {\n        t.setAttribute(\"aria-current\", i === j ? \"true\" : \"false\");\n      });\n    }\n    thumbs.forEach(function (t, i) {\n      t.addEventListener(\"click\", function () {\n        main.scrollTo({ left: slides[i].offsetLeft, behavior: \"smooth\" });\n        setActive(i);\n      });\n    });\n    var ticking = false;\n    main.addEventListener(\n      \"scroll\",\n      function () {\n        if (ticking) return;\n        ticking = true;\n        requestAnimationFrame(function () {\n          ticking = false;\n          var i = Math.round(main.scrollLeft / main.clientWidth);\n          setActive(Math.max(0, Math.min(slides.length - 1, i)));\n        });\n      },\n      { passive: true },\n    );\n    setActive(0);\n  });\n\n  /* ---------- sticky mobile ATC ---------- */\n  var sticky = document.querySelector(\"[data-wbx-sticky]\");\n  var heroBox = document.querySelector(\"[data-wbx-hero-buybox]\");\n  /* Re-parent the bar to <body>: on iOS Safari a transformed ancestor\n     (the theme's view-transition page wrapper) captures position:fixed,\n     dropping the bar into the page flow at the very bottom. */\n  if (sticky && sticky.parentElement !== document.body) {\n    document.body.appendChild(sticky);\n  }\n  /* health check: if this environment breaks position:fixed (bar not glued\n     to the viewport bottom while visible), hide the bar rather than let it\n     sit mid-page */\n  function stickyHealthCheck() {\n    if (!sticky || !sticky.classList.contains(\"is-visible\")) return;\n    var r = sticky.getBoundingClientRect();\n    if (r.top > window.innerHeight + 60 || r.bottom < 0) {\n      sticky.style.display = \"none\";\n      sticky.setAttribute(\"data-wbx-sticky-disabled\", \"1\");\n    }\n  }\n  setInterval(function () {\n    if (sticky && sticky.getAttribute(\"data-wbx-sticky-disabled\")) return;\n    stickyHealthCheck();\n  }, 1200);\n  function updateSticky(radio) {\n    var fieldset = document.querySelector(\"[data-wbx-offers]\");\n    if (!fieldset) return;\n    var r = radio || selectedRadio(fieldset);\n    if (!r) return;\n    var total = parseInt(r.getAttribute(\"data-total\") || \"0\", 10);\n    var compare = parseInt(r.getAttribute(\"data-compare\") || \"0\", 10);\n    var label = r.getAttribute(\"data-label\") || \"\";\n    document.querySelectorAll(\".wbx-price-row__current\").forEach(function (el) {\n      el.textContent = money(total);\n    });\n    if (compare > total) {\n      document\n        .querySelectorAll(\".wbx-price-row__compare\")\n        .forEach(function (el) {\n          el.textContent = money(compare);\n        });\n      document.querySelectorAll(\".wbx-price-row__save\").forEach(function (el) {\n        var base =\n          el.getAttribute(\"data-sale-label\") ||\n          el.textContent.split(/[\u2014:]/)[0].trim();\n        el.setAttribute(\"data-sale-label\", base);\n        el.textContent = base + \": Save \" + money(compare - total);\n      });\n    }\n    if (!sticky) return;\n    var totalEl = sticky.querySelector(\"[data-sticky-total]\");\n    var labelEl = sticky.querySelector(\"[data-sticky-label]\");\n    var saveEl = sticky.querySelector(\".wbx-sticky__save\");\n    if (totalEl) totalEl.textContent = money(total);\n    if (labelEl && label) labelEl.textContent = label;\n    if (saveEl && compare > total) {\n      saveEl.textContent =\n        \"SAVE \" + Math.floor(((compare - total) / compare) * 100) + \"%\";\n    }\n  }\n  if (sticky && heroBox && \"IntersectionObserver\" in window) {\n    var heroGone = false;\n    var stopZoneVisible = false;\n    var applySticky = function () {\n      sticky.classList.toggle(\"is-visible\", heroGone && !stopZoneVisible);\n    };\n    var io = new IntersectionObserver(\n      function (entries) {\n        heroGone =\n          !entries[0].isIntersecting && entries[0].boundingClientRect.top < 0;\n        applySticky();\n      },\n      { threshold: 0 },\n    );\n    io.observe(heroBox);\n    var stopZones = [];\n    var bottomBox = document.getElementById(\"wbx-buy-bottom\");\n    if (bottomBox) stopZones.push(bottomBox);\n    var pageFooter = document.querySelector(\"footer\");\n    if (pageFooter) stopZones.push(pageFooter);\n    if (stopZones.length) {\n      var ioStop = new IntersectionObserver(\n        function (entries) {\n          entries.forEach(function (e) {\n            e.target.__wbxVisible = e.isIntersecting;\n          });\n          stopZoneVisible = stopZones.some(function (z) {\n            return z.__wbxVisible;\n          });\n          applySticky();\n        },\n        { threshold: 0 },\n      );\n      stopZones.forEach(function (z) {\n        ioStop.observe(z);\n      });\n    }\n    updateSticky();\n  }\n\n  function wbxScrollToEl(target, offset) {\n    var cands = [\n      document.querySelector(\".page-wrapper\"),\n      document.scrollingElement,\n      document.documentElement,\n      document.body,\n    ];\n    for (var i = 0; i < cands.length; i++) {\n      var sc = cands[i];\n      if (!sc || !sc.getBoundingClientRect) continue;\n      try {\n        var isRoot =\n          sc === document.scrollingElement ||\n          sc === document.documentElement ||\n          sc === document.body;\n        var top = isRoot\n          ? target.getBoundingClientRect().top +\n            (window.pageYOffset || sc.scrollTop) -\n            offset\n          : target.getBoundingClientRect().top -\n            sc.getBoundingClientRect().top +\n            sc.scrollTop -\n            offset;\n        if (top < 0) top = 0;\n        var prev = sc.style.scrollBehavior;\n        sc.style.scrollBehavior = \"auto\";\n        /* scrollTo({behavior:'instant'}) is the only write the theme's\n           scroll manager doesn't revert (WebKit reverts bare scrollTop) */\n        if (isRoot && typeof window.scrollTo === \"function\") {\n          window.scrollTo({ top: top, behavior: \"instant\" });\n        }\n        if (typeof sc.scrollTo === \"function\") {\n          sc.scrollTo({ top: top, behavior: \"instant\" });\n        } else {\n          sc.scrollTop = top;\n        }\n        sc.style.scrollBehavior = prev;\n      } catch (e) {}\n    }\n  }\n\n  /* ---------- CTA anchors to the offer selector ----------\n     The theme scrolls a custom .page-wrapper and cancels one-shot programmatic\n     and hash scrolls; pinning scrollTop over several frames is the only way. */\n  document.addEventListener(\"click\", function (e) {\n    var link = e.target.closest ? e.target.closest('a[href*=\"#wbx-\"]') : null;\n    if (!link) return;\n    var href = link.getAttribute(\"href\") || \"\";\n    var hashIdx = href.indexOf(\"#\");\n    if (hashIdx === -1) return;\n    /* only intercept same-page anchors (bare #\u2026 or this page's own path) */\n    var path = href.slice(0, hashIdx);\n    if (path && path !== location.pathname) return;\n    var id = href.slice(hashIdx + 1);\n    var target = document.getElementById(id);\n    if (!target && id === \"wbx-choose\")\n      target = document.querySelector(\"[data-wbx-offers]\");\n    if (!target && id === \"wbx-reviews\")\n      target =\n        document.getElementById(\"wbx-early-proof\") ||\n        document.querySelector(\".wbx-testimonials, [id^='wbx-review']\");\n    if (!target) return;\n    e.preventDefault();\n    var offset = id === \"wbx-choose\" ? 140 : 90;\n    var tries = 0;\n    var iv = setInterval(function () {\n      wbxScrollToEl(target, offset);\n      if (++tries >= 16) clearInterval(iv);\n    }, 70);\n  });\n\n  /* ---------- UGC carousels ---------- */\n  /* Cross-page hash landing: browser can't scroll the custom wrapper on load */\n  if (location.hash) {\n    var hashTarget = null;\n    try {\n      hashTarget = document.querySelector(location.hash);\n    } catch (e) {}\n    if (hashTarget) {\n      setTimeout(function () {\n        var tries = 0;\n        var iv = setInterval(function () {\n          wbxScrollToEl(hashTarget, 120);\n          if (++tries >= 16) clearInterval(iv);\n        }, 70);\n      }, 350);\n    }\n  }\n\n  document.querySelectorAll(\"[data-wbx-ugc]\").forEach(function (root) {\n    var track = root.querySelector(\".wbx-ugc__track\");\n    if (!track) return;\n    root.querySelectorAll(\"[data-ugc-nav]\").forEach(function (btn) {\n      btn.addEventListener(\"click\", function () {\n        var dir = btn.getAttribute(\"data-ugc-nav\") === \"next\" ? 1 : -1;\n        track.scrollBy({\n          left: dir * (track.clientWidth * 0.8),\n          behavior: \"smooth\",\n        });\n      });\n    });\n  });\n\n  /* initial state */\n  var first = document.querySelector(\n    '[data-wbx-offers] input[type=\"radio\"]:checked',\n  );\n  if (first) {\n    updateLadders(first);\n    updateSticky(first);\n    updateGiftTray(first);\n  }\n\n  /* deep-linked tier preselect: ?tier=1|2 from advertorials and the quiz */\n  var tierParam = null;\n  try {\n    tierParam = new URLSearchParams(location.search).get(\"tier\");\n  } catch (e) {}\n  if (tierParam) {\n    var tierRadio = document.querySelector(\n      '[data-wbx-offers] input[data-tier=\"' + tierParam + '\"]',\n    );\n    if (tierRadio) {\n      tierRadio.checked = true;\n      syncOffers(tierRadio);\n    }\n  }\n\n  /* cart drawer: the Shop Pay wallet slot is hidden by CSS, but on iOS the\n     wallet renderer's wrapper keeps its reserved height and leaves a dead gap\n     between Check out and Apple Pay. Remove the node (and its emptied\n     wrapper) outright \u2014 works on old Safari without :has() support. */\n  function stripShopPay() {\n    document.querySelectorAll(\"shop-pay-wallet-button\").forEach(function (btn) {\n      var wrap = btn.parentElement;\n      btn.remove();\n      while (\n        wrap &&\n        wrap.matches(\"li, div\") &&\n        wrap.children.length === 0 &&\n        !wrap.matches(\".additional-checkout-buttons\")\n      ) {\n        var next = wrap.parentElement;\n        wrap.remove();\n        wrap = next;\n      }\n    });\n  }\n  stripShopPay();\n  new MutationObserver(stripShopPay).observe(document.body, {\n    childList: true,\n    subtree: true,\n  });\n\n  /* free-gift guard: the exercise guide must only ride along with a 2+ pack.\n     Reconciles after any drawer change: removes the guide if the bundle\n     shrank (so nobody gets charged $25), re-adds it if it went missing. */\n  var WBX_MAIN_VARIANT = null;\n  var wbxGiftReconciling = false;\n  function wbxGiftIds() {\n    var r = document.querySelector(\"[data-wbx-offers] input[data-gift-variant-id]\");\n    if (!r) return null;\n    var main = document.querySelector('[data-wbx-offers] input[type=\"radio\"]');\n    return {\n      gift: parseInt(r.getAttribute(\"data-gift-variant-id\"), 10),\n      main: parseInt(r.getAttribute(\"data-variant-id\"), 10),\n      minQty: parseInt(r.getAttribute(\"data-qty\") || \"2\", 10),\n      url: r.getAttribute(\"data-gift-note-url\") || \"\",\n    };\n  }\n  function wbxReconcileGift() {\n    var ids = wbxGiftIds();\n    if (!ids || wbxGiftReconciling) return;\n    wbxGiftReconciling = true;\n    fetch(\"/cart.js\", { headers: { Accept: \"application/json\" } })\n      .then(function (r) { return r.json(); })\n      .then(function (cart) {\n        var mainQty = 0;\n        var giftLine = null;\n        cart.items.forEach(function (it) {\n          if (it.id === ids.main) mainQty += it.quantity;\n          if (it.id === ids.gift) giftLine = it;\n        });\n        if (giftLine && mainQty < ids.minQty) {\n          return fetch(\"/cart/change.js\", {\n            method: \"POST\",\n            headers: { \"Content-Type\": \"application/json\" },\n            body: JSON.stringify({ id: giftLine.key, quantity: 0, sections: [CART_DRAWER_SECTION_ID] }),\n          })\n            .then(function (r) { return r.json(); })\n            .then(function (res) {\n              var html = res.sections && res.sections[CART_DRAWER_SECTION_ID];\n              if (html) return morphSection(CART_DRAWER_SECTION_ID, html, { mode: \"hydration\" });\n            });\n        }\n        if (!giftLine && mainQty >= ids.minQty) {\n          return fetch(\"/cart/add.js\", {\n            method: \"POST\",\n            headers: { \"Content-Type\": \"application/json\" },\n            body: JSON.stringify({ items: [{ id: ids.gift, quantity: 1, properties: { _gift: \"bundle\" } }], sections: [CART_DRAWER_SECTION_ID] }),\n          })\n            .then(function (r) { return r.json(); })\n            .then(function (res) {\n              var html = res.sections && res.sections[CART_DRAWER_SECTION_ID];\n              if (html) return morphSection(CART_DRAWER_SECTION_ID, html, { mode: \"hydration\" });\n            });\n        }\n      })\n      .catch(function () {})\n      .then(function () {\n        setTimeout(function () { wbxGiftReconciling = false; }, 400);\n      });\n  }\n  var wbxGiftTimer = null;\n  var drawerHost = document.getElementById(\"cart-drawer\");\n  if (drawerHost && wbxGiftIds()) {\n    new MutationObserver(function () {\n      clearTimeout(wbxGiftTimer);\n      wbxGiftTimer = setTimeout(wbxReconcileGift, 500);\n    }).observe(drawerHost, { childList: true, subtree: true });\n    /* heal carts built before the gift existed (or on stale pages):\n       reconcile once on load too */\n    setTimeout(wbxReconcileGift, 1500);\n  }\n\n  /* on-device scroll-extent probe: /products/...?wbdebug=1 shows what\n     extends the page beyond the last section (iOS-only void hunting) */\n  if (location.search.indexOf(\"wbdebug=1\") > -1) {\n    setTimeout(function () {\n      try {\n        var sc = document.scrollingElement;\n        var secs = document.querySelectorAll(\".shopify-section\");\n        var lastSec = 0;\n        secs.forEach(function (s) {\n          var r = s.getBoundingClientRect();\n          lastSec = Math.max(lastSec, r.bottom + sc.scrollTop);\n        });\n        var offenders = [];\n        document.querySelectorAll(\"body *\").forEach(function (el) {\n          if (el.id === \"wb-debug-panel\") return;\n          var cs = getComputedStyle(el);\n          if (cs.display === \"none\") return;\n          var r = el.getBoundingClientRect();\n          var bot = r.bottom + sc.scrollTop;\n          if (bot > lastSec + 40 && r.height > 0) {\n            offenders.push(\n              el.tagName.toLowerCase() +\n                (el.id ? \"#\" + el.id : \"\") +\n                \".\" +\n                String(el.className && el.className.baseVal !== undefined ? el.className.baseVal : el.className || \"\").split(\" \")[0].slice(0, 24) +\n                \" bot=\" + Math.round(bot) +\n                \" h=\" + Math.round(r.height) +\n                \" pos=\" + cs.position +\n                (cs.transform !== \"none\" ? \" tf\" : \"\"),\n            );\n          }\n        });\n        var panel = document.createElement(\"div\");\n        panel.id = \"wb-debug-panel\";\n        panel.style.cssText =\n          \"position:fixed;top:70px;left:8px;right:8px;z-index:99999;background:#111;color:#0f0;font:11px/1.5 monospace;padding:10px;border-radius:8px;max-height:70vh;overflow:auto;white-space:pre-wrap;\";\n        panel.textContent =\n          \"scrollH=\" + sc.scrollHeight +\n          \"\\ninnerH=\" + window.innerHeight +\n          \"\\nlastSectionBottom=\" + Math.round(lastSec) +\n          \"\\nEXTRA=\" + Math.round(sc.scrollHeight - lastSec) +\n          \"\\nbodyH=\" + Math.round(document.body.getBoundingClientRect().height) +\n          \"\\nhtmlOverflowX=\" + getComputedStyle(document.documentElement).overflowX +\n          \"\\noffenders(\" + offenders.length + \"):\\n\" +\n          offenders.slice(0, 15).join(\"\\n\");\n        document.body.appendChild(panel);\n      } catch (e) {\n        alert(\"probe error: \" + e.message);\n      }\n    }, 2500);\n  }\n})();\n"],
  "mappings": "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",
  "names": []
}
