{
  "version": 3,
  "sources": ["/cdn/shop/t/3/assets/theme.js?kkk=84708"],
  "sourcesContent": ["window.theme = window.theme || {};\n\n// Mega Menu Hover Shows Collection Images without layout jump\ndocument.addEventListener('DOMContentLoaded', function() {\n  var children = document.querySelectorAll('.desktop-nav__child');\n\n  children.forEach(function(child) {\n    // find the preview image in this mega menu\n    var preview = child.closest('.desktop-nav__mega').querySelector('.desktop-nav__preview img');\n\n    child.addEventListener('mouseenter', function() {\n      if (child.dataset.collectionImage) {\n        preview.src = child.dataset.collectionImage;\n\n        // show image without changing layout\n        preview.style.visibility = 'visible';\n        preview.style.opacity = '1';\n      }\n    });\n\n    child.addEventListener('mouseleave', function() {\n      // hide image without collapsing container\n      preview.style.visibility = 'hidden';\n      preview.style.opacity = '0';\n    });\n  });\n});\n\n\n/* Toggle Both Drawer Open + Close Functionality */\nfunction getDrawer(id) {\n  return document.getElementById(id);\n}\n\nlet __drawerScrollY = 0; // added line \u2014 keeps track of scroll position\n\nfunction setDrawerOpen(id, open) {\n  const drawer = getDrawer(id);\n  if (!drawer) return;\n\n  if (open) {\n    // 1. Calculate the real limits (ignore the bounce)\n    const maxScroll = Math.max(0, document.documentElement.scrollHeight - window.innerHeight);\n    let currentScroll = window.scrollY || window.pageYOffset || 0;\n\n    // 2. Clamp the value: prevents locking while \"bouncing\" past the footer\n    currentScroll = Math.max(0, Math.min(currentScroll, maxScroll));\n    __drawerScrollY = currentScroll;\n\n    // 3. Lock the body\n    document.body.style.top = `-${__drawerScrollY}px`;\n    document.body.style.position = 'fixed';\n    document.body.style.width = '100%';\n    document.body.style.height = 'auto'; \n  } else {\n    // unlock and restore position\n    document.body.style.position = '';\n    document.body.style.top = '';\n    document.body.style.width = '';\n    document.body.style.height = '';\n    window.scrollTo(0, __drawerScrollY || 0);\n  }\n\n  drawer.classList.toggle('is-open', !!open);\n  document.body.classList.toggle('drawer-open', !!open);\n}\n\nfunction toggleDrawer(id) {\n  const drawer = getDrawer(id);\n  if (!drawer) return;\n  const open = !drawer.classList.contains('is-open');\n  setDrawerOpen(id, open);\n}\n\n/* Drawer APIs */\nfunction toggleCartDrawer() { toggleDrawer('CartDrawer'); }\nwindow.openCartDrawer  = function () { setDrawerOpen('CartDrawer', true); };\nwindow.closeCartDrawer = function () { setDrawerOpen('CartDrawer', false); };\n\nfunction toggleBurgerDrawer() { toggleDrawer('BurgerDrawer'); }\nwindow.openBurgerDrawer  = function () { setDrawerOpen('BurgerDrawer', true); };\nwindow.closeBurgerDrawer = function () { setDrawerOpen('BurgerDrawer', false); };\n\ndocument.addEventListener('DOMContentLoaded', function () {\n  const cartDrawer = document.getElementById('CartDrawer');\n\n  /* Close button binding for both drawers */\n  document.querySelectorAll('.js-drawer-close').forEach(button => {\n    button.addEventListener('click', function () {\n      const drawer = this.closest('.drawer');\n      if (drawer) {\n        // \uD83D\uDD27 CHANGED: route through setDrawerOpen to properly unlock body on iOS\n        setDrawerOpen(drawer.id, false);\n      }\n    });\n  });\n\n  /* Overlay click closes drawer */\n  document.querySelectorAll('.drawer__overlay').forEach(overlay => {\n    overlay.addEventListener('click', () => {\n      const drawer = overlay.previousElementSibling;\n      if (drawer && drawer.classList.contains('drawer')) {\n        // \uD83D\uDD27 CHANGED: route through setDrawerOpen to properly unlock body on iOS\n        setDrawerOpen(drawer.id, false);\n      } else {\n        // fallback in case DOM structure changes\n        setDrawerOpen('CartDrawer', false);\n        setDrawerOpen('BurgerDrawer', false);\n      }\n    });\n  });\n\n  /* Cart drawer Remove-X  */\n  if (cartDrawer) {\n    cartDrawer.addEventListener('submit', function (event) {\n      const form = event.target;\n      if (!form.classList.contains('cart-item__remove-form')) return;\n\n      event.preventDefault();\n\n      const formData = new FormData(form);\n\n      fetch('/cart/change.js', {\n        method: 'POST',\n        body: formData,\n        headers: { 'Accept': 'application/json' }\n      })\n        .then(response => {\n          if (!response.ok) throw new Error('Cart change failed');\n          return response.json();\n        })\n        .then(() => {\n          refreshCartDrawer();\n        })\n        .catch(error => {\n          console.error('Error updating cart:', error);\n        });\n    });\n  }\n\n\n  /* Refresh cart drawer contents */\n  window.refreshCartDrawer = function() {\n    return fetch('/cart?section_id=drawer-cart')\n      .then(response => response.text())\n      .then(html => {\n        const parser = new DOMParser();\n        const doc = parser.parseFromString(html, 'text/html');\n        const newDrawer = doc.getElementById('CartDrawer');\n        if (!newDrawer) return;\n\n        cartDrawer.innerHTML = newDrawer.innerHTML;\n\n        // Re-bind close buttons inside refreshed content\n        cartDrawer.querySelectorAll('.js-drawer-close').forEach(button => {\n          button.addEventListener('click', function () {\n            // \uD83D\uDD27 CHANGED: ensure closing uses setDrawerOpen to unlock body\n            setDrawerOpen('CartDrawer', false);\n          });\n        });\n\n        // Re-bind remove forms\n        bindRemoveForms();\n      });\n  }\n\n  function bindRemoveForms() {\n    if (!cartDrawer) return;\n    cartDrawer.querySelectorAll('.cart-item__remove-form').forEach(form => {\n      form.addEventListener('submit', function (event) {\n        event.preventDefault();\n        const formData = new FormData(form);\n        fetch('/cart/change.js', {\n          method: 'POST',\n          body: formData,\n          headers: { 'Accept': 'application/json' }\n        })\n          .then(response => {\n            if (!response.ok) throw new Error('Cart change failed');\n            return response.json();\n          })\n          .then(() => {\n            refreshCartDrawer();\n          })\n          .catch(error => {\n            console.error('Error updating cart:', error);\n          });\n      });\n    });\n  }\n\n\n  /* Quantity Selector Logic */\n\nfunction updateCartQuantity(key, quantity) {\n    // 1. Visual Feedback: Change cursor to wait\n    document.body.style.cursor = 'wait';\n\n    fetch('/cart/change.js', {\n      method: 'POST',\n      headers: { \n        'Content-Type': 'application/json',\n        'Accept': 'application/json' \n      },\n      body: JSON.stringify({\n        id: key,\n        quantity: quantity\n      })\n    })\n    .then(response => {\n      if (!response.ok) throw new Error('Quantity update failed');\n      return response.json();\n    })\n    .then(() => {\n      document.body.style.cursor = 'default';\n\n      // 2. LOGIC: Decide what to refresh\n      const isCartPage = document.querySelector('.cartpage');\n\n      if (isCartPage) {\n        // Option A: If on the full Cart Page, reload to update totals/layouts accurately\n        window.location.reload(); \n      } else {\n        // Option B: If in the Drawer, use the smooth refresh function\n        if (typeof window.refreshCartDrawer === 'function') {\n           window.refreshCartDrawer();\n        }\n      }\n    })\n    .catch(error => {\n      console.error('Error updating quantity:', error);\n      document.body.style.cursor = 'default';\n    });\n  }\n\n  // 3. Global Event Listener (Delegation)\n  // This listens for clicks on ANY quantity button on the whole site\n  document.addEventListener('click', function(e) {\n    const btn = e.target.closest('.quantity-btn');\n    if (!btn) return;\n\n    // Find the matching input\n    const wrapper = btn.closest('.quantity-selector');\n    const input = wrapper.querySelector('.quantity-input');\n    if (!input) return;\n\n    const currentQty = parseInt(input.value);\n    \n    // Get the ID (support both data-id and data-key)\n    const key = btn.dataset.id || input.dataset.key;\n    const action = btn.dataset.action;\n\n    let newQty = currentQty;\n    if (action === 'increase') {\n      newQty += 1;\n    } else if (action === 'decrease') {\n      newQty = Math.max(0, currentQty - 1);\n    }\n\n    // Update the input number visibly immediately\n    input.value = newQty;\n\n    // Send the data to Shopify\n    updateCartQuantity(key, newQty);\n  });\n\n  // 4. Global Listener for Typing in the Input\n  document.addEventListener('change', function(e) {\n    if (e.target.classList.contains('quantity-input')) {\n      const key = e.target.dataset.key;\n      const newQty = parseInt(e.target.value);\n      updateCartQuantity(key, newQty);\n    }\n  });\n\n  /* Burger toggle */\n  const burgerToggle = document.querySelector('.js-burger-toggle');\n  if (burgerToggle) {\n    burgerToggle.addEventListener('click', toggleBurgerDrawer);\n  }\n\n  /* Cart toggle */\n  const cartToggle = document.querySelector('.js-cart-toggle');\n  if (cartToggle) {\n    cartToggle.addEventListener('click', toggleCartDrawer);\n  }\n\n\n/* product reccs */\n(function () {\n  function hydrate(el) {\n    var base = el.dataset.baseUrl || \"/recommendations/products\";\n    var url = base + \"?product_id=\" + el.dataset.productId + \"&section_id=\" + el.dataset.sectionId;\n    fetch(url)\n      .then(function (r) { return r.text(); })\n      .then(function (html) {\n        var tmp = document.createElement(\"div\");\n        tmp.innerHTML = html;\n        var block = tmp.querySelector(\".product-recommendations\");\n        if (block) { el.replaceWith(block); } else { el.remove(); }\n      })\n      .catch(function () { el.remove(); });\n  }\n\n  function init(container) {\n    (container || document).querySelectorAll(\".product-recommendations-loader\").forEach(hydrate);\n  }\n\n  if (document.readyState === \"loading\") {\n    document.addEventListener(\"DOMContentLoaded\", function () { init(); });\n  } else {\n    init();\n  }\n  document.addEventListener(\"shopify:section:load\", function (e) { init(e.target); });\n  document.addEventListener(\"shopify:section:select\", function (e) { init(e.target); });\n})();\n\n\n\n\n/* Homepage slideshow */\n  const slideshows = document.querySelectorAll('.slide');\n\n  slideshows.forEach((slide, si) => {\n    const track  = slide.querySelector('.slide__track');\n    const items  = slide.querySelectorAll('.slide__item');\n\n    if (!track || items.length === 0) {\n      return;\n    }\n\n    let index = 0;\n\n    function goToSlide(i) {\n      index = (i + items.length) % items.length;\n      track.style.transform = `translateX(-${index * 100}%)`;\n      slide.querySelectorAll('.slide__dot').forEach((dot, di) => {\n        dot.classList.toggle('active', di === index);\n      });\n    }\n\n    const dotsContainer = document.createElement('div');\n    dotsContainer.className = 'slide__dots';\n    items.forEach((_, i) => {\n      const dot = document.createElement('button');\n      dot.className = 'slide__dot' + (i === 0 ? ' active' : '');\n      dot.addEventListener('click', () => goToSlide(i));\n      dotsContainer.appendChild(dot);\n    });\n    slide.appendChild(dotsContainer);\n\n    const prevBtn = document.createElement('button');\n    prevBtn.className = 'slide__arrow slide__arrow--prev';\n    prevBtn.innerHTML = '\u2039';\n    prevBtn.addEventListener('click', () => goToSlide(index - 1));\n\n    const nextBtn = document.createElement('button');\n    nextBtn.className = 'slide__arrow slide__arrow--next';\n    nextBtn.innerHTML = '\u203A';\n    nextBtn.addEventListener('click', () => goToSlide(index + 1));\n\n    slide.appendChild(prevBtn);\n    slide.appendChild(nextBtn);\n\n    // --- minimal swipe (touch + mouse), dots safe ---\n    let startX = 0, startY = 0, dragging = false;\n    const THRESHOLD = 50;   // pixels to trigger a slide\n    const ANGLE_GUARD = 10; // ignore tiny wiggles\n\n    function onDown(e) {\n      // ignore drags that start on dots/arrows\n      if (e.target.closest('.slide__dots') || e.target.closest('.slide__arrow')) return;\n      const p = e.touches ? e.touches[0] : e;\n      startX = p.clientX; startY = p.clientY; dragging = true;\n    }\n    function onMove(e) {\n      if (!dragging) return;\n      const p = e.touches ? e.touches[0] : e;\n      const dx = p.clientX - startX; const dy = p.clientY - startY;\n      if (Math.abs(dy) > Math.abs(dx)) return;        // let page scroll vertically\n      if (Math.abs(dx) > ANGLE_GUARD && e.cancelable) e.preventDefault(); // allow horizontal swipe\n    }\n    function onUp(e) {\n      if (!dragging) return;\n      dragging = false;\n      const p = (e.changedTouches && e.changedTouches[0]) || e;\n      const dx = p.clientX - startX; const dy = p.clientY - startY;\n      if (Math.abs(dx) > Math.abs(dy) && Math.abs(dx) > THRESHOLD) {\n        goToSlide(index + (dx < 0 ? 1 : -1));\n      }\n    }\n\n    // bind to the TRACK only so dots remain clickable\n    track.addEventListener('touchstart', onDown, { passive: true });\n    track.addEventListener('touchmove',  onMove,  { passive: false });\n    track.addEventListener('touchend',   onUp,    { passive: true });\n    track.addEventListener('mousedown',  onDown);\n    window.addEventListener('mousemove', onMove);\n    window.addEventListener('mouseup',   onUp);\n\n\n    // init\n    goToSlide(0);\n  });\n\n});\n\n/* Enforce \"single open\" for BurgerDrawer parents (all start closed) */\ndocument.addEventListener('change', function (e) {\n  if (!e.target.matches('#BurgerDrawer .drawer-acc-toggle')) return;\n\n  if (e.target.checked) {\n    const li = e.target.closest('.drawer-nav__parents');\n    const list = li && li.parentElement;\n    if (!list) return;\n    list.querySelectorAll('.drawer-acc-toggle').forEach(t => {\n      if (t !== e.target) t.checked = false;\n    });\n  }\n});\n\n/* Spinner button functionality */\ndocument.addEventListener('click', function (e) {\n  const trigger = e.target.closest('.btn-loading-trigger');\n  if (!trigger) return;\n\n  const parentSelector = trigger.getAttribute('data-target-parent');\n  const targetEl = parentSelector ? trigger.closest(parentSelector) : trigger;\n\n  if (targetEl && !targetEl.classList.contains('btn-loading')) {\n    targetEl.classList.add('btn-loading');\n    targetEl.setAttribute('aria-busy', 'true');\n\n    const timeoutMs = parseInt(trigger.getAttribute('data-loading-timeout') || '4000', 10);\n    setTimeout(() => {\n      targetEl.classList.remove('btn-loading');\n      targetEl.removeAttribute('aria-busy');\n    }, timeoutMs);\n  }\n});\n\n\n\n/* Footer Newsletter \u2014 no refresh, spinner, .newsletter-message (hash-safe) */\n(function () {\n  const FORM_ID = 'FooterNewsletter';\n\n  function showMsg(targetEl, text) {\n    if (!targetEl) return;\n    let el = targetEl.nextElementSibling;\n    if (!el || !el.classList.contains('newsletter-message')) {\n      el = document.createElement('div');\n      el.className = 'newsletter-message';\n      targetEl.insertAdjacentElement('afterend', el);\n    }\n    el.textContent = text;\n    el.style.display = 'block';\n    clearTimeout(el._t);\n    el._t = setTimeout(() => { el.style.display = 'none'; }, 8000);\n  }\n\n  document.addEventListener('submit', function (e) {\n    const form = e.target;\n    if (!(form && form.id === FORM_ID)) return;\n\n    e.preventDefault();\n    e.stopPropagation();\n    if (e.stopImmediatePropagation) e.stopImmediatePropagation();\n\n    const field = form.querySelector('.newsletter-field');\n    const input = form.querySelector('input[name=\"contact[email]\"], input[name=\"customer[email]\"]');\n\n    if (field) {\n      field.classList.add('btn-loading');\n      field.setAttribute('aria-busy', 'true');\n    }\n\n    const fd = new FormData(form);\n    const raw = form.getAttribute('action') || '/contact';\n    const url = raw.split('#')[0] || '/contact';\n\n    const xhr = new XMLHttpRequest();\n    xhr.open('POST', url, true);\n    xhr.responseType = 'document';\n\n    xhr.onload = function () {\n      if (field) {\n        field.classList.remove('btn-loading');\n        field.removeAttribute('aria-busy');\n      }\n\n      console.log('NL status/url:', xhr.status, xhr.responseURL || url);\n\n      if (xhr.responseURL && /\\/challenge/.test(xhr.responseURL)) {\n        window.location.href = xhr.responseURL;\n        return;\n      }\n\n      if (xhr.status >= 200 && xhr.status < 300) {\n        if (input) input.value = '';\n        showMsg(field || form, \"You're in!\");\n      } else {\n        showMsg(field || form, 'Something went wrong. Please try again.');\n        console.error('Newsletter XHR error:', xhr.status, xhr.statusText);\n      }\n    };\n\n    xhr.onerror = function () {\n      if (field) {\n        field.classList.remove('btn-loading');\n        field.removeAttribute('aria-busy');\n      }\n      showMsg(field || form, 'Something went wrong. Please try again.');\n    };\n\n    xhr.send(fd);\n  }, true);\n})();\n\n\n\n// Styling improvements for downloads page\nif (window.location.pathname.includes('/a/downloads')) {\n  // Create the <h3> tag\n  const h3 = document.createElement('h3');\n  h3.textContent = 'Your Order is Ready to Download';\n  h3.classList.add('sdd-download-heading');\n\n  // Insert it before the download section\n  const downloadSection = document.querySelector('.sdd-download');\n  if (downloadSection) {\n    downloadSection.insertAdjacentElement('beforebegin', h3);\n    // Set padding to 50px\n    downloadSection.style.padding = '50px';\n  }\n\n  // Add hover class to button and pointer cursor\n  const downloadButton = document.querySelector('.sdd-download-button');\n  if (downloadButton) {\n    downloadButton.classList.add('hover-fade');\n    downloadButton.style.cursor = 'pointer';\n  }\n}\n\n\n\n// Product template thumbnail switching + mobile dots\n(function () {\n  const carousel = document.getElementById('ProductCarousel');\n  const slides = carousel ? Array.from(carousel.querySelectorAll('.product-slide')) : [];\n  const thumbsWrap = document.querySelector('.product-thumbnails');\n  const thumbs = thumbsWrap ? Array.from(thumbsWrap.querySelectorAll('.product-thumbnail')) : [];\n  if (!carousel || !slides.length) return;\n\n  const isMobile = () => window.matchMedia('(max-width: 767px)').matches;\n\n  // ----- Build dots (inserted right after the carousel; no HTML edits) -----\n  const dotsWrap = document.createElement('div');\n  dotsWrap.className = 'product-dots';\n  dotsWrap.setAttribute('role', 'tablist');\n  dotsWrap.setAttribute('aria-label', 'Image pagination');\n  carousel.insertAdjacentElement('afterend', dotsWrap);\n\n  slides.forEach((_, idx) => {\n    const btn = document.createElement('button');\n    btn.type = 'button';\n    btn.dataset.index = String(idx);\n    btn.setAttribute('aria-label', `Go to image ${idx + 1}`);\n    dotsWrap.appendChild(btn);\n  });\n  const dots = Array.from(dotsWrap.querySelectorAll('button'));\n\n  // ----- Init (desktop shows first slide as visible) -----\n  function init() {\n    slides.forEach(s => s.classList.remove('is-active'));\n    if (!isMobile()) {\n      (slides[0] || {}).classList?.add('is-active');\n    }\n    setActiveIndicators(0);\n  }\n\n  // Update dots + thumbs active state\n  function setActiveIndicators(idx) {\n    dots.forEach((d, i) => d.classList.toggle('is-active', i === idx));\n    if (thumbs.length) {\n      thumbs.forEach((t, i) => t.classList.toggle('is-active', i === idx));\n    }\n  }\n\n  // Show a specific slide by index\n  function showSlide(idx) {\n    if (idx < 0 || idx >= slides.length) return;\n\n    if (isMobile()) {\n      slides[idx].scrollIntoView({ behavior: 'smooth', inline: 'center', block: 'nearest' });\n    } else {\n      slides.forEach(s => s.classList.remove('is-active'));\n      slides[idx].classList.add('is-active');\n    }\n    currentIndex = idx;\n    setActiveIndicators(idx);\n  }\n\n  init();\n  let currentIndex = 0;\n\n  // Preload/Decode non-first slides on desktop to remove first-hover flash\n(function preloadProductSlides() {\n  const canHover = window.matchMedia('(hover: hover) and (pointer: fine)').matches;\n  const isDesktop = window.matchMedia('(min-width: 768px)').matches;\n  if (!canHover || !isDesktop) return;\n\n  // Preload everything except the first (already eager)\n  slides.slice(1).forEach(img => {\n    if (img.getAttribute('loading') === 'lazy') {\n      img.setAttribute('loading', 'eager');\n      img.setAttribute('fetchpriority', 'low'); // don't compete with LCP\n    }\n    if (typeof img.decode === 'function') {\n      img.decode().catch(() => {});\n    }\n  });\n\n  // Optional: when hovering a thumb, boost that image's priority\n  if (thumbsWrap) {\n    thumbsWrap.addEventListener('mouseover', (e) => {\n      const thumb = e.target.closest('.product-thumbnail');\n      if (!thumb) return;\n      const idx = parseInt(thumb.getAttribute('data-index'), 10);\n      const target = slides[idx];\n      if (!target) return;\n      target.setAttribute('fetchpriority', 'high');\n      if (typeof target.decode === 'function') target.decode().catch(() => {});\n    }, { passive: true });\n  }\n})();\n\n\n  // ----- Thumbnail interactions (desktop + keyboard) -----\n  if (thumbsWrap) {\n    thumbsWrap.addEventListener('click', (e) => {\n      const el = e.target.closest('.product-thumbnail');\n      if (!el) return;\n      const idx = parseInt(el.getAttribute('data-index'), 10) || 0;\n      showSlide(idx);\n    });\n    thumbsWrap.addEventListener('keydown', (e) => {\n      const el = e.target.closest('.product-thumbnail');\n      if (!el) return;\n      if (e.key === 'Enter' || e.key === ' ') {\n        e.preventDefault();\n        const idx = parseInt(el.getAttribute('data-index'), 10) || 0;\n        showSlide(idx);\n      }\n    });\n\n    // ----- Hover-to-swap (desktop only) -----\n    const canHover = window.matchMedia('(hover: hover) and (pointer: fine)').matches;\n    if (canHover) {\n      thumbsWrap.addEventListener('mouseover', (e) => {\n        if (isMobile()) return; // still keep click/tap on touch\n        const el = e.target.closest('.product-thumbnail');\n        if (!el) return;\n        const idx = parseInt(el.getAttribute('data-index'), 10) || 0;\n        if (idx !== currentIndex) showSlide(idx);\n      });\n    }\n  }\n\n  // ----- Dot clicks (mobile indicator + desktop click works too) -----\n  dotsWrap.addEventListener('click', (e) => {\n    const btn = e.target.closest('button');\n    if (!btn) return;\n    const idx = parseInt(btn.dataset.index, 10) || 0;\n    showSlide(idx);\n  });\n\n  // ----- Sync dots while swiping on mobile -----\n  let ticking = false;\n  carousel.addEventListener('scroll', () => {\n    if (!isMobile()) return;\n    if (ticking) return;\n    window.requestAnimationFrame(() => {\n      const idx = Math.round(carousel.scrollLeft / carousel.clientWidth);\n      if (idx !== currentIndex) {\n        currentIndex = idx;\n        setActiveIndicators(idx);\n      }\n      ticking = false;\n    });\n    ticking = true;\n  }, { passive: true });\n\n  // ----- Normalize after breakpoint change -----\n  window.addEventListener('resize', () => {\n    if (!isMobile() && !carousel.querySelector('.product-slide.is-active')) {\n      (slides[0] || {}).classList?.add('is-active');\n      setActiveIndicators(0);\n      currentIndex = 0;\n    }\n  });\n})();\n\n\n// Only one to open at a time within product or faqs accordion\n(function () {\n  const CONTAINERS = '.product-accordion, .faqs-accordion';\n\n  // Normalize initial state: keep the first open, close the rest\n  document.querySelectorAll(CONTAINERS).forEach(container => {\n    const openItems = Array.from(container.querySelectorAll('details[open]'));\n    openItems.slice(1).forEach(d => (d.open = false));\n\n    // Handle subsequent opens (capture phase to avoid missing the event)\n    container.addEventListener(\n      'toggle',\n      function (e) {\n        const details = e.target;\n        if (!(details instanceof HTMLDetailsElement)) return;\n        if (!details.open) return; // only when one just opened\n        // Close all other open details in this container\n        container.querySelectorAll('details[open]').forEach(d => {\n          if (d !== details) d.open = false;\n        });\n      },\n      true // capture\n    );\n  });\n})();\n\n\n/* Product Template Carousel Arrow Clicking */\ndocument.addEventListener('DOMContentLoaded', function () {\n  var carousel = document.getElementById('ProductCarousel');\n  if (!carousel) return;\n\n  var slides = [].slice.call(carousel.querySelectorAll('.product-slide'));\n  if (!slides.length) return;\n\n  var prevBtn = carousel.querySelector('.product-nav--prev');\n  var nextBtn = carousel.querySelector('.product-nav--next');\n  var thumbs  = [].slice.call(document.querySelectorAll('.product-thumbnails .product-thumbnail'));\n\n  var current = Math.max(0, slides.findIndex(function (s){ return s.classList.contains('is-active'); }));\n\n  function show(i){\n    if (i < 0 || i >= slides.length) return;\n    slides.forEach(function(s, idx){\n      s.classList.toggle('is-active', idx === i);\n      s.setAttribute('aria-hidden', idx === i ? 'false' : 'true');\n    });\n    thumbs.forEach(function(t, idx){\n      t.classList.toggle('is-active', idx === i);\n      if (idx === i) t.setAttribute('aria-current','true'); else t.removeAttribute('aria-current');\n    });\n    current = i;\n  }\n\n  function next(){ show((current + 1) % slides.length); }\n  function prev(){ show((current - 1 + slides.length) % slides.length); }\n\n  if (prevBtn) prevBtn.addEventListener('click', prev);\n  if (nextBtn) nextBtn.addEventListener('click', next);\n\n  thumbs.forEach(function(t, i){\n    var idx = parseInt(t.getAttribute('data-index'), 10);\n    t.addEventListener('click', function(){ show(isNaN(idx) ? i : idx); });\n    t.addEventListener('keydown', function(e){\n      if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); show(isNaN(idx) ? i : idx); }\n    });\n  });\n\n  carousel.setAttribute('tabindex', '0');\n  carousel.addEventListener('keydown', function(e){\n    if (e.key === 'ArrowRight') next();\n    if (e.key === 'ArrowLeft')  prev();\n  });\n\n  show(current);\n});\n\n/* Testimonial Bar Scrolling */\ndocument.addEventListener('DOMContentLoaded', function () {\n  const wrapper = document.querySelector('.testimonial-bar-wrapper');\n  if (!wrapper) return;\n\n  const carousel = wrapper.querySelector('.testimonial-bar-carousel');\n  const slides = Array.from(carousel.querySelectorAll('.testimonial-bar-slide'));\n  if (!slides.length) return;\n\n  const prevBtn = wrapper.querySelector('.testimonial-bar-nav--prev');\n  const nextBtn = wrapper.querySelector('.testimonial-bar-nav--next');\n\n  function getSlideAmount() {\n    const gap = parseFloat(getComputedStyle(carousel).gap) || 16;\n    return slides[0].offsetWidth + gap;\n  }\n\n  if (nextBtn) {\n    nextBtn.addEventListener('click', () => {\n      const scrollAmount = getSlideAmount();\n      const maxScrollLeft = carousel.scrollWidth - carousel.clientWidth;\n\n      if (carousel.scrollLeft >= maxScrollLeft - 5) {\n        // We're at the end \u2014 loop to the start\n        carousel.scrollTo({ left: 0, behavior: 'smooth' });\n      } else {\n        carousel.scrollBy({ left: scrollAmount, behavior: 'smooth' });\n      }\n    });\n  }\n\n  if (prevBtn) {\n    prevBtn.addEventListener('click', () => {\n      const scrollAmount = getSlideAmount();\n\n      if (carousel.scrollLeft <= 5) {\n        // We're at the start \u2014 loop to the end\n        carousel.scrollTo({ left: carousel.scrollWidth, behavior: 'smooth' });\n      } else {\n        carousel.scrollBy({ left: -scrollAmount, behavior: 'smooth' });\n      }\n    });\n  }\n});\n\n// Add item to cart drawer\nconst productForm = document.querySelector('[data-product-form]');\nif (productForm) {\n  const hiddenInput = productForm.querySelector('input[name=\"id\"]');\n  const variantSelects = productForm.querySelectorAll('.product-option-select');\n\n  variantSelects.forEach(select => {\n    select.addEventListener('change', () => {\n      const selectedOptions = Array.from(variantSelects).map(s => s.value);\n      const matchingVariant = productVariants.find(v =>\n        v.options.every((opt, i) => opt === selectedOptions[i])\n      );\n      if (matchingVariant) hiddenInput.value = matchingVariant.id;\n    });\n  });\n\n  productForm.addEventListener('submit', function (e) {\n    e.preventDefault();\n    const formData = new FormData(productForm);\n\n    // \uD83D\uDD11 IMPORTANT: Shopify requires 'id' to be set as string\n    const variantId = String(formData.get('id'));\n    formData.set('id', variantId);\n\n    fetch('/cart/add.js', {\n      method: 'POST',\n      body: formData,\n      headers: { 'Accept': 'application/json' }\n    })\n      .then(response => {\n        if (!response.ok) throw new Error('Add to cart failed');\n        return response.json();\n      })\n      .then(() => {\n        if (typeof refreshCartDrawer === 'function') {\n          refreshCartDrawer().then(() => {\n            window.openCartDrawer();\n          });\n        } else {\n          window.openCartDrawer();\n        }\n      })\n      .catch(error => console.error('Error adding to cart:', error));\n  });\n}\n\n"],
  "mappings": "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",
  "names": []
}
