﻿{"id":31510,"date":"2025-04-22T07:06:16","date_gmt":"2025-04-22T07:06:16","guid":{"rendered":"https:\/\/gobelka.com\/de\/?page_id=31510"},"modified":"2026-07-06T08:57:11","modified_gmt":"2026-07-06T08:57:11","slug":"belka-mix-naturtapete-diy-farbgestaltung","status":"publish","type":"page","link":"https:\/\/gobelka.com\/de\/belka-mix-naturtapete-diy-farbgestaltung\/","title":{"rendered":"Belka Mix"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"31510\" class=\"elementor elementor-31510\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0f10f0d e-con-full wd-section-stretch-content e-flex e-con e-parent\" data-id=\"0f10f0d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-59e070b elementor-widget elementor-widget-html\" data-id=\"59e070b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t\r\n    <section class=\"belka-hero-section\">\r\n        <div class=\"belka-container\">\r\n            <div class=\"belka-hero-grid\">\r\n                <div class=\"belka-hero-content\">\r\n                    <!-- Added colorful gradient badge -->\r\n                    <div class=\"belka-badge belka-gradient-badge\">\r\n                        <i class=\"fas fa-leaf\"><\/i>\r\n                        <span>100% Nat\u00fcrlich<\/span>\r\n                    <\/div>\r\n                    \r\n                    <h1 class=\"belka-hero-title\">K\u00fcnstlerischer Touch f\u00fcr Ihre W\u00e4nde mit <span class=\"belka-highlight\">Belka Mix<\/span><\/h1>\r\n                    \r\n                    <p class=\"belka-hero-description\">\r\n                        Belka Mix erm\u00f6glicht es Ihnen, mit seiner nat\u00fcrlichen Baumwollstruktur 2, 3, 4 und 5 verschiedene Farben\r\n                        zu kombinieren und einzigartige Wandbeschichtungen zu erstellen. Verleihen Sie Ihrem Zuhause\r\n                        einen speziellen, k\u00fcnstlerischen und langlebigen Touch.\r\n                    <\/p>\r\n                    \r\n                    <!-- Enhanced buttons with more vibrant colors -->\r\n                    <div class=\"belka-button-group\">\r\n                        <a href=\"javascript:void(0)\" onclick=\"belkaScrollTo('#mittelmeer-anchor')\" class=\"belka-button belka-primary belka-gradient-button\">\r\n                            <i class=\"fas fa-bolt\"><\/i>\r\n                            <span>Fertige Mixe ansehen<\/span>\r\n                        <\/a>\r\n                        <a href=\"javascript:void(0)\" onclick=\"belkaScrollTo('#mix-text-anchor')\" class=\"belka-button belka-outline belka-colorful-outline\">\r\n                            <i class=\"fas fa-info-circle\"><\/i>\r\n                            <span>Eigenen Mix erstellen<\/span>\r\n                        <\/a>\r\n                    <\/div>\r\n                    \r\n                    <!-- Added colorful feature icons -->\r\n                    <div class=\"belka-features\">\r\n                        <div class=\"belka-feature\">\r\n                            <div class=\"belka-feature-icon belka-green-icon\">\r\n                                <i class=\"fas fa-seedling\"><\/i>\r\n                            <\/div>\r\n                            <span>100% nat\u00fcrliche Baumwolle<\/span>\r\n                        <\/div>\r\n                        <div class=\"belka-feature\">\r\n                            <div class=\"belka-feature-icon belka-blue-icon\">\r\n                                <i class=\"fas fa-magic\"><\/i>\r\n                            <\/div>\r\n                            <span>Einfache Anwendung<\/span>\r\n                        <\/div>\r\n                        <div class=\"belka-feature\">\r\n                            <div class=\"belka-feature-icon belka-purple-icon\">\r\n                                <i class=\"fas fa-shield-alt\"><\/i>\r\n                            <\/div>\r\n                            <span>\u00dcber 10 Jahre Haltbarkeit<\/span>\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <!-- Added customer testimonials section -->\r\n                    <div class=\"belka-testimonials\">\r\n                        <div class=\"belka-testimonial\">\r\n                            <div class=\"belka-testimonial-stars\">\r\n                                <i class=\"fas fa-star\"><\/i>\r\n                                <i class=\"fas fa-star\"><\/i>\r\n                                <i class=\"fas fa-star\"><\/i>\r\n                                <i class=\"fas fa-star\"><\/i>\r\n                                <i class=\"fas fa-star\"><\/i>\r\n                            <\/div>\r\n                            <p>\"Fantastisches Produkt! Meine W\u00e4nde sehen jetzt wie Kunstwerke aus.\"<\/p>\r\n                            <span class=\"belka-testimonial-author\">- Maria K.<\/span>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n                \r\n                <div class=\"belka-hero-visual\">\r\n                    <div class=\"belka-image-container\">\r\n                        <img decoding=\"async\" src=\"https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/belka-mix-belka-tapete.jpg\"\r\n                            alt=\"Belka Mix Wandbeschichtungsbeispiel\" class=\"belka-hero-image\">\r\n                        <div class=\"belka-image-overlay\"><\/div>\r\n                    <\/div>\r\n                    \r\n                    <!-- Enhanced rating card with more colorful design -->\r\n                    <div class=\"belka-rating-card belka-colorful-rating\">\r\n                        <div class=\"belka-stars\">\r\n                            <i class=\"fas fa-star\"><\/i>\r\n                            <i class=\"fas fa-star\"><\/i>\r\n                            <i class=\"fas fa-star\"><\/i>\r\n                            <i class=\"fas fa-star\"><\/i>\r\n                            <i class=\"fas fa-star\"><\/i>\r\n                        <\/div>\r\n                        <div class=\"belka-rating-text\">4.9\/5<\/div>\r\n                        <div class=\"belka-rating-count\">\u00dcber 230 Bewertungen<\/div>\r\n                        <div class=\"belka-rating-badge\">Bestseller<\/div>\r\n                    <\/div>\r\n                    \r\n                    <!-- Added more colorful floating badges -->\r\n                    <div class=\"belka-floating-badge belka-floating-badge-1 belka-orange-badge\">\r\n                        <i class=\"fas fa-palette\"><\/i>\r\n                        <span>5+ Farben<\/span>\r\n                    <\/div>\r\n                    \r\n                    <div class=\"belka-floating-badge belka-floating-badge-2 belka-teal-badge\">\r\n                        <i class=\"fas fa-clock\"><\/i>\r\n                        <span>Schnell trocknend<\/span>\r\n                    <\/div>\r\n\r\n                    <div class=\"belka-floating-badge belka-floating-badge-3 belka-pink-badge\">\r\n                        <i class=\"fas fa-heart\"><\/i>\r\n                        <span>Kundenliebling<\/span>\r\n                    <\/div>\r\n\r\n                    <!-- Added color palette showcase -->\r\n                    <div class=\"belka-color-palette\">\r\n                        <div class=\"belka-color-title\">Verf\u00fcgbare Farben:<\/div>\r\n                        <div class=\"belka-colors\">\r\n                            <div class=\"belka-color\" style=\"background: #e74c3c;\"><\/div>\r\n                            <div class=\"belka-color\" style=\"background: #3498db;\"><\/div>\r\n                            <div class=\"belka-color\" style=\"background: #2ecc71;\"><\/div>\r\n                            <div class=\"belka-color\" style=\"background: #f39c12;\"><\/div>\r\n                            <div class=\"belka-color\" style=\"background: #9b59b6;\"><\/div>\r\n                            <div class=\"belka-color-more\">+10<\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <!-- Added animated background elements -->\r\n        <div class=\"belka-bg-elements\">\r\n            <div class=\"belka-bg-circle belka-bg-circle-1\"><\/div>\r\n            <div class=\"belka-bg-circle belka-bg-circle-2\"><\/div>\r\n            <div class=\"belka-bg-circle belka-bg-circle-3\"><\/div>\r\n        <\/div>\r\n    <\/section>\r\n\r\n    <style>\r\n      @media (max-width: 767px) {\r\n        .belka-hero-section {\r\n          min-height: auto !important;\r\n          padding: 32px 14px 28px !important;\r\n          overflow: hidden !important;\r\n        }\r\n\r\n        .belka-hero-grid {\r\n          display: flex !important;\r\n          flex-direction: column !important;\r\n          gap: 20px !important;\r\n        }\r\n\r\n        .belka-hero-content {\r\n          text-align: center !important;\r\n        }\r\n\r\n        .belka-hero-title {\r\n          margin-bottom: 12px !important;\r\n          font-size: clamp(28px, 8vw, 38px) !important;\r\n          line-height: 1.08 !important;\r\n        }\r\n\r\n        .belka-hero-description {\r\n          margin-bottom: 18px !important;\r\n          font-size: 15px !important;\r\n          line-height: 1.5 !important;\r\n          display: -webkit-box !important;\r\n          -webkit-line-clamp: 4 !important;\r\n          -webkit-box-orient: vertical !important;\r\n          overflow: hidden !important;\r\n        }\r\n\r\n        .belka-button-group {\r\n          display: grid !important;\r\n          gap: 10px !important;\r\n          margin-bottom: 14px !important;\r\n        }\r\n\r\n        .belka-button {\r\n          width: 100% !important;\r\n          min-height: 44px !important;\r\n          padding: 11px 14px !important;\r\n          justify-content: center !important;\r\n        }\r\n\r\n        .belka-badge,\r\n        .belka-features,\r\n        .belka-testimonials,\r\n        .belka-rating-card,\r\n        .belka-floating-badge,\r\n        .belka-color-palette,\r\n        .belka-bg-elements {\r\n          display: none !important;\r\n        }\r\n\r\n        .belka-hero-visual {\r\n          min-height: auto !important;\r\n          margin-top: 0 !important;\r\n        }\r\n\r\n        .belka-image-container {\r\n          height: 200px !important;\r\n          min-height: 0 !important;\r\n          border-radius: 14px !important;\r\n        }\r\n\r\n        .belka-hero-image {\r\n          height: 100% !important;\r\n          object-fit: cover !important;\r\n        }\r\n\r\n      }\r\n\r\n      @media (max-width: 420px) {\r\n        .belka-hero-section {\r\n          padding-top: 24px !important;\r\n        }\r\n\r\n        .belka-hero-description {\r\n          -webkit-line-clamp: 3 !important;\r\n        }\r\n\r\n        .belka-image-container {\r\n          height: 175px !important;\r\n        }\r\n      }\r\n    <\/style>\r\n    \r\n    <script>\r\nwindow.belkaScrollTo = function(targetId) {\r\n    const targetElement = document.querySelector(targetId);\r\n    if (targetElement) {\r\n        \/\/ Elementor Sticky Header offset\r\n        const header = document.querySelector('.elementor-location-header, .elementor-section-wrap header, header');\r\n        const headerOffset = header ? header.offsetHeight : 80;\r\n        const elementPosition = targetElement.getBoundingClientRect().top;\r\n        const offsetPosition = elementPosition + window.pageYOffset - headerOffset;\r\n\r\n        window.scrollTo({\r\n             top: offsetPosition,\r\n             behavior: \"smooth\"\r\n        });\r\n    } else {\r\n        console.warn(\"Target element not found: \" + targetId);\r\n    }\r\n};\r\n\r\ndocument.addEventListener(\"DOMContentLoaded\", () => {\r\n\r\n  \/\/ Intersection Observer for animations\r\n  const observerOptions = {\r\n    threshold: 0.1,\r\n    rootMargin: \"0px 0px -50px 0px\",\r\n  }\r\n\r\n  const observer = new IntersectionObserver((entries) => {\r\n    entries.forEach((entry) => {\r\n      if (entry.isIntersecting) {\r\n        entry.target.style.animationPlayState = \"running\"\r\n      }\r\n    })\r\n  }, observerOptions)\r\n\r\n  \/\/ Observe animated elements\r\n  const animatedElements = document.querySelectorAll('[class*=\"belka-fade\"], [class*=\"belka-float\"]')\r\n  animatedElements.forEach((el) => {\r\n    el.style.animationPlayState = \"paused\"\r\n    observer.observe(el)\r\n  })\r\n\r\n  let ticking = false\r\n\r\n  function updateParallax() {\r\n    const scrolled = window.pageYOffset\r\n    const parallaxElements = document.querySelectorAll(\".belka-floating-badge\")\r\n    const bgElements = document.querySelectorAll(\".belka-bg-circle\")\r\n\r\n    parallaxElements.forEach((element, index) => {\r\n      const speed = 0.5 + index * 0.2\r\n      const yPos = -(scrolled * speed)\r\n      element.style.transform = `translateY(${yPos}px)`\r\n    })\r\n\r\n    \/\/ Background circles parallax\r\n    bgElements.forEach((element, index) => {\r\n      const speed = 0.1 + index * 0.05\r\n      const yPos = scrolled * speed\r\n      element.style.transform = `translateY(${yPos}px) rotate(${scrolled * 0.1}deg)`\r\n    })\r\n\r\n    ticking = false\r\n  }\r\n\r\n  function requestTick() {\r\n    if (!ticking) {\r\n      requestAnimationFrame(updateParallax)\r\n      ticking = true\r\n    }\r\n  }\r\n\r\n  window.addEventListener(\"scroll\", requestTick)\r\n\r\n  const buttons = document.querySelectorAll(\".belka-button\")\r\n\r\n  buttons.forEach((button) => {\r\n    button.addEventListener(\"mouseenter\", function () {\r\n      this.style.transform = \"translateY(-3px) scale(1.02)\"\r\n      this.style.boxShadow = \"0 15px 25px -5px rgba(0, 0, 0, 0.2)\"\r\n    })\r\n\r\n    button.addEventListener(\"mouseleave\", function () {\r\n      this.style.transform = \"translateY(0) scale(1)\"\r\n      this.style.boxShadow = \"\"\r\n    })\r\n\r\n    \/\/ Click animation\r\n    button.addEventListener(\"click\", function (e) {\r\n      const ripple = document.createElement(\"span\")\r\n      const rect = this.getBoundingClientRect()\r\n      const size = Math.max(rect.width, rect.height)\r\n      const x = e.clientX - rect.left - size \/ 2\r\n      const y = e.clientY - rect.top - size \/ 2\r\n\r\n      ripple.style.cssText = `\r\n        position: absolute;\r\n        width: ${size}px;\r\n        height: ${size}px;\r\n        left: ${x}px;\r\n        top: ${y}px;\r\n        background: rgba(255, 255, 255, 0.3);\r\n        border-radius: 50%;\r\n        transform: scale(0);\r\n        animation: belka-ripple 0.6s ease-out;\r\n        pointer-events: none;\r\n      `\r\n\r\n      this.appendChild(ripple)\r\n      setTimeout(() => ripple.remove(), 600)\r\n    })\r\n  })\r\n\r\n  const colorElements = document.querySelectorAll(\".belka-color\")\r\n\r\n  colorElements.forEach((color) => {\r\n    color.addEventListener(\"mouseenter\", function () {\r\n      this.style.transform = \"scale(1.3)\"\r\n      this.style.boxShadow = \"0 4px 12px rgba(0, 0, 0, 0.3)\"\r\n    })\r\n\r\n    color.addEventListener(\"mouseleave\", function () {\r\n      this.style.transform = \"scale(1)\"\r\n      this.style.boxShadow = \"0 2px 4px rgba(0, 0, 0, 0.1)\"\r\n    })\r\n  })\r\n\r\n  \/\/ Image lazy loading and error handling\r\n  const heroImage = document.querySelector(\".belka-hero-image\")\r\n\r\n  if (heroImage) {\r\n    heroImage.addEventListener(\"load\", function () {\r\n      this.style.opacity = \"1\"\r\n    })\r\n\r\n    heroImage.addEventListener(\"error\", function () {\r\n      this.src = \"\/belka-mix-wall-coating-example.png\"\r\n      this.alt = \"Belka Mix Wandbeschichtung Beispiel\"\r\n    })\r\n  }\r\n\r\n  const ratingCard = document.querySelector(\".belka-rating-card\")\r\n  const stars = document.querySelectorAll(\".belka-stars i\")\r\n\r\n  if (ratingCard) {\r\n    setTimeout(() => {\r\n      ratingCard.style.opacity = \"1\"\r\n      ratingCard.style.transform = \"translateY(0)\"\r\n\r\n      \/\/ Animate stars filling up\r\n      stars.forEach((star, index) => {\r\n        setTimeout(() => {\r\n          star.style.color = \"#ffd700\"\r\n          star.style.transform = \"scale(1.2)\"\r\n          setTimeout(() => {\r\n            star.style.transform = \"scale(1)\"\r\n          }, 200)\r\n        }, index * 100)\r\n      })\r\n    }, 1000)\r\n  }\r\n\r\n  const testimonialText = document.querySelector(\".belka-testimonial p\")\r\n\r\n  if (testimonialText) {\r\n    const originalText = testimonialText.textContent\r\n    testimonialText.textContent = \"\"\r\n\r\n    setTimeout(() => {\r\n      let i = 0\r\n      const typeWriter = () => {\r\n        if (i < originalText.length) {\r\n          testimonialText.textContent += originalText.charAt(i)\r\n          i++\r\n          setTimeout(typeWriter, 50)\r\n        }\r\n      }\r\n      typeWriter()\r\n    }, 2000)\r\n  }\r\n\r\n  const floatingBadges = document.querySelectorAll(\".belka-floating-badge\")\r\n\r\n  floatingBadges.forEach((badge) => {\r\n    badge.addEventListener(\"mouseenter\", function () {\r\n      this.style.transform = \"translateY(-5px) rotate(5deg) scale(1.05)\"\r\n    })\r\n\r\n    badge.addEventListener(\"mouseleave\", function () {\r\n      this.style.transform = \"translateY(0) rotate(0deg) scale(1)\"\r\n    })\r\n  })\r\n\r\n  const gradientElements = document.querySelectorAll(\".belka-gradient-badge, .belka-gradient-button\")\r\n\r\n  gradientElements.forEach((element) => {\r\n    element.addEventListener(\"mouseenter\", function () {\r\n      this.style.animationDuration = \"1s\"\r\n    })\r\n\r\n    element.addEventListener(\"mouseleave\", function () {\r\n      this.style.animationDuration = \"3s\"\r\n    })\r\n  })\r\n\r\n  const featureIcons = document.querySelectorAll(\".belka-feature-icon\")\r\n\r\n  const featureObserver = new IntersectionObserver(\r\n    (entries) => {\r\n      entries.forEach((entry, index) => {\r\n        if (entry.isIntersecting) {\r\n          setTimeout(() => {\r\n            entry.target.style.animation = \"belka-pulse 0.6s ease-out\"\r\n          }, index * 200)\r\n        }\r\n      })\r\n    },\r\n    { threshold: 0.5 },\r\n  )\r\n\r\n  featureIcons.forEach((icon) => {\r\n    featureObserver.observe(icon)\r\n  })\r\n\r\n  \/\/ Console debug for development\r\n  console.log(\"[v0] Belka Mix enhanced hero section initialized\")\r\n  console.log(\"[v0] Animated elements found:\", animatedElements.length)\r\n  console.log(\"[v0] Buttons initialized:\", buttons.length)\r\n  console.log(\"[v0] Color elements initialized:\", colorElements.length)\r\n  console.log(\"[v0] Floating badges initialized:\", floatingBadges.length)\r\n})\r\n\r\nconst style = document.createElement(\"style\")\r\nstyle.textContent = `\r\n  @keyframes belka-ripple {\r\n    to {\r\n      transform: scale(2);\r\n      opacity: 0;\r\n    }\r\n  }\r\n  \r\n  @keyframes belka-pulse {\r\n    0% { transform: scale(1); }\r\n    50% { transform: scale(1.2); }\r\n    100% { transform: scale(1); }\r\n  }\r\n`\r\ndocument.head.appendChild(style)\r\n<\/script>\r\n\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"wd-negative-gap elementor-section elementor-top-section elementor-element elementor-element-371661b wd-section-stretch-content elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"371661b\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7cba464\" data-id=\"7cba464\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-74f62d2 elementor-widget elementor-widget-html\" data-id=\"74f62d2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t\r\n\r\n    <!-- Collections Section -->\r\n    <section id=\"collections\" class=\"collections-section\">\r\n        <div class=\"container\">\r\n            <div class=\"section-header\">\r\n                <h2>Unsere speziellen Designkollektionen<\/h2>\r\n                <p>\r\n                    Jede Kollektion besteht aus vier verschiedenen Belka Mix-Farben, die harmonisch miteinander\r\n                    kombiniert wurden. Mit diesen Kombinationen k\u00f6nnen Sie in verschiedenen Bereichen Ihres Hauses eine\r\n                    einzigartige Atmosph\u00e4re schaffen.\r\n                <\/p>\r\n            <\/div>\r\n\r\n            <div class=\"tabs\" id=\"mittelmeer-anchor\">\r\n                <div class=\"tab-list\">\r\n                    <button class=\"tab-button active\" data-tab=\"akdeniz\">Mittelmeer-Brise<\/button>\r\n                    <button class=\"tab-button\" data-tab=\"nordik\">Nordische Ruhe<\/button>\r\n                    <button class=\"tab-button\" data-tab=\"bohem\">Bohemian Dream<\/button>\r\n                    <button class=\"tab-button\" data-tab=\"modern\">Moderne Eleganz<\/button>\r\n                <\/div>\r\n\r\n                <div class=\"tab-content active\" id=\"akdeniz-content\">\r\n                    <div class=\"collection-card\">\r\n                        <div class=\"collection-images\">\r\n                            <div class=\"main-image\">\r\n                                <img decoding=\"async\" src=\"https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/belka-tapete-mix-mittelmeer-Brise-4.jpg\"\r\n                                    alt=\"Mittelmeer-Brise\r\nDiese Kollektion bringt die warme und frische Atmosph\u00e4re des Mittelmeers in Ihr Zuhause und besteht aus einer harmonischen Kombination von Blau- und Beiget\u00f6nen. Bringen Sie die beruhigende Energie von Meer, Sand und Himmel in Ihre Wohnr\u00e4ume.\">\r\n                            <\/div>\r\n                            <div class=\"detail-images\">\r\n                                <div class=\"detail-image\">\r\n                                    <img decoding=\"async\" src=\"https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/belka-tapete-mix-mittelmeer-Brise-3.jpg\"\r\n                                        alt=\"MMittelmeer-Brise\r\nDiese Kollektion bringt die warme und frische Atmosph\u00e4re des Mittelmeers in Ihr Zuhause und besteht aus einer harmonischen Kombination von Blau- und Beiget\u00f6nen. Bringen Sie die beruhigende Energie von Meer, Sand und Himmel in Ihre Wohnr\u00e4ume. \">\r\n                                <\/div>\r\n                                <div class=\"detail-image\">\r\n                                    <img decoding=\"async\" src=\"https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/belka-tapete-mix-mittelmeer-Brise-2.jpg\"\r\n                                        alt=\"MMittelmeer-Brise\r\nDiese Kollektion bringt die warme und frische Atmosph\u00e4re des Mittelmeers in Ihr Zuhause und besteht aus einer harmonischen Kombination von Blau- und Beiget\u00f6nen. Bringen Sie die beruhigende Energie von Meer, Sand und Himmel in Ihre Wohnr\u00e4ume.\">\r\n                                <\/div>\r\n                                <div class=\"detail-image\">\r\n                                    <img decoding=\"async\" src=\"https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/belka-tapete-mix-mittelmeer-Brise-1.jpg\"\r\n                                        alt=\"MMittelmeer-Brise\r\nDiese Kollektion bringt die warme und frische Atmosph\u00e4re des Mittelmeers in Ihr Zuhause und besteht aus einer harmonischen Kombination von Blau- und Beiget\u00f6nen. Bringen Sie die beruhigende Energie von Meer, Sand und Himmel in Ihre Wohnr\u00e4ume.\">\r\n                                <\/div>\r\n                                <div class=\"detail-image\">\r\n                                    <img decoding=\"async\" src=\"https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/belka-tapete-mix-mittelmeer-Brise.jpg\"\r\n                                        alt=\"MMittelmeer-Brise\r\nDiese Kollektion bringt die warme und frische Atmosph\u00e4re des Mittelmeers in Ihr Zuhause und besteht aus einer harmonischen Kombination von Blau- und Beiget\u00f6nen. Bringen Sie die beruhigende Energie von Meer, Sand und Himmel in Ihre Wohnr\u00e4ume.\">\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"collection-info\">\r\n                            <h3>Mittelmeer-Brise<\/h3>\r\n                            <p>\r\n                                Diese Kollektion bringt die warme und frische Atmosph\u00e4re des Mittelmeers in Ihr Zuhause\r\n                                und besteht aus einer harmonischen Kombination von Blau- und Beiget\u00f6nen. Bringen Sie die\r\n                                beruhigende Energie von Meer, Sand und Himmel in Ihre Wohnr\u00e4ume.\r\n                            <\/p>\r\n                            <div class=\"collection-badges\">\r\n                                <span class=\"badge small\">Frisch<\/span>\r\n                                <span class=\"badge small\">Ruhig<\/span>\r\n                                <span class=\"badge small\">Nat\u00fcrlich<\/span>\r\n                            <\/div>\r\n                            <div class=\"collection-colors\">\r\n                                <h4>Kollektionsfarben<\/h4>\r\n                                <div class=\"color-grid\">\r\n                                    <div class=\"color-item\" data-product-id=\"10024\">\r\n                                        <div class=\"color-item-header\">\r\n                                            <div class=\"color-swatch\" style=\"background-color: #4f5d82;\"><\/div>\r\n                                            <div class=\"color-info\">\r\n                                                <p class=\"color-name\">B45<\/p>\r\n                                                <p class=\"color-price\">32.00 \u20ac<\/p>\r\n                                            <\/div>\r\n                                            <div class=\"color-package-options\">\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '1kg', '32.00')\">1kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '3kg', '89.00')\">3kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '5kg', '140.00')\">5kg<\/button>\r\n                                            <\/div>\r\n                                            <div class=\"quantity-controlsx\">\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, -1)\"\r\n                                                    disabled>\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                                <span class=\"quantity\">1<\/span>\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, 1)\">\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line>\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                            <\/div>\r\n                                        <\/div>\r\n\r\n                                    <\/div>\r\n                                    <div class=\"color-item\" data-product-id=\"9832\">\r\n                                        <div class=\"color-item-header\">\r\n                                            <div class=\"color-swatch\" style=\"background-color: #83a4c7;\"><\/div>\r\n                                            <div class=\"color-info\">\r\n                                                <p class=\"color-name\">B55<\/p>\r\n                                                <p class=\"color-price\">32.00 \u20ac<\/p>\r\n                                            <\/div>\r\n                                            <div class=\"color-package-options\">\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '1kg', '32.00')\">1kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '3kg', '89.00')\">3kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '5kg', '140.00')\">5kg<\/button>\r\n                                            <\/div>\r\n                                            <div class=\"quantity-controlsx\">\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, -1)\"\r\n                                                    disabled>\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                                <span class=\"quantity\">1<\/span>\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, 1)\">\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line>\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                            <\/div>\r\n                                        <\/div>\r\n\r\n                                    <\/div>\r\n                                    <div class=\"color-item\" data-product-id=\"9868\">\r\n                                        <div class=\"color-item-header\">\r\n                                            <div class=\"color-swatch\" style=\"background-color: #c9c2ba;\"><\/div>\r\n                                            <div class=\"color-info\">\r\n                                                <p class=\"color-name\">B11<\/p>\r\n                                                <p class=\"color-price\">32.00 \u20ac<\/p>\r\n                                            <\/div>\r\n                                            <div class=\"color-package-options\">\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '1kg', '32.00')\">1kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '3kg', '89.00')\">3kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '5kg', '140.00')\">5kg<\/button>\r\n                                            <\/div>\r\n                                            <div class=\"quantity-controlsx\">\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, -1)\"\r\n                                                    disabled>\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                                <span class=\"quantity\">1<\/span>\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, 1)\">\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line>\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                            <\/div>\r\n                                        <\/div>\r\n\r\n                                    <\/div>\r\n                                    <div class=\"color-item\" data-product-id=\"9738\">\r\n                                        <div class=\"color-item-header\">\r\n                                            <div class=\"color-swatch\" style=\"background-color: #e0dfdd;\"><\/div>\r\n                                            <div class=\"color-info\">\r\n                                                <p class=\"color-name\">B5<\/p>\r\n                                                <p class=\"color-price\">32.00 \u20ac<\/p>\r\n                                            <\/div>\r\n                                            <div class=\"color-package-options\">\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '1kg', '32.00')\">1kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '3kg', '89.00')\">3kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '5kg', '140.00')\">5kg<\/button>\r\n                                            <\/div>\r\n                                            <div class=\"quantity-controlsx\">\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, -1)\"\r\n                                                    disabled>\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                                <span class=\"quantity\">1<\/span>\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, 1)\">\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line>\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                            <\/div>\r\n                                        <\/div>\r\n\r\n                                    <\/div>\r\n                                <\/div>\r\n                            <\/div>\r\n\r\n                            <div class=\"collection-actions\">\r\n                                <!-- Add summary row for total price and m\u00b2 -->\r\n                                <div class=\"collection-summary\"\r\n                                    style=\"display:none;justify-content:space-between;margin-bottom:0.5rem;font-weight:500;flex-direction: column;\">\r\n                                    <span>\r\n                                        Gesamtpreis: <span class=\"collection-total-price\">0,00&nbsp;\u20ac<\/span>\r\n                                    <\/span>\r\n                                    <span>\r\n                                        Gesamtfl\u00e4che: <span class=\"collection-total-m2\">0&nbsp;m\u00b2<\/span>\r\n                                    <\/span>\r\n                                <\/div>\r\n                                <button class=\"button primary\">\r\n                                    <i class=\"fas fa-shopping-cart\"><\/i>\r\n                                    In den Warenkorb\r\n                                <\/button>\r\n                            <\/div>\r\n                            <a href=\"https:\/\/gobelka.com\/de\/belka-alle-produkte\/\" class=\"link-button\">\r\n                                Farben einzeln kaufen\r\n                                <i class=\"fas fa-arrow-right\"><\/i>\r\n                            <\/a>\r\n\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <div class=\"tab-content\" id=\"nordik-content\">\r\n                    <div class=\"collection-card\">\r\n                        <div class=\"collection-images\">\r\n                            <div class=\"main-image\">\r\n                                <img decoding=\"async\" src=\"https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/belka-tapete-mix-nordische-ruhe-5-1.jpg\"\r\n                                    alt=\"Nordische Ruhe\r\nDiese Kollektion ist von der minimalistischen \u00c4sthetik Skandinaviens inspiriert. Mit einer Palette aus k\u00fchlen Grau-, Wei\u00df- und Blaut\u00f6nen schafft sie eine ruhige und entspannende Atmosph\u00e4re. Perfekt f\u00fcr Schlafzimmer, Arbeitszimmer oder jeden Raum, in dem Sie eine friedliche Umgebung w\u00fcnschen.\">\r\n                            <\/div>\r\n                            <div class=\"detail-images\">\r\n                                <div class=\"detail-image\">\r\n                                    <img decoding=\"async\" src=\"https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/belka-tapete-mix-nordische-ruhe-3-1.jpg\"\r\n                                        alt=\"Nordische Ruhe\r\nDiese Kollektion ist von der minimalistischen \u00c4sthetik Skandinaviens inspiriert. Mit einer Palette aus k\u00fchlen Grau-, Wei\u00df- und Blaut\u00f6nen schafft sie eine ruhige und entspannende Atmosph\u00e4re. Perfekt f\u00fcr Schlafzimmer, Arbeitszimmer oder jeden Raum, in dem Sie eine friedliche Umgebung w\u00fcnschen.\">\r\n                                <\/div>\r\n                                <div class=\"detail-image\">\r\n                                    <img decoding=\"async\" src=\"https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/belka-tapete-mix-nordische-ruhe-2-1.jpg\"\r\n                                        alt=\"Nordische Ruhe\r\nDiese Kollektion ist von der minimalistischen \u00c4sthetik Skandinaviens inspiriert. Mit einer Palette aus k\u00fchlen Grau-, Wei\u00df- und Blaut\u00f6nen schafft sie eine ruhige und entspannende Atmosph\u00e4re. Perfekt f\u00fcr Schlafzimmer, Arbeitszimmer oder jeden Raum, in dem Sie eine friedliche Umgebung w\u00fcnschen.\">\r\n                                <\/div>\r\n                                <div class=\"detail-image\">\r\n                                    <img decoding=\"async\" src=\"https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/belka-tapete-mix-nordische-ruhe-1-1.jpg\"\r\n                                        alt=\"Nordische Ruhe\r\nDiese Kollektion ist von der minimalistischen \u00c4sthetik Skandinaviens inspiriert. Mit einer Palette aus k\u00fchlen Grau-, Wei\u00df- und Blaut\u00f6nen schafft sie eine ruhige und entspannende Atmosph\u00e4re. Perfekt f\u00fcr Schlafzimmer, Arbeitszimmer oder jeden Raum, in dem Sie eine friedliche Umgebung w\u00fcnschen.\">\r\n                                <\/div>\r\n                                <div class=\"detail-image\">\r\n                                    <img decoding=\"async\" src=\"https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/belka-tapete-mix-nordische-ruhe-4.jpg\"\r\n                                        alt=\"Nordische Ruhe\r\nDiese Kollektion ist von der minimalistischen \u00c4sthetik Skandinaviens inspiriert. Mit einer Palette aus k\u00fchlen Grau-, Wei\u00df- und Blaut\u00f6nen schafft sie eine ruhige und entspannende Atmosph\u00e4re. Perfekt f\u00fcr Schlafzimmer, Arbeitszimmer oder jeden Raum, in dem Sie eine friedliche Umgebung w\u00fcnschen.\">\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"collection-info\">\r\n                            <h3>Nordische Ruhe<\/h3>\r\n                            <p>\r\n                                Diese Kollektion ist von der minimalistischen \u00c4sthetik Skandinaviens inspiriert. Mit\r\n                                einer Palette aus k\u00fchlen Grau-, Wei\u00df- und Blaut\u00f6nen schafft sie eine ruhige und\r\n                                entspannende Atmosph\u00e4re. Perfekt f\u00fcr Schlafzimmer, Arbeitszimmer oder jeden Raum, in dem\r\n                                Sie eine friedliche Umgebung w\u00fcnschen.\r\n                            <\/p>\r\n                            <div class=\"collection-badges\">\r\n                                <span class=\"badge small\">Minimalistisch<\/span>\r\n                                <span class=\"badge small\">Beruhigend<\/span>\r\n                                <span class=\"badge small\">Zeitlos<\/span>\r\n                            <\/div>\r\n                            <div class=\"collection-colors\">\r\n                                <h4>Kollektionsfarben<\/h4>\r\n                                <div class=\"color-grid\">\r\n                                    <div class=\"color-item\" data-product-id=\"10100\">\r\n                                        <div class=\"color-item-header\">\r\n                                            <div class=\"color-swatch\" style=\"background-color: #8ea9c4;\"><\/div>\r\n                                            <div class=\"color-info\">\r\n                                                <p class=\"color-name\">B42<\/p>\r\n                                                <p class=\"color-price\">32.00 \u20ac<\/p>\r\n                                            <\/div>\r\n                                            <div class=\"color-package-options\">\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '1kg', '32.00')\">1kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '3kg', '89.00')\">3kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '5kg', '140.00')\">5kg<\/button>\r\n                                            <\/div>\r\n                                            <div class=\"quantity-controlsx\">\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, -1)\"\r\n                                                    disabled>\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                                <span class=\"quantity\">1<\/span>\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, 1)\">\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line>\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                            <\/div>\r\n                                        <\/div>\r\n\r\n                                    <\/div>\r\n                                    <div class=\"color-item\" data-product-id=\"9916\">\r\n                                        <div class=\"color-item-header\">\r\n                                            <div class=\"color-swatch\" style=\"background-color: #aeaeae;\"><\/div>\r\n                                            <div class=\"color-info\">\r\n                                                <p class=\"color-name\">B50<\/p>\r\n                                                <p class=\"color-price\">32.00 \u20ac<\/p>\r\n                                            <\/div>\r\n                                            <div class=\"color-package-options\">\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '1kg', '32.00')\">1kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '3kg', '89.00')\">3kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '5kg', '140.00')\">5kg<\/button>\r\n                                            <\/div>\r\n                                            <div class=\"quantity-controlsx\">\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, -1)\"\r\n                                                    disabled>\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                                <span class=\"quantity\">1<\/span>\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, 1)\">\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line>\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                            <\/div>\r\n                                        <\/div>\r\n\r\n\r\n                                    <\/div>\r\n                                    <div class=\"color-item\" data-product-id=\"10072\">\r\n                                        <div class=\"color-item-header\">\r\n                                            <div class=\"color-swatch\" style=\"background-color: #d7e2da;\"><\/div>\r\n                                            <div class=\"color-info\">\r\n                                                <p class=\"color-name\">B44<\/p>\r\n                                                <p class=\"color-price\">32.00 \u20ac<\/p>\r\n                                            <\/div>\r\n                                            <div class=\"color-package-options\">\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '1kg', '32.00')\">1kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '3kg', '89.00')\">3kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '5kg', '140.00')\">5kg<\/button>\r\n                                            <\/div>\r\n                                            <div class=\"quantity-controlsx\">\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, -1)\"\r\n                                                    disabled>\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                                <span class=\"quantity\">1<\/span>\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, 1)\">\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line>\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                            <\/div>\r\n                                        <\/div>\r\n\r\n                                    <\/div>\r\n                                    <div class=\"color-item\" data-product-id=\"9738\">\r\n                                        <div class=\"color-item-header\">\r\n                                            <div class=\"color-swatch\" style=\"background-color: #dfdedc;\"><\/div>\r\n                                            <div class=\"color-info\">\r\n                                                <p class=\"color-name\">B5<\/p>\r\n                                                <p class=\"color-price\">32.00 \u20ac<\/p>\r\n                                            <\/div>\r\n                                            <div class=\"color-package-options\">\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '1kg', '32.00')\">1kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '3kg', '89.00')\">3kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '5kg', '140.00')\">5kg<\/button>\r\n                                            <\/div>\r\n                                            <div class=\"quantity-controlsx\">\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, -1)\"\r\n                                                    disabled>\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                                <span class=\"quantity\">1<\/span>\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, 1)\">\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line>\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                            <\/div>\r\n                                        <\/div>\r\n\r\n                                    <\/div>\r\n                                <\/div>\r\n                            <\/div>\r\n\r\n                            <div class=\"collection-actions\">\r\n                                <!-- Add summary row for total price and m\u00b2 -->\r\n                                <div class=\"collection-summary\"\r\n                                    style=\"display:none;justify-content:space-between;margin-bottom:0.5rem;font-weight:500;flex-direction: column;\">\r\n                                    <span>\r\n                                        Gesamtpreis: <span class=\"collection-total-price\">0,00&nbsp;\u20ac<\/span>\r\n                                    <\/span>\r\n                                    <span>\r\n                                        Gesamtfl\u00e4che: <span class=\"collection-total-m2\">0&nbsp;m\u00b2<\/span>\r\n                                    <\/span>\r\n                                <\/div>\r\n                                <button class=\"button primary\">\r\n                                    <i class=\"fas fa-shopping-cart\"><\/i>\r\n                                    In den Warenkorb\r\n                                <\/button>\r\n\r\n                            <\/div>\r\n                            <a href=\"https:\/\/gobelka.com\/de\/belka-alle-produkte\/\" class=\"link-button\">\r\n                                Farben einzeln kaufen\r\n                                <i class=\"fas fa-arrow-right\"><\/i>\r\n                            <\/a>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <div class=\"tab-content\" id=\"bohem-content\">\r\n                    <div class=\"collection-card\">\r\n                        <div class=\"collection-images\">\r\n                            <div class=\"main-image\">\r\n                                <img decoding=\"async\" src=\"https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/belka-tapete-mix-bohemian-dream-1.jpg\"\r\n                                    alt=\"Bohemian Dream\r\nDiese lebendige Kollektion bringt die W\u00e4rme und Energie des Boho-Stils in Ihr Zuhause. Mit einer Mischung aus warmen Terrakotta-, Rost- und Violettt\u00f6nen schafft sie eine gem\u00fctliche, k\u00fcnstlerische Atmosph\u00e4re. Ideal f\u00fcr Wohnzimmer, Esszimmer oder kreative R\u00e4ume.\">\r\n                            <\/div>\r\n                            <div class=\"detail-images\">\r\n                                <div class=\"detail-image\">\r\n                                    <img decoding=\"async\" src=\"https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/belka-tapete-mix-bohemian-dream.jpg\"\r\n                                        alt=\"Bohemian Dream\r\nDiese lebendige Kollektion bringt die W\u00e4rme und Energie des Boho-Stils in Ihr Zuhause. Mit einer Mischung aus warmen Terrakotta-, Rost- und Violettt\u00f6nen schafft sie eine gem\u00fctliche, k\u00fcnstlerische Atmosph\u00e4re. Ideal f\u00fcr Wohnzimmer, Esszimmer oder kreative R\u00e4ume.\">\r\n                                <\/div>\r\n                                <div class=\"detail-image\">\r\n                                    <img decoding=\"async\" src=\"https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/belka-tapete-mix-bohemian-dream-2.jpg\"\r\n                                        alt=\"Bohemian Dream\r\nDiese lebendige Kollektion bringt die W\u00e4rme und Energie des Boho-Stils in Ihr Zuhause. Mit einer Mischung aus warmen Terrakotta-, Rost- und Violettt\u00f6nen schafft sie eine gem\u00fctliche, k\u00fcnstlerische Atmosph\u00e4re. Ideal f\u00fcr Wohnzimmer, Esszimmer oder kreative R\u00e4ume.\">\r\n                                <\/div>\r\n                                <div class=\"detail-image\">\r\n                                    <img decoding=\"async\" src=\"https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/belka-tapete-mix-bohemian-dream-4.jpg\"\r\n                                        alt=\"Bohemian Dream\r\nDiese lebendige Kollektion bringt die W\u00e4rme und Energie des Boho-Stils in Ihr Zuhause. Mit einer Mischung aus warmen Terrakotta-, Rost- und Violettt\u00f6nen schafft sie eine gem\u00fctliche, k\u00fcnstlerische Atmosph\u00e4re. Ideal f\u00fcr Wohnzimmer, Esszimmer oder kreative R\u00e4ume.\">\r\n                                <\/div>\r\n                                <div class=\"detail-image\">\r\n                                    <img decoding=\"async\" src=\"https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/belka-tapete-mix-bohemian-dream-3.jpg\"\r\n                                        alt=\"Bohemian Dream\r\nDiese lebendige Kollektion bringt die W\u00e4rme und Energie des Boho-Stils in Ihr Zuhause. Mit einer Mischung aus warmen Terrakotta-, Rost- und Violettt\u00f6nen schafft sie eine gem\u00fctliche, k\u00fcnstlerische Atmosph\u00e4re. Ideal f\u00fcr Wohnzimmer, Esszimmer oder kreative R\u00e4ume.\">\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"collection-info\">\r\n                            <h3>Bohemian Dream<\/h3>\r\n                            <p>\r\n                                Diese lebendige Kollektion bringt die W\u00e4rme und Energie des Boho-Stils in Ihr Zuhause.\r\n                                Mit einer Mischung aus warmen Terrakotta-, Rost- und Violettt\u00f6nen schafft sie eine\r\n                                gem\u00fctliche, k\u00fcnstlerische Atmosph\u00e4re. Ideal f\u00fcr Wohnzimmer, Esszimmer oder kreative\r\n                                R\u00e4ume.\r\n                            <\/p>\r\n                            <div class=\"collection-badges\">\r\n                                <span class=\"badge small\">Lebendig<\/span>\r\n                                <span class=\"badge small\">K\u00fcnstlerisch<\/span>\r\n                                <span class=\"badge small\">Warm<\/span>\r\n                            <\/div>\r\n                            <div class=\"collection-colors\">\r\n                                <h4>Kollektionsfarben<\/h4>\r\n                                <div class=\"color-grid\">\r\n                                    <div class=\"color-item\" data-product-id=\"9726\">\r\n                                        <div class=\"color-item-header\">\r\n                                            <div class=\"color-swatch\" style=\"background-color: #a89269;\"><\/div>\r\n                                            <div class=\"color-info\">\r\n                                                <p class=\"color-name\">B2<\/p>\r\n                                                <p class=\"color-price\">32.00 \u20ac<\/p>\r\n                                            <\/div>\r\n                                            <div class=\"color-package-options\">\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '1kg', '32.00')\">1kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '3kg', '89.00')\">3kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '5kg', '140.00')\">5kg<\/button>\r\n                                            <\/div>\r\n                                            <div class=\"quantity-controlsx\">\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, -1)\"\r\n                                                    disabled>\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                                <span class=\"quantity\">1<\/span>\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, 1)\">\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line>\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                            <\/div>\r\n                                        <\/div>\r\n\r\n\r\n                                    <\/div>\r\n                                    <div class=\"color-item\" data-product-id=\"9742\">\r\n                                        <div class=\"color-item-header\">\r\n                                            <div class=\"color-swatch\" style=\"background-color: #728c8b;\"><\/div>\r\n                                            <div class=\"color-info\">\r\n                                                <p class=\"color-name\">B60<\/p>\r\n                                                <p class=\"color-price\">32.00 \u20ac<\/p>\r\n                                            <\/div>\r\n                                            <div class=\"color-package-options\">\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '1kg', '32.00')\">1kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '3kg', '89.00')\">3kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '5kg', '140.00')\">5kg<\/button>\r\n                                            <\/div>\r\n                                            <div class=\"quantity-controlsx\">\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, -1)\"\r\n                                                    disabled>\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                                <span class=\"quantity\">1<\/span>\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, 1)\">\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line>\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                            <\/div>\r\n                                        <\/div>\r\n\r\n\r\n                                    <\/div>\r\n                                    <div class=\"color-item\" data-product-id=\"9734\">\r\n                                        <div class=\"color-item-header\">\r\n                                            <div class=\"color-swatch\" style=\"background-color: #dfd5c9;\"><\/div>\r\n                                            <div class=\"color-info\">\r\n                                                <p class=\"color-name\">B4<\/p>\r\n                                                <p class=\"color-price\">32.00 \u20ac<\/p>\r\n                                            <\/div>\r\n                                            <div class=\"color-package-options\">\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '1kg', '32.00')\">1kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '3kg', '89.00')\">3kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '5kg', '140.00')\">5kg<\/button>\r\n                                            <\/div>\r\n                                            <div class=\"quantity-controlsx\">\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, -1)\"\r\n                                                    disabled>\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                                <span class=\"quantity\">1<\/span>\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, 1)\">\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line>\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                            <\/div>\r\n                                        <\/div>\r\n\r\n\r\n                                    <\/div>\r\n                                    <div class=\"color-item\" data-product-id=\"10028\">\r\n                                        <div class=\"color-item-header\">\r\n                                            <div class=\"color-swatch\" style=\"background-color: #af5938;\"><\/div>\r\n                                            <div class=\"color-info\">\r\n                                                <p class=\"color-name\">B18<\/p>\r\n                                                <p class=\"color-price\">32.00 \u20ac<\/p>\r\n                                            <\/div>\r\n                                            <div class=\"color-package-options\">\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '1kg', '32.00')\">1kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '3kg', '89.00')\">3kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '5kg', '140.00')\">5kg<\/button>\r\n                                            <\/div>\r\n                                            <div class=\"quantity-controlsx\">\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, -1)\"\r\n                                                    disabled>\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                                <span class=\"quantity\">1<\/span>\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, 1)\">\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line>\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                            <\/div>\r\n                                        <\/div>\r\n\r\n                                    <\/div>\r\n                                <\/div>\r\n                            <\/div>\r\n\r\n                            <div class=\"collection-actions\">\r\n                                <!-- Add summary row for total price and m\u00b2 -->\r\n                                <div class=\"collection-summary\"\r\n                                    style=\"display:none;justify-content:space-between;margin-bottom:0.5rem;font-weight:500;flex-direction: column;\">\r\n                                    <span>\r\n                                        Gesamtpreis: <span class=\"collection-total-price\">0,00&nbsp;\u20ac<\/span>\r\n                                    <\/span>\r\n                                    <span>\r\n                                        Gesamtfl\u00e4che: <span class=\"collection-total-m2\">0&nbsp;m\u00b2<\/span>\r\n                                    <\/span>\r\n                                <\/div>\r\n                                <button class=\"button primary\">\r\n                                    <i class=\"fas fa-shopping-cart\"><\/i>\r\n                                    In den Warenkorb\r\n                                <\/button>\r\n                            <\/div>\r\n                            <a href=\"https:\/\/gobelka.com\/de\/belka-alle-produkte\/\" class=\"link-button\">\r\n                                Farben einzeln kaufen\r\n                                <i class=\"fas fa-arrow-right\"><\/i>\r\n                            <\/a>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <div class=\"tab-content\" id=\"modern-content\">\r\n                    <div class=\"collection-card\">\r\n                        <div class=\"collection-images\">\r\n                            <div class=\"main-image\">\r\n                                <img decoding=\"async\" src=\"https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/belka-mix-tapete-moderne-eleganz-3.jpg\"\r\n                                    alt=\"Moderne Eleganz\r\nDiese luxuri\u00f6se Kollektion verk\u00f6rpert zeitgen\u00f6ssische Eleganz mit einer Palette aus Schwarz, Wei\u00df, Grau und Gold. Sie schafft eine raffinierte und stilvolle Atmosph\u00e4re, die perfekt f\u00fcr moderne Wohnr\u00e4ume, B\u00fcros oder Empfangsbereiche geeignet ist.\">\r\n                            <\/div>\r\n                            <div class=\"detail-images\">\r\n                                <div class=\"detail-image\">\r\n                                    <img decoding=\"async\" src=\"https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/belka-mix-tapete-moderne-eleganz-4.jpg\"\r\n                                        alt=\"Moderne Eleganz\r\nDiese luxuri\u00f6se Kollektion verk\u00f6rpert zeitgen\u00f6ssische Eleganz mit einer Palette aus Schwarz, Wei\u00df, Grau und Gold. Sie schafft eine raffinierte und stilvolle Atmosph\u00e4re, die perfekt f\u00fcr moderne Wohnr\u00e4ume, B\u00fcros oder Empfangsbereiche geeignet ist.\">\r\n                                <\/div>\r\n                                <div class=\"detail-image\">\r\n                                    <img decoding=\"async\" src=\"https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/belka-mix-tapete-moderne-eleganz.jpg\"\r\n                                        alt=\"Moderne Eleganz\r\nDiese luxuri\u00f6se Kollektion verk\u00f6rpert zeitgen\u00f6ssische Eleganz mit einer Palette aus Schwarz, Wei\u00df, Grau und Gold. Sie schafft eine raffinierte und stilvolle Atmosph\u00e4re, die perfekt f\u00fcr moderne Wohnr\u00e4ume, B\u00fcros oder Empfangsbereiche geeignet ist.\">\r\n                                <\/div>\r\n                                <div class=\"detail-image\">\r\n                                    <img decoding=\"async\" src=\"https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/belka-mix-tapete-moderne-eleganz-2.jpg\"\r\n                                        alt=\"Moderne Eleganz\r\nDiese luxuri\u00f6se Kollektion verk\u00f6rpert zeitgen\u00f6ssische Eleganz mit einer Palette aus Schwarz, Wei\u00df, Grau und Gold. Sie schafft eine raffinierte und stilvolle Atmosph\u00e4re, die perfekt f\u00fcr moderne Wohnr\u00e4ume, B\u00fcros oder Empfangsbereiche geeignet ist.\">\r\n                                <\/div>\r\n                                <div class=\"detail-image\">\r\n                                    <img decoding=\"async\" src=\"https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/belka-mix-tapete-moderne-eleganz-1.jpg\"\r\n                                        alt=\"Moderne Eleganz\r\nDiese luxuri\u00f6se Kollektion verk\u00f6rpert zeitgen\u00f6ssische Eleganz mit einer Palette aus Schwarz, Wei\u00df, Grau und Gold. Sie schafft eine raffinierte und stilvolle Atmosph\u00e4re, die perfekt f\u00fcr moderne Wohnr\u00e4ume, B\u00fcros oder Empfangsbereiche geeignet ist.\">\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                        <div class=\"collection-info\">\r\n                            <h3>Moderne Eleganz<\/h3>\r\n                            <p>\r\n                                Diese luxuri\u00f6se Kollektion verk\u00f6rpert zeitgen\u00f6ssische Eleganz mit einer Palette aus\r\n                                Schwarz, Wei\u00df, Grau und Gold. Sie schafft eine raffinierte und stilvolle Atmosph\u00e4re, die\r\n                                perfekt f\u00fcr moderne Wohnr\u00e4ume, B\u00fcros oder Empfangsbereiche geeignet ist.\r\n                            <\/p>\r\n                            <div class=\"collection-badges\">\r\n                                <span class=\"badge small\">Luxuri\u00f6s<\/span>\r\n                                <span class=\"badge small\">Zeitgen\u00f6ssisch<\/span>\r\n                                <span class=\"badge small\">Raffiniert<\/span>\r\n                            <\/div>\r\n                            <div class=\"collection-colors\">\r\n                                <h4>Kollektionsfarben<\/h4>\r\n                                <div class=\"color-grid\">\r\n                                    <div class=\"color-item\" data-product-id=\"9996\">\r\n                                        <div class=\"color-item-header\">\r\n                                            <div class=\"color-swatch\" style=\"background-color: #4a5364;\"><\/div>\r\n                                            <div class=\"color-info\">\r\n                                                <p class=\"color-name\">B46<\/p>\r\n                                                <p class=\"color-price\">32.00 \u20ac<\/p>\r\n                                            <\/div>\r\n                                            <div class=\"color-package-options\">\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '1kg', '32.00')\">1kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '3kg', '89.00')\">3kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '5kg', '140.00')\">5kg<\/button>\r\n                                            <\/div>\r\n                                            <div class=\"quantity-controlsx\">\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, -1)\"\r\n                                                    disabled>\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                                <span class=\"quantity\">1<\/span>\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, 1)\">\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line>\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                            <\/div>\r\n                                        <\/div>\r\n\r\n                                    <\/div>\r\n                                    <div class=\"color-item\" data-product-id=\"9916\">\r\n                                        <div class=\"color-item-header\">\r\n                                            <div class=\"color-swatch\" style=\"background-color: #b2b2b2;\"><\/div>\r\n                                            <div class=\"color-info\">\r\n                                                <p class=\"color-name\">B50<\/p>\r\n                                                <p class=\"color-price\">32.00 \u20ac<\/p>\r\n                                            <\/div>\r\n                                            <div class=\"color-package-options\">\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '1kg', '32.00')\">1kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '3kg', '89.00')\">3kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '5kg', '140.00')\">5kg<\/button>\r\n                                            <\/div>\r\n                                            <div class=\"quantity-controlsx\">\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, -1)\"\r\n                                                    disabled>\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                                <span class=\"quantity\">1<\/span>\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, 1)\">\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line>\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                            <\/div>\r\n                                        <\/div>\r\n\r\n\r\n                                    <\/div>\r\n                                    <div class=\"color-item\" data-product-id=\"9738\">\r\n                                        <div class=\"color-item-header\">\r\n                                            <div class=\"color-swatch\" style=\"background-color: #e1e0de;\"><\/div>\r\n                                            <div class=\"color-info\">\r\n                                                <p class=\"color-name\">B5<\/p>\r\n                                                <p class=\"color-price\">32.00 \u20ac<\/p>\r\n                                            <\/div>\r\n                                            <div class=\"color-package-options\">\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '1kg', '32.00')\">1kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '3kg', '89.00')\">3kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '5kg', '140.00')\">5kg<\/button>\r\n                                            <\/div>\r\n                                            <div class=\"quantity-controlsx\">\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, -1)\"\r\n                                                    disabled>\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                                <span class=\"quantity\">1<\/span>\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, 1)\">\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                        <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line>\r\n                                                        <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                            <\/div>\r\n                                        <\/div>\r\n\r\n                                    <\/div>\r\n                                    <div class=\"color-item\" data-product-id=\"9722\">\r\n                                        <div class=\"color-item-header\">\r\n                                            <div class=\"color-swatch\" style=\"background-color: #d6c79c;\"><\/div>\r\n                                            <div class=\"color-info\">\r\n                                                <p class=\"color-name\">B1<\/p>\r\n                                                <p class=\"color-price\">32.00 \u20ac<\/p>\r\n                                            <\/div>\r\n                                            <div class=\"color-package-options\">\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '1kg', '32.00')\">1kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '3kg', '89.00')\">3kg<\/button>\r\n                                                <button class=\"package-option\"\r\n                                                    onclick=\"selectPackage(this, '5kg', '140.00')\">5kg<\/button>\r\n                                            <\/div>\r\n                                            <div class=\"quantity-controlsx\">\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, -1)\"\r\n                                                    disabled>\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                    <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line>\r\n                                                    <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                                <span class=\"quantity\">1<\/span>\r\n                                                <button class=\"quantity-button\" onclick=\"updateQuantity(this, 1)\">\r\n                                                    <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\"\r\n                                                        stroke=\"currentColor\" stroke-width=\"2\">\r\n                                                    <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"><\/line>\r\n                                                    <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"><\/line>\r\n                                                    <\/svg>\r\n                                                <\/button>\r\n                                            <\/div>\r\n                                        <\/div>\r\n\r\n\r\n                                    <\/div>\r\n                                <\/div>\r\n                            <\/div>\r\n\r\n                            <div class=\"collection-actions\">\r\n                                <!-- Add summary row for total price and m\u00b2 -->\r\n                                <div class=\"collection-summary\"\r\n                                    style=\"display:none;justify-content:space-between;margin-bottom:0.5rem;font-weight:500;flex-direction: column;\">\r\n                                    <span>\r\n                                        Gesamtpreis: <span class=\"collection-total-price\">0,00&nbsp;\u20ac<\/span>\r\n                                    <\/span>\r\n                                    <span>\r\n                                        Gesamtfl\u00e4che: <span class=\"collection-total-m2\">0&nbsp;m\u00b2<\/span>\r\n                                    <\/span>\r\n                                <\/div>\r\n                                <button class=\"button primary\">\r\n                                    <i class=\"fas fa-shopping-cart\"><\/i>\r\n                                    In den Warenkorb\r\n                                <\/button>\r\n                            <\/div>\r\n                            <a href=\"https:\/\/gobelka.com\/de\/belka-alle-produkte\/\" class=\"link-button\">\r\n                                Farben einzeln kaufen\r\n                                <i class=\"fas fa-arrow-right\"><\/i>\r\n                            <\/a>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/section>\r\n\r\n\r\n    <!-- Create Your Own Mix Section -->\r\n    <section id=\"create-mix\" class=\"create-mix-section\">\r\n        <div class=\"container\">\r\n            <div class=\"section-header\">\r\n                <h2>Erstellen Sie Ihre eigene Belka Mix-Kombination<\/h2>\r\n                <p id=\"mix-text-anchor\">\r\n                    Sie k\u00f6nnen aus 60 verschiedenen Belka-Farben w\u00e4hlen und Ihre eigene einzigartige Kombination\r\n                    erstellen.\r\n                    Mischen Sie die Farben und schaffen Sie eine spezielle Atmosph\u00e4re f\u00fcr Ihr Zuhause.\r\n                <\/p>\r\n            <\/div>\r\n\r\n            <div id=\"html-block-anchor\">\r\n                <style>.elementor-51591 .elementor-element.elementor-element-d87ff2f{--display:flex;}<\/style>\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"51591\" class=\"elementor elementor-51591\" data-elementor-post-type=\"cms_block\">\n\t\t\t\t<div class=\"wd-negative-gap elementor-element elementor-element-d87ff2f e-flex e-con-boxed e-con e-parent\" data-id=\"d87ff2f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-99844c6 elementor-widget elementor-widget-html\" data-id=\"99844c6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- BELKA Mix v4 Production Rebuild \u2014 Elementor HTML Widget Ready -->\r\n<style>\r\n  .bmx4 {\r\n    --bmx-bg: #f6f7f5;\r\n    --bmx-surface: #ffffff;\r\n    --bmx-surface-soft: #f1f4f1;\r\n    --bmx-surface-warm: #f7f1ef;\r\n    --bmx-text: #1e1b17;\r\n    --bmx-muted: #5d625b;\r\n    --bmx-line: #d7ddd6;\r\n    --bmx-line-strong: #b7c0b7;\r\n    --bmx-red: #a60f1d;\r\n    --bmx-red-dark: #7d0a14;\r\n    --bmx-dark: #2a2722;\r\n    --bmx-success: #17633c;\r\n    --bmx-warning: #8a5a00;\r\n    --bmx-shadow: 0 10px 24px rgba(24, 28, 24, .07);\r\n    --bmx-shadow-soft: 0 4px 14px rgba(24, 28, 24, .05);\r\n    --bmx-radius: 5px;\r\n    --bmx-radius-sm: 4px;\r\n    --bmx-gap: clamp(12px, 1.8vw, 20px);\r\n    color: var(--bmx-text);\r\n    background: var(--bmx-bg);\r\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Arial, sans-serif;\r\n    line-height: 1.45;\r\n    inline-size: 100%;\r\n    padding: clamp(12px, 2.2vw, 22px) 0;\r\n    overflow-x: hidden;\r\n    overflow-x: clip;\r\n    isolation: isolate;\r\n  }\r\n\r\n  .bmx4 *,\r\n  .bmx4 *::before,\r\n  .bmx4 *::after {\r\n    box-sizing: border-box;\r\n  }\r\n\r\n  .bmx4 button,\r\n  .bmx4 input {\r\n    font: inherit;\r\n  }\r\n\r\n  .bmx4 button {\r\n    -webkit-tap-highlight-color: transparent;\r\n    touch-action: manipulation;\r\n  }\r\n\r\n  .bmx4 img {\r\n    display: block;\r\n    max-inline-size: 100%;\r\n  }\r\n\r\n  .bmx4__anchor {\r\n    display: block;\r\n    block-size: 1px;\r\n    scroll-margin-top: 96px;\r\n  }\r\n\r\n  .bmx4__shell {\r\n    inline-size: min(1260px, calc(100% - 28px));\r\n    margin-inline: auto;\r\n  }\r\n\r\n  .bmx4__mobile-header {\r\n    display: none;\r\n    position: sticky;\r\n    inset-block-start: 8px;\r\n    z-index: 30;\r\n    padding: 10px;\r\n    margin-block-end: 12px;\r\n    background: rgba(255, 255, 255, .96);\r\n    border: 1px solid rgba(215, 221, 214, .92);\r\n    border-radius: var(--bmx-radius);\r\n    box-shadow: var(--bmx-shadow-soft);\r\n    -webkit-backdrop-filter: blur(10px);\r\n    backdrop-filter: blur(10px);\r\n  }\r\n\r\n  .bmx4__mobile-title-row,\r\n  .bmx4__card-header,\r\n  .bmx4__box-head,\r\n  .bmx4__selected-head,\r\n  .bmx4__modal-head {\r\n    display: flex;\r\n    align-items: flex-start;\r\n    justify-content: space-between;\r\n    gap: 12px;\r\n  }\r\n\r\n  .bmx4__title-group {\r\n    min-inline-size: 0;\r\n  }\r\n\r\n  .bmx4__kicker {\r\n    display: block;\r\n    color: var(--bmx-red-dark);\r\n    font-size: .74rem;\r\n    font-weight: 850;\r\n    letter-spacing: .035em;\r\n    text-transform: uppercase;\r\n    margin-block-end: 3px;\r\n  }\r\n\r\n  .bmx4__title,\r\n  .bmx4__card-title,\r\n  .bmx4__modal-title {\r\n    margin: 0;\r\n    font-weight: 850;\r\n    line-height: 1.14;\r\n    letter-spacing: 0;\r\n  }\r\n\r\n  .bmx4__title {\r\n    font-size: clamp(1.2rem, 2.4vw, 1.65rem);\r\n  }\r\n\r\n  .bmx4__card-title {\r\n    font-size: clamp(1.08rem, 1.8vw, 1.34rem);\r\n  }\r\n\r\n  .bmx4__modal-title {\r\n    font-size: 1.06rem;\r\n  }\r\n\r\n  .bmx4__text {\r\n    margin: 6px 0 0;\r\n    color: var(--bmx-muted);\r\n    font-size: .92rem;\r\n  }\r\n\r\n  .bmx4__progress {\r\n    display: grid;\r\n    grid-template-columns: repeat(3, minmax(0, 1fr));\r\n    gap: 6px;\r\n    margin-block-start: 10px;\r\n  }\r\n\r\n  .bmx4__step-pill {\r\n    min-block-size: 34px;\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    border: 1px solid var(--bmx-line);\r\n    border-radius: var(--bmx-radius-sm);\r\n    background: #fff;\r\n    color: var(--bmx-muted);\r\n    font-size: .78rem;\r\n    font-weight: 800;\r\n    text-align: center;\r\n  }\r\n\r\n  .bmx4[data-step=\"1\"] .bmx4__step-pill[data-step=\"1\"],\r\n  .bmx4[data-step=\"2\"] .bmx4__step-pill[data-step=\"2\"],\r\n  .bmx4[data-step=\"3\"] .bmx4__step-pill[data-step=\"3\"] {\r\n    color: #fff;\r\n    background: var(--bmx-red);\r\n    border-color: var(--bmx-red);\r\n  }\r\n\r\n  .bmx4__notices {\r\n    display: grid;\r\n    gap: 8px;\r\n    margin-block-end: 12px;\r\n  }\r\n\r\n  .bmx4__notice {\r\n    padding: 10px 12px;\r\n    border-radius: var(--bmx-radius);\r\n    border: 1px solid var(--bmx-line);\r\n    background: #fff;\r\n    color: var(--bmx-text);\r\n    font-size: .92rem;\r\n  }\r\n\r\n  .bmx4__notice--success {\r\n    border-color: rgba(23, 99, 60, .34);\r\n    background: #eff8f2;\r\n  }\r\n\r\n  .bmx4__notice--error {\r\n    border-color: rgba(179, 13, 27, .34);\r\n    background: #fff1f2;\r\n  }\r\n\r\n  .bmx4__notice--warning {\r\n    border-color: rgba(138, 90, 0, .36);\r\n    background: #fff8e8;\r\n  }\r\n\r\n  .bmx4__notice a {\r\n    color: var(--bmx-red-dark);\r\n    font-weight: 900;\r\n  }\r\n\r\n  .bmx4__layout {\r\n    display: grid;\r\n    grid-template-columns: minmax(300px, .9fr) minmax(0, 1.25fr);\r\n    gap: var(--bmx-gap);\r\n    align-items: start;\r\n  }\r\n\r\n  .bmx4__main {\r\n    display: grid;\r\n    gap: var(--bmx-gap);\r\n    min-inline-size: 0;\r\n  }\r\n\r\n  .bmx4__side,\r\n  .bmx4__section {\r\n    min-inline-size: 0;\r\n  }\r\n\r\n  .bmx4__card {\r\n    background: var(--bmx-surface);\r\n    border: 1px solid rgba(215, 221, 214, .94);\r\n    border-radius: var(--bmx-radius);\r\n    box-shadow: var(--bmx-shadow-soft);\r\n    padding: clamp(14px, 1.8vw, 20px);\r\n  }\r\n\r\n  .bmx4__card-header {\r\n    margin-block-end: 16px;\r\n  }\r\n\r\n  .bmx4__actions,\r\n  .bmx4__toolbar,\r\n  .bmx4__nav {\r\n    display: flex;\r\n    flex-wrap: wrap;\r\n    align-items: center;\r\n    gap: 8px;\r\n  }\r\n\r\n  .bmx4__toolbar {\r\n    justify-content: flex-end;\r\n  }\r\n\r\n  .bmx4__side .bmx4__card-header {\r\n    display: block;\r\n  }\r\n\r\n  .bmx4__side .bmx4__actions {\r\n    margin-block-start: 12px;\r\n  }\r\n\r\n  .bmx4__side .bmx4__actions .bmx4__btn {\r\n    flex: 1 1 150px;\r\n  }\r\n\r\n  .bmx4__nav {\r\n    margin-block-start: 14px;\r\n  }\r\n\r\n  .bmx4__btn {\r\n    appearance: none;\r\n    min-block-size: 42px;\r\n    display: inline-flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    gap: 8px;\r\n    padding: 9px 15px;\r\n    border: 1px solid var(--bmx-line);\r\n    border-radius: var(--bmx-radius-sm);\r\n    background: var(--bmx-surface);\r\n    color: var(--bmx-text);\r\n    cursor: pointer;\r\n    font-size: .9rem;\r\n    font-weight: 800;\r\n    line-height: 1;\r\n    text-decoration: none;\r\n    transition: transform .16s ease, background-color .16s ease, border-color .16s ease, opacity .16s ease;\r\n  }\r\n\r\n  .bmx4__btn:hover:not(:disabled) {\r\n    transform: translateY(-1px);\r\n    border-color: var(--bmx-line-strong);\r\n    background: #f9faf8;\r\n  }\r\n\r\n  .bmx4__btn:focus-visible,\r\n  .bmx4__count-btn:focus-visible,\r\n  .bmx4__package-btn:focus-visible,\r\n  .bmx4__product-item:focus-visible,\r\n  .bmx4__search-input:focus-visible {\r\n    outline: 3px solid rgba(179, 13, 27, .22);\r\n    outline-offset: 2px;\r\n  }\r\n\r\n  .bmx4__btn:disabled,\r\n  .bmx4__count-btn:disabled,\r\n  .bmx4__package-btn:disabled,\r\n  .bmx4__product-item:disabled {\r\n    opacity: .48;\r\n    cursor: not-allowed;\r\n    transform: none;\r\n  }\r\n\r\n  .bmx4__btn--primary {\r\n    color: #fff;\r\n    background: var(--bmx-red);\r\n    border-color: var(--bmx-red);\r\n  }\r\n\r\n  .bmx4__btn--primary:hover:not(:disabled) {\r\n    background: var(--bmx-red-dark);\r\n    border-color: var(--bmx-red-dark);\r\n  }\r\n\r\n  .bmx4__btn--dark {\r\n    color: #fff;\r\n    background: var(--bmx-dark);\r\n    border-color: var(--bmx-dark);\r\n  }\r\n\r\n  .bmx4__btn--dark:hover:not(:disabled) {\r\n    color: #fff;\r\n    background: #171410;\r\n    border-color: #171410;\r\n  }\r\n\r\n  .bmx4__btn--ghost {\r\n    background: transparent;\r\n  }\r\n\r\n  .bmx4__btn--small {\r\n    min-block-size: 40px;\r\n    padding: 7px 11px;\r\n    font-size: .82rem;\r\n  }\r\n\r\n  .bmx4__icon-btn {\r\n    inline-size: 42px;\r\n    block-size: 42px;\r\n    padding: 0;\r\n  }\r\n\r\n  .bmx4__icon {\r\n    inline-size: 17px;\r\n    block-size: 17px;\r\n    flex: 0 0 auto;\r\n  }\r\n\r\n  .bmx4__preview-fullscreen {\r\n    min-block-size: 42px;\r\n    padding-inline: 13px;\r\n  }\r\n\r\n  .bmx4__label {\r\n    display: block;\r\n    margin-block-end: 6px;\r\n    font-weight: 900;\r\n  }\r\n\r\n  .bmx4__help {\r\n    margin: 0 0 10px;\r\n    color: var(--bmx-muted);\r\n    font-size: .88rem;\r\n  }\r\n\r\n  .bmx4__count-grid {\r\n    display: grid;\r\n    grid-template-columns: repeat(4, minmax(0, 1fr));\r\n    gap: 8px;\r\n    margin-block: 10px 16px;\r\n  }\r\n\r\n  .bmx4__count-btn {\r\n    appearance: none;\r\n    min-block-size: 44px;\r\n    border: 1px solid var(--bmx-line);\r\n    border-radius: var(--bmx-radius);\r\n    background: #fff;\r\n    color: var(--bmx-text);\r\n    cursor: pointer;\r\n    font-weight: 850;\r\n  }\r\n\r\n  .bmx4__count-btn[aria-pressed=\"true\"] {\r\n    color: #fff;\r\n    background: var(--bmx-dark);\r\n    border-color: var(--bmx-dark);\r\n  }\r\n\r\n  .bmx4__boxes,\r\n  .bmx4__selected-list,\r\n  .bmx4__product-list {\r\n    display: grid;\r\n    gap: 10px;\r\n  }\r\n\r\n  .bmx4__box,\r\n  .bmx4__selected-product {\r\n    padding: 11px;\r\n    border: 1px solid var(--bmx-line);\r\n    border-radius: var(--bmx-radius);\r\n    background: #fff;\r\n    box-shadow: 0 1px 0 rgba(24, 28, 24, .03);\r\n  }\r\n\r\n  .bmx4__box-head,\r\n  .bmx4__selected-head {\r\n    align-items: center;\r\n    margin-block-end: 8px;\r\n  }\r\n\r\n  .bmx4__box-title,\r\n  .bmx4__selected-title {\r\n    font-size: .92rem;\r\n    font-weight: 850;\r\n  }\r\n\r\n  .bmx4__mini-actions {\r\n    display: flex;\r\n    align-items: center;\r\n    gap: 4px;\r\n  }\r\n\r\n  .bmx4__mini-btn {\r\n    appearance: none;\r\n    inline-size: 34px;\r\n    block-size: 34px;\r\n    display: inline-flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    padding: 0;\r\n    border: 1px solid transparent;\r\n    border-color: var(--bmx-line);\r\n    border-radius: var(--bmx-radius-sm);\r\n    background: #fff;\r\n    color: var(--bmx-text);\r\n    cursor: pointer;\r\n  }\r\n\r\n  .bmx4__mini-btn:hover:not(:disabled) {\r\n    background: var(--bmx-surface-warm);\r\n  }\r\n\r\n  .bmx4__mini-btn[aria-pressed=\"true\"] {\r\n    color: var(--bmx-red);\r\n  }\r\n\r\n  .bmx4__product-row {\r\n    display: grid;\r\n    grid-template-columns: 64px minmax(0, 1fr);\r\n    gap: 12px;\r\n    align-items: center;\r\n  }\r\n\r\n  .bmx4__thumb {\r\n    inline-size: 64px;\r\n    block-size: 64px;\r\n    object-fit: cover;\r\n    border: 1px solid rgba(183, 192, 183, .76);\r\n    border-radius: var(--bmx-radius-sm);\r\n    background: var(--bmx-surface-soft);\r\n  }\r\n\r\n  .bmx4__product-name {\r\n    margin: 0 0 3px;\r\n    color: var(--bmx-text);\r\n    font-weight: 800;\r\n    overflow-wrap: anywhere;\r\n  }\r\n\r\n  .bmx4__product-meta {\r\n    margin: 0;\r\n    color: var(--bmx-muted);\r\n    font-size: .86rem;\r\n  }\r\n\r\n  .bmx4__product-tools {\r\n    margin-block-start: 8px;\r\n  }\r\n\r\n  .bmx4__empty-box,\r\n  .bmx4__note {\r\n    padding: 10px;\r\n    border: 1px dashed var(--bmx-line-strong);\r\n    border-radius: var(--bmx-radius);\r\n    background: var(--bmx-surface-soft);\r\n  }\r\n\r\n  .bmx4__empty-box .bmx4__btn {\r\n    inline-size: 100%;\r\n    min-block-size: 40px;\r\n  }\r\n\r\n  .bmx4__empty-box .bmx4__btn--dark {\r\n    color: var(--bmx-text);\r\n    background: #fff;\r\n    border-color: var(--bmx-line-strong);\r\n  }\r\n\r\n  .bmx4__empty-box .bmx4__btn--dark:hover:not(:disabled) {\r\n    color: #fff;\r\n    background: var(--bmx-dark);\r\n    border-color: var(--bmx-dark);\r\n  }\r\n\r\n  .bmx4__mineral {\r\n    margin-block-start: 14px;\r\n    padding-block-start: 14px;\r\n    border-block-start: 1px solid rgba(215, 221, 214, .86);\r\n  }\r\n\r\n  .bmx4__check {\r\n    display: flex;\r\n    align-items: flex-start;\r\n    gap: 10px;\r\n    min-block-size: 44px;\r\n    padding-block: 5px;\r\n    color: var(--bmx-text);\r\n    cursor: pointer;\r\n    font-weight: 800;\r\n  }\r\n\r\n  .bmx4__check input {\r\n    appearance: none;\r\n    position: relative;\r\n    flex: 0 0 24px;\r\n    inline-size: 24px;\r\n    block-size: 24px;\r\n    margin: 0;\r\n    border: 1px solid var(--bmx-line-strong);\r\n    border-radius: var(--bmx-radius-sm);\r\n    background: #fff;\r\n  }\r\n\r\n  .bmx4__check input:checked {\r\n    background: var(--bmx-red);\r\n    border-color: var(--bmx-red);\r\n  }\r\n\r\n  .bmx4__check input:checked::after {\r\n    content: \"\";\r\n    position: absolute;\r\n    inset-block-start: 4px;\r\n    inset-inline-start: 8px;\r\n    inline-size: 7px;\r\n    block-size: 12px;\r\n    border: solid #fff;\r\n    border-width: 0 2px 2px 0;\r\n    transform: rotate(45deg);\r\n  }\r\n\r\n  .bmx4__mineral-box {\r\n    margin-block-start: 10px;\r\n  }\r\n\r\n  .bmx4__mineral-box[hidden] {\r\n    display: none !important;\r\n  }\r\n\r\n  .bmx4__result-wrap {\r\n    position: relative;\r\n    min-block-size: clamp(290px, 42vw, 520px);\r\n    display: grid;\r\n    place-items: center;\r\n    overflow: hidden;\r\n    border: 1px solid var(--bmx-line);\r\n    border-radius: var(--bmx-radius);\r\n    background:\r\n      linear-gradient(0deg, rgba(255, 255, 255, .78), rgba(255, 255, 255, .78)),\r\n      repeating-linear-gradient(45deg, rgba(183, 192, 183, .16) 0, rgba(183, 192, 183, .16) 1px, transparent 1px, transparent 12px);\r\n  }\r\n\r\n  .bmx4__placeholder {\r\n    display: grid;\r\n    place-items: center;\r\n    gap: 8px;\r\n    padding: 24px;\r\n    color: var(--bmx-muted);\r\n    text-align: center;\r\n  }\r\n\r\n  .bmx4__placeholder strong {\r\n    color: var(--bmx-text);\r\n    font-size: 1rem;\r\n  }\r\n\r\n  .bmx4__result-image {\r\n    inline-size: 100%;\r\n    block-size: 100%;\r\n    max-block-size: 620px;\r\n    object-fit: contain;\r\n    transform-origin: center;\r\n    transition: transform .18s ease;\r\n  }\r\n\r\n  .bmx4__result-image[hidden],\r\n  .bmx4__placeholder[hidden] {\r\n    display: none !important;\r\n  }\r\n\r\n  .bmx4__processing {\r\n    position: absolute;\r\n    inset: 0;\r\n    z-index: 2;\r\n    display: grid;\r\n    place-items: center;\r\n    background: rgba(255, 255, 255, .86);\r\n    text-align: center;\r\n  }\r\n\r\n  .bmx4__processing[hidden] {\r\n    display: none !important;\r\n  }\r\n\r\n  .bmx4__spinner {\r\n    inline-size: 44px;\r\n    block-size: 44px;\r\n    margin-inline: auto;\r\n    border: 4px solid var(--bmx-line);\r\n    border-block-start-color: var(--bmx-red);\r\n    border-radius: 999px;\r\n    animation: bmx4-spin 1s linear infinite;\r\n  }\r\n\r\n  @keyframes bmx4-spin {\r\n    to {\r\n      transform: rotate(360deg);\r\n    }\r\n  }\r\n\r\n  .bmx4__disclaimer,\r\n  .bmx4__note {\r\n    margin-block-start: 12px;\r\n    color: var(--bmx-muted);\r\n    background: var(--bmx-surface-soft);\r\n    border: 1px solid rgba(183, 192, 183, .72);\r\n    border-radius: var(--bmx-radius);\r\n    padding: 9px 11px;\r\n    font-size: .88rem;\r\n  }\r\n\r\n  .bmx4__disclaimer strong,\r\n  .bmx4__note strong {\r\n    color: var(--bmx-text);\r\n  }\r\n\r\n  .bmx4__package-grid {\r\n    display: grid;\r\n    grid-template-columns: repeat(3, minmax(0, 1fr));\r\n    gap: 8px;\r\n    margin-block-start: 10px;\r\n  }\r\n\r\n  .bmx4__package-btn {\r\n    appearance: none;\r\n    min-block-size: 42px;\r\n    border: 1px solid var(--bmx-line);\r\n    border-radius: var(--bmx-radius);\r\n    background: #fff;\r\n    color: var(--bmx-text);\r\n    cursor: pointer;\r\n    font-weight: 850;\r\n  }\r\n\r\n  .bmx4__package-btn[aria-pressed=\"true\"] {\r\n    color: #fff;\r\n    background: var(--bmx-dark);\r\n    border-color: var(--bmx-dark);\r\n  }\r\n\r\n  .bmx4__qty-row {\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    gap: 12px;\r\n    margin-block-start: 10px;\r\n    padding: 8px;\r\n    border: 1px solid rgba(183, 192, 183, .72);\r\n    border-radius: var(--bmx-radius);\r\n  }\r\n\r\n  .bmx4__qty-value {\r\n    min-inline-size: 2ch;\r\n    text-align: center;\r\n    font-weight: 950;\r\n  }\r\n\r\n  .bmx4__totals {\r\n    display: grid;\r\n    grid-template-columns: 1fr 1fr;\r\n    gap: 10px;\r\n    margin-block: 14px;\r\n  }\r\n\r\n  .bmx4__total-box {\r\n    padding: 12px;\r\n    border: 1px solid rgba(183, 192, 183, .72);\r\n    border-radius: var(--bmx-radius);\r\n    background: var(--bmx-surface-soft);\r\n    text-align: center;\r\n  }\r\n\r\n  .bmx4__total-label {\r\n    margin: 0 0 4px;\r\n    color: var(--bmx-muted);\r\n    font-size: .86rem;\r\n  }\r\n\r\n  .bmx4__total-value {\r\n    margin: 0;\r\n    color: var(--bmx-text);\r\n    font-size: 1.18rem;\r\n    font-weight: 850;\r\n  }\r\n\r\n  .bmx4__cart-row {\r\n    display: grid;\r\n    gap: 8px;\r\n  }\r\n\r\n  .bmx4__cart-row > .bmx4__btn {\r\n    inline-size: 100%;\r\n  }\r\n\r\n  .bmx4__modal,\r\n  .bmx4__fullscreen {\r\n    position: fixed;\r\n    inset: 0;\r\n    z-index: 99999;\r\n  }\r\n\r\n  .bmx4__modal[hidden],\r\n  .bmx4__fullscreen[hidden] {\r\n    display: none !important;\r\n  }\r\n\r\n  .bmx4__modal {\r\n    display: grid;\r\n    place-items: center;\r\n    padding: 16px;\r\n    background: rgba(18, 17, 16, .62);\r\n  }\r\n\r\n  .bmx4__modal-panel {\r\n    inline-size: min(580px, 100%);\r\n    max-block-size: min(720px, 90vh);\r\n    display: flex;\r\n    flex-direction: column;\r\n    overflow: hidden;\r\n    background: #fff;\r\n    border-radius: var(--bmx-radius);\r\n    box-shadow: 0 18px 52px rgba(18, 17, 16, .22);\r\n  }\r\n\r\n  .bmx4__modal-head {\r\n    align-items: center;\r\n    padding: 16px;\r\n    border-block-end: 1px solid var(--bmx-line);\r\n  }\r\n\r\n  .bmx4__modal-body {\r\n    min-block-size: 0;\r\n    display: grid;\r\n    grid-template-rows: auto 1fr;\r\n    gap: 12px;\r\n    padding: 16px;\r\n    overflow: hidden;\r\n  }\r\n\r\n  .bmx4__search-input {\r\n    inline-size: 100%;\r\n    min-block-size: 46px;\r\n    padding: 10px 12px;\r\n    border: 1px solid var(--bmx-line);\r\n    border-radius: var(--bmx-radius);\r\n    outline: none;\r\n  }\r\n\r\n  .bmx4__search-input:focus {\r\n    border-color: var(--bmx-red);\r\n  }\r\n\r\n  .bmx4__product-list {\r\n    max-block-size: 56vh;\r\n    overflow: auto;\r\n    padding-inline-end: 4px;\r\n  }\r\n\r\n  .bmx4__product-item {\r\n    appearance: none;\r\n    inline-size: 100%;\r\n    display: grid;\r\n    grid-template-columns: 58px minmax(0, 1fr) auto;\r\n    gap: 12px;\r\n    align-items: center;\r\n    padding: 10px;\r\n    border: 1px solid var(--bmx-line);\r\n    border-radius: var(--bmx-radius);\r\n    background: #fff;\r\n    color: var(--bmx-text);\r\n    cursor: pointer;\r\n    text-align: start;\r\n  }\r\n\r\n  .bmx4__product-item:hover:not(:disabled) {\r\n    background: #f8faf8;\r\n    border-color: var(--bmx-dark);\r\n  }\r\n\r\n  .bmx4__product-item .bmx4__thumb {\r\n    inline-size: 58px;\r\n    block-size: 58px;\r\n  }\r\n\r\n  .bmx4__badge {\r\n    white-space: nowrap;\r\n    color: var(--bmx-muted);\r\n    font-size: .78rem;\r\n    font-weight: 850;\r\n  }\r\n\r\n  .bmx4__fullscreen {\r\n    display: grid;\r\n    place-items: center;\r\n    padding: 56px 16px 16px;\r\n    background: rgba(255, 255, 255, .98);\r\n  }\r\n\r\n  .bmx4__fullscreen-close {\r\n    position: absolute;\r\n    inset-block-start: 14px;\r\n    inset-inline-end: 14px;\r\n  }\r\n\r\n  .bmx4__fullscreen-img {\r\n    max-inline-size: 100%;\r\n    max-block-size: calc(100vh - 86px);\r\n    object-fit: contain;\r\n    transform-origin: center;\r\n  }\r\n\r\n  .bmx4__mobile-only {\r\n    display: none !important;\r\n  }\r\n\r\n  .bmx4__mix-chips {\r\n    display: none;\r\n  }\r\n\r\n  @media (max-width: 900px) {\r\n    .bmx4__layout {\r\n      grid-template-columns: 1fr;\r\n    }\r\n  }\r\n\r\n  @media (max-width: 767px) {\r\n    .bmx4 {\r\n      padding-block-start: 8px;\r\n    }\r\n\r\n    .bmx4__mobile-header {\r\n      display: block;\r\n    }\r\n\r\n    .bmx4__desktop-only {\r\n      display: none !important;\r\n    }\r\n\r\n    .bmx4__btn.bmx4__mobile-only {\r\n      display: inline-flex !important;\r\n    }\r\n\r\n    .bmx4__nav.bmx4__mobile-only {\r\n      display: flex !important;\r\n    }\r\n\r\n    .bmx4__section {\r\n      display: none;\r\n    }\r\n\r\n    .bmx4[data-step=\"1\"] .bmx4__section[data-section=\"1\"],\r\n    .bmx4[data-step=\"2\"] .bmx4__section[data-section=\"2\"],\r\n    .bmx4[data-step=\"3\"] .bmx4__section[data-section=\"3\"] {\r\n      display: block;\r\n    }\r\n\r\n    .bmx4__mobile-title-row,\r\n    .bmx4__card-header {\r\n      display: block;\r\n    }\r\n\r\n    .bmx4__actions,\r\n    .bmx4__toolbar {\r\n      margin-block-start: 10px;\r\n    }\r\n\r\n    .bmx4__mobile-header .bmx4__btn span {\r\n      display: none;\r\n    }\r\n\r\n    .bmx4__mobile-header .bmx4__btn--small {\r\n      inline-size: 40px;\r\n      min-block-size: 40px;\r\n      padding: 0;\r\n    }\r\n\r\n    .bmx4__mini-btn {\r\n      inline-size: 40px;\r\n      block-size: 40px;\r\n    }\r\n\r\n    .bmx4__result-wrap {\r\n      min-block-size: clamp(300px, 58vh, 390px);\r\n    }\r\n\r\n    .bmx4__totals {\r\n      grid-template-columns: 1fr;\r\n    }\r\n\r\n    .bmx4__product-item {\r\n      grid-template-columns: 54px minmax(0, 1fr);\r\n    }\r\n\r\n    .bmx4__badge {\r\n      grid-column: 2;\r\n    }\r\n  }\r\n\r\n  \/* 2026 UX polish layer: keeps the production logic intact, modernizes layout and touch behavior. *\/\r\n  .bmx4 {\r\n    --bmx-bg: #faf9f6;\r\n    --bmx-surface: #ffffff;\r\n    --bmx-surface-soft: #f4f1ea;\r\n    --bmx-surface-warm: #fff5f2;\r\n    --bmx-text: #201f1b;\r\n    --bmx-muted: #66655f;\r\n    --bmx-line: #e3dfd6;\r\n    --bmx-line-strong: #c8c1b4;\r\n    --bmx-red: #b30d1b;\r\n    --bmx-red-dark: #870914;\r\n    --bmx-dark: #24231f;\r\n    --bmx-shadow: 0 18px 44px rgba(34, 31, 25, .08);\r\n    --bmx-shadow-soft: 0 8px 24px rgba(34, 31, 25, .06);\r\n    --bmx-radius: 8px;\r\n    --bmx-radius-sm: 6px;\r\n    background:\r\n      linear-gradient(180deg, #fff 0, var(--bmx-bg) 34%, #fff 100%);\r\n    padding: clamp(18px, 3vw, 34px) 0;\r\n  }\r\n\r\n  .bmx4__shell {\r\n    inline-size: min(1240px, calc(100% - 32px));\r\n  }\r\n\r\n  .bmx4__layout {\r\n    grid-template-columns: minmax(330px, 380px) minmax(0, 1fr);\r\n    gap: clamp(14px, 2vw, 24px);\r\n  }\r\n\r\n  .bmx4__side {\r\n    position: sticky;\r\n    inset-block-start: 18px;\r\n  }\r\n\r\n  .bmx4__card {\r\n    border-color: rgba(210, 204, 193, .9);\r\n    box-shadow: var(--bmx-shadow-soft);\r\n    padding: clamp(16px, 2vw, 22px);\r\n  }\r\n\r\n  .bmx4__main {\r\n    gap: clamp(14px, 2vw, 22px);\r\n  }\r\n\r\n  .bmx4__card-header {\r\n    align-items: flex-start;\r\n    margin-block-end: 18px;\r\n  }\r\n\r\n  .bmx4__kicker {\r\n    color: var(--bmx-red);\r\n    font-size: .72rem;\r\n    letter-spacing: .08em;\r\n  }\r\n\r\n  .bmx4__card-title,\r\n  .bmx4__title {\r\n    color: var(--bmx-text);\r\n    font-weight: 900;\r\n  }\r\n\r\n  .bmx4__text,\r\n  .bmx4__help {\r\n    max-inline-size: 62ch;\r\n  }\r\n\r\n  .bmx4__btn,\r\n  .bmx4__count-btn,\r\n  .bmx4__package-btn,\r\n  .bmx4__mini-btn,\r\n  .bmx4__product-item {\r\n    border-color: var(--bmx-line);\r\n    transition: border-color .18s ease, background-color .18s ease, color .18s ease, transform .18s ease, box-shadow .18s ease;\r\n  }\r\n\r\n  .bmx4__btn {\r\n    min-block-size: 44px;\r\n    border-radius: var(--bmx-radius-sm);\r\n    font-weight: 850;\r\n  }\r\n\r\n  .bmx4__btn:hover:not(:disabled),\r\n  .bmx4__product-item:hover:not(:disabled) {\r\n    box-shadow: 0 8px 22px rgba(34, 31, 25, .08);\r\n  }\r\n\r\n  .bmx4__btn--primary,\r\n  .bmx4__count-btn[aria-pressed=\"true\"],\r\n  .bmx4__package-btn[aria-pressed=\"true\"] {\r\n    box-shadow: 0 10px 22px rgba(179, 13, 27, .16);\r\n  }\r\n\r\n  .bmx4__btn--dark {\r\n    background: var(--bmx-dark);\r\n  }\r\n\r\n  .bmx4__count-grid {\r\n    grid-template-columns: repeat(4, minmax(56px, 1fr));\r\n    gap: 6px;\r\n    padding: 4px;\r\n    border: 1px solid var(--bmx-line);\r\n    border-radius: var(--bmx-radius);\r\n    background: var(--bmx-surface-soft);\r\n  }\r\n\r\n  .bmx4__count-btn {\r\n    min-block-size: 42px;\r\n    border-color: transparent;\r\n    background: transparent;\r\n  }\r\n\r\n  .bmx4__box,\r\n  .bmx4__selected-product {\r\n    padding: 12px;\r\n    border-color: rgba(210, 204, 193, .92);\r\n    box-shadow: none;\r\n  }\r\n\r\n  .bmx4__box:has(.bmx4__product-row),\r\n  .bmx4__selected-product {\r\n    background: linear-gradient(180deg, #fff, #fffaf8);\r\n  }\r\n\r\n  .bmx4__product-row {\r\n    grid-template-columns: 58px minmax(0, 1fr);\r\n    gap: 10px;\r\n  }\r\n\r\n  .bmx4__thumb {\r\n    inline-size: 58px;\r\n    block-size: 58px;\r\n    border-radius: 7px;\r\n  }\r\n\r\n  .bmx4__product-name {\r\n    line-height: 1.25;\r\n  }\r\n\r\n  .bmx4__mini-btn,\r\n  .bmx4__icon-btn {\r\n    inline-size: 40px;\r\n    block-size: 40px;\r\n    min-block-size: 40px;\r\n  }\r\n\r\n  .bmx4__mini-btn {\r\n    color: var(--bmx-muted);\r\n    font-size: .78rem;\r\n    font-weight: 850;\r\n    line-height: 1;\r\n  }\r\n\r\n  .bmx4__result-wrap {\r\n    min-block-size: clamp(420px, 50vw, 640px);\r\n    border-color: rgba(210, 204, 193, .95);\r\n    background:\r\n      radial-gradient(circle at 50% 18%, rgba(255, 255, 255, .88), rgba(255, 255, 255, .55) 48%, rgba(244, 241, 234, .88) 100%),\r\n      linear-gradient(135deg, rgba(32, 31, 27, .04) 25%, transparent 25% 50%, rgba(32, 31, 27, .04) 50% 75%, transparent 75%);\r\n    background-size: auto, 22px 22px;\r\n  }\r\n\r\n  .bmx4__result-image {\r\n    padding: clamp(8px, 1.2vw, 16px);\r\n  }\r\n\r\n  .bmx4__placeholder {\r\n    max-inline-size: 360px;\r\n    margin-inline: auto;\r\n  }\r\n\r\n  .bmx4__placeholder strong {\r\n    font-size: 1.05rem;\r\n  }\r\n\r\n  .bmx4__disclaimer,\r\n  .bmx4__note {\r\n    border-style: solid;\r\n    background: #fffbf5;\r\n  }\r\n\r\n  .bmx4__package-grid {\r\n    grid-template-columns: repeat(auto-fit, minmax(92px, 1fr));\r\n  }\r\n\r\n  .bmx4__package-btn {\r\n    min-block-size: 44px;\r\n    padding-inline: 8px;\r\n  }\r\n\r\n  .bmx4__qty-row {\r\n    justify-content: space-between;\r\n    border-color: var(--bmx-line);\r\n    background: #fff;\r\n  }\r\n\r\n  .bmx4__qty-value {\r\n    font-size: 1.05rem;\r\n  }\r\n\r\n  .bmx4__total-box {\r\n    text-align: start;\r\n    background: #fff;\r\n  }\r\n\r\n  .bmx4__total-value {\r\n    font-size: clamp(1.12rem, 2vw, 1.35rem);\r\n  }\r\n\r\n  .bmx4__modal {\r\n    background: rgba(24, 23, 21, .58);\r\n    -webkit-backdrop-filter: blur(8px);\r\n    backdrop-filter: blur(8px);\r\n  }\r\n\r\n  .bmx4__modal-panel {\r\n    border-radius: var(--bmx-radius);\r\n    box-shadow: 0 28px 80px rgba(18, 17, 16, .28);\r\n  }\r\n\r\n  .bmx4__search-input {\r\n    min-block-size: 50px;\r\n    background: var(--bmx-surface-soft);\r\n  }\r\n\r\n  .bmx4__product-list {\r\n    scrollbar-width: thin;\r\n    scrollbar-color: var(--bmx-line-strong) transparent;\r\n  }\r\n\r\n  .bmx4__product-item {\r\n    min-block-size: 78px;\r\n    padding: 10px;\r\n  }\r\n\r\n  @media (max-width: 900px) {\r\n    .bmx4__side {\r\n      position: static;\r\n    }\r\n\r\n    .bmx4__result-wrap {\r\n      min-block-size: clamp(360px, 62vw, 560px);\r\n    }\r\n  }\r\n\r\n  @media (max-width: 767px) {\r\n    .bmx4 {\r\n      padding-block: 8px 18px;\r\n      background: #fff;\r\n    }\r\n\r\n    .bmx4__shell {\r\n      inline-size: min(100% - 18px, 560px);\r\n    }\r\n\r\n    .bmx4__mobile-header {\r\n      inset-block-start: max(6px, env(safe-area-inset-top));\r\n      padding: 9px;\r\n      margin-block-end: 10px;\r\n      border-radius: var(--bmx-radius);\r\n      box-shadow: 0 8px 26px rgba(31, 29, 24, .1);\r\n    }\r\n\r\n    .bmx4__mobile-title-row {\r\n      display: grid;\r\n      grid-template-columns: minmax(0, 1fr) auto;\r\n      align-items: center;\r\n      gap: 8px;\r\n    }\r\n\r\n    .bmx4__mobile-header .bmx4__title {\r\n      font-size: 1rem;\r\n      line-height: 1.16;\r\n    }\r\n\r\n    .bmx4__mobile-header .bmx4__kicker {\r\n      font-size: .66rem;\r\n      margin-block-end: 1px;\r\n    }\r\n\r\n    .bmx4__mobile-header .bmx4__actions {\r\n      margin: 0;\r\n      flex-wrap: nowrap;\r\n      gap: 6px;\r\n    }\r\n\r\n    .bmx4__progress {\r\n      gap: 4px;\r\n      padding: 4px;\r\n      border-radius: var(--bmx-radius);\r\n      background: var(--bmx-surface-soft);\r\n    }\r\n\r\n    .bmx4__step-pill {\r\n      min-block-size: 30px;\r\n      border-color: transparent;\r\n      background: transparent;\r\n      font-size: .72rem;\r\n    }\r\n\r\n    .bmx4[data-step=\"1\"] .bmx4__step-pill[data-step=\"1\"],\r\n    .bmx4[data-step=\"2\"] .bmx4__step-pill[data-step=\"2\"],\r\n    .bmx4[data-step=\"3\"] .bmx4__step-pill[data-step=\"3\"] {\r\n      background: var(--bmx-dark);\r\n      border-color: var(--bmx-dark);\r\n      box-shadow: none;\r\n    }\r\n\r\n    .bmx4__card {\r\n      padding: 14px;\r\n      box-shadow: none;\r\n    }\r\n\r\n    .bmx4__card-header {\r\n      margin-block-end: 14px;\r\n    }\r\n\r\n    .bmx4__card-title {\r\n      font-size: 1.12rem;\r\n    }\r\n\r\n    .bmx4__text,\r\n    .bmx4__help {\r\n      font-size: .86rem;\r\n    }\r\n\r\n    .bmx4__actions,\r\n    .bmx4__toolbar {\r\n      gap: 6px;\r\n    }\r\n\r\n    .bmx4__toolbar {\r\n      display: grid;\r\n      grid-template-columns: repeat(4, 1fr);\r\n    }\r\n\r\n    .bmx4__toolbar .bmx4__icon-btn {\r\n      inline-size: 100%;\r\n    }\r\n\r\n    .bmx4__count-grid {\r\n      margin-block: 8px 12px;\r\n    }\r\n\r\n    .bmx4__boxes,\r\n    .bmx4__selected-list,\r\n    .bmx4__product-list {\r\n      gap: 8px;\r\n    }\r\n\r\n    .bmx4__box,\r\n    .bmx4__selected-product {\r\n      padding: 10px;\r\n    }\r\n\r\n    .bmx4__product-row {\r\n      grid-template-columns: 52px minmax(0, 1fr);\r\n      gap: 9px;\r\n    }\r\n\r\n    .bmx4__thumb,\r\n    .bmx4__product-item .bmx4__thumb {\r\n      inline-size: 52px;\r\n      block-size: 52px;\r\n    }\r\n\r\n    .bmx4__product-tools .bmx4__btn {\r\n      inline-size: 100%;\r\n    }\r\n\r\n    .bmx4__empty-box .bmx4__btn,\r\n    .bmx4__mobile-only.bmx4__btn,\r\n    .bmx4__nav .bmx4__btn,\r\n    .bmx4__cart-row > .bmx4__btn {\r\n      inline-size: 100%;\r\n    }\r\n\r\n    .bmx4__nav {\r\n      gap: 8px;\r\n    }\r\n\r\n    .bmx4__result-wrap {\r\n      min-block-size: min(62dvh, 430px);\r\n      max-block-size: 430px;\r\n    }\r\n\r\n    .bmx4__result-image {\r\n      padding: 6px;\r\n    }\r\n\r\n    .bmx4__disclaimer,\r\n    .bmx4__note {\r\n      font-size: .82rem;\r\n    }\r\n\r\n    .bmx4__package-grid {\r\n      grid-template-columns: repeat(3, minmax(0, 1fr));\r\n    }\r\n\r\n    .bmx4__package-btn {\r\n      font-size: .82rem;\r\n      min-block-size: 42px;\r\n    }\r\n\r\n    .bmx4__modal {\r\n      align-items: end;\r\n      padding: 0;\r\n    }\r\n\r\n    .bmx4__modal-panel {\r\n      inline-size: 100%;\r\n      max-block-size: min(88dvh, 720px);\r\n      border-end-start-radius: 0;\r\n      border-end-end-radius: 0;\r\n    }\r\n\r\n    .bmx4__modal-head {\r\n      padding: 12px 12px 10px;\r\n    }\r\n\r\n    .bmx4__modal-body {\r\n      padding: 0 12px 12px;\r\n      gap: 10px;\r\n    }\r\n\r\n    .bmx4__product-list {\r\n      max-block-size: calc(88dvh - 128px);\r\n      padding-block-end: max(8px, env(safe-area-inset-bottom));\r\n    }\r\n\r\n    .bmx4__product-item {\r\n      grid-template-columns: 52px minmax(0, 1fr) auto;\r\n      min-block-size: 72px;\r\n    }\r\n\r\n    .bmx4__badge {\r\n      grid-column: auto;\r\n      font-size: .72rem;\r\n    }\r\n  }\r\n\r\n  \/* Overflow guard for narrow Elementor\/mobile containers. *\/\r\n  .bmx4,\r\n  .bmx4__shell,\r\n  .bmx4__layout,\r\n  .bmx4__main,\r\n  .bmx4__side,\r\n  .bmx4__section,\r\n  .bmx4__card,\r\n  .bmx4__box,\r\n  .bmx4__selected-product,\r\n  .bmx4__modal-panel,\r\n  .bmx4__product-row,\r\n  .bmx4__product-item,\r\n  .bmx4__title-group,\r\n  .bmx4__product-tools,\r\n  .bmx4__selected-list,\r\n  .bmx4__boxes {\r\n    max-inline-size: 100%;\r\n    min-inline-size: 0;\r\n  }\r\n\r\n  .bmx4__product-name,\r\n  .bmx4__product-meta,\r\n  .bmx4__text,\r\n  .bmx4__help,\r\n  .bmx4__badge,\r\n  .bmx4__btn,\r\n  .bmx4__package-btn {\r\n    overflow-wrap: anywhere;\r\n  }\r\n\r\n  @media (max-width: 767px) {\r\n    .bmx4__shell {\r\n      inline-size: calc(100% - 16px);\r\n      max-inline-size: calc(100dvw - 16px);\r\n    }\r\n\r\n    .bmx4__mobile-title-row {\r\n      grid-template-columns: minmax(0, 1fr) minmax(86px, auto);\r\n    }\r\n\r\n    .bmx4__mobile-header .bmx4__actions {\r\n      inline-size: 86px;\r\n      justify-content: end;\r\n    }\r\n\r\n    .bmx4__mobile-header .bmx4__btn--small {\r\n      flex: 0 0 40px;\r\n      inline-size: 40px;\r\n      max-inline-size: 40px;\r\n    }\r\n\r\n    .bmx4__product-item {\r\n      grid-template-columns: 52px minmax(0, 1fr);\r\n      column-gap: 9px;\r\n      row-gap: 6px;\r\n    }\r\n\r\n    .bmx4__product-item .bmx4__badge {\r\n      grid-column: 2;\r\n      justify-self: start;\r\n      white-space: normal;\r\n      line-height: 1.15;\r\n    }\r\n\r\n    .bmx4__package-grid {\r\n      grid-template-columns: repeat(3, minmax(0, 1fr));\r\n    }\r\n\r\n    .bmx4__package-btn,\r\n    .bmx4__count-btn {\r\n      padding-inline: 4px;\r\n      min-inline-size: 0;\r\n    }\r\n\r\n    .bmx4__modal-panel {\r\n      inline-size: 100%;\r\n      max-inline-size: 100dvw;\r\n    }\r\n  }\r\n\r\n  \/* Mobile redesign: compact wizard, full-screen picker, bottom actions. *\/\r\n  @media (max-width: 767px) {\r\n    .bmx4 {\r\n      --bmx-bg: #ffffff;\r\n      --bmx-surface-soft: #f7f5f0;\r\n      --bmx-line: #e7e1d7;\r\n      background: #fff;\r\n      padding: 0 0 calc(88px + env(safe-area-inset-bottom));\r\n      overflow-x: clip;\r\n    }\r\n\r\n    .bmx4__anchor {\r\n      scroll-margin-top: 0;\r\n    }\r\n\r\n    .bmx4__shell {\r\n      inline-size: 100%;\r\n      max-inline-size: 100%;\r\n      padding-inline: 10px;\r\n    }\r\n\r\n    .bmx4__mobile-header {\r\n      inset-block-start: 0;\r\n      margin: 0 -10px 10px;\r\n      padding: max(8px, env(safe-area-inset-top)) 10px 9px;\r\n      border-width: 0 0 1px;\r\n      border-radius: 0;\r\n      box-shadow: 0 8px 18px rgba(32, 31, 27, .08);\r\n    }\r\n\r\n    .bmx4__mobile-title-row {\r\n      grid-template-columns: minmax(0, 1fr) auto;\r\n      gap: 8px;\r\n    }\r\n\r\n    .bmx4__mobile-header .bmx4__title {\r\n      font-size: .98rem;\r\n      line-height: 1.12;\r\n      white-space: nowrap;\r\n      overflow: hidden;\r\n      text-overflow: ellipsis;\r\n    }\r\n\r\n    .bmx4__mobile-header .bmx4__actions {\r\n      inline-size: auto;\r\n      max-inline-size: 164px;\r\n      gap: 5px;\r\n    }\r\n\r\n    .bmx4__mobile-header .bmx4__btn--small {\r\n      max-inline-size: none;\r\n      inline-size: auto;\r\n      block-size: 38px;\r\n      min-block-size: 38px;\r\n      flex-basis: auto;\r\n      gap: 4px;\r\n      padding-inline: 10px;\r\n      border-radius: 999px;\r\n      box-shadow: none;\r\n      font-size: .76rem;\r\n    }\r\n\r\n    .bmx4__mobile-header .bmx4__btn span {\r\n      display: inline !important;\r\n    }\r\n\r\n    .bmx4__mobile-header .bmx4__btn span[aria-hidden=\"true\"] {\r\n      font-size: .86rem;\r\n      line-height: 1;\r\n    }\r\n\r\n    .bmx4__progress {\r\n      grid-template-columns: repeat(3, minmax(0, 1fr));\r\n      gap: 5px;\r\n      margin-block-start: 8px;\r\n      padding: 3px;\r\n      border: 1px solid var(--bmx-line);\r\n      border-radius: 999px;\r\n      background: var(--bmx-surface-soft);\r\n    }\r\n\r\n    .bmx4__step-pill {\r\n      min-block-size: 30px;\r\n      border: 0;\r\n      border-radius: 999px;\r\n      background: transparent;\r\n      color: var(--bmx-muted);\r\n      font-size: .72rem;\r\n      font-weight: 900;\r\n    }\r\n\r\n    .bmx4[data-step=\"1\"] .bmx4__step-pill[data-step=\"1\"],\r\n    .bmx4[data-step=\"2\"] .bmx4__step-pill[data-step=\"2\"],\r\n    .bmx4[data-step=\"3\"] .bmx4__step-pill[data-step=\"3\"] {\r\n      background: var(--bmx-red);\r\n      border: 0;\r\n      color: #fff;\r\n    }\r\n\r\n    .bmx4__notices {\r\n      margin-block: 8px;\r\n    }\r\n\r\n    .bmx4__notice {\r\n      border-radius: 8px;\r\n      font-size: .86rem;\r\n    }\r\n\r\n    .bmx4__layout,\r\n    .bmx4__main {\r\n      display: block;\r\n    }\r\n\r\n    .bmx4__card {\r\n      padding: 14px 0 0;\r\n      border: 0;\r\n      border-radius: 0;\r\n      box-shadow: none;\r\n      background: transparent;\r\n    }\r\n\r\n    .bmx4__card-header {\r\n      display: block;\r\n      margin-block-end: 12px;\r\n    }\r\n\r\n    .bmx4__kicker {\r\n      font-size: .66rem;\r\n    }\r\n\r\n    .bmx4__card-title {\r\n      font-size: 1.18rem;\r\n      line-height: 1.12;\r\n    }\r\n\r\n    .bmx4__text,\r\n    .bmx4__help {\r\n      font-size: .84rem;\r\n      line-height: 1.42;\r\n    }\r\n\r\n    .bmx4__label {\r\n      font-size: .9rem;\r\n    }\r\n\r\n    .bmx4__count-grid {\r\n      gap: 4px;\r\n      margin-block: 8px 12px;\r\n      padding: 4px;\r\n      border-radius: 999px;\r\n    }\r\n\r\n    .bmx4__count-btn {\r\n      min-block-size: 40px;\r\n      border-radius: 999px;\r\n      font-size: .95rem;\r\n    }\r\n\r\n    .bmx4__boxes,\r\n    .bmx4__selected-list {\r\n      gap: 8px;\r\n    }\r\n\r\n    .bmx4__box,\r\n    .bmx4__selected-product {\r\n      padding: 11px;\r\n      border: 1px solid var(--bmx-line);\r\n      border-radius: 8px;\r\n      background: #fff;\r\n    }\r\n\r\n    .bmx4__box-head,\r\n    .bmx4__selected-head {\r\n      margin-block-end: 8px;\r\n    }\r\n\r\n    .bmx4__box-title {\r\n      font-size: .86rem;\r\n    }\r\n\r\n    .bmx4__mini-actions {\r\n      gap: 5px;\r\n    }\r\n\r\n    .bmx4__mini-btn {\r\n      inline-size: 36px;\r\n      block-size: 36px;\r\n      min-block-size: 36px;\r\n      border-radius: 999px;\r\n      font-size: .74rem;\r\n    }\r\n\r\n    .bmx4__product-row {\r\n      grid-template-columns: 54px minmax(0, 1fr);\r\n      gap: 10px;\r\n    }\r\n\r\n    .bmx4__thumb {\r\n      inline-size: 54px;\r\n      block-size: 54px;\r\n      border-radius: 8px;\r\n    }\r\n\r\n    .bmx4__product-name {\r\n      font-size: .92rem;\r\n      line-height: 1.2;\r\n    }\r\n\r\n    .bmx4__product-meta {\r\n      font-size: .8rem;\r\n    }\r\n\r\n    .bmx4__product-tools {\r\n      margin-block-start: 7px;\r\n    }\r\n\r\n    .bmx4__product-tools .bmx4__btn,\r\n    .bmx4__empty-box .bmx4__btn {\r\n      min-block-size: 40px;\r\n      inline-size: 100%;\r\n      border-radius: 999px;\r\n    }\r\n\r\n    .bmx4__mineral {\r\n      margin-block-start: 12px;\r\n      padding-block-start: 12px;\r\n    }\r\n\r\n    .bmx4__check {\r\n      align-items: center;\r\n      padding: 10px;\r\n      border: 1px solid var(--bmx-line);\r\n      border-radius: 8px;\r\n      background: var(--bmx-surface-soft);\r\n      font-size: .9rem;\r\n    }\r\n\r\n    .bmx4__result-wrap {\r\n      min-block-size: 0;\r\n      block-size: min(64dvh, 430px);\r\n      border-radius: 8px;\r\n    }\r\n\r\n    .bmx4__placeholder {\r\n      padding: 18px;\r\n    }\r\n\r\n    .bmx4__placeholder strong {\r\n      font-size: .98rem;\r\n    }\r\n\r\n    .bmx4__placeholder span {\r\n      font-size: .84rem;\r\n    }\r\n\r\n    .bmx4__toolbar {\r\n      display: grid;\r\n      grid-template-columns: 1fr;\r\n      gap: 6px;\r\n      margin-block-start: 10px;\r\n    }\r\n\r\n    .bmx4__toolbar .bmx4__zoom-btn {\r\n      display: none !important;\r\n    }\r\n\r\n    .bmx4__toolbar .bmx4__preview-fullscreen {\r\n      inline-size: 100%;\r\n      block-size: 40px;\r\n      min-block-size: 40px;\r\n      border-radius: 999px;\r\n    }\r\n\r\n    .bmx4__mix-chips.bmx4__mobile-only {\r\n      display: grid !important;\r\n      gap: 8px;\r\n      margin-block-start: 10px;\r\n    }\r\n\r\n    .bmx4__mix-chip {\r\n      width: 100%;\r\n      min-width: 0;\r\n      min-block-size: 58px;\r\n      display: grid;\r\n      grid-template-columns: 42px minmax(0, 1fr) auto;\r\n      align-items: center;\r\n      gap: 9px;\r\n      padding: 8px;\r\n      border: 1px solid var(--bmx-line);\r\n      border-radius: 8px;\r\n      background: #fff;\r\n      color: var(--bmx-text);\r\n      text-align: start;\r\n    }\r\n\r\n    .bmx4__mix-chip-img {\r\n      inline-size: 42px;\r\n      block-size: 42px;\r\n      object-fit: cover;\r\n      border: 1px solid var(--bmx-line);\r\n      border-radius: 7px;\r\n      background: var(--bmx-surface-soft);\r\n    }\r\n\r\n    .bmx4__mix-chip-title {\r\n      display: block;\r\n      overflow: hidden;\r\n      color: var(--bmx-text);\r\n      font-size: .86rem;\r\n      font-weight: 850;\r\n      line-height: 1.18;\r\n      text-overflow: ellipsis;\r\n      white-space: nowrap;\r\n    }\r\n\r\n    .bmx4__mix-chip-meta {\r\n      display: block;\r\n      margin-block-start: 2px;\r\n      color: var(--bmx-muted);\r\n      font-size: .72rem;\r\n      line-height: 1.2;\r\n    }\r\n\r\n    .bmx4__mix-chip-action {\r\n      padding: 5px 8px;\r\n      border-radius: 999px;\r\n      background: var(--bmx-surface-soft);\r\n      color: var(--bmx-text);\r\n      font-size: .7rem;\r\n      font-weight: 900;\r\n      white-space: nowrap;\r\n    }\r\n\r\n    .bmx4__disclaimer,\r\n    .bmx4__note {\r\n      margin-block-start: 10px;\r\n      border-radius: 8px;\r\n      font-size: .8rem;\r\n      line-height: 1.38;\r\n    }\r\n\r\n    .bmx4__package-grid {\r\n      grid-template-columns: repeat(3, minmax(0, 1fr));\r\n      gap: 6px;\r\n    }\r\n\r\n    .bmx4__package-btn {\r\n      min-block-size: 40px;\r\n      border-radius: 999px;\r\n      font-size: .78rem;\r\n    }\r\n\r\n    .bmx4__qty-row {\r\n      min-block-size: 44px;\r\n      margin-block-start: 8px;\r\n      border-radius: 999px;\r\n      background: var(--bmx-surface-soft);\r\n    }\r\n\r\n    .bmx4__totals {\r\n      grid-template-columns: 1fr 1fr;\r\n      gap: 8px;\r\n    }\r\n\r\n    .bmx4__total-box {\r\n      padding: 11px;\r\n      border-radius: 8px;\r\n    }\r\n\r\n    .bmx4__total-label {\r\n      font-size: .74rem;\r\n    }\r\n\r\n    .bmx4__total-value {\r\n      font-size: 1rem;\r\n    }\r\n\r\n    .bmx4__nav.bmx4__mobile-only,\r\n    .bmx4__cart-row {\r\n      position: sticky;\r\n      inset-block-end: 0;\r\n      z-index: 25;\r\n      margin-inline: -10px;\r\n      margin-block-start: 14px;\r\n      padding: 10px 10px max(10px, env(safe-area-inset-bottom));\r\n      border-block-start: 1px solid var(--bmx-line);\r\n      background: rgba(255, 255, 255, .96);\r\n      -webkit-backdrop-filter: blur(10px);\r\n      backdrop-filter: blur(10px);\r\n    }\r\n\r\n    .bmx4__btn.bmx4__mobile-only {\r\n      display: flex !important;\r\n      position: sticky;\r\n      inset-block-end: max(10px, env(safe-area-inset-bottom));\r\n      z-index: 25;\r\n      inline-size: 100%;\r\n      min-block-size: 50px;\r\n      margin-block-start: 14px;\r\n      border-radius: 999px;\r\n    }\r\n\r\n    .bmx4__nav.bmx4__mobile-only {\r\n      display: grid !important;\r\n      grid-template-columns: 1fr 1.4fr;\r\n      gap: 8px;\r\n    }\r\n\r\n    .bmx4__nav.bmx4__mobile-only .bmx4__btn,\r\n    .bmx4__cart-row > .bmx4__btn {\r\n      inline-size: 100%;\r\n      min-block-size: 48px;\r\n      border-radius: 999px;\r\n    }\r\n\r\n    .bmx4__cart-row {\r\n      gap: 8px;\r\n    }\r\n\r\n    .bmx4__cart-row .bmx4__nav.bmx4__mobile-only {\r\n      position: static;\r\n      margin: 0;\r\n      padding: 0;\r\n      border: 0;\r\n      background: transparent;\r\n      display: block !important;\r\n    }\r\n\r\n    .bmx4__cart-row .bmx4__nav.bmx4__mobile-only .bmx4__btn {\r\n      min-block-size: 44px;\r\n    }\r\n\r\n    .bmx4__modal {\r\n      display: block;\r\n      padding: 0;\r\n      background: #fff;\r\n    }\r\n\r\n    .bmx4__modal-panel {\r\n      inline-size: 100%;\r\n      max-inline-size: 100%;\r\n      block-size: 100dvh;\r\n      max-block-size: 100dvh;\r\n      border-radius: 0;\r\n      box-shadow: none;\r\n    }\r\n\r\n    .bmx4__modal-head {\r\n      padding: max(10px, env(safe-area-inset-top)) 10px 10px;\r\n      border-block-end: 1px solid var(--bmx-line);\r\n    }\r\n\r\n    .bmx4__modal-title {\r\n      font-size: 1rem;\r\n    }\r\n\r\n    .bmx4__modal-body {\r\n      grid-template-rows: auto 1fr;\r\n      gap: 8px;\r\n      padding: 10px 10px max(10px, env(safe-area-inset-bottom));\r\n    }\r\n\r\n    .bmx4__search-input {\r\n      min-block-size: 46px;\r\n      border-radius: 999px;\r\n      background: var(--bmx-surface-soft);\r\n    }\r\n\r\n    .bmx4__product-list {\r\n      max-block-size: none;\r\n      overflow: auto;\r\n      padding: 0;\r\n    }\r\n\r\n    .bmx4__product-item {\r\n      grid-template-columns: 54px minmax(0, 1fr) auto;\r\n      min-block-size: 74px;\r\n      gap: 10px;\r\n      padding: 10px;\r\n      border-radius: 8px;\r\n    }\r\n\r\n    .bmx4__product-item .bmx4__thumb {\r\n      inline-size: 54px;\r\n      block-size: 54px;\r\n    }\r\n\r\n    .bmx4__product-item .bmx4__badge {\r\n      grid-column: auto;\r\n      justify-self: end;\r\n      padding: 5px 7px;\r\n      border-radius: 999px;\r\n      background: var(--bmx-surface-soft);\r\n      white-space: nowrap;\r\n      font-size: .68rem;\r\n    }\r\n\r\n    .bmx4__fullscreen {\r\n      padding: max(58px, env(safe-area-inset-top) + 48px) 10px max(10px, env(safe-area-inset-bottom));\r\n    }\r\n  }\r\n\r\n  @media (prefers-reduced-motion: reduce) {\r\n    .bmx4 *,\r\n    .bmx4 *::before,\r\n    .bmx4 *::after {\r\n      animation-duration: .001ms !important;\r\n      scroll-behavior: auto !important;\r\n      transition-duration: .001ms !important;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<section\r\n  class=\"bmx4\"\r\n  data-belka-mix-root\r\n  data-ajax-url=\"\/de\/wp-admin\/admin-ajax.php\"\r\n  data-products-action=\"get_custom_woocommerce_products\"\r\n  data-cart-action=\"woodmart_ajax_add_to_cart\"\r\n  data-cart-url=\"\/warenkorb\/\"\r\n  data-store-api-base=\"\/de\/wp-json\/wc\/store\/v1\/products\"\r\n  data-step=\"1\"\r\n>\r\n  <span id=\"belka-mix-module-anchor\" class=\"bmx4__anchor\" data-role=\"anchor\" aria-hidden=\"true\"><\/span>\r\n\r\n  <div class=\"bmx4__shell\">\r\n    <header class=\"bmx4__mobile-header\" aria-label=\"BELKA Mix Schritte\">\r\n      <div class=\"bmx4__mobile-title-row\">\r\n        <div class=\"bmx4__title-group\">\r\n          <span class=\"bmx4__kicker\">BELKA Mix<\/span>\r\n          <h2 class=\"bmx4__title\">Mix erstellen<\/h2>\r\n        <\/div>\r\n        <div class=\"bmx4__actions\">\r\n          <button type=\"button\" class=\"bmx4__btn bmx4__btn--small\" data-action=\"reset\" aria-label=\"Auswahl zur\u00fccksetzen\">\r\n            <span aria-hidden=\"true\">\u00d7<\/span><span>Leeren<\/span>\r\n          <\/button>\r\n          <button type=\"button\" class=\"bmx4__btn bmx4__btn--small bmx4__btn--primary\" data-action=\"random\" aria-label=\"Zuf\u00e4llige Auswahl erstellen\">\r\n            <span aria-hidden=\"true\">\u21c4<\/span><span>Mix<\/span>\r\n          <\/button>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"bmx4__progress\" aria-hidden=\"true\">\r\n        <div class=\"bmx4__step-pill\" data-step=\"1\">1 Farben<\/div>\r\n        <div class=\"bmx4__step-pill\" data-step=\"2\">2 Vorschau<\/div>\r\n        <div class=\"bmx4__step-pill\" data-step=\"3\">3 Warenkorb<\/div>\r\n      <\/div>\r\n    <\/header>\r\n\r\n    <div class=\"bmx4__notices\" data-role=\"notices\" aria-live=\"polite\"><\/div>\r\n\r\n    <div class=\"bmx4__layout\">\r\n      <aside class=\"bmx4__side bmx4__section\" data-section=\"1\">\r\n        <div class=\"bmx4__card\">\r\n          <div class=\"bmx4__card-header\">\r\n            <div>\r\n              <span class=\"bmx4__kicker\">Schritt 1<\/span>\r\n              <h2 class=\"bmx4__card-title\">Farben ausw\u00e4hlen<\/h2>\r\n              <p class=\"bmx4__text\">W\u00e4hlen Sie 2 bis 5 BELKA Farben. Unsichtbare Farben werden aus Vorschau und Warenkorb herausgenommen.<\/p>\r\n            <\/div>\r\n            <div class=\"bmx4__actions bmx4__desktop-only\">\r\n              <button type=\"button\" class=\"bmx4__btn bmx4__btn--small\" data-action=\"reset\">\u21ba Zur\u00fccksetzen<\/button>\r\n              <button type=\"button\" class=\"bmx4__btn bmx4__btn--small bmx4__btn--primary\" data-action=\"random\">\u21c4 Zuf\u00e4llige Auswahl<\/button>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <label class=\"bmx4__label\">Wie viele Farben m\u00f6chten Sie kombinieren?<\/label>\r\n          <p class=\"bmx4__help\">Mindestens zwei sichtbare BELKA Farben sind f\u00fcr Mix-Vorschau und Warenkorb erforderlich.<\/p>\r\n          <div class=\"bmx4__count-grid\" role=\"group\" aria-label=\"Anzahl der Farben w\u00e4hlen\">\r\n            <button type=\"button\" class=\"bmx4__count-btn\" data-action=\"set-count\" data-count=\"2\" aria-pressed=\"true\">2<\/button>\r\n            <button type=\"button\" class=\"bmx4__count-btn\" data-action=\"set-count\" data-count=\"3\" aria-pressed=\"false\">3<\/button>\r\n            <button type=\"button\" class=\"bmx4__count-btn\" data-action=\"set-count\" data-count=\"4\" aria-pressed=\"false\">4<\/button>\r\n            <button type=\"button\" class=\"bmx4__count-btn\" data-action=\"set-count\" data-count=\"5\" aria-pressed=\"false\">5<\/button>\r\n          <\/div>\r\n\r\n          <div class=\"bmx4__boxes\" data-role=\"product-boxes\" aria-live=\"polite\"><\/div>\r\n\r\n          <div class=\"bmx4__mineral\">\r\n            <label class=\"bmx4__check\">\r\n              <input type=\"checkbox\" data-role=\"include-mineral\">\r\n              <span>Optional Lumika Mineralstein hinzuf\u00fcgen<\/span>\r\n            <\/label>\r\n            <p class=\"bmx4__help\">Lumika ist ein Effekt-Zusatz. F\u00fcr den Mix-Warenkorb bleiben mindestens zwei sichtbare BELKA Farben erforderlich.<\/p>\r\n            <div class=\"bmx4__mineral-box\" data-role=\"mineral-box\" hidden><\/div>\r\n          <\/div>\r\n\r\n          <button type=\"button\" class=\"bmx4__btn bmx4__btn--primary bmx4__mobile-only\" data-action=\"next\" data-role=\"mobile-next-selection\">\r\n            Vorschau ansehen\r\n          <\/button>\r\n        <\/div>\r\n      <\/aside>\r\n\r\n      <main class=\"bmx4__main\">\r\n        <section class=\"bmx4__section\" data-section=\"2\" aria-labelledby=\"bmx4-result-title\">\r\n          <div class=\"bmx4__card\">\r\n            <div class=\"bmx4__card-header\">\r\n              <div>\r\n                <span class=\"bmx4__kicker\">Schritt 2<\/span>\r\n                <h2 class=\"bmx4__card-title\" id=\"bmx4-result-title\">Vorschau pr\u00fcfen<\/h2>\r\n                <p class=\"bmx4__text\" data-role=\"status\">W\u00e4hlen Sie mindestens zwei sichtbare Farben, um den Mix zu sehen.<\/p>\r\n              <\/div>\r\n              <div class=\"bmx4__toolbar\" aria-label=\"Vorschau steuern\">\r\n                <button type=\"button\" class=\"bmx4__btn bmx4__icon-btn bmx4__zoom-btn\" data-action=\"zoom-in\" aria-label=\"Vorschau vergr\u00f6\u00dfern\">+<\/button>\r\n                <button type=\"button\" class=\"bmx4__btn bmx4__icon-btn bmx4__zoom-btn\" data-action=\"zoom-out\" aria-label=\"Vorschau verkleinern\">\u2212<\/button>\r\n                <button type=\"button\" class=\"bmx4__btn bmx4__icon-btn bmx4__zoom-btn\" data-action=\"zoom-reset\" aria-label=\"Zoom zur\u00fccksetzen\">1\u00d7<\/button>\r\n                <button type=\"button\" class=\"bmx4__btn bmx4__preview-fullscreen\" data-action=\"fullscreen\" aria-label=\"Vorschau im Vollbild \u00f6ffnen\">Vollbild<\/button>\r\n              <\/div>\r\n            <\/div>\r\n\r\n            <div class=\"bmx4__result-wrap\">\r\n              <div class=\"bmx4__placeholder\" data-role=\"result-placeholder\">\r\n                <strong>Ihre Mix-Vorschau erscheint hier<\/strong>\r\n                <span>W\u00e4hlen Sie mindestens zwei sichtbare Farben. Die Vorschau dient als Orientierung.<\/span>\r\n              <\/div>\r\n              <img class=\"bmx4__result-image\" data-role=\"result-image\" alt=\"BELKA Mix Vorschau\" hidden>\r\n              <div class=\"bmx4__processing\" data-role=\"processing\" hidden>\r\n                <div>\r\n                  <div class=\"bmx4__spinner\" aria-hidden=\"true\"><\/div>\r\n                  <p>Vorschau wird erstellt\u2026<\/p>\r\n                <\/div>\r\n              <\/div>\r\n            <\/div>\r\n\r\n            <div class=\"bmx4__mix-chips bmx4__mobile-only\" data-role=\"mix-chips\" aria-live=\"polite\"><\/div>\r\n\r\n            <div class=\"bmx4__disclaimer\">\r\n              <strong>Hinweis:<\/strong> Die digitale Vorschau dient zur Orientierung. Die tats\u00e4chliche Wirkung h\u00e4ngt von Licht, Bildschirm, Untergrund, Mischverh\u00e4ltnis und Auftragstechnik ab.\r\n            <\/div>\r\n\r\n            <div class=\"bmx4__nav bmx4__mobile-only\">\r\n              <button type=\"button\" class=\"bmx4__btn\" data-action=\"prev\">Zur\u00fcck<\/button>\r\n              <button type=\"button\" class=\"bmx4__btn bmx4__btn--primary\" data-action=\"next\">Warenkorb vorbereiten<\/button>\r\n            <\/div>\r\n          <\/div>\r\n        <\/section>\r\n\r\n        <section class=\"bmx4__section\" data-section=\"3\" aria-labelledby=\"bmx4-summary-title\">\r\n          <div class=\"bmx4__card\">\r\n            <div class=\"bmx4__card-header\">\r\n              <div>\r\n                <span class=\"bmx4__kicker\">Schritt 3<\/span>\r\n                <h2 class=\"bmx4__card-title\" id=\"bmx4-summary-title\">Warenkorb vorbereiten<\/h2>\r\n                <p class=\"bmx4__text\">Pr\u00fcfen Sie Paketgr\u00f6\u00dfen, Mengen, Fl\u00e4che und Gesamtbetrag vor dem Warenkorb.<\/p>\r\n              <\/div>\r\n            <\/div>\r\n\r\n            <div class=\"bmx4__selected-list\" data-role=\"selected-products\" aria-live=\"polite\"><\/div>\r\n\r\n            <div class=\"bmx4__totals\" aria-live=\"polite\">\r\n              <div class=\"bmx4__total-box\">\r\n                <p class=\"bmx4__total-label\">Gesamtbetrag<\/p>\r\n                <p class=\"bmx4__total-value\" data-role=\"total-price\">\u2014<\/p>\r\n              <\/div>\r\n              <div class=\"bmx4__total-box\">\r\n                <p class=\"bmx4__total-label\">Gesamtfl\u00e4che<\/p>\r\n                <p class=\"bmx4__total-value\" data-role=\"total-area\">\u2014<\/p>\r\n              <\/div>\r\n            <\/div>\r\n\r\n            <div class=\"bmx4__note\">\r\n              Verbrauchswerte sind Planungswerte. Untergrund, Schichtst\u00e4rke und Technik k\u00f6nnen den tats\u00e4chlichen Bedarf ver\u00e4ndern.\r\n            <\/div>\r\n\r\n            <div class=\"bmx4__cart-row\">\r\n              <button type=\"button\" class=\"bmx4__btn bmx4__btn--primary\" data-action=\"add-cart\" data-role=\"cart-button\" disabled>In den Warenkorb<\/button>\r\n              <div class=\"bmx4__nav bmx4__mobile-only\">\r\n                <button type=\"button\" class=\"bmx4__btn\" data-action=\"prev\">Zur\u00fcck<\/button>\r\n              <\/div>\r\n            <\/div>\r\n          <\/div>\r\n        <\/section>\r\n      <\/main>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"bmx4__modal\" data-role=\"search-modal\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"bmx4-modal-title\" hidden>\r\n    <div class=\"bmx4__modal-panel\">\r\n      <div class=\"bmx4__modal-head\">\r\n        <h3 class=\"bmx4__modal-title\" id=\"bmx4-modal-title\" data-role=\"modal-title\">Farbe w\u00e4hlen<\/h3>\r\n        <button type=\"button\" class=\"bmx4__btn bmx4__icon-btn\" data-action=\"close-search\" aria-label=\"Auswahl schlie\u00dfen\">\u00d7<\/button>\r\n      <\/div>\r\n      <div class=\"bmx4__modal-body\">\r\n        <input class=\"bmx4__search-input\" type=\"search\" data-role=\"search-input\" placeholder=\"Produktname eingeben\u2026\" autocomplete=\"off\">\r\n        <div class=\"bmx4__product-list\" data-role=\"product-list\"><\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"bmx4__fullscreen\" data-role=\"fullscreen\" hidden>\r\n    <button type=\"button\" class=\"bmx4__btn bmx4__icon-btn bmx4__fullscreen-close\" data-action=\"close-fullscreen\" aria-label=\"Vollbild schlie\u00dfen\">\u00d7<\/button>\r\n    <img class=\"bmx4__fullscreen-img\" data-role=\"fullscreen-image\" alt=\"BELKA Mix Vorschau im Vollbild\">\r\n  <\/div>\r\n<\/section>\r\n\r\n<script>\r\n(function () {\r\n  'use strict';\r\n\r\n  document.querySelectorAll('[data-belka-mix-root]').forEach(initBelkaMix);\r\n\r\n  function initBelkaMix(root) {\r\n    if (!root || root.dataset.belkaMixInitialized === 'true') return;\r\n    root.dataset.belkaMixInitialized = 'true';\r\n    const instanceId = 'bmx4-' + Math.random().toString(36).slice(2, 9);\r\n    scopeLabel('bmx4-result-title', '[data-section=\"2\"]');\r\n    scopeLabel('bmx4-summary-title', '[data-section=\"3\"]');\r\n    scopeLabel('bmx4-modal-title', '[data-role=\"search-modal\"]');\r\n\r\n    const COVERAGE_M2 = Object.freeze({ '1kg': 3, '3kg': 9, '5kg': 15 });\r\n    const PACKAGE_ORDER = Object.freeze({ '1kg': 1, '3kg': 2, '5kg': 3 });\r\n    const PREVIEW_SIZE = Object.freeze({ width: 1000, height: 1334 });\r\n    const IMAGE_TIMEOUT_MS = 8000;\r\n    const MAX_QTY_FALLBACK = 9999;\r\n\r\n    const CONFIG = Object.freeze({\r\n      ajaxUrl: root.dataset.ajaxUrl || window.ajaxurl || '\/de\/wp-admin\/admin-ajax.php',\r\n      productsAction: root.dataset.productsAction || 'get_custom_woocommerce_products',\r\n      cartAction: root.dataset.cartAction || 'woodmart_ajax_add_to_cart',\r\n      cartUrl: root.dataset.cartUrl || '\/warenkorb\/',\r\n      storeApiBase: root.dataset.storeApiBase || '\/de\/wp-json\/wc\/store\/v1\/products'\r\n    });\r\n\r\n    const MINERAL_PRODUCTS = [\r\n      {\r\n        id: 15014,\r\n        variationId: 15016,\r\n        name: 'Belka Lumika Wei\u00df',\r\n        image: 'https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/beyaz.jpeg',\r\n        price: 32,\r\n        m2: 0,\r\n        isInStock: true,\r\n        availabilityKnown: false,\r\n        cartAttribute: 'attribute_groesse-waehlen',\r\n        cartAttributeValue: '600g'\r\n      },\r\n      {\r\n        id: 14998,\r\n        variationId: 15001,\r\n        name: 'Belka Lumika Gold',\r\n        image: 'https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/mineral.jpeg',\r\n        price: 32,\r\n        m2: 0,\r\n        isInStock: true,\r\n        availabilityKnown: false,\r\n        cartAttribute: 'attribute_groesse-waehlen',\r\n        cartAttributeValue: '600g'\r\n      }\r\n    ];\r\n\r\n    const MASKS = Object.freeze({\r\n      '2_low': ['https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/2.jpg'],\r\n      '3_low': ['https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/2-1.jpg', 'https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/3.jpg'],\r\n      '4_low': ['https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/2-2.jpg', 'https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/3-1.jpg', 'https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/4.jpg'],\r\n      '5_low': ['https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/1.jpg', 'https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/2-3.jpg', 'https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/3-2.jpg', 'https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/5.jpg'],\r\n      mineral: {\r\n        gold: 'https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/10\/lumika-mineralsteine-mask.jpg',\r\n        weiss: 'https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/10\/lumika-mineralsteine-mask.jpg'\r\n      }\r\n    });\r\n\r\n    const state = {\r\n      step: 1,\r\n      colorCount: 2,\r\n      selected: [null, null],\r\n      hidden: new Set(),\r\n      includeMineral: false,\r\n      selectedMineral: null,\r\n      mineralHidden: false,\r\n      products: [],\r\n      productsStatus: 'idle',\r\n      productsError: '',\r\n      mineralsHydrated: false,\r\n      mineralsHydrating: false,\r\n      activeSlot: null,\r\n      query: '',\r\n      zoom: 1,\r\n      resultImage: '',\r\n      resultObjectUrl: '',\r\n      isAddingToCart: false,\r\n      noticeTimer: 0,\r\n      lastFocus: null\r\n    };\r\n\r\n    const imageCache = new Map();\r\n    let previewTimer = 0;\r\n    let previewRunId = 0;\r\n\r\n    const qs = (selector, context = root) => context.querySelector(selector);\r\n    const qsa = (selector, context = root) => Array.from(context.querySelectorAll(selector));\r\n\r\n    function scopeLabel(id, ownerSelector) {\r\n      const el = root.querySelector('#' + id);\r\n      const owner = root.querySelector(ownerSelector);\r\n      if (!el || !owner) return;\r\n      const scopedId = id + '-' + instanceId;\r\n      el.id = scopedId;\r\n      if (owner.getAttribute('aria-labelledby') === id) owner.setAttribute('aria-labelledby', scopedId);\r\n    }\r\n\r\n    function formatMoney(value) {\r\n      const number = Number.isFinite(Number(value)) ? Number(value) : 0;\r\n      return new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(number);\r\n    }\r\n\r\n    function formatArea(value) {\r\n      const number = Number.isFinite(Number(value)) ? Number(value) : 0;\r\n      return new Intl.NumberFormat('de-DE', { maximumFractionDigits: 2 }).format(number) + ' m\u00b2';\r\n    }\r\n\r\n    function parsePrice(value) {\r\n      if (typeof value === 'number') return value;\r\n      const normalized = String(value || '0').replace(',', '.').replace(\/[^\\d.-]\/g, '');\r\n      const number = Number.parseFloat(normalized);\r\n      return Number.isFinite(number) ? number : 0;\r\n    }\r\n\r\n    function cleanName(value) {\r\n      return String(value || '')\r\n        .replace(\/,\\s*Moderne Wandgestaltung\/gi, '')\r\n        .replace(\/\\s+\/g, ' ')\r\n        .trim();\r\n    }\r\n\r\n    function resolveUrl(value) {\r\n      const url = String(value || '').trim();\r\n      if (!url) return '';\r\n      if (\/^(data:image\\\/|blob:)\/i.test(url)) return url;\r\n      try {\r\n        return new URL(url, window.location.origin).toString();\r\n      } catch (error) {\r\n        return '';\r\n      }\r\n    }\r\n\r\n    function parseJsonText(text) {\r\n      return JSON.parse(String(text || '').replace(\/^\\uFEFF\/, ''));\r\n    }\r\n\r\n    function normalizePackageSize(value) {\r\n      return String(value || '').replace(\/\\s+\/g, '').toLowerCase();\r\n    }\r\n\r\n    function getAttributeEntries(variation) {\r\n      const attrs = variation && variation.attributes ? variation.attributes : {};\r\n      if (Array.isArray(attrs)) {\r\n        return attrs.map(attr => [\r\n          attr.slug || attr.name || attr.attribute || '',\r\n          attr.value || attr.option || attr.name || ''\r\n        ]);\r\n      }\r\n      return Object.entries(attrs);\r\n    }\r\n\r\n    function getPackageAttribute(variation) {\r\n      const entries = getAttributeEntries(variation);\r\n      const priorityKeys = ['pa_packmass', 'attribute_pa_packmass', 'packmass', 'attribute_pa_packma\u00df', 'attribute_packmass'];\r\n      for (const key of priorityKeys) {\r\n        const found = entries.find(entry => entry[0] === key);\r\n        if (found) return { key: found[0], value: found[1] };\r\n      }\r\n      const byValue = entries.find(entry => Object.prototype.hasOwnProperty.call(COVERAGE_M2, normalizePackageSize(entry[1])));\r\n      if (byValue) return { key: byValue[0], value: byValue[1] };\r\n      return { key: 'pa_packmass', value: variation.packageSize || variation.name || '' };\r\n    }\r\n\r\n    function toCartAttributeKey(attributeKey) {\r\n      const key = String(attributeKey || '').trim();\r\n      if (!key) return 'attribute_pa_packmass';\r\n      if (key.indexOf('attribute_') === 0) return key;\r\n      if (key.indexOf('pa_') === 0) return 'attribute_' + key;\r\n      if (key === 'packmass') return 'attribute_pa_packmass';\r\n      return 'attribute_' + key;\r\n    }\r\n\r\n    function normalizeVariation(variation) {\r\n      if (!variation) return null;\r\n      const attr = getPackageAttribute(variation);\r\n      const packageSize = normalizePackageSize(attr.value);\r\n      if (!Object.prototype.hasOwnProperty.call(COVERAGE_M2, packageSize)) return null;\r\n\r\n      const stockRaw = variation.stock_quantity ?? variation.stockQuantity;\r\n      const stockNumber = Number(stockRaw);\r\n      const hasNumericStock = Number.isFinite(stockNumber);\r\n      const explicitInStock = variation.is_in_stock === true || variation.is_in_stock === 'true' || variation.is_in_stock === 'yes' || variation.is_in_stock === 1;\r\n      const isInStock = explicitInStock || (hasNumericStock && stockNumber > 0);\r\n\r\n      return {\r\n        id: Number(variation.id || variation.variation_id || 0),\r\n        price: parsePrice(variation.price),\r\n        packageSize,\r\n        m2: COVERAGE_M2[packageSize],\r\n        isInStock,\r\n        stockQuantity: hasNumericStock && stockNumber > 0 ? stockNumber : (isInStock ? MAX_QTY_FALLBACK : 0),\r\n        cartAttributeKey: toCartAttributeKey(attr.key)\r\n      };\r\n    }\r\n\r\n    function chooseDefaultVariation(variations) {\r\n      return variations.find(v => v.packageSize === '1kg' && v.isInStock)\r\n        || variations.find(v => v.isInStock)\r\n        || variations[0];\r\n    }\r\n\r\n    function applyVariationToProduct(product, variation) {\r\n      product.selectedPackageSize = variation.packageSize;\r\n      product.selectedVariationId = variation.id;\r\n      product.quantity = 1;\r\n      product.unitPrice = variation.price;\r\n      product.linePrice = variation.price;\r\n      product.m2 = variation.m2;\r\n      product.cartAttributeKey = variation.cartAttributeKey;\r\n    }\r\n\r\n    function normalizeProduct(product) {\r\n      if (!product || !product.id) return null;\r\n      const variationsRaw = Array.isArray(product.variations) ? product.variations : [];\r\n      const variations = variationsRaw.map(normalizeVariation).filter(Boolean);\r\n      if (!variations.length) return null;\r\n\r\n      variations.sort((a, b) => (PACKAGE_ORDER[a.packageSize] || 9) - (PACKAGE_ORDER[b.packageSize] || 9));\r\n      const defaultVariation = chooseDefaultVariation(variations);\r\n      const normalized = {\r\n        id: Number(product.id),\r\n        name: cleanName(product.name),\r\n        image: resolveUrl(product.image),\r\n        color: product.color || '',\r\n        category: product.category || '',\r\n        bestseller: Boolean(product.bestseller),\r\n        variations,\r\n        hasAnyStock: variations.some(v => v.isInStock)\r\n      };\r\n      applyVariationToProduct(normalized, defaultVariation);\r\n      return normalized;\r\n    }\r\n\r\n    function cloneProduct(product) {\r\n      const copy = JSON.parse(JSON.stringify(product));\r\n      const defaultVariation = chooseDefaultVariation(copy.variations);\r\n      applyVariationToProduct(copy, defaultVariation);\r\n      return copy;\r\n    }\r\n\r\n    function getSelectedRegulars() {\r\n      return state.selected.filter(Boolean);\r\n    }\r\n\r\n    function getVisibleRegularEntries() {\r\n      return state.selected\r\n        .map((product, index) => ({ product, index }))\r\n        .filter(entry => entry.product && !state.hidden.has(entry.index));\r\n    }\r\n\r\n    function getVisibleRegulars() {\r\n      return getVisibleRegularEntries().map(entry => entry.product);\r\n    }\r\n\r\n    function hasVisibleMineral() {\r\n      return state.includeMineral && state.selectedMineral && !state.mineralHidden;\r\n    }\r\n\r\n    function canProceedFromSelection() {\r\n      return getSelectedRegulars().length >= 2;\r\n    }\r\n\r\n    function canBuildPreview() {\r\n      return getVisibleRegulars().length >= 2;\r\n    }\r\n\r\n    function canAddToCart() {\r\n      if (state.isAddingToCart) return false;\r\n      if (getVisibleRegulars().length < 2) return false;\r\n      if (hasVisibleMineral() && state.selectedMineral.isInStock === false) return false;\r\n      return getVisibleRegulars().every(product => {\r\n        const variation = product.variations.find(v => v.packageSize === product.selectedPackageSize);\r\n        return variation && variation.isInStock && Number(product.quantity || 0) >= 1;\r\n      });\r\n    }\r\n\r\n    function setNotice(type, message, persist) {\r\n      const container = qs('[data-role=\"notices\"]');\r\n      if (!container) return;\r\n      container.innerHTML = '';\r\n      if (state.noticeTimer) window.clearTimeout(state.noticeTimer);\r\n      if (!message) return;\r\n\r\n      const notice = document.createElement('div');\r\n      notice.className = 'bmx4__notice bmx4__notice--' + (type || 'warning');\r\n      notice.setAttribute('role', type === 'error' ? 'alert' : 'status');\r\n      notice.textContent = message;\r\n      container.appendChild(notice);\r\n\r\n      if (!persist) {\r\n        state.noticeTimer = window.setTimeout(() => {\r\n          notice.remove();\r\n        }, 5600);\r\n      }\r\n    }\r\n\r\n    function appendCartLink() {\r\n      const notice = qs('[data-role=\"notices\"] .bmx4__notice');\r\n      if (!notice) return;\r\n      const link = document.createElement('a');\r\n      link.href = CONFIG.cartUrl;\r\n      link.textContent = ' Warenkorb \u00f6ffnen';\r\n      notice.appendChild(link);\r\n    }\r\n\r\n    function createButton(className, text, attrs) {\r\n      const button = document.createElement('button');\r\n      button.type = 'button';\r\n      button.className = className;\r\n      if (text) button.textContent = text;\r\n      Object.entries(attrs || {}).forEach(([key, value]) => {\r\n        if (value === false || value === null || value === undefined) return;\r\n        if (value === true) button.setAttribute(key, '');\r\n        else button.setAttribute(key, String(value));\r\n      });\r\n      return button;\r\n    }\r\n\r\n    function renderCountButtons() {\r\n      qsa('[data-action=\"set-count\"]').forEach(button => {\r\n        button.setAttribute('aria-pressed', Number(button.dataset.count) === state.colorCount ? 'true' : 'false');\r\n      });\r\n    }\r\n\r\n    function renderProductBoxes() {\r\n      const container = qs('[data-role=\"product-boxes\"]');\r\n      if (!container) return;\r\n      container.innerHTML = '';\r\n\r\n      for (let i = 0; i < state.colorCount; i += 1) {\r\n        const product = state.selected[i];\r\n        const box = document.createElement('article');\r\n        box.className = 'bmx4__box';\r\n\r\n        const head = document.createElement('div');\r\n        head.className = 'bmx4__box-head';\r\n        const title = document.createElement('div');\r\n        title.className = 'bmx4__box-title';\r\n        title.textContent = 'Farbe ' + (i + 1);\r\n        head.appendChild(title);\r\n\r\n        if (product) {\r\n          const actions = document.createElement('div');\r\n          actions.className = 'bmx4__mini-actions';\r\n          const hidden = state.hidden.has(i);\r\n          actions.append(\r\n            createButton('bmx4__mini-btn', hidden ? 'An' : 'Aus', {\r\n              'data-action': 'toggle-visibility',\r\n              'data-slot': i,\r\n              'aria-label': hidden ? 'Farbe wieder anzeigen' : 'Farbe in Vorschau und Warenkorb ausblenden',\r\n              'aria-pressed': hidden ? 'true' : 'false'\r\n            }),\r\n            createButton('bmx4__mini-btn', '\u00d7', {\r\n              'data-action': 'remove-product',\r\n              'data-slot': i,\r\n              'aria-label': 'Farbe entfernen'\r\n            })\r\n          );\r\n          head.appendChild(actions);\r\n        }\r\n        box.appendChild(head);\r\n\r\n        if (product) {\r\n          const row = document.createElement('div');\r\n          row.className = 'bmx4__product-row';\r\n          const img = document.createElement('img');\r\n          img.className = 'bmx4__thumb';\r\n          img.src = product.image || '';\r\n          img.alt = product.name || 'BELKA Farbe';\r\n          img.loading = 'lazy';\r\n\r\n          const info = document.createElement('div');\r\n          const name = document.createElement('p');\r\n          name.className = 'bmx4__product-name';\r\n          name.textContent = product.name;\r\n          const meta = document.createElement('p');\r\n          meta.className = 'bmx4__product-meta';\r\n          meta.textContent = product.hasAnyStock\r\n            ? formatMoney(product.unitPrice) + ' \u00b7 ' + formatArea(product.m2)\r\n            : 'Nicht auf Lager';\r\n          const tools = document.createElement('div');\r\n          tools.className = 'bmx4__product-tools';\r\n          tools.appendChild(createButton('bmx4__btn bmx4__btn--small bmx4__btn--ghost', 'Wechseln', {\r\n            'data-action': 'open-search',\r\n            'data-slot': i\r\n          }));\r\n          info.append(name, meta, tools);\r\n          row.append(img, info);\r\n          box.appendChild(row);\r\n        } else {\r\n          const empty = document.createElement('div');\r\n          empty.className = 'bmx4__empty-box';\r\n          empty.appendChild(createButton('bmx4__btn bmx4__btn--dark', 'Farbe ausw\u00e4hlen', {\r\n            'data-action': 'open-search',\r\n            'data-slot': i\r\n          }));\r\n          box.appendChild(empty);\r\n        }\r\n\r\n        container.appendChild(box);\r\n      }\r\n    }\r\n\r\n    function renderMineralBox() {\r\n      const box = qs('[data-role=\"mineral-box\"]');\r\n      if (!box) return;\r\n      box.hidden = !state.includeMineral;\r\n      box.innerHTML = '';\r\n      if (!state.includeMineral) return;\r\n\r\n      const product = state.selectedMineral;\r\n      const article = document.createElement('article');\r\n      article.className = 'bmx4__box';\r\n      const head = document.createElement('div');\r\n      head.className = 'bmx4__box-head';\r\n      const title = document.createElement('div');\r\n      title.className = 'bmx4__box-title';\r\n      title.textContent = 'Lumika Mineralstein';\r\n      head.appendChild(title);\r\n\r\n      if (product) {\r\n        const actions = document.createElement('div');\r\n        actions.className = 'bmx4__mini-actions';\r\n        actions.append(\r\n          createButton('bmx4__mini-btn', state.mineralHidden ? 'An' : 'Aus', {\r\n            'data-action': 'toggle-mineral-visibility',\r\n            'aria-label': state.mineralHidden ? 'Mineralstein wieder anzeigen' : 'Mineralstein aus Vorschau und Warenkorb ausblenden',\r\n            'aria-pressed': state.mineralHidden ? 'true' : 'false'\r\n          }),\r\n          createButton('bmx4__mini-btn', '\u00d7', {\r\n            'data-action': 'remove-mineral',\r\n            'aria-label': 'Mineralstein entfernen'\r\n          })\r\n        );\r\n        head.appendChild(actions);\r\n      }\r\n      article.appendChild(head);\r\n\r\n      if (product) {\r\n        const row = document.createElement('div');\r\n        row.className = 'bmx4__product-row';\r\n        const img = document.createElement('img');\r\n        img.className = 'bmx4__thumb';\r\n        img.src = product.image || '';\r\n        img.alt = product.name;\r\n        img.loading = 'lazy';\r\n        const info = document.createElement('div');\r\n        const name = document.createElement('p');\r\n        name.className = 'bmx4__product-name';\r\n        name.textContent = product.name;\r\n        const meta = document.createElement('p');\r\n        meta.className = 'bmx4__product-meta';\r\n        meta.textContent = product.isInStock === false\r\n          ? 'Aktuell nicht verf\u00fcgbar'\r\n          : formatMoney(product.price) + ' \u00b7 600g';\r\n        const tools = document.createElement('div');\r\n        tools.className = 'bmx4__product-tools';\r\n        tools.appendChild(createButton('bmx4__btn bmx4__btn--small bmx4__btn--ghost', 'Wechseln', {\r\n          'data-action': 'open-search',\r\n          'data-slot': 'mineral'\r\n        }));\r\n        info.append(name, meta, tools);\r\n        row.append(img, info);\r\n        article.appendChild(row);\r\n      } else {\r\n        const empty = document.createElement('div');\r\n        empty.className = 'bmx4__empty-box';\r\n        empty.appendChild(createButton('bmx4__btn bmx4__btn--dark', 'Mineralstein w\u00e4hlen', {\r\n          'data-action': 'open-search',\r\n          'data-slot': 'mineral'\r\n        }));\r\n        article.appendChild(empty);\r\n      }\r\n\r\n      box.appendChild(article);\r\n    }\r\n\r\n    function renderSelectedProducts() {\r\n      const container = qs('[data-role=\"selected-products\"]');\r\n      if (!container) return;\r\n      container.innerHTML = '';\r\n\r\n      const visibleEntries = getVisibleRegularEntries();\r\n      if (!visibleEntries.length && !hasVisibleMineral()) {\r\n        const empty = document.createElement('div');\r\n        empty.className = 'bmx4__note';\r\n        empty.textContent = 'W\u00e4hlen Sie mindestens zwei sichtbare BELKA Farben. Danach k\u00f6nnen Sie Paketgr\u00f6\u00dfen und Mengen pr\u00fcfen.';\r\n        container.appendChild(empty);\r\n        return;\r\n      }\r\n\r\n      visibleEntries.forEach(({ product, index }) => {\r\n        const item = document.createElement('article');\r\n        item.className = 'bmx4__selected-product';\r\n\r\n        const head = document.createElement('div');\r\n        head.className = 'bmx4__selected-head';\r\n        const row = document.createElement('div');\r\n        row.className = 'bmx4__product-row';\r\n        const img = document.createElement('img');\r\n        img.className = 'bmx4__thumb';\r\n        img.src = product.image || '';\r\n        img.alt = product.name;\r\n        img.loading = 'lazy';\r\n        const info = document.createElement('div');\r\n        const name = document.createElement('p');\r\n        name.className = 'bmx4__product-name';\r\n        name.textContent = product.name;\r\n        const meta = document.createElement('p');\r\n        meta.className = 'bmx4__product-meta';\r\n        meta.textContent = formatMoney(product.linePrice) + ' \u00b7 ' + formatArea(product.m2);\r\n        info.append(name, meta);\r\n        row.append(img, info);\r\n        head.appendChild(row);\r\n        item.appendChild(head);\r\n\r\n        const packageGrid = document.createElement('div');\r\n        packageGrid.className = 'bmx4__package-grid';\r\n        product.variations.forEach(variation => {\r\n          packageGrid.appendChild(createButton('bmx4__package-btn', variation.packageSize + (variation.isInStock ? '' : ' \u00b7 aus'), {\r\n            'data-action': 'select-package',\r\n            'data-slot': index,\r\n            'data-package': variation.packageSize,\r\n            'aria-pressed': variation.packageSize === product.selectedPackageSize ? 'true' : 'false',\r\n            disabled: !variation.isInStock\r\n          }));\r\n        });\r\n        item.appendChild(packageGrid);\r\n\r\n        const selectedVariation = product.variations.find(v => v.packageSize === product.selectedPackageSize);\r\n        const qtyRow = document.createElement('div');\r\n        qtyRow.className = 'bmx4__qty-row';\r\n        qtyRow.append(\r\n          createButton('bmx4__mini-btn', '\u2212', {\r\n            'data-action': 'qty',\r\n            'data-slot': index,\r\n            'data-change': -1,\r\n            'aria-label': product.name + ' Menge reduzieren',\r\n            disabled: Number(product.quantity || 1) <= 1\r\n          })\r\n        );\r\n        const qty = document.createElement('span');\r\n        qty.className = 'bmx4__qty-value';\r\n        qty.textContent = String(product.quantity || 1);\r\n        qtyRow.appendChild(qty);\r\n        qtyRow.append(\r\n          createButton('bmx4__mini-btn', '+', {\r\n            'data-action': 'qty',\r\n            'data-slot': index,\r\n            'data-change': 1,\r\n            'aria-label': product.name + ' Menge erh\u00f6hen',\r\n            disabled: selectedVariation && Number(product.quantity || 1) >= selectedVariation.stockQuantity\r\n          })\r\n        );\r\n        item.appendChild(qtyRow);\r\n        container.appendChild(item);\r\n      });\r\n\r\n      if (hasVisibleMineral()) {\r\n        const product = state.selectedMineral;\r\n        const item = document.createElement('article');\r\n        item.className = 'bmx4__selected-product';\r\n        const row = document.createElement('div');\r\n        row.className = 'bmx4__product-row';\r\n        const img = document.createElement('img');\r\n        img.className = 'bmx4__thumb';\r\n        img.src = product.image || '';\r\n        img.alt = product.name;\r\n        img.loading = 'lazy';\r\n        const info = document.createElement('div');\r\n        const name = document.createElement('p');\r\n        name.className = 'bmx4__product-name';\r\n        name.textContent = product.name;\r\n        const meta = document.createElement('p');\r\n        meta.className = 'bmx4__product-meta';\r\n        meta.textContent = product.isInStock === false ? 'Aktuell nicht verf\u00fcgbar' : formatMoney(product.price) + ' \u00b7 600g';\r\n        info.append(name, meta);\r\n        row.append(img, info);\r\n        item.appendChild(row);\r\n        container.appendChild(item);\r\n      }\r\n    }\r\n\r\n    function updateTotals() {\r\n      let totalPrice = 0;\r\n      let totalArea = 0;\r\n      getVisibleRegulars().forEach(product => {\r\n        totalPrice += Number(product.linePrice || 0);\r\n        totalArea += Number(product.m2 || 0);\r\n      });\r\n      if (hasVisibleMineral() && state.selectedMineral.isInStock !== false) {\r\n        totalPrice += Number(state.selectedMineral.price || 0);\r\n      }\r\n\r\n      const priceEl = qs('[data-role=\"total-price\"]');\r\n      const areaEl = qs('[data-role=\"total-area\"]');\r\n      if (priceEl) priceEl.textContent = totalPrice > 0 ? formatMoney(totalPrice) : '\u2014';\r\n      if (areaEl) areaEl.textContent = totalArea > 0 ? formatArea(totalArea) : '\u2014';\r\n    }\r\n\r\n    function renderControls() {\r\n      root.dataset.step = String(state.step);\r\n      qsa('[data-role=\"mobile-next-selection\"]').forEach(btn => {\r\n        btn.disabled = !canProceedFromSelection();\r\n      });\r\n      qsa('[data-action=\"next\"]').forEach(btn => {\r\n        btn.disabled = !canProceedFromSelection();\r\n      });\r\n      qsa('[data-role=\"cart-button\"]').forEach(btn => {\r\n        btn.disabled = !canAddToCart();\r\n        btn.textContent = state.isAddingToCart ? 'Wird in den Warenkorb gelegt\u2026' : 'In den Warenkorb';\r\n      });\r\n      const checkbox = qs('[data-role=\"include-mineral\"]');\r\n      if (checkbox) checkbox.checked = state.includeMineral;\r\n    }\r\n\r\n    function renderPreviewStatus() {\r\n      const visible = getVisibleRegulars().length;\r\n      const status = qs('[data-role=\"status\"]');\r\n      if (!status) return;\r\n      if (visible === 0) {\r\n        status.textContent = 'W\u00e4hlen Sie mindestens zwei sichtbare Farben, um Ihren BELKA Mix zu erstellen.';\r\n      } else if (visible === 1) {\r\n        status.textContent = 'Eine sichtbare Farbe ist ausgew\u00e4hlt. F\u00fcr einen BELKA Mix ben\u00f6tigen Sie mindestens zwei sichtbare Farben.';\r\n      } else {\r\n        status.textContent = visible + ' sichtbare Farben ausgew\u00e4hlt. Vorschau und Warenkorb sind bereit.';\r\n      }\r\n    }\r\n\r\n    function renderMixChips() {\r\n      const container = qs('[data-role=\"mix-chips\"]');\r\n      if (!container) return;\r\n      container.innerHTML = '';\r\n\r\n      const entries = getVisibleRegularEntries();\r\n      if (!entries.length && !hasVisibleMineral()) return;\r\n\r\n      entries.forEach(({ product, index }) => {\r\n        const chip = createButton('bmx4__mix-chip', '', {\r\n          'data-action': 'open-search',\r\n          'data-slot': index,\r\n          'aria-label': product.name + ' \u00e4ndern'\r\n        });\r\n\r\n        const img = document.createElement('img');\r\n        img.className = 'bmx4__mix-chip-img';\r\n        img.src = product.image || '';\r\n        img.alt = product.name || 'BELKA Farbe';\r\n        img.loading = 'lazy';\r\n\r\n        const info = document.createElement('span');\r\n        const title = document.createElement('span');\r\n        title.className = 'bmx4__mix-chip-title';\r\n        title.textContent = product.name;\r\n        const meta = document.createElement('span');\r\n        meta.className = 'bmx4__mix-chip-meta';\r\n        meta.textContent = 'Farbe ' + (index + 1) + ' \u00b7 aktiv';\r\n        info.append(title, meta);\r\n\r\n        const action = document.createElement('span');\r\n        action.className = 'bmx4__mix-chip-action';\r\n        action.textContent = '\u00c4ndern';\r\n\r\n        chip.append(img, info, action);\r\n        container.appendChild(chip);\r\n      });\r\n\r\n      if (hasVisibleMineral()) {\r\n        const product = state.selectedMineral;\r\n        const chip = createButton('bmx4__mix-chip', '', {\r\n          'data-action': 'open-search',\r\n          'data-slot': 'mineral',\r\n          'aria-label': product.name + ' \u00e4ndern'\r\n        });\r\n\r\n        const img = document.createElement('img');\r\n        img.className = 'bmx4__mix-chip-img';\r\n        img.src = product.image || '';\r\n        img.alt = product.name || 'Lumika Mineralstein';\r\n        img.loading = 'lazy';\r\n\r\n        const info = document.createElement('span');\r\n        const title = document.createElement('span');\r\n        title.className = 'bmx4__mix-chip-title';\r\n        title.textContent = product.name;\r\n        const meta = document.createElement('span');\r\n        meta.className = 'bmx4__mix-chip-meta';\r\n        meta.textContent = 'Effekt-Zusatz \u00b7 aktiv';\r\n        info.append(title, meta);\r\n\r\n        const action = document.createElement('span');\r\n        action.className = 'bmx4__mix-chip-action';\r\n        action.textContent = '\u00c4ndern';\r\n\r\n        chip.append(img, info, action);\r\n        container.appendChild(chip);\r\n      }\r\n    }\r\n\r\n    function renderAll(options) {\r\n      const settings = options || {};\r\n      renderCountButtons();\r\n      renderProductBoxes();\r\n      renderMineralBox();\r\n      renderSelectedProducts();\r\n      updateTotals();\r\n      renderControls();\r\n      renderPreviewStatus();\r\n      renderMixChips();\r\n      if (settings.preview !== false) schedulePreview();\r\n    }\r\n\r\n    function setColorCount(count) {\r\n      const nextCount = Math.max(2, Math.min(5, Number(count) || 2));\r\n      state.colorCount = nextCount;\r\n      const next = Array(nextCount).fill(null);\r\n      for (let i = 0; i < Math.min(nextCount, state.selected.length); i += 1) {\r\n        next[i] = state.selected[i];\r\n      }\r\n      state.selected = next;\r\n      state.hidden = new Set(Array.from(state.hidden).filter(index => Number(index) < nextCount));\r\n      renderAll();\r\n    }\r\n\r\n    async function fetchProducts() {\r\n      state.productsStatus = 'loading';\r\n      state.productsError = '';\r\n      renderProductList();\r\n\r\n      try {\r\n        const url = new URL(CONFIG.ajaxUrl, window.location.origin);\r\n        url.searchParams.set('action', CONFIG.productsAction);\r\n        const response = await fetch(url.toString(), {\r\n          credentials: 'include',\r\n          headers: { Accept: 'application\/json' }\r\n        });\r\n        const text = await response.text();\r\n        if (!response.ok) throw new Error('Produktdaten konnten nicht geladen werden (' + response.status + ').');\r\n        const payload = parseJsonText(text);\r\n        const data = Array.isArray(payload)\r\n          ? payload\r\n          : (Array.isArray(payload.data) ? payload.data : (Array.isArray(payload.products) ? payload.products : null));\r\n        if (!Array.isArray(data)) throw new Error('Produktdaten haben kein g\u00fcltiges Array-Format.');\r\n        state.products = data.map(normalizeProduct).filter(Boolean).sort((a, b) => a.name.localeCompare(b.name, 'de'));\r\n        state.productsStatus = state.products.length ? 'ready' : 'empty';\r\n      } catch (error) {\r\n        state.productsStatus = 'error';\r\n        state.productsError = error && error.message ? error.message : 'Produktdaten konnten nicht geladen werden.';\r\n      } finally {\r\n        renderProductList();\r\n        renderAll({ preview: false });\r\n      }\r\n    }\r\n\r\n    async function ensureMineralProductsHydrated() {\r\n      if (state.mineralsHydrated || state.mineralsHydrating) return;\r\n      state.mineralsHydrating = true;\r\n      await Promise.all(MINERAL_PRODUCTS.map(async product => {\r\n        try {\r\n          const url = new URL(CONFIG.storeApiBase.replace(\/\\\/$\/, '') + '\/' + product.id, window.location.origin);\r\n          const response = await fetch(url.toString(), { headers: { Accept: 'application\/json' } });\r\n          const text = await response.text();\r\n          if (!response.ok) return;\r\n          const data = parseJsonText(text);\r\n          product.name = data.name || product.name;\r\n          product.isInStock = data.is_in_stock !== false;\r\n          product.availabilityKnown = true;\r\n          const prices = data.prices || {};\r\n          const minorUnit = Number(prices.currency_minor_unit || 2);\r\n          const divisor = Math.pow(10, minorUnit);\r\n          const maxAmount = prices.price_range && prices.price_range.max_amount;\r\n          if (maxAmount) product.price = Number(maxAmount) \/ divisor;\r\n          if (Array.isArray(data.images) && data.images[0] && data.images[0].src) {\r\n            product.image = resolveUrl(data.images[0].src);\r\n          }\r\n          if (Array.isArray(data.variations)) {\r\n            const variation = data.variations.find(item => {\r\n              return Array.isArray(item.attributes) && item.attributes.some(attr => normalizePackageSize(attr.value) === '600g');\r\n            });\r\n            if (variation && variation.id) product.variationId = Number(variation.id);\r\n          }\r\n        } catch (error) {\r\n          product.availabilityKnown = false;\r\n        }\r\n      }));\r\n      if (state.selectedMineral) {\r\n        const fresh = MINERAL_PRODUCTS.find(product => Number(product.id) === Number(state.selectedMineral.id));\r\n        if (fresh) state.selectedMineral = JSON.parse(JSON.stringify(fresh));\r\n      }\r\n      state.mineralsHydrated = true;\r\n      state.mineralsHydrating = false;\r\n      if (state.activeSlot === 'mineral') renderProductList();\r\n      renderAll({ preview: false });\r\n    }\r\n\r\n    function openSearch(slot) {\r\n      state.activeSlot = slot === 'mineral' ? 'mineral' : Number(slot);\r\n      state.query = '';\r\n      state.lastFocus = document.activeElement;\r\n      if (state.activeSlot === 'mineral') ensureMineralProductsHydrated();\r\n\r\n      const modal = qs('[data-role=\"search-modal\"]');\r\n      const title = qs('[data-role=\"modal-title\"]');\r\n      const input = qs('[data-role=\"search-input\"]');\r\n      if (!modal || !title || !input) return;\r\n\r\n      title.textContent = state.activeSlot === 'mineral' ? 'Lumika Mineralstein w\u00e4hlen' : 'Farbe ' + (Number(state.activeSlot) + 1) + ' w\u00e4hlen';\r\n      input.value = '';\r\n      modal.hidden = false;\r\n      document.documentElement.style.overflow = 'hidden';\r\n      renderProductList();\r\n      window.setTimeout(() => input.focus(), 30);\r\n    }\r\n\r\n    function closeSearch() {\r\n      const modal = qs('[data-role=\"search-modal\"]');\r\n      if (modal) modal.hidden = true;\r\n      document.documentElement.style.overflow = '';\r\n      state.activeSlot = null;\r\n      state.query = '';\r\n      if (state.lastFocus && typeof state.lastFocus.focus === 'function') state.lastFocus.focus();\r\n    }\r\n\r\n    function productAlreadySelected(productId) {\r\n      return state.selected.some(product => product && Number(product.id) === Number(productId));\r\n    }\r\n\r\n    function shouldAutoOpenNextSlot(slot, wasEmpty) {\r\n      if (!wasEmpty) return false;\r\n      if (state.step !== 1) return false;\r\n      if (!window.matchMedia('(max-width: 767px)').matches) return false;\r\n      const nextEmpty = state.selected.findIndex((product, index) => index > Number(slot) && !product);\r\n      return nextEmpty >= 0 ? nextEmpty : false;\r\n    }\r\n\r\n    function renderProductList() {\r\n      const container = qs('[data-role=\"product-list\"]');\r\n      if (!container) return;\r\n      container.innerHTML = '';\r\n\r\n      if (state.activeSlot !== 'mineral' && state.productsStatus === 'loading') {\r\n        const loading = document.createElement('div');\r\n        loading.className = 'bmx4__note';\r\n        loading.textContent = 'Produkte werden geladen\u2026';\r\n        container.appendChild(loading);\r\n        return;\r\n      }\r\n\r\n      if (state.activeSlot !== 'mineral' && state.productsStatus === 'error') {\r\n        const error = document.createElement('div');\r\n        error.className = 'bmx4__note';\r\n        error.textContent = state.productsError || 'Produktdaten konnten nicht geladen werden.';\r\n        error.appendChild(document.createElement('br'));\r\n        error.appendChild(createButton('bmx4__btn bmx4__btn--dark', 'Erneut laden', { 'data-action': 'retry-products' }));\r\n        container.appendChild(error);\r\n        return;\r\n      }\r\n\r\n      const query = state.query.trim().toLowerCase();\r\n      const source = state.activeSlot === 'mineral' ? MINERAL_PRODUCTS : state.products;\r\n      const filtered = source.filter(product => !query || product.name.toLowerCase().includes(query));\r\n\r\n      if (!filtered.length) {\r\n        const empty = document.createElement('div');\r\n        empty.className = 'bmx4__note';\r\n        empty.textContent = query ? 'Keine passenden Produkte gefunden.' : 'Keine Produkte verf\u00fcgbar.';\r\n        container.appendChild(empty);\r\n        return;\r\n      }\r\n\r\n      filtered.forEach(product => {\r\n        const isMineral = state.activeSlot === 'mineral';\r\n        const duplicate = !isMineral\r\n          && productAlreadySelected(product.id)\r\n          && (!state.selected[state.activeSlot] || Number(state.selected[state.activeSlot].id) !== Number(product.id));\r\n        const unavailable = isMineral ? product.isInStock === false : !product.hasAnyStock;\r\n        const disabled = unavailable || duplicate;\r\n\r\n        const item = createButton('bmx4__product-item', '', {\r\n          'data-action': 'select-product',\r\n          'data-product-id': product.id,\r\n          disabled\r\n        });\r\n        const img = document.createElement('img');\r\n        img.className = 'bmx4__thumb';\r\n        img.src = product.image || '';\r\n        img.alt = product.name;\r\n        img.loading = 'lazy';\r\n\r\n        const info = document.createElement('div');\r\n        const name = document.createElement('p');\r\n        name.className = 'bmx4__product-name';\r\n        name.textContent = product.name;\r\n        const meta = document.createElement('p');\r\n        meta.className = 'bmx4__product-meta';\r\n        if (isMineral) {\r\n          meta.textContent = product.isInStock === false ? 'Aktuell nicht verf\u00fcgbar' : formatMoney(product.price) + ' \u00b7 600g';\r\n        } else {\r\n          meta.textContent = product.hasAnyStock ? formatMoney(product.unitPrice) + ' \u00b7 ab ' + formatArea(product.m2) : 'Nicht auf Lager';\r\n        }\r\n        info.append(name, meta);\r\n\r\n        const badge = document.createElement('span');\r\n        badge.className = 'bmx4__badge';\r\n        badge.textContent = duplicate ? 'bereits gew\u00e4hlt' : (unavailable ? 'aus' : 'w\u00e4hlen');\r\n        item.append(img, info, badge);\r\n        container.appendChild(item);\r\n      });\r\n    }\r\n\r\n    function selectProduct(productId) {\r\n      if (state.activeSlot === 'mineral') {\r\n        const mineral = MINERAL_PRODUCTS.find(product => Number(product.id) === Number(productId));\r\n        if (!mineral || mineral.isInStock === false) {\r\n          setNotice('error', 'Dieser Mineralstein ist aktuell nicht verf\u00fcgbar.', false);\r\n          return;\r\n        }\r\n        state.selectedMineral = JSON.parse(JSON.stringify(mineral));\r\n        state.mineralHidden = false;\r\n        closeSearch();\r\n        renderAll();\r\n        return;\r\n      }\r\n\r\n      const slot = Number(state.activeSlot);\r\n      if (!Number.isInteger(slot) || slot < 0 || slot >= state.colorCount) return;\r\n      const product = state.products.find(item => Number(item.id) === Number(productId));\r\n      if (!product || !product.hasAnyStock) {\r\n        setNotice('error', 'Diese Farbe ist aktuell nicht verf\u00fcgbar.', false);\r\n        return;\r\n      }\r\n      if (productAlreadySelected(product.id) && (!state.selected[slot] || Number(state.selected[slot].id) !== Number(product.id))) {\r\n        setNotice('error', 'Diese Farbe ist bereits gew\u00e4hlt. Bitte w\u00e4hlen Sie eine andere Farbe.', false);\r\n        return;\r\n      }\r\n      const nextSlot = shouldAutoOpenNextSlot(slot, !state.selected[slot]);\r\n      state.selected[slot] = cloneProduct(product);\r\n      state.hidden.delete(slot);\r\n      closeSearch();\r\n      renderAll();\r\n      if (nextSlot !== false) {\r\n        window.setTimeout(() => openSearch(nextSlot), 180);\r\n      }\r\n    }\r\n\r\n    function removeProduct(slot) {\r\n      const index = Number(slot);\r\n      if (!Number.isInteger(index)) return;\r\n      state.selected[index] = null;\r\n      state.hidden.delete(index);\r\n      renderAll();\r\n    }\r\n\r\n    function resetSelection() {\r\n      state.step = 1;\r\n      state.colorCount = 2;\r\n      state.selected = [null, null];\r\n      state.hidden = new Set();\r\n      state.includeMineral = false;\r\n      state.selectedMineral = null;\r\n      state.mineralHidden = false;\r\n      state.zoom = 1;\r\n      state.resultImage = '';\r\n      hideResultImage();\r\n      setNotice('', '', false);\r\n      renderAll({ preview: false });\r\n    }\r\n\r\n    function selectPackage(slot, packageSize) {\r\n      const index = Number(slot);\r\n      const product = state.selected[index];\r\n      if (!product) return;\r\n      const variation = product.variations.find(v => v.packageSize === packageSize && v.isInStock);\r\n      if (!variation) return;\r\n      applyVariationToProduct(product, variation);\r\n      renderAll({ preview: false });\r\n    }\r\n\r\n    function updateQuantity(slot, change) {\r\n      const index = Number(slot);\r\n      const product = state.selected[index];\r\n      if (!product) return;\r\n      const variation = product.variations.find(v => v.packageSize === product.selectedPackageSize);\r\n      if (!variation) return;\r\n      const nextQty = Math.max(1, Math.min(variation.stockQuantity, Number(product.quantity || 1) + Number(change || 0)));\r\n      product.quantity = nextQty;\r\n      product.unitPrice = variation.price;\r\n      product.linePrice = Number((variation.price * nextQty).toFixed(2));\r\n      product.m2 = variation.m2 * nextQty;\r\n      renderAll({ preview: false });\r\n    }\r\n\r\n    function selectRandomProducts() {\r\n      if (state.productsStatus === 'loading') {\r\n        setNotice('warning', 'Produkte werden noch geladen. Bitte kurz warten.', false);\r\n        return;\r\n      }\r\n      const available = state.products.filter(product => product.hasAnyStock);\r\n      if (available.length < state.colorCount) {\r\n        setNotice('error', 'Nicht genug verf\u00fcgbare Farben f\u00fcr eine zuf\u00e4llige Auswahl.', false);\r\n        return;\r\n      }\r\n      const pool = available.slice();\r\n      const chosen = [];\r\n      for (let i = 0; i < state.colorCount; i += 1) {\r\n        const index = Math.floor(Math.random() * pool.length);\r\n        chosen.push(cloneProduct(pool.splice(index, 1)[0]));\r\n      }\r\n      state.selected = chosen;\r\n      state.hidden = new Set();\r\n      renderAll();\r\n    }\r\n\r\n    function nextStep() {\r\n      if (!canProceedFromSelection()) {\r\n        setNotice('error', 'Bitte w\u00e4hlen Sie zuerst mindestens zwei Farben.', false);\r\n        return;\r\n      }\r\n      state.step = Math.min(3, state.step + 1);\r\n      renderControls();\r\n      scrollToModuleTop();\r\n    }\r\n\r\n    function prevStep() {\r\n      state.step = Math.max(1, state.step - 1);\r\n      renderControls();\r\n      scrollToModuleTop();\r\n    }\r\n\r\n    function scrollToModuleTop() {\r\n      if (!window.matchMedia('(max-width: 767px)').matches) return;\r\n      const anchor = qs('[data-role=\"anchor\"]') || root;\r\n      const top = anchor.getBoundingClientRect().top + window.pageYOffset - 8;\r\n      window.scrollTo({ top: Math.max(0, top), behavior: 'smooth' });\r\n    }\r\n\r\n    function loadImage(src) {\r\n      const safe = resolveUrl(src);\r\n      if (!safe) return Promise.reject(new Error('Bild-URL fehlt.'));\r\n      if (imageCache.has(safe)) return imageCache.get(safe);\r\n\r\n      const promise = new Promise((resolve, reject) => {\r\n        const img = new Image();\r\n        if (\/^https?:\/i.test(safe)) img.crossOrigin = 'anonymous';\r\n        const timer = window.setTimeout(() => {\r\n          img.onload = null;\r\n          img.onerror = null;\r\n          reject(new Error('Bild-Ladezeit \u00fcberschritten: ' + safe));\r\n        }, IMAGE_TIMEOUT_MS);\r\n        img.onload = () => {\r\n          window.clearTimeout(timer);\r\n          resolve(img);\r\n        };\r\n        img.onerror = () => {\r\n          window.clearTimeout(timer);\r\n          reject(new Error('Bild konnte nicht geladen werden: ' + safe));\r\n        };\r\n        img.src = safe;\r\n      });\r\n      imageCache.set(safe, promise);\r\n      return promise;\r\n    }\r\n\r\n    function createSolidCanvas(width, height, fill) {\r\n      const canvas = document.createElement('canvas');\r\n      canvas.width = width;\r\n      canvas.height = height;\r\n      const ctx = canvas.getContext('2d');\r\n      ctx.fillStyle = fill || '#f7f4ee';\r\n      ctx.fillRect(0, 0, width, height);\r\n      return canvas;\r\n    }\r\n\r\n    function createFallbackProductCanvas(width, height, label) {\r\n      const canvas = createSolidCanvas(width, height, '#f7f4ee');\r\n      const ctx = canvas.getContext('2d');\r\n      ctx.fillStyle = '#c9c0b5';\r\n      ctx.font = '700 34px sans-serif';\r\n      ctx.textAlign = 'center';\r\n      ctx.fillText(label || 'BELKA', width \/ 2, height \/ 2);\r\n      return canvas;\r\n    }\r\n\r\n    async function loadProductImageOrFallback(src, label) {\r\n      try {\r\n        return await loadImage(src);\r\n      } catch (error) {\r\n        return createFallbackProductCanvas(PREVIEW_SIZE.width, PREVIEW_SIZE.height, label);\r\n      }\r\n    }\r\n\r\n    async function loadMaskOrTransparent(src) {\r\n      try {\r\n        return await loadImage(src);\r\n      } catch (error) {\r\n        return createSolidCanvas(PREVIEW_SIZE.width, PREVIEW_SIZE.height, '#000');\r\n      }\r\n    }\r\n\r\n    function drawCover(ctx, image, width, height) {\r\n      const imageWidth = image.naturalWidth || image.width || width;\r\n      const imageHeight = image.naturalHeight || image.height || height;\r\n      const ratio = Math.max(width \/ imageWidth, height \/ imageHeight);\r\n      const drawWidth = imageWidth * ratio;\r\n      const drawHeight = imageHeight * ratio;\r\n      ctx.drawImage(image, (width - drawWidth) \/ 2, (height - drawHeight) \/ 2, drawWidth, drawHeight);\r\n    }\r\n\r\n    function applyAlphaMask(image, mask, width, height) {\r\n      const canvas = document.createElement('canvas');\r\n      canvas.width = width;\r\n      canvas.height = height;\r\n      const ctx = canvas.getContext('2d', { willReadFrequently: true });\r\n      drawCover(ctx, image, width, height);\r\n\r\n      const maskCanvas = document.createElement('canvas');\r\n      maskCanvas.width = width;\r\n      maskCanvas.height = height;\r\n      const maskCtx = maskCanvas.getContext('2d', { willReadFrequently: true });\r\n      drawCover(maskCtx, mask, width, height);\r\n\r\n      const imageData = ctx.getImageData(0, 0, width, height);\r\n      const maskData = maskCtx.getImageData(0, 0, width, height);\r\n      const pixels = imageData.data;\r\n      const maskPixels = maskData.data;\r\n      for (let i = 0; i < pixels.length; i += 4) {\r\n        pixels[i + 3] = maskPixels[i];\r\n      }\r\n      ctx.putImageData(imageData, 0, 0);\r\n      return canvas;\r\n    }\r\n\r\n    function showProcessing(show) {\r\n      const overlay = qs('[data-role=\"processing\"]');\r\n      if (overlay) overlay.hidden = !show;\r\n    }\r\n\r\n    function hideResultImage() {\r\n      const placeholder = qs('[data-role=\"result-placeholder\"]');\r\n      const image = qs('[data-role=\"result-image\"]');\r\n      if (placeholder) placeholder.hidden = false;\r\n      if (image) {\r\n        image.hidden = true;\r\n        image.removeAttribute('src');\r\n      }\r\n      revokeResultObjectUrl();\r\n    }\r\n\r\n    function showResultImage(dataUrl) {\r\n      const placeholder = qs('[data-role=\"result-placeholder\"]');\r\n      const image = qs('[data-role=\"result-image\"]');\r\n      if (placeholder) placeholder.hidden = true;\r\n      if (image) {\r\n        image.src = dataUrl;\r\n        image.hidden = false;\r\n        image.style.transform = 'scale(' + state.zoom + ')';\r\n      }\r\n    }\r\n\r\n    function revokeResultObjectUrl() {\r\n      if (state.resultObjectUrl) {\r\n        URL.revokeObjectURL(state.resultObjectUrl);\r\n        state.resultObjectUrl = '';\r\n      }\r\n    }\r\n\r\n    function canvasToImageUrl(canvas) {\r\n      return new Promise(resolve => {\r\n        if (!canvas.toBlob) {\r\n          resolve(canvas.toDataURL('image\/png'));\r\n          return;\r\n        }\r\n        canvas.toBlob(blob => {\r\n          if (!blob) {\r\n            resolve(canvas.toDataURL('image\/png'));\r\n            return;\r\n          }\r\n          revokeResultObjectUrl();\r\n          state.resultObjectUrl = URL.createObjectURL(blob);\r\n          resolve(state.resultObjectUrl);\r\n        }, 'image\/png');\r\n      });\r\n    }\r\n\r\n    function schedulePreview() {\r\n      window.clearTimeout(previewTimer);\r\n      previewTimer = window.setTimeout(applyPreview, 160);\r\n    }\r\n\r\n    async function applyPreview() {\r\n      const runId = ++previewRunId;\r\n      const visibleProducts = getVisibleRegulars();\r\n      const visibleMineral = hasVisibleMineral() ? state.selectedMineral : null;\r\n\r\n      if (visibleProducts.length < 2) {\r\n        state.resultImage = '';\r\n        hideResultImage();\r\n        showProcessing(false);\r\n        return;\r\n      }\r\n\r\n      showProcessing(true);\r\n      try {\r\n        const canvas = await buildPreviewCanvas(visibleProducts, visibleMineral);\r\n        if (runId !== previewRunId) return;\r\n        state.resultImage = await canvasToImageUrl(canvas);\r\n        showResultImage(state.resultImage);\r\n      } catch (error) {\r\n        if (runId === previewRunId) {\r\n          state.resultImage = '';\r\n          hideResultImage();\r\n          setNotice('error', 'Die Vorschau konnte nicht erstellt werden. Bitte pr\u00fcfen Sie die Bilder oder versuchen Sie es erneut.', false);\r\n        }\r\n      } finally {\r\n        if (runId === previewRunId) showProcessing(false);\r\n      }\r\n    }\r\n\r\n    async function buildPreviewCanvas(products, mineral) {\r\n      const width = PREVIEW_SIZE.width;\r\n      const height = PREVIEW_SIZE.height;\r\n      const canvas = document.createElement('canvas');\r\n      canvas.width = width;\r\n      canvas.height = height;\r\n      const ctx = canvas.getContext('2d');\r\n      ctx.fillStyle = '#f7f4ee';\r\n      ctx.fillRect(0, 0, width, height);\r\n\r\n      const productImages = await Promise.all(products.map(product => loadProductImageOrFallback(product.image, product.name)));\r\n      if (productImages.length) drawCover(ctx, productImages[0], width, height);\r\n\r\n      const maskUrls = MASKS[Math.min(productImages.length, 5) + '_low'] || [];\r\n      const masks = await Promise.all(maskUrls.map(loadMaskOrTransparent));\r\n      for (let i = 1; i < productImages.length; i += 1) {\r\n        const mask = masks[i - 1];\r\n        if (!mask) continue;\r\n        const masked = applyAlphaMask(productImages[i], mask, width, height);\r\n        ctx.drawImage(masked, 0, 0);\r\n      }\r\n\r\n      if (mineral && mineral.isInStock !== false) {\r\n        const mineralImage = await loadProductImageOrFallback(mineral.image, mineral.name);\r\n        const maskUrl = mineral.name.toLowerCase().includes('gold') ? MASKS.mineral.gold : MASKS.mineral.weiss;\r\n        const mineralMask = await loadMaskOrTransparent(maskUrl);\r\n        const masked = applyAlphaMask(mineralImage, mineralMask, width, height);\r\n        ctx.drawImage(masked, 0, 0);\r\n      }\r\n\r\n      return canvas;\r\n    }\r\n\r\n    function updateZoom(delta) {\r\n      state.zoom = Math.max(.6, Math.min(2.4, Number((state.zoom + delta).toFixed(2))));\r\n      qsa('[data-role=\"result-image\"], [data-role=\"fullscreen-image\"]').forEach(image => {\r\n        image.style.transform = 'scale(' + state.zoom + ')';\r\n      });\r\n    }\r\n\r\n    function resetZoom() {\r\n      state.zoom = 1;\r\n      updateZoom(0);\r\n    }\r\n\r\n    function openFullscreen() {\r\n      if (!state.resultImage) return;\r\n      const overlay = qs('[data-role=\"fullscreen\"]');\r\n      const image = qs('[data-role=\"fullscreen-image\"]');\r\n      if (!overlay || !image) return;\r\n      image.src = state.resultImage;\r\n      image.style.transform = 'scale(' + state.zoom + ')';\r\n      overlay.hidden = false;\r\n      document.documentElement.style.overflow = 'hidden';\r\n    }\r\n\r\n    function closeFullscreen() {\r\n      const overlay = qs('[data-role=\"fullscreen\"]');\r\n      if (overlay) overlay.hidden = true;\r\n      document.documentElement.style.overflow = '';\r\n    }\r\n\r\n    function validateCartItems() {\r\n      const visibleEntries = getVisibleRegularEntries();\r\n      if (visibleEntries.length < 2) return ['Bitte w\u00e4hlen Sie mindestens zwei sichtbare Farben.'];\r\n      const errors = [];\r\n      visibleEntries.forEach(({ product }) => {\r\n        const variation = product.variations.find(v => v.packageSize === product.selectedPackageSize);\r\n        if (!variation || !variation.isInStock) errors.push(product.name + ' ist in der gew\u00e4hlten Gr\u00f6\u00dfe nicht verf\u00fcgbar.');\r\n        if (!Number(product.quantity || 0)) errors.push(product.name + ': Bitte Menge pr\u00fcfen.');\r\n      });\r\n      if (hasVisibleMineral() && state.selectedMineral.isInStock === false) {\r\n        errors.push(state.selectedMineral.name + ' ist aktuell nicht verf\u00fcgbar.');\r\n      }\r\n      return errors;\r\n    }\r\n\r\n    async function postAddToCart(formData) {\r\n      const response = await fetch(new URL(CONFIG.ajaxUrl, window.location.origin).toString(), {\r\n        method: 'POST',\r\n        credentials: 'include',\r\n        body: formData\r\n      });\r\n      const text = await response.text();\r\n      if (!response.ok) throw new Error(text || 'Add-to-cart request failed.');\r\n      const trimmed = text.trim();\r\n      if (trimmed === '0' || \/woocommerce-error|notices.*error|<ul class=\"woocommerce-error\/i.test(trimmed)) {\r\n        throw new Error(trimmed || 'WooCommerce returned an error.');\r\n      }\r\n      try {\r\n        const json = parseJsonText(trimmed);\r\n        if (json && (json.error || json.success === false)) throw new Error(json.message || 'WooCommerce returned an error.');\r\n      } catch (error) {\r\n        if (!(error instanceof SyntaxError)) throw error;\r\n      }\r\n      return text;\r\n    }\r\n\r\n    function appendRegularProductCartFields(formData, product, variation) {\r\n      formData.append('action', CONFIG.cartAction);\r\n      formData.append('product_id', String(product.id));\r\n      formData.append('variation_id', String(variation.id));\r\n      formData.append('quantity', String(product.quantity || 1));\r\n      formData.append('add-to-cart', String(product.id));\r\n      formData.append(variation.cartAttributeKey || product.cartAttributeKey || 'attribute_pa_packmass', variation.packageSize);\r\n      if ((variation.cartAttributeKey || product.cartAttributeKey) !== 'attribute_pa_packmass') {\r\n        formData.append('attribute_pa_packmass', variation.packageSize);\r\n      }\r\n    }\r\n\r\n    async function addToCart() {\r\n      const errors = validateCartItems();\r\n      if (errors.length) {\r\n        setNotice('error', errors.join(' '), false);\r\n        return;\r\n      }\r\n\r\n      state.isAddingToCart = true;\r\n      renderControls();\r\n      let completed = 0;\r\n\r\n      try {\r\n        for (const { product } of getVisibleRegularEntries()) {\r\n          const variation = product.variations.find(v => v.packageSize === product.selectedPackageSize);\r\n          const formData = new FormData();\r\n          appendRegularProductCartFields(formData, product, variation);\r\n          await postAddToCart(formData);\r\n          completed += 1;\r\n        }\r\n\r\n        if (hasVisibleMineral() && state.selectedMineral.isInStock !== false) {\r\n          const mineral = state.selectedMineral;\r\n          const formData = new FormData();\r\n          formData.append('action', CONFIG.cartAction);\r\n          formData.append('product_id', String(mineral.id));\r\n          formData.append('variation_id', String(mineral.variationId));\r\n          formData.append('add-to-cart', String(mineral.id));\r\n          formData.append('quantity', '1');\r\n          formData.append(mineral.cartAttribute, mineral.cartAttributeValue);\r\n          await postAddToCart(formData);\r\n          completed += 1;\r\n        }\r\n\r\n        if (window.jQuery) {\r\n          window.jQuery(document.body).trigger('added_to_cart').trigger('wc_fragment_refresh');\r\n        }\r\n\r\n        setNotice('success', completed + ' Produkt(e) wurden in den Warenkorb gelegt.', true);\r\n        appendCartLink();\r\n      } catch (error) {\r\n        const message = completed > 0\r\n          ? 'Ein Teil der Auswahl wurde m\u00f6glicherweise hinzugef\u00fcgt. Bitte Warenkorb pr\u00fcfen und fehlende Produkte erneut hinzuf\u00fcgen.'\r\n          : 'Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut.';\r\n        setNotice('error', message, true);\r\n        if (window.console && window.console.error) window.console.error('BELKA Mix add-to-cart error:', error);\r\n      } finally {\r\n        state.isAddingToCart = false;\r\n        renderControls();\r\n      }\r\n    }\r\n\r\n    function trapModalFocus(event) {\r\n      const modal = qs('[data-role=\"search-modal\"]');\r\n      if (!modal || modal.hidden || event.key !== 'Tab') return;\r\n      const focusable = Array.from(modal.querySelectorAll('button:not(:disabled), input:not(:disabled), [href], [tabindex]:not([tabindex=\"-1\"])'));\r\n      if (!focusable.length) return;\r\n      const first = focusable[0];\r\n      const last = focusable[focusable.length - 1];\r\n      if (event.shiftKey && document.activeElement === first) {\r\n        event.preventDefault();\r\n        last.focus();\r\n      } else if (!event.shiftKey && document.activeElement === last) {\r\n        event.preventDefault();\r\n        first.focus();\r\n      }\r\n    }\r\n\r\n    function handleClick(event) {\r\n      if (event.target === qs('[data-role=\"search-modal\"]')) {\r\n        closeSearch();\r\n        return;\r\n      }\r\n\r\n      const button = event.target.closest('[data-action]');\r\n      if (!button || !root.contains(button) || button.disabled) return;\r\n      const action = button.dataset.action;\r\n      const slot = button.dataset.slot;\r\n\r\n      switch (action) {\r\n        case 'set-count': setColorCount(button.dataset.count); break;\r\n        case 'open-search': openSearch(slot); break;\r\n        case 'close-search': closeSearch(); break;\r\n        case 'select-product': selectProduct(button.dataset.productId); break;\r\n        case 'remove-product': removeProduct(slot); break;\r\n        case 'toggle-visibility':\r\n          state.hidden.has(Number(slot)) ? state.hidden.delete(Number(slot)) : state.hidden.add(Number(slot));\r\n          renderAll();\r\n          break;\r\n        case 'toggle-mineral-visibility':\r\n          state.mineralHidden = !state.mineralHidden;\r\n          renderAll();\r\n          break;\r\n        case 'remove-mineral':\r\n          state.selectedMineral = null;\r\n          state.mineralHidden = false;\r\n          renderAll();\r\n          break;\r\n        case 'reset': resetSelection(); break;\r\n        case 'random': selectRandomProducts(); break;\r\n        case 'next': nextStep(); break;\r\n        case 'prev': prevStep(); break;\r\n        case 'select-package': selectPackage(slot, button.dataset.package); break;\r\n        case 'qty': updateQuantity(slot, Number(button.dataset.change)); break;\r\n        case 'zoom-in': updateZoom(.2); break;\r\n        case 'zoom-out': updateZoom(-.2); break;\r\n        case 'zoom-reset': resetZoom(); break;\r\n        case 'fullscreen': openFullscreen(); break;\r\n        case 'close-fullscreen': closeFullscreen(); break;\r\n        case 'add-cart': addToCart(); break;\r\n        case 'retry-products': fetchProducts(); break;\r\n        default: break;\r\n      }\r\n    }\r\n\r\n    function handleInput(event) {\r\n      if (event.target.matches('[data-role=\"search-input\"]')) {\r\n        state.query = event.target.value || '';\r\n        renderProductList();\r\n      }\r\n    }\r\n\r\n    function handleChange(event) {\r\n      if (event.target.matches('[data-role=\"include-mineral\"]')) {\r\n        state.includeMineral = Boolean(event.target.checked);\r\n        if (!state.includeMineral) {\r\n          state.selectedMineral = null;\r\n          state.mineralHidden = false;\r\n        }\r\n        renderAll();\r\n      }\r\n    }\r\n\r\n    function handleKeydown(event) {\r\n      trapModalFocus(event);\r\n      if (event.key !== 'Escape') return;\r\n      const fullscreen = qs('[data-role=\"fullscreen\"]');\r\n      const modal = qs('[data-role=\"search-modal\"]');\r\n      if (fullscreen && !fullscreen.hidden) closeFullscreen();\r\n      else if (modal && !modal.hidden) closeSearch();\r\n    }\r\n\r\n    function handleInitialAnchor() {\r\n      if (window.location.hash !== '#create-mix' && window.location.hash !== '#belka-mix-module-anchor') return;\r\n      window.setTimeout(() => {\r\n        const anchor = qs('[data-role=\"anchor\"]') || root;\r\n        const top = anchor.getBoundingClientRect().top + window.pageYOffset - 12;\r\n        window.scrollTo({ top: Math.max(0, top), behavior: 'smooth' });\r\n      }, 120);\r\n    }\r\n\r\n    function init() {\r\n      root.addEventListener('click', handleClick);\r\n      root.addEventListener('input', handleInput);\r\n      root.addEventListener('change', handleChange);\r\n      document.addEventListener('keydown', handleKeydown);\r\n      renderAll({ preview: false });\r\n      fetchProducts();\r\n      handleInitialAnchor();\r\n    }\r\n\r\n    if (document.readyState === 'loading') {\r\n      document.addEventListener('DOMContentLoaded', init, { once: true });\r\n    } else {\r\n      init();\r\n    }\r\n  }\r\n}());\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\r\n            <\/div>\r\n        <\/div>\r\n    <\/section>\r\n\r\n    <!-- Quick Calculator Section -->\r\n    <section class=\"quick-calculator-section\">\r\n        <div class=\"container\">\r\n            <div class=\"calculator-card\">\r\n                <div class=\"calculator-content\">\r\n                    <div class=\"calculator-form\">\r\n                        <div class=\"calculator-layout\">\r\n                            <div class=\"input-group\">\r\n                                <label for=\"wall-width\">Breite (m)<\/label>\r\n                                <input type=\"number\" id=\"wall-width\" min=\"0\" step=\"0.1\" placeholder=\"0.0\">\r\n                            <\/div>\r\n                            <span class=\"multiply-symbol\">\u00d7<\/span>\r\n                            <div class=\"input-group\">\r\n                                <label for=\"wall-height\">H\u00f6he (m)<\/label>\r\n                                <input type=\"number\" id=\"wall-height\" min=\"0\" step=\"0.1\" placeholder=\"0.0\">\r\n                            <\/div>\r\n                            <span class=\"equals-symbol\">=<\/span>\r\n                            <div class=\"calculator-result\">\r\n                                <span>Gesamtfl\u00e4che:<\/span>\r\n                                <strong id=\"total-areax\">0.0 m\u00b2<\/strong>\r\n                            <\/div>\r\n                            <a href=\"\/de\/wandflache-berechnen-belka-rechner\/\" class=\"button outline calc-button\">\r\n                                <i class=\"fas fa-calculator\"><\/i>\r\n                                Zum detaillierten Rechner\r\n                            <\/a>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/section>\r\n\r\n    <!-- How to Apply Section -->\r\n    <!-- Belka Mix Preparation Section -->\r\n<!-- Elementor HTML Widget'\u0131na eklenecek kod -->\r\n<section id=\"preparation\" class=\"belka-preparation-section\">\r\n  <div class=\"belka-container\">\r\n    <!-- Header -->\r\n    <div class=\"belka-header\">\r\n\r\n      <h2 class=\"belka-main-title\">Wie wird Belka Mix vorbereitet?<\/h2>\r\n      <p class=\"belka-subtitle\">\r\n        Die Vorbereitung und Anwendung von Belka Mix f\u00fcr einzigartige Wanddesigns ist einfach und unkompliziert.\r\n        Folgen Sie unserer detaillierten Anleitung f\u00fcr optimale Ergebnisse.\r\n      <\/p>\r\n    <\/div>\r\n\r\n    <!-- Step Navigation -->\r\n    <div class=\"belka-step-navigation\">\r\n      <button class=\"belka-step-btn active\" data-step=\"0\">\r\n        <div class=\"belka-step-content\">\r\n          <div class=\"belka-step-icon\">\r\n            <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\r\n              <path d=\"M18 11V6a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v0\"\/>\r\n              <path d=\"M14 10V4a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v2\"\/>\r\n              <path d=\"M10 10.5V6a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v8\"\/>\r\n              <path d=\"M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.83L7 15\"\/>\r\n            <\/svg>\r\n          <\/div>\r\n          <div class=\"belka-step-info\">\r\n            <h3>Standard Belka-Vorbereitung<\/h3>\r\n            <p>Die Grundlage f\u00fcr perfekte Ergebnisse<\/p>\r\n          <\/div>\r\n        <\/div>\r\n\r\n      <\/button>\r\n\r\n      <button class=\"belka-step-btn\" data-step=\"1\">\r\n        <div class=\"belka-step-content\">\r\n          <div class=\"belka-step-icon\">\r\n            <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\r\n              <circle cx=\"13.5\" cy=\"6.5\" r=\".5\"\/>\r\n              <circle cx=\"17.5\" cy=\"10.5\" r=\".5\"\/>\r\n              <circle cx=\"8.5\" cy=\"7.5\" r=\".5\"\/>\r\n              <circle cx=\"6.5\" cy=\"12.5\" r=\".5\"\/>\r\n              <path d=\"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z\"\/>\r\n            <\/svg>\r\n          <\/div>\r\n          <div class=\"belka-step-info\">\r\n            <h3>Belka Mix-Kreation<\/h3>\r\n            <p>F\u00fcr einzigartige Farbkombinationen<\/p>\r\n          <\/div>\r\n        <\/div>\r\n\r\n      <\/button>\r\n\r\n      <button class=\"belka-step-btn\" data-step=\"2\">\r\n        <div class=\"belka-step-content\">\r\n          <div class=\"belka-step-icon\">\r\n            <svg width=\"28\" height=\"28\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\r\n              <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"\/>\r\n            <\/svg>\r\n          <\/div>\r\n          <div class=\"belka-step-info\">\r\n            <h3>Trocknung & Nachbehandlung<\/h3>\r\n            <p>Perfekte Vollendung Ihres Kunstwerks<\/p>\r\n          <\/div>\r\n        <\/div>\r\n\r\n      <\/button>\r\n    <\/div>\r\n\r\n    <!-- Active Step Content -->\r\n    <div class=\"belka-main-content\">\r\n      <div class=\"belka-content-grid\">\r\n        <!-- Left Side - Steps -->\r\n        <div class=\"belka-steps-column\">\r\n          <div class=\"belka-step-header\">\r\n            <div class=\"belka-step-number\">1<\/div>\r\n            <div class=\"belka-step-title-area\">\r\n              <h3 class=\"belka-step-title\">Standard Belka-Vorbereitung<\/h3>\r\n              <p class=\"belka-step-subtitle\">Die Grundlage f\u00fcr perfekte Ergebnisse<\/p>\r\n\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <div class=\"belka-substeps\" id=\"substeps-container\">\r\n            <!-- Substeps will be populated by JavaScript -->\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <!-- Right Side - Video & Tips -->\r\n        <div class=\"belka-media-column\">\r\n          <!-- Video -->\r\n          <div class=\"belka-video-container\" data-youtube=\"WRwwbaCF87M\" data-title=\"Baumwollputz Auftragen\">\r\n            <div class=\"belka-video-wrapper\" id=\"video-wrapper\">\r\n              <img decoding=\"async\" src=\"https:\/\/i.ytimg.com\/vi\/WRwwbaCF87M\/hqdefault.jpg\" alt=\"Tutorial Video\" class=\"belka-video-thumbnail\" id=\"video-thumbnail\" style=\"height:-webkit-fill-available;\">\r\n              <div class=\"belka-video-overlay\" id=\"video-overlay\">\r\n                <div class=\"belka-play-button\">\r\n                  <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n                    <polygon points=\"5,3 19,12 5,21\"\/>\r\n                  <\/svg>\r\n                <\/div>\r\n              <\/div>\r\n              <div class=\"belka-video-title\" id=\"video-title\"><\/div>\r\n              <iframe id=\"video-iframe\" style=\"display: none;\" width=\"100%\" height=\"100%\" title=\"Baumwollputz Auftragen\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen referrerpolicy=\"strict-origin-when-cross-origin\"><\/iframe>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <!-- Design Tips -->\r\n          <div class=\"belka-tips-card\">\r\n            <h4 class=\"belka-tips-title\">\r\n              <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\r\n                <path d=\"M9 12l2 2 4-4\"\/>\r\n                <path d=\"M21 12c.552 0 1-.448 1-1s-.448-1-1-1-1 .448-1 1 .448 1 1 1z\"\/>\r\n                <path d=\"M3 12c.552 0 1-.448 1-1s-.448-1-1-1-1 .448-1 1 .448 1 1 1z\"\/>\r\n                <path d=\"M12 21c.552 0 1-.448 1-1s-.448-1-1-1-1 .448-1 1 .448 1 1 1z\"\/>\r\n                <path d=\"M12 3c.552 0 1-.448 1-1s-.448-1-1-1-1 .448-1 1 .448 1 1 1z\"\/>\r\n                <path d=\"M18.364 18.364c.39.39 1.024.39 1.414 0s.39-1.024 0-1.414-.024-.39-1.414 0-.39 1.024 0 1.414z\"\/>\r\n                <path d=\"M4.222 4.222c.39.39 1.024.39 1.414 0s.39-1.024 0-1.414-1.024-.39-1.414 0-.39 1.024 0 1.414z\"\/>\r\n                <path d=\"M18.364 5.636c.39-.39.39-1.024 0-1.414s-1.024-.39-1.414 0-.39 1.024 0 1.414 1.024.39 1.414 0z\"\/>\r\n                <path d=\"M4.222 19.778c.39-.39.39-1.024 0-1.414s-1.024-.39-1.414 0-.39 1.024 0 1.414 1.024.39 1.414 0z\"\/>\r\n              <\/svg>\r\n              Design-Tipps\r\n            <\/h4>\r\n            <div class=\"belka-tips-list\">\r\n              <div class=\"belka-tip-item\">\r\n                <button class=\"belka-tip-button\" data-tip=\"0\">\r\n                  <div class=\"belka-tip-image\">\r\n                    <img decoding=\"async\" src=\"https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/marmoroptik-beispiel-belka-tapete-belka-mix.jpg\" alt=\"Marmoreffekt\">\r\n                  <\/div>\r\n                  <div class=\"belka-tip-content\">\r\n                    <h5>Marmoreffekt<\/h5>\r\n                    <p>Weniger mischen f\u00fcr deutlichere Farbverl\u00e4ufe<\/p>\r\n                  <\/div>\r\n                  <svg class=\"belka-tip-arrow\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\r\n                    <polyline points=\"6,9 12,15 18,9\"\/>\r\n                  <\/svg>\r\n                <\/button>\r\n                <div class=\"belka-tip-expanded\" style=\"display: none;\">\r\n                  <p>Durch leichtes Mischen der Farben k\u00f6nnen Sie eine nat\u00fcrliche Marmoroptik erzielen. Je weniger Sie die verschiedenen Farben miteinander vermischen, desto deutlicher bleiben die einzelnen Farbt\u00f6ne sichtbar.<\/p>\r\n                <\/div>\r\n              <\/div>\r\n\r\n              <div class=\"belka-tip-item\">\r\n                <button class=\"belka-tip-button\" data-tip=\"1\">\r\n                  <div class=\"belka-tip-image\">\r\n                    <img decoding=\"async\" src=\"https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/akzentwand-schaffen-sie-eine-auffallige-akzentwand-indem-sie-eine-wand-des-raumes-mit-einem-dunkleren-ton-betonen-dies-verleiht-ihrem-raum-tiefe-und-charakter.jpg\" alt=\"Akzentwand\">\r\n                  <\/div>\r\n                  <div class=\"belka-tip-content\">\r\n                    <h5>Akzentwand<\/h5>\r\n                    <p>Dunklere T\u00f6ne f\u00fcr mehr Tiefe<\/p>\r\n                  <\/div>\r\n                  <svg class=\"belka-tip-arrow\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\r\n                    <polyline points=\"6,9 12,15 18,9\"\/>\r\n                  <\/svg>\r\n                <\/button>\r\n                <div class=\"belka-tip-expanded\" style=\"display: none;\">\r\n                  <p>Schaffen Sie eine auff\u00e4llige Akzentwand, indem Sie eine Wand des Raumes mit einem dunkleren Ton betonen. Dies verleiht Ihrem Raum Tiefe und Charakter.<\/p>\r\n                <\/div>\r\n              <\/div>\r\n\r\n              <div class=\"belka-tip-item\">\r\n                <button class=\"belka-tip-button\" data-tip=\"2\">\r\n                  <div class=\"belka-tip-image\">\r\n                    <img decoding=\"async\" src=\"https:\/\/gobelka.com\/de\/wp-content\/uploads\/2025\/05\/muster-und-schablonen-fur-komplexere-designs-konnen-sie-direkt-auf-die-wand-zeichnen-oder-eine-schablone-vorbereiten-die-ihnen-hilft-die-farben-gleichmassig-aufzutragen.jpg\" alt=\"Schablonen\">\r\n                  <\/div>\r\n                  <div class=\"belka-tip-content\">\r\n                    <h5>Schablonen-Design<\/h5>\r\n                    <p>Komplexe Muster erstellen<\/p>\r\n                  <\/div>\r\n                  <svg class=\"belka-tip-arrow\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\r\n                    <polyline points=\"6,9 12,15 18,9\"\/>\r\n                  <\/svg>\r\n                <\/button>\r\n                <div class=\"belka-tip-expanded\" style=\"display: none;\">\r\n                  <p>F\u00fcr komplexere Designs k\u00f6nnen Sie Schablonen verwenden, die Ihnen helfen, die Farben gleichm\u00e4\u00dfig aufzutragen. Verwenden Sie stabile Materialien f\u00fcr beste Ergebnisse.<\/p>\r\n                <\/div>\r\n              <\/div>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <!-- Progress Indicator -->\r\n          <div class=\"belka-progress-card\">\r\n            <div class=\"belka-progress-content\">\r\n              <svg class=\"belka-progress-icon\" width=\"32\" height=\"32\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\r\n                <circle cx=\"12\" cy=\"12\" r=\"10\"\/>\r\n                <polyline points=\"12,6 12,12 16,14\"\/>\r\n              <\/svg>\r\n              <div class=\"belka-progress-info\">\r\n                <h4>Trocknungsfortschritt<\/h4>\r\n                <div class=\"belka-progress-bar\">\r\n                  <div class=\"belka-progress-fill\"><\/div>\r\n                <\/div>\r\n                <div class=\"belka-progress-labels\">\r\n                  <span>24h<\/span>\r\n                  <span>48h<\/span>\r\n                  <span>72h<\/span>\r\n                <\/div>\r\n              <\/div>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n\r\n  <\/div>\r\n<\/section>\r\n\r\n\r\n    <!-- FAQ Section -->\r\n    <section id=\"faq\" class=\"faq-section\">\r\n        <div class=\"container\">\r\n            <div class=\"section-header\">\r\n                <h2>H\u00e4ufig gestellte Fragen<\/h2>\r\n                <p>\r\n                    Hier finden Sie Antworten auf h\u00e4ufig gestellte Fragen zur Belka Mix-Wandbeschichtung.\r\n                <\/p>\r\n            <\/div>\r\n\r\n            <div class=\"faq-container\">\r\n                <div class=\"accordion\">\r\n                    <div class=\"accordion-item\">\r\n                        <button class=\"accordion-button\">\r\n                            In welchen Farbkombinationen ist Belka Mix erh\u00e4ltlich?\r\n                            <i class=\"fas fa-chevron-down\"><\/i>\r\n                        <\/button>\r\n                        <div class=\"accordion-content\">\r\n                            <p>\r\n                               Belka Mix ist in zwei, drei, vier, f\u00fcnf oder sogar unendlich vielen Farbkombinationen erh\u00e4ltlich \u2013 ganz nach Ihrem Geschmack. Auf unserer Plattform k\u00f6nnen Sie derzeit zwischen zwei und f\u00fcnf Farben w\u00e4hlen, um Ihre Wandgestaltung individuell zu gestalten.\r\n                            <\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                    <div class=\"accordion-item\">\r\n                        <button class=\"accordion-button\">\r\n                           Wie funktioniert Belka Mix?\r\n                            <i class=\"fas fa-chevron-down\"><\/i>\r\n                        <\/button>\r\n                        <div class=\"accordion-content\">\r\n                            <p>\r\n                                Belka Mix besteht aus nat\u00fcrlichen Baumwollfasern und wird trocken geliefert. Sie mischen die ausgew\u00e4hlten Farben einfach mit Wasser an \u2013 ganz ohne Kleister oder Kleber. Anschlie\u00dfend tragen Sie die Mischung mit einer Spachtel (Mala) auf die Wand auf. So entstehen kreative und einzigartige Wanddesigns.\r\n                            <\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                    <div class=\"accordion-item\">\r\n                        <button class=\"accordion-button\">\r\n                            Wie viele Farben kann ich mit Belka Mix kombinieren?\r\n                            <i class=\"fas fa-chevron-down\"><\/i>\r\n                        <\/button>\r\n                        <div class=\"accordion-content\">\r\n                            <p>\r\n                                Sie k\u00f6nnen bis zu f\u00fcnf verschiedene Belka-Farben frei miteinander mischen. Dadurch sind Ihrer Kreativit\u00e4t keine Grenzen gesetzt, und Sie k\u00f6nnen einzigartige Farbkombinationen und Muster gestalten.\r\n                            <\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                    <div class=\"accordion-item\">\r\n                        <button class=\"accordion-button\">\r\n                            Wie viel Fl\u00e4che kann ich mit einem Belka Mix Set abdecken?\r\n                            <i class=\"fas fa-chevron-down\"><\/i>\r\n                        <\/button>\r\n                        <div class=\"accordion-content\">\r\n                            <p>\r\n                                Ein Belka Mix Set enth\u00e4lt 2, 3, 4 oder 5 Packungen in Gr\u00f6\u00dfen von 1 kg, 3 kg oder 5 kg \u2013 ideal f\u00fcr die Gestaltung ganzer R\u00e4ume. Je nach Wandbeschaffenheit und gew\u00fcnschter Schichtdicke reicht die Mischung f\u00fcr Fl\u00e4chen von ca. 6 m\u00b2 bis zu Ihrer Wunschfl\u00e4che. F\u00fcr optimale Ergebnisse empfehlen wir eine Schichtdicke von 1,5 bis 2 mm.\r\n\r\n                            <\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                    <div class=\"accordion-item\">\r\n                        <button class=\"accordion-button\">\r\n                           Wie lange dauert die Trocknung von Belka Mix?\r\n                            <i class=\"fas fa-chevron-down\"><\/i>\r\n                        <\/button>\r\n                        <div class=\"accordion-content\">\r\n                            <p>\r\n                                Die Trocknungszeit h\u00e4ngt von Faktoren wie Raumtemperatur, Luftfeuchtigkeit und Schichtdicke ab. Im Durchschnitt trocknet Belka Mix innerhalb von 24 bis 48 Stunden. Eine gute Bel\u00fcftung beschleunigt den Prozess.\r\n                            <\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                    <div class=\"accordion-item\">\r\n                        <button class=\"accordion-button\">\r\n                            Auf welchen Untergr\u00fcnden kann Belka Mix angewendet werden?\r\n                            <i class=\"fas fa-chevron-down\"><\/i>\r\n                        <\/button>\r\n                        <div class=\"accordion-content\">\r\n                            <p>\r\n                                Belka Mix haftet gut auf verschiedenen trockenen und sauberen Untergr\u00fcnden wie Putz, Beton, Holz, Gipskarton, matten Fliesen und vorhandenen Altanstrichen. Die Oberfl\u00e4che muss tragf\u00e4hig und frei von Fett oder Staub sein.\r\n                            <\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                    <div class=\"accordion-item\">\r\n                        <button class=\"accordion-button\">\r\n                            Ist Belka Mix umweltfreundlich und gesundheitlich unbedenklich?\r\n                            <i class=\"fas fa-chevron-down\"><\/i>\r\n                        <\/button>\r\n                        <div class=\"accordion-content\">\r\n                            <p>\r\n                                Ja, Belka Mix besteht aus 100 % nat\u00fcrlicher Baumwolle und ist frei von sch\u00e4dlichen Chemikalien wie VOCs oder Formaldehyd. Es ist somit ideal f\u00fcr Allergiker, Kinderzimmer und nachhaltiges Bauen.\r\n                            <\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                    <div class=\"accordion-item\">\r\n                        <button class=\"accordion-button\">\r\n                            Kann ich Belka Mix selbst verarbeiten oder ben\u00f6tige ich einen Profi?\r\n                            <i class=\"fas fa-chevron-down\"><\/i>\r\n                        <\/button>\r\n                        <div class=\"accordion-content\">\r\n                            <p>\r\n                                Belka Mix ist speziell f\u00fcr den DIY-Bereich entwickelt worden. Sie ben\u00f6tigen nur eine Spachtel und Wasser f\u00fcr die Verarbeitung. Auch unge\u00fcbte Heimwerker k\u00f6nnen damit hervorragende Ergebnisse erzielen.\r\n                            <\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                    <div class=\"accordion-item\">\r\n                        <button class=\"accordion-button\">\r\n                            Kann Belka Mix repariert oder ausgebessert werden?\r\n                            <i class=\"fas fa-chevron-down\"><\/i>\r\n                        <\/button>\r\n                        <div class=\"accordion-content\">\r\n                            <p>\r\n                                Ja, Belka Mix ist reparierbar und wiederverwendbar. Kleine Besch\u00e4digungen k\u00f6nnen durch Anfeuchten und erneutes Auftragen problemlos ausgebessert werden.\r\n                            <\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                          <div class=\"accordion-item\">\r\n                        <button class=\"accordion-button\">\r\n                            Wie pflege und reinige ich eine Wand mit Belka Mix?\r\n                            <i class=\"fas fa-chevron-down\"><\/i>\r\n                        <\/button>\r\n                        <div class=\"accordion-content\">\r\n                            <p>\r\n                                Die Oberfl\u00e4che kann mit einem feuchten Tuch vorsichtig abgewischt werden. Vermeiden Sie starke Reinigungsmittel oder Scheuermittel, um die nat\u00fcrliche Struktur zu erhalten.\r\n                            <\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n                    \r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/section>\r\n\r\n    <!-- CTA Section -->\r\n    <section id=\"cta\" class=\"cta-section\">\r\n        <div class=\"container\">\r\n            <div class=\"cta-grid\">\r\n                <div class=\"cta-content\">\r\n                    <h2>Entdecken Sie alle Belka Mix-Farben<\/h2>\r\n                    <p>\r\n                        Unbegrenzte Kombinationsm\u00f6glichkeiten mit \u00fcber 60 Farboptionen. Finden Sie die idealen Belka\r\n                        Mix-Farben f\u00fcr jeden Bereich Ihres Hauses.\r\n                    <\/p>\r\n                    <a class=\"button secondary\" href=\"https:\/\/gobelka.com\/de\/belka-alle-produkte\/\" target=\"_blank\">\r\n                        <i class=\"fas fa-paint-brush\"><\/i>\r\n                        Alle Farben anzeigen\r\n                    <\/a>\r\n                <\/div>\r\n\r\n                <div class=\"testimonial-card\">\r\n                    <div class=\"stars1\">\r\n                        <i class=\"fas fa-star\"><\/i>\r\n                        <i class=\"fas fa-star\"><\/i>\r\n                        <i class=\"fas fa-star\"><\/i>\r\n                        <i class=\"fas fa-star\"><\/i>\r\n                        <i class=\"fas fa-star\"><\/i>\r\n                    <\/div>\r\n                    <div class=\"rating\">4.9\/5 - Trustpilot<\/div>\r\n\r\n                    <blockquote>\r\n                        \"Ein sehr guter Service und schnelle\u2026\r\n                        Ein sehr guter Service und schnelle Lieferung\r\n\r\n                        W\u00fcrde immer wieder da Bestellen\"\r\n                    <\/blockquote>\r\n\r\n                    <div class=\"testimonial-author\">\r\n                        <div class=\"author-avatar\">\r\n                            <span>DT<\/span>\r\n                        <\/div>\r\n                        <div class=\"author-info\">\r\n                            <p class=\"author-name\">Detlef Th***<\/p>\r\n                            <p class=\"author-status\">Verifizierter Kunde<\/p>\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <a href=\"https:\/\/de.trustpilot.com\/review\/gobelka.com\" target=\"_blank\" rel=\"noopener\">\r\n                        <button class=\"button outline-light\">\r\n                            <i class=\"fas fa-external-link-alt\"><\/i>\r\n                            Bewerten Sie uns auf Trustpilot\r\n                        <\/button>\r\n                    <\/a>\r\n\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/section>\r\n\r\n<div class=\"modal\" id=\"alternative-modal\">\r\n  <div class=\"modal-content\" style=\"max-width: 35rem;\">\r\n    <div class=\"modal-header\">\r\n      <h3 id=\"alternative-modal-title\">Alternative w\u00e4hlen<\/h3>\r\n      <button class=\"modal-close\" id=\"close-alternative-modal\" type=\"button\">\r\n        <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\r\n          <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"><\/line>\r\n          <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"><\/line>\r\n        <\/svg>\r\n      <\/button>\r\n    <\/div>\r\n    <div class=\"modal-body\">\r\n      <div class=\"search-input-container\" style=\"display:flex;align-items:center;gap:0.5rem;margin-bottom:1rem;\">\r\n\r\n        <input type=\"text\" id=\"alternative-modal-search\" placeholder=\"Produktname eingeben...\" style=\"flex:1;padding:0.5rem;border-radius:6px;border:1px solid #eee;\">\r\n      <\/div>\r\n      <div id=\"alternative-modal-list\" style=\"max-height:220px;overflow-y:auto;\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n  (function () {\r\n    const videoContainer = document.querySelector('.belka-video-container[data-youtube]');\r\n    if (!videoContainer) return;\r\n\r\n    const videoId = videoContainer.getAttribute('data-youtube');\r\n    const videoTitle = videoContainer.getAttribute('data-title') || 'YouTube video';\r\n    const wrapper = videoContainer.querySelector('#video-wrapper');\r\n    const thumbnail = videoContainer.querySelector('#video-thumbnail');\r\n    const overlay = videoContainer.querySelector('#video-overlay');\r\n    const title = videoContainer.querySelector('#video-title');\r\n    const iframe = videoContainer.querySelector('#video-iframe');\r\n\r\n    if (!videoId || !wrapper || !iframe) return;\r\n\r\n    if (title) title.textContent = videoTitle;\r\n\r\n    function createEmbedUrl() {\r\n      const embedUrl = new URL('https:\/\/www.youtube-nocookie.com\/embed\/' + encodeURIComponent(videoId));\r\n      embedUrl.searchParams.set('autoplay', '1');\r\n      embedUrl.searchParams.set('rel', '0');\r\n      embedUrl.searchParams.set('playsinline', '1');\r\n\r\n      if (window.location.protocol === 'http:' || window.location.protocol === 'https:') {\r\n        embedUrl.searchParams.set('origin', window.location.origin);\r\n      }\r\n\r\n      return embedUrl.toString();\r\n    }\r\n\r\n    wrapper.addEventListener('click', function () {\r\n      iframe.src = createEmbedUrl();\r\n      iframe.style.display = 'block';\r\n\r\n      if (thumbnail) thumbnail.style.display = 'none';\r\n      if (overlay) overlay.style.display = 'none';\r\n      if (title) title.style.display = 'none';\r\n    });\r\n  }());\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-20f63cf elementor-widget elementor-widget-html\" data-id=\"20f63cf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<script>\r\n    document.addEventListener('DOMContentLoaded', function () {\r\n        const stepData = [\r\n            {\r\n                id: 1,\r\n                title: \"Standard Belka-Vorbereitung\",\r\n                subtitle: \"Die Grundlage f\u00fcr perfekte Ergebnisse\",\r\n                duration: \"15 Min\",\r\n                difficulty: \"Einfach\",\r\n                video: {\r\n                    thumbnail: \"https:\/\/i.ytimg.com\/vi\/WRwwbaCF87M\/hqdefault.jpg\",\r\n                    embedUrl: \"https:\/\/www.youtube.com\/embed\/WRwwbaCF87M\",\r\n                    title: \"Belka Tapeten richtig anwenden\",\r\n                },\r\n\r\n                steps: [\r\n                    {\r\n                        icon: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M7 16.3c2.2 0 4-1.83 4-4.05 0-1.16-.57-2.26-1.71-3.19S7.29 6.75 7 5.3c-.29 1.45-1.14 2.84-2.29 3.76S3 11.19 3 12.25c0 2.22 1.8 4.05 4 4.05z\"\/><path d=\"M12.56 6.6A10.97 10.97 0 0 0 14 3.02c.5 2.5 2.26 4.89 4.56 6.68a7.58 7.58 0 0 1 2.79 5.7c0 2.99-2.01 5.6-5 5.6s-5-2.61-5-5.6a7.58 7.58 0 0 1 .21-1.8z\"\/><\/svg>`,\r\n                        title: \"Beh\u00e4lter vorbereiten\",\r\n                        description: \"Geben Sie Belka in einen sauberen, tiefen Beh\u00e4lter\",\r\n                        tip: \"Verwenden Sie einen Beh\u00e4lter mit glattem Boden\",\r\n                    },\r\n                    {\r\n                        icon: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><polyline points=\"12,6 12,12 16,14\"\/><\/svg>`,\r\n                        title: \"Wasser hinzuf\u00fcgen\",\r\n                        description: \"F\u00fcgen Sie sauberes Wasser bei Raumtemperatur hinzu (5-7 Liter pro 1 kg Belka)\",\r\n                        tip: \"Wasser sollte 20-25\u00b0C haben\",\r\n                    },\r\n                    {\r\n                        icon: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M18 11V6a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v0\"\/><path d=\"M14 10V4a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v2\"\/><path d=\"M10 10.5V6a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v8\"\/><path d=\"M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.83L7 15\"\/><\/svg>`,\r\n                        title: \"Kneten\",\r\n                        description: \"Kneten Sie es von Hand oder mit einem Mixer, bis es zu einem Teig wird\",\r\n                        tip: \"3-5 Minuten gleichm\u00e4\u00dfig kneten\",\r\n                    },\r\n                    {\r\n                        icon: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><polyline points=\"12,6 12,12 16,14\"\/><\/svg>`,\r\n                        title: \"Ruhezeit\",\r\n                        description: \"Lassen Sie es 1-2 Stunden ruhen\",\r\n                        tip: \"Abdecken verhindert Austrocknung\",\r\n                    },\r\n                    {\r\n                        icon: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect width=\"20\" height=\"5\" x=\"2\" y=\"3\" rx=\"1\"\/><path d=\"M4 8v11a2 2 0 0 0 2 2h2\"\/><path d=\"M20 8v11a2 2 0 0 1-2 2h-2\"\/><\/svg>`,\r\n                        title: \"Finale Vorbereitung\",\r\n                        description: \"Kneten Sie den Belka-Teig weitere 5 Minuten und tragen Sie ihn auf\",\r\n                        tip: \"Gleichm\u00e4\u00dfige Konsistenz ist wichtig\",\r\n                    },\r\n                ],\r\n            },\r\n            {\r\n                id: 2,\r\n                title: \"Belka Mix-Kreation\",\r\n                subtitle: \"F\u00fcr einzigartige Farbkombinationen\",\r\n                duration: \"25 Min\",\r\n                difficulty: \"Mittel\",\r\n                                video: {\r\n                    thumbnail: \"https:\/\/i.ytimg.com\/vi\/v1YznjNgEp4\/hqdefault.jpg\",\r\n                    embedUrl: \"https:\/\/www.youtube.com\/embed\/v1YznjNgEp4\",\r\n                    title: \"Standard Belka Vorbereitung Tutorial\",\r\n                },\r\n                steps: [\r\n                    {\r\n                        icon: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"13.5\" cy=\"6.5\" r=\".5\"\/><circle cx=\"17.5\" cy=\"10.5\" r=\".5\"\/><circle cx=\"8.5\" cy=\"7.5\" r=\".5\"\/><circle cx=\"6.5\" cy=\"12.5\" r=\".5\"\/><path d=\"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z\"\/><\/svg>`,\r\n                        title: \"Farben vorbereiten\",\r\n                        description: \"Bereiten Sie jede Farbe separat nach der Standardmethode vor\",\r\n                        tip: \"Jede Farbe einzeln anmischen\",\r\n                    },\r\n                    {\r\n                        icon: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><polyline points=\"12,6 12,12 16,14\"\/><\/svg>`,\r\n                        title: \"Ruhezeit einhalten\",\r\n                        description: \"Lassen Sie jede Farbe 35-50 Minuten ruhen\",\r\n                        tip: \"L\u00e4ngere Ruhezeit f\u00fcr bessere Mischbarkeit\",\r\n                    },\r\n                    {\r\n                        icon: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"6\" cy=\"6\" r=\"3\"\/><circle cx=\"6\" cy=\"18\" r=\"3\"\/><line x1=\"20\" x2=\"8.12\" y1=\"4\" y2=\"15.88\"\/><line x1=\"14.47\" x2=\"20\" y1=\"14.48\" y2=\"20\"\/><line x1=\"8.12\" x2=\"14.47\" y1=\"8.12\" y2=\"14.47\"\/><\/svg>`,\r\n                        title: \"Portionen teilen\",\r\n                        description: \"Nehmen Sie je nach gew\u00fcnschtem Design St\u00fccke von jeder Farbe\",\r\n                        tip: \"Verschiedene Gr\u00f6\u00dfen f\u00fcr nat\u00fcrlichen Look\",\r\n                    },\r\n                    {\r\n                        icon: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M18 11V6a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v0\"\/><path d=\"M14 10V4a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v2\"\/><path d=\"M10 10.5V6a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v8\"\/><path d=\"M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.83L7 15\"\/><\/svg>`,\r\n                        title: \"Leicht mischen\",\r\n                        description: \"Kneten Sie die Farben nach Ihrem Geschmack leicht zusammen\",\r\n                        tip: \"Nicht zu viel mischen - Marmoreffekt bleibt erhalten\",\r\n                    },\r\n                    {\r\n                        icon: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect width=\"20\" height=\"5\" x=\"2\" y=\"3\" rx=\"1\"\/><path d=\"M4 8v11a2 2 0 0 0 2 2h2\"\/><path d=\"M20 8v11a2 2 0 0 1-2 2h-2\"\/><\/svg>`,\r\n                        title: \"Auftragen\",\r\n                        description: \"Tragen Sie mit transparentem Belka-Spachtel in 2mm Dicke auf\",\r\n                        tip: \"5\u00b0 Winkel f\u00fcr optimale Verteilung\",\r\n                    },\r\n                ],\r\n            },\r\n            {\r\n                id: 3,\r\n                title: \"Trocknung & Nachbehandlung\",\r\n                subtitle: \"Perfekte Vollendung Ihres Kunstwerks\",\r\n                duration: \"24-72h\",\r\n                difficulty: \"Automatisch\",\r\n                 video: {\r\n                    thumbnail: \"https:\/\/i.ytimg.com\/vi\/v1YznjNgEp4\/hqdefault.jpg\",\r\n                    embedUrl: \"https:\/\/www.youtube.com\/embed\/v1YznjNgEp4\",\r\n                    title: \"Standard Belka Vorbereitung Tutorial\",\r\n                },\r\n                steps: [\r\n                    {\r\n                        icon: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><polyline points=\"12,6 12,12 16,14\"\/><\/svg>`,\r\n                        title: \"Trocknungszeit\",\r\n                        description: \"Die Trocknungszeit betr\u00e4gt je nach Luftzirkulation 24-72 Stunden\",\r\n                        tip: \"Gute Bel\u00fcftung beschleunigt Trocknung\",\r\n                    },\r\n                    {\r\n                        icon: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\"\/><circle cx=\"9\" cy=\"7\" r=\"4\"\/><path d=\"M22 21v-2a4 4 0 0 0-3-3.87\"\/><path d=\"M16 3.13a4 4 0 0 1 0 7.75\"\/><\/svg>`,\r\n                        title: \"Sofort bewohnbar\",\r\n                        description: \"Nach der Anwendung k\u00f6nnen Sie sich ohne Bedenken im Raum aufhalten\",\r\n                        tip: \"Keine sch\u00e4dlichen D\u00e4mpfe oder Ger\u00fcche\",\r\n                    },\r\n                    {\r\n                        icon: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z\"\/><path d=\"M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12\"\/><\/svg>`,\r\n                        title: \"Nat\u00fcrlich & gesund\",\r\n                        description: \"Belka Mix ist dank nat\u00fcrlicher Struktur geruchlos und unbedenklich\",\r\n                        tip: \"100% nat\u00fcrliche Baumwollstruktur\",\r\n                    },\r\n                    {\r\n                        icon: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M7 16.3c2.2 0 4-1.83 4-4.05 0-1.16-.57-2.26-1.71-3.19S7.29 6.75 7 5.3c-.29 1.45-1.14 2.84-2.29 3.76S3 11.19 3 12.25c0 2.22 1.8 4.05 4 4.05z\"\/><path d=\"M12.56 6.6A10.97 10.97 0 0 0 14 3.02c.5 2.5 2.26 4.89 4.56 6.68a7.58 7.58 0 0 1 2.79 5.7c0 2.99-2.01 5.6-5 5.6s-5-2.61-5-5.6a7.58 7.58 0 0 1 .21-1.8z\"\/><\/svg>`,\r\n                        title: \"Pflegeleicht\",\r\n                        description: \"Nach vollst\u00e4ndiger Trocknung mit feuchtem Tuch abwischbar\",\r\n                        tip: \"Sanfte Reinigung erh\u00e4lt die Struktur\",\r\n                    },\r\n                ],\r\n            },\r\n        ]\r\n\r\n        let currentStep = 0\r\n        const playingVideos = {}\r\n\r\n        \/\/ Initialize\r\n        function init() {\r\n            updateStepContent()\r\n            bindEvents()\r\n        }\r\n\r\n        \/\/ Bind events\r\n        function bindEvents() {\r\n            \/\/ Step navigation\r\n            document.querySelectorAll(\".belka-step-btn\").forEach((btn, index) => {\r\n                btn.addEventListener(\"click\", () => {\r\n                    currentStep = index\r\n                    updateStepNavigation()\r\n                    updateStepContent()\r\n                    resetVideo()\r\n                })\r\n            })\r\n\r\n            \/\/ Video play\r\n            document.getElementById(\"video-overlay\").addEventListener(\"click\", playVideo)\r\n\r\n            \/\/ Tips toggle\r\n            document.querySelectorAll(\".belka-tip-button\").forEach((btn, index) => {\r\n                btn.addEventListener(\"click\", () => toggleTip(index))\r\n            })\r\n\r\n            \/\/ Add touch events for package options\r\n            document.addEventListener('touchstart', function(e) {\r\n                const packageOption = e.target.closest('.package-option');\r\n                if (packageOption && !packageOption.disabled) {\r\n                    const size = packageOption.textContent.trim();\r\n                    const price = packageOption.getAttribute('data-price');\r\n                    selectPackage(packageOption, size, price);\r\n                }\r\n            }, false);\r\n\r\n            \/\/ Add touch events for quantity buttons\r\n            document.querySelectorAll('.quantity-button').forEach(button => {\r\n                button.addEventListener('touchstart', function(e) {\r\n                    e.preventDefault();\r\n                    const change = this.classList.contains('decrease') ? -1 : 1;\r\n                    updateQuantity(this, change);\r\n                }, false);\r\n            });\r\n        }\r\n\r\n        \/\/ Update step navigation\r\n        function updateStepNavigation() {\r\n            document.querySelectorAll(\".belka-step-btn\").forEach((btn, index) => {\r\n                if (index === currentStep) {\r\n                    btn.classList.add(\"active\")\r\n                } else {\r\n                    btn.classList.remove(\"active\")\r\n                }\r\n            })\r\n        }\r\n\r\n        \/\/ Update step content\r\n        function updateStepContent() {\r\n            const step = stepData[currentStep]\r\n\r\n            \/\/ Update step header\r\n            document.querySelector(\".belka-step-number\").textContent = step.id\r\n            document.querySelector(\".belka-step-title\").textContent = step.title\r\n            document.querySelector(\".belka-step-subtitle\").textContent = step.subtitle\r\n\r\n\r\n            \/\/ Update substeps\r\n            const substepsContainer = document.getElementById(\"substeps-container\")\r\n            substepsContainer.innerHTML = step.steps\r\n                .map(\r\n                    (substep) => `\r\n      <div class=\"belka-substep\">\r\n        <div class=\"belka-substep-icon\">\r\n          ${substep.icon}\r\n        <\/div>\r\n        <div class=\"belka-substep-content\">\r\n          <h4 class=\"belka-substep-title\">${substep.title}<\/h4>\r\n          <p class=\"belka-substep-description\">${substep.description}<\/p>\r\n          <div class=\"belka-substep-tip\">\r\n            <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\r\n              <path d=\"M9 12l2 2 4-4\"\/>\r\n              <path d=\"M21 12c.552 0 1-.448 1-1s-.448-1-1-1-1 .448-1 1 .448 1 1 1z\"\/>\r\n              <path d=\"M3 12c.552 0 1-.448 1-1s-.448-1-1-1-1 .448-1 1 .448 1 1 1z\"\/>\r\n              <path d=\"M12 21c.552 0 1-.448 1-1s-.448-1-1-1-1 .448-1 1 .448 1 1 1z\"\/>\r\n              <path d=\"M12 3c.552 0 1-.448 1-1s-.448-1-1-1-1 .448-1 1 .448 1 1 1z\"\/>\r\n              <path d=\"M18.364 18.364c.39.39 1.024.39 1.414 0s.39-1.024 0-1.414-.024-.39-1.414 0-.39 1.024 0 1.414z\"\/>\r\n              <path d=\"M4.222 4.222c.39.39 1.024.39 1.414 0s.39-1.024 0-1.414-1.024-.39-1.414 0-.39 1.024 0 1.414z\"\/>\r\n              <path d=\"M18.364 5.636c.39-.39.39-1.024 0-1.414s-1.024-.39-1.414 0-.39 1.024 0 1.414 1.024.39 1.414 0z\"\/>\r\n              <path d=\"M4.222 19.778c.39-.39.39-1.024 0-1.414s-1.024-.39-1.414 0-.39 1.024 0 1.414 1.024.39 1.414 0z\"\/>\r\n            <\/svg>\r\n            <span>${substep.tip}<\/span>\r\n          <\/div>\r\n        <\/div>\r\n        <svg class=\"belka-substep-check\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\r\n          <polyline points=\"20,6 9,17 4,12\"\/>\r\n        <\/svg>\r\n      <\/div>\r\n    `,\r\n                )\r\n                .join(\"\")\r\n\r\n            \/\/ Update video\r\n            document.getElementById(\"video-thumbnail\").src = step.video.thumbnail\r\n            document.getElementById(\"video-title\").textContent = step.video.title\r\n        }\r\n\r\n        \/\/ Play video\r\n        function playVideo() {\r\n            const step = stepData[currentStep]\r\n            const thumbnail = document.getElementById(\"video-thumbnail\")\r\n            const overlay = document.getElementById(\"video-overlay\")\r\n            const iframe = document.getElementById(\"video-iframe\")\r\n\r\n            thumbnail.style.display = \"none\"\r\n            overlay.style.display = \"none\"\r\n            iframe.style.display = \"block\"\r\n            iframe.src = step.video.embedUrl + \"?autoplay=1\"\r\n\r\n            playingVideos[currentStep] = true\r\n        }\r\n\r\n        \/\/ Reset video\r\n        function resetVideo() {\r\n            const thumbnail = document.getElementById(\"video-thumbnail\")\r\n            const overlay = document.getElementById(\"video-overlay\")\r\n            const iframe = document.getElementById(\"video-iframe\")\r\n\r\n            thumbnail.style.display = \"block\"\r\n            overlay.style.display = \"flex\"\r\n            iframe.style.display = \"none\"\r\n            iframe.src = \"\"\r\n\r\n            playingVideos[currentStep] = false\r\n        }\r\n\r\n        \/\/ Toggle tip\r\n        function toggleTip(index) {\r\n            const tipItem = document.querySelectorAll(\".belka-tip-item\")[index]\r\n            const expanded = tipItem.querySelector(\".belka-tip-expanded\")\r\n            const arrow = tipItem.querySelector(\".belka-tip-arrow\")\r\n\r\n            if (tipItem.classList.contains(\"expanded\")) {\r\n                tipItem.classList.remove(\"expanded\")\r\n                expanded.style.display = \"none\"\r\n            } else {\r\n                \/\/ Close all other tips\r\n                document.querySelectorAll(\".belka-tip-item\").forEach((item) => {\r\n                    item.classList.remove(\"expanded\")\r\n                    item.querySelector(\".belka-tip-expanded\").style.display = \"none\"\r\n                })\r\n\r\n                \/\/ Open this tip\r\n                tipItem.classList.add(\"expanded\")\r\n                expanded.style.display = \"block\"\r\n            }\r\n        }\r\n\r\n        \/\/ Initialize the component\r\n        init();\r\n\r\n        \/\/ Tabs functionality\r\n        const tabButtons = document.querySelectorAll('.tab-button');\r\n        const tabContents = document.querySelectorAll('.tab-content');\r\n\r\n        tabButtons.forEach(button => {\r\n            button.addEventListener('click', () => {\r\n                const tabId = button.getAttribute('data-tab');\r\n\r\n                \/\/ Remove active class from all buttons and contents\r\n                tabButtons.forEach(btn => btn.classList.remove('active'));\r\n                tabContents.forEach(content => content.classList.remove('active'));\r\n\r\n                \/\/ Add active class to clicked button and corresponding content\r\n                button.classList.add('active');\r\n                document.getElementById(`${tabId}-content`).classList.add('active');\r\n            });\r\n        });\r\n\r\n        \/\/ Accordion functionality\r\n        const accordionButtons = document.querySelectorAll('.accordion-button');\r\n\r\n        accordionButtons.forEach(button => {\r\n            button.addEventListener('click', () => {\r\n                const content = button.nextElementSibling;\r\n                const isActive = button.classList.contains('active');\r\n\r\n                \/\/ Close all accordions\r\n                accordionButtons.forEach(btn => {\r\n                    btn.classList.remove('active');\r\n                    btn.nextElementSibling.style.maxHeight = null;\r\n                });\r\n\r\n                \/\/ If the clicked accordion wasn't active, open it\r\n                if (!isActive) {\r\n                    button.classList.add('active');\r\n                    content.style.maxHeight = content.scrollHeight + 'px';\r\n                }\r\n            });\r\n        });\r\n\r\n        \/\/ Open first accordion by default\r\n        if (accordionButtons.length > 0) {\r\n            accordionButtons[0].click();\r\n        }\r\n\r\n        \/\/ Smooth scrolling for anchor links\r\n        document.querySelectorAll('a[href^=\"#\"]').forEach(anchor => {\r\n            anchor.addEventListener('click', function (e) {\r\n                e.preventDefault();\r\n\r\n                const targetId = this.getAttribute('href');\r\n                if (targetId === '#') return;\r\n\r\n                const targetElement = document.querySelector(targetId);\r\n                if (targetElement) {\r\n                    window.scrollTo({\r\n                        top: targetElement.offsetTop + 200,\r\n                        behavior: 'smooth'\r\n                    });\r\n                }\r\n            });\r\n        });\r\n\r\n        \/\/ Image hover effects\r\n        const images = document.querySelectorAll('.main-image img, .detail-image img');\r\n\r\n        images.forEach(img => {\r\n            img.addEventListener('mouseenter', () => {\r\n                img.style.transform = 'scale(1.05)';\r\n            });\r\n\r\n            img.addEventListener('mouseleave', () => {\r\n                img.style.transform = 'scale(1)';\r\n            });\r\n        });\r\n\r\n        const collections = document.querySelectorAll('.collection-card');\r\n\r\n        collections.forEach(collection => {\r\n            const mainImage = collection.querySelector('.main-image img');\r\n            const detailImages = collection.querySelectorAll('.detail-image img');\r\n\r\n            \/\/ Add click handlers to detail images\r\n            detailImages.forEach(detailImg => {\r\n                detailImg.addEventListener('click', function () {\r\n                    \/\/ Update main image with detail image source and alt\r\n                    mainImage.src = this.src;\r\n                    mainImage.alt = this.alt;\r\n                });\r\n\r\n                \/\/ Add hover cursor style\r\n                detailImg.style.cursor = 'pointer';\r\n            });\r\n        });\r\n\r\n        \/\/ Fetch products from WordPress\r\n        fetch('https:\/\/gobelka.com\/de\/wp-admin\/admin-ajax.php?action=get_custom_woocommerce_products')\r\n            .then(res => res.json())\r\n            .then(data => {\r\n                data = data.map(product => ({\r\n                    ...product,\r\n                    name: product.name.split('-')[0].trim().replace('Belka ', '') \/\/ Format name for all products\r\n                }));\r\n\r\n                data.forEach(product => {\r\n                    const variations = product.variations.filter(v =>\r\n                        ['1kg', '3kg', '5kg'].includes(v.attributes.pa_packmass)\r\n                    );\r\n\r\n                    if (variations.length > 0) {\r\n                        const colorItems = document.querySelectorAll(`.color-item[data-product-id=\"${product.id}\"]`);\r\n                        colorItems.forEach(colorItem => {\r\n                            const packageOptionsContainer = colorItem.querySelector('.color-package-options');\r\n                            const quanitcontrol = colorItem.querySelector('.quantity-controlsx');\r\n                            const availableVariations = variations.filter(v => v.is_in_stock);\r\n\r\n                            if (availableVariations.length === 0) {\r\n                                \/\/ Show product selection modal for out of stock items\r\n                                const similarProducts = data.filter(p =>\r\n                                    p.id !== product.id &&\r\n                                    p.variations.some(v => v.is_in_stock)\r\n                                );\r\n\r\n                                \/\/ Store similarProducts on the button for modal use\r\n                                packageOptionsContainer.innerHTML = `\r\n                                    <div class=\"out-of-stock-message\" data-old-product-id=\"${product.id}\">\r\nZurzeit nicht verf\u00fcgbar. Jetzt Alternativen ansehen                                    \r\n                                    <\/div>`;\r\n                                packageOptionsContainer.style.display = 'grid';\r\n                                packageOptionsContainer.style.gridTemplateColumns = 'unset';\r\n                                quanitcontrol.style.display = 'none';\r\n\r\n                                \/\/ Attach click handler to open modal\r\n                                setTimeout(() => {\r\n                                    const btn = packageOptionsContainer.querySelector('.out-of-stock-message');\r\n                                    if (btn) {\r\n                                        btn.addEventListener('click', function () {\r\n                                            window.showAlternativeModal(similarProducts, product.id, colorItem);\r\n                                        });\r\n                                    }\r\n                                }, 0);\r\n                            } else {\r\n                                \/\/ Show all possible package sizes, marking unavailable ones\r\n                                const allSizes = ['1kg', '3kg', '5kg'];\r\n                                packageOptionsContainer.innerHTML = allSizes.map(size => {\r\n                                    const variation = variations.find(v => v.attributes.pa_packmass === size);\r\n                                    if (!variation) {\r\n                                        return `<button class=\"package-option not-available\" disabled>\r\n                                            <s>${size}<\/s><br>\r\n                                            <small>Nicht verf\u00fcgbar<\/small>\r\n                                        <\/button>`;\r\n                                    }\r\n                                    const isInStock = variation.is_in_stock;\r\n                                    return `\r\n                                        <button class=\"package-option ${!isInStock ? 'out-of-stock' : ''}\" \r\n                                            data-variation-id=\"${variation.id}\"\r\n                                            data-price=\"${variation.price}\"\r\n                                            data-stock=\"${variation.stock_quantity}\"\r\n                                            ${!isInStock ? 'disabled' : ''}\r\n                                            onclick=\"selectPackage(this, '${size}', ${variation.price})\">\r\n                                            ${!isInStock ? '<s>' : ''}${size}${!isInStock ? '<\/s>' : ''}\r\n                        \r\n                                        <\/button>\r\n                                    `;\r\n                                }).join('');\r\n\r\n                                \/\/ Update the replaceProduct function to handle unavailable sizes\r\n                                window.replaceProduct = function (select, oldProductId) {\r\n                                    if (!select.value) return;\r\n\r\n\r\n                                    const option = select.selectedOptions[0];\r\n                                    const newProductData = {\r\n                                        id: select.value,\r\n                                        name: option.dataset.name.split('-')[0].trim().replace('Belka ', ''),\r\n                                        color: option.dataset.color,\r\n                                        variations: JSON.parse(option.dataset.variations)\r\n                                    };\r\n\r\n                                    const colorItem = select.closest('.color-item');\r\n                                    const swatch = colorItem.querySelector('.color-swatch');\r\n                                    const nameElement = colorItem.querySelector('.color-name');\r\n\r\n                                    \/\/ Update the color item with new product data\r\n                                    colorItem.setAttribute('data-product-id', newProductData.id);\r\n                                    if (newProductData.color) {\r\n                                        extractCenterColor(newProductData.color)\r\n                                            .then(color => {\r\n                                                swatch.style.backgroundColor = color;\r\n                                            })\r\n                                            .catch(() => {\r\n                                                \/\/ Fallback to default color if extraction fails\r\n                                                swatch.style.backgroundColor = '#000000';\r\n                                            });\r\n                                    }\r\n\r\n\r\n                                    nameElement.textContent = newProductData.name;\r\n\r\n                                    \/\/ Replace package options with new variations\r\n                                    const packageOptionsContainer = colorItem.querySelector('.color-package-options');\r\n                                    const quantityControls = colorItem.querySelector('.quantity-controlsx');\r\n                                    const availableVariations = newProductData.variations.filter(v => v.is_in_stock);\r\n\r\n                                    \/\/ Show all possible sizes for new product\r\n                                    packageOptionsContainer.innerHTML = allSizes.map(size => {\r\n                                        const variation = newProductData.variations.find(v =>\r\n                                            v.attributes.pa_packmass === size\r\n                                        );\r\n                                        if (!variation) {\r\n                                            return `<button class=\"package-option not-available\" disabled>\r\n                                                <s>${size}<\/s><br>\r\n                                                <small>Nicht verf\u00fcgbar<\/small>\r\n                                            <\/button>`;\r\n                                        }\r\n                                        const isInStock = variation.is_in_stock;\r\n                                        return `\r\n                                            <button class=\"package-option ${!isInStock ? 'out-of-stock' : ''}\" \r\n                                                data-variation-id=\"${variation.id}\"\r\n                                                data-price=\"${variation.price}\"\r\n                                                data-stock=\"${variation.stock_quantity}\"\r\n                                                ${!isInStock ? 'disabled' : ''}\r\n                                                onclick=\"selectPackage(this, '${size}', ${variation.price})\">\r\n                                                ${!isInStock ? '<s>' : ''}${size}${!isInStock ? '<\/s>' : ''}\r\n                                   \r\n                                            <\/button>\r\n                                        `;\r\n                                    }).join('');\r\n\r\n                                    packageOptionsContainer.style.display = 'flex';\r\n\r\n\r\n                                    \/\/ Select first available variation\r\n                                    const firstOption = packageOptionsContainer.querySelector('.package-option');\r\n                                    if (firstOption) {\r\n                                        firstOption.click();\r\n                                    }\r\n                                };\r\n\r\n                                \/\/ Select first available size\r\n                                const defaultButton = packageOptionsContainer.querySelector('.package-option:not(.out-of-stock):not(.not-available)');\r\n                                if (defaultButton) {\r\n                                    selectPackage(\r\n                                        defaultButton,\r\n                                        availableVariations[0].attributes.pa_packmass,\r\n                                        availableVariations[0].price\r\n                                    );\r\n                                }\r\n                            }\r\n                        });\r\n                    }\r\n                });\r\n            });\r\n\r\n\r\n        \/\/ Add this before replaceProduct function\r\n        window.extractCenterColor = function (imageUrl) {\r\n            return new Promise((resolve, reject) => {\r\n                const img = new Image();\r\n                img.crossOrigin = \"Anonymous\";\r\n                img.onload = function () {\r\n                    const canvas = document.createElement('canvas');\r\n                    const ctx = canvas.getContext('2d');\r\n                    canvas.width = img.width;\r\n                    canvas.height = img.height;\r\n                    ctx.drawImage(img, 0, 0);\r\n\r\n                    \/\/ Get center pixel color\r\n                    const centerX = Math.floor(img.width \/ 2);\r\n                    const centerY = Math.floor(img.height \/ 2);\r\n                    const pixel = ctx.getImageData(centerX, centerY, 1, 1).data;\r\n                    const color = `rgb(${pixel[0]}, ${pixel[1]}, ${pixel[2]})`;\r\n                    resolve(color);\r\n                };\r\n                img.onerror = reject;\r\n                img.src = imageUrl;\r\n            });\r\n        };\r\n\r\n        \/\/ Update updateQuantity function\r\n        window.updateQuantity = function (element, change) {\r\n            const quantitySpan = element.parentElement.querySelector('.quantity');\r\n            let currentQuantity = parseInt(quantitySpan.textContent);\r\n            const colorItem = element.closest('.color-item');\r\n            const activePackage = colorItem.querySelector('.package-option.active');\r\n\r\n            if (!activePackage) return;\r\n\r\n            const maxStock = parseInt(activePackage.getAttribute('data-stock'));\r\n            const newQuantity = currentQuantity + change;\r\n\r\n            \/\/ Check stock and minimum quantity constraints\r\n            if (newQuantity < 1 || newQuantity > maxStock) return;\r\n\r\n            quantitySpan.textContent = newQuantity;\r\n\r\n            \/\/ Update price\r\n            const priceElement = colorItem.querySelector('.color-price');\r\n            const basePrice = parseFloat(activePackage.getAttribute('data-price'));\r\n            const newPrice = (basePrice * newQuantity).toFixed(2);\r\n            priceElement.textContent = `${newPrice} \u20ac`;\r\n\r\n            \/\/ Update button states\r\n            const decreaseBtn = element.parentElement.querySelector('.quantity-button:first-child');\r\n            const increaseBtn = element.parentElement.querySelector('.quantity-button:last-child');\r\n\r\n            decreaseBtn.disabled = newQuantity <= 1;\r\n            increaseBtn.disabled = newQuantity >= maxStock;\r\n\r\n            \/\/ --- Ekle: Toplamlar\u0131 g\u00fcncelle ---\r\n            window.updateCollectionTotals && window.updateCollectionTotals();\r\n        };\r\n\r\n        \/\/ Update selectPackage function\r\n        window.selectPackage = function (element, size, price) {\r\n            if (element.disabled) return;\r\n            \r\n            const colorItem = element.closest('.color-item');\r\n\r\n            \/\/ Remove active class from all package options\r\n            colorItem.querySelectorAll('.package-option').forEach(btn => {\r\n                btn.classList.remove('active');\r\n            });\r\n\r\n            \/\/ Add active class immediately\r\n            element.classList.add('active');\r\n\r\n            \/\/ Reset quantity to 1\r\n            const quantitySpan = colorItem.querySelector('.quantity');\r\n            quantitySpan.textContent = '1';\r\n\r\n            \/\/ Update price display\r\n            const priceElement = colorItem.querySelector('.color-price');\r\n            priceElement.textContent = `${parseFloat(price).toFixed(2)} \u20ac`;\r\n\r\n            \/\/ Update quantity control buttons\r\n            const stock = parseInt(element.getAttribute('data-stock'));\r\n            const decreaseBtn = colorItem.querySelector('.quantity-button:first-child');\r\n            const increaseBtn = colorItem.querySelector('.quantity-button:last-child');\r\n\r\n            decreaseBtn.disabled = true; \/\/ Quantity is 1\r\n            increaseBtn.disabled = stock <= 1;\r\n\r\n            \/\/ --- Ekle: Toplamlar\u0131 g\u00fcncelle ---\r\n            window.updateCollectionTotals && window.updateCollectionTotals();\r\n        };\r\n\r\n        \/\/ Image zoom functionality\r\n        const imageContainers = document.querySelectorAll('.image-zoom-container');\r\n\r\n        imageContainers.forEach(container => {\r\n            const img = container.querySelector('img');\r\n\r\n            container.addEventListener('mousemove', (e) => {\r\n                const { offsetX, offsetY, target } = e;\r\n                const { clientWidth, clientHeight } = target;\r\n\r\n                \/\/ Calculate the position to move the image\r\n                const x = (offsetX \/ clientWidth) * 100;\r\n                const y = (offsetY \/ clientHeight) * 100;\r\n\r\n                img.style.transform = `translate(-${x}%, -${y}%) scale(2)`;\r\n            });\r\n\r\n            container.addEventListener('mouseleave', () => {\r\n                img.style.transform = 'translate(-50%, -50%) scale(1)';\r\n            });\r\n        });\r\n\r\n        \/\/ Add to cart function for WooCommerce (woodmart_ajax_add_to_cart)\r\n        function addToCart(productId, variationId, quantity, packageSize) {\r\n            const formData = new FormData();\r\n            formData.append('action', 'woodmart_ajax_add_to_cart');\r\n            formData.append('product_id', productId);\r\n            formData.append('variation_id', variationId);\r\n            formData.append('quantity', quantity);\r\n            formData.append('add-to-cart', productId);\r\n            formData.append('attribute_pa_packmass', packageSize);\r\n\r\n            return fetch('https:\/\/gobelka.com\/de\/wp-admin\/admin-ajax.php', {\r\n                method: 'POST',\r\n                credentials: 'include',\r\n                body: formData\r\n            }).then(response => {\r\n                if (!response.ok) throw new Error('Network error');\r\n                return response.text();\r\n            });\r\n        }\r\n\r\n        \/\/ Collection add to cart button handler\r\n        function handleCollectionAddToCart(event) {\r\n            event.preventDefault();\r\n            const collection = event.target.closest('.collection-card');\r\n            const colorItems = collection.querySelectorAll('.color-item');\r\n            let allProductsHaveSelectedPackage = true;\r\n\r\n            \/\/ Sadece se\u00e7ili ve aktif paketli \u00fcr\u00fcnleri topla\r\n            const selectedProducts = [];\r\n            colorItems.forEach(item => {\r\n                const productId = item.getAttribute('data-product-id');\r\n                const activePackage = item.querySelector('.package-option.active');\r\n                if (!activePackage || !productId) {\r\n                    allProductsHaveSelectedPackage = false;\r\n                } else {\r\n                    selectedProducts.push({\r\n                        productId: productId,\r\n                        variationId: activePackage.getAttribute('data-variation-id'),\r\n                        packageSize: activePackage.textContent.replace(\/<[^>]*>?\/gm, '').trim(),\r\n                        quantity: parseInt(item.querySelector('.quantity').textContent)\r\n                    });\r\n                }\r\n            });\r\n\r\n            const cartBtn = collection.querySelector('.collection-actions .button.primary');\r\n            if (!allProductsHaveSelectedPackage) {\r\n                cartBtn.disabled = true;\r\n                cartBtn.title = \"Bitte w\u00e4hlen Sie f\u00fcr alle Produkte ein Paket aus.\";\r\n                return;\r\n            }\r\n\r\n            cartBtn.disabled = false;\r\n            cartBtn.title = \"\";\r\n\r\n            \/\/ --- Sepete ekleme i\u015flemi ---\r\n            cartBtn.disabled = true;\r\n            const originalText = cartBtn.textContent;\r\n            cartBtn.textContent = \"Wird hinzugef\u00fcgt...\";\r\n\r\n            \/\/ Sepete eklemeleri ard\u0131\u015f\u0131k yap\r\n            (async function sequentialAdd() {\r\n                try {\r\n                    for (const prod of selectedProducts) {\r\n                        await addToCart(prod.productId, prod.variationId, prod.quantity, prod.packageSize);\r\n                    }\r\n                    if (typeof jQuery !== 'undefined') {\r\n                        jQuery(document.body).trigger('added_to_cart').trigger('wc_fragment_refresh');\r\n                    }\r\n                    const successMessage = document.createElement('div');\r\n                    successMessage.className = 'woocommerce-message';\r\n                    successMessage.innerHTML = 'Produkte wurden erfolgreich in den Warenkorb gelegt! <a href=\"\/warenkorb\/\" class=\"button wc-forward\">Zum Warenkorb<\/a>';\r\n                    collection.insertAdjacentElement('beforebegin', successMessage);\r\n                    cartBtn.textContent = \"Zum Warenkorb hinzugef\u00fcgt!\";\r\n\r\n                    \/\/ Automatically open the header cart widget\r\n                    setTimeout(() => {\r\n                        const cartWidget = document.querySelector('.cart-widget-opener');\r\n                        if (cartWidget) cartWidget.click();\r\n                    }, 500);\r\n\r\n                    setTimeout(() => {\r\n                        cartBtn.textContent = originalText;\r\n                        cartBtn.disabled = false;\r\n                        successMessage.remove();\r\n                    }, 1500);\r\n                } catch (e) {\r\n                    const errorMessage = document.createElement('div');\r\n                    errorMessage.className = 'woocommerce-error';\r\n                    errorMessage.textContent = 'Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut.';\r\n                    collection.insertAdjacentElement('beforebegin', errorMessage);\r\n                    cartBtn.textContent = \"Fehler beim Hinzuf\u00fcgen!\";\r\n                    setTimeout(() => {\r\n                        cartBtn.textContent = originalText;\r\n                        cartBtn.disabled = false;\r\n                        errorMessage.remove();\r\n                    }, 2000);\r\n                }\r\n            })();\r\n        }\r\n\r\n        \/\/ --- STOCK CHECK FOR \"IN DEN WARENKORB\" BUTTON ---\r\n        window.updateCollectionCartButtons = function () {\r\n            document.querySelectorAll('.collection-card').forEach(card => {\r\n                const colorItems = card.querySelectorAll('.color-item');\r\n                let allProductsHaveSelectedPackage = true;\r\n\r\n                colorItems.forEach(item => {\r\n                    const activePackage = item.querySelector('.package-option.active');\r\n                    if (!activePackage) {\r\n                        allProductsHaveSelectedPackage = false;\r\n                    }\r\n                });\r\n\r\n                const cartBtn = card.querySelector('.collection-actions .button.primary');\r\n                if (cartBtn) {\r\n                    cartBtn.disabled = !allProductsHaveSelectedPackage;\r\n                    cartBtn.title = allProductsHaveSelectedPackage\r\n                        ? \"\"\r\n                        : \"Bitte w\u00e4hlen Sie f\u00fcr alle Produkte ein Paket aus.\";\r\n                }\r\n            });\r\n        }\r\n\r\n        \/\/ \u0130lk y\u00fcklemede \u00e7al\u0131\u015ft\u0131r\r\n        updateCollectionCartButtons();\r\n\r\n        \/\/ Fetch sonras\u0131 tekrar kontrol et\r\n        const originalFetch = window.fetch;\r\n        window.fetch = function () {\r\n            return originalFetch.apply(this, arguments).then(res => {\r\n                \/\/ fetch sonras\u0131 \u00fcr\u00fcnler g\u00fcncellenmi\u015f olabilir, k\u0131sa bir gecikmeyle kontrol et\r\n                setTimeout(updateCollectionCartButtons, 500);\r\n                return res;\r\n            });\r\n        };\r\n\r\n        \/\/ Initialize cart functionality\r\n        document.querySelectorAll('.collection-actions .button.primary').forEach(button => {\r\n            button.addEventListener('click', handleCollectionAddToCart);\r\n        });\r\n\r\n        \/\/ Global: Automatically open cart widget after ANY WooCommerce add-to-cart\r\n        if (typeof jQuery !== 'undefined') {\r\n            jQuery(document.body).on('added_to_cart', function () {\r\n                setTimeout(function () {\r\n                    const cartWidget = document.querySelector('.cart-widget-opener');\r\n                    if (cartWidget) cartWidget.click();\r\n                }, 500);\r\n            });\r\n        }\r\n    });\r\n\r\n    \/\/ --- Move this block OUTSIDE of DOMContentLoaded ---\r\n    window.showAlternativeModal = function (similarProducts, oldProductId, colorItem) {\r\n        const modal = document.getElementById('alternative-modal');\r\n        const modalTitle = document.getElementById('alternative-modal-title');\r\n        const list = document.getElementById('alternative-modal-list');\r\n        const searchInput = document.getElementById('alternative-modal-search');\r\n        let filteredProducts = similarProducts.slice();\r\n\r\n        function renderList() {\r\n            list.innerHTML = filteredProducts.length\r\n                ? filteredProducts.map(p => `\r\n                    <div class=\"product-item\" style=\"cursor:pointer;\" tabindex=\"0\"\r\n                        data-id=\"${p.id}\"\r\n                        data-name=\"${p.name.split('-')[0].trim().replace('Belka ', '')}\"\r\n                        data-color=\"${p.image || ''}\"\r\n                        data-variations='${JSON.stringify(p.variations)}'>\r\n                        <img decoding=\"async\" src=\"${p.image || ''}\" alt=\"${p.name}\" style=\"width:40px;height:40px;object-fit:cover;border-radius:6px;margin-right:10px;\">\r\n                        <div class=\"product-item-info\" style=\"display:inline-block;vertical-align:middle;\">\r\n                            <div class=\"product-item-name\" style=\"font-weight:500;\">${p.name}<\/div>\r\n                            <div class=\"product-item-details\" style=\"font-size:0.95em;color:#666;\">\r\n                                ${getProductPriceAndM2(p)}\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                `).join('')\r\n                : `<div style=\"padding:1rem;color:#888;\">Keine Produkte gefunden<\/div>`;\r\n\r\n            \/\/ Option click handler\r\n            list.querySelectorAll('.product-item').forEach(btn => {\r\n                btn.onclick = function () {\r\n                    const newProductData = {\r\n                        id: btn.dataset.id,\r\n                        name: btn.dataset.name,\r\n                        color: btn.dataset.color,\r\n                        variations: JSON.parse(btn.dataset.variations)\r\n                    };\r\n                    const swatch = colorItem.querySelector('.color-swatch');\r\n                    const nameElement = colorItem.querySelector('.color-name');\r\n                    colorItem.setAttribute('data-product-id', newProductData.id);\r\n                    if (newProductData.color) {\r\n                        extractCenterColor(newProductData.color)\r\n                            .then(color => {\r\n                                swatch.style.backgroundColor = color;\r\n                            })\r\n                            .catch(() => {\r\n                                swatch.style.backgroundColor = '#000000';\r\n                            });\r\n                    }\r\n                    nameElement.textContent = newProductData.name;\r\n                    const packageOptionsContainer = colorItem.querySelector('.color-package-options');\r\n                    const quantityControls = colorItem.querySelector('.quantity-controlsx');\r\n                    const allSizes = ['1kg', '3kg', '5kg'];\r\n                    packageOptionsContainer.innerHTML = allSizes.map(size => {\r\n                        const variation = newProductData.variations.find(v =>\r\n                            v.attributes.pa_packmass === size\r\n                        );\r\n                        if (!variation) {\r\n                            return `<button class=\"package-option not-available\" disabled>\r\n                                <s>${size}<\/s><br>\r\n                                <small>Nicht verf\u00fcgbar<\/small>\r\n                            <\/button>`;\r\n                        }\r\n                        const isInStock = variation.is_in_stock;\r\n                        return `\r\n                            <button class=\"package-option ${!isInStock ? 'out-of-stock' : ''}\" \r\n                                data-variation-id=\"${variation.id}\"\r\n                                data-price=\"${variation.price}\"\r\n                                data-stock=\"${variation.stock_quantity}\"\r\n                                ${!isInStock ? 'disabled' : ''}\r\n                                onclick=\"selectPackage(this, '${size}', ${variation.price})\">\r\n                                ${!isInStock ? '<s>' : ''}${size}${!isInStock ? '<\/s>' : ''}\r\n                            <\/button>\r\n                        `;\r\n                    }).join('');\r\n                    packageOptionsContainer.style.display = 'flex';\r\n                    quantityControls.style.display = 'block';\r\n                    \/\/ Select first available variation\r\n                    const firstOption = packageOptionsContainer.querySelector('.package-option');\r\n                    if (firstOption) {\r\n                        firstOption.click();\r\n                    }\r\n                    modal.classList.remove('active');\r\n                    \/\/ --- Ekle: Butonlar\u0131 g\u00fcncelle ---\r\n                    updateCollectionCartButtons();\r\n                };\r\n                \/\/ Keyboard accessibility\r\n                btn.onkeydown = function (e) {\r\n                    if (e.key === \"Enter\" || e.key === \" \") btn.click();\r\n                };\r\n            });\r\n        }\r\n\r\n        function getProductPriceAndM2(p) {\r\n            \/\/ Find first in-stock variation\r\n            let v = Array.isArray(p.variations) ? p.variations.find(v => v.is_in_stock) : null;\r\n            if (!v && Array.isArray(p.variations)) v = p.variations[0];\r\n            if (v) {\r\n                let m2 = v.attributes && v.attributes.pa_packmass === '1kg' ? 3 : v.attributes.pa_packmass === '3kg' ? 9 : v.attributes.pa_packmass === '5kg' ? 15 : '';\r\n                return `${parseFloat(v.price).toFixed(2)} \u20ac${m2 ? ' - ' + m2 + ' m\u00b2' : ''}`;\r\n            }\r\n            return '';\r\n        }\r\n\r\n        modalTitle.textContent = 'Alternative w\u00e4hlen';\r\n        searchInput.value = '';\r\n        filteredProducts = similarProducts.slice();\r\n        renderList();\r\n        modal.classList.add('active');\r\n        searchInput.focus();\r\n\r\n        searchInput.oninput = function () {\r\n            const q = searchInput.value.trim().toLowerCase();\r\n            filteredProducts = similarProducts.filter(p =>\r\n                p.name.toLowerCase().includes(q)\r\n            );\r\n            renderList();\r\n        };\r\n\r\n        \/\/ Close modal\r\n        document.getElementById('close-alternative-modal').onclick = function () {\r\n            modal.classList.remove('active');\r\n        };\r\n        \/\/ Close on outside click\r\n        modal.onclick = function (e) {\r\n            if (e.target === modal) modal.classList.remove('active');\r\n        };\r\n    };\r\n\r\n    \/\/ --- Add after window.updateCollectionCartButtons ---\r\n    window.updateCollectionTotals = function () {\r\n        document.querySelectorAll('.collection-card').forEach(card => {\r\n            let totalPrice = 0;\r\n            let totalM2 = 0;\r\n            card.querySelectorAll('.color-item').forEach(item => {\r\n                const activePackage = item.querySelector('.package-option.active');\r\n                if (activePackage) {\r\n                    const price = parseFloat(activePackage.getAttribute('data-price')) || 0;\r\n                    const qty = parseInt(item.querySelector('.quantity').textContent) || 1;\r\n                    totalPrice += price * qty;\r\n\r\n                    \/\/ m\u00b2 calculation based on package size\r\n                    let m2 = 0;\r\n                    const size = activePackage.textContent.replace(\/<[^>]*>?\/gm, '').replace(\/[^0-9kg]\/g, '').trim();\r\n                    if (size === '1kg') m2 = 3;\r\n                    else if (size === '3kg') m2 = 9;\r\n                    else if (size === '5kg') m2 = 15;\r\n                    totalM2 += m2 * qty;\r\n                }\r\n            });\r\n            \/\/ Update summary row\r\n            const priceElem = card.querySelector('.collection-total-price');\r\n            const m2Elem = card.querySelector('.collection-total-m2');\r\n            const summaryRow = card.querySelector('.collection-summary');\r\n            if (priceElem) priceElem.textContent = totalPrice.toFixed(2).replace('.', ',') + ' \u20ac';\r\n            if (m2Elem) m2Elem.textContent = totalM2 + ' m\u00b2';\r\n            \/\/ Hide summary row when no package is selected (totals are zero)\r\n            if (summaryRow) {\r\n                summaryRow.style.display = (totalPrice > 0 || totalM2 > 0) ? 'flex' : 'none';\r\n            }\r\n        });\r\n    };\r\n\r\n    \/\/ Call updateCollectionTotals whenever relevant UI changes\r\n    \/\/ Patch into selectPackage and updateQuantity\r\n    const origSelectPackage = window.selectPackage;\r\n    window.selectPackage = function () {\r\n        origSelectPackage.apply(this, arguments);\r\n        window.updateCollectionTotals();\r\n        window.updateCollectionCartButtons && window.updateCollectionCartButtons();\r\n    };\r\n    const origUpdateQuantity = window.updateQuantity;\r\n    window.updateQuantity = function () {\r\n        origUpdateQuantity.apply(this, arguments);\r\n        window.updateCollectionTotals();\r\n    };\r\n\r\n    \/\/ Initial call after DOM ready\r\n    window.updateCollectionTotals();\r\n\r\n    \/\/ Also update after product replacement (alternative modal)\r\n    const origShowAlternativeModal = window.showAlternativeModal;\r\n    window.showAlternativeModal = function () {\r\n        origShowAlternativeModal.apply(this, arguments);\r\n        setTimeout(window.updateCollectionTotals, 300);\r\n    };\r\n\r\n\r\n  \/\/ VAR OLAN ELEMANLAR\r\n  const widthInput = document.getElementById('wall-width');\r\n  const heightInput = document.getElementById('wall-height');\r\n  const totalArea = document.getElementById('total-areax');\r\n\r\n  \/\/ YEN\u0130: KG BLO\u011eUNU HTML'E DOKUNMADAN EKLE\r\n  const layout = document.querySelector('.calculator-layout');\r\n  if (layout && !document.getElementById('belka-kg')) {\r\n    layout.insertAdjacentHTML('beforeend', `\r\n      <div class=\"calculator-result\" aria-live=\"polite\">\r\n        <span>Ben\u00f6tigte Belka-Menge*:<\/span>\r\n        <strong id=\"belka-kg\">0.0 kg<\/strong>\r\n        <small style=\"display:block;opacity:.75\">\r\n          *Richtwert: 1&nbsp;kg \u2248 3&nbsp;m\u00b2. Empfohlen: <b id=\"belka-kg-rounded\">0 kg<\/b>.\r\n        <\/small>\r\n      <\/div>\r\n    `);\r\n  }\r\n\r\n  \/\/ YEN\u0130: KG \u00c7IKTISI REFERANSLARI\r\n  const belkaKg = document.getElementById('belka-kg');\r\n  const belkaKgRounded = document.getElementById('belka-kg-rounded');\r\n\r\n  function calculateArea() {\r\n    const width = parseFloat(widthInput.value) || 0;\r\n    const height = parseFloat(heightInput.value) || 0;\r\n    const area = width * height;\r\n\r\n    \/\/ Toplam alan\r\n    totalArea.textContent = `${area.toFixed(1)} m\u00b2`;\r\n\r\n    \/\/ 1 kg \u2248 3 m\u00b2  \u2192 kg = alan \/ 3\r\n    const kg = area \/ 3;\r\n\r\n    \/\/ Yeni blok varsa g\u00fcncelle\r\n    if (belkaKg) belkaKg.textContent = `${kg.toFixed(1)} kg`;\r\n    if (belkaKgRounded) belkaKgRounded.textContent = `${Math.ceil(kg)} kg`;\r\n  }\r\n\r\n  widthInput.addEventListener('input', calculateArea);\r\n  heightInput.addEventListener('input', calculateArea);\r\n\r\n  \/\/ \u0130lk hesap\r\n  calculateArea();\r\n\r\n\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>100% Nat\u00fcrlich K\u00fcnstlerischer Touch f\u00fcr Ihre W\u00e4nde mit Belka Mix Belka Mix erm\u00f6glicht es Ihnen, mit seiner nat\u00fcrlichen Baumwollstruktur 2,<\/p>\n","protected":false},"author":7,"featured_media":34890,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-31510","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/gobelka.com\/de\/wp-json\/wp\/v2\/pages\/31510","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gobelka.com\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/gobelka.com\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/gobelka.com\/de\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/gobelka.com\/de\/wp-json\/wp\/v2\/comments?post=31510"}],"version-history":[{"count":1255,"href":"https:\/\/gobelka.com\/de\/wp-json\/wp\/v2\/pages\/31510\/revisions"}],"predecessor-version":[{"id":51601,"href":"https:\/\/gobelka.com\/de\/wp-json\/wp\/v2\/pages\/31510\/revisions\/51601"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/gobelka.com\/de\/wp-json\/wp\/v2\/media\/34890"}],"wp:attachment":[{"href":"https:\/\/gobelka.com\/de\/wp-json\/wp\/v2\/media?parent=31510"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}