{
  "version": 3,
  "sources": ["/cdn/shop/t/3/assets/storeforge-modules.js?sf=7"],
  "sourcesContent": ["/* storeforge-modules:v7 */\n(() => {\n  const SALES_POPUP_SELECTOR = [\n    '.customer-who-purchased',\n    '.product-notification',\n    '.customer-purchased',\n    '.someone-purchased',\n    '[class*=\"someone-purchased\"]',\n    '[class*=\"someone_bought\"]',\n    '[class*=\"someone-bought\"]',\n    '[class*=\"recently-purchased\"]',\n    '[class*=\"recent-purchase\"]',\n    '[class*=\"purchase-notification\"]',\n    '[class*=\"purchase-popup\"]',\n    '[class*=\"sales-notification\"]',\n    '[class*=\"sale-notification\"]'\n  ].join(',');\n\n  const removeSalesPopups = (root = document) => {\n    if (root instanceof Element && root.matches(SALES_POPUP_SELECTOR)) {\n      root.remove();\n      return;\n    }\n    root.querySelectorAll?.(SALES_POPUP_SELECTOR).forEach((element) => element.remove());\n  };\n\n  const NATIVE_PROMOTION_SELECTOR = [\n    '.announcement-bar',\n    '[data-announcement-bar]',\n    '[class*=\"announcement-bar\"]',\n    '[id*=\"announcement-bar\"]',\n    '.promo-bar',\n    '[data-promo-bar]',\n    '[class*=\"promo-bar\"]',\n    '[id*=\"promo-bar\"]',\n    '.promotion-bar',\n    '[data-promotion-bar]',\n    '[class*=\"promotion-bar\"]',\n    '[id*=\"promotion-bar\"]',\n    '.marketing-bar',\n    '[class*=\"marketing-bar\"]',\n    '[id*=\"marketing-bar\"]',\n    '[class*=\"marketing-banner\"]',\n    '[id*=\"marketing-banner\"]',\n    '[class*=\"promo_banner\"]',\n    '[id*=\"promo_banner\"]'\n  ].join(',');\n  const NATIVE_PROMOTION_TEXT = /long weekend sale|populate this marketing banner|advertise a special promotion|up to \\d+% off/i;\n  const PROMOTION_TEXT_CONTAINER_SELECTOR = [\n    '[class*=\"topbar\"]',\n    '[class*=\"top-bar\"]',\n    '[id*=\"topbar\"]',\n    '[id*=\"top-bar\"]',\n    '[role=\"banner\"]',\n    '[role=\"status\"]'\n  ].join(',');\n\n  const removeNativePromotionBars = (root = document) => {\n    const removeCandidate = (element) => {\n      if (element.closest?.('[data-storeforge-announcement]')) return;\n      element.remove();\n    };\n    if (root instanceof Element && root.matches(NATIVE_PROMOTION_SELECTOR)) {\n      removeCandidate(root);\n      return;\n    }\n    root.querySelectorAll?.(NATIVE_PROMOTION_SELECTOR).forEach(removeCandidate);\n    root.querySelectorAll?.(PROMOTION_TEXT_CONTAINER_SELECTOR).forEach((element) => {\n      const label = (element.textContent || '').replace(/\\s+/g, ' ').trim();\n      if (!NATIVE_PROMOTION_TEXT.test(label)) return;\n      removeCandidate(element.closest('.shopify-section') || element);\n    });\n  };\n\n  const INVALID_NAVIGATION_LABEL = /number of speeds|frame material|assembled product dimensions|product dimensions|product code|(?:^|\\s)(?:color|size|brand)\\s*:/i;\n  const sanitizeHeaderNavigation = () => {\n    document.querySelectorAll('header nav a,header [class*=\"navigation\"] a,header [class*=\"menu\"] a').forEach((link) => {\n      const label = (link.textContent || '').replace(/\\s+/g, ' ').trim();\n      if (label && label.length <= 52 && !INVALID_NAVIGATION_LABEL.test(label)) return;\n      const item = link.closest('li');\n      if (item && item.querySelectorAll('a').length === 1) item.remove();\n      else link.remove();\n    });\n  };\n\n  const MOBILE_UTILITY_SELECTOR = [\n    '.header-contact',\n    '.header__contact',\n    '.header-top',\n    '.header_top',\n    '.top-header',\n    '.top_header',\n    '.header__top',\n    '[class*=\"header-contact\"]',\n    '[class*=\"header_contact\"]'\n  ].join(',');\n  const MOBILE_PRIMARY_ROW_SELECTOR = [\n    '#AccessibleNav',\n    '.site-header__wrapper',\n    '.site-header__inner',\n    '.header__inner',\n    '.header-main',\n    '.main-header',\n    '.header-main-area'\n  ].join(',');\n\n  const normalizeMobileHeader = () => {\n    document.querySelectorAll(MOBILE_UTILITY_SELECTOR).forEach((element) => {\n      if (element.closest('[data-storeforge-announcement]')) return;\n      if (element.querySelector('nav,[class*=\"logo\"],.site-logo,.header__heading')) return;\n      const label = (element.textContent || '').replace(/\\s+/g, ' ').trim();\n      if (!label || /@|\\b(?:USD|CAD|GBP|EUR|AUD)\\b|\\+?\\d[\\d\\s().-]{6,}/i.test(label)) {\n        element.setAttribute('data-storeforge-mobile-utility', '');\n      }\n    });\n    document.querySelectorAll(MOBILE_PRIMARY_ROW_SELECTOR).forEach((element) => {\n      if (!element.querySelector(\n        '[class*=\"logo\"],.site-logo,.header__heading,a[href=\"/\"],a[href^=\"/?\"]'\n      )) return;\n      if (!element.querySelector(\n        '[class*=\"cart\"],[class*=\"search\"],[class*=\"menu\"],button[aria-controls*=\"menu\" i]'\n      )) return;\n      element.setAttribute('data-storeforge-mobile-primary-row', '');\n    });\n  };\n\n  const interactiveLayerIsOpen = () => Boolean(document.querySelector(\n    'dialog[open],[aria-modal=\"true\"]:not([hidden]),.drawer--is-open,.drawer.active,.mobile-nav-container.active,.mobile-nav-container.open,.dT_MiniCartModel.active'\n  ));\n\n  const releaseStalePageScrollLock = () => {\n    if (!document.body || interactiveLayerIsOpen()) return;\n    const unlock = (element) => {\n      const inlineOverflow = `${element.style.overflow} ${element.style.overflowY}`;\n      const viewportHeight = /^(?:100vh|100dvh|100svh)$/i.test(element.style.height);\n      if (!/hidden|clip/i.test(inlineOverflow) && !viewportHeight) return;\n      element.style.removeProperty('overflow');\n      element.style.removeProperty('overflow-y');\n      element.style.removeProperty('height');\n    };\n    unlock(document.documentElement);\n    unlock(document.body);\n  };\n\n  const cleanThemeShell = () => {\n    document.documentElement.dataset.storeforgeModules = \"ready\";\n    removeSalesPopups();\n    removeNativePromotionBars();\n    sanitizeHeaderNavigation();\n    normalizeMobileHeader();\n    document.querySelectorAll(\n      '#dt-sc-newsletter-container,.dt-sc-newsletter-container,.dt-sc-newsletter-modal'\n    ).forEach((element) => element.remove());\n\n    const footerPhone = document.querySelector(\n      '[data-storeforge-footer-info] a[href^=\"tel:\"]'\n    );\n    const footerEmail = document.querySelector(\n      '[data-storeforge-footer-info] a[href^=\"mailto:\"]'\n    );\n    document.querySelectorAll('.header-contact a[href^=\"tel:\"]').forEach((link) => {\n      if (!footerPhone || !/0000|123 456789|555[- ]?0100/i.test(link.textContent || '')) return;\n      link.textContent = footerPhone.textContent;\n      link.setAttribute('href', footerPhone.getAttribute('href') || '');\n    });\n    document.querySelectorAll('.header-contact a[href^=\"mailto:\"]').forEach((link) => {\n      if (!footerEmail || !/example\\.com/i.test(link.textContent || '')) return;\n      link.textContent = footerEmail.textContent;\n      link.setAttribute('href', footerEmail.getAttribute('href') || '');\n    });\n    document.querySelectorAll('.topbar-right a[href=\"#\"]').forEach((link) => {\n      const item = link.closest('li');\n      if (/store location|track your order/i.test(link.textContent || '')) item?.remove();\n    });\n    document.querySelectorAll('[data-storeforge-product-page]').forEach((root) => {\n      if (root.dataset.storeforgeProductReady === 'true') return;\n      root.dataset.storeforgeProductReady = 'true';\n      const select = root.querySelector('[data-storeforge-variant-select]');\n      const price = root.querySelector('[data-storeforge-product-price]');\n      const compare = root.querySelector('[data-storeforge-product-compare-price]');\n      const button = root.querySelector('[data-storeforge-add-to-cart]');\n      const buyNowButton = root.querySelector('[data-storeforge-buy-now]');\n      const productForm = root.querySelector('.storeforge-product-page__form');\n      const quantityInput = productForm?.querySelector('[name=\"quantity\"]');\n      const variantInput = productForm?.querySelector('[name=\"id\"]');\n      const syncVariant = () => {\n        const option = select?.selectedOptions?.[0];\n        if (option && price) price.textContent = option.dataset.price || '';\n        if (compare) {\n          compare.textContent = option?.dataset.comparePrice || '';\n          compare.hidden = !option?.dataset.comparePrice;\n        }\n        const available = option ? option.dataset.available === 'true' : !button?.disabled;\n        if (button) {\n          button.disabled = !available;\n          button.textContent = available ? 'Add to cart' : 'Sold out';\n        }\n        if (buyNowButton) {\n          buyNowButton.disabled = !available;\n          buyNowButton.textContent = available ? 'Buy Now' : 'Sold out';\n        }\n      };\n      select?.addEventListener('change', syncVariant);\n      buyNowButton?.addEventListener('click', () => {\n        const variantId = select?.value || variantInput?.value;\n        const quantity = Math.max(1, Number.parseInt(quantityInput?.value || '1', 10) || 1);\n        if (!variantId || buyNowButton.disabled) return;\n        buyNowButton.disabled = true;\n        buyNowButton.textContent = 'Opening checkout...';\n        const shopRoot = window.Shopify?.routes?.root || '/';\n        window.location.assign(shopRoot + 'cart/' + encodeURIComponent(variantId) + ':' + quantity);\n      });\n      syncVariant();\n      const mainImage = root.querySelector('[data-storeforge-main-image]');\n      root.querySelectorAll('[data-storeforge-product-image]').forEach((thumbnail) => {\n        thumbnail.addEventListener('click', () => {\n          if (!mainImage || !thumbnail.dataset.imageUrl) return;\n          mainImage.src = thumbnail.dataset.imageUrl;\n          mainImage.alt = thumbnail.dataset.imageAlt || '';\n          root.querySelectorAll('[data-storeforge-product-image]').forEach((item) => {\n            item.setAttribute('aria-current', item === thumbnail ? 'true' : 'false');\n          });\n        });\n      });\n    });\n    releaseStalePageScrollLock();\n  };\n\n  const finishPageBootstrap = () => {\n    releaseStalePageScrollLock();\n    window.setTimeout(releaseStalePageScrollLock, 400);\n    window.setTimeout(releaseStalePageScrollLock, 1400);\n  };\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', cleanThemeShell, { once: true });\n  } else {\n    cleanThemeShell();\n  }\n  if (document.readyState === 'complete') {\n    finishPageBootstrap();\n  } else {\n    window.addEventListener('load', finishPageBootstrap, { once: true });\n  }\n  new MutationObserver((records) => {\n    records.forEach((record) => {\n      record.addedNodes.forEach((node) => {\n        if (!(node instanceof Element)) return;\n        removeSalesPopups(node);\n        removeNativePromotionBars(node);\n        normalizeMobileHeader();\n      });\n    });\n  }).observe(document.documentElement, { childList: true, subtree: true });\n})();\n"],
  "mappings": "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",
  "names": []
}
