{
  "version": 3,
  "sources": ["/cdn/shop/t/7/assets/farfetch-template.js?ffv=contact-fix-20260707-3"],
  "sourcesContent": ["/* live-bump-1780569785921 */\ndocument.documentElement.classList.remove(\"no-js\");\n\nconst money = (cents) => {\n  const currency = window.Shopify?.currency?.active || \"INR\";\n  try {\n    return new Intl.NumberFormat(\"en-IN\", {\n      style: \"currency\",\n      currency,\n      maximumFractionDigits: cents % 100 === 0 ? 0 : 2\n    }).format(cents / 100);\n  } catch {\n    return `Rs. ${(cents / 100).toLocaleString(\"en-IN\", { maximumFractionDigits: 2 })}`;\n  }\n};\n\nconst normalize = (value) => String(value || \"\").toLowerCase().replace(/\\s+/g, \"\").replace(/[--]/g, \"-\");\n\nconst cleanSizeLabel = (value) => String(value || \"\")\n  .replace(/\\b(?:18\\s*-\\s*20|18\\s*to\\s*20|3\\s*-\\s*5|3\\s*to\\s*5)\\s*days?\\b/gi, \"\")\n  .replace(/\\s*[,/|]\\s*$/g, \"\")\n  .replace(/^[,/|]\\s*/g, \"\")\n  .replace(/\\s{2,}/g, \" \")\n  .trim();\n\nconst displaySizeLabel = (value) => cleanSizeLabel(value).replace(/^UK\\s*/i, \"UK \");\n\nconst displayShippingLabel = (value) => String(value || \"\")\n  .replace(/18\\s*-\\s*20/gi, \"18-21\")\n  .toLowerCase();\n\nconst shippingMatches = (variantValue, selectedValue) => {\n  const variant = normalize(variantValue);\n  const selected = normalize(selectedValue);\n  if (!variant || !selected) return true;\n  if (selected.includes(\"3-5\") || selected.includes(\"3to5\")) return variant.includes(\"3\") && variant.includes(\"5\");\n  if (selected.includes(\"18-20\") || selected.includes(\"18to20\") || selected.includes(\"18-21\") || selected.includes(\"18to21\")) return variant.includes(\"18\") && (variant.includes(\"20\") || variant.includes(\"21\"));\n  if (selected.includes(\"next\")) return variant.includes(\"next\");\n  return variant === selected;\n};\n\nconst setWishlistState = () => {\n  let saved = [];\n  try {\n    saved = JSON.parse(localStorage.getItem(\"ffWishlist\") || \"[]\");\n  } catch {\n    saved = [];\n  }\n  document.querySelectorAll(\"[data-wishlist-toggle]\").forEach((button) => {\n    button.classList.toggle(\"is-active\", saved.includes(button.getAttribute(\"data-product-id\")));\n    button.setAttribute(\"aria-pressed\", saved.includes(button.getAttribute(\"data-product-id\")) ? \"true\" : \"false\");\n  });\n};\n\nconst initWheelPassthrough = () => {\n  const rails = \".ff-home [data-ff-rail], .ff-home .ff-product-strip, .ff-home .ff-category-strip, .ff-home .ff-hero-carousel, .ff-home .ff-designer-carousel, .ff-product-grid, .ff-brand-grid\";\n  document.querySelectorAll(rails).forEach((rail) => {\n    if (rail.dataset.ffWheelReady === \"true\") return;\n    rail.dataset.ffWheelReady = \"true\";\n    rail.addEventListener(\"wheel\", (event) => {\n      if (!event.shiftKey) return;\n      if (Math.abs(event.deltaY) <= Math.abs(event.deltaX)) return;\n      if (rail.scrollWidth <= rail.clientWidth) return;\n      event.preventDefault();\n      rail.scrollLeft += event.deltaY;\n    }, { passive: false });\n  });\n};\n\nconst fixHomeRailScroll = () => {\n  const isMobile = window.matchMedia(\"(max-width: 749px)\").matches;\n  const sectionWidth = isMobile ? \"calc(100vw - 10px)\" : \"calc(100vw - 96px)\";\n  const sectionMarginLeft = isMobile ? \"calc(50% - 50vw + 10px)\" : \"48px\";\n  const sectionMarginRight = isMobile ? \"0\" : \"48px\";\n  const sections = document.querySelectorAll(\".ff-home-categories, .ff-luxe-home .ff-home-rail\");\n  sections.forEach((section) => {\n    const isProductSection = section.classList.contains(\"ff-home-rail\");\n    const sectionOverflow = isMobile && !isProductSection ? \"visible\" : \"hidden\";\n    section.style.setProperty(\"width\", sectionWidth, \"important\");\n    section.style.setProperty(\"max-width\", sectionWidth, \"important\");\n    section.style.setProperty(\"min-width\", sectionWidth, \"important\");\n    section.style.setProperty(\"margin-left\", sectionMarginLeft, \"important\");\n    section.style.setProperty(\"margin-right\", sectionMarginRight, \"important\");\n    section.style.setProperty(\"padding-left\", \"0\", \"important\");\n    section.style.setProperty(\"padding-right\", \"0\", \"important\");\n    section.style.setProperty(\"overflow\", sectionOverflow, \"important\");\n    section.style.setProperty(\"box-sizing\", \"border-box\", \"important\");\n\n    const heading = section.querySelector(\".ff-section-heading--split\");\n    if (heading) {\n      heading.style.setProperty(\"padding-left\", \"0\", \"important\");\n      heading.style.setProperty(\"padding-right\", \"0\", \"important\");\n      heading.style.setProperty(\"margin-left\", \"0\", \"important\");\n      heading.style.setProperty(\"margin-right\", \"0\", \"important\");\n    }\n\n    const rail = section.querySelector(\"[data-ff-rail]\");\n    if (!rail) return;\n    rail.style.setProperty(\"width\", \"100%\", \"important\");\n    rail.style.setProperty(\"max-width\", \"100%\", \"important\");\n    rail.style.setProperty(\"min-width\", \"0\", \"important\");\n    rail.style.setProperty(\"display\", \"flex\", \"important\");\n    rail.style.setProperty(\"flex-wrap\", \"nowrap\", \"important\");\n    rail.style.setProperty(\"overflow-x\", \"auto\", \"important\");\n    rail.style.setProperty(\"overflow-y\", \"hidden\", \"important\");\n    rail.style.setProperty(\"margin-left\", \"0\", \"important\");\n    rail.style.setProperty(\"margin-right\", \"0\", \"important\");\n    rail.style.setProperty(\"padding-left\", \"0\", \"important\");\n    rail.style.setProperty(\"padding-right\", \"0\", \"important\");\n    if (isMobile) {\n      const railGap = isProductSection ? \"12px\" : \"8px\";\n      rail.style.setProperty(\"gap\", railGap, \"important\");\n      rail.style.setProperty(\"column-gap\", railGap, \"important\");\n      if (isProductSection) {\n        rail.querySelectorAll(\":scope > .ff-product-card\").forEach((card) => {\n          card.style.setProperty(\"flex\", \"0 0 72vw\", \"important\");\n          card.style.setProperty(\"width\", \"72vw\", \"important\");\n          card.style.setProperty(\"min-width\", \"72vw\", \"important\");\n          card.style.setProperty(\"max-width\", \"72vw\", \"important\");\n        });\n      }\n    }\n    rail.style.setProperty(\"-webkit-overflow-scrolling\", \"touch\", \"important\");\n    rail.style.setProperty(\"touch-action\", \"pan-x pan-y\", \"important\");\n    rail.style.setProperty(\"scroll-snap-type\", \"x proximity\", \"important\");\n  });\n};\n\nconst escapeHtml = (value) => String(value || \"\")\n  .replace(/&/g, \"&amp;\")\n  .replace(/</g, \"&lt;\")\n  .replace(/>/g, \"&gt;\")\n  .replace(/\"/g, \"&quot;\");\n\nconst formatStorefrontPrice = (value) => {\n  const amount = Number(value || 0);\n  if (!Number.isFinite(amount) || amount <= 0) return \"\";\n  return `Rs. ${Math.round(amount).toLocaleString(\"en-IN\")}`;\n};\n\nconst splitRankingTerms = (value) => String(value || \"\")\n  .split(/[,|/]+/)\n  .map((term) => term.trim().toLowerCase())\n  .filter(Boolean);\n\nconst handleize = (value) => String(value || \"\")\n  .toLowerCase()\n  .replace(/&/g, \"and\")\n  .replace(/[^a-z0-9]+/g, \"-\")\n  .replace(/^-+|-+$/g, \"\");\n\nconst productTokens = (product) => {\n  const tags = Array.isArray(product.tags) ? product.tags : String(product.tags || \"\").split(\",\");\n  return [\n    ...tags,\n    product.vendor,\n    product.product_type,\n    product.title\n  ].join(\" \").toLowerCase();\n};\n\nconst BRAND_ALIASES = {\n  adidas: [\"adidas\"],\n  nike: [\"nike\"],\n  jordan: [\"jordan\", \"air jordan\"],\n  \"new-balance\": [\"new balance\"],\n  yeezy: [\"yeezy\"],\n  seiko: [\"seiko\"],\n  casio: [\"casio\"],\n  swatch: [\"swatch\"],\n  dior: [\"dior\"],\n  ysl: [\"ysl\", \"yves saint laurent\"],\n  coach: [\"coach\"],\n  \"michael-kors\": [\"michael kors\"],\n  \"marc-jacobs\": [\"marc jacobs\"],\n  stanley: [\"stanley\"],\n  \"pop-mart\": [\"pop mart\"]\n};\n\nconst CATEGORY_ALIASES = {\n  sale: [\"sale\", \"discount\", \"offer\", \"offers\", \"drop\", \"drops\"],\n  sneakers: [\"sneakers\", \"sneaker\", \"shoes\", \"shoe\", \"footwear\", \"casual footwear\", \"daily footwear\", \"performance footwear\"],\n  apparel: [\"apparel\", \"clothing\", \"tops\", \"t-shirts\", \"t shirt\", \"shirts\", \"hoodie\", \"sweatshirt\", \"shorts\", \"trousers\", \"pants\", \"jackets\", \"denim\", \"tracksuits\"],\n  watches: [\"watches\", \"watch\", \"quartz watches\", \"analog watches\", \"mechanical watches\", \"watch accessories\"],\n  accessories: [\"accessories\", \"accessory\", \"wallets\", \"jewelry\", \"watch accessories\"],\n  bags: [\"bags\", \"bag\", \"handbags\", \"handbag\"],\n  perfumes: [\"perfumes\", \"perfume\", \"fragrance\", \"beauty\"]\n};\n\nconst detectAliasKeys = (value, aliases) => {\n  const haystack = String(value || \"\").toLowerCase().replace(/[^a-z0-9]+/g, \" \");\n  return Object.entries(aliases)\n    .filter(([, terms]) => terms.some((term) => haystack.includes(term.toLowerCase())))\n    .map(([key]) => key);\n};\n\nconst categoryTermsForKeys = (keys = []) => {\n  const terms = [];\n  keys.forEach((key) => {\n    (CATEGORY_ALIASES[key] || []).forEach((term) => terms.push(term));\n  });\n  return [...new Set(terms)];\n};\n\nconst intentFromContext = (...values) => {\n  const text = values.filter(Boolean).join(\" \");\n  const brandKeys = detectAliasKeys(text, BRAND_ALIASES);\n  const categoryKeys = detectAliasKeys(text, CATEGORY_ALIASES).filter((key) => key !== \"sale\");\n  const saleMode = detectAliasKeys(text, { sale: CATEGORY_ALIASES.sale }).includes(\"sale\");\n  return {\n    brandKeys,\n    brandTerms: [...new Set(brandKeys.flatMap((key) => BRAND_ALIASES[key] || []))],\n    categoryKeys,\n    categoryTerms: categoryTermsForKeys(categoryKeys),\n    saleMode\n  };\n};\n\nconst productMatchesBrand = (product, brandTerms = []) => {\n  const vendorText = String(product.vendor || \"\").toLowerCase();\n  const titleText = String(product.title || \"\").toLowerCase();\n  return brandTerms.some((term) => {\n    const normalized = String(term || \"\").toLowerCase();\n    return vendorText === normalized || vendorText.includes(normalized) || titleText.includes(normalized);\n  });\n};\n\nconst productMatchesCategory = (product, categoryKeys = []) => {\n  if (!categoryKeys.length) return true;\n  const tokens = productTokens(product);\n  return categoryKeys.some((key) => (CATEGORY_ALIASES[key] || []).some((term) => tokens.includes(term)));\n};\n\nconst productMatchesSale = (product) => {\n  const tags = Array.isArray(product.tags) ? product.tags : String(product.tags || \"\").split(\",\");\n  const compare = Number(product.variants?.[0]?.compare_at_price || product.compare_at_price || 0);\n  const price = Number(product.variants?.[0]?.price || product.price || 0);\n  if (compare > price && price > 0) return true;\n  return [...tags, product.title, product.product_type].join(\" \").toLowerCase().includes(\"sale\")\n    || [...tags, product.title, product.product_type].join(\" \").toLowerCase().includes(\"discount\");\n};\n\nconst popularityScore = (product) => Number(product.score || product.popularity_score || product.popularityScore || 0);\n\nconst productPopularityScore = (product, index = 0) => {\n  const directScore = popularityScore(product);\n  if (directScore) return directScore * 1000;\n  const tags = Array.isArray(product.tags) ? product.tags : String(product.tags || \"\").split(\",\");\n  const taggedScore = tags.reduce((score, tag) => {\n    const match = String(tag || \"\").match(/(?:popularity|popular|score)[\\s:_-]*(\\d+)/i);\n    return match ? Math.max(score, Number(match[1]) || 0) : score;\n  }, 0);\n  const variant = product.variants?.[0] || {};\n  const price = Number(variant.price || product.price || 0);\n  const compare = Number(variant.compare_at_price || product.compare_at_price || 0);\n  const discountScore = compare > price && price > 0 ? Math.min(80, ((compare - price) / compare) * 100) : 0;\n  const recencyScore = product.created_at ? Math.max(0, 30 - ((Date.now() - Date.parse(product.created_at)) / 86400000)) : 0;\n  const collectionOrderScore = Math.max(0, 250 - index) / 10;\n  return taggedScore * 5 + discountScore + recencyScore + collectionOrderScore;\n};\n\nconst rankProducts = (products) => [...products].sort((a, b) => productPopularityScore(b) - productPopularityScore(a));\n\nlet popularityDataPromise;\nconst productByHandleCache = new Map();\nconst popularityAssetUrl = () => {\n  const assetNode = Array.from(document.scripts)\n    .find((script) => script.src && script.src.includes(\"/assets/farfetch-template.js\"))\n    || Array.from(document.querySelectorAll('link[href*=\"/assets/farfetch-template.css\"]'))[0];\n  const assetUrl = assetNode?.src || assetNode?.href || \"\";\n  if (assetUrl.includes(\"/assets/\")) return assetUrl.replace(/\\/assets\\/[^/?#]+.*$/, \"/assets/luxe-popularity-scores.json\");\n  return \"/cdn/shop/t/7/assets/luxe-popularity-scores.json\";\n};\n\nconst loadPopularityProducts = async () => {\n  if (!popularityDataPromise) {\n    popularityDataPromise = fetch(popularityAssetUrl(), { headers: { Accept: \"application/json\" } })\n      .then((response) => {\n        if (!response.ok) throw new Error(\"Could not load popularity scores\");\n        return response.json();\n      })\n      .then((data) => Object.values(data.products || {}));\n  }\n  return popularityDataPromise;\n};\n\nconst fetchCollectionProducts = async (handle, limit = 250, page = 1) => {\n  const safeHandle = handle || \"all\";\n  const response = await fetch(\n    `/collections/${encodeURIComponent(safeHandle)}/products.json?limit=${Math.min(limit, 250)}&page=${Math.max(page, 1)}`,\n    { headers: { Accept: \"application/json\" } }\n  );\n  if (!response.ok) throw new Error(`Could not load ${safeHandle}`);\n  const data = await response.json();\n  return data.products || [];\n};\n\nconst fetchAllCollectionProducts = async (handle, maxPages = 12) => {\n  const pages = [];\n  for (let page = 1; page <= maxPages; page += 1) {\n    const products = await fetchCollectionProducts(handle, 250, page);\n    if (!products.length) break;\n    pages.push(...products);\n    if (products.length < 250) break;\n  }\n  const seen = new Set();\n  return pages.filter((product) => {\n    const key = product.handle || product.id;\n    if (!key || seen.has(key)) return false;\n    seen.add(key);\n    return true;\n  });\n};\n\nconst withPopularityScores = (products, popularityProducts = []) => {\n  const scoreByHandle = new Map(popularityProducts.map((product) => [product.handle, product]));\n  return products.map((product) => {\n    const matched = scoreByHandle.get(product.handle);\n    return matched ? { ...product, ...matched, variants: product.variants || matched.variants || [] } : product;\n  });\n};\n\nconst productImageUrl = (product) => {\n  const image = product?.featured_image\n    || product?.image\n    || product?.images?.[0]\n    || product?.media?.[0]?.preview_image\n    || product?.media?.[0];\n  if (!image) return \"\";\n  if (typeof image === \"string\") return image;\n  return image.src || image.url || image.preview_image?.src || \"\";\n};\n\nconst hasProductImage = (product) => Boolean(productImageUrl(product));\n\nconst currentProductHandle = () => location.pathname.match(/\\/products\\/([^/?#]+)/)?.[1] || \"\";\n\nconst fetchProductByHandle = async (handle) => {\n  if (!handle) return null;\n  if (productByHandleCache.has(handle)) return productByHandleCache.get(handle);\n  const promise = fetch(`/products/${encodeURIComponent(handle)}.js`, { headers: { Accept: \"application/json\" } })\n    .then((response) => (response.ok ? response.json() : null))\n    .catch(() => null);\n  productByHandleCache.set(handle, promise);\n  return promise;\n};\n\nconst applyDefaultBestSellingSort = () => {\n  /* Collection pages are populated in-place from tag/category matches and popularity score. */\n};\n\nconst specificTermsForHandle = (handle, title = \"\") => {\n  const genericTerms = new Set([\n    \"all\", \"collections\", \"collection\", \"products\", \"product\", \"designer\", \"designers\",\n    \"top\", \"tops\", \"top-50\", \"50\", \"under\", \"sale\", \"new\", \"drop\", \"drops\",\n    \"apparel\", \"clothing\", \"sneakers\", \"sneaker\", \"shoes\", \"shoe\", \"footwear\",\n    \"watches\", \"watch\", \"accessories\", \"accessory\", \"bags\", \"bag\", \"perfumes\", \"perfume\", \"beauty\"\n  ]);\n  return [...new Set(\n    `${handle || \"\"} ${title || \"\"}`\n      .toLowerCase()\n      .replace(/[^a-z0-9]+/g, \" \")\n      .split(/\\s+/)\n      .map((term) => term.trim())\n      .filter((term) => term && !genericTerms.has(term))\n  )];\n};\n\nconst productMatchesTerms = (product, terms, rules = {}) => {\n  if (rules.priceMax && (!(Number(product.price || 0) > 0) || Number(product.price || 0) > rules.priceMax)) return false;\n  if (rules.saleMode && !productMatchesSale(product)) return false;\n  if (rules.brandTerms?.length && !productMatchesBrand(product, rules.brandTerms)) return false;\n  if (rules.categoryKeys?.length && !productMatchesCategory(product, rules.categoryKeys)) return false;\n  if (rules.specificTerms?.length) {\n    const tokens = productTokens(product);\n    if (!rules.specificTerms.every((term) => tokens.includes(term))) return false;\n  }\n  if (!rules.categoryKeys?.length && terms.length) {\n    const tokens = productTokens(product);\n    if (!terms.every((term) => tokens.includes(term))) return false;\n  }\n  return true;\n};\n\nconst collectionRulesForPlp = (handle, title = \"\", chips = \"\") => {\n  const under = String(handle || \"\").match(/under[-_]?(\\d+)/i);\n  const intent = intentFromContext(handle, title, chips);\n  return {\n    priceMax: under ? Number(under[1]) || 0 : 0,\n    maxItems: String(handle || \"\").includes(\"top-50\") ? 50 : 0,\n    brandKeys: intent.brandKeys,\n    brandTerms: intent.brandTerms,\n    categoryKeys: intent.categoryKeys,\n    saleMode: intent.saleMode,\n    specificTerms: specificTermsForHandle(handle, title).filter((term) => !intent.brandTerms.includes(term) && !intent.categoryTerms.includes(term))\n  };\n};\n\nconst sortProductsForPlp = (products, sortBy) => {\n  const sorted = [...products];\n  switch (sortBy) {\n    case \"title-ascending\":\n      return sorted.sort((a, b) => String(a.title).localeCompare(String(b.title)));\n    case \"title-descending\":\n      return sorted.sort((a, b) => String(b.title).localeCompare(String(a.title)));\n    case \"price-ascending\":\n      return sorted.sort((a, b) => Number(a.price || 0) - Number(b.price || 0));\n    case \"price-descending\":\n      return sorted.sort((a, b) => Number(b.price || 0) - Number(a.price || 0));\n    case \"created-ascending\":\n      return sorted.sort((a, b) => Date.parse(a.created_at || 0) - Date.parse(b.created_at || 0));\n    case \"created-descending\":\n      return sorted.sort((a, b) => Date.parse(b.created_at || 0) - Date.parse(a.created_at || 0));\n    case \"best-selling\":\n    case \"manual\":\n    default:\n      return sorted.sort((a, b) => popularityScore(b) - popularityScore(a));\n  }\n};\n\nconst selectedClientFilters = (plp) => {\n  const values = {};\n  plp.querySelectorAll(\"[data-client-filter]:checked\").forEach((input) => {\n    const key = input.getAttribute(\"data-client-filter\");\n    if (!values[key]) values[key] = new Set();\n    values[key].add(input.value.toLowerCase());\n  });\n  return values;\n};\n\nconst applyClientFilters = (products, filters) => products.filter((product) => {\n  const tokens = productTokens(product);\n  if (filters.vendor?.size && !filters.vendor.has(String(product.vendor || \"\").toLowerCase())) return false;\n  if (filters.type?.size && !filters.type.has(String(product.product_type || \"\").toLowerCase())) return false;\n  if (filters.tag?.size && !Array.from(filters.tag).some((tag) => tokens.includes(tag))) return false;\n  if (filters.available?.size) {\n    const inStock = Boolean(product.available ?? product.variants?.some((variant) => variant.available));\n    if (filters.available.has(\"1\") && !inStock) return false;\n    if (filters.available.has(\"0\") && inStock) return false;\n  }\n  if (filters.priceMin && Number(product.price || 0) < filters.priceMin) return false;\n  if (filters.priceMax && Number(product.price || 0) > filters.priceMax) return false;\n  return true;\n});\n\nconst selectedUrlFilters = () => {\n  const params = new URLSearchParams(window.location.search);\n  const filters = {};\n  params.forEach((value, key) => {\n    const lowerKey = key.toLowerCase();\n    const lowerValue = String(value || \"\").toLowerCase();\n    if (lowerKey.includes(\"vendor\")) {\n      if (!filters.vendor) filters.vendor = new Set();\n      filters.vendor.add(lowerValue);\n    } else if (lowerKey.includes(\"product_type\")) {\n      if (!filters.type) filters.type = new Set();\n      filters.type.add(lowerValue);\n    } else if (lowerKey.includes(\"tag\")) {\n      if (!filters.tag) filters.tag = new Set();\n      filters.tag.add(lowerValue);\n    } else if (lowerKey.includes(\"availability\") || lowerKey.includes(\"available\")) {\n      if (!filters.available) filters.available = new Set();\n      filters.available.add(lowerValue);\n    } else if (lowerKey.includes(\"price\") && (lowerKey.includes(\"gte\") || lowerKey.includes(\"min\"))) {\n      filters.priceMin = Number(value || 0) || 0;\n    } else if (lowerKey.includes(\"price\") && (lowerKey.includes(\"lte\") || lowerKey.includes(\"max\"))) {\n      filters.priceMax = Number(value || 0) || 0;\n    }\n  });\n  return filters;\n};\n\nconst extractProductHandlesFromHtml = (html) => {\n  const seen = new Set();\n  const handles = [];\n  try {\n    const doc = new DOMParser().parseFromString(html, \"text/html\");\n    doc.querySelectorAll('[data-product-grid] .ff-product-card a[href*=\"/products/\"]').forEach((link) => {\n      const match = link.getAttribute(\"href\")?.match(/\\/products\\/([^/?#]+)/);\n      const handle = match?.[1];\n      if (!handle || seen.has(handle)) return;\n      seen.add(handle);\n      handles.push(handle);\n    });\n  } catch {\n    const matches = html.match(/\\/products\\/([^\"'?#]+)/g) || [];\n    matches.forEach((match) => {\n      const handle = match.replace(\"/products/\", \"\");\n      if (!handle || seen.has(handle)) return;\n      seen.add(handle);\n      handles.push(handle);\n    });\n  }\n  return handles;\n};\n\nconst fetchAllSearchHandles = async (baseUrl, pageSize = 24, maxPages = 12) => {\n  const handles = [];\n  const seen = new Set();\n  for (let page = 1; page <= maxPages; page += 1) {\n    const pageUrl = new URL(baseUrl.toString());\n    if (page > 1) pageUrl.searchParams.set(\"page\", String(page));\n    else pageUrl.searchParams.delete(\"page\");\n    const response = await fetch(pageUrl.toString(), { headers: { Accept: \"text/html\" } });\n    if (!response.ok) break;\n    const html = await response.text();\n    const pageHandles = extractProductHandlesFromHtml(html);\n    pageHandles.forEach((handle) => {\n      if (!handle || seen.has(handle)) return;\n      seen.add(handle);\n      handles.push(handle);\n    });\n    if (!pageHandles.length || pageHandles.length < pageSize) break;\n  }\n  return handles;\n};\n\nconst searchQueryTokens = (value) => String(value || \"\")\n  .toLowerCase()\n  .replace(/[^a-z0-9]+/g, \" \")\n  .split(/\\s+/)\n  .map((token) => token.trim())\n  .filter((token) => token.length > 1);\n\nconst productMatchesSearchQuery = (product, query) => {\n  const tokens = searchQueryTokens(query);\n  if (!tokens.length) return true;\n  const haystack = [\n    product?.handle,\n    product?.title,\n    product?.vendor,\n    product?.product_type,\n    ...(Array.isArray(product?.tags) ? product.tags : String(product?.tags || \"\").split(\",\"))\n  ]\n    .join(\" \")\n    .toLowerCase()\n    .replace(/[^a-z0-9]+/g, \" \");\n  return tokens.every((token) => haystack.includes(token));\n};\n\nconst buildClientFilterOptions = (products) => {\n  const collect = (getter) => {\n    const counts = new Map();\n    products.forEach((product) => {\n      const raw = getter(product);\n      const values = Array.isArray(raw) ? raw : [raw];\n      values.forEach((value) => {\n        const label = String(value || \"\").trim();\n        if (!label || [\"lux-outlet\", \"sourcex\"].includes(label.toLowerCase())) return;\n        counts.set(label, (counts.get(label) || 0) + 1);\n      });\n    });\n    return Array.from(counts.entries()).sort((a, b) => b[1] - a[1]).slice(0, 20);\n  };\n  return {\n    Brand: [\"vendor\", collect((product) => product.vendor)],\n    \"Product type\": [\"type\", collect((product) => product.product_type)],\n    More: [\"tag\", collect((product) => product.tags)]\n  };\n};\n\nconst clientFilterMarkup = (products) => {\n  const groups = buildClientFilterOptions(products);\n  return Object.entries(groups).map(([label, [key, options]], index) => `\n    <details ${index === 0 ? \"open\" : \"\"}>\n      <summary>${escapeHtml(label)}</summary>\n      ${options.map(([option, count]) => `\n        <label>\n          <input type=\"checkbox\" value=\"${escapeHtml(option)}\" data-client-filter=\"${key}\">\n          <span>${escapeHtml(option)}</span>\n          <small>${count}</small>\n        </label>\n      `).join(\"\")}\n    </details>\n  `).join(\"\");\n};\n\nconst mobileClientFilterMarkup = (products) => {\n  const groups = buildClientFilterOptions(products);\n  return Object.entries(groups).slice(0, 3).map(([label, [key, options]]) => `\n    <details class=\"ff-mobile-filter-menu\">\n      <summary>${escapeHtml(label)} <span>?</span></summary>\n      <div class=\"ff-mobile-filter-menu__panel\">\n        ${options.slice(0, 16).map(([option]) => `\n          <label>\n            <input type=\"checkbox\" value=\"${escapeHtml(option)}\" data-client-filter=\"${key}\">\n            <span>${escapeHtml(option)}</span>\n          </label>\n        `).join(\"\")}\n      </div>\n    </details>\n  `).join(\"\");\n};\n\nconst initPopularityPlp = async () => {\n  const plp = document.querySelector(\"[data-plp-popularity]\");\n  const grid = plp?.querySelector(\"[data-product-grid]\");\n  if (!plp || !grid || plp.dataset.popularityReady === \"true\") return;\n\n  const url = new URL(window.location.href);\n  const isSearchRoute = url.pathname === \"/search\" || url.searchParams.has(\"q\");\n  const handle = plp.getAttribute(\"data-collection-handle\") || location.pathname.match(/\\/collections\\/([^/?#]+)/)?.[1] || \"all\";\n  const title = plp.getAttribute(\"data-collection-title\") || \"\";\n  const chips = plp.getAttribute(\"data-filter-chips\") || \"\";\n  const isSearchMode = plp.getAttribute(\"data-search-mode\") === \"true\" || isSearchRoute;\n  const intent = collectionRulesForPlp(handle, title, chips);\n  const terms = intent.categoryTerms || [];\n  const searchTerms = plp.getAttribute(\"data-search-terms\") || url.searchParams.get(\"q\") || \"\";\n  plp.dataset.popularityReady = \"true\";\n  const cleanUrl = new URL(window.location.href);\n  if (cleanUrl.searchParams.get(\"sort_by\") === \"best-selling\") {\n    cleanUrl.searchParams.delete(\"sort_by\");\n    window.history.replaceState(window.history.state, \"\", cleanUrl.toString());\n  }\n\n  if (isSearchMode) {\n    const allProducts = await loadPopularityProducts();\n    const countNode = plp.querySelector(\".ff-plp__count\");\n    const nativeTotalCount = Math.max(0, Number(plp.getAttribute(\"data-total-results\") || 0) || 0);\n    const pagination = plp.querySelector(\"[data-pagination]\") || plp.querySelector(\".ff-pagination\");\n    const pageSize = Math.max(24, grid.querySelectorAll(\".ff-product-card\").length || 24);\n    let visibleCount = pageSize;\n    const renderSearchResults = () => {\n      if (!searchQueryTokens(searchTerms).length) return;\n      const sortSelect = plp.querySelector(\"[data-sort-select]\");\n      const selectedSort = sortSelect?.value || \"best-selling\";\n      const normalizedSort = selectedSort === \"relevance\" ? \"best-selling\" : selectedSort;\n      const filters = { ...selectedUrlFilters(), ...selectedClientFilters(plp) };\n      const matchedProducts = allProducts.filter((product) => productMatchesSearchQuery(product, searchTerms));\n      const filtered = applyClientFilters(matchedProducts, filters);\n      const sorted = sortProductsForPlp(filtered, normalizedSort);\n      const page = sorted.slice(0, visibleCount);\n      if (countNode) countNode.textContent = `${filtered.length || nativeTotalCount} Items`;\n      grid.innerHTML = page.length ? page.map(homeRailProductCard).join(\"\") : `<p>No products found for \"${escapeHtml(searchTerms)}\".</p>`;\n      if (pagination) {\n        pagination.innerHTML = sorted.length > visibleCount\n          ? '<button class=\"ff-view-more\" type=\"button\" data-client-view-more>View More</button>'\n          : \"\";\n      }\n      window.__luxePopularitySearch = {\n        query: searchTerms,\n        nativeTotal: nativeTotalCount,\n        total: filtered.length,\n        visible: page.length,\n        first: page.slice(0, 12).map((product) => ({\n          handle: product.handle,\n          title: product.title,\n          vendor: product.vendor,\n          score: popularityScore(product)\n        }))\n      };\n      setWishlistState();\n      window.__luxePostAppendPlp = renderSearchResults;\n    };\n\n    plp.addEventListener(\"change\", (event) => {\n      if (!event.target.closest(\"[data-sort-select]\")) return;\n      visibleCount = pageSize;\n      renderSearchResults();\n    });\n    plp.addEventListener(\"click\", (event) => {\n      if (!event.target.closest(\"[data-client-view-more]\")) return;\n      event.preventDefault();\n      visibleCount += pageSize;\n      renderSearchResults();\n    });\n    renderSearchResults();\n    return;\n  }\n\n  const popularityProducts = await loadPopularityProducts();\n  const rules = intent;\n  let baseProducts = [];\n  try {\n    const collectionProducts = await fetchAllCollectionProducts(handle);\n    baseProducts = withPopularityScores(collectionProducts, popularityProducts).filter((product) => productMatchesTerms(product, terms, rules));\n  } catch (error) {\n    console.warn(\"[Luxe] Falling back to popularity dataset for collection page\", handle, error);\n    baseProducts = popularityProducts.filter((product) => productMatchesTerms(product, terms, rules));\n  }\n  if (rules.maxItems) baseProducts = sortProductsForPlp(baseProducts, \"best-selling\").slice(0, rules.maxItems);\n  const countNode = plp.querySelector(\".ff-plp__count\");\n  const pagination = plp.querySelector(\"[data-pagination]\") || plp.querySelector(\".ff-pagination\");\n  const pageSize = Math.max(24, grid.querySelectorAll(\".ff-product-card\").length || 24);\n  let visibleCount = pageSize;\n\n  const render = () => {\n    const sortSelect = plp.querySelector(\"[data-sort-select]\");\n    const filters = selectedUrlFilters();\n    const filtered = applyClientFilters(baseProducts, filters);\n    const selectedSort = sortSelect?.value || \"best-selling\";\n    const normalizedSort = selectedSort === \"relevance\" ? \"best-selling\" : selectedSort;\n    const sorted = sortProductsForPlp(filtered, normalizedSort);\n    const page = sorted.slice(0, visibleCount);\n    grid.innerHTML = page.map(homeRailProductCard).join(\"\");\n    plp.dataset.popularityRendered = \"true\";\n    window.__luxePopularityPlp = {\n      handle,\n      terms,\n      baseCount: baseProducts.length,\n      filteredCount: filtered.length,\n      visibleCount: page.length,\n      first: page.slice(0, 8).map((product) => ({\n        handle: product.handle,\n        title: product.title,\n        vendor: product.vendor,\n        score: popularityScore(product)\n      }))\n    };\n    if (countNode) countNode.textContent = `${filtered.length} Items`;\n    if (pagination) {\n      pagination.innerHTML = sorted.length > visibleCount\n        ? '<button class=\"ff-view-more\" type=\"button\" data-client-view-more>View More</button>'\n        : \"\";\n    }\n    setWishlistState();\n  };\n\n  plp.addEventListener(\"change\", (event) => {\n    if (!event.target.closest(\"[data-sort-select]\")) return;\n    visibleCount = pageSize;\n    render();\n  });\n  plp.addEventListener(\"click\", (event) => {\n    if (event.target.closest(\"[data-client-view-more]\")) {\n      event.preventDefault();\n      visibleCount += pageSize;\n      render();\n    }\n    if (event.target.closest(\"[data-client-filter-apply]\")) {\n      event.preventDefault();\n      render();\n    }\n  });\n  render();\n};\n\nconst ensureMobileSearch = () => {\n  const header = document.querySelector(\".ff-header__mobile\");\n  if (!header || header.querySelector(\"[data-mobile-search-form]\")) return;\n\n  const searchLink = header.querySelector('a.ff-icon-button[href=\"/search\"], a.ff-icon-button[href^=\"/search?\"]');\n  if (!searchLink) return;\n\n  const iconHtml = searchLink.innerHTML;\n  const button = document.createElement(\"button\");\n  button.className = searchLink.className;\n  button.type = \"button\";\n  button.setAttribute(\"data-mobile-search-open\", \"\");\n  button.setAttribute(\"aria-label\", searchLink.getAttribute(\"aria-label\") || \"Search\");\n  button.innerHTML = iconHtml;\n  searchLink.replaceWith(button);\n\n  const form = document.createElement(\"form\");\n  form.className = \"ff-mobile-search\";\n  form.action = \"/search\";\n  form.method = \"get\";\n  form.role = \"search\";\n  form.setAttribute(\"data-mobile-search-form\", \"\");\n  form.innerHTML = `\n    <input type=\"hidden\" name=\"type\" value=\"product\">\n    ${iconHtml}\n    <input type=\"search\" name=\"q\" placeholder=\"Search\" autocomplete=\"off\" data-mobile-search-input>\n    <button class=\"ff-icon-button\" type=\"button\" data-mobile-search-close aria-label=\"Close search\">\u00EF\u00BF\u00BD</button>\n  `;\n  header.appendChild(form);\n};\n\nconst normalizePdpMedia = () => {\n  const gallery = document.querySelector(\".ff-pdp__media\");\n  if (!gallery || gallery.dataset.luxePdpMediaExpanded === \"true\") return;\n\n  const images = Array.from(gallery.querySelectorAll(\":scope > .ff-pdp__image\"));\n  if (images.length <= 5) return;\n\n  let more = gallery.querySelector(\".ff-pdp__media-more\");\n  if (!more) {\n    more = document.createElement(\"div\");\n    more.className = \"ff-pdp__media-more\";\n    more.innerHTML = '<button type=\"button\" class=\"ff-pdp__view-more\" data-pdp-media-view-more>View More</button>';\n  }\n\n  const moreButton = more.querySelector(\"[data-pdp-media-view-more]\");\n  if (moreButton) {\n    moreButton.style.setProperty(\"display\", \"inline-flex\", \"important\");\n    moreButton.style.setProperty(\"align-items\", \"center\", \"important\");\n    moreButton.style.setProperty(\"justify-content\", \"center\", \"important\");\n  }\n\n  images.forEach((image, index) => {\n    if (index > 3) {\n      image.hidden = true;\n      image.classList.add(\"is-hidden\");\n      image.setAttribute(\"data-pdp-extra-media\", \"\");\n    } else {\n      image.hidden = false;\n      image.classList.remove(\"is-hidden\");\n      image.removeAttribute(\"data-pdp-extra-media\");\n    }\n  });\n\n  images[3].after(more);\n};\n\nconst homeRailProductCard = (product) => {\n  const image = productImageUrl(product);\n  const price = Number(product.variants?.[0]?.price || product.price || 0);\n  const compare = Number(product.variants?.[0]?.compare_at_price || product.compare_at_price || (price ? price * 1.5 : 0));\n  const title = escapeHtml(product.title);\n  const vendor = escapeHtml(product.vendor || \"\");\n  const url = `/products/${product.handle}`;\n  return `\n    <article class=\"ff-product-card\" data-product-card data-product-id=\"${product.id || \"\"}\">\n      <div class=\"ff-product-card__media-wrap\">\n        <a class=\"ff-product-card__media\" href=\"${url}\" aria-label=\"${title}\">\n          ${image ? `<img src=\"${image}\" alt=\"${title}\" loading=\"lazy\" sizes=\"(max-width: 749px) 58vw, 25vw\">` : '<div class=\"ff-placeholder\" aria-hidden=\"true\"></div>'}\n        </a>\n      </div>\n      <a class=\"ff-product-card__info\" href=\"${url}\">\n        ${vendor ? `<span class=\"ff-product-card__vendor\">${vendor}</span>` : \"\"}\n        <span class=\"ff-product-card__title\" title=\"${title}\">${title}</span>\n        <span class=\"ff-product-card__price\">\n          ${compare ? `<s>${formatStorefrontPrice(compare)}</s>` : \"\"}\n          ${price ? `<strong>${formatStorefrontPrice(price)}</strong>` : \"\"}\n        </span>\n      </a>\n    </article>\n  `;\n};\n\nconst hydrateEmptyHomeProductRails = async () => {\n  const rails = Array.from(document.querySelectorAll(\".ff-home .ff-product-rail\"));\n  await Promise.all(rails.map(async (rail) => {\n    const existingHandles = new Set(\n      Array.from(rail.querySelectorAll('.ff-product-card a[href*=\"/products/\"]'))\n        .map((link) => link.getAttribute(\"href\")?.match(/\\/products\\/([^/?#]+)/)?.[1])\n        .filter(Boolean)\n    );\n    const sectionHeading = rail.closest(\".ff-home-rail\")?.querySelector(\".ff-section-heading h2, h2\")?.textContent?.trim().toLowerCase() || \"\";\n    let requestedHandle = rail.getAttribute(\"data-collection-handle\") || \"\";\n    const railTags = rail.getAttribute(\"data-rail-tags\") || \"\";\n    if ((requestedHandle === \"all\" || requestedHandle === \"sneakers-auto\") && sectionHeading.includes(\"sneaker\")) {\n      requestedHandle = \"sneakers\";\n    }\n    if (!requestedHandle) {\n      if (sectionHeading.includes(\"drop\")) requestedHandle = \"luxe-sale\";\n      else if (sectionHeading.includes(\"new\")) requestedHandle = \"new\";\n      else if (sectionHeading.includes(\"sneaker\")) requestedHandle = \"sneakers\";\n      else if (sectionHeading.includes(\"bag\") || sectionHeading.includes(\"accessor\")) requestedHandle = \"bags-edit\";\n      else if (sectionHeading.includes(\"offer\") || sectionHeading.includes(\"sale\")) requestedHandle = \"luxe-sale\";\n      else requestedHandle = \"all\";\n    }\n    const limit = Number(rail.getAttribute(\"data-product-limit\") || 12);\n    const minimumCards = Math.max(limit || 12, 8);\n    const rules = collectionRulesForPlp(requestedHandle, sectionHeading, railTags);\n\n    const handles = requestedHandle && requestedHandle !== \"all\"\n      ? [requestedHandle]\n      : [...new Set([requestedHandle, \"new\", \"luxe-sale\", \"all\"].filter(Boolean))];\n    const collected = [];\n    for (const handle of handles) {\n      try {\n        const products = await fetchCollectionProducts(handle);\n        products.forEach((product) => {\n          if (product.handle && !collected.some((item) => item.handle === product.handle)) collected.push(product);\n        });\n      } catch {\n        /* Try the next fallback collection. */\n      }\n    }\n    const ranked = sortProductsForPlp(\n      collected.filter((product) => productMatchesTerms(product, rules.categoryTerms || [], rules)),\n      \"best-selling\"\n    )\n      .filter((product) => product.handle)\n      .slice(0, minimumCards);\n    if (ranked.length) {\n      rail.innerHTML = ranked.map(homeRailProductCard).join(\"\");\n      ranked.forEach((product) => existingHandles.add(product.handle));\n    }\n  }));\n  fixHomeRailScroll();\n};\n\nconst populatePdpRecommendations = async () => {\n  const handle = currentProductHandle();\n  if (!handle || document.documentElement.dataset.luxeRecommendationsReady === \"true\") return;\n  const tracks = Array.from(document.querySelectorAll(\".ff-pdp-rail__track\"));\n  if (!tracks.length) return;\n  document.documentElement.dataset.luxeRecommendationsReady = \"true\";\n\n  let currentProduct;\n  try {\n    currentProduct = await fetch(`/products/${encodeURIComponent(handle)}.js`, { headers: { Accept: \"application/json\" } }).then((response) => response.json());\n  } catch {\n    currentProduct = null;\n  }\n  if (!currentProduct) return;\n\n    const collectionHandle = document.querySelector('.ff-pdp__breadcrumbs a[href*=\"/collections/\"]')?.getAttribute(\"href\")?.match(/\\/collections\\/([^/?#]+)/)?.[1]\n    || document.querySelector('.ff-breadcrumbs a[href*=\"/collections/\"]')?.getAttribute(\"href\")?.match(/\\/collections\\/([^/?#]+)/)?.[1]\n    || \"all\";\n    const brandHandle = handleize(currentProduct.vendor);\n    const popularityProducts = await loadPopularityProducts().catch(() => []);\n\n  await Promise.all(tracks.map(async (track) => {\n    const isBrandRail = Boolean(track.closest(\".ff-pdp-rail--brand\"));\n    const collectionRules = collectionRulesForPlp(collectionHandle, collectionHandle.replace(/-/g, \" \"));\n    let ranked = [];\n    if (isBrandRail) {\n      const brandSources = [];\n      for (const collection of [...new Set([brandHandle, collectionHandle].filter(Boolean))]) {\n        try {\n          const products = await fetchAllCollectionProducts(collection, 6);\n          brandSources.push(...products);\n        } catch {\n          /* Keep the existing Liquid recommendations if this source is unavailable. */\n        }\n      }\n      const normalizeBrandProducts = (products, requireCategory) => {\n        const seen = new Set();\n        return products\n          .filter((product) => product.handle && product.handle !== handle)\n          .filter((product) => productMatchesBrand(product, [currentProduct.vendor]))\n          .filter((product) => {\n            if (!requireCategory || !collectionRules.categoryKeys.length) return true;\n            return productMatchesCategory(product, collectionRules.categoryKeys);\n          })\n          .filter(hasProductImage)\n          .filter((product) => {\n            const key = product.handle;\n            if (seen.has(key)) return false;\n            seen.add(key);\n            return true;\n          });\n      };\n      const sameCategoryBrandProducts = normalizeBrandProducts([...brandSources, ...popularityProducts], true);\n      const anyBrandProducts = normalizeBrandProducts([...brandSources, ...popularityProducts], false);\n      ranked = sortProductsForPlp(\n        sameCategoryBrandProducts.length >= 4 ? sameCategoryBrandProducts : anyBrandProducts,\n        \"best-selling\"\n      ).slice(0, 16);\n    } else {\n      let recommendationProducts = [];\n      try {\n        const response = await fetch(`/recommendations/products.json?product_id=${encodeURIComponent(currentProduct.id)}&limit=14&intent=related`, {\n          headers: { Accept: \"application/json\" }\n        });\n        const data = response.ok ? await response.json() : { products: [] };\n        recommendationProducts = data.products || [];\n      } catch {\n        recommendationProducts = [];\n      }\n      const seen = new Set();\n      ranked = sortProductsForPlp(\n        [...recommendationProducts, ...popularityProducts]\n          .filter((product) => product.handle && product.handle !== handle)\n          .filter((product) => !collectionRules.categoryKeys.length || productMatchesCategory(product, collectionRules.categoryKeys))\n          .filter(hasProductImage)\n          .filter((product) => {\n            const key = product.handle;\n            if (seen.has(key)) return false;\n            seen.add(key);\n            return true;\n          }),\n        \"best-selling\"\n      ).slice(0, 14);\n    }\n    if (ranked.length) {\n      track.innerHTML = ranked.map(homeRailProductCard).join(\"\");\n    }\n  }));\n  fixHomeRailScroll();\n};\n\nconst ensureSideCart = () => {\n  let overlay = document.querySelector(\"[data-side-cart-overlay]\");\n  let drawer = document.querySelector(\"[data-side-cart]\");\n  if (overlay && drawer) return drawer;\n\n  overlay = document.createElement(\"button\");\n  overlay.type = \"button\";\n  overlay.className = \"ff-side-cart-overlay\";\n  overlay.setAttribute(\"data-side-cart-overlay\", \"\");\n  overlay.setAttribute(\"aria-label\", \"Close shopping bag\");\n\n  drawer = document.createElement(\"aside\");\n  drawer.className = \"ff-side-cart\";\n  drawer.setAttribute(\"data-side-cart\", \"\");\n  drawer.setAttribute(\"aria-label\", \"Shopping bag\");\n  drawer.innerHTML = `\n    <div class=\"ff-side-cart__header\">\n      <h2 class=\"ff-side-cart__title\">Shopping Bag</h2>\n      <button class=\"ff-side-cart__close\" type=\"button\" data-side-cart-close aria-label=\"Close shopping bag\">&times;</button>\n    </div>\n    <div class=\"ff-side-cart__body\" data-side-cart-body></div>\n    <div class=\"ff-side-cart__footer\" data-side-cart-footer></div>\n  `;\n\n  document.body.append(overlay, drawer);\n  return drawer;\n};\n\nconst closeSideCart = () => {\n  document.body.classList.remove(\"ff-side-cart-open\");\n};\n\nconst renderSideCart = (cart) => {\n  const drawer = ensureSideCart();\n  const body = drawer.querySelector(\"[data-side-cart-body]\");\n  const footer = drawer.querySelector(\"[data-side-cart-footer]\");\n  const count = document.querySelector(\"[data-cart-count]\");\n  if (count) count.textContent = cart.item_count;\n\n  if (!cart.items.length) {\n    body.innerHTML = \"<p>Your shopping bag is empty.</p>\";\n    footer.innerHTML = '<a class=\"ff-side-cart__view\" href=\"/collections/all\">Continue shopping</a>';\n    return;\n  }\n\n  body.innerHTML = cart.items.map((item) => `\n    <article class=\"ff-side-cart__item\">\n      ${item.image ? `<img src=\"${item.image}\" alt=\"${item.product_title}\">` : \"\"}\n      <div class=\"ff-side-cart__item-main\">\n        <div class=\"ff-side-cart__item-top\">\n          <div class=\"ff-side-cart__item-title\">${item.product_title}</div>\n          <button class=\"ff-side-cart__remove\" type=\"button\" data-side-cart-remove=\"${item.key}\">Remove</button>\n        </div>\n        <div class=\"ff-side-cart__item-meta\">${item.variant_title || \"\"}</div>\n        <div class=\"ff-side-cart__item-bottom\">\n          <div class=\"ff-side-cart__qty\" style=\"display:inline-flex;align-items:center;border:1px solid var(--ff-border,#e2e2e2);border-radius:8px;overflow:hidden;\"><button type=\"button\" data-side-cart-minus=\"${item.key}\" aria-label=\"Decrease quantity\" style=\"width:30px;height:30px;border:0;background:transparent;cursor:pointer;font-size:17px;line-height:1;color:inherit;\">&minus;</button><span class=\"ff-side-cart__qty-val\" style=\"min-width:30px;text-align:center;font-size:13px;font-variant-numeric:tabular-nums;\">${item.quantity}</span><button type=\"button\" data-side-cart-plus=\"${item.key}\" aria-label=\"Increase quantity\" style=\"width:30px;height:30px;border:0;background:transparent;cursor:pointer;font-size:16px;line-height:1;color:inherit;\">+</button></div>\n          <div class=\"ff-side-cart__item-price\">${money(item.final_line_price)}</div>\n        </div>\n      </div>\n    </article>\n  `).join(\"\");\n\n  footer.innerHTML = `\n    <p class=\"ff-side-cart__subtotal\"><span>Estimated Total</span><span>${money(cart.total_price)}</span></p>\n    <a class=\"ff-side-cart__checkout\" href=\"/checkout\">Check out</a>\n  `;\n};\n\nconst openSideCart = async () => {\n  const cart = await fetch(\"/cart.js\", { headers: { Accept: \"application/json\" } }).then((response) => response.json());\n  renderSideCart(cart);\n  document.body.classList.add(\"ff-side-cart-open\");\n};\n\nconst removeSideCartItem = async (key) => {\n  if (!key) return;\n  const response = await fetch(\"/cart/change.js\", {\n    method: \"POST\",\n    headers: {\n      \"Content-Type\": \"application/json\",\n      Accept: \"application/json\"\n    },\n    body: JSON.stringify({ id: key, quantity: 0 })\n  });\n  if (!response.ok) throw new Error(\"Could not remove item from cart\");\n  const cart = await response.json();\n  renderSideCart(cart);\n};\n\nconst updateSideCartQty = async (key, quantity) => {\n  if (!key) return;\n  const response = await fetch(\"/cart/change.js\", {\n    method: \"POST\",\n    headers: { \"Content-Type\": \"application/json\", Accept: \"application/json\" },\n    body: JSON.stringify({ id: key, quantity: Math.max(0, quantity) })\n  });\n  const cart = response.ok\n    ? await response.json()\n    : await fetch(\"/cart.js\", { headers: { Accept: \"application/json\" } }).then((r) => r.json());\n  renderSideCart(cart);\n};\n\nconst initAjaxCart = () => {\n  document.querySelectorAll(\"[data-product-form]\").forEach((form) => {\n    form.addEventListener(\"submit\", async (event) => {\n      if (!window.matchMedia(\"(min-width: 990px)\").matches) return;\n      event.preventDefault();\n      const submit = form.querySelector('button[type=\"submit\"]');\n      const previous = submit?.textContent;\n      if (submit) {\n        submit.disabled = true;\n        submit.textContent = \"Adding...\";\n      }\n      try {\n        const response = await fetch(\"/cart/add.js\", {\n          method: \"POST\",\n          headers: { Accept: \"application/json\" },\n          body: new FormData(form)\n        });\n        if (!response.ok) throw new Error(\"Could not add item to cart\");\n        await openSideCart();\n      } catch {\n        form.submit();\n      } finally {\n        if (submit) {\n          submit.disabled = false;\n          submit.textContent = previous || \"Add to bag\";\n        }\n      }\n    });\n  });\n};\n\nconst initHomeProductCarousel = () => {\n  document.querySelectorAll(\"[data-home-product-carousel]\").forEach((carousel) => {\n    const slides = Array.from(carousel.querySelectorAll(\"[data-home-product-slide]\"));\n    const dots = Array.from(carousel.querySelectorAll(\"[data-home-product-dot]\"));\n    if (!slides.length) return;\n\n    let active = Math.floor((slides.length - 1) / 2);\n    const render = () => {\n      slides.forEach((slide, index) => {\n        const offset = index - active;\n        slide.classList.toggle(\"is-active\", index === active);\n        slide.style.setProperty(\"--offset\", offset);\n        slide.style.setProperty(\"--abs-offset\", Math.abs(offset));\n      });\n      dots.forEach((dot, index) => dot.classList.toggle(\"is-active\", index === active));\n    };\n\n    dots.forEach((dot, index) => dot.addEventListener(\"click\", () => {\n      active = index;\n      render();\n    }));\n\n    carousel.addEventListener(\"click\", (event) => {\n      const slide = event.target.closest(\"[data-home-product-slide]\");\n      if (!slide || slide.classList.contains(\"is-active\")) return;\n      event.preventDefault();\n      active = slides.indexOf(slide);\n      render();\n    });\n\n    render();\n  });\n};\n\nconst initHeroBannerCarousel = () => {\n  document.querySelectorAll(\"[data-hero-carousel]\").forEach((section) => {\n    if (section.dataset.heroCarouselReady === \"true\") return;\n    section.dataset.heroCarouselReady = \"true\";\n\n    const rail = section.querySelector(\"[data-hero-rail]\");\n    const prev = section.querySelector(\"[data-hero-prev]\");\n    const next = section.querySelector(\"[data-hero-next]\");\n    if (!rail) return;\n\n    let paused = false;\n    let resumeTimer;\n    const step = () => {\n      const firstSlide = rail.querySelector(\".ff-luxe-hero__banner\");\n      if (!firstSlide) return rail.clientWidth;\n      return firstSlide.getBoundingClientRect().width;\n    };\n\n    const sync = () => {\n      const canScroll = rail.scrollWidth > rail.clientWidth + 2;\n      prev?.classList.toggle(\"is-disabled\", !canScroll);\n      next?.classList.toggle(\"is-disabled\", !canScroll);\n    };\n\n    const move = (direction = 1) => {\n      if (rail.scrollWidth <= rail.clientWidth + 2) return;\n      const max = rail.scrollWidth - rail.clientWidth;\n      const atEnd = rail.scrollLeft >= max - 4;\n      const atStart = rail.scrollLeft <= 4;\n      if (direction > 0 && atEnd) {\n        rail.scrollTo({ left: 0, behavior: \"smooth\" });\n        return;\n      }\n      if (direction < 0 && atStart) {\n        rail.scrollTo({ left: max, behavior: \"smooth\" });\n        return;\n      }\n      rail.scrollBy({ left: direction * step(), behavior: \"smooth\" });\n    };\n\n    const pauseBriefly = () => {\n      paused = true;\n      clearTimeout(resumeTimer);\n      resumeTimer = setTimeout(() => {\n        paused = false;\n      }, 5000);\n    };\n\n    prev?.addEventListener(\"click\", (event) => {\n      event.preventDefault();\n      pauseBriefly();\n      move(-1);\n    });\n    next?.addEventListener(\"click\", (event) => {\n      event.preventDefault();\n      pauseBriefly();\n      move(1);\n    });\n\n    [\"pointerenter\", \"focusin\", \"touchstart\", \"wheel\"].forEach((type) => {\n      section.addEventListener(type, pauseBriefly, { passive: true });\n    });\n    section.addEventListener(\"pointerleave\", () => {\n      clearTimeout(resumeTimer);\n      resumeTimer = setTimeout(() => {\n        paused = false;\n      }, 1200);\n    });\n    rail.addEventListener(\"scroll\", sync, { passive: true });\n    window.addEventListener(\"resize\", sync);\n\n    sync();\n    setInterval(() => {\n      if (!paused) move(1);\n    }, 3000);\n  });\n};\n\nconst centerHomeProductCarousels = () => {\n  document.querySelectorAll(\"[data-home-product-carousel]\").forEach((carousel) => {\n    const baseStyles = {\n      display: \"block\",\n      visibility: \"visible\",\n      opacity: \"1\",\n      position: \"relative\",\n      left: \"50%\",\n      right: \"auto\",\n      width: \"100vw\",\n      maxWidth: \"100vw\",\n      marginTop: \"20px\",\n      marginRight: \"0\",\n      marginBottom: \"20px\",\n      marginLeft: \"-50vw\",\n      overflow: \"hidden\",\n      textAlign: \"center\",\n      transform: \"none\",\n    };\n\n    Object.entries(baseStyles).forEach(([property, value]) => {\n      carousel.style.setProperty(property.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`), value, \"important\");\n    });\n\n    carousel.querySelectorAll(\".ff-home-recommendations__stage\").forEach((stage) => {\n      stage.style.setProperty(\"width\", \"100vw\", \"important\");\n      stage.style.setProperty(\"max-width\", \"100vw\", \"important\");\n      stage.style.setProperty(\"height\", window.matchMedia(\"(max-width: 749px)\").matches ? \"422px\" : \"562px\", \"important\");\n      stage.style.setProperty(\"margin-left\", \"auto\", \"important\");\n      stage.style.setProperty(\"margin-right\", \"auto\", \"important\");\n      stage.style.setProperty(\"overflow\", \"visible\", \"important\");\n    });\n\n    carousel.querySelectorAll(\".ff-home-recommendations__slide\").forEach((slide) => {\n      slide.style.setProperty(\"left\", \"50%\", \"important\");\n      slide.style.setProperty(\"margin-left\", \"0\", \"important\");\n    });\n\n    requestAnimationFrame(() => {\n      carousel.style.setProperty(\"transform\", \"none\", \"important\");\n      const left = carousel.getBoundingClientRect().left;\n      if (Math.abs(left) > 1) {\n        carousel.style.setProperty(\"transform\", `translateX(${-left}px)`, \"important\");\n      }\n    });\n  });\n};\n\nconst enforceMobileLayoutFixes = () => {\n  if (!document.getElementById(\"ff-live-mobile-layout-fixes\")) {\n    const style = document.createElement(\"style\");\n    style.id = \"ff-live-mobile-layout-fixes\";\n    style.textContent = `\n      .ff-home .ff-home-recommendations,\n      .ff-home-recommendations {\n        display: block !important;\n        visibility: visible !important;\n        opacity: 1 !important;\n        position: relative !important;\n        left: 50% !important;\n        right: auto !important;\n        width: 100vw !important;\n        max-width: 100vw !important;\n        margin-left: -50vw !important;\n        margin-right: 0 !important;\n        transform: none !important;\n        overflow: hidden !important;\n        text-align: center !important;\n      }\n\n      .ff-home-recommendations__stage {\n        width: 100vw !important;\n        max-width: 100vw !important;\n        height: 562px !important;\n        margin-left: auto !important;\n        margin-right: auto !important;\n        overflow: visible !important;\n      }\n\n      .ff-home-recommendations__dots {\n        margin-top: 2px !important;\n      }\n\n      .ff-home-recommendations__slide {\n        left: 50% !important;\n        transform: translateX(calc(-50% + (var(--offset) * 290px))) scale(calc(1 - (var(--abs-offset) * .08))) !important;\n      }\n\n      @media (max-width: 749px) {\n        .ff-plp .ff-refinement-bar,\n        .ff-plp .ff-refinement-bar.is-open,\n        .ff-plp__filters.is-open .ff-refinement-bar {\n          display: none !important;\n          visibility: hidden !important;\n          height: 0 !important;\n          max-height: 0 !important;\n          overflow: hidden !important;\n          margin: 0 !important;\n          padding: 0 !important;\n          border: 0 !important;\n        }\n\n        .ff-plp__mobile-controls {\n          display: none !important;\n          visibility: hidden !important;\n          height: 0 !important;\n          max-height: 0 !important;\n          overflow: hidden !important;\n          margin: 0 !important;\n          padding: 0 !important;\n        }\n\n        .ff-plp__body {\n          display: block !important;\n          padding: 0 !important;\n        }\n\n        .ff-home .ff-home-recommendations,\n        .ff-home-recommendations {\n          padding: 14px 0 18px !important;\n        }\n\n        .ff-home-recommendations__stage {\n          width: 100vw !important;\n          max-width: 100vw !important;\n          height: 422px !important;\n          margin: 0 auto !important;\n          overflow: visible !important;\n        }\n\n        .ff-home-recommendations__slide {\n          left: 50% !important;\n          transform: translateX(calc(-50% + (var(--offset) * 210px))) scale(calc(1 - (var(--abs-offset) * .08))) !important;\n        }\n      }\n    `;\n    document.head.append(style);\n  }\n\n  if (window.matchMedia(\"(max-width: 749px)\").matches) {\n    document.querySelectorAll(\"[data-filter-panel]\").forEach((panel) => {\n      panel.classList.remove(\"is-open\");\n      panel.setAttribute(\"hidden\", \"\");\n      panel.style.setProperty(\"display\", \"none\", \"important\");\n    });\n    document.querySelector(\"[data-filter-form]\")?.classList.remove(\"is-open\");\n  }\n\n  document.querySelectorAll(\"[data-home-product-carousel]\").forEach((carousel) => {\n    carousel.style.setProperty(\"display\", \"block\", \"important\");\n    carousel.style.setProperty(\"position\", \"relative\", \"important\");\n    carousel.style.setProperty(\"left\", \"50%\", \"important\");\n    carousel.style.setProperty(\"width\", \"100vw\", \"important\");\n    carousel.style.setProperty(\"max-width\", \"100vw\", \"important\");\n    carousel.style.setProperty(\"margin-left\", \"-50vw\", \"important\");\n    carousel.style.setProperty(\"margin-right\", \"0\", \"important\");\n    carousel.style.setProperty(\"transform\", \"none\", \"important\");\n  });\n  centerHomeProductCarousels();\n};\n\nconst mountHomeProductCarouselFallback = async () => {\n  if (document.querySelector(\"[data-home-product-carousel]\")) return;\n  const hero = document.querySelector(\".ff-luxe-hero\");\n  if (!hero) return;\n  try {\n    const data = await fetch(\"/collections/all/products.json?limit=9\", { headers: { Accept: \"application/json\" } }).then((response) => response.json());\n    const products = data.products || [];\n    if (!products.length) return;\n    const section = document.createElement(\"section\");\n    section.className = \"ff-home-recommendations\";\n    section.setAttribute(\"data-home-product-carousel\", \"\");\n    section.innerHTML = `\n      <h2>Your Recommended Products</h2>\n      <div class=\"ff-home-recommendations__stage\">\n        ${products.map((product) => `\n          <a class=\"ff-home-recommendations__slide\" href=\"/products/${product.handle}\" data-home-product-slide>\n            <span class=\"ff-home-recommendations__media\">\n              ${product.images?.[0]?.src ? `<img src=\"${product.images[0].src}\" alt=\"${product.title}\">` : '<span class=\"ff-image-placeholder\" aria-hidden=\"true\"><span>PLACEHOLDER</span></span>'}\n            </span>\n            <span class=\"ff-home-recommendations__title\">${product.vendor || product.title}</span>\n          </a>\n        `).join(\"\")}\n      </div>\n      <div class=\"ff-home-recommendations__dots\" aria-hidden=\"true\">\n        ${products.map(() => '<button type=\"button\" data-home-product-dot></button>').join(\"\")}\n      </div>\n    `;\n    hero.insertAdjacentElement(\"afterend\", section);\n    initHomeProductCarousel();\n  } catch {\n    /* storefront JSON can be unavailable on some themes; leave homepage unchanged in that case */\n  }\n};\n\nconst normalizeFooter = () => {\n  const html = `\n    <div>\n      <h2>Most Viewed</h2>\n      <a href=\"/collections/under-10000\">Under 10,000</a>\n      <a href=\"/collections/under-20000\">Under 20,000</a>\n      <a href=\"/collections/sneakers\">Sneakers</a>\n      <a href=\"/collections/watches\">Watches</a>\n      <a href=\"/collections/accessories-edit\">Accessories</a>\n    </div>\n    <div>\n      <h2>Top 50</h2>\n      <a href=\"/collections/top-50-watches\">Top 50 watches</a>\n      <a href=\"/collections/top-50-sneakers\">Top 50 sneakers</a>\n      <a href=\"/collections/top-50-apparel\">Top 50 apparel</a>\n      <a href=\"/collections/top-50-accessories\">Top 50 accessories</a>\n    </div>\n    <div>\n      <h2>Know More</h2>\n      <a href=\"/pages/about-us\">About Us</a>\n      <a href=\"/pages/cancellations-and-returns\">Cancellations & Returns</a>\n      <a href=\"/pages/cash-on-delivery-policy\">Cash on Delivery Policy</a>\n      <a href=\"/pages/shipping\">Shipping</a>\n      <a href=\"/pages/terms-conditions\">Terms & Conditions</a>\n      <a href=\"/pages/privacy-policy\">Privacy Policy</a>\n    </div>\n    <div>\n      <h2>Contact Us</h2>\n      <p>Monday to Saturday, 10:30am to 7:00pm</p>\n      <p>Support: <a href=\"mailto:info@luxe-outlet.com\">info@luxe-outlet.com</a></p>\n      <p>Pocket 8, Block B, Rohini Sector 15, New Delhi - 110089</p>\n    </div>\n  `;\n  document.querySelectorAll(\".ff-footer__columns, .luxe-dark-footer__grid\").forEach((columns) => {\n    columns.innerHTML = html;\n  });\n  document.querySelectorAll(\".ff-footer__copyright, .luxe-dark-footer__legal\").forEach((node) => {\n    node.textContent = \"\u00A9 2026 Luxe Outlet. All rights reserved.\";\n  });\n};\n\nconst normalizeContactPage = () => {\n  if (!window.location.pathname.includes(\"/pages/contact\")) return;\n  const main = document.querySelector(\"#MainContent .shopify-section\");\n  if (!main) return;\n  main.innerHTML = `\n    <section class=\"ff-page\">\n      <h1>Contact Us</h1>\n      <div class=\"rte ff-policy-copy\">\n        <p>Monday to Saturday, 10:30am to 7:00pm</p>\n        <p>Support: <a href=\"mailto:info@luxe-outlet.com\">info@luxe-outlet.com</a></p>\n      <p>Pocket 8, Block B, Rohini Sector 15, New Delhi - 110089</p>\n        <p>Orders are processed by Luxe Outlet after payment verification or cash-on-delivery confirmation. Delivery timelines depend on the product and service level shown on the product page.</p>\n        <p>For the fastest support, include your order number, the product link, and a short description of the issue in your email.</p>\n      </div>\n    </section>\n  `;\n};\n\nconst ensureBusinessSchema = () => {\n  if (!document.head) return;\n\n  if (!document.getElementById(\"ff-organization-schema\")) {\n    const org = document.createElement(\"script\");\n    org.type = \"application/ld+json\";\n    org.id = \"ff-organization-schema\";\n    org.textContent = JSON.stringify({\n      \"@context\": \"https://schema.org\",\n      \"@type\": \"Organization\",\n      name: \"Luxe Outlet\",\n      legalName: \"Metacircles Technologies Private Limited\",\n      url: \"https://luxe-outlet.com\",\n      email: \"info@luxe-outlet.com\",\n      identifier: \"GSTIN 06AARCM2647M1ZV\",\n      sameAs: [\"https://www.instagram.com/luxeoutlet\"],\n      contactPoint: [\n        {\n          \"@type\": \"ContactPoint\",\n          contactType: \"customer support\",\n          email: \"info@luxe-outlet.com\",\n          availableLanguage: [\"en\", \"hi\"]\n        }\n      ]\n    });\n    document.head.appendChild(org);\n  }\n\n  if (!document.getElementById(\"ff-website-schema\")) {\n    const site = document.createElement(\"script\");\n    site.type = \"application/ld+json\";\n    site.id = \"ff-website-schema\";\n    site.textContent = JSON.stringify({\n      \"@context\": \"https://schema.org\",\n      \"@type\": \"WebSite\",\n      name: \"Luxe Outlet\",\n      url: \"https://luxe-outlet.com\",\n      publisher: {\n        \"@type\": \"Organization\",\n        name: \"Luxe Outlet\"\n      },\n      potentialAction: {\n        \"@type\": \"SearchAction\",\n        target: \"https://luxe-outlet.com/search?type=product&q={search_term_string}\",\n        \"query-input\": \"required name=search_term_string\"\n      }\n    });\n    document.head.appendChild(site);\n  }\n};\n\nconst initProductForm = (form) => {\n  const sectionId = form.getAttribute(\"data-section-id\");\n  const variantsScript = document.querySelector(`[data-product-variants=\"${sectionId}\"]`);\n  if (!variantsScript) return;\n\n  let variants = [];\n  try {\n    variants = JSON.parse(variantsScript.textContent);\n  } catch {\n    return;\n  }\n\n  const sizeIndex = Number(form.getAttribute(\"data-size-index\"));\n  const shippingIndex = Number(form.getAttribute(\"data-shipping-index\"));\n  const idInput = form.querySelector(\"[data-variant-id]\");\n  const sizeSelect = form.querySelector(\"[data-size-select]\");\n  const shippingProperty = form.querySelector(\"[data-shipping-property]\");\n  const priceEl = form.querySelector(\"[data-product-price]\");\n  const skuEl = document.querySelector(\"[data-style-code]\");\n  const submit = form.querySelector('button[type=\"submit\"]');\n  const shippingMessage = form.querySelector(\"[data-shipping-message]\");\n  const qtyInput = form.querySelector(\"[data-qty-input]\");\n  const qtyMinus = form.querySelector(\"[data-qty-minus]\");\n  const qtyPlus = form.querySelector(\"[data-qty-plus]\");\n  const shippingTabs = Array.from(form.querySelectorAll(\"[data-shipping-method]\"));\n  const detailQuantity = document.querySelector(\"[data-detail-quantity]\");\n  let selectedShipping = shippingTabs.find((tab) => tab.classList.contains(\"is-active\"))?.dataset.shippingMethod || \"3-5 Days\";\n\n  if (sizeSelect) {\n    Array.from(sizeSelect.options).forEach((option) => {\n      option.dataset.rawValue = option.value;\n      option.textContent = displaySizeLabel(option.value || option.textContent);\n    });\n  }\n\n  const shippingForVariant = (variant) => shippingIndex < 0 ? \"\" : variant.options[shippingIndex];\n  const sizeForVariant = (variant) => sizeIndex < 0 ? \"One Size\" : cleanSizeLabel(variant.options[sizeIndex]);\n  const selectedSize = () => cleanSizeLabel(sizeSelect?.value || sizeSelect?.selectedOptions?.[0]?.dataset.rawValue || sizeSelect?.selectedOptions?.[0]?.textContent || \"\");\n\n  const variantsForShipping = (shipping) => {\n    const matching = variants.filter((variant) => shippingIndex < 0 || shippingMatches(shippingForVariant(variant), shipping));\n    return matching.length ? matching : variants;\n  };\n\n  const rebuildSizes = (preferredSize = selectedSize()) => {\n    if (!sizeSelect) return;\n    const seen = new Set();\n    const options = variantsForShipping(selectedShipping);\n    sizeSelect.innerHTML = \"\";\n    options.forEach((variant) => {\n      const rawSize = sizeForVariant(variant);\n      const key = normalize(rawSize);\n      if (!rawSize || seen.has(key)) return;\n      seen.add(key);\n      const option = document.createElement(\"option\");\n      option.value = rawSize;\n      option.dataset.rawValue = rawSize;\n      option.textContent = displaySizeLabel(rawSize);\n      sizeSelect.append(option);\n    });\n    const preferred = Array.from(sizeSelect.options).find((option) => normalize(option.value) === normalize(preferredSize));\n    if (preferred) {\n      sizeSelect.value = preferred.value;\n    } else if (sizeSelect.options[0]) {\n      sizeSelect.value = sizeSelect.options[0].value;\n    }\n  };\n\n  const findVariant = () => {\n    const size = selectedSize();\n    return variants.find((variant) => {\n      const variantSize = sizeForVariant(variant);\n      const sizeOk = sizeIndex < 0 || !size || normalize(variantSize) === normalize(size);\n      const shippingOk = shippingIndex < 0 || shippingMatches(shippingForVariant(variant), selectedShipping);\n      return sizeOk && shippingOk;\n    }) || variants.find((variant) => {\n      const variantSize = sizeForVariant(variant);\n      const sizeOk = sizeIndex < 0 || !size || normalize(variantSize) === normalize(size);\n      return sizeOk;\n    }) || variants[0];\n  };\n\n  const update = () => {\n    const variant = findVariant();\n    if (!variant) return;\n\n    if (idInput) idInput.value = variant.id;\n    const actualShipping = shippingForVariant(variant) || selectedShipping;\n    selectedShipping = actualShipping;\n    if (shippingProperty) shippingProperty.value = actualShipping;\n    shippingTabs.forEach((item) => item.classList.toggle(\"is-active\", shippingMatches(item.dataset.shippingMethod, actualShipping)));\n    if (priceEl) {\n      priceEl.innerHTML = `<strong>${money(variant.price)}</strong><s>${money(Math.round(variant.price * 1.5))}</s>`;\n    }\n    if (skuEl) skuEl.textContent = variant.sku || variant.id;\n    if (shippingMessage) shippingMessage.textContent = `Ships in ${displayShippingLabel(actualShipping)}`;\n    if (submit) {\n      submit.disabled = !variant.available;\n      submit.textContent = variant.available ? \"Add to bag\" : \"Sold out\";\n    }\n  };\n\n  shippingTabs.forEach((tab) => {\n    tab.addEventListener(\"click\", () => {\n      if (tab.disabled) return;\n      selectedShipping = tab.dataset.shippingMethod;\n      shippingTabs.forEach((item) => item.classList.toggle(\"is-active\", item === tab));\n      rebuildSizes();\n      update();\n    });\n  });\n\n  if (sizeSelect) sizeSelect.addEventListener(\"change\", update);\n  if (qtyMinus && qtyInput) {\n    qtyMinus.addEventListener(\"click\", () => {\n      qtyInput.value = Math.max(1, Number(qtyInput.value || 1) - 1);\n      if (detailQuantity) detailQuantity.textContent = qtyInput.value;\n      qtyInput.dispatchEvent(new Event(\"change\", { bubbles: true }));\n    });\n  }\n  if (qtyPlus && qtyInput) {\n    qtyPlus.addEventListener(\"click\", () => {\n      qtyInput.value = Number(qtyInput.value || 1) + 1;\n      if (detailQuantity) detailQuantity.textContent = qtyInput.value;\n      qtyInput.dispatchEvent(new Event(\"change\", { bubbles: true }));\n    });\n  }\n  if (qtyInput) {\n    qtyInput.addEventListener(\"change\", () => {\n      qtyInput.value = Math.max(1, Number(qtyInput.value || 1));\n      if (detailQuantity) detailQuantity.textContent = qtyInput.value;\n    });\n  }\n\n  rebuildSizes();\n  update();\n};\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n  applyDefaultBestSellingSort();\n  ensureBusinessSchema();\n  ensureMobileSearch();\n  normalizePdpMedia();\n  enforceMobileLayoutFixes();\n  setWishlistState();\n  fixHomeRailScroll();\n  initPopularityPlp();\n  hydrateEmptyHomeProductRails();\n  populatePdpRecommendations();\n  document.querySelectorAll(\"[data-product-form]\").forEach(initProductForm);\n  initWheelPassthrough();\n  initAjaxCart();\n  initHomeProductCarousel();\n  initHeroBannerCarousel();\n  normalizeFooter();\n  normalizeContactPage();\n  enforceMobileLayoutFixes();\n});\n\nwindow.addEventListener(\"load\", centerHomeProductCarousels);\nwindow.addEventListener(\"load\", fixHomeRailScroll);\nwindow.addEventListener(\"load\", initPopularityPlp);\nwindow.addEventListener(\"load\", hydrateEmptyHomeProductRails);\nwindow.addEventListener(\"load\", populatePdpRecommendations);\nwindow.addEventListener(\"resize\", centerHomeProductCarousels);\nwindow.addEventListener(\"resize\", fixHomeRailScroll);\n\ndocument.addEventListener(\"click\", (event) => {\n  const pdpMediaViewMore = event.target.closest(\"[data-pdp-media-view-more]\");\n  if (pdpMediaViewMore) {\n    event.preventDefault();\n    const gallery = pdpMediaViewMore.closest(\"[data-pdp-media-gallery]\");\n    gallery?.querySelectorAll(\"[data-pdp-extra-media]\").forEach((media) => {\n      media.hidden = false;\n      media.classList.remove(\"is-hidden\");\n      media.removeAttribute(\"data-pdp-extra-media\");\n    });\n    pdpMediaViewMore.closest(\".ff-pdp__media-more\")?.remove();\n    return;\n  }\n\n  const mobileSearchOpen = event.target.closest(\"[data-mobile-search-open]\");\n  if (mobileSearchOpen) {\n    event.preventDefault();\n    const header = mobileSearchOpen.closest(\".ff-header__mobile\");\n    const input = header?.querySelector(\"[data-mobile-search-input]\");\n    header?.classList.add(\"is-searching\");\n    window.requestAnimationFrame(() => input?.focus());\n    return;\n  }\n\n  const mobileSearchClose = event.target.closest(\"[data-mobile-search-close]\");\n  if (mobileSearchClose) {\n    event.preventDefault();\n    const header = mobileSearchClose.closest(\".ff-header__mobile\");\n    const input = header?.querySelector(\"[data-mobile-search-input]\");\n    if (input) input.value = \"\";\n    header?.classList.remove(\"is-searching\");\n    return;\n  }\n\n  const railArrow = event.target.closest(\".ff-home .ff-rail-arrows button\");\n  if (railArrow) {\n    const arrows = railArrow.closest(\".ff-rail-arrows\");\n    const section = railArrow.closest(\".ff-home-categories, .ff-home-rail\");\n    const rail = section?.querySelector(\"[data-ff-rail]\");\n    if (arrows && rail) {\n      event.preventDefault();\n      const buttons = Array.from(arrows.querySelectorAll(\"button\"));\n      const direction = buttons.indexOf(railArrow) === 0 ? -1 : 1;\n      rail.scrollBy({ left: direction * Math.max(rail.clientWidth * 0.82, 320), behavior: \"smooth\" });\n    }\n  }\n\n  if (event.target.closest(\"[data-side-cart-close], [data-side-cart-overlay]\")) {\n    closeSideCart();\n  }\n\n  const openButton = event.target.closest(\"[data-menu-open]\");\n  const closeButton = event.target.closest(\"[data-menu-close]\");\n  const drawer = document.querySelector(\"[data-menu-drawer]\");\n  if (openButton && drawer) {\n    drawer.setAttribute(\"aria-hidden\", \"false\");\n    document.body.classList.add(\"ff-menu-open\");\n  }\n  if (closeButton && drawer) {\n    drawer.setAttribute(\"aria-hidden\", \"true\");\n    document.body.classList.remove(\"ff-menu-open\");\n  }\n\n  const filterButton = event.target.closest(\"[data-filter-toggle]\");\n  if (filterButton) {\n    if (window.matchMedia(\"(max-width: 749px)\").matches) return;\n    const panel = document.querySelector(\"[data-filter-panel]\");\n    const filterForm = document.querySelector(\"[data-filter-form]\");\n    if (panel) panel.classList.toggle(\"is-open\");\n    if (filterForm) filterForm.classList.toggle(\"is-open\");\n  }\n\n  const viewMore = event.target.closest(\"[data-view-more]\");\n  if (viewMore) {\n    event.preventDefault();\n    if (viewMore.dataset.loading === \"true\") return;\n\n    const grid = document.querySelector(\"[data-product-grid]\");\n    const pagination = viewMore.closest(\"[data-pagination]\");\n    if (!grid || !pagination) {\n      window.location.href = viewMore.href;\n      return;\n    }\n\n    viewMore.dataset.loading = \"true\";\n    viewMore.textContent = \"Loading...\";\n\n    fetch(viewMore.href, { headers: { Accept: \"text/html\" } })\n      .then((response) => response.text())\n      .then((html) => {\n        const doc = new DOMParser().parseFromString(html, \"text/html\");\n        const nextGrid = doc.querySelector(\"[data-product-grid]\");\n        const nextPagination = doc.querySelector(\"[data-pagination]\");\n        if (!nextGrid) throw new Error(\"Missing next product grid\");\n\n        nextGrid.querySelectorAll(\".ff-product-card\").forEach((card) => {\n          grid.appendChild(document.importNode(card, true));\n        });\n\n        if (nextPagination && nextPagination.querySelector(\"[data-view-more]\")) {\n          pagination.replaceWith(document.importNode(nextPagination, true));\n        } else {\n          pagination.remove();\n        }\n\n        if (typeof window.__luxePostAppendPlp === \"function\") {\n          window.__luxePostAppendPlp();\n        }\n        setWishlistState();\n      })\n      .catch(() => {\n        window.location.href = viewMore.href;\n      });\n  }\n\n  const wishlistButton = event.target.closest(\"[data-wishlist-toggle]\");\n  if (wishlistButton) {\n    event.preventDefault();\n    let saved = [];\n    try {\n      saved = JSON.parse(localStorage.getItem(\"ffWishlist\") || \"[]\");\n    } catch {\n      saved = [];\n    }\n    const id = wishlistButton.getAttribute(\"data-product-id\");\n    saved = saved.includes(id) ? saved.filter((item) => item !== id) : [...saved, id];\n    localStorage.setItem(\"ffWishlist\", JSON.stringify(saved));\n    setWishlistState();\n  }\n\n  const sideCartRemove = event.target.closest(\"[data-side-cart-remove]\");\n  if (sideCartRemove) {\n    event.preventDefault();\n    removeSideCartItem(sideCartRemove.getAttribute(\"data-side-cart-remove\")).catch(() => {\n      window.location.href = \"/cart\";\n    });\n  }\n  const sideCartStep = event.target.closest(\"[data-side-cart-minus], [data-side-cart-plus]\");\n  if (sideCartStep) {\n    event.preventDefault();\n    const isPlus = sideCartStep.hasAttribute(\"data-side-cart-plus\");\n    const stepKey = sideCartStep.getAttribute(isPlus ? \"data-side-cart-plus\" : \"data-side-cart-minus\");\n    const valEl = sideCartStep.parentElement.querySelector(\".ff-side-cart__qty-val\");\n    const current = Number(valEl ? valEl.textContent : 0) || 0;\n    updateSideCartQty(stepKey, current + (isPlus ? 1 : -1)).catch(() => {\n      window.location.href = \"/cart\";\n    });\n  }\n\n  const cartMinus = event.target.closest(\"[data-cart-qty-minus]\");\n  const cartPlus = event.target.closest(\"[data-cart-qty-plus]\");\n  if (cartMinus || cartPlus) {\n    const control = event.target.closest(\".ff-cart-qty\");\n    const input = control?.querySelector(\"[data-cart-qty-input]\");\n    if (!input) return;\n    const next = Number(input.value || 0) + (cartPlus ? 1 : -1);\n    input.value = Math.max(0, next);\n    input.dispatchEvent(new Event(\"change\", { bubbles: true }));\n  }\n});\n\nlet cartSubmitTimer;\ndocument.addEventListener(\"submit\", (event) => {\n  const form = event.target.closest(\"[data-cart-form]\");\n  if (!form) return;\n  const submitter = event.submitter;\n  const isCheckout = submitter?.name === \"checkout\" || submitter?.hasAttribute(\"data-cart-discount-apply\");\n  const discountInput = form.querySelector(\"[data-cart-discount-input]\");\n  const discountCode = discountInput?.value?.trim();\n  if (!isCheckout || !discountCode) return;\n\n  event.preventDefault();\n  const redirect = encodeURIComponent(\"/checkout\");\n  window.location.href = `/discount/${encodeURIComponent(discountCode)}?redirect=${redirect}`;\n});\n\ndocument.addEventListener(\"change\", (event) => {\n  const filterInput = event.target.closest(\"[data-filter-input], [data-sort-select]\");\n  if (filterInput) {\n    if (filterInput.closest(\"[data-plp-popularity]\")) return;\n    filterInput.form?.requestSubmit();\n  }\n\n  const cartQty = event.target.closest(\"[data-cart-qty-input]\");\n  if (!cartQty) return;\n  const form = cartQty.closest(\"[data-cart-form]\");\n  if (form) {\n    clearTimeout(cartSubmitTimer);\n    cartSubmitTimer = setTimeout(() => form.requestSubmit(), 250);\n  }\n});\n"],
  "mappings": "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",
  "names": ["countNode", "pagination", "pageSize", "visibleCount"]
}
