{
  "version": 3,
  "sources": ["/cdn/shop/t/227/assets/global.js?qa=1"],
  "sourcesContent": ["function getFocusableElements(container) {\n  return Array.from(\n      container.querySelectorAll(\n          \"summary, a[href], button:enabled, [tabindex]:not([tabindex^='-']), [draggable], area, input:not([type=hidden]):enabled, select:enabled, textarea:enabled, object, iframe\"\n      )\n  );\n}\nclass SectionId {\n  static #separator = '__';\n\n  // for a qualified section id (e.g. 'template--22224696705326__main'), return just the section id (e.g. 'template--22224696705326')\n  static parseId(qualifiedSectionId) {\n    return qualifiedSectionId.split(SectionId.#separator)[0];\n  }\n\n  // for a qualified section id (e.g. 'template--22224696705326__main'), return just the section name (e.g. 'main')\n  static parseSectionName(qualifiedSectionId) {\n    return qualifiedSectionId.split(SectionId.#separator)[1];\n  }\n\n  // for a section id (e.g. 'template--22224696705326') and a section name (e.g. 'recommended-products'), return a qualified section id (e.g. 'template--22224696705326__recommended-products')\n  static getIdForSection(sectionId, sectionName) {\n    return `${sectionId}${SectionId.#separator}${sectionName}`;\n  }\n}\n\nclass HTMLUpdateUtility {\n  /**\n   * Used to swap an HTML node with a new node.\n   * The new node is inserted as a previous sibling to the old node, the old node is hidden, and then the old node is removed.\n   *\n   * The function currently uses a double buffer approach, but this should be replaced by a view transition once it is more widely supported https://developer.mozilla.org/en-US/docs/Web/API/View_Transitions_API\n   */\n  static viewTransition(oldNode, newContent, preProcessCallbacks = [], postProcessCallbacks = []) {\n    preProcessCallbacks?.forEach((callback) => callback(newContent));\n\n    const newNodeWrapper = document.createElement('div');\n    HTMLUpdateUtility.setInnerHTML(newNodeWrapper, newContent.outerHTML);\n    const newNode = newNodeWrapper.firstChild;\n\n    // dedupe IDs\n    const uniqueKey = Date.now();\n    oldNode.querySelectorAll('[id], [form]').forEach((element) => {\n      element.id && (element.id = `${element.id}-${uniqueKey}`);\n      element.form && element.setAttribute('form', `${element.form.getAttribute('id')}-${uniqueKey}`);\n    });\n    \n    oldNode.parentNode.insertBefore(newNode, oldNode);\n    oldNode.style.display = 'none';\n\n    postProcessCallbacks?.forEach((callback) => callback(newNode));\n\n    setTimeout(() => oldNode.remove(), 500);\n  }\n\n  // Sets inner HTML and reinjects the script tags to allow execution. By default, scripts are disabled when using element.innerHTML.\n  static setInnerHTML(element, html) {\n    element.innerHTML = html;\n    element.querySelectorAll('script').forEach((oldScriptTag) => {\n      const newScriptTag = document.createElement('script');\n      Array.from(oldScriptTag.attributes).forEach((attribute) => {\n        newScriptTag.setAttribute(attribute.name, attribute.value);\n      });\n      newScriptTag.appendChild(document.createTextNode(oldScriptTag.innerHTML));\n      oldScriptTag.parentNode.replaceChild(newScriptTag, oldScriptTag);\n    });\n  }\n}\ndocument.querySelectorAll('[id^=\"Details-\"] summary').forEach((summary) => {\n  summary.setAttribute('role', 'button');\n  summary.setAttribute('aria-expanded', summary.parentNode.hasAttribute('open'));\n\n  if(summary.nextElementSibling.getAttribute('id')) {\n    summary.setAttribute('aria-controls', summary.nextElementSibling.id);\n  }\n\n  summary.addEventListener('click', (event) => {\n    event.currentTarget.setAttribute('aria-expanded', !event.currentTarget.closest('details').hasAttribute('open'));\n  });\n\n  if (summary.closest('header-drawer')) return;\n  summary.parentElement.addEventListener('keyup', onKeyUpEscape);\n});\n\nconst trapFocusHandlers = {};\n\nfunction trapFocus(container, elementToFocus = container) {\n  var elements = getFocusableElements(container);\n  var first = elements[0];\n  var last = elements[elements.length - 1];\n\n  removeTrapFocus();\n\n  trapFocusHandlers.focusin = (event) => {\n    if (\n        event.target !== container &&\n        event.target !== last &&\n        event.target !== first\n    )\n      return;\n\n    document.addEventListener('keydown', trapFocusHandlers.keydown);\n  };\n\n  trapFocusHandlers.focusout = function() {\n    document.removeEventListener('keydown', trapFocusHandlers.keydown);\n  };\n\n  trapFocusHandlers.keydown = function(event) {\n    if (event.code.toUpperCase() !== 'TAB') return; // If not TAB key\n    // On the last focusable element and tab forward, focus the first element.\n    if (event.target === last && !event.shiftKey) {\n      event.preventDefault();\n      first.focus();\n    }\n\n    //  On the first focusable element and tab backward, focus the last element.\n    if (\n        (event.target === container || event.target === first) &&\n        event.shiftKey\n    ) {\n      event.preventDefault();\n      last.focus();\n    }\n  };\n\n  document.addEventListener('focusout', trapFocusHandlers.focusout);\n  document.addEventListener('focusin', trapFocusHandlers.focusin);\n\n  elementToFocus.focus();\n\n  if (elementToFocus.tagName === 'INPUT' &&\n      ['search', 'text', 'email', 'url'].includes(elementToFocus.type) &&\n      elementToFocus.value) {\n    elementToFocus.setSelectionRange(0, elementToFocus.value.length);\n  }\n}\n\n// Here run the querySelector to figure out if the browser supports :focus-visible or not and run code based on it.\ntry {\n  document.querySelector(\":focus-visible\");\n} catch(e) {\n  focusVisiblePolyfill();\n}\n\nfunction focusVisiblePolyfill() {\n  const navKeys = ['ARROWUP', 'ARROWDOWN', 'ARROWLEFT', 'ARROWRIGHT', 'TAB', 'ENTER', 'SPACE', 'ESCAPE', 'HOME', 'END', 'PAGEUP', 'PAGEDOWN']\n  let currentFocusedElement = null;\n  let mouseClick = null;\n\n  window.addEventListener('keydown', (event) => {\n    if(navKeys.includes(event.code.toUpperCase())) {\n      mouseClick = false;\n    }\n  });\n\n  window.addEventListener('mousedown', (event) => {\n    mouseClick = true;\n  });\n\n  window.addEventListener('focus', () => {\n    if (currentFocusedElement) currentFocusedElement.classList.remove('focused');\n\n    if (mouseClick) return;\n\n    currentFocusedElement = document.activeElement;\n    currentFocusedElement.classList.add('focused');\n\n  }, true);\n}\n\nfunction pauseAllMedia() {\n  document.querySelectorAll('.js-youtube').forEach((video) => {\n    video.contentWindow.postMessage('{\"event\":\"command\",\"func\":\"' + 'pauseVideo' + '\",\"args\":\"\"}', '*');\n  });\n  document.querySelectorAll('.js-vimeo').forEach((video) => {\n    video.contentWindow.postMessage('{\"method\":\"pause\"}', '*');\n  });\n  document.querySelectorAll('video').forEach((video) => video.pause());\n  document.querySelectorAll('product-model').forEach((model) => {\n    if (model.modelViewerUI) model.modelViewerUI.pause();\n  });\n}\n\nfunction removeTrapFocus(elementToFocus = null) {\n  document.removeEventListener('focusin', trapFocusHandlers.focusin);\n  document.removeEventListener('focusout', trapFocusHandlers.focusout);\n  document.removeEventListener('keydown', trapFocusHandlers.keydown);\n\n  if (elementToFocus) elementToFocus.focus();\n}\n\nfunction onKeyUpEscape(event) {\n  if (event.code.toUpperCase() !== 'ESCAPE') return;\n\n  const openDetailsElement = event.target.closest('details[open]');\n  if (!openDetailsElement) return;\n\n  const summaryElement = openDetailsElement.querySelector('summary');\n  openDetailsElement.removeAttribute('open');\n  summaryElement.setAttribute('aria-expanded', false);\n  summaryElement.focus();\n}\n\nclass QuantityInput extends HTMLElement {\n  constructor() {\n    super();\n    this.input = this.querySelector('input');\n    this.changeEvent = new Event('change', { bubbles: true });\n\n    this.input.addEventListener('change', this.onInputChange.bind(this));\n    this.querySelectorAll('button').forEach(\n        (button) => button.addEventListener('click', this.onButtonClick.bind(this))\n    );\n  }\n\n  quantityUpdateUnsubscriber = undefined;\n\n  connectedCallback() {\n    this.validateQtyRules();\n    this.quantityUpdateUnsubscriber = subscribe(PUB_SUB_EVENTS.quantityUpdate, this.validateQtyRules.bind(this));\n  }\n\n  disconnectedCallback() {\n    if (this.quantityUpdateUnsubscriber) {\n      this.quantityUpdateUnsubscriber();\n    }\n  }\n\n  onInputChange(event) {\n    this.validateQtyRules();\n  }\n\n  onButtonClick(event) {\n    event.preventDefault();\n    const previousValue = this.input.value;\n\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  validateQtyRules() {\n    const value = parseInt(this.input.value);\n    if (this.input.min) {\n      const min = parseInt(this.input.min);\n      const buttonMinus = this.querySelector(\".quantity__button[name='minus']\");\n      buttonMinus.classList.toggle('disabled', value <= min);\n    }\n    if (this.input.max) {\n      const max = parseInt(this.input.max);\n      const buttonPlus = this.querySelector(\".quantity__button[name='plus']\");\n      buttonPlus.classList.toggle('disabled', value >= max);\n    }\n  }\n}\n\ncustomElements.define('quantity-input', QuantityInput);\n\nfunction debounce(fn, wait) {\n  let t;\n  return (...args) => {\n    clearTimeout(t);\n    t = setTimeout(() => fn.apply(this, args), wait);\n  };\n}\n\n// function throttle(fn, delay) {\n//   let lastCall = 0;\n//   return function (...args) {\n//     const now = new Date().getTime();\n//     if (now - lastCall < delay) {\n//       return;\n//     }\n//     lastCall = now;\n//     return fn(...args);\n//   };\n// }\n\nfunction fetchConfig(type = 'json') {\n  return {\n    method: 'POST',\n    headers: { 'Content-Type': 'application/json', 'Accept': `application/${type}` }\n  };\n}\n\n/*\n * Shopify Common JS\n *\n */\nif ((typeof window.Shopify) == 'undefined') {\n  window.Shopify = {};\n}\n\nShopify.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\nclass MenuDrawer extends HTMLElement {\n  constructor() {\n    super();\n\n    this.mainDetailsToggle = this.querySelector('details');\n\n    this.addEventListener('keyup', this.onKeyUp.bind(this));\n    this.addEventListener('focusout', this.onFocusOut.bind(this));\n    this.bindEvents();\n  }\n\n  bindEvents() {\n    this.querySelectorAll('summary').forEach(summary => summary.addEventListener('click', this.onSummaryClick.bind(this)));\n    // this.querySelectorAll('button:not(.localization-selector)').forEach(button => button.addEventListener('click', this.onCloseButtonClick.bind(this)));\n    this.querySelectorAll(\n      'button:not(.localization-selector):not(.country-selector__close-button):not(.country-filter__reset-button)'\n    ).forEach((button) => button.addEventListener('click', this.onCloseButtonClick.bind(this))\n    );\n  }\n\n  onKeyUp(event) {\n    if(event.code.toUpperCase() !== 'ESCAPE') return;\n\n    const openDetailsElement = event.target.closest('details[open]');\n    if(!openDetailsElement) return;\n\n    openDetailsElement === this.mainDetailsToggle ? this.closeMenuDrawer(event, this.mainDetailsToggle.querySelector('summary')) : this.closeSubmenu(openDetailsElement);\n  }\n\n  onSummaryClick(event) {\n    const summaryElement = event.currentTarget;\n    const detailsElement = summaryElement.parentNode;\n    const parentMenuElement = detailsElement.closest('.has-submenu');\n    const isOpen = detailsElement.hasAttribute('open');\n    const reducedMotion = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n\n    function addTrapFocus() {\n      trapFocus(summaryElement.nextElementSibling, detailsElement.querySelector('button'));\n      summaryElement.nextElementSibling.removeEventListener('transitionend', addTrapFocus);\n    }\n\n    if (detailsElement === this.mainDetailsToggle) {\n      if(isOpen) event.preventDefault();\n      isOpen ? this.closeMenuDrawer(event, summaryElement) : this.openMenuDrawer(summaryElement);\n\n      if (window.matchMedia('(max-width: 992px)')) {\n        document.documentElement.style.setProperty('--viewport-height', `${window.innerHeight}px`);\n      }\n    } else {\n      setTimeout(() => {\n        detailsElement.classList.add('menu-opening');\n        summaryElement.setAttribute('aria-expanded', true);\n        parentMenuElement && parentMenuElement.classList.add('submenu-open');\n        !reducedMotion || reducedMotion.matches ? addTrapFocus() : summaryElement.nextElementSibling.addEventListener('transitionend', addTrapFocus);\n      }, 100);\n    }\n  }\n\n  openMenuDrawer(summaryElement) {\n    setTimeout(() => {\n      this.mainDetailsToggle.classList.add('menu-opening');\n    });\n    summaryElement.setAttribute('aria-expanded', true);\n    trapFocus(this.mainDetailsToggle, summaryElement);\n    document.body.classList.add(`overflow-hidden-${this.dataset.breakpoint}`);\n  }\n\n  closeMenuDrawer(event, elementToFocus = false) {\n    if (event === undefined) return;\n\n    this.mainDetailsToggle.classList.remove('menu-opening');\n    this.mainDetailsToggle.querySelectorAll('details').forEach(details => {\n      details.removeAttribute('open');\n      details.classList.remove('menu-opening');\n    });\n    this.mainDetailsToggle.querySelectorAll('.submenu-open').forEach(submenu => {\n      submenu.classList.remove('submenu-open');\n    });\n    document.body.classList.remove(`overflow-hidden-${this.dataset.breakpoint}`);\n    removeTrapFocus(elementToFocus);\n    this.closeAnimation(this.mainDetailsToggle);\n    \n  }\n\n  onFocusOut() {\n    setTimeout(() => {\n      if (this.mainDetailsToggle && this.mainDetailsToggle.hasAttribute('open') && !this.mainDetailsToggle.contains(document.activeElement)) this.closeMenuDrawer();\n    });\n  }\n\n  onCloseButtonClick(event) {\n    const detailsElement = event.currentTarget.closest('details');\n    if (!detailsElement) return;\n\n    if (detailsElement === this.mainDetailsToggle) {\n      this.closeMenuDrawer(event, this.mainDetailsToggle.querySelector('summary'));\n    } else {\n      this.closeSubmenu(detailsElement);\n    }\n  }\n\n  closeSubmenu(detailsElement) {\n    if (!detailsElement) {\n        return; // Exit the function if detailsElement is null\n    }\n    const parentMenuElement = detailsElement.closest('.submenu-open');\n    parentMenuElement && parentMenuElement.classList.remove('submenu-open');\n    detailsElement.classList.remove('menu-opening');\n    detailsElement.querySelector('summary').setAttribute('aria-expanded', false);\n    removeTrapFocus(detailsElement.querySelector('summary'));\n    this.closeAnimation(detailsElement);\n  }\n\n  closeAnimation(detailsElement) {\n    // Close mobile main drawer instantly for snappier feel\n    if (detailsElement === this.mainDetailsToggle && this.dataset.breakpoint === 'mobile') {\n      detailsElement.removeAttribute('open');\n      return;\n    }\n\n    let animationStart;\n\n    const handleAnimation = (time) => {\n      if (animationStart === undefined) {\n        animationStart = time;\n      }\n\n      const elapsedTime = time - animationStart;\n\n      if (elapsedTime < 400) {\n        window.requestAnimationFrame(handleAnimation);\n      } else {\n        detailsElement.removeAttribute('open');\n        if (detailsElement.closest('details[open]')) {\n          trapFocus(detailsElement.closest('details[open]'), detailsElement.querySelector('summary'));\n        }\n      }\n    }\n\n    window.requestAnimationFrame(handleAnimation);\n  }\n}\n\ncustomElements.define('menu-drawer', MenuDrawer);\n\nclass HeaderDrawer extends MenuDrawer {\n  constructor() {\n    super();\n  }\n\n  openMenuDrawer(summaryElement) {\n    this.header = this.header || document.querySelector('.section-header');\n    this.borderOffset = this.borderOffset || this.closest('.header-wrapper').classList.contains('header-wrapper--border-bottom') ? 1 : 0;\n    document.documentElement.style.setProperty('--header-bottom-position', `${parseInt(this.header.getBoundingClientRect().bottom - this.borderOffset)}px`);\n    this.header.classList.add('menu-open');\n\n    setTimeout(() => {\n      this.mainDetailsToggle.classList.add('menu-opening');\n    });\n\n    summaryElement.setAttribute('aria-expanded', true);\n    window.addEventListener('resize', this.onResize);\n    trapFocus(this.mainDetailsToggle, summaryElement);\n    document.body.classList.add(`overflow-hidden-${this.dataset.breakpoint}`);\n  }\n\n  closeMenuDrawer(event, elementToFocus) {\n    if (!elementToFocus) return;\n    super.closeMenuDrawer(event, elementToFocus);\n    this.header.classList.remove('menu-open');\n    window.removeEventListener('resize', this.onResize);\n  }\n\n  onResize = () => {\n    this.header && document.documentElement.style.setProperty('--header-bottom-position', `${parseInt(this.header.getBoundingClientRect().bottom - this.borderOffset)}px`);\n    document.documentElement.style.setProperty('--viewport-height', `${window.innerHeight}px`);\n  };\n}\n\ncustomElements.define('header-drawer', HeaderDrawer);\n\nclass ModalDialog extends HTMLElement {\n  constructor() {\n    super();\n    this.querySelector('[id^=\"ModalClose-\"]').addEventListener(\n        'click',\n        this.hide.bind(this, false)\n    );\n    this.addEventListener('keyup', (event) => {\n      if (event.code.toUpperCase() === 'ESCAPE') this.hide();\n    });\n    if (this.classList.contains('media-modal')) {\n      this.addEventListener('pointerup', (event) => {\n        if (event.pointerType === 'mouse' && !event.target.closest('deferred-media, product-model')) this.hide();\n      });\n    } else {\n      this.addEventListener('click', (event) => {\n        if (event.target === this) this.hide();\n      });\n    }\n  }\n\n  connectedCallback() {\n    if (this.moved) return;\n    this.moved = true;\n    document.body.appendChild(this);\n  }\n\n  show(opener) {\n    this.openedBy = opener;\n    const popup = this.querySelector('.template-popup');\n    document.body.classList.add('overflow-hidden');\n    this.setAttribute('open', '');\n    if (popup) popup.loadContent();\n    trapFocus(this, this.querySelector('[role=\"dialog\"]'));\n    window.pauseAllMedia();\n  }\n\n  hide() {\n    document.body.classList.remove('overflow-hidden');\n    document.body.dispatchEvent(new CustomEvent('modalClosed'));\n    this.removeAttribute('open');\n    removeTrapFocus(this.openedBy);\n    window.pauseAllMedia();\n  }\n}\ncustomElements.define('modal-dialog', ModalDialog);\n\nclass ModalOpener extends HTMLElement {\n  constructor() {\n    super();\n\n    const button = this.querySelector('button');\n\n    if (!button) return;\n    button.addEventListener('click', () => {\n      const modal = document.querySelector(this.getAttribute('data-modal'));\n      if (modal) modal.show(button);\n    });\n  }\n}\ncustomElements.define('modal-opener', ModalOpener);\n\nclass DeferredMedia extends HTMLElement {\n  constructor() {\n    super();\n    const poster = this.querySelector('[id^=\"Deferred-Poster-\"]');\n    if (!poster) return;\n    poster.addEventListener('click', this.loadContent.bind(this));\n  }\n\n  loadContent(focus = true) {\n    window.pauseAllMedia();\n    if (!this.getAttribute('loaded')) {\n      const content = document.createElement('div');\n      content.appendChild(this.querySelector('template').content.firstElementChild.cloneNode(true));\n\n      this.setAttribute('loaded', true);\n      const deferredElement = this.appendChild(content.querySelector('video, model-viewer, iframe'));\n      if (focus) deferredElement.focus();\n      if (deferredElement.nodeName == 'VIDEO' && deferredElement.getAttribute('autoplay')) {\n        // force autoplay for safari\n        deferredElement.play();\n      }\n    }\n  }\n}\n\ncustomElements.define('deferred-media', DeferredMedia);\n\n\nclass SliderComponent extends HTMLElement {\n  constructor() {\n    super();\n    this.slider = this.querySelector('[id^=\"Slider-\"]');\n    this.sliderItems = this.querySelectorAll('[id^=\"Slide-\"]');\n    this.enableSliderLooping = false;\n    this.currentPageElement = this.querySelector('.slider-counter--current');\n    this.pageTotalElement = this.querySelector('.slider-counter--total');\n    this.prevButton = this.querySelector('button[name=\"previous\"]');\n    this.nextButton = this.querySelector('button[name=\"next\"]');\n\n    if (!this.slider || !this.nextButton) return;\n\n    this.initPages();\n    const resizeObserver = new ResizeObserver((entries) => this.initPages());\n    resizeObserver.observe(this.slider);\n\n    this.slider.addEventListener('scroll', this.update.bind(this));\n    this.prevButton.addEventListener('click', this.onButtonClick.bind(this));\n    this.nextButton.addEventListener('click', this.onButtonClick.bind(this));\n  }\n\n  initPages() {\n    this.sliderItemsToShow = Array.from(this.sliderItems).filter((element) => element.clientWidth > 0);\n    if (this.sliderItemsToShow.length < 2) return;\n    this.sliderItemOffset = this.sliderItemsToShow[1].offsetLeft - this.sliderItemsToShow[0].offsetLeft;\n    this.slidesPerPage = Math.floor(\n      (this.slider.clientWidth - this.sliderItemsToShow[0].offsetLeft) / this.sliderItemOffset\n    );\n    this.totalPages = this.sliderItemsToShow.length - this.slidesPerPage + 1;\n    this.update();\n  }\n\n  resetPages() {\n    this.sliderItems = this.querySelectorAll('[id^=\"Slide-\"]');\n    this.initPages();\n  }\n\n  update() {\n    // Temporarily prevents unneeded updates resulting from variant changes\n    // This should be refactored as part of https://github.com/Shopify/dawn/issues/2057\n    if (!this.slider || !this.nextButton) return;\n\n    const previousPage = this.currentPage;\n    this.currentPage = Math.round(this.slider.scrollLeft / this.sliderItemOffset) + 1;\n\n    if (this.currentPageElement && this.pageTotalElement) {\n      this.currentPageElement.textContent = this.currentPage;\n      this.pageTotalElement.textContent = this.totalPages;\n    }\n\n    if (this.currentPage != previousPage) {\n      this.dispatchEvent(\n        new CustomEvent('slideChanged', {\n          detail: {\n            currentPage: this.currentPage,\n            currentElement: this.sliderItemsToShow[this.currentPage - 1],\n          },\n        })\n      );\n    }\n\n    if (this.enableSliderLooping) return;\n\n    if (this.isSlideVisible(this.sliderItemsToShow[0]) && this.slider.scrollLeft === 0) {\n      this.prevButton.setAttribute('disabled', 'disabled');\n    } else {\n      this.prevButton.removeAttribute('disabled');\n    }\n\n    if (this.isSlideVisible(this.sliderItemsToShow[this.sliderItemsToShow.length - 1], -1)) {\n      this.nextButton.setAttribute('disabled', 'disabled');\n    } else {\n      this.nextButton.removeAttribute('disabled');\n    }\n  }\n\n  isSlideVisible(element, offset = 0) {\n    const lastVisibleSlide = this.slider.clientWidth + this.slider.scrollLeft - offset;\n    return element.offsetLeft + element.clientWidth <= lastVisibleSlide && element.offsetLeft >= this.slider.scrollLeft;\n  }\n\n  onButtonClick(event) {\n    event.preventDefault();\n    const step = event.currentTarget.dataset.step || 1;\n    this.slideScrollPosition =\n      event.currentTarget.name === 'next'\n        ? this.slider.scrollLeft + step * this.sliderItemOffset\n        : this.slider.scrollLeft - step * this.sliderItemOffset;\n    this.setSlidePosition(this.slideScrollPosition);\n  }\n\n  setSlidePosition(position) {\n    this.slider.scrollTo({\n      left: position,\n    });\n  }\n}\n\ncustomElements.define('slider-component', SliderComponent);\n\nclass SlideshowComponent extends SliderComponent {\n  constructor() {\n    super();\n    this.sliderControlWrapper = this.querySelector('.slider-buttons');\n    this.enableSliderLooping = true;\n\n    if (!this.sliderControlWrapper) return;\n\n    // Define sliderItemsToShow here or ensure it's properly initialized\n    this.sliderItemsToShow = this.slider.querySelectorAll('.slideshow__slide');\n\n    this.sliderFirstItemNode = this.slider.querySelector('.slideshow__slide');\n    if (this.sliderItemsToShow.length > 0) this.currentPage = 1;\n\n    this.sliderControlLinksArray = Array.from(this.sliderControlWrapper.querySelectorAll('.slider-counter__link'));\n    this.sliderControlLinksArray.forEach(link => link.addEventListener('click', this.linkToSlide.bind(this)));\n    this.slider.addEventListener('scroll', this.setSlideVisibility.bind(this));\n    this.setSlideVisibility();\n    if (this.slider.getAttribute('data-autoplay') === 'true') this.setAutoPlay();\n\n    // custom code\n    this.extraVisibleElement = 0;\n    this.sliderItemsToShow.forEach(ele => {\n      if(this.isElementVisible(ele)) this.extraVisibleElement++;\n    });\n    if(this.extraVisibleElement!=0) this.extraVisibleElement--;\n  }\n\n  setAutoPlay() {\n    this.sliderAutoplayButton = this.querySelector('.slideshow__autoplay');\n    this.autoplaySpeed = this.slider.dataset.speed * 1000;\n\n    this.sliderAutoplayButton.addEventListener('click', this.autoPlayToggle.bind(this));\n    this.addEventListener('mouseover', this.focusInHandling.bind(this));\n    this.addEventListener('mouseleave', this.focusOutHandling.bind(this));\n    this.addEventListener('focusin', this.focusInHandling.bind(this));\n    this.addEventListener('focusout', this.focusOutHandling.bind(this));\n\n    this.play();\n    this.autoplayButtonIsSetToPlay = true;\n  }\n\n  // custom code\n  isElementVisible(element){\n      const rect = element.getBoundingClientRect();\n      const rect1 = this.getBoundingClientRect();\n\n      return (\n        rect.left >=  rect1.left &&\n        rect.right <= rect1.right\n      );\n    };\n\n  onButtonClick(event) {\n    super.onButtonClick(event);\n    const isFirstSlide = this.currentPage === 1;\n    const isLastSlide = (this.currentPage + this.extraVisibleElement) === this.sliderItemsToShow.length; // custom code\n\n    if (!isFirstSlide && !isLastSlide) return;\n    if (isFirstSlide && event.currentTarget.name === 'previous') {\n      this.slideScrollPosition = this.slider.scrollLeft + this.sliderFirstItemNode.clientWidth * this.sliderItemsToShow.length;\n    } else if (isLastSlide && event.currentTarget.name === 'next') {\n      this.slideScrollPosition = 0;\n    }\n    this.slider.scrollTo({\n      left: this.slideScrollPosition\n    });\n  }\n\n  update() {\n    super.update();\n    this.sliderControlButtons = this.querySelectorAll('.slider-counter__link');\n    this.prevButton.removeAttribute('disabled');\n\n    if (!this.sliderControlButtons.length) return;\n\n    this.sliderControlButtons.forEach(link => {\n      link.classList.remove('slider-counter__link--active');\n      link.removeAttribute('aria-current');\n    });\n    if (this.currentPage > 0 && this.currentPage <= this.sliderControlButtons.length) {\n    this.sliderControlButtons[this.currentPage - 1].classList.add('slider-counter__link--active');\n    this.sliderControlButtons[this.currentPage - 1].setAttribute('aria-current', true);\n    }\n  }\n\n  autoPlayToggle() {\n    this.togglePlayButtonState(this.autoplayButtonIsSetToPlay);\n    this.autoplayButtonIsSetToPlay ? this.pause() : this.play();\n    this.autoplayButtonIsSetToPlay = !this.autoplayButtonIsSetToPlay;\n  }\n\n  focusOutHandling(event) {\n    const focusedOnAutoplayButton = event.target === this.sliderAutoplayButton || this.sliderAutoplayButton.contains(event.target);\n    if (!this.autoplayButtonIsSetToPlay || focusedOnAutoplayButton) return;\n    this.play();\n  }\n\n  focusInHandling(event) {\n    const focusedOnAutoplayButton = event.target === this.sliderAutoplayButton || this.sliderAutoplayButton.contains(event.target);\n    if (focusedOnAutoplayButton && this.autoplayButtonIsSetToPlay) {\n      this.play();\n    } else if (this.autoplayButtonIsSetToPlay) {\n      this.pause();\n    }\n  }\n\n  play() {\n    this.slider.setAttribute('aria-live', 'off');\n    clearInterval(this.autoplay);\n    this.autoplay = setInterval(this.autoRotateSlides.bind(this), this.autoplaySpeed);\n  }\n\n  pause() {\n    this.slider.setAttribute('aria-live', 'polite');\n    clearInterval(this.autoplay);\n  }\n\n  togglePlayButtonState(pauseAutoplay) {\n    if (pauseAutoplay) {\n      this.sliderAutoplayButton.classList.add('slideshow__autoplay--paused');\n      this.sliderAutoplayButton.setAttribute('aria-label', window.accessibilityStrings.playSlideshow);\n    } else {\n      this.sliderAutoplayButton.classList.remove('slideshow__autoplay--paused');\n      this.sliderAutoplayButton.setAttribute('aria-label', window.accessibilityStrings.pauseSlideshow);\n    }\n  }\n\n  autoRotateSlides() {\n    // custom code\n    const slideScrollPosition = (this.currentPage + this.extraVisibleElement) === this.sliderItems.length ? 0 : this.slider.scrollLeft + this.slider.querySelector('.slideshow__slide').clientWidth;\n    this.slider.scrollTo({\n      left: slideScrollPosition\n    });\n  }\n\n  setSlideVisibility() {\n    this.sliderItemsToShow.forEach((item, index) => {\n      const linkElements = item.querySelectorAll('a');\n\n      if (index === this.currentPage - 1) {\n        if (linkElements.length) linkElements.forEach(button => {\n          button.removeAttribute('tabindex');\n        });\n        item.setAttribute('aria-hidden', 'false');\n        item.removeAttribute('tabindex');\n      } else {\n        if (linkElements.length) linkElements.forEach(button => {\n          button.setAttribute('tabindex', '-1');\n        });\n        item.setAttribute('aria-hidden', 'true');\n        item.setAttribute('tabindex', '-1');\n      }\n    });\n  }\n\n  linkToSlide(event) {\n    event.preventDefault();\n    const slideScrollPosition = this.slider.scrollLeft + this.sliderFirstItemNode.clientWidth * (this.sliderControlLinksArray.indexOf(event.currentTarget) + 1 - this.currentPage);\n    this.slider.scrollTo({\n      left: slideScrollPosition\n    });\n  }\n}\n\ncustomElements.define('slideshow-component', SlideshowComponent);\n\nclass VariantSelects extends HTMLElement {\n  constructor() {\n    super();\n  }\n\n  connectedCallback() {\n    this.addEventListener('change', (event) => {\n      const target = this.getInputForEventTarget(event.target);\n      this.updateSelectionMetadata(event);\n      publish(PUB_SUB_EVENTS.optionValueSelectionChange, {\n        data: {\n          event,\n          target,\n          selectedOptionValues: this.selectedOptionValues,\n        },\n      });\n    });\n  }\n\n\n  updateSelectionMetadata({ target }) {\n    const { value, tagName } = target;\n\n    if (tagName === 'SELECT' && target.selectedOptions.length) {\n      Array.from(target.options)\n        .find((option) => option.getAttribute('selected'))\n        .removeAttribute('selected');\n      target.selectedOptions[0].setAttribute('selected', 'selected');\n\n      const swatchValue = target.selectedOptions[0].dataset.optionSwatchValue;\n      const selectedDropdownSwatchValue = target\n        .closest('.product-form__input')\n        .querySelector('[data-selected-value] > .swatch');\n      if (!selectedDropdownSwatchValue) return;\n      if (swatchValue) {\n        selectedDropdownSwatchValue.style.setProperty('--swatch--background', swatchValue);\n        selectedDropdownSwatchValue.classList.remove('swatch--unavailable');\n      } else {\n        selectedDropdownSwatchValue.style.setProperty('--swatch--background', 'unset');\n        selectedDropdownSwatchValue.classList.add('swatch--unavailable');\n      }\n\n      selectedDropdownSwatchValue.style.setProperty(\n        '--swatch-focal-point',\n        target.selectedOptions[0].dataset.optionSwatchFocalPoint || 'unset'\n      );\n    } else if (tagName === 'INPUT' && target.type === 'radio') {\n      const selectedSwatchValue = target.closest(`fieldset`).querySelector('[data-selected-value]');\n      if (selectedSwatchValue) selectedSwatchValue.innerHTML = value;\n    }\n  }\n\n  getInputForEventTarget(target) {\n    return target.tagName === 'SELECT' ? target.selectedOptions[0] : target;\n  }\n\n  get selectedOptionValues() {\n    return Array.from(this.querySelectorAll('select option[selected], fieldset input:checked')).map(\n      ({ dataset }) => dataset.optionValueId\n    );\n  }\n}\n\ncustomElements.define('variant-selects', VariantSelects);\n\n// class VariantRadios extends VariantSelects {\n//   constructor() {\n//     super();\n//   }\n\n//   setInputAvailability(listOfOptions, listOfAvailableOptions) {\n//     listOfOptions.forEach((input) => {\n//       if (listOfAvailableOptions.includes(input.getAttribute('value'))) {\n//         input.classList.remove('disabled');\n//       } else {\n//         input.classList.add('disabled');\n//       }\n//     });\n//   }\n\n//   updateOptions() {\n//     const fieldsets = Array.from(this.querySelectorAll('fieldset'));\n//     this.options = fieldsets.map((fieldset) => {\n//       return Array.from(fieldset.querySelectorAll('input')).find((radio) => radio.checked).value;\n//     });\n//   }\n// }\n\n// customElements.define('variant-radios', VariantRadios);\n\n\n\nclass ProductRecommendations extends HTMLElement {\n  observer = undefined;\n\n  constructor() {\n    super();\n  }\n\n  connectedCallback() {\n    this.initializeRecommendations(this.dataset.productId);\n  }\n\n  initializeRecommendations(productId) {\n    this.observer?.unobserve(this);\n    this.observer = new IntersectionObserver(\n      (entries, observer) => {\n        if (!entries[0].isIntersecting) return;\n        observer.unobserve(this);\n        this.loadRecommendations(productId);\n      },\n      { rootMargin: '0px 0px 400px 0px' }\n    );\n    this.observer.observe(this);\n  }\n\n  loadRecommendations(productId) {\n    fetch(`${this.dataset.url}&product_id=${productId}&section_id=${this.dataset.sectionId}`)\n      .then((response) => response.text())\n      .then((text) => {\n        const html = document.createElement('div');\n        html.innerHTML = text;\n        const recommendations = html.querySelector('product-recommendations');\n\n        if (recommendations?.innerHTML.trim().length) {\n          this.innerHTML = recommendations.innerHTML;\n        }\n\n        if (!this.querySelector('slider-component') && this.classList.contains('complementary-products')) {\n          this.remove();\n        }\n\n        if (html.querySelector('.grid__item')) {\n          this.classList.add('product-recommendations--loaded');\n        }\n      })\n      .catch((e) => {\n        console.error(e);\n      });\n  }\n}\n\ncustomElements.define('product-recommendations', ProductRecommendations);\n\nclass AccountIcon extends HTMLElement {\n  constructor() {\n    super();\n\n    this.icon = this.querySelector('.icon');\n  }\n\n  connectedCallback() {\n    document.addEventListener('storefront:signincompleted', this.handleStorefrontSignInCompleted.bind(this));\n  }\n\n  handleStorefrontSignInCompleted(event) {\n    if (event?.detail?.avatar) {\n      this.icon?.replaceWith(event.detail.avatar.cloneNode());\n    }\n  }\n}\n\ncustomElements.define('account-icon', AccountIcon);\n\n// Scroll To top (#scroll is only rendered when footer \"scroll-to-top\" is enabled)\nfunction progressScrollValue() {\n  const scrollProgress = document.getElementById('scroll');\n  if (!scrollProgress) return;\n\n  const pos = document.documentElement.scrollTop;\n  const calcHeight =\n    document.documentElement.scrollHeight -\n    document.documentElement.clientHeight;\n  if (calcHeight <= 0) return;\n\n  const scrollValue = Math.round((pos * 100) / calcHeight);\n  if (pos > 100) {\n    scrollProgress.style.display = 'grid';\n  } else {\n    scrollProgress.style.display = 'none';\n  }\n  scrollProgress.style.background = `linear-gradient(to top, rgb(var(--color-button-text)) ${scrollValue}%, rgb(var(--color-button)) ${scrollValue}%)`;\n\n  const arrow = scrollProgress.querySelector('svg path');\n  if (arrow) {\n    arrow.style.fill = 'rgb(var(--color-button-text))';\n    if (scrollValue > 50) {\n      arrow.style.filter = 'invert(1)';\n      arrow.style.transition = 'fill 0.3s ease, filter 0.3s ease';\n    } else {\n      arrow.style.filter = 'none';\n      arrow.style.transition = 'fill 0.3s ease, filter 0.3s ease';\n    }\n  }\n\n  scrollProgress.style.setProperty('--scroll-value', `${scrollValue}%`);\n}\n\nfunction initScrollToTopButton() {\n  const scrollProgress = document.getElementById('scroll');\n  if (!scrollProgress || scrollProgress.dataset.wlgScrollTopBound === 'true') return;\n  scrollProgress.dataset.wlgScrollTopBound = 'true';\n  scrollProgress.addEventListener('click', () => {\n    document.documentElement.style.scrollBehavior = 'smooth';\n    document.documentElement.scrollTop = 0;\n  });\n}\n\ninitScrollToTopButton();\ndocument.addEventListener('shopify:section:load', initScrollToTopButton);\n\n// Sticky Product\nfunction showStickyProduct(){\n  let ele = document.querySelector('.sticky_pro_page');\n  if(ele){\n    if(isStickyProductVisiable(ele) && !ele.classList.contains('sticky_padd')){\n      ele.classList.add('sticky_padd');\n    } else if(!isStickyProductVisiable(ele) && ele.classList.contains('sticky_padd')){\n      ele.classList.remove('sticky_padd');\n    }\n  }\n}\nfunction isStickyProductVisiable(element) {\n  const rect = element.getBoundingClientRect();\n  return rect.y < document.documentElement.scrollTop;\n} \nwindow.addEventListener('scroll', () => {\n  progressScrollValue();\n  showStickyProduct();\n});\n\n\n// custom collaps\nclass WebiCollapse extends HTMLElement {\n  constructor() {\n    super();\n    var col = this.getElementsByClassName(\"toggle\");\n    Array.from(col).forEach((ele) => {\n      ele.setAttribute('tabindex', '0');\n      var content = ele.nextElementSibling;\n      var defaultOpen = ele.classList.contains(\"active\");\n      if (content && !defaultOpen) {\n        content.style.height = '0px';\n        content.setAttribute('data-collapsed', 'true');\n      }\n      ele.addEventListener(\"click\", this.onSectionClick.bind(this));\n      ele.addEventListener('keydown', this.handleKeyDown.bind(this));\n    });\n    \n  }\n\n  handleKeyDown(event){\n    if (event.keyCode === 13) {\n      this.onSectionClick(event);\n    }\n  }\n\n  onSectionClick(event) {\n    event.currentTarget.classList.toggle(\"active\");\n    var content = event.currentTarget.nextElementSibling;\n    var isCollapsed = content.getAttribute('data-collapsed') === 'true';\n    let mainElement = event.currentTarget.closest('.webicollapse_main')\n    if(mainElement){\n      mainElement.classList.toggle(\"active\");\n    }\n    if (isCollapsed) {\n      this.expandSection(content);\n      content.setAttribute('data-collapsed', 'false');\n    } else {\n      this.collapseSection(content);\n    }\n  }\n\n  expandSection(element) {\n    var sectionHeight = element.scrollHeight;\n    element.style.height = sectionHeight + 'px';\n    element.style.visibility = 'visible';\n    element.addEventListener('transitionend', () => {\n      element.removeEventListener('transitionend', this.expandSection);\n      element.style.height = null;\n      element.style.visibility = 'visible';\n    });\n    element.setAttribute('data-collapsed', 'false');\n  }\n\n  collapseSection(element) {\n    var sectionHeight = element.scrollHeight;\n    element.style.height = sectionHeight + 'px';\n    element.offsetHeight;\n  \n    element.style.transition = 'height 0.3s ease';\n    element.style.height = '0px';\n    \n    element.addEventListener('transitionend', () => {\n      element.removeEventListener('transitionend', this.collapseSection);\n      element.style.transition = '';\n      element.style.height = '0px';\n      element.style.visibility = 'hidden';\n    });\n  \n    element.setAttribute('data-collapsed', 'true');\n  }\n}\n\ncustomElements.define('webi-collapse', WebiCollapse);\n// User js\nclass UserPopup extends HTMLElement {\n  constructor() {\n    super();\n    this.addEventListener('click', this.popUpClick.bind(this));\n    document.addEventListener('click', this.closePopup.bind(this));\n  }\n\n  popUpClick(event) {\n    event.stopPropagation();\n    this.querySelector(\"#userdrop\").classList.toggle(\"hidden\");\n  }\n\n  closePopup(event) {\n    const userPopup = this.querySelector(\"#userdrop\");\n    if (!userPopup.contains(event.target)) {\n      userPopup.classList.add(\"hidden\");\n    }\n  }\n}\n\ncustomElements.define('user-popup', UserPopup);\n\n// Collection page load more\n// class LoadMore extends HTMLElement {\n//   constructor() {\n//     super();\n//     this.addEventListener('click', this.loadMoreProducts.bind(this));\n//     this.next_url = document.getElementById('product-grid').dataset.nextUrl;\n//     this.loadMoreBtn = this.querySelector('.button');\n//   }\n//   async getNextPage() {\n//     try {\n//       let res = await fetch(this.next_url);\n//       return await res.text();\n//     } catch (error) {\n//       console.log(error);\n//     }\n//   }\n//   async loadMoreProducts() {\n//     const load_more_spinner = this.getElementsByClassName('load-more_spinner')[0];\n//     if (this.loadMoreBtn) this.loadMoreBtn.style.display = 'none';\n//     load_more_spinner.style.display = 'block';\n//     let nextPage = await this.getNextPage();\n//     const parser = new DOMParser();\n//     const nextPageDoc = parser.parseFromString(nextPage, 'text/html');\n//     load_more_spinner.style.display = 'none';\n//     const productgrid = nextPageDoc.getElementById('product-grid');\n//     const new_products = productgrid.getElementsByClassName('grid__item');\n//     const new_url = productgrid.dataset.nextUrl;\n//     if (new_url) {\n//       if (this.loadMoreBtn) this.loadMoreBtn.style.display = 'inline-flex';\n//     }\n//     this.next_url = new_url;\n//     for (let i = 0; i < new_products.length; i++) {\n//       if(new_products[i].classList.contains('wbimgbnrblock')) continue;\n//       document.getElementById('product-grid').appendChild(new_products[i]);\n//     }\n//   }\n// }\n// customElements.define('load-more', LoadMore);\nclass LoadMore extends HTMLElement {\n  constructor() {\n    super();\n    this.addEventListener('click', this.loadMoreProducts.bind(this));\n    this.next_url = document.getElementById('product-grid').dataset.nextUrl;\n    this.loadMoreBtn = this.querySelector('.button');\n  }\n  async getNextPage() {\n    try {\n      let res = await fetch(this.next_url);\n      return await res.text();\n    } catch (error) {\n      console.log(error);\n    } \n  }\n  async loadMoreProducts() {\n    const load_more_spinner = this.getElementsByClassName('load-more_spinner')[0];\n    if (this.loadMoreBtn) this.loadMoreBtn.style.display = 'none';\n    load_more_spinner.style.display = 'block';\n    let nextPage = await this.getNextPage();\n    const parser = new DOMParser();\n    const nextPageDoc = parser.parseFromString(nextPage, 'text/html');\n    load_more_spinner.style.display = 'none';\n    const productgrid = nextPageDoc.getElementById('product-grid');\n    const new_products = productgrid.getElementsByClassName('grid__item');\n    const temp = new_products;\n    const new_url = productgrid.dataset.nextUrl;\n    if (new_url) {\n      if (this.loadMoreBtn) this.loadMoreBtn.style.display = 'inline-flex';\n    }\n    this.next_url = new_url;\n    let currentIndex = 0;\n    while (new_products.length > currentIndex) {\n      let product = new_products[currentIndex];\n      if(product.classList.contains('wbimgbnrblock')) {\n        currentIndex++;\n        continue;\n      };\n      document.getElementById('product-grid').appendChild(product);\n    } \n  }\n}\ncustomElements.define('load-more', LoadMore);\n\n// =========================== header ==========================================\n\n// on click remove content on video\n\n  document.querySelectorAll('.banner-content-remove').forEach((close) => {\n    close.addEventListener('click', (event) => {\n      const parentElement = event.currentTarget.closest('.video_banner_box');\n      if (parentElement) {\n        parentElement.remove();\n      }\n    });\n  });\n\n// Blog left sidebar Drawer Javascript\n\nclass ArticleToggle extends HTMLElement {\n  constructor() {  \n    super();\n    this.sidebar = this.querySelector('.sidebar');\n    this.toggleButton = this.querySelector('.toggle-button');\n    this.closeBtn = this.querySelector('.sidebar-close');\n    this.toggleButton.addEventListener('click', this.toggleSidebar.bind(this)); \n    this.closeBtn.addEventListener('click', this.closeSidebar.bind(this));\n    document.addEventListener('click', this.handleOutsideClick.bind(this));\n  }\n  \n  toggleSidebar() {\n    this.sidebar.classList.add('active');\n    document.body.classList.add(\"overflow-hidden\");\n  }\n  \n  closeSidebar() {\n    this.sidebar.classList.remove('active');\n    document.body.classList.remove(\"overflow-hidden\");\n  }\n  \n  handleOutsideClick(event) {\n    if (this.sidebar.classList.contains('active') && !this.sidebar.contains(event.target) && !this.toggleButton.contains(event.target)) {\n      this.closeSidebar();\n    }\n  }\n}\n\ncustomElements.define('article-toggle', ArticleToggle);\n\n// New js for product tab\n// class VariantTabSelects extends HTMLElement {\n//   constructor() {\n//     super();\n//     this.addEventListener('change', this.onVariantChange);\n//   }\n//   onVariantChange() {\n//     this.updateOptions();\n//     this.updateMasterId();\n//     this.toggleAddButton(true, '', false);\n//     this.updatePickupAvailability();\n//     this.removeErrorMessage();\n//     this.updateVariantValue();\n//     this.updateVariantStatuses();\n\n//     if (!this.currentVariant) {\n//       this.toggleAddButton(true, '', true);\n//       this.setUnavailable();\n//     } else {\n//       this.updateMedia();\n//       this.updateURL();\n//       this.updateVariantInput();\n//       this.renderProductInfo();\n//       this.updateShareUrl();\n//       this.updateCardURL();\n//       this.updateStockCountdown();\n//     }\n//   }\n//   updateVariantValue() {\n//     if (this.dataset.layout == 'button') {\n//       event.target.closest('fieldset').querySelector('legend span').innerHTML = event.target.value\n//     }\n//   }\n//   updateOptions() {\n//     this.options = Array.from(this.querySelectorAll('select'), (select) => select.value);\n//   }\n\n//   updateMasterId() {\n//     this.currentVariant = this.getVariantData().find((variant) => {\n//       return !variant.options.map((option, index) => {\n//         return this.options[index] === option;\n//       }).includes(false);\n//     });\n//   }\n//   updateStockCountdown() {\n//     if (!this.currentVariant) return;\n\n//     if (this.dataset.layout == 'card') {\n//       let card = this.closest('.card');\n//       if (card && card.querySelector('.wbstockcount') != null) {\n//         let variantsData = JSON.parse(card.querySelector('#card_product-variants').innerHTML);\n//         let stockCountdownConfig = JSON.parse(card.querySelector('#card_product-stock-countdown-config').innerHTML);\n//         let variant = this.currentVariant;\n//         let countdownWrapper = card.querySelector('.wbstockcount');\n//         if (variantsData[variant.id]['q'] > 0 && variant.inventory_management == 'shopify') {\n//           card.querySelector('.wbstockcount').classList.remove('hidden');\n//           card.querySelector('.wbstockinfo-bar').classList.remove('hidden');\n//           if (variantsData[variant.id]['q'] > stockCountdownConfig.limited_stock_cut_off) { // High Stock\n//             countdownWrapper.querySelector('.wbstockinfo').classList.remove('wbstockinfo_low', 'wbstockinfo_soon');\n//             countdownWrapper.querySelector('.wbstockinfo').classList.add('wbstockinfo_high');\n//             countdownWrapper.querySelector('.wbstockinfo').innerHTML = stockCountdownConfig.instock_message.replace('{stock_number}', variantsData[variant.id]['q']);\n//             countdownWrapper.querySelector('.wbstockinfo-probar').style.width = ((variantsData[variant.id]['q'] * 100) / stockCountdownConfig.max_stock) + '%';\n//           } else { // Low Stock\n//             countdownWrapper.querySelector('.wbstockinfo').classList.replace('wbstockinfo_soon', 'wbstockinfo_low');\n//             countdownWrapper.querySelector('.wbstockinfo').classList.add('wbstockinfo_low');\n//             countdownWrapper.querySelector('.wbstockinfo').innerHTML = stockCountdownConfig.limited_stock_message.replace('{stock_number}', variantsData[variant.id]['q']);\n//             countdownWrapper.querySelector('.wbstockinfo-probar').style.width = ((variantsData[variant.id]['q'] * 100) / stockCountdownConfig.max_stock) + '%';\n//           }\n//         } \n//         else if (variantsData[variant.id]['p'] == \"continue\") {\n//           card.querySelector('.wbstockcount').classList.remove('hidden');\n//           card.querySelector('.wbstockinfo-bar').classList.add('hidden');\n//           countdownWrapper.querySelector('.wbstockinfo').classList.remove('wbstockinfo_low', 'wbstockinfo_high');\n//           countdownWrapper.querySelector('.wbstockinfo').classList.add('wbstockinfo_soon');\n//           countdownWrapper.querySelector('.wbstockinfo').innerHTML = stockCountdownConfig.continue_selling_message.replace();\n//         }\n//         else {\n//           card.querySelector('.wbstockcount').classList.add('hidden');\n//         }\n//       }\n//     } else {  \n//       let productMain = this.closest('.product');\n//       if (productMain && productMain.querySelector('.wbstockcount') != null) {\n//         let variantsData = JSON.parse(productMain.querySelector('#product-variants').innerHTML);\n//         let stockCountdownConfig = JSON.parse(productMain.querySelector('#product-stock-countdown-config').innerHTML);\n//         let variant = this.currentVariant;\n//         let countdownWrapper = productMain.querySelector('.wbstockcount');\n//         if (variantsData[variant.id]['q'] > 0 && variant.inventory_management == 'shopify') {\n//           productMain.querySelector('.wbstockcount').classList.remove('hidden');\n//           productMain.querySelector('.wbstockinfo-bar').classList.remove('hidden');\n//           if (variantsData[variant.id]['q'] > stockCountdownConfig.limited_stock_cut_off) { // High Stock\n//             countdownWrapper.querySelector('.wbstockinfo').classList.remove('wbstockinfo_low', 'wbstockinfo_soon');\n//             countdownWrapper.querySelector('.wbstockinfo').classList.add('wbstockinfo_high');\n//             countdownWrapper.querySelector('.wbstockinfo').innerHTML = stockCountdownConfig.instock_message.replace('{stock_number}', variantsData[variant.id]['q']);\n//             countdownWrapper.querySelector('.wbstockinfo-probar').style.width = ((variantsData[variant.id]['q'] * 100) / stockCountdownConfig.max_stock) + '%';\n//           } else { // Low Stock\n//             countdownWrapper.querySelector('.wbstockinfo').classList.replace('wbstockinfo_soon', 'wbstockinfo_low');\n//             countdownWrapper.querySelector('.wbstockinfo').classList.add('wbstockinfo_low');\n//             countdownWrapper.querySelector('.wbstockinfo').innerHTML = stockCountdownConfig.limited_stock_message.replace('{stock_number}', variantsData[variant.id]['q']);\n//             countdownWrapper.querySelector('.wbstockinfo-probar').style.width = ((variantsData[variant.id]['q'] * 100) / stockCountdownConfig.max_stock) + '%';\n//           }\n//         } \n//         else if (variantsData[variant.id]['p'] == \"continue\") {\n//           productMain.querySelector('.wbstockcount').classList.remove('hidden');\n//           productMain.querySelector('.wbstockinfo-bar').classList.add('hidden');\n//           countdownWrapper.querySelector('.wbstockinfo').classList.remove('wbstockinfo_low', 'wbstockinfo_high');\n//           countdownWrapper.querySelector('.wbstockinfo').classList.add('wbstockinfo_soon');\n//           countdownWrapper.querySelector('.wbstockinfo').innerHTML = stockCountdownConfig.continue_selling_message.replace();\n//         }\n//         else {\n//           productMain.querySelector('.wbstockcount').classList.add('hidden');\n//         }\n//       }\n//     }\n//   }\n//   updateMedia() {\n//     if (!this.currentVariant) return;\n//     if (!this.currentVariant.featured_media) return;\n\n//     // Variant in Product Card\n//     if (this.dataset.layout == 'card') {\n//       const card = this.closest('.card');\n//       const newMedia = card.querySelector(\n//           `[data-media-id=\"${this.dataset.section}-${this.dataset.block}-${this.dataset.product}-${this.currentVariant.featured_media.id}\"]`\n//       );\n//       if (!newMedia) return;\n//       const modalContent = card.querySelector('.card__media');\n//       const newMediaModal = modalContent.querySelector( `[data-media-id=\"${this.currentVariant.featured_media.id}\"]`);\n//       const parent = newMedia.parentElement;\n//       if (parent.firstChild == newMedia) return;\n//       parent.prepend(newMedia);\n//       this.stickyHeader = this.stickyHeader || document.querySelector('sticky-header');\n//       if (this.stickyHeader) {\n//         this.stickyHeader.dispatchEvent(new Event('preventHeaderReveal'));\n//       }\n//     } else {\n//       const mediaGalleries = document.querySelectorAll(`[id^=\"MediaGallery-${this.dataset.section}-${this.dataset.block}\"]`);\n//       mediaGalleries.forEach((mediaGallery) =>\n//         mediaGallery.setActiveMedia(`${this.dataset.section}-${this.dataset.block}-${this.currentVariant.featured_media.id}`, true)\n//       );\n//       const modalContent = document.querySelector(`#ProductModal-${this.dataset.section}-${this.dataset.block} .product-media-modal__content`);\n//       if (!modalContent) return;\n//       const newMediaModal = modalContent.querySelector(`[data-media-id=\"${this.currentVariant.featured_media.id}\"]`);\n//       modalContent.prepend(newMediaModal);\n\n//     }\n//   }\n//   updateCardURL() {\n//     if (this.dataset.layout == 'card') {\n//       const card = this.closest('.card');\n//       const modalContent = card.querySelector('.card__media');\n//       const productAnchor = modalContent.querySelector('a');\n//       const productTitle = card.querySelector('.card__heading');\n//       const productTitleAnchor = productTitle.querySelector('a');\n//       const productQuickview = card.querySelector('.js-wbquickview-link');\n//       let productURL = this.updateURLParameter(this.dataset.url, 'variant', this.currentVariant.id);\n//       productAnchor.setAttribute('href', productURL);\n//       productTitleAnchor.setAttribute('href', productURL);\n//       if (productQuickview) {\n//         productQuickview.setAttribute('variant-id', this.currentVariant.id);\n//       }\n//     }\n//   }\n//   updateURLParameter(url, param, paramVal){\n//     var newAdditionalURL = \"\";\n//     var tempArray = url.split(\"?\");\n//     var baseURL = tempArray[0];\n//     var additionalURL = tempArray[1];\n//     var temp = \"\";\n//     if (additionalURL) {\n//       tempArray = additionalURL.split(\"&\");\n//       for (var i=0; i<tempArray.length; i++){\n//         if(tempArray[i].split('=')[0] != param){\n//           newAdditionalURL += temp + tempArray[i];\n//           temp = \"&\";\n//         }\n//       }\n//     }\n//     var rows_txt = temp + \"\" + param + \"=\" + paramVal;\n//     return baseURL + \"?\" + newAdditionalURL + rows_txt;\n//   }\n//   updateURL() {\n//     if (!this.currentVariant || this.dataset.updateUrl === 'false') return;\n//     window.history.replaceState({ }, '', `${this.dataset.url}?variant=${this.currentVariant.id}`);\n//   }\n\n//   updateShareUrl() {\n//     const shareButton = document.getElementById(`Share-${this.dataset.section}-${this.dataset.block}`);\n//     if (!shareButton || !shareButton.updateUrl) return;\n//     shareButton.updateUrl(`${window.shopUrl}${this.dataset.url}?variant=${this.currentVariant.id}`);\n//   }\n\n//   updateVariantInput() {\n//     // Variant in Product Card\n//     if (this.dataset.layout == 'card') {\n//       const card = this.closest('.card');\n//       const productForms = card.querySelectorAll(`#ProductInfo-${this.dataset.section}-${this.dataset.block}-${this.dataset.product}`);\n//       productForms.forEach((productForm) => {\n//         const input = productForm.querySelectorAll('input[name=\"id\"]');\n//         Array.from(input).forEach((element,index) =>\n//         {\n//           element.value = this.currentVariant.id;\n//         });\n//         const select = productForm.querySelectorAll('select[name=\"id\"]');\n//         Array.from(select).forEach((element,index) =>\n//         {\n//           element.value = this.currentVariant.id;\n//         });\n\n//         const fieldsets = Array.from(this.querySelectorAll('fieldset'));\n//         fieldsets.forEach(function(option) {\n//           Array.from(option.querySelectorAll('label')).find((element) => element.classList.remove('active'));\n//         });\n//         const optionData = this.closest('.grid__item').querySelectorAll('select option');\n//         const regularPrice = this.closest('.grid__item').querySelector('.price .price__container .price__regular .price-item--regular');\n//         const saleRegularPrice = this.closest('.grid__item').querySelector('.price .price__container .price__sale .price-item--sale');\n//         const salePrice = this.closest('.grid__item').querySelector('.price .price__container .price__sale .price-item--regular');\n//         const wbunitPrice = this.closest('.grid__item').querySelector('.price .price__container .unit-price .cardunitp');\n//         const wbunitValue = this.closest('.grid__item').querySelector('.price .price__container .unit-price .cardunitv');\n          \n//         const wbPercentBadge = this.closest('.grid__item').querySelector('.card__badge .percent__badge-sale');\n//         const wbAmountBadge = this.closest('.grid__item').querySelector('.card__badge .amount__badge-sale');\n        \n//         optionData.forEach((data) => {\n//           if(data.value == this.currentVariant.id) {\n//             if(data.dataset.cprice != '' &&  data.dataset.price != data.dataset.cprice) {\n//               saleRegularPrice.innerHTML = data.dataset.price;\n//               salePrice.innerHTML = data.dataset.cprice;\n//               if(data.dataset.damount != '') {\n//                 wbAmountBadge.innerHTML = data.dataset.damount;\n//                 wbAmountBadge.classList.remove('hidden');\n//               }\n//               if(data.dataset.percent != '') {\n//                 wbPercentBadge.innerHTML = data.dataset.percent;\n//                 wbPercentBadge.classList.remove('hidden');\n//               }\n//               this.closest('.grid__item').querySelector('.price').classList.add(\"price--on-sale\");\n//             }\n//             else {\n//               regularPrice.innerHTML = data.dataset.price;\n//               if(wbPercentBadge){\n//                 wbPercentBadge.classList.add('hidden');\n//               }\n//               if(wbAmountBadge){\n//                 wbAmountBadge.classList.add('hidden');\n//               }\n//               this.closest('.grid__item').querySelector('.price').classList.remove(\"price--on-sale\");\n//             }\n//             if(data.dataset.unitprice) {\n//               wbunitPrice.innerHTML = data.dataset.unitprice;\n//               this.closest('.grid__item').querySelector('.price').classList.add(\"price--on-sale\");\n//             }\n//             if(data.dataset.unitvalue) {\n//               wbunitValue.innerHTML = data.dataset.unitvalue;\n//               this.closest('.grid__item').querySelector('.price').classList.add(\"price--on-sale\");\n//             }\n//           }\n//         });\n//       });\n//       return;\n//     }\n\n//     const productForms = document.querySelectorAll(`#product-form-${this.dataset.section}-${this.dataset.block}, #product-form-installment-${this.dataset.section}-${this.dataset.block}`);\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\n//     const selectedOptionOneVariants = this.variantData.filter(variant => this.querySelector(':checked').value === variant.option1);\n//     const inputWrappers = [...this.querySelectorAll('.product_form_input')];\n//     inputWrappers.forEach((option, index) => {\n//       if (index === 0) return;\n//       const optionInputs = [...option.querySelectorAll('input[type=\"radio\"], option')]\n//       const previousOptionSelected = inputWrappers[index - 1].querySelector(':checked').value;\n//       const availableOptionInputsValue = selectedOptionOneVariants.filter(variant => variant.available && variant[`option${ index }`] === previousOptionSelected).map(variantOption => variantOption[`option${ index + 1 }`]);\n//       this.setInputAvailability(optionInputs, availableOptionInputsValue)\n//     });\n//   }\n\n//   setInputAvailability(listOfOptions, listOfAvailableOptions) {\n//     listOfOptions.forEach(input => {\n//       if (listOfAvailableOptions.includes(input.getAttribute('value'))) {\n//         input.innerText = input.getAttribute('value');\n//       } else {\n//         input.innerText = window.variantStrings.unavailable_with_option.replace('[value]', input.getAttribute('value'));\n//       }\n//     });\n//   }\n//   updatePickupAvailability() {\n//     const pickUpAvailability = document.querySelector('pickup-availability');\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\n//   removeErrorMessage() {\n//     const section = this.closest('section');\n//     if (!section) return;\n\n//     const productForm = section.querySelector('product-form');\n//     if (productForm) productForm.handleErrorMessage();\n//   }\n\n//   renderProductInfo() {\n//     const requestedVariantId = this.currentVariant.id;\n//     let sectionId = this.dataset.originalSection ? this.dataset.originalSection : this.dataset.section;\n\n//     if (this.dataset.layout == 'card') {\n//       fetch(`${this.dataset.url}?variant=${requestedVariantId}&section_id=${this.dataset.originalSection ? this.dataset.originalSection : this.dataset.section}`)\n//         .then((response) => response.text())\n//         .then((responseText) => {\n//           if (this.currentVariant.id !== requestedVariantId) return;\n//           this.toggleAddButton(!this.currentVariant.available, window.variantStrings.soldOut);\n//           const html = new DOMParser().parseFromString(responseText, 'text/html');\n//           sectionId = `${sectionId}-${this.dataset.product}`;\n//           publish(PUB_SUB_EVENTS.variantChange, {data: {\n//               sectionId,\n//               html,\n//               variant: this.currentVariant\n//             }});\n\n//         })\n//       return;\n//     }\n\n//     fetch(`${this.dataset.url}?variant=${requestedVariantId}&section_id=${this.dataset.originalSection ? this.dataset.originalSection : this.dataset.section}`)\n//         .then((response) => response.text())\n//         .then((responseText) => {\n//           // prevent unnecessary ui changes from abandoned selections\n//           if (this.currentVariant.id !== requestedVariantId) return;\n\n//           const html = new DOMParser().parseFromString(responseText, 'text/html')\n//           const destination = document.getElementById(`price-${this.dataset.section}`);\n//           const source = html.getElementById(`price-${this.dataset.originalSection ? this.dataset.originalSection : this.dataset.section}`);\n//           const skuSource = html.getElementById(`Sku-${this.dataset.originalSection ? this.dataset.originalSection : this.dataset.section}`);\n//           const skuDestination = document.getElementById(`Sku-${this.dataset.section}`);\n//           const inventorySource = html.getElementById(`Inventory-${this.dataset.originalSection ? this.dataset.originalSection : this.dataset.section}`);\n//           const inventoryDestination = document.getElementById(`Inventory-${this.dataset.section}`);\n\n//           const volumePricingSource = html.getElementById(\n//             `Volume-${this.dataset.originalSection ? this.dataset.originalSection : this.dataset.section}`\n//           );\n\n//           const pricePerItemDestination = document.getElementById(`Price-Per-Item-${this.dataset.section}`);\n//           const pricePerItemSource = html.getElementById(`Price-Per-Item-${this.dataset.originalSection ? this.dataset.originalSection : this.dataset.section}`);\n\n//           const volumePricingDestination = document.getElementById(`Volume-${this.dataset.section}`);\n//           const qtyRules = document.getElementById(`Quantity-Rules-${this.dataset.section}`);\n//           const volumeNote = document.getElementById(`Volume-Note-${this.dataset.section}`);\n\n//           if (volumeNote) volumeNote.classList.remove('hidden');\n//           if (volumePricingDestination) volumePricingDestination.classList.remove('hidden');\n//           if (qtyRules) qtyRules.classList.remove('hidden');\n\n//           if (source && destination) destination.innerHTML = source.innerHTML;\n//           if (inventorySource && inventoryDestination) inventoryDestination.innerHTML = inventorySource.innerHTML;\n//           if (skuSource && skuDestination) {\n//             skuDestination.innerHTML = skuSource.innerHTML;\n//             skuDestination.classList.toggle('visibility-hidden', skuSource.classList.contains('visibility-hidden'));\n//           }\n\n//           if (volumePricingSource && volumePricingDestination) {\n//             volumePricingDestination.innerHTML = volumePricingSource.innerHTML;\n//           }\n\n//           if (pricePerItemSource && pricePerItemDestination) {\n//             pricePerItemDestination.innerHTML = pricePerItemSource.innerHTML;\n//             pricePerItemDestination.classList.toggle('visibility-hidden', pricePerItemSource.classList.contains('visibility-hidden'));\n//           }\n\n//           const price = document.getElementById(`price-${this.dataset.section}-${this.dataset.block}`);\n\n//           if (price) price.classList.remove('hidden');\n\n//           if (inventoryDestination) inventoryDestination.classList.toggle('visibility-hidden', inventorySource.innerText === '');\n\n//           const addButtonUpdated = html.getElementById(`ProductSubmitButton-${sectionId}`);\n//           this.toggleAddButton(addButtonUpdated ? addButtonUpdated.hasAttribute('disabled') : true, window.variantStrings.soldOut);\n\n//           publish(PUB_SUB_EVENTS.variantChange, {data: {\n//               sectionId,\n//               html,\n//               variant: this.currentVariant\n//             }});\n//         });\n//   }\n\n//   toggleAddButton(disable = true, text, modifyClass = true) {\n//     // Variant in Product Card\n//     var selector = `product-form-${this.dataset.section}-${this.dataset.block}`;\n//     if (this.dataset.layout == 'card') {\n//       selector = `product-form-${this.dataset.section}-${this.dataset.block}-${this.dataset.product}`;\n//     }\n//     const productForm = document.getElementById(selector);\n//     if (!productForm) return;\n//     const addButton = productForm.querySelector('[name=\"add\"]');\n//     const addButtonText = productForm.querySelector('[name=\"add\"] > span');\n//     if (!addButton) return;\n//     if (disable) {\n//       addButton.setAttribute('disabled', 'disabled');\n//       if (text) addButtonText.textContent = text;\n//     } else {\n//       addButton.removeAttribute('disabled');\n//       addButtonText.textContent = window.variantStrings.addToCart;\n//     }\n//     if (!modifyClass) return;\n//   }\n\n//   setUnavailable() {\n//     // Variant in Product Card\n//     var selector = `product-form-${this.dataset.section}-${this.dataset.block}`;\n//     var priceSelector = `price-${this.dataset.section}-${this.dataset.block}`;\n//     var button = document.getElementById(`product-form-${this.dataset.section}-${this.dataset.block}`);\n//     if (this.dataset.layout == 'card') {\n//       selector = `product-form-${this.dataset.section}-${this.dataset.block}-${this.dataset.product}`;\n//       priceSelector = `price-${this.dataset.section}-${this.dataset.block}-${this.dataset.product}`;\n//       button = document.getElementById(`product-form-${this.dataset.section}-${this.dataset.block}-${this.dataset.product}`);\n//     }\n    \n//     const addButton = button.querySelector('[name=\"add\"]');\n//     const addButtonText = button.querySelector('[name=\"add\"] > span');\n//     const price = document.getElementById(`price-${this.dataset.section}-${this.dataset.block}`);\n//     const inventory = document.getElementById(`Inventory-${this.dataset.section}-${this.dataset.block}`);\n//     const sku = document.getElementById(`Sku-${this.dataset.section}-${this.dataset.block}`);\n\n//     if (!addButton) return;\n//     addButtonText.textContent = window.variantStrings.unavailable;\n//     if (inventory) inventory.classList.add('visibility-hidden');\n//     if (sku) sku.classList.add('visibility-hidden');\n//   }\n\n//   getVariantData() {\n//     this.variantData = this.variantData || JSON.parse(this.querySelector('[type=\"application/json\"]').textContent);\n//     return this.variantData;\n//   }\n// }\n\n// customElements.define('variant-tab-selects', VariantTabSelects); \n\n// class VariantTabRadios extends VariantTabSelects {\n//   constructor() {\n//     super();\n//   }\n\n//   setInputAvailability(listOfOptions, listOfAvailableOptions) {\n//     listOfOptions.forEach(input => {\n//       if (listOfAvailableOptions.includes(input.getAttribute('value'))) {\n//         input.classList.remove('disabled');\n//       } else {\n//         input.classList.add('disabled');\n//       }\n//     });\n//   }\n\n//   updateOptions() {\n//     const fieldsets = Array.from(this.querySelectorAll('fieldset'));\n//     this.options = fieldsets.map((fieldset) => {\n//       return Array.from(fieldset.querySelectorAll('input')).find((radio) => radio.checked).value;\n//     });\n//   }\n// }\n\n// customElements.define('variant-tab-radios', VariantTabRadios);\n// new js for tab end\n\n\n// Search Drawer Javascript\nclass SearchToggle extends HTMLElement {\n  constructor() {  \n    super();\n    this.sidebar = this.querySelector('.sidebar');\n    this.toggleButton = this.querySelector('.searcht-button');\n    this.closeBtn = this.querySelector('.search-close');\n    this.toggleButton.addEventListener('click', this.toggleSidebar.bind(this)); \n    this.closeBtn.addEventListener('click', this.closeSidebar.bind(this));\n  }\n\n  toggleSidebar() {\n    this.sidebar.classList.add('active');\n    document.body.classList.add(\"overflow-hidden\");\n  }\n\n  closeSidebar() {\n    this.sidebar.classList.remove('active');\n    document.body.classList.remove(\"overflow-hidden\");\n  }\n}\ncustomElements.define('search-toggle', SearchToggle); \n\n// Image comparison\nclass ImgCompare extends HTMLElement {\n  constructor() {\n    super();\n    this.topImage = this.querySelectorAll('.compare_image')[1];\n    this.inputCompare = this.querySelector('.compare_line-icon');\n    const compare_cursor = this.querySelector('#compare_cursor');\n    compare_cursor.addEventListener('mousemove', this.resizeImg.bind(this));\n    compare_cursor.addEventListener('touchmove', this.resizeImg.bind(this));\n  }\n  resizeImg(event){\n    this.topImage.style.width = `${event.target.value}%`;\n    this.inputCompare.style.left = `${event.target.value}%`;\n  }\n  connectedCallback() {\n    setTimeout(() =>{\n      this.querySelectorAll('.comparewidth').forEach(ele =>{\n        ele.style.width = this.clientWidth + 'px';\n      });\n    }, 10);\n    \n  }\n}\ncustomElements.define('img-compare', ImgCompare);\n\nclass DesktopWebiMenu extends HTMLElement {\n  constructor() {\n    super();\n    if (window.outerWidth > 1024) {\n      const drop = this.dataset.drop ? this.dataset.drop : 'click';\n      document.addEventListener('click', this.onFocusOut.bind(this));\n      this.addEventListener('keydown', this.handleKeyDown.bind(this));\n\n      this.querySelectorAll('li.menu_space').forEach(ele => {\n        ele.addEventListener('keydown', this.handleLiKeyDown.bind(this));\n        ele.addEventListener(drop, () => {\n          this.onLiClick(ele);\n        });\n        ele.addEventListener('mouseenter', () => {\n          this.switchLi(ele);\n        });\n      });\n\n      const header = document.querySelector('.header-wrapper');\n      if (header) {\n        header.addEventListener('mouseleave', () => {\n          this.closeLi();\n        });\n      }\n    }\n  }\n\n  handleLiKeyDown(event) {\n    if (event.keyCode === 13) {\n      if (event.target.classList.contains('menuclick')) {\n        event.target.classList.remove('menuclick');\n      } else {\n        this.onLiClick(event.target);\n      }\n    }\n  }\n\n  handleKeyDown(event) {\n    if (event.keyCode === 13) {\n      this.onFocusOut(event);\n    }\n  }\n\n  onLiClick(ele) {\n    this.switchLi(ele);\n  }\n\n  switchLi(ele) {\n    const header = document.querySelector('.header-wrapper');\n    const isMouseInHeader = header && header.matches(':hover');\n\n    if (isMouseInHeader) {\n      this.querySelectorAll('li.menu_space.menuclick').forEach(clickedLi => {\n        if (clickedLi !== ele) {\n          clickedLi.classList.remove('menuclick');\n        }\n      });\n      ele.classList.add('menuclick');\n    }\n  }\n\n  closeLi() {\n    const header = document.querySelector('.header');\n    const isMouseInHeader = header && header.matches(':hover');\n    if (!isMouseInHeader) {\n      this.querySelectorAll('li.menu_space.menuclick').forEach(ele => {\n        ele.classList.remove('menuclick');\n      });\n    }\n  }\n\n  onFocusOut(event) {\n    event.stopPropagation();\n    if (this.contains(event.target) && !this.querySelector('.wbmenu_js').contains(event.target)) {\n      if (this.classList.contains('open')) {\n        this.classList.remove('open');\n        this.closeLi();\n      } else {\n        this.classList.add('open');\n      }\n    } else if (!this.querySelector('.wbmenu_js').contains(event.target)) {\n      this.classList.remove('open');\n      this.closeLi();\n    }\n  }\n}\n\ncustomElements.define('desktop-webi-menu', DesktopWebiMenu);\n\ndocument.addEventListener('DOMContentLoaded', function () {\n  var header = document.querySelector('.header-wrapper');\n  var headerHeight = header.offsetHeight;\n\n  function setHeaderHeight() {\n    document.documentElement.style.setProperty('--headers-height', `${headerHeight}px`);\n  }\n\n  setHeaderHeight();\n\n  var bannerElements = document.querySelectorAll('.banner_product');\n\nbannerElements.forEach((ele) => {\n  ele.addEventListener('mouseenter', bannerMouseEnter);\n  ele.addEventListener('mouseleave', bannerMouseLeave);\n  ele.dataset.originalHeight = ele.offsetHeight;\n  ele.style.height = ele.dataset.originalHeight + 'px';\n});\n\nfunction bannerMouseLeave() {\n  this.style.height = this.dataset.originalHeight + 'px';\n}\n\nfunction bannerMouseEnter() {\n  if (!this.dataset.hoverHeight) {\n    this.dataset.hoverHeight = this.scrollHeight;\n  }\n  this.style.height = this.dataset.hoverHeight + 'px';\n}\n\n});\n\nlet zoomedOut = false;\n\nfunction updateZoomImgPosition(blockId) {\n  const activeDot = document.querySelector(`#cless-${blockId} .currantdot.active`);\n  if (activeDot) {\n    const zoomImgDivs = document.querySelectorAll(`#cless-${blockId} #wbzoomimg`);\n    zoomImgDivs.forEach(zoomImgDiv => {\n      const zoomImg = zoomImgDiv.querySelector('img');\n      if (zoomImg && activeDot) {\n        const dataTopValue = activeDot.getAttribute('data-top');\n        const dataLeftValue = activeDot.getAttribute('data-left');\n        if (dataTopValue && dataLeftValue) {\n          const dataTop = parseFloat(dataTopValue);\n          const dataLeft = parseFloat(dataLeftValue);\n          let zoomLevel = 1;\n          const zoomImgStyle = zoomImgDiv.style.transform;\n          const zoomMatch = zoomImgStyle.match(/scale\\(([\\d.]+)\\)/);\n          if (zoomMatch) {\n            zoomLevel = parseFloat(zoomMatch[1]);\n          } else {\n            zoomLevel = 2;\n          }\n\n          if (zoomedOut) {\n            zoomImgDiv.removeAttribute('style');\n            zoomedOut = false;\n          } else {\n            zoomImgDiv.style.transformOrigin = `${dataLeft}% ${dataTop}%`;\n            zoomImgDiv.style.transform = `scale(${zoomLevel})`;\n          }\n        }\n      }\n    });\n  }\n}\n\ndocument.addEventListener('DOMContentLoaded', function () {\n  const blocks = document.querySelectorAll('[id^=\"cless-\"]');\n  blocks.forEach(block => {\n    const blockId = block.id.replace('cless-', '');\n    updateZoomImgPosition(blockId);\n\n    const observer = new MutationObserver(function (mutationsList) {\n      mutationsList.forEach(() => {\n        updateZoomImgPosition(blockId);\n      });\n    });\n\n    const lookBooks = block.querySelectorAll('.currantdot');\n    lookBooks.forEach(function (lookBook) {\n      observer.observe(lookBook, { attributes: true, attributeFilter: ['class'] });\n    });\n\n    block.querySelectorAll('.currantdot').forEach(dot => {\n      dot.addEventListener('click', function () {\n        const currentDot = this;\n        const lookbook = currentDot.closest('.lookbook');\n        if (lookbook) {\n          const allDots = lookbook.querySelectorAll('.currantdot');\n          allDots.forEach(dot => dot.classList.remove('active'));\n          currentDot.classList.add('active');\n          zoomedOut = false;\n          updateZoomImgPosition(blockId);\n        }\n      });\n\n      dot.addEventListener('dblclick', function () {\n        zoomedOut = true;\n        const zoomImgDivs = document.querySelectorAll(`#cless-${blockId} #wbzoomimg`);\n        zoomImgDivs.forEach(zoomImgDiv => {\n          const zoomImg = zoomImgDiv.querySelector('img');\n          if (zoomImg) {\n            zoomImgDiv.style.transform = 'scale(1)';\n            zoomImgDiv.style.transformOrigin = 'center center';\n          }\n        });\n        updateZoomImgPosition(blockId);\n      });\n    });\n  });\n});\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n  const lookbookComponents = document.querySelectorAll('look-book');\n  lookbookComponents.forEach(function (component) {\n    const lookbookButtons = component.querySelectorAll('.currantdot');\n    lookbookButtons.forEach(function (button) {\n      button.addEventListener('click', function () {\n        const buttonId = this.getAttribute('data-id');\n        const correspondingTarget = component.querySelector(`.slider-counter__link[data-id='${buttonId}']`);\n        if (correspondingTarget) {\n          correspondingTarget.click();\n        }\n      });\n    });\n  });\n});\n\ndocument.addEventListener('DOMContentLoaded', function () {\n  const lookBooks = document.querySelectorAll('look-book');\n\n  lookBooks.forEach(lookBook => {\n    const prevButton = lookBook.querySelector('.slider-button--prev');\n    const nextButton = lookBook.querySelector('.slider-button--next');\n    const slides = lookBook.querySelectorAll('.slideshow__slide');\n    const dots = lookBook.querySelectorAll('.wblbookmain .currantdot');\n    const products = lookBook.querySelectorAll('.product');\n    let currentSlideIndex = 0;\n    let firstInteraction = true;\n\n    function updateSlides() {\n      slides.forEach((slide, index) => {\n        slide.setAttribute('aria-hidden', index === currentSlideIndex ? 'false' : 'true');\n      });\n      dots.forEach((dot, index) => {\n        if (!firstInteraction) {\n          dot.classList.toggle('active', index === currentSlideIndex);\n        }\n      });\n      products.forEach((product, index) => {\n        product.setAttribute('aria-hidden', index === currentSlideIndex ? 'false' : 'true');\n      });\n    }\n\n    function addClassWithDelay() {\n      slides.forEach(slide => slide.classList.remove('active'));\n      slides[currentSlideIndex].classList.add('active');\n    }\n\n    prevButton.addEventListener('click', () => {\n      currentSlideIndex = (currentSlideIndex - 1 + slides.length) % slides.length;\n      firstInteraction = false;\n      updateSlides();\n      addClassWithDelay();\n    });\n\n    nextButton.addEventListener('click', () => {\n      currentSlideIndex = (currentSlideIndex + 1) % slides.length;\n      firstInteraction = false;\n      updateSlides();\n      addClassWithDelay();\n    });\n\n    dots.forEach((dot, index) => {\n      dot.addEventListener('click', () => {\n        currentSlideIndex = index;\n        firstInteraction = false;\n        updateSlides();\n        addClassWithDelay();\n      });\n    });\n    updateSlides();\n  });\n});\n// Quick view and Variant view js \n\nclass WbQuickView extends HTMLElement {\n  constructor() { \n    super();\n\n     this.addEventListener('click', this.wbPopUp.bind(this));\n     \n  }\n  wbPopUp(e){\n    e.target.classList.add('loading');\n    const spinner = e.target.querySelector('.loading-overlay__spinner');\n    if (spinner) {\n        spinner.classList.remove('hidden');\n    }\n    e.target.setAttribute('disabled', 'true');\n    fetch(e.target.dataset.url?.split('?')[0] + '?view=' + e.target.dataset.template + (e.target.dataset.variantid ? '&variant=' + e.target.dataset.variantid : ''))\n        .then(response => response.text())\n        .then(data => {\n            if (!data) return;\n            const parser = new DOMParser();\n            const htmlDoc = parser.parseFromString(data, 'text/html');\n            const html = htmlDoc.querySelector('[data-html=\"content\"]').innerHTML;\n\n            const modalSelector = document.querySelector(\".js-quick_view\");\n            if (modalSelector) {\n              document.body.classList.add('overflow-hidden', 'modal_view');\n              modalSelector.innerHTML = html;\n            }\n\n            e.target.classList.remove('loading');\n            if (spinner) {\n                spinner.classList.add('hidden');\n            }\n            e.target.removeAttribute('disabled');\n        })\n    .catch(error => console.error('Error:', error));\n  }\n}\ncustomElements.define('wb-quick-view', WbQuickView);\n\nclass WbModal extends HTMLElement {\n  constructor() { \n      super();\n      this.closeEl = this.querySelector(\".modal__close\");\n  }\n\n  connectedCallback() {\n    const _ = this;\n    this.closeEl.addEventListener('click', this.close.bind(this));\n    if(this.cartBtnElement){\n      this.cartBtnElement.addEventListener('click', this.close.bind(this));\n    }\n    \n    document.addEventListener('keydown', function(event) {\n      if (event.key === 'Escape' || event.keyCode === 27) {\n        _.close();\n      }\n    });\n    \n    document.addEventListener('click', function(event) {\n      if (!event.target.closest('.common_modal') && !event.target.closest('modal-dialog.product-popup-modal')) {\n         _.close();\n      }\n    });\n  }\n  close() {\n    const _ = this;\n    this.classList.add(\"close_popup\");\n    setTimeout(function() {\n      _.remove();\n      document.body.classList.remove('overflow-hidden', 'modal_view');\n    }, 80);\n  }\n\n  get cartBtnElement(){\n    return this.querySelector(\".product-form__submit\");\n  }\n  \n}\n\ncustomElements.define('wb-modal', WbModal);\n\n// USED TO CHANGE THE TEXT FOR COLOR OPTION ON PDP\n\nfunction updateColorOptionLabels() {\n  const desiredLabel = 'Select Your Color';\n  const colorNames = ['color'];\n  const isColorName = (value) => colorNames.includes((value || '').toLowerCase().trim());\n  const pdpContainers = document.querySelectorAll(\n    'section[id*=\"MainProduct\"], .main-product, product-info, .product'\n  );\n  if (!pdpContainers.length) return;\n\n  // Globo legend structure support:\n  // <legend class=\"name-option\" data-name=\"Color\">Color<span class=\"name-variant\">: COGNAC</span></legend>\n  pdpContainers.forEach((container) => {\n    container.querySelectorAll('.name-option').forEach((el) => {\n      const dataName = el.getAttribute('data-name') || '';\n      const leadingTextNode = Array.from(el.childNodes).find((node) => node.nodeType === Node.TEXT_NODE);\n      const leadingText = leadingTextNode ? leadingTextNode.textContent : '';\n      if (!isColorName(dataName) && !isColorName(leadingText)) return;\n\n      const variantNode = el.querySelector('.name-variant');\n      let labelTextNode = null;\n\n      for (const node of el.childNodes) {\n        if (node.nodeType === Node.TEXT_NODE) {\n          labelTextNode = node;\n          break;\n        }\n      }\n\n      if (labelTextNode) {\n        labelTextNode.textContent = desiredLabel;\n      } else if (variantNode) {\n        el.insertBefore(document.createTextNode(desiredLabel), variantNode);\n      } else {\n        el.textContent = desiredLabel;\n      }\n    });\n  });\n\n  // Theme-native labels fallback scoped to PDP containers only.\n  pdpContainers.forEach((container) => {\n    container.querySelectorAll('.form__label, legend.form__label').forEach((el) => {\n      const text = (el.textContent || '').trim();\n      if (!text) return;\n\n      const normalized = text.toLowerCase().replace(/:$/, '').trim();\n      if (!isColorName(normalized)) return;\n\n      el.textContent = text.endsWith(':') ? `${desiredLabel}:` : desiredLabel;\n    });\n  });\n}\n\ndocument.addEventListener('DOMContentLoaded', updateColorOptionLabels);\ndocument.addEventListener('shopify:section:load', updateColorOptionLabels);\ndocument.addEventListener('shopify:section:reorder', updateColorOptionLabels);\ndocument.addEventListener('shopify:block:select', updateColorOptionLabels);\n\nconst colorLabelObserver = new MutationObserver(() => {\n  if (window.__colorLabelUpdateScheduled) return;\n  window.__colorLabelUpdateScheduled = true;\n  requestAnimationFrame(() => {\n    updateColorOptionLabels();\n    window.__colorLabelUpdateScheduled = false;\n  });\n});\ncolorLabelObserver.observe(document.body, { childList: true, subtree: true });\n\n/* WLG: keep product-card quick add synchronized with the selected child variant */\n(function () {\n  if (window.__wlgCardVariantSync) return;\n  window.__wlgCardVariantSync = true;\n\n  function syncCardVariant(source) {\n    var item = source && source.closest ? source.closest('.swatches-options[data-variantid]') : null;\n    if (!item) return;\n    var variantId = item.getAttribute('data-variantid');\n    var productId = item.getAttribute('productid');\n    if (!variantId || !productId) return;\n\n    var scope = item.closest('[id^=\"Slide-\"], .grid__item, .product-grid-item, .swiper-slide') || document;\n    var forms = scope.querySelectorAll('form[action*=\"/cart/add\"][id*=\"-' + productId + '\"]');\n    if (!forms.length) forms = document.querySelectorAll('form[action*=\"/cart/add\"][id*=\"-' + productId + '\"]');\n    forms.forEach(function (form) {\n      var input = form.querySelector('input[name=\"id\"]');\n      if (!input) return;\n      input.value = variantId;\n      input.setAttribute('value', variantId);\n      input.dispatchEvent(new Event('change', { bubbles: true }));\n    });\n\n    scope.querySelectorAll('a[href*=\"/products/\"]').forEach(function (link) {\n      try {\n        var url = new URL(link.href, window.location.origin);\n        url.searchParams.set('variant', variantId);\n        link.href = url.pathname + url.search + url.hash;\n      } catch (error) {}\n    });\n\n    scope.querySelectorAll('.quick-add__submit[data-product-url]').forEach(function (button) {\n      try {\n        var quickLookUrl = new URL(button.getAttribute('data-product-url'), window.location.origin);\n        quickLookUrl.searchParams.set('variant', variantId);\n        button.setAttribute('data-product-url', quickLookUrl.pathname + quickLookUrl.search + quickLookUrl.hash);\n      } catch (error) {}\n    });\n  }\n\n  document.addEventListener('click', function (event) { syncCardVariant(event.target); }, true);\n  document.addEventListener('change', function (event) { syncCardVariant(event.target); }, true);\n  document.addEventListener('submit', function (event) {\n    var form = event.target.closest && event.target.closest('form[action*=\"/cart/add\"]');\n    if (!form) return;\n    var input = form.querySelector('input[name=\"id\"]');\n    if (input && input.value) return;\n    var match = (form.id || '').match(/-(\\d+)$/);\n    if (!match) return;\n    var selected = document.querySelector('.swatches-options[productid=\"' + match[1] + '\"] input:checked');\n    if (selected) syncCardVariant(selected);\n  }, true);\n\n  function initializeSelectedSwatches(root) {\n    (root || document).querySelectorAll('.swatches-options[data-variantid] input:checked').forEach(syncCardVariant);\n  }\n  initializeSelectedSwatches(document);\n  new MutationObserver(function (mutations) {\n    mutations.forEach(function (mutation) {\n      mutation.addedNodes.forEach(function (node) {\n        if (node.nodeType === 1) initializeSelectedSwatches(node);\n      });\n    });\n  }).observe(document.documentElement, { childList: true, subtree: true });\n})();\n\n/* Shop by Color: initialize each product card to the matching color variant. */\n(function () {\n  var colorsByCollection = {\n    'black-leather-goods': ['black'],\n    'brown-leather-goods': ['brown', 'cognac', 'chocolate', 'espresso', 'mahogany'],\n    'tan-leather-goods': ['tan', 'natural', 'camel', 'honey', 'sand', 'saddle'],\n    'red-leather-goods': ['red', 'burgundy', 'wine', 'crimson', 'rust'],\n    'green-leather-goods': ['green', 'olive', 'forest', 'sage'],\n    'blue-leather-goods': ['blue', 'navy', 'teal', 'denim'],\n    'purple': ['purple', 'plum', 'violet', 'lilac'],\n    'multi-leather-goods': ['multi', 'multicolor', 'multi-color', 'colorblock', 'color-block']\n  };\n\n  function applyCollectionColor(root) {\n    var handle = window.location.pathname.split('/').filter(Boolean).pop();\n    var aliases = colorsByCollection[handle];\n    if (!aliases) return;\n\n    (root || document).querySelectorAll('input[type=\"radio\"][id*=\"swatch\"]').forEach(function (radio) {\n      var card = radio.closest('.card-wrapper, .product-card-wrapper, .card-product, li');\n      if (!card || card.dataset.collectionColorReady === handle) return;\n      var label = document.querySelector('label[for=\"' + CSS.escape(radio.id) + '\"]');\n      var value = [radio.value, radio.dataset.value, radio.getAttribute('aria-label'), label && label.textContent, label && label.title]\n        .filter(Boolean).join(' ').toLowerCase();\n      if (aliases.some(function (alias) { return value.indexOf(alias) !== -1; })) {\n        card.dataset.collectionColorReady = handle;\n        if (!radio.checked) label.click();\n        else label.click();\n        var bg = label.style.backgroundImage.match(/url\\([\"']?(.*?)[\"']?\\)/); if (bg && bg[1]) { var image = card.querySelector('img'); image.src = bg[1].replace(/&amp;/g, '&'); image.srcset = ''; }\n      }\n    });\n  }\n\n  function runCollectionColorFix() {\n    applyCollectionColor(document);\n    setTimeout(function () { applyCollectionColor(document); }, 400);\n    setTimeout(function () { applyCollectionColor(document); }, 1200);\n  }\n\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', runCollectionColorFix);\n  else runCollectionColorFix();\n  document.addEventListener('shopify:section:load', runCollectionColorFix);\n  new MutationObserver(function (mutations) {\n    mutations.forEach(function (mutation) {\n      mutation.addedNodes.forEach(function (node) {\n        if (node.nodeType === 1) applyCollectionColor(node);\n      });\n    });\n  }).observe(document.documentElement, { childList: true, subtree: true });\n})();\n\n/* Normalize duplicated variant parameters generated by product cards. */\n(function () {\n  function normalizeCollectionVariantLinks(root) {\n    (root || document).querySelectorAll('a[href*=\"variant=\"], [data-product-url*=\"variant=\"]').forEach(function (element) {\n      ['href', 'data-product-url'].forEach(function (attribute) {\n        var value = element.getAttribute(attribute);\n        if (!value) return;\n        var clean = value.replace(/(\\?variant=\\d+)(?:\\?variant=\\d+)+/g, '$1');\n        if (clean !== value) element.setAttribute(attribute, clean);\n      });\n    });\n  }\n  normalizeCollectionVariantLinks(document);\n  new MutationObserver(function () { normalizeCollectionVariantLinks(document); })\n    .observe(document.documentElement, { childList: true, subtree: true });\n})();\n\n/* Keep color collection cards, Quick Look, and Quick Add on one variant. */\n(function () {\n  var colorCollections = ['black-leather-goods','brown-leather-goods','tan-leather-goods','red-leather-goods','green-leather-goods','blue-leather-goods','purple','multi-leather-goods'];\n\n  function setVariant(url, variantId) {\n    if (!url || !variantId) return url;\n    var path = url.split('?')[0];\n    return path + '?variant=' + variantId;\n  }\n\n  function syncColorCollectionCards() {\n    var handle = window.location.pathname.split('/').filter(Boolean).pop();\n    if (colorCollections.indexOf(handle) === -1) return;\n\n    document.querySelectorAll('#product-grid > li, #product-grid .grid__item').forEach(function (card) {\n      var checked = card.querySelector('input[type=\"radio\"]:checked');\n      var variantId = checked && (checked.id || '').match(/swatch-collection-(\\d+)/);\n      variantId = variantId && variantId[1];\n\n      var primaryLink = card.querySelector('a[href*=\"/products/\"][href*=\"variant=\"]');\n      var linkedVariant = primaryLink && primaryLink.getAttribute('href').match(/[?&]variant=(\\d+)/);\n      linkedVariant = linkedVariant && linkedVariant[1];\n\n      var imageName = (card.querySelector('img') && card.querySelector('img').getAttribute('src') || '').toLowerCase();\n      if (!variantId || imageName.indexOf(handle.split('-')[0]) !== -1) variantId = linkedVariant || variantId;\n      if (!variantId) return;\n\n      card.querySelectorAll('a[href*=\"/products/\"]').forEach(function (link) {\n        link.setAttribute('href', setVariant(link.getAttribute('href'), variantId));\n      });\n      card.querySelectorAll('[data-product-url]').forEach(function (button) {\n        button.setAttribute('data-product-url', setVariant(button.getAttribute('data-product-url'), variantId));\n      });\n      card.querySelectorAll('form[action*=\"/cart/add\"] input[name=\"id\"]').forEach(function (input) {\n        input.value = variantId;\n        input.setAttribute('value', variantId);\n      });\n    });\n  }\n\n  syncColorCollectionCards();\n  setTimeout(syncColorCollectionCards, 500);\n  setTimeout(syncColorCollectionCards, 1500);\n  document.addEventListener('shopify:section:load', syncColorCollectionCards);\n  new MutationObserver(function () { clearTimeout(window.willColorCardSync); window.willColorCardSync = setTimeout(syncColorCollectionCards, 100); })\n    .observe(document.documentElement, { childList: true, subtree: true });\n})();\n\n(() => {\n  const routeShopByColorCard = (root = document) => {\n    root.querySelectorAll('a[href*=\"/collections/shop-by-color\"]').forEach((link) => {\n      link.href = '/pages/shop-by-color';\n    });\n  };\n  routeShopByColorCard();\n  document.addEventListener('DOMContentLoaded', () => routeShopByColorCard());\n  document.addEventListener('shopify:section:load', (event) => routeShopByColorCard(event.target));\n})();\n\n\n/* WLG color-collection variant synchronization */\n(() => {\n  const families = {\n    'black-leather-goods': ['black', 'charcoal', 'jet black'],\n    'brown-leather-goods': ['brown', 'chocolate', 'dark brown', 'mahogany', 'brandy', 'whiskey'],\n    'tan-leather-goods': ['tan', 'cognac', 'natural', 'saddle', 'camel'],\n    white: ['white', 'ivory', 'cream', 'off white'],\n    gray: ['gray', 'grey', 'charcoal'],\n    'red-leather-goods': ['red', 'scarlet', 'crimson'],\n    burgundy: ['burgundy', 'wine', 'maroon', 'oxblood'],\n    orange: ['orange', 'rust', 'coral'],\n    yellow: ['yellow', 'mustard'],\n    'green-leather-goods': ['green', 'olive', 'sage', 'forest green', 'kelly green', 'jade', 'lime'],\n    'blue-leather-goods': ['blue', 'navy', 'royal blue', 'light blue', 'cobalt'],\n    turquoise: ['turquoise', 'teal', 'aqua'],\n    pink: ['pink', 'rose', 'fuchsia', 'blush'],\n    purple: ['purple', 'lavender', 'violet', 'plum'],\n    'amber-gold': ['amber', 'gold', 'golden', 'honey'],\n      navy: ['navy'],\n  cognac: ['cognac'],\n'multi-leather-goods': ['multi', 'multicolor', 'multi-color', 'assorted', 'color block', 'color-block']\n  };\n  const normalize = (value) => String(value || '').toLowerCase().replace(/[\\/_-]+/g, ' ').replace(/\\s+/g, ' ').trim();\n  const cache = new Map();\n  const currentFamily = () => {\n    const match = location.pathname.match(/^\\/collections\\/([^/?#]+)/);\n    return match ? families[match[1]] : null;\n  };\n  const matches = (value, family) => {\n    const color = normalize(value);\n    return family.some((term) => {\n      const target = normalize(term);\n      return color === target || color.includes(target);\n    });\n  };\n  const productHandle = (card) => {\n    const link = card.querySelector('a[href*=\"/products/\"]');\n    const match = link && link.getAttribute('href').match(/\\/products\\/([^/?#]+)/);\n    return match ? match[1] : null;\n  };\n  const productData = (handle) => {\n    if (!cache.has(handle)) cache.set(handle, fetch('/products/' + handle + '.js').then((r) => r.ok ? r.json() : Promise.reject(r.status)));\n    return cache.get(handle);\n  };\n  const setVariant = (card, variant) => {\n    card.dataset.colorCollectionVariant = String(variant.id);\n    card.querySelectorAll('a[href*=\"/products/\"]').forEach((link) => {\n      const url = new URL(link.href, location.origin);\n      url.searchParams.set('variant', variant.id);\n      link.href = url.pathname + url.search + url.hash;\n    });\n    const image = variant.featured_image && (variant.featured_image.src || variant.featured_image);\n    if (image) {\n      card.querySelectorAll('img').forEach((img) => {\n        img.src = image;\n        img.removeAttribute('srcset');\n        img.removeAttribute('data-srcset');\n        if (img.dataset.src) img.dataset.src = image;\n      });\n    }\n    card.querySelectorAll('form[action*=\"/cart/add\"] input[name=\"id\"]').forEach((input) => {\n      input.value = variant.id;\n      input.dispatchEvent(new Event('change', { bubbles: true }));\n    });\n    card.querySelectorAll('[data-product-url], [data-url], quick-add-modal-opener button, .quick-view-btn, .quickview-button').forEach((el) => {\n      const variantUrl = '/products/' + variant.handle + '?variant=' + variant.id;\n      if (el.hasAttribute('data-product-url')) el.setAttribute('data-product-url', variantUrl);\n      if (el.hasAttribute('data-url')) el.setAttribute('data-url', variantUrl);\n      el.dataset.variantId = String(variant.id);\n    });\n    card.hidden = false;\n  };\n  const sync = async (root = document) => {\n    const family = currentFamily();\n    if (!family) return;\n    const cards = [...root.querySelectorAll('.product-card-wrapper, .card-wrapper, product-card')].filter((card, index, all) => !all.some((other) => other !== card && other.contains(card)));\n    await Promise.all(cards.map(async (card) => {\n      const handle = productHandle(card);\n      if (!handle) return;\n      try {\n        const product = await productData(handle);\n        const colorIndex = (product.options || []).findIndex((option) => /colou?r/i.test(typeof option === 'string' ? option : option.name));\n        if (colorIndex < 0) return;\n        const candidates = (product.variants || []).filter((variant) => matches(variant['option' + (colorIndex + 1)], family));\n        const variant = candidates.find((item) => item.available) || candidates[0];\n        if (!variant) {\n          card.hidden = true;\n          return;\n        }\n        variant.handle = handle;\n        setVariant(card, variant);\n      } catch (error) {\n        console.warn('Color collection variant sync failed', handle, error);\n      }\n    }));\n  };\n  let timer;\n  const queueSync = (root = document) => {\n    clearTimeout(timer);\n    timer = setTimeout(() => sync(root), 50);\n  };\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', () => sync()); else sync();\n  document.addEventListener('shopify:section:load', (event) => sync(event.target));\n  new MutationObserver(() => queueSync()).observe(document.documentElement, { childList: true, subtree: true });\n})();\n\n// WLG-COLOR-GRID-REPAIR\n(() => {\n  const colorCollections = new Set([\n    'black-leather-goods', 'brown-leather-goods', 'tan-leather-goods', 'cognac',\n    'white', 'gray', 'red-leather-goods', 'burgundy', 'orange', 'yellow',\n    'green-leather-goods', 'blue-leather-goods', 'navy', 'turquoise', 'pink',\n    'purple', 'amber-gold', 'multi-leather-goods'\n  ]);\n  const handle = window.location.pathname.match(/^\\/collections\\/([^/?#]+)/)?.[1];\n  if (!colorCollections.has(handle)) return;\n  const style = document.createElement('style');\n  style.id = 'wlg-color-grid-collapse';\n  style.textContent = '#product-grid > li:has(.product-card-wrapper[hidden]) { display: none !important; }';\n  document.head.appendChild(style);\n})();\n\n\n/* Durable homepage Shop by Color card with an active green product image. */\n(() => {\n  if (window.willShopByColorCardRepair) return;\n  window.willShopByColorCardRepair = true;\n  async function repairShopByColorCard() {\n    if (location.pathname !== '/') return;\n    const slider = document.querySelector('[id^=\"Slider-\"][id*=\"collection_list\"]');\n    if (!slider) return;\n    let link = slider.querySelector('a[href*=\"shop-by-color\"]');\n    if (!link) {\n      const cards = Array.from(slider.children);\n      const source = cards[cards.length - 1];\n      if (!source) return;\n      const card = source.cloneNode(true);\n      card.removeAttribute('id');\n      card.querySelectorAll('[id]').forEach((node) => node.removeAttribute('id'));\n      card.querySelectorAll('a').forEach((anchor) => { anchor.href = '/pages/shop-by-color'; anchor.setAttribute('aria-label', 'Shop by Color'); });\n      card.querySelectorAll('h2,h3,.card__heading,.collection-list-title').forEach((title) => { title.textContent = 'Shop by Color'; });\n      slider.appendChild(card);\n      link = card.querySelector('a');\n    }\n    if (!link) return;\n    link.href = '/pages/shop-by-color';\n    const cardRoot = link.closest('li,.grid__item,.collection-list__item') || link.parentElement;\n    if (cardRoot) cardRoot.querySelectorAll('a').forEach((anchor) => { anchor.href = '/pages/shop-by-color'; anchor.setAttribute('aria-label', 'Shop by Color'); });\n    const image = cardRoot && cardRoot.querySelector('img');\n    if (!image) return;\n    try {\n      const product = await fetch('/products/simple-satchel.js').then((response) => response.json());\n      const variant = (product.variants || []).find((item) => item.available && /green/i.test(item.title));\n      const media = variant && variant.featured_media;\n      const source = (media && (media.preview_image || media).src) || product.featured_image;\n      if (source) { image.src = source; image.srcset = ''; image.removeAttribute('sizes'); image.alt = 'Shop leather goods by color'; }\n    } catch (error) {}\n  }\n  repairShopByColorCard();\n  document.addEventListener('DOMContentLoaded', repairShopByColorCard);\n  document.addEventListener('shopify:section:load', repairShopByColorCard);\n  new MutationObserver(() => clearTimeout(window.willColorCardRepairTimer) || (window.willColorCardRepairTimer = setTimeout(repairShopByColorCard, 120))).observe(document.documentElement,{childList:true,subtree:true});\n})();\n\n\n(() => {\n  if (document.getElementById('will-desktop-primary-nav-cleanup-v3')) return;\n  const style = document.createElement('style');\n  style.id = 'will-desktop-primary-nav-cleanup-v3';\n  style.textContent = '@media (min-width: 990px){.header__inline-nav-list > .header__inline-nav-item:has(> a[href$=\"/collections/women\"]),.header__inline-nav-list > .header__inline-nav-item:has(> a[href$=\"/collections/men\"]),.header__inline-nav-list > .header__inline-nav-item:has(> a[href$=\"/pages/shop-by-color\"]){display:none!important}}';\n  document.head.appendChild(style);\n})();\n\n\n/* WILL: Yotpo product-rating review anchor */\ndocument.addEventListener('click', function (event) {\n  const rating = event.target.closest('.product__info-container .yotpo.bottomLine');\n  if (!rating) return;\n\n  const reviews = document.querySelector('.yotpo-main-widget');\n  if (!reviews) return;\n\n  event.preventDefault();\n    event.stopImmediatePropagation();                                             \n  reviews.scrollIntoView({ behavior: 'smooth', block: 'start' });\n}, true);\n\n/* WILL: keep Yotpo review jump from being reset */\ndocument.addEventListener('click', function (event) {\n  if (!event.target.closest('.product__info-container .yotpo.bottomLine')) return;\n  const reviews = document.querySelector('.yotpo-main-widget');\n  if (!reviews) return;\n  event.preventDefault();\n  event.stopImmediatePropagation();\n  reviews.scrollIntoView({ behavior: 'smooth', block: 'start' });\n}, true);"],
  "mappings": "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",
  "names": ["dot", "variant"]
}
