{
  "version": 3,
  "sources": ["/cdn/shop/t/25/assets/global-v2.js?bust=1786097516896755300"],
  "sourcesContent": ["/* Release Theme - v2.0.1 */\n\n/* Define Breakpoints -- START */\nconst mobileWidth = 750;\nconst tabletWidth = 990;\nconst windowDynamicEvents = [\"scroll\", \"resize\"];\n\n// define desktop, tablet, mobile\nconst isDesktop = window.innerWidth > tabletWidth;\nconst isTablet = window.innerWidth <= tabletWidth && window.innerWidth >= mobileWidth;\nconst isMobile = window.innerWidth < mobileWidth;\n/* Define Breakpoints -- END */\n\nconst body = document.querySelector(\"body\");\nconst main = document.querySelector(\"main\");\n\n/* SECTIONS: HEADER GROUP */\nconst sectionsOfHeaderGroup = Array.from(\n  document.querySelectorAll(\".shopify-section-group-header-group\")\n).filter(section => !section.classList.contains(\"section-header\"));\n// then add #header element to the end of the array\nconst headerElement = document.querySelector(\"#header, #shopify-section-main-password-header\");\nif (headerElement) {\n  sectionsOfHeaderGroup.push(headerElement);\n}\n\nlet header = document.querySelector(\n  \"#header, #shopify-section-main-password-header\"\n);\nlet announcementBar = document.querySelector(\".js-announcement-bar\");\n\nlet heroBanner = document.querySelector(\".hero-banner\");\n\n/* SECTION: Header */\nconst isHeaderSticky = header?.classList.contains('is-sticky');\n\n/* SECTION: Announcement Bars */\nconst sectionsOfAnnouncementBar = document.querySelectorAll('.section-announcement-bar');\nif (sectionsOfAnnouncementBar) {\n\n  const setCustomProperty = (property, value) => {\n    document.documentElement.style.setProperty(property, value);\n  };\n\n  function calcSectionHeights (section) {\n    const sectionHeights = {\n      visibleHeight : Math.max(0, Math.min(section.offsetHeight, window.innerHeight - section.getBoundingClientRect().top, section.getBoundingClientRect().bottom)),\n      height : section.getBoundingClientRect().height\n    };\n    return sectionHeights;\n  }\n\n  function updateVisibleHeightsOfAnnouncementBars() {\n    let totalVisibleHeights = 0;\n    let totalHeights = 0;\n\n    sectionsOfAnnouncementBar.forEach((section) => {\n      // calculate total heights and visible heights of all announcement bars before the header\n      Array.from(sectionsOfAnnouncementBar)\n        .forEach((section) => {\n          // console.log(sectionIndex, section);\n          const { height, visibleHeight } = calcSectionHeights(section);\n          totalHeights += height;\n          totalVisibleHeights += visibleHeight;\n      });\n    });\n    setCustomProperty(`--announcement-bars-before-header-heights`, `${parseFloat(totalHeights)}px`);\n    setCustomProperty(`--announcement-bars-before-header-visible-heights`, `${parseFloat(totalVisibleHeights)}px`);\n  }\n  // set initial visible heights\n  updateVisibleHeightsOfAnnouncementBars();\n  // update visible heights on scroll and window resize\n  window.addEventListener('scroll', updateVisibleHeightsOfAnnouncementBars);\n  window.addEventListener('resize', updateVisibleHeightsOfAnnouncementBars);\n}\n\n/* PAGE: Collection */\n/*\nconst pageCollection = document.querySelector('body.template--collection');\nif (pageCollection) {\n  const productGrid = pageCollection.querySelector('.collection-grid-container__products');\n  const products = productGrid?.querySelectorAll('.product-card');\n\n  // get .product-card__content height and set max of them as .product-card__content height\n  if (products) {\n    let maxProductCardContentHeight = 0;\n    products.forEach(product => {\n      const productCardContent = product.querySelector('.product-card__content');\n      if (productCardContent) {\n        productCardContent.style.height = 'auto';\n        maxProductCardContentHeight = Math.max(maxProductCardContentHeight, productCardContent.offsetHeight);\n      }\n    });\n    products.forEach(product => {\n      const productCardContent = product.querySelector('.product-card__content');\n      if (productCardContent) {\n        productCardContent.style.height = `${maxProductCardContentHeight}px`;\n      }\n    });\n  }\n}\n  */\n\nlet productMedia = document.querySelector(\".main-product__media\"); // on pdp\nlet productMediaSwiper = document.querySelector(\n  \".main-product__media .swiper--product-gallery\"\n); // on pdp\n\nlet productCardMedia = document.querySelector(\".product-card__media\");\nlet productCardCollections = document.querySelector(\".product-card\");\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n  const lazyImages = document.querySelectorAll('img[loading=\"lazy\"]:not(.animation-none)');\n\n  lazyImages.forEach(img => {\n    // add initial lazy class\n    img.classList.add(\"lazy\");\n    img.addEventListener(\"load\", function () {\n      handleLazyLoadedImage(img);\n    });\n    if (img.complete) {\n      handleLazyLoadedImage(img);\n    }\n  });\n\n  function handleLazyLoadedImage(img) {\n    if (!img || !img.hasAttribute(\"loading\")) { return; }\n    setTimeout(() => {\n      img.removeAttribute(\"loading\");\n      // remove lazy class after transition\n      img.classList.remove(\"lazy\");\n    }, 100);\n  }\n\n  // Set observer to catch dynamicly added images with lazy loading\n  function mutationCallbackForLazyLoadedImage(mutationList, observer) {\n    for (const mutation of mutationList) {\n      if (mutation.type === \"childList\" && mutation.addedNodes.length > 0) {\n        mutation.addedNodes.forEach(node => {\n          if (node instanceof HTMLElement) {\n            if (node.querySelector('img[loading=\"lazy\"]')) {\n              node.querySelectorAll('img[loading=\"lazy\"]').forEach(img => {\n                handleLazyLoadedImage(img);\n              })\n            }\n          }\n        })\n      }\n    }\n  };\n\n  const observer = new MutationObserver(mutationCallbackForLazyLoadedImage);\n  observer.observe(\n    document.querySelector(\"body\"),\n    { childList: true, subtree: true }\n  );\n  // observer.disconnect();\n\n});\n\n// add loading lazy attribute to div.hero__inner > div.media > video > img\ndocument\n  .querySelectorAll(\".hero__inner > .media > video > img\")\n  .forEach(function (el) {\n    el.setAttribute(\"loading\", \"lazy\");\n    el.setAttribute(\"alt\", \"Video Cover\");\n  });\n\n// catch all images with class 'lazyload' and add loading lazy attribute\ndocument.querySelectorAll(\".lazyload\").forEach(function (el) {\n  el.setAttribute(\"loading\", \"lazy\");\n});\n\nwindowDynamicEvents.forEach(eventType => {\n  window.addEventListener(eventType, () => {\n    setRootCustomProperties();\n  });\n});\n\nsetRootCustomProperties();\n\nif (Shopify.designMode) {\n  window.addEventListener(\"shopify:section:load\", setRootCustomProperties);\n  window.addEventListener(\"shopify:section:select\", setRootCustomProperties);\n}\n\nwindow.addEventListener(\"shopify:section:load\", function () {\n\n  header = document.querySelector(\n    \"#header, #shopify-section-main-password-header header\"\n  );\n  announcementBar = document.querySelector(\".js-announcement-bar\");\n  productCardMedia = document.querySelector(\".product-card__media\");\n});\n\nfunction getCoordinates(element) {\n  const rect = element.getBoundingClientRect();\n  return {\n    top: rect.top + window.scrollY,\n    right: rect.right + window.scrollX,\n    bottom: rect.bottom + window.scrollY,\n    left: rect.left + window.scrollX\n  };\n}\n\nfunction setCustomProperty(property, value) {\n  document.documentElement.style.setProperty(property, value);\n}\n\nfunction setRootCustomProperties() {\n\n  const setCustomProperty = (property, value) => {\n    document.documentElement.style.setProperty(property, value);\n  };\n\n  // sections of header group - height\n  if (sectionsOfHeaderGroup.length > 0) {\n    // console.log(sectionsOfHeaderGroup);\n\n    const totalHeight = Array.from(sectionsOfHeaderGroup).reduce((sum, section) => {\n      return sum + section.offsetHeight;\n    }, 0);\n    document.documentElement.style.setProperty('--header-group-height', `${totalHeight - 1}px`);\n  }\n\n  // header height\n  let headerHeight = 0;\n  if (header) {\n    headerHeight = header.getBoundingClientRect().height.toFixed(2);\n  }\n  setCustomProperty(\"--header-height\", `${parseFloat(headerHeight)}px`);\n\n  let cartDrawerBody = document.querySelector(\".cart-drawer__body\");\n  if (cartDrawerBody) {\n    setCustomProperty(\"--cart-drawer-body-width\", `${parseFloat(cartDrawerBody.offsetWidth)}px`);\n    setCustomProperty(\"--cart-drawer-body-height\", `${parseFloat(cartDrawerBody.offsetHeight)}px`);\n  }\n\n  // product media width\n  if (productMedia) {\n    setCustomProperty(\"--product-media-area-width\", `${parseFloat(productMedia.offsetWidth)}px`);\n  }\n\n  // set initial product media area height - start\n  function setInitalProductMediaAreaHeight() {\n    if (productMedia && body.classList.contains(\"template--product\")) {\n      let initialProductMediaAreaHeight = 0;\n      const mainTop = getCoordinates(main).top;\n      const productMediaTop = getCoordinates(productMedia).top;\n      const productTopbar = document.querySelector('.product__topbar-nav');\n      let productTopbarHeight = 0;\n      if (productTopbar) productTopbarHeight = productTopbar.offsetHeight;\n      initialProductMediaAreaHeight = window.innerHeight - Math.round(mainTop) - 2 * Math.round(productMediaTop - mainTop) + Math.round(productTopbarHeight);\n\n      // check if any section exists before product section\n      const productSectionIndex = Array.prototype.indexOf.call(main.children, document.querySelector('main section.main-product'));\n      if (productSectionIndex > 0) {\n        initialProductMediaAreaHeight = window.innerHeight - Math.round(mainTop) - 2 * Math.round(productMediaTop - mainTop) + Math.round(productTopbarHeight);\n      }\n\n      initialProductMediaAreaHeight = Math.round(initialProductMediaAreaHeight - 24);\n\n      // set initial product media area height\n      setCustomProperty(\"--product-media-area-height\", initialProductMediaAreaHeight + \"px\");\n    }\n  }\n  function setInitalProductMediaSwiperAreaHeight() {\n    const sliderWrapper = document.querySelector('.main-product__media--slider-wrapper');\n    if (!sliderWrapper) return;\n    setCustomProperty(\n      \"--product-media-area-swiper-height\",\n      `${parseInt(sliderWrapper.offsetHeight)}px`\n    );\n  }\n  document.addEventListener(\"DOMContentLoaded\", setInitalProductMediaAreaHeight);\n  window.addEventListener(\"resize\", setInitalProductMediaAreaHeight);\n  // window.addEventListener(\"change\", setInitalProductMediaAreaHeight);\n\n  document.addEventListener(\"DOMContentLoaded\", setInitalProductMediaSwiperAreaHeight);\n  window.addEventListener(\"resize\", setInitalProductMediaSwiperAreaHeight);\n  // window.addEventListener(\"change\", setInitalProductMediaSwiperAreaHeight);\n  if (productMedia) {\n    const observer = new MutationObserver(() => {\n      setInitalProductMediaAreaHeight();\n      setInitalProductMediaSwiperAreaHeight();\n    });\n\n    observer.observe(productMedia, { childList: true, subtree: true });\n  }\n\n  if (Shopify.designMode) {\n    // window.addEventListener('shopify:section:load', setInitalProductMediaAreaHeight);\n    window.addEventListener('shopify:section:load', setInitalProductMediaSwiperAreaHeight);\n  }\n  // set initial product media area height - end\n\n  if (heroBanner) {\n    setCustomProperty(\"--hero-banner-top\", `${parseFloat(getCoordinates(heroBanner).top)}px`);\n    setCustomProperty(\"--hero-banner-bottom\", `${parseFloat(getCoordinates(heroBanner).bottom)}px`);\n  }\n\n  const articleHeroMedia = document.querySelector(\".js-article-hero-media\");\n  const articleContent = document.querySelector(\".js-article-content\");\n  if (articleHeroMedia || articleContent) {\n    // set social share sticky position according to article hero media or article content\n    let socialShareStickyTop = 0;\n    let socialShareStickyStart = 0;\n    let headerBottom = parseInt(header.getBoundingClientRect().bottom);\n    if (articleHeroMedia) {\n      socialShareStickyTop = parseInt(articleHeroMedia.getBoundingClientRect().top);\n      socialShareStickyStart = parseInt(articleHeroMedia.getBoundingClientRect().right);\n    } else {\n      socialShareStickyTop = parseInt(articleContent.getBoundingClientRect().y);\n      socialShareStickyStart = parseInt(articleContent.getBoundingClientRect().right);\n    }\n\n    if (socialShareStickyTop < (0 + headerBottom)) {\n      socialShareStickyTop = headerBottom;\n    }\n\n    setCustomProperty(\n      \"--social-share-sticky-top\",\n      `${socialShareStickyTop}px`\n    );\n    setCustomProperty(\n      \"--social-share-sticky-start\",\n      `${socialShareStickyStart}px`\n    );\n\n  }\n\n  // transparent header menu color\n  // get data-header-menu-text-color of first .hero__inner under .hero-banner element\n  if (heroBanner) {\n    let heroInner = heroBanner.querySelectorAll(\".hero__inner\");\n    if (heroInner.length > 0) {\n      let heroInnerFirst = heroInner[0];\n      let headerMenuTextColor = heroInnerFirst.getAttribute(\"data-header-menu-text-color\");\n      if (headerMenuTextColor) {\n        setCustomProperty(\n          \"--transparent-header-menu-text-color\", `${headerMenuTextColor}`\n        );\n      }\n    }\n  } else {\n    setCustomProperty(\n      \"--transparent-header-menu-text-color\", `var(--color-background)`\n    );\n  }\n\n  if (productCardMedia) {\n    setCustomProperty(\n      \"--product-card-media-height\",\n      `${parseInt(productCardMedia.offsetHeight)}px`\n    );\n  }\n}\n\n// scroll-position\nfunction scrollPositionY() {\n  setCustomProperty(\"--window-scroll-y-position\", window.scrollY);\n  if (window.scrollY === 0) {\n    document.body.classList.add('is-at-top');\n    document.body.classList.remove('is-scrolled');\n  } else {\n    document.body.classList.add('is-scrolled');\n    document.body.classList.remove('is-at-top');\n  }\n}\nscrollPositionY();\nwindow.addEventListener(\"scroll\", scrollPositionY);\n\n\nconst bodyScroll = {\n  lock(container) {\n    bodyScrollLock.disableBodyScroll(container);\n  },\n  unlock(container) {\n    bodyScrollLock.enableBodyScroll(container);\n  },\n  clear() {\n    bodyScrollLock.clearAllBodyScrollLocks();\n  }\n};\n\nconst 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    preventScroll: true\n  });\n};\n\nconst 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};\n\ndocument\n  .querySelectorAll('[id^=\"Details-\"] summary')\n  .forEach(summary => {\n    summary.setAttribute(\"role\", \"button\");\n    summary.setAttribute(\n      \"aria-expanded\",\n      summary.parentNode.hasAttribute(\"open\")\n    );\n\n    if (summary.nextElementSibling.getAttribute(\"id\")) {\n      summary.setAttribute(\n        \"aria-controls\",\n        summary.nextElementSibling.id\n      );\n    }\n\n    summary.addEventListener(\"click\", event => {\n      event.currentTarget.setAttribute(\n        \"aria-expanded\",\n        !event.currentTarget.closest(\"details\").hasAttribute(\"open\")\n      );\n    });\n\n    if (summary.closest(\"header-drawer\")) return;\n    summary.parentElement.addEventListener(\"keyup\", onKeyUpEscape);\n  });\n\nconst trapFocusHandlers = {};\n\nconst removeTrapFocus = (elementToFocus = null) => {\n  document.removeEventListener(\"focusin\", trapFocusHandlers.focusin);\n  document.removeEventListener(\n    \"focusout\",\n    trapFocusHandlers.focusout\n  );\n  document.removeEventListener(\"keydown\", trapFocusHandlers.keydown);\n\n  if (elementToFocus)\n    elementToFocus.focus({\n      preventScroll: true\n    });\n};\n\nconst 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(\n      \"keydown\",\n      trapFocusHandlers.keydown\n    );\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\nconst serializeForm = form => {\n  const obj = {};\n  const formData = new FormData(form);\n  for (const key of formData.keys()) {\n    obj[key] = formData.get(key);\n  }\n  return JSON.stringify(obj);\n};\n\nconst deepClone = obj => {\n  return JSON.parse(JSON.stringify(obj));\n};\n\nconst handleize = str => str.replace(/[ /_]/g, \"-\").toLowerCase();\n\nconst decode = str => decodeURIComponent(str).replace(/\\+/g, \" \");\n\nconst getOffsetTop = element => {\n  let offsetTop = 0;\n\n  do {\n    if (!isNaN(element.offsetTop)) {\n      offsetTop += element.offsetTop;\n    }\n  } while ((element = element.offsetParent));\n\n  return offsetTop;\n};\n\nclass MenuDrawer extends HTMLElement {\n  constructor() {\n    super();\n\n    this.details = this.querySelector(\"details\");\n    this.summary = this.querySelector(\"summary\");\n    this.drawer = this.querySelector(\".js-drawer\");\n    this.btnsCloseDrawer = this.querySelectorAll(\n      \".js-btn-close-drawer\"\n    );\n    this.btnsCloseDrawer = [...this.btnsCloseDrawer].filter(\n      btnCloseDrawer =>\n        this.drawer === btnCloseDrawer.closest(\".js-drawer\")\n    );\n    this.elementToFocus =\n      this.querySelector(\".js-drawer-focus-element\") ||\n      this.btnsCloseDrawer[0];\n    this.toggleButtons = [this.summary, ...this.btnsCloseDrawer];\n    this.isParentDrawerOpen = false;\n    this.predictiveSearch = this.querySelector(\"predictive-search\");\n\n    this.HeaderDrawer = document.querySelector(\"header-drawer\");\n\n    this.setInitialAccessibilityAttr();\n\n    this.toggleButtons.forEach(toggleButton => {\n      toggleButton.addEventListener(\"click\", e => {\n        e.preventDefault();\n\n        this.toggleDrawer();\n      });\n    });\n\n    this.addEventListener(\"keydown\", e => {\n      const isEscapeKey = e.key === \"Escape\";\n      const isDrawerOpen =\n        this.details.classList.contains(\"menu-opening\");\n      const nestedOpenDrawer =\n        this.details.querySelector(\"details[open]\");\n\n      if (!isEscapeKey || nestedOpenDrawer || !isDrawerOpen) {\n        return;\n      }\n\n      if (\n        this.predictiveSearch &&\n        this.predictiveSearch.input == document.activeElement\n      ) {\n        return;\n      }\n\n      this.toggleDrawer();\n    });\n\n    this.toggleTrapFocus();\n  }\n\n  toggleDrawer() {\n    const isDrawerTransitioning = this.details.classList.contains(\n      \"drawer-transitioning\"\n    );\n\n    // const isDetailsOpen = this.details.classList.contains('menu-opening');\n    const isDetailsOpen = this.details.hasAttribute(\"open\");\n    const headerDiv = document.getElementById(\"header\");\n    if (!isDetailsOpen) {\n\n      // this.closeAllOtherDrawers();\n\n      this.details.setAttribute(\"open\", \"\");\n      this.toggleButtons.forEach(toggleButton => {\n        toggleButton.classList.add(\"menu-is-open\");\n        toggleButton.setAttribute(\"aria-expanded\", true);\n      });\n      this.details.classList.add(\"menu-opening\");\n      headerDiv.classList.add(\"menu-open\");\n      const bodyHasOverflow = body.style.overflow === \"hidden\";\n      if (bodyHasOverflow) {\n        this.parentDrawer = this.closest(\".js-drawer\");\n        if (this.parentDrawer) {\n          this.isParentDrawerOpen = true;\n          // this.parentDrawer.style.overflow = \"hidden\";\n        }\n      } else {\n        body.style.overflow = \"hidden\";\n        body.classList.add(\"drawer--is-open\");\n        this.scrollTopValue = window.scrollY;\n        body.style.top = `-${this.scrollTopValue}px`;\n        body.style.position = \"fixed\";\n        body.style.width = \"100%\";\n      }\n      var searchInput = this.querySelector(\"#search-desktop\");\n      if (searchInput) {\n        searchInput.focus();\n        if (headerDiv) {\n          headerDiv.classList.remove(\"menu-open\");\n        }\n      }\n    } else {\n      this.details.classList.remove(\"menu-opening\");\n      this.toggleButtons.forEach(toggleButton => {\n        toggleButton.classList.remove(\"menu-is-open\");\n        toggleButton.setAttribute(\"aria-expanded\", false);\n      });\n      body.style.overflow = \"\";\n      body.style.position = \"\";\n      body.style.top = \"\";\n      body.style.width = \"\";\n      window.scrollTo(0, this.scrollTopValue);\n      body.classList.remove(\"drawer--is-open\");\n      if (this.isParentDrawerOpen) {\n        this.parentDrawer.style.overflow = \"\";\n      }\n      /** removing this attr witout timeout causes transition issues */\n      setTimeout(() => {\n        this.details.removeAttribute(\"open\");\n      }, 500);\n    }\n\n    const handleDropdownTransition = e => {\n      if (\n        e.target !== this.drawer ||\n        e.propertyName !== \"visibility\"\n      ) {\n        return;\n      }\n\n      this.details.classList.remove(\"drawer-transitioning\");\n\n      if (this.elementToFocus) {\n        this.elementToFocus.focus({\n          preventScroll: true\n        });\n      }\n\n      const isDetailsOpen = this.details.hasAttribute(\"open\");\n\n      if (!isDetailsOpen) {\n        this.toggleButtons.forEach(toggleButton => {\n          toggleButton.setAttribute(\"aria-expanded\", false);\n        });\n        this.summary.focus({\n          preventScroll: true\n        });\n      }\n\n      if (this.isParentDrawerOpen) {\n        this.parentDrawer.style.overflow = \"\";\n        document.body.style.overflow = \"\";\n      } else {\n        document.body.style.overflow = \"hidden\";\n      }\n\n      e.target.removeEventListener(\n        \"transitionend\",\n        handleDropdownTransition\n      );\n    };\n\n    this.drawer.addEventListener(\n      \"transitionstart\",\n      e => {\n        this.details.classList.add(\"drawer-transitioning\");\n      },\n      {\n        once: true\n      }\n    );\n\n    this.drawer.addEventListener(\n      \"transitionend\",\n      handleDropdownTransition\n    );\n  }\n\n  /* probably not needed -- start */\n  closeAllOtherDrawers() {\n    const allDrawers = document.querySelectorAll(\".js-drawer\");\n    allDrawers.forEach(drawer => {\n      const details = drawer.closest(\"details\");\n      if (details && details !== this.details) {\n        details.removeAttribute(\"open\");\n        drawer.style.overflow = \"\";\n      }\n    });\n\n    document.body.style.overflow = \"\";\n  }\n  /* probably not needed -- end */\n\n  instantlyHideDrawer() {\n    this.toggleButtons.forEach(toggleButton => {\n      toggleButton.setAttribute(\"aria-expanded\", false);\n    });\n    this.details.classList.remove(\"menu-opening\");\n    this.details.removeAttribute(\"open\");\n    body.style.overflow = \"\";\n  }\n\n  toggleTrapFocus(container = this.drawer) {\n    let isHandlingFocus = false;\n\n    document.addEventListener(\"focusin\", e => {\n      if (isHandlingFocus) return;\n      isHandlingFocus = true;\n\n      const isDrawerOpen =\n        this.details.classList.contains(\"menu-opening\");\n\n      if (!isDrawerOpen) {\n        isHandlingFocus = false;\n        return;\n      }\n\n      const openDrawer = e.target.closest(\n        \"details.menu-opening .js-drawer\"\n      );\n      const nestedOpenDrawer = this.details.querySelector(\n        \"details.menu-opening\"\n      );\n\n      if (openDrawer === this.drawer || nestedOpenDrawer) {\n        isHandlingFocus = false;\n        return;\n      }\n\n      e.preventDefault();\n\n      const focusableElements = getFocusableElements(container);\n      const focusedElementDOMPosition =\n        container.compareDocumentPosition(e.target);\n\n      const visibleFocusableElements = focusableElements.filter(\n        focusableElement => {\n          const isHidden =\n            getComputedStyle(focusableElement).display === \"none\";\n\n          if (isHidden) {\n            return;\n          }\n\n          const isSummary = focusableElement.tagName === \"SUMMARY\";\n          const focusableElementDetails =\n            focusableElement.closest(\"details\");\n          const parentFocusableElementDetails =\n            focusableElementDetails.parentElement.closest(\"details\");\n          const focusableElementDrawer =\n            focusableElementDetails.querySelector(\".js-drawer\");\n          const isThisDrawerOrDetails = focusableElementDrawer\n            ? focusableElementDrawer === this.drawer\n            : focusableElementDetails === this.details;\n\n          return (\n            isThisDrawerOrDetails ||\n            (isSummary &&\n              parentFocusableElementDetails.hasAttribute(\"open\"))\n          );\n        }\n      );\n\n      const firstFocusableElement = visibleFocusableElements[0];\n      const lastFocusableElement =\n        visibleFocusableElements[visibleFocusableElements.length - 1];\n\n      if (focusedElementDOMPosition >= 4) {\n        firstFocusableElement.focus({\n          preventScroll: true\n        });\n      } else {\n        lastFocusableElement.focus({\n          preventScroll: true\n        });\n      }\n      isHandlingFocus = false;\n    });\n  }\n\n  setInitialAccessibilityAttr() {\n    const isDetailsOpen = this.details.hasAttribute(\"open\");\n\n    this.summary.setAttribute(\"role\", \"button\");\n    this.summary.setAttribute(\"aria-controls\", this.drawer.id);\n    this.summary.setAttribute(\"aria-expanded\", isDetailsOpen);\n  }\n}\ncustomElements.define(\"menu-drawer\", MenuDrawer);\n\nclass HeaderDrawer extends MenuDrawer {\n  constructor() {\n    super();\n\n    window.addEventListener(\"resize\", e => {\n      const isMobileDrawer = this.classList.contains(\"mobile-drawer\");\n\n      if (!isMobileDrawer) {\n        return;\n      }\n\n      const isDesktop = window.innerWidth < tabletWidth;\n      const isMenuOpen =\n        this.details.classList.contains(\"menu-opening\");\n\n      if (isDesktop || !isMenuOpen) {\n        return;\n      }\n\n      this.instantlyHideDrawer();\n    });\n  }\n\n  instantlyHideDrawer() {\n    super.instantlyHideDrawer();\n  }\n\n  resetToPrimaryMenuPanel() {\n    const primaryMenuPanel = this.querySelector(\".primary-menu-panel\");\n    if (primaryMenuPanel) {\n      primaryMenuPanel.style.opacity = \"1\";\n    }\n    this.querySelectorAll(\".menu-panel\").forEach(panel => {\n      panel.classList.remove(\"is-active\", \"was-active\", \"is-back\", \"non-active\", \"is-instant\");\n      panel.style.opacity = \"\";\n    });\n  }\n\n  toggleDrawer() {\n    const isDrawerTransitioning = this.details.classList.contains(\n      \"drawer-transitioning\"\n    );\n\n    const drawerButton = this.querySelector(\".drawer__button\");\n    // if drawerButton has .menu-is-open class and if header has .menu-open class, drawer is open\n    // so when drawerButton with .menu-is-open class is clicked, remove .menu-open class from header\n    if (drawerButton.classList.contains(\"menu-is-open\")) {\n      header.classList.remove(\"menu-open\");\n      drawerButton.classList.remove(\"menu-is-open\");\n      // body scroll lock for iphones - start\n      body.style.removeProperty(\"position\");\n      window.scrollTo(0, this.scrollTopValue);\n      // reopening the drawer should always land back on the root menu\n      // instead of whatever nested panel (e.g. a brand sub-list) was open\n      // when it was last closed\n      this.resetToPrimaryMenuPanel();\n    } else {\n      this.scrollTopValue = window.scrollY;\n      // body.style.position = \"fixed\"; / this causes scroll to top - buggy code\n      // body scroll lock for iphones - end\n      header.classList.add(\"menu-open\");\n      drawerButton.classList.add(\"menu-is-open\");\n    }\n\n    // header.classList.toggle('menu-open');\n    super.toggleDrawer();\n\n    this.querySelectorAll(\".drawer__menu-item\").forEach(item => {\n      item.classList.toggle(\"is--visible\");\n    });\n    this.querySelectorAll(\".drawer__subnav-item\").forEach(item => {\n      item.classList.toggle(\"is--visible\");\n    });\n  }\n\n  toggleTrapFocus() {\n    super.toggleTrapFocus(this.details);\n  }\n}\n\ncustomElements.define(\"header-drawer\", HeaderDrawer);\n\nclass DesktopDrawer extends MenuDrawer {\n  constructor() {\n    super();\n\n    window.addEventListener(\"resize\", e => {\n      const isDesktop = window.innerWidth < tabletWidth;\n      const isMenuOpen =\n        this.details.classList.contains(\"menu-opening\");\n\n      if (!isDesktop || !isMenuOpen) {\n        return;\n      }\n\n      this.instantlyHideDrawer();\n    });\n  }\n}\n\ncustomElements.define(\"desktop-drawer\", DesktopDrawer);\n\nclass SearchDrawer extends MenuDrawer {\n  constructor() {\n    super();\n\n    window.addEventListener(\"resize\", e => {\n      const isMenuOpen =\n        this.details.classList.contains(\"menu-opening\");\n\n      if (!isMenuOpen) {\n        return;\n      }\n    });\n\n    // get button element\n    this.btn = this.querySelector(\".drawer__button\");\n    // if this button clicked, close all other drawers\n    this.btn.addEventListener(\"click\", () => {\n      const headerDrawerDetails = document.querySelector(\"header-drawer details\");\n      if (headerDrawerDetails) {\n        headerDrawerDetails.removeAttribute(\"open\");\n        headerDrawerDetails.classList.remove(\"menu-opening\");\n      }\n    });\n  }\n}\ncustomElements.define(\"search-drawer\", SearchDrawer);\n\nfunction pauseAllMedia() {\n  document.querySelectorAll(\".js-youtube\").forEach(video => {\n    video.contentWindow.postMessage(\n      '{\"event\":\"command\",\"func\":\"' + \"pauseVideo\" + '\",\"args\":\"\"}',\n      \"*\"\n    );\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\n// unpause all media\nfunction unpauseAllMedia() {\n  document.querySelectorAll(\".js-youtube\").forEach(video => {\n    video.contentWindow.postMessage(\n      '{\"event\":\"command\",\"func\":\"' + \"playVideo\" + '\",\"args\":\"\"}',\n      \"*\"\n    );\n  });\n  document.querySelectorAll(\".js-vimeo\").forEach(video => {\n    video.contentWindow.postMessage('{\"method\":\"play\"}', \"*\");\n  });\n  // document.querySelectorAll('video').forEach(video => video.play());\n\n  document.querySelectorAll(\"video\").forEach(video => {\n    let playPromise = video.play();\n    if (playPromise !== undefined) {\n      playPromise\n        .then(_ => {\n          // Automatic playback started!\n          // Show playing UI.\n          // video.play();\n        })\n        .catch(error => {\n          // Auto-play was prevented\n          // Show paused UI.\n          // if paused, play\n          video.play();\n        });\n    } else {\n      // Show paused UI.\n    }\n  });\n\n  document.querySelectorAll(\"product-model\").forEach(model => {\n    if (model.modelViewerUI) model.modelViewerUI.play();\n  });\n}\n\nconst debounce = (fn, wait) => {\n  let t;\n  return (...args) => {\n    clearTimeout(t);\n    t = setTimeout(() => fn.apply(this, args), wait);\n  };\n};\n\nconst fetchConfig = (type = \"json\") => {\n  return {\n    method: \"POST\",\n    headers: {\n      \"Content-Type\": `application/${type}`,\n      \"Accept\": `application/${type}`\n    }\n  };\n};\n\nclass QuantityInput extends HTMLElement {\n  constructor() {\n    super();\n\n    this.input = this.querySelector(\"input\");\n    this.changeEvent = new Event(\"change\", { bubbles: true });\n\n    this.querySelectorAll(\"button\").forEach(button =>\n      button.addEventListener(\"click\", this.onButtonClick.bind(this))\n    );\n  }\n\n  onButtonClick(event) {\n    event.preventDefault();\n\n    const eventTarget = event.target.name\n      ? event.target\n      : event.target.closest(\"button\");\n\n    const previousValue = this.input.value;\n\n    eventTarget.name === \"increment\"\n      ? this.input.stepUp()\n      : this.input.stepDown();\n\n    if (previousValue !== this.input.value)\n      this.input.dispatchEvent(this.changeEvent);\n  }\n}\n\ncustomElements.define(\"quantity-input\", QuantityInput);\n\nclass ModalOpener extends HTMLElement {\n  constructor() {\n    super();\n\n    const button = this.querySelector(\"button\");\n\n    if (!button) return;\n\n    button.addEventListener(\"click\", () => {\n      const modal = document.querySelector(\n        this.getAttribute(\"data-modal\")\n      );\n\n      if (modal) modal.show(button);\n    });\n  }\n}\ncustomElements.define(\"modal-opener\", ModalOpener);\n\nclass ModalDialog extends HTMLElement {\n  constructor() {\n    super();\n\n    this.dialogHolder = this.querySelector('[role=\"dialog\"]');\n    this.querySelector('[id^=\"ModalClose-\"]').addEventListener(\n      \"click\",\n      this.hide.bind(this, false)\n    );\n\n    this.addEventListener(\"keyup\", event => {\n      if (event.code?.toUpperCase() === \"ESCAPE\" && !event.target.closest(\"age-verification-popup\")) {\n        this.hide();\n      }\n    });\n\n    this.addEventListener(\"click\", event => {\n      if (event.target === this && !event.target.closest(\"age-verification-popup\")) {\n        this.hide();\n      }\n    });\n\n    // Prevent closing the modal dialog when clicking inside the dialog holder\n    this.dialogHolder.addEventListener(\"click\", event => {\n      event.stopPropagation();\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    bodyScroll.lock(this.dialogHolder);\n    this.setAttribute(\"open\", \"\");\n    trapFocus(this, this.dialogHolder);\n    window.pauseAllMedia();\n  }\n\n  hide() {\n    bodyScroll.unlock(this.dialogHolder);\n    document.body.dispatchEvent(new CustomEvent(\"modalClosed\"));\n    this.removeAttribute(\"open\");\n    removeTrapFocus(this.openedBy);\n    window.unpauseAllMedia();\n  }\n}\n\ncustomElements.define(\"modal-dialog\", ModalDialog);\n\nfunction isIOS() {\n  return (\n    /iPad|iPhone|iPod|iPad Simulator|iPhone Simulator|iPod Simulator/.test(\n      navigator.platform\n    ) ||\n    (navigator.platform === \"MacIntel\" &&\n      navigator.maxTouchPoints > 1)\n  );\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    if (!this.getAttribute(\"loaded\")) {\n      const content = document.createElement(\"div\");\n      content.appendChild(\n        this.querySelector(\n          \"template\"\n        ).content.firstElementChild.cloneNode(true)\n      );\n\n      this.setAttribute(\"loaded\", true);\n      const deferredElement = this.appendChild(\n        content.querySelector(\"video, model-viewer, iframe\")\n      );\n\n      if (isIOS()) {\n        deferredElement.controls = true;\n      }\n\n      deferredElement.play && deferredElement.play();\n\n      if (focus) deferredElement.focus();\n    }\n  }\n}\n\ncustomElements.define(\"deferred-media\", DeferredMedia);\n\n/**\n * Additions\n */\n\nclass LocalizationForm extends HTMLElement {\n  constructor() {\n    super();\n\n    this.form = this.querySelector(\"form\");\n    this.localizationInputElements = this.querySelectorAll(\n      '[name=\"country_code\"], [name=\"language_code\"]'\n    );\n\n    this.localizationInputElements.forEach(inputElement => {\n      inputElement.addEventListener(\"input\", () => {\n        this.form.submit();\n      });\n    });\n  }\n}\n\ncustomElements.define(\"localization-form\", LocalizationForm);\n\nclass AccordionDefault extends HTMLElement {\n  constructor() {\n    super();\n\n    this.hideMultiple = this.hasAttribute(\"data-hide-multiple\");\n    this.summaryElements = this.querySelectorAll(\"summary\");\n\n    this.setInitialAccessibilityAttr();\n\n    this.addEventListener(\"click\", e => {\n      let isBtn = e.target.classList.contains(\"js-btn\");\n\n      if (!isBtn) {\n        isBtn = e.target.closest(\"summary.js-btn\");\n      }\n\n      if (!isBtn) return;\n\n      e.preventDefault();\n\n      this.toggleDropdown(\n        e.target.classList.contains(\"js-btn\")\n          ? e.target\n          : e.target.closest(\"summary\")\n      );\n      this.collapseInactiveItems();\n    });\n\n    this.addEventListener(\"keydown\", e => {\n      const isEscapeKey = e.key === \"Escape\";\n\n      if (!isEscapeKey) {\n        return;\n      }\n\n      const closestOpenDetails = document.activeElement.closest(\n        \"details.is-active\"\n      );\n\n      if (!closestOpenDetails) {\n        return;\n      }\n\n      const btn = closestOpenDetails.querySelector(\"summary\");\n\n      if (this.closest('menu-drawer').classList.contains('facets__drawer')) {\n        this.closest('menu-drawer').toggleDrawer();\n        return;\n      }\n\n      this.toggleDropdown(btn);\n      this.collapseInactiveItems();\n    });\n  }\n\n  collapseInactiveItems() {\n    if (!this.hideMultiple) return;\n    const allSummaryElements = document.querySelectorAll(\n      \"accordion-default summary\"\n    );\n    allSummaryElements.forEach(summary => {\n      const accordionDefault = summary.closest(\"accordion-default\");\n      accordionDefault.toggleDropdown(summary, true);\n    });\n  }\n\n  toggleDropdown(btn, forceClose) {\n    const dropdown = btn.nextElementSibling;\n    const isDropdownTransitioning = dropdown.classList.contains(\n      \"is-transitioning\"\n    );\n\n    if (isDropdownTransitioning) {\n      return;\n    }\n\n    const details = btn.parentElement;\n    const accordionContainer = details.closest(\".product__accordion\");\n\n    if (forceClose) {\n      details.classList.remove(\"is-active\");\n      details.removeAttribute(\"open\");\n      btn.setAttribute(\"aria-expanded\", false);\n      dropdown.style.height = \"0px\";\n      return;\n    }\n\n    details.classList.toggle(\"is-active\");\n\n    const isDetailsActive = details.classList.contains(\"is-active\");\n\n    btn.setAttribute(\"aria-expanded\", isDetailsActive);\n\n    if (isDetailsActive) {\n      details.setAttribute(\"open\", \"\");\n\n      dropdown.style.height = `${dropdown.scrollHeight}px`;\n      setTimeout(() => {\n        if (accordionContainer) {\n          const rect = accordionContainer.getBoundingClientRect();\n          const scrollY = window.scrollY + rect.top - 150;\n\n          window.scrollTo({\n            top: scrollY,\n            behavior: \"smooth\"\n          });\n        }\n      }, 150);\n    } else {\n      dropdown.style.height = `${dropdown.scrollHeight}px`;\n\n      setTimeout(() => {\n        dropdown.style.height = \"0px\";\n      }, 0);\n    }\n\n    dropdown.classList.add(\"is-transitioning\");\n    dropdown.addEventListener(\n      \"transitionend\",\n      handleHeightTransition\n    );\n\n    function handleHeightTransition(e) {\n      dropdown.removeEventListener(\n        \"transitionend\",\n        handleHeightTransition\n      );\n      dropdown.classList.remove(\"is-transitioning\");\n\n      if (isDetailsActive) {\n        dropdown.style.height = \"auto\";\n        return;\n      }\n\n      details.removeAttribute(\"open\");\n      btn.focus();\n    }\n  }\n\n  setInitialAccessibilityAttr() {\n    this.summaryElements.forEach(summaryElement => {\n      const detailsElement = summaryElement.parentElement;\n      const dropdown = summaryElement.nextElementSibling;\n      const isDetailsOpen = detailsElement.hasAttribute(\"open\");\n\n      summaryElement.setAttribute(\"role\", \"button\");\n      summaryElement.setAttribute(\"aria-controls\", dropdown.id);\n      summaryElement.setAttribute(\"aria-expanded\", isDetailsOpen);\n    });\n  }\n}\n\ncustomElements.define(\"accordion-default\", AccordionDefault);\n\nconst nav = document.querySelector(\".js-nav\");\n\nnav?.addEventListener(\"click\", function (e) {\n  const isHoverDisabled = matchMedia(\"(hover: none)\").matches;\n  const isLink = e.target.classList.contains(\"js-nav-link\");\n\n  if (!isHoverDisabled || !isLink) {\n    return;\n  }\n\n  const link = e.target;\n  const linkItem = link.parentElement;\n  const linksList = linkItem.parentElement;\n  const activeLinkItem = linksList.querySelector(\n    \".js-nav-item.is-active\"\n  );\n  const hasDropdown = linkItem.classList.contains(\"has-dropdown\");\n\n  if (activeLinkItem !== linkItem) {\n    activeLinkItem?.classList.remove(\"is-active\");\n  }\n\n  if (!hasDropdown) {\n    return;\n  }\n\n  e.preventDefault();\n\n  linkItem.classList.toggle(\"is-active\");\n});\n\ndocument.addEventListener(\"click\", function (e) {\n  const targetActiveLinkItem = e.target.closest(\n    \".js-nav-item.is-active\"\n  );\n\n  if (targetActiveLinkItem) {\n    return;\n  }\n\n  const activeLinkItems = document.querySelectorAll(\n    \".js-nav-item.is-active\"\n  );\n\n  if (activeLinkItems.length == 0) {\n    return;\n  }\n\n  activeLinkItems.forEach(activeLinkItem => {\n    activeLinkItem.classList.remove(\"is-active\");\n  });\n});\n\nlet navItems = document.querySelectorAll(\n  \".js-nav-item.has-dropdown:not(.dropdown)\"\n);\n\nwindow.addEventListener(\"shopify:section:load\", function () {\n  navItems = document.querySelectorAll(\n    \".js-nav-item.has-dropdown:not(.dropdown)\"\n  );\n});\n\n[\"DOMContentLoaded\", \"resize\"].forEach(eventType => {\n  window.addEventListener(eventType, () => {\n    navItems = document.querySelectorAll(\n      \".js-nav-item.has-dropdown:not(.dropdown)\"\n    );\n    navItems.forEach(navItem => {\n      const dropdown = navItem.querySelector(\".js-dropdown\");\n\n      if (!dropdown) {\n        return;\n      }\n\n      const { y, height } = navItem.getBoundingClientRect();\n      const itemTop = y + height;\n      const dropdownY = dropdown.getBoundingClientRect().y;\n      const isSameOffset = itemTop === dropdownY;\n\n      if (isSameOffset) {\n        return;\n      }\n\n      const difference = Math.round(dropdownY - itemTop);\n\n      navItem.style.setProperty(\"--after-height\", `${difference}px`);\n    });\n  });\n});\n\n// Add is scrolled class for header when transparent and sticky are enabled\n\nlet hero =\n  document.querySelector(\".hero-banner\") ||\n  document.querySelector(\"main section\");\n\nwindow.addEventListener(\"shopify:section:load\", function () {\n  hero =\n    document.querySelector(\".hero-banner\") ||\n    document.querySelector(\"main section\");\n});\n\nconst megaMenu = document.querySelector('nav.js-nav');\nif (megaMenu) {\n  // CHANGE: function name is not relevant to what it does\n  function toggleHeaderTransparency() {\n    const hasVisibleDropdown = megaMenu.querySelector('.js-dropdown.is-visible');\n\n    if (hasVisibleDropdown) {\n      header.classList.add('is-megamenu-open');\n    } else {\n      header.classList.remove('is-megamenu-open');\n    }\n  }\n\n  // header__inner is the element that actually receives hover events across\n  // the whole row: on desktop the logo-split layout makes nav/ul\n  // `display:contents` so they have no box of their own, and the gaps\n  // between top-level items fall through to header__inner. Binding\n  // open/close scheduling here (instead of per nav-item) means moving the\n  // mouse between items never closes the dropdown.\n  const hoverRow = document.querySelector('.header__inner') || megaMenu;\n\n  // smoothly grow/shrink `newEl` from `oldEl`'s current height to its own\n  // natural height instead of snapping to size, so switching between two\n  // dropdowns of different heights (e.g. a short one to a tall megamenu)\n  // doesn't jump/flash\n  function animateDropdownHeight(oldEl, newEl, duration = 200) {\n    if (!oldEl || !newEl || oldEl === newEl) return;\n    const startHeight = oldEl.getBoundingClientRect().height;\n\n    newEl.style.transition = 'none';\n    newEl.style.height = 'auto';\n    const naturalHeight = newEl.getBoundingClientRect().height;\n\n    newEl.style.height = startHeight + 'px';\n    newEl.style.overflow = 'hidden';\n    newEl.getBoundingClientRect(); // force reflow before animating\n    newEl.style.transition = `height ${duration}ms ease`;\n    newEl.style.height = naturalHeight + 'px';\n\n    const cleanup = (event) => {\n      // ignore transitionend bubbling up from other properties/children so\n      // it doesn't cut this height transition short\n      if (event && event.propertyName && event.propertyName !== 'height') return;\n      newEl.style.height = '';\n      newEl.style.overflow = '';\n      newEl.style.transition = '';\n      newEl.removeEventListener('transitionend', cleanup);\n    };\n    newEl.addEventListener('transitionend', cleanup);\n    setTimeout(cleanup, duration + 60);\n  }\n\n  // whenever a dropdown opens (fresh open or switching from another item),\n  // fade each column's heading + links in with a small stagger so text\n  // lower in a column appears slightly after the text above it. Kept fast\n  // and tight (12ms step) so it reads as \"alive\" rather than a slow reveal.\n  // The panel/background itself is never touched here -- only the text.\n  function staggerFadeInDropdownText(dropdownEl) {\n    // descendant (not direct-child) selector: megamenu columns can sit one\n    // level deeper inside a .header__nav--group-link wrapper\n    const columns = dropdownEl.querySelectorAll('.header__nav-links .header__nav-links-item');\n    if (!columns.length) return;\n\n    const STEP_MS = 12;\n    const DURATION_MS = 160;\n\n    columns.forEach(column => {\n      const heading = column.querySelector(':scope > a.header__nav-dropdown-link');\n      const rows = [heading, ...column.querySelectorAll('.header__nav-sublinks-item')].filter(Boolean);\n      if (!rows.length) return;\n\n      rows.forEach(row => {\n        row.style.transition = 'none';\n        row.style.opacity = '0';\n      });\n      rows[0].getBoundingClientRect(); // force reflow so opacity:0 commits before animating\n\n      rows.forEach((row, i) => {\n        row.style.transition = `opacity ${DURATION_MS}ms ease ${i * STEP_MS}ms`;\n        row.style.opacity = '1';\n      });\n\n      const totalMs = (rows.length - 1) * STEP_MS + DURATION_MS + 60;\n      setTimeout(() => {\n        rows.forEach(row => {\n          row.style.opacity = '';\n          row.style.transition = '';\n        });\n      }, totalMs);\n    });\n  }\n\n  let closeDropdownTimer = null;\n  const scheduleCloseDropdowns = () => {\n    clearTimeout(closeDropdownTimer);\n    closeDropdownTimer = setTimeout(() => {\n      closeAllDropdowns();\n      toggleHeaderTransparency(); // update header transparency\n    }, 100);\n  };\n  const cancelCloseDropdowns = () => clearTimeout(closeDropdownTimer);\n\n  megaMenu.querySelectorAll('.js-nav-item').forEach(item => {\n    const menuContent = item.querySelector('.js-dropdown');\n\n    item.addEventListener('mouseenter', () => {\n      const menuItem = item.getAttribute('data-menu-item');\n      if (menuItem === null) {\n        return; // if menu item is not defined, return\n      }\n      cancelCloseDropdowns();\n\n      const otherVisible = [...megaMenu.querySelectorAll('.js-dropdown.is-visible')].filter(d => d !== menuContent);\n      const switchingBetweenItems = menuContent && otherVisible.length > 0 && !menuContent.classList.contains('is-visible');\n\n      if (switchingBetweenItems) {\n        // switching directly from one open item to another: swap the panel\n        // content instantly (the panel itself, including its background,\n        // never becomes transparent -- fading it caused a visible flash of\n        // whatever sits behind the header), but grow/shrink the panel\n        // smoothly to the new item's height instead of snapping to size\n        otherVisible.forEach(d => d.classList.add('no-transition'));\n        menuContent.classList.add('no-transition');\n        animateDropdownHeight(otherVisible[0], menuContent);\n      }\n\n      closeAllDropdowns();\n      if (menuContent) {\n        menuContent.classList.add('is-visible');\n        staggerFadeInDropdownText(menuContent);\n      }\n      toggleHeaderTransparency(); // update header transparency\n\n      if (switchingBetweenItems) {\n        requestAnimationFrame(() => {\n          otherVisible.forEach(d => d.classList.remove('no-transition'));\n          menuContent.classList.remove('no-transition');\n        });\n      }\n    });\n  });\n\n  hoverRow.addEventListener('mouseenter', cancelCloseDropdowns);\n  hoverRow.addEventListener('mouseleave', () => {\n    scheduleCloseDropdowns();\n  });\n\n  function closeAllDropdowns() {\n    megaMenu.querySelectorAll('.js-dropdown.is-visible').forEach(dropdown => {\n      const item = dropdown.closest('.js-nav-item');\n      const menuItem = item?.getAttribute('data-menu-item');\n      const allSublinks = megaMenu.querySelectorAll('.header__nav-sublinks');\n\n      allSublinks.forEach((sublink) => {\n        if (sublink.classList.contains('is-visible')) {\n          sublink.classList.remove(\"is-visible\");\n        }\n      })\n      if (menuItem === null) {\n        return; // if menu item is not defined, return\n      }\n      dropdown.classList.remove('is-visible');\n    });\n  }\n}\n\ndocument.querySelectorAll('.header__nav-item.dropdown [data-child-menu-item]').forEach(childItem => {\n  const childMenuContent = childItem.querySelector('[data-child-menu-content]');\n\n  childItem.addEventListener('mouseenter', () => {\n    document.querySelectorAll('.header__nav-item.dropdown [data-child-menu-content]').forEach(menuContent => {\n      menuContent.classList.remove('is-visible');\n    });\n    childMenuContent?.classList.add('is-visible');\n  });\n\n  childItem.addEventListener('mouseleave', e => {\n    const related = e.relatedTarget;\n    // if mouse enters another sibling `data-child-menu-item`, remove 'is-visible'\n    if (\n      related &&\n      related.closest('[data-child-menu-item]') !== childItem &&\n      related.closest('[data-child-menu-item]')\n    ) {\n      childMenuContent?.classList.remove('is-visible');\n    }\n  });\n});\n// Animations\n\nconst animationObserverOptions = {\n  rootMargin: \"-100px\"\n};\n\nconst animationObserver = new IntersectionObserver(entries => {\n  entries.forEach(entry => {\n    if (!entry.isIntersecting) {\n      return;\n    }\n\n    entry.target.classList.add(\"animation-init\");\n    entry.target.addEventListener(\n      \"animationend\",\n      () => {\n        entry.target.classList.add(\"animation-none\");\n      },\n      {\n        once: true\n      }\n    );\n    animationObserver.unobserve(entry.target);\n  });\n}, animationObserverOptions);\n\nobserveAnimationElements();\n\nwindow.addEventListener(\"shopify:section:load\", () => {\n  observeAnimationElements();\n});\n\nfunction observeAnimationElements() {\n  const animationElements = document.querySelectorAll(\n    '[class*=\"js-animation-\"]'\n  );\n\n  animationElements.forEach(animationElement => {\n    animationObserver.observe(animationElement);\n  });\n}\n\nfunction preventDefault(event) {\n  event.preventDefault();\n}\n\n// DropdownInput\n\nclass DropdownInput extends HTMLElement {\n  constructor() {\n    super();\n    this.select = this.querySelector(\"select\");\n    this.dropdown = null;\n    this.buttons = null;\n    this.detailsTemplate = this.querySelector(\n      'template[data-name=\"details\"]'\n    );\n    this.optionTemplate = this.querySelector(\n      'template[data-name=\"option\"]'\n    );\n    if (!this.select) return;\n  }\n\n  connectedCallback() {\n    this.init();\n  }\n\n  init() {\n    this.select.classList.add(\"hidden\");\n    this.appendTemplate();\n  }\n\n  appendTemplate() {\n    const detailsTemplate =\n      this.detailsTemplate.content.firstElementChild.cloneNode(true);\n    const optionTemplate = this.optionTemplate.content;\n    const options = Array.from(this.select.options);\n    if (options.length === 0) return;\n    const selectedOption = options.find(option => option.selected);\n    detailsTemplate.querySelector(\"[data-label]\").textContent =\n      selectedOption.label;\n\n    options.forEach(option => {\n      const html = optionTemplate.cloneNode(true);\n      const button = html.querySelector(\"button\");\n      const li = html.querySelector(\"li\");\n\n      button.setAttribute(\"data-value\", option.value);\n      button.textContent = option.label;\n      button.toggleAttribute(\"disabled\", option.disabled);\n      li.classList.toggle(\"is-active\", option.selected);\n      detailsTemplate.querySelector(\"[data-options]\").append(html);\n    });\n\n    this.append(detailsTemplate);\n    this.dropdown = this.querySelector(\"details\");\n    this.buttons = this.dropdown.querySelectorAll(\"button\");\n    this.setHandlers();\n  }\n\n  update() {\n    this.dropdown = null;\n    this.buttons = null;\n    this.querySelector(\"details\")?.remove();\n    this.appendTemplate();\n  }\n\n  setHandlers() {\n    this.querySelector(\"summary\").addEventListener(\n      \"click\",\n      this.onSummaryClick.bind(this)\n    );\n    this.buttons.forEach((button, index) => {\n      button.addEventListener(\"click\", event =>\n        this.onOptionSelect(event, index)\n      );\n    });\n  }\n\n  onOptionSelect(event, index) {\n    event.preventDefault();\n    Array.from(this.select.options).forEach(option =>\n      option.removeAttribute(\"selected\")\n    );\n\n    this.select.options[index].setAttribute(\"selected\", \"selected\");\n    this.select.value = event.target.dataset.value;\n    this.select.dispatchEvent(new Event(\"change\", { bubbles: true }));\n    this.querySelector(\"[data-label]\").textContent =\n      this.select.options[index].label;\n    this.setSelectedOption(event.target);\n\n    // when option is selected, update the dropdown\n    this.update();\n  }\n\n  setSelectedOption(buttonOption) {\n    const buttonEl = buttonOption;\n    this.buttons.forEach(button => {\n      button.parentElement.classList.remove(\"is-active\");\n    });\n    buttonEl.parentElement.classList.add(\"is-active\");\n    this.select.dispatchEvent(new Event(\"change\"));\n    this.select.closest(\"form\")?.dispatchEvent(new Event(\"input\"));\n    this.close(\n      undefined,\n      this.dropdown.querySelector(\"summary\"),\n      this.dropdown\n    );\n  }\n\n  onSummaryClick(event) {\n    const summaryElement = event.currentTarget;\n    const detailsElement = summaryElement.parentNode;\n    const isOpen = detailsElement.hasAttribute(\"open\");\n\n    isOpen\n      ? this.close(event, summaryElement, detailsElement)\n      : this.open(summaryElement, detailsElement);\n  }\n\n  open(summaryElement, detailsElement) {\n    setTimeout(() => {\n      detailsElement.classList.add(\"is-open\");\n    });\n    summaryElement.setAttribute(\"aria-expanded\", true);\n    trapFocus(detailsElement, summaryElement);\n  }\n\n  close(event, summaryElement, detailsElement) {\n    if (event) {\n      event.preventDefault();\n    }\n\n    detailsElement.classList.remove(\"is-open\");\n    removeTrapFocus(summaryElement);\n    this.closeAnimation(detailsElement);\n  }\n\n  closeAnimation(detailsElement) {\n    let animationStart;\n\n    const handleAnimation = time => {\n      if (animationStart === undefined) {\n        animationStart = time;\n      }\n\n      const elapsedTime = time - animationStart;\n\n      elapsedTime < 300 // Increase for animation duration if necessary\n        ? window.requestAnimationFrame(handleAnimation)\n        : detailsElement.removeAttribute(\"open\");\n    };\n\n    window.requestAnimationFrame(handleAnimation);\n  }\n}\ncustomElements.define(\"dropdown-input\", DropdownInput);\n\n// Countdown Timer\nclass CountdownTimer extends HTMLElement {\n  constructor() {\n    super();\n\n    const timezone = this.dataset.timezone,\n      date = this.dataset.date.split(\"-\").filter(function (el) { return el != \"\"; }),\n      day = parseInt(date[0]),\n      month = parseInt(date[1]),\n      year = parseInt(date[2]);\n\n    let time = this.dataset.time,\n      tarhour,\n      tarmin;\n\n    if (time != null) {\n      time = time.split(\":\");\n      tarhour = parseInt(time[0]);\n      tarmin = parseInt(time[1]);\n    }\n\n    // Set the date we're counting down to\n    let date_string =\n      month +\n      \"/\" +\n      day +\n      \"/\" +\n      year +\n      \" \" +\n      tarhour +\n      \":\" +\n      tarmin +\n      \" GMT\" +\n      timezone;\n    // Time without timezone\n    this.countDownDate = new Date(\n      year,\n      month - 1,\n      day,\n      tarhour,\n      tarmin,\n      0,\n      0\n    ).getTime();\n\n    // Time with timezone\n    this.countDownDate = new Date(date_string).getTime();\n  }\n\n  convertDateForIos(date) {\n    var arr = date.split(/[- :]/);\n    date = new Date(\n      arr[0],\n      arr[1] - 1,\n      arr[2],\n      arr[3],\n      arr[4],\n      arr[5]\n    );\n    return date;\n  }\n  connectedCallback() {\n    let _this = this;\n    let timer_layout = _this.dataset.timerLayout;\n    let timer_ended_message = _this.dataset.endMessage;\n\n    const updateTime = function () {\n      // Get todays date and time\n      const now = new Date().getTime();\n\n      // Find the distance between now an the count down date\n      const distance = _this.countDownDate - now;\n\n      // Time calculations for days, hours, minutes and seconds\n      const days = Math.floor(distance / (1000 * 60 * 60 * 24));\n      const hours = Math.floor(\n        (distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)\n      );\n      const minutes = Math.floor(\n        (distance % (1000 * 60 * 60)) / (1000 * 60)\n      );\n      const seconds = Math.floor((distance % (1000 * 60)) / 1000);\n\n      let countdownTimerColumns = _this.querySelector(\n        \".countdown-timer__columns\"\n      );\n      let countdownTimerMessage = _this.querySelector(\n        \".countdown-timer__message\"\n      );\n\n      // set .countdown-timer__column-number blocks\n      let daysBlock = _this.querySelector(\n        \".days .countdown-timer__column-number\"\n      );\n      let hoursBlock = _this.querySelector(\n        \".hours .countdown-timer__column-number\"\n      );\n      let minutesBlock = _this.querySelector(\n        \".minutes .countdown-timer__column-number\"\n      );\n      let secondsBlock = _this.querySelector(\n        \".seconds .countdown-timer__column-number\"\n      );\n\n      if (distance < 0) {\n        if (daysBlock) daysBlock.innerHTML = 0;\n        if (hoursBlock) hoursBlock.innerHTML = 0;\n        if (minutesBlock) minutesBlock.innerHTML = 0;\n        if (secondsBlock) secondsBlock.innerHTML = 0;\n\n        _this.classList.add(\"loading-effect\");\n\n        // update data-is-ended attribute\n        _this.setAttribute(\"data-is-ended\", \"true\");\n\n        // if data-timer-layout is not '1', hide the countdown\n        if (timer_layout !== \"1\") {\n          // if the countdown is over, show the message and hide the countdown\n          if (countdownTimerColumns)\n            countdownTimerColumns.classList.add(\"hidden\");\n          if (countdownTimerMessage)\n            countdownTimerMessage.classList.remove(\"hidden\");\n        }\n\n        if (timer_layout === \"1\") {\n          // change nearest .callout-banner__content-heading text with timer is ended message\n          let calloutBannerContentHeading = _this\n            .closest(\".callout-banner\")?.querySelector(\".callout-banner__content-heading\");\n          if (calloutBannerContentHeading)\n            calloutBannerContentHeading.innerHTML =\n              _this.dataset.endMessage;\n        }\n      } else {\n        requestAnimationFrame(updateTime);\n\n        if (daysBlock)\n          daysBlock.innerHTML = CountdownTimer.addZero(days);\n        if (hoursBlock)\n          hoursBlock.innerHTML = CountdownTimer.addZero(hours);\n        if (minutesBlock)\n          minutesBlock.innerHTML = CountdownTimer.addZero(minutes);\n        if (secondsBlock)\n          secondsBlock.innerHTML = CountdownTimer.addZero(seconds);\n\n        // if days is 0, remove the days block\n        if (days === 0) {\n          if (daysBlock)\n            daysBlock.parentElement.parentElement.remove();\n        }\n\n        _this.classList.remove(\"loading-effect\");\n      }\n    };\n    requestAnimationFrame(updateTime);\n  }\n  static addZero(x) {\n    return x < 10 && x >= 0 ? \"0\" + x : x;\n  }\n}\ncustomElements.define(\"countdown-timer\", CountdownTimer);\n\nif (!customElements.get(\"text-truncator\")) {\n  class TextTruncator extends HTMLElement {\n    constructor() {\n      super();\n      this.initElements();\n    }\n\n    connectedCallback() {\n      this.setupTextTruncation();\n      // Uncomment the following line to enable resizing functionality\n      // window.addEventListener('resize', this.setupTextTruncation.bind(this));\n    }\n\n    initElements() {\n      this.textTruncatorButton = this.querySelector(\".text-truncator__button\");\n      this.textTruncatorButtonText = this.textTruncatorButton?.querySelector(\".text-truncator__button-text\");\n      this.textTruncatorIconPlus = this.textTruncatorButton?.querySelector(\".icon-plus\");\n      this.textTruncatorIconMinus = this.textTruncatorButton?.querySelector(\".icon-minus\");\n    }\n\n    setupTextTruncation() {\n      const textTruncator = this.querySelector(\".text-truncator\");\n      textTruncator.style.display = \"block\"; // show the block initially\n\n      const { lineHeight, lineCount, maxLineCount } = this.calculateLineCounts(textTruncator);\n\n      if (lineCount > maxLineCount) {\n        this.applyTextTruncation(textTruncator, lineHeight, maxLineCount);\n        this.setupButton(textTruncator);\n      } else {\n        this.removeTextTruncation(textTruncator);\n      }\n    }\n\n    calculateLineCounts(element) {\n      const lineHeight = parseFloat(window.getComputedStyle(element).lineHeight);\n      const lineCount = Math.floor(element.clientHeight / lineHeight);\n      const maxLineCount = parseInt(this.dataset.maxLineCount);\n\n      return { lineHeight, lineCount, maxLineCount };\n    }\n\n    applyTextTruncation(element, lineHeight, maxLineCount) {\n      element.classList.add(\"text-truncator--hidden\");\n\n      const maxHeight = `${lineHeight * maxLineCount}px`;\n      const style = document.createElement(\"style\");\n      style.innerHTML = `.text-truncator--hidden { max-height: ${maxHeight}; }`;\n      document.head.appendChild(style);\n      if (this.textTruncatorButton) {\n        this.textTruncatorButton.style.display = \"\";\n      }\n    }\n\n    removeTextTruncation(element) {\n      element.classList.remove(\"text-truncator--hidden\");\n\n      if (this.textTruncatorButton) {\n        this.textTruncatorButton.style.display = \"none\";\n      }\n    }\n\n    setupButton(textTruncator) {\n      if (this.textTruncatorButton) {\n        this.textTruncatorButtonText.innerHTML = `<span>${this.dataset.readMore}</span>`;\n        this.toggleIcons(\"plus\");\n        this.textTruncatorButton.addEventListener(\"click\", (event) => {\n          event.preventDefault();\n          this.toggleTextTruncation(textTruncator);\n        });\n      }\n    }\n\n    toggleTextTruncation(textTruncator) {\n      const paragraphs = textTruncator.querySelectorAll(\"p\");\n      const isHidden = textTruncator.classList.contains(\"text-truncator--hidden\");\n\n      paragraphs.forEach((paragraph, index) => {\n        paragraph.style.marginTop = isHidden && index !== 0 ? \"1rem\" : \"\";\n      });\n\n      textTruncator.classList.toggle(\"text-truncator--hidden\");\n      this.textTruncatorButtonText.innerHTML = `<span>${isHidden ? this.dataset.readLess : this.dataset.readMore}</span>`;\n      this.toggleIcons(isHidden ? \"minus\" : \"plus\");\n\n      // on mobile, if the text is expanded, set max-height to 4rem\n      if (isHidden && window.innerWidth < 768) {\n        textTruncator.style.overflow = \"scroll\";\n      } else {\n        textTruncator.style.maxHeight = \"\";\n        textTruncator.style.overflow = \"\";\n      }\n    }\n\n    toggleIcons(iconType) {\n      this.textTruncatorIconPlus.style.display = iconType === \"plus\" ? \"inline-block\" : \"none\";\n      this.textTruncatorIconMinus.style.display = iconType === \"minus\" ? \"inline-block\" : \"none\";\n    }\n  }\n  customElements.define(\"text-truncator\", TextTruncator);\n}\n\nclass BackToTop extends HTMLElement {\n  constructor() {\n    super();\n    this.vertical_offset_for_trigger = window.innerHeight * 0.5;\n    this.addEventListener(\"click\", this.scrollToTop.bind(this));\n  }\n\n  scrollToTop() {\n    window.scroll({\n      top: 0,\n      behavior: \"smooth\"\n    });\n  }\n\n  connectedCallback() {\n    window.addEventListener(\"scroll\", () => this.handleScroll(), {\n      passive: true\n    });\n  }\n\n  handleScroll() {\n    const top = window.pageYOffset;\n    if (top > this.vertical_offset_for_trigger) {\n      this.classList.remove(\"hide\");\n    } else {\n      this.classList.add(\"hide\");\n    }\n  }\n}\n\ncustomElements.define(\"back-to-top\", BackToTop);\n\nconst submenuButtons = document.querySelectorAll(\n  \".drawer__submenu-btn\"\n);\n\nsubmenuButtons.forEach(button => {\n  button.addEventListener(\"click\", function () {\n    const parentDiv = button.parentElement;\n    const isActive = parentDiv.classList.contains(\"is-active\");\n\n    // Etkin \u00F6\u011Feyi do\u011Frula\n    const submenuSecond = parentDiv.querySelector(\n      \".drawer__submenu-second\"\n    );\n    if (submenuSecond) {\n      submenuSecond.style.height = isActive ? \"0px\" : \"auto\";\n    }\n\n    const submenuItems = document.querySelectorAll(\n      \".drawer__submenu-first-item\"\n    );\n    submenuItems.forEach(item => {\n      item.classList.remove(\"is-active\");\n      const submenu = item.querySelector(\".drawer__submenu-second\");\n      if (submenu) {\n        submenu.style.height = \"0px\";\n      }\n    });\n\n    if (!isActive) {\n      parentDiv.classList.add(\"is-active\");\n      const submenuSec = parentDiv.querySelector(\n        \".drawer__submenu-second\"\n      );\n      if (submenuSec) {\n        submenuSec.style.height = \"auto\";\n      }\n    }\n  });\n});\n\n/* constants */\nconst PUB_SUB_EVENTS = {\n  cartUpdate: \"cart-update\",\n  quantityUpdate: \"quantity-update\",\n  variantChange: \"variant-change\",\n  cartError: \"cart-error\"\n};\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n  var menuLinks = document.querySelectorAll(\"button.menu-link\");\n\n  // Handle menu link click\n  menuLinks.forEach(function (menuLink) {\n    menuLink.addEventListener(\"click\", function () {\n      var activeMenuLink = document.querySelector(\".menu-panel.is-active\");\n      var isNested = activeMenuLink?.hasAttribute(\"data-menu-nested\");\n      var targetRef = menuLink.dataset.ref;\n      var targetPanel = document.querySelector(\n        'div.menu-panel[data-menu=\"' + targetRef + '\"]'\n      );\n\n      // Remove \"is-active\" class from all menu panels\n      var allPanels = document.querySelectorAll(\".menu-panel\");\n      const primaryMenuPanel = document.querySelector(\".primary-menu-panel\");\n      let hasActive = false;\n\n      if (targetPanel) {\n        allPanels.forEach(function (panel) {\n          if (panel.classList.contains(\"is-active\")) {\n            hasActive = true;\n            if (panel.hasAttribute(\"data-menu-nested\")) {\n              panel.classList.add(\"was-active\");\n              primaryMenuPanel.style.opacity = \"0\";\n              panel.classList.remove(\"is-active\");\n            } else {\n              setTimeout(() => {\n                panel.style.opacity = \"0\";\n              }, 300);\n              setTimeout(() => {\n                panel.classList.remove(\"is-active\");\n              }, 500);\n            }\n            if (panel.classList.contains(\"is-back\")) {\n              panel.classList.remove(\"is-back\");\n            }\n            primaryMenuPanel.style.opacity = \"0\";\n          }\n        });\n        if (hasActive) {\n          primaryMenuPanel.style.opacity = \"0\";\n        } else {\n          primaryMenuPanel.style.opacity = \"1\";\n        }\n\n        // Add \"is-active\" class to the target menu panel\n        targetPanel.classList.add(\"is-active\");\n        targetPanel.style.opacity = \"1\";\n        if (targetPanel.classList.contains(\"is-back\")) {\n          targetPanel.classList.remove(\"is-back\");\n        }\n        if (isNested) {\n          targetPanel.classList.add(\"is-instant\");\n        }\n        setTimeout(() => {\n          allPanels.forEach(function (panel) {\n            if (panel.classList.contains(\"was-active\")) {\n              panel.classList.remove(\"was-active\");\n            }\n            targetPanel.classList.remove(\"is-instant\");\n          });\n        }, 300);\n      } else {\n        primaryMenuPanel.style.opacity = \"1\";\n        allPanels.forEach(function (panel) {\n          if (panel.classList.contains(\"is-active\")) {\n            panel.classList.remove(\"is-active\");\n            panel.classList.add(\"is-back\");\n            panel.classList.add(\"non-active\");\n            setTimeout(() => {\n              panel.classList.remove(\"non-active\");\n            }, 300);\n          }\n        })\n      }\n    });\n  });\n\n  var faqPage = document.querySelector('.template--faq');\n\n  if(faqPage) {\n    var accordions = document.querySelectorAll(\".accordion__section\");\n    accordions.forEach(function (accordion) {\n      accordion.addEventListener(\"click\", function () {\n        var headerHeight = document.querySelector(\".header\").offsetHeight;\n        var bodyHeight = this.offsetHeight;\n        var accordionTop = accordion.getBoundingClientRect().top;\n        var scrollTo = accordionTop - headerHeight - bodyHeight;\n\n        if (scrollTo < 0) {\n          scrollTo = 0;\n        }\n        if (accordionTop > headerHeight) {\n          scrollTo = window.scrollY;\n        }\n\n        window.scrollTo({\n          top: scrollTo,\n          behavior: \"smooth\"\n        });\n      });\n    });\n  }\n});\n\n/* swiper - hide swiper buttons element if both next and prev buttons are disabled */\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n  const allSwiperButtons = document.querySelectorAll(\".swiper-buttons\");\n  allSwiperButtons.forEach(function (swiperButtons) {\n    const prevButton = swiperButtons.querySelector(\"[class^='swiper-button--prev'], [class*=' swiper-button--prev']\");\n    const nextButton = swiperButtons.querySelector(\"[class^='swiper-button--next'], [class*=' swiper-button--next']\");\n    if (prevButton && nextButton && prevButton.classList.contains(\"swiper-button-disabled\") && nextButton.classList.contains(\"swiper-button-disabled\")) {\n      swiperButtons.style.display = \"none\";\n    }\n\n    // get grand parent child of swiper-buttons\n    const grandParent = swiperButtons.parentElement.parentElement;\n    // if grand parent has class of section__foot and this section__foot has no a.button set margin-block-start to 0\n    if (grandParent.classList.contains(\"section__foot\") && !grandParent.querySelector(\"a.button\")) {\n      grandParent.style.marginBlockStart = \"0\";\n    }\n  });\n});\n\nif (!customElements.get(\"product-card\")) {\n  class ProductCard extends HTMLElement {\n    constructor() {\n      super();\n      this.isQuickCart = this.classList.contains(\n        \"product-card--quick-cart\"\n      );\n      this.init();\n    }\n\n    init() {\n      this.initForm();\n      this.initVariants();\n      this.imageBorderCalc();\n      if (\n        this.querySelector(\".product-card__media\") &&\n        this.querySelector(\".product-card__media\").classList.contains(\n          \"product-card__media--hoverable\"\n        )\n      ) {\n        this.secondImgHoverStates();\n      }\n\n      // if quick-cart-drawer does not exists, remove trigger buttons\n      if (!document.querySelector(\"quick-cart-drawer\")) {\n        this.querySelector(\".quick-cart-drawer__trigger\")?.remove();\n      }\n    }\n\n    /**\n     * Add to Cart Form\n     */\n    initForm() {\n      /** Variables */\n      this.cart =\n        document.querySelector(\"cart-notification\") ||\n        document.querySelector(\"cart-drawer\");\n      this.addToCartForm = this.querySelector(\n        \"form.product-card__add-to-cart--form\"\n      );\n      if (this.addToCartForm) {\n        this.addToCartForm.removeAttribute(\"method\");\n        this.addToCartForm.removeAttribute(\"action\");\n      }\n      this.submitButton = this.querySelector('button[type=\"submit\"]');\n      /** Event Listeners */\n      if (this.addToCartForm) {\n        this.addToCartForm.addEventListener(\n          \"submit\",\n          this.submitAddToCartForm.bind(this)\n        );\n      }\n    }\n\n    submitAddToCartForm(event) {\n      event.preventDefault();\n\n      this.submitButton.setAttribute(\"disabled\", \"\");\n      this.submitButton.classList.add(\"add-to-cart--is-disabled\");\n\n      const config = fetchConfig(\"javascript\");\n      config.headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\n      delete config.headers[\"Content-Type\"];\n\n      const formData = new FormData(event.target);\n      if (this.cart) {\n        formData.append(\n          \"sections\",\n          this.cart\n            .getSectionsToRender()\n            .map(section => section.section)\n        );\n        formData.append(\"sections_url\", window.location.pathname);\n        this.cart.setActiveElement(document.activeElement);\n      }\n      config.body = formData;\n\n      fetch(`${routes.cart_add_url}`, config)\n        .then(response => response.json())\n        .then(response => {\n          if (response.errors) {\n            this.handleErrorMessage(response.errors);\n            return;\n          }\n\n          if (this.cart) {\n            this.cart.renderContents(response);\n          }\n\n          updateCartCounters();\n        })\n        .catch((error) => { console.error(error) })\n        .finally(() => {\n          this.submitButton.removeAttribute(\"disabled\");\n          this.submitButton.classList.remove(\n            \"add-to-cart--is-disabled\"\n          );\n\n          const quickCartDrawer = this.closest(\"quick-cart-drawer\");\n          if (quickCartDrawer) {\n            quickCartDrawer.close();\n          }\n        });\n    }\n\n    handleErrorMessage(errorMessage = false) {\n      this.errorMessageWrapper = this.querySelector(\n        \".product-form__error-message-wrapper\"\n      );\n      if (!this.errorMessageWrapper) return;\n      this.errorMessage = this.errorMessageWrapper.querySelector(\n        \".product-form__error-message\"\n      );\n\n      this.errorMessageWrapper.toggleAttribute(\n        \"hidden\",\n        !errorMessage\n      );\n\n      if (errorMessage) {\n        this.errorMessage.textContent = errorMessage;\n      }\n\n      setTimeout(() => {\n        this.resetErrorMessage();\n      }, 5000);\n    }\n\n    resetErrorMessage() {\n      if (!this.errorMessageWrapper) return;\n      this.errorMessageWrapper.toggleAttribute(\"hidden\", true);\n      this.errorMessageWrapper.textContent = \"\";\n    }\n\n    /**\n     * Product Variants\n     */\n    initVariants() {\n      this.getVariantsData();\n\n      // event listeners for variant buttons\n      this.querySelectorAll(\".button--variant input\").forEach(\n        variantButton => {\n          variantButton.addEventListener(\n            \"click\",\n            this.onClickOptionRadioInputs.bind(this)\n          );\n        }\n      );\n\n      // set initial checked options\n      let initialCheckedOptions = [];\n      this.querySelectorAll(\".variant-option-radio-input\").forEach(\n        radioInput => {\n          if (radioInput.checked) {\n            initialCheckedOptions.push(radioInput.value);\n          }\n        }\n      );\n\n      // ensure at least one option is selected on load\n      if (initialCheckedOptions.length === 0) {\n        this.querySelector(\".variant-option-radio-input\")?.click();\n      }\n\n      // immediately update variant statuses to set disabled states on load\n      this.updateVariantStatuses();\n\n      const { currentVariantId } = this.findCurrentVariantFromOptionRadioInputs();\n\n      // update media and cart button states\n      if (!this.querySelector(\".product-card__media\")?.dataset.updateMedia) {\n        this.updateMediaForVariant(currentVariantId);\n      }\n      this.setCartButtonState();\n    }\n\n    updateVariantStatuses() {\n\n      const selectedOptionOneVariants = this.variantsObj?.filter(\n        variant =>\n          this.querySelector(\":checked\")?.value === variant.option1\n      );\n\n      const inputWrappers = [\n        ...this.querySelectorAll(\".js-product-card-options\")\n      ];\n\n      inputWrappers.forEach((option, index) => {\n        if (index === 0) return;\n        const optionInputs = [\n          ...option.querySelectorAll('input[type=\"radio\"]')\n        ];\n        const previousOptionSelected =\n          inputWrappers[index - 1].querySelector(\":checked\")?.value;\n        const availableOptionInputsValue = selectedOptionOneVariants\n          ?.filter(\n            variant =>\n              variant.available &&\n              variant[`option${index}`] === previousOptionSelected\n          )\n          .map(variantOption => variantOption[`option${index + 1}`]);\n\n        this.setInputAvailability(\n          optionInputs,\n          availableOptionInputsValue\n        );\n      });\n    }\n\n    setInputAvailability(elementList, availableValuesList) {\n      elementList.forEach(element => {\n        const value = element.getAttribute(\"value\");\n        const availableElement = availableValuesList.includes(value);\n        element\n          .closest(\"li\")\n          .classList.toggle(\"disabled\", !availableElement);\n        element.toggleAttribute(\"disabled\", !availableElement);\n      });\n    }\n\n    onClickOptionRadioInputs(event) {\n      const {\n        currentVariantId,\n        currentCheckedOptions,\n        currentVariantMediaId\n      } = this.findCurrentVariantFromOptionRadioInputs();\n\n      this.clearRadioInputStates(event);\n\n      if (currentCheckedOptions.includes(event.target.value)) {\n        // console.log('event.target', event.target);\n        event.target.setAttribute(\"checked\", \"\");\n        // event.target.closest(\"div\").classList.add(\"checked\");\n\n        this.updateVariantStatuses();\n\n        this.disableAddToCartButons();\n\n        // call to update price when variant is changed\n        this.updatePriceForVariant(currentVariantId);\n\n        // call to update discount badge when variant is changed\n        this.updateDiscountBadgeForVariant(currentVariantId);\n      }\n\n      // update form input variant-id\n      this.updateFormVariantIdInput();\n\n      // update product image shown\n      let allVariantIdsWithImageAvailable = [];\n      this.querySelectorAll(\"[data-product-images]\").forEach(el => {\n        el.getAttribute(\"data-product-images\")\n          .split(\",\")\n          .forEach(v => {\n            allVariantIdsWithImageAvailable.push(v);\n          });\n      });\n      if (allVariantIdsWithImageAvailable.includes(currentVariantId.toString())) {\n        this.updateMediaForVariant(currentVariantId);\n      }\n\n      if (this.isQuickCart && currentVariantMediaId) {\n        document\n          .querySelector(\"quick-cart-drawer\")\n          .setActiveMedia(currentVariantMediaId);\n      }\n\n      // update product link\n      this.querySelectorAll(\"[data-product-link]\").forEach(\n        linkItem => {\n          const currentLink = linkItem.getAttribute(\"href\");\n          if (currentVariantId) {\n            const newLink =\n              currentLink.split(\"?variant=\")[0] +\n              \"?variant=\" +\n              currentVariantId;\n            linkItem.setAttribute(\"href\", newLink);\n          }\n        }\n      );\n    }\n\n    setCartButtonState() {\n      const { currentVariantAvailable } = this.findCurrentVariantFromOptionRadioInputs();\n      if (!currentVariantAvailable) return;\n      this.submitButton?.toggleAttribute(\n        \"disabled\",\n        !currentVariantAvailable\n      );\n    }\n\n    updateMediaForVariant(currentVariantId) {\n      if (!currentVariantId) return;\n      this.querySelectorAll(\"[data-product-images]\").forEach(el => {\n        el.classList.toggle(\n          \"hidden\",\n          !el\n            .getAttribute(\"data-product-images\")\n            .includes(currentVariantId)\n        );\n      });\n    }\n\n    updateFormVariantIdInput() {\n      const { currentVariantId } = this.findCurrentVariantFromOptionRadioInputs();\n      const input = this.querySelector('input[name=\"id\"]');\n      if (currentVariantId && input) {\n        this.querySelector('input[name=\"id\"]').value = currentVariantId;\n      }\n    }\n\n    updatePriceForVariant(variantId) {\n      // Assuming the variantsObj contains the variant data, including price\n      const selectedVariant = this.variantsObj?.find(\n        variant => variant.id === variantId\n      );\n\n      if (selectedVariant) {\n        let priceContainer = this.querySelector(\".price__container\");\n        // if priceContainer does not exist, check previous element\n        if (!priceContainer) {\n          const previousElement = this.previousElementSibling;\n          if (previousElement) {\n            // check if previous element has class of price__container\n            priceContainer = previousElement.querySelector(\n              \".price__container\"\n            );\n          }\n        }\n\n        if (!priceContainer) return;\n        const moneyFormat = priceContainer.dataset.moneyFormat;\n        const price = formatPrice(\n          moneyFormat,\n          selectedVariant.price / 100\n        );\n        const compare_at_price = formatPrice(\n          moneyFormat,\n          selectedVariant.compare_at_price / 100\n        );\n        const labelPriceRegular =\n          priceContainer.dataset.labelPriceRegular;\n        const labelPriceSale = priceContainer.dataset.labelPriceSale;\n\n        if (parseFloat(compare_at_price) > parseFloat(price)) {\n          // generate html block and append to price container\n          const priceHtml = `\n            <div class=\"price__sale\">\n              <div class=\"price__sale-inner\">\n                <span class=\"visually-hidden\">${labelPriceSale}</span>\n                <s>${compare_at_price}</s>\n                <ins>\n                  <span class=\"visually-hidden\">${labelPriceRegular}</span>\n                  ${price}\n                </ins>\n              </div>\n            </div>\n          `;\n          priceContainer.innerHTML = priceHtml;\n        } else {\n          // generate html block and append to price container\n          const priceHtml = `\n            <div class=\"price__sale\">\n              <div class=\"price__sale-inner\">\n                <span class=\"visually-hidden\">${labelPriceRegular}</span>\n                ${price}\n              </div>\n            </div>\n          `;\n          priceContainer.innerHTML = priceHtml;\n        }\n      }\n    }\n\n    updateDiscountBadgeForVariant(variantId) {\n      const selectedVariant = this.variantsObj?.find(\n        variant => variant.id === variantId\n      );\n      if (selectedVariant) {\n        let discountBadge = this.querySelector(\n          \".product-card__badge--discount\"\n        );\n        // if discountBadge does not exist, check previous element\n        if (!discountBadge) {\n          const previousElement = this.previousElementSibling;\n          if (previousElement) {\n            // check if previous element has class of product-card__badge--discount\n            discountBadge = previousElement.querySelector(\n              \".product-card__badge--discount\"\n            );\n          }\n        }\n\n        if (discountBadge) {\n          if (\n            selectedVariant.compare_at_price > selectedVariant.price\n          ) {\n            discountBadge.classList.remove(\"hidden\");\n            const percentageElement =\n              discountBadge.querySelector(\".percentage\");\n            // calculate discount percentage\n            const discountPercentage = Math.round(\n              ((selectedVariant.compare_at_price -\n                selectedVariant.price) /\n                selectedVariant.compare_at_price) *\n                100\n            );\n            // update discount percentage\n            percentageElement.textContent = discountPercentage;\n          } else {\n            discountBadge.classList.add(\"hidden\");\n          }\n        }\n      }\n    }\n\n    disableCheckedVariantOptions() {\n      this.querySelectorAll(\n        \".variant-option-radio-input[checked]\"\n      ).forEach(variantBtn => {\n        if (this.isQuickCart) {\n          variantBtn.setAttribute(\"disabled\", \"\");\n          // variantBtn.closest(\"div\").classList.add(\"disabled\");\n        } else {\n          variantBtn.removeAttribute(\"disabled\");\n        }\n      });\n    }\n\n    disableAddToCartButons() {\n      const { currentVariantAvailable } =\n        this.findCurrentVariantFromOptionRadioInputs();\n      const submitBtn = this.querySelector(\n        \".product-card__add-to-cart--form button[type='submit']\"\n      );\n\n      if (\n        submitBtn &&\n        !submitBtn.classList.contains(\n          \"product-card__add-to-cart--button\"\n        )\n      ) {\n        if (!currentVariantAvailable) {\n          submitBtn.setAttribute(\"disabled\", \"\");\n        } else {\n          submitBtn.removeAttribute(\"disabled\");\n        }\n      }\n    }\n\n    clearRadioInputStates(event) {\n      event.target\n        .closest(\".js-product-card-options\")\n        .querySelectorAll(\".variant-option-radio-input\")\n        .forEach(radioInput => {\n          radioInput.removeAttribute(\"checked\");\n          // radioInput.closest(\"div\").classList.remove(\"checked\");\n        });\n    }\n\n    findCurrentVariantFromOptionRadioInputs() {\n      let currentVariantAvailable = null;\n      let currentVariantId = \"\";\n      let currentVariantMediaId = \"\";\n      let currentCheckedOptions = [];\n\n      this.querySelectorAll(\".js-product-card-options\").forEach(\n        item => {\n          if (!item.parentNode.classList.contains(\"hidden\")) {\n            item\n              .querySelectorAll('input[type=\"radio\"]')\n              .forEach(radioInput => {\n                if (radioInput.checked) {\n                  currentCheckedOptions.push(radioInput.value);\n                }\n              });\n          } else {\n            // hidden variant (size or etc) always uses the first option\n            currentCheckedOptions.push(\n              item.querySelector('input[type=\"radio\"]').value\n            );\n          }\n        }\n      );\n\n      this.variantsObj?.forEach(item => {\n        if (\n          item.options.join() === currentCheckedOptions.join() ||\n          (item.options.length === 1 &&\n            currentCheckedOptions.length === 0)\n        ) {\n          currentVariantId = item.id;\n          currentVariantAvailable = item.available;\n          currentVariantMediaId = item.featured_media?.id || null;\n        }\n      });\n\n      return {\n        currentVariantAvailable,\n        currentVariantId,\n        currentCheckedOptions,\n        currentVariantMediaId\n      };\n    }\n\n    findAndDisableAllUnavailableOptionsForSelectedVariant(\n      selectedOption\n    ) {\n      let selectedOptionName = \"\";\n      if (selectedOption) {\n        selectedOptionName = selectedOption.value;\n      } else {\n        selectedOptionName = this.querySelectorAll(\n          \".variant-option-radio-input\"\n        )[0].value;\n      }\n\n      const { currentCheckedOptions } =\n        this.findCurrentVariantFromOptionRadioInputs();\n      const optionIndex =\n        currentCheckedOptions.indexOf(selectedOptionName) + 1;\n\n      this.variantsObj.forEach(item => {\n        if (\n          item[`option${optionIndex}`] === selectedOptionName &&\n          !item.available\n        ) {\n          [1, 2, 3].forEach(i => {\n            if (i !== optionIndex && item[`option${i}`]) {\n              const itemToDisable = this.querySelector(\n                `.variant-option-radio-input[value=\"${\n                  item[`option${i}`]\n                }\"]`\n              );\n              // itemToDisable.setAttribute(\"disabled\", \"\");\n              itemToDisable.closest(\"li\").classList.add(\"disabled\");\n            }\n          });\n        }\n      });\n    }\n\n    getVariantsData() {\n      const variantsObj = JSON.parse(\n        this.querySelector(\"[data-product-variants-json]\")\n          ? this.querySelector(\"[data-product-variants-json]\")\n              .textContent\n          : \"[]\"\n      );\n      if (variantsObj && Object.keys(variantsObj).length === 0)\n        return false;\n      this.variantsObj = variantsObj;\n      return variantsObj;\n    }\n\n    /** Additional event listerner for styling on hovering mutliple nested items */\n    secondImgHoverStates() {\n      const hoverableItem = this.querySelector(\n        \".product-card__actions\"\n      );\n\n      if (!hoverableItem || window.innerWidth < 750) {\n        return;\n      }\n\n      hoverableItem.addEventListener(\"mouseenter\", () =>\n        hoverableItem.classList.add(\"is--hovering\")\n      );\n      hoverableItem.addEventListener(\"mouseleave\", () =>\n        hoverableItem.classList.remove(\"is--hovering\")\n      );\n    }\n\n    imageBorderCalc() {\n      const images = document.querySelectorAll(\".product-swatch__inner-border--enable img\");\n\n      if(images) {\n        images.forEach((image) => {\n          if (image.complete) {\n            processImage(image);\n          } else {\n            image.onload = () => processImage(image);\n          }\n        });\n      }\n\n      function processImage(image) {\n        const canvas = document.createElement(\"canvas\");\n        const ctx = canvas.getContext(\"2d\");\n\n        const width = image.naturalWidth || image.width;\n        const height = image.naturalHeight || image.height;\n\n        canvas.width = width;\n        canvas.height = height;\n\n        ctx.drawImage(image, 0, 0, width, height);\n\n        const centerX = Math.floor(width / 2);\n        const centerY = Math.floor(height / 2);\n\n        const pixelData = ctx.getImageData(centerX, centerY, 1, 1).data;\n        const r = pixelData[0];\n        const g = pixelData[1];\n        const b = pixelData[2];\n\n        const darkenFactor = 0.8;\n        const darkenedR = Math.max(0, Math.floor(r * darkenFactor));\n        const darkenedG = Math.max(0, Math.floor(g * darkenFactor));\n        const darkenedB = Math.max(0, Math.floor(b * darkenFactor));\n        const darkenedColor = `rgb(${darkenedR}, ${darkenedG}, ${darkenedB})`;\n\n        image.style.borderColor = darkenedColor;\n      }\n    }\n\n  }\n  customElements.define(\"product-card\", ProductCard);\n}\n\nasync function updateCartCounters() {\n  const headerCartCounters = document.querySelectorAll('.cart-count-badge');\n  const drawerCartCounters = document.querySelectorAll('.cart-drawer__title-counter');\n\n  // combine both counters and filter out any null elements\n  const cartCounters = [...headerCartCounters, ...drawerCartCounters].filter(counter => counter !== null);\n\n  try {\n    const response = await fetch(`${routes.cart_url}.json`, {\n      method: \"GET\",\n      headers: {\n        \"Content-Type\": \"application/json\"\n      }\n    });\n\n    const state = await response.text();\n    const parsedState = JSON.parse(state);\n\n    if (cartCounters.length > 0) {\n      // update all cart counters with the current item count\n      cartCounters.forEach(counter => {\n        counter.textContent = parsedState.item_count;\n      });\n    }\n\n    // toggle 'hidden' class on header counters based on the item count\n    if (headerCartCounters.length > 0) {\n      headerCartCounters.forEach(counter => {\n        counter.classList.toggle(\"hidden\", parsedState.item_count === 0);\n      });\n    }\n  } catch (error) {\n    console.error(\"Cart counters could not be updated:\", error);\n  }\n}\n\nasync function updateFreeShipping() {\n  const conversionRate = Shopify.currency.rate;\n  const {\n    cart_free_shipping_text: freeShippingTextDefault,\n    cart_free_shipping_text_success: freeShippingTextSuccessDefault,\n    cart_free_shipping_threshold: freeShippingThreshold,\n    money_format: moneyFormat\n  } = window.theme.settings;\n\n  const freeShippingElements = document.querySelectorAll(\"shipping-bar\");\n\n  try {\n    const response = await fetch(\"/cart.js\");\n    const { total_price, item_count } = await response.json();\n\n    const visibility = item_count == 0 ? \"hidden\" : \"visible\";\n    freeShippingElements.forEach(\n      el => (el.style.visibility = visibility)\n    );\n\n    const newShippingThreshold = Math.round(freeShippingThreshold * conversionRate);\n    const newRemainingAmount = newShippingThreshold - total_price;\n\n    freeShippingElements.forEach(freeShipping => {\n      const freeShippingTextElement = freeShipping.querySelector(\".progress-bar__text\");\n      const progressBarInner = freeShipping.querySelector(\"[data-progress-line]\");\n      if (total_price >= newShippingThreshold) {\n        freeShippingTextElement.innerHTML = freeShippingTextSuccessDefault;\n        progressBarInner.style.width = \"100%\";\n      } else {\n        const moneyMatch = freeShippingTextDefault.match(/<span class=\"money\">(.*)<\\/span>/);\n        if (moneyMatch) {\n          const newFreeShippingText = freeShippingTextDefault.replace(\n            moneyMatch[1], `${formatPrice(moneyFormat, newRemainingAmount / 100)}`\n          );\n          freeShippingTextElement.innerHTML = newFreeShippingText;\n        }\n        progressBarInner.style.width = `calc(${(total_price / newShippingThreshold) * 100}% + 2px)`;\n      }\n    });\n  } catch (error) {\n    console.error(\"Error fetching cart data:\", error);\n  }\n}\n\nfunction formatPrice(moneyString, amount) {\n  // convert amount to 00.00 format\n  amount = amount.toFixed(2);\n\n  const money_format = /{{(.*?)}}/;\n\n  let money_format_option = \"\";\n  if (moneyString.match(money_format)) {\n    money_format_option = moneyString.match(money_format)[1];\n  } else {\n    console.error(\"No match found\");\n  }\n\n  let newValue = \"\";\n  switch (money_format_option) {\n    case \"amount\":\n      newValue = moneyString.replace(\n        money_format,\n        Intl.NumberFormat(Shopify.locale, {\n          minimumFractionDigits: 2,\n          maximumFractionDigits: 2\n        }).format(amount)\n      );\n      break;\n    case \"amount_with_comma_separator\":\n      newValue = moneyString.replace(\n        money_format,\n        amount.toString().replace(\".\", \",\")\n      );\n      break;\n    case \"amount_no_decimals\":\n      newValue = moneyString.replace(\n        money_format,\n        Math.round(amount)\n      );\n      break;\n    case \"amount_no_decimals_with_comma_separator\":\n      newValue = moneyString.replace(\n        money_format,\n        Intl.NumberFormat(Shopify.locale)\n          .format(Math.round(amount))\n          .toString()\n          .replace(\".\", \",\")\n      );\n      break;\n    default:\n      newValue = moneyString.replace(money_format, amount);\n      break;\n  }\n\n  return newValue;\n}\n\nclass SwiperComponent extends HTMLElement {\n  constructor() {\n    super();\n    this.swiperOptions = JSON.parse(this.getAttribute(\"data-swiper-options\")) || {};\n    this.swiperInitialized = false; // Prevent multiple initializations\n\n    // this.hiddenClass = \"invisible\";\n    this.section = this.closest(\"section\");\n    this.observer = null;\n  }\n\n  connectedCallback() {\n    if (this.section && this.section.classList.contains(\"shopify-section\")) {\n      // this.section.classList.add(this.hiddenClass);\n\n      // Intersection Observer to check visibility\n      this.observer = new IntersectionObserver((entries, observer) => {\n        entries.forEach((entry) => {\n          if (entry.isIntersecting) {\n            this.init(); // Initialize Swiper when visible\n            observer.disconnect(); // Stop observing after initialization\n          }\n        });\n      });\n\n      this.observer.observe(this.section); // Observe the section\n    }\n\n    if (Shopify.designMode) {\n      window.addEventListener(\"shopify:section:load\", () => this.init());\n      window.addEventListener(\"shopify:section:select\", () => this.init());\n\n      // fallback initialization after delay in design mode\n      setTimeout(() => {\n        if (!this.swiperInitialized) this.init();\n      }, 100);\n    } else {\n      window.addEventListener(\"load\", () => this.init());\n    }\n  }\n\n  init() {\n    if (this.swiperInitialized) return; // prevent multiple initializations\n    this.swiperInitialized = true;\n\n    const swiperOptions = this.swiperOptions;\n\n    const option = {\n      slideshowId: swiperOptions.swiperId || \"\",\n      slideCount: swiperOptions.slideCount || 1,\n      slidesPerView: swiperOptions.slidesPerView || \"auto\",\n      slidesPerViewDesktop:\n        swiperOptions.slidesPerViewDesktop ||\n        swiperOptions.slidesPerView ||\n        4,\n      slidesPerViewTablet:\n        swiperOptions.slidesPerViewTablet ||\n        swiperOptions.slidesPerViewDesktop ||\n        swiperOptions.slidesPerView ||\n        3,\n      spaceBetween: swiperOptions.spaceBetweenMobile || 0,\n      spaceBetweenDesktop:\n        swiperOptions.spaceBetweenDesktop ||\n        swiperOptions.spaceBetween ||\n        0,\n      spaceBetweenTablet:\n        swiperOptions.spaceBetweenTablet ||\n        swiperOptions.spaceBetweenDesktop ||\n        swiperOptions.spaceBetweenMobile ||\n        0,\n      enabled: swiperOptions.enabled ?? true,\n      enabledDesktop:\n        swiperOptions.enabledDesktop ?? swiperOptions.enabled ?? true,\n      enabledTablet:\n        swiperOptions.enabledTablet ??\n        swiperOptions.enabledDesktop ??\n        swiperOptions.enabled ??\n        true,\n      allowTouchMove:\n        swiperOptions.allowTouchMove ??\n        (typeof swiperOptions.slidesPerView === \"number\"\n          ? swiperOptions.slideCount > swiperOptions.slidesPerView\n            ? true\n            : false\n          : true),\n      allowTouchMoveTablet:\n        swiperOptions.allowTouchMoveTablet ??\n        (typeof swiperOptions.slidesPerViewTablet === \"number\"\n          ? swiperOptions.slideCount > swiperOptions.slidesPerViewTablet\n            ? true\n            : false\n          : true),\n      allowTouchMoveDesktop:\n        swiperOptions.allowTouchMoveDesktop ??\n        (typeof swiperOptions.slidesPerViewDesktop === \"number\"\n          ? swiperOptions.slideCount > swiperOptions.slidesPerViewDesktop\n            ? true\n            : false\n          : true)\n    };\n\n    this.swiperOptions = {\n      a11y: false,\n      allowTouchMove: option.allowTouchMove,\n      loop: swiperOptions.loop || false,\n      rewind: swiperOptions.rewind || false,\n      followFinger: swiperOptions.followFinger ?? true,\n      cssMode: swiperOptions.cssMode || false,\n      enabled: option.enabled,\n      watchOverflow: true,\n      observer: true,\n      cache: true,\n      slidesPerView: option.slidesPerView,\n      spaceBetween: option.spaceBetween,\n      breakpoints: {\n        750: {\n          enabled: option.enabledTablet,\n          allowTouchMove: option.allowTouchMoveTablet,\n          slidesPerView: option.slidesPerViewTablet,\n          spaceBetween: option.spaceBetweenTablet\n        },\n        990: {\n          enabled: option.enabledDesktop,\n          allowTouchMove: option.allowTouchMoveDesktop,\n          slidesPerView: option.slidesPerViewDesktop,\n          spaceBetween: option.spaceBetweenDesktop\n        }\n      }\n    };\n\n    if (swiperOptions.navigation) {\n      this.swiperOptions.navigation = {\n        ...swiperOptions.navigation\n      };\n    }\n\n    if (swiperOptions.effect == \"fade\") {\n      this.swiperOptions.effect = \"fade\";\n      this.swiperOptions.fadeEffect = {\n        crossFade: true\n      };\n    }\n\n    if (swiperOptions.pagination == \"custom_bullet\") {\n      this.swiperOptions.pagination = {\n        el: swiperOptions.paginationElement,\n        clickable: true,\n        renderBullet: function (i, className) {\n          return `\n            <button class=\"${className}\">\n              <span></span>\n            </button>\n          `;\n        }\n      };\n    } else {\n      this.swiperOptions.pagination = {\n        el: `.swiper-pagination--${swiperOptions.swiperId}`,\n        clickable: true\n      };\n    }\n\n    if (swiperOptions.autoplay) {\n      this.swiperOptions.autoplay = {\n        ...swiperOptions.autoplay\n      };\n\n      if (swiperOptions.autoplayProgress) {\n        const progressCircle = this.querySelector(\n          `.autoplay-progress--${swiperOptions.swiperId} svg`\n        );\n        const progressContent = this.querySelector(\n          `.autoplay-progress--${swiperOptions.swiperId} span`\n        );\n\n        this.swiperOptions.on = {\n          autoplayTimeLeft(s, time, progress) {\n            progressCircle.style.setProperty(\"--progress\", 1 - progress);\n            progressContent.textContent = `${Math.ceil(time / 1000)}`;\n          },\n        };\n      }\n    }\n\n    this.swiper = new Swiper(this, {\n      ...this.swiperOptions\n      // on: {\n      //   init: () => {\n      //     setTimeout(() => {\n      //       if (this.section) {\n      //         this.section.classList.remove(this.hiddenClass);\n      //       }\n      //     }, 100);\n      //   }\n      // }\n    });\n  }\n}\ncustomElements.define(\"swiper-component\", SwiperComponent);\ncustomElements.define(\"swiper-component\", SwiperComponent);\n\nfunction initProductCardSliders() {\n  const sliders = document.querySelectorAll(\"[data-product-card-slider]\");\n\n  sliders.forEach(function (slider) {\n    if (slider.dataset.sliderInitialized === \"true\") return;\n    slider.dataset.sliderInitialized = \"true\";\n\n    const slides = slider.querySelectorAll(\"[data-slide]\");\n    const prevBtn = slider.querySelector(\"[data-prev]\");\n    const nextBtn = slider.querySelector(\"[data-next]\");\n\n    if (!slides.length || slides.length < 2) return;\n\n    let currentIndex = 0;\n\n    function showSlide(index) {\n      slides.forEach(function (slide, i) {\n        slide.classList.toggle(\"is-active\", i === index);\n      });\n    }\n\n    prevBtn?.addEventListener(\"click\", function (e) {\n      e.preventDefault();\n      e.stopPropagation();\n      currentIndex = (currentIndex - 1 + slides.length) % slides.length;\n      showSlide(currentIndex);\n    });\n\n    nextBtn?.addEventListener(\"click\", function (e) {\n      e.preventDefault();\n      e.stopPropagation();\n      currentIndex = (currentIndex + 1) % slides.length;\n      showSlide(currentIndex);\n    });\n  });\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", initProductCardSliders);\ndocument.addEventListener(\"shopify:section:load\", initProductCardSliders);"],
  "mappings": "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",
  "names": ["calcSectionHeights", "updateVisibleHeightsOfAnnouncementBars", "section", "setCustomProperty", "observer", "isDesktop", "toggleHeaderTransparency", "animateDropdownHeight", "staggerFadeInDropdownText", "closeAllDropdowns"]
}
