{
  "version": 3,
  "sources": ["/cdn/shop/t/3/assets/theme.js?kkk=84708"],
  "sourcesContent": ["Shopify.bind = function (fn, scope) {\n  return function () {\n    return fn.apply(scope, arguments);\n  };\n};\n\nShopify.setSelectorByValue = function (selector, value) {\n  for (var i = 0, count = selector.options.length; i < count; i++) {\n    var option = selector.options[i];\n    if (value == option.value || value == option.innerHTML) {\n      selector.selectedIndex = i;\n      return i;\n    }\n  }\n};\n\nShopify.addListener = function (target, eventName, callback) {\n  target.addEventListener ? target.addEventListener(eventName, callback, false) : target.attachEvent('on' + eventName, callback);\n};\n\nShopify.postLink = function (path, options) {\n  options = options || {};\n  var method = options['method'] || 'post';\n  var params = options['parameters'] || {};\n\n  var form = document.createElement(\"form\");\n  form.setAttribute(\"method\", method);\n  form.setAttribute(\"action\", path);\n\n  for (var key in params) {\n    var hiddenField = document.createElement(\"input\");\n    hiddenField.setAttribute(\"type\", \"hidden\");\n    hiddenField.setAttribute(\"name\", key);\n    hiddenField.setAttribute(\"value\", params[key]);\n    form.appendChild(hiddenField);\n  }\n  document.body.appendChild(form);\n  form.submit();\n  document.body.removeChild(form);\n};\n\nShopify.CountryProvinceSelector = function (country_domid, province_domid, options) {\n  this.countryEl = document.getElementById(country_domid);\n  this.provinceEl = document.getElementById(province_domid);\n  this.provinceContainer = document.getElementById(options['hideElement'] || province_domid);\n\n  Shopify.addListener(this.countryEl, 'change', Shopify.bind(this.countryHandler, this));\n\n  this.initCountry();\n  this.initProvince();\n};\n\nShopify.CountryProvinceSelector.prototype = {\n  initCountry: function () {\n    var value = this.countryEl.getAttribute('data-default');\n    Shopify.setSelectorByValue(this.countryEl, value);\n    this.countryHandler();\n  },\n\n  initProvince: function () {\n    var value = this.provinceEl.getAttribute('data-default');\n    if (value && this.provinceEl.options.length > 0) {\n      Shopify.setSelectorByValue(this.provinceEl, value);\n    }\n  },\n\n  countryHandler: function (e) {\n    var opt = this.countryEl.options[this.countryEl.selectedIndex];\n    var raw = opt.getAttribute('data-provinces');\n    var provinces = JSON.parse(raw);\n\n    this.clearOptions(this.provinceEl);\n    if (provinces && provinces.length == 0) {\n      this.provinceContainer.style.display = 'none';\n    } else {\n      for (var i = 0; i < provinces.length; i++) {\n        var opt = document.createElement('option');\n        opt.value = provinces[i][0];\n        opt.innerHTML = provinces[i][1];\n        this.provinceEl.appendChild(opt);\n      }\n\n      this.provinceContainer.style.display = \"\";\n    }\n  },\n\n  clearOptions: function (selector) {\n    while (selector.firstChild) {\n      selector.removeChild(selector.firstChild);\n    }\n  },\n\n  setOptions: function (selector, values) {\n    for (var i = 0, count = values.length; i < values.length; i++) {\n      var opt = document.createElement('option');\n      opt.value = values[i];\n      opt.innerHTML = values[i];\n      selector.appendChild(opt);\n    }\n  }\n};\n\nfunction getFocusableElements(wrapper) {\n  if (!wrapper) return [];\n\n  const focusableSelectors = `\n    a[href],\n    area[href],\n    input:not([disabled]),\n    select:not([disabled]),\n    textarea:not([disabled]),\n    button:not([disabled]),\n    iframe,\n    [tabindex]:not([tabindex=\"-1\"]),\n    [contenteditable]\n  `;\n\n  const allElements = Array.from(wrapper.querySelectorAll(focusableSelectors));\n\n  // filter only visible elements\n  const visibleElements = allElements.filter(el => {\n    const style = window.getComputedStyle(el);\n    return (\n      style.display !== \"none\" &&\n      style.visibility !== \"hidden\" &&\n      el.offsetParent !== null // ensures element is in the layout\n    );\n  });\n\n  return visibleElements;\n}\n\nconst trapFocusHandlers = {};\nvar focusElement = \"\";\n\n\nfunction trapFocusElements(wrapper) {\n  removeTrapFocus(); // optional, removes previous trap\n\n  const elements = getFocusableElements(wrapper);\n  if (!elements.length) return;\n\n  const first = elements[0];\n  const last = elements[elements.length - 1];\n \n\n  first.focus();\n\n  trapFocusHandlers.keydown = (e) => {\n    if (e.key === \"Tab\") {\n      if (e.shiftKey) {\n        if (document.activeElement === first) {\n          e.preventDefault();\n          last.focus();\n        }\n      } else {\n        if (document.activeElement === last) {\n          e.preventDefault();\n          first.focus();\n        }\n      }\n    }\n  };\n\n  document.addEventListener(\"keydown\", trapFocusHandlers.keydown);\n}\n\n\nfunction removeTrapFocus() {\n  document.removeEventListener(\"keydown\", trapFocusHandlers.keydown);\n}\n\nfunction debounce(fn, wait) {\n  let t;\n  return (...args) => {\n    clearTimeout(t);\n    t = setTimeout(() => fn.apply(this, args), wait);\n  };\n}\nfunction fetchConfig(type = \"json\") {\n  return {\n    method: \"POST\",\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Accept: `application/${type}`,\n    },\n  };\n}\n\nclass SliderComponent extends HTMLElement {\n  constructor() {\n    super();\n    this.slider = null;\n    this.settings = null;\n  }\n\n  connectedCallback() {\n    this.initSlider();\n  }\n\n  initSlider() {\n    if (this.slider) {\n      this.slider.destroy(true, true);\n    }\n\n    try {\n      this.settings = JSON.parse(this.dataset.settings || '{}');\n\n      const mergedSettings = {\n        ...this.settings,\n        on: {\n          init: () => {\n            this.disableTabindexInClones();\n            this.handleArrowKeyControl();\n          },\n          slideChange: () => {\n            this.disableTabindexInClones();\n          }\n        }\n      };\n\n      this.slider = new Swiper(this, mergedSettings);\n    } catch (error) {\n      console.error('Invalid Swiper settings:', this.dataset.settings, error);\n    }\n  }\n\n  disableTabindexInClones() {\n    const clonedSlides = this.querySelectorAll('.swiper-slide-duplicate');\n\n    clonedSlides.forEach((slide) => {\n      const focusables = slide.querySelectorAll('[tabindex], button, a, input, select, textarea');\n      focusables.forEach((el) => el.setAttribute('tabindex', '-1'));\n    });\n  }\n\n  handleArrowKeyControl() {\n   const section = this.closest('.shopify-section');\n\n  let next = this.querySelector('.swiper-button-next')\n          || (section ? section.querySelector('.swiper-button-next') : null)\n          || (this.settings?.navigation?.nextEl\n                ? document.querySelector(this.settings.navigation.nextEl)\n                : null);\n\n  let prev = this.querySelector('.swiper-button-prev')\n          || (section ? section.querySelector('.swiper-button-prev') : null)\n          || (this.settings?.navigation?.prevEl\n                ? document.querySelector(this.settings.navigation.prevEl)\n                : null);\n    [next, prev].forEach((btn, index) => {\n      if (!btn) return;\n\n      btn.setAttribute('tabindex', '0');\n      btn.setAttribute('role', 'button');\n\n      btn.addEventListener('keydown', (event) => {\n        if (event.key === 'Enter' || event.key === ' ') {\n          event.preventDefault();\n          if (index === 0 && this.slider) {\n            this.slider.slideNext();\n          } else if (index === 1 && this.slider) {\n            this.slider.slidePrev();\n          }\n        }\n      });\n    });\n  }\n\n  selectSlide(index) {\n    if (this.slider) {\n      this.slider.slideToLoop(index);\n    }\n  }\n\n  disconnectedCallback() {\n    if (this.slider) {\n      this.slider.destroy(true, true);\n      this.slider = null;\n    }\n  }\n\n  static get observedAttributes() {\n    return ['data-settings'];\n  }\n\n  attributeChangedCallback(name, oldValue, newValue) {\n    if (name === 'data-settings' && oldValue !== newValue) {\n      this.initSlider();\n    }\n  }\n}\n\ncustomElements.define('slider-component', SliderComponent);\n\n\n\n\n\nclass DeferredMedia extends HTMLElement {\n  constructor() {\n    super();\n    this.video = null;\n    this.isLoaded = false;\n\n    if (this.classList.contains(\"autoplay-false\")) {\n      this.playButton = this.closest(\".shopify-section\")?.querySelector(\".play-button\");\n\n      if (this.playButton) {\n        this.playButton.addEventListener(\"click\", () => {\n          if (!this.isLoaded) {\n            this.loadContent();\n          } else {\n            this.togglePlayPause();\n          }\n        });\n      }\n    } else {\n      this.addObserver();\n    }\n  }\n\n  addObserver() {\n    if (!(\"IntersectionObserver\" in window)) return;\n\n    const observer = new IntersectionObserver(\n      (entries) => {\n        entries.forEach((entry) => {\n          if (entry.isIntersecting) {\n            this.loadContent();\n            observer.unobserve(this);\n          }\n        });\n      },\n      { rootMargin: \"0px 0px 1000px 0px\" }\n    );\n\n    observer.observe(this);\n  }\n\n  loadContent() {\n    const template = this.querySelector(\"template\");\n    if (!template) return;\n\n    const content = template.content.firstElementChild.cloneNode(true);\n    this.appendChild(content);\n\n    this.video = this.querySelector(\"video\");\n    if (this.video) {\n      this.video.play();\n    } else {\n      this.playButton?.classList.add(\"button-hide\");\n    }\n\n    this.isLoaded = true;\n  }\n\n  togglePlayPause() {\n    if (!this.video) return;\n    if (this.video.paused) {\n      this.video.play();\n      this.playButton?.classList.add(\"playing\");\n\n    } else {\n      this.video.pause();\n      this.playButton?.classList.remove(\"playing\");\n    }\n  }\n}\n\ncustomElements.define(\"deferred-media\", DeferredMedia);\n\n\n\n// class ComparisonSlide extends HTMLElement {\n//   constructor() {\n//     super();\n//     this.cursor = this.querySelector(\"[data-compare-drag]\");\n//     if (!this.cursor) return; // If no cursor element is found, stop initialization\n\n//     this.imageWrapper = this;\n//     this.parentSection = this.closest(\".shopify-section\");\n\n//     if (this.imageWrapper && this.parentSection) {\n//       this.setupImageComparison();\n//     }\n//   }\n\n//   connectedCallback() {\n//     this.attachEventListeners();\n//   }\n\n//   disconnectedCallback() {\n//     this.removeEventListeners();\n//   }\n\n//   setupImageComparison() {\n//     this.isDragging = false;\n\n//     // Touch and Mouse Events\n//     this.startDrag = this.startDrag.bind(this);\n//     this.endDrag = this.endDrag.bind(this);\n//     this.moveSlider = this.moveSlider.bind(this);\n//   }\n\n//   attachEventListeners() {\n//     // Mouse events\n//     this.cursor.addEventListener(\"mousedown\", this.startDrag);\n//     this.parentSection.addEventListener(\"mouseup\", this.endDrag);\n//     this.parentSection.addEventListener(\"mouseleave\", this.endDrag);\n//     this.parentSection.addEventListener(\"mousemove\", this.moveSlider);\n\n//     // Touch events for mobile devices\n//     this.cursor.addEventListener(\"touchstart\", this.startDrag);\n//     this.cursor.addEventListener(\"touchend\", this.endDrag);\n//     this.parentSection.addEventListener(\"touchmove\", this.moveSliderForTouch.bind(this));\n//   }\n\n//   removeEventListeners() {\n//     this.cursor.removeEventListener(\"mousedown\", this.startDrag);\n//     this.parentSection.removeEventListener(\"mouseup\", this.endDrag);\n//     this.parentSection.removeEventListener(\"mouseleave\", this.endDrag);\n//     this.parentSection.removeEventListener(\"mousemove\", this.moveSlider);\n\n//     this.cursor.removeEventListener(\"touchstart\", this.startDrag);\n//     this.cursor.removeEventListener(\"touchend\", this.endDrag);\n//     this.parentSection.removeEventListener(\"touchmove\", this.moveSliderForTouch.bind(this));\n//   }\n\n//   startDrag() {\n//     this.isDragging = true;\n//   }\n\n//   endDrag() {\n//     this.isDragging = false;\n//   }\n\n//   moveSlider(event) {\n//     if (!this.isDragging) return;\n//     // Adjust event for touch devices\n//     const pageX = event.pageX || event.touches[0].pageX;\n//     const bounding = this.imageWrapper.getBoundingClientRect();\n//     const x = pageX - bounding.left;\n\n//     this.updateDragPosition(x);\n//   }\n\n//   moveSliderForTouch(event) {\n//     this.moveSlider(event);\n//   }\n\n//   updateDragPosition(x) {\n//     const imageWrapperWidth = this.imageWrapper.clientWidth;\n//     const maxPosition = imageWrapperWidth - 30;  // Prevent sliding too far\n\n//     // Calculate percentage based on position\n//     const percentage = (Math.max(30, Math.min(x, maxPosition)) / imageWrapperWidth) * 100;\n\n//     // Update CSS variable to control the slider\n//     this.imageWrapper.style.setProperty(\"--percentage\", `${percentage}%`);\n//   }\n// }\n\n// customElements.define(\"comparison-slide\", ComparisonSlide);\nclass ComparisonSlide extends HTMLElement {\n  constructor() {\n    super();\n    this.cursor = this.querySelector(\"[data-compare-drag]\");\n    if (!this.cursor) return;\n\n    this.imageWrapper = this;\n    this.parentSection = this.closest(\".shopify-section\");\n\n    if (this.imageWrapper && this.parentSection) {\n      this.setupImageComparison();\n    }\n  }\n\n  connectedCallback() {\n    this.attachEventListeners();\n\n    // Make cursor focusable for keyboard\n    this.cursor.setAttribute(\"tabindex\", \"0\");\n    this.cursor.setAttribute(\"role\", \"slider\");\n    this.cursor.setAttribute(\"aria-valuemin\", \"0\");\n    this.cursor.setAttribute(\"aria-valuemax\", \"100\");\n    this.cursor.setAttribute(\"aria-valuenow\", \"50\");\n    this.cursor.setAttribute(\"aria-label\", \"Image comparison slider\");\n  }\n\n  disconnectedCallback() {\n    this.removeEventListeners();\n  }\n\n  setupImageComparison() {\n    this.isDragging = false;\n    this.currentPercentage = 50;\n\n    this.startDrag = this.startDrag.bind(this);\n    this.endDrag = this.endDrag.bind(this);\n    this.moveSlider = this.moveSlider.bind(this);\n    this.keyMoveSlider = this.keyMoveSlider.bind(this);\n  }\n\n  attachEventListeners() {\n    // Mouse\n    this.cursor.addEventListener(\"mousedown\", this.startDrag);\n    this.parentSection.addEventListener(\"mouseup\", this.endDrag);\n    this.parentSection.addEventListener(\"mouseleave\", this.endDrag);\n    this.parentSection.addEventListener(\"mousemove\", this.moveSlider);\n\n    // Touch\n    this.cursor.addEventListener(\"touchstart\", this.startDrag);\n    this.cursor.addEventListener(\"touchend\", this.endDrag);\n    this.parentSection.addEventListener(\"touchmove\", this.moveSliderForTouch.bind(this));\n\n    // Keyboard\n    this.cursor.addEventListener(\"keydown\", this.keyMoveSlider);\n  }\n\n  removeEventListeners() {\n    this.cursor.removeEventListener(\"mousedown\", this.startDrag);\n    this.parentSection.removeEventListener(\"mouseup\", this.endDrag);\n    this.parentSection.removeEventListener(\"mouseleave\", this.endDrag);\n    this.parentSection.removeEventListener(\"mousemove\", this.moveSlider);\n\n    this.cursor.removeEventListener(\"touchstart\", this.startDrag);\n    this.cursor.removeEventListener(\"touchend\", this.endDrag);\n    this.parentSection.removeEventListener(\"touchmove\", this.moveSliderForTouch.bind(this));\n\n    this.cursor.removeEventListener(\"keydown\", this.keyMoveSlider);\n  }\n\n  startDrag() {\n    this.isDragging = true;\n  }\n\n  endDrag() {\n    this.isDragging = false;\n  }\n\n  moveSlider(event) {\n    if (!this.isDragging) return;\n    const pageX = event.pageX || (event.touches && event.touches[0].pageX);\n    const bounding = this.imageWrapper.getBoundingClientRect();\n    const x = pageX - bounding.left;\n    this.updateDragPosition(x);\n  }\n\n  moveSliderForTouch(event) {\n    this.moveSlider(event);\n  }\n\n  keyMoveSlider(event) {\n    const step = 5; // % per key press\n    if (event.key === \"ArrowRight\" || event.key === \"ArrowLeft\") {\n      event.preventDefault();\n      if (event.key === \"ArrowRight\") {\n        this.currentPercentage = Math.min(100, this.currentPercentage + step);\n      } else if (event.key === \"ArrowLeft\") {\n        this.currentPercentage = Math.max(0, this.currentPercentage - step);\n      }\n      this.updatePercentage(this.currentPercentage);\n    }\n  }\n\n  updateDragPosition(x) {\n    const imageWrapperWidth = this.imageWrapper.clientWidth;\n    const maxPosition = imageWrapperWidth;\n    const percentage = (Math.max(0, Math.min(x, maxPosition)) / imageWrapperWidth) * 100;\n    this.updatePercentage(percentage);\n  }\n\n  updatePercentage(percentage) {\n    this.imageWrapper.style.setProperty(\"--percentage\", `${percentage}%`);\n    this.cursor.setAttribute(\"aria-valuenow\", Math.round(percentage));\n    this.currentPercentage = percentage;\n  }\n}\n\ncustomElements.define(\"comparison-slide\", ComparisonSlide);\n\n\nclass CountdownCounterTimer extends HTMLElement {\n  constructor() {\n    super();\n\n    // Initialize endTime from the attribute, or set to null\n    const endTimeAttr = this.getAttribute(\"end-date\");\n    this.endTime = endTimeAttr ? new Date(endTimeAttr) : null;\n\n    // Initialize the intervalId and state for countdown completion\n    this.intervalId = null;\n    this.isCountdownFinished = false;\n\n    // Cache DOM elements\n    this.card = this.querySelector('.countdown-counter--wrapper');\n    this.daysEl = this.querySelector('.days');\n    this.hoursEl = this.querySelector('.hour');\n    this.minutesEl = this.querySelector('.minutes');\n    this.secondsEl = this.querySelector('.seconds');\n  }\n\n  // Lifecycle method when the element is connected to the DOM\n  connectedCallback() {\n    if (!this.isValidEndTime()) {\n      return;\n    }\n\n    if (this.hasCountdownExpired()) {\n      this.setZero();\n      this.hideCountdownCard();\n      return;\n    }\n\n    this.startTimer();\n  }\n\n  // Lifecycle method when the element is removed from the DOM\n  disconnectedCallback() {\n    if (this.intervalId) {\n      cancelAnimationFrame(this.intervalId);\n    }\n  }\n\n  // Validate the 'end-time' attribute\n  isValidEndTime() {\n    return this.endTime instanceof Date && !isNaN(this.endTime.getTime());\n  }\n\n  // Check if the countdown time has already expired\n  hasCountdownExpired() {\n    return this.endTime <= new Date();\n  }\n\n  // Start the countdown timer loop\n  startTimer() {\n    const update = () => {\n      this.updateTimer();\n      if (!this.isCountdownFinished) {\n        this.intervalId = requestAnimationFrame(update);\n      }\n    };\n    update();\n  }\n\n  // Update the timer every second\n  updateTimer() {\n    const now = new Date();\n    const timeLeft = this.endTime - now;\n\n    if (timeLeft <= 0) {\n      this.handleCountdownEnd();\n      return;\n    }\n\n    const { days, hours, minutes, seconds } = this.calculateTimeLeft(timeLeft);\n    this.updateCountdownDisplay(days, hours, minutes, seconds);\n  }\n\n  // Calculate the remaining time\n  calculateTimeLeft(timeLeft) {\n    const days = Math.floor(timeLeft / (1000 * 60 * 60 * 24));\n    const hours = Math.floor((timeLeft / (1000 * 60 * 60)) % 24);\n    const minutes = Math.floor((timeLeft / 1000 / 60) % 60);\n    const seconds = Math.floor((timeLeft / 1000) % 60);\n    return { days, hours, minutes, seconds };\n  }\n\n  // Handle when the countdown finishes\n  handleCountdownEnd() {\n    this.setZero();\n    this.hideCountdownCard();\n    this.isCountdownFinished = true;\n  }\n\n  // Update the DOM with the countdown values\n  updateCountdownDisplay(days, hours, minutes, seconds) {\n    this.daysEl.textContent = days;\n    this.hoursEl.textContent = String(hours).padStart(2, \"0\");\n    this.minutesEl.textContent = String(minutes).padStart(2, \"0\");\n    this.secondsEl.textContent = String(seconds).padStart(2, \"0\");\n  }\n\n  // Set the countdown values to zero\n  setZero() {\n    this.daysEl.textContent = \"00\";\n    this.hoursEl.textContent = \"00\";\n    this.minutesEl.textContent = \"00\";\n    this.secondsEl.textContent = \"00\";\n  }\n\n  // Hide the countdown card element\n  hideCountdownCard() {\n    if (this.card) {\n      this.card.style.display = 'none';\n    }\n  }\n}\n\ncustomElements.define(\"countdown-counter-timer\", CountdownCounterTimer);\n\n\nclass CustomTabs extends HTMLElement {\n  constructor() {\n    super();\n  }\n\n  connectedCallback() {\n    // Ensure event listeners are added when the element is added to the DOM\n    this.addEventListeners();\n  }\n\n  addEventListeners() {\n    const tabs = this.querySelectorAll('[data-tab-head]');\n    const contents = this.querySelectorAll('[data-tab-content]');\n\n    const activateTab = index => {\n      // Remove active class from all tabs and contents\n      tabs.forEach(tab => tab.classList.remove('is-active'));\n      contents.forEach(content => content.classList.remove('is-active'));\n\n      // Add active class to the selected tab and its corresponding content\n      tabs[index].classList.add('is-active');\n      contents[index].classList.add('is-active');\n    };\n\n    // Add both hover and click events to each tab\n    tabs.forEach((tab, index) => {\n      tab.addEventListener('mouseover', () => activateTab(index));\n      tab.addEventListener('click', () => activateTab(index));\n    });\n  }\n}\n\n// Define the custom element\ncustomElements.define('custom-tabs', CustomTabs);\n\n\nclass CustomTabsClick extends HTMLElement {\n  constructor() {\n    super();\n  }\n\n  connectedCallback() {\n    this.addEventListeners();\n  }\n\n  addEventListeners() {\n    const tabs = this.querySelectorAll('[data-tab-head]');\n    const contents = this.querySelectorAll('[data-tab-content]');\n    const multicontent = this.querySelectorAll('[data-multi-content] [data-tab-content]');\n\n    const activateTab = (index) => {\n      // Remove active class from all tabs and content\n      tabs.forEach(tab => tab.classList.remove('is-active'));\n      contents.forEach(content => content.classList.remove('is-active'));\n      multicontent.forEach(content => content.classList.remove('is-active'));\n\n      // Activate selected tab and its content\n      tabs[index].classList.add('is-active');\n      contents[index].classList.add('is-active');\n      if (multicontent.length !== 0 && multicontent[index]) {\n        multicontent[index].classList.add('is-active');\n      }\n\n\n      const swiperContainers = contents[index].querySelectorAll('.swiper');\n      swiperContainers.forEach(container => {\n        if (container.swiper) {\n          container.swiper.update();\n        }\n      });\n\n    };\n\n    // Attach event listeners to all tabs\n    tabs.forEach((tab, index) => {\n      tab.addEventListener('click', event => {\n        event.preventDefault();\n        activateTab(index);\n      });\n    });\n  }\n}\n\n// Register the custom element\ncustomElements.define('custom-tabs-click', CustomTabsClick);\n\nclass LocalizationForm extends HTMLElement {\n  constructor() {\n    super();\n    this.elements = {\n      input: this.querySelector('input[name=\"language_code\"], input[name=\"country_code\"]'),\n      button: this.querySelector('button'),\n      panel: this.querySelector('ul'),\n    };\n    this.elements.button.addEventListener('click', this.openSelector.bind(this));\n    this.elements.button.addEventListener('focusout', this.closeSelector.bind(this));\n    this.addEventListener('keyup', this.onContainerKeyUp.bind(this));\n\n    this.querySelectorAll('a').forEach(item => item.addEventListener('click', this.onItemClick.bind(this)));\n  }\n\n  hidePanel() {\n    this.elements.button.setAttribute('aria-expanded', 'false');\n    this.elements.panel.setAttribute('hidden', true);\n  }\n\n  onContainerKeyUp(event) {\n    if (event.code.toUpperCase() !== 'ESCAPE') return;\n\n    this.hidePanel();\n    this.elements.button.focus();\n  }\n\n  onItemClick(event) {\n    event.preventDefault();\n    const form = this.querySelector('form');\n    this.elements.input.value = event.currentTarget.dataset.value;\n    if (form) form.submit();\n  }\n\n  openSelector() {\n    this.elements.button.focus();\n    this.elements.panel.toggleAttribute('hidden');\n    this.elements.button.setAttribute('aria-expanded', (this.elements.button.getAttribute('aria-expanded') === 'false').toString());\n  }\n\n  closeSelector(event) {\n    const shouldClose = event.relatedTarget && event.relatedTarget.nodeName === 'BUTTON';\n    if (event.relatedTarget === null || shouldClose) {\n      this.hidePanel();\n    }\n  }\n}\n\ncustomElements.define('localization-form', LocalizationForm);\n\nclass ProductBundle extends HTMLElement {\n  constructor() {\n    super();\n    this.bundle = [];\n    this.cartApiUrl = \"/cart/add.js\";\n    this.cart = document.querySelector('cart-drawer');\n  }\n\n  connectedCallback() {\n    this.render();\n  }\n\n  render() {\n    this.totalPriceElement = this.querySelector(\".product-bundle-count p\");\n    this.progressBar = this.querySelector(\".progressbar\");\n    this.addToCartButton = this.querySelector(\".product-bundle--button .button\");\n    this.productItems = this.querySelectorAll(\".product-bundle-item\");\n    this.bundleLimit = parseInt(this.querySelector(\".product-bundle-grid\").getAttribute(\"data-bundle-count\"), 10);\n\n    this.productItems.forEach((item) => {\n      const buttons = item.querySelectorAll(\".product-bundle-button .button\");\n      const addButton = buttons[0];\n      const removeButton = buttons[1];\n      const priceElement = item.querySelector(\".product-actual-price\");\n      const titleElement = item.querySelector(\".product-card-title a\");\n\n      if (addButton && removeButton && priceElement && titleElement) {\n        const product = {\n          name: titleElement.textContent.trim(),\n          price: parseFloat(priceElement.getAttribute(\"data-price\").replace(/,/g, \"\")),\n          element: item,\n          addButton,\n          removeButton\n        };\n\n        addButton.addEventListener(\"click\", () => this.addToBundle(product));\n        removeButton.addEventListener(\"click\", () => this.removeFromBundle(product));\n      }\n    });\n\n    if (this.addToCartButton) {\n      this.addToCartButton.addEventListener(\"click\", (event) => this.handleAddToCart(event));\n    }\n  }\n\n  addToBundle(product) {\n    if (!this.bundle.some(p => p.name === product.name)) {\n      this.bundle.push(product);\n      this.updateBundleUI();\n      product.addButton.classList.add(\"hidden\");\n      product.removeButton.classList.remove(\"hidden\");\n      product.element.classList.add(\"active-bundle\");\n    }\n\n    if (this.bundle.length >= this.bundleLimit) {\n      this.productItems.forEach((item) => {\n        if (!item.classList.contains(\"active-bundle\")) {\n          const addBtn = item.querySelector(\".product-bundle-button .button\");\n          addBtn.classList.add(\"disabled\");\n\n        }\n      });\n    }\n  }\n\n  removeFromBundle(product) {\n    this.bundle = this.bundle.filter(p => p.name !== product.name);\n    this.updateBundleUI();\n    product.removeButton.classList.add(\"hidden\");\n    product.addButton.classList.remove(\"hidden\");\n    product.element.classList.remove(\"active-bundle\");\n\n    this.productItems.forEach((item) => {\n      const addBtn = item.querySelector(\".product-bundle-button .button\");\n      if (!item.classList.contains(\"active-bundle\")) {\n        addBtn.classList.remove(\"disabled\");\n\n      }\n    });\n  }\n\n  updateBundleUI() {\n    const totalPrice = this.bundle.reduce((sum, item) => sum + item.price, 0);\n    if (this.totalPriceElement) {\n      this.totalPriceElement.textContent = `$${totalPrice.toFixed(2)}`;\n    }\n\n    const progressPercentage = (this.bundle.length / this.bundleLimit) * 100;\n    if (this.progressBar) {\n      this.progressBar.style.width = `${progressPercentage}%`;\n    }\n\n    if (this.addToCartButton) {\n      this.addToCartButton.disabled = this.bundle.length === 0;\n    }\n  }\n\n  handleAddToCart(event) {\n    if (this.bundle.length === 0) return;\n\n    // Re-query to ensure the elements are available\n    const btnText = this.querySelector(\"[data-addtobutton-text]\");\n    const btnLoader = this.querySelector(\".loading--spinner\");\n\n    btnText?.classList.add(\"hidden\");\n    btnLoader?.classList.remove(\"hidden\");\n\n    const items = this.bundle.map(product => {\n      const variantId = product.element.getAttribute(\"data-variant-id\");\n      return {\n        id: variantId,\n        quantity: 1\n      };\n    });\n\n    if (items.length === 0) return;\n\n    fetch(this.cartApiUrl, {\n      method: \"POST\",\n      headers: {\n        \"Content-Type\": \"application/json\",\n        \"X-Requested-With\": \"XMLHttpRequest\",\n      },\n      body: JSON.stringify({ items: items }),\n    })\n      .then((response) => {\n        btnText?.classList.remove(\"hidden\");\n        btnLoader?.classList.add(\"hidden\");\n\n        if (!response.ok) {\n          this.handleError(\"Failed to add bundle to cart.\");\n          throw new Error(\"Failed to add bundle to cart\");\n        }\n\n        return response.json();\n      })\n      .then((cartData) => {\n        btnText?.classList.remove(\"hidden\");\n        btnLoader?.classList.add(\"hidden\");\n        if (this.cart?.openCartDrawer) {\n          this.cart.openCartDrawer(event);\n          const itemCountElement = document.querySelector(\"[data-item-count]\");\n          const totalQuantity = cartData.items.reduce((sum, item) => sum + item.quantity, 0);\n          if (itemCountElement) {\n            itemCountElement.classList.remove(\"hidden\");\n\n            if (totalQuantity == 0) {\n              itemCountElement.classList.add(\"hidden\");\n            } else if (totalQuantity < 100) {\n              itemCountElement.textContent = totalQuantity;\n            } else {\n              itemCountElement.textContent = '99+';\n            }\n          }\n          this.cart.classList.add(\"is-visible\");\n          document.body.classList.add(\"overflow-hidden\");\n        } else {\n          window.location = window.routes.cart_url;\n        }\n      })\n      .catch(error => {\n        console.error(\"Error adding to cart:\", error);\n        alert(\"Sorry, something went wrong.\");\n      });\n  }\n\n  handleError(errorMessage = false) {\n    if (this.hideErrors) return;\n    this.errorMessageWrapper = this.errorMessageWrapper || this.querySelector('.product-form-error-message-wrapper');\n    if (!this.errorMessageWrapper) return;\n    this.errorMessage = this.errorMessage || this.errorMessageWrapper.querySelector('.product-form-error-message');\n    this.errorMessageWrapper.toggleAttribute('hidden', !errorMessage);\n    if (errorMessage && this.errorMessage) {\n      this.errorMessage.textContent = errorMessage;\n    }\n  }\n}\n\ncustomElements.define(\"product-bundle\", ProductBundle);\n\n\n\nclass BestSellingProducts extends HTMLElement {\n  constructor() {\n    super();\n\n    this.openButton = this.querySelector(\"[data-open-section]\");\n    this.closeButton = this.querySelector(\"[data-close-section]\");\n    this.openSection = this.querySelector(\"#BestSellingProducts\");\n    if (this.openButton) {\n      this.openButton.addEventListener(\"click\", (event) => this.openMenu(event));\n    }\n    if (this.closeButton) {\n      this.closeButton.addEventListener(\"click\", (event) => this.closeMenu(event));\n    }\n\n\n  }\n\n  openMenu(event) {\n    event.preventDefault();\n    this.openSection.classList.add(\"is-active\");\n  }\n\n  closeMenu(event) {\n    event.preventDefault();\n    this.openSection.classList.remove(\"is-active\");\n  }\n}\n\ncustomElements.define(\"best-selling-products\", BestSellingProducts);\n\nclass CustomAccordionDes extends HTMLElement {\n  constructor() {\n    super();\n    this.duration = 400;\n    this.easing = \"ease\";\n  }\n\n  connectedCallback() {\n    const detailsList = this.querySelectorAll(\".accordion-details\");\n\n    detailsList.forEach((details) => {\n      const summary = details.querySelector(\"summary\");\n      const content = details.querySelector(\".accordion-details-content\");\n      if (!content) return; // Skip if no content\n\n      // Initialize closed state\n      if (!details.open) {\n        content.style.height = \"0px\";\n        content.style.overflow = \"hidden\";\n      }\n\n      // Per-item animating state\n      details._animating = false;\n\n      summary.addEventListener(\"click\", (e) => {\n        e.preventDefault();\n        if (details._animating) return;\n\n        if (details.open) {\n          this.close(details, content);\n        } else {\n          this.closeOthers(detailsList, details);\n          this.open(details, content);\n        }\n      });\n    });\n  }\n\n  closeOthers(all, current) {\n    all.forEach((details) => {\n      if (details !== current && details.open) {\n        const content = details.querySelector(\".accordion-details-content\");\n        if (content) this.close(details, content);\n      }\n    });\n  }\n\n  open(details, content) {\n    details._animating = true;\n    details.open = true;\n\n    const startHeight = content.offsetHeight;\n    const endHeight = content.scrollHeight;\n\n    content.style.overflow = \"hidden\";\n\n    const animation = content.animate(\n      [{ height: startHeight + \"px\" }, { height: endHeight + \"px\" }],\n      { duration: this.duration, easing: this.easing }\n    );\n\n    animation.onfinish = () => {\n      content.style.height = \"auto\";\n      details._animating = false;\n    };\n  }\n\n  close(details, content) {\n    details._animating = true;\n\n    const startHeight = content.offsetHeight;\n\n    const animation = content.animate(\n      [{ height: startHeight + \"px\" }, { height: \"0px\" }],\n      { duration: this.duration, easing: this.easing }\n    );\n\n    animation.onfinish = () => {\n      content.style.height = \"0px\";\n      details.open = false;\n      details._animating = false;\n    };\n  }\n}\n\ncustomElements.define(\"custom-accordion-des\", CustomAccordionDes);\n\n\nclass CustomAccordion extends HTMLElement {\n  constructor() {\n    super();\n    this.isAnimating = false;\n    // Configuration\n    this.duration = 400; // Animation speed in ms\n    this.easing = 'ease-in-out'; // Animation curve\n  }\n\n  connectedCallback() {\n    // Select all details elements within this component\n    const detailsElements = this.querySelectorAll('details');\n\n    detailsElements.forEach((details) => {\n      const summary = details.querySelector('summary');\n\n      summary.addEventListener('click', (e) => {\n        e.preventDefault(); // 1. Stop default instant toggle\n\n        // Prevent clicking while animation is running (stops glitching)\n        if (this.isAnimating) return;\n\n        if (details.open) {\n          // If open, close it\n          this.shrink(details);\n        } else {\n          // If closed, close others first, then open this one\n          this.closeOthers(details, detailsElements);\n          this.expand(details);\n        }\n      });\n    });\n  }\n\n  // Closes all other details elements that are currently open\n  closeOthers(currentDetails, allDetails) {\n    allDetails.forEach((details) => {\n      if (details !== currentDetails && details.open) {\n        this.shrink(details);\n      }\n    });\n  }\n\n  expand(details) {\n    this.isAnimating = true;\n\n    // 1. Apply open to calculate dimensions (content is visible but invisible to user)\n    details.open = true;\n    details.style.overflow = 'hidden'; // Prevent content spill\n\n    // 2. Measure heights\n    const startHeight = `${details.querySelector('summary').offsetHeight}px`;\n    const endHeight = `${details.scrollHeight}px`;\n\n    // 3. Animate\n    const animation = details.animate(\n      { height: [startHeight, endHeight] },\n      { duration: this.duration, easing: this.easing }\n    );\n\n    // 4. Cleanup when done\n    animation.onfinish = () => {\n      details.style.height = ''; // Reset to auto\n      details.style.overflow = ''; // Allow scrolling if needed\n      this.isAnimating = false;\n    };\n  }\n\n  shrink(details) {\n    this.isAnimating = true;\n\n    // 1. Measure heights\n    const startHeight = `${details.offsetHeight}px`;\n    const endHeight = `${details.querySelector('summary').offsetHeight}px`;\n\n    // 2. Lock overflow to hide content as it moves up\n    details.style.overflow = 'hidden';\n\n    // 3. Animate\n    const animation = details.animate(\n      { height: [startHeight, endHeight] },\n      { duration: this.duration, easing: this.easing }\n    );\n\n    // 4. Cleanup when done\n    animation.onfinish = () => {\n      details.open = false; // Actually remove the attribute now\n      details.style.height = '';\n      details.style.overflow = '';\n      this.isAnimating = false;\n    };\n  }\n}\n\ncustomElements.define('custom-accordion', CustomAccordion);\n\n\nclass VideoSection extends HTMLElement {\n  constructor() {\n    super();\n    this.targetWidth = 100; // Default width in vw\n    this.animationFrameId = null;\n  }\n\n  connectedCallback() {\n    this.targetElement = this.querySelector(\".video-media\");\n    this.stickyContainer = this.querySelector(\".video-main--box\");\n    this.videoHeadingElement = this.querySelector(\".video-overlay-title\");\n\n\n    if (!this.targetElement || !this.stickyContainer) {\n      console.error(\"Required elements not found in the custom element.\");\n      return;\n    }\n\n    this.handleScroll = this.handleScroll.bind(this);\n    this.animateWidth = this.animateWidth.bind(this);\n\n    window.addEventListener(\"scroll\", this.handleScroll);\n    this.handleScroll(); // Run initially in case already at the top\n  }\n\n  disconnectedCallback() {\n    window.removeEventListener(\"scroll\", this.handleScroll);\n  }\n\n  animateWidth() {\n    const currentWidth = parseFloat(this.targetElement.style.width) || 100;\n\n    if (Math.abs(currentWidth - this.targetWidth) < 1) { // Stop animation when close\n      this.targetElement.style.width = `${this.targetWidth}vw`;\n      cancelAnimationFrame(this.animationFrameId);\n      return;\n    }\n\n    const step = (this.targetWidth > currentWidth) ? 5 : -5; // Increase step size for speed\n    this.targetElement.style.width = `${currentWidth + step}vw`;\n\n    this.animationFrameId = requestAnimationFrame(this.animateWidth);\n  }\n\n  handleScroll() {\n    const containerRect = this.stickyContainer.getBoundingClientRect();\n    // If the section reaches the top, shrink width to 50vw\n    this.targetWidth = (containerRect.top <= 0) ? 50 : 100;\n    if (containerRect.top <= 0) {\n      this.videoHeadingElement.classList.add(\"content-shrink\"); // Apply font size and position changes\n    } else {\n      this.videoHeadingElement.classList.remove(\"content-shrink\");\n    }\n\n    cancelAnimationFrame(this.animationFrameId);\n    this.animationFrameId = requestAnimationFrame(this.animateWidth);\n  }\n}\n\ncustomElements.define(\"video-section\", VideoSection);\n\n\nclass ScrollingContent extends HTMLElement {\n  constructor() {\n    super();\n    this.swiper = null;\n    this.sections = [];\n    this.currentIndex = 0;\n  }\n\n  connectedCallback() {\n    // Wait until everything is rendered\n    window.requestAnimationFrame(() => this.initSwiper());\n    window.addEventListener(\"scroll\", () => this.syncSwiperWithScroll());\n  }\n\n  initSwiper() {\n    const container = this.querySelector(\".swiper-container\");\n    if (!container) {\n      console.error(\"Swiper container not found inside <scrolling-content>\");\n      return;\n    }\n\n    // Initialize Swiper\n    this.swiper = new Swiper(container, {\n      direction: \"horizontal\",\n      slidesPerView: 1,\n      spaceBetween: 0,\n      allowTouchMove: false,\n      speed: 700,\n    });\n\n    // Select content sections\n    this.sections = this.querySelectorAll(\".scrolling-content--item\");\n\n    if (this.sections.length === 0) {\n      console.warn(\"No .scrolling-content--item found.\");\n    }\n  }\n\n  syncSwiperWithScroll() {\n    if (!this.swiper || typeof this.swiper.slideTo !== \"function\") {\n      console.warn(\"Swiper is not ready or invalid:\", this.swiper);\n      return;\n    }\n\n    const scrollTop = window.scrollY;\n    const lastSection = this.sections[this.sections.length - 1];\n    const mainSection = this.querySelector(\".section-scrolling-content\");\n\n    this.sections.forEach((section, index) => {\n      const sectionTop = section.getBoundingClientRect().top;\n\n      if (sectionTop <= 5 && sectionTop > -section.clientHeight) {\n        if (this.currentIndex !== index) {\n          this.currentIndex = index;\n          this.swiper.slideTo(index);\n          this.updateActiveSection(index);\n        }\n      }\n    });\n\n    if (lastSection && scrollTop >= lastSection.offsetTop) {\n      this.sections[0]?.classList.remove(\"first-section\");\n    }\n  }\n\n  updateActiveSection(index) {\n    this.sections.forEach((sec) =>\n      sec.classList.remove(\"active-section\", \"first-section\")\n    );\n    this.sections[index]?.classList.add(\"active-section\");\n\n    if (index === 0) {\n      this.sections[index]?.classList.add(\"first-section\");\n    }\n  }\n}\n\ncustomElements.define(\"scrolling-content\", ScrollingContent);\n\n\nclass SVGButtonElement extends HTMLElement {\n  constructor() {\n    super();\n    this.path = null;\n    this.svg = null;\n    this.length = 0;\n  }\n\n  connectedCallback() {\n    // Initialize after element is rendered\n    requestAnimationFrame(() => this.initButton());\n  }\n\n  initButton() {\n    const span = this.querySelector('span');\n    if (!span) return;\n\n    const width = Math.round(this.getBoundingClientRect().width);\n    const height = Math.round(this.getBoundingClientRect().height);\n    const spanWidth = span.getBoundingClientRect().width;\n\n    this.svg = this.querySelector(\"svg\");\n    this.path = this.querySelector('rect');\n\n    if (!this.svg || !this.path) return;\n\n    // Set SVG and rect attributes\n    this.svg.setAttribute('width', width);\n    this.svg.setAttribute('height', height);\n    this.path.setAttribute('width', width);\n    this.path.setAttribute('height', height);\n    this.path.setAttribute('rx', 10);\n    this.path.setAttribute('ry', 10);\n    this.svg.setAttribute('viewBox', `0 0 ${width} ${height}`);\n\n    this.path.setAttribute('fill', 'none');\n    this.svg.classList.add('dark');\n    this.svg.classList.remove(\"hidden\");\n\n    // Wait until the SVG is rendered to get total length\n    requestAnimationFrame(() => {\n      try {\n        this.length = this.path.getTotalLength();\n        this.path.style.strokeDasharray = `${this.length} ${this.length + 1}`;\n        this.path.style.strokeDashoffset = this.length;\n\n        // Add hover/focus events\n        this.addEventListener('mouseenter', () => this.animateStroke(0, 750));\n        this.addEventListener('mouseleave', () => this.animateStroke(this.length, 750));\n        this.addEventListener('focus', () => this.animateStroke(0, 750));\n        this.addEventListener('blur', () => this.animateStroke(this.length, 750));\n      } catch (e) {\n        console.warn(\"SVG path not rendered yet:\", e);\n      }\n    });\n  }\n\n  animateStroke(targetOffset, duration) {\n    let start = null;\n    const initialOffset = parseFloat(this.path.style.strokeDashoffset) || this.length;\n\n    const step = (timestamp) => {\n      if (!start) start = timestamp;\n      const progress = Math.min((timestamp - start) / duration, 1);\n      const currentOffset = initialOffset + progress * (targetOffset - initialOffset);\n      this.path.style.strokeDashoffset = currentOffset;\n\n      if (progress < 1) {\n        requestAnimationFrame(step);\n      }\n    };\n\n    requestAnimationFrame(step);\n  }\n}\n\n// Define the custom element\ncustomElements.define('svg-button', SVGButtonElement);\n\n\n\n\n\n\n\n\n\n\n\nfunction parallaxContentMedia(section = document) {\n  if (document.querySelector('[data-parallax-media]')) {\n    new universalParallax().init({\n      speed: 6\n    });\n  }\n}\n\n\n\nclass CustomPopup extends HTMLElement {\n  constructor() {\n    super();\n    this.focusElement = null;\n    this.handleKeyDown = this.handleKeyDown.bind(this);\n  }\n\n  connectedCallback() {\n    this.addEventListeners();\n  }\n\n  addEventListeners() {\n    const openButton = this.querySelector('[data-popup-head]');\n    const closeButton = this.querySelector('[data-popup-close]');\n\n    if (openButton) {\n      openButton.addEventListener('click', () => this.openPopup(openButton));\n    }\n\n    if (closeButton) {\n      closeButton.addEventListener('click', () => this.closePopup());\n    }\n  }\n\n  openPopup(openButton) {\n    const content = this.querySelector('[data-popup-content]');\n    if (!content) return;\n\n    content.classList.add('is-active');\n    content.classList.remove('hide');\n    document.body.classList.add(\"overflow-hidden\");\n\n    this.focusElement = openButton;\n\n    // trap focus\n    document.addEventListener(\"keydown\", this.handleKeyDown, true);\n\n    // Move initial focus inside popup\n    setTimeout(() => {\n      const focusable = this.getFocusableElements(content);\n      if (focusable.length) {\n        focusable[0].focus();\n      } else {\n        content.setAttribute(\"tabindex\", \"-1\");\n        content.focus();\n      }\n    }, 50);\n  }\n\n  closePopup() {\n    const content = this.querySelector('[data-popup-content]');\n    if (!content) return;\n\n    document.body.classList.remove(\"overflow-hidden\");\n    content.classList.remove('is-active');\n    content.classList.add('hide');\n\n    document.removeEventListener(\"keydown\", this.handleKeyDown, true);\n\n    // Restore focus back to the opener\n    if (this.focusElement) {\n      this.focusElement.focus();\n    }\n  }\n\n  handleKeyDown(e) {\n    const content = this.querySelector('[data-popup-content]');\n    if (!content) return;\n\n    const focusable = this.getFocusableElements(content);\n    if (!focusable.length) return;\n\n    const firstEl = focusable[0];\n    const lastEl = focusable[focusable.length - 1];\n\n    // ESC closes\n    if (e.key === \"Escape\") {\n      e.preventDefault();\n      this.closePopup();\n      return;\n    }\n\n    // TAB trap\n    if (e.key === \"Tab\") {\n      if (e.shiftKey) {\n        if (document.activeElement === firstEl || document.activeElement === content) {\n          e.preventDefault();\n          lastEl.focus();\n        }\n      } else {\n        if (document.activeElement === lastEl) {\n          e.preventDefault();\n          firstEl.focus();\n        }\n      }\n    }\n  }\n\n  getFocusableElements(container) {\n    return [...container.querySelectorAll(\n      'a[href], button:not([disabled]), textarea, input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\n    )].filter(el => el.offsetParent !== null); // only visible\n  }\n}\n\ncustomElements.define('custom-popup-click', CustomPopup);\n\n\nclass VariantsSetOption extends HTMLElement {\n  constructor() {\n    super(),\n      this.section = this.closest(\"section\"),\n      this.colors = this.querySelectorAll(\"[variant-item]\"),\n      this.type = this.dataset.type,\n      this.hideOption = this.dataset.unavailable,\n      this.hidesoldOut = this.dataset.soldout,\n      this.preorderStatus = this.dataset.preorder,\n      this.addEventListener(\"change\", this.variantChanges)\n     this.variantChanges();\n  \n  }\n\n  variantChanges(event) {\n    this.errorTextUpdate();\n    this.updateOptions();\n    this.updateProductVariantId();\n    this.updateVariantStatuses();\n\n    const isQuickView = this.closest(\"quick-view-drawer\");\n    const isProductCard = this.closest(\"product-card\");\n    if (this.currentVariant) {\n      if (!isQuickView) {\n        this.updateUrl();\n\n      }\n      this.updateVariantInfo();\n      if (isProductCard) {\n        this.renderCardData();\n    \n        this.updateCardMedia(event);\n      } else {\n        this.updatePickupAvailability();\n        this.renderProductInfo();\n      }\n    } else {\n      \n         if (!isProductCard) {\n            this.executeAddToCart(true, \"\");\n         }else{\n          this.setUnavailableCardButton();\n         }\n          \n    }\n    if (!isProductCard) {\n      this.updateMedia();\n    }\n  }\n\n\n  renderCardData() {\n    const requestedVariantId = this.currentVariant.id;\n    const sectionId = this.dataset.originalSection || this.dataset.section;\n    const sectionProductId = this.dataset.originalSection || this.dataset.section;\n    const productID = this.dataset.product;\n    let url = this.dataset.url;\n    if (url && url.includes('?')) {\n      url = url.split(\"?\")[0];\n    }\n\n    fetch(`${url}?variant=${requestedVariantId}`)\n      .then(response => response.text())\n      .then(responseText => {\n        const html = new DOMParser().parseFromString(responseText, \"text/html\");\n        const newAddButton = html.querySelector(`[data-add-to-cart-main]`);\n        const currentAddButton = document.querySelector(`[data-card-id=\"add-to-cart-${sectionId}-${this.dataset.product}\"]`);\n        const htmlVariantOption = html.querySelectorAll(`.main-product-variant-selector .product-select--box`);\n        if (htmlVariantOption.length > 0) {\n          htmlVariantOption.forEach((option, index) => {\n            const attributeValue = option.querySelector(\"[data-type-name]\")?.getAttribute(\"data-type-name\");\n            const attributeName = option.querySelector(\"[data-option-name]\").getAttribute(\"data-option-name\");\n            const selector = `[data-product-item=\"${productID}-${sectionId}\"] .product-selected[data-type=\"${attributeValue}\"]`\n            const targetElement = document.querySelector(selector);\n            if (targetElement) {\n              targetElement.textContent = attributeName;\n            }\n          });\n        }\n        if (newAddButton && currentAddButton) {\n          if (newAddButton.hasAttribute(\"disabled\")) {\n            currentAddButton.setAttribute(\"disabled\", \"disabled\");\n          } else {\n            currentAddButton.removeAttribute(\"disabled\");\n          }\n        }\n\n        // Update the price wrapper content\n        const priceWrapperSource = html.getElementById(`price-title-wrapper-${this.dataset.section}-${this.dataset.product}`);\n        const priceWrapperDestination = document.getElementById(`price-title-wrapper-${this.dataset.section}-${this.dataset.product}`);\n\n        if (priceWrapperSource && priceWrapperDestination) {\n          priceWrapperDestination.innerHTML = priceWrapperSource.innerHTML;\n        }\n\n\n      });\n  }\n\n\n  setUnavailableCardButton(){\n        const sectionId = this.dataset.originalSection || this.dataset.section;\n     const currentAddButton = document.querySelector(`[data-card-id=\"add-to-cart-${sectionId}-${this.dataset.product}\"]`);\n    currentAddButton.setAttribute(\"disabled\", \"disabled\");\n\n  }\n  updateMedia() {\n    if (!this.currentVariant || !this.currentVariant?.featured_media) return;\n    this.productMedia = this.section.querySelector(\"product-gallery-media\");\n    if (this.productMedia) {\n      const mediaGalleries = document.querySelector(`[id^=\"productmedia-${this.dataset.section}\"]`);\n      const mediaWrapper = mediaGalleries.querySelector(\"[data-main-product-media]\");\n      let mediaVariant = mediaGalleries.querySelector(\"#product-media-\" + this.currentVariant.featured_media.id);\n      if (mediaVariant && mediaWrapper) {\n        if (this.productMedia.classList.contains(\"slider-enable\")) {\n          const slideIndex = parseInt(mediaVariant.getAttribute(\"data-swiper-slide-index\"));\n          if (!isNaN(slideIndex)) {\n            this.productMedia.selectedSlide(slideIndex);\n          }\n        } else {\n          let childCount = mediaWrapper.children.length;\n          let firstChild = mediaWrapper.firstChild;\n          if (childCount > 1) {\n            mediaWrapper.insertBefore(mediaVariant, firstChild);\n          }\n        }\n      }\n    }\n\n  }\n  updateCardMedia(event){\n     if (!this.currentVariant) return;\n     this.productCardMedia = this.closest(\"product-card\").querySelector(\".main-card-image\");\n     if(event && event.target.closest(\".swatch-color\")){\n      const updateMediaScript = event.target.closest(\".swatch-color\").querySelector('script')\n       if (this.productCardMedia && updateMediaScript) {\n         let swatchMedia = new DOMParser().parseFromString(JSON.parse(updateMediaScript.textContent), \"text/html\").querySelector('.media-image-variant');\n          this.productCardMedia.innerHTML = swatchMedia.innerHTML;\n      }\n     }\n\n  }\n  updateUrl() {\n    if (this.closest(\"main-product\")) {\n      this.dataset.page == \"product\" && (!this.currentVariant || this.dataset.updateUrl === \"false\" || window.history.replaceState({}, \"\", `${this.dataset.url}?variant=${this.currentVariant.id}`))\n    }\n\n  }\n  updateVariantInfo() {\n    document.querySelectorAll(`#product-form-${this.dataset.section},#quick-view-product-form-${this.dataset.section},\n        #product-form-${this.dataset.product}${this.dataset.section}`).forEach(productForm => {\n      const input = productForm.querySelector('input[name=\"id\"]');\n\n      input.value = this.currentVariant.id, input.dispatchEvent(new Event(\"change\", {\n        bubbles: !0\n      }))\n    })\n  }\n  executeAddToCart(disable, textcontent) {\n   \n    this.productForm = document.getElementById(`product-form-${this.dataset.section}`) ||\n      document.getElementById(`product-form-${this.dataset.product}${this.dataset.section}`) ||\n      document.getElementById(`quick-view-product-form-${this.dataset.section}-${this.dataset.product}`);\n\n    if (!this.productForm) return;\n    this.buttonContent = textcontent;\n    const addToCartButton = this.productForm.querySelector('[name=\"add\"]');\n    const addButtonText = this.productForm.querySelector('[name=\"add\"] > [data-add-to-cart-text]');\n\n\n    const inventoryData = this.section.querySelector('[type=\"application/json\"][data-name=\"product-inventories\"]');\n    this.productvariantInventory = JSON.parse(inventoryData.textContent);\n\n\n    const stickyAddToCartText = this.closest(\"section\").querySelector(`#sticky-add-to-cart-${this.dataset.section}`);\n    if (this.currentVariant) {\n      this.variantInventory = this.productvariantInventory.find((variant) => variant.id == this.currentVariant.id);\n    }\n    if (!addToCartButton) return;\n\n    if (disable) {\n     \n    addToCartButton.setAttribute(\"disabled\", \"disabled\");\n      if (this.currentVariant) {\n        if (this.buttonContent && addButtonText) {\n          addButtonText.innerHTML = this.buttonContent;\n        }\n        const priceWrapper = document.getElementById(`price-${this.dataset.section}`);\n        if (priceWrapper) priceWrapper.classList.remove(\"hidden\");\n        const pickupAvailability = document.getElementById(`pickup-availability-${this.dataset.section}`);\n        if (pickupAvailability) pickupAvailability.classList.remove(\"hidden\");\n        \n      } else {\n        \n        // Variant is unavailable\n        if (addButtonText) {\n          addButtonText.innerHTML = `<span class=\"button-text\">${window.variantStrings.unavailable}</span>`;\n        }\n   \n        if (stickyAddToCartText) {\n          stickyAddToCartText.setAttribute(\"disabled\", \"disabled\");\n        }\n\n        const priceWrapper = document.getElementById(`price-${this.dataset.section}`);\n        if (priceWrapper) priceWrapper.classList.add(\"hidden\");\n\n        const pickupAvailability = document.getElementById(`pickup-availability-${this.dataset.section}`);\n        if (pickupAvailability) pickupAvailability.classList.add(\"hidden\");\n      }\n    } else {\n      addToCartButton.removeAttribute(\"disabled\");\n      if (this.preorderStatus !== \"false\" && this.variantInventory && this.variantInventory.inventory_policy === \"continue\" &&\n        this.variantInventory.inventory_quantity <= 0) {\n        addButtonText.innerHTML = this.buttonContent;\n      } else if (addButtonText) {\n        addButtonText.innerHTML = this.buttonContent;\n      }\n      if (stickyAddToCartText) {\n        stickyAddToCartText.removeAttribute(\"disabled\");\n      }\n    }\n  }\n\n updateOptions() {\n  this.options = Array.from(\n    this.closest(\".product-information--wrapper\")\n      .querySelectorAll(\"fieldset.product-variant--picker\"),\n    (fieldset) => {\n      const input = fieldset.querySelector(\n        'input[type=\"radio\"]:checked:not(:disabled)'\n      );\n      return input ? input.value : null;\n    }\n  );\n  if (this.type == \"dropdown\") {\n    this.options = Array.from(\n      this.querySelectorAll(\"select\"),\n      (select) => {\n        const option = select.querySelector(\n          'option:checked:not(:disabled)'\n        );\n        return option ? option.value : null;\n      }\n    );\n  }\n}\n\n  updateProductVariantId() {\n \n    if (this.getVariantData()) {\n      this.currentVariant = this.getVariantData().find(variant => {\n        if (!variant.options || variant.options.length != this.options.length) {\n          return false;\n        }\n        return this.options.every(opt => variant.options.includes(opt)) &&\n          variant.options.every(opt => this.options.includes(opt));\n      });\n\n    }\n  }\n\n \n\n  setUnavailable(elementList, unavailableValuesList) {\n   \n    let selectedElement = null;\n    if (elementList && unavailableValuesList) {\n      if (elementList.forEach(element => {\n        const value = element.getAttribute(\"value\"),\n          availableElement = unavailableValuesList.includes(value);\n        element.tagName === \"INPUT\" ? (availableElement ? element.parentNode.classList.contains(\"hidden\") && element.parentNode.classList.remove(\"hidden\") : element.parentNode.classList.add(\"hidden\"), element.type === \"radio\" && element.checked && element.parentNode.classList.contains(\"hidden\") && (selectedElement = element)) : element.tagName === \"OPTION\" && (availableElement ? (element.classList.contains(\"hidden\") && element.classList.remove(\"hidden\"), element.classList.contains(\"disabled\")) : element.classList.add(\"hidden\"), element.classList.contains(\"hidden\") || (selectedElement = element))\n      }), selectedElement) {\n        let clicked = !1;\n        for (let i = 0; i < elementList.length; i++) {\n          const element = elementList[i];\n          if (element.tagName === \"INPUT\" && element.type === \"radio\" && !element.parentNode.classList.contains(\"hidden\")) {\n            element.click(), clicked = !0;\n            break\n          }\n          if (element.tagName === \"OPTION\" && !element.classList.contains(\"hidden\")) {\n            const selectElement = element.closest(\"select\");\n            if (selectElement) {\n              const previouslySelected = selectElement.querySelector(\"option[selected]\");\n              previouslySelected && previouslySelected !== element && previouslySelected.removeAttribute(\"selected\"), element.setAttribute(\"selected\", \"selected\"), element.click(), clicked = !0;\n              break\n            }\n          }\n          clicked || console.log(\"No available radio buttons found to click.\")\n        }\n      }\n    }\n\n  }\n\n  updateVariantInput() {\n    const productForms = document.querySelectorAll(`#product-form-${this.dataset.section}, #product-form-installment-${this.dataset.section}`\n    );\n    productForms.forEach((productForm) => {\n      const input = productForm.querySelector('input[name=\"id\"]');\n      input.value = this.currentVariant.id;\n      input.dispatchEvent(new Event(\"change\", { bubbles: true }));\n    });\n  }\n\n  updateVariantStatuses() {\n  if (!this.variantData) return;\n\n  const inputWrappers = [...this.querySelectorAll(\".product-variant--picker\")];\n\ninputWrappers.forEach((optionWrapper, index) => {\n  const optionInputs = [\n    ...optionWrapper.querySelectorAll(\n      'input[type=\"radio\"], select.options-select option'\n    )\n  ];\n\n  // FIRST OPTION (base availability)\n  if (index === 0) {\n    const availableValues = this.variantData\n      .filter(variant => variant.available)\n      .map(variant => variant.options[index]);\n\n    this.setInputAvailability(optionInputs, availableValues);\n    return;\n  }\n\n  // PREVIOUS SELECTED VALUE (radio OR select)\n  const previousWrapper = inputWrappers[index - 1];\n  const previousSelected =\n    previousWrapper.querySelector('input[type=\"radio\"]:checked')?.value ||\n    previousWrapper.querySelector('select.options-select')?.value;\n\n  if (!previousSelected) return;\n\n  // FILTER VARIANTS\n  const filteredVariants = this.variantData.filter(\n    variant => variant[`option${index}`] === previousSelected\n  );\n\n  const availableValues = filteredVariants\n    .filter(variant => variant.available)\n    .map(variant => variant[`option${index + 1}`]);\n\n  const allValues = filteredVariants.map(\n    variant => variant[`option${index + 1}`]\n  );\n\n  // APPLY AVAILABILITY\n  this.setInputAvailability(optionInputs, availableValues);\n\n  if (this.hideOption === \"true\") {\n    this.setUnavailable(optionInputs, allValues);\n  }\n});\n\n}\n\n  setInputAvailability(listOfOptions, listOfAvailableOptions) {\n\n\n    listOfOptions.forEach((input) => {\n\n      if (listOfAvailableOptions.includes(input.getAttribute(\"value\"))) {\n        if (input.tagName === \"OPTION\") {\n          input.innerText = input.getAttribute(\"value\");\n            input.disabled = false;\n        } else if (input.tagName === \"INPUT\") {\n          input.classList.remove(\"disabled\");\n        }\n      } else {\n        if (input.tagName === \"OPTION\") {\n          input.innerText = input.getAttribute(\"value\")\n           input.disabled = true;\n        } else if (input.tagName === \"INPUT\") {\n          input.classList.add(\"disabled\");\n        }\n      }\n    });\n  }\n  renderProductInfo() {\n    const requestedVariantId = this.currentVariant?.id;\n    const sectionId = this.dataset.originalSection || this.dataset.section;\n    fetch(`${this.dataset.url}?variant=${requestedVariantId}&section_id=${sectionId}`)\n      .then(response => response.text())\n      .then(responseText => {\n        const html = new DOMParser().parseFromString(responseText, \"text/html\");\n        const productPriceSource = html.getElementById(`product-price-list-${sectionId}`);\n        const productPriceDestination = document.getElementById(`product-price-list-${this.dataset.section}`);\n        if (productPriceSource && productPriceDestination) {\n          productPriceDestination.innerHTML = productPriceSource.innerHTML;\n        }\n\n        const updateSlectedOptions = html.querySelectorAll(\"[data-slected-value]\");\n        Array.from(updateSlectedOptions).forEach(function (updateSlectedOption, index) {\n          document.querySelectorAll(`.selected-value-${sectionId}-${index + 1}`).forEach(function (updateSlecteddata) {\n            updateSlecteddata.innerText = updateSlectedOption.innerText\n          })\n        })\n\n        const productskuSource = html.getElementById(`product-sku-${sectionId}`);\n        const productskuDestination = document.getElementById(`product-sku-${this.dataset.section}`);\n        if (productskuSource && productskuDestination) {\n          productskuDestination.innerHTML = productskuSource.innerHTML;\n        }\n\n        // Sticky add to cart Button\n        const stickyaddTocartDestination = document.querySelector(`sticky-bar-product`);\n        const stickyaddTocartSource = html.querySelector(`sticky-bar-product`);\n        if (stickyaddTocartSource && stickyaddTocartDestination) {\n          stickyaddTocartDestination.innerHTML = stickyaddTocartSource.innerHTML;\n        }\n\n        // card update\n        const productPriceListSource = html.getElementById(`product-price-list-${this.dataset.product}-${sectionId}`);\n        const productPriceListDestination = document.getElementById(`product-price-list-${this.dataset.product}-${this.dataset.section}`);\n        if (productPriceListSource && productPriceListDestination) {\n          productPriceListDestination.innerHTML = productPriceListSource.innerHTML;\n        }\n\n        const variantsDestination = document.getElementById(`products-variants-${this.dataset.section}-${this.dataset.product}`);\n        const variantsSource = html.getElementById(`products-variants-${this.dataset.section}-${this.dataset.product}`);\n        // Update variant swatches\n        if (variantsSource && variantsDestination) {\n         \n          variantsDestination.innerHTML = variantsSource.innerHTML;\n        }\n\n        // Update selected color name\n        const colorNameDestination = this.querySelector(`[data-selected-variant=${this.dataset.section}-${this.dataset.product}]`);\n        const colorNameSource = html.querySelector(`[data-selected-variant=${this.dataset.section}-${this.dataset.product}]`);\n        if (colorNameSource && colorNameDestination) {\n          colorNameDestination.innerText = colorNameSource.innerText;\n        }\n\n        // Unhide price section if available\n        const price = document.getElementById(`price-title-wrapper-${this.dataset.section}`);\n        if (price) {\n          price.classList.remove(\"hidden\");\n        }\n\n\n        // Determine if the \"Add to Cart\" button should be disabled\n        const updatedAddButton = html.querySelector(`[data-add-to-cart-main]`);\n        const cartbuttonContent = updatedAddButton.querySelector(`[data-add-to-cart-text]`).innerHTML;\n        const shouldDisable = updatedAddButton ? updatedAddButton.hasAttribute(\"disabled\") : true;\n        // Call Add to Cart logic\n        this.executeAddToCart(shouldDisable, cartbuttonContent);\n      });\n  }\n  updatePickupAvailability() {\n    const pickUpAvailability = document.querySelector(\"availability-content\");\n    if (!pickUpAvailability) return;\n\n    if (this.currentVariant && this.currentVariant.available) {\n      pickUpAvailability.fetchAvailability(this.currentVariant.id);\n    } else {\n      pickUpAvailability.removeAttribute(\"available\");\n      pickUpAvailability.innerHTML = \"\";\n    }\n  }\n  getVariantData() {\n    if (this.variantData) return this.variantData;\n    const container = this.closest(\"[data-product-info]\");\n    if (!container) return null;\n\n    const jsonScript = container.querySelector('[type=\"application/json\"]');\n    if (!jsonScript || !jsonScript.textContent) return null;\n\n    try {\n      this.variantData = JSON.parse(jsonScript.textContent);\n      return this.variantData;\n    } catch (e) {\n      console.error(\"Failed to parse variant data JSON:\", e);\n      return null;\n    }\n  }\n  errorTextUpdate() {\n    const errorFields = document.querySelectorAll(\".product-form--error-message\");\n    errorFields.forEach(field => {\n      field.textContent = \"\"; \n    });\n  }\n}\ncustomElements.define(\"variant-set-option\", VariantsSetOption);\n\nclass QuantityElement extends HTMLElement {\n  constructor() {\n    super();\n    this.init();\n  }\n\n  init() {\n    this.input = this.querySelector('input');\n    this.changeEvent = new Event('change', { bubbles: true });\n\n    this.querySelectorAll('button').forEach(\n      (button) => button.addEventListener('click', this.onButtonClick.bind(this))\n    );\n\n    this.input.addEventListener('focus', this.onInputFocus.bind(this));\n  }\n\n  onButtonClick(event) {\n    event.preventDefault();\n    const previousValue = this.input.value;\n    event.target.name === 'plus' ? this.input.stepUp() : this.input.stepDown();\n    if (previousValue !== this.input.value) this.input.dispatchEvent(this.changeEvent);\n  }\n\n  onInputFocus() {\n    this.input.select();\n  }\n}\n\ncustomElements.define(\"quantity-element\", QuantityElement);\n\nclass ProductGalleryMedia extends HTMLElement {\n  constructor() {\n    super();\n    this.dataid = this.dataset.id;\n    this.slidePerView = 1;\n    this.pagination = false;\n    if (this.hasAttribute('data-quick-view')) {\n      this.slidePerView = 2;\n      this.pagination = true;\n    }\n  }\n\n  connectedCallback() {\n    this.thumbnailsMedia();\n    if (!this.dataid) return;\n    const slideItem = this.querySelector(`[data-product-media-${this.dataid}]`);\n    if (slideItem) {\n      new ResizeObserver(() => this.thumbnailsMedia()).observe(slideItem);\n    }\n    this.init();\n  }\n\n  thumbnailsMedia() {\n    const slideItem = this.querySelector(`[data-product-media-${this.dataid}]`);\n    if (slideItem) {\n      requestAnimationFrame(() => {\n        this.mainItemheight = slideItem.getBoundingClientRect().height;\n        const thumbmedia = this.querySelector(\n          `[data-product-thumbs-${this.dataid}] .swiper-slide`\n        );\n        if (thumbmedia) {\n          thumbmedia.style.setProperty(\"--thumb_height\", `${this.mainItemheight}px`);\n        }\n      });\n    }\n  }\n\n  updatePagination() {\n    if (!this.el) return;\n\n    const swiperCounter = this.el.querySelector('.swiper-counter');\n    const slides = this.el.querySelectorAll('.swiper-slide:not(.swiper-slide-duplicate)');\n    const totalSlides = slides.length;\n    const currentIndex = this.realIndex + 1;\n\n    const formattedCurrent = currentIndex < 10 ? `0${currentIndex}` : `${currentIndex}`;\n    const formattedTotal = totalSlides < 10 ? `0${totalSlides}` : `${totalSlides}`;\n\n    if (swiperCounter) {\n      swiperCounter.innerHTML = `\n        <span class=\"count\">${formattedCurrent}</span>/\n        <span class=\"total\">${formattedTotal}</span>\n      `;\n    }\n  }\n\n  init() {\n    this.thumbnailEnable = this.dataset.thumbnailEnable;\n    if (this.thumbnailEnable == \"true\") {\n      this.productThumbs = new Swiper(`[data-product-thumbs-${this.dataid}]`, {\n        loop: true,\n        speed: 300,\n        direction: \"horizontal\",\n        slideToClickedSlide: true,\n        slidesPerView: 4,\n        spaceBetween: 20,\n        freeMode: false,\n        breakpoints: {\n          768: { direction: \"vertical\" },\n        },\n      });\n    }\n\n    this.productImages = new Swiper(`[data-product-media-${this.dataid}]`, {\n      loop: true,\n      speed: 300,\n      slidesPerView: this.slidePerView,\n      spaceBetween: 2,\n      pagination: {\n        enabled: this.pagination,\n        el: `.swiper-pagination-${this.dataid}`,\n        type: \"bullets\",\n        clickable: true,\n        dynamicBullets: true,\n      },\n      navigation: {\n        enabled: true,\n        nextEl: `.swiper-button-next-${this.dataid}`,\n        prevEl: `.swiper-button-prev-${this.dataid}`,\n      },\n      on: {\n        init: () => {\n          this.updatePagination();\n          this.handleArrowKeyControl(); // \uD83D\uDC48 init keyboard handling\n        },\n        slideChange: this.updatePagination\n      },\n      breakpoints: {\n        768: {\n          spaceBetween: 10,\n          navigation: {\n            enabled: true,\n            nextEl: `.swiper-button-next-${this.dataid}`,\n            prevEl: `.swiper-button-prev-${this.dataid}`,\n          }\n        },\n      },\n      thumbs: { swiper: this.productThumbs },\n    });\n\n    this.customEvents();\n  }\n\n  selectedSlide(index) {\n    if (this.productImages) this.productImages.slideToLoop(index);\n    if (this.productThumbs) this.productThumbs.slideToLoop(index);\n  }\n\n  handleArrowKeyControl() {\n    const next = document.querySelector(`.swiper-button-next-${this.dataid}`);\n    const prev = document.querySelector(`.swiper-button-prev-${this.dataid}`);\n\n    [[next, \"next\"], [prev, \"prev\"]].forEach(([btn, type]) => {\n      if (!btn) return;\n\n      btn.setAttribute(\"tabindex\", \"0\");\n      btn.setAttribute(\"role\", \"button\");\n\n      btn.addEventListener(\"keydown\", (event) => {\n        if (event.key === \"Enter\" || event.key === \" \") {\n          event.preventDefault();\n          if (this.productImages) {\n            type === \"next\"\n              ? this.productImages.slideNext()\n              : this.productImages.slidePrev();\n          }\n        }\n      });\n    });\n  }\n\n  customEvents() {\n    if (this.productImages) {\n      this.productImages.on(\"slideChange\", function (event) {\n        this.section = document.querySelector(\n          `[id=\"shopify-section-${this.el.dataset.section}\"]`\n        );\n        this.previousSlide = this.slides[event.previousIndex];\n        this.activeSlide = this.slides[event.activeIndex];\n\n        if (this.previousSlide) {\n          this.previousSlide.querySelectorAll(\"video\").forEach((video) => video.pause());\n\n          this.previousSlide.querySelectorAll(\".product-media-youtube\").forEach((video) => {\n            video.contentWindow.postMessage(\n              '{\"event\":\"command\",\"func\":\"pauseVideo\",\"args\":\"\"}', \"*\"\n            );\n          });\n\n          this.previousSlide.querySelectorAll(\".product-media-vimeo\").forEach((video) => {\n            video.contentWindow.postMessage('{\"method\":\"pause\"}', \"*\");\n          });\n\n          this.previousSlide.querySelector(\"product-model\")?.pauseModel();\n        }\n\n        if (this.activeSlide) {\n          this.activeSlide.querySelector(\"product-model\")?.pauseModel();\n        }\n      });\n    }\n  }\n}\n\ncustomElements.define(\"product-gallery-media\", ProductGalleryMedia);\n\n\n\nclass ProductRecommendations extends HTMLElement {\n  constructor() {\n    super();\n  }\n\n  connectedCallback() {\n    const handleIntersection = (entries, observer) => {\n      if (!entries[0].isIntersecting) return;\n      observer.unobserve(this);\n      fetch(this.dataset.url)\n        .then((response) => response.text())\n        .then((text) => {\n          const html = document.createElement(\"div\");\n          html.innerHTML = text;\n          const recommendations = html.querySelector(\"recommendations-product\");\n          if (recommendations && recommendations.innerHTML.trim().length) {\n            this.innerHTML = recommendations.innerHTML;\n            this.closest(\".shopify-section\").classList.remove(\"hidden\");\n            customOptionsCollection();\n          }\n        })\n        .catch((e) => {\n          console.error(e);\n        });\n    };\n\n    new IntersectionObserver(handleIntersection.bind(this), {\n      rootMargin: \"0px 0px 100px 0px\",\n    }).observe(this);\n  }\n}\ncustomElements.define(\"recommendations-product\", ProductRecommendations);\n\n\n\n\nif (!customElements.get(\"product-content-element\")) {\n  class CustomContentElement extends HTMLElement {\n    constructor() {\n      super();\n      this.focusElement = null;\n      this.openDrawer = this.openDrawer.bind(this);\n    }\n\n    connectedCallback() {\n      this.querySelectorAll(\"[data-drawer-head]\").forEach(el => {\n        el.addEventListener(\"click\", this.openDrawer);\n      });\n    }\n\n    openDrawer(event) {\n      event.preventDefault();\n      const clickedEl = event.currentTarget;\n\n      const template = this.querySelector('[data-product-content-main]');\n      if (!template) return;\n\n      const templateContent = template.content.cloneNode(true);\n      document.body.appendChild(templateContent);\n\n      const blockid = this.getAttribute('data-id');\n\n      setTimeout(() => {\n        const drawer = document.querySelector(`#${blockid}`);\n        if (drawer) {\n          drawer.classList.add(\"is-visible\");\n          document.body.classList.add(\"overflow-hidden\");\n          this.addEscapeListener(drawer);\n\n          // Handle active states\n          document.querySelectorAll(\"[data-drawer-head].active\").forEach(el =>\n            el.classList.remove(\"is-active\")\n          );\n          clickedEl.classList.add(\"is-active\");\n\n          const href = clickedEl.getAttribute(\"href\");\n          if (href?.startsWith(\"#\")) {\n            const targetId = href.slice(1);\n\n            this.querySelectorAll(\".tab-link.is-active\").forEach(el =>\n              el.classList.remove(\"is-active\")\n            );\n            document.querySelector(`[data-id=\"${targetId}\"]`)?.classList.add(\"is-active\");\n\n            this.querySelectorAll(\".drawer-tab--text.is-active\").forEach(el =>\n              el.classList.remove(\"is-active\")\n            );\n            document.getElementById(targetId)?.classList.add(\"is-active\");\n\n          }\n        }\n        setTimeout(() => {\n          this.focusElement = event.target;\n          if (drawer && typeof trapFocusElements === \"function\") {\n            trapFocusElements(drawer);\n          }\n        }, 700)\n        this.closeDrawer(blockid);\n      }, 500);\n\n\n\n\n    }\n\n    closeDrawer(blockid) {\n      const drawer = document.querySelector(`#${blockid}`);\n      if (!drawer) return;\n\n      drawer.querySelectorAll('[data-drawer-close]').forEach(closeElement => {\n        closeElement.addEventListener(\"click\", (event) => {\n          event.preventDefault();\n          this._closeDrawer(drawer);\n          if (this.focusElement) {\n            this.focusElement.focus();\n          }\n          this.focusElement = null;\n        });\n      });\n    }\n\n    _closeDrawer(drawer) {\n      drawer.classList.remove(\"is-visible\");\n      document.body.classList.remove(\"overflow-hidden\");\n      setTimeout(() => {\n        drawer.remove();\n      }, 500);\n    }\n\n    addEscapeListener(drawer) {\n      const handleKeyDown = (event) => {\n        if (event.key === 'Escape') {\n          this._closeDrawer(drawer);\n          document.removeEventListener('keydown', handleKeyDown);\n        }\n      };\n\n      document.addEventListener('keydown', handleKeyDown);\n    }\n  }\n\n  customElements.define(\"product-content-element\", CustomContentElement);\n}\n\n\n\nif (!customElements.get(\"product-info-drawer\")) {\n  class ProductInfoDrawer extends HTMLElement {\n    constructor() {\n      super();\n      this.focusElement = null;\n      this.handleTabClick = this.handleTabClick.bind(this);\n    }\n\n    connectedCallback() {\n      // Delegate tab clicks\n      this.querySelectorAll(\".tab-link\").forEach(tab => {\n        tab.addEventListener(\"click\", this.handleTabClick);\n      });\n    }\n\n    disconnectedCallback() {\n      // Clean up listeners if the drawer is removed\n      this.querySelectorAll(\".tab-link\").forEach(tab => {\n        tab.removeEventListener(\"click\", this.handleTabClick);\n      });\n    }\n\n    handleTabClick(event) {\n      event.preventDefault();\n      const clickedTab = event.currentTarget;\n\n      // Get target tab content ID from href\n      const targetId = clickedTab.getAttribute(\"href\")?.substring(1);\n      if (!targetId) return;\n\n      // Remove active class from all tabs\n      this.querySelectorAll(\".tab-link\").forEach(tab =>\n        tab.classList.remove(\"is-active\")\n      );\n\n      // Set active class on clicked tab\n      clickedTab.classList.add(\"is-active\");\n\n      // Hide all tab contents\n      this.querySelectorAll(\".drawer-tab--text\").forEach(content =>\n        content.classList.remove(\"is-active\")\n      );\n\n      // Show matching tab content\n      const targetContent = this.querySelector(`#${targetId}`);\n      if (targetContent) {\n        targetContent.classList.add(\"is-active\");\n      }\n    }\n  }\n\n  customElements.define(\"product-info-drawer\", ProductInfoDrawer);\n}\n\n\nif (!customElements.get(\"size-guide\")) {\n  class SizeGuide extends HTMLElement {\n    constructor() {\n      super();\n      this.focusElement = null;\n\n      const trigger = this.querySelector(\"[data-drawer-head]\");\n      if (trigger) {\n        trigger.addEventListener(\"click\", this.openDrawer.bind(this));\n      }\n\n      document.addEventListener(\"keydown\", this.handleKeyDown.bind(this));\n    }\n\n    openDrawer(event) {\n      event.preventDefault();\n\n      const template = this.querySelector(\"[data-sizeguide-content]\");\n      if (!template) return;\n\n      const templateContent = template.content.cloneNode(true);\n      document.body.appendChild(templateContent);\n\n      setTimeout(() => {\n        const drawer = document.querySelector(\".drawer-sizeChart\");\n        if (drawer) {\n          drawer.classList.add(\"is-visible\");\n          document.body.classList.add(\"overflow-hidden\");\n        }\n      }, 50);\n\n      setTimeout(() => {\n        this.focusElement = event.target;\n        const drawer = document.querySelector(\".drawer-sizeChart\");\n        if (drawer && typeof trapFocusElements === \"function\") {\n          trapFocusElements(drawer);\n        }\n      }, 300);\n\n      this.closeDrawer();\n    }\n\n    closeDrawer() {\n      const drawer = document.querySelector(\".drawer-sizeChart\");\n      if (!drawer) return;\n\n      const closeElements = drawer.querySelectorAll(\"[data-drawer-close]\");\n      closeElements.forEach((closeEl) => {\n        closeEl.addEventListener(\"click\", (e) => {\n          e.preventDefault();\n          this._closeDrawer(drawer);\n        });\n      });\n    }\n\n    _closeDrawer(drawer) {\n      drawer.classList.remove(\"is-visible\");\n\n      if (this.focusElement) {\n        this.focusElement.focus();\n      }\n      this.focusElement = null;\n\n      if (typeof removeTrapFocus === \"function\") {\n        removeTrapFocus();\n      }\n\n      setTimeout(() => {\n        drawer.remove();\n      }, 400);\n      document.body.classList.remove(\"overflow-hidden\");\n    }\n\n    handleKeyDown(event) {\n      if (event.key === \"Escape\") {\n        const drawer = document.querySelector(\".drawer-sizeChart\");\n        if (drawer && drawer.classList.contains(\"is-visible\")) {\n          this._closeDrawer(drawer);\n        }\n      }\n    }\n    refreshDrawerContent(newHtml) {\n      const drawer = document.querySelector(\".drawer-sizeChart\");\n      if (drawer) {\n        const form = drawer.querySelector(\"modal-dialog-form\");\n        if (form) {\n          form.innerHTML = newHtml;\n        }\n      }\n    }\n  }\n\n  customElements.define(\"size-guide\", SizeGuide);\n}\n\nclass StickyBarProduct extends HTMLElement {\n  constructor() {\n    super();\n  }\n\n  connectedCallback() {\n    this.observeElements();\n  }\n\n  observeElements() {\n    const formElement = document.getElementById(`product-form-${this.dataset.section}`);\n    const footerElement = document.querySelector(\"footer\");\n\n    if (!formElement || !footerElement) return;\n\n    this.hasScrolledPastForm = false;\n\n    const observer = new IntersectionObserver((entries) => {\n      entries.forEach((entry) => {\n        if (entry.target === footerElement) {\n          if (entry.intersectionRatio > 0) {\n            this.classList.remove(\"is-visible\");\n          } else if (entry.intersectionRatio === 0 && this.hasScrolledPastForm) {\n            this.classList.add(\"is-visible\");\n          }\n        }\n\n        if (entry.target === formElement) {\n          const formRect = formElement.getBoundingClientRect();\n          const scrolledPast = entry.intersectionRatio === 0 && window.scrollY > formRect.top + formRect.height;\n\n          if (scrolledPast) {\n            this.hasScrolledPastForm = true;\n            this.classList.add(\"is-visible\");\n          } else if (entry.intersectionRatio === 1) {\n            this.hasScrolledPastForm = false;\n            this.classList.remove(\"is-visible\");\n          }\n        }\n      });\n    }, {\n      threshold: [0, 1]\n    });\n\n    observer.observe(formElement);\n    observer.observe(footerElement);\n  }\n}\n\ncustomElements.define(\"sticky-bar-product\", StickyBarProduct);\n\nclass QuickView extends HTMLElement {\n  constructor() {\n    super();\n    this.init()\n  }\n\n  init() {\n    if (this.querySelector(\"[data-quickview-button]\")) {\n      this.querySelector(\"[data-quickview-button]\").addEventListener('click', (event) => {\n        event.preventDefault();\n        this.lastFocusedElement = \"\"\n        const drawer = document.querySelector('#quickView-drawer');\n        if (drawer) {\n          this.setupEventListener(event, drawer)\n        }\n        else if (this.dataset.productUrl) {\n          window.location.href = this.dataset.productUrl;\n        }\n      });\n\n    }\n\n  }\n  setupEventListener(event, drawer) {\n \n    const selector = '#quickView-drawer';\n    const drawerContent = this.querySelector(selector);\n    const drawerSelector = document.querySelector(\"#quickView-drawer\");\n    drawerSelector.classList.add(\"loading\");\n    const quickView = this.querySelector(\"[data-quickview-button]\")\n    quickView.classList.add(\"loading\")\n    quickView.querySelector(\".quick-view-main-icon\").classList.add(\"hidden\")\n    quickView.querySelector(\".loading--spinner\").classList.remove(\"hidden\")\n    drawerSelector.innerHTML = '';\n    const productUrl = this.dataset.productUrl.split('?')[0];\n    const sectionUrl = `${productUrl}`;\n    this.lastFocusedElement = quickView;\n    trapFocusElements(drawer);\n    fetch(sectionUrl)\n      .then(response => response.text())\n      .then(responseText => {\n        const responseHTML = new DOMParser().parseFromString(responseText, 'text/html');\n        const productElement = responseHTML.querySelector(selector);\n        drawerSelector.classList.remove(\"loading\")\n\n        drawerSelector.innerHTML = productElement.innerHTML;\n        drawer.classList.add(\"is-visible\")\n        document.querySelector(\"body\").classList.add(\"overflow-hidden\");\n        quickView.classList.remove(\"loading\")\n        quickView.querySelector(\".quick-view-main-icon\").classList.remove(\"hidden\")\n        quickView.querySelector(\".loading--spinner\").classList.add(\"hidden\")\n        if (window.Shopify && Shopify.PaymentButton) {\n          Shopify.PaymentButton.init();\n\n          setTimeout(() => {\n            focusElement = event.target;\n            trapFocusElements(drawer);\n          }, 500);\n          this.closeDrawer();\n\n          if (window.ProductModel) window.ProductModel.loadShopifyXR();\n          pauseVideo();\n          onYouTubeIframeAPIReady();\n        }\n\n\n      })\n      .catch(e => {\n        console.error(e);\n      });\n  }\n\n  closeDrawer() {\n    const drawer = document.querySelector('.drawer-quick-view');\n    const quickView = this.querySelector(\"[data-quickview-button]\")\n    if (drawer) {\n\n      const closeDrawerElements = drawer.querySelectorAll('[data-drawer-close]');\n      Array.from(closeDrawerElements).forEach(function (closeDrawerElement) {\n        closeDrawerElement.addEventListener(\"click\", function (event) {\n          event.preventDefault();\n          drawer.classList.remove(\"is-visible\");\n          document.querySelector(\"body\").classList.remove(\"overflow-hidden\");\n          quickView.focus()\n          setTimeout(() => {\n            if (this.lastFocusedElement) {\n              this.lastFocusedElement.focus();\n            }\n            this.lastFocusedElement = '';\n          }, 400);\n\n        })\n      })\n\n\n\n    }\n  }\n\n}\ndocument.addEventListener('DOMContentLoaded', () => {\n  const drawerSelector = '#quickView-drawer';\n  const drawer = document.querySelector(drawerSelector);\n  if (!drawer) return;\n  document.addEventListener('click', (event) => {\n    if (\n      event.target.closest('[data-drawer-close]') || \n      event.target.classList.contains('quick-view-overlay')\n    ) {\n      closeQuickViewDrawer();\n    }\n  });\n  document.addEventListener('click', (event) => {\n    if (event.target.closest('[data-add-to-cart]')) {\n      drawer.dataset.added = 'true';\n    }\n  });\n  function closeQuickViewDrawer() {\n    if (!drawer.classList.contains('is-visible')) return;\n    drawer.classList.remove('is-visible');\n    document.body.classList.remove('overflow-hidden');\n    setTimeout(() => {\n      if (drawer.dataset.added === 'true') {\n        drawer.remove();\n      } else {\n        drawer.innerHTML = '';\n      }\n      drawer.dataset.added = '';\n    }, 400);\n  }\n});\n\n\ncustomElements.define('quick-view', QuickView);\n\nclass AccountDrawer extends HTMLElement {\n  constructor() {\n    super();\n    this.drawerId = this.dataset.drawerId;\n    this.drawerCloseButtons = this.querySelectorAll(\"[data-drawer-close]\");\n    this.loginTitle = this.querySelector('[data-id=\"#login\"]');\n    this.recoverTitle = this.querySelector('[data-id=\"#recover\"]');\n    this.loginView = this.querySelector(\"#login\");\n    this.recoverView = this.querySelector(\"#recover\");\n\n    this.openDrawer = this.openDrawer.bind(this);\n    this.closeDrawer = this.closeDrawer.bind(this);\n    this.handleEscape = this.handleEscape.bind(this);\n    this.focusElement = null;\n  }\n\n  connectedCallback() {\n    this.drawerTriggers = document.querySelectorAll(`[data-account-head][data-drawer-id=\"${this.drawerId}\"]`);\n    this.drawerTriggers.forEach(trigger => {\n      trigger.addEventListener(\"click\", this.openDrawer);\n    });\n\n    this.drawerCloseButtons.forEach((btn) => {\n      btn.addEventListener(\"click\", this.closeDrawer);\n    });\n\n    // \uD83D\uDC47 Event bindings to toggle login/recover\n    this.querySelector('[data-target-recover]')?.addEventListener(\"click\", (e) => {\n      e.preventDefault();\n      this.showRecover();\n    });\n\n    this.querySelector('[data-target-login]')?.addEventListener(\"click\", (e) => {\n      e.preventDefault();\n      this.showLogin();\n    });\n\n    document.addEventListener(\"keydown\", this.handleEscape);\n  }\n\n  openDrawer(event) {\n    if (event) event.preventDefault();\n\n    // Close other drawers\n    document.querySelectorAll(\"account-drawer.is-visible\").forEach((drawer) => {\n      if (drawer !== this) {\n        drawer.closeDrawer();\n      }\n    });\n\n    this.classList.add(\"is-visible\");\n    document.body.classList.add(\"overflow-hidden\");\n    setTimeout(() => {\n      this.focusElement = event.target;\n      if (this && typeof trapFocusElements === \"function\") {\n        trapFocusElements(this);\n      }\n    }, 300);\n\n    // Default to login view\n    this.showLogin();\n  }\n\n  closeDrawer(event) {\n    if (event) event.preventDefault();\n    this.classList.remove(\"is-visible\");\n    document.body.classList.remove(\"overflow-hidden\");\n    if (this.focusElement) {\n      this.focusElement.focus();\n    }\n    this.focusElement = null;\n\n  }\n\n  handleEscape(event) {\n    if (event.key === \"Escape\" && this.classList.contains(\"is-visible\")) {\n      this.closeDrawer();\n    }\n  }\n\n\n\n  showLogin() {\n    this.loginView.style.display = \"block\";\n    this.recoverView.style.display = \"none\";\n    if (this.loginTitle) this.loginTitle.style.display = \"block\";\n    if (this.recoverTitle) this.recoverTitle.style.display = \"none\";\n  }\n\n  showRecover() {\n    this.loginView.style.display = \"none\";\n    this.recoverView.style.display = \"block\";\n    if (this.loginTitle) this.loginTitle.style.display = \"none\";\n    if (this.recoverTitle) this.recoverTitle.style.display = \"block\";\n  }\n}\n\ncustomElements.define(\"account-drawer\", AccountDrawer);\n\n\n\nclass AgeVerification extends HTMLElement {\n  constructor() {\n    super();\n    this.cookieName = 'fusion:ageverification';\n    this.classes = {\n      bodyClass: 'age-verification-popup',\n      activeClass: 'is-visible',\n      closingClass: 'closing',\n      hiddenClass: 'hidden'\n    };\n    this.popup = this;\n    this.declineContent = this.querySelector('[data-decline-wrapper]');\n\n    if (!this.getCookie(this.cookieName)) {\n      this.init();\n    }\n    const button = this.querySelector('[data-approve-age-button]');\n    if (button) button.addEventListener('click', this.close.bind(this));\n    const declineButton = this.querySelector('[data-decline-age-button]');\n    if (declineButton) declineButton.addEventListener('click', this.decline.bind(this));\n    const backButton = this.querySelector('[data-back-button]');\n    if (backButton) backButton.addEventListener('click', this.backToOriginal.bind(this));\n\n  }\n  init() {\n    this.open();\n  }\n\n  open() {\n    document.body.classList.remove(this.classes.bodyClass);\n    this.popup.classList.add(this.classes.activeClass);\n    if (this.popup.dataset.ageverification = 'true') {\n      document.body.classList.add(this.classes.bodyClass);\n    }\n  }\n\n  close() {\n    this.popup.classList.add(this.classes.closingClass);\n    setTimeout(() => {\n      this.popup.classList.remove(this.classes.activeClass);\n      this.popup.classList.remove(this.classes.closingClass);\n      if (this.popup.dataset.ageverification = 'true') {\n        document.body.classList.remove(this.classes.bodyClass);\n      }\n    }, 500);\n    this.setCookie(this.cookieName, this.dataset.expiry);\n  }\n\n  decline() {\n    this.popup.querySelector(\"[data-verify-wrapper]\").classList.add(this.classes.hiddenClass)\n    this.declineContent.classList.remove(this.classes.hiddenClass)\n  }\n  backToOriginal() {\n    this.declineContent.classList.add(this.classes.hiddenClass);\n    this.popup.querySelector(\"[data-verify-wrapper]\").classList.remove(this.classes.hiddenClass);\n  }\n  getCookie(name) {\n    const match = document.cookie.match(`(^|;)\\\\s*${name}\\\\s*=\\\\s*([^;]+)`);\n    return match ? match[2] : null;\n  }\n\n  setCookie(name, expiry) {\n    document.cookie = `${name}=true; max-age=${(expiry * 24 * 60 * 60)}; path=/`;\n  }\n\n  removeCookie(name) {\n    document.cookie = `${name}=; max-age=0`;\n  }\n}\ncustomElements.define('age-verification', AgeVerification);\n\nvar ytplayerList;\nfunction onPlayerReady(e) {\n  var video_data = e.target.getVideoData(),\n    label = video_data.video_id + \":\" + video_data.title;\n  e.target.ulabel = label;\n}\n\nfunction onPlayerError(e) {\n  console.log(\"[onPlayerError]\");\n}\nfunction onPlayerStateChange(e) {\n  var label = e.target.ulabel;\n  if (e[\"data\"] == YT.PlayerState.PLAYING) {\n    pauseOthersYoutubes(e.target);\n\n  }\n\n  if (e[\"data\"] == YT.PlayerState.PAUSED) {\n  }\n\n  if (e[\"data\"] == YT.PlayerState.ENDED) {\n  }\n\n  if (e[\"data\"] == YT.PlayerState.BUFFERING) {\n    e.target.uBufferingCount\n      ? ++e.target.uBufferingCount\n      : (e.target.uBufferingCount = 1);\n    console.log({\n      event: \"youtube\",\n      action: \"buffering[\" + e.target.uBufferingCount + \"]:\" + e.target.getPlaybackQuality(),\n      label: label\n\n    });\n\n    if (YT.PlayerState.UNSTARTED == e.target.uLastPlayerState) {\n      pauseOthersYoutubes(e.target);\n    }\n  }\n  if (e.data != e.target.uLastPlayerState) {\n    e.target.uLastPlayerState = e.data;\n  }\n}\n\nfunction initYoutubePlayers() {\n  ytplayerList = null;\n  ytplayerList = [];\n  for (var e = document.getElementsByTagName(\"iframe\"), x = e.length; x--;) {\n    if (/youtube.com\\/embed/.test(e[x].src)) {\n      ytplayerList.push(initYoutubePlayer(e[x]));\n\n    }\n  }\n}\n\nfunction pauseOthersYoutubes(currentPlayer) {\n  if (!currentPlayer) return;\n  for (var i = ytplayerList.length; i--;) {\n    if (ytplayerList[i] && ytplayerList[i] != currentPlayer) {\n      ytplayerList[i].pauseVideo();\n    }\n  }\n  document.querySelectorAll(\".product-media-vimeo, iframe[src*='player.vimeo.com']\").forEach((video) => {\n    if (video.getAttribute('data-autoplay') == 'true' || video.hasAttribute('autoplay')) return false;\n    video.contentWindow.postMessage('{\"method\":\"pause\"}', \"*\");\n  });\n  document.querySelectorAll(\"video\").forEach((video) => {\n    if (video.getAttribute('data-autoplay') == 'true' || video.hasAttribute('autoplay')) return false;\n    video.pause();\n  });\n}\n\nfunction initYoutubePlayer(ytiframe) {\n  var ytp = new YT.Player(ytiframe, {\n    events: {\n      onStateChange: onPlayerStateChange,\n      onError: onPlayerError,\n      onReady: onPlayerReady\n    }\n  });\n  ytiframe.ytp = ytp;\n  return ytp;\n}\n\nfunction onYouTubeIframeAPIReady() {\n  initYoutubePlayers();\n}\n\nvar tag = document.createElement(\"script\");\ntag.src = \"https://www.youtube.com/iframe_api\";\nvar firstScriptTag = document.getElementsByTagName(\"script\")[0];\nfirstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\nfunction pauseVideo(section = document) {\n  document.querySelectorAll(\"video\").forEach((video) => {\n    video.onplay = function (event) {\n      let checkCurrent = event.target\n      document.querySelectorAll(\"iframe[src*='player.vimeo.com']\").forEach((video) => {\n        if (video.getAttribute('data-autoplay') == 'true' || video.hasAttribute('autoplay')) return false;\n        video.contentWindow.postMessage('{\"method\":\"pause\"}', \"*\");\n      });\n      document.querySelectorAll(\".youtube-video,iframe[src*='www.youtube.com']\").forEach((video) => {\n        if (video.getAttribute('data-autoplay') == 'true' || video.hasAttribute('autoplay')) return false;\n        video.contentWindow.postMessage('{\"event\":\"command\",\"func\":\"' + \"pauseVideo\" + '\",\"args\":\"\"}', \"*\");\n      });\n      document.querySelectorAll(\"video\").forEach((video) => {\n        if (video.getAttribute('data-autoplay') == 'true' || video.hasAttribute('autoplay')) return false;\n        if (checkCurrent != video) {\n          video.pause();\n        }\n\n      });\n\n    }\n  });\n  document.querySelectorAll(\".product-media-vimeo, iframe[src*='player.vimeo.com']\").forEach((video) => {\n    var player = new Vimeo.Player(video);\n    player.on('play', function (event) {\n      let checkCurrent = event.target\n\n      document.querySelectorAll(\".product-media-youtube,.youtube-video,iframe[src*='www.youtube.com']\").forEach((video) => {\n        if (video.getAttribute('data-autoplay') == 'true' || video.hasAttribute('autoplay')) return false;\n        video.contentWindow.postMessage('{\"event\":\"command\",\"func\":\"' + \"pauseVideo\" + '\",\"args\":\"\"}', \"*\");\n      });\n      document.querySelectorAll(\"video\").forEach((video) => {\n        if (video.getAttribute('data-autoplay') == 'true' || video.hasAttribute('autoplay')) return false;\n        video.pause();\n      });\n      if (window.ProductModel) window.ProductModel.loadShopifyXR();\n    });\n  });\n}\n\nfunction freeShippingBarProgress(totalprice) {\n  if (currencyRate != null && shippingStatus == `true`) {\n    let shippingText = ''\n    let currencyConvertRate = Math.round(currencyRate * (Shopify.currency.rate || 1));\n    let getcurrencySymbol = Shopify.currency.active;\n    totalprice = totalprice / 100;\n    let shippingPrice = currencyConvertRate - totalprice;\n    if (shippingPrice > 0) {\n      shippingPrice = shippingPrice.toFixed(2)\n      let shippingpricemessage = shippingPrice + ' ' + getcurrencySymbol;\n      shippingText = shippingmessage.replace('||price||', shippingpricemessage)\n    } else {\n      shippingText = shippingsuccessmessage;\n    }\n    let shippingRatePercentage = (totalprice * 100) / currencyConvertRate;\n    if (shippingRatePercentage > 10 && shippingRatePercentage < 100) {\n      shippingRatePercentage = parseFloat(shippingRatePercentage) - 5\n    }\n    else if (shippingRatePercentage > 100) {\n      shippingRatePercentage = 100\n    }\n    shippingRatePercentage = Math.trunc(shippingRatePercentage);\n    const bars = document.querySelectorAll(\"[data-main-shipping-bar]\");\n    if (bars.length > 0) {\n\n      bars.forEach((shippingSelector) => {\n        const message = shippingSelector.querySelector(\".free-shipping-bar-message\");\n        const progress = shippingSelector.querySelector(\".progress\");\n\n        if (message && progress) {\n          shippingSelector.classList.remove(\"hidden\");\n          message.textContent = shippingText;\n          progress.style.setProperty('--progress', `${shippingRatePercentage}%`);\n        }\n      });\n    }\n  }\n}\n\nfunction tabUpdate(){\n  document.querySelectorAll('.filter-sort-names').forEach(label => {\n  const li = label.closest('li');\n  li.addEventListener('keydown', (e) => {\n    if (e.key === 'Enter' || e.key === ' ') {\n      e.preventDefault();\n      const input = li.querySelector('input[type=\"radio\"]') ;\n      if (input) {\n        input.click();\n      }\n    }\n  });\n});\n\n}\n\nfunction filtertabUpdate(){\n  document.querySelectorAll('.double-label,.product-variant--item').forEach(label => {\n  const li = label.closest('li');\n  li.addEventListener('keydown', (e) => {\n    if (e.key === 'Enter' || e.key === ' ') {\n      e.preventDefault();\n      const input = li.querySelector('input[type=\"checkbox\"]') ;\n      if (input) {\n        input.click();\n      }\n    }\n  });\n});\nconst instock = document.querySelector(\"#facets-availability\");\nif(instock){\ninstock.addEventListener('keydown', (e) => {\n    if (e.key === 'Enter' || e.key === ' ') {\n      e.preventDefault();\n     \n      if (instock) {\n        instock.click();\n      }\n    }\n  });\n}\n\n}\ndocument.addEventListener(\"shopify:section:load\", function (section) {\n  let sectiontarget = section.target;\n  if (sectiontarget.querySelector('[data-parallax-media]')) {\n    new universalParallax().init({\n      speed: 6\n    });\n  }\n  pauseVideo();\n \n\n});\n\n\ndocument.addEventListener(\"DOMContentLoaded\", function (section = document) {\n\n  parallaxContentMedia();\n  pauseVideo();\n  tabUpdate();\n  filtertabUpdate();\n\n  const clearButton = document.querySelector(\"[data-search-input-clear]\");\n  const searchInput = document.querySelector(\"#search-input\");\n\n  if (clearButton && searchInput) {\n    clearButton.addEventListener(\"click\", function (event) {\n      event.preventDefault(); \n      searchInput.value = \"\"; \n      searchInput.focus();\n    });\n    searchInput.focus();\n  }\n\n\n});\n\n\nclass MediaGallerySlider extends HTMLElement {\n  constructor() {\n    super();\n    this.dataId = this.dataset.id;\n    this.thumbnailEnable = true;\n  }\n\n  connectedCallback() {\n    if (!this.dataId) return;\n\n    this.mainSliderContainer = this.querySelector(`[data-media-slider-${this.dataId}]`);\n    this.thumbSliderContainer = this.querySelector(`[data-media-thumbs-${this.dataId}]`);\n    this.socialAccounts = this.querySelectorAll('.media-gallery-social-account');\n\n    if (!this.mainSliderContainer || !this.thumbSliderContainer) return;\n\n    this.initSliders();\n    this.bindThumbnailHover();\n  }\n\n  initSliders() {\n    if (this.thumbnailEnable && this.thumbSliderContainer) {\n      this.thumbSwiper = new Swiper(this.thumbSliderContainer, {\n        loop: true,\n        direction: \"horizontal\",\n        spaceBetween: 10,\n        slidesPerView: 6,\n        freeMode: true,\n        watchSlidesProgress: true,\n        breakpoints: {\n          768: {\n            slidesPerView: 6,\n          }\n        },\n        navigation: {\n          nextEl: `.swiper-button-next-${this.dataId}`,\n          prevEl: `.swiper-button-prev-${this.dataId}`,\n        }\n      });\n    }\n\n    this.mainSwiper = new Swiper(this.mainSliderContainer, {\n      loop: true,\n      slidesPerView: 1,\n      spaceBetween: 0,\n      thumbs: this.thumbnailEnable && this.thumbSwiper ? { swiper: this.thumbSwiper } : undefined\n    });\n  }\n\n  bindThumbnailHover() {\n    if (!this.thumbnailEnable || !this.thumbSliderContainer || !this.thumbSwiper) return;\n\n    const thumbs = this.thumbSliderContainer.querySelectorAll('.swiper-slide');\n\n    thumbs.forEach((thumb) => {\n      thumb.addEventListener('mouseenter', () => {\n        const realIndex = parseInt(thumb.dataset.swiperSlideIndex, 10);\n        if (isNaN(realIndex)) return;\n\n        if (this.mainSwiper.realIndex !== realIndex) {\n          this.mainSwiper.slideToLoop(realIndex);\n        }\n\n        const slideEl = this.mainSwiper.slides[Number(realIndex)];\n        if (!slideEl) return;\n\n        const deferredMedia = slideEl.querySelector('deferred-media');\n        if (deferredMedia && !deferredMedia.isLoaded) {\n          deferredMedia.loadContent();\n        }\n      });\n    });\n  }\n}\n\ncustomElements.define(\"media-gallery\", MediaGallerySlider);\n\nclass FooterAccordion extends HTMLElement {\n  constructor() {\n    super();\n    this.mobileBreakpoint = 768;\n    this.isMobile = window.innerWidth <= this.mobileBreakpoint;\n  }\n\n  connectedCallback() {\n    this.setupAccordion();\n    window.addEventListener(\"resize\", this.onResize.bind(this));\n  }\n\n  onResize() {\n    const isMobileNow = window.innerWidth <= this.mobileBreakpoint;\n    if (isMobileNow !== this.isMobile) {\n      this.isMobile = isMobileNow;\n      this.setupAccordion();\n    }\n  }\n\n  setupAccordion() {\n    const headers = this.querySelectorAll(\"[data-accordian-head]\");\n    const contents = this.querySelectorAll(\"[data-accordian-content]\");\n    headers.forEach(header => {\n      const cloned = header.cloneNode(true);\n      header.replaceWith(cloned);\n    });\n\n    const updatedHeaders = this.querySelectorAll(\"[data-accordian-head]\");\n    const updatedContents = this.querySelectorAll(\"[data-accordian-content]\");\n\n    if (!this.isMobile) {\n      updatedContents.forEach(content => {\n        content.classList.remove(\"mobile-hidden\");\n      });\n      updatedHeaders.forEach(header => {\n        header.classList.remove(\"is-open\");\n      });\n      return;\n    }\n    updatedHeaders.forEach(header => {\n      header.addEventListener(\"click\", () => {\n        const content = header.nextElementSibling;\n        const isAlreadyOpen = header.classList.contains(\"is-open\");\n\n        // Close all others\n        updatedContents.forEach(c => c.classList.add(\"mobile-hidden\"));\n        updatedHeaders.forEach(h => h.classList.remove(\"is-open\"));\n\n        // Toggle clicked one\n        if (!isAlreadyOpen) {\n          content.classList.remove(\"mobile-hidden\");\n          header.classList.add(\"is-open\");\n        }\n      });\n    });\n  }\n}\n\ncustomElements.define(\"footer-menu\", FooterAccordion);\n\nclass MarqueeText extends HTMLElement {\n  constructor() {\n    super();\n\n    // Resize Observer\n    if (window.ResizeObserver) {\n      this.resizeObserver = new ResizeObserver(this._calculateDuration.bind(this));\n      this.resizeObserver.observe(this);\n    }\n\n    // Mutation Observer - watch for changes to children or attributes\n    this.mutationObserver = new MutationObserver(() => this._calculateDuration([{ target: this }]));\n    this.mutationObserver.observe(this, {\n      childList: true,\n      subtree: true,\n      characterData: true,\n    });\n  }\n\n  _calculateDuration(entries) {\n    const scrollingSpeed = parseFloat(this.getAttribute(\"scrolling-speed\") || \"5\");\n    const entry = entries[0];\n    const contentWidth = entry.target.clientWidth;\n    const span = entry.target.querySelector(\".scrolling-text-marquee--slide\");\n\n    if (!span) return;\n\n    const spanWidth = span.scrollWidth;\n\n    // Adjust duration based on content and container size\n    const slowFactor = 1 + (Math.min(1600, contentWidth) - 375) / 1225;\n\n    const duration = (scrollingSpeed * slowFactor * spanWidth / contentWidth).toFixed(3);\n\n    this.style.setProperty(\"--duration\", `${duration}s`);\n  }\n}\n\nwindow.customElements.get(\"marquee-text\") || customElements.define(\"marquee-text\", MarqueeText);\n\nclass ProductRecentlyViewed extends HTMLElement {\n  constructor() {\n    super();\n    const productId = parseInt(this.dataset.productId);\n    const cookieName = 'fusion-recently-view-products';\n    const items = JSON.parse(window.localStorage.getItem(cookieName) || '[]');\n    if (!items.includes(productId)) {\n      items.unshift(productId);\n    }\n\n    window.localStorage.setItem(cookieName, JSON.stringify(items.slice(0, 12)));\n\n  }\n}\ncustomElements.define('product-recently-viewed', ProductRecentlyViewed);\nclass RecentlyViewProducts extends HTMLElement {\n  constructor() {\n    super();\n  }\n\n  connectedCallback() {\n\n    fetch(this.dataset.url + this.getQueryStringData())\n      .then(response => response.text())\n      .then(text => {\n        const html = document.createElement('div');\n        html.innerHTML = text;\n        const recommendations = html.querySelector('recently-view-products');\n        if (recommendations && recommendations.innerHTML.trim().length) {\n          this.innerHTML = recommendations.innerHTML;\n          let totalitem = recommendations.querySelectorAll(\".product-card-list \").length;\n          if (recommendations.querySelector(\".recently-view-products-wrapper\").innerHTML.trim().length != 0) {\n            this.closest(\".shopify-section\").classList.remove(\"hidden\");\n          }\n          customOptionsCollection();\n        }\n      })\n      .catch(e => {\n        console.error(e);\n      });\n\n  }\n\n\n  getQueryStringData() {\n    const cookieName = 'fusion-recently-view-products';\n    const items = JSON.parse(window.localStorage.getItem(cookieName) || \"[]\")\n    if (this.dataset.productId && items.includes(parseInt(this.dataset.productId))) {\n      items.splice(items.indexOf(parseInt(this.dataset.productId)), 1);\n    }\n    return items.map((item) => \"id:\" + item).slice(0, 10).join(\" OR \");\n  }\n}\ncustomElements.define('recently-view-products', RecentlyViewProducts);\n\n\ndocument.addEventListener('DOMContentLoaded', function() {\n  let lastIsMobile = null;\n\n  function reorderMobileDivs() {\n    const wrapper = document.querySelector('.main-product-wrapper');\n    const tabContent = document.querySelector('.main-product-tab-content');\n    const gallery = document.querySelector('product-gallery-media');\n    const info = document.querySelector('.product-information--wrapper');\n\n    if (!wrapper || !tabContent || !gallery || !info) return;\n\n    const isMobile = window.innerWidth <= 991;\n    if (isMobile === lastIsMobile) return;\n    lastIsMobile = isMobile;\n\n    if (isMobile) {\n      wrapper.appendChild(tabContent);\n    \n    } else {\n      tabContent.remove();\n        wrapper.insertBefore(tabContent, wrapper.firstChild);\n    }\n  }\n  reorderMobileDivs();\n  window.addEventListener('resize', reorderMobileDivs);\n  \n\n});\n\nconst drawer = document.getElementById('drawerMobileMenu');\n\nfunction openDrawer() {\n  drawer.classList.add('is-active');\n  drawer.setAttribute('aria-hidden', 'false');\n\n\n  document.querySelectorAll('header, main, footer').forEach(el => {\n    el.setAttribute('inert', 'true');  \n  });\n\n\n  trapFocus(drawer);\n}\n\n\nfunction closeDrawer() {\n  drawer.classList.remove('is-active');\n  drawer.setAttribute('aria-hidden', 'true');\n\n  \n  document.querySelectorAll('header, main, footer').forEach(el => {\n    el.removeAttribute('inert');\n  });\n}\n\n\nfunction trapFocus(container) {\n  const focusableEls = container.querySelectorAll(\n    'a[href], button:not([disabled]), textarea, input, select, [tabindex]:not([tabindex=\"-1\"])'\n  );\n\n  if (!focusableEls.length) return;\n\n  const firstEl = focusableEls[0];\n  const lastEl = focusableEls[focusableEls.length - 1];\n\n  container.addEventListener('keydown', (e) => {\n    if (e.key === 'Tab') {\n      if (e.shiftKey) { // Shift + Tab\n        if (document.activeElement === firstEl) {\n          e.preventDefault();\n          lastEl.focus();\n        }\n      } else { // Tab only\n        if (document.activeElement === lastEl) {\n          e.preventDefault();\n          firstEl.focus();\n        }\n      }\n    }\n  });\n\n  \n  firstEl.focus();\n}\n  function customOptionsCollection(){\n     const allOptions = document.querySelectorAll(\".product-select-option .select-option\");\n      allOptions.forEach((button) => {\n      const parent = button.closest(\".product-select-option\");\n      const list = parent.querySelector(\".product-select-list\");\n\n\n      button.addEventListener(\"keydown\", (e) => {\n        if (e.key === \"Enter\" || e.key === \" \") {\n          e.preventDefault();\n\n        \n          document.querySelectorAll(\".product-select-option.is-active\").forEach((el) => {\n            if (el !== parent) el.classList.remove(\"is-active\");\n          });\n\n          parent.classList.toggle(\"is-active\");\n\n          if (parent.classList.contains(\"is-active\")) {\n            const focusable = list.querySelector(\"input, button, [tabindex]:not([tabindex='-1'])\");\n            if (focusable) focusable.focus();\n          }\n        }\n      });\n      document.addEventListener(\"click\", (e) => {\n        if (!parent.contains(e.target)) {\n          parent.classList.remove(\"is-active\");\n        }\n      });\n\n      parent.addEventListener(\"focusout\", (e) => {\n\n        setTimeout(() => {\n          if (!parent.contains(document.activeElement)) {\n            parent.classList.remove(\"is-active\");\n          }\n        }, 50);\n      });\n    });\n  }\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n\n customOptionsCollection();\n});\n\nfunction refreshFlexibleCardHeight() {\n  var cards = document.querySelectorAll('.section-flexible-content .flexible_card');\n\n  cards.forEach(function (card) {\n    // reset before recalculation\n    card.style.height = 'auto';\n\n    // outerHeight equivalent (including padding + border)\n    var h = card.offsetHeight;\n\n    card.style.height = h + 'px';\n  });\n}\n\n// Initial run after 1.5 seconds\nsetTimeout(refreshFlexibleCardHeight, 1500);\n\n// Refresh on window resize (debounced for performance)\nvar resizeTimeout;\nwindow.addEventListener('resize', function () {\n  clearTimeout(resizeTimeout);\n  resizeTimeout = setTimeout(refreshFlexibleCardHeight, 200);\n});"],
  "mappings": "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",
  "names": ["availableValues", "drawer", "video"]
}
