{
  "version": 3,
  "sources": ["/cdn/shop/t/1/assets/global.js?dkv=20260722-audit-fixes-3"],
  "sourcesContent": ["(() => {\n  const isRoot = window.location.pathname === \"/\";\n  const isPreview = /(?:^|[?&])preview_theme_id=/.test(window.location.search);\n  const isDesignMode = Boolean(window.Shopify?.designMode);\n\n  const redirectIfStaleRoot = () => {\n    const theme = window.Shopify?.theme;\n    const themeName = String(theme?.name || \"\");\n    const themeId = String(theme?.id || \"\");\n    const isStaleTheme =\n      /DrKalla Gold Visual Live 2026-06-11|DrKalla Live v7 0613/.test(themeName) ||\n      themeId === \"197908824404\" ||\n      themeId === \"197998510420\";\n\n    if (!isRoot || isPreview || isDesignMode || !isStaleTheme) return;\n\n    const keep = new URLSearchParams();\n    const current = new URLSearchParams(window.location.search);\n    [\"utm_source\", \"utm_medium\", \"utm_campaign\", \"utm_term\", \"utm_content\", \"gclid\", \"fbclid\"].forEach((key) => {\n      const value = current.get(key);\n      if (value) keep.set(key, value);\n    });\n\n    window.location.replace(`/pages/startseite${keep.toString() ? `?${keep}` : \"\"}`);\n  };\n\n  redirectIfStaleRoot();\n  window.setTimeout(redirectIfStaleRoot, 50);\n  window.setTimeout(redirectIfStaleRoot, 250);\n})();\n\n/* Barber category-image JS normalization removed 2026-06-16: the collection image is\n   now properly normalized at the source, so forcing scale(1.1)/height:auto via inline\n   !important styles is obsolete and was blocking the standard hover-zoom. */\n\nfunction getFocusableElements(container) {\n  return Array.from(\n    container.querySelectorAll(\n      \"summary, a[href], button:enabled, [tabindex]:not([tabindex^='-']), [draggable], area, input:not([type=hidden]):enabled, select:enabled, textarea:enabled, object, iframe\"\n    )\n  );\n}\n\nclass SectionId {\n  static #separator = '__';\n\n  // for a qualified section id (e.g. 'template--22224696705326__main'), return just the section id (e.g. 'template--22224696705326')\n  static parseId(qualifiedSectionId) {\n    return qualifiedSectionId.split(SectionId.#separator)[0];\n  }\n\n  // for a qualified section id (e.g. 'template--22224696705326__main'), return just the section name (e.g. 'main')\n  static parseSectionName(qualifiedSectionId) {\n    return qualifiedSectionId.split(SectionId.#separator)[1];\n  }\n\n  // for a section id (e.g. 'template--22224696705326') and a section name (e.g. 'recommended-products'), return a qualified section id (e.g. 'template--22224696705326__recommended-products')\n  static getIdForSection(sectionId, sectionName) {\n    return `${sectionId}${SectionId.#separator}${sectionName}`;\n  }\n}\n\nclass HTMLUpdateUtility {\n  /**\n   * Used to swap an HTML node with a new node.\n   * The new node is inserted as a previous sibling to the old node, the old node is hidden, and then the old node is removed.\n   *\n   * The function currently uses a double buffer approach, but this should be replaced by a view transition once it is more widely supported https://developer.mozilla.org/en-US/docs/Web/API/View_Transitions_API\n   */\n  static viewTransition(oldNode, newContent, preProcessCallbacks = [], postProcessCallbacks = []) {\n    preProcessCallbacks?.forEach((callback) => callback(newContent));\n\n    const newNodeWrapper = document.createElement('div');\n    HTMLUpdateUtility.setInnerHTML(newNodeWrapper, newContent.outerHTML);\n    const newNode = newNodeWrapper.firstChild;\n\n    // dedupe IDs\n    const uniqueKey = Date.now();\n    oldNode.querySelectorAll('[id], [form]').forEach((element) => {\n      element.id && (element.id = `${element.id}-${uniqueKey}`);\n      element.form && element.setAttribute('form', `${element.form.getAttribute('id')}-${uniqueKey}`);\n    });\n\n    oldNode.parentNode.insertBefore(newNode, oldNode);\n    oldNode.style.display = 'none';\n\n    postProcessCallbacks?.forEach((callback) => callback(newNode));\n\n    setTimeout(() => oldNode.remove(), 500);\n  }\n\n  // Sets inner HTML and reinjects the script tags to allow execution. By default, scripts are disabled when using element.innerHTML.\n  static setInnerHTML(element, html) {\n    element.innerHTML = html;\n    element.querySelectorAll('script').forEach((oldScriptTag) => {\n      const newScriptTag = document.createElement('script');\n      Array.from(oldScriptTag.attributes).forEach((attribute) => {\n        newScriptTag.setAttribute(attribute.name, attribute.value);\n      });\n      newScriptTag.appendChild(document.createTextNode(oldScriptTag.innerHTML));\n      oldScriptTag.parentNode.replaceChild(newScriptTag, oldScriptTag);\n    });\n  }\n}\n\ndocument.querySelectorAll('[id^=\"Details-\"] summary').forEach((summary) => {\n  summary.setAttribute('role', 'button');\n  summary.setAttribute('aria-expanded', summary.parentNode.hasAttribute('open'));\n\n  if (summary.nextElementSibling.getAttribute('id')) {\n    summary.setAttribute('aria-controls', summary.nextElementSibling.id);\n  }\n\n  summary.addEventListener('click', (event) => {\n    event.currentTarget.setAttribute('aria-expanded', !event.currentTarget.closest('details').hasAttribute('open'));\n  });\n\n  if (summary.closest('header-drawer, menu-drawer')) return;\n  summary.parentElement.addEventListener('keyup', onKeyUpEscape);\n});\n\nconst trapFocusHandlers = {};\n\nfunction trapFocus(container, elementToFocus = container) {\n  var elements = getFocusableElements(container);\n  var first = elements[0];\n  var last = elements[elements.length - 1];\n\n  removeTrapFocus();\n\n  trapFocusHandlers.focusin = (event) => {\n    if (event.target !== container && event.target !== last && event.target !== first) return;\n\n    document.addEventListener('keydown', trapFocusHandlers.keydown);\n  };\n\n  trapFocusHandlers.focusout = function () {\n    document.removeEventListener('keydown', trapFocusHandlers.keydown);\n  };\n\n  trapFocusHandlers.keydown = function (event) {\n    if (event.code.toUpperCase() !== 'TAB') return; // If not TAB key\n    // On the last focusable element and tab forward, focus the first element.\n    if (event.target === last && !event.shiftKey) {\n      event.preventDefault();\n      first.focus();\n    }\n\n    //  On the first focusable element and tab backward, focus the last element.\n    if ((event.target === container || event.target === first) && event.shiftKey) {\n      event.preventDefault();\n      last.focus();\n    }\n  };\n\n  document.addEventListener('focusout', trapFocusHandlers.focusout);\n  document.addEventListener('focusin', trapFocusHandlers.focusin);\n\n  elementToFocus.focus();\n\n  if (\n    elementToFocus.tagName === 'INPUT' &&\n    ['search', 'text', 'email', 'url'].includes(elementToFocus.type) &&\n    elementToFocus.value\n  ) {\n    elementToFocus.setSelectionRange(0, elementToFocus.value.length);\n  }\n}\n\n// Here run the querySelector to figure out if the browser supports :focus-visible or not and run code based on it.\ntry {\n  document.querySelector(':focus-visible');\n} catch (e) {\n  focusVisiblePolyfill();\n}\n\nfunction focusVisiblePolyfill() {\n  const navKeys = [\n    'ARROWUP',\n    'ARROWDOWN',\n    'ARROWLEFT',\n    'ARROWRIGHT',\n    'TAB',\n    'ENTER',\n    'SPACE',\n    'ESCAPE',\n    'HOME',\n    'END',\n    'PAGEUP',\n    'PAGEDOWN',\n  ];\n  let currentFocusedElement = null;\n  let mouseClick = null;\n\n  window.addEventListener('keydown', (event) => {\n    if (navKeys.includes(event.code.toUpperCase())) {\n      mouseClick = false;\n    }\n  });\n\n  window.addEventListener('mousedown', (event) => {\n    mouseClick = true;\n  });\n\n  window.addEventListener(\n    'focus',\n    () => {\n      if (currentFocusedElement) currentFocusedElement.classList.remove('focused');\n\n      if (mouseClick) return;\n\n      currentFocusedElement = document.activeElement;\n      currentFocusedElement.classList.add('focused');\n    },\n    true\n  );\n}\n\nfunction pauseAllMedia() {\n  document.querySelectorAll('.js-youtube').forEach((video) => {\n    video.contentWindow.postMessage('{\"event\":\"command\",\"func\":\"' + 'pauseVideo' + '\",\"args\":\"\"}', '*');\n  });\n  document.querySelectorAll('.js-vimeo').forEach((video) => {\n    video.contentWindow.postMessage('{\"method\":\"pause\"}', '*');\n  });\n  document.querySelectorAll('video').forEach((video) => video.pause());\n  document.querySelectorAll('product-model').forEach((model) => {\n    if (model.modelViewerUI) model.modelViewerUI.pause();\n  });\n}\n\nfunction removeTrapFocus(elementToFocus = null) {\n  document.removeEventListener('focusin', trapFocusHandlers.focusin);\n  document.removeEventListener('focusout', trapFocusHandlers.focusout);\n  document.removeEventListener('keydown', trapFocusHandlers.keydown);\n\n  if (elementToFocus) elementToFocus.focus();\n}\n\nfunction onKeyUpEscape(event) {\n  if (event.code.toUpperCase() !== 'ESCAPE') return;\n\n  const openDetailsElement = event.target.closest('details[open]');\n  if (!openDetailsElement) return;\n\n  const summaryElement = openDetailsElement.querySelector('summary');\n  openDetailsElement.removeAttribute('open');\n  summaryElement.setAttribute('aria-expanded', false);\n  summaryElement.focus();\n}\n\nclass QuantityInput extends HTMLElement {\n  constructor() {\n    super();\n    this.input = this.querySelector('input');\n    this.changeEvent = new Event('change', { bubbles: true });\n    this.input.addEventListener('change', this.onInputChange.bind(this));\n    this.querySelectorAll('button').forEach((button) =>\n      button.addEventListener('click', this.onButtonClick.bind(this))\n    );\n  }\n\n  quantityUpdateUnsubscriber = undefined;\n\n  connectedCallback() {\n    this.validateQtyRules();\n    this.quantityUpdateUnsubscriber = subscribe(PUB_SUB_EVENTS.quantityUpdate, this.validateQtyRules.bind(this));\n  }\n\n  disconnectedCallback() {\n    if (this.quantityUpdateUnsubscriber) {\n      this.quantityUpdateUnsubscriber();\n    }\n  }\n\n  onInputChange(event) {\n    this.validateQtyRules();\n  }\n\n  onButtonClick(event) {\n    event.preventDefault();\n    const previousValue = this.input.value;\n\n    if (event.currentTarget.name === 'plus') {\n      if (parseInt(this.input.dataset.min) > parseInt(this.input.step) && this.input.value == 0) {\n        this.input.value = this.input.dataset.min;\n      } else {\n        this.input.stepUp();\n      }\n    } else {\n      this.input.stepDown();\n    }\n\n    if (previousValue !== this.input.value) this.input.dispatchEvent(this.changeEvent);\n\n    if (this.input.dataset.min === previousValue && event.currentTarget.name === 'minus') {\n      this.input.value = parseInt(this.input.min);\n    }\n  }\n\n  validateQtyRules() {\n    const value = parseInt(this.input.value);\n    if (this.input.min) {\n      const buttonMinus = this.querySelector(\".quantity__button[name='minus']\");\n      buttonMinus.classList.toggle('disabled', parseInt(value) <= parseInt(this.input.min));\n    }\n    if (this.input.max) {\n      const max = parseInt(this.input.max);\n      const buttonPlus = this.querySelector(\".quantity__button[name='plus']\");\n      buttonPlus.classList.toggle('disabled', value >= max);\n    }\n  }\n}\n\ncustomElements.define('quantity-input', QuantityInput);\n\nfunction debounce(fn, wait) {\n  let t;\n  return (...args) => {\n    clearTimeout(t);\n    t = setTimeout(() => fn.apply(this, args), wait);\n  };\n}\n\n\nfunction throttle(fn, delay) {\n  let lastCall = 0;\n  return function (...args) {\n    const now = new Date().getTime();\n    if (now - lastCall < delay) {\n      return;\n    }\n    lastCall = now;\n    return fn(...args);\n  };\n}\n\nfunction fetchConfig(type = 'json') {\n  return {\n    method: 'POST',\n    headers: { 'Content-Type': 'application/json', Accept: `application/${type}` },\n  };\n}\n\n/*\n * Shopify Common JS\n *\n */\nif (typeof window.Shopify == 'undefined') {\n  window.Shopify = {};\n}\n\nShopify.bind = function (fn, scope) {\n  return function () {\n    return fn.apply(scope, arguments);\n  };\n};\n\nShopify.setSelectorByValue = function (selector, value) {\n  for (var i = 0, count = selector.options.length; i < count; i++) {\n    var option = selector.options[i];\n    if (value == option.value || value == option.innerHTML) {\n      selector.selectedIndex = i;\n      return i;\n    }\n  }\n};\n\nShopify.addListener = function (target, eventName, callback) {\n  target.addEventListener\n    ? target.addEventListener(eventName, callback, false)\n    : target.attachEvent('on' + eventName, callback);\n};\n\nShopify.postLink = function (path, options) {\n  options = options || {};\n  var method = options['method'] || 'post';\n  var params = options['parameters'] || {};\n\n  var form = document.createElement('form');\n  form.setAttribute('method', method);\n  form.setAttribute('action', path);\n\n  for (var key in params) {\n    var hiddenField = document.createElement('input');\n    hiddenField.setAttribute('type', 'hidden');\n    hiddenField.setAttribute('name', key);\n    hiddenField.setAttribute('value', params[key]);\n    form.appendChild(hiddenField);\n  }\n  document.body.appendChild(form);\n  form.submit();\n  document.body.removeChild(form);\n};\n\nShopify.CountryProvinceSelector = function (country_domid, province_domid, options) {\n  this.countryEl = document.getElementById(country_domid);\n  this.provinceEl = document.getElementById(province_domid);\n  this.provinceContainer = document.getElementById(options['hideElement'] || province_domid);\n\n  Shopify.addListener(this.countryEl, 'change', Shopify.bind(this.countryHandler, this));\n\n  this.initCountry();\n  this.initProvince();\n};\n\nShopify.CountryProvinceSelector.prototype = {\n  initCountry: function () {\n    var value = this.countryEl.getAttribute('data-default');\n    Shopify.setSelectorByValue(this.countryEl, value);\n    this.countryHandler();\n  },\n\n  initProvince: function () {\n    var value = this.provinceEl.getAttribute('data-default');\n    if (value && this.provinceEl.options.length > 0) {\n      Shopify.setSelectorByValue(this.provinceEl, value);\n    }\n  },\n\n  countryHandler: function (e) {\n    var opt = this.countryEl.options[this.countryEl.selectedIndex];\n    var raw = opt.getAttribute('data-provinces');\n    var provinces = JSON.parse(raw);\n\n    this.clearOptions(this.provinceEl);\n    if (provinces && provinces.length == 0) {\n      this.provinceContainer.style.display = 'none';\n    } else {\n      for (var i = 0; i < provinces.length; i++) {\n        var opt = document.createElement('option');\n        opt.value = provinces[i][0];\n        opt.innerHTML = provinces[i][1];\n        this.provinceEl.appendChild(opt);\n      }\n\n      this.provinceContainer.style.display = '';\n    }\n  },\n\n  clearOptions: function (selector) {\n    while (selector.firstChild) {\n      selector.removeChild(selector.firstChild);\n    }\n  },\n\n  setOptions: function (selector, values) {\n    for (var i = 0, count = values.length; i < values.length; i++) {\n      var opt = document.createElement('option');\n      opt.value = values[i];\n      opt.innerHTML = values[i];\n      selector.appendChild(opt);\n    }\n  },\n};\n\nclass MenuDrawer extends HTMLElement {\n  constructor() {\n    super();\n\n    this.mainDetailsToggle = this.querySelector('details');\n\n    this.addEventListener('keyup', this.onKeyUp.bind(this));\n    this.addEventListener('focusout', this.onFocusOut.bind(this));\n    this.bindEvents();\n  }\n\n  bindEvents() {\n    this.querySelectorAll('summary').forEach((summary) =>\n      summary.addEventListener('click', this.onSummaryClick.bind(this))\n    );\n    this.querySelectorAll(\n      'button:not(.localization-selector):not(.country-selector__close-button):not(.country-filter__reset-button)'\n    ).forEach((button) => button.addEventListener('click', this.onCloseButtonClick.bind(this)));\n  }\n\n  onKeyUp(event) {\n    if (event.code.toUpperCase() !== 'ESCAPE') return;\n\n    const openDetailsElement = event.target.closest('details[open]');\n    if (!openDetailsElement) return;\n\n    openDetailsElement === this.mainDetailsToggle\n      ? this.closeMenuDrawer(event, this.mainDetailsToggle.querySelector('summary'))\n      : this.closeSubmenu(openDetailsElement);\n  }\n\n  onSummaryClick(event) {\n    const summaryElement = event.currentTarget;\n    const detailsElement = summaryElement.parentNode;\n    const parentMenuElement = detailsElement.closest('.has-submenu');\n    const isOpen = detailsElement.hasAttribute('open');\n    const reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)');\n\n    const addTrapFocus = () => {\n      const focusContainer = this.tagName === 'HEADER-DRAWER' ? this.mainDetailsToggle : summaryElement.nextElementSibling;\n      trapFocus(focusContainer, detailsElement.querySelector('button'));\n      summaryElement.nextElementSibling.removeEventListener('transitionend', addTrapFocus);\n    };\n\n    if (detailsElement === this.mainDetailsToggle) {\n      if (isOpen) event.preventDefault();\n      isOpen ? this.closeMenuDrawer(event, summaryElement) : this.openMenuDrawer(summaryElement);\n\n      if (window.matchMedia('(max-width: 990px)').matches) {\n        document.documentElement.style.setProperty('--viewport-height', `${window.innerHeight}px`);\n      }\n    } else {\n      setTimeout(() => {\n        if (!detailsElement.open || !this.mainDetailsToggle.open) return;\n        detailsElement.classList.add('menu-opening');\n        summaryElement.setAttribute('aria-expanded', true);\n        parentMenuElement && parentMenuElement.classList.add('submenu-open');\n        !reducedMotion || reducedMotion.matches\n          ? addTrapFocus()\n          : summaryElement.nextElementSibling.addEventListener('transitionend', addTrapFocus);\n      }, 100);\n    }\n  }\n\n  openMenuDrawer(summaryElement) {\n    setTimeout(() => {\n      this.mainDetailsToggle.classList.add('menu-opening');\n    });\n    summaryElement.setAttribute('aria-expanded', true);\n    trapFocus(this.mainDetailsToggle, summaryElement);\n    document.body.classList.add(`overflow-hidden-${this.dataset.breakpoint}`);\n  }\n\n  closeMenuDrawer(event, elementToFocus = false) {\n    if (event === undefined) return;\n\n    this.mainDetailsToggle.classList.remove('menu-opening');\n    this.mainDetailsToggle.querySelectorAll('details').forEach((details) => {\n      details.removeAttribute('open');\n      details.classList.remove('menu-opening');\n      details.querySelector('summary')?.setAttribute('aria-expanded', 'false');\n    });\n    this.mainDetailsToggle.querySelectorAll('.submenu-open').forEach((submenu) => {\n      submenu.classList.remove('submenu-open');\n    });\n    document.body.classList.remove(`overflow-hidden-${this.dataset.breakpoint}`);\n    removeTrapFocus(elementToFocus);\n    this.closeAnimation(this.mainDetailsToggle);\n\n    if (event instanceof KeyboardEvent) elementToFocus?.setAttribute('aria-expanded', false);\n  }\n\n  onFocusOut() {\n    setTimeout(() => {\n      if (this.mainDetailsToggle.hasAttribute('open') && !this.mainDetailsToggle.contains(document.activeElement))\n        this.closeMenuDrawer();\n    });\n  }\n\n  onCloseButtonClick(event) {\n    const detailsElement = event.currentTarget.closest('details');\n    this.closeSubmenu(detailsElement);\n  }\n\n  closeSubmenu(detailsElement) {\n    const parentMenuElement = detailsElement.closest('.submenu-open');\n    parentMenuElement && parentMenuElement.classList.remove('submenu-open');\n    detailsElement.classList.remove('menu-opening');\n    detailsElement.querySelector('summary').setAttribute('aria-expanded', false);\n    removeTrapFocus(detailsElement.querySelector('summary'));\n    this.closeAnimation(detailsElement);\n  }\n\n  closeAnimation(detailsElement) {\n    let animationStart;\n\n    const handleAnimation = (time) => {\n      if (animationStart === undefined) {\n        animationStart = time;\n      }\n\n      const elapsedTime = time - animationStart;\n\n      if (elapsedTime < 400) {\n        window.requestAnimationFrame(handleAnimation);\n      } else {\n        detailsElement.removeAttribute('open');\n        if (detailsElement.closest('details[open]')) {\n          trapFocus(detailsElement.closest('details[open]'), detailsElement.querySelector('summary'));\n        }\n      }\n    };\n\n    window.requestAnimationFrame(handleAnimation);\n  }\n}\n\ncustomElements.define('menu-drawer', MenuDrawer);\n\nclass HeaderDrawer extends MenuDrawer {\n  constructor() {\n    super();\n  }\n\n  closeAnimation(detailsElement) {\n    // Header panels switch immediately; delayed closure can cancel a new opening.\n    detailsElement.removeAttribute('open');\n    const parentDetails = detailsElement.parentElement.closest('details[open]');\n    if (parentDetails) trapFocus(parentDetails, detailsElement.querySelector('summary'));\n  }\n\n  openMenuDrawer(summaryElement) {\n    this.header = this.header || document.querySelector('.section-header');\n    this.borderOffset = this.closest('.header-wrapper').classList.contains('header-wrapper--border-bottom') ? 1 : 0;\n    this.lockedScrollY = window.scrollY;\n    this.bodyStyles = {};\n    ['position', 'top', 'left', 'right', 'width'].forEach((property) => {\n      this.bodyStyles[property] = document.body.style[property];\n    });\n    Object.assign(document.body.style, {\n      position: 'fixed',\n      top: `${-this.lockedScrollY}px`,\n      left: '0',\n      right: '0',\n      width: '100%',\n    });\n    this.header.classList.add('menu-open');\n    this.updateDrawerBounds();\n\n    setTimeout(() => {\n      if (this.mainDetailsToggle.open) this.mainDetailsToggle.classList.add('menu-opening');\n    });\n\n    summaryElement.setAttribute('aria-expanded', true);\n    window.addEventListener('resize', this.onResize);\n    trapFocus(this.mainDetailsToggle, summaryElement);\n    document.body.classList.add(`overflow-hidden-${this.dataset.breakpoint}`);\n  }\n\n  closeMenuDrawer(event, elementToFocus) {\n    if (!event || !elementToFocus) return;\n    super.closeMenuDrawer(event, elementToFocus);\n    elementToFocus.setAttribute('aria-expanded', 'false');\n    this.header.classList.remove('menu-open');\n    window.removeEventListener('resize', this.onResize);\n    if (this.bodyStyles) {\n      Object.assign(document.body.style, this.bodyStyles);\n      this.bodyStyles = null;\n      window.scrollTo({ top: this.lockedScrollY, behavior: 'instant' });\n    }\n  }\n\n  updateDrawerBounds() {\n    this.drawerViewportWidth = window.innerWidth;\n    const top = Math.max(0, Math.round(this.header.getBoundingClientRect().bottom - this.borderOffset));\n    const height = Math.max(0, window.innerHeight - top);\n    this.style.setProperty('--dk-menu-top', `${top}px`);\n    this.style.setProperty('--dk-menu-height', `${height}px`);\n    document.documentElement.style.setProperty('--header-bottom-position', `${top}px`);\n  }\n\n  onResize = () => {\n    if (this.dataset.breakpoint === 'tablet' && window.innerWidth >= 990) {\n      this.closeMenuDrawer(new Event('resize'), this.mainDetailsToggle.querySelector('summary'));\n      return;\n    }\n    this.updateDrawerBounds();\n  };\n}\n\ncustomElements.define('header-drawer', HeaderDrawer);\n\nclass ModalDialog extends HTMLElement {\n  constructor() {\n    super();\n    this.querySelector('[id^=\"ModalClose-\"]').addEventListener('click', this.hide.bind(this, false));\n    this.addEventListener('keyup', (event) => {\n      if (event.code.toUpperCase() === 'ESCAPE') this.hide();\n    });\n    if (this.classList.contains('media-modal')) {\n      this.addEventListener('pointerup', (event) => {\n        if (event.pointerType === 'mouse' && !event.target.closest('deferred-media, product-model')) this.hide();\n      });\n    } else {\n      this.addEventListener('click', (event) => {\n        if (event.target === this) this.hide();\n      });\n    }\n  }\n\n  connectedCallback() {\n    if (this.moved) return;\n    this.moved = true;\n    this.dataset.section = this.closest('.shopify-section').id.replace('shopify-section-', '');\n    document.body.appendChild(this);\n  }\n\n  show(opener) {\n    this.openedBy = opener;\n    const popup = this.querySelector('.template-popup');\n    document.body.classList.add('overflow-hidden');\n    this.setAttribute('open', '');\n    if (popup) popup.loadContent();\n    trapFocus(this, this.querySelector('[role=\"dialog\"]'));\n    window.pauseAllMedia();\n  }\n\n  hide() {\n    document.body.classList.remove('overflow-hidden');\n    document.body.dispatchEvent(new CustomEvent('modalClosed'));\n    this.removeAttribute('open');\n    removeTrapFocus(this.openedBy);\n    window.pauseAllMedia();\n  }\n}\ncustomElements.define('modal-dialog', ModalDialog);\n\nclass BulkModal extends HTMLElement {\n  constructor() {\n    super();\n  }\n\n  connectedCallback() {\n    const handleIntersection = (entries, observer) => {\n      if (!entries[0].isIntersecting) return;\n      observer.unobserve(this);\n      if (this.innerHTML.trim() === '') {\n        const productUrl = this.dataset.url.split('?')[0];\n        fetch(`${productUrl}?section_id=bulk-quick-order-list`)\n          .then((response) => response.text())\n          .then((responseText) => {\n            const html = new DOMParser().parseFromString(responseText, 'text/html');\n            const sourceQty = html.querySelector('.quick-order-list-container').parentNode;\n            this.innerHTML = sourceQty.innerHTML;\n          })\n          .catch((e) => {\n            console.error(e);\n          });\n      }\n    };\n\n    new IntersectionObserver(handleIntersection.bind(this)).observe(\n      document.querySelector(`#QuickBulk-${this.dataset.productId}-${this.dataset.sectionId}`)\n    );\n  }\n}\n\ncustomElements.define('bulk-modal', BulkModal);\n\nclass ModalOpener extends HTMLElement {\n  constructor() {\n    super();\n\n    const button = this.querySelector('button');\n\n    if (!button) return;\n    button.addEventListener('click', () => {\n      const modal = document.querySelector(this.getAttribute('data-modal'));\n      if (modal) modal.show(button);\n    });\n  }\n}\ncustomElements.define('modal-opener', ModalOpener);\n\nclass DeferredMedia extends HTMLElement {\n  constructor() {\n    super();\n    const poster = this.querySelector('[id^=\"Deferred-Poster-\"]');\n    if (!poster) return;\n    poster.addEventListener('click', this.loadContent.bind(this));\n  }\n\n  loadContent(focus = true) {\n    window.pauseAllMedia();\n    if (!this.getAttribute('loaded')) {\n      const content = document.createElement('div');\n      content.appendChild(this.querySelector('template').content.firstElementChild.cloneNode(true));\n\n      this.setAttribute('loaded', true);\n      const deferredElement = this.appendChild(content.querySelector('video, model-viewer, iframe'));\n      if (focus) deferredElement.focus();\n      if (deferredElement.nodeName == 'VIDEO' && deferredElement.getAttribute('autoplay')) {\n        // force autoplay for safari\n        deferredElement.play();\n      }\n\n      // Workaround for safari iframe bug\n      const formerStyle = deferredElement.getAttribute('style');\n      deferredElement.setAttribute('style', 'display: block;');\n      window.setTimeout(() => {\n        deferredElement.setAttribute('style', formerStyle);\n      }, 0);\n    }\n  }\n}\n\ncustomElements.define('deferred-media', DeferredMedia);\n\nclass SliderComponent extends HTMLElement {\n  constructor() {\n    super();\n    this.slider = this.querySelector('[id^=\"Slider-\"]');\n    this.sliderItems = this.querySelectorAll('[id^=\"Slide-\"]');\n    this.enableSliderLooping = false;\n    this.currentPageElement = this.querySelector('.slider-counter--current');\n    this.pageTotalElement = this.querySelector('.slider-counter--total');\n    this.prevButton = this.querySelector('button[name=\"previous\"]');\n    this.nextButton = this.querySelector('button[name=\"next\"]');\n\n    if (!this.slider || !this.nextButton) return;\n\n    this.initPages();\n    const resizeObserver = new ResizeObserver((entries) => this.initPages());\n    resizeObserver.observe(this.slider);\n\n    this.slider.addEventListener('scroll', this.update.bind(this));\n    this.prevButton.addEventListener('click', this.onButtonClick.bind(this));\n    this.nextButton.addEventListener('click', this.onButtonClick.bind(this));\n  }\n\n  initPages() {\n    this.sliderItemsToShow = Array.from(this.sliderItems).filter((element) => element.clientWidth > 0);\n    if (this.sliderItemsToShow.length < 2) return;\n    this.sliderItemOffset = this.sliderItemsToShow[1].offsetLeft - this.sliderItemsToShow[0].offsetLeft;\n    this.slidesPerPage = Math.floor(\n      (this.slider.clientWidth - this.sliderItemsToShow[0].offsetLeft) / this.sliderItemOffset\n    );\n    this.totalPages = this.sliderItemsToShow.length - this.slidesPerPage + 1;\n    this.update();\n  }\n\n  resetPages() {\n    this.sliderItems = this.querySelectorAll('[id^=\"Slide-\"]');\n    this.initPages();\n  }\n\n  update() {\n    // Temporarily prevents unneeded updates resulting from variant changes\n    // This should be refactored as part of https://github.com/Shopify/dawn/issues/2057\n    if (!this.slider || !this.nextButton) return;\n\n    const previousPage = this.currentPage;\n    this.currentPage = Math.round(this.slider.scrollLeft / this.sliderItemOffset) + 1;\n\n    if (this.currentPageElement && this.pageTotalElement) {\n      this.currentPageElement.textContent = this.currentPage;\n      this.pageTotalElement.textContent = this.totalPages;\n    }\n\n    if (this.currentPage != previousPage) {\n      this.dispatchEvent(\n        new CustomEvent('slideChanged', {\n          detail: {\n            currentPage: this.currentPage,\n            currentElement: this.sliderItemsToShow[this.currentPage - 1],\n          },\n        })\n      );\n    }\n\n    if (this.enableSliderLooping) return;\n\n    if (this.isSlideVisible(this.sliderItemsToShow[0]) && this.slider.scrollLeft === 0) {\n      this.prevButton.setAttribute('disabled', 'disabled');\n    } else {\n      this.prevButton.removeAttribute('disabled');\n    }\n\n    if (this.isSlideVisible(this.sliderItemsToShow[this.sliderItemsToShow.length - 1])) {\n      this.nextButton.setAttribute('disabled', 'disabled');\n    } else {\n      this.nextButton.removeAttribute('disabled');\n    }\n  }\n\n  isSlideVisible(element, offset = 0) {\n    const lastVisibleSlide = this.slider.clientWidth + this.slider.scrollLeft - offset;\n    return element.offsetLeft + element.clientWidth <= lastVisibleSlide && element.offsetLeft >= this.slider.scrollLeft;\n  }\n\n  onButtonClick(event) {\n    event.preventDefault();\n    const step = event.currentTarget.dataset.step || 1;\n    this.slideScrollPosition =\n      event.currentTarget.name === 'next'\n        ? this.slider.scrollLeft + step * this.sliderItemOffset\n        : this.slider.scrollLeft - step * this.sliderItemOffset;\n    this.setSlidePosition(this.slideScrollPosition);\n  }\n\n  setSlidePosition(position) {\n    this.slider.scrollTo({\n      left: position,\n    });\n  }\n}\n\ncustomElements.define('slider-component', SliderComponent);\n\nclass SlideshowComponent extends SliderComponent {\n  constructor() {\n    super();\n    this.sliderControlWrapper = this.querySelector('.slider-buttons');\n    this.enableSliderLooping = true;\n\n    if (!this.sliderControlWrapper) return;\n\n    this.sliderFirstItemNode = this.slider.querySelector('.slideshow__slide');\n    if (this.sliderItemsToShow.length > 0) this.currentPage = 1;\n\n    this.announcementBarSlider = this.querySelector('.announcement-bar-slider');\n    this.reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)');\n    // Value below should match --duration-announcement-bar CSS value\n    this.announcerBarAnimationDelay = this.announcementBarSlider ? 250 : 0;\n\n    this.sliderControlLinksArray = Array.from(this.sliderControlWrapper.querySelectorAll('.slider-counter__link'));\n    this.sliderControlLinksArray.forEach((link) => link.addEventListener('click', this.linkToSlide.bind(this)));\n    this.slider.addEventListener('scroll', this.setSlideVisibility.bind(this));\n    this.setSlideVisibility();\n\n    if (this.announcementBarSlider) {\n      this.announcementBarArrowButtonWasClicked = false;\n\n      this.reducedMotion.addEventListener('change', () => {\n        if (this.slider.getAttribute('data-autoplay') === 'true') this.setAutoPlay();\n      });\n\n      [this.prevButton, this.nextButton].forEach((button) => {\n        button.addEventListener(\n          'click',\n          () => {\n            this.announcementBarArrowButtonWasClicked = true;\n          },\n          { once: true }\n        );\n      });\n    }\n\n    if (this.slider.getAttribute('data-autoplay') === 'true') this.setAutoPlay();\n  }\n\n  setAutoPlay() {\n    this.autoplaySpeed = this.slider.dataset.speed * 1000;\n    this.addEventListener('mouseover', this.focusInHandling.bind(this));\n    this.addEventListener('mouseleave', this.focusOutHandling.bind(this));\n    this.addEventListener('focusin', this.focusInHandling.bind(this));\n    this.addEventListener('focusout', this.focusOutHandling.bind(this));\n\n    if (this.querySelector('.slideshow__autoplay')) {\n      this.sliderAutoplayButton = this.querySelector('.slideshow__autoplay');\n      this.sliderAutoplayButton.addEventListener('click', this.autoPlayToggle.bind(this));\n      this.autoplayButtonIsSetToPlay = true;\n      this.startAutoPlayWhenReady();\n    } else {\n      this.startAutoPlayWhenReady();\n    }\n  }\n\n  startAutoPlayWhenReady() {\n    const start = () => {\n      if (this.reducedMotion.matches || this.announcementBarArrowButtonWasClicked) {\n        this.pause();\n        if (this.sliderAutoplayButton && this.autoplayButtonIsSetToPlay) {\n          this.togglePlayButtonState(true);\n          this.autoplayButtonIsSetToPlay = false;\n        }\n        return;\n      }\n      this.play();\n    };\n\n    if (this.announcementBarSlider || document.readyState === 'complete') {\n      start();\n      return;\n    }\n\n    window.addEventListener('load', () => window.setTimeout(start, 250), { once: true });\n  }\n\n  onButtonClick(event) {\n    super.onButtonClick(event);\n    this.wasClicked = true;\n\n    const isFirstSlide = this.currentPage === 1;\n    const isLastSlide = this.currentPage === this.sliderItemsToShow.length;\n\n    if (!isFirstSlide && !isLastSlide) {\n      this.applyAnimationToAnnouncementBar(event.currentTarget.name);\n      return;\n    }\n\n    if (isFirstSlide && event.currentTarget.name === 'previous') {\n      this.slideScrollPosition =\n        this.slider.scrollLeft + this.sliderFirstItemNode.clientWidth * this.sliderItemsToShow.length;\n    } else if (isLastSlide && event.currentTarget.name === 'next') {\n      this.slideScrollPosition = 0;\n    }\n\n    this.setSlidePosition(this.slideScrollPosition);\n\n    this.applyAnimationToAnnouncementBar(event.currentTarget.name);\n  }\n\n  setSlidePosition(position) {\n    if (this.setPositionTimeout) clearTimeout(this.setPositionTimeout);\n    this.setPositionTimeout = setTimeout(() => {\n      this.slider.scrollTo({\n        left: position,\n      });\n    }, this.announcerBarAnimationDelay);\n  }\n\n  update() {\n    super.update();\n    this.sliderControlButtons = this.querySelectorAll('.slider-counter__link');\n    this.prevButton.removeAttribute('disabled');\n\n    if (!this.sliderControlButtons.length) return;\n\n    this.sliderControlButtons.forEach((link) => {\n      link.classList.remove('slider-counter__link--active');\n      link.removeAttribute('aria-current');\n    });\n    this.sliderControlButtons[this.currentPage - 1].classList.add('slider-counter__link--active');\n    this.sliderControlButtons[this.currentPage - 1].setAttribute('aria-current', true);\n  }\n\n  autoPlayToggle() {\n    this.togglePlayButtonState(this.autoplayButtonIsSetToPlay);\n    this.autoplayButtonIsSetToPlay ? this.pause() : this.play();\n    this.autoplayButtonIsSetToPlay = !this.autoplayButtonIsSetToPlay;\n  }\n\n  focusOutHandling(event) {\n    if (this.sliderAutoplayButton) {\n      const focusedOnAutoplayButton =\n        event.target === this.sliderAutoplayButton || this.sliderAutoplayButton.contains(event.target);\n      if (!this.autoplayButtonIsSetToPlay || focusedOnAutoplayButton) return;\n      this.play();\n    } else if (!this.reducedMotion.matches && !this.announcementBarArrowButtonWasClicked) {\n      this.play();\n    }\n  }\n\n  focusInHandling(event) {\n    if (this.sliderAutoplayButton) {\n      const focusedOnAutoplayButton =\n        event.target === this.sliderAutoplayButton || this.sliderAutoplayButton.contains(event.target);\n      if (focusedOnAutoplayButton && this.autoplayButtonIsSetToPlay) {\n        this.play();\n      } else if (this.autoplayButtonIsSetToPlay) {\n        this.pause();\n      }\n    } else if (this.announcementBarSlider.contains(event.target)) {\n      this.pause();\n    }\n  }\n\n  play() {\n    this.slider.setAttribute('aria-live', 'off');\n    clearInterval(this.autoplay);\n    this.autoplay = setInterval(this.autoRotateSlides.bind(this), this.autoplaySpeed);\n  }\n\n  pause() {\n    this.slider.setAttribute('aria-live', 'polite');\n    clearInterval(this.autoplay);\n  }\n\n  togglePlayButtonState(pauseAutoplay) {\n    if (pauseAutoplay) {\n      this.sliderAutoplayButton.classList.add('slideshow__autoplay--paused');\n      this.sliderAutoplayButton.setAttribute('aria-label', window.accessibilityStrings.playSlideshow);\n    } else {\n      this.sliderAutoplayButton.classList.remove('slideshow__autoplay--paused');\n      this.sliderAutoplayButton.setAttribute('aria-label', window.accessibilityStrings.pauseSlideshow);\n    }\n  }\n\n  autoRotateSlides() {\n    const slideScrollPosition =\n      this.currentPage === this.sliderItems.length ? 0 : this.slider.scrollLeft + this.sliderItemOffset;\n\n    this.setSlidePosition(slideScrollPosition);\n    this.applyAnimationToAnnouncementBar();\n  }\n\n  setSlideVisibility(event) {\n    this.sliderItemsToShow.forEach((item, index) => {\n      const linkElements = item.querySelectorAll('a');\n      if (index === this.currentPage - 1) {\n        if (linkElements.length)\n          linkElements.forEach((button) => {\n            button.removeAttribute('tabindex');\n          });\n        item.setAttribute('aria-hidden', 'false');\n        item.removeAttribute('tabindex');\n      } else {\n        if (linkElements.length)\n          linkElements.forEach((button) => {\n            button.setAttribute('tabindex', '-1');\n          });\n        item.setAttribute('aria-hidden', 'true');\n        item.setAttribute('tabindex', '-1');\n      }\n    });\n    this.wasClicked = false;\n  }\n\n  applyAnimationToAnnouncementBar(button = 'next') {\n    if (!this.announcementBarSlider) return;\n\n    const itemsCount = this.sliderItems.length;\n    const increment = button === 'next' ? 1 : -1;\n\n    const currentIndex = this.currentPage - 1;\n    let nextIndex = (currentIndex + increment) % itemsCount;\n    nextIndex = nextIndex === -1 ? itemsCount - 1 : nextIndex;\n\n    const nextSlide = this.sliderItems[nextIndex];\n    const currentSlide = this.sliderItems[currentIndex];\n\n    const animationClassIn = 'announcement-bar-slider--fade-in';\n    const animationClassOut = 'announcement-bar-slider--fade-out';\n\n    const isFirstSlide = currentIndex === 0;\n    const isLastSlide = currentIndex === itemsCount - 1;\n\n    const shouldMoveNext = (button === 'next' && !isLastSlide) || (button === 'previous' && isFirstSlide);\n    const direction = shouldMoveNext ? 'next' : 'previous';\n\n    currentSlide.classList.add(`${animationClassOut}-${direction}`);\n    nextSlide.classList.add(`${animationClassIn}-${direction}`);\n\n    setTimeout(() => {\n      currentSlide.classList.remove(`${animationClassOut}-${direction}`);\n      nextSlide.classList.remove(`${animationClassIn}-${direction}`);\n    }, this.announcerBarAnimationDelay * 2);\n  }\n\n  linkToSlide(event) {\n    event.preventDefault();\n    const slideScrollPosition =\n      this.slider.scrollLeft +\n      this.sliderFirstItemNode.clientWidth *\n        (this.sliderControlLinksArray.indexOf(event.currentTarget) + 1 - this.currentPage);\n    this.slider.scrollTo({\n      left: slideScrollPosition,\n    });\n  }\n}\n\ncustomElements.define('slideshow-component', SlideshowComponent);\n\nfunction drkallaFitAboutVideoPoster() {\n  document.querySelectorAll('.dk-about-page__media .deferred-media__poster img').forEach((image) => {\n    image.style.width = '100%';\n    image.style.height = '100%';\n    image.style.objectFit = 'contain';\n    image.style.objectPosition = 'center';\n  });\n}\n\nif (document.readyState === 'loading') {\n  document.addEventListener('DOMContentLoaded', drkallaFitAboutVideoPoster, { once: true });\n} else {\n  drkallaFitAboutVideoPoster();\n}\n\nwindow.addEventListener('pageshow', drkallaFitAboutVideoPoster);\nwindow.addEventListener('resize', drkallaFitAboutVideoPoster, { passive: true });\n\nfunction drkallaEnhanceProfiAccessPage() {\n  if (!['/pages/als-friseur-registrieren', '/pages/profi'].includes(window.location.pathname)) return;\n\n  const root = document.querySelector('#profi-anfrage.dk-profi-form');\n  if (!root || root.dataset.dkProfiGlobalBound === 'true') return;\n  root.dataset.dkProfiGlobalBound = 'true';\n\n  const form = root.querySelector('[data-profi-application-form], .dk-profi-form__form');\n  const panel = root.querySelector('.dk-profi-form__panel');\n  const insertAfter = root.querySelector('[data-profi-status=\"error\"]') || root.querySelector('[data-profi-status=\"success\"]') || root.querySelector('.dk-profi-form__header');\n\n  if (!panel || !form || !insertAfter) return;\n\n  injectProfiAccessStyles();\n\n  function ensureCard(type) {\n    const selector = type === 'active' ? '[data-profi-active-card]' : '[data-profi-pending-card]';\n    const existing = root.querySelector(selector);\n    if (existing) return existing;\n\n    const card = document.createElement('div');\n    card.hidden = true;\n    card.dataset[type === 'active' ? 'profiActiveCard' : 'profiPendingCard'] = '';\n    card.className = type === 'active' ? 'dk-profi-form__active' : 'dk-profi-form__pending';\n\n    if (type === 'active') {\n      card.innerHTML = [\n        '<p class=\"dk-profi-form__active-kicker\">Profi-Preise aktiv</p>',\n        '<h3>Du bist bereits als Profi angemeldet.</h3>',\n        '<p>Dein Kundenkonto ist freigeschaltet. Du brauchst keine neue Anfrage einzureichen und kannst direkt mit deinen Profi-Konditionen weiter einkaufen.</p>',\n        '<div class=\"dk-profi-form__active-actions\">',\n        '<a class=\"dk-profi-form__active-button dk-profi-form__active-button--primary\" href=\"/\">Zum Shop</a>',\n        '<a class=\"dk-profi-form__active-button\" href=\"/pages/konto\">Meine Bestellungen</a>',\n        '<a class=\"dk-profi-form__active-button\" href=\"/account/logout\">Ausloggen</a>',\n        '</div>',\n      ].join('');\n    } else {\n      card.innerHTML = [\n        '<p class=\"dk-profi-form__pending-kicker\">Kundenkonto erkannt</p>',\n        '<h3>Du bist eingeloggt, aber noch nicht als Profi freigeschaltet.</h3>',\n        '<p>Reiche die Anfrage mit Nachweis ein. Sobald wir sie gepr\u00FCft haben, werden die Profi-Konditionen f\u00FCr dieses Kundenkonto aktiv.</p>',\n      ].join('');\n    }\n\n    insertAfter.insertAdjacentElement('afterend', card);\n    return card;\n  }\n\n  function showActive() {\n    const activeCard = ensureCard('active');\n    const pendingCard = root.querySelector('[data-profi-pending-card]');\n\n    activeCard.hidden = false;\n    activeCard.classList.add('is-visible');\n    if (pendingCard) {\n      pendingCard.hidden = true;\n      pendingCard.classList.remove('is-visible');\n    }\n\n    form.hidden = true;\n    form.setAttribute('aria-hidden', 'true');\n  }\n\n  function showPending() {\n    const pendingCard = ensureCard('pending');\n    const activeCard = root.querySelector('[data-profi-active-card]');\n\n    pendingCard.hidden = false;\n    pendingCard.classList.add('is-visible');\n    if (activeCard) {\n      activeCard.hidden = true;\n      activeCard.classList.remove('is-visible');\n    }\n\n    form.hidden = false;\n    form.removeAttribute('aria-hidden');\n  }\n\n  fetch('/apps/drkalla-profi/status?context=profi-page-global', {\n    credentials: 'include',\n    headers: { Accept: 'application/json' },\n    cache: 'no-store',\n  })\n    .then((response) => {\n      if (!response.ok) return null;\n      return response.json();\n    })\n    .then((status) => {\n      if (!status || !status.authenticated) return;\n      if (status.profi) {\n        showActive();\n      } else {\n        showPending();\n      }\n    })\n    .catch(() => {});\n}\n\nfunction injectProfiAccessStyles() {\n  if (document.getElementById('dk-profi-access-global-styles')) return;\n\n  const style = document.createElement('style');\n  style.id = 'dk-profi-access-global-styles';\n  style.textContent = `\n    .dk-profi-form__active,\n    .dk-profi-form__pending {\n      display: none;\n      margin-bottom: clamp(1.8rem, 2.4vw, 2.8rem);\n      border-radius: 1.2rem;\n      padding: clamp(1.8rem, 3vw, 3rem);\n    }\n\n    .dk-profi-form__active.is-visible,\n    .dk-profi-form__pending.is-visible {\n      display: grid;\n      gap: 1.2rem;\n    }\n\n    .dk-profi-form__active {\n      position: relative;\n      overflow: hidden;\n      border: 0.1rem solid rgba(211, 189, 136, 0.42);\n      background:\n        radial-gradient(circle at 12% 0%, rgba(211, 189, 136, 0.22), transparent 24rem),\n        linear-gradient(135deg, #0d0d0d 0%, #1e1a13 62%, #443922 100%);\n      color: #f8f6f1;\n      box-shadow: 0 1.8rem 4.8rem rgba(32, 27, 18, 0.2);\n    }\n\n    .dk-profi-form__pending {\n      border: 0.1rem solid rgba(168, 145, 98, 0.24);\n      background: #fff8ea;\n      color: #3a3328;\n    }\n\n    .dk-profi-form__active-kicker,\n    .dk-profi-form__pending-kicker {\n      margin: 0;\n      color: #d3bd88;\n      font-size: 1.12rem;\n      font-weight: 900;\n      letter-spacing: 0.12em;\n      line-height: 1.2;\n      text-transform: uppercase;\n    }\n\n    .dk-profi-form__pending-kicker {\n      color: #7a632e;\n    }\n\n    .dk-profi-form__active h3,\n    .dk-profi-form__pending h3 {\n      margin: 0;\n      font-family: var(--font-heading-family);\n      font-size: clamp(2.4rem, 3vw, 3.8rem);\n      line-height: 1.06;\n      letter-spacing: 0;\n    }\n\n    .dk-profi-form__active h3 {\n      color: #ffffff;\n    }\n\n    .dk-profi-form__pending h3 {\n      color: #0b0b0b;\n    }\n\n    .dk-profi-form__active p,\n    .dk-profi-form__pending p {\n      max-width: 76rem;\n      margin: 0;\n      font-size: 1.46rem;\n      line-height: 1.58;\n    }\n\n    .dk-profi-form__active p {\n      color: rgba(248, 246, 241, 0.78);\n    }\n\n    .dk-profi-form__pending p {\n      color: #5c5346;\n    }\n\n    .dk-profi-form__active-actions {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 1rem;\n      margin-top: 0.4rem;\n    }\n\n    .dk-profi-form__active-button {\n      display: inline-flex;\n      min-height: 4.8rem;\n      align-items: center;\n      justify-content: center;\n      border: 0.1rem solid rgba(211, 189, 136, 0.42);\n      border-radius: 999rem;\n      color: #ffffff;\n      font-size: 1.36rem;\n      font-weight: 900;\n      line-height: 1.1;\n      padding: 1.2rem 1.8rem;\n      text-align: center;\n      text-decoration: none;\n    }\n\n    .dk-profi-form__active-button--primary {\n      border-color: #d3bd88;\n      background: linear-gradient(180deg, #dfcb96 0%, #c5ab6f 100%);\n      color: #0b0b0b;\n    }\n\n    .dk-profi-form__form[hidden],\n    .dk-profi-form__active[hidden],\n    .dk-profi-form__pending[hidden] {\n      display: none !important;\n    }\n\n    @media screen and (max-width: 749px) {\n      .dk-profi-form__active-actions {\n        display: grid;\n      }\n\n      .dk-profi-form__active-button {\n        width: 100%;\n      }\n    }\n  `;\n  document.head.appendChild(style);\n}\n\nif (document.readyState === 'loading') {\n  document.addEventListener('DOMContentLoaded', drkallaEnhanceProfiAccessPage, { once: true });\n} else {\n  drkallaEnhanceProfiAccessPage();\n}\n\nwindow.addEventListener('pageshow', drkallaEnhanceProfiAccessPage);\n\nclass VariantSelects extends HTMLElement {\n  constructor() {\n    super();\n  }\n\n  connectedCallback() {\n    this.addEventListener('change', (event) => {\n      const target = this.getInputForEventTarget(event.target);\n      this.updateSelectionMetadata(event);\n\n      publish(PUB_SUB_EVENTS.optionValueSelectionChange, {\n        data: {\n          event,\n          target,\n          selectedOptionValues: this.selectedOptionValues,\n        },\n      });\n    });\n  }\n\n  updateSelectionMetadata({ target }) {\n    const { value, tagName } = target;\n\n    if (tagName === 'SELECT' && target.selectedOptions.length) {\n      Array.from(target.options)\n        .find((option) => option.getAttribute('selected'))\n        .removeAttribute('selected');\n      target.selectedOptions[0].setAttribute('selected', 'selected');\n\n      const swatchValue = target.selectedOptions[0].dataset.optionSwatchValue;\n      const selectedDropdownSwatchValue = target\n        .closest('.product-form__input')\n        .querySelector('[data-selected-value] > .swatch');\n      if (!selectedDropdownSwatchValue) return;\n      if (swatchValue) {\n        selectedDropdownSwatchValue.style.setProperty('--swatch--background', swatchValue);\n        selectedDropdownSwatchValue.classList.remove('swatch--unavailable');\n      } else {\n        selectedDropdownSwatchValue.style.setProperty('--swatch--background', 'unset');\n        selectedDropdownSwatchValue.classList.add('swatch--unavailable');\n      }\n\n      selectedDropdownSwatchValue.style.setProperty(\n        '--swatch-focal-point',\n        target.selectedOptions[0].dataset.optionSwatchFocalPoint || 'unset'\n      );\n    } else if (tagName === 'INPUT' && target.type === 'radio') {\n      const selectedSwatchValue = target.closest(`.product-form__input`).querySelector('[data-selected-value]');\n      if (selectedSwatchValue) selectedSwatchValue.innerHTML = value;\n    }\n  }\n\n  getInputForEventTarget(target) {\n    return target.tagName === 'SELECT' ? target.selectedOptions[0] : target;\n  }\n\n  get selectedOptionValues() {\n    return Array.from(this.querySelectorAll('select option[selected], fieldset input:checked')).map(\n      ({ dataset }) => dataset.optionValueId\n    );\n  }\n}\n\ncustomElements.define('variant-selects', VariantSelects);\n\nclass ProductRecommendations extends HTMLElement {\n  observer = undefined;\n\n  constructor() {\n    super();\n  }\n\n  connectedCallback() {\n    this.initializeRecommendations(this.dataset.productId);\n  }\n\n  initializeRecommendations(productId) {\n    this.observer?.unobserve(this);\n    this.observer = new IntersectionObserver(\n      (entries, observer) => {\n        if (!entries[0].isIntersecting) return;\n        observer.unobserve(this);\n        this.loadRecommendations(productId);\n      },\n      { rootMargin: '0px 0px 400px 0px' }\n    );\n    this.observer.observe(this);\n  }\n\n  loadRecommendations(productId) {\n    fetch(`${this.dataset.url}&product_id=${productId}&section_id=${this.dataset.sectionId}`)\n      .then((response) => response.text())\n      .then((text) => {\n        const html = document.createElement('div');\n        html.innerHTML = text;\n        const recommendations = html.querySelector('product-recommendations');\n\n        if (recommendations?.innerHTML.trim().length) {\n          this.innerHTML = recommendations.innerHTML;\n        }\n\n        if (!this.querySelector('slideshow-component') && this.classList.contains('complementary-products')) {\n          this.remove();\n        }\n\n        if (html.querySelector('.grid__item')) {\n          this.classList.add('product-recommendations--loaded');\n        }\n      })\n      .catch((e) => {\n        console.error(e);\n      });\n  }\n}\n\ncustomElements.define('product-recommendations', ProductRecommendations);\n\nclass AccountIcon extends HTMLElement {\n  constructor() {\n    super();\n\n    this.icon = this.querySelector('.icon');\n  }\n\n  connectedCallback() {\n    document.addEventListener('storefront:signincompleted', this.handleStorefrontSignInCompleted.bind(this));\n  }\n\n  handleStorefrontSignInCompleted(event) {\n    if (event?.detail?.avatar) {\n      this.icon?.replaceWith(event.detail.avatar.cloneNode());\n    }\n  }\n}\n\ncustomElements.define('account-icon', AccountIcon);\n\nclass BulkAdd extends HTMLElement {\n  static ASYNC_REQUEST_DELAY = 250;\n\n  constructor() {\n    super();\n    this.queue = [];\n    this.setRequestStarted(false);\n    this.ids = [];\n  }\n\n  startQueue(id, quantity) {\n    this.queue.push({ id, quantity });\n\n    const interval = setInterval(() => {\n      if (this.queue.length > 0) {\n        if (!this.requestStarted) {\n          this.sendRequest(this.queue);\n        }\n      } else {\n        clearInterval(interval);\n      }\n    }, BulkAdd.ASYNC_REQUEST_DELAY);\n  }\n\n  sendRequest(queue) {\n    this.setRequestStarted(true);\n    const items = {};\n\n    queue.forEach((queueItem) => {\n      items[parseInt(queueItem.id)] = queueItem.quantity;\n    });\n    this.queue = this.queue.filter((queueElement) => !queue.includes(queueElement));\n\n    this.updateMultipleQty(items);\n  }\n\n  setRequestStarted(requestStarted) {\n    this._requestStarted = requestStarted;\n  }\n\n  get requestStarted() {\n    return this._requestStarted;\n  }\n\n  resetQuantityInput(id) {\n    const input = this.querySelector(`#Quantity-${id}`);\n    input.value = input.getAttribute('value');\n    this.isEnterPressed = false;\n  }\n\n  setValidity(event, index, message) {\n    event.target.setCustomValidity(message);\n    event.target.reportValidity();\n    this.resetQuantityInput(index);\n    event.target.select();\n  }\n\n  validateQuantity(event) {\n    const inputValue = parseInt(event.target.value);\n    const index = event.target.dataset.index;\n\n    if (inputValue < event.target.dataset.min) {\n      this.setValidity(event, index, window.quickOrderListStrings.min_error.replace('[min]', event.target.dataset.min));\n    } else if (inputValue > parseInt(event.target.max)) {\n      this.setValidity(event, index, window.quickOrderListStrings.max_error.replace('[max]', event.target.max));\n    } else if (inputValue % parseInt(event.target.step) != 0) {\n      this.setValidity(event, index, window.quickOrderListStrings.step_error.replace('[step]', event.target.step));\n    } else {\n      event.target.setCustomValidity('');\n      event.target.reportValidity();\n      event.target.setAttribute('value', inputValue);\n      this.startQueue(index, inputValue);\n    }\n  }\n\n  getSectionInnerHTML(html, selector) {\n    return new DOMParser().parseFromString(html, 'text/html').querySelector(selector).innerHTML;\n  }\n}\n\nif (!customElements.get('bulk-add')) {\n  customElements.define('bulk-add', BulkAdd);\n}\n\nclass CartPerformance {\n  static #metric_prefix = \"cart-performance\"\n\n  static createStartingMarker(benchmarkName) {\n    const metricName = `${CartPerformance.#metric_prefix}:${benchmarkName}`\n    return performance.mark(`${metricName}:start`);\n  }\n\n  static measureFromEvent(benchmarkName, event) {\n    const metricName = `${CartPerformance.#metric_prefix}:${benchmarkName}`\n    const startMarker = performance.mark(`${metricName}:start`, {\n      startTime: event.timeStamp\n    });\n\n    const endMarker = performance.mark(`${metricName}:end`);\n\n    performance.measure(\n      metricName,\n      `${metricName}:start`,\n      `${metricName}:end`\n    );\n  }\n\n  static measureFromMarker(benchmarkName, startMarker) {\n    const metricName = `${CartPerformance.#metric_prefix}:${benchmarkName}`\n    const endMarker = performance.mark(`${metricName}:end`);\n\n    performance.measure(\n      metricName,\n      startMarker.name,\n      `${metricName}:end`\n    );\n  }\n\n  static measure(benchmarkName, callback) {\n    const metricName = `${CartPerformance.#metric_prefix}:${benchmarkName}`\n    const startMarker = performance.mark(`${metricName}:start`);\n\n    callback();\n\n    const endMarker = performance.mark(`${metricName}:end`);\n\n    performance.measure(\n      metricName,\n      `${metricName}:start`,\n      `${metricName}:end`\n    );\n  }\n}\n\nfunction drkallaEnsureAccountProfileCard() {\n  if (window.location.pathname !== '/pages/konto') return;\n\n  const root = document.querySelector('[data-dk-account-orders]');\n  if (!root || root.dataset.dkAccountProfileGlobalBound === 'true') return;\n  root.dataset.dkAccountProfileGlobalBound = 'true';\n\n  const endpoint = root.dataset.accountEndpoint || '/apps/drkalla-profi/account-data';\n  const body = root.querySelector('.dk-account-orders__body');\n  const list = root.querySelector('[data-account-orders-list]');\n  if (!body || !list) return;\n\n  let style = document.getElementById('dk-account-profile-global-style');\n  if (!style) {\n    style = document.createElement('style');\n    style.id = 'dk-account-profile-global-style';\n    style.textContent = `\n      .dk-account-orders__profile-card{display:grid;gap:1.4rem;overflow:hidden;border:.1rem solid rgba(168,145,98,.2);border-radius:.8rem;background:radial-gradient(circle at 100% 0%,rgba(231,220,194,.62),transparent 20rem),linear-gradient(135deg,#fff 0%,#fbfaf7 100%);padding:clamp(1.8rem,3vw,2.8rem);box-shadow:0 1.6rem 4rem rgba(54,44,23,.06)}\n      .dk-account-orders__profile-head{display:flex;flex-wrap:wrap;gap:1rem;align-items:flex-start;justify-content:space-between}\n      .dk-account-orders__profile-head h3{margin:0;color:#151412;font-size:clamp(2rem,2.4vw,2.8rem);line-height:1.06;overflow-wrap:break-word;word-break:normal}\n      .dk-account-orders__profile-head p{max-width:58rem;margin:.5rem 0 0;color:#6c6254;font-size:1.35rem;line-height:1.5}\n      .dk-account-orders__profile-status{display:inline-flex;align-items:center;min-height:3.2rem;border:.1rem solid rgba(168,145,98,.35);border-radius:999rem;background:#201d18;color:#fffaf0;font-size:1.12rem;font-weight:950;letter-spacing:.04em;line-height:1.15;padding:.7rem 1rem;text-transform:uppercase}\n      .dk-account-orders__profile-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem}\n      .dk-account-orders__profile-item{min-width:0;border:.1rem solid rgba(168,145,98,.14);border-radius:.8rem;background:rgba(255,255,255,.72);padding:1.1rem 1.2rem}\n      .dk-account-orders__profile-item span{display:block;color:#806324;font-size:1.02rem;font-weight:950;letter-spacing:.08em;line-height:1.2;text-transform:uppercase}\n      .dk-account-orders__profile-item strong{display:block;margin-top:.4rem;color:#151412;font-size:1.34rem;line-height:1.35;overflow-wrap:break-word;word-break:normal}\n      @media screen and (max-width:640px){.dk-account-orders__profile-grid{grid-template-columns:1fr}}\n    `;\n    document.head.appendChild(style);\n  }\n\n  const ensureCard = () => {\n    let profile = root.querySelector('[data-account-profile]');\n    if (profile) return profile;\n\n    profile = document.createElement('section');\n    profile.className = 'dk-account-orders__profile-card';\n    profile.setAttribute('data-account-profile', '');\n    profile.setAttribute('aria-live', 'polite');\n    profile.setAttribute('aria-atomic', 'true');\n    profile.hidden = true;\n    list.insertAdjacentElement('beforebegin', profile);\n    return profile;\n  };\n\n  const escapeHtml = (value) => String(value ?? '').replace(/[&<>\"']/g, (char) => ({\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#39;',\n  }[char]));\n\n  const formatDate = (value) => {\n    if (!value) return 'Nicht hinterlegt';\n    try {\n      return new Intl.DateTimeFormat('de-DE', {\n        day: '2-digit',\n        month: 'long',\n        year: 'numeric',\n      }).format(new Date(value));\n    } catch {\n      return value;\n    }\n  };\n\n  fetch(`${endpoint}?dk_profile=${Date.now()}`, {\n    credentials: 'include',\n    headers: { Accept: 'application/json' },\n    cache: 'no-store',\n  })\n    .then((response) => {\n      if (!response.ok) return null;\n      return response.json();\n    })\n    .then((data) => {\n      if (!data || !data.authenticated || !data.customer) return;\n      const customer = data.customer;\n      const isProfi = Boolean(customer.isProfi);\n      const profile = ensureCard();\n      profile.hidden = false;\n      profile.innerHTML = `\n        <div class=\"dk-account-orders__profile-head\">\n          <div>\n            <p class=\"dk-account-orders__kicker\">Profil</p>\n            <h3>${escapeHtml(customer.displayName || 'Mein Profil')}</h3>\n            <p>${isProfi\n              ? 'Dein Profi-Status ist aktiv. Einkauf, Bestellungen und Logout bleiben hier im Dr.Kalla Shop.'\n              : 'Dein Kundenkonto ist verbunden. Hier siehst du die wichtigsten Profildaten und deine Bestellungen.'}</p>\n          </div>\n          <span class=\"dk-account-orders__profile-status\">${isProfi ? 'Profi-Preise aktiv' : 'Kundenkonto aktiv'}</span>\n        </div>\n        <div class=\"dk-account-orders__profile-grid\">\n          <div class=\"dk-account-orders__profile-item\"><span>E-Mail</span><strong>${escapeHtml(customer.email || 'Nicht hinterlegt')}</strong></div>\n          <div class=\"dk-account-orders__profile-item\"><span>Telefon</span><strong>${escapeHtml(customer.phone || 'Nicht hinterlegt')}</strong></div>\n          <div class=\"dk-account-orders__profile-item\"><span>Kontoart</span><strong>${isProfi ? 'Profi-Konto' : 'Standardkonto'}</strong></div>\n          <div class=\"dk-account-orders__profile-item\"><span>Kunde seit</span><strong>${escapeHtml(formatDate(customer.createdAt))}</strong></div>\n        </div>\n      `;\n    })\n    .catch(() => {});\n}\n\nif (document.readyState === 'loading') {\n  document.addEventListener('DOMContentLoaded', drkallaEnsureAccountProfileCard, { once: true });\n} else {\n  drkallaEnsureAccountProfileCard();\n}\n\nwindow.addEventListener('pageshow', drkallaEnsureAccountProfileCard);\nwindow.setTimeout(drkallaEnsureAccountProfileCard, 1200);\nwindow.setTimeout(drkallaEnsureAccountProfileCard, 2800);\n\nfunction drkallaNormalizeAccountOrdersPage() {\n  if (window.location.pathname !== '/pages/konto') return;\n\n  const root = document.querySelector('[data-dk-account-orders]');\n  if (!root) return;\n\n  const loginUrl = root.dataset.loginUrl || '/customer_authentication/login?return_to=%2Fpages%2Fkonto';\n  const profiUrl = root.dataset.profiUrl || '/pages/profi';\n\n  let style = document.getElementById('dk-account-orders-cache-guard-style');\n  if (!style) {\n    style = document.createElement('style');\n    style.id = 'dk-account-orders-cache-guard-style';\n    style.textContent = `\n      .dk-account-orders__main-stack{display:grid;gap:clamp(2rem,3vw,3.2rem);min-width:0}\n      .dk-account-orders h1{font-size:clamp(32px,4.8vw,58px)!important;line-height:1!important}\n      .dk-account-orders__summary h2{font-size:clamp(22px,2.4vw,30px)!important}\n      @media screen and (min-width:841px){.dk-account-orders__summary{margin-top:clamp(2.5rem,3vw,3.2rem)!important}}\n      @media screen and (max-width:840px){.dk-account-orders__main-stack{gap:clamp(1.8rem,4vw,2.6rem)}}\n    `;\n    document.head.appendChild(style);\n  }\n\n  const shell = root.querySelector('.dk-account-orders__shell');\n  const layout = shell && shell.querySelector(':scope > .dk-account-orders__layout');\n  const hero = shell && shell.querySelector(':scope > .dk-account-orders__hero');\n  const body = layout && layout.querySelector(':scope > .dk-account-orders__body');\n  const summary = layout && layout.querySelector(':scope > .dk-account-orders__summary');\n\n  if (shell && layout && hero && body && summary && !layout.querySelector(':scope > .dk-account-orders__main-stack')) {\n    const mainStack = document.createElement('div');\n    mainStack.className = 'dk-account-orders__main-stack';\n    layout.insertBefore(mainStack, summary);\n    mainStack.appendChild(hero);\n    mainStack.appendChild(body);\n  }\n\n  const accountAuthenticated =\n    root.dataset.accountAuthenticated === 'true' ||\n    root.dataset.accountState === 'orders' ||\n    root.dataset.accountState === 'empty';\n  const lead = root.querySelector('.dk-account-orders__lead');\n  const leadCopy = accountAuthenticated\n    ? 'Hier findest du deine Bestellungen, Kontaktdaten und den aktuellen Profi-Status an einem Ort.'\n    : 'Melde dich an, um Bestellungen, Kontaktdaten und deinen Profi-Status zentral zu sehen. Noch kein Profi-Konto? \u00DCber den Profi-Zugang kannst du deine Freischaltung f\u00FCr Profi-Preise anfragen.';\n  if (lead && lead.textContent.trim() !== leadCopy) {\n    lead.textContent = leadCopy;\n  }\n\n  root.querySelectorAll('a[href*=\"/pages/profi-zugang\"]').forEach((link) => {\n    link.href = '/pages/profi';\n  });\n\n  const pills = root.querySelector('.dk-account-orders__pills');\n  const expectedPill = accountAuthenticated ? 'Bestellungen im Blick' : 'Profi-Preise nach Freischaltung';\n  if (pills && !pills.textContent.includes(expectedPill)) {\n    pills.innerHTML = accountAuthenticated\n      ? `\n        <span class=\"dk-account-orders__pill\">Bestellungen im Blick</span>\n        <span class=\"dk-account-orders__pill\">Profil &amp; Kontaktdaten</span>\n        <span class=\"dk-account-orders__pill\">Profi-Status pr\u00FCfen</span>\n      `\n      : `\n        <span class=\"dk-account-orders__pill\">Einloggen und Bestellungen sehen</span>\n        <span class=\"dk-account-orders__pill\">Profi-Preise nach Freischaltung</span>\n        <span class=\"dk-account-orders__pill\">Profi-Zugang beantragen</span>\n      `;\n  }\n\n  const loggedOut = root.querySelector('[data-account-logged-out]');\n  if (loggedOut && !loggedOut.textContent.includes('Profi-Preise werden nach Freischaltung aktiv')) {\n    loggedOut.innerHTML = `\n      <p class=\"dk-account-orders__kicker\">Login erforderlich</p>\n      <h2>Melde dich an, um Konto und Bestellungen zu sehen.</h2>\n      <p>Nach dem Login kommst du automatisch zur\u00FCck hierher. Profi-Preise werden nach Freischaltung aktiv; die Anfrage startest du \u00FCber den Profi-Zugang.</p>\n      <div class=\"dk-account-orders__summary-actions\">\n        <a class=\"dk-account-orders__button\" data-account-login href=\"${loginUrl}\">Einloggen</a>\n        <a class=\"dk-account-orders__button dk-account-orders__button--light\" href=\"${profiUrl}\">Profi-Zugang beantragen</a>\n      </div>\n    `;\n  }\n\n  const activeSummary = root.querySelector('[data-account-summary]');\n  const shouldPatchLoggedOutSummary =\n    activeSummary &&\n    (root.dataset.accountState === 'logged-out' ||\n      activeSummary.textContent.includes('Dein Konto wartet auf den Login') ||\n      activeSummary.textContent.includes('Nicht angemeldet'));\n\n  if (shouldPatchLoggedOutSummary && !activeSummary.textContent.includes('Einloggen und Profi-Preise nutzen')) {\n    activeSummary.innerHTML = `\n      <p class=\"dk-account-orders__kicker\">Login & Profi-Zugang</p>\n      <h2>Einloggen und Profi-Preise nutzen.</h2>\n      <p>Mit deinem Login siehst du Bestellungen, Profil und Profi-Status. Noch nicht freigeschaltet? Starte deine Anfrage \u00FCber den Profi-Zugang.</p>\n      <div class=\"dk-account-orders__summary-actions\">\n        <a class=\"dk-account-orders__button dk-account-orders__button--light\" href=\"${loginUrl}\">Einloggen</a>\n        <a class=\"dk-account-orders__button\" href=\"${profiUrl}\">Profi-Zugang beantragen</a>\n      </div>\n    `;\n  }\n}\n\nif (window.location.pathname === '/pages/konto') {\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', drkallaNormalizeAccountOrdersPage, { once: true });\n  } else {\n    drkallaNormalizeAccountOrdersPage();\n  }\n\n  window.addEventListener('load', drkallaNormalizeAccountOrdersPage, { once: true });\n  window.addEventListener('pageshow', drkallaNormalizeAccountOrdersPage);\n  window.setTimeout(drkallaNormalizeAccountOrdersPage, 400);\n  window.setTimeout(drkallaNormalizeAccountOrdersPage, 1200);\n  window.setTimeout(drkallaNormalizeAccountOrdersPage, 2800);\n\n  const accountOrdersObserver = new MutationObserver(() => {\n    window.requestAnimationFrame(drkallaNormalizeAccountOrdersPage);\n  });\n  accountOrdersObserver.observe(document.documentElement, {\n    childList: true,\n    subtree: true,\n  });\n  window.setTimeout(() => accountOrdersObserver.disconnect(), 8000);\n}\n\nfunction drkallaNormalizePolicyHeadings() {\n  if (!window.location.pathname.startsWith('/policies/')) return;\n\n  document.querySelectorAll('.shopify-policy__body h1').forEach((heading) => {\n    if (!heading.textContent.trim()) {\n      heading.remove();\n      return;\n    }\n\n    const replacement = document.createElement('h2');\n    Array.from(heading.attributes).forEach((attribute) => {\n      replacement.setAttribute(attribute.name, attribute.value);\n    });\n    replacement.innerHTML = heading.innerHTML;\n    heading.replaceWith(replacement);\n  });\n}\n\nif (document.readyState === 'loading') {\n  document.addEventListener('DOMContentLoaded', drkallaNormalizePolicyHeadings, { once: true });\n} else {\n  drkallaNormalizePolicyHeadings();\n}\n\nwindow.addEventListener('pageshow', drkallaNormalizePolicyHeadings);\n\nfunction drkallaNormalizeAccountEntryPoints() {\n  const dashboardPath = '/pages/konto';\n  const dashboardUrl = `${window.location.origin}${dashboardPath}`;\n\n  document.querySelectorAll('shopify-account').forEach((account) => {\n    const className = String(account.className || '');\n    const isKnownAccountControl =\n      account.getAttribute('menu') === 'customer-account-main-menu' ||\n      className.includes('dk-login-account') ||\n      className.includes('dk-menu-account') ||\n      className.includes('menu-drawer__account');\n\n    if (!isKnownAccountControl) return;\n\n    const link = document.createElement('a');\n    link.href = dashboardPath;\n    link.className = className;\n    link.innerHTML = account.innerHTML;\n    Array.from(account.attributes).forEach((attribute) => {\n      if (['class', 'menu', 'href'].includes(attribute.name)) return;\n      link.setAttribute(attribute.name, attribute.value);\n    });\n    if (!link.getAttribute('aria-label')) {\n      link.setAttribute('aria-label', 'Kundenbereich ansehen');\n    }\n    account.replaceWith(link);\n  });\n\n  const accountLinkSelector = [\n    'a[href*=\"/pages/mein-konto\"]',\n    'a[href*=\"/pages/meine-bestellungen\"]',\n    'a[href*=\"/pages/profi-zugang\"]',\n    'a[href$=\"/account\"]',\n    'a[href^=\"/account\"]',\n    'a[href*=\"/customer_authentication/login\"]',\n    'a[href*=\"/customer_authentication/redirect\"]',\n  ].join(',');\n\n  document.querySelectorAll(accountLinkSelector).forEach((link) => {\n    let url;\n    try {\n      url = new URL(link.getAttribute('href'), window.location.origin);\n    } catch {\n      return;\n    }\n\n    if (url.origin !== window.location.origin) return;\n\n    if (url.pathname === '/pages/mein-konto') {\n      link.href = dashboardPath;\n      return;\n    }\n\n    if (url.pathname === '/pages/meine-bestellungen') {\n      link.href = dashboardPath;\n      return;\n    }\n\n    if (url.pathname === '/pages/profi-zugang') {\n      link.href = '/pages/profi';\n      return;\n    }\n\n    if (url.pathname === '/account') {\n      link.href = dashboardPath;\n      return;\n    }\n\n    if (\n      url.pathname === '/customer_authentication/redirect' &&\n      !url.searchParams.has('return_url')\n    ) {\n      link.href = dashboardPath;\n      return;\n    }\n\n    if (\n      url.pathname === '/customer_authentication/login' &&\n      url.searchParams.get('return_to') === '/pages/mein-konto'\n    ) {\n      url.searchParams.set('return_to', dashboardPath);\n      link.href = `${url.pathname}?${url.searchParams.toString()}`;\n      return;\n    }\n\n    if (\n      url.pathname === '/customer_authentication/login' &&\n      url.searchParams.get('return_to') === '/pages/meine-bestellungen'\n    ) {\n      url.searchParams.set('return_to', dashboardPath);\n      link.href = `${url.pathname}?${url.searchParams.toString()}`;\n      return;\n    }\n\n    if (\n      url.pathname === '/customer_authentication/redirect' &&\n      url.searchParams.get('return_url') === '/pages/mein-konto'\n    ) {\n      url.searchParams.set('return_url', dashboardPath);\n      link.href = `${url.pathname}?${url.searchParams.toString()}`;\n      return;\n    }\n\n    if (\n      url.pathname === '/customer_authentication/redirect' &&\n      url.searchParams.get('return_url') === '/pages/meine-bestellungen'\n    ) {\n      url.searchParams.set('return_url', dashboardPath);\n      link.href = `${url.pathname}?${url.searchParams.toString()}`;\n      return;\n    }\n\n    if (\n      url.pathname === '/customer_authentication/login' &&\n      !url.searchParams.has('return_to')\n    ) {\n      link.href = dashboardPath;\n    }\n  });\n}\n\nif (document.readyState === 'loading') {\n  document.addEventListener('DOMContentLoaded', drkallaNormalizeAccountEntryPoints, { once: true });\n} else {\n  drkallaNormalizeAccountEntryPoints();\n}\n\nwindow.addEventListener('load', drkallaNormalizeAccountEntryPoints, { once: true });\nwindow.addEventListener('pageshow', drkallaNormalizeAccountEntryPoints);\nwindow.setTimeout(drkallaNormalizeAccountEntryPoints, 600);\nwindow.setTimeout(drkallaNormalizeAccountEntryPoints, 1600);\n\nconst accountEntryObserver = new MutationObserver((records) => {\n  const hasRelevantNode = records.some((record) =>\n    Array.from(record.addedNodes || []).some(\n      (node) =>\n        node instanceof HTMLElement &&\n        (node.matches('shopify-account, header, .menu-drawer') ||\n          node.querySelector('shopify-account, header, .menu-drawer')),\n    ),\n  );\n  if (hasRelevantNode) {\n    window.requestAnimationFrame(drkallaNormalizeAccountEntryPoints);\n  }\n});\naccountEntryObserver.observe(document.documentElement, {\n  childList: true,\n  subtree: true,\n});\nwindow.setTimeout(() => accountEntryObserver.disconnect(), 10000);\n\nif (!window.drkallaCartUpdates) {\n  window.drkallaCartUpdates = (() => {\n    let epoch = 0;\n    let generation = 0;\n    let read = null;\n    let queued = false;\n    let openRequested = false;\n    let navigationRequested = false;\n    let navigating = false;\n    let committedEpoch = -1;\n    const active = new Set();\n    const cartUrl = () => window.routes?.cart_url || `${window.Shopify?.routes?.root || '/'}cart`;\n    const current = (token) => token.epoch === epoch && token.generation === generation && active.size === 0 && !navigating;\n    const invalidate = () => {\n      generation += 1;\n      if (read) read.cancel();\n    };\n    const navigate = () => {\n      navigationRequested = true;\n      if (active.size) {\n        queued = true;\n        return Promise.resolve({ status: 'queued' });\n      }\n      invalidate();\n      if (!navigating) {\n        navigating = true;\n        window.location.assign(cartUrl());\n      }\n      return Promise.resolve({ status: 'navigated' });\n    };\n    const collect = () => {\n      const main = document.querySelector('cart-items');\n      const drawer = document.querySelector('cart-drawer');\n      const descriptors = [];\n      if (main) {\n        const items = document.getElementById('main-cart-items');\n        const footer = document.getElementById('main-cart-footer');\n        if (!items?.dataset.id || !footer?.dataset.id) throw new Error('Main cart sections are missing');\n        descriptors.push({ key: items.dataset.id, selector: 'cart-items', element: main, emptyRoot: true });\n        descriptors.push({ key: footer.dataset.id, selector: '#main-cart-footer', element: footer, emptyRoot: true });\n        descriptors.push({ key: 'cart-live-region-text', selector: '.shopify-section', element: document.getElementById('cart-live-region-text') });\n      }\n      if (drawer) descriptors.push({ key: 'cart-drawer', selector: '#CartDrawer', element: document.getElementById('CartDrawer'), drawer });\n      if (!main && !drawer) throw new Error('No complete cart view is available');\n      descriptors.push({ key: 'cart-icon-bubble', selector: '.shopify-section', element: document.getElementById('cart-icon-bubble') });\n      if (descriptors.some((entry) => !entry.element)) throw new Error('Cart target is missing');\n      return descriptors;\n    };\n    const prepare = (sections, descriptors) => {\n      if (!sections || typeof sections !== 'object') throw new Error('Cart sections are missing');\n      let empty;\n      return descriptors.map((entry) => {\n        if (typeof sections[entry.key] !== 'string') throw new Error('Cart section failed');\n        const source = new DOMParser().parseFromString(sections[entry.key], 'text/html').querySelector(entry.selector);\n        if (!source) throw new Error('Cart source is missing');\n        if ((entry.drawer || entry.key === 'cart-icon-bubble') && !source.innerHTML.trim()) throw new Error('Cart source is empty');\n        if (entry.drawer && (!source.querySelector('.drawer__inner') || !source.querySelector('#CartDrawer-Overlay'))) throw new Error('Drawer markup is missing');\n        if (entry.emptyRoot || entry.drawer) {\n          const sourceEmpty = entry.drawer ? !!source.querySelector('.drawer__inner-empty') : source.classList.contains('is-empty');\n          if (empty !== undefined && sourceEmpty !== empty) throw new Error('Cart sections disagree');\n          empty = sourceEmpty;\n        }\n        return { ...entry, html: source.innerHTML, empty };\n      });\n    };\n    const openCurrentDrawer = (guard) => {\n      if (!openRequested || !guard()) return;\n      openRequested = false;\n      document.querySelector('cart-drawer')?.open(undefined, guard);\n    };\n    const requestSync = ({ open = false, allowCached = false } = {}) => {\n      openRequested = openRequested || open;\n      if (navigationRequested) return navigate();\n      if (active.size) {\n        queued = true;\n        return Promise.resolve({ status: 'queued' });\n      }\n      if (read && current(read)) return read.promise;\n      if (allowCached && committedEpoch === epoch) {\n        const token = { epoch, generation };\n        openCurrentDrawer(() => current(token));\n        return Promise.resolve({ status: 'ready' });\n      }\n      queued = false;\n      const token = { epoch, generation: ++generation };\n      const controller = new AbortController();\n      let timer;\n      let cancel;\n      const superseded = new Promise((resolve) => { cancel = () => { resolve({ status: 'superseded' }); if (!controller.signal.aborted) controller.abort(); }; });\n      const entry = { ...token, cancel, promise: null };\n      read = entry;\n      entry.promise = (async () => {\n        try {\n          const descriptors = collect();\n          const url = new URL(cartUrl(), window.location.origin);\n          url.searchParams.set('sections', [...new Set(descriptors.map((item) => item.key))].join(','));\n          const timeout = new Promise((_, reject) => {\n            timer = setTimeout(() => {\n              reject(new Error('Cart synchronization timed out'));\n              controller.abort();\n            }, 5000);\n          });\n          const result = await Promise.race([\n            fetch(url.toString(), { credentials: 'same-origin', cache: 'no-store', signal: controller.signal }).then((response) => {\n              if (!response.ok) throw new Error('Cart synchronization failed');\n              return response.json();\n            }).then((sections) => ({ sections })),\n            superseded,\n            timeout,\n          ]);\n          clearTimeout(timer);\n          timer = undefined;\n          if (!current(token) || result.status === 'superseded') return { status: 'superseded' };\n          const plan = prepare(result.sections, descriptors);\n          const targets = collect();\n          if (targets.length !== descriptors.length || targets.some((target, index) => target.element !== descriptors[index].element || target.key !== descriptors[index].key)) throw new Error('Cart view changed');\n          if (!current(token)) return { status: 'superseded' };\n          const focusedId = document.activeElement?.id || document.activeElement?.getAttribute('id');\n          let drawerRendering;\n          for (const item of plan) {\n            if (item.drawer || (item.key === 'cart-icon-bubble' && descriptors.some((descriptor) => descriptor.drawer))) continue;\n            item.element.innerHTML = item.html;\n            if (item.emptyRoot) item.element.classList.toggle('is-empty', item.empty);\n          }\n          const drawer = descriptors.find((item) => item.drawer)?.drawer;\n          if (drawer) drawerRendering = drawer.renderContents({ sections: result.sections }, { open: false, canCommit: () => current(token) });\n          await drawerRendering;\n          if (!current(token)) return { status: 'superseded' };\n          committedEpoch = epoch;\n          if (openRequested) openCurrentDrawer(() => current(token));\n          else if (focusedId) {\n            const focused = document.getElementById(focusedId);\n            const focusedDrawer = focused?.closest('cart-drawer');\n            if (focused && (!focusedDrawer || focusedDrawer.classList.contains('active'))) focused.focus();\n          }\n          return { status: 'ready' };\n        } catch (error) {\n          if (!current(token)) return { status: 'superseded' };\n          return navigate();\n        } finally {\n          clearTimeout(timer);\n          if (read === entry) read = null;\n        }\n      })();\n      return entry.promise;\n    };\n    return {\n      begin() {\n        if (navigating) { navigating = false; navigationRequested = false; queued = false; committedEpoch = -1; }\n        const ticket = { epoch: ++epoch, overlapping: active.size > 0 };\n        active.forEach((other) => { other.overlapping = true; });\n        active.add(ticket);\n        if (read) queued = true;\n        openRequested = false;\n        invalidate();\n        return ticket;\n      },\n      finish(ticket) {\n        if (!active.delete(ticket)) return;\n        if (!active.size && queued) Promise.resolve().then(() => { if (!active.size && queued) requestSync(); });\n      },\n      isTicketCurrent: (ticket) => ticket?.epoch === epoch,\n      captureGuard() { const token = { epoch, generation }; return () => current(token); },\n      canUseSnapshot: (ticket) => ticket?.epoch === epoch && !ticket.overlapping && active.size === 0 && !navigating && !navigationRequested,\n      acceptSnapshot(ticket) { if (ticket?.epoch === epoch && !active.size) { committedEpoch = epoch; if (!navigationRequested) queued = false; } },\n      requestSync,\n      navigate,\n    };\n  })();\n}\n"],
  "mappings": "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",
  "names": ["token"]
}
