{
  "version": 3,
  "sources": ["/cdn/shop/t/4/assets/velmora-parfum.js?france-bust=20260427-frprice3"],
  "sourcesContent": ["(function () {\n  'use strict';\n\n  const root = document.querySelector('.velmora-root');\n  const body = document.body;\n\n  if (!root) return;\n\n  function initFranceLocalization() {\n    const config = window.velmoraForceLocalization || {};\n    const targetCountry = config.countryCode || 'FR';\n    const targetCurrency = config.currencyCode || 'EUR';\n    const shopify = window.Shopify || {};\n    const activeCurrency = shopify.currency && shopify.currency.active;\n\n    if (activeCurrency === targetCurrency) return;\n\n    let alreadyAttempted = false;\n    const attemptKey = `velmora-localization-attempted-${targetCountry}-${targetCurrency}-v3`;\n    try {\n      alreadyAttempted = window.sessionStorage.getItem(attemptKey) === 'true';\n      window.sessionStorage.setItem(attemptKey, 'true');\n    } catch (_) {\n      alreadyAttempted = false;\n    }\n\n    if (alreadyAttempted) return;\n\n    const secure = window.location.protocol === 'https:' ? '; Secure' : '';\n    const hostParts = window.location.hostname.split('.');\n    const rootDomain = hostParts.length > 1 ? `.${hostParts.slice(-2).join('.')}` : '';\n    const cookieBase = `path=/; max-age=31536000; SameSite=Lax${secure}`;\n    [\n      `localization=${targetCountry}; ${cookieBase}`,\n      `cart_currency=${targetCurrency}; ${cookieBase}`,\n      rootDomain ? `localization=${targetCountry}; path=/; domain=${rootDomain}; max-age=31536000; SameSite=Lax${secure}` : '',\n      rootDomain ? `cart_currency=${targetCurrency}; path=/; domain=${rootDomain}; max-age=31536000; SameSite=Lax${secure}` : ''\n    ].filter(Boolean).forEach((cookie) => {\n      document.cookie = cookie;\n    });\n\n    const formData = new FormData();\n    formData.append('form_type', 'localization');\n    formData.append('utf8', '\u2713');\n    formData.append('country_code', targetCountry);\n    formData.append('language_code', config.languageCode || 'fr');\n    formData.append('return_to', window.location.pathname + window.location.search);\n\n    if (!config.localizationUrl) {\n      window.location.reload();\n      return;\n    }\n\n    fetch(config.localizationUrl, {\n      method: 'POST',\n      body: formData,\n      credentials: 'same-origin'\n    })\n      .then(() => window.location.reload())\n      .catch((error) => {\n        console.warn('[velmora-parfum] localization failed', error);\n      });\n  }\n\n  function initFrancePriceGuard() {\n    const targetPrice = window.velmoraPriceLabel || window.velmoraFrancePriceLabel || '49,90\u20AC';\n    const priceSelectors = [\n      '.product__info-container .price__regular .price-item--regular',\n      '.product__info-container .price__sale .price-item--sale',\n      '.product__info-container .main-price',\n      '.product-page-price .price-item',\n      '.vmr-parfum-price',\n      '[data-current-price]',\n      '[data-sticky-price]',\n      '[id^=\"sticky-atc-price-\"]',\n      '.price-current',\n      '.btn-price',\n      '.sa-price',\n      '.vmr-price-row strong',\n      '.vmr-final-card strong',\n      '#final strong'\n    ];\n    const compareSelectors = [\n      '.product__info-container .price__compare-price',\n      '.product__info-container .main-comapre-price',\n      '.product-page-price .price__badge-sale',\n      '[data-compare-price]',\n      '[data-price-badge]'\n    ];\n\n    const apply = () => {\n      priceSelectors.forEach((selector) => {\n        document.querySelectorAll(selector).forEach((node) => {\n          if (!node || node.textContent === targetPrice) return;\n          node.textContent = targetPrice;\n        });\n      });\n\n      compareSelectors.forEach((selector) => {\n        document.querySelectorAll(selector).forEach((node) => {\n          node.textContent = '';\n          node.hidden = true;\n        });\n      });\n    };\n\n    apply();\n\n    const observer = new MutationObserver(() => apply());\n    observer.observe(root, { childList: true, subtree: true, characterData: true });\n  }\n\n  initFranceLocalization();\n  initFrancePriceGuard();\n\n  function parseJSONScript(selector, scope) {\n    const node = (scope || document).querySelector(selector);\n    if (!node) return null;\n    try {\n      return JSON.parse(node.textContent);\n    } catch (error) {\n      console.warn('[velmora-parfum] invalid JSON for', selector, error);\n      return null;\n    }\n  }\n\n  function initNativeHeaderDetailsModalGuard() {\n    document.querySelectorAll('details-modal').forEach((modal) => {\n      if (typeof modal.close === 'function') return;\n\n      modal.close = function (focusToggle = true) {\n        const details = modal.querySelector('details');\n        const summary = modal.querySelector('summary');\n        if (details) details.removeAttribute('open');\n        if (summary) {\n          summary.setAttribute('aria-expanded', 'false');\n          if (focusToggle) summary.focus();\n        }\n        document.body.classList.remove('overflow-hidden');\n      };\n\n      modal.querySelectorAll('.modal__close-button, .modal-overlay').forEach((control) => {\n        control.addEventListener('click', () => modal.close(false));\n      });\n    });\n  }\n\n  function formatMoneyTight(cents, currencyCode) {\n    const value = Number(cents || 0);\n    if (!Number.isFinite(value)) return '';\n\n    try {\n      const formatted = new Intl.NumberFormat(window.velmoraLocale || document.documentElement.lang || 'fr-FR', {\n        style: 'currency',\n        currency: currencyCode || window.velmoraCurrencyCode || 'EUR',\n        maximumFractionDigits: 2\n      }).format(value / 100);\n      return formatted.replace(/\\s/g, '');\n    } catch (_) {\n      return `${(value / 100).toFixed(2)}${currencyCode === 'EUR' ? 'EUR' : ''}`;\n    }\n  }\n\n  function productSVG(finishId, fragColor) {\n    const finishes = {\n      brass: { cap: '#C9A96E', capD: '#A8884E', ring: '#8A6E3A' },\n      ivory: { cap: '#F5F1EA', capD: '#D9D0BE', ring: '#B8AE9A' },\n      ink: { cap: '#3A332C', capD: '#1A1714', ring: '#0B0906' },\n      clay: { cap: '#D48668', capD: '#A55739', ring: '#7A3D24' }\n    };\n    const finish = finishes[finishId] || finishes.brass;\n\n    return `\n      <svg viewBox=\"0 0 200 200\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-hidden=\"true\">\n        <defs>\n          <linearGradient id=\"velmoraCapGradient\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"0\">\n            <stop offset=\"0\" stop-color=\"${finish.capD}\"></stop>\n            <stop offset=\".45\" stop-color=\"${finish.cap}\"></stop>\n            <stop offset=\"1\" stop-color=\"${finish.capD}\"></stop>\n          </linearGradient>\n          <linearGradient id=\"velmoraBodyGradient\" x1=\"0\" y1=\"0\" x2=\"1\" y2=\"0\">\n            <stop offset=\"0\" stop-color=\"${finish.capD}\"></stop>\n            <stop offset=\".5\" stop-color=\"${finish.cap}\"></stop>\n            <stop offset=\"1\" stop-color=\"${finish.ring}\"></stop>\n          </linearGradient>\n          <radialGradient id=\"velmoraBalmGradient\" cx=\".5\" cy=\".5\" r=\".5\">\n            <stop offset=\"0\" stop-color=\"${fragColor}\" stop-opacity=\".95\"></stop>\n            <stop offset=\"1\" stop-color=\"${fragColor}\" stop-opacity=\".35\"></stop>\n          </radialGradient>\n        </defs>\n        <ellipse cx=\"100\" cy=\"155\" rx=\"72\" ry=\"14\" fill=\"url(#velmoraBodyGradient)\"></ellipse>\n        <rect x=\"28\" y=\"95\" width=\"144\" height=\"60\" fill=\"url(#velmoraBodyGradient)\"></rect>\n        <ellipse cx=\"100\" cy=\"95\" rx=\"72\" ry=\"14\" fill=\"${finish.cap}\"></ellipse>\n        <ellipse cx=\"100\" cy=\"95\" rx=\"64\" ry=\"11\" fill=\"${fragColor}\" opacity=\".15\"></ellipse>\n        <ellipse cx=\"100\" cy=\"93\" rx=\"58\" ry=\"10\" fill=\"url(#velmoraBalmGradient)\"></ellipse>\n        <ellipse cx=\"100\" cy=\"91\" rx=\"52\" ry=\"8\" fill=\"${fragColor}\" opacity=\".35\"></ellipse>\n        <ellipse cx=\"100\" cy=\"48\" rx=\"68\" ry=\"13\" fill=\"url(#velmoraCapGradient)\"></ellipse>\n        <rect x=\"32\" y=\"28\" width=\"136\" height=\"22\" fill=\"url(#velmoraCapGradient)\"></rect>\n        <ellipse cx=\"100\" cy=\"28\" rx=\"68\" ry=\"13\" fill=\"${finish.cap}\"></ellipse>\n        <ellipse cx=\"100\" cy=\"28\" rx=\"58\" ry=\"9\" fill=\"${finish.capD}\" opacity=\".3\"></ellipse>\n        <text x=\"100\" y=\"32\" text-anchor=\"middle\" font-family=\"Fraunces, serif\" font-size=\"9\" font-style=\"italic\" fill=\"${finish.ring}\" opacity=\".85\">Velmora</text>\n        <rect x=\"28\" y=\"94\" width=\"144\" height=\"2\" fill=\"${finish.ring}\" opacity=\".4\"></rect>\n        <rect x=\"32\" y=\"49\" width=\"136\" height=\"1.5\" fill=\"${finish.ring}\" opacity=\".4\"></rect>\n      </svg>\n    `;\n  }\n\n  function initNavDrawer() {\n    const toggle = root.querySelector('[data-nav-burger]');\n    const drawer = root.querySelector('[data-nav-drawer]');\n    if (!toggle || !drawer) return;\n\n    const close = () => {\n      drawer.classList.remove('open');\n      drawer.setAttribute('aria-hidden', 'true');\n      toggle.setAttribute('aria-expanded', 'false');\n    };\n\n    const open = () => {\n      drawer.classList.add('open');\n      drawer.setAttribute('aria-hidden', 'false');\n      toggle.setAttribute('aria-expanded', 'true');\n    };\n\n    toggle.addEventListener('click', () => {\n      if (drawer.classList.contains('open')) close();\n      else open();\n    });\n\n    drawer.querySelectorAll('a').forEach((link) => {\n      link.addEventListener('click', close);\n    });\n\n    document.addEventListener('keydown', (event) => {\n      if (event.key === 'Escape') close();\n    });\n  }\n\n  function initReveal() {\n    const items = Array.from(root.querySelectorAll('.reveal'));\n    if (!items.length || !('IntersectionObserver' in window)) {\n      items.forEach((item) => item.classList.add('in'));\n      return;\n    }\n\n    const observer = new IntersectionObserver((entries) => {\n      entries.forEach((entry) => {\n        if (!entry.isIntersecting) return;\n        entry.target.classList.add('in');\n        observer.unobserve(entry.target);\n      });\n    }, { threshold: 0.12 });\n\n    items.forEach((item) => observer.observe(item));\n  }\n\n  function initFragranceAccordions() {\n    root.querySelectorAll('[data-fragrance-summary]').forEach((button) => {\n      button.addEventListener('click', () => {\n        const item = button.closest('.frag-item');\n        if (!item) return;\n        item.classList.toggle('open');\n      });\n    });\n  }\n\n  const defaultNativeTextReplacements = [\n    ['Zu Produktinformationen springen', 'Aller aux informations produit'],\n    ['Duftkapsel', 'Velmora \u2014 Parfum solide rechargeable'],\n    ['Geh\u00E4usefarbe', 'Couleur du bo\u00EEtier'],\n    ['Geruch', 'Signature olfactive'],\n    ['Duft', 'Signature olfactive'],\n    ['Schwarz', 'Noir'],\n    ['Grau', 'Chrome'],\n    ['Beige', 'Sable'],\n    ['Blau', 'Bleu glacier'],\n    ['Gr\u00FCn', 'Pistache'],\n    ['Meeresnebel (Aquatisch)', 'Brume Marine'],\n    ['Rosenbett (Rosig)', 'Jardin de Roses'],\n    ['Rosenbett (rosig)', 'Jardin de Roses'],\n    ['Lagerfeuer (Holzig)', 'Feu de Bois'],\n    ['Pfefferparty (W\u00FCrzig)', 'Nuit d\u2019\u00C9pices'],\n    ['Pfefferparty (W\u00FCrziger)', 'Nuit d\u2019\u00C9pices'],\n    ['Tanzende Blumen (Zitrus)', 'Fleurs Dansantes'],\n    ['In den Warenkorb legen', 'Ajouter au panier'],\n    ['Ajouter au panier legen', 'Ajouter au panier'],\n    ['In den Warenkorb', 'Ajouter au panier'],\n    ['Add to Cart', 'Ajouter au panier'],\n    ['Sold out', '\u00C9puis\u00E9'],\n    ['Ausverkauft', '\u00C9puis\u00E9'],\n    ['Normaler Preis', 'Prix'],\n    ['Anzahl', 'Quantit\u00E9'],\n    ['Verringere die Quantit\u00E9 f\u00FCr', 'R\u00E9duire la quantit\u00E9 de'],\n    ['Erh\u00F6he die Quantit\u00E9 f\u00FCr', 'Augmenter la quantit\u00E9 de'],\n    ['Menge', 'Quantit\u00E9'],\n    ['Quantity', 'Quantit\u00E9'],\n    ['Sale', 'Promo']\n  ];\n  const nativeTextReplacements = Array.isArray(window.velmoraNativeTextReplacements)\n    ? window.velmoraNativeTextReplacements\n    : defaultNativeTextReplacements;\n\n  const nativeFragranceValues = {\n    '01': 'Meeresnebel (Aquatisch)',\n    '02': 'Rosenbett (Rosig)',\n    '03': 'Lagerfeuer (Holzig)',\n    '04': 'Pfefferparty (W\u00FCrzig)',\n    '05': 'Tanzende Blumen (Zitrus)'\n  };\n\n  function getNativeProductSection() {\n    return root.querySelector('[id^=\"MainProduct-\"]');\n  }\n\n  function getBuyAnchor() {\n    return document.getElementById('commander') || document.getElementById('buy') || getNativeProductSection() || root.querySelector('product-info');\n  }\n\n  function initNativeProductAnchor() {\n    if (document.getElementById('commander')) return;\n    const nativeSection = root.querySelector('.shopify-section:first-child') || getNativeProductSection();\n    if (!nativeSection) return;\n    const anchor = document.createElement('span');\n    anchor.id = 'commander';\n    anchor.className = 'vmr-scroll-anchor';\n    anchor.setAttribute('aria-hidden', 'true');\n    nativeSection.insertBefore(anchor, nativeSection.firstChild);\n  }\n\n  function scrollToElement(element) {\n    if (!element) return;\n    const header = document.querySelector('.shopify-section-group-header-group, #shopify-section-header, header');\n    const headerHeight = header ? Math.min(110, Math.max(0, header.getBoundingClientRect().height)) : 0;\n    const top = element.getBoundingClientRect().top + window.pageYOffset - headerHeight - 14;\n    window.scrollTo({ top: Math.max(0, top), behavior: 'smooth' });\n  }\n\n  function replaceVisibleText(scope) {\n    if (!scope || typeof NodeFilter === 'undefined') return;\n    const walker = document.createTreeWalker(scope, NodeFilter.SHOW_TEXT, {\n      acceptNode(node) {\n        const parent = node.parentElement;\n        if (!parent) return NodeFilter.FILTER_REJECT;\n        const tag = parent.tagName;\n        if (tag === 'SCRIPT' || tag === 'STYLE' || tag === 'SVG' || tag === 'TEXTAREA') {\n          return NodeFilter.FILTER_REJECT;\n        }\n        return node.nodeValue && node.nodeValue.trim()\n          ? NodeFilter.FILTER_ACCEPT\n          : NodeFilter.FILTER_REJECT;\n      }\n    });\n\n    const nodes = [];\n    while (walker.nextNode()) nodes.push(walker.currentNode);\n\n    nodes.forEach((node) => {\n      let next = node.nodeValue;\n      nativeTextReplacements.forEach(([from, to]) => {\n        next = next.split(from).join(to);\n      });\n      if (next !== node.nodeValue) node.nodeValue = next;\n    });\n  }\n\n  function initNativeProductTranslation() {\n    const section = getNativeProductSection();\n    if (!section) return;\n\n    let queued = false;\n    const translate = () => {\n      queued = false;\n      replaceVisibleText(section);\n      section.querySelectorAll('[aria-label]').forEach((node) => {\n        let label = node.getAttribute('aria-label') || '';\n        nativeTextReplacements.forEach(([from, to]) => {\n          label = label.split(from).join(to);\n        });\n        node.setAttribute('aria-label', label);\n      });\n    };\n    const schedule = () => {\n      if (queued) return;\n      queued = true;\n      window.requestAnimationFrame(translate);\n    };\n\n    translate();\n    const observer = new MutationObserver(schedule);\n    observer.observe(section, { childList: true, subtree: true, characterData: true });\n  }\n\n  function initNativeMediaOverride() {\n    const section = getNativeProductSection();\n    const script = root.querySelector('[data-velmora-native-media-map]');\n    if (!section || !script) return;\n\n    let mediaMap = [];\n    try {\n      mediaMap = Object.values(JSON.parse(script.textContent || '{}'));\n    } catch (error) {\n      console.warn('[velmora-parfum] invalid native media map', error);\n      return;\n    }\n\n    const matchMedia = (image) => {\n      const haystack = [\n        image.getAttribute('src'),\n        image.getAttribute('srcset'),\n        image.getAttribute('data-src'),\n        image.getAttribute('data-srcset'),\n        image.getAttribute('alt'),\n        image.closest('[data-media-id]') && image.closest('[data-media-id]').getAttribute('data-media-id')\n      ].filter(Boolean).join(' ');\n\n      return mediaMap.find((item) => {\n        return item && item.asset && Array.isArray(item.match) && item.match.some((token) => haystack.includes(token));\n      });\n    };\n\n    let queued = false;\n    const apply = () => {\n      queued = false;\n      section.querySelectorAll('img').forEach((image) => {\n        if (image.dataset.velmoraMediaApplied === 'true') return;\n        const item = matchMedia(image);\n        if (!item) return;\n        image.dataset.velmoraMediaApplied = 'true';\n        image.setAttribute('src', item.asset);\n        image.setAttribute('srcset', item.asset);\n        image.setAttribute('data-src', item.asset);\n        image.setAttribute('data-srcset', item.asset);\n        image.setAttribute('sizes', image.getAttribute('sizes') || '(min-width: 990px) 50vw, 100vw');\n        image.setAttribute('alt', item.alt || 'Velmora parfum solide rechargeable');\n      });\n    };\n    const schedule = () => {\n      if (queued) return;\n      queued = true;\n      window.requestAnimationFrame(apply);\n    };\n\n    apply();\n    const observer = new MutationObserver(schedule);\n    observer.observe(section, { childList: true, subtree: true, attributes: true, attributeFilter: ['src', 'srcset', 'data-src', 'data-srcset', 'alt'] });\n  }\n\n  function selectNativeFragrance(num) {\n    const wanted = nativeFragranceValues[num];\n    if (!wanted) return;\n\n    const native = getNativeProductSection();\n    if (!native) return;\n\n    const selects = Array.from(native.querySelectorAll('select[name^=\"options[\"]'));\n    const fragranceSelect = selects.find((select) => (select.getAttribute('name') || '').includes('Duft'));\n    if (fragranceSelect && Array.from(fragranceSelect.options).some((option) => option.value === wanted)) {\n      fragranceSelect.value = wanted;\n      fragranceSelect.dispatchEvent(new Event('change', { bubbles: true }));\n      return;\n    }\n\n    const radios = Array.from(native.querySelectorAll('input[type=\"radio\"][name^=\"options[\"]'));\n    const radio = radios.find((input) => input.value === wanted);\n    if (radio) radio.click();\n  }\n\n  function initNativeScrollButtons() {\n    root.querySelectorAll('[data-scroll-buy]').forEach((button) => {\n      button.addEventListener('click', () => {\n        selectNativeFragrance(button.dataset.fragranceNum || '');\n        scrollToElement(getBuyAnchor());\n      });\n    });\n  }\n\n  function initRedesign() {\n    root.querySelectorAll('[data-vmr-redesign]').forEach((page) => {\n      if (!page || page.dataset.vmrReady === 'true') return;\n      page.dataset.vmrReady = 'true';\n\n      const galleryMain = page.querySelector('[data-vmr-gallery-main]');\n      page.querySelectorAll('[data-vmr-gallery-thumb]').forEach((button) => {\n        button.addEventListener('click', () => {\n          if (!galleryMain) return;\n          const src = button.dataset.src;\n          const alt = button.dataset.alt || 'Velmora parfum solide rechargeable';\n          if (src) galleryMain.setAttribute('src', src);\n          galleryMain.setAttribute('alt', alt);\n          page.querySelectorAll('[data-vmr-gallery-thumb]').forEach((item) => {\n            item.classList.toggle('is-active', item === button);\n          });\n        });\n      });\n\n      const scentButtons = Array.from(page.querySelectorAll('[data-vmr-scent]'));\n      const scentPanels = Array.from(page.querySelectorAll('[data-vmr-scent-panel]'));\n      scentButtons.forEach((button) => {\n        button.addEventListener('click', () => {\n          const target = button.dataset.vmrScent;\n          scentButtons.forEach((item) => item.classList.toggle('is-active', item === button));\n          scentPanels.forEach((panel) => {\n            const active = panel.dataset.vmrScentPanel === target;\n            panel.classList.toggle('is-active', active);\n            panel.hidden = !active;\n          });\n        });\n      });\n\n      page.querySelectorAll('[data-vmr-faq] article button').forEach((button) => {\n        button.addEventListener('click', () => {\n          const item = button.closest('article');\n          if (!item) return;\n          const answer = item.querySelector('div');\n          const open = !item.classList.contains('is-open');\n          item.classList.toggle('is-open', open);\n          button.setAttribute('aria-expanded', open ? 'true' : 'false');\n          if (answer) answer.hidden = !open;\n        });\n      });\n\n      page.querySelectorAll('[data-vmr-scroll-buy]').forEach((control) => {\n        control.addEventListener('click', (event) => {\n          event.preventDefault();\n          scrollToElement(\n            document.querySelector('[id^=\"MainProduct-\"]') ||\n            document.querySelector('product-info') ||\n            root.querySelector('#commander') ||\n            root.querySelector('#buy') ||\n            document.getElementById('commander')\n          );\n        });\n      });\n\n      page.querySelectorAll('[data-vmr-scroll-target]').forEach((control) => {\n        control.addEventListener('click', (event) => {\n          const target = control.getAttribute('data-vmr-scroll-target');\n          if (!target) return;\n          const el = document.querySelector(target);\n          if (!el) return;\n          event.preventDefault();\n          scrollToElement(el);\n        });\n      });\n\n      const ensureKachingFallback = () => {\n        let fallback = page.querySelector('[data-vmr-kaching-fallback]');\n        if (fallback) return fallback;\n\n        const shell = page.querySelector('.vmr-kaching-shell');\n        if (!shell) return null;\n\n        const fallbackLocale = window.velmoraKachingFallbackLocale || {};\n        const variantId = shell.dataset.vmrFallbackVariantId || '';\n        const price = shell.dataset.vmrFallbackPrice || '49\u20AC';\n        fallback = document.createElement('div');\n        fallback.className = 'vmr-kaching-fallback';\n        fallback.setAttribute('data-vmr-kaching-fallback', '');\n        fallback.setAttribute('data-skip-node-update', '');\n        fallback.setAttribute('data-skip-subtree-update', '');\n        fallback.innerHTML = `\n          <div>\n            <strong>${fallbackLocale.title || 'Pack de d\u00E9part'}</strong>\n            <span>${fallbackLocale.text || `Capsule noire \u00B7 Brume Marine \u00B7 ${price}`}</span>\n          </div>\n          ${variantId ? `\n            <form method=\"post\" action=\"${(window.routes && window.routes.cart_add_url) || '/cart/add'}\" class=\"vmr-fallback-form\">\n              <input type=\"hidden\" name=\"id\" value=\"${variantId}\">\n              <input type=\"hidden\" name=\"quantity\" value=\"1\">\n              <button class=\"vmr-btn vmr-btn-primary\" type=\"submit\">\n                ${fallbackLocale.cta || 'Commander une capsule'}\n                <span aria-hidden=\"true\"></span>\n              </button>\n            </form>\n          ` : ''}\n          <small>${fallbackLocale.note || \"Ce bouton reste visible uniquement si le module Kaching Bundle n'a pas encore de pack actif.\"}</small>\n        `;\n        const offerInfo = page.querySelector('.vmr-offer-info');\n        if (offerInfo) {\n          offerInfo.insertAdjacentElement('afterend', fallback);\n        } else {\n          shell.insertAdjacentElement('afterend', fallback);\n        }\n        return fallback;\n      };\n\n      const syncKachingFallback = () => {\n        const kachingFallback = ensureKachingFallback();\n        if (!kachingFallback) return;\n        const bundle = page.querySelector('kaching-bundle');\n        const initialized = bundle && bundle.getAttribute('data-initialized');\n        const hasRenderedContent = Boolean(bundle && bundle.innerText && bundle.innerText.trim().length > 10);\n        kachingFallback.hidden = Boolean(hasRenderedContent && initialized !== 'skipped');\n      };\n\n      syncKachingFallback();\n      window.setTimeout(syncKachingFallback, 1000);\n      window.setTimeout(syncKachingFallback, 3500);\n      window.setTimeout(syncKachingFallback, 7000);\n      window.setInterval(syncKachingFallback, 3000);\n      const bundle = page.querySelector('kaching-bundle');\n      if (bundle && 'MutationObserver' in window) {\n        new MutationObserver(syncKachingFallback).observe(bundle, {\n          childList: true,\n          subtree: true,\n          attributes: true,\n          characterData: true\n        });\n      }\n      const offerInfo = page.querySelector('.vmr-offer-info');\n      if (offerInfo && 'MutationObserver' in window) {\n        new MutationObserver(syncKachingFallback).observe(offerInfo, {\n          childList: true,\n          subtree: false\n        });\n      }\n    });\n  }\n\n  const mainSection = root.querySelector('[data-velmora-main]');\n  const mainConfig = parseJSONScript('[data-velmora-main-config]', mainSection);\n\n  if (!mainSection || !mainConfig) {\n    initNativeHeaderDetailsModalGuard();\n    initNavDrawer();\n    initReveal();\n    initFragranceAccordions();\n    initNativeProductTranslation();\n    initNativeMediaOverride();\n    initNativeProductAnchor();\n    initNativeScrollButtons();\n    initRedesign();\n    return;\n  }\n\n  const productData = mainConfig.product || null;\n  const currencyCode = mainConfig.currency_code || window.velmoraCurrencyCode || (window.Shopify && window.Shopify.currency && window.Shopify.currency.active) || 'EUR';\n  const optionNames = Array.isArray(productData && productData.options) ? productData.options : [];\n  const variantInput = mainSection.querySelector('[data-variant-id-input]');\n  const quantityInput = mainSection.querySelector('[data-quantity-input]');\n  const finishPropertyInput = mainSection.querySelector('[data-finish-property]');\n  const fragrancePropertyInput = mainSection.querySelector('[data-fragrance-property]');\n  const bundlePropertyInput = mainSection.querySelector('[data-bundle-property]');\n  const form = mainSection.querySelector('[data-velmora-product-form]');\n  const submitButtons = Array.from(root.querySelectorAll('[data-main-submit]'));\n  const qtyValue = mainSection.querySelector('[data-qty-value]');\n  const bundleToggle = mainSection.querySelector('[data-bundle-toggle]');\n  const finishValue = mainSection.querySelector('[data-finish-value]');\n  const errorBox = mainSection.querySelector('[data-cta-error]');\n  const finishButtons = Array.from(mainSection.querySelectorAll('[data-finish-control]'));\n  const fragranceButtons = Array.from(mainSection.querySelectorAll('[data-fragrance-control]'));\n  const galleryThumbs = Array.from(mainSection.querySelectorAll('[data-gallery-thumb]'));\n  const galleryMain = mainSection.querySelector('[data-gallery-main]');\n  const galleryPackshot = mainSection.querySelector('[data-gallery-packshot]');\n  const galleryFeaturedImage = mainSection.querySelector('[data-gallery-featured-image]');\n  const galleryIndex = mainSection.querySelector('[data-gallery-index]');\n  const stickyBar = root.querySelector('[data-sticky-atc]');\n  const stickyButton = root.querySelector('[data-sticky-submit]');\n  const buyAnchor = document.getElementById(mainConfig.buy_anchor_id || 'buy');\n  const stickyPauseSections = Array.from(root.querySelectorAll('.problem, .pitch, .how, .compare'));\n  const packshotTargets = Array.from(root.querySelectorAll('[data-velmora-packshot-product]'));\n  const heroNameTargets = Array.from(root.querySelectorAll('[data-velmora-fragrance-name]'));\n  const heroNumTargets = Array.from(root.querySelectorAll('[data-velmora-fragrance-num]'));\n  const stickyName = root.querySelector('[data-sticky-name]');\n  const stickyPrice = root.querySelector('[data-sticky-price]');\n  const priceTargets = Array.from(root.querySelectorAll('[data-current-price]'));\n  const compareTargets = Array.from(root.querySelectorAll('[data-compare-price]'));\n  const badgeTargets = Array.from(root.querySelectorAll('[data-price-badge]'));\n  const countdownTargets = Array.from(root.querySelectorAll('[data-countdown]'));\n  const stockTargets = Array.from(root.querySelectorAll('[data-stock-count]'));\n  const heroVariantButtons = Array.from(root.querySelectorAll('[data-hero-variant-button]'));\n  const scrollButtons = Array.from(root.querySelectorAll('[data-scroll-buy]'));\n  const galleryPlaceholders = mainConfig.gallery_placeholders || [];\n\n  const defaultVariantId = mainConfig.initial_variant_id || (productData && productData.selected_or_first_available_variant && productData.selected_or_first_available_variant.id) || (productData && productData.variants && productData.variants[0] && productData.variants[0].id);\n  const finishOptionName = mainConfig.finish_option_name || '';\n  const fragranceOptionName = mainConfig.fragrance_option_name || '';\n  const bundleVariantId = mainConfig.bundle_variant_id || null;\n  const bundlePriceCents = Number(mainConfig.bundle_price_cents || 0);\n  const bundleCompareCents = Number(mainConfig.bundle_compare_cents || 0);\n\n  const state = {\n    quantity: 1,\n    bundle: Boolean(bundleToggle && bundleToggle.checked),\n    galleryIndex: 0,\n    accent: mainConfig.default_accent || 'terracotta',\n    urgency: mainConfig.default_urgency || 'on',\n    heroMode: mainConfig.default_hero_mode || 'light',\n    heroVariant: mainConfig.default_hero_variant || 'editorial',\n    currentVariant: null,\n    optionSelections: {},\n    finish: null,\n    fragrance: null\n  };\n\n  function findVariantById(id) {\n    if (!productData || !Array.isArray(productData.variants)) return null;\n    return productData.variants.find((variant) => String(variant.id) === String(id)) || null;\n  }\n\n  function findVariantFromSelections() {\n    if (!productData || !Array.isArray(productData.variants) || !optionNames.length) return null;\n    return productData.variants.find((variant) => {\n      return optionNames.every((name, index) => {\n        const wanted = state.optionSelections[name];\n        if (!wanted) return true;\n        return variant.options[index] === wanted;\n      });\n    }) || null;\n  }\n\n  function getFinishById(id) {\n    return finishButtons.find((button) => button.dataset.finishId === id) || null;\n  }\n\n  function getFragranceById(id) {\n    return fragranceButtons.find((button) => button.dataset.fragranceId === id) || null;\n  }\n\n  function applyBodyState() {\n    body.setAttribute('data-accent', state.accent);\n    body.setAttribute('data-urgency', state.urgency);\n    body.setAttribute('data-hero-mode', state.heroMode);\n    body.setAttribute('data-hero-variant', state.heroVariant);\n  }\n\n  function setInitialSelections() {\n    state.currentVariant = findVariantById(defaultVariantId);\n    if (!state.currentVariant && productData && Array.isArray(productData.variants)) {\n      state.currentVariant = productData.variants[0] || null;\n    }\n\n    if (state.currentVariant && Array.isArray(state.currentVariant.options)) {\n      optionNames.forEach((name, index) => {\n        state.optionSelections[name] = state.currentVariant.options[index];\n      });\n    }\n\n    state.finish = finishButtons.find((button) => button.classList.contains('active')) || finishButtons[0] || null;\n    state.fragrance = fragranceButtons.find((button) => button.classList.contains('active')) || fragranceButtons[0] || null;\n\n    if (state.finish && finishOptionName && state.finish.dataset.optionValue) {\n      state.optionSelections[finishOptionName] = state.finish.dataset.optionValue;\n      state.accent = state.finish.dataset.accent || state.accent;\n    }\n\n    if (state.fragrance && fragranceOptionName && state.fragrance.dataset.optionValue) {\n      state.optionSelections[fragranceOptionName] = state.fragrance.dataset.optionValue;\n    }\n\n    const resolved = findVariantFromSelections();\n    if (resolved) state.currentVariant = resolved;\n  }\n\n  function syncSelectionClasses() {\n    finishButtons.forEach((button) => {\n      button.classList.toggle('active', state.finish === button);\n      button.setAttribute('aria-pressed', state.finish === button ? 'true' : 'false');\n    });\n\n    fragranceButtons.forEach((button) => {\n      button.classList.toggle('active', state.fragrance === button);\n      button.setAttribute('aria-pressed', state.fragrance === button ? 'true' : 'false');\n    });\n\n    heroVariantButtons.forEach((button) => {\n      button.classList.toggle('active', button.dataset.heroVariant === state.heroVariant);\n      button.setAttribute('aria-pressed', button.dataset.heroVariant === state.heroVariant ? 'true' : 'false');\n    });\n  }\n\n  function totalPriceCents() {\n    const variantPrice = Number(state.currentVariant && state.currentVariant.price || 0);\n    const bundleAmount = state.bundle ? bundlePriceCents : 0;\n    return (variantPrice + bundleAmount) * state.quantity;\n  }\n\n  function totalCompareCents() {\n    const compare = Number(state.currentVariant && state.currentVariant.compare_at_price || 0);\n    const bundleCompare = state.bundle ? bundleCompareCents : 0;\n    return (compare + bundleCompare) * state.quantity;\n  }\n\n  function priceBadgeText(priceCents, compareCents) {\n    const price = Number(priceCents || 0);\n    const compare = Number(compareCents || 0);\n    if (!(compare > price && price > 0)) return '';\n    const percent = Math.round(((compare - price) / compare) * 100);\n    return `-${percent}%`;\n  }\n\n  function syncPrices() {\n    const currentText = formatMoneyTight(totalPriceCents(), currencyCode);\n    const compareText = totalCompareCents() > totalPriceCents() ? formatMoneyTight(totalCompareCents(), currencyCode) : '';\n    const badgeText = priceBadgeText(totalPriceCents(), totalCompareCents());\n\n    priceTargets.forEach((node) => {\n      node.textContent = currentText;\n    });\n\n    compareTargets.forEach((node) => {\n      node.textContent = compareText;\n      node.hidden = !compareText;\n    });\n\n    badgeTargets.forEach((node) => {\n      node.textContent = badgeText;\n      node.hidden = !badgeText;\n    });\n\n    if (stickyPrice) stickyPrice.textContent = currentText;\n  }\n\n  function syncProperties() {\n    if (finishPropertyInput) {\n      finishPropertyInput.value = state.finish ? state.finish.dataset.finishLabel || '' : '';\n    }\n    if (fragrancePropertyInput) {\n      fragrancePropertyInput.value = state.fragrance ? state.fragrance.dataset.fragranceName || '' : '';\n    }\n    if (bundlePropertyInput) {\n      bundlePropertyInput.value = state.bundle ? (mainConfig.bundle_property_label || 'Oui') : 'Non';\n    }\n  }\n\n  function syncVariant() {\n    const candidate = findVariantFromSelections();\n    if (candidate) state.currentVariant = candidate;\n\n    if (variantInput && state.currentVariant) {\n      variantInput.value = state.currentVariant.id;\n    }\n\n    if (finishValue && state.finish) {\n      finishValue.textContent = state.finish.dataset.finishLabel || '';\n    }\n\n    if (stickyName && state.fragrance) {\n      stickyName.textContent = `${mainConfig.sticky_name_prefix || 'Velmora \u00B7'} ${state.fragrance.dataset.fragranceName || ''}`.trim();\n    }\n\n    const available = Boolean(state.currentVariant && state.currentVariant.available);\n    submitButtons.forEach((button) => {\n      button.disabled = !available;\n      const label = button.querySelector('[data-submit-label]');\n      if (label) {\n        label.textContent = available\n          ? (button.dataset.defaultLabel || mainConfig.submit_label || (window.variantStrings && window.variantStrings.addToCart) || 'Ajouter au panier')\n          : (mainConfig.sold_out_label || (window.variantStrings && window.variantStrings.soldOut) || 'Epuis\u00E9');\n      }\n    });\n\n    syncProperties();\n    syncPrices();\n  }\n\n  function syncPackshots() {\n    const color = state.fragrance ? state.fragrance.dataset.fragranceColor || '#C16D4E' : '#C16D4E';\n    const finishId = state.finish ? state.finish.dataset.finishId || 'brass' : 'brass';\n    const svg = productSVG(finishId, color);\n\n    packshotTargets.forEach((target) => {\n      target.innerHTML = svg;\n    });\n\n    heroNameTargets.forEach((target) => {\n      target.textContent = state.fragrance ? state.fragrance.dataset.fragranceName || '' : '';\n    });\n\n    heroNumTargets.forEach((target) => {\n      target.textContent = state.fragrance ? `N\u00B0${state.fragrance.dataset.fragranceNum || ''}` : '';\n    });\n  }\n\n  function syncStock() {\n    stockTargets.forEach((target) => {\n      target.textContent = String(mainConfig.stock_count || 17);\n    });\n  }\n\n  function syncQuantity() {\n    if (qtyValue) qtyValue.textContent = String(state.quantity);\n    if (quantityInput) quantityInput.value = String(state.quantity);\n    syncPrices();\n  }\n\n  function setFinish(button) {\n    if (!button) return;\n    state.finish = button;\n    state.accent = button.dataset.accent || state.accent;\n    if (finishOptionName && button.dataset.optionValue) {\n      state.optionSelections[finishOptionName] = button.dataset.optionValue;\n    }\n    applyBodyState();\n    syncSelectionClasses();\n    syncPackshots();\n    syncVariant();\n  }\n\n  function setFragrance(button) {\n    if (!button) return;\n    state.fragrance = button;\n    if (fragranceOptionName && button.dataset.optionValue) {\n      state.optionSelections[fragranceOptionName] = button.dataset.optionValue;\n    }\n    syncSelectionClasses();\n    syncPackshots();\n    syncVariant();\n  }\n\n  function setHeroVariant(value) {\n    state.heroVariant = value || 'editorial';\n    applyBodyState();\n    syncSelectionClasses();\n  }\n\n  function setGallery(index) {\n    if (!galleryMain || !galleryIndex) return;\n    const max = galleryThumbs.length || 1;\n    state.galleryIndex = ((index % max) + max) % max;\n\n    galleryThumbs.forEach((thumb, thumbIndex) => {\n      thumb.classList.toggle('active', thumbIndex === state.galleryIndex);\n    });\n\n    const currentThumb = galleryThumbs[state.galleryIndex];\n    const label = currentThumb ? currentThumb.dataset.placeholder : '';\n    const imageSrc = currentThumb ? currentThumb.dataset.imageSrc : '';\n    const imageAlt = currentThumb ? currentThumb.dataset.imageAlt : '';\n\n    if (galleryPackshot) {\n      galleryPackshot.style.display = state.galleryIndex === 0 ? '' : 'none';\n    }\n\n    let placeholder = galleryMain.querySelector('.gallery-main-ph');\n    let image = galleryMain.querySelector('.gallery-main-img');\n\n    if (state.galleryIndex === 0) {\n      if (placeholder) placeholder.remove();\n      if (image) image.remove();\n      if (galleryFeaturedImage && imageSrc && galleryFeaturedImage.getAttribute('src') !== imageSrc) {\n        galleryFeaturedImage.setAttribute('src', imageSrc);\n        galleryFeaturedImage.setAttribute('alt', imageAlt || label || '');\n      }\n    } else {\n      if (imageSrc) {\n        if (placeholder) placeholder.remove();\n        if (!image) {\n          image = document.createElement('img');\n          image.className = 'gallery-main-img';\n          image.loading = 'lazy';\n          galleryMain.insertBefore(image, galleryMain.querySelector('.gallery-nav'));\n        }\n        image.src = imageSrc;\n        image.alt = imageAlt || label || '';\n      } else {\n        if (image) image.remove();\n        if (!placeholder) {\n          placeholder = document.createElement('div');\n          placeholder.className = 'gallery-main-ph';\n          galleryMain.insertBefore(placeholder, galleryMain.querySelector('.gallery-nav'));\n        }\n        placeholder.textContent = label || galleryPlaceholders[state.galleryIndex] || '[visuel]';\n      }\n    }\n\n    galleryIndex.textContent = `${String(state.galleryIndex + 1).padStart(2, '0')} / ${String(max).padStart(2, '0')}`;\n  }\n\n  function updateCountdown() {\n    if (!countdownTargets.length) return;\n    const now = new Date();\n    const end = new Date(now);\n    end.setHours(23, 59, 59, 999);\n\n    const diff = Math.max(0, end.getTime() - now.getTime());\n    const hours = Math.floor(diff / 3600000);\n    const minutes = Math.floor((diff % 3600000) / 60000);\n    const seconds = Math.floor((diff % 60000) / 1000);\n    const label = `${String(hours).padStart(2, '0')}h ${String(minutes).padStart(2, '0')}m ${String(seconds).padStart(2, '0')}s`;\n\n    countdownTargets.forEach((node) => {\n      node.textContent = label;\n    });\n  }\n\n  function updateStickyBar() {\n    if (!stickyBar || !buyAnchor) return;\n    const rect = buyAnchor.getBoundingClientRect();\n    const isMobile = window.innerWidth < 861;\n    const shouldPause = isMobile && stickyPauseSections.some((section) => {\n      const sectionRect = section.getBoundingClientRect();\n      return sectionRect.top < window.innerHeight - 84 && sectionRect.bottom > 116;\n    });\n    const shouldShow = isMobile && rect.bottom < 220 && !shouldPause;\n    stickyBar.classList.toggle('visible', shouldShow);\n  }\n\n  function scrollToBuy() {\n    if (!buyAnchor) return;\n    const header = document.querySelector('.shopify-section-group-header-group, #shopify-section-header, header');\n    const headerHeight = header ? Math.min(110, Math.max(0, header.getBoundingClientRect().height)) : 0;\n    const top = buyAnchor.getBoundingClientRect().top + window.pageYOffset - headerHeight - 14;\n    window.scrollTo({ top: Math.max(0, top), behavior: 'smooth' });\n  }\n\n  function setError(message) {\n    if (!errorBox) return;\n    errorBox.hidden = !message;\n    errorBox.textContent = message || '';\n  }\n\n  function buildLineItems() {\n    if (!state.currentVariant) return [];\n\n    const mainItem = {\n      id: Number(state.currentVariant.id),\n      quantity: state.quantity,\n      properties: {\n        'Finition': state.finish ? state.finish.dataset.finishLabel || '' : '',\n        'Signature': state.fragrance ? state.fragrance.dataset.fragranceName || '' : ''\n      }\n    };\n\n    if (state.bundle) {\n      mainItem.properties['Capsule supplementaire'] = bundleVariantId ? 'Ajoutee' : 'Selectionnee';\n    }\n\n    const items = [mainItem];\n\n    if (state.bundle && bundleVariantId) {\n      items.push({\n        id: Number(bundleVariantId),\n        quantity: state.quantity\n      });\n    }\n\n    return items;\n  }\n\n  function setSubmitting(submitting) {\n    submitButtons.forEach((button) => {\n      button.disabled = submitting || !(state.currentVariant && state.currentVariant.available);\n      const label = button.querySelector('[data-submit-label]');\n      if (!label) return;\n      if (!button.dataset.defaultLabel) {\n        button.dataset.defaultLabel = label.textContent;\n      }\n      label.textContent = submitting ? (mainConfig.loading_label || 'Ajout...') : button.dataset.defaultLabel;\n    });\n  }\n\n  async function handleSubmit(event) {\n    if (event) event.preventDefault();\n    if (!state.currentVariant || !state.currentVariant.available) return;\n\n    setSubmitting(true);\n    setError('');\n\n    try {\n      const response = await fetch(`${(window.routes && window.routes.cart_add_url) || '/cart/add'}.js`, {\n        method: 'POST',\n        headers: {\n          'Content-Type': 'application/json',\n          Accept: 'application/json'\n        },\n        body: JSON.stringify({ items: buildLineItems() })\n      });\n\n      if (!response.ok) {\n        let message = mainConfig.error_label || 'Impossible d ajouter ce produit au panier.';\n        try {\n          const payload = await response.json();\n          if (payload && payload.description) message = payload.description;\n        } catch (_) {\n          /* noop */\n        }\n        throw new Error(message);\n      }\n\n      window.location.href = (window.routes && window.routes.cart_url) || '/cart';\n    } catch (error) {\n      console.error('[velmora-parfum] cart error', error);\n      setSubmitting(false);\n      setError(error.message || mainConfig.error_label || 'Impossible d ajouter ce produit au panier.');\n    }\n  }\n\n  function bindControls() {\n    finishButtons.forEach((button) => {\n      button.addEventListener('click', () => setFinish(button));\n    });\n\n    fragranceButtons.forEach((button) => {\n      button.addEventListener('click', () => setFragrance(button));\n    });\n\n    galleryThumbs.forEach((button, index) => {\n      button.addEventListener('click', () => setGallery(index));\n    });\n\n    const prev = mainSection.querySelector('[data-gallery-prev]');\n    const next = mainSection.querySelector('[data-gallery-next]');\n    if (prev) prev.addEventListener('click', () => setGallery(state.galleryIndex - 1));\n    if (next) next.addEventListener('click', () => setGallery(state.galleryIndex + 1));\n\n    const decrease = mainSection.querySelector('[data-qty-decrease]');\n    const increase = mainSection.querySelector('[data-qty-increase]');\n    if (decrease) {\n      decrease.addEventListener('click', () => {\n        state.quantity = Math.max(1, state.quantity - 1);\n        syncQuantity();\n      });\n    }\n    if (increase) {\n      increase.addEventListener('click', () => {\n        state.quantity = Math.min(9, state.quantity + 1);\n        syncQuantity();\n      });\n    }\n\n    if (bundleToggle) {\n      bundleToggle.addEventListener('change', () => {\n        state.bundle = bundleToggle.checked;\n        syncProperties();\n        syncPrices();\n      });\n    }\n\n    heroVariantButtons.forEach((button) => {\n      button.addEventListener('click', () => setHeroVariant(button.dataset.heroVariant));\n    });\n\n    scrollButtons.forEach((button) => {\n      button.addEventListener('click', () => {\n        const fragranceNum = button.dataset.fragranceNum;\n        if (fragranceNum) {\n          const fragrance = fragranceButtons.find((item) => item.dataset.fragranceNum === fragranceNum);\n          if (fragrance) setFragrance(fragrance);\n        }\n        scrollToBuy();\n      });\n    });\n\n    if (stickyButton) stickyButton.addEventListener('click', handleSubmit);\n    if (form) form.addEventListener('submit', handleSubmit);\n  }\n\n  function boot() {\n    let stickyScrollTimer = null;\n\n    initNativeHeaderDetailsModalGuard();\n    initNavDrawer();\n    initReveal();\n    initFragranceAccordions();\n    initNativeProductAnchor();\n    initRedesign();\n    setInitialSelections();\n    applyBodyState();\n    syncSelectionClasses();\n    syncStock();\n    syncVariant();\n    syncPackshots();\n    syncQuantity();\n    setGallery(0);\n    bindControls();\n    updateCountdown();\n    updateStickyBar();\n    window.setInterval(updateCountdown, 1000);\n    window.addEventListener('scroll', () => {\n      updateStickyBar();\n      window.clearTimeout(stickyScrollTimer);\n      stickyScrollTimer = window.setTimeout(updateStickyBar, 180);\n    }, { passive: true });\n    window.addEventListener('scrollend', updateStickyBar, { passive: true });\n    window.addEventListener('resize', updateStickyBar);\n  }\n\n  boot();\n})();\n\n/* ============================================================\n   STANDARD <product-form> SUPPORT \u2014 variant sync + ATC\n   Acts only when ecoshrine's <variant-selects> upgrade fails.\n   ============================================================ */\n(function () {\n  'use strict';\n\n  var productCache = {};\n  function loadProduct(handle) {\n    if (productCache[handle]) return Promise.resolve(productCache[handle]);\n    return fetch('/products/' + handle + '.js', { credentials: 'same-origin' })\n      .then(function (r) { return r.json(); })\n      .then(function (p) { productCache[handle] = p; return p; });\n  }\n\n  function escName(name) {\n    if (window.CSS && CSS.escape) return CSS.escape(name);\n    return name.replace(/([\"\\\\\\[\\]\\.\\:\\(\\)])/g, '\\\\$1');\n  }\n\n  function getProductHandle(pf) {\n    var sectionId = pf.dataset.section || '';\n    var sel = document.querySelector('variant-selects[data-section=\"' + sectionId + '\"], variant-radios[data-section=\"' + sectionId + '\"]');\n    var url = sel && sel.dataset && sel.dataset.url ? sel.dataset.url : null;\n    if (url) return url.split('/products/').pop().split('?')[0];\n    var m = window.location.pathname.match(/\\/products\\/([^\\/?]+)/);\n    return m ? m[1] : null;\n  }\n\n  function getOptionNames(pf) {\n    return (pf.dataset.options || '').split(',').map(function (s) { return s.trim(); }).filter(Boolean);\n  }\n\n  function getSelectedValues(pf) {\n    var values = {};\n    var sectionId = pf.dataset.section || '';\n    var sel = document.querySelector('variant-selects[data-section=\"' + sectionId + '\"], variant-radios[data-section=\"' + sectionId + '\"]');\n    var scope = sel || document;\n    getOptionNames(pf).forEach(function (name) {\n      var radios = scope.querySelectorAll('input[type=\"radio\"]');\n      for (var i = 0; i < radios.length; i++) {\n        if (radios[i].name === name && radios[i].checked && radios[i].value) {\n          values[name] = radios[i].value;\n          break;\n        }\n      }\n      if (values[name] != null) return;\n      var selects = scope.querySelectorAll('select');\n      for (var j = 0; j < selects.length; j++) {\n        if (selects[j].name === name && selects[j].value) {\n          values[name] = selects[j].value;\n          break;\n        }\n      }\n    });\n    return values;\n  }\n\n  function findVariant(product, selected) {\n    if (!product || !product.variants || !product.options) return null;\n    var optNames = product.options.map(function (o) { return typeof o === 'string' ? o : o.name; });\n    var picked = optNames.map(function (name) {\n      if (selected[name] != null) return selected[name];\n      var key = Object.keys(selected).find(function (k) { return k.toLowerCase() === name.toLowerCase(); });\n      return key ? selected[key] : null;\n    });\n    return product.variants.find(function (v) {\n      return picked.every(function (val, i) { return val == null || v.options[i] === val; });\n    }) || null;\n  }\n\n  function fmt(cents) {\n    try {\n      return (cents / 100).toLocaleString(window.velmoraLocale || 'fr-FR', {\n        style: 'currency',\n        currency: window.velmoraCurrencyCode || 'EUR'\n      });\n    } catch (e) { return (cents / 100).toFixed(2) + (window.velmoraCurrencyCode === 'SEK' ? ' kr' : ' \u20AC'); }\n  }\n\n  function updateUI(pf, variant, product) {\n    if (!variant) return;\n    var hidden = pf.querySelector('input[name=\"id\"]');\n    if (hidden) hidden.value = variant.id;\n    var sectionId = pf.dataset.section || '';\n    var sel = document.querySelector('variant-selects[data-section=\"' + sectionId + '\"], variant-radios[data-section=\"' + sectionId + '\"]');\n    var idSelect = (sel || document).querySelector('select[name=\"id\"]');\n    if (idSelect) {\n      idSelect.value = String(variant.id);\n      var ev;\n      try { ev = new Event('change', { bubbles: true }); } catch (e) { ev = document.createEvent('Event'); ev.initEvent('change', true, true); }\n      idSelect.dispatchEvent(ev);\n    }\n    var optionNames = getOptionNames(pf);\n    optionNames.forEach(function (name, i) {\n      var label = document.getElementById('custom-label-' + sectionId + '-' + (i + 1));\n      if (label && variant.options[i] != null) {\n        label.textContent = name.toUpperCase() + ' - ' + variant.options[i];\n      }\n    });\n    if (window.history && window.history.replaceState) {\n      try {\n        var u = new URL(window.location.href);\n        u.searchParams.set('variant', String(variant.id));\n        window.history.replaceState({}, '', u.toString());\n      } catch (e) {}\n    }\n  }\n\n  function syncFromCurrent(pf) {\n    var handle = getProductHandle(pf);\n    if (!handle) return;\n    loadProduct(handle).then(function (product) {\n      var selected = getSelectedValues(pf);\n      var v = findVariant(product, selected);\n      if (v) updateUI(pf, v, product);\n    });\n  }\n\n  function bindSync(pf) {\n    if (pf.dataset.vmrStdSync) return;\n    pf.dataset.vmrStdSync = '1';\n\n    document.addEventListener('change', function () { setTimeout(function () { syncFromCurrent(pf); }, 0); }, true);\n    document.addEventListener('click', function () { setTimeout(function () { syncFromCurrent(pf); }, 0); }, true);\n    document.addEventListener('input', function () { setTimeout(function () { syncFromCurrent(pf); }, 0); }, true);\n\n    var lastSig = '';\n    setInterval(function () {\n      var sig = JSON.stringify(getSelectedValues(pf));\n      if (sig !== lastSig) {\n        lastSig = sig;\n        syncFromCurrent(pf);\n      }\n    }, 200);\n\n    syncFromCurrent(pf);\n  }\n\n  function forceEnable(btn) {\n    if (!btn) return;\n    if (btn.hasAttribute('disabled')) btn.removeAttribute('disabled');\n    if (btn.disabled) btn.disabled = false;\n    if (btn.getAttribute('aria-disabled') === 'true') btn.setAttribute('aria-disabled', 'false');\n    if (btn.getAttribute('data-unavailable') === 'true') btn.removeAttribute('data-unavailable');\n  }\n\n  function showError(pf, msg) {\n    var w = pf.querySelector('.product-form__error-message-wrapper');\n    if (!w) return;\n    w.hidden = false;\n    var s = w.querySelector('.product-form__error-message');\n    if (s) s.textContent = msg || 'Konnte nicht zum Warenkorb hinzugef\u00FCgt werden.';\n  }\n\n  function clearError(pf) {\n    var w = pf.querySelector('.product-form__error-message-wrapper');\n    if (w) w.hidden = true;\n  }\n\n  function openCart() {\n    var sections = ['cart-drawer', 'cart-icon-bubble', 'cart-notification-product', 'cart-notification-button'];\n    fetch('/cart?sections=' + sections.join(','))\n      .then(function (r) { return r.json(); })\n      .then(function (data) {\n        sections.forEach(function (id) {\n          var html = data[id]; if (!html) return;\n          var el = document.getElementById('shopify-section-' + id);\n          if (el) el.outerHTML = html;\n        });\n      })\n      .catch(function () {})\n      .finally(function () {\n        setTimeout(function () {\n          var d = document.querySelector('cart-drawer');\n          if (d && typeof d.open === 'function') return d.open();\n          if (d && typeof d.show === 'function') return d.show();\n          document.dispatchEvent(new CustomEvent('cart:open'));\n          var t = document.querySelector('[data-cart-toggle],[aria-controls=\"cart-drawer\"],[data-drawer-trigger=\"cart\"]');\n          if (t) { t.click(); return; }\n          window.location.href = '/cart';\n        }, 60);\n      });\n  }\n\n  function bindAtc(pf) {\n    var btn = pf.querySelector('[type=\"submit\"], .product-form__submit');\n    if (!btn || btn.dataset.vmrStdAtc) return;\n    btn.dataset.vmrStdAtc = '1';\n    forceEnable(btn);\n    var mo = new MutationObserver(function () { forceEnable(btn); });\n    mo.observe(btn, { attributes: true, attributeFilter: ['disabled', 'aria-disabled', 'data-unavailable'] });\n    btn.addEventListener('click', function (event) {\n      var form = pf.querySelector('form[action*=\"/cart/add\"]');\n      if (!form) return;\n      event.preventDefault();\n      event.stopImmediatePropagation();\n      clearError(pf);\n      var handle = getProductHandle(pf);\n      if (!handle) { showError(pf, 'Produit introuvable.'); return; }\n      var spinner = btn.querySelector('.loading-overlay__spinner');\n      btn.setAttribute('aria-busy', 'true');\n      if (spinner) spinner.classList.remove('hidden');\n      loadProduct(handle).then(function (product) {\n        var selected = getSelectedValues(pf);\n        var variant = findVariant(product, selected);\n        if (!variant) throw new Error('Cette combinaison n\\'existe pas.');\n        if (!variant.available) throw new Error('Variante indisponible.');\n        var hidden = form.querySelector('input[name=\"id\"]');\n        if (hidden) hidden.value = variant.id;\n        var fd = new FormData(form);\n        fd.set('id', variant.id);\n        return fetch('/cart/add.js', {\n          method: 'POST', body: fd,\n          headers: { 'Accept': 'application/json' },\n          credentials: 'same-origin'\n        }).then(function (res) {\n          if (!res.ok) return res.json().then(function (j) { throw new Error(j.description || j.message || 'Add to cart failed'); });\n          return res.json();\n        });\n      }).then(function () {\n        btn.setAttribute('aria-busy', 'false');\n        if (spinner) spinner.classList.add('hidden');\n        openCart();\n      }).catch(function (err) {\n        btn.setAttribute('aria-busy', 'false');\n        if (spinner) spinner.classList.add('hidden');\n        showError(pf, err && err.message);\n      });\n    }, true);\n  }\n\n  function scan() {\n    document.querySelectorAll('product-form[data-main=\"true\"]').forEach(function (pf) {\n      bindSync(pf);\n      bindAtc(pf);\n    });\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', scan);\n  } else {\n    scan();\n  }\n  setTimeout(scan, 300);\n  setTimeout(scan, 1200);\n  setTimeout(scan, 3000);\n})();\n"],
  "mappings": "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",
  "names": ["currencyCode", "galleryMain", "offerInfo", "bundle"]
}
