{
  "version": 3,
  "sources": ["/cdn/shop/t/23/assets/theme.js?dpp_release=issue_692_locale_links_20260522"],
  "sourcesContent": ["(function () {\n  var lastRenderedCart = null\n\n  function formatMoney(cents, moneyFormat) {\n    var value = (cents / 100).toFixed(2).replace('.', ',')\n    return (moneyFormat || '\u20AC{{amount}}').replace('{{amount}}', value)\n  }\n\n  function normalizeToCents(amount) {\n    if (typeof amount === 'number') {\n      return Number.isInteger(amount) ? amount : Math.round(amount * 100)\n    }\n\n    if (typeof amount === 'string') {\n      var normalized = amount.replace(',', '.').trim()\n      if (normalized === '') return 0\n      if (normalized.indexOf('.') > -1) return Math.round(parseFloat(normalized) * 100)\n      var parsedInt = parseInt(normalized, 10)\n      return isNaN(parsedInt) ? 0 : parsedInt\n    }\n\n    return 0\n  }\n\n  var FREE_SHIPPING_THRESHOLD_CENTS = 3500\n\n  function escapeHtml(value) {\n    return String(value || '')\n      .replace(/&/g, '&amp;')\n      .replace(/</g, '&lt;')\n      .replace(/>/g, '&gt;')\n      .replace(/\"/g, '&quot;')\n      .replace(/'/g, '&#39;')\n  }\n\n  function lucideIcon(name, className, strokeWidth) {\n    var iconPaths = {\n      'trash-2': [\n        '<path d=\"M10 11v6\"></path>',\n        '<path d=\"M14 11v6\"></path>',\n        '<path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\"></path>',\n        '<path d=\"M3 6h18\"></path>',\n        '<path d=\"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"></path>'\n      ]\n    }\n\n    var paths = iconPaths[name]\n    if (!paths) return ''\n\n    return '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"' + escapeHtml(strokeWidth || '2') + '\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"' + escapeHtml(className || 'h-4 w-4') + '\" aria-hidden=\"true\">' + paths.join('') + '</svg>'\n  }\n\n  function getThemeConfig() {\n    return window.DPPThemeConfig || {}\n  }\n\n  function getThemeTranslations() {\n    return getThemeConfig().translations || {}\n  }\n\n  function getCartUrl() {\n    var routes = getThemeConfig().routes || {}\n    return localizeInternalUrl(routes.cartUrl || '/cart')\n  }\n\n  function localizeInternalUrl(url) {\n    var href = String(url || '').trim()\n    var routes = getThemeConfig().routes || {}\n    var rootUrl = (routes.rootUrl || '/').replace(/\\/+$/, '')\n    var localePrefix = rootUrl === '/' ? '' : rootUrl\n    var path = href\n    var suffix = ''\n\n    if (!localePrefix) {\n      var localizedRouteUrls = [routes.cartUrl, routes.searchUrl, routes.collectionsUrl]\n      localizedRouteUrls.some(function (routeUrl) {\n        var routePath = String(routeUrl || '')\n        var match = routePath.match(/^\\/([a-z]{2}(?:-[a-z]{2})?)(?:\\/|$)/i)\n        localePrefix = match ? '/' + match[1] : ''\n        return Boolean(localePrefix)\n      })\n    }\n\n    if (\n      !href\n      || !localePrefix\n      || href.charAt(0) !== '/'\n      || href.indexOf('//') === 0\n      || href.indexOf(localePrefix + '?') === 0\n      || href.indexOf(localePrefix + '#') === 0\n      || href === localePrefix\n    ) {\n      return href\n    }\n\n    if (href.indexOf(localePrefix + '/') === 0) {\n      return canonicalizeLocalizedInternalUrl(href, localePrefix)\n    }\n\n    var hashIndex = path.indexOf('#')\n    var queryIndex = path.indexOf('?')\n    var suffixIndex = -1\n\n    if (hashIndex > -1 && queryIndex > -1) {\n      suffixIndex = Math.min(hashIndex, queryIndex)\n    } else {\n      suffixIndex = Math.max(hashIndex, queryIndex)\n    }\n\n    if (suffixIndex > -1) {\n      suffix = path.slice(suffixIndex)\n      path = path.slice(0, suffixIndex)\n    }\n\n    return canonicalizeLocalizedInternalUrl(localePrefix + path + suffix, localePrefix)\n  }\n\n  function canonicalizeLocalizedInternalUrl(url, localePrefix) {\n    var href = String(url || '').trim()\n    var suffix = ''\n    var path = href\n    var hashIndex = path.indexOf('#')\n    var queryIndex = path.indexOf('?')\n    var suffixIndex = hashIndex > -1 && queryIndex > -1 ? Math.min(hashIndex, queryIndex) : Math.max(hashIndex, queryIndex)\n    var legacyResourcePathMap = {\n      'olie-toevoeging': '/collections/olie-additief'\n    }\n\n    if (!href || !localePrefix || href.indexOf(localePrefix + '/') !== 0) {\n      return href\n    }\n\n    if (suffixIndex > -1) {\n      suffix = path.slice(suffixIndex)\n      path = path.slice(0, suffixIndex)\n    }\n\n    var pathWithoutLocale = path.slice(localePrefix.length).replace(/^\\/+|\\/+$/g, '')\n    var pathParts = pathWithoutLocale.split('/').filter(Boolean)\n    if (pathParts.length !== 1) {\n      return href\n    }\n\n    var handle = pathParts[0]\n    if (/^(account|blogs|cart|checkout|collections|pages|policies|products|search)$/i.test(handle)) {\n      return href\n    }\n\n    var mappedPath = legacyResourcePathMap[handle] || findKnownStorefrontResourcePath(handle, localePrefix)\n    return mappedPath ? localePrefix + mappedPath + suffix : href\n  }\n\n  function findKnownStorefrontResourcePath(handle, localePrefix) {\n    if (!handle || typeof document === 'undefined') return ''\n\n    var links = Array.prototype.slice.call(document.querySelectorAll('a[href]'))\n    var collectionPath = ''\n    var productPath = ''\n\n    links.some(function (link) {\n      var href = link.getAttribute('href') || ''\n      var path = href.split('?')[0].split('#')[0].replace(/\\/+$/g, '')\n\n      if (path === localePrefix + '/collections/' + handle) {\n        collectionPath = '/collections/' + handle\n        return true\n      }\n\n      if (!productPath && path === localePrefix + '/products/' + handle) {\n        productPath = '/products/' + handle\n      }\n\n      return false\n    })\n\n    return collectionPath || productPath\n  }\n\n  function getStorefrontRootUrl() {\n    var routes = getThemeConfig().routes || {}\n    var rootUrl = routes.rootUrl || '/'\n    return rootUrl.charAt(rootUrl.length - 1) === '/' ? rootUrl : rootUrl + '/'\n  }\n\n  function buildStorefrontUrl(path) {\n    var normalizedPath = String(path || '').replace(/^\\/+/, '')\n    return getStorefrontRootUrl() + normalizedPath\n  }\n\n  function getProductHandleFromUrl(url) {\n    var match = String(url || '').match(/\\/products\\/([^/?#]+)/)\n    return match ? match[1] : ''\n  }\n\n  function getProductUrlSuffix(url, handle) {\n    var sourceUrl = String(url || '')\n    var productPath = '/products/' + handle\n    var productPathIndex = sourceUrl.indexOf(productPath)\n    return productPathIndex > -1 ? sourceUrl.slice(productPathIndex + productPath.length) : ''\n  }\n\n  function buildProductUrl(product) {\n    var sourceUrl = product && product.url ? String(product.url) : ''\n    var handle = product && product.handle ? product.handle : getProductHandleFromUrl(sourceUrl)\n\n    if (handle) return buildStorefrontUrl('products/' + handle + getProductUrlSuffix(sourceUrl, handle))\n    return sourceUrl || '#'\n  }\n\n  function shouldUseIdentifierSearch(term) {\n    var normalized = String(term || '').trim()\n    return normalized.length >= 3 && /\\d/.test(normalized) && !/\\s/.test(normalized) && normalized.indexOf(':') === -1\n  }\n\n  function buildIdentifierSearchTerm(term) {\n    var normalized = String(term || '').trim().replace(/\"/g, '')\n    if (!shouldUseIdentifierSearch(normalized)) return normalized\n    return normalized + ' OR variants.sku:\"' + normalized + '\" OR variants.barcode:\"' + normalized + '\"'\n  }\n\n  function replaceTokens(template, values) {\n    return String(template || '').replace(/__([A-Z_]+)__/g, function (_, key) {\n      return values && Object.prototype.hasOwnProperty.call(values, key) ? values[key] : ''\n    })\n  }\n\n  function getShopifyFeatures() {\n    var featuresScript = document.getElementById('shopify-features')\n    if (!featuresScript) return {}\n\n    try {\n      return JSON.parse(featuresScript.textContent || '{}')\n    } catch (_error) {\n      return {}\n    }\n  }\n\n  function fetchGroupedByBundleVariants(productHandle) {\n    if (!productHandle) return Promise.resolve([])\n\n    var features = getShopifyFeatures()\n    var headers = {\n      'Content-Type': 'application/json',\n      Accept: 'application/json'\n    }\n\n    if (features.accessToken) {\n      headers['X-Shopify-Storefront-Access-Token'] = features.accessToken\n    }\n\n    return fetch('/api/2025-10/graphql.json', {\n      method: 'POST',\n      headers: headers,\n      body: JSON.stringify({\n        query: 'query ProductGroupedBy($handle: String!) { product(handle: $handle) { variants(first: 25) { nodes { groupedBy(first: 25) { nodes { id title availableForSale price { amount currencyCode } compareAtPrice { amount currencyCode } product { handle title onlineStoreUrl featuredImage { url altText } } } } } } } }',\n        variables: { handle: productHandle }\n      })\n    })\n      .then(function (response) {\n        if (!response.ok) throw new Error('grouped_by_request_failed')\n        return response.json()\n      })\n      .then(function (payload) {\n        if (payload && Array.isArray(payload.errors) && payload.errors.length > 0) {\n          throw new Error('grouped_by_graphql_failed')\n        }\n\n        var variants = payload && payload.data && payload.data.product && payload.data.product.variants && payload.data.product.variants.nodes\n        if (!Array.isArray(variants)) return []\n\n        var bundleVariants = []\n        variants.forEach(function (variant) {\n          var groupedBy = variant && variant.groupedBy && Array.isArray(variant.groupedBy.nodes) ? variant.groupedBy.nodes : []\n          groupedBy.forEach(function (bundleVariant) {\n            if (bundleVariant) bundleVariants.push(bundleVariant)\n          })\n        })\n        return bundleVariants\n      })\n  }\n\n  function normalizeGroupedByBundleVariant(bundleVariant) {\n    var product = bundleVariant && bundleVariant.product ? bundleVariant.product : {}\n    return {\n      handle: product.handle || '',\n      title: product.title || '',\n      url: product.onlineStoreUrl || (product.handle ? '/products/' + product.handle : '#'),\n      imageUrl: product.featuredImage && product.featuredImage.url ? product.featuredImage.url : '',\n      imageAlt: product.featuredImage && product.featuredImage.altText ? product.featuredImage.altText : (product.title || ''),\n      priceCents: normalizeToCents(bundleVariant && bundleVariant.price ? bundleVariant.price.amount : 0),\n      compareAtCents: normalizeToCents(bundleVariant && bundleVariant.compareAtPrice ? bundleVariant.compareAtPrice.amount : 0)\n    }\n  }\n\n  function getManualBundleProducts(root) {\n    if (!root || !root.parentElement) return []\n\n    var payloadScript = root.parentElement.querySelector('[data-bundle-manual-products]')\n    if (!payloadScript) return []\n\n    try {\n      var parsed = JSON.parse(payloadScript.textContent || '[]')\n      return Array.isArray(parsed) ? parsed : []\n    } catch (_error) {\n      return []\n    }\n  }\n\n  function renderBundleDealCard(bundleProduct, labels) {\n    var productHandle = bundleProduct && bundleProduct.handle ? bundleProduct.handle : ''\n    var productTitle = bundleProduct && bundleProduct.title ? bundleProduct.title : ''\n    var productUrl = bundleProduct && bundleProduct.url ? bundleProduct.url : (productHandle ? '/products/' + productHandle : '#')\n    var imageUrl = bundleProduct && bundleProduct.imageUrl ? bundleProduct.imageUrl : ''\n    var imageAlt = bundleProduct && bundleProduct.imageAlt ? bundleProduct.imageAlt : productTitle\n    var priceCents = normalizeToCents(bundleProduct && bundleProduct.priceCents)\n    var compareAtCents = normalizeToCents(bundleProduct && bundleProduct.compareAtCents)\n    var badgeLabel = labels.badge || ''\n    var ctaLabel = labels.cta || ''\n\n    return '' +\n      '<article class=\"pdp-bundle-card\">' +\n      '<div class=\"grid grid-cols-[88px_minmax(0,1fr)] gap-4\">' +\n      '<a class=\"overflow-hidden rounded-dppsm bg-dpp-surfaceSoft\" href=\"' + escapeHtml(productUrl) + '\">' +\n      (imageUrl\n        ? '<img class=\"h-[88px] w-[88px] object-contain bg-white p-2\" src=\"' + escapeHtml(imageUrl) + '\" alt=\"' + escapeHtml(imageAlt) + '\" loading=\"lazy\">'\n        : '<div class=\"h-[88px] w-[88px] bg-dpp-surfaceSoft\"></div>') +\n      '</a>' +\n      '<div class=\"grid gap-2\">' +\n      '<p class=\"text-[11px] font-extrabold uppercase tracking-[0.1em] text-dpp-focus\">' + escapeHtml(badgeLabel) + '</p>' +\n      '<a class=\"text-sm font-bold leading-snug text-dpp-text hover:text-dpp-teal\" href=\"' + escapeHtml(productUrl) + '\">' + escapeHtml(productTitle) + '</a>' +\n      '<div class=\"flex flex-wrap items-center gap-2\">' +\n      (compareAtCents > priceCents && compareAtCents > 0\n        ? '<span class=\"text-xs font-semibold text-dpp-muted line-through\">' + formatMoney(compareAtCents, window.Shopify && window.Shopify.money_format) + '</span>'\n        : '') +\n      (priceCents > 0\n        ? '<span class=\"text-base font-extrabold text-dpp-price\">' + formatMoney(priceCents, window.Shopify && window.Shopify.money_format) + '</span>'\n        : '') +\n      '</div>' +\n      '<a class=\"dpp-button-accent-secondary inline-flex min-h-11 w-full items-center justify-center rounded-dppsm px-4 py-2 text-sm font-bold\" href=\"' + escapeHtml(productUrl) + '\">' + escapeHtml(ctaLabel) + '</a>' +\n      '</div>' +\n      '</div>' +\n      '</article>'\n  }\n\n  function normalizeBundleComparisonText(value) {\n    return String(value || '')\n      .toLowerCase()\n      .replace(/[%_]/g, ' ')\n      .replace(/[^a-z0-9]+/g, ' ')\n      .replace(/\\s+/g, ' ')\n      .trim()\n  }\n\n  function getBundlePackKeys(value) {\n    var normalizedValue = normalizeBundleComparisonText(value)\n    if (!normalizedValue) return []\n\n    var matches = normalizedValue.match(/\\b\\d+\\s*(?:pack|x)\\b/g) || []\n    return matches\n      .map(function (match) {\n        var keyMatch = match.match(/\\d+/)\n        return keyMatch ? keyMatch[0] : ''\n      })\n      .filter(function (key, index, list) {\n        return key && list.indexOf(key) === index\n      })\n  }\n\n  function getVariantPackKeyMap(root) {\n    var section = root ? root.closest('[data-product-section]') : null\n    var variantSelect = section ? section.querySelector('[data-variant-select]') : null\n    if (!variantSelect) return {}\n\n    return Array.prototype.slice.call(variantSelect.options).reduce(function (packKeyMap, option) {\n      var optionText = [option.getAttribute('data-title'), option.textContent].join(' ')\n      getBundlePackKeys(optionText).forEach(function (packKey) {\n        packKeyMap[packKey] = true\n      })\n      return packKeyMap\n    }, {})\n  }\n\n  function isDuplicateBundleProduct(bundleProduct, variantPackKeyMap) {\n    var variantPackKeys = Object.keys(variantPackKeyMap || {})\n    if (variantPackKeys.length === 0) return false\n\n    var bundleComparisonSource = [bundleProduct && bundleProduct.title, bundleProduct && bundleProduct.handle].join(' ')\n    var bundlePackKeys = getBundlePackKeys(bundleComparisonSource)\n    if (bundlePackKeys.length === 0) return false\n\n    return bundlePackKeys.some(function (packKey) {\n      return Boolean(variantPackKeyMap[packKey])\n    })\n  }\n\n  function setupGroupedByBundles() {\n    var roots = Array.prototype.slice.call(document.querySelectorAll('[data-bundle-grouped-by-root]'))\n    if (roots.length === 0) return\n\n    roots.forEach(function (root) {\n      var productHandle = root.getAttribute('data-product-handle')\n      if (!productHandle) return\n\n      var bundleSection = root.closest('[data-bundle-section]')\n      var productTranslations = getThemeTranslations().product || {}\n      var labels = {\n        badge: root.getAttribute('data-bundle-badge-label') || productTranslations.bundleBadge || '',\n        cta: root.getAttribute('data-bundle-cta-label') || productTranslations.bundleCta || ''\n      }\n      var manualProducts = getManualBundleProducts(root)\n      var variantPackKeyMap = getVariantPackKeyMap(root)\n\n      fetchGroupedByBundleVariants(productHandle)\n        .then(function (bundleVariants) {\n          return bundleVariants.map(normalizeGroupedByBundleVariant)\n        })\n        .catch(function () {\n          return []\n        })\n        .then(function (nativeProducts) {\n          var seenHandles = {}\n          var combinedProducts = []\n\n          nativeProducts.concat(manualProducts).forEach(function (bundleProduct) {\n            var handle = bundleProduct && bundleProduct.handle ? bundleProduct.handle : ''\n            if (!handle || handle === productHandle || seenHandles[handle]) return\n            if (isDuplicateBundleProduct(bundleProduct, variantPackKeyMap)) return\n            seenHandles[handle] = true\n            combinedProducts.push(bundleProduct)\n          })\n\n          if (combinedProducts.length === 0) {\n            root.classList.add('hidden')\n            var hiddenEmptyState = root.parentElement ? root.parentElement.querySelector('[data-bundle-empty-state]') : null\n            if (hiddenEmptyState) hiddenEmptyState.classList.add('hidden')\n            if (bundleSection) bundleSection.classList.add('hidden')\n            return\n          }\n\n          root.innerHTML = combinedProducts.map(function (bundleProduct) {\n            return renderBundleDealCard(bundleProduct, labels)\n          }).join('')\n          root.classList.remove('hidden')\n          if (bundleSection) bundleSection.classList.remove('hidden')\n\n          var emptyState = root.parentElement ? root.parentElement.querySelector('[data-bundle-empty-state]') : null\n          if (emptyState) emptyState.classList.add('hidden')\n        })\n    })\n  }\n\n  function getLineItemVariantTitle(item) {\n    var variantTitle = item && (item.variant_title || (item.variant && item.variant.title) || '')\n    return variantTitle && variantTitle !== 'Default Title' ? variantTitle : ''\n  }\n\n  function getLineItemTitle(item) {\n    if (!item) return ''\n    return item.product_title || (item.product && item.product.title) || item.title || ''\n  }\n\n  function getLineItemUrl(item) {\n    if (!item) return ''\n    return localizeInternalUrl(item.url || (item.product && item.product.url) || '')\n  }\n\n  function getLineItemImageUrl(item) {\n    if (!item) return ''\n\n    var image = item.image || item.featured_image || (item.featured_media && item.featured_media.preview_image)\n    if (!image) return ''\n    if (typeof image === 'string') return image\n    return image.src || image.url || ''\n  }\n\n  function sendCartLineChange(lineKey, quantity) {\n    var updates = {}\n    updates[lineKey] = quantity\n    return sendCartLineUpdates(updates)\n  }\n\n  function sendCartLineUpdates(updates) {\n    return fetch('/cart/update.js', {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/json',\n        Accept: 'application/json'\n      },\n      body: JSON.stringify({ updates: updates })\n    }).then(function (res) {\n      if (!res.ok) throw new Error('cart_change_failed')\n      return res.json()\n    })\n  }\n\n  function dispatchCartSync(cart, source) {\n    document.dispatchEvent(new CustomEvent('dpp:cart-sync', {\n      detail: {\n        cart: cart || null,\n        source: source || 'unknown'\n      }\n    }))\n  }\n\n  function formatDayName(date) {\n    var locale = getThemeConfig().localeCode || 'en'\n    return new Intl.DateTimeFormat(locale, { weekday: 'long' }).format(date)\n  }\n\n  function isDeliveryDay(date) {\n    return date.getDay() !== 0\n  }\n\n  function isDispatchDay(date) {\n    var day = date.getDay()\n    return day >= 1 && day <= 5\n  }\n\n  function addDeliveryDays(date, count) {\n    var nextDate = new Date(date.getTime())\n    var remaining = count\n    while (remaining > 0) {\n      nextDate.setDate(nextDate.getDate() + 1)\n      if (isDeliveryDay(nextDate)) remaining -= 1\n    }\n    return nextDate\n  }\n\n  function addDispatchDays(date, count) {\n    var nextDate = new Date(date.getTime())\n    var remaining = count\n    while (remaining > 0) {\n      nextDate.setDate(nextDate.getDate() + 1)\n      if (isDispatchDay(nextDate)) remaining -= 1\n    }\n    return nextDate\n  }\n\n  function getDispatchDate(date, beforeCutoff) {\n    return beforeCutoff ? date : addDispatchDays(date, 1)\n  }\n\n  function getCutoffMessageText(hourValue, beforeLabel, afterLabel, dateMode, deliveryDaysValue) {\n    var parsedHour = parseInt(hourValue || getThemeConfig().cutoffHour || '', 10)\n    if (isNaN(parsedHour)) return ''\n    var hour = parsedHour\n    var deliveryDays = parseInt(deliveryDaysValue || 1, 10)\n    if (isNaN(deliveryDays) || deliveryDays < 1) deliveryDays = 1\n    var now = new Date()\n    var beforeCutoff = isDispatchDay(now) && now.getHours() < hour\n    var dispatchDate = getDispatchDate(now, beforeCutoff)\n    var dayDate = dateMode === 'dispatch' ? dispatchDate : addDeliveryDays(dispatchDate, deliveryDays)\n    var template = beforeCutoff ? beforeLabel : afterLabel\n\n    return template\n      .replace('{time}', String(hour) + ':00')\n      .replace('{day}', formatDayName(dayDate))\n  }\n\n  function setBodyScrollLock(lockKey, shouldLock) {\n    var body = document.body\n    if (!body || !lockKey) return\n\n    var locks = (body.getAttribute('data-scroll-locks') || '')\n      .split(',')\n      .map(function (entry) { return entry.trim() })\n      .filter(Boolean)\n\n    var lockIndex = locks.indexOf(lockKey)\n    if (shouldLock && lockIndex === -1) locks.push(lockKey)\n    if (!shouldLock && lockIndex !== -1) locks.splice(lockIndex, 1)\n\n    if (locks.length > 0) {\n      body.classList.add('overflow-hidden')\n      body.setAttribute('data-scroll-locks', locks.join(','))\n    } else {\n      body.classList.remove('overflow-hidden')\n      body.removeAttribute('data-scroll-locks')\n    }\n  }\n\n  var overlayFocusState = {}\n\n  function getFocusableElements(container) {\n    if (!container) return []\n\n    return Array.prototype.slice.call(container.querySelectorAll('a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'))\n      .filter(function (element) {\n        return !element.hasAttribute('hidden') && element.getAttribute('aria-hidden') !== 'true' && element.offsetParent !== null\n      })\n  }\n\n  function rememberOverlayTrigger(key, trigger) {\n    if (!key) return\n    overlayFocusState[key] = {\n      trigger: trigger instanceof HTMLElement ? trigger : document.activeElement\n    }\n  }\n\n  function restoreOverlayTrigger(key) {\n    var state = overlayFocusState[key]\n    if (!state || !(state.trigger instanceof HTMLElement)) return\n\n    window.setTimeout(function () {\n      state.trigger.focus()\n    }, 0)\n  }\n\n  function trapFocusWithin(event, container) {\n    if (event.key !== 'Tab' || !container) return\n\n    var focusable = getFocusableElements(container)\n    if (focusable.length === 0) {\n      event.preventDefault()\n      return\n    }\n\n    var first = focusable[0]\n    var last = focusable[focusable.length - 1]\n\n    if (event.shiftKey && document.activeElement === first) {\n      event.preventDefault()\n      last.focus()\n    } else if (!event.shiftKey && document.activeElement === last) {\n      event.preventDefault()\n      first.focus()\n    }\n  }\n\n  function prefersReducedMotion() {\n    return !!(window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches)\n  }\n\n  function syncBodyScrollLocksWithOverlayState() {\n    var body = document.body\n    if (!body) return\n\n    var cartDrawer = document.getElementById('CartDrawer')\n    var mobileMenuDrawer = document.getElementById('MobileMenuDrawer')\n    var productLightbox = document.querySelector('[data-gallery-lightbox]')\n    var cartBackdrop = document.getElementById('CartDrawerBackdrop')\n    var mobileMenuBackdrop = document.getElementById('MobileMenuBackdrop')\n\n    var isCartDrawerOpen = !!(cartDrawer && cartDrawer.getAttribute('aria-hidden') === 'false')\n    var isMobileMenuOpen = !!(mobileMenuDrawer && mobileMenuDrawer.getAttribute('aria-hidden') === 'false')\n    var isProductLightboxOpen = !!(productLightbox && productLightbox.getAttribute('aria-hidden') === 'false')\n\n    if (cartBackdrop) {\n      cartBackdrop.classList.toggle('hidden', !isCartDrawerOpen)\n      cartBackdrop.setAttribute('aria-hidden', isCartDrawerOpen ? 'false' : 'true')\n    }\n\n    if (mobileMenuBackdrop) {\n      mobileMenuBackdrop.classList.toggle('hidden', !isMobileMenuOpen)\n      mobileMenuBackdrop.setAttribute('aria-hidden', isMobileMenuOpen ? 'false' : 'true')\n    }\n\n    var activeLocks = []\n    if (isCartDrawerOpen) activeLocks.push('cart-drawer')\n    if (isMobileMenuOpen) activeLocks.push('mobile-menu')\n    if (isProductLightboxOpen) activeLocks.push('gallery-lightbox')\n\n    if (activeLocks.length > 0) {\n      body.classList.add('overflow-hidden')\n      body.setAttribute('data-scroll-locks', activeLocks.join(','))\n    } else {\n      body.classList.remove('overflow-hidden')\n      body.removeAttribute('data-scroll-locks')\n    }\n  }\n\n  function ensurePageScrollableWhenNoOverlayOpen() {\n    var body = document.body\n    if (!body) return\n\n    var hasForcedLock = body.classList.contains('overflow-hidden') || !!body.getAttribute('data-scroll-locks')\n    if (!hasForcedLock) return\n\n    syncBodyScrollLocksWithOverlayState()\n  }\n\n  function openCartDrawer(trigger) {\n    var drawer = document.getElementById('CartDrawer')\n    var backdrop = document.getElementById('CartDrawerBackdrop')\n    if (!drawer || !backdrop) return\n    rememberOverlayTrigger('cart-drawer', trigger)\n    drawer.classList.remove('translate-x-full')\n    backdrop.classList.remove('hidden')\n    backdrop.setAttribute('aria-hidden', 'false')\n    drawer.setAttribute('aria-hidden', 'false')\n    setBodyScrollLock('cart-drawer', true)\n    window.setTimeout(function () {\n      var focusTarget = drawer.querySelector('[data-cart-close]') || getFocusableElements(drawer)[0]\n      if (focusTarget) focusTarget.focus()\n    }, 0)\n  }\n\n  function closeCartDrawer() {\n    var drawer = document.getElementById('CartDrawer')\n    var backdrop = document.getElementById('CartDrawerBackdrop')\n    if (!drawer || !backdrop) return\n    drawer.classList.add('translate-x-full')\n    backdrop.classList.add('hidden')\n    backdrop.setAttribute('aria-hidden', 'true')\n    drawer.setAttribute('aria-hidden', 'true')\n    setBodyScrollLock('cart-drawer', false)\n    restoreOverlayTrigger('cart-drawer')\n  }\n\n  function renderDrawer(cart) {\n    var content = document.querySelector('[data-cart-drawer-content]')\n    var countEls = document.querySelectorAll('[data-cart-count]')\n    if (!content || !cart) return\n    lastRenderedCart = cart\n\n    countEls.forEach(function (el) {\n      el.textContent = cart.item_count\n    })\n\n    if (cart.item_count === 0) {\n      var emptyTranslations = getThemeTranslations().cart || {}\n      content.innerHTML = '' +\n        '<div class=\"grid gap-3\">' +\n        '<p class=\"text-sm text-dpp-muted\">' + escapeHtml(emptyTranslations.drawerEmpty || 'Your cart is empty.') + '</p>' +\n        '<div class=\"flex flex-wrap gap-2\">' +\n        '<a class=\"dpp-button-accent inline-flex min-h-10 items-center justify-center rounded-dppsm px-3 py-2 text-xs font-bold\" href=\"' + escapeHtml(localizeInternalUrl('/collections')) + '\">' + escapeHtml((getThemeTranslations().common || {}).viewProducts || 'View products') + '</a>' +\n        '<a class=\"dpp-button-accent-secondary inline-flex min-h-10 items-center justify-center rounded-dppsm px-3 py-2 text-xs font-bold\" href=\"' + escapeHtml(localizeInternalUrl('/#keuzehulp')) + '\">' + escapeHtml((getThemeTranslations().common || {}).startChoiceHelp || 'Start choice help') + '</a>' +\n        '</div>' +\n        '</div>'\n      setupLocalizedInternalLinks(content)\n      return\n    }\n\n    var cartTranslations = getThemeTranslations().cart || {}\n    var commonTranslations = getThemeTranslations().common || {}\n    function renderDrawerComponent(component) {\n      var componentTitle = getLineItemTitle(component)\n      var componentVariantTitle = getLineItemVariantTitle(component)\n      var componentUrl = getLineItemUrl(component)\n      var componentImageUrl = getLineItemImageUrl(component)\n      var quantityLabel = replaceTokens(cartTranslations.quantityPrefix || 'Quantity: __QUANTITY__', { QUANTITY: String(component.quantity || 0) })\n\n      return '' +\n        '<div class=\"grid gap-2 rounded-dppsm border border-dpp-border bg-dpp-surfaceSoft/60 p-2\">' +\n        '<div class=\"grid grid-cols-[52px_1fr] gap-2\">' +\n        (componentUrl\n          ? '<a class=\"overflow-hidden rounded bg-white\" href=\"' + escapeHtml(componentUrl) + '\">' + (componentImageUrl ? '<img class=\"h-[52px] w-[52px] object-cover\" src=\"' + escapeHtml(componentImageUrl) + '\" alt=\"' + escapeHtml(componentTitle) + '\">' : '<div class=\"h-[52px] w-[52px] bg-white\"></div>') + '</a>'\n          : (componentImageUrl ? '<img class=\"h-[52px] w-[52px] rounded bg-white object-cover\" src=\"' + escapeHtml(componentImageUrl) + '\" alt=\"' + escapeHtml(componentTitle) + '\">' : '<div class=\"h-[52px] w-[52px] rounded bg-white\"></div>')) +\n        '<div>' +\n        (componentUrl\n          ? '<a class=\"block text-xs font-bold leading-tight hover:text-dpp-teal\" href=\"' + escapeHtml(componentUrl) + '\">' + escapeHtml(componentTitle) + '</a>'\n          : '<p class=\"text-xs font-bold leading-tight text-dpp-text\">' + escapeHtml(componentTitle) + '</p>') +\n        (componentVariantTitle ? '<p class=\"mt-0.5 text-[11px] leading-relaxed text-dpp-muted\">' + escapeHtml(componentVariantTitle) + '</p>' : '') +\n        '<p class=\"mt-0.5 text-[11px] leading-relaxed text-dpp-muted\">' + escapeHtml(cartTranslations.includedInBundle || 'Included in this bundle') + '</p>' +\n        '</div>' +\n        '</div>' +\n        '<div class=\"flex flex-wrap items-center gap-2\">' +\n        '<span class=\"inline-flex min-h-9 items-center rounded-dppsm border border-dpp-border bg-white px-2 py-1 text-[11px] font-semibold text-dpp-muted\">' + escapeHtml(quantityLabel) + '</span>' +\n        '</div>' +\n        '</div>'\n    }\n\n    function renderDrawerLineItem(item, isGroupedBundleLine, isPrimaryBundleLine) {\n      var productTitle = getLineItemTitle(item)\n      var productVariantTitle = getLineItemVariantTitle(item)\n      var productUrl = getLineItemUrl(item)\n      var imageUrl = getLineItemImageUrl(item)\n      var removeLabel = replaceTokens(cartTranslations.removeItemLabel || 'Remove __TITLE__ from cart', { TITLE: productTitle })\n      var quantityLabel = replaceTokens(cartTranslations.quantityPrefix || 'Quantity: __QUANTITY__', { QUANTITY: String(item.quantity || 0) })\n      var components = Array.isArray(item.item_components) ? item.item_components : []\n      var bundleGroup = getLineItemBundleGroup(item)\n      var bundleRole = getLineItemBundleRole(item)\n      var showFixedBundleNote = bundleGroup && (bundleRole === 'base' || (!bundleRole && isPrimaryBundleLine))\n      var componentsMarkup = components.length > 0\n        ? '<div class=\"mt-3 border-t border-dpp-border pt-3\"><p class=\"mb-2 text-[11px] font-extrabold uppercase tracking-[0.1em] text-dpp-muted\">' + escapeHtml(cartTranslations.bundleContents || 'Bundle contents') + '</p><div class=\"grid gap-2\">' + components.map(renderDrawerComponent).join('') + '</div></div>'\n        : ''\n      var originalLinePrice = typeof item.original_line_price === 'number' ? item.original_line_price : item.final_line_price\n      var displayLinePrice = item.final_line_price\n      var hasLineDiscount = originalLinePrice > displayLinePrice\n      var discountAllocations = Array.isArray(item.line_level_discount_allocations) ? item.line_level_discount_allocations : []\n      var lineDiscountLabel = isBundleLineItem(item) ? (commonTranslations.bundleDiscount || commonTranslations.discount || 'Bundle discount') : (commonTranslations.discount || 'Discount')\n      var estimatedBundleDiscount = 0\n      if (discountAllocations.length === 0) {\n        var bundleDiscountPercentage = getLineItemBundleDiscountPercentage(item)\n        if (bundleDiscountPercentage > 0 && typeof item.final_line_price === 'number') {\n          estimatedBundleDiscount = Math.round((item.final_line_price * bundleDiscountPercentage) / 100)\n          if (estimatedBundleDiscount > 0) {\n            displayLinePrice = Math.max(item.final_line_price - estimatedBundleDiscount, 0)\n            originalLinePrice = item.final_line_price\n            hasLineDiscount = true\n          }\n        }\n      }\n      var discountMarkup = discountAllocations.length > 0\n        ? '<ul class=\"mt-1 grid gap-0.5 text-xs font-semibold text-dpp-focus\" aria-label=\"' + escapeHtml(lineDiscountLabel) + '\">' + discountAllocations.map(function (allocation) {\n          return '<li class=\"flex flex-wrap items-center gap-1.5\"><span>' + escapeHtml(lineDiscountLabel) + '</span><span>-' + formatMoney(allocation.amount || 0, window.Shopify && window.Shopify.money_format) + '</span></li>'\n        }).join('') + '</ul>'\n        : (estimatedBundleDiscount > 0\n          ? '<ul class=\"mt-1 grid gap-0.5 text-xs font-semibold text-dpp-focus\" aria-label=\"' + escapeHtml(lineDiscountLabel) + '\"><li class=\"flex flex-wrap items-center gap-1.5\"><span>' + escapeHtml(lineDiscountLabel) + '</span><span>-' + formatMoney(estimatedBundleDiscount, window.Shopify && window.Shopify.money_format) + '</span></li></ul>'\n          : '')\n      var priceMarkup = hasLineDiscount\n        ? '<div class=\"mt-1 flex flex-wrap items-center gap-2 text-sm\"><span class=\"font-bold text-dpp-focus\">' + formatMoney(displayLinePrice, window.Shopify && window.Shopify.money_format) + '</span><span class=\"text-dpp-muted line-through\">' + formatMoney(originalLinePrice, window.Shopify && window.Shopify.money_format) + '</span></div>'\n        : '<p class=\"mt-1 text-sm font-bold text-dpp-price\">' + formatMoney(item.final_line_price, window.Shopify && window.Shopify.money_format) + '</p>'\n      var articleClass = isGroupedBundleLine\n        ? 'rounded-dppsm border border-dpp-border bg-white p-2'\n        : (bundleGroup\n          ? 'mb-3 rounded-dppsm border border-dpp-teal/40 bg-white p-2 shadow-card ring-1 ring-dpp-teal/10'\n          : 'mb-3 rounded-dppsm border border-dpp-border bg-white p-2')\n\n      return '' +\n        '<article class=\"' + articleClass + '\">' +\n        '<div class=\"grid grid-cols-[72px_1fr] gap-3\">' +\n        (imageUrl ? '<img class=\"h-[72px] w-[72px] rounded object-cover\" src=\"' + escapeHtml(imageUrl) + '\" alt=\"' + escapeHtml(productTitle) + '\">' : '<div class=\"h-[72px] w-[72px] rounded bg-dpp-surfaceSoft\"></div>') +\n        '<div>' +\n        '<div class=\"flex items-start justify-between gap-2\">' +\n        (productUrl\n          ? '<a class=\"block text-sm font-bold leading-tight hover:text-dpp-teal\" href=\"' + escapeHtml(productUrl) + '\">' + escapeHtml(productTitle) + '</a>'\n          : '<p class=\"text-sm font-bold leading-tight text-dpp-text\">' + escapeHtml(productTitle) + '</p>') +\n        '<button class=\"inline-flex min-h-10 min-w-10 items-center justify-center rounded-dppsm border border-dpp-border bg-white text-dpp-muted hover:bg-dpp-surfaceSoft hover:text-dpp-orange disabled:cursor-not-allowed disabled:opacity-55\" type=\"button\" data-cart-remove-key=\"' + escapeHtml(item.key) + '\"' + (bundleGroup ? ' data-cart-remove-group=\"' + escapeHtml(bundleGroup) + '\"' : '') + ' aria-label=\"' + escapeHtml(removeLabel) + '\">' +\n        lucideIcon('trash-2', 'h-4 w-4', 1.8) +\n        '</button>' +\n        '</div>' +\n        (productVariantTitle ? '<p class=\"mt-1 text-xs leading-relaxed text-dpp-muted\">' + escapeHtml(productVariantTitle) + '</p>' : '') +\n        '<p class=\"mt-1 text-xs text-dpp-muted\">' + escapeHtml(quantityLabel) + '</p>' +\n        (showFixedBundleNote ? '<p class=\"mt-1 text-xs leading-relaxed text-dpp-muted\">' + escapeHtml(cartTranslations.fixedBundleNote || 'This bundle is adjusted as a fixed set.') + '</p>' : '') +\n        priceMarkup +\n        discountMarkup +\n        '</div>' +\n        '</div>' +\n        componentsMarkup +\n        '</article>'\n    }\n\n    function renderDrawerRows(items) {\n      var rows = []\n      var index = 0\n\n      while (index < items.length) {\n        var item = items[index]\n        var bundleGroup = getLineItemBundleGroup(item)\n\n        if (!bundleGroup) {\n          rows.push(renderDrawerLineItem(item, false, false))\n          index += 1\n          continue\n        }\n\n        var bundleItems = []\n        while (index < items.length && getLineItemBundleGroup(items[index]) === bundleGroup) {\n          bundleItems.push(items[index])\n          index += 1\n        }\n\n        if (bundleItems.length > 1) {\n          rows.push(\n            '<div class=\"mb-3 grid gap-2 rounded-dppsm border border-dpp-teal/40 bg-white p-2 shadow-card ring-1 ring-dpp-teal/10\" data-cart-bundle-set=\"' + escapeHtml(bundleGroup) + '\">' +\n            bundleItems.map(function (bundleItem, bundleIndex) {\n              return renderDrawerLineItem(bundleItem, true, bundleIndex === 0)\n            }).join('') +\n            '</div>'\n          )\n        } else {\n          rows.push(renderDrawerLineItem(bundleItems[0], false, true))\n        }\n      }\n\n      return rows.join('')\n    }\n\n    var freeShippingThreshold = FREE_SHIPPING_THRESHOLD_CENTS\n    var shippingKnownFree = cart.total_price >= freeShippingThreshold\n    var shippingCost = shippingKnownFree ? 0 : 695\n    var shippingLabel = shippingKnownFree ? (cartTranslations.freeShippingLabel || 'Free shipping') : formatMoney(shippingCost, window.Shopify && window.Shopify.money_format)\n    var remainingForFreeShipping = Math.max(0, freeShippingThreshold - cart.total_price)\n    var shippingProgressValue = Math.min(cart.total_price, freeShippingThreshold)\n    var cartSubtotal = typeof cart.original_total_price === 'number' ? cart.original_total_price : cart.items_subtotal_price\n    var cartDiscountTotal = typeof cart.total_discount === 'number' ? cart.total_discount : 0\n    var cartBundleDiscountTotal = getBundleDiscountTotal(cart)\n    var cartEstimatedBundleDiscountTotal = getEstimatedBundleDiscountTotal(cart)\n    var cartEffectiveBundleDiscountTotal = cartBundleDiscountTotal + cartEstimatedBundleDiscountTotal\n    var cartStandardDiscountTotal = Math.max(cartDiscountTotal - cartBundleDiscountTotal, 0)\n    var cartDisplayDiscountTotal = cartStandardDiscountTotal + cartEffectiveBundleDiscountTotal\n    var cartDisplayTotal = Math.max(cart.total_price - cartEstimatedBundleDiscountTotal, 0) + shippingCost\n    var vatSummaryMarkup = cart.taxes_included === true\n      ? '<small class=\"text-sm font-normal text-dpp-muted\">' + escapeHtml(commonTranslations.vatSummary || '(incl. VAT)') + '</small>'\n      : ''\n\n    var rows = renderDrawerRows(cart.items)\n    var cartDiscountMarkup = cartDisplayDiscountTotal > 0\n      ? (cartEffectiveBundleDiscountTotal > 0\n        ? '<div class=\"flex items-center justify-between gap-2 text-dpp-focus\"><span>' + escapeHtml(commonTranslations.bundleDiscount || commonTranslations.discount || 'Bundle discount') + '</span><strong>-' + formatMoney(cartEffectiveBundleDiscountTotal, window.Shopify && window.Shopify.money_format) + '</strong></div>'\n        : '') +\n        (cartStandardDiscountTotal > 0\n          ? '<div class=\"flex items-center justify-between gap-2 text-dpp-focus\"><span>' + escapeHtml(commonTranslations.discount || 'Discount') + '</span><strong>-' + formatMoney(cartStandardDiscountTotal, window.Shopify && window.Shopify.money_format) + '</strong></div>'\n          : '')\n      : ''\n    var shippingMessage = shippingKnownFree\n      ? (cartTranslations.freeShippingProgressDone || cartTranslations.shippingMessageEligible || 'Your order qualifies for free shipping.')\n      : replaceTokens(cartTranslations.freeShippingProgress || cartTranslations.shippingMessageRemaining || '__AMOUNT__ until free shipping.', { AMOUNT: formatMoney(remainingForFreeShipping, window.Shopify && window.Shopify.money_format) })\n    content.innerHTML = rows +\n      '<div class=\"mt-3 border-t border-dpp-border pt-3\">' +\n      '<div class=\"mb-3 grid gap-1\">' +\n      '<strong class=\"text-sm text-dpp-focus\">' + escapeHtml(shippingMessage) + '</strong>' +\n      '<progress class=\"shipping-progress__bar h-[10px] w-full overflow-hidden rounded-full\" value=\"' + shippingProgressValue + '\" max=\"' + freeShippingThreshold + '\"></progress>' +\n      '</div>' +\n      '<div class=\"grid gap-1.5 text-sm\">' +\n      '<div class=\"flex items-center justify-between gap-2\"><span class=\"text-dpp-muted\">' + escapeHtml(commonTranslations.subtotal || 'Subtotal') + '</span><strong>' + formatMoney(cartSubtotal, window.Shopify && window.Shopify.money_format) + '</strong></div>' +\n      cartDiscountMarkup +\n      '<div class=\"flex items-center justify-between gap-2\"><span class=\"text-dpp-muted\">' + escapeHtml(commonTranslations.shipping || 'Shipping') + '</span><strong>' + shippingLabel + '</strong></div>' +\n      '<div class=\"mt-1 flex items-baseline justify-between gap-2 border-t border-dpp-border pt-2 text-base\"><span class=\"font-bold\">' + escapeHtml(commonTranslations.total || 'Total') + '</span><div class=\"flex flex-wrap items-baseline justify-end gap-x-2 gap-y-1\">' + vatSummaryMarkup + '<strong class=\"shrink-0 font-extrabold\">' + formatMoney(cartDisplayTotal, window.Shopify && window.Shopify.money_format) + '</strong></div></div>' +\n      '</div>' +\n      '<div class=\"mt-3 flex gap-2\">' +\n      '<a class=\"dpp-button-accent inline-flex min-h-11 flex-1 items-center justify-center rounded-dppsm px-4 py-2 text-sm font-bold\" href=\"' + escapeHtml(getCartUrl()) + '\">' + escapeHtml(cartTranslations.drawerCheckout || 'Checkout') + '</a>' +\n      '</div>' +\n      '</div>'\n    setupLocalizedInternalLinks(content)\n  }\n\n  function isBundleLineItem(item) {\n    var properties = item && item.properties ? item.properties : {}\n    var components = item && Array.isArray(item.item_components) ? item.item_components : []\n    var bundleGroup = getLineItemBundleGroup(item)\n    var bundleDiscount = parseFloat(properties._dpp_bundle_discount || properties._bundle_discount_percentage || '0') || 0\n\n    return components.length > 0 || Boolean(bundleGroup) || bundleDiscount > 0\n  }\n\n  function getLineItemBundleDiscountPercentage(item) {\n    var properties = item && item.properties ? item.properties : {}\n    var requiredQuantity = parseInt(properties._dpp_bundle_required_quantity || '0', 10) || 0\n    var percentage = parseFloat(properties._dpp_bundle_discount || properties._bundle_discount_percentage || '0') || 0\n\n    if (requiredQuantity <= 0) return 0\n\n    return percentage > 0 ? percentage : 10\n  }\n\n  function getLineDiscountAllocationTotal(item) {\n    var allocations = Array.isArray(item && item.line_level_discount_allocations) ? item.line_level_discount_allocations : []\n\n    return allocations.reduce(function (total, allocation) {\n      return total + (typeof allocation.amount === 'number' ? allocation.amount : 0)\n    }, 0)\n  }\n\n  function getLineItemBundleGroup(item) {\n    var properties = item && item.properties ? item.properties : {}\n    return properties._dpp_bundle_group || properties._bundle_group_id || ''\n  }\n\n  function getLineItemBundleRole(item) {\n    var properties = item && item.properties ? item.properties : {}\n    return String(properties._dpp_bundle_role || properties._bundle_step || '').toLowerCase()\n  }\n\n  function buildBundleGroupUpdates(cart, group, quantity) {\n    var items = cart && Array.isArray(cart.items) ? cart.items : []\n    var updates = {}\n\n    items.forEach(function (item) {\n      if (!item || !item.key || getLineItemBundleGroup(item) !== group) return\n      updates[item.key] = quantity\n    })\n\n    return updates\n  }\n\n  function getBundleDiscountTotal(cart) {\n    var items = cart && Array.isArray(cart.items) ? cart.items : []\n\n    var bundleDiscountTotal = items.reduce(function (total, item) {\n      if (!isBundleLineItem(item)) return total\n\n      return total + getLineDiscountAllocationTotal(item)\n    }, 0)\n    var cartDiscountTotal = cart && typeof cart.total_discount === 'number' ? cart.total_discount : bundleDiscountTotal\n\n    return Math.min(bundleDiscountTotal, cartDiscountTotal)\n  }\n\n  function getEstimatedBundleDiscountTotal(cart) {\n    var items = cart && Array.isArray(cart.items) ? cart.items : []\n\n    return items.reduce(function (total, item) {\n      if (!isBundleLineItem(item) || getLineDiscountAllocationTotal(item) > 0) return total\n\n      var percentage = getLineItemBundleDiscountPercentage(item)\n      var linePrice = typeof item.final_line_price === 'number' ? item.final_line_price : 0\n      if (percentage <= 0 || linePrice <= 0) return total\n\n      return total + Math.round((linePrice * percentage) / 100)\n    }, 0)\n  }\n  function getRecommendationPrice(entry) {\n    var product = entry && entry.product ? entry.product : entry\n    if (!product) return 0\n    var selectedVariant = (product.variants || []).filter(function (variant) {\n      return variant && variant.available\n    })[0] || (product.variants && product.variants[0])\n    return selectedVariant ? normalizeToCents(selectedVariant.price) : normalizeToCents(product.price)\n  }\n\n  // Below the free-shipping threshold, products that close the gap come first (cheapest first).\n  function prioritizeFreeShippingRecommendations(entries, cart) {\n    var remaining = cart ? FREE_SHIPPING_THRESHOLD_CENTS - (cart.total_price || 0) : 0\n    if (remaining <= 0) return { entries: entries, remaining: 0 }\n    var closers = entries.filter(function (entry) {\n      return getRecommendationPrice(entry) >= remaining\n    }).sort(function (a, b) {\n      return getRecommendationPrice(a) - getRecommendationPrice(b)\n    })\n    var others = entries.filter(function (entry) {\n      return closers.indexOf(entry) === -1\n    })\n    return { entries: closers.concat(others), remaining: remaining }\n  }\n\n  function buildRecommendationCard(entry, freeShippingRemaining) {\n    var product = entry && entry.product ? entry.product : entry\n    var productUrl = buildProductUrl(product)\n    var image = product.image || product.featured_image\n    var imageUrl = image && (image.src || image.url || image)\n    var firstVariant = product.variants && product.variants[0]\n    var productId = product.id || product.product_id\n    var shopDomain = getThemeConfig().shopDomain || ''\n    var selectedVariant = (product.variants || []).filter(function (variant) {\n      return variant && variant.available\n    })[0] || firstVariant\n    var variantId = selectedVariant && selectedVariant.id\n    var price = selectedVariant ? normalizeToCents(selectedVariant.price) : normalizeToCents(product.price)\n    var recommendationButtonClass = 'dpp-button-brand-gradient inline-flex min-h-11 w-full items-center justify-center rounded-dppsm px-4 py-2 text-sm font-bold disabled:cursor-not-allowed disabled:opacity-55'\n    var productTranslations = getThemeTranslations().product || {}\n    var cartActionMarkup = variantId\n      ? '<form class=\"mt-auto grid\" action=\"' + escapeHtml(localizeInternalUrl('/cart/add')) + '\" method=\"post\" data-ajax-cart=\"true\" data-product-card-bundle-url=\"' + escapeHtml(productUrl) + '\">' +\n        '<input type=\"hidden\" name=\"id\" value=\"' + escapeHtml(variantId) + '\">' +\n        '<input type=\"hidden\" name=\"quantity\" value=\"1\">' +\n        '<button class=\"' + recommendationButtonClass + '\" type=\"submit\">' + escapeHtml(productTranslations.addToCart || 'Add to cart') + '</button>' +\n        '</form>'\n      : '<a class=\"mt-auto ' + recommendationButtonClass + '\" href=\"' + escapeHtml(productUrl) + '\">' + escapeHtml((getThemeTranslations().common || {}).viewProduct || 'View product') + '</a>'\n\n    return '' +\n      '<article class=\"flex h-full flex-col rounded-dppsm border border-dpp-border bg-white p-3\">' +\n      (imageUrl\n        ? '<a class=\"block aspect-[4/3] overflow-hidden rounded-dppsm bg-dpp-surfaceSoft\" href=\"' + escapeHtml(productUrl) + '\"><img class=\"h-full w-full object-contain\" src=\"' + escapeHtml(imageUrl) + '\" alt=\"' + escapeHtml(product.title) + '\" loading=\"lazy\"></a>'\n        : '<div class=\"aspect-[4/3] rounded-dppsm bg-dpp-surfaceSoft\"></div>') +\n      '<div class=\"mt-3 flex flex-1 flex-col gap-2\">' +\n      '<a class=\"dpp-product-card-title text-sm font-bold leading-snug text-dpp-text hover:text-dpp-teal\" href=\"' + escapeHtml(productUrl) + '\">' + escapeHtml(product.title) + '</a>' +\n      (productId && shopDomain\n        ? '<a class=\"pdp-judgeme-summary\" href=\"' + escapeHtml(productUrl + '#pdp-reviews') + '\" aria-label=\"' + escapeHtml(productTranslations.reviewSummaryAria || 'Review summary') + '\" data-review-decimal-separator=\"' + escapeHtml(productTranslations.reviewDecimalSeparator || '.') + '\" data-judgeme-product-card-summary data-product-id=\"' + escapeHtml(productId) + '\" data-shop-domain=\"' + escapeHtml(shopDomain) + '\" hidden><div data-dpp-review-badge></div></a>'\n        : '') +\n      (price > 0 ? '<span class=\"text-sm font-bold text-dpp-price\">' + formatMoney(price, window.Shopify && window.Shopify.money_format) + '</span>' : '') +\n      (freeShippingRemaining > 0 && price >= freeShippingRemaining && (getThemeTranslations().cart || {}).recommendedFreeShipping\n        ? '<span class=\"inline-flex w-fit items-center rounded-full bg-dpp-tealSoft px-2.5 py-1 text-xs font-extrabold leading-tight text-dpp-focus\">' + escapeHtml(getThemeTranslations().cart.recommendedFreeShipping) + '</span>'\n        : '') +\n      cartActionMarkup +\n      '</div>' +\n      '</article>'\n  }\n\n  function fetchJson(url) {\n    return fetch(url).then(function (res) {\n      if (!res.ok) throw new Error('fetch_failed')\n      return res.json()\n    })\n  }\n\n  function uniqueRecommendationEntries(entries, excludedHandles) {\n    var seen = {}\n    return (entries || []).filter(function (entry) {\n      var product = entry && entry.product ? entry.product : entry\n      var handle = product && product.handle\n      var firstVariant = product && product.variants && product.variants[0]\n      var available = firstVariant ? !!firstVariant.available : true\n      if (!handle || seen[handle] || excludedHandles[handle] || !available) return false\n      seen[handle] = true\n      return true\n    })\n  }\n\n  function fetchRecommendationsForCart(cart) {\n    if (!cart || !cart.items || cart.items.length === 0) return Promise.resolve([])\n\n    var inCartHandles = {}\n    cart.items.forEach(function (item) {\n      if (item.handle) inCartHandles[item.handle] = true\n    })\n\n    // Cart add-ons come from Shopify related recommendations for the first cart lines.\n    var relatedFetches = cart.items.slice(0, 3).map(function (item) {\n      if (!item.product_id) return Promise.resolve([])\n      return fetchJson(buildStorefrontUrl('recommendations/products.json?product_id=' + encodeURIComponent(item.product_id) + '&limit=4&intent=related'))\n        .then(function (data) {\n          var products = data && data.products ? data.products : []\n          return products.map(function (product) {\n            return {\n              product: product,\n              source: 'related',\n              itemTitle: item.product_title || item.title || ''\n            }\n          })\n        })\n        .catch(function () { return [] })\n    })\n\n    return Promise.all(relatedFetches)\n      .then(function (groups) {\n        var flattened = []\n        groups.forEach(function (group) {\n          flattened = flattened.concat(group || [])\n        })\n\n        var unique = uniqueRecommendationEntries(flattened, inCartHandles)\n        if (unique.length > 0) return unique\n        return []\n      })\n  }\n\n  function renderCartRecommendations(cart) {\n    var roots = Array.prototype.slice.call(document.querySelectorAll('[data-cart-recommendations-root]'))\n    if (roots.length === 0) return\n\n    if (!getThemeConfig().showCartRecommendations || !cart || cart.item_count === 0) {\n      roots.forEach(function (root) { root.innerHTML = '' })\n      return\n    }\n\n    fetchRecommendationsForCart(cart)\n      .then(function (products) {\n        var prioritized = prioritizeFreeShippingRecommendations(products, cart)\n        roots.forEach(function (root) {\n          var candidates = prioritized.entries.slice(0, 3)\n          if (candidates.length === 0) {\n            var emptyMessage = root.getAttribute('data-empty-message') || (getThemeTranslations().cart || {}).recommendedEmpty || ''\n            root.innerHTML = '<p class=\"text-sm text-dpp-muted\">' + escapeHtml(emptyMessage) + '</p>'\n            return\n          }\n\n          root.innerHTML = '<div class=\"grid gap-3 md:grid-cols-2 xl:grid-cols-3\">' + candidates.map(function (product) {\n            return buildRecommendationCard(product, prioritized.remaining)\n          }).join('') + '</div>'\n          setupProductCardReviewSummaries(root)\n        })\n      })\n      .catch(function () {\n        roots.forEach(function (root) {\n          root.innerHTML = '<p class=\"text-sm text-dpp-muted\">' + escapeHtml((getThemeTranslations().cart || {}).recommendedEmpty || '') + '</p>'\n        })\n      })\n  }\n\n  function refreshCartState(source) {\n    return fetch('/cart.js')\n      .then(function (res) { return res.json() })\n      .then(function (cart) {\n        renderDrawer(cart)\n        renderCartRecommendations(cart)\n        dispatchCartSync(cart, source || 'cart-refresh')\n        return cart\n      })\n  }\n\n  function refreshCartDrawer(openAfter, trigger) {\n    refreshCartState('drawer-refresh')\n      .then(function () {\n        if (openAfter) openCartDrawer(trigger)\n      })\n      .catch(function () {})\n  }\n\n  function loadThemeScript(name) {\n    var assetMap = window.DPPThemeAssets || {}\n    var src = assetMap[name]\n    if (!src) return Promise.resolve()\n    if (document.querySelector('[data-dpp-theme-script=\"' + name + '\"]')) return Promise.resolve()\n\n    if (src.indexOf('//') === 0) src = window.location.protocol + src\n    try {\n      var srcUrl = new URL(src, window.location.href)\n      if (window.location.hostname === '127.0.0.1' || window.location.hostname === 'localhost') {\n        srcUrl.protocol = window.location.protocol\n        srcUrl.host = window.location.host\n        src = srcUrl.toString()\n      }\n    } catch (_error) {}\n\n    return new Promise(function (resolve, reject) {\n      var script = document.createElement('script')\n      script.src = src\n      script.defer = true\n      script.setAttribute('data-dpp-theme-script', name)\n      script.onload = function () { resolve() }\n      script.onerror = function () { reject(new Error('load_failed:' + name)) }\n      document.head.appendChild(script)\n    })\n  }\n\n  function loadProductBundleScripts() {\n    return ['productCore', 'productBundleCore', 'productBundleList', 'productBundles'].reduce(function (chain, name) {\n      return chain.then(function () { return loadThemeScript(name) })\n    }, Promise.resolve())\n  }\n\n  function getCartAddLineKey(payload) {\n    if (!payload) return ''\n    if (payload.key) return payload.key\n    if (Array.isArray(payload.items) && payload.items[0] && payload.items[0].key) return payload.items[0].key\n    return ''\n  }\n\n  function buildProductCardBundleHost(section, form) {\n    var root = section.querySelector('[data-bundle-configurator-root]')\n    if (!root) return null\n\n    var variantInput = form.querySelector('[name=\"id\"]')\n    var quantityInput = form.querySelector('[name=\"quantity\"]')\n    var variantId = variantInput ? variantInput.value : ''\n    var quantity = Math.max(parseInt(quantityInput && quantityInput.value ? quantityInput.value : '1', 10) || 1, 1)\n    var host = document.createElement('div')\n    var purchaseForm = document.createElement('form')\n\n    host.setAttribute('data-product-section', '')\n    host.setAttribute('data-product-card-bundle-host', '')\n    purchaseForm.action = localizeInternalUrl('/cart/add')\n    purchaseForm.method = 'post'\n    purchaseForm.innerHTML = '<input type=\"hidden\" name=\"id\"><input type=\"hidden\" name=\"quantity\">'\n    purchaseForm.querySelector('[name=\"id\"]').value = variantId\n    purchaseForm.querySelector('[name=\"quantity\"]').value = String(quantity)\n\n    root.setAttribute('data-current-variant-id', variantId)\n    Array.prototype.forEach.call(root.children, function (child) {\n      if (!child.hasAttribute('data-bundle-popup')) child.classList.add('hidden')\n    })\n\n    host.appendChild(purchaseForm)\n    host.appendChild(root)\n    document.body.appendChild(host)\n    return root\n  }\n\n  function showQuickAddConfirmation(button) {\n    var addedLabel = (getThemeTranslations().product || {}).addedToCart || ''\n    if (!button || !addedLabel || button.hasAttribute('data-quick-add-original-label')) return\n    button.setAttribute('data-quick-add-original-label', button.innerHTML)\n    button.innerHTML = '<span class=\"inline-flex items-center gap-2\"><svg class=\"h-4 w-4\" aria-hidden=\"true\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m20 6-11 11-5-5\"></path></svg>' + escapeHtml(addedLabel) + '</span>'\n  }\n\n  function restoreQuickAddLabel(button) {\n    if (!button || !button.hasAttribute('data-quick-add-original-label')) return\n    window.setTimeout(function () {\n      button.innerHTML = button.getAttribute('data-quick-add-original-label')\n      button.removeAttribute('data-quick-add-original-label')\n    }, 1500)\n  }\n\n  function openProductCardBundlePopup(form, payload) {\n    var productUrlInput = form.querySelector('[data-product-card-bundle-url]')\n    var productUrl = form.getAttribute('data-product-card-bundle-url') || (productUrlInput ? productUrlInput.value : '')\n    var sourceLineKey = getCartAddLineKey(payload)\n    if (!productUrl || !sourceLineKey) return Promise.resolve(false)\n    // Cards mark products without a bundle so the drawer opens without fetching the product page first.\n    if (form.getAttribute('data-product-card-has-bundle') === 'false') return Promise.resolve(false)\n\n    return loadProductBundleScripts()\n      .then(function () {\n        return fetch(productUrl, { headers: { Accept: 'text/html' } })\n      })\n      .then(function (response) {\n        if (!response.ok) throw new Error('bundle_product_fetch_failed')\n        return response.text()\n      })\n      .then(function (html) {\n        var doc = new DOMParser().parseFromString(html, 'text/html')\n        var section = doc.querySelector('[data-product-section]')\n        if (!section || !section.querySelector('[data-bundle-configurator-root]')) return false\n\n        var root = buildProductCardBundleHost(section, form)\n        var bundles = window.DPPThemeProductBundles || {}\n        if (bundles.setupBundleConfigurator) bundles.setupBundleConfigurator()\n\n        var opener = root && root.DPPBundleConfigurator && root.DPPBundleConfigurator.openBundlePopup\n        if (typeof opener !== 'function') return false\n\n        var lineQuantity = payload && payload.quantity ? payload.quantity : 0\n        return refreshCartState('bundle-popup-product-card-add')\n          .then(function (cart) {\n            return opener(sourceLineKey, { lineQuantity: lineQuantity, cart: cart }) !== false\n          })\n          .catch(function () {\n            return opener(sourceLineKey, { lineQuantity: lineQuantity }) !== false\n          })\n      })\n      .catch(function () {\n        return false\n      })\n  }\n\n  window.DPPThemeCart = Object.assign(window.DPPThemeCart || {}, {\n    refresh: refreshCartState,\n    refreshDrawer: refreshCartDrawer\n  })\n\n  function setupCartRecommendationSync() {\n    if (!document.querySelector('[data-cart-recommendations-root]')) return\n    fetch('/cart.js')\n      .then(function (res) { return res.json() })\n      .then(function (cart) {\n        renderCartRecommendations(cart)\n        dispatchCartSync(cart, 'page-load')\n      })\n      .catch(function () {})\n  }\n\n  function setupCartDrawer() {\n    var drawer = document.getElementById('CartDrawer')\n    var backdrop = document.getElementById('CartDrawerBackdrop')\n    if (!drawer || !backdrop) return\n\n    document.addEventListener('click', function (event) {\n      var trigger = event.target.closest('[data-cart-trigger]')\n      var closeBtn = event.target.closest('[data-cart-close]')\n      var removeBtn = event.target.closest('[data-cart-remove-key]')\n      if (trigger) {\n        event.preventDefault()\n        refreshCartDrawer(true, trigger)\n      }\n      if (removeBtn) {\n        event.preventDefault()\n        var lineKey = removeBtn.getAttribute('data-cart-remove-key')\n        var bundleGroup = removeBtn.getAttribute('data-cart-remove-group') || ''\n        if (!lineKey) return\n        removeBtn.disabled = true\n        var updatePromise = bundleGroup\n          ? Promise.resolve(lastRenderedCart || fetch('/cart.js').then(function (res) { return res.json() }))\n            .then(function (cart) {\n              var updates = buildBundleGroupUpdates(cart, bundleGroup, 0)\n              if (Object.keys(updates).length === 0) updates[lineKey] = 0\n              return sendCartLineUpdates(updates)\n            })\n          : sendCartLineChange(lineKey, 0)\n\n        updatePromise\n          .then(function () {\n            if (removeBtn.closest('#CartDrawer')) {\n              refreshCartDrawer(true)\n            } else {\n              window.location.reload()\n            }\n          })\n          .catch(function () {\n            window.location.href = getCartUrl()\n          })\n      }\n      if (closeBtn || event.target === backdrop) {\n        closeCartDrawer()\n      }\n    })\n\n    document.addEventListener('keydown', function (event) {\n      if (drawer.getAttribute('aria-hidden') !== 'false') return\n      if (event.key === 'Escape') closeCartDrawer()\n      trapFocusWithin(event, drawer)\n    })\n\n    document.addEventListener('change', function (event) {\n      var quantityInput = event.target.closest('[data-cart-line-quantity-input]')\n      if (!quantityInput) return\n\n      var lineKey = quantityInput.getAttribute('data-cart-line-key')\n      if (!lineKey) return\n\n      var parsedQuantity = parseInt(quantityInput.value, 10)\n      if (isNaN(parsedQuantity) || parsedQuantity < 1) parsedQuantity = 1\n      quantityInput.value = String(parsedQuantity)\n\n      var previousQuantity = parseInt(quantityInput.getAttribute('data-last-quantity') || '', 10)\n      if (parsedQuantity === previousQuantity) return\n\n      quantityInput.disabled = true\n      quantityInput.setAttribute('data-last-quantity', String(parsedQuantity))\n\n      sendCartLineChange(lineKey, parsedQuantity)\n        .then(function () {\n          if (quantityInput.closest('#CartDrawer')) {\n            refreshCartDrawer(true)\n          } else {\n            window.location.reload()\n          }\n        })\n        .catch(function () {\n          window.location.href = getCartUrl()\n        })\n    })\n\n    document.addEventListener('submit', function (event) {\n      var form = event.target\n      if (!(form instanceof HTMLFormElement)) return\n      if (!form.action || form.action.indexOf('/cart/add') === -1) return\n      if (!form.hasAttribute('data-ajax-cart')) return\n      if (form.querySelector('[name=\"checkout\"]')) return\n\n      event.preventDefault()\n      var submit = form.querySelector('button[type=\"submit\"]')\n      if (submit) submit.disabled = true\n\n      fetch('/cart/add.js', {\n        method: 'POST',\n        headers: { Accept: 'application/json' },\n        body: new FormData(form)\n      })\n        .then(function (res) {\n          if (!res.ok) throw new Error('add_failed')\n          return res.json()\n        })\n        .then(function (payload) {\n          showQuickAddConfirmation(submit)\n          return openProductCardBundlePopup(form, payload).then(function (opened) {\n            if (!opened) refreshCartDrawer(true)\n          })\n        })\n        .catch(function () {\n          window.location.href = getCartUrl()\n        })\n        .finally(function () {\n          if (submit) submit.disabled = false\n          restoreQuickAddLabel(submit)\n        })\n    })\n  }\n\n  function setupPredictiveSearch() {\n    function buildProductSuggestionRow(item, rowId) {\n      var image = item && item.image ? item.image : item && item.featured_image ? item.featured_image : null\n      var imageUrl = image && (image.url || image)\n      var price = item && (item.price || item.price_min || item.compare_at_price_min)\n      var priceCents = normalizeToCents(price)\n      var imageMarkup = imageUrl\n        ? '<img class=\"h-11 w-11 rounded object-cover\" src=\"' + escapeHtml(imageUrl) + '\" alt=\"' + escapeHtml(item.title) + '\">'\n        : '<div class=\"h-11 w-11 rounded bg-dpp-surfaceSoft\"></div>'\n      var priceMarkup = priceCents > 0\n        ? '<span class=\"text-xs font-bold text-dpp-price\">' + formatMoney(priceCents, window.Shopify && window.Shopify.money_format) + '</span>'\n        : ''\n\n      return '' +\n        '<a id=\"' + escapeHtml(rowId) + '\" class=\"grid grid-cols-[44px_1fr] items-center gap-2 rounded px-2 py-1 hover:bg-dpp-surfaceSoft\" href=\"' + escapeHtml(localizeInternalUrl(item.url)) + '\" role=\"option\" data-suggest-option=\"true\">' +\n        imageMarkup +\n        '<span class=\"min-w-0\">' +\n        '<span class=\"block truncate text-sm font-semibold\">' + escapeHtml(item.title) + '</span>' +\n        priceMarkup +\n        '</span>' +\n        '</a>'\n    }\n\n    var inputSuggestPairs = [\n      { input: document.getElementById('HeaderSearchInput'), suggest: document.getElementById('HeaderSearchSuggest') },\n      { input: document.getElementById('MobileHeaderSearchInput'), suggest: document.getElementById('MobileHeaderSearchSuggest') },\n      { input: document.getElementById('MobileMenuSearchInput'), suggest: document.getElementById('MobileMenuSearchSuggest') }\n    ].filter(function (pair) { return pair.input && pair.suggest })\n\n    if (inputSuggestPairs.length === 0) return\n\n    function hideSuggest(pair) {\n      pair.suggest.classList.add('hidden')\n      pair.input.setAttribute('aria-expanded', 'false')\n      pair.input.removeAttribute('aria-activedescendant')\n    }\n\n    function setupSuggestForPair(pair) {\n      var input = pair.input\n      var suggest = pair.suggest\n      var activeIndex = -1\n      var lastController\n      var searchTranslations = getThemeTranslations().search || {}\n\n      input.setAttribute('aria-expanded', 'false')\n      input.setAttribute('aria-controls', suggest.id)\n      input.setAttribute('role', 'combobox')\n      input.setAttribute('aria-autocomplete', 'list')\n      input.setAttribute('aria-haspopup', 'listbox')\n      suggest.setAttribute('role', 'listbox')\n      suggest.setAttribute('aria-live', 'polite')\n\n      function getRows() {\n        return Array.prototype.slice.call(suggest.querySelectorAll('[data-suggest-option=\"true\"]'))\n      }\n\n      function setActive(nextIndex) {\n        var rows = getRows()\n        rows.forEach(function (row, index) {\n          row.classList.toggle('bg-dpp-surfaceSoft', index === nextIndex)\n          row.setAttribute('aria-selected', index === nextIndex ? 'true' : 'false')\n        })\n        activeIndex = nextIndex\n        if (activeIndex >= 0 && rows[activeIndex]) {\n          input.setAttribute('aria-activedescendant', rows[activeIndex].id)\n          rows[activeIndex].scrollIntoView({ block: 'nearest', behavior: prefersReducedMotion() ? 'auto' : 'smooth' })\n        } else {\n          input.removeAttribute('aria-activedescendant')\n        }\n      }\n\n      input.addEventListener('input', function () {\n        var term = input.value.trim()\n        activeIndex = -1\n        if (lastController) lastController.abort()\n        if (term.length < 2) {\n          suggest.innerHTML = ''\n          hideSuggest(pair)\n          return\n        }\n\n        var predictiveSearchPath = (getThemeConfig().routes && getThemeConfig().routes.predictiveSearchUrl) || '/search/suggest'\n        var predictiveSearchUrl = predictiveSearchPath + (predictiveSearchPath.indexOf('.json') === -1 ? '.json' : '')\n        var predictiveSearchFields = 'title,product_type,variants.title,vendor,variants.sku,variants.barcode'\n\n        lastController = new AbortController()\n        fetch(predictiveSearchUrl + '?q=' + encodeURIComponent(term) + '&resources[type]=query,product,collection,article,page&resources[limit]=6&resources[options][fields]=' + encodeURIComponent(predictiveSearchFields), { signal: lastController.signal })\n          .then(function (response) { return response.json() })\n          .then(function (data) {\n            var rows = []\n            var queries = (data.resources && data.resources.results && data.resources.results.queries) || []\n            var products = (data.resources && data.resources.results && data.resources.results.products) || []\n            var collections = (data.resources && data.resources.results && data.resources.results.collections) || []\n            var pages = (data.resources && data.resources.results && data.resources.results.pages) || []\n            var articles = (data.resources && data.resources.results && data.resources.results.articles) || []\n\n            queries.forEach(function (item, index) {\n              var queryText = item.text || item.title || item.query || ''\n              var queryTerm = buildIdentifierSearchTerm(queryText)\n              var queryUrl = localizeInternalUrl(item.url || (queryText ? (getThemeConfig().routes.searchUrl || '/search') + '?q=' + encodeURIComponent(queryTerm) + '&type=product,article,page' : '#'))\n              rows.push('<a id=\"' + escapeHtml(suggest.id + '-query-' + index) + '\" class=\"block rounded px-2 py-1 hover:bg-dpp-surfaceSoft\" href=\"' + escapeHtml(queryUrl) + '\" role=\"option\" data-suggest-option=\"true\">' + escapeHtml(searchTranslations.predictiveQueryPrefix || 'Zoek') + ': ' + escapeHtml(queryText) + '</a>')\n            })\n            products.forEach(function (item, index) { rows.push(buildProductSuggestionRow(item, suggest.id + '-product-' + index)) })\n            collections.forEach(function (item, index) { rows.push('<a id=\"' + escapeHtml(suggest.id + '-collection-' + index) + '\" class=\"block rounded px-2 py-1 hover:bg-dpp-surfaceSoft\" href=\"' + escapeHtml(localizeInternalUrl(item.url)) + '\" role=\"option\" data-suggest-option=\"true\">' + escapeHtml(searchTranslations.predictiveCollectionPrefix || 'Collectie') + ': ' + escapeHtml(item.title) + '</a>') })\n            pages.forEach(function (item, index) { rows.push('<a id=\"' + escapeHtml(suggest.id + '-page-' + index) + '\" class=\"block rounded px-2 py-1 hover:bg-dpp-surfaceSoft\" href=\"' + escapeHtml(localizeInternalUrl(item.url)) + '\" role=\"option\" data-suggest-option=\"true\">' + escapeHtml(searchTranslations.predictivePagePrefix || '') + ': ' + escapeHtml(item.title) + '</a>') })\n            articles.forEach(function (item, index) { rows.push('<a id=\"' + escapeHtml(suggest.id + '-article-' + index) + '\" class=\"block rounded px-2 py-1 hover:bg-dpp-surfaceSoft\" href=\"' + escapeHtml(localizeInternalUrl(item.url)) + '\" role=\"option\" data-suggest-option=\"true\">' + escapeHtml(searchTranslations.predictiveArticlePrefix || '') + ': ' + escapeHtml(item.title) + '</a>') })\n\n            if (rows.length === 0) rows.push('<span class=\"block px-2 py-1 text-dpp-muted\">' + escapeHtml(searchTranslations.predictiveEmpty || '') + '</span>')\n            suggest.innerHTML = rows.join('')\n            suggest.classList.remove('hidden')\n            input.setAttribute('aria-expanded', 'true')\n          })\n          .catch(function () {\n            hideSuggest(pair)\n          })\n      })\n\n      input.addEventListener('keydown', function (event) {\n        var rows = getRows()\n        if (rows.length === 0) return\n        if (event.key === 'ArrowDown') {\n          event.preventDefault()\n          setActive((activeIndex + 1) % rows.length)\n        } else if (event.key === 'ArrowUp') {\n          event.preventDefault()\n          setActive(activeIndex <= 0 ? rows.length - 1 : activeIndex - 1)\n        } else if (event.key === 'Enter' && activeIndex >= 0) {\n          event.preventDefault()\n          window.location.href = rows[activeIndex].href\n        }\n      })\n    }\n\n    inputSuggestPairs.forEach(setupSuggestForPair)\n\n    document.addEventListener('click', function (event) {\n      inputSuggestPairs.forEach(function (pair) {\n        if (!pair.suggest.contains(event.target) && event.target !== pair.input) {\n          hideSuggest(pair)\n        }\n      })\n    })\n  }\n\n  function setupIdentifierSearchForms() {\n    var forms = Array.prototype.slice.call(document.querySelectorAll('form[action]')).filter(function (form) {\n      var action = form.getAttribute('action') || ''\n      return action.indexOf('/search') > -1 || action === (getThemeConfig().routes.searchUrl || '')\n    })\n\n    forms.forEach(function (form) {\n      if (form.hasAttribute('data-identifier-search-ready')) return\n      var input = form.querySelector('input[name=\"q\"]')\n      if (!input) return\n\n      form.setAttribute('data-identifier-search-ready', 'true')\n      form.addEventListener('submit', function () {\n        input.value = buildIdentifierSearchTerm(input.value)\n      })\n    })\n  }\n\n  function setupDesktopMegaMenu() {\n    var megaMenus = Array.prototype.slice.call(document.querySelectorAll('[data-desktop-mega-menu]'))\n    if (megaMenus.length === 0) return\n\n    function closeMenus(exceptMenu) {\n      megaMenus.forEach(function (menu) {\n        if (menu !== exceptMenu) menu.removeAttribute('open')\n      })\n    }\n\n    megaMenus.forEach(function (menu) {\n      var categoryLinks = Array.prototype.slice.call(menu.querySelectorAll('.header-mega-category-link'))\n      var categoryTriggers = Array.prototype.slice.call(menu.querySelectorAll('[data-mega-category-trigger]'))\n      var categoryPanels = Array.prototype.slice.call(menu.querySelectorAll('[data-mega-category-panel]'))\n      var panel = menu.querySelector('.header-mega-panel')\n      var summary = menu.querySelector('[data-desktop-mega-summary]')\n\n      function setPanelPlacement(left, width) {\n        if (!panel) return\n        panel.setAttribute('data-mega-placement-release', 'mega_viewport_20260501_2107')\n        panel.style.left = Math.round(left) + 'px'\n        panel.style.width = Math.round(width) + 'px'\n        panel.style.maxWidth = Math.round(width) + 'px'\n        panel.style.removeProperty('transform')\n      }\n\n      function resetPanelPosition() {\n        if (!panel) return\n        panel.style.removeProperty('left')\n        panel.style.removeProperty('width')\n        panel.style.removeProperty('max-width')\n        panel.style.removeProperty('transform')\n      }\n\n      function positionMegaPanelFromMenuAnchor() {\n        var viewportWidth = document.documentElement.clientWidth || window.innerWidth\n        var viewportPadding = 16\n        if (!panel || viewportWidth < 768) {\n          resetPanelPosition()\n          return\n        }\n\n        var menuRect = menu.getBoundingClientRect()\n        var headerShell = menu.closest('.dpp-shell')\n        var shellRect = headerShell ? headerShell.getBoundingClientRect() : null\n        var desiredLeft = shellRect ? shellRect.left : menuRect.left\n        var desiredWidth = shellRect ? shellRect.width : 1280\n        var panelWidth = Math.min(viewportWidth - viewportPadding * 2, desiredWidth, 1280)\n        var viewportLeft = Math.max(viewportPadding, Math.min(desiredLeft, viewportWidth - viewportPadding - panelWidth))\n        setPanelPlacement(viewportLeft - menuRect.left, panelWidth)\n      }\n\n      function positionMegaPanel() {\n        positionMegaPanelFromMenuAnchor()\n      }\n\n      function clearActiveCategory() {\n        categoryLinks.forEach(function (item) {\n          item.classList.remove('is-active')\n        })\n\n        categoryPanels.forEach(function (panel) {\n          panel.classList.add('hidden')\n        })\n      }\n\n      function setActiveCategory(trigger) {\n        if (!trigger) return\n\n        var targetPanelId = trigger.getAttribute('data-panel-target')\n        if (!targetPanelId) return\n\n        categoryLinks.forEach(function (item) {\n          item.classList.toggle('is-active', item === trigger)\n        })\n\n        categoryPanels.forEach(function (panel) {\n          var isActive = panel.id === targetPanelId\n          panel.classList.toggle('hidden', !isActive)\n        })\n      }\n\n      categoryTriggers.forEach(function (trigger, index) {\n        trigger.addEventListener('mouseenter', function () {\n          setActiveCategory(trigger)\n          positionMegaPanel()\n        })\n\n        trigger.addEventListener('focus', function () {\n          setActiveCategory(trigger)\n          positionMegaPanel()\n        })\n\n        trigger.addEventListener('keydown', function (event) {\n          if (event.key !== 'ArrowDown' && event.key !== 'ArrowUp' && event.key !== 'Home' && event.key !== 'End') return\n\n          event.preventDefault()\n\n          var nextIndex = index\n          if (event.key === 'ArrowDown') nextIndex = (index + 1) % categoryTriggers.length\n          if (event.key === 'ArrowUp') nextIndex = index <= 0 ? categoryTriggers.length - 1 : index - 1\n          if (event.key === 'Home') nextIndex = 0\n          if (event.key === 'End') nextIndex = categoryTriggers.length - 1\n\n          if (categoryTriggers[nextIndex]) {\n            categoryTriggers[nextIndex].focus()\n            setActiveCategory(categoryTriggers[nextIndex])\n          }\n        })\n      })\n\n      categoryLinks.forEach(function (link) {\n        if (link.hasAttribute('data-mega-category-trigger')) return\n\n        link.addEventListener('mouseenter', function () {\n          clearActiveCategory()\n          positionMegaPanel()\n        })\n\n        link.addEventListener('focus', function () {\n          clearActiveCategory()\n          positionMegaPanel()\n        })\n      })\n\n      var defaultTrigger = menu.querySelector('[data-mega-category-default]') || categoryTriggers[0]\n      if (defaultTrigger) setActiveCategory(defaultTrigger)\n\n      function openMenu() {\n        closeMenus(menu)\n        positionMegaPanelFromMenuAnchor()\n        menu.setAttribute('open', '')\n        positionMegaPanel()\n      }\n\n      function closeMenu() {\n        menu.removeAttribute('open')\n        resetPanelPosition()\n      }\n\n      if (summary) {\n        summary.addEventListener('click', function (event) {\n          event.preventDefault()\n          if (menu.open) closeMenu()\n          else openMenu()\n        })\n      }\n\n      menu.addEventListener('mouseenter', function () {\n        if (menu.open) positionMegaPanel()\n      })\n      menu.addEventListener('focusin', function () {\n        if (menu.open) positionMegaPanel()\n      })\n      menu.addEventListener('mouseleave', function () {\n        if (!menu.open) resetPanelPosition()\n      })\n\n      menu.addEventListener('toggle', function () {\n        if (menu.open) positionMegaPanel()\n        else resetPanelPosition()\n        if (menu.open) closeMenus(menu)\n      })\n\n      window.addEventListener('resize', function () {\n        if (menu.open || menu.matches(':hover')) positionMegaPanel()\n        else resetPanelPosition()\n      })\n    })\n\n    document.addEventListener('click', function (event) {\n      if (event.target.closest('[data-desktop-mega-menu]')) return\n      closeMenus()\n    })\n\n    Array.prototype.slice.call(document.querySelectorAll('header[role=\"banner\"] .header-nav-link:not([data-desktop-mega-summary])')).forEach(function (link) {\n      link.addEventListener('mouseenter', function () {\n        closeMenus()\n      })\n\n      link.addEventListener('focus', function () {\n        closeMenus()\n      })\n    })\n\n    document.addEventListener('keydown', function (event) {\n      if (event.key !== 'Escape') return\n      closeMenus()\n    })\n  }\n\n  function setupMobileMenu() {\n    var drawer = document.getElementById('MobileMenuDrawer')\n    var backdrop = document.getElementById('MobileMenuBackdrop')\n    var searchInput = document.getElementById('MobileMenuSearchInput')\n    var bottomNav = document.querySelector('[data-mobile-bottom-nav]')\n    var headerActions = document.querySelector('[data-mobile-header-actions]')\n    var closeVisibilityTimer\n    if (!drawer || !backdrop) return\n\n    function openMenu(focusSearch) {\n      if (closeVisibilityTimer) {\n        window.clearTimeout(closeVisibilityTimer)\n        closeVisibilityTimer = null\n      }\n      drawer.classList.remove('invisible', 'pointer-events-none', '-translate-x-full')\n      backdrop.classList.remove('hidden')\n      backdrop.setAttribute('aria-hidden', 'false')\n      drawer.setAttribute('aria-hidden', 'false')\n      setBodyScrollLock('mobile-menu', true)\n      if (bottomNav) bottomNav.classList.add('hidden')\n      if (headerActions) headerActions.classList.add('opacity-0', 'pointer-events-none')\n      if (focusSearch && searchInput) {\n        window.setTimeout(function () {\n          searchInput.focus()\n        }, 120)\n      } else {\n        window.setTimeout(function () {\n          var closeButton = drawer.querySelector('[data-mobile-menu-close]')\n          if (closeButton) closeButton.focus()\n        }, 0)\n      }\n    }\n\n    function closeMenu() {\n      drawer.classList.add('-translate-x-full', 'pointer-events-none')\n      backdrop.classList.add('hidden')\n      backdrop.setAttribute('aria-hidden', 'true')\n      drawer.setAttribute('aria-hidden', 'true')\n      setBodyScrollLock('mobile-menu', false)\n      if (bottomNav) bottomNav.classList.remove('hidden')\n      if (headerActions) headerActions.classList.remove('opacity-0', 'pointer-events-none')\n      closeVisibilityTimer = window.setTimeout(function () {\n        drawer.classList.add('invisible')\n      }, 200)\n      restoreOverlayTrigger('mobile-menu')\n    }\n\n    document.addEventListener('click', function (event) {\n      var openTrigger = event.target.closest('[data-mobile-menu-open]')\n      var closeTrigger = event.target.closest('[data-mobile-menu-close]')\n      var menuLink = event.target.closest('[data-mobile-menu-link]')\n\n      if (openTrigger) {\n        event.preventDefault()\n        rememberOverlayTrigger('mobile-menu', openTrigger)\n        openMenu(openTrigger.hasAttribute('data-mobile-menu-focus-search'))\n      }\n\n      if (closeTrigger || event.target === backdrop) {\n        closeMenu()\n      }\n\n      if (menuLink) {\n        closeMenu()\n      }\n    })\n\n    document.addEventListener('keydown', function (event) {\n      if (drawer.getAttribute('aria-hidden') !== 'false') return\n      if (event.key === 'Escape') closeMenu()\n      trapFocusWithin(event, drawer)\n    })\n\n    window.addEventListener('resize', function () {\n      if (window.innerWidth >= 768) {\n        closeMenu()\n      }\n    })\n  }\n\n  function setupMobileUspSlider() {\n    var sliders = Array.prototype.slice.call(document.querySelectorAll('[data-mobile-usp-slider]'))\n    if (sliders.length === 0) return\n\n    sliders.forEach(function (slider) {\n      var slides = Array.prototype.slice.call(slider.querySelectorAll('[data-mobile-usp-slide]'))\n      var toggle = slider.querySelector('[data-mobile-usp-toggle]')\n      var intervalMs = parseInt(slider.getAttribute('data-mobile-usp-interval') || 4500, 10)\n      var activeIndex = 0\n      var rotationTimer = null\n      var isPaused = prefersReducedMotion() || slides.length < 2\n      var pauseLabel = toggle ? (toggle.getAttribute('data-label-pause') || '') : ''\n      var playLabel = toggle ? (toggle.getAttribute('data-label-play') || '') : ''\n\n      if (slides.length === 0) return\n\n      function updateToggle() {\n        if (!toggle) return\n\n        var pauseIcon = toggle.querySelector('[data-mobile-usp-icon=\"pause\"]')\n        var playIcon = toggle.querySelector('[data-mobile-usp-icon=\"play\"]')\n\n        toggle.setAttribute('aria-pressed', isPaused ? 'true' : 'false')\n        toggle.setAttribute('aria-label', isPaused ? playLabel : pauseLabel)\n\n        if (pauseIcon) pauseIcon.classList.toggle('hidden', isPaused)\n        if (playIcon) playIcon.classList.toggle('hidden', !isPaused)\n      }\n\n      function showSlide(nextIndex) {\n        activeIndex = nextIndex\n\n        slides.forEach(function (slide, slideIndex) {\n          var isActive = slideIndex === activeIndex\n          slide.classList.toggle('relative', isActive)\n          slide.classList.toggle('absolute', !isActive)\n          slide.classList.toggle('inset-0', !isActive)\n          slide.classList.toggle('opacity-100', isActive)\n          slide.classList.toggle('translate-y-0', isActive)\n          slide.classList.toggle('pointer-events-none', !isActive)\n          slide.classList.toggle('opacity-0', !isActive)\n          slide.classList.toggle('translate-y-2', !isActive)\n          slide.setAttribute('aria-hidden', isActive ? 'false' : 'true')\n        })\n      }\n\n      function stopRotation() {\n        if (rotationTimer) {\n          window.clearInterval(rotationTimer)\n          rotationTimer = null\n        }\n        isPaused = true\n        updateToggle()\n      }\n\n      function startRotation() {\n        if (slides.length < 2 || prefersReducedMotion()) {\n          isPaused = true\n          updateToggle()\n          return\n        }\n\n        if (rotationTimer) window.clearInterval(rotationTimer)\n\n        isPaused = false\n        rotationTimer = window.setInterval(function () {\n          showSlide((activeIndex + 1) % slides.length)\n        }, intervalMs)\n        updateToggle()\n      }\n\n      showSlide(0)\n\n      if (toggle) {\n        toggle.addEventListener('click', function () {\n          if (isPaused) {\n            startRotation()\n          } else {\n            stopRotation()\n          }\n        })\n      }\n\n      if (!isPaused) startRotation()\n      else updateToggle()\n    })\n  }\n\n  function setupCutoffMessages() {\n    var messageEls = Array.prototype.slice.call(document.querySelectorAll('[data-cutoff-message]'))\n    if (messageEls.length === 0) return\n\n    messageEls.forEach(function (el) {\n      var hour = parseInt(el.getAttribute('data-cutoff-hour') || getThemeConfig().cutoffHour || 21, 10)\n      var beforeLabel = el.getAttribute('data-cutoff-before-label') || getThemeConfig().cutoffBeforeLabel || ''\n      var afterLabel = el.getAttribute('data-cutoff-after-label') || getThemeConfig().cutoffAfterLabel || ''\n      var dateMode = el.getAttribute('data-cutoff-date-mode') || 'delivery'\n      var deliveryDays = el.getAttribute('data-cutoff-delivery-days') || 1\n      el.textContent = getCutoffMessageText(hour, beforeLabel, afterLabel, dateMode, deliveryDays)\n    })\n  }\n\n  function parseIntegerList(value) {\n    return String(value || '')\n      .split(',')\n      .map(function (part) {\n        return parseInt(part.trim(), 10)\n      })\n      .filter(function (part) {\n        return !isNaN(part)\n      })\n  }\n\n  function parseTimeRanges(value) {\n    return String(value || '')\n      .split(',')\n      .map(function (part) {\n        var bounds = part.trim().split('-')\n        if (bounds.length !== 2) return null\n\n        var start = parseInt(bounds[0], 10)\n        var end = parseInt(bounds[1], 10)\n        if (isNaN(start) || isNaN(end)) return null\n\n        return { start: start, end: end }\n      })\n      .filter(function (range) {\n        return range && range.end > range.start\n      })\n  }\n\n  function getTimeZoneSnapshot(timeZone) {\n    try {\n      var formatter = new Intl.DateTimeFormat('en-GB', {\n        timeZone: timeZone || 'Europe/Amsterdam',\n        weekday: 'short',\n        hour: '2-digit',\n        minute: '2-digit',\n        hourCycle: 'h23'\n      })\n      var parts = formatter.formatToParts(new Date())\n      var lookup = {}\n\n      parts.forEach(function (part) {\n        lookup[part.type] = part.value\n      })\n\n      var dayMap = {\n        Mon: 1,\n        Tue: 2,\n        Wed: 3,\n        Thu: 4,\n        Fri: 5,\n        Sat: 6,\n        Sun: 0\n      }\n      var hours = parseInt(lookup.hour, 10)\n      var minutes = parseInt(lookup.minute, 10)\n\n      return {\n        day: dayMap[lookup.weekday],\n        totalMinutes: (isNaN(hours) ? 0 : hours * 60) + (isNaN(minutes) ? 0 : minutes)\n      }\n    } catch (_error) {\n      var currentDate = new Date()\n      return {\n        day: currentDate.getDay(),\n        totalMinutes: currentDate.getHours() * 60 + currentDate.getMinutes()\n      }\n    }\n  }\n\n  function setupFooterPhoneAvailability() {\n    var statusEls = Array.prototype.slice.call(document.querySelectorAll('[data-footer-phone-status]'))\n    if (statusEls.length === 0) return\n\n    function renderStatus() {\n      statusEls.forEach(function (statusEl) {\n        var timeZone = statusEl.getAttribute('data-timezone') || 'Europe/Amsterdam'\n        var openDays = parseIntegerList(statusEl.getAttribute('data-open-days'))\n        var openRanges = parseTimeRanges(statusEl.getAttribute('data-open-ranges'))\n        var openLabel = statusEl.getAttribute('data-open-label') || ''\n        var closedLabel = statusEl.getAttribute('data-closed-label') || ''\n        var snapshot = getTimeZoneSnapshot(timeZone)\n        var isOpenDay = openDays.indexOf(snapshot.day) > -1\n        var isOpenTime = openRanges.some(function (range) {\n          return snapshot.totalMinutes >= range.start && snapshot.totalMinutes < range.end\n        })\n        var isOpen = isOpenDay && isOpenTime\n        var statusText = isOpen ? openLabel : closedLabel\n        var textEl = statusEl.querySelector('[data-footer-phone-status-text]')\n\n        statusEl.classList.toggle('is-open', isOpen)\n        if (textEl) textEl.textContent = statusText\n      })\n    }\n\n    renderStatus()\n    window.setInterval(renderStatus, 60000)\n  }\n\n  function setupLocalizedInternalLinks(scope) {\n    var roots = Array.prototype.slice.call((scope || document).querySelectorAll('[data-localize-internal-links]'))\n    if (roots.length === 0) return\n\n    roots.forEach(function (root) {\n      Array.prototype.slice.call(root.querySelectorAll('a[href]')).forEach(function (link) {\n        var href = link.getAttribute('href') || ''\n        var localizedHref = localizeInternalUrl(href)\n\n        if (localizedHref && localizedHref !== href) {\n          link.setAttribute('href', localizedHref)\n        }\n      })\n    })\n  }\n\n  function setupServicePageAccordions() {\n    var accordions = Array.prototype.slice.call(document.querySelectorAll('.page-content--service .eael-adv-accordion'))\n    if (accordions.length === 0) return\n\n    function setAccordionItemState(item, expanded) {\n      if (!item) return\n\n      var header = item.querySelector('.eael-accordion-header')\n      var content = item.querySelector('.eael-accordion-content')\n      if (!header || !content) return\n\n      item.classList.toggle('is-open', expanded)\n      header.classList.toggle('is-active', expanded)\n      header.setAttribute('aria-expanded', expanded ? 'true' : 'false')\n      content.hidden = !expanded\n      content.setAttribute('aria-hidden', expanded ? 'false' : 'true')\n    }\n\n    accordions.forEach(function (accordion, accordionIndex) {\n      if (accordion.hasAttribute('data-dpp-accordion-ready')) return\n      accordion.setAttribute('data-dpp-accordion-ready', 'true')\n\n      var accordionType = accordion.getAttribute('data-accordion-type') || 'accordion'\n      var items = Array.prototype.slice.call(accordion.querySelectorAll('.eael-accordion-list'))\n\n      items.forEach(function (item, itemIndex) {\n        var header = item.querySelector('.eael-accordion-header')\n        var content = item.querySelector('.eael-accordion-content')\n        if (!header || !content) return\n\n        if (!content.id) {\n          content.id = 'dpp-service-accordion-content-' + accordionIndex + '-' + itemIndex\n        }\n\n        header.setAttribute('role', 'button')\n        header.setAttribute('tabindex', header.getAttribute('tabindex') || '0')\n        header.setAttribute('aria-controls', content.id)\n        setAccordionItemState(item, false)\n\n        function toggleItem() {\n          var shouldExpand = !item.classList.contains('is-open')\n\n          if (shouldExpand && accordionType === 'accordion') {\n            items.forEach(function (otherItem) {\n              if (otherItem !== item) setAccordionItemState(otherItem, false)\n            })\n          }\n\n          setAccordionItemState(item, shouldExpand)\n        }\n\n        header.addEventListener('click', toggleItem)\n        header.addEventListener('keydown', function (event) {\n          if (event.key !== 'Enter' && event.key !== ' ') return\n          event.preventDefault()\n          toggleItem()\n        })\n      })\n    })\n  }\n\n  function setupProductFaqAccordions() {\n    var roots = Array.prototype.slice.call(document.querySelectorAll('[data-pdp-faq]'))\n    if (roots.length === 0) return\n\n    roots.forEach(function (root) {\n      if (root.hasAttribute('data-pdp-faq-ready')) return\n      root.setAttribute('data-pdp-faq-ready', 'true')\n\n      var triggers = Array.prototype.slice.call(root.querySelectorAll('[data-pdp-faq-trigger]'))\n      triggers.forEach(function (trigger) {\n        var panelId = trigger.getAttribute('aria-controls')\n        var panel = panelId ? document.getElementById(panelId) : null\n        var item = trigger.closest('[data-pdp-faq-item]')\n        if (!panel) return\n\n        function setExpanded(expanded) {\n          var openIcon = trigger.querySelector('[data-pdp-faq-icon-open]')\n          var closeIcon = trigger.querySelector('[data-pdp-faq-icon-close]')\n\n          trigger.setAttribute('aria-expanded', expanded ? 'true' : 'false')\n          panel.hidden = !expanded\n          if (item) {\n            if (expanded) {\n              item.setAttribute('open', '')\n            } else {\n              item.removeAttribute('open')\n            }\n          }\n          if (openIcon) openIcon.hidden = expanded\n          if (closeIcon) closeIcon.hidden = !expanded\n        }\n\n        setExpanded(trigger.getAttribute('aria-expanded') === 'true')\n        trigger.addEventListener('click', function () {\n          setExpanded(trigger.getAttribute('aria-expanded') !== 'true')\n        })\n      })\n    })\n  }\n\n  function setupProductRecommendations() {\n    var roots = Array.prototype.slice.call(document.querySelectorAll('[data-product-recommendations]'))\n    if (roots.length === 0) return\n\n    roots.forEach(function (root) {\n      if (root.hasAttribute('data-product-recommendations-ready')) return\n      root.setAttribute('data-product-recommendations-ready', 'true')\n\n      var url = root.getAttribute('data-url')\n      if (!url) {\n        return\n      }\n\n      fetch(url)\n        .then(function (response) {\n          if (!response.ok) throw new Error('recommendations_failed')\n          return response.text()\n        })\n        .then(function (html) {\n          var container = document.createElement('div')\n          container.innerHTML = html\n          var fetchedRoot = container.querySelector('[data-product-recommendations]')\n          var renderedContent = fetchedRoot ? fetchedRoot.innerHTML.trim() : container.innerHTML.trim()\n\n          if (!renderedContent) {\n            return\n          }\n\n          // Swapping cards while the section is on screen moves the page (CLS); keep the server-rendered fallback then.\n          var rootRect = root.getBoundingClientRect()\n          var viewportHeight = window.innerHeight || document.documentElement.clientHeight || 0\n          var isOnScreen = rootRect.bottom > 0 && rootRect.top < viewportHeight\n          if (isOnScreen && root.children.length > 0) {\n            return\n          }\n\n          root.innerHTML = renderedContent\n          localizeProductRecommendationDefaults(root)\n          setupProductCardReviewSummaries(root)\n        })\n        .catch(function () {})\n    })\n  }\n\n  function localizeProductRecommendationDefaults(root) {\n    var localizedKicker = root.getAttribute('data-localized-kicker')\n    var localizedHeading = root.getAttribute('data-localized-heading')\n\n    if (localizedKicker) {\n      var kicker = root.querySelector('.dpp-section-kicker')\n      var kickerText = kicker ? kicker.textContent.trim() : ''\n\n      if (kicker && (kickerText === 'Complete your order' || kickerText === 'More options')) {\n        kicker.textContent = localizedKicker\n      }\n    }\n\n    if (localizedHeading) {\n      var heading = root.querySelector('h2')\n      var headingText = heading ? heading.textContent.trim() : ''\n\n      if (heading && (headingText === 'Goes well with this product' || headingText === 'Comparable products')) {\n        heading.textContent = localizedHeading\n      }\n    }\n  }\n\n  var judgeMeReviewRequestCache = {}\n\n  function setupProductCardReviewSummaries(scope) {\n    var root = scope || document\n    var summaries = Array.prototype.slice.call(root.querySelectorAll('[data-judgeme-product-card-summary]'))\n    if (summaries.length === 0) return\n\n    var parseReviewNumber = function (value, allowDecimal) {\n      var normalizedValue = String(value == null ? '' : value).trim().replace(',', '.')\n      if (!/^\\d+(?:\\.\\d+)?$/.test(normalizedValue)) return NaN\n      var number = Number(normalizedValue)\n      return Number.isFinite(number) && (allowDecimal || Number.isInteger(number)) ? number : NaN\n    }\n\n    var getReviewCount = function (reviewData) {\n      if (!reviewData) return NaN\n      var fields = ['number_of_reviews', 'reviews_count', 'review_count', 'total_reviews', 'total_count', 'count']\n      for (var index = 0; index < fields.length; index += 1) {\n        if (reviewData[fields[index]] != null) return parseReviewNumber(reviewData[fields[index]], false)\n      }\n      return NaN\n    }\n\n    var getAverageRating = function (reviewData) {\n      if (!reviewData) return 0\n\n      return parseReviewNumber(\n        reviewData.average_rating\n          || reviewData.average\n          || reviewData.avg_rating\n          || reviewData.rating,\n        true\n      ) || 0\n    }\n\n    var getReviewCountLabel = function (reviewCount) {\n      var productTranslations = getThemeTranslations().product || {}\n      var label = reviewCount === 1\n        ? (productTranslations.reviewCountSingular || productTranslations.reviewCountPlural || 'review')\n        : (productTranslations.reviewCountPlural || 'reviews')\n\n      return reviewCount + ' ' + label\n    }\n\n    var renderSummary = function (summary, reviewData) {\n      if (!reviewData) return\n\n      var averageRating = getAverageRating(reviewData)\n      var reviewCount = getReviewCount(reviewData)\n      if (reviewCount === 0) {\n        summary.hidden = true\n        summary.style.display = 'none'\n        return\n      }\n      if (!Number.isFinite(averageRating) || averageRating <= 0 || averageRating > 5 || !Number.isInteger(reviewCount) || reviewCount < 1) return\n\n      var badge = summary.querySelector('[data-dpp-review-badge]')\n      if (!badge) return\n\n      var stars = ''\n      for (var index = 1; index <= 5; index += 1) {\n        var state = averageRating >= index ? 'jdgm--on' : (averageRating >= index - 0.75 ? 'jdgm--half' : 'jdgm--off')\n        stars += '<span class=\"jdgm-star ' + state + '\"></span>'\n      }\n\n      var scoreText = averageRating.toFixed(1).replace('.', summary.getAttribute('data-review-decimal-separator') || '.')\n      var countText = getReviewCountLabel(reviewCount)\n      var summaryText = scoreText + '/5 (' + countText + ')'\n      var labelTemplate = summary.getAttribute('data-review-label-template')\n      summary.setAttribute('aria-label', labelTemplate\n        ? labelTemplate.replace('__SCORE__', scoreText).replace('__COUNT__', String(reviewCount)).replace('__LABEL__', countText.slice(String(reviewCount).length + 1))\n        : summaryText)\n      badge.innerHTML = '<div class=\"jdgm-prev-badge\" data-average-rating=\"' + averageRating.toFixed(2) + '\" data-number-of-reviews=\"' + reviewCount + '\"><span class=\"jdgm-prev-badge__stars\" data-score=\"' + averageRating.toFixed(2) + '\" aria-hidden=\"true\">' + stars + '</span><span class=\"jdgm-prev-badge__text\">' + escapeHtml(summaryText) + '</span></div>'\n      badge.style.setProperty('display', 'inline-flex', 'important')\n      var renderedBadge = badge.querySelector('.jdgm-prev-badge')\n      if (renderedBadge) {\n        renderedBadge.style.setProperty('display', 'inline-flex', 'important')\n      }\n      summary.hidden = false\n      summary.style.display = ''\n    }\n\n    var fetchReviewData = function (endpoint, attempt) {\n      return fetch(endpoint, { headers: { Accept: 'application/json' } })\n        .then(function (response) {\n          if (!response.ok) throw new Error('Judge.me review request failed')\n          return response.json()\n        })\n        .catch(function () {\n          if (attempt >= 2) return null\n\n          return new Promise(function (resolve) {\n            window.setTimeout(resolve, 500 * (attempt + 1))\n          }).then(function () {\n            return fetchReviewData(endpoint, attempt + 1)\n          })\n        })\n    }\n\n    summaries.forEach(function (summary) {\n      if (summary.hasAttribute('data-judgeme-product-card-summary-ready')) return\n\n      var productId = summary.getAttribute('data-product-id')\n      var shopDomain = summary.getAttribute('data-shop-domain')\n      if (!productId || !shopDomain) return\n      summary.setAttribute('data-judgeme-product-card-summary-ready', 'true')\n\n      if (summary.querySelector('[data-dpp-review-badge] [data-average-rating]')) return\n\n      var judgeMeWidgetData = window.jdgm\n        && window.jdgm.data\n        && window.jdgm.data.reviewWidget\n      var existingReviewData = judgeMeWidgetData\n        && (judgeMeWidgetData[String(productId)] || judgeMeWidgetData[productId])\n\n      if (existingReviewData && Number.isInteger(getReviewCount(existingReviewData))) {\n        renderSummary(summary, existingReviewData)\n        return\n      }\n\n      var endpoint = 'https://cdn.judge.me/reviews/reviews_for_widget'\n        + '?shop_domain=' + encodeURIComponent(shopDomain)\n        + '&platform=shopify'\n        + '&product_id=' + encodeURIComponent(productId)\n        + '&page=1'\n\n      if (!judgeMeReviewRequestCache[endpoint]) {\n        judgeMeReviewRequestCache[endpoint] = fetchReviewData(endpoint, 0)\n      }\n\n      judgeMeReviewRequestCache[endpoint].then(function (reviewData) {\n        renderSummary(summary, reviewData)\n      })\n    })\n  }\n\n  function setupWebwinkelkeurRatingSummaries(scope) {\n    var root = scope || document\n    var summaries = Array.prototype.slice.call(root.querySelectorAll('[data-webwinkelkeur-rating-summary]'))\n    if (summaries.length === 0) return\n\n    var localeCode = getThemeConfig().localeCode || document.documentElement.lang || 'nl'\n\n    function numberText(value, options) {\n      return value.toLocaleString(localeCode, options)\n    }\n\n    function parseWidgetText(text) {\n      var matches = String(text || '').match(/\\d+(?:[.,]\\d+)?/g) || []\n      if (matches.length < 2) return null\n\n      var score = parseFloat(matches[0].replace(',', '.'))\n      var count = parseInt(matches[matches.length - 1].replace(/[.,\\s]/g, ''), 10)\n      if (!score || !count) return null\n\n      return {\n        score: numberText(score, { minimumFractionDigits: 1, maximumFractionDigits: 1 }),\n        count: numberText(count)\n      }\n    }\n\n    function readWidgetText(summary) {\n      var widget = summary.querySelector('valued-widget')\n      if (!widget) return ''\n\n      return widget.shadowRoot ? widget.shadowRoot.textContent : widget.textContent\n    }\n\n    function renderRatingLabel(label, template, rating) {\n      var text = replaceTokens(template, { SCORE: rating.score, COUNT: rating.count })\n      var scoreText = rating.score + '/10'\n      var scoreIndex = text.indexOf(scoreText)\n\n      if (scoreIndex === -1) {\n        label.textContent = text\n        return text\n      }\n\n      label.innerHTML = escapeHtml(text.slice(0, scoreIndex))\n        + '<span class=\"font-extrabold text-dpp-orange\" data-webwinkelkeur-rating-score>' + escapeHtml(scoreText) + '</span>'\n        + escapeHtml(text.slice(scoreIndex + scoreText.length))\n\n      return text\n    }\n\n    summaries.forEach(function (summary) {\n      if (summary.hasAttribute('data-webwinkelkeur-rating-ready')) return\n      summary.setAttribute('data-webwinkelkeur-rating-ready', 'true')\n\n      var label = summary.querySelector('[data-webwinkelkeur-rating-label]')\n      var template = summary.getAttribute('data-webwinkelkeur-template') || ''\n      if (!label || !template) return\n\n      var attempts = 0\n      var timer = window.setInterval(function () {\n        attempts += 1\n\n        var rating = parseWidgetText(readWidgetText(summary))\n        if (rating) {\n          var text = renderRatingLabel(label, template, rating)\n          summary.setAttribute('aria-label', text)\n          window.clearInterval(timer)\n        } else if (attempts >= 48) {\n          window.clearInterval(timer)\n        }\n      }, 250)\n    })\n  }\n\n  function setupHomepageBlogSliders() {\n    var sliders = Array.prototype.slice.call(document.querySelectorAll('[data-homepage-blog-slider]'))\n    if (sliders.length === 0) return\n\n    sliders.forEach(function (slider) {\n      var track = slider.querySelector('[data-homepage-blog-slider-track]')\n      var previousButton = slider.querySelector('[data-homepage-blog-slider-prev]')\n      var nextButton = slider.querySelector('[data-homepage-blog-slider-next]')\n      if (!track || !previousButton || !nextButton) return\n\n      function slideStep() {\n        var slide = track.querySelector('[data-homepage-blog-slide]')\n        if (!slide) return track.clientWidth\n\n        var styles = window.getComputedStyle(track)\n        var gap = parseFloat(styles.columnGap || styles.gap || 0)\n        return slide.getBoundingClientRect().width + gap\n      }\n\n      function updateControls() {\n        var maxScroll = Math.max(track.scrollWidth - track.clientWidth - 1, 0)\n        previousButton.disabled = track.scrollLeft <= 1\n        nextButton.disabled = track.scrollLeft >= maxScroll\n      }\n\n      previousButton.addEventListener('click', function () {\n        track.scrollBy({ left: slideStep() * -1, behavior: 'smooth' })\n      })\n\n      nextButton.addEventListener('click', function () {\n        track.scrollBy({ left: slideStep(), behavior: 'smooth' })\n      })\n\n      track.addEventListener('scroll', updateControls, { passive: true })\n      window.addEventListener('resize', updateControls)\n      updateControls()\n    })\n  }\n\n  function initializeCoreTheme() {\n    syncBodyScrollLocksWithOverlayState()\n    setupCartDrawer()\n    setupCartRecommendationSync()\n    setupGroupedByBundles()\n    setupPredictiveSearch()\n    setupIdentifierSearchForms()\n    setupDesktopMegaMenu()\n    setupMobileMenu()\n    setupMobileUspSlider()\n    setupCutoffMessages()\n    setupFooterPhoneAvailability()\n    setupServicePageAccordions()\n    setupProductFaqAccordions()\n    setupProductRecommendations()\n    setupProductCardReviewSummaries()\n    setupWebwinkelkeurRatingSummaries()\n    setupHomepageBlogSliders()\n    setupLocalizedInternalLinks()\n\n    document.addEventListener('touchstart', ensurePageScrollableWhenNoOverlayOpen, { passive: true })\n    document.addEventListener('wheel', ensurePageScrollableWhenNoOverlayOpen, { passive: true })\n  }\n\n  document.addEventListener('dpp:collection-variant-changed', function (event) {\n    setupCutoffMessages()\n    setupProductCardReviewSummaries(event.detail.card)\n    setupLocalizedInternalLinks(event.detail.card)\n  })\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', initializeCoreTheme)\n  } else {\n    initializeCoreTheme()\n  }\n\n  window.addEventListener('pageshow', function () {\n    syncBodyScrollLocksWithOverlayState()\n  })\n\n  document.addEventListener('visibilitychange', function () {\n    if (!document.hidden) ensurePageScrollableWhenNoOverlayOpen()\n  })\n})()\n"],
  "mappings": "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",
  "names": ["rows", "panel"]
}
