{"product_id":"adalya-liquids-launch-package","title":"ADALYA Liquids - Launch Package","description":"\u003csummary class=\"flex [\u0026amp;::-webkit-details-marker]:hidden md:ng-transparent md:px-0 px-4 bg-gray-h1\/50 lg:hidden w-full items-center justify-between md:py-3 py-6\n                     text-2xl font-bold group-open:text-primary\"\u003e\n                    \u003cspan\u003eBeschreibung\u003c\/span\u003e\n                    \u003cspan class=\"transition-transform group-open:rotate-180 bg-primary text-white p-1.5 rounded-full\"\u003e\n                        \u003csvg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 20 20\" fill=\"currentColor\" width=\"20\" height=\"20\" aria-hidden=\"true\"\u003e\n  \u003cpath fill-rule=\"evenodd\" d=\"M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z\" clip-rule=\"evenodd\"\u003e\u003c\/path\u003e\n\u003c\/svg\u003e\n                    \u003c\/span\u003e\n                \u003c\/summary\u003e\n                \u003cdiv data-id=\"description\" x-show=\"sectionItemIsOpen\" x-collapse=\"\" hidden=\"\" style=\"height: 0px; overflow: hidden; display: none;\"\u003e\n                    \u003cdiv class=\"md:pb-3 md:py-0 py-4\"\u003e\n                        \u003cdiv class=\"prose\"\u003e\n    \u003cstyle\u003e\n    \u003c\/div\u003e\n                    \u003c\/div\u003e\n                \u003c\/div\u003e\n            \u003c\/details\u003e\n                                \u003cdetails\n                id=\"product-attributes\"\n                data-name=\"Spezifikationen\"\n                class=\"group scroll-mt-8 lg:scroll-mt-24 md:mb-0 mb-6\"\n                :open=\"sectionItemIsOpen\"\n            \u003e\n                \u003csummary\n                    @click.prevent=\"openSectionCollapse\"\n                    class=\"flex [\u0026::-webkit-details-marker]:hidden md:ng-transparent md:px-0 px-4 bg-gray-h1\/50 lg:hidden w-full items-center justify-between md:py-3 py-6\n                     text-2xl font-bold group-open:text-primary\"\n\n                \u003e\n                    \u003cspan\u003eSpezifikationen\u003c\/span\u003e\n                    \u003cspan class=\"transition-transform group-open:rotate-180 bg-primary text-white p-1.5 rounded-full\"\u003e\n                        \u003csvg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" width=\"20\" height=\"20\" aria-hidden=\"true\"\u003e\n  \u003cpath fill-rule=\"evenodd\" d=\"M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z\" clip-rule=\"evenodd\"\/\u003e\n\u003c\/svg\u003e\n                    \u003c\/span\u003e\n                \u003c\/summary\u003e\n                \u003cdiv data-id=\"product-attributes\" x-show=\"sectionItemIsOpen\" x-collapse\u003e\n                    \u003cdiv class=\"md:pb-3 md:py-0 py-4\"\u003e\n                        \n    \u003cdiv class=\"table-wrapper overflow-x-auto w-full max-w-705px\" id=\"product-attributes\"\u003e\n        \u003ctable class=\"additional-attributes table-fixed w-full\"\u003e\n                            \u003ctr class=\" block lg:table-row\"\u003e\n                    \u003cth\n                        class=\"col label product-attribute-label text-start text-black-h1 font-medium break-words hyphens-auto block lg:table-cell pt-3 lg:py-1.5 \"\n                        scope=\"row\"\n                    \u003eMischverhältnis\u003c\/th\u003e\n                    \u003ctd\n                        class=\"col data product-attribute-value text-start text-black-h1 break-words hyphens-auto block lg:table-cell pb-3 lg:py-1.5 \"\n                        data-th=\"Mischverh\u0026#xE4;ltnis\"\n                    \u003e50% PG \/ 50% VG\u003c\/td\u003e\n                \u003c\/tr\u003e\n                            \u003ctr class=\" block lg:table-row\"\u003e\n                    \u003cth\n                        class=\"col label product-attribute-label text-start text-black-h1 font-medium break-words hyphens-auto block lg:table-cell pt-3 lg:py-1.5 \"\n                        scope=\"row\"\n                    \u003eFüllmenge\u003c\/th\u003e\n                    \u003ctd\n                        class=\"col data product-attribute-value text-start text-black-h1 break-words hyphens-auto block lg:table-cell pb-3 lg:py-1.5 \"\n                        data-th=\"F\u0026#xFC;llmenge\"\n                    \u003e10 ml\u003c\/td\u003e\n                \u003c\/tr\u003e\n                            \u003ctr class=\" block lg:table-row\"\u003e\n                    \u003cth\n                        class=\"col label product-attribute-label text-start text-black-h1 font-medium break-words hyphens-auto block lg:table-cell pt-3 lg:py-1.5 \"\n                        scope=\"row\"\n                    \u003eGeschmacksrichtung\u003c\/th\u003e\n                    \u003ctd\n                        class=\"col data product-attribute-value text-start text-black-h1 break-words hyphens-auto block lg:table-cell pb-3 lg:py-1.5 \"\n                        data-th=\"Geschmacksrichtung\"\n                    \u003eFrische\u003c\/td\u003e\n                \u003c\/tr\u003e\n                            \u003ctr class=\" block lg:table-row\"\u003e\n                    \u003cth\n                        class=\"col label product-attribute-label text-start text-black-h1 font-medium break-words hyphens-auto block lg:table-cell pt-3 lg:py-1.5 \"\n                        scope=\"row\"\n                    \u003eNikotingehalt pro ml\u003c\/th\u003e\n                    \u003ctd\n                        class=\"col data product-attribute-value text-start text-black-h1 break-words hyphens-auto block lg:table-cell pb-3 lg:py-1.5 \"\n                        data-th=\"Nikotingehalt\u0026#x20;pro\u0026#x20;ml\"\n                    \u003e20 mg Salt\u003c\/td\u003e\n                \u003c\/tr\u003e\n                            \u003ctr class=\" block lg:table-row\"\u003e\n                    \u003cth\n                        class=\"col label product-attribute-label text-start text-black-h1 font-medium break-words hyphens-auto block lg:table-cell pt-3 lg:py-1.5 \"\n                        scope=\"row\"\n                    \u003eGeschmack\u003c\/th\u003e\n                    \u003ctd\n                        class=\"col data product-attribute-value text-start text-black-h1 break-words hyphens-auto block lg:table-cell pb-3 lg:py-1.5 \"\n                        data-th=\"Geschmack\"\n                    \u003eN\/A\u003c\/td\u003e\n                \u003c\/tr\u003e\n                            \u003ctr class=\" block lg:table-row\"\u003e\n                    \u003cth\n                        class=\"col label product-attribute-label text-start text-black-h1 font-medium break-words hyphens-auto block lg:table-cell pt-3 lg:py-1.5 \"\n                        scope=\"row\"\n                    \u003eEVP\u003c\/th\u003e\n                    \u003ctd\n                        class=\"col data product-attribute-value text-start text-black-h1 break-words hyphens-auto block lg:table-cell pb-3 lg:py-1.5 \"\n                        data-th=\"EVP\"\n                    \u003e\u003cspan class=\"price\"\u003eCHF 890.00\u003c\/span\u003e\u003c\/td\u003e\n                \u003c\/tr\u003e\n                            \u003ctr class=\" block lg:table-row\"\u003e\n                    \u003cth\n                        class=\"col label product-attribute-label text-start text-black-h1 font-medium break-words hyphens-auto block lg:table-cell pt-3 lg:py-1.5 \"\n                        scope=\"row\"\n                    \u003eWeight\u003c\/th\u003e\n                    \u003ctd\n                        class=\"col data product-attribute-value text-start text-black-h1 break-words hyphens-auto block lg:table-cell pb-3 lg:py-1.5 \"\n                        data-th=\"Weight\"\n                    \u003e0\u003c\/td\u003e\n                \u003c\/tr\u003e\n                    \u003c\/table\u003e\n    \u003c\/div\u003e\n                    \u003c\/div\u003e\n                \u003c\/div\u003e\n            \u003c\/details\u003e\n                                    \u003c\/div\u003e\n    \u003cscript\u003e\n        function initProductSections() {\n            return {\n                items: [],\n                currentOpen: 'description',\n                init() {\n                    this.$refs.accordion.style.minHeight = null;\n                    this.items = [...this.$refs.accordion.children];\n                },\n                openSectionTab() {\n                    this.openSectionItem(this.tab.id);\n                },\n                openSectionCollapse() {\n                    const targetId = this.$el.parentElement.id;\n                    if (!targetId) return;\n\n                    this.openSectionItem(targetId);\n                },\n                openSectionItem(id) {\n                    if (this.currentOpen === id) {\n                        this.currentOpen = null;\n                        return;\n                    }\n\n                    \/\/ Otherwise open the clicked tab\n                    this.currentOpen = id;\n                    this.$nextTick(() =\u003e {\n                        document.getElementById(this.currentOpen).scrollIntoView({\n                            behavior: \"smooth\",\n                            block: \"nearest\",\n                            inline: \"nearest\"\n                        });\n                    });\n                },\n                sectionTabIsOpen() {\n                    return this.currentOpen === this.tab.id;\n                },\n                sectionItemIsOpen() {\n                    const id = this.$el.id || this.$el.dataset.id;\n                    return this.currentOpen === id;\n                },\n                getTabLabel() {\n                    return this.tab.dataset.name;\n                }\n            }\n        }\n        window.addEventListener('alpine:init', () =\u003e Alpine.data('initProductSections', initProductSections), { once: true });\n    \u003c\/script\u003e\n            \u003cnoscript\u003e\n        \u003cstyle\u003edetails[data-name] summary { display: flex }\u003c\/style\u003e\n    \n\u003c\/div\u003e\n\n\n\n\u003csection aria-label=\"Produktbewertungen\" class=\"grid md:grid-cols-2 bg-black-h1\/5 md:py-20 py-10 px-8 grid-cols-1 gap-8\"\u003e\n        \u003cdiv id=\"review-form\"\u003e\n    \u003cdiv class=\"\"\u003e\n        \u003cdiv class=\"text-2xl font-semibold mb-8\"\u003e\n            Bewertung hinzufügen        \u003c\/div\u003e\n                    \u003cform class=\"review-form\" id=\"review_form\" action=\"\" x-data=\"initReviewForm\" x-defer=\"intersect\" x-ignore=\"\" x-on:submit.prevent=\"amRecaptchaModelExecute\" x-on:amrecaptcha-executable-callback=\"submitForm\"\u003e\n                                                \u003cfieldset\u003e\n                    \u003clegend class=\"text-base font-dmsans\"\u003e\n                        \u003cspan\u003e\n                            Ihre Bewertung hinzufügen:                        \u003c\/span\u003e\n                        \u003cspan class=\"font-semibold\"\u003e\n                            ADALYA Liquids - Launch Package                        \u003c\/span\u003e\n                    \u003c\/legend\u003e\n                                            \u003cfieldset name=\"rating-group\"\u003e\n                            \u003cdiv class=\"flex flex-col\"\u003e\n                                \u003cdiv class=\"text-base hidden\"\u003e\n                                    Ihre Bewertung:\n                                \u003c\/div\u003e\n                                \u003cdiv class=\"\"\u003e\n                                    \u003cdiv id=\"product-review-table\"\u003e\n                                                                                    \u003cdiv class=\"flex flex-col mb-6\"\u003e\n                                                \u003clabel class=\"table-cell pr-6 align-middle text-base text-black-h1 text-left\" id=\"Bewertung_rating_label\"\u003e\n                                                    \u003cspan\u003e\n                                                                                                                    Ihre Bewertung hinzufügen:\n                                                                                                            \u003c\/span\u003e\n                                                \u003c\/label\u003e\n                                                \u003cdiv class=\"flex flex-row grow-0 \" x-data=\"initReview\"\u003e\n                                                                                                                                                                \u003cdiv class=\"relative\" data-rating=\"1\"\u003e\n                                                            \u003clabel class=\"rating-1 m-0 cursor-pointer text-orange-h1\" for=\"Bewertung_1\" id=\"Bewertung_1_label\"\u003e\n                                                                \u003cspan :class=\"ratingClass\"\u003e\n                                                                    \u003csvg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 20 20\" fill=\"currentColor\" width=\"32\" height=\"32\" aria-hidden=\"true\"\u003e\n  \u003cpath d=\"M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z\"\u003e\u003c\/path\u003e\n\u003c\/svg\u003e\n                                                                \u003c\/span\u003e\n                                                                \u003cinput class=\"absolute opacity-0 bottom-0 left-0 cursor-pointer\" type=\"radio\" required=\"\" name=\"ratings[4]\" id=\"Bewertung_1\" value=\"16\" aria-label=\"1 Stern\"\u003e\n                                                            \u003c\/label\u003e\n\n                                                        \u003c\/div\u003e\n                                                                                                                                                                    \u003cdiv class=\"relative\" data-rating=\"2\"\u003e\n                                                            \u003clabel class=\"rating-2 m-0 cursor-pointer text-orange-h1\" for=\"Bewertung_2\" id=\"Bewertung_2_label\"\u003e\n                                                                \u003cspan :class=\"ratingClass\"\u003e\n                                                                    \u003csvg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 20 20\" fill=\"currentColor\" width=\"32\" height=\"32\" aria-hidden=\"true\"\u003e\n  \u003cpath d=\"M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z\"\u003e\u003c\/path\u003e\n\u003c\/svg\u003e\n                                                                \u003c\/span\u003e\n                                                                \u003cinput class=\"absolute opacity-0 bottom-0 left-0 cursor-pointer\" type=\"radio\" name=\"ratings[4]\" id=\"Bewertung_2\" value=\"17\" aria-label=\"2 Sterne\"\u003e\n                                                            \u003c\/label\u003e\n\n                                                        \u003c\/div\u003e\n                                                                                                                                                                    \u003cdiv class=\"relative\" data-rating=\"3\"\u003e\n                                                            \u003clabel class=\"rating-3 m-0 cursor-pointer text-orange-h1\" for=\"Bewertung_3\" id=\"Bewertung_3_label\"\u003e\n                                                                \u003cspan :class=\"ratingClass\"\u003e\n                                                                    \u003csvg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 20 20\" fill=\"currentColor\" width=\"32\" height=\"32\" aria-hidden=\"true\"\u003e\n  \u003cpath d=\"M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z\"\u003e\u003c\/path\u003e\n\u003c\/svg\u003e\n                                                                \u003c\/span\u003e\n                                                                \u003cinput class=\"absolute opacity-0 bottom-0 left-0 cursor-pointer\" type=\"radio\" name=\"ratings[4]\" id=\"Bewertung_3\" value=\"18\" aria-label=\"3 Sterne\"\u003e\n                                                            \u003c\/label\u003e\n\n                                                        \u003c\/div\u003e\n                                                                                                                                                                    \u003cdiv class=\"relative\" data-rating=\"4\"\u003e\n                                                            \u003clabel class=\"rating-4 m-0 cursor-pointer text-orange-h1\" for=\"Bewertung_4\" id=\"Bewertung_4_label\"\u003e\n                                                                \u003cspan :class=\"ratingClass\"\u003e\n                                                                    \u003csvg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 20 20\" fill=\"currentColor\" width=\"32\" height=\"32\" aria-hidden=\"true\"\u003e\n  \u003cpath d=\"M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z\"\u003e\u003c\/path\u003e\n\u003c\/svg\u003e\n                                                                \u003c\/span\u003e\n                                                                \u003cinput class=\"absolute opacity-0 bottom-0 left-0 cursor-pointer\" type=\"radio\" name=\"ratings[4]\" id=\"Bewertung_4\" value=\"19\" aria-label=\"4 Sterne\"\u003e\n                                                            \u003c\/label\u003e\n\n                                                        \u003c\/div\u003e\n                                                                                                                                                                    \u003cdiv class=\"relative\" data-rating=\"5\"\u003e\n                                                            \u003clabel class=\"rating-5 m-0 cursor-pointer text-orange-h1\" for=\"Bewertung_5\" id=\"Bewertung_5_label\"\u003e\n                                                                \u003cspan :class=\"ratingClass\"\u003e\n                                                                    \u003csvg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 20 20\" fill=\"currentColor\" width=\"32\" height=\"32\" aria-hidden=\"true\"\u003e\n  \u003cpath d=\"M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z\"\u003e\u003c\/path\u003e\n\u003c\/svg\u003e\n                                                                \u003c\/span\u003e\n                                                                \u003cinput class=\"absolute opacity-0 bottom-0 left-0 cursor-pointer\" type=\"radio\" name=\"ratings[4]\" id=\"Bewertung_5\" value=\"20\" aria-label=\"5 Sterne\"\u003e\n                                                            \u003c\/label\u003e\n\n                                                        \u003c\/div\u003e\n                                                                                                                                                            \u003c\/div\u003e\n                                            \u003c\/div\u003e\n                                                                            \u003c\/div\u003e\n                                    \u003cinput type=\"hidden\" name=\"validate_rating\" value=\"\"\u003e\n                                \u003c\/div\u003e\n                            \u003c\/div\u003e\n                        \u003c\/fieldset\u003e\n                                        \u003cdiv\u003e\n                        \u003cdiv class=\"mb-4\"\u003e\n                            \u003clabel for=\"nickname_field\" class=\"text-base mb-3\"\u003e\n                                \u003cspan\u003eNickname\u003c\/span\u003e\n                            \u003c\/label\u003e\n                            \u003cdiv\u003e\n                                \u003cinput class=\"form-input mt-3 block w-full bg-transparent border-black-h1 text-black-h1\" required=\"\" placeholder=\"Nickname*\" type=\"text\" name=\"nickname\" id=\"nickname_field\" autocomplete=\"nickname\"\u003e\n                            \u003c\/div\u003e\n                        \u003c\/div\u003e\n                        \u003cdiv class=\"mb-4\"\u003e\n                            \u003clabel for=\"summary_field\" class=\"text-base mb-3\"\u003e\n                                \u003cspan\u003eZusammenfassung\u003c\/span\u003e\n                            \u003c\/label\u003e\n                            \u003cdiv\u003e\n                                \u003cinput class=\"form-input mt-3 block w-full bg-transparent border-black-h1 text-black-h1\" required=\"\" placeholder=\"Zusammenfassung*\" type=\"text\" name=\"title\" id=\"summary_field\" autocomplete=\"off\"\u003e\n                            \u003c\/div\u003e\n                        \u003c\/div\u003e\n                        \u003cdiv class=\"mb-6\"\u003e\n                            \u003clabel for=\"review_field\" class=\"text-base mb-3\"\u003e\n                                \u003cspan\u003eBewertung\u003c\/span\u003e\n                            \u003c\/label\u003e\n                            \u003cdiv\u003e\n                            \u003ctextarea class=\"form-input mt-3 block w-full bg-transparent border-black-h1 text-black-h1\" required=\"\" placeholder=\"Bewertung*\" name=\"detail\" id=\"review_field\" cols=\"5\" rows=\"3\" autocomplete=\"off\"\u003e\u003c\/textarea\u003e\n                            \u003c\/div\u003e\n                        \u003c\/div\u003e\n                    \u003c\/div\u003e\n                \u003c\/fieldset\u003e\n                \u003cdiv class=\"my-3\"\u003e\n                    \u003cdiv\u003e\n                        \u003cbutton x-show=\"hasNoSuccessMessage\" type=\"submit\" class=\"btn btn-primary w-full py-3 text-xl font-semibold\"\u003e\n                            \u003cspan\u003e\n                                Bewertung absenden                            \u003c\/span\u003e\n                        \u003c\/button\u003e\n                        \u003cdiv class=\"flex flex-row justify-start items-center w-full\" x-show=\"isLoading\" x-cloak=\"\"\u003e\n                            \u003csvg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"57\" height=\"57\" viewbox=\"0 0 24 24\" stroke=\"currentColor\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" class=\"text-primary\" role=\"img\"\u003e\n    \u003ccircle style=\"opacity: .3;\" cx=\"12\" cy=\"12\" r=\"10\"\u003e\u003c\/circle\u003e\n    \u003cpath fill=\"none\" stroke-width=\"2\" d=\"M12,2 a10,10 0 0,1 10,10\"\u003e\u003c\/path\u003e\n\u003ctitle\u003eloader\u003c\/title\u003e\u003c\/svg\u003e\n                            \u003cdiv class=\"ml-4 text-primary\"\u003e\n                                Wird geladen …                            \u003c\/div\u003e\n                        \u003c\/div\u003e\n                        \u003cp x-show=\"displaySuccessMessage\" x-cloak=\"\" class=\"text-green flex items-center\"\u003e\n                            \u003cspan class=\"inline-block w-8 h-8 mr-3\"\u003e\n                                \u003csvg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewbox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" width=\"24\" height=\"24\" aria-hidden=\"true\"\u003e\n  \u003cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\"\u003e\u003c\/path\u003e\n\u003c\/svg\u003e\n                            \u003c\/span\u003e\n                            Ihre Bewertung wurde zur Prüfung eingereicht.                        \u003c\/p\u003e\n                        \u003ctemplate x-if=\"displayErrorMessage\"\u003e\n                            \u003cp class=\"text-red flex items-center\"\u003e\n                                \u003cspan class=\"inline-block w-8 h-8 mr-3\"\u003e\n                                    \u003csvg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" fill=\"none\" viewbox=\"0 0 24 24\" stroke-width=\"2\" stroke=\"currentColor\" width=\"24\" height=\"24\" aria-hidden=\"true\"\u003e\n  \u003cpath stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\u003e\u003c\/path\u003e\n\u003c\/svg\u003e\n                                \u003c\/span\u003e\n                                \u003ctemplate x-for=\"errorMessage in errorMessages\"\u003e\n                                    \u003cspan x-html=\"errorMessage\"\u003e\u003c\/span\u003e\n                                \u003c\/template\u003e\n                            \u003c\/p\u003e\n                        \u003c\/template\u003e\n                    \u003c\/div\u003e\n                                                        \u003c\/div\u003e\n            \u003c\/form\u003e\n\n            \u003cscript\u003e\n                function initReviewForm() {\n                    return {\n                        isLoading: false,\n                        displayNickname: false,\n                        displaySuccessMessage: false,\n                        dontDisplaySuccessMessage() {\n                            return !this.displaySuccessMessage\n                        },\n                        displayErrorMessage: false,\n                        errorMessages: [],\n                        errors: 0,\n                        hasCaptchaToken: 0,\n                        nickname: null,\n                        summary: null,\n                        ratings: [],\n                        review: null,\n                        setErrorMessages(messages) {\n                            this.errorMessages = [messages]\n                            this.displayErrorMessage = this.errorMessages.length\n                        },\n                        submitForm() {\n                            \/\/ Do not remove $form. The variable is used in the recaptcha child template.\n                            const $form = document.querySelector('#review_form');\n                            this.validate();\n\n                            \n                            if (this.errors === 0) {\n                                this.placeReview();\n                            }\n                        },\n                        validate() {\n                            this.nickname = document.getElementById('nickname_field').value;\n                            this.summary = document.getElementById('summary_field').value;\n                            this.review = document.getElementById('review_field').value;\n\n                            let ratingValue;\n                                                        try {\n                                ratingValue =\n                                    document\n                                        .querySelector('input[name=\"ratings[4]\"]:checked')\n                                        .value;\n                                this.ratings[4] = btoa(ratingValue);\n                            } catch (e) {\n                                console.log(e);\n                            }\n                            \n                            if (!(this.nickname \u0026\u0026\n                                this.summary \u0026\u0026\n                                this.review \u0026\u0026\n                                Object.keys(this.ratings).length === 1                            )) {\n                                this.setErrorMessages(\n                                    ['Bitte\\u0020\\u00FCberpr\\u00FCfen\\u0020Sie,\\u0020ob\\u0020Sie\\u0020alle\\u0020erforderlichen\\u0020Informationen\\u0020eingegeben\\u0020haben']\n                                );\n                                this.displayErrorMessage = true;\n                                this.errors = 1;\n                                this.hasCaptchaToken = 0;\n                            }\n                        },\n                        placeReview() {\n                            this.isLoading = true;\n                            this.displayErrorMessage = false;\n\n                            const query = `\nmutation createProductReviewMutation(\n    $sku: String!,\n    $nick: String!,\n    $summary: String!,\n    $review: String!,\n    $ratings: [ProductReviewRatingInput]!\n) {\n    createProductReview(\n        input: {\n            sku: $sku,\n            nickname: $nick,\n            summary: $summary,\n            text: $review,\n            ratings: $ratings\n        }\n    ) {\n        review {\n            nickname\n        }\n    }\n}\n`;\n                            const variables = {\n                                sku: 'DO15261\\u002D01',\n                                nick: this.nickname,\n                                summary: this.summary,\n                                review: this.review,\n                                ratings: Object.keys(this.ratings).map(key =\u003e {\n                                    return {id: btoa(key), value_id: this.ratings[key]}\n                                })\n                            };\n\n                            const form = document.querySelector('#review_form');\n\n                            const fieldName = 'g\\u002Drecaptcha\\u002Dresponse';\n                            const recaptchaHeader = fieldName \u0026\u0026 form \u0026\u0026 form.elements[fieldName]\n                                ? {'X-ReCaptcha': form.elements[fieldName].value}\n                                : {};\n\n                            fetch(`${BASE_URL}graphql`, {\n                                method: 'POST',\n                                headers: Object.assign({\n                                    'Content-Type': 'application\/json;charset=utf-8',\n                                    'Store': 'hno_ch_de'\n                                }, recaptchaHeader),\n                                credentials: 'include',\n                                body: JSON.stringify({query: query, variables: variables})\n                            })\n                                .then(response =\u003e response.json())\n                                .then(data =\u003e {\n                                        this.isLoading = false;\n                                        if (data.errors) {\n                                            this.setErrorMessages(['Das\\u0020Absenden\\u0020Ihrer\\u0020Bewertung\\u0020ist\\u0020fehlgeschlagen.\\u0020Bitte\\u0020versuchen\\u0020Sie\\u0020es\\u0020erneut.']);\n                                            this.displayErrorMessage = true;\n                                        } else {\n                                            this.displaySuccessMessage = true;\n                                        }\n                                    }\n                                );\n                        },\n                        hasNoSuccessMessage() {\n                            return ! this.displaySuccessMessage;\n                        }\n                    }\n                }\n                function initReview() {\n                    return {\n                        clickedRatingId: 0,\n                        setRating() {\n                            this.clickedRatingId = this.$el.dataset.rating || 0;\n                        },\n                        ratingClass() {\n                            return this.$el.closest('[data-rating]').dataset.rating \u003c= this.clickedRatingId\n                                ? 'text-orange-h1'\n                                : 'text-gray-400';\n\n                        }\n                    };\n                }\n\n                function initReviewFormRatingOptions() {\n                    return  {\n                        clickedRatingId: 0,\n                        updateRatingOption() {\n                            this.clickedRatingId = this.$el.dataset.iterator || 0;\n                        },\n                        classesForRatingOption() {\n                            return this.$el.dataset.iterator \u003c= this.clickedRatingId\n                                ? 'text-orange-h1'\n                                : 'text-gray-400'\n                        }\n                    }\n                }\n\n                window.addEventListener('alpine:init', () =\u003e {\n                    Alpine.data('initReviewForm', initReviewForm);\n                    Alpine.data('initReview', initReview);\n                    Alpine.data('initReviewFormRatingOptions', initReviewFormRatingOptions);\n                }, {once: true})\n            \u003c\/script\u003e\n                    \u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003csection class=\"my-12 text-black-h1 body-font product-slider\" x-data=\"moreFromBrandData\" x-init=\"moreFromBrandInit\"\u003e\n    \u003ctemplate x-if=\"isProducts\"\u003e\n        \u003cdiv class=\"relative\"\u003e\n            \u003cdiv class=\"container !px-0 flex justify-between items-center mx-auto md:mb-16 mb-10\n                  md:flex-row\"\u003e\n                \u003ch3 class=\"lg:text-5xl md:text-3xl text-2xl font-medium title-font\" x-html=\"title\"\u003e\u003c\/h3\u003e\n                \u003cdiv style=\"\" class=\"sm:flex hidden\"\u003e\n                    \u003ctemplate x-if=\"isProductsLength\"\u003e\n                        \u003cdiv class=\"flex justify-between items-center gap-4 slider-arrow-dot-section\" x-cloak=\"\"\u003e\n                            \u003cbutton :disabled=\"active === 0\" aria-label=\"Zurück\" class=\"btn btn-primary p-2 rounded-full disabled:border-primary\/50 disabled:text-primary w-12 h-12 left-btn\n        border-primary hover:border-black-h1\"\u003e\n                            \u003csvg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" viewbox=\"0 0 24 24\" class=\"rtl:-rotate-180\" aria-hidden=\"true\"\u003e\u003cpath d=\"m15 18-6-6 6-6\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n                            \u003c\/button\u003e\n                            \u003cbutton :disabled=\"active \u0026gt;= products.length - pageSize\" aria-label=\"Weiter\" class=\"btn btn-primary p-2 rounded-full disabled:border-primary\/50 disabled:text-primary w-12 h-12 right-btn\n        border-primary hover:border-black-h1\"\u003e\n                            \u003csvg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" viewbox=\"0 0 24 24\" class=\"rtl:-rotate-180\" aria-hidden=\"true\"\u003e\u003cpath d=\"m9 18 6-6-6-6\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n                            \u003c\/button\u003e\n                        \u003c\/div\u003e\n                    \u003c\/template\u003e\n                \u003c\/div\u003e\n            \u003c\/div\u003e\n            \u003cdiv class=\"relative w-full overflow-x-hidden\"\u003e\n                \u003cdiv class=\"relative flex sm:flex-nowrap flex-wrap w-full overflow-auto transition-all js_slides snap\"\u003e\n                    \u003ctemplate x-for=\"product in products\" :key=\"productId\"\u003e\n                        \u003cdiv class=\"flex-none py-1 px-5px md:px-13.5px js_slide w-1\/2 lg:w-1\/3 xl:w-1\/4 item product-item\" x-init=\"brandItemInit\"\u003e\n    \u003cdiv class=\"p-4 rounded-xl h-full border\n      hover:shadow relative\n      border-transparent hover:border-primary\n             flex flex-col w-full bg-gray-h2\" :data-product-id=\"product.id\"\u003e\n        \u003ca :href=\"productUrl\" :title=\"productName\" tabindex=\"-1\" style=\"padding-top:62%;\" class=\"relative flex items-center bg-white mb-3 bg-white ronded-lg p-2 product photo product-item-photo\"\u003e\n            \u003cspan class=\"absolute top-0 left-0 flex flex-wrap content-center w-full\n                  h-full p-2 overflow-hidden align-center hover:shadow-sm product-image-photo\"\u003e\n                \u003cimg class=\"self-center max-w-full max-h-full object-contain\" :src=\"productSmallImageUrl\" :alt=\"productSmallImageLabel\" loading=\"lazy\" width=\"500\" height=\"500\"\u003e\n            \u003c\/span\u003e\n        \u003c\/a\u003e\n        \u003c!--            \u003cp x-text=\"product\"\u003e  \u003c\/p\u003e--\u003e\n        \u003c!--            \u003cpre x-text=\"JSON.stringify(product, null, 2)\"\u003e\u003c\/pre\u003e--\u003e\n        \u003ctemplate x-if=\"product.bestseller_product === 1\"\u003e\n            \u003cp class=\"absolute top-3 left-3 font-semibold text-[10px] uppercase bg-primary rounded-full py-1 px-2.5\n            text-white\"\u003ebestseller\u003c\/p\u003e\n        \u003c\/template\u003e\n        \u003cdiv class=\"product-info flex flex-col grow\"\u003e\n\n            \u003cdiv class=\"flex gap-2 items-center flex-wrap justify-between\"\u003e\n                                \u003ctemplate x-if=\"product.stock_status === 'IN_STOCK'\"\u003e\n                    \u003cspan class=\"flex items-center gap-1 text-green-600 text-xs\"\u003e\n                        \u003cspan class=\"w-2 h-2 bg-green-600 rounded-full\"\u003e\u003c\/span\u003e\n                        An Lager                    \u003c\/span\u003e\n                \u003c\/template\u003e\n\n                \u003ctemplate x-if=\"product.stock_status === 'OUT_OF_STOCK'\"\u003e\n                    \u003cspan class=\"flex items-center gap-1 text-red-500 text-xs\"\u003e\n                        \u003cspan class=\"w-2 h-2 bg-red-500 rounded-full\"\u003e\u003c\/span\u003e\n                        Nicht an Lager                    \u003c\/span\u003e\n                \u003c\/template\u003e\n\n                \u003ctemplate x-if=\"isShowPrice\"\u003e\n                    \u003cdiv class=\"text-black-h1\"\u003e\n                        \u003cp class=\"text-base font-bold\" x-text=\"formatedPrice\"\u003e\u003c\/p\u003e\n                        \u003ctemplate x-if=\"product.product_evp\"\u003e\n                            \u003cp class=\"text-xs text-gray-500\"\u003e\n                                EVP:                                \u003cspan x-text=\"product.product_evp\"\u003e\u003c\/span\u003e\n                            \u003c\/p\u003e\n                        \u003c\/template\u003e\n                    \u003c\/div\u003e\n                \u003c\/template\u003e\n                            \u003c\/div\u003e\n\n            \u003cp class=\"flex items-center grow-1\"\u003e\n                \u003ca class=\"product-item-link mt-4 mb-4 items-center justify-center grow font-semibold text-lg max-md:text-xs\n                         text-black-h1\" :href=\"productUrl\" :title=\"productName\"\u003e\n                    \u003cspan x-html=\"productName\"\u003e\u003c\/span\u003e\n                \u003c\/a\u003e\n            \u003c\/p\u003e\n\n                                                            \u003cscript\u003e\n    window.hemagCartQty = window.hemagCartQty || {\n        items() {\n            try { const s = JSON.parse(localStorage.getItem('mage-cache-storage') || '{}'); return (s.cart \u0026\u0026 s.cart.items) || []; }\n            catch (e) { return []; }\n        },\n        \/\/ Summe aller Mengen dieses Produkts im Warenkorb. Bei Configurable ist product_id der Parent\n        \/\/ =\u003e zaehlt alle Varianten zusammen (passend fuer den PLP-Gesamtzaehler).\n        byProduct(pid) { return this.items().filter(i =\u003e String(i.product_id) === String(pid)).reduce((s, i) =\u003e s + Number(i.qty || 0), 0); },\n        \/\/ Liste aller Varianten dieses Produkts im Warenkorb: [{qty, label}] (Label aus den Options-Werten,\n        \/\/ z.B. \"Kirsche\" bzw. \"3 mg \/ 10 ml\"). Fuer die Varianten-Aufschluesselung auf der Configurable-PDP.\n        linesForProduct(pid) {\n            return this.items()\n                .filter(i =\u003e String(i.product_id) === String(pid))\n                .map(i =\u003e ({\n                    qty: Number(i.qty || 0),\n                    label: ((i.options || []).map(o =\u003e o.value).filter(Boolean).join(' \/ ')) || i.product_sku || ''\n                }))\n                .filter(l =\u003e l.qty \u003e 0);\n        },\n        \/\/ Nur echte Varianten-Zeilen (mit Options-Label), z.B. [{qty:2,label:\"Kirsche\"}].\n        \/\/ Simple-Produkte (ohne Options) fallen raus -\u003e dort zeigt das Badge die Gesamtmenge (byProduct).\n        variantLinesForProduct(pid) {\n            return this.items()\n                .filter(i =\u003e String(i.product_id) === String(pid))\n                .map(i =\u003e ({ qty: Number(i.qty || 0), label: (i.options || []).map(o =\u003e o.value).filter(Boolean).join(' \/ ') }))\n                .filter(l =\u003e l.qty \u003e 0 \u0026\u0026 l.label);\n        }\n    };\n\n    \/\/ Alpine-Komponente fuer die Listen-Badges (Slider\/Related\/Brand\/PLP).\n    \/\/ \u003c=3 Varianten -\u003e Pills inline; \u003e3 -\u003e Chip + Popover (Hover Desktop \/ Tap Mobile).\n    \/\/ Popover ist position:fixed (per place() an den Chip gesetzt), damit der overflow\n    \/\/ der Slider es nicht abschneidet.\n    window.hemagCartBadge = window.hemagCartBadge || function (pid) {\n        return {\n            tick: 0,\n            open: false,\n            px: 0,\n            py: 0,\n            vlines() { this.tick; return window.hemagCartQty ? window.hemagCartQty.variantLinesForProduct(pid) : []; },\n            total()  { this.tick; return window.hemagCartQty ? window.hemagCartQty.byProduct(pid) : 0; },\n            variantCount() { return this.vlines().length; },\n            showInline()    { const n = this.vlines().length; return n \u003e 0 \u0026\u0026 n \u003c= 3; },\n            showCollapsed() { return this.vlines().length \u003e 3; },\n            showTotal()     { return this.vlines().length === 0 \u0026\u0026 this.total() \u003e 0; },\n            place(el) { const r = el.getBoundingClientRect(); this.px = Math.round(r.left); this.py = Math.round(r.bottom + 4); },\n            openPop(el)   { this.place(el); this.open = true; },\n            togglePop(el) { if (this.open) { this.open = false; } else { this.place(el); this.open = true; } }\n        };\n    };\n\u003c\/script\u003e\n                                \u003cdiv x-data=\"hemagCartBadge(product.id)\" x-init=\"tick++\" class=\"order-last mt-3 w-full\" x-cloak=\"\"\u003e\n                    \u003ctemplate x-if=\"showInline()\"\u003e\n                        \u003cdiv class=\"flex flex-wrap items-center gap-1\"\u003e\n                            \u003cspan class=\"text-xs font-medium text-black-h2\"\u003eBereits im Warenkorb:\u003c\/span\u003e\n                            \u003ctemplate x-for=\"line in vlines()\" :key=\"line.label\"\u003e\n                                \u003cspan class=\"inline-flex items-center gap-1 bg-primary\/10 text-primary rounded-full px-2 py-0.5 text-xs font-medium\"\u003e\n                                    \u003cspan x-text=\"line.qty\"\u003e\u003c\/span\u003e× \u003cspan x-text=\"line.label\"\u003e\u003c\/span\u003e\n                                \u003c\/span\u003e\n                            \u003c\/template\u003e\n                        \u003c\/div\u003e\n                    \u003c\/template\u003e\n                    \u003ctemplate x-if=\"showCollapsed()\"\u003e\n                        \u003cdiv class=\"flex flex-wrap items-center gap-1\" false\u003e\n\u003cspan class=\"text-xs font-medium text-black-h2\"\u003eBereits im Warenkorb:\u003c\/span\u003e\n                            \u003cspan class=\"inline-flex items-center gap-1 bg-primary\/10 text-primary rounded-full px-2 py-0.5 text-xs font-medium cursor-pointer select-none\" false\u003e\n                                \u003cspan x-text=\"total()\"\u003e\u003c\/span\u003e× (\u003cspan x-text=\"variantCount()\"\u003e\u003c\/span\u003e Varianten)\n                            \u003c\/span\u003e\n                            \u003cdiv x-show=\"open\" x-cloak=\"\" :style=\"`position:fixed;left:${px}px;top:${py}px;z-index:1000;`\" class=\"min-w-[160px] max-w-[240px] bg-white border border-gray-200 rounded-lg shadow-lg p-2 flex flex-col gap-1\"\u003e\n                                \u003ctemplate x-for=\"line in vlines()\" :key=\"line.label\"\u003e\n                                    \u003cspan class=\"text-xs whitespace-nowrap text-black-h1\"\u003e\u003cspan class=\"font-semibold\" x-text=\"line.qty\"\u003e\u003c\/span\u003e× \u003cspan x-text=\"line.label\"\u003e\u003c\/span\u003e\u003c\/span\u003e\n                                \u003c\/template\u003e\n                            \u003c\/div\u003e\n                        \u003c\/div\u003e\n                    \u003c\/template\u003e\n                    \u003ctemplate x-if=\"showTotal()\"\u003e\n                        \u003cspan class=\"inline-flex items-center gap-1 bg-primary\/10 text-primary rounded-full px-2 py-0.5 text-xs font-medium\"\u003e\n                            \u003cspan x-text=\"total()\"\u003e\u003c\/span\u003e bereits im Warenkorb                        \u003c\/span\u003e\n                    \u003c\/template\u003e\n                \u003c\/div\u003e\n            \n            \u003cp class=\"text-sm text-black-h1\/60 mb-3\"\u003e\n                \u003cspan class=\"font-medium\"\u003eArtikel:\u003c\/span\u003e\n                \u003cspan x-text=\"product.sku\"\u003e\u003c\/span\u003e\n            \u003c\/p\u003e\n\n                        \u003cdiv x-data=\"{ qty: 1 }\" class=\"flex items-center flex-wrap md:gap-5 gap-3\"\u003e\n                \u003cdiv class=\"flex-1 flex items-center gap-2\"\u003e\n                \u003cdiv class=\" invalid:ring-2 invalid:ring-red-500 rounded-full\n                        flex items-center w-full justify-between gap-1 hover:border-blue-h1\"\u003e\n                    \u003cform method=\"post\" :action=\"BASE_URL + 'checkout\/cart\/add'\" x-data=\"{ qty: 1 }\"\u003e\n                        \u003cinput type=\"hidden\" name=\"form_key\" :value=\"hyva.getFormKey()\"\u003e\n                        \u003cinput type=\"hidden\" name=\"product\" :value=\"product.id\"\u003e\n                        \u003cinput type=\"hidden\" name=\"qty\" :value=\"qty\"\u003e\n\n                        \u003cdiv class=\"flex max-sx:flex-wrap flex-wrap items-center gap-2\"\u003e\n                            \u003cdiv class=\" invalid:ring-2 invalid:ring-red-500 border border-solid border-black-h1\/40 rounded-full sm:py-3 py-2 sm:px-5 px-3.5 flex items-center w-full justify-between gap-1\n                        hover:border-blue-h1  md:flex-1\"\u003e\n                                \u003cbutton type=\"button\" qty-- :\u003e\n                                    \u003csvg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"19\" height=\"19\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"#1a1918\" class=\"hover:stroke-blue-h1\" role=\"img\"\u003e\u003cpath d=\"M5 12h14\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003c\/path\u003e\u003ctitle\u003e\u003c\/title\u003e\u003c\/svg\u003e\n                                \u003c\/button\u003e\n                                \u003cinput type=\"number\" min=\"1\" x-model=\"qty\" class=\"!p-0 border-none bg-transparent focus:border-none focus:ring-0 focus:outline-none text-center\n                    input-arrow-remove text-black-h1 text-sm font-normal pointer-events-none w-full\"\u003e\n                                \u003cbutton type=\"button\"\u003e\n                                    \u003csvg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"19\" height=\"19\" viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" class=\"hover:stroke-blue-h1\" role=\"img\"\u003e\u003cpath d=\"M12 5v14m-7-7h14\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003c\/path\u003e\u003ctitle\u003e\u003c\/title\u003e\u003c\/svg\u003e\n                                \u003c\/button\u003e\n                            \u003c\/div\u003e\n                            \u003c!-- Add To Cart Button --\u003e\n                            \u003cbutton type=\"submit\" class=\"sm:flex-1 gap-0 w-auto btn btn-primary whitespace-nowrap justify-center lg:text-xs text-[10px] mr-auto\"\u003e\n                                \u003csvg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"28\" height=\"28\" viewbox=\"0 0 20 20\" fill=\"none\" class=\"h-4 lg:h-6 w-4 lg:w-6 border-current inline\" aria-hidden=\"true\"\u003e\u003cpath d=\"M6.04 16.107a1.208 1.208 0 1 0 0-2.416 1.208 1.208 0 0 0 0 2.416m7.249 0a1.208 1.208 0 1 0 0-2.416 1.208 1.208 0 0 0 0 2.416\" fill=\"#fff\"\u003e\u003c\/path\u003e\u003cpath d=\"M2.416 4.027h1.61l.484 2.416m0 0 1.127 5.638h8.054l1.61-5.638z\" stroke=\"#fff\" stroke-width=\"1.208\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003c\/path\u003e\u003ctitle\u003e\u003c\/title\u003e\u003c\/svg\u003e\n                                In den Warenkorb                            \u003c\/button\u003e\n\n                        \u003c\/div\u003e\n                    \u003c\/form\u003e\n\n                \u003c\/div\u003e\n            \u003c\/div\u003e\n\n            \u003c\/div\u003e\n            \n            \u003cp class=\"flex flex-wrap gap-2 mt-4 hidden\"\u003e\n\n                \u003cspan class=\"gap-2 \"\u003e\n                                            \u003cbutton :aria-label=\"ariaLabelText\" data-label=\"«%1» zur Wunschliste hinzufügen\" type=\"button\" class=\"rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex shrink-0\n                                items-center justify-center text-gray-500 hover:text-red-600 ml-2\"\u003e\n                            \u003csvg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 20 20\" fill=\"currentColor\" class=\"w-5 h-5\" width=\"25\" height=\"25\" aria-hidden=\"true\"\u003e\n  \u003cpath fill-rule=\"evenodd\" d=\"M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z\" clip-rule=\"evenodd\"\u003e\u003c\/path\u003e\n\u003c\/svg\u003e\n                        \u003c\/button\u003e\n                                                        \u003c\/span\u003e\n            \u003c\/p\u003e\n        \u003c\/div\u003e\n    \u003c\/div\u003e\n\u003c\/div\u003e\n\n                    \u003c\/template\u003e\n                    \u003cdiv :class=\"dotOneClass\"\u003e\u003c\/div\u003e\n                    \u003cdiv :class=\"dotTwoClass\"\u003e\u003c\/div\u003e\n                    \u003cdiv :class=\"dotThreeClass\"\u003e\u003c\/div\u003e\n                \u003c\/div\u003e\n            \u003c\/div\u003e\n\n        \u003c\/div\u003e\n    \u003c\/template\u003e\n\u003c\/section\u003e\n\n\u003cscript\u003e\n    'use strict';\n\n    function amMoreFromBrandSlider() {\n        return {\n            active: 0,\n            itemCount: 0,\n            pageSize: 4,\n            pageFillers: 0,\n            slideRenderedCount: 0,\n            getSlider() {\n                return (this.$root) ? this.$root.querySelector('.js_slides') : this.$el.querySelector('.js_slides');\n            },\n            calcPageSize() {\n                const slider = this.getSlider();\n                if (slider) {\n                    this.itemCount = slider.querySelectorAll('.js_slide').length;\n                    this.pageSize = Math.round(slider.clientWidth \/ slider.querySelector('.js_slide').clientWidth);\n                    this.pageFillers = (\n                        this.pageSize * Math.ceil(this.itemCount \/ this.pageSize)\n                    ) - this.itemCount;\n                }\n            },\n            calcActive() {\n                const slider = this.getSlider();\n                if (slider) {\n                    const sliderItems = this.itemCount + this.pageFillers;\n                    const calculatedActiveSlide = slider.scrollLeft \/ (slider.scrollWidth \/ sliderItems);\n                    this.active = Math.round(calculatedActiveSlide \/ this.pageSize) * this.pageSize;\n                }\n            },\n            scrollPrevious() {\n                this.scrollTo(this.active - this.pageSize);\n            },\n            scrollNext() {\n                this.scrollTo(this.active + this.pageSize);\n            },\n            scrollTo(idx) {\n                const slider = this.getSlider();\n                if (slider) {\n                    const slideWidth = slider.scrollWidth \/ (this.itemCount + this.pageFillers);\n                    slider.scrollLeft = Math.floor(slideWidth) * idx;\n                    this.active = idx;\n                }\n            },\n            slideRendered() {\n                this.slideRenderedCount++;\n\n                if (this.slideRendered === this.itemCount) {\n                    this.calcPageSize();\n                    this.calcActive();\n                }\n\n                window.dispatchEvent(new CustomEvent('amasty-more-from-brand-slide-rendered'));\n            }\n        }\n    }\n\n    function amMoreFromBrand() {\n        let cached = false;\n\n        const displayError = (error) =\u003e {\n            console.error(error);\n            typeof window.dispatchMessages !== \"undefined\" \u0026\u0026 window.dispatchMessages(\n                [{\n                    type: \"error\",\n                    text: \"Etwas\\u0020ist\\u0020schief\\u0020gelaufen.\\u0020Bitte\\u0020versuchen\\u0020Sie\\u0020es\\u0020erneut.\"\n                }], 10000\n            );\n        };\n\n        return {\n            products: [],\n            loading: false,\n            title: \"More\\u0020from\\u0020this\\u0020brand\",\n            initErrorMessages(errors) {\n                const messages = [];\n                for (let error in Object.keys(errors)) {\n                    messages.push({type: 'error', text: errors[error].message});\n                }\n                typeof window.dispatchMessages !== \"undefined\" \u0026\u0026 window.dispatchMessages(messages, 10000);\n            },\n\n            getQuery() {\n                                return \"query BrandsMoreFromBrand { \\n  amBrandGetMoreFromThisBrandBlock(productId: \\\"50208\\\") {\\n    items {\\n        id\\n        sku\\n        name\\n        stock_status\\n        news_from_date\\n        news_to_date\\n        special_price\\n        qty\\n        totalqty\\n        review_html\\n        trendingproduct\\n        bestseller_product\\n        aw_shopbybrand_brand\\n        aw_shopbybrand_brand_label\\n        url_key\\n        url_suffix\\n        visibility\\n        status\\n        canonical_url\\n        image {\\n          label\\n          url\\n        }\\n        small_image {\\n          label\\n          url\\n        }\\n        url_rewrites {\\n          parameters {\\n            name\\n            value\\n          }\\n          url\\n        }\\n        price_range {\\n          minimum_price {\\n            regular_price {\\n              value\\n            }\\n            final_price {\\n              value\\n            }\\n          }\\n          maximum_price {\\n            final_price {\\n              value\\n            }\\n          }\\n        }\\n    }\\n    title\\n  }\\n }\"            },\n\n            addToWishlist(productId) {\n                const formKey = hyva.getFormKey();\n                const postUrl = BASE_URL + 'wishlist\/index\/add\/';\n\n                fetch(postUrl, {\n                    \"headers\": {\n                        \"content-type\": \"application\/x-www-form-urlencoded; charset=UTF-8\",\n                    },\n                    \"body\": \"form_key=\" + formKey + \"\u0026product=\" + productId + \"\u0026uenc=\" + hyva.getUenc(),\n                    \"method\": \"POST\",\n                    \"mode\": \"cors\",\n                    \"credentials\": \"include\"\n                }).then(response =\u003e {\n                    if (response.redirected) {\n                        window.location.href = response.url;\n                    } else if (response.ok) {\n                        return response.json();\n                    } else {\n                        typeof window.dispatchMessages !== \"undefined\" \u0026\u0026 window.dispatchMessages(\n                            [{\n                                type: \"warning\",\n                                text: \"Artikel konnte nicht zur Wunschliste hinzugefügt werden.\"\n                            }], 5000\n                        );\n                    }\n                }).then(response =\u003e {\n                    if (!response) { return }\n                    typeof window.dispatchMessages !== \"undefined\" \u0026\u0026 window.dispatchMessages(\n                        [{\n                            type: (response.success) ? \"success\" : \"error\",\n                            text: (response.success)\n                                ? \"«Produkt» wurde zur Wunschliste hinzugefügt.\" : response.error_message\n                        }], 5000\n                    );\n                    window.dispatchEvent(new CustomEvent(\"reload-customer-section-data\"));\n                }).catch(function (error) {\n                    typeof window.dispatchMessages !== \"undefined\" \u0026\u0026 window.dispatchMessages(\n                        [{\n                            type: \"error\",\n                            text: error\n                        }], 5000\n                    );\n                });\n            }, \/\/ end addToWishlist()\n\n            addToCompare(productId) {\n                const formKey = hyva.getFormKey();\n                const postUrl = BASE_URL + 'catalog\/product_compare\/add\/';\n\n                fetch(postUrl, {\n                    \"headers\": {\n                        \"content-type\": \"application\/x-www-form-urlencoded; charset=UTF-8\",\n                    },\n                    \"body\": \"form_key=\" + formKey + \"\u0026product=\" + productId + \"\u0026uenc=\" + hyva.getUenc(),\n                    \"method\": \"POST\",\n                    \"mode\": \"cors\",\n                    \"credentials\": \"include\"\n                }).then(response =\u003e {\n                    if (response.redirected) {\n                        window.location.href = response.url;\n                    }\n                }).catch(error =\u003e {\n                    typeof window.dispatchMessages !== \"undefined\" \u0026\u0026 window.dispatchMessages(\n                        [{\n                            type: \"error\",\n                            text: error\n                        }], 5000\n                    );\n                });\n            },\n\n            \/**\n             * Retrieve media url for given path\n             *\n             * @param path\n             * @returns {string}\n             *\/\n            getMediaUrl(path) {\n                return `${path}`;\n            },\n\n            moreFromBrandsInit() {\n                this.loading = true;\n\n                if (cached) {\n                    this.loading = false;\n                    return;\n                }\n\n                const req = this.sendRequest();\n                req.then(result =\u003e {\n                    if (result \u0026\u0026 result.errors) {\n                        this.initErrorMessages(result.errors);\n                        return;\n                    }\n\n                    this.products = result.data.amBrandGetMoreFromThisBrandBlock.items;\n                    this.title = result.data.amBrandGetMoreFromThisBrandBlock.title;\n\n                    this.$nextTick(() =\u003e this.calcPageSize());\n\n                    cached = true;\n                }).catch(displayError).finally(() =\u003e {\n                    this.loading = false;\n                });\n            },\n\n            getProductUrl(product) {\n                if (!product.url_rewrites[0]) {\n                    return '';\n                }\n\n                return 'https:\/\/shop.hemagnova.ch\/' + product.url_rewrites[0]?.url;\n            },\n\n            \/**\n             * Send request to graphql\n             *\n             * @returns {Promise\u003cany\u003e}\n             *\/\n            sendRequest() {\n                return fetch('https:\/\/shop.hemagnova.ch\/graphql', {\n                    method: 'POST',\n                    headers: {\n                        'Content-Type': 'application\/json',\n                        'Store': 'hno_ch_de'\n                    },\n                    credentials: 'include',\n                    body: JSON.stringify({query: this.getQuery(), variables: {productId: '50208'}})\n                }).then(\n                    response =\u003e response.json()\n                );\n            }\n        }\n    }\n\n\u003c\/script\u003e\n\u003cscript\u003e\n    function moreFromBrandData() {\n        return Object.assign(\n            {\n                ...amMoreFromBrand(),\n                ...amMoreFromBrandSlider()\n            }, {\n                ['displaySlideAriaCurrent']() {return this.active === this.index},\n                ['displaySlideAriaLabel']() {\n                    return hyva.str(`${this.$el.dataset.label}`, (this.index \/ this.pageSize) + 1)\n                },\n                ['dotOneClass']() {\n                    return {\n                        'js_dummy_slide w-full md:w-1\/2 lg:w-1\/3 xl:w-1\/4 flex flex-shrink-0 py-1' : this.pageFillers \u003e 0\n                    }\n                },\n                ['dotTwoClass']() {\n                    return {\n                        'js_dummy_slide w-full md:w-1\/2 lg:w-1\/3 xl:w-1\/4 flex flex-shrink-0 py-1' : this.pageFillers \u003e 1\n                    }\n                },\n                ['dotThreeClass']() {\n                    return {\n                        'js_dummy_slide w-full md:w-1\/2 lg:w-1\/3 xl:w-1\/4 flex flex-shrink-0 py-1' : this.pageFillers \u003e 2\n                    }\n                },\n                ['previousButtonClass']() {return { 'bg-transparent text-primary' : this.active === 0 }},\n                ['displaySlideClass']() {\n                    return {\n                        'hidden': (this.pageSize !== 1 \u0026\u0026 !!(this.index % this.pageSize))\n                    }\n                },\n                ['displaySlideTextClass']() {\n                    return {\n                        'bg-opacity-100': this.active === this.index,\n                        'bg-opacity-25': this.active !== this.index,\n                        'hidden': (this.pageSize !== 1 \u0026\u0026 !!(this.index % this.pageSize))\n                    }\n                },\n                ['nextButtonClass']() {return { 'bg-transparent text-primary' : this.active \u003e= this.products.length-this.pageSize }},\n                ['previousButtonClickEvent']() {\n                    if (this.active === 0) return;\n\n                    this.getSlider().scrollLeft =\n                        (this.getSlider().scrollWidth \/ (this.products.length + this.pageFillers)) *\n                        (this.active - this.pageSize);\n\n                    this.active -= this.pageSize;\n                },\n\n                ['nextButtonClickEvent']() {\n                    if (this.active \u003e= this.products.length - this.pageSize) return;\n\n                    this.getSlider().scrollLeft =\n                        (this.getSlider().scrollWidth \/ (this.products.length + this.pageFillers)) *\n                        (this.active + this.pageSize);\n\n                    this.active += this.pageSize;\n                },\n                ['displaySlideClickEvent'](event) {\n                    this.getSlider().scrollLeft =\n                        (this.getSlider().scrollWidth \/ (this.products.length + this.pageFillers)) * this.index;\n                    this.active = this.index;\n                },\n                ['displaySlideTextClickEvent'](event) {\n                    this.getSlider().scrollLeft =\n                        (this.getSlider().scrollWidth \/ (this.products.length + this.pageFillers)) * this.index;\n                    this.active = this.index;\n                },\n                ['isProducts']() {return this.products \u0026\u0026 this.products.length},\n                ['isProductsLength']() {return this.products.length \u0026\u0026 this.products.length \u003e this.pageSize},\n                ['moreFromBrandInit']() {return this.moreFromBrandsInit()},\n                ['productId']() {return this.product.id},\n                ['resizeWindowDebounceEvent'](event) {this.calcPageSize(); this.$nextTick( function() { this.calcActive() })},\n                ['productSmallImageLabel']() {return this.product.small_image.label},\n                ['ariaLabelText']() {return hyva.str(`${this.$el.dataset.label}`, this.product.name)},\n                ['addToWishlistClickEvent'](event) {return this.addToWishlist(this.product.id)},\n                ['addToCompareClickEvent'](event) {return this.addToCompare(this.product.id)},\n                ['productUrl']() {return this.getProductUrl(this.product)},\n                ['productName']() {return this.product.name},\n                ['productSku']() {return this.product.name},\n                ['bestseller_product']() {return this.product.bestseller_product},\n                ['isShowPrice']() {return this.product.price_range.minimum_price?.final_price?.value},\n                ['brandItemInit']() {return this.$nextTick(() =\u003e this.slideRendered())},\n                ['productSmallImageUrl']() {return this.product.small_image.url},\n                ['formatedPrice']() {\n                    return hyva.formatPrice(this.product.price_range.minimum_price.final_price.value)\n                }\n            }\n        )\n    }\n    window.addEventListener(\n        'alpine:init',\n        () =\u003e Alpine.data(\n            'moreFromBrandData',\n            moreFromBrandData\n        ),\n        {once: true}\n    );\n\u003c\/script\u003e\n\u003c\/div\u003e    \u003cdiv x-data=\"initRecommendInsight()\"\u003e\n        \u003cdiv id=\"frequentlyBoughtTogether\" class=\"recommend-component\"\u003e\u003c\/div\u003e\n        \u003cdiv id=\"relatedProducts\" class=\"recommend-component\"\u003e\u003c\/div\u003e\n        \u003cdiv id=\"trendItems\" class=\"recommend-component\"\u003e\u003c\/div\u003e\n        \u003cdiv id=\"lookingSimilar\" class=\"recommend-component\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cscript\u003e\n        'use strict';\n\n        function initRecommendInsight() {\n            return {\n                bindClickEvent(element, eventName, objectID, indexName) {\n                    element.querySelector(algoliaConfig.personalization.clickedEvents.productRecommended.selector).addEventListener(\"click\", function () {\n                        buildInsightsEventData(eventName, objectID, indexName);\n                    });\n                }\n            }\n        }\n    \u003c\/script\u003e\n\n\u003c\/div\u003e","brand":"Adalya","offers":[{"title":"Default Title","offer_id":58249636053256,"sku":"DO15261-01","price":360.0,"currency_code":"CHF","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0905\/6750\/8232\/files\/260318_adalya_liquids_launch_digital_shopbild.jpg?v=1784261027","url":"https:\/\/www.am2pm.ch\/en\/products\/adalya-liquids-launch-package","provider":"am2pm.ch","version":"1.0","type":"link"}