{
  "version": 3,
  "sources": ["/cdn/shop/t/37/assets/product-claude-code.js?cc=v20260709a"],
  "sourcesContent": ["document.addEventListener('DOMContentLoaded', function() {\n  'use strict';\n\n  /* === Product data from inline Liquid script === */\n  var productData = window.ccProductData;\n  /* Safety: if ccProductData not set yet, try to extract from inline script */\n  if (!productData) {\n    var inlineScripts = document.querySelectorAll('script:not([src])');\n    for (var si = 0; si < inlineScripts.length; si++) {\n      if (inlineScripts[si].textContent.indexOf('ccProductData') !== -1) {\n        try { eval(inlineScripts[si].textContent); } catch(ex) {}\n        productData = window.ccProductData;\n        break;\n      }\n    }\n  }\n  if (!productData) { console.warn('ccProductData not found'); return; }\n\n  /* === Quantity Selector === */\n  var qtyVal = document.getElementById('qtyValue');\n  var qtyHidden = document.querySelector('.product-form__input--quantity');\n  var atcBtn = document.getElementById('addToBag');\n  var basePrice = productData.price / 100;\n\n  var qtyMinus = document.getElementById('qtyMinus');\n  var qtyPlus = document.getElementById('qtyPlus');\n\n  function syncQty() {\n    if (qtyHidden) qtyHidden.value = qtyVal.value;\n    updateAtcPrice();\n  }\n\n  if (qtyMinus) {\n    qtyMinus.addEventListener('click', function() {\n      var v = parseInt(qtyVal.value);\n      if (v > 1) {\n        qtyVal.value = v - 1;\n        syncQty();\n      }\n    });\n  }\n  if (qtyPlus) {\n    qtyPlus.addEventListener('click', function() {\n      var v = parseInt(qtyVal.value);\n      if (v < 99) {\n        qtyVal.value = v + 1;\n        syncQty();\n      }\n    });\n  }\n\n  function formatMoney(cents) {\n    /* Match Shopify's ${{amount}} format incl. thousands separators */\n    return '$' + (cents / 100).toFixed(2).replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n  }\n\n  function updateAtcPrice() { /* price removed from button */ }\n\n  /* === AJAX Add to Cart with drawer support === */\n  var ccForm = document.getElementById('cc-product-form');\n  var ccAtcBtn = document.getElementById('addToBag');\n  var isAtcSubmit = false;\n  var mobileAtcRestoreTimer = null;\n\n  /* Track if submit came from our ATC button (not Shop Pay / More payment options) */\n  if (ccAtcBtn) {\n    ccAtcBtn.addEventListener('click', function() { isAtcSubmit = true; });\n  }\n\n  if (ccForm) {\n    ccForm.addEventListener('submit', function(e) {\n      /* Only intercept our ATC button, let payment buttons work normally */\n      if (!isAtcSubmit) return;\n      isAtcSubmit = false;\n      e.preventDefault();\n      /* Availability check must be per-VARIANT, not per-product.\n         Capture the submitted id so response handlers can't race a mid-flight swatch switch. */\n      var submittedVariantId = document.getElementById('variantId').value;\n      var selV = ccFindVariant(submittedVariantId);\n      if (selV ? !selV.available : !productData.available) return;\n\n      var formData = {\n        items: [{\n          id: parseInt(submittedVariantId),\n          quantity: parseInt(document.getElementById('ccQtyHidden').value) || parseInt(qtyVal.value) || 1\n        }]\n      };\n\n      /* Show loading state */\n      if (atcBtn) {\n        atcBtn.disabled = true;\n        atcBtn.classList.add('is-loading');\n        atcBtn.classList.remove('is-added');\n      }\n\n      fetch('/cart/add.js', {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },\n        body: JSON.stringify(formData)\n      })\n      .then(function(res) {\n        return res.json().then(function(d) { return { ok: res.ok, data: d }; });\n      })\n      .then(function(result) {\n        var data = result.data;\n        /* Shopify rejected the add (422 = sold out / not enough stock) \u2014 do NOT show fake success */\n        if (!result.ok) {\n          /* If Shopify says sold out, correct our client-side snapshot so the UI converges to a\n             persistent disabled SOLD OUT instead of an endless retry loop on stale data */\n          var soldOut = !!(data && /sold out/i.test(String(data.description || data.message || '')));\n          if (soldOut) {\n            var subV = ccFindVariant(submittedVariantId);\n            if (subV) subV.available = false;\n            var subInv = (productData.inventory || {})[String(submittedVariantId)];\n            if (subInv) { subInv.available = false; subInv.qty = 0; }\n          }\n          if (atcBtn) {\n            atcBtn.classList.remove('is-loading');\n            var errSpan = atcBtn.querySelector('.btn-atc-text');\n            if (errSpan && String(document.getElementById('variantId').value) === String(submittedVariantId)) {\n              errSpan.textContent = soldOut ? 'SOLD OUT' : 'ERROR - TRY AGAIN';\n            }\n            atcBtn.disabled = false;\n            setTimeout(function() { applyVariantState(document.getElementById('variantId').value); }, 2500);\n          }\n          /* Mirror the failure onto the sticky bar (it may be the only button on screen) */\n          if (mobileAtcRestoreTimer) { clearTimeout(mobileAtcRestoreTimer); mobileAtcRestoreTimer = null; }\n          var mAtcErr = document.getElementById('mobileAtcBtn');\n          if (mAtcErr) mAtcErr.textContent = soldOut ? 'Sold Out' : 'Error - try again';\n          return;\n        }\n        /* Show added state */\n        if (atcBtn) {\n          atcBtn.classList.remove('is-loading');\n          atcBtn.classList.add('is-added');\n          setTimeout(function() {\n            atcBtn.classList.remove('is-added');\n            /* Restore per-variant state (a swatch switch during the animation must win) */\n            applyVariantState(document.getElementById('variantId').value);\n          }, 1500);\n        }\n\n        /* Trigger Stiletto theme's \"Added to cart\" confirmation popup */\n        /* This matches the exact same flow as the default product template */\n        document.dispatchEvent(new CustomEvent('apps:product-added-to-cart'));\n\n        if (window.bogosEmit) {\n          /* data.items[0] is the added line item from /cart/add.js response */\n          var addedItem = data.items ? data.items[0] : data;\n\n          /* Check if confirmation popup exists (theme setting) */\n          var hasConfirmPopup = !!document.querySelector('[data-purchase-confirmation-popup]');\n          var hasQuickCart = !!document.querySelector('.quick-cart');\n\n          if (hasConfirmPopup) {\n            /* Open the \"Added to cart\" confirmation popup (same as default template) */\n            window.bogosEmit('confirmation-popup:open', null, { product: addedItem });\n          } else if (hasQuickCart) {\n            /* Fallback to quick cart drawer */\n            window.bogosEmit('quick-cart:updated');\n            setTimeout(function() {\n              window.bogosEmit('quick-cart:open');\n            }, 300);\n          } else {\n            window.location.href = '/cart';\n          }\n\n          /* Also update cart count in header */\n          fetch('/cart.js', { credentials: 'include' })\n            .then(function(r) { return r.json(); })\n            .then(function(cart) {\n              window.bogosEmit('cart:updated', { cart: cart });\n            });\n        } else {\n          window.location.href = '/cart';\n        }\n      })\n      .catch(function(err) {\n        console.error('Add to cart error:', err);\n        if (atcBtn) {\n          atcBtn.disabled = false;\n          atcBtn.classList.remove('is-loading');\n          var textSpan = atcBtn.querySelector('.btn-atc-text');\n          if (textSpan) textSpan.textContent = 'ERROR - TRY AGAIN';\n          atcBtn.disabled = false;\n          setTimeout(function() { applyVariantState(document.getElementById('variantId').value); }, 2000);\n        }\n        /* Mirror the failure onto the sticky bar */\n        if (mobileAtcRestoreTimer) { clearTimeout(mobileAtcRestoreTimer); mobileAtcRestoreTimer = null; }\n        var mAtcCatch = document.getElementById('mobileAtcBtn');\n        if (mAtcCatch) mAtcCatch.textContent = 'Error - try again';\n      });\n    });\n  }\n\n  /* === Per-variant lookups === */\n  function ccFindVariant(vid) {\n    var list = productData.variants || [];\n    for (var vi = 0; vi < list.length; vi++) {\n      if (String(list[vi].id) === String(vid)) return list[vi];\n    }\n    return null;\n  }\n\n  /* === Per-variant UI state: stock indicator, ATC buttons, delivery row, SKU, prices === */\n  function applyVariantState(vid) {\n    if (!vid) return;\n    var v = ccFindVariant(vid);\n    var inv = (productData.inventory || {})[String(vid)] || null;\n    var available = v ? !!v.available : (inv ? !!inv.available : !!productData.available);\n    var qty = inv ? inv.qty : null;\n    /* 3 Sep 2026: per-VARIANT pre-order (Aure Black etc). Tag = product-level override; otherwise a variant is a\n       pre-order when it is purchasable (continue selling) with zero stock. Falls back to the page-level flag when\n       the template does not emit per-variant policy (older sections). */\n    var isPre;\n    if (inv && typeof inv.policy !== 'undefined') {\n      isPre = !!productData.preorderTag || (available && inv.managed !== false && qty !== null && qty <= 0 && inv.policy === 'continue');\n    } else {\n      isPre = !!productData.isPreorder;\n    }\n    var galleryPre = document.getElementById('galleryPreorderBadge');\n    if (galleryPre) galleryPre.style.display = isPre ? '' : 'none';   /* theme .badge{display} beats the hidden attribute */\n    var galleryOther = document.getElementById('galleryOtherBadge');\n    if (galleryOther) galleryOther.style.display = isPre ? 'none' : '';\n\n    /* Low-stock indicator (\"Limited stock \u2014 N remaining\") */\n    var si = document.getElementById('stockIndicator');\n    var sit = document.getElementById('stockIndicatorText');\n    if (si && sit) {\n      var threshold = (typeof productData.lowStockThreshold === 'number') ? productData.lowStockThreshold : 15;\n      if (available && qty !== null && qty > 0 && qty <= threshold) {\n        sit.innerHTML = 'Limited stock &mdash; ' + qty + ' remaining';\n        si.style.display = '';\n      } else {\n        si.style.display = 'none';\n      }\n    }\n\n    /* Main add-to-bag button */\n    var mainBtnEl = document.getElementById('addToBag');\n    if (mainBtnEl) {\n      mainBtnEl.disabled = !available;\n      mainBtnEl.classList.toggle('btn-atc--preorder', available && isPre);   /* amber pre-order colour, same as server render */\n      mainBtnEl.setAttribute('aria-label', !available ? 'Sold out' : (isPre ? 'Pre-order' : 'Add to bag'));\n      var mainTxt = mainBtnEl.querySelector('.btn-atc-text');\n      if (mainTxt) mainTxt.textContent = !available ? 'SOLD OUT' : (isPre ? 'PRE-ORDER' : 'ADD TO BAG');\n    }\n\n    /* Sticky mobile bar button */\n    var stickyBtnEl = document.getElementById('mobileAtcBtn');\n    if (stickyBtnEl) {\n      var stickyLabel = !available ? 'Sold Out' : (isPre ? 'Pre-Order' : 'Add to Bag');\n      stickyBtnEl.disabled = !available;\n      stickyBtnEl.textContent = stickyLabel;\n      stickyBtnEl.setAttribute('data-default-text', stickyLabel);\n    }\n\n    /* Delivery status row (In Stock / Out of Stock / Pre-Order) */\n    var dr = document.getElementById('deliveryStatusRow');\n    if (dr) {\n      if (!available) {\n        dr.innerHTML = '<span class=\"green-dot\"></span><span><strong>Out of Stock</strong> &mdash; Check back soon</span>';\n      } else if (isPre) {\n        dr.innerHTML = '<span class=\"preorder-dot\"></span><span><strong>Pre-Order</strong> &mdash; ' + (productData.preorderMessage || '') + '</span>';\n      } else {\n        dr.innerHTML = '<span class=\"green-dot\"></span><span><strong>In Stock</strong> &mdash; Leaves warehouse within 2 business days</span>';\n      }\n    }\n\n    /* SKU */\n    var skuEl = document.getElementById('ccSku');\n    if (skuEl && v && v.sku) { skuEl.textContent = v.sku; productData.sku = v.sku; }\n\n    /* Prices (variants can differ) */\n    if (v && typeof v.price === 'number') {\n      var pc = document.querySelector('.price-current');\n      if (pc) pc.textContent = formatMoney(v.price);\n      var hasCmp = v.compare_at_price && v.compare_at_price > v.price;\n      var pw = document.querySelector('.price-was');\n      var ps = document.querySelector('.price-save');\n      if (pw) { if (hasCmp) { pw.textContent = formatMoney(v.compare_at_price); pw.style.display = ''; } else { pw.style.display = 'none'; } }\n      if (ps) { if (hasCmp) { ps.textContent = 'Save ' + formatMoney(v.compare_at_price - v.price); ps.style.display = ''; } else { ps.style.display = 'none'; } }\n      var bnplEl = document.querySelector('.bnpl-box strong');\n      if (bnplEl) bnplEl.textContent = formatMoney(Math.floor(v.price / 4)); /* Afterpay instalment, paid fortnightly: no /wk */\n      var mpEl = document.querySelector('.mobile-atc-price');\n      if (mpEl) mpEl.textContent = formatMoney(v.price);\n      var mwEl = document.querySelector('.mobile-atc-was');\n      if (mwEl) { if (hasCmp) { mwEl.textContent = formatMoney(v.compare_at_price); mwEl.style.display = ''; } else { mwEl.style.display = 'none'; } }\n    }\n\n    /* Dynamic checkout (Shop Pay etc.) can't add an unavailable variant \u2014 hide it */\n    var payBtn = document.querySelector('.shopify-payment-button');\n    if (payBtn) payBtn.style.display = available ? '' : 'none';\n  }\n\n  /* === Colour / Variant Swatches === */\n  var swatches = document.querySelectorAll('.colour-swatch');\n  var colourName = document.getElementById('colourName');\n  var variantInput = document.getElementById('variantId');\n\n  swatches.forEach(function(s) {\n    s.addEventListener('click', function() {\n      swatches.forEach(function(sw) {\n        sw.classList.remove('active');\n        sw.setAttribute('aria-checked', 'false');\n      });\n      s.classList.add('active');\n      s.setAttribute('aria-checked', 'true');\n      if (colourName) colourName.textContent = s.getAttribute('data-colour');\n      if (variantInput && s.getAttribute('data-variant-id')) {\n        variantInput.value = s.getAttribute('data-variant-id');\n      }\n      /* Jump gallery to variant image */\n      var imageId = s.getAttribute('data-image-id');\n      if (imageId) {\n        var matchThumb = document.querySelector('.gallery-thumb[data-image-id=\"' + imageId + '\"]');\n        if (matchThumb) {\n          var idx = parseInt(matchThumb.getAttribute('data-index'));\n          setGalleryImage(idx);\n          /* Scroll thumbnail into view */\n          matchThumb.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' });\n        }\n      }\n      /* Sync stock indicator, ATC state, delivery row, SKU and prices to this variant */\n      var switchedVid = s.getAttribute('data-variant-id');\n      if (switchedVid) {\n        applyVariantState(switchedVid);\n        /* Keep the URL shareable (?variant=) without adding history entries */\n        try {\n          var vUrl = new URL(window.location.href);\n          vUrl.searchParams.set('variant', switchedVid);\n          history.replaceState({}, '', vUrl.toString());\n        } catch (eUrl) {}\n      }\n      updateAtcPrice();\n    });\n  });\n\n  /* Sync per-variant UI on load \u2014 covers ?variant= deep links and self-heals stale markup */\n  if (swatches.length > 0 && variantInput && variantInput.value) {\n    applyVariantState(variantInput.value);\n  }\n\n  /* === Gallery === */\n  var thumbs = document.querySelectorAll('.gallery-thumb');\n  var dots = document.querySelectorAll('.gallery-dot');\n  var mainImage = document.getElementById('galleryMainImage');\n  var lightboxImage = document.getElementById('lightboxImage');\n  var currentImageIndex = 0;\n\n  var dotsBar = document.querySelectorAll('.gallery-dot-main');\n  var galleryPrev = document.getElementById('galleryPrev');\n  var galleryNext = document.getElementById('galleryNext');\n  var totalImages = productData.images.length;\n\n  /* Preload adjacent images for instant switching */\n  function preloadImage(idx) {\n    if (productData.images[idx] && !productData.images[idx]._preloaded) {\n      var img = new Image();\n      img.src = productData.images[idx].src;\n      productData.images[idx]._preloaded = true;\n    }\n  }\n\n  /* Preload first few images on load */\n  for (var pi = 0; pi < Math.min(5, productData.images.length); pi++) { preloadImage(pi); }\n\n  function setGalleryImage(idx) {\n    currentImageIndex = idx;\n    if (productData.images[idx] && mainImage) {\n      mainImage.style.opacity = '0.6';\n      mainImage.src = productData.images[idx].src;\n      mainImage.alt = productData.images[idx].alt;\n      mainImage.onload = function() { mainImage.style.opacity = '1'; };\n    }\n    thumbs.forEach(function(th, i) {\n      th.classList.toggle('active', i === idx);\n      th.setAttribute('aria-selected', i === idx ? 'true' : 'false');\n    });\n    dotsBar.forEach(function(d, i) {\n      d.classList.toggle('active', i === idx);\n    });\n    /* Preload adjacent images */\n    preloadImage((idx + 1) % totalImages);\n    preloadImage((idx - 1 + totalImages) % totalImages);\n    preloadImage((idx + 2) % totalImages);\n  }\n\n  /* Arrow navigation */\n  if (galleryPrev) {\n    galleryPrev.addEventListener('click', function(e) {\n      e.stopPropagation();\n      setGalleryImage((currentImageIndex - 1 + totalImages) % totalImages);\n    });\n  }\n  if (galleryNext) {\n    galleryNext.addEventListener('click', function(e) {\n      e.stopPropagation();\n      setGalleryImage((currentImageIndex + 1) % totalImages);\n    });\n  }\n\n  /* Dots bar click */\n  dotsBar.forEach(function(d) {\n    d.addEventListener('click', function() {\n      setGalleryImage(parseInt(d.getAttribute('data-dot-index')));\n    });\n  });\n\n  thumbs.forEach(function(t) {\n    t.addEventListener('click', function() {\n      var idx = parseInt(t.getAttribute('data-index'));\n      setGalleryImage(idx);\n    });\n  });\n\n  dots.forEach(function(d) {\n    d.addEventListener('click', function() {\n      var idx = parseInt(d.getAttribute('data-dot'));\n      setGalleryImage(idx);\n    });\n  });\n\n  /* === Desktop Tabs === */\n  var tabBtns = document.querySelectorAll('.tab-bar .tab-btn');\n  var tabPanels = document.querySelectorAll('.tabs-desktop .tab-panel');\n\n  tabBtns.forEach(function(btn, i) {\n    btn.addEventListener('click', function() {\n      tabBtns.forEach(function(b) {\n        b.setAttribute('aria-selected', 'false');\n        b.setAttribute('tabindex', '-1');\n      });\n      tabPanels.forEach(function(p) {\n        p.classList.remove('active');\n        p.setAttribute('hidden', '');\n      });\n      btn.setAttribute('aria-selected', 'true');\n      btn.setAttribute('tabindex', '0');\n      if (tabPanels[i]) {\n        tabPanels[i].classList.add('active');\n        tabPanels[i].removeAttribute('hidden');\n      }\n    });\n    btn.addEventListener('keydown', function(e) {\n      var idx = Array.from(tabBtns).indexOf(btn);\n      var next;\n      if (e.key === 'ArrowRight') {\n        next = tabBtns[(idx + 1) % tabBtns.length];\n      } else if (e.key === 'ArrowLeft') {\n        next = tabBtns[(idx - 1 + tabBtns.length) % tabBtns.length];\n      }\n      if (next) {\n        e.preventDefault();\n        next.click();\n        next.focus();\n      }\n    });\n  });\n\n  /* === Mobile Accordion === */\n  document.querySelectorAll('.accordion-btn').forEach(function(btn) {\n    btn.addEventListener('click', function() {\n      var expanded = btn.getAttribute('aria-expanded') === 'true';\n      var content = document.getElementById(btn.getAttribute('aria-controls'));\n      if (expanded) {\n        btn.setAttribute('aria-expanded', 'false');\n        content.classList.remove('is-open');\n        content.style.maxHeight = '0';\n      } else {\n        btn.setAttribute('aria-expanded', 'true');\n        content.style.maxHeight = content.scrollHeight + 'px';\n        /* After transition, switch to is-open for natural height */\n        content.addEventListener('transitionend', function handler() {\n          content.classList.add('is-open');\n          content.style.maxHeight = '';\n          content.removeEventListener('transitionend', handler);\n        });\n      }\n    });\n  });\n\n  /* === FAQ Accordion === */\n  document.querySelectorAll('.faq-question').forEach(function(btn) {\n    btn.addEventListener('click', function() {\n      var expanded = btn.getAttribute('aria-expanded') === 'true';\n      var answer = document.getElementById(btn.getAttribute('aria-controls'));\n      if (expanded) {\n        btn.setAttribute('aria-expanded', 'false');\n        answer.style.maxHeight = '0';\n      } else {\n        btn.setAttribute('aria-expanded', 'true');\n        answer.style.maxHeight = answer.scrollHeight + 'px';\n      }\n    });\n  });\n\n  /* === Mobile Lightbox === */\n  var lightbox = document.getElementById('lightbox');\n  var galleryMainImg = document.getElementById('galleryMainImg');\n  var lightboxCloseBtn = lightbox ? lightbox.querySelector('.lightbox-close') : null;\n  var lightboxDots = lightbox ? lightbox.querySelectorAll('.lightbox-dot') : [];\n\n  function isMobile() { return window.innerWidth < 768; }\n\n  function openLightbox() {\n    if (!lightbox) return;\n    lightbox.classList.add('open');\n    document.body.style.overflow = 'hidden';\n    if (lightboxImage && productData.images[currentImageIndex]) {\n      lightboxImage.src = productData.images[currentImageIndex].srcLarge;\n      lightboxImage.alt = productData.images[currentImageIndex].alt;\n    }\n    lightboxDots.forEach(function(d, i) {\n      d.classList.toggle('active', i === currentImageIndex);\n    });\n  }\n\n  function closeLightbox() {\n    if (!lightbox) return;\n    lightbox.classList.remove('open');\n    document.body.style.overflow = '';\n  }\n\n  /* Open lightbox only on tap (not swipe) \u2014 track if touch moved */\n  var galleryDidSwipe = false;\n  if (galleryMainImg) {\n    galleryMainImg.addEventListener('touchstart', function() {\n      galleryDidSwipe = false;\n    }, { passive: true });\n    galleryMainImg.addEventListener('touchmove', function() {\n      galleryDidSwipe = true;\n    }, { passive: true });\n    galleryMainImg.addEventListener('click', function() {\n      if (isMobile() && !galleryDidSwipe) openLightbox();\n      if (!isMobile()) openLightbox();\n    });\n  }\n  if (lightboxCloseBtn) {\n    /* Use touchend AND click for reliable mobile close */\n    lightboxCloseBtn.addEventListener('touchend', function(e) {\n      e.preventDefault();\n      e.stopPropagation();\n      closeLightbox();\n    }, { passive: false });\n    lightboxCloseBtn.addEventListener('click', function(e) {\n      e.stopPropagation();\n      closeLightbox();\n    });\n  }\n  if (lightbox) {\n    lightbox.addEventListener('click', function(e) {\n      if (e.target === lightbox) closeLightbox();\n    });\n  }\n\n  document.addEventListener('keydown', function(e) {\n    if (e.key === 'Escape' && lightbox && lightbox.classList.contains('open')) {\n      closeLightbox();\n    }\n  });\n\n  lightboxDots.forEach(function(d) {\n    d.addEventListener('click', function() {\n      var idx = parseInt(d.getAttribute('data-index'));\n      if (lightboxImage && productData.images[idx]) {\n        lightboxImage.src = productData.images[idx].srcLarge;\n        lightboxImage.alt = productData.images[idx].alt;\n      }\n      lightboxDots.forEach(function(dd, i) {\n        dd.classList.toggle('active', i === idx);\n      });\n      currentImageIndex = idx;\n    });\n  });\n\n  /* Touch swipe for main gallery (horizontal to navigate images) */\n  var galleryTouchStartX = 0;\n  var galleryTouchStartY = 0;\n  if (galleryMainImg) {\n    galleryMainImg.addEventListener('touchstart', function(e) {\n      galleryTouchStartX = e.touches[0].clientX;\n      galleryTouchStartY = e.touches[0].clientY;\n    }, { passive: true });\n    galleryMainImg.addEventListener('touchend', function(e) {\n      var diffX = e.changedTouches[0].clientX - galleryTouchStartX;\n      var diffY = e.changedTouches[0].clientY - galleryTouchStartY;\n      if (Math.abs(diffX) > Math.abs(diffY) && Math.abs(diffX) > 50) {\n        if (diffX < 0) {\n          setGalleryImage((currentImageIndex + 1) % totalImages);\n        } else {\n          setGalleryImage((currentImageIndex - 1 + totalImages) % totalImages);\n        }\n      }\n    }, { passive: true });\n  }\n\n  /* Touch swipe for lightbox (horizontal to navigate, vertical down to close) */\n  var lightboxTouchStartX = 0;\n  var lightboxTouchStartY = 0;\n  var lightboxTouchOnClose = false;\n  if (lightbox) {\n    lightbox.addEventListener('touchstart', function(e) {\n      /* Skip if touch started on close button */\n      lightboxTouchOnClose = e.target.closest('.lightbox-close') !== null;\n      lightboxTouchStartX = e.touches[0].clientX;\n      lightboxTouchStartY = e.touches[0].clientY;\n    }, { passive: true });\n    lightbox.addEventListener('touchend', function(e) {\n      if (lightboxTouchOnClose) return; /* Let close button handle it */\n      var diffX = e.changedTouches[0].clientX - lightboxTouchStartX;\n      var diffY = e.changedTouches[0].clientY - lightboxTouchStartY;\n      if (Math.abs(diffY) > Math.abs(diffX) && diffY > 80) {\n        /* Swipe down = close lightbox */\n        closeLightbox();\n      } else if (Math.abs(diffX) > Math.abs(diffY) && Math.abs(diffX) > 50) {\n        /* Horizontal swipe = navigate images in lightbox */\n        var totalImages = productData.images.length;\n        if (diffX < 0) {\n          currentImageIndex = (currentImageIndex + 1) % totalImages;\n        } else {\n          currentImageIndex = (currentImageIndex - 1 + totalImages) % totalImages;\n        }\n        if (lightboxImage && productData.images[currentImageIndex]) {\n          lightboxImage.src = productData.images[currentImageIndex].srcLarge;\n          lightboxImage.alt = productData.images[currentImageIndex].alt;\n        }\n        lightboxDots.forEach(function(d, i) { d.classList.toggle('active', i === currentImageIndex); });\n        /* Also update main gallery behind lightbox */\n        if (mainImage && productData.images[currentImageIndex]) {\n          mainImage.src = productData.images[currentImageIndex].src;\n          mainImage.alt = productData.images[currentImageIndex].alt;\n        }\n        thumbBtns.forEach(function(t, i) { t.classList.toggle('active', i === currentImageIndex); });\n        var dots = document.querySelectorAll('.gallery-dot');\n        dots.forEach(function(d, i) { d.classList.toggle('active', i === currentImageIndex); });\n      }\n    }, { passive: true });\n  }\n\n  /* === Lightbox Zoom (click/double-tap + scroll wheel + pinch) === */\n  var lbImgArea = document.querySelector('.lightbox-img-area');\n  var lbImg = lightboxImage;\n  var lbZoom = 1;\n  var lbPanX = 0, lbPanY = 0;\n  var lbIsDragging = false, lbDragStartX = 0, lbDragStartY = 0, lbStartPanX = 0, lbStartPanY = 0;\n\n  function lbApplyTransform() {\n    if (lbImg) lbImg.style.transform = 'scale(' + lbZoom + ') translate(' + lbPanX + 'px, ' + lbPanY + 'px)';\n    if (lbImgArea) lbImgArea.classList.toggle('is-zoomed', lbZoom > 1);\n  }\n\n  function lbResetZoom() {\n    lbZoom = 1; lbPanX = 0; lbPanY = 0;\n    lbApplyTransform();\n  }\n\n  /* Click to toggle zoom */\n  if (lbImgArea) {\n    lbImgArea.addEventListener('dblclick', function(e) {\n      e.stopPropagation();\n      if (lbZoom > 1) {\n        lbResetZoom();\n      } else {\n        lbZoom = 2.5;\n        /* Zoom towards click position */\n        var rect = lbImgArea.getBoundingClientRect();\n        var x = (e.clientX - rect.left) / rect.width - 0.5;\n        var y = (e.clientY - rect.top) / rect.height - 0.5;\n        lbPanX = -x * 100;\n        lbPanY = -y * 100;\n        lbApplyTransform();\n      }\n    });\n\n    /* Scroll wheel zoom (desktop) */\n    lbImgArea.addEventListener('wheel', function(e) {\n      e.preventDefault();\n      lbZoom += e.deltaY < 0 ? 0.3 : -0.3;\n      lbZoom = Math.max(1, Math.min(5, lbZoom));\n      if (lbZoom <= 1) { lbPanX = 0; lbPanY = 0; }\n      lbApplyTransform();\n    }, { passive: false });\n\n    /* Drag to pan when zoomed */\n    lbImgArea.addEventListener('mousedown', function(e) {\n      if (lbZoom <= 1) return;\n      lbIsDragging = true;\n      lbDragStartX = e.clientX; lbDragStartY = e.clientY;\n      lbStartPanX = lbPanX; lbStartPanY = lbPanY;\n      e.preventDefault();\n    });\n    window.addEventListener('mousemove', function(e) {\n      if (!lbIsDragging) return;\n      lbPanX = lbStartPanX + (e.clientX - lbDragStartX) / lbZoom;\n      lbPanY = lbStartPanY + (e.clientY - lbDragStartY) / lbZoom;\n      lbApplyTransform();\n    });\n    window.addEventListener('mouseup', function() { lbIsDragging = false; });\n\n    /* Pinch-to-zoom (mobile) */\n    var lbPinchStartDist = 0;\n    var lbPinchStartZoom = 1;\n    lbImgArea.addEventListener('touchstart', function(e) {\n      if (e.touches.length === 2) {\n        var dx = e.touches[0].clientX - e.touches[1].clientX;\n        var dy = e.touches[0].clientY - e.touches[1].clientY;\n        lbPinchStartDist = Math.sqrt(dx * dx + dy * dy);\n        lbPinchStartZoom = lbZoom;\n      }\n    }, { passive: true });\n    lbImgArea.addEventListener('touchmove', function(e) {\n      if (e.touches.length === 2) {\n        e.preventDefault();\n        var dx = e.touches[0].clientX - e.touches[1].clientX;\n        var dy = e.touches[0].clientY - e.touches[1].clientY;\n        var dist = Math.sqrt(dx * dx + dy * dy);\n        lbZoom = Math.max(1, Math.min(5, lbPinchStartZoom * (dist / lbPinchStartDist)));\n        if (lbZoom <= 1) { lbPanX = 0; lbPanY = 0; }\n        lbApplyTransform();\n      }\n    }, { passive: false });\n  }\n\n  /* Reset zoom when closing lightbox or switching images */\n  var origCloseLightbox = closeLightbox;\n  closeLightbox = function() { lbResetZoom(); origCloseLightbox(); };\n\n  /* === Smooth scroll to reviews === */\n  var reviewLink = document.querySelector('.review-link, .jdgm-prev-badge');\n  if (reviewLink) {\n    reviewLink.addEventListener('click', function(e) {\n      var reviewsEl = document.getElementById('reviews');\n      if (reviewsEl) {\n        e.preventDefault();\n        reviewsEl.scrollIntoView({ behavior: 'smooth' });\n      }\n    });\n  }\n\n  /* === Scroll Reveal (IntersectionObserver) === */\n  if ('IntersectionObserver' in window) {\n    var reveals = document.querySelectorAll('.reveal');\n    var observer = new IntersectionObserver(function(entries) {\n      entries.forEach(function(entry) {\n        if (entry.isIntersecting) {\n          entry.target.classList.add('visible');\n          observer.unobserve(entry.target);\n        }\n      });\n    }, { threshold: 0.1 });\n    reveals.forEach(function(el) { observer.observe(el); });\n  } else {\n    document.querySelectorAll('.reveal').forEach(function(el) {\n      el.classList.add('visible');\n    });\n  }\n\n  /* === Wishlist button === */\n  var wishlistBtn = document.querySelector('[aria-label*=\"wishlist\"]');\n  if (wishlistBtn) {\n    wishlistBtn.addEventListener('click', function(e) {\n      e.preventDefault();\n      var svg = wishlistBtn.querySelector('svg');\n      if (wishlistBtn.classList.contains('is-wishlisted')) {\n        wishlistBtn.classList.remove('is-wishlisted');\n        if (svg) { svg.style.fill = 'none'; svg.style.stroke = '#333'; }\n      } else {\n        wishlistBtn.classList.add('is-wishlisted');\n        if (svg) { svg.style.fill = '#C31818'; svg.style.stroke = '#C31818'; }\n      }\n    });\n  }\n\n  /* === Share button === */\n  var shareBtn = document.querySelector('[aria-label*=\"Share\"]');\n  if (shareBtn) {\n    shareBtn.addEventListener('click', function(e) {\n      e.preventDefault();\n      var shareData = {\n        title: productData.title,\n        url: window.location.href\n      };\n      if (navigator.share) {\n        navigator.share(shareData);\n      } else {\n        /* Fallback: copy URL to clipboard */\n        navigator.clipboard.writeText(window.location.href).then(function() {\n          var originalHTML = shareBtn.innerHTML;\n          shareBtn.innerHTML = '<svg viewBox=\"0 0 24 24\" width=\"18\" height=\"18\" stroke=\"#333\" fill=\"none\" stroke-width=\"1.5\"><polyline points=\"20 6 9 17 4 12\"/></svg>';\n          setTimeout(function() { shareBtn.innerHTML = originalHTML; }, 1500);\n        });\n      }\n    });\n  }\n\n  /* === Mobile ATC button === */\n  var mobileAtcBar = document.getElementById('mobileAtc');\n  var mobileAtcBtn = document.getElementById('mobileAtcBtn');\n  var mainAtcButton = document.getElementById('addToBag');\n\n  /* Show/hide sticky bar based on main ATC visibility */\n  if (mobileAtcBar && mainAtcButton && 'IntersectionObserver' in window) {\n    mobileAtcBar.style.display = 'none';\n    var atcObserver = new IntersectionObserver(function(entries) {\n      entries.forEach(function(entry) {\n        /* Show sticky bar when main ATC is NOT visible \u2014 desktop and mobile */\n        mobileAtcBar.style.display = entry.isIntersecting ? 'none' : 'block';\n      });\n    }, { threshold: 0 });\n    atcObserver.observe(mainAtcButton);\n  }\n\n  if (mobileAtcBtn && productData.available) {\n    mobileAtcBtn.addEventListener('click', function() {\n      var mainBtn = document.getElementById('addToBag');\n      if (mainBtn) {\n        mainBtn.click();\n        mobileAtcBtn.textContent = 'Adding...';\n        if (mobileAtcRestoreTimer) clearTimeout(mobileAtcRestoreTimer);\n        mobileAtcRestoreTimer = setTimeout(function() {\n          mobileAtcRestoreTimer = null;\n          mobileAtcBtn.textContent = mobileAtcBtn.getAttribute('data-default-text') || 'Add to Bag';\n        }, 2000);\n      }\n    });\n  }\n\n  /* === Cross-sell via Recommendations API (client-side fetch) === */\n  var crossSellEl = document.getElementById('crossSellMini');\n  if (crossSellEl) {\n    var sectionUrl = crossSellEl.getAttribute('data-section-url');\n    if (sectionUrl) {\n      fetch(sectionUrl)\n        .then(function(r) { return r.text(); })\n        .then(function(html) {\n          var parser = new DOMParser();\n          var doc = parser.parseFromString(html, 'text/html');\n          var newRow = doc.querySelector('.cross-sell-row');\n          if (newRow && newRow.children.length > 0) {\n            var currentRow = document.getElementById('crossSellRow');\n            if (currentRow) currentRow.innerHTML = newRow.innerHTML;\n          }\n        })\n        .catch(function() { /* Silently fail \u2014 cross-sell is non-critical */ });\n    }\n  }\n\n  /* === Recently Viewed (localStorage) === */\n  var recentlyEl = document.getElementById('recentlyViewed');\n  if (recentlyEl) {\n    try {\n      var KEY = 'cf_recently_viewed';\n      var stored = JSON.parse(localStorage.getItem(KEY) || '[]');\n      var current = {\n        id: productData.id,\n        title: productData.title,\n        price: formatMoney(productData.price),\n        url: '/products/' + productData.handle,\n        image: productData.images.length > 0 ? productData.images[0].src : ''\n      };\n\n      /* Remove current product if already in list, then prepend */\n      stored = stored.filter(function(p) { return p.id !== current.id; });\n      stored.unshift(current);\n      stored = stored.slice(0, 10);\n      localStorage.setItem(KEY, JSON.stringify(stored));\n\n      /* Render recently viewed (skip current product) */\n      var html = '';\n      stored.forEach(function(p) {\n        if (p.id === productData.id) return;\n        html += '<a href=\"' + p.url + '\" class=\"recently-card\">';\n        html += '<div class=\"recently-card-img\">';\n        if (p.image) {\n          html += '<img src=\"' + p.image + '\" alt=\"' + p.title + '\" loading=\"lazy\" width=\"180\" height=\"140\">';\n        } else {\n          html += p.title;\n        }\n        html += '</div>';\n        html += '<div class=\"recently-card-body\">';\n        html += '<p class=\"recently-card-name\">' + p.title + '</p>';\n        html += '<p class=\"recently-card-price\">' + p.price + '</p>';\n        html += '</div></a>';\n      });\n\n      if (html) {\n        recentlyEl.innerHTML = html;\n      } else {\n        /* Hide section if no recently viewed items */\n        var recentlySection = recentlyEl.closest('.recently-section');\n        if (recentlySection) recentlySection.style.display = 'none';\n      }\n    } catch (e) {\n      /* localStorage not available \u2014 hide section */\n      var sect = recentlyEl.closest('.recently-section');\n      if (sect) sect.style.display = 'none';\n    }\n  }\n\n  /* ===== POSTCODE DELIVERY DRAWER ===== */\n  var postcodeOverlay = document.getElementById('postcodeOverlay');\n  var postcodeDrawer = document.getElementById('postcodeDrawer');\n  var postcodeInput = document.getElementById('postcodeInput');\n  var postcodeSubmit = document.getElementById('postcodeSubmit');\n  var postcodeCloseBtn = document.getElementById('postcodeClose');\n  var postcodeResult = document.getElementById('postcodeResult');\n  var postcodeResultTitle = document.getElementById('postcodeResultTitle');\n  var postcodeResultDetail = document.getElementById('postcodeResultDetail');\n\n  function openDrawer() {\n    if (!postcodeOverlay || !postcodeDrawer) return;\n    postcodeOverlay.classList.add('open');\n    postcodeDrawer.classList.add('open');\n    if (postcodeInput) postcodeInput.value = '';\n    if (postcodeResult) postcodeResult.classList.remove('show', 'error');\n    document.body.style.overflow = 'hidden';\n    setTimeout(function() { if (postcodeInput) postcodeInput.focus(); }, 350);\n  }\n\n  function closeDrawer() {\n    if (postcodeOverlay) postcodeOverlay.classList.remove('open');\n    if (postcodeDrawer) postcodeDrawer.classList.remove('open');\n    document.body.style.overflow = '';\n  }\n\n  var deliveryBtn = document.querySelector('.delivery-check-btn');\n  if (deliveryBtn) deliveryBtn.addEventListener('click', openDrawer);\n  if (postcodeCloseBtn) postcodeCloseBtn.addEventListener('click', closeDrawer);\n  if (postcodeOverlay) postcodeOverlay.addEventListener('click', closeDrawer);\n\n  var SHIPPING_API = 'https://mainfreight-carrier-service.cfcreation.workers.dev/quote';\n  var isChecking = false;\n\n  function checkPostcode() {\n    if (!postcodeInput || isChecking) return;\n    var code = postcodeInput.value.trim();\n    if (code.length !== 4 || !/^\\d{4}$/.test(code)) {\n      if (postcodeResult) postcodeResult.className = 'postcode-result show error';\n      if (postcodeResultTitle) postcodeResultTitle.textContent = 'Invalid postcode';\n      if (postcodeResultDetail) postcodeResultDetail.innerHTML = 'Please enter a valid 4-digit NZ postcode.';\n      return;\n    }\n\n    var sku = productData && productData.sku;\n    if (!sku) return;\n\n    isChecking = true;\n    if (postcodeResult) postcodeResult.className = 'postcode-result show';\n    if (postcodeResultTitle) postcodeResultTitle.innerHTML = '<span class=\"postcode-result-highlight\">Calculating...</span>';\n    if (postcodeResultDetail) postcodeResultDetail.innerHTML = 'Getting your shipping rate';\n    if (postcodeSubmit) postcodeSubmit.disabled = true;\n\n    fetch(SHIPPING_API, {\n      method: 'POST',\n      headers: { 'Content-Type': 'application/json' },\n      body: JSON.stringify({ postcode: code, sku: sku, price: (productData && productData.price) || 0 })\n    })\n    .then(function(res) { return res.json(); })\n    .then(function(data) {\n      isChecking = false;\n      if (postcodeSubmit) postcodeSubmit.disabled = false;\n      if (data.error) {\n        if (postcodeResult) postcodeResult.className = 'postcode-result show error';\n        if (postcodeResultTitle) postcodeResultTitle.textContent = 'Unable to calculate';\n        if (postcodeResultDetail) postcodeResultDetail.innerHTML = 'Shipping will be calculated at checkout.';\n        return;\n      }\n      if (postcodeResult) postcodeResult.className = 'postcode-result show';\n      if (postcodeResultTitle) postcodeResultTitle.innerHTML = '<span class=\"postcode-result-highlight\">' + data.region + '</span> \\u2014 ' + data.price;\n      var detail = 'Estimated ' + data.days + '. Shipped via Mainfreight from Auckland. Signature required on delivery.';\n      var isAuckland = data.region === 'Auckland';\n      if (isAuckland) {\n        detail += '<br><strong style=\"color:#0B3B3E;\">Free Click & Collect available</strong> from our Albany showroom, Unit B, 19 Arrenway Drive, Rosedale.';\n      }\n      detail += '<br><span class=\"postcode-region-tag ' + (isAuckland ? 'auckland' : 'standard') + '\">' +\n        (isAuckland ? 'Auckland Region' : 'Mainfreight Home Delivery') +\n        '</span>';\n      if (postcodeResultDetail) postcodeResultDetail.innerHTML = detail;\n    })\n    .catch(function() {\n      isChecking = false;\n      if (postcodeSubmit) postcodeSubmit.disabled = false;\n      if (postcodeResult) postcodeResult.className = 'postcode-result show error';\n      if (postcodeResultTitle) postcodeResultTitle.textContent = 'Unable to calculate';\n      if (postcodeResultDetail) postcodeResultDetail.innerHTML = 'Please try again or shipping will be calculated at checkout.';\n    });\n  }\n\n  if (postcodeSubmit) postcodeSubmit.addEventListener('click', checkPostcode);\n  if (postcodeInput) {\n    postcodeInput.addEventListener('keydown', function(e) {\n      if (e.key === 'Enter') checkPostcode();\n    });\n    postcodeInput.addEventListener('input', function() {\n      this.value = this.value.replace(/[^0-9]/g, '');\n    });\n  }\n\n});\n"],
  "mappings": "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",
  "names": ["si", "totalImages", "dots", "html"]
}
