{
  "version": 3,
  "sources": ["/cdn/shop/t/4/assets/theme.js?codex=4200"],
  "sourcesContent": ["document.documentElement.classList.remove('no-js');\n\nconst gosEnabled = () => document.documentElement.dataset.gosEnabled === 'true';\nconst gosCartURL = () => document.documentElement.dataset.cartUrl || `${window.Shopify?.routes?.root || '/'}cart`;\n\nconst qs = (selector, scope = document) => scope.querySelector(selector);\nconst qsa = (selector, scope = document) => [...scope.querySelectorAll(selector)];\n\nfunction setCartCount(count) {\n  qsa('[data-cart-count]').forEach((element) => { element.textContent = count; element.hidden = count < 1; });\n}\n\nconst isFreeGiftCartItem = (item) => String(item?.properties?._free_gift || '').toLowerCase() === 'true';\nconst paidCartItemCount = (cart) => (cart?.items || [])\n  .filter((item) => !isFreeGiftCartItem(item))\n  .reduce((total, item) => total + Math.max(0, Number(item.quantity || 0)), 0);\n\nlet freeGiftSyncPromise = null;\n\nasync function syncFreeGift(cart = null, drawer = qs('[data-cart-drawer]')) {\n  if (gosEnabled()) return { cart, changed: false };\n  if (document.documentElement.hasAttribute('data-reference-draft')) return { cart, changed: false };\n  if (!drawer || drawer.dataset.freeGiftEnabled !== 'true') return { cart, changed: false };\n  if (freeGiftSyncPromise) return freeGiftSyncPromise;\n  freeGiftSyncPromise = (async () => {\n    const root = window.Shopify?.routes?.root || '/';\n    let workingCart = cart;\n    if (!workingCart) {\n      const response = await fetch(`${root}cart.js`, { headers: { Accept: 'application/json' } });\n      if (!response.ok) throw new Error('Lecture du panier impossible');\n      workingCart = await response.json();\n    }\n\n    const giftVariantId = Number(drawer.dataset.freeGiftVariantId || 0);\n    if (!Number.isFinite(giftVariantId) || giftVariantId < 1) return { cart: workingCart, changed: false };\n\n    const paidItems = (workingCart.items || []).filter((item) => !isFreeGiftCartItem(item));\n    const giftItems = (workingCart.items || []).filter(isFreeGiftCartItem);\n    const matchingGift = giftItems.find((item) => Number(item.variant_id || item.id) === giftVariantId);\n    const updates = {};\n\n    if (paidItems.length === 0) {\n      giftItems.forEach((item) => { updates[item.key] = 0; });\n    } else {\n      giftItems.forEach((item) => { updates[item.key] = item === matchingGift ? 1 : 0; });\n    }\n\n    let changed = Object.keys(updates).some((key) => {\n      const item = giftItems.find((gift) => gift.key === key);\n      return item && Number(item.quantity) !== Number(updates[key]);\n    });\n\n    if (changed) {\n      const updateResponse = await fetch(`${root}cart/update.js`, {\n        method: 'POST',\n        headers: { Accept: 'application/json', 'Content-Type': 'application/json' },\n        body: JSON.stringify({ updates })\n      });\n      if (!updateResponse.ok) throw new Error('Mise \u00E0 jour du cadeau impossible');\n      workingCart = await updateResponse.json();\n    }\n\n    if (paidItems.length > 0 && !matchingGift) {\n      const addResponse = await fetch(`${root}cart/add.js`, {\n        method: 'POST',\n        headers: { Accept: 'application/json', 'Content-Type': 'application/json' },\n        body: JSON.stringify({\n          items: [{\n            id: giftVariantId,\n            quantity: 1,\n            properties: { _free_gift: 'true', _checkoutflow_reward: 'shaker' }\n          }]\n        })\n      });\n      if (!addResponse.ok) throw new Error('Ajout du shaker offert impossible');\n      const cartResponse = await fetch(`${root}cart.js`, { headers: { Accept: 'application/json' } });\n      if (!cartResponse.ok) throw new Error('Actualisation du cadeau impossible');\n      workingCart = await cartResponse.json();\n      changed = true;\n    }\n\n    return { cart: workingCart, changed };\n  })();\n\n  try {\n    return await freeGiftSyncPromise;\n  } finally {\n    freeGiftSyncPromise = null;\n  }\n}\n\nasync function initFreeGift() {\n  if (gosEnabled()) return;\n  if (document.documentElement.hasAttribute('data-reference-draft')) return;\n  if (document.documentElement.dataset.freeGiftInitialized) return;\n  document.documentElement.dataset.freeGiftInitialized = 'true';\n  const drawer = qs('[data-cart-drawer]');\n  if (!drawer || drawer.dataset.freeGiftEnabled !== 'true') return;\n  try {\n    const result = await syncFreeGift(null, drawer);\n    setCartCount(paidCartItemCount(result.cart));\n    if (result.changed) {\n      if (/\\/cart\\/?$/.test(window.location.pathname)) window.location.reload();\n      else await refreshCartDrawer(false);\n    }\n  } catch (error) {\n    console.warn('[InShape] Cadeau shaker non synchronis\u00E9:', error);\n  }\n}\n\nfunction initMenu(scope = document) {\n  const header = scope.matches?.('[data-site-header]') ? scope : qs('[data-site-header]', scope);\n  if (!header || header.dataset.initializedMenu) return;\n  const menu = qs('[data-mobile-menu]', header);\n  const overlay = qs('[data-menu-overlay]', header);\n  const toggle = qs('[data-menu-toggle]', header);\n  if (!menu || !overlay || !toggle) return;\n  header.dataset.initializedMenu = 'true';\n  const close = () => {\n    menu.classList.remove('is-open');\n    menu.setAttribute('aria-hidden', 'true');\n    overlay.hidden = true;\n    toggle.setAttribute('aria-expanded', 'false');\n    document.body.classList.remove('menu-open');\n  };\n  const open = () => {\n    menu.classList.add('is-open');\n    menu.setAttribute('aria-hidden', 'false');\n    overlay.hidden = false;\n    toggle.setAttribute('aria-expanded', 'true');\n    document.body.classList.add('menu-open');\n    qs('[data-menu-close]', menu)?.focus();\n  };\n  toggle.addEventListener('click', open);\n  qs('[data-menu-close]', menu)?.addEventListener('click', close);\n  overlay.addEventListener('click', close);\n  document.addEventListener('keydown', (event) => { if (event.key === 'Escape') close(); });\n}\n\nfunction initLocalization(scope = document) {\n  qsa('[data-localization-select]', scope).forEach((select) => {\n    if (select.dataset.initialized) return;\n    select.dataset.initialized = 'true';\n    select.addEventListener('change', () => select.form?.submit());\n  });\n}\n\nfunction initHeroSliders(scope = document) {\n  qsa('[data-slider]', scope).forEach((slider) => {\n    if (slider.dataset.initialized) return;\n    const slides = qsa('[data-slide]', slider);\n    const dots = qsa('[data-slide-to]', slider);\n    if (slides.length < 2) return;\n    slider.dataset.initialized = 'true';\n    let current = 0;\n    let timer;\n    const show = (index) => {\n      current = (index + slides.length) % slides.length;\n      slides.forEach((slide, position) => {\n        const active = position === current;\n        slide.classList.toggle('is-active', active);\n        slide.setAttribute('aria-hidden', String(!active));\n      });\n      dots.forEach((dot, position) => {\n        dot.classList.toggle('is-active', position === current);\n        dot.setAttribute('aria-current', position === current ? 'true' : 'false');\n      });\n    };\n    const play = () => {\n      clearInterval(timer);\n      if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) return;\n      timer = window.setInterval(() => show(current + 1), 6500);\n    };\n    dots.forEach((dot) => dot.addEventListener('click', () => { show(Number(dot.dataset.slideTo)); play(); }));\n    slider.addEventListener('mouseenter', () => clearInterval(timer));\n    slider.addEventListener('mouseleave', play);\n    slider.addEventListener('focusin', () => clearInterval(timer));\n    slider.addEventListener('focusout', play);\n    show(0);\n    play();\n  });\n}\n\nfunction initScrollRows(scope = document) {\n  qsa('[data-scroll-row]', scope).forEach((row) => {\n    if (row.dataset.initializedScroll) return;\n    const container = row.closest('.page-container') || row.parentElement;\n    const previous = qs('[data-scroll-prev]', container);\n    const next = qs('[data-scroll-next]', container);\n    if (!previous || !next) return;\n    row.dataset.initializedScroll = 'true';\n    const move = (direction) => row.scrollBy({ left: direction * Math.max(row.clientWidth * 0.82, 260), behavior: 'smooth' });\n    previous.addEventListener('click', () => move(-1));\n    next.addEventListener('click', () => move(1));\n  });\n}\n\nfunction initQuickAdd(scope = document) {\n  qsa('[data-quick-add]', scope).forEach((form) => {\n    if (form.dataset.initialized) return;\n    form.dataset.initialized = 'true';\n    form.addEventListener('submit', async (event) => {\n      event.preventDefault();\n      const button = qs('button', form);\n      if (!button || button.disabled) return;\n      const initialText = button.textContent;\n      button.disabled = true;\n      button.textContent = 'Ajout\u2026';\n      try {\n        const root = window.Shopify?.routes?.root || '/';\n        const response = await fetch(`${root}cart/add.js`, { method: 'POST', headers: { Accept: 'application/json' }, body: new FormData(form) });\n        if (!response.ok) throw new Error('Ajout impossible');\n        if (gosEnabled()) { window.location.assign(gosCartURL()); return; }\n        const cart = await fetch(`${root}cart.js`, { headers: { Accept: 'application/json' } }).then((result) => result.json());\n        setCartCount(paidCartItemCount(cart));\n        button.textContent = 'Ajout\u00E9 \u2713';\n        document.dispatchEvent(new CustomEvent('cart:updated', { detail: { cart } }));\n        await refreshCartDrawer(true);\n        window.setTimeout(() => { button.textContent = initialText; button.disabled = false; }, 1400);\n      } catch (_) {\n        button.textContent = 'R\u00E9essayer';\n        button.disabled = false;\n      }\n    });\n  });\n}\n\nlet cartDrawerPreviousFocus = null;\n\nfunction openCartDrawer(drawer = qs('[data-cart-drawer]')) {\n  if (gosEnabled()) { window.location.assign(gosCartURL()); return; }\n  if (!drawer) return;\n  cartDrawerPreviousFocus = document.activeElement;\n  drawer.style.setProperty('--cart-scrollbar-width', `${Math.max(0, window.innerWidth - document.documentElement.clientWidth)}px`);\n  drawer.classList.add('is-open');\n  drawer.setAttribute('aria-hidden', 'false');\n  document.body.classList.add('cart-drawer-open');\n  qsa('[data-cart-drawer-open]').forEach((trigger) => trigger.setAttribute('aria-expanded', 'true'));\n  window.requestAnimationFrame(() => qs('[data-cart-drawer-close]', drawer)?.focus());\n}\n\nfunction closeCartDrawer(drawer = qs('[data-cart-drawer]')) {\n  if (!drawer) return;\n  drawer.classList.remove('is-open');\n  drawer.setAttribute('aria-hidden', 'true');\n  document.body.classList.remove('cart-drawer-open');\n  qsa('[data-cart-drawer-open]').forEach((trigger) => trigger.setAttribute('aria-expanded', 'false'));\n  if (cartDrawerPreviousFocus?.focus) cartDrawerPreviousFocus.focus();\n}\n\nasync function refreshCartDrawer(openAfter = false) {\n  const currentDrawer = qs('[data-cart-drawer]');\n  if (!currentDrawer) return;\n  const root = window.Shopify?.routes?.root || '/';\n  const separator = root.includes('?') ? '&' : '?';\n  const cartResponse = await fetch(`${root}cart.js`, { headers: { Accept: 'application/json' } });\n  if (!cartResponse.ok) throw new Error('Actualisation du panier impossible');\n  const initialCart = await cartResponse.json();\n  const giftResult = await syncFreeGift(initialCart, currentDrawer);\n  const cart = giftResult.cart || initialCart;\n  const sectionResponse = await fetch(`${root}${separator}section_id=cart-drawer`, { headers: { Accept: 'text/html' } });\n  if (!sectionResponse.ok) throw new Error('Actualisation du panier impossible');\n  const html = await sectionResponse.text();\n  const parsed = new DOMParser().parseFromString(html, 'text/html');\n  const incoming = qs('[data-cart-drawer]', parsed);\n  if (!incoming) throw new Error('Panier coulissant introuvable');\n  currentDrawer.replaceWith(incoming);\n  setCartCount(paidCartItemCount(cart));\n  initCartDrawer(incoming);\n  initScrollRows(incoming);\n  initQuickAdd(incoming);\n  document.dispatchEvent(new CustomEvent('cart:updated', { detail: { cart } }));\n  if (openAfter) openCartDrawer(incoming);\n}\n\nasync function changeCartDrawerLine(line, quantity, drawer) {\n  if (!drawer || drawer.classList.contains('is-loading')) return;\n  drawer.classList.add('is-loading');\n  const status = qs('[data-cart-drawer-status]', drawer);\n  if (status) status.textContent = 'Mise \u00E0 jour du panier\u2026';\n  try {\n    const root = window.Shopify?.routes?.root || '/';\n    const response = await fetch(`${root}cart/change.js`, {\n      method: 'POST',\n      headers: { Accept: 'application/json', 'Content-Type': 'application/json' },\n      body: JSON.stringify({ line: Number(line), quantity: Math.max(0, Number(quantity)) })\n    });\n    if (!response.ok) throw new Error('Mise \u00E0 jour impossible');\n    const cart = await response.json();\n    await syncFreeGift(cart, drawer);\n    await refreshCartDrawer(true);\n  } catch (_) {\n    drawer.classList.remove('is-loading');\n    if (status) status.textContent = 'Une erreur est survenue. R\u00E9essayez.';\n  }\n}\n\nfunction initCartDrawer(scope = document) {\n  if (gosEnabled()) return;\n  const drawers = scope.matches?.('[data-cart-drawer]') ? [scope] : qsa('[data-cart-drawer]', scope);\n  drawers.forEach((drawer) => {\n    if (drawer.dataset.initialized) return;\n    drawer.dataset.initialized = 'true';\n    qsa('[data-cart-drawer-close]', drawer).forEach((button) => button.addEventListener('click', () => closeCartDrawer(drawer)));\n    qsa('[data-cart-drawer-minus], [data-cart-drawer-plus]', drawer).forEach((button) => button.addEventListener('click', () => {\n      const input = qs(`[data-cart-drawer-quantity][data-line=\"${button.dataset.line}\"]`, drawer);\n      if (!input) return;\n      const nextQuantity = Number(input.value || 0) + (button.hasAttribute('data-cart-drawer-plus') ? 1 : -1);\n      changeCartDrawerLine(button.dataset.line, nextQuantity, drawer);\n    }));\n    qsa('[data-cart-drawer-quantity]', drawer).forEach((input) => input.addEventListener('change', () => changeCartDrawerLine(input.dataset.line, input.value, drawer)));\n    qsa('[data-cart-drawer-remove]', drawer).forEach((button) => button.addEventListener('click', () => changeCartDrawerLine(button.dataset.line, 0, drawer)));\n  });\n  if (!document.documentElement.dataset.cartDrawerEvents) {\n    document.documentElement.dataset.cartDrawerEvents = 'true';\n    document.addEventListener('click', (event) => {\n      const trigger = event.target.closest('[data-cart-drawer-open]');\n      if (!trigger) return;\n      event.preventDefault();\n      openCartDrawer();\n    });\n    document.addEventListener('keydown', (event) => {\n      if (event.key === 'Escape' && qs('[data-cart-drawer].is-open')) closeCartDrawer();\n    });\n  }\n}\n\nfunction getQuantityBreakItems(form) {\n  const module = qs('[data-quantity-breaks]', form);\n  if (!module) return null;\n  const quantity = Math.max(1, Number(module.dataset.selectedQuantity || 1));\n  const mainVariant = Number(qs('[data-variant-select]', form)?.value || 0);\n  const slotVariants = qsa('[data-bundle-variant-slot]', module)\n    .slice(0, quantity)\n    .map((select) => Number(select.value || 0));\n  const variantIds = slotVariants.length === quantity ? slotVariants : Array(quantity).fill(mainVariant);\n  if (variantIds.some((id) => !Number.isFinite(id) || id < 1)) return [];\n  const sellingPlan = Number(qs('input[name=\"selling_plan\"]:checked', form)?.value || 0);\n  const grouped = new Map();\n  variantIds.forEach((id) => {\n    const key = `${id}:${sellingPlan || ''}`;\n    const item = grouped.get(key) || { id, quantity: 0 };\n    item.quantity += 1;\n    if (sellingPlan) item.selling_plan = sellingPlan;\n    grouped.set(key, item);\n  });\n  return [...grouped.values()];\n}\n\nfunction initProductAjaxAdd(scope = document) {\n  qsa('[data-product-form]', scope).forEach((form) => {\n    if (gosEnabled() && qs('[data-gos-pack], [data-gos-gift-builder], [data-gos-quantity-offers], [data-gq-pack]', form)) return;\n    if (form.dataset.initializedAjaxAdd) return;\n    form.dataset.initializedAjaxAdd = 'true';\n    form.addEventListener('submit', async (event) => {\n      event.preventDefault();\n      const button = qs('[data-add-to-cart]', form);\n      if (!button || button.disabled) return;\n      const label = qs('span', button);\n      const initialText = label?.textContent || 'AJOUTER AU PANIER';\n      button.dataset.bundleSubmitting = 'true';\n      button.disabled = true;\n      if (label) label.textContent = 'AJOUT\u2026';\n      try {\n        const root = window.Shopify?.routes?.root || '/';\n        const bundleItems = getQuantityBreakItems(form);\n        const request = bundleItems\n          ? {\n              method: 'POST',\n              headers: { Accept: 'application/json', 'Content-Type': 'application/json' },\n              body: JSON.stringify({ items: bundleItems })\n            }\n          : { method: 'POST', headers: { Accept: 'application/json' }, body: new FormData(form) };\n        if (bundleItems && !bundleItems.length) throw new Error('Choix de variantes incomplet');\n        const response = await fetch(`${root}cart/add.js`, request);\n        if (!response.ok) throw new Error('Ajout impossible');\n        if (gosEnabled()) { window.location.assign(gosCartURL()); return; }\n        if (label) label.textContent = 'AJOUT\u00C9 \u2713';\n        await refreshCartDrawer(true);\n      } catch (_) {\n        if (label) label.textContent = 'R\u00C9ESSAYER';\n      } finally {\n        window.setTimeout(() => {\n          delete button.dataset.bundleSubmitting;\n          button.disabled = false;\n          if (label) label.textContent = initialText;\n          form.dispatchEvent(new Event('bundle:refresh'));\n        }, 1200);\n      }\n    });\n  });\n}\n\nfunction initQuantity(scope = document) {\n  qsa('[data-quantity-plus], [data-quantity-minus]', scope).forEach((button) => {\n    if (button.dataset.initialized) return;\n    button.dataset.initialized = 'true';\n    button.addEventListener('click', () => {\n      const input = qs('input[type=\"number\"]', button.closest('.quantity-selector'));\n      if (!input) return;\n      const direction = button.hasAttribute('data-quantity-plus') ? 1 : -1;\n      input.value = Math.max(Number(input.min || 1), Number(input.value || 1) + direction);\n      input.dispatchEvent(new Event('change', { bubbles: true }));\n    });\n  });\n}\n\nfunction activateProductMedia(section, mediaId) {\n  if (!mediaId) return;\n  const gallery = qs('[data-product-gallery]', section);\n  if (!gallery) return;\n  qsa('[data-media-id]', gallery).forEach((media) => media.classList.toggle('is-active', media.dataset.mediaId === String(mediaId)));\n  qsa('[data-media-target]', gallery).forEach((thumbnail) => {\n    const active = thumbnail.dataset.mediaTarget === String(mediaId);\n    thumbnail.classList.toggle('is-active', active);\n    thumbnail.setAttribute('aria-current', active ? 'true' : 'false');\n    if (active) thumbnail.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' });\n  });\n}\n\nfunction initProductGallery(scope = document) {\n  qsa('[data-product-gallery]', scope).forEach((gallery) => {\n    if (gallery.dataset.initialized) return;\n    gallery.dataset.initialized = 'true';\n    const section = gallery.closest('[data-product-section]');\n    const media = qsa('[data-media-id]', gallery);\n    const move = (direction) => {\n      if (media.length < 2) return;\n      const currentIndex = Math.max(0, media.findIndex((item) => item.classList.contains('is-active')));\n      const nextIndex = (currentIndex + direction + media.length) % media.length;\n      activateProductMedia(section, media[nextIndex].dataset.mediaId);\n    };\n    qsa('[data-media-target]', gallery).forEach((thumbnail) => thumbnail.addEventListener('click', () => activateProductMedia(section, thumbnail.dataset.mediaTarget)));\n    qs('[data-product-media-previous]', gallery)?.addEventListener('click', () => move(-1));\n    qs('[data-product-media-next]', gallery)?.addEventListener('click', () => move(1));\n    gallery.addEventListener('keydown', (event) => {\n      if (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') return;\n      event.preventDefault();\n      move(event.key === 'ArrowLeft' ? -1 : 1);\n    });\n  });\n  qsa('[data-product-media-jump]', scope).forEach((button) => {\n    if (button.dataset.initializedMediaJump) return;\n    button.dataset.initializedMediaJump = 'true';\n    button.addEventListener('click', () => {\n      const section = qs('[data-product-section]');\n      if (!section) return;\n      activateProductMedia(section, button.dataset.productMediaJump);\n      qs('[data-product-gallery]', section)?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n    });\n  });\n}\n\nfunction initTabs(scope = document) {\n  qsa('.product-content', scope).forEach((section) => {\n    if (section.dataset.initializedTabs) return;\n    section.dataset.initializedTabs = 'true';\n    const buttons = qsa('[data-tab-button]', section);\n    const panels = qsa('[data-tab-panel]', section);\n    const tabs = qs('.product-tabs', section);\n    const anchor = qs('[data-tabs-anchor]', section);\n    const activateTab = (button, focus = false) => {\n      const target = button.dataset.tabButton;\n      buttons.forEach((item) => {\n        const active = item === button;\n        item.classList.toggle('is-active', active);\n        item.setAttribute('aria-selected', String(active));\n        item.tabIndex = active ? 0 : -1;\n      });\n      panels.forEach((panel) => {\n        const active = panel.dataset.tabPanel === target;\n        panel.classList.toggle('is-active', active);\n        panel.hidden = !active;\n      });\n      if (focus) button.focus();\n    };\n    buttons.forEach((button, index) => {\n      button.addEventListener('click', () => activateTab(button));\n      button.addEventListener('keydown', (event) => {\n        let nextIndex;\n        if (event.key === 'ArrowRight') nextIndex = (index + 1) % buttons.length;\n        else if (event.key === 'ArrowLeft') nextIndex = (index - 1 + buttons.length) % buttons.length;\n        else if (event.key === 'Home') nextIndex = 0;\n        else if (event.key === 'End') nextIndex = buttons.length - 1;\n        else return;\n        event.preventDefault();\n        activateTab(buttons[nextIndex], true);\n      });\n    });\n    if (tabs && anchor) {\n      const mobile = window.matchMedia('(max-width: 749px)');\n      const syncStickyTabs = () => {\n        if (!mobile.matches) {\n          tabs.classList.remove('is-fixed');\n          anchor.style.height = '';\n          return;\n        }\n        const shouldFix = window.scrollY + 128 >= anchor.getBoundingClientRect().top + window.scrollY;\n        tabs.classList.toggle('is-fixed', shouldFix);\n        anchor.style.height = shouldFix ? `${tabs.offsetHeight}px` : '';\n      };\n      window.addEventListener('scroll', syncStickyTabs, { passive: true });\n      window.addEventListener('resize', syncStickyTabs, { passive: true });\n      syncStickyTabs();\n    }\n  });\n}\n\nfunction formatMoney(cents) {\n  return new Intl.NumberFormat('fr-FR', { style: 'currency', currency: window.Shopify?.currency?.active || 'EUR' }).format(cents / 100);\n}\n\nfunction initProductVariants(scope = document) {\n  qsa('[data-product-section]', scope).forEach((section) => {\n    if (gosEnabled() && qs('[data-gos-pack], [data-gos-gift-builder], [data-gos-quantity-offers], [data-gq-pack]', section)) return;\n    if (section.dataset.initializedVariants) return;\n    const json = qs('[data-product-variants]', section);\n    const variantSelect = qs('[data-variant-select]', section);\n    const form = qs('[data-product-form]', section);\n    if (!json || !variantSelect || !form) return;\n    let variants;\n    try { variants = JSON.parse(json.textContent); } catch (_) { return; }\n    section.dataset.initializedVariants = 'true';\n    const optionSelects = qsa('[data-option-select]', form);\n    const optionRadios = qsa('[data-option-radio]', form);\n    const mediaMapJson = qs('[data-option-media-map]', form);\n    let mediaMap;\n    try { mediaMap = mediaMapJson ? JSON.parse(mediaMapJson.textContent) : null; } catch (_) { mediaMap = null; }\n    const update = () => {\n      const values = optionSelects.map((select) => select.value);\n      optionRadios.forEach((radio) => {\n        const selected = values[Number(radio.dataset.optionIndex)] === radio.value;\n        radio.checked = selected;\n        radio.closest('.product-option-card')?.classList.toggle('is-selected', selected);\n      });\n      const variant = variants.find((item) => item.options.every((value, index) => value === values[index]));\n      const submit = qs('[data-add-to-cart]', form);\n      if (!variant) {\n        if (submit) { submit.disabled = true; qs('span', submit).textContent = 'COMBINAISON INDISPONIBLE'; }\n        return;\n      }\n      variantSelect.value = String(variant.id);\n      if (submit) {\n        submit.disabled = !variant.available;\n        qs('span', submit).textContent = variant.available ? 'AJOUTER AU PANIER' : '\u00C9PUIS\u00C9';\n      }\n      const price = qs('[data-product-price]', section);\n      if (price) price.innerHTML = `<div class=\"price${variant.compare_at_price > variant.price ? ' price--sale' : ''}\"><span class=\"price__current\">${formatMoney(variant.price)}</span>${variant.compare_at_price > variant.price ? `<s class=\"price__compare\">${formatMoney(variant.compare_at_price)}</s>` : ''}</div>`;\n      const unitPrice = qs('[data-unit-price]', section);\n      if (unitPrice) {\n        const measurement = variant.unit_price_measurement;\n        if (variant.unit_price != null && measurement) {\n          const referenceValue = Number(measurement.reference_value) === 1 ? '' : measurement.reference_value;\n          unitPrice.textContent = `${formatMoney(variant.unit_price)} / ${referenceValue}${measurement.reference_unit}`;\n          unitPrice.hidden = false;\n        } else {\n          unitPrice.textContent = '';\n          unitPrice.hidden = true;\n        }\n      }\n      const stickyPrice = qs('[data-sticky-price]');\n      if (stickyPrice) stickyPrice.textContent = formatMoney(variant.price);\n      const stickyAdd = qs('[data-sticky-add]');\n      if (stickyAdd) {\n        stickyAdd.disabled = !variant.available;\n        const stickyLabel = qs('span', stickyAdd);\n        if (stickyLabel) stickyLabel.textContent = variant.available ? 'VOIR LES OPTIONS' : '\u00C9PUIS\u00C9';\n      }\n      if (variant.featured_media?.id) activateProductMedia(section, variant.featured_media.id);\n      else if (mediaMap?.values) {\n        const mappedMediaId = mediaMap.values[values[Number(mediaMap.optionIndex)]];\n        if (mappedMediaId) activateProductMedia(section, mappedMediaId);\n      }\n      const url = new URL(window.location.href);\n      url.searchParams.set('variant', variant.id);\n      window.history.replaceState({}, '', url);\n      section.dispatchEvent(new CustomEvent('variant:change', { detail: { variant } }));\n    };\n    optionSelects.forEach((select) => select.addEventListener('change', update));\n    optionRadios.forEach((radio) => radio.addEventListener('change', () => {\n      if (!radio.checked) return;\n      const linkedSelect = optionSelects[Number(radio.dataset.optionIndex)];\n      if (!linkedSelect) return;\n      linkedSelect.value = radio.value;\n      linkedSelect.dispatchEvent(new Event('change', { bubbles: true }));\n    }));\n  });\n}\n\nfunction initProductStickyCart(scope = document) {\n  qsa('[data-product-sticky]', scope).forEach((sticky) => {\n    const section = sticky.previousElementSibling?.matches('[data-product-section]') ? sticky.previousElementSibling : qs('[data-product-section]', sticky.parentElement);\n    if (!section) return;\n    const button = qs('[data-sticky-add]', sticky);\n    const form = qs('[data-product-form]', section);\n    const mainButton = qs('[data-add-to-cart]', section);\n    if (!button || !form || !mainButton || sticky.dataset.initialized) return;\n    sticky.dataset.initialized = 'true';\n    if (sticky.parentElement !== document.body) document.body.append(sticky);\n    const mobile = window.matchMedia('(max-width: 749px)');\n    const sync = () => {\n      const pastMainButton = mainButton.getBoundingClientRect().bottom < 128;\n      const footer = qs('.site-footer');\n      const beforeFooter = !footer || footer.getBoundingClientRect().top > window.innerHeight;\n      const visible = mobile.matches && pastMainButton && beforeFooter;\n      sticky.classList.toggle('is-visible', visible);\n      sticky.setAttribute('aria-hidden', String(!visible));\n    };\n    button.addEventListener('click', () => {\n      if (button.disabled) return;\n      form.scrollIntoView({ behavior: 'smooth', block: 'center' });\n    });\n    window.addEventListener('scroll', sync, { passive: true });\n    window.addEventListener('resize', sync, { passive: true });\n    sync();\n  });\n}\n\nfunction initFilters(scope = document) {\n  qsa('[data-collection-form]', scope).forEach((form) => {\n    const drawer = qs('[data-filter-drawer]', form);\n    const overlay = qs('[data-filter-overlay]', form);\n    const toggle = qs('[data-filter-toggle]', form);\n    if (drawer && overlay && toggle && !form.dataset.initializedFilters) {\n      form.dataset.initializedFilters = 'true';\n      const close = () => {\n        drawer.classList.remove('is-open');\n        drawer.setAttribute('aria-hidden', 'true');\n        overlay.hidden = true;\n        toggle.setAttribute('aria-expanded', 'false');\n        document.body.classList.remove('filter-open');\n      };\n      const open = () => {\n        drawer.classList.add('is-open');\n        drawer.setAttribute('aria-hidden', 'false');\n        overlay.hidden = false;\n        toggle.setAttribute('aria-expanded', 'true');\n        document.body.classList.add('filter-open');\n        qs('[data-filter-close]', drawer)?.focus();\n      };\n      toggle.addEventListener('click', open);\n      qs('[data-filter-close]', drawer)?.addEventListener('click', close);\n      overlay.addEventListener('click', close);\n      document.addEventListener('keydown', (event) => { if (event.key === 'Escape' && drawer.classList.contains('is-open')) close(); });\n    }\n  });\n  qsa('[data-sort-select]', scope).forEach((select) => {\n    if (select.dataset.initialized) return;\n    select.dataset.initialized = 'true';\n    select.addEventListener('change', () => select.form?.submit());\n  });\n}\n\nfunction initCartForms(scope = document) {\n  qsa('[data-cart-form]', scope).forEach((form) => {\n    if (form.hasAttribute('data-gos-quantity-cart')) return;\n    if (form.dataset.initializedCart) return;\n    form.dataset.initializedCart = 'true';\n    let timer;\n    qsa('input[name=\"updates[]\"]', form).forEach((input) => input.addEventListener('change', () => {\n      clearTimeout(timer);\n      timer = window.setTimeout(() => form.requestSubmit(qs('button[name=\"update\"]', form) || undefined), 450);\n    }));\n  });\n}\n\nfunction initFooterAccordions(scope = document) {\n  const accordions = qsa('.footer-accordion', scope);\n  if (!accordions.length) return;\n  const mobile = window.matchMedia('(max-width: 749px)');\n  const sync = () => accordions.forEach((accordion) => {\n    if (mobile.matches) accordion.removeAttribute('open');\n    else accordion.setAttribute('open', '');\n  });\n  sync();\n  if (!document.documentElement.dataset.footerMediaBound) {\n    document.documentElement.dataset.footerMediaBound = 'true';\n    if (mobile.addEventListener) mobile.addEventListener('change', sync);\n    else mobile.addListener(sync);\n  }\n}\n\nasync function initProductRecommendations(scope = document) {\n  qsa('[data-product-recommendations]', scope).forEach(async (section) => {\n    if (section.dataset.loaded || !section.dataset.url) return;\n    section.dataset.loaded = 'true';\n    try {\n      const response = await fetch(section.dataset.url);\n      if (!response.ok) return;\n      const html = await response.text();\n      const parsed = new DOMParser().parseFromString(html, 'text/html');\n      const incoming = qs('[data-product-recommendations]', parsed);\n      if (!incoming || !qs('[data-product-card]', incoming)) return;\n      section.innerHTML = incoming.innerHTML;\n      section.hidden = false;\n      initScrollRows(section);\n      initQuickAdd(section);\n    } catch (_) { /* The optional fallback collection remains visible. */ }\n  });\n}\n\nfunction initStickyHeader(scope = document) {\n  const header = scope.matches?.('[data-site-header]') ? scope : qs('[data-site-header]', scope);\n  if (!header || header.dataset.initializedSticky) return;\n  header.dataset.initializedSticky = 'true';\n  const mobile = window.matchMedia('(max-width: 749px)');\n  const desktop = window.matchMedia('(min-width: 1100px)');\n  let threshold = header.offsetHeight;\n  let lastScrollY = window.scrollY;\n  const sync = () => {\n    const currentScrollY = window.scrollY;\n    if (!mobile.matches && !desktop.matches) {\n      header.classList.remove('is-compact');\n      header.classList.remove('is-scrolling-down');\n      threshold = header.offsetHeight;\n      lastScrollY = currentScrollY;\n      return;\n    }\n    header.classList.toggle('is-compact', currentScrollY > threshold);\n    if (desktop.matches && header.classList.contains('is-compact')) {\n      if (currentScrollY > lastScrollY + 2) header.classList.add('is-scrolling-down');\n      else if (currentScrollY < lastScrollY - 2) header.classList.remove('is-scrolling-down');\n    } else {\n      header.classList.remove('is-scrolling-down');\n    }\n    lastScrollY = currentScrollY;\n  };\n  window.addEventListener('scroll', sync, { passive: true });\n  window.addEventListener('resize', () => {\n    if (!header.classList.contains('is-compact')) threshold = header.offsetHeight;\n    sync();\n  }, { passive: true });\n  sync();\n}\n\nfunction initProductCompare(scope = document) {\n  const controls = qsa('[data-compare-product]', scope);\n  if (!controls.length) return;\n  const mode = qs('[data-compare-mode]', scope);\n  const openButton = qs('[data-compare-open]', scope);\n  const count = qs('[data-compare-count]', scope);\n  const drawer = qs('[data-compare-drawer]', scope);\n  const list = qs('[data-compare-list]', scope);\n  const overlay = qs('[data-compare-overlay]', scope);\n  const selected = new Map();\n\n  const close = () => {\n    if (!drawer || !overlay) return;\n    drawer.hidden = true;\n    drawer.setAttribute('aria-hidden', 'true');\n    overlay.hidden = true;\n    openButton?.focus();\n  };\n  const render = () => {\n    if (count) count.textContent = selected.size;\n    if (openButton) openButton.hidden = selected.size < 2;\n    if (!list) return;\n    list.textContent = '';\n    selected.forEach((item) => {\n      const link = document.createElement('a');\n      link.className = 'compare-drawer__item';\n      link.href = item.url;\n      const image = document.createElement('img');\n      image.src = item.image;\n      image.alt = '';\n      const copy = document.createElement('span');\n      const title = document.createElement('strong');\n      title.textContent = item.title;\n      const price = document.createElement('small');\n      price.textContent = item.price;\n      copy.append(title, price);\n      link.append(image, copy);\n      list.append(link);\n    });\n  };\n  controls.forEach((control) => control.addEventListener('change', () => {\n    if (control.checked) {\n      if (selected.size >= 4) {\n        control.checked = false;\n        return;\n      }\n      selected.set(control.value, { title: control.dataset.title, url: control.dataset.url, image: control.dataset.image, price: control.dataset.price });\n    } else selected.delete(control.value);\n    render();\n  }));\n  mode?.addEventListener('click', () => {\n    const active = mode.getAttribute('aria-pressed') !== 'true';\n    mode.setAttribute('aria-pressed', String(active));\n    mode.classList.toggle('is-active', active);\n    document.documentElement.classList.toggle('compare-disabled', !active);\n  });\n  openButton?.addEventListener('click', () => {\n    if (!drawer || !overlay) return;\n    drawer.hidden = false;\n    drawer.setAttribute('aria-hidden', 'false');\n    overlay.hidden = false;\n  });\n  qs('[data-compare-close]', scope)?.addEventListener('click', close);\n  overlay?.addEventListener('click', close);\n  document.addEventListener('keydown', (event) => { if (event.key === 'Escape' && drawer && !drawer.hidden) close(); });\n  render();\n}\n\nfunction initCollectionView(scope = document) {\n  qsa('.collection-page', scope).forEach((section) => {\n    const grid = qs('.collection-grid', section);\n    const buttons = qsa('[data-collection-view]', section);\n    if (!grid || !buttons.length || section.dataset.initializedView) return;\n    section.dataset.initializedView = 'true';\n    const setView = (view) => {\n      grid.classList.toggle('is-list-view', view === 'list');\n      buttons.forEach((button) => {\n        const active = button.dataset.collectionView === view;\n        button.classList.toggle('is-active', active);\n        button.setAttribute('aria-pressed', String(active));\n      });\n    };\n    buttons.forEach((button) => button.addEventListener('click', () => setView(button.dataset.collectionView)));\n  });\n}\n\n// Display estimate only: CheckoutFlow remains responsible for the actual offer.\nfunction quantityBreakOffer(unitPrices, discount) {\n  const prices = unitPrices.map((price) => Math.max(0, Math.round(Number(price) || 0)));\n  const fullTotal = prices.reduce((sum, price) => sum + price, 0);\n  const rate = Math.min(100, Math.max(0, Number(discount) || 0));\n  const total = Math.round(fullTotal * (100 - rate) / 100);\n  return { fullTotal, total, savings: fullTotal - total, average: Math.round(total / Math.max(1, prices.length)) };\n}\n\nfunction initQuantityBreaks(scope = document) {\n  qsa('[data-quantity-breaks]', scope).forEach((module) => {\n    if (module.dataset.initialized) return;\n    module.dataset.initialized = 'true';\n    const form = module.closest('form');\n    const section = module.closest('[data-product-section]');\n    const quantityInput = qs('input[name=\"quantity\"]', form);\n    const variantSelect = qs('[data-variant-select]', form);\n    const variantsJson = qs('[data-product-variants]', form);\n    const cards = qsa('[data-quantity-break-card]', module);\n    const radios = qsa('[data-quantity-break]', module);\n    const rows = qsa('[data-bundle-slot-row]', module);\n    const slots = qsa('[data-bundle-variant-slot]', module);\n    const optionSlots = qsa('[data-bundle-option-slot]', module);\n    const variantPanel = qs('[data-quantity-break-variant-panel]', module);\n    const hasVariants = module.dataset.hasVariants === 'true';\n    const moneyFormat = new Intl.NumberFormat('fr-FR', { style: 'currency', currency: module.dataset.currency || 'EUR' });\n    const money = (cents) => moneyFormat.format(cents / 100);\n    const addButton = qs('[data-add-to-cart]', form);\n    const buttonLabel = addButton && qs('span', addButton);\n    let variants = [];\n    try { variants = variantsJson ? JSON.parse(variantsJson.textContent) : []; } catch (_) { variants = []; }\n    const variantById = new Map(variants.map((variant) => [String(variant.id), variant]));\n\n    const selectedRadio = () => radios.find((radio) => radio.checked) || radios[0];\n    const selectedQuantity = () => Math.max(1, Number(selectedRadio()?.value || 1));\n    const selectedVariant = () => variantById.get(String(variantSelect?.value || '')) || variants[0];\n\n    const optionsForSlot = (slotIndex) => optionSlots\n      .filter((select) => Number(select.dataset.slotIndex) === Number(slotIndex))\n      .sort((a, b) => Number(a.dataset.optionIndex) - Number(b.dataset.optionIndex));\n\n    const setSlotVariant = (slotIndex, variant, touched = false) => {\n      const slot = slots[slotIndex];\n      if (!slot || !variant) return;\n      slot.value = String(variant.id);\n      slot.dataset.variantPrice = String(variant.price || 0);\n      if (touched) slot.dataset.touched = 'true';\n      optionsForSlot(slotIndex).forEach((select, optionIndex) => {\n        if (variant.options?.[optionIndex] != null) select.value = variant.options[optionIndex];\n      });\n    };\n\n    const resolveSlotVariant = (slotIndex, changedOptionIndex = -1) => {\n      const selects = optionsForSlot(slotIndex);\n      const values = selects.map((select) => select.value);\n      let variant = variants.find((item) => item.available && item.options.every((value, index) => value === values[index]));\n      if (!variant && changedOptionIndex >= 0) {\n        variant = variants.find((item) => item.available && item.options[changedOptionIndex] === values[changedOptionIndex]);\n      }\n      if (!variant) variant = variants.find((item) => item.available) || variants[0];\n      setSlotVariant(slotIndex, variant, true);\n      return variant;\n    };\n\n    const applyVariantToMain = (variant) => {\n      if (!variant) return;\n      const mainOptions = qsa('[data-option-select]', form);\n      if (mainOptions.length) {\n        mainOptions.forEach((select, optionIndex) => {\n          if (variant.options?.[optionIndex] != null) select.value = variant.options[optionIndex];\n        });\n        mainOptions[0].dispatchEvent(new Event('change', { bubbles: true }));\n      } else if (variantSelect) {\n        variantSelect.value = String(variant.id);\n        section?.dispatchEvent(new CustomEvent('variant:change', { detail: { variant } }));\n      }\n    };\n\n    const updatePrices = () => {\n      const current = selectedVariant();\n      if (!current) return;\n      cards.forEach((card) => {\n        const quantity = Math.max(1, Number(card.dataset.quantity || 1));\n        const discount = Math.max(0, Number(card.dataset.discount || 0));\n        const choices = Array.from({ length: quantity }, (_, index) => variantById.get(String(slots[index]?.value || '')) || current);\n        const offer = quantityBreakOffer(choices.map((variant) => variant.price), discount);\n        const originalNode = qs('[data-quantity-break-original-total]', card);\n        const totalNode = qs('[data-quantity-break-total]', card);\n        const averageNode = qs('[data-quantity-break-average]', card);\n        const savingNode = qs('[data-quantity-break-saving]', card);\n        const variantNode = qs('[data-quantity-break-variant-summary]', card);\n        if (originalNode) {\n          originalNode.textContent = money(offer.fullTotal);\n          originalNode.hidden = discount === 0;\n        }\n        if (totalNode) totalNode.textContent = money(offer.total);\n        if (averageNode) averageNode.textContent = quantity === 1 ? 'pour 1 article' : `\u2248 ${money(offer.average)} / article`;\n        if (savingNode) savingNode.textContent = discount ? `\u00C9conomisez ${money(offer.savings)}` : 'Prix standard';\n        if (variantNode) {\n          const optionCount = Math.max(0, ...choices.map((variant) => variant.options?.length || 0));\n          variantNode.textContent = Array.from({ length: optionCount }, (_, index) => [...new Set(choices.map((variant) => variant.options[index]).filter((value) => value && value !== 'Default Title'))].join(' + ')).filter(Boolean).join(' \u00B7 ');\n        }\n        if (card.classList.contains('is-selected')) {\n          const summary = qs('[data-quantity-break-summary]', module);\n          if (summary) summary.textContent = `${quantity} article${quantity > 1 ? 's' : ''} \u00B7 Total estim\u00E9 ${money(offer.total)}${discount ? ` \u00B7 ${money(offer.savings)} d\u2019\u00E9conomie` : ''}`;\n          const available = choices.every((variant) => variant.available);\n          const availability = qs('[data-quantity-break-availability]', module);\n          if (availability) {\n            availability.textContent = available ? 'Disponible' : '\u00C9puis\u00E9';\n            availability.classList.toggle('is-unavailable', !available);\n          }\n          if (addButton && !addButton.dataset.bundleSubmitting) {\n            addButton.disabled = !available;\n            if (buttonLabel) buttonLabel.textContent = available ? `AJOUTER ${quantity} ARTICLE${quantity > 1 ? 'S' : ''} AU PANIER` : '\u00C9PUIS\u00C9';\n          }\n        }\n      });\n    };\n\n    const sync = () => {\n      const quantity = selectedQuantity();\n      module.dataset.selectedQuantity = String(quantity);\n      cards.forEach((card) => card.classList.toggle('is-selected', Number(card.dataset.quantity) === quantity));\n      rows.forEach((row, index) => { row.hidden = index >= quantity; });\n      const selectedCard = cards.find((card) => Number(card.dataset.quantity) === quantity);\n      if (variantPanel && selectedCard) {\n        selectedCard.append(variantPanel);\n        variantPanel.hidden = !hasVariants;\n      }\n      if (quantityInput) {\n        quantityInput.value = String(quantity);\n        quantityInput.dispatchEvent(new Event('change', { bubbles: true }));\n      }\n      updatePrices();\n    };\n\n    radios.forEach((radio) => radio.addEventListener('change', () => {\n      if (!radio.checked) return;\n      sync();\n      if (selectedQuantity() === 1) applyVariantToMain(variantById.get(String(slots[0]?.value || '')));\n    }));\n    optionSlots.forEach((select) => select.addEventListener('change', () => {\n      const slotIndex = Number(select.dataset.slotIndex || 0);\n      const variant = resolveSlotVariant(slotIndex, Number(select.dataset.optionIndex || 0));\n      if (selectedQuantity() === 1 && slotIndex === 0) applyVariantToMain(variant);\n      updatePrices();\n    }));\n    section?.addEventListener('variant:change', (event) => {\n      const variant = event.detail?.variant;\n      slots.forEach((slot, slotIndex) => {\n        if (!slot.dataset.touched && variant) setSlotVariant(slotIndex, variant);\n      });\n      updatePrices();\n    });\n    form.addEventListener('bundle:refresh', updatePrices);\n    const initialVariant = selectedVariant();\n    slots.forEach((_, slotIndex) => setSlotVariant(slotIndex, initialVariant));\n    sync();\n  });\n}\n\nfunction initProductVideos(scope = document) {\n  qsa('[data-product-video-dialog]', scope).forEach((dialog) => {\n    if (dialog.dataset.initialized) return;\n    dialog.dataset.initialized = 'true';\n    const video = qs('video[data-video-src]', dialog);\n    const stop = () => {\n      if (!video) return;\n      video.pause();\n      video.removeAttribute('src');\n      video.load();\n    };\n    qs('[data-product-video-close]', dialog)?.addEventListener('click', () => dialog.close());\n    dialog.addEventListener('close', stop);\n    dialog.addEventListener('click', (event) => {\n      const bounds = dialog.getBoundingClientRect();\n      if (event.clientX < bounds.left || event.clientX > bounds.right || event.clientY < bounds.top || event.clientY > bounds.bottom) dialog.close();\n    });\n  });\n  qsa('[data-product-video-open]', scope).forEach((button) => {\n    if (button.dataset.initialized) return;\n    button.dataset.initialized = 'true';\n    button.addEventListener('click', () => {\n      const dialog = document.getElementById(button.dataset.productVideoOpen);\n      const video = dialog && qs('video[data-video-src]', dialog);\n      if (!dialog || !video) return;\n      video.src = video.dataset.videoSrc;\n      dialog.showModal();\n      video.play().catch(() => {});\n    });\n  });\n}\n\nfunction initTheme(scope = document) {\n  initMenu(scope);\n  initStickyHeader(scope);\n  initProductCompare(scope);\n  initCollectionView(scope);\n  initLocalization(scope);\n  initHeroSliders(scope);\n  initScrollRows(scope);\n  initQuickAdd(scope);\n  initCartDrawer(scope);\n  initProductAjaxAdd(scope);\n  initQuantity(scope);\n  initProductGallery(scope);\n  initTabs(scope);\n  initProductVariants(scope);\n  initQuantityBreaks(scope);\n  initProductVideos(scope);\n  initProductStickyCart(scope);\n  initFilters(scope);\n  initCartForms(scope);\n  initFooterAccordions(scope);\n  initProductRecommendations(scope);\n}\n\ndocument.addEventListener('DOMContentLoaded', () => {\n  initTheme();\n  initFreeGift();\n});\ndocument.addEventListener('shopify:section:load', (event) => initTheme(event.target));\n"],
  "mappings": "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",
  "names": []
}
