{
  "version": 3,
  "sources": ["/cdn/shop/t/6/assets/theme.js?cart_build=20260821c"],
  "sourcesContent": ["document.documentElement.classList.remove('no-js');\ndocument.documentElement.classList.add('js');\n\nconst header = document.querySelector('[data-site-header]');\nconst menu = document.querySelector('[data-primary-nav]');\nconst menuToggle = document.querySelector('[data-menu-toggle]');\nconst menuClose = document.querySelector('[data-menu-close]');\nconst menuBackdrop = document.querySelector('[data-menu-backdrop]');\nconst mobileMenuMedia = window.matchMedia('(max-width: 1024px)');\nconst search = document.querySelector('[data-header-search]');\nconst searchToggle = document.querySelector('[data-search-toggle]');\nconst searchInput = document.querySelector('[data-search-input]');\nconst searchResults = document.querySelector('[data-search-results]');\nconst searchForm = document.querySelector('[data-search-form]');\nconst searchPrompt = searchResults?.innerHTML || '';\nlet searchTimer;\nlet searchController;\nlet menuLastTrigger = null;\n\nfunction syncMenuAccessibility() {\n  if (!menu || !menuToggle) return;\n  const isMobile = mobileMenuMedia.matches;\n  const isOpen = isMobile && menu.classList.contains('is-open');\n\n  menuToggle.setAttribute('aria-expanded', String(isOpen));\n  menuBackdrop?.classList.toggle('is-open', isOpen);\n  document.body.classList.toggle('menu-open', isOpen);\n\n  if (isMobile) {\n    menu.setAttribute('aria-hidden', String(!isOpen));\n    if (isOpen) menu.removeAttribute('inert');\n    else menu.setAttribute('inert', '');\n  } else {\n    menu.classList.remove('is-open');\n    menu.removeAttribute('aria-hidden');\n    menu.removeAttribute('inert');\n  }\n}\n\nfunction setMenu(open) {\n  if (!menu || !menuToggle) return;\n  const wasOpen = menu.classList.contains('is-open');\n  const shouldOpen = mobileMenuMedia.matches && open;\n\n  if (shouldOpen && !wasOpen) menuLastTrigger = document.activeElement;\n  menu.classList.toggle('is-open', shouldOpen);\n  syncMenuAccessibility();\n\n  if (shouldOpen) {\n    window.requestAnimationFrame(() => menuClose?.focus());\n  } else if (wasOpen) {\n    menuLastTrigger?.focus?.();\n  }\n}\n\nfunction setSearch(open) {\n  if (!search || !searchToggle) return;\n  search.hidden = !open;\n  searchToggle.setAttribute('aria-expanded', String(open));\n  document.body.classList.toggle('search-open', open);\n  if (open) {\n    setMenu(false);\n    window.requestAnimationFrame(() => searchInput?.focus());\n  } else {\n    searchInput?.setAttribute('aria-expanded', 'false');\n    searchController?.abort();\n  }\n}\n\nfunction escapeSearchMarkup(value) {\n  return String(value || '').replace(/[&<>'\"]/g, (character) => ({\n    '&': '&amp;', '<': '&lt;', '>': '&gt;', \"'\": '&#39;', '\"': '&quot;'\n  })[character]);\n}\n\nfunction searchImage(item) {\n  const image = item.featured_image;\n  const source = typeof image === 'string' ? image : image?.url;\n  if (!source) return '<span class=\"header-search-card__placeholder\" aria-hidden=\"true\"></span>';\n  const separator = source.includes('?') ? '&' : '?';\n  return `<img src=\"${escapeSearchMarkup(source)}${separator}width=240\" alt=\"\" width=\"120\" height=\"150\" loading=\"lazy\">`;\n}\n\nfunction renderSearchResults(data, query) {\n  if (!searchResults || !searchInput) return;\n  const resources = data?.resources?.results || {};\n  const products = (resources.products || []).slice(0, 6);\n  const collections = (resources.collections || []).slice(0, 3);\n\n  if (!products.length && !collections.length) {\n    searchResults.innerHTML = `<p class=\"header-search__empty\">No results for \u201C${escapeSearchMarkup(query)}\u201D. Try pendant, wall sconce, or table lamp.</p>`;\n    searchInput.setAttribute('aria-expanded', 'true');\n    return;\n  }\n\n  const collectionMarkup = collections.length ? `\n    <div class=\"header-search__collections\">\n      <p class=\"header-search__label\">COLLECTIONS</p>\n      <div>${collections.map((collection) => `<a href=\"${escapeSearchMarkup(collection.url)}\">${escapeSearchMarkup(collection.title)}</a>`).join('')}</div>\n    </div>` : '';\n\n  const productMarkup = products.length ? `\n    <div class=\"header-search__products\">\n      <p class=\"header-search__label\">PRODUCTS</p>\n      <div class=\"header-search__product-grid\">\n        ${products.map((product) => `\n          <a class=\"header-search-card\" href=\"${escapeSearchMarkup(product.url)}\">\n            <span class=\"header-search-card__media\">${searchImage(product)}</span>\n            <span class=\"header-search-card__copy\">\n              <strong>${escapeSearchMarkup(product.title)}</strong>\n              ${product.price ? `<small>${escapeSearchMarkup(product.price)}</small>` : ''}\n            </span>\n          </a>`).join('')}\n      </div>\n    </div>` : '';\n\n  const root = window.Shopify?.routes?.root || '/';\n  searchResults.innerHTML = `${collectionMarkup}${productMarkup}<a class=\"header-search__view-all\" href=\"${root}search?q=${encodeURIComponent(query)}&type=product\">VIEW ALL RESULTS <span aria-hidden=\"true\">\u2192</span></a>`;\n  searchInput.setAttribute('aria-expanded', 'true');\n}\n\nasync function updateSearch(query) {\n  if (!searchResults || !searchInput) return;\n  if (query.length < 2) {\n    searchController?.abort();\n    searchResults.innerHTML = searchPrompt;\n    searchInput.setAttribute('aria-expanded', 'false');\n    return;\n  }\n\n  searchController?.abort();\n  searchController = new AbortController();\n  searchResults.innerHTML = '<p class=\"header-search__loading\">Searching\u2026</p>';\n\n  const root = window.Shopify?.routes?.root || '/';\n  const endpoint = `${root}search/suggest.json?q=${encodeURIComponent(query)}&resources[type]=product,collection&resources[limit]=6&resources[options][unavailable_products]=show`;\n\n  try {\n    const response = await fetch(endpoint, { signal: searchController.signal, headers: { Accept: 'application/json' } });\n    if (!response.ok) throw new Error('Search unavailable');\n    renderSearchResults(await response.json(), query);\n  } catch (error) {\n    if (error.name === 'AbortError') return;\n    searchResults.innerHTML = '<p class=\"header-search__empty\">Search is temporarily unavailable. Press Enter to view full results.</p>';\n  }\n}\n\nmenuToggle?.addEventListener('click', () => setMenu(true));\nmenuClose?.addEventListener('click', () => setMenu(false));\nmenuBackdrop?.addEventListener('click', () => setMenu(false));\nmenu?.querySelectorAll('a').forEach((link) => link.addEventListener('click', () => setMenu(false)));\nmobileMenuMedia.addEventListener?.('change', () => {\n  menu?.classList.remove('is-open');\n  syncMenuAccessibility();\n});\nsyncMenuAccessibility();\n\nsearchToggle?.addEventListener('click', () => setSearch(true));\nsearch?.querySelectorAll('[data-search-close]').forEach((button) => button.addEventListener('click', () => setSearch(false)));\nsearchResults?.addEventListener('click', (event) => {\n  if (event.target.closest('a')) setSearch(false);\n});\nsearchInput?.addEventListener('input', () => {\n  window.clearTimeout(searchTimer);\n  const query = searchInput.value.trim();\n  searchTimer = window.setTimeout(() => updateSearch(query), 180);\n});\nsearchForm?.addEventListener('submit', (event) => {\n  if (!searchInput?.value.trim()) {\n    event.preventDefault();\n    searchInput?.focus();\n  }\n});\n\ndocument.addEventListener('keydown', (event) => {\n  if (event.key === 'Escape' && !search?.hidden) {\n    setSearch(false);\n    searchToggle?.focus();\n    return;\n  }\n  if (event.key === 'Escape') setMenu(false);\n});\n\nif (header?.classList.contains('site-header--overlay')) {\n  const updateHeader = () => header.classList.toggle('is-scrolled', window.scrollY > 160);\n  updateHeader();\n  window.addEventListener('scroll', updateHeader, { passive: true });\n}\n\ndocument.querySelectorAll('[data-product-gallery]').forEach((gallery) => {\n  const track = gallery.querySelector('[data-gallery-track]');\n  const slides = [...gallery.querySelectorAll('[data-gallery-slide]')];\n  const lightboxSlides = [...gallery.querySelectorAll('[data-lightbox-slide]')];\n  const thumbs = [...gallery.querySelectorAll('[data-gallery-thumb]')];\n  const previous = gallery.querySelector('[data-gallery-previous]');\n  const next = gallery.querySelector('[data-gallery-next]');\n  const current = gallery.querySelector('[data-gallery-current]');\n  const mobileMedia = window.matchMedia('(max-width: 600px)');\n  const hoverMedia = window.matchMedia('(hover: hover) and (pointer: fine)');\n  const zoomButton = gallery.querySelector('[data-gallery-zoom]');\n  const lightbox = gallery.querySelector('[data-product-lightbox]');\n  const lightboxImage = gallery.querySelector('[data-product-lightbox-image]');\n  const lightboxClose = gallery.querySelector('[data-product-lightbox-close]');\n  const lightboxPrevious = gallery.querySelector('[data-product-lightbox-previous]');\n  const lightboxNext = gallery.querySelector('[data-product-lightbox-next]');\n  const lightboxCurrent = gallery.querySelector('[data-product-lightbox-current]');\n  let activeIndex = 0;\n  let lightboxIndex = 0;\n  let scrollTimer;\n  let lightboxTrigger = null;\n  let lightboxTouchStartX = 0;\n  let lightboxTouchStartY = 0;\n  let lightboxSwipeHandled = false;\n  const warmedGalleryImages = new Set();\n  let warmGalleryTimer;\n\n  if (!track || !slides.length) return;\n\n  const resetHoverZoom = () => {\n    slides.forEach((slide) => {\n      slide.classList.remove('is-hover-zoomed');\n      slide.style.removeProperty('--zoom-origin-x');\n      slide.style.removeProperty('--zoom-origin-y');\n    });\n  };\n\n  const updateHoverOrigin = (slide, event) => {\n    if (!hoverMedia.matches || slide !== slides[activeIndex]) return;\n    const rect = slide.getBoundingClientRect();\n    const originX = ((event.clientX - rect.left) / rect.width) * 100;\n    const originY = ((event.clientY - rect.top) / rect.height) * 100;\n    slide.style.setProperty('--zoom-origin-x', `${Math.max(8, Math.min(92, originX))}%`);\n    slide.style.setProperty('--zoom-origin-y', `${Math.max(8, Math.min(92, originY))}%`);\n  };\n\n  const renderLightbox = (index) => {\n    if (!lightboxSlides.length) return;\n    const nextIndex = (index + lightboxSlides.length) % lightboxSlides.length;\n    const slide = lightboxSlides[nextIndex];\n    if (!lightboxImage || !slide?.dataset.galleryZoomSrc) return;\n    lightboxIndex = nextIndex;\n    activeIndex = slides.indexOf(slide);\n    lightboxImage.src = slide.dataset.galleryZoomSrc;\n    lightboxImage.alt = slide.dataset.galleryZoomAlt || '';\n    lightboxImage.dataset.lightboxView = slide.dataset.lightboxView || 'full';\n    if (lightboxCurrent) lightboxCurrent.textContent = String(lightboxIndex + 1).padStart(2, '0');\n    thumbs.forEach((thumb, thumbIndex) => {\n      const isActive = thumbIndex === activeIndex;\n      thumb.classList.toggle('is-active', isActive);\n      thumb.setAttribute('aria-current', String(isActive));\n    });\n  };\n\n  const openLightbox = (trigger = slides[activeIndex]) => {\n    const slide = slides[activeIndex];\n    if (!lightbox || !lightboxImage || !slide?.dataset.galleryZoomSrc) return;\n    lightboxTrigger = trigger;\n    const selectedLightboxIndex = lightboxSlides.indexOf(slide);\n    renderLightbox(selectedLightboxIndex >= 0 ? selectedLightboxIndex : 0);\n    lightbox.showModal();\n    document.body.classList.add('product-lightbox-open');\n    lightboxClose?.focus();\n  };\n\n  // Keep one upcoming image ready without competing with the first product\n  // image. This removes the common pause on the first next/thumbnail action\n  // while avoiding eager downloads of an entire product gallery.\n  const warmGalleryImage = (index) => {\n    const nextIndex = (Number(index) + slides.length) % slides.length;\n    if (warmedGalleryImages.has(nextIndex)) return;\n    const image = slides[nextIndex]?.querySelector('img');\n    if (!image || image.complete || !image.src) return;\n\n    warmedGalleryImages.add(nextIndex);\n    const preload = new Image();\n    preload.decoding = 'async';\n    preload.fetchPriority = 'low';\n    if (image.srcset) {\n      preload.srcset = image.srcset;\n      preload.sizes = image.sizes || '100vw';\n    }\n    preload.src = image.currentSrc || image.src;\n  };\n\n  const scheduleGalleryWarmup = () => {\n    if ('cancelIdleCallback' in window) window.cancelIdleCallback(warmGalleryTimer);\n    else window.clearTimeout(warmGalleryTimer);\n    const warmNext = () => {\n      // Browsers often keep the immediate next slide in their lazy-load\n      // threshold already. Warm the following slide too, so a customer can\n      // move through a gallery without the second interaction waiting on a\n      // network request.\n      warmGalleryImage(activeIndex + 1);\n      warmGalleryImage(activeIndex + 2);\n    };\n    if ('requestIdleCallback' in window) {\n      warmGalleryTimer = window.requestIdleCallback(warmNext, { timeout: 1200 });\n    } else {\n      warmGalleryTimer = window.setTimeout(warmNext, 650);\n    }\n  };\n\n  const closeLightbox = () => {\n    if (lightbox?.open) lightbox.close();\n  };\n\n  const updateGallery = (index, moveTrack = false) => {\n    resetHoverZoom();\n    activeIndex = (Number(index) + slides.length) % slides.length;\n    thumbs.forEach((thumb, thumbIndex) => {\n      const isActive = thumbIndex === activeIndex;\n      thumb.classList.toggle('is-active', isActive);\n      thumb.setAttribute('aria-current', String(isActive));\n      if (isActive) thumb.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' });\n    });\n    if (current) current.textContent = String(activeIndex + 1).padStart(2, '0');\n    if (previous) previous.disabled = slides.length < 2;\n    if (next) next.disabled = slides.length < 2;\n    if (mobileMedia.matches) {\n      if (moveTrack) track.scrollTo({ left: activeIndex * track.clientWidth, behavior: 'smooth' });\n    } else {\n      slides.forEach((slide) => { slide.style.transform = `translateX(-${activeIndex * track.clientWidth}px)`; });\n    }\n    scheduleGalleryWarmup();\n  };\n\n  gallery.addEventListener('product:variant-media-change', (event) => {\n    const variantId = String(event.detail?.variantId || '');\n    if (!variantId) return;\n    const index = slides.findIndex((slide) => (\n      slide.dataset.galleryVariantIds?.split(',').includes(variantId)\n    ));\n    const nextIndex = index >= 0 ? index : 0;\n    if (nextIndex !== activeIndex) updateGallery(nextIndex, true);\n  });\n\n  thumbs.forEach((thumb) => {\n    thumb.addEventListener('click', () => updateGallery(Number(thumb.dataset.galleryIndex), true));\n  });\n  previous?.addEventListener('click', () => updateGallery(activeIndex - 1, true));\n  next?.addEventListener('click', () => updateGallery(activeIndex + 1, true));\n  zoomButton?.addEventListener('click', () => openLightbox(zoomButton));\n  slides.forEach((slide) => {\n    slide.setAttribute('role', 'button');\n    slide.setAttribute('tabindex', '0');\n    slide.addEventListener('pointerenter', (event) => {\n      if (!hoverMedia.matches || slide !== slides[activeIndex]) return;\n      updateHoverOrigin(slide, event);\n      slide.classList.add('is-hover-zoomed');\n    });\n    slide.addEventListener('pointermove', (event) => updateHoverOrigin(slide, event));\n    slide.addEventListener('pointerleave', () => {\n      slide.classList.remove('is-hover-zoomed');\n      slide.style.removeProperty('--zoom-origin-x');\n      slide.style.removeProperty('--zoom-origin-y');\n    });\n    slide.addEventListener('click', () => openLightbox(slide));\n    slide.addEventListener('keydown', (event) => {\n      if (event.key === 'Enter' || event.key === ' ') {\n        event.preventDefault();\n        openLightbox(slide);\n      }\n    });\n  });\n  track.addEventListener('keydown', (event) => {\n    if (event.key === 'ArrowLeft') {\n      event.preventDefault();\n      updateGallery(activeIndex - 1, true);\n    }\n    if (event.key === 'ArrowRight') {\n      event.preventDefault();\n      updateGallery(activeIndex + 1, true);\n    }\n  });\n  track.addEventListener('scroll', () => {\n    if (!mobileMedia.matches) return;\n    window.clearTimeout(scrollTimer);\n    scrollTimer = window.setTimeout(() => {\n      const width = track.clientWidth || 1;\n      updateGallery(Math.round(track.scrollLeft / width));\n    }, 80);\n  }, { passive: true });\n\n  mobileMedia.addEventListener?.('change', () => {\n    resetHoverZoom();\n    slides.forEach((slide) => { slide.style.transform = mobileMedia.matches ? '' : `translateX(-${activeIndex * track.clientWidth}px)`; });\n    if (mobileMedia.matches) track.scrollTo({ left: activeIndex * track.clientWidth });\n  });\n\n  lightboxClose?.addEventListener('click', closeLightbox);\n  lightboxPrevious?.addEventListener('click', () => renderLightbox(lightboxIndex - 1));\n  lightboxNext?.addEventListener('click', () => renderLightbox(lightboxIndex + 1));\n  lightboxImage?.addEventListener('click', () => {\n    if (lightboxSwipeHandled) {\n      lightboxSwipeHandled = false;\n      return;\n    }\n    closeLightbox();\n  });\n  lightboxImage?.addEventListener('touchstart', (event) => {\n    const touch = event.touches[0];\n    lightboxTouchStartX = touch?.clientX || 0;\n    lightboxTouchStartY = touch?.clientY || 0;\n    lightboxSwipeHandled = false;\n  }, { passive: true });\n  lightboxImage?.addEventListener('touchend', (event) => {\n    const touch = event.changedTouches[0];\n    if (!touch) return;\n    const deltaX = touch.clientX - lightboxTouchStartX;\n    const deltaY = touch.clientY - lightboxTouchStartY;\n    if (Math.abs(deltaX) > 48 && Math.abs(deltaX) > Math.abs(deltaY)) {\n      lightboxSwipeHandled = true;\n      renderLightbox(lightboxIndex + (deltaX < 0 ? 1 : -1));\n    }\n  }, { passive: true });\n  lightbox?.addEventListener('click', (event) => {\n    if (event.target === lightbox) closeLightbox();\n  });\n  lightbox?.addEventListener('keydown', (event) => {\n    if (event.key === 'ArrowLeft') {\n      event.preventDefault();\n      renderLightbox(lightboxIndex - 1);\n    }\n    if (event.key === 'ArrowRight') {\n      event.preventDefault();\n      renderLightbox(lightboxIndex + 1);\n    }\n  });\n  lightbox?.addEventListener('close', () => {\n    document.body.classList.remove('product-lightbox-open');\n    lightboxImage?.removeAttribute('src');\n    lightboxImage?.removeAttribute('data-lightbox-view');\n    updateGallery(activeIndex, true);\n    lightboxTrigger?.focus?.();\n    lightboxTrigger = null;\n  });\n\n  updateGallery(0);\n});\n\ndocument.querySelectorAll('.product-story .product-description').forEach((description) => {\n  const children = [...description.children];\n  const detailsIndex = children.findIndex((element) => element.matches('h2, h3'));\n  if (detailsIndex < 1) return;\n\n  const story = description.closest('.product-story');\n  const storyHeading = story?.querySelector('.product-story__heading');\n  const introduction = document.createElement('div');\n  const specifications = document.createElement('div');\n  introduction.className = 'product-description__introduction';\n  specifications.className = 'product-description__specifications';\n\n  if (storyHeading) introduction.append(storyHeading);\n  children.slice(0, detailsIndex).forEach((element) => introduction.append(element));\n  children.slice(detailsIndex).forEach((element) => specifications.append(element));\n  description.append(introduction, specifications);\n  description.classList.add('product-description--two-column');\n  story?.classList.add('product-story--two-column');\n});\n\nconst recentlyViewedSection = document.querySelector('[data-recently-viewed]');\nconst recentlyViewedGrid = document.querySelector('[data-recently-viewed-grid]');\nconst recentProductData = document.querySelector('[data-recent-product]');\nconst catalogueProductHandles = new Set([\n  'halette-wall-sconce',\n  'marlow-antique-brass-wall-sconce'\n]);\n\nif (recentlyViewedSection && recentlyViewedGrid && recentProductData) {\n  try {\n    const cookieName = 'arunius_recent_products';\n    const currentProduct = JSON.parse(recentProductData.textContent);\n    const currentHandle = currentProduct.url.split('/').filter(Boolean).pop();\n    const cookieValue = document.cookie\n      .split('; ')\n      .find((item) => item.startsWith(`${cookieName}=`))\n      ?.split('=')\n      .slice(1)\n      .join('=');\n    const storedHandles = cookieValue ? JSON.parse(decodeURIComponent(cookieValue)) : [];\n    const previousHandles = storedHandles.filter((handle) => handle && handle !== currentHandle).slice(0, 4);\n\n    const appendRecentCard = (item) => {\n      const card = document.createElement('article');\n      const media = document.createElement('a');\n      const image = document.createElement('img');\n      const information = document.createElement('div');\n      const title = document.createElement('h3');\n      const titleLink = document.createElement('a');\n      const price = document.createElement('p');\n\n      card.className = 'product-card';\n      media.className = `product-card__media${catalogueProductHandles.has(item.handle) ? ' product-card__media--contain' : ' product-card__media--cover'}`;\n      media.href = item.url || `/products/${item.handle}`;\n      media.setAttribute('aria-label', `View ${item.title}`);\n      image.src = item.featured_image || item.image;\n      image.alt = item.title;\n      image.loading = 'lazy';\n      image.width = 1000;\n      image.height = 1000;\n      information.className = 'product-card__info';\n      titleLink.href = item.url || `/products/${item.handle}`;\n      titleLink.textContent = item.title;\n      const currency = window.Shopify?.currency?.active || 'USD';\n      price.textContent = new Intl.NumberFormat(document.documentElement.lang || 'en-US', { style: 'currency', currency }).format((item.price || 0) / 100);\n\n      media.append(image);\n      title.append(titleLink);\n      information.append(title, price);\n      card.append(media, information);\n      recentlyViewedGrid.append(card);\n    };\n\n    Promise.all(previousHandles.map((handle) => fetch(`/products/${encodeURIComponent(handle)}.js`).then((response) => response.ok ? response.json() : null)))\n      .then((products) => {\n        products.filter(Boolean).forEach(appendRecentCard);\n        if (recentlyViewedGrid.children.length) recentlyViewedSection.hidden = false;\n      })\n      .catch(() => { recentlyViewedSection.hidden = true; });\n\n    const nextHandles = [currentHandle, ...storedHandles.filter((handle) => handle && handle !== currentHandle)].slice(0, 8);\n    document.cookie = `${cookieName}=${encodeURIComponent(JSON.stringify(nextHandles))}; Max-Age=2592000; Path=/; SameSite=Lax`;\n  } catch (error) {\n    recentlyViewedSection.hidden = true;\n  }\n}\n\nconst formatCartMoney = (cents, currency) => {\n  try {\n    return new Intl.NumberFormat(document.documentElement.lang || 'en-US', {\n      style: 'currency', currency: currency || window.Shopify?.currency?.active || 'USD'\n    }).format(Number(cents || 0) / 100);\n  } catch (_) {\n    return `$${(Number(cents || 0) / 100).toFixed(2)}`;\n  }\n};\n\nconst promotionCopyTimers = new WeakMap();\n\nconst copyPromotionCode = async (code) => {\n  if (navigator.clipboard?.writeText) {\n    try {\n      await navigator.clipboard.writeText(code);\n      return;\n    } catch (_) {}\n  }\n  const fallback = document.createElement('textarea');\n  fallback.value = code;\n  fallback.setAttribute('readonly', '');\n  fallback.style.position = 'fixed';\n  fallback.style.opacity = '0';\n  document.body.append(fallback);\n  fallback.select();\n  const copied = document.execCommand('copy');\n  fallback.remove();\n  if (!copied) throw new Error('Clipboard unavailable');\n};\n\ndocument.addEventListener('click', async (event) => {\n  const button = event.target.closest('[data-promotion-copy]');\n  if (!button) return;\n  const promotion = button.closest('.product-promotion-tiers');\n  const status = promotion?.querySelector('[data-promotion-copy-status]');\n  const code = button.dataset.promotionCode || '';\n  if (!code) return;\n\n  try {\n    await copyPromotionCode(code);\n    promotion?.querySelectorAll('[data-promotion-copy]').forEach((item) => {\n      item.classList.remove('is-copied');\n      item.textContent = item.dataset.promotionCopyLabel || item.textContent;\n    });\n    button.classList.add('is-copied');\n    button.textContent = button.dataset.promotionCopiedLabel || 'Copied \u2713';\n    if (status) status.textContent = `${code} copied`;\n    window.clearTimeout(promotionCopyTimers.get(button));\n    promotionCopyTimers.set(button, window.setTimeout(() => {\n      button.classList.remove('is-copied');\n      button.textContent = button.dataset.promotionCopyLabel || code;\n      if (status) status.textContent = '';\n    }, 5000));\n  } catch (_) {\n    if (status) status.textContent = 'Select and copy the code manually.';\n  }\n});\n\nconst renderCartPricing = (cart) => {\n  if (!cart) return;\n  const total = Number(cart.total_price ?? 0);\n  const discount = Math.max(0, Number(cart.total_discount ?? 0));\n  const reportedOriginal = Number(cart.original_total_price);\n  const original = Number.isFinite(reportedOriginal) ? reportedOriginal : total + discount;\n  const hasDiscount = discount > 0;\n\n  document.querySelectorAll('[data-cart-pricing]').forEach((pricing) => {\n    const subtotalRow = pricing.querySelector('[data-cart-pricing-subtotal-row]');\n    const discountRow = pricing.querySelector('[data-cart-pricing-discount-row]');\n    const originalTotal = pricing.querySelector('[data-cart-pricing-original-total]');\n    const discountTotal = pricing.querySelector('[data-cart-pricing-discount]');\n    const totalLabel = pricing.querySelector('[data-cart-pricing-total-label]');\n    const finalTotal = pricing.querySelector('[data-cart-pricing-total]');\n\n    subtotalRow && (subtotalRow.hidden = !hasDiscount);\n    discountRow && (discountRow.hidden = !hasDiscount);\n    if (originalTotal) originalTotal.textContent = formatCartMoney(original, cart.currency);\n    if (discountTotal) discountTotal.textContent = `\u2212${formatCartMoney(discount, cart.currency)}`;\n    if (totalLabel) totalLabel.textContent = hasDiscount ? 'Total after discount' : 'Subtotal';\n    if (finalTotal) finalTotal.textContent = formatCartMoney(total, cart.currency);\n  });\n};\n\nconst updateCartCountDisplays = (count) => {\n  const normalizedCount = Math.max(0, Number(count || 0));\n  document.querySelectorAll('.cart-count, [data-floating-cart-count]').forEach((badge) => {\n    badge.textContent = String(normalizedCount);\n  });\n  document.querySelectorAll('[data-cart-page-count]').forEach((summary) => {\n    summary.textContent = `${normalizedCount} ${normalizedCount === 1 ? 'piece' : 'pieces'}`;\n    summary.hidden = normalizedCount === 0;\n  });\n};\n\nconst floatingCartRootEl = document.querySelector('[data-floating-cart]');\n\nif (floatingCartRootEl) {\n  const cartToggleEl = floatingCartRootEl.querySelector('[data-floating-cart-toggle]');\n  const cartDrawerEl = floatingCartRootEl.querySelector('[data-floating-cart-drawer]');\n  const cartBackdropEl = floatingCartRootEl.querySelector('[data-floating-cart-backdrop]');\n  const cartCloseEl = floatingCartRootEl.querySelector('[data-floating-cart-close]');\n  const cartUtilitiesEl = floatingCartRootEl.querySelector('[data-floating-cart-utilities]');\n  const cartItemsEl = floatingCartRootEl.querySelector('[data-floating-cart-items]');\n  const cartFooterEl = floatingCartRootEl.querySelector('[data-floating-cart-footer]');\n  const cartStatusEl = floatingCartRootEl.querySelector('[data-floating-cart-status]');\n  // Shopify's dynamic route preserves the buyer's selected market and locale.\n  // A hard-coded root can send an Ajax cart request back to the visitor's\n  // geolocation context, where U.S.-only inventory is not purchasable.\n  const cartRootPath = window.Shopify?.routes?.root || floatingCartRootEl.dataset.cartRoot || '/';\n  let cartLastTrigger = null;\n\n  const cartEscape = (value) => String(value || '').replace(/[&<>'\"]/g, (character) => ({\n    '&': '&amp;', '<': '&lt;', '>': '&gt;', \"'\": '&#39;', '\"': '&quot;'\n  })[character]);\n\n  const cartMoney = (cents, currency) => formatCartMoney(cents, currency || floatingCartRootEl.dataset.cartCurrency);\n\n  const cartImageUrl = (source) => {\n    if (!source) return '';\n    return `${source}${source.includes('?') ? '&' : '?'}width=180`;\n  };\n\n  const parseBundledCart = (html) => {\n    if (!html) return null;\n    const documentFragment = new DOMParser().parseFromString(html, 'text/html');\n    const cartState = documentFragment.querySelector('[data-cart-state]');\n    if (!cartState?.textContent) return null;\n    try {\n      return JSON.parse(cartState.textContent);\n    } catch (_) {\n      return null;\n    }\n  };\n\n  const updateCartBadges = (count) => {\n    updateCartCountDisplays(count);\n    document.querySelectorAll('a[href$=\"/cart\"]').forEach((link) => {\n      if (link.closest('[data-floating-cart-drawer]')) return;\n      if (link.getAttribute('aria-label')?.toLowerCase().includes('cart')) {\n        link.setAttribute('aria-label', `Cart with ${count} items`);\n      }\n    });\n    cartToggleEl?.setAttribute('aria-label', `Open bag with ${count} items`);\n  };\n\n  const renderFloatingCart = (cart) => {\n    updateCartBadges(cart.item_count || 0);\n    renderCartPricing(cart);\n    if (!cartItemsEl || !cartFooterEl) return;\n\n    if (!cart.items?.length) {\n      clearPromotionCode();\n      syncPromotionCode('');\n      cartItemsEl.innerHTML = '<div class=\"floating-cart__empty\"><div><p>Your bag is currently empty.</p><a href=\"/collections/chandeliers\">Explore lighting <span aria-hidden=\"true\">\u2192</span></a></div></div>';\n      if (cartUtilitiesEl) cartUtilitiesEl.hidden = true;\n      cartFooterEl.hidden = true;\n      return;\n    }\n\n    cartItemsEl.innerHTML = cart.items.map((item, index) => {\n      const image = cartImageUrl(item.image || item.featured_image?.url);\n      const variant = item.variant_title && item.variant_title !== 'Default Title' ? `<p>${cartEscape(item.variant_title)}</p>` : '';\n      return `<article class=\"floating-cart-item\">\n        <a class=\"floating-cart-item__media\" href=\"${cartEscape(item.url)}\" tabindex=\"-1\">${image ? `<img src=\"${cartEscape(image)}\" alt=\"${cartEscape(item.product_title)}\" width=\"90\" height=\"90\" loading=\"lazy\">` : ''}</a>\n        <div class=\"floating-cart-item__copy\">\n          <a class=\"floating-cart-item__title\" href=\"${cartEscape(item.url)}\">${cartEscape(item.product_title)}</a>\n          ${variant}\n          <p>${cartMoney(item.final_line_price, cart.currency)}</p>\n          <div class=\"floating-cart-item__quantity\" aria-label=\"Quantity for ${cartEscape(item.product_title)}\">\n            <button type=\"button\" data-cart-quantity data-cart-line=\"${index + 1}\" data-cart-next-quantity=\"${Math.max(0, item.quantity - 1)}\" aria-label=\"Decrease quantity\">\u2212</button>\n            <span>${item.quantity}</span>\n            <button type=\"button\" data-cart-quantity data-cart-line=\"${index + 1}\" data-cart-next-quantity=\"${item.quantity + 1}\" aria-label=\"Increase quantity\">+</button>\n          </div>\n          <button class=\"floating-cart-item__remove\" type=\"button\" data-cart-quantity data-cart-line=\"${index + 1}\" data-cart-next-quantity=\"0\">Remove</button>\n        </div>\n      </article>`;\n    }).join('');\n\n    if (cartUtilitiesEl) cartUtilitiesEl.hidden = false;\n    cartFooterEl.hidden = false;\n  };\n\n  const fetchFloatingCart = async () => {\n    const response = await fetch(`${cartRootPath}cart.js`, { headers: { Accept: 'application/json' } });\n    if (!response.ok) throw new Error('Unable to load bag');\n    const cart = await response.json();\n    renderFloatingCart(cart);\n    return cart;\n  };\n\n  const showFloatingCartPending = (title = '') => {\n    if (!cartItemsEl || !cartFooterEl) return;\n    const itemTitle = title ? `Adding ${cartEscape(title)} to your bag\u2026` : 'Adding to your bag\u2026';\n    cartItemsEl.innerHTML = `<div class=\"floating-cart__pending\" role=\"status\" aria-live=\"polite\"><span aria-hidden=\"true\"></span><p>${itemTitle}</p><small>Updating your selection.</small></div>`;\n    if (cartUtilitiesEl) cartUtilitiesEl.hidden = true;\n    cartFooterEl.hidden = true;\n  };\n\n  const setFloatingCartOpen = async (open, trigger = null, { refresh = true, pendingTitle = '' } = {}) => {\n    if (!cartDrawerEl || !cartToggleEl) return;\n    if (open) {\n      cartLastTrigger = trigger || document.activeElement;\n      floatingCartRootEl.classList.add('is-open');\n      document.body.classList.add('cart-drawer-open');\n      cartToggleEl.setAttribute('aria-expanded', 'true');\n      cartDrawerEl.setAttribute('aria-hidden', 'false');\n      cartDrawerEl.removeAttribute('inert');\n      if (!refresh) {\n        showFloatingCartPending(pendingTitle);\n        if (cartStatusEl) cartStatusEl.textContent = 'Adding to bag.';\n        return;\n      }\n      floatingCartRootEl.classList.add('is-loading');\n      try {\n        await fetchFloatingCart();\n        if (cartStatusEl) cartStatusEl.textContent = 'Bag updated.';\n      } catch (_) {\n        if (cartStatusEl) cartStatusEl.textContent = 'Bag is temporarily unavailable.';\n      } finally {\n        floatingCartRootEl.classList.remove('is-loading');\n        cartCloseEl?.focus();\n      }\n      return;\n    }\n\n    floatingCartRootEl.classList.remove('is-open');\n    document.body.classList.remove('cart-drawer-open');\n    cartToggleEl.setAttribute('aria-expanded', 'false');\n    cartDrawerEl.setAttribute('aria-hidden', 'true');\n    cartDrawerEl.setAttribute('inert', '');\n    cartLastTrigger?.focus?.();\n  };\n\n  cartToggleEl?.addEventListener('click', (event) => setFloatingCartOpen(true, event.currentTarget));\n  cartCloseEl?.addEventListener('click', () => setFloatingCartOpen(false));\n  cartBackdropEl?.addEventListener('click', () => setFloatingCartOpen(false));\n\n  document.querySelectorAll('[data-product-quantity]').forEach((quantityPicker) => {\n    const input = quantityPicker.querySelector('input[name=\"quantity\"]');\n    const decrease = quantityPicker.querySelector('[data-product-quantity-decrease]');\n    const increase = quantityPicker.querySelector('[data-product-quantity-increase]');\n    if (!input) return;\n\n    const getQuantity = () => Math.max(1, Number.parseInt(input.value, 10) || 1);\n    const setQuantity = (quantity) => { input.value = String(Math.max(1, quantity)); };\n\n    decrease?.addEventListener('click', () => setQuantity(getQuantity() - 1));\n    increase?.addEventListener('click', () => setQuantity(getQuantity() + 1));\n    input.addEventListener('change', () => setQuantity(getQuantity()));\n  });\n\n  document.querySelectorAll('form.product-form').forEach((form) => {\n    const optionGroups = [...form.querySelectorAll('[data-product-option-group]')];\n    const optionInputs = [...form.querySelectorAll('[data-product-option]')];\n    const variantIdInput = form.querySelector('[data-product-variant-id]');\n    const variantData = form.querySelector('[data-product-variant-data]');\n    const submitButton = form.querySelector('[data-product-submit]');\n    const price = document.querySelector('[data-product-price]');\n    const sku = document.querySelector('[data-product-sku]');\n    const skuValue = sku?.querySelector('[data-product-sku-value]');\n    const status = form.querySelector('[data-product-form-status]');\n    const productGallery = form.closest('.product-page')?.querySelector('[data-product-gallery]');\n    let variants = [];\n\n    if (variantData) {\n      try {\n        variants = JSON.parse(variantData.textContent);\n      } catch (_) {\n        variants = [];\n      }\n    }\n\n    const syncSelectedVariant = () => {\n      if (!optionGroups.length || !submitButton || !variantIdInput) return;\n      optionInputs.forEach((input) => {\n        const card = input.nextElementSibling;\n        if (!card) return;\n        card.classList.toggle('is-selected', input.checked);\n        if (input.checked) {\n          card.style.setProperty('background-color', 'var(--ink)', 'important');\n          card.style.setProperty('border-color', 'var(--ink)', 'important');\n          card.style.setProperty('color', 'var(--paper)', 'important');\n        } else {\n          card.style.removeProperty('background-color');\n          card.style.removeProperty('border-color');\n          card.style.removeProperty('color');\n        }\n      });\n      const selectedOptions = optionGroups.map((group) => group.querySelector('[data-product-option]:checked')?.value);\n      const variant = variants.find((item) => item.options.every((value, index) => value === selectedOptions[index]));\n      const available = Boolean(variant?.available);\n      variantIdInput.value = variant?.id || '';\n      submitButton.disabled = !available;\n      submitButton.textContent = available ? 'Add to bag' : 'Unavailable';\n      if (price && variant?.price) price.textContent = variant.price;\n      if (sku && skuValue) {\n        const selectedSku = variant?.sku?.trim() || '';\n        skuValue.textContent = selectedSku;\n        sku.hidden = !selectedSku;\n      }\n      if (variant?.id && productGallery) {\n        productGallery.dispatchEvent(new CustomEvent('product:variant-media-change', {\n          detail: { variantId: variant.id }\n        }));\n      }\n      if (status) {\n        status.textContent = available ? '' : 'This option is currently unavailable.';\n        status.hidden = available;\n      }\n    };\n\n    optionInputs.forEach((input) => input.addEventListener('change', syncSelectedVariant));\n    syncSelectedVariant();\n  });\n\n  floatingCartRootEl.addEventListener('click', async (event) => {\n    const quantityButton = event.target.closest('[data-cart-quantity]');\n    if (!quantityButton) return;\n    const line = Number(quantityButton.dataset.cartLine);\n    const quantity = Number(quantityButton.dataset.cartNextQuantity);\n    if (!line || Number.isNaN(quantity)) return;\n    floatingCartRootEl.classList.add('is-loading');\n    try {\n      const response = await fetch(`${cartRootPath}cart/change.js`, {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json', Accept: 'application/json' },\n        body: JSON.stringify({ line, quantity })\n      });\n      if (!response.ok) throw new Error('Unable to update bag');\n      renderFloatingCart(await response.json());\n      if (cartStatusEl) cartStatusEl.textContent = quantity === 0 ? 'Item removed.' : 'Quantity updated.';\n    } catch (_) {\n      if (cartStatusEl) cartStatusEl.textContent = 'Bag could not be updated. Please try again.';\n    } finally {\n      floatingCartRootEl.classList.remove('is-loading');\n    }\n  });\n\n  // Use one capture-phase listener for every product form. This keeps the\n  // native form as a fallback while preventing duplicate cart requests when\n  // third-party scripts or theme sections are loaded on the same page.\n  document.addEventListener('submit', async (event) => {\n    const form = event.target instanceof HTMLFormElement ? event.target : event.target.closest?.('form.product-form');\n    if (!form?.matches('form.product-form')) return;\n    const submitButton = event.submitter || form.querySelector('[type=\"submit\"]');\n    // Shopify's accelerated checkout control is also rendered inside this\n    // form. Only handle the dedicated Add to bag control here so its native\n    // PayPal / dynamic checkout flow is never intercepted.\n    if (!submitButton?.matches('[data-product-submit]') || submitButton.disabled) return;\n\n    event.preventDefault();\n    event.stopImmediatePropagation();\n    const originalText = submitButton.textContent;\n    const productStatus = form.querySelector('[data-product-form-status]');\n    if (productStatus) {\n      productStatus.textContent = '';\n      productStatus.hidden = true;\n    }\n    submitButton.disabled = true;\n    submitButton.textContent = 'Adding\u2026';\n    const drawerWasOpen = floatingCartRootEl.classList.contains('is-open');\n    const productTitle = document.querySelector('.product-info h1')?.textContent?.trim() || '';\n    void setFloatingCartOpen(true, submitButton, { refresh: false, pendingTitle: productTitle });\n    try {\n      const addFormData = new FormData(form);\n      addFormData.append('sections', 'cart-data');\n      addFormData.append('sections_url', window.location.pathname);\n      const response = await fetch(`${cartRootPath}cart/add.js`, {\n        method: 'POST',\n        headers: { Accept: 'application/json' },\n        body: addFormData\n      });\n      if (!response.ok) {\n        const failure = await response.json().catch(() => ({}));\n        throw new Error(failure.description || failure.message || 'Unable to add item');\n      }\n      const addResult = await response.json();\n      const bundledCart = parseBundledCart(addResult.sections?.['cart-data']);\n      if (bundledCart) {\n        renderFloatingCart(bundledCart);\n        if (cartStatusEl) cartStatusEl.textContent = 'Added to bag.';\n        cartCloseEl?.focus();\n      } else if (floatingCartRootEl.classList.contains('is-open')) {\n        // Section rendering can fail independently from a successful add.\n        // In that uncommon case, fall back to the authoritative cart endpoint.\n        void setFloatingCartOpen(true, submitButton);\n      } else {\n        void fetchFloatingCart().catch(() => {});\n      }\n    } catch (error) {\n      if (drawerWasOpen) {\n        void fetchFloatingCart().catch(() => {});\n      } else {\n        setFloatingCartOpen(false);\n      }\n      const message = error.message || 'This piece could not be added. Please try again.';\n      if (cartStatusEl) cartStatusEl.textContent = message;\n      if (productStatus) {\n        productStatus.textContent = message;\n        productStatus.hidden = false;\n      }\n    } finally {\n      submitButton.disabled = false;\n      submitButton.textContent = originalText;\n    }\n  }, true);\n\n  document.addEventListener('keydown', (event) => {\n    if (!floatingCartRootEl.classList.contains('is-open')) return;\n    if (event.key === 'Escape') {\n      event.preventDefault();\n      setFloatingCartOpen(false);\n      return;\n    }\n    if (event.key !== 'Tab' || !cartDrawerEl) return;\n    const focusable = [...cartDrawerEl.querySelectorAll('a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])')]\n      .filter((element) => !element.hidden && element.getClientRects().length > 0);\n    if (!focusable.length) return;\n    const first = focusable[0];\n    const last = focusable[focusable.length - 1];\n    if (event.shiftKey && document.activeElement === first) { event.preventDefault(); last.focus(); }\n    if (!event.shiftKey && document.activeElement === last) { event.preventDefault(); first.focus(); }\n  });\n}\n\nconst promotionForms = [...document.querySelectorAll('[data-discount-form]')];\nconst promotionCodeStorageKey = 'arunius:promotion-code:v2';\nconst legacyPromotionCodeStorageKey = 'arunius:promotion-code:v1';\n\nconst promotionStorageAreas = () => {\n  const areas = [];\n  try { areas.push(window.localStorage); } catch (_) { /* Storage can be blocked by the browser. */ }\n  try { areas.push(window.sessionStorage); } catch (_) { /* Storage can be blocked by the browser. */ }\n  return areas;\n};\n\nconst savedPromotionRecords = () => {\n  const records = [];\n  promotionStorageAreas().forEach((storage) => {\n    [promotionCodeStorageKey, legacyPromotionCodeStorageKey].forEach((key) => {\n      try {\n        const value = storage.getItem(key);\n        if (!value) return;\n        const record = JSON.parse(value);\n        const code = typeof record?.code === 'string' ? record.code.trim() : '';\n        if (code) records.push({ code, key, savedAt: Number(record?.savedAt) || 0 });\n      } catch (_) {\n        // A malformed or inaccessible record is ignored.\n      }\n    });\n  });\n  return records.sort((first, second) => second.savedAt - first.savedAt);\n};\n\nconst readPromotionCode = () => savedPromotionRecords()[0] || null;\n\nconst savePromotionCode = (code) => {\n  const normalizedCode = String(code || '').trim();\n  if (!normalizedCode) return;\n  const record = JSON.stringify({ code: normalizedCode, savedAt: Date.now() });\n  promotionStorageAreas().forEach((storage) => {\n    try {\n      storage.setItem(promotionCodeStorageKey, record);\n      storage.removeItem(legacyPromotionCodeStorageKey);\n    } catch (_) {\n      // Showing the code on the current page remains available if storage is blocked.\n    }\n  });\n};\n\nconst clearPromotionCode = () => {\n  promotionStorageAreas().forEach((storage) => {\n    try {\n      storage.removeItem(promotionCodeStorageKey);\n      storage.removeItem(legacyPromotionCodeStorageKey);\n    } catch (_) {\n      // Storage cleanup is optional when the browser blocks storage access.\n    }\n  });\n};\n\nconst syncPromotionCode = (code) => {\n  promotionForms.forEach((form) => {\n    const saved = form.querySelector('[data-discount-saved]');\n    const codeElement = form.querySelector('[data-discount-code]');\n    if (!saved || !codeElement) return;\n    codeElement.textContent = code;\n    saved.hidden = !code;\n  });\n  document.querySelectorAll('[data-discount-summary]').forEach((summary) => {\n    summary.textContent = code;\n    summary.hidden = !code;\n  });\n  document.querySelectorAll('[data-discount-summary-empty]').forEach((summary) => {\n    summary.hidden = Boolean(code);\n  });\n  document.querySelectorAll('[data-discount-footer-code]').forEach((summary) => {\n    summary.textContent = code ? `Promotion code \u00B7 ${code}` : '';\n    summary.hidden = !code;\n  });\n};\n\nconst setPromotionStatus = (form, message, isError = false) => {\n  const input = form.querySelector('[data-discount-input]');\n  const status = form.querySelector('[data-discount-status]');\n  if (!status) return;\n  status.textContent = message;\n  status.hidden = false;\n  status.classList.toggle('is-error', isError);\n  input?.setAttribute('aria-invalid', String(isError));\n};\n\nconst setPromotionControlsDisabled = (disabled) => {\n  promotionForms.forEach((form) => {\n    form.querySelector('[data-discount-submit]')?.toggleAttribute('disabled', disabled);\n    form.querySelector('[data-discount-remove]')?.toggleAttribute('disabled', disabled);\n    form.closest('[data-discount-scope]')?.querySelector('[data-discount-checkout]')?.toggleAttribute('disabled', disabled);\n  });\n};\n\nlet promotionCodeChanging = false;\n\nconst updatePromotionCode = async (form, code) => {\n  const root = form.dataset.discountRoot || window.Shopify?.routes?.root || '/';\n  const response = await fetch(`${root}cart/update.js`, {\n    method: 'POST',\n    headers: { 'Content-Type': 'application/json', Accept: 'application/json' },\n    body: JSON.stringify({ discount: code })\n  });\n  if (!response.ok) throw new Error('Unable to save promotion code');\n  return response.json();\n};\n\nconst restorePromotionCode = () => {\n  const record = readPromotionCode();\n  if (!record) {\n    syncPromotionCode('');\n    return;\n  }\n  if (record.key === legacyPromotionCodeStorageKey) savePromotionCode(record.code);\n  syncPromotionCode(record.code);\n};\n\nrestorePromotionCode();\n\nwindow.addEventListener('storage', (event) => {\n  if (event.key === promotionCodeStorageKey || event.key === legacyPromotionCodeStorageKey) restorePromotionCode();\n});\n\npromotionForms.forEach((form) => {\n  const input = form.querySelector('[data-discount-input]');\n  const applyButton = form.querySelector('[data-discount-submit]');\n\n  form.addEventListener('submit', async (event) => {\n    event.preventDefault();\n    if (!input || !applyButton || promotionCodeChanging) return;\n\n    const code = input.value.trim();\n    if (!code) {\n      setPromotionStatus(form, 'Enter a promotion code to continue.', true);\n      input.focus();\n      return;\n    }\n\n    const originalText = applyButton.textContent;\n    promotionCodeChanging = true;\n    form.setAttribute('aria-busy', 'true');\n    setPromotionControlsDisabled(true);\n    setPromotionStatus(form, 'Saving code for checkout\u2026');\n\n    try {\n      const cart = await updatePromotionCode(form, code);\n      promotionForms.forEach((promotionForm) => { promotionForm.dataset.discountCartToken = cart.token || ''; });\n      savePromotionCode(code);\n      syncPromotionCode(code);\n      renderCartPricing(cart);\n      input.value = '';\n      setPromotionStatus(form, Number(cart.total_discount || 0) > 0 ? 'A promotion is reflected in your cart total. Final eligibility is confirmed at checkout.' : 'Code saved for checkout. Eligibility is confirmed there.');\n    } catch (_) {\n      setPromotionStatus(form, 'The code could not be saved. Please try again.', true);\n    } finally {\n      promotionCodeChanging = false;\n      form.removeAttribute('aria-busy');\n      setPromotionControlsDisabled(false);\n      applyButton.textContent = originalText;\n    }\n  });\n});\n\ndocument.querySelectorAll('[data-discount-remove]').forEach((button) => {\n  button.addEventListener('click', async () => {\n    if (promotionCodeChanging) return;\n    const form = button.closest('[data-discount-form]');\n    if (!form) return;\n\n    promotionCodeChanging = true;\n    form.setAttribute('aria-busy', 'true');\n    setPromotionControlsDisabled(true);\n    setPromotionStatus(form, 'Removing code\u2026');\n\n    try {\n      const cart = await updatePromotionCode(form, '');\n      clearPromotionCode();\n      syncPromotionCode('');\n      renderCartPricing(cart);\n      setPromotionStatus(form, 'Promotion code removed.');\n    } catch (_) {\n      setPromotionStatus(form, 'The code could not be removed. Please try again.', true);\n    } finally {\n      promotionCodeChanging = false;\n      form.removeAttribute('aria-busy');\n      setPromotionControlsDisabled(false);\n    }\n  });\n});\n\nconst cartPageQuantityPickers = [...document.querySelectorAll('[data-cart-page-quantity]')];\nconst cartPageStatus = document.querySelector('[data-cart-page-status]');\n\nconst setCartPageStatus = (message) => {\n  if (cartPageStatus) cartPageStatus.textContent = message;\n};\n\ncartPageQuantityPickers.forEach((quantityPicker) => {\n  const input = quantityPicker.querySelector('input[name=\"updates[]\"]');\n  const decrease = quantityPicker.querySelector('[data-cart-page-decrease]');\n  const increase = quantityPicker.querySelector('[data-cart-page-increase]');\n  const row = quantityPicker.closest('[data-cart-page-row]');\n  const lineTotal = row?.querySelector('[data-cart-page-line-total]');\n  const itemKey = quantityPicker.dataset.cartItemKey || row?.dataset.cartItemKey || '';\n  const fallbackLine = Number(quantityPicker.dataset.cartLine || cartPageQuantityPickers.indexOf(quantityPicker) + 1);\n  const cartRootPath = window.Shopify?.routes?.root || '/';\n  if (!input) return;\n\n  const normalizeQuantity = (quantity) => Math.max(0, Number.parseInt(quantity, 10) || 0);\n  const currentQuantity = () => normalizeQuantity(input.value);\n  const setQuantity = (quantity) => { input.value = String(normalizeQuantity(quantity)); };\n  const setBusy = (busy) => {\n    quantityPicker.classList.toggle('is-updating', busy);\n    input.toggleAttribute('disabled', busy);\n    decrease?.toggleAttribute('disabled', busy);\n    increase?.toggleAttribute('disabled', busy);\n  };\n  const findUpdatedItem = (cart) => {\n    if (!Array.isArray(cart?.items)) return null;\n    if (itemKey) return cart.items.find((item) => item.key === itemKey) || null;\n    return cart.items[fallbackLine - 1] || null;\n  };\n  let confirmedQuantity = currentQuantity();\n\n  const updateQuantity = async (nextQuantity) => {\n    const quantity = normalizeQuantity(nextQuantity);\n    setQuantity(quantity);\n    if (quantity === confirmedQuantity) return;\n\n    setBusy(true);\n    setCartPageStatus(quantity === 0 ? 'Removing item\u2026' : 'Updating quantity\u2026');\n    try {\n      const response = await fetch(`${cartRootPath}cart/change.js`, {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json', Accept: 'application/json' },\n        body: JSON.stringify(itemKey ? { id: itemKey, quantity } : { line: fallbackLine, quantity })\n      });\n      if (!response.ok) throw new Error('Unable to update bag');\n      const cart = await response.json();\n      const updatedItem = findUpdatedItem(cart);\n      updateCartCountDisplays(cart.item_count);\n      renderCartPricing(cart);\n\n      if (Number(cart.item_count || 0) === 0) {\n        window.location.assign(`${cartRootPath}cart`);\n        return;\n      }\n\n      if (!updatedItem || quantity === 0) {\n        row?.remove();\n        confirmedQuantity = 0;\n        setCartPageStatus('Item removed.');\n        return;\n      }\n\n      confirmedQuantity = normalizeQuantity(updatedItem.quantity);\n      setQuantity(confirmedQuantity);\n      if (lineTotal) lineTotal.textContent = formatCartMoney(updatedItem.final_line_price, cart.currency);\n      setCartPageStatus('Quantity updated.');\n    } catch (_) {\n      setQuantity(confirmedQuantity);\n      setCartPageStatus('Bag could not be updated. Please try again.');\n    } finally {\n      if (row?.isConnected) setBusy(false);\n    }\n  };\n\n  decrease?.addEventListener('click', () => { void updateQuantity(currentQuantity() - 1); });\n  increase?.addEventListener('click', () => { void updateQuantity(currentQuantity() + 1); });\n  input.addEventListener('change', () => { void updateQuantity(currentQuantity()); });\n});\n"],
  "mappings": "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",
  "names": []
}
