PageSourceSearch

https://www.vedia.ch/customer/account/login/referer/aHR0cHM6Ly93d3…VkaWEuY2gvY3VzdG9tZXIvYWNjb3VudC9pbmRleC8~/

html vedia.ch collected 2026-09-26 15:48:22 UTC 287,648 bytes, 5,259 lines download raw bytes

1<!doctype html>
2<html lang="de">
3<head >
4    <meta charset="utf-8"/>
5<meta name="description" content="Grosse Auswahl - günstige Preise. Bezahlung per KK, Rechnung, TWINT ✓ Teilzahlung ✓ Schweizer Kundendienst (DE/FR) ➤ Jetzt entdecken!"/>
6<meta name="robots" content="INDEX,FOLLOW"/>
7<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5.0"/>
8<title></title>
9        <link rel="stylesheet" type="text/css" media="all" href="https://www.vedia.ch/static/version1790063611/frontend/Vedia/hyva/de_CH/css/styles.css" />
10<link rel="icon" type="image/x-icon" href="https://www.vedia.ch/static/version1790063611/frontend/Vedia/hyva/de_CH/Magento_Theme/favicon.ico" />
11<link rel="shortcut icon" type="image/x-icon" href="https://www.vedia.ch/static/version1790063611/frontend/Vedia/hyva/de_CH/Magento_Theme/favicon.ico" />
12<link rel="canonical" href="https://www.vedia.ch/customer/account/login/referer/aHR0cHM6Ly93d3cudmVkaWEuY2gvY3VzdG9tZXIvYWNjb3VudC9pbmRleC8~/" />
13    <!-- BEGIN TRACKJS -->
14<script type="text/javascript" src="https://cdn.trackjs.com/agent/v3/latest/t.js" crossorigin></script>
vendor: 1 bytes, line 14
14
15<script>
16window.TrackJS && TrackJS.install({
17    token: 'c75ba9dc3b0a4ee0904ab6d07dc048bb',
18    application: 've-m2',
19    onError: function(payload) {
20        if (payload.file)
21            payload.file = payload.file.replace(/\/version\d+\//, '/version0000000000/'); // remove static version key
22        if (payload.message) {
23            payload.message = payload.message
24                .replace(/\/version\d+\//, '/version0000000000/') // remove static version key
25                .replace(/^\[20\d\d-\d\d-\d\d \d\d:\d\d:\d\d\]/, '') // remove logger timestamp at start of message
26            ;
27        }
28        return true;
29    }
30});
31</script>
31
32<!-- END TRACKJS -->
33<script>
34    var BASE_URL = 'https://www.vedia.ch/';
35    var require = {
36        "baseUrl": "https://www.vedia.ch/static/version1790063611/frontend/Vedia/hyva/de_CH"
37    };
38</script>
vendor: 1 bytes, line 38
38
39<script>
40    'use strict';
41    (function( hyva, undefined ) {
42
43        function lifetimeToExpires(options, defaults) {
44
45            const lifetime = options.lifetime || defaults.lifetime;
46
47            if (lifetime) {
48                const date = new Date;
49                date.setTime(date.getTime() + lifetime * 1000);
50                return date;
51            }
52
53            return null;
54        }
55
56        function generateRandomString() {
57
58            const allowedCharacters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
59                length = 16;
60
61            let formKey = '',
62                charactersLength = allowedCharacters.length;
63
64            for (let i = 0; i < length; i++) {
65                formKey += allowedCharacters[Math.round(Math.random() * (charactersLength - 1))]
66            }
67
68            return formKey;
69        }
70
71        const sessionCookieMarker = {noLifetime: true}
72
73        const cookieTempStorage = {};
74
75        const internalCookie = {
76            get(name) {
77                const v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)');
78                return v ? v[2] : null;
79            },
80            set(name, value, days, skipSetDomain) {
81                let expires,
82                    path,
83                    domain,
84                    secure,
85                    samesite;
86
87                const defaultCookieConfig = {
88                    expires: null,
89                    path: '/',
90                    domain: null,
91                    secure: false,
92                    lifetime: null,
93                    samesite: 'lax'
94                };
95
96                const cookieConfig = window.COOKIE_CONFIG || {};
97
98                expires = days && days !== sessionCookieMarker
99                    ? lifetimeToExpires({lifetime: 24 * 60 * 60 * days, expires: null}, defaultCookieConfig)
100                    : lifetimeToExpires(window.COOKIE_CONFIG, defaultCookieConfig) || defaultCookieConfig.expires;
101
102                path = cookieConfig.path || defaultCookieConfig.path;
103                domain = !skipSetDomain && (cookieConfig.domain || defaultCookieConfig.domain);
104                secure = cookieConfig.secure || defaultCookieConfig.secure;
105                samesite = cookieConfig.samesite || defaultCookieConfig.samesite;
106
107                document.cookie = name + "=" + encodeURIComponent(value) +
108                    (expires && days !== sessionCookieMarker ? '; expires=' + expires.toGMTString() : '') +
109                    (path ? '; path=' + path : '') +
110                    (domain ? '; domain=' + domain : '') +
111                    (secure ? '; secure' : '') +
112                    (samesite ? '; samesite=' + samesite : 'lax');
113            },
114            isWebsiteAllowedToSaveCookie() {
115                const allowedCookies = this.get('user_allowed_save_cookie');
116                if (allowedCookies) {
117                    const allowedWebsites = JSON.parse(unescape(allowedCookies));
118
119                    return allowedWebsites[CURRENT_WEBSITE_ID] === 1;
120                }
121                return false;
122            },
123            getGroupByCookieName(name) {
124                const cookieConsentConfig = window.cookie_consent_config || {};
125                let group = null;
126                for (let prop in cookieConsentConfig) {
127                    if (!cookieConsentConfig.hasOwnProperty(prop)) continue;
128                    if (cookieConsentConfig[prop].includes(name)) {
129                        group = prop;
130                        break;
131                    }
132                }
133                return group;
134            },
135            isCookieAllowed(name) {
136                const cookieGroup = this.getGroupByCookieName(name);
137                return cookieGroup
138                    ? window.cookie_consent_groups[cookieGroup]
139                    : this.isWebsiteAllowedToSaveCookie();
140            },
141            saveTempStorageCookies() {
142                for (const [name, data] of Object.entries(cookieTempStorage)) {
143                    if (this.isCookieAllowed(name)) {
144                        this.set(name, data['value'], data['days'], data['skipSetDomain']);
145                        delete cookieTempStorage[name];
146                    }
147                }
148            }
149        };
150
151        hyva.getCookie = (name) => {
152            const cookieConfig = window.COOKIE_CONFIG || {};
153
154            if (cookieConfig.cookie_restriction_enabled && ! internalCookie.isCookieAllowed(name)) {
155                return cookieTempStorage[name] ? cookieTempStorage[name]['value'] : null;
156            }
157
158            return internalCookie.get(name);
159        }
160
161        hyva.setCookie = (name, value, days, skipSetDomain) => {
162            const cookieConfig = window.COOKIE_CONFIG || {};
163
164            if (cookieConfig.cookie_restriction_enabled && ! internalCookie.isCookieAllowed(name)) {
165                cookieTempStorage[name] = {value, days, skipSetDomain};
166                return;
167            }
168            return internalCookie.set(name, value, days, skipSetDomain);
169        }
170
171
172        hyva.setSessionCookie = (name, value, skipSetDomain) => {
173            return hyva.setCookie(name, value, sessionCookieMarker, skipSetDomain)
174        }
175
176        hyva.getBrowserStorage = () => {
177            const browserStorage = window.localStorage || window.sessionStorage;
178            if (!browserStorage) {
179                console.warn('Browser Storage is unavailable');
180                return false;
181            }
182            try {
183                browserStorage.setItem('storage_test', '1');
184                browserStorage.removeItem('storage_test');
185            } catch (error) {
186                console.warn('Browser Storage is not accessible', error);
187                return false;
188            }
189            return browserStorage;
190        }
191
192        hyva.postForm = (postParams) => {
193            const form = document.createElement("form");
194
195            let data = postParams.data;
196
197            if (! postParams.skipUenc && ! data.uenc) {
198                data.uenc = btoa(window.location.href);
199            }
200            form.method = "POST";
201            form.action = postParams.action;
202
203            Object.keys(postParams.data).map(key => {
204                const field = document.createElement("input");
205                field.type = 'hidden'
206                field.value = postParams.data[key];
207                field.name = key;
208                form.appendChild(field);
209            });
210
211            const form_key = document.createElement("input");
212            form_key.type = 'hidden';
213            form_key.value = hyva.getFormKey();
214            form_key.name="form_key";
215            form.appendChild(form_key);
216
217            document.body.appendChild(form);
218
219            form.submit();
220        }
221
222        hyva.getFormKey = function () {
223            let formKey = hyva.getCookie('form_key');
224
225            if (!formKey) {
226                formKey = generateRandomString();
227                hyva.setCookie('form_key', formKey);
228            }
229
230            return formKey;
231        }
232
233        hyva.formatPrice = (value, showSign, additionalClassNames = "", showCurrency = false) => {
234
235            if(showCurrency) {
236                var formatter = new Intl.NumberFormat(
237                    'en-CH', {
238                        style: 'currency',
239                        currency: 'CHF',
240                        signDisplay: showSign ? "always" : "auto"
241                    }
242                );
243                return (typeof Intl.NumberFormat.prototype.formatToParts === 'function') ?
244                    formatter.formatToParts(value).map(({type, value}) => {
245                        switch (type) {
246                            case 'currency':
247                                return (additionalClassNames !== "")? '<span id="priceformat" class="' + additionalClassNames + '">CHF</span>' || value
248                                                                    : 'CHF' || value;
249                            case 'minusSign':
250                                return '- ';
251                            case 'plusSign':
252                                return '+ ';
253                            default :
254                                return value;
255                        }
256                    }).reduce((string, part) => string + part) :
257                    formatter.format(value);
258            } else return new Intl.NumberFormat('en-CH', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(value);
259        }
260
261        const formatStr = function (str, nStart) {
262            const args = Array.from(arguments).slice(2);
263
264            return str.replace(/(%+)([0-9]+)/g, (m, p, n) => {
265                const idx = parseInt(n) - nStart;
266
267                if (args[idx] === null || args[idx] === void 0) {
268                    return m;
269                }
270                return p.length % 2
271                    ? p.slice(0, -1).replace('%%', '%') + args[idx]
272                    : p.replace('%%', '%') + n;
273            })
274        }
275
276        hyva.str = function (string) {
277            const args = Array.from(arguments);
278            args.splice(1, 0, 1);
279
280            return formatStr.apply(undefined, args);
281        }
282
283        hyva.strf = function () {
284            const args = Array.from(arguments);
285            args.splice(1, 0, 0);
286
287            return formatStr.apply(undefined, args);
288        }
289
290        /**
291         * Take a html string as `content` parameter and
292         * extract an element from the DOM to replace in
293         * the current page under the same selector,
294         * defined by `targetSelector`
295         */
296        hyva.replaceDomElement = (targetSelector, content) => {
297            // Parse the content and extract the DOM node using the `targetSelector`
298            const parser = new DOMParser();
299            const doc = parser.parseFromString(content, 'text/html');
300            const contentNode = doc.querySelector(targetSelector);
301
302            // Bail if content or target can't be found
303            if (!contentNode || !document.querySelector(targetSelector)) {
304                return;
305            }
306
307                        hyva.activateScripts(contentNode);
308            
309            // Replace the old DOM node with the new content
310            document.querySelector(targetSelector).replaceWith(contentNode);
311
312            // Reload customerSectionData and display cookie-messages if present
313            window.dispatchEvent(new CustomEvent("reload-customer-section-data"));
314            hyva.initMessages();
315        }
316
317        hyva.removeScripts = (contentNode) => {
318            const scripts = contentNode.getElementsByTagName('script');
319            for (let i = 0; i < scripts.length; i++) {
320                scripts[i].parentNode.removeChild(scripts[i]);
321            }
322            const templates = contentNode.getElementsByTagName('template');
323            for (let i = 0; i < templates.length; i++) {
324                const container = document.createElement('div');
325                container.innerHTML = templates[i].innerHTML;
326                hyva.removeScripts(container);
327                templates[i].innerHTML = container.innerHTML;
328            }
329        }
330
331        hyva.activateScripts = (contentNode) => {
332            // Create new array from HTMLCollection to avoid mutation of collection while manipulating the DOM.
333            const scripts = Array.from(contentNode.getElementsByTagName('script'));
334
335            // Iterate over all script tags to duplicate+inject each into the head
336            for (const original of scripts) {
337                const script = document.createElement('script');
338                script.innerHTML = original.innerHTML;
339
340                // Remove the original (non-executing) script from the contentNode
341                original.parentNode.removeChild(original)
342
343                // Add script to head
344                document.head.appendChild(script);
345            }
346
347            return contentNode;
348        }
349
350        const replace = {['+']: '-', ['/']: '_', ['=']: ','};
351        hyva.getUenc = () => btoa(window.location.href).replace(/[+/=]/g, match => replace[match]);
352
353        let currentTrap;
354
355        const focusableElements = (rootElement) => {
356            const selector = 'button, [href], input, select, textarea, details, [tabindex]:not([tabindex="-1"]';
357            return Array.from(rootElement.querySelectorAll(selector))
358                .filter(el => {
359                    return el.style.display !== 'none'
360                        && !el.disabled
361                        && el.tabIndex !== -1
362                        && (el.offsetWidth || el.offsetHeight || el.getClientRects().length)
363                })
364        }
365
366        const focusTrap = (e) => {
367            const isTabPressed = e.key === 'Tab' || e.keyCode === 9;
368            if (!isTabPressed) return;
369
370            const focusable = focusableElements(currentTrap)
371            const firstFocusableElement = focusable[0]
372            const lastFocusableElement = focusable[focusable.length - 1]
373
374            e.shiftKey
375                ? document.activeElement === firstFocusableElement && (lastFocusableElement.focus(), e.preventDefault())
376                : document.activeElement === lastFocusableElement && (firstFocusableElement.focus(), e.preventDefault())
377        };
378
379        hyva.releaseFocus = (rootElement) => {
380            if (currentTrap && (!rootElement || rootElement === currentTrap)) {
381                currentTrap.removeEventListener('keydown', focusTrap)
382                currentTrap = null
383            }
384        }
385        hyva.trapFocus = (rootElement) => {
386            if (!rootElement) return;
387            hyva.releaseFocus()
388            currentTrap = rootElement
389            rootElement.addEventListener('keydown', focusTrap)
390            const firstElement = focusableElements(rootElement)[0]
391            firstElement && firstElement.focus()
392        }
393
394        hyva.safeParseNumber = (rawValue) => {
395            const number = rawValue ? parseFloat(rawValue) : null;
396
397            return Array.isArray(number) || isNaN(number) ? rawValue : number;
398        }
399
400        const toCamelCase = s => s.split('_').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join('');
401        hyva.createBooleanObject = (name, value = false, additionalMethods = {}) => {
402
403            const camelCase = toCamelCase(name);
404            const key = '__hyva_bool_' + name
405
406            return new Proxy(Object.assign(
407                additionalMethods,
408                {
409                    [key]: !!value,
410                    [name]() {return !!this[key]},
411                    ['!' + name]() {return !this[key]},
412                    ['toggle' + camelCase]() {this[key] = !this[key]},
413                    [`set${camelCase}True`]() {this[key] = true},
414                    [`set${camelCase}False`]() {this[key] = false},
415                }
416            ), {
417                set(target, prop, value) {
418                    return prop === name
419                        ? (target[key] = !!value)
420                        : Reflect.set(...arguments);
421                }
422            })
423        }
424
425                hyva.alpineInitialized = (fn) => window.addEventListener('alpine:initialized', fn, {once: true})
426                window.addEventListener('user-allowed-save-cookie', () => internalCookie.saveTempStorageCookies())
427
428    }( window.hyva = window.hyva || {} ));
429</script>
vendor: 1 bytes, line 429
429
430<script>
431    var BASE_URL = 'https://www.vedia.ch/';
432    var THEME_PATH = 'https://www.vedia.ch/static/version1790063611/frontend/Vedia/hyva/de_CH';
433    var COOKIE_CONFIG = {
434        "expires": null,
435        "path": "\u002F",
436        "domain": ".www.vedia.ch",
437        "secure": true,
438        "lifetime": "604800",
439        "cookie_restriction_enabled": false    };
440    var CURRENT_STORE_CODE = 've_de';
441    var CURRENT_WEBSITE_ID = '6';
442
443    window.hyva = window.hyva || {}
444
445    window.cookie_consent_groups = window.cookie_consent_groups || {}
446    window.cookie_consent_groups['necessary'] = true;
447
448    window.cookie_consent_config = window.cookie_consent_config || {};
449    window.cookie_consent_config['necessary'] = [].concat(
450        window.cookie_consent_config['necessary'] || [],
451        [
452            'user_allowed_save_cookie',
453            'form_key',
454            'mage-messages',
455            'private_content_version',
456            'mage-cache-sessid',
457            'last_visited_store',
458            'section_data_ids'
459        ]
460    );
461    //# sourceURL=hyva-variables.js
462</script>
462
463
464<script >
465    window.getWpGA4Cookie = function(name) {
466        match = document.cookie.match(new RegExp(name + '=([^;]+)'));
467        if (match) return decodeURIComponent(match[1].replace(/\+/g, ' ')) ;
468    };
469
470        window.ga4AllowServices = false;
471    var isCookieRestrictionModeEnabled = 0,
472        currentWebsiteId = 6,
473        cookieRestrictionName = 'user_allowed_save_cookie';
474
475    if (isCookieRestrictionModeEnabled) {
476        allowedCookies = window.getWpGA4Cookie(cookieRestrictionName);
477
478        if (allowedCookies !== undefined) {
479            allowedWebsites = JSON.parse(allowedCookies);
480
481            if (allowedWebsites[currentWebsiteId] === 1) {
482                window.ga4AllowServices = true;
483            }
484        }
485    } else {
486        window.ga4AllowServices = true;
487    }
488    </script>
488
489
490        <!-- Google Tag Manager -->
491<script  > if (window.ga4AllowServices) {
vendor: 327 bytes, lines 491-495
491(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
492new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
493j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
494'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
495})(window,document,'script','dataLayer','
495GTM-5R9HJ9V
vendor: 3 bytes, line 495
495');
495} 
496<!-- End Google Tag Manager -->        </script>
496
497    
498        
498<script >
499        if (window.ga4AllowServices) {
500            window.dataLayer = window.dataLayer || [];
501                        var dl4Objects = [{"pageName":"","pageType":"other"}];
502            for (var i in dl4Objects) {
503                window.dataLayer.push({ecommerce: null});
504                window.dataLayer.push(dl4Objects[i]);
505            }
506                        var wpGA4Cookies = ['wp_ga4_user_id','wp_ga4_customerGroup'];
507            var orderCustomerGroupCookie = 'wp_ga4_customerGroupForOrder';
508            var regularCustomerGroupCookie = 'wp_ga4_customerGroup';
509            var orderCustomerGroupValue = window.getWpGA4Cookie(orderCustomerGroupCookie);
510
511            wpGA4Cookies.map(function (cookieName) {
512                var cookieValue = window.getWpGA4Cookie(cookieName);
513                if (cookieValue) {
514                    var dl4Object = {};
515                    var cookieKey = cookieName.replace('wp_ga4_', '');
516                    // Use order customerGroup cookie instead of regular customerGroup cookie if it exists
517                    if (cookieName === regularCustomerGroupCookie && orderCustomerGroupValue) {
518                        dl4Object[cookieKey] = orderCustomerGroupValue;
519                    } else {
520                        dl4Object[cookieKey] = cookieValue;
521                    }
522                    window.dataLayer.push(dl4Object);
523                }
524            });
525        }
526    </script>
526
527    
527<script type="text/javascript">
528        window._bxq = window._bxq || [];
529
530        function bxq(arguments) {
531            _bxq.push(arguments);
532        }
533    </script>
533
534    
534<script type="text/javascript">
535    {
536        var rtuxOptions = {
537            "account": "lehner_vedia",
538            "key": "b0f3e046-6d7c-4701-9128-972bd63df3cb",
539            "endpoint": "https://main-gw1.wi-platform-cloud.com/narrative/lehner_vedia/api/1",
540            "language": "de",
541            "dev": false,
542            "test": false,
543            "isRestricted": false,
544            "isNavigation": false,
545            "isSearch": false,
546            "isProduct": false,
547            "activeId": null,
548            "currencyCode": "CHF",
549            "isRti":false        };
550        window.rtuxOptions = rtuxOptions;
551        (function (i, s, o, g, a, m) {
552            a = s.createElement(o), m = s.getElementsByTagName(o)[0];
553            a.async = true;
554            a.src = g;
555            m.parentNode.insertBefore(a, m)
556        })(window, document, 'script', "//bx-cdn.com/static/bav2.min.js");
557
558        bxq(["setAccount", rtuxOptions.account]);
559    }
560</script>
560
561    
561<script type="text/javascript">
562        document.addEventListener("DOMContentLoaded", function () {
563            //search
564            if (window.rtuxOptions.isSearch) {
565                let searchInput;
566                if (document.getElementById('search')) {
567                    searchInput = document.getElementById('search').value;
568                } else if (document.querySelectorAll('input[id^="search_"]').length) {
569                    searchInput = document.querySelectorAll('input[id^="search_"]')[0].value;
570                }
571                if (searchInput) {
572                    /*global bxq */
573                    bxq(['trackSearch', searchInput]);
574                }
575            }
576
577            //product
578            if (window.rtuxOptions.isProduct) {
579                let activeId = window.rtuxOptions.activeId;
580                if (activeId) {
581                    /*global bxq */
582                    bxq(['trackProductView', activeId]);
583                }
584            }
585
586            // page
587            bxq(['trackPageView']);
588
589            // navigation
590            if (window.rtuxOptions.isNavigation) {
591                let activeId = window.rtuxOptions.activeId;
592                if (activeId) {
593                    /*global bxq */
594                    bxq(['trackCategoryView', activeId]);
595                }
596            }
597
598            // hyva add-to-cart
599            window.fetch = new Proxy(window.fetch, {
600                apply(fetch, that, args) {
601                    const result = fetch.apply(that, args);
602                    result.then((response) => {
603                        let url;
604                        if (typeof args[0] === 'string') {
605                            url = args[0];
606                        } else if (args[0] instanceof Request) {
607                            url = args[0].url;
608                        } else {
609                            return result;
610                        }
611
612                        if (!url.includes('cart/add')) {
613                            return result;
614                        }
615                        let params = [];
616                        for (let pair of args[1].body.entries()) {
617                            params.push(pair);
618                        }
619                        trackAddToCart(params);
620                    });
621                    return result;
622                }
623            });
624
625            function trackAddToCart(params) {
626                let prices = [];
627
628                if (document.querySelectorAll("span.price[x-html]") !== undefined &&
629                    document.querySelectorAll("span.price[x-html]")[0] &&
630                    document.querySelectorAll("span.price[x-html]")[0].innerHTML.search('<del>') < 0) {
631                    prices = document.querySelectorAll("span.price[x-html]");
632                }
633                if (prices.length === 0 && document.querySelectorAll("span[x-html=selectedCombinationPrice]") !== undefined) {
634                    prices = document.querySelectorAll("span[x-html=selectedCombinationPrice]");
635                }
636                if (prices.length === 0 && document.querySelectorAll("span[name=selected_price]") !== undefined) {
637                    prices = document.querySelectorAll("span[name=selected_price]");
638                }
639                if (prices.length === 0 && document.querySelectorAll("span[class=
639price]") !== undefined) {
640                    prices = document.querySelectorAll("span[class=price]");
641                }
642                let product, qty, attributes = [], simpleProducts = [];
643                for (let i = 0, j = 0; i < params.length; i++) {
644                    if (params[i][0] === 'product') {
645                        product = params[i][1];
646                    }
647                    if (params[i][0] === 'qty') {
648                        qty = params[i][1];
649                    }
650                    // config product
651                    if (typeof (confSwatchOptions) !== 'undefined' && params[i][0].search('super_attribute') > -1) {
652                        let a = [];
653                        a['id'] = parseInt(params[i][0].match(/\d+/));
654                        a['value'] = parseInt(params[i][1].match(/\d+/));
655                        attributes = attributes.concat([a]);
656                    }
657                    // group config product
658                    if (params[i][0].search('super_group') > -1) {
659                        if (params[i][1] > 0) {
660                            let price, p = [];
661
662                            if (typeof (prices[j]) === 'undefined') {
663                                price = prices[0];
664                            } else {
665                                price = prices[j];
666                            }
667                            p['id'] = parseInt(params[i][0].match(/\d+/));
668                            p['qty'] = parseInt(params[i][1].match(/\d+/));
669                            p['price'] = parseFloat(Number(price.innerText.replace(/[^0-9.]+/g, ""))).toFixed(2);
670                            simpleProducts = simpleProducts.concat([p]);
671                        }
672                        j++;
673                    }
674                }
675
676                // configurable product
677                if (typeof (confSwatchOptions) !== 'undefined' && attributes.length === 2) {
678                    let array1 = filterProducts(confSwatchOptions.jsonConfig.attributes[attributes[0]['id']].options, attributes[0]['value']);
679                    let array2 = filterProducts(confSwatchOptions.jsonConfig.attributes[attributes[1]['id']].options, attributes[1]['value']);
680                    product = array1.filter(value => array2.includes(value))[0];
681                }
682
683                // simple product
684                if (simpleProducts.length === 0) {
685                    if (prices.length === 2) {
686                        prices = [...prices].reverse();
687                    }
688                    simpleProducts = [{
689                        'id': product,
690                        'qty': qty,
691                        'price': parseFloat(Number(prices[0].innerText.replace(/[^0-9.]+/g, ""))).toFixed(2)
692                    }];
693                }
694
695                /*global bxq */
696                if (simpleProducts.length > 0) {
697                    for (let simpleProduct of simpleProducts) {
698                        bxq(['trackAddToBasket',
699                            simpleProduct['id'],
700                            simpleProduct['qty'],
701                            simpleProduct['price'],
702                            window.rtuxOptions.currencyCode,
703                        ]);
704                    }
705                }
706
707                function filterProducts(array, value) {
708                    for (let a in array) {
709                        if (array[a]['id'] == value) {
710                            return array[a].products;
711                        }
712                    }
713                }
714            }
715        });
716    </script>
716
717    
717<script type="speculationrules">
718{
719    "tag": "Hyva Theme",
720    "prefetch": [{
721        "source": "document",
722        "where": {
723            "and": [
724                { "href_matches": "/*" },
725                { "not": {
726                    "href_matches": ["/customer/*","/search/*","/sales/*","/wishlist/*","/checkout/*","/paypal/*","/newsletter/*","/stores/store/redirect/*"]                }},
727                { "not": {
728                    "selector_matches": [".no-preload", ".do-not-prerender", "[download]", "[rel~=nofollow]", "[target]"]
729                }}
730            ]
731        },
732        "eagerness": "moderate"
733    }]
734}
735</script>
735
736</head>
737<body id="html-body" class="customer-account-login page-layout-1column">
738<!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 738-739
738
739<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
739GTM-5R9HJ9V
vendor: 83 bytes, lines 739-740
739"
740height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
741<!-- End Google Tag Manager (noscript) -->
742    
742<script async src="//bx-cdn.com/static/rti.min.js"></script>
742
743<input name="form_key" type="hidden" value="uojecUerWSEOGZi3" />
744    <noscript>
745        <section
746            class="message global noscript border-b-2 border-blue-500 bg-blue-50 shadow-none m-0 px-0 rounded-none font-normal"
747            aria-labelledby="messageGlobalNoScriptMessage"
748        >
749            <div class="container text-center">
750                <p id="messageGlobalNoScriptMessage">
751                    <strong>JavaScript scheint in Ihrem Browser deaktiviert zu sein.</strong>
752                    <span>
753                        Um unsere Website in bester Weise zu erfahren, aktivieren Sie Javascript in Ihrem Browser.                    </span>
754                </p>
755            </div>
756        </section>
757    </noscript>
758
759
760
761<script>
762    'use strict';
763
764    (function () {
765        window.amGdprCookieBar = {
766            isEnabled: 1,
767
768            /**
769             * @public
770             * @returns {int}
771             */
772            getIsEnabled() {
773                return this.isEnabled;
774            }
775        }
776    })();
777</script>
777
778
779<script data-cfasync="false">
780    window.amastyCookieManager = window.amastyCookieManager || {};
781</script>
781
782
783<div x-data="initAmastyCookieBar"
784     x-bind="eventListeners"
785     x-cloak
786     id="am-cookie-bar"
787            class="&#x20;w-full&#x20;fixed&#x20;bottom-0&#x20;z-40"
788    >
789    <dialog
790    class="am-cookie-classic&#x20;flex&#x20;w-full&#x20;p-6&#x20;relative&#x20;bottom-0&#x20;z-50&#x20;inset-y-0"
791    data-dialog-ref-name="am-cookie-bar"
792    closeby="any"
793            aria-label="Cookie&#x20;Bar"
794            x-bind="dialogConfig"
795            x-htmldialog.modeless="hide"
796        x-ref="am-cookie-bar"
797    >
798<div class="w-full lg:w-[80%] flex justify-between items-center flex-wrap">
799        <div class="flex w-full lg:w-2/3">
800                <div x-data="privacyPolicyModal"
801     x-cloak>
802    <p class="text-sm text-ambar-policy-text">
803        Diese Webseite nutzt Cookies und andere Technologien, um die Benutzerfreundlichkeit zu verbessern
804        und die Leistung der Webseite und unserer Werbemassnahmen zu messen. Weitere Informationen und Ihre Optionen
805        entnehmen Sie bitte unserer
806        <span aria-label="Datenschutzerklärung" x-on:click.prevent="openModal"
807              class="text-sm text-primary hover:text-primary-darker cursor-pointer transition text-right">
808        Datenschutzerklärung.
809        </span>
810    </p>
811    <div x-ref="backdrop"
812         class="opacity-0 fixed top-0 left-0 flex items-end md:items-center justify-center w-full h-full md:p-10 z-50  bg-black bg-opacity-60 transition cursor-pointer"
813         :class="getOpenOpacityClasses"
814         x-cloak>
815        <div class="relative h-98 md:h-full w-full md:w-200 overflow-y-auto py-6 px-5 md:px-12 lg:px-28 bg-white shadow-md text-left rounded-tl-2xl rounded-tr-2xl md:rounded-none cursor-auto">
816            <button x-on:click.prevent="closeModal"
817                    class="absolute top-3 right-3 flex items-center text-curre justify-center text-xl w-11 h-11 rounded-full bg-primary text-white leadinone">
818                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15 15" class="w-3.5 h-3.5 text-current" role="img"><path d="M6.26 7.461.248 1.451A.85.85 0 0 1 1.451.249l6.01 6.01 6.01-6.01a.85.85 0 0 1 1.203 1.202l-6.01 6.01 6.01 6.01a.85.85 0 0 1-1.202 1.203l-6.01-6.01-6.011 6.01a.85.85 0 0 1-1.202-1.202l6.01-6.01z" fill="currentColor" fill-rule="evenodd"/><title>close</title></svg>
819
820            </button>
821            <div class="l-cms agb">
822
823                <section class="-mx-4 md:-ml-5 pb-4">
824                    <div class="px-4 pt-4">
825                        <h2 class="mb-5">Datenschutzerklärung</h2>
826                        <strong>Allgemeiner Hinweis</strong>
827                        <p class="mt-2"> Gestützt auf Artikel 13 der schweizerischen Bundesverfassung und den datenschutzrechtlichen
828                            Bestimmungen
829                            des Bundes (Datenschutzgesetz, DSG) hat jede Person Anspruch auf Schutz ihrer Privatsphäre sowie auf
830                            Schutz vor Missbrauch
831                            ihrer persönlichen Daten. Die Betreiber dieser Seiten nehmen den Schutz Ihrer persönlichen Daten sehr
832                            ernst.
833                            Wir behandeln Ihre personenbezogenen Daten vertraulich und entsprechend der gesetzlichen
834                            Datenschutzvorschriften sowie dieser Datenschutzerklärung.
835                        </p>
836                        <p class="mt-2">
837                            In Zusammenarbeit mit unseren Hosting-Providern bemühen wir uns, die Datenbanken so gut wie möglich vor
838                            fremden Zugriffen, Verlusten, Missbrauch oder vor Fälschung zu schützen.
839                        </p>
840                        <p class="mt-2">
841                            Wir weisen darauf hin, dass die Datenübertragung im Internet (z.B. bei der Kommunikation per E-Mail)
842                            Sicherheitslücken aufweisen kann. Ein lückenloser Schutz der Daten vor dem Zugriff durch Dritte ist
843                            nicht möglich.
844                        </p>
845                        <p class="mt-2 mb-3">
846                            Durch die Nutzung dieser Website erklären Sie sich mit der Erhebung, Verarbeitung und Nutzung von Daten
847                            gemäss der nachfolgenden Beschreibung einverstanden. Diese Website kann grundsätzlich ohne Registrierung
848                            besucht werden.
849                            Dabei werden Daten wie beispielsweise aufgerufene Seiten bzw. Namen der abgerufenen Datei, Datum und
850                            Uhrzeit zu statistischen Zwecken auf dem Server gespeichert, ohne dass diese Daten unmittelbar auf Ihre
851                            Person bezogen werden.
852                            Personenbezogene Daten, insbesondere Name, Adresse oder E-Mail-Adresse werden soweit möglich auf
853                            freiwilliger Basis erhoben. Ohne Ihre Einwilligung erfolgt keine Weitergabe der Daten an Dritte.
854                        </p>
855                        <strong>Kontakt</strong>
856                        <p class="mt-2">
857                            Bei Fragen zu dieser Datenschutzerklärung oder der Bearbeitung Ihrer Personen
857daten können Sie uns gerne
858                            wie folgt kontaktieren:
859                        </p>
860                        <div class="mt-3">
861                            <strong>Lehner Versand AG</strong>
862                            <p class="mt-2">Postfach</p>
863                            <p class="mt-3">6210 Sursee</p>
864
865                            <a href="/cdn-cgi/l/email-protection#e98d889d8c879a8a819c9d93a9858c81878c9bc49f8c9b9a88878dc78a81"><span class="__cf_email__" data-cfemail="9bfffaeffef5e8f8f3eeefe1dbf7fef3f5fee9b6edfee9e8faf5ffb5f8f3">[email&#160;protected]</span></a>
866
867                        </div>
868                        <div class="my-4">
869                            <div class="flex items-center">
870                                <img class="h-fit rounded-sm mr-2"
871                                     src=https://www.vedia.ch/media/static/cms/impressum/DE.png
872                                     alt="de flag">
873                                <p>0848 840 600 (deutsch)</p>
874                            </div>
875                            <div class="mt-2 flex items-center ">
876                                <img class="h-fit rounded-sm mr-2"
877                                     src=https://www.vedia.ch/media/static/cms/impressum/FR.png
878                                     alt="fr flag">
879                                <p>0848 840 601 (französisch)</p>
880                            </div>
881                            <div class="mt-2 flex items-center ">
882                                <img class="h-fit rounded-sm mr-2"
883                                     src=https://www.vedia.ch/media/static/cms/impressum/IT.png
884                                     alt="it flag">
885                                <p>0848 840 602 (italienisch)</p>
886                            </div>
887                        </div>
888
889                        <strong>Ihre Rechte</strong>
890
891
892                    </div>
893
894                    <div data-cms-accordion
895                         class="mt-4 sm:mt-auto -mx-4 md:mx-auto px-4 pt-4 accordion-wrapper transition-colors"
896                         data-selected-class="bg-white" data-unselected-class="bg-primary-lighter sm:bg-white" data-cms-accordion-class="accordionClass">
897                        <div class="mt-auto sm:mt-3 cursor-pointer sm:cursor-auto flex items-center justify-between"
898                             data-cms-accordion-toggle>
899                            <p> Sofern die gesetzlichen Voraussetzungen erfüllt sind, haben Sie als von einer Datenbearbeitung
900                                betroffene Person die folgenden Rechte: </p>
901                            <span class=" block sm:hidden transform transition-all rotate-0" data-cms-accordion-icon>
902                        <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-prefix="fas" data-icon="chevron-down" viewBox="0 0 448 512" class="w-3.5 h-3.5 text-purple mt-px" role="img"><path fill="currentColor" d="M207.029 381.476 12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"/><title>chevron-down</title></svg>
903
904                    </span>
905                        </div>
906                        <div class="mt-auto sm:mt-3 max-h-0 sm:max-h-full overflow-hidden transition-all"
907                             x-ref="container1" data-cms-accordion-content
908                             x-cloak>
909                            <ul class="list -bullet-p mt-4">
910                                <li class="mt-4">
911                                    <p class="text-base">Recht auf Auskunft: Sie haben das Recht, jederzeit unentgeltlich Einsicht
912                                        in Ihre bei uns gespeicherten personenbezogenen Daten zu verlangen, wenn wir diese
913                                        bearbeiten.
914                                        So haben Sie die Möglichkeit, zu prüfen, welche personenbezogene Daten wir über Sie
915                                        bearbeiten, und dass wir diese gemäss geltenden Datenschutz-bestimmungen verwenden. </p>
916                                </li>
917                                <li class="mt-4">
918                                    <p class="text-base"> Recht auf Berichtigung: Sie haben das Recht, unrichtige oder
919                                        unvollständige personenbezogene Daten berichtigen zu lassen und über die Berichtigung
920                                        informiert zu werden.
921                                        Wir informieren in diesem Fall die Empfänger der betroffenen Daten über die
922                                        vorgenommenen Anpassungen, sofern dies nicht unmöglich oder mit unverhältnismässigem
923                                        Aufwand verbunden ist.</p>
924                                </li>
925                                <li class="mt-4">
926                                    <p class="text-base">Recht auf Löschung: Sie haben das Recht, dass Ihre personenbezogenen
927                                        Daten unter bestimmten Umständen gelöscht werden. Im Einzelfall, insbesondere bei
928                                        gesetzlichen Aufbewahrungspflichten,
929                                        kann das Recht auf Löschung ausgeschlossen sein. In diesem Fall kann bei gegebenen
930                                        Voraussetzungen an die Stelle der Löschung eine Sperrung der Daten treten.</p>
931                                </li>
932                                <li class="mt-4">
933                                    <p class="text-base">Recht auf Einschränkung der Bearbeitung: Sie haben das Recht, zu
934                                        verlangen, dass die Bearbeitung Ihrer personenbezogenen Daten eingeschränkt wird. </p>
935                                </li>
936                                <li class="mt-4">
937                                    <p class="text-base">Recht auf Datenübertragung: Sie haben das Recht, von uns die
938                                        personenbezogenen Daten, welche Sie uns bereitgestellt haben, unentgeltlich in einem
939                                        lesbaren Format zu erhalten.</p>
940                                </li>
941                                <li class="mt-4 mb-4 sm:mb-0">
942                                    <p class="text-base">Widerspruchsrecht: Sie können Datenverarbeitungen jederzeit
943                                        widersprechen, insbesondere für die Datenverarbeitung im Zusammenhang mit Direktwerbung
944                                        (z.B. Werbe-E-Mails).</p>
945                                </li>
946                                <li class="mt-4 mb-4 sm:mb-0">
947                                    <p class="text-base">Widerrufsrecht: Sie haben grundsätzlich das Recht, eine erteilte
948                                        Einwilligung jederzeit zu widerrufen. In der Vergangenheit auf Ihre Einwilligung
949                                        gestützte Bearbeitungstätigkeiten werden durch
950                                        Ihren Widerruf allerdings nicht unrechtmässig.</p>
951                                </li>
952                            </ul>
953                        </div>
954                    </div>
955                    <p class="px-4 mt-2"> Zur Ausübung dieser Rechte senden Sie uns bitte eine E-Mail an folgende Adresse: <a href="/cdn-cgi/l/email-protection#f1959085949f82929984858bb19d94999f9483dc87948382909f95df9299"><span class="__cf_email__" data-cfemail="0d696c7968637e6e657879774d61686563687f207b687f7e6c6369236e65">[email&#160;protected]</span></a></p>
956
957
958                    <div class="px-4 pt-4">
959                        <strong>Datenschutzerklärung für Cookies</strong>
960                        <p class="mt-2"> Diese Website verwendet Cookies. Cookies sind Textdateien, die Daten von besuchten Websites
961                            oder Domains
962                            enthalten und von einem Browser auf dem Computer des Benutzers gespeichert werden. Ein Cookie dient in
963                            erster Linie dazu, die Informationen über einen Benutzer während oder nach
964                            seinem Besuch innerhalb eines Onlineangebotes zu speichern. Zu den gespeicherten Angaben können z.B. die
965                            Spracheinstellungen auf einer Webseite, der Loginstatus, ein Warenkorb oder die Stelle, an der ein Video
966                            geschaut wurde, gehören. Zu dem Begriff der Cookies zählen wir ferner andere
967                            Technologien, die die gleichen Funktionen wie Cookies erfüllen (z.B. wenn Angaben der Nutzer anhand
968                            pseudonymer Onlinekennzeichnungen gespeichert werden, auch als "Nutzer-IDs" bezeichnet) </p>
969                    </div>
970
971                    <div data-cms-accordion
972                         class="mt-4 sm:mt-auto -mx-4 md:mx-auto p-4 accordion-wrapper transition-colors"
973                         data-selected-class="bg-white" data-unselected-class="bg-primary-lighter sm:bg-white" data-cms-accordion-class="accordionClass">
974                        <div class="mt-auto sm:mt-3 cursor-pointer sm:cursor-auto flex items-center justify-between"
975                             data-cms-accordion-toggle>
976                            <p> Die folgenden Cookie-Typen und Funktionen werden
977                                unterschieden: </p>
978                            <span class=" block sm:hidden transform transition-all rotate-0" data-cms-accordion-icon>
979                        <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-prefix="fas" data-icon="chevron-down" viewBox="0 0 448 512" class="w-3.5 h-3.5 text-purple mt-px" role="img"><path fill="currentColor" d="M207.029 381.476 12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"/><title>chevron-down</title></svg>
980
981                    </span>
982                        </div>
983                        <div class="mt-auto sm:mt-3 max-h-0 sm:max-h-full overflow-hidden transition-all"
984                             x-ref="container1" data-cms-accordion-content
985                             x-cloak>
986                            <ul class="list -bullet-p mt-4">
987                                <li class="mt-4">
988                                    <p class="text-base">Temporäre Cookies (auch: Session- oder Sitzungs-Cookies): Temporäre
989                                        Cookies werden
990                                        spätestens gelöscht, nachdem ein Nutzer ein Online-Angebot verlassen und seinen
991                                        Browser geschlossen hat.</p>
992                                </li>
993                                <li class="mt-4">
994                                    <p class="text-base">Permanente Cookies: Permanente Cookies bleiben auch nach dem
995                                        Schliessen des Browsers
996                                        gespeichert. So kann beispielsweise der Login-Status gespeichert oder bevorzugte
997                                        Inhalte direkt angezeigt werden, wenn der Nutzer eine Website erneut besucht.
998                                        Ebenso können die Interessen von Nutzern, die zur Reichweitenmessung oder zu
999                                        Marketingzwecken verwendet werden, in einem solchen Cookie gespeichert werden.</p>
1000                                </li>
1001                                <li class="mt-4">
1002                                    <p class="text-base">First-Party-Cookies: First-Party-Cookies werden von uns selbst
1003                                        gesetzt.</p>
1004                                </li>
1005                                <li class="mt-4">
1006                                    <p class="text-base">Third-Party-Cookies (auch: Drittanbieter-Cookies):
1007                                        Drittanbieter-Cookies werden
1008                                        hauptsächlich von Werbetreibenden (sog. Dritten) verwendet, um Benutzerinformationen
1009                                        zu verarbeiten.</p>
1010                                </li>
1011                                <li class="mt-4">
1012                                    <p class="text-base">Notwendige (auch: essenzielle oder unbedingt erforderliche) Cookies:
1013                                        Cookies können
1014                                        zum einen für den Betrieb einer Webseite unbedingt erforderlich sein (z.B. um Logins
1015                                        oder andere Nutzereingaben zu speichern oder aus Gründen der Sicherheit).</p>
1016                                </li>
1017                                <li class="mt-4 mb-4 sm:mb-0">
1018                                    <p class="text-base">Statistik-, Marketing- und Personalisierungs-Cookies: Ferner werden
1019                                        Cookies im
1020                                        Regelfall auch im Rahmen der Reichweitenmessung eingesetzt sowie dann, wenn die
1021                                        Interessen eines Nutzers oder sein Verhalten (z.B. Betrachten bestimmter Inhalte,
1022                                        Nutzen von Funktionen etc.) auf
1023                                        einzelnen Webseiten in einem Nutzerprofil gespeichert werden. Solche Profile dienen
1024                                        dazu, den Nutzern z.B. Inhalte anzuzeigen, die ihren potenziellen Interessen
1025                                        entsprechen.
1026                                        Dieses Verfahren wird auch als "Tracking", d.h., Nachverfolgung der potenziellen
1027                                        Interessen der Nutzer bezeichnet. Soweit wir Cookies oder "Tracking"-Technologien
1028                                        einsetzen,
1029                                        informieren wir Sie gesondert in unserer Datenschutzerklärung oder im Rahmen der
1030                                        Einholung einer Einwilligung.profitieren von professioneller Beratung</p>
1031                                </li>
1032                            </ul>
1033                        </div>
1034                    </div>
1035                    <div class="px-4 pt-4">
1036                        <p>Hinweise zu Rechtsgrundlagen: Auf welcher Rechtsgrundlage wir Ihre personenbezogenen Daten
1037                            mithilfe von
1038                            Cookies verarbeiten, hängt davon ab, ob wir Sie um eine Einwilligung bitten.
1039                            Falls dies zutrifft und Sie in die Nutzung von Cookies einwilligen, ist die Rechtsgrundlage der
1040                            Verarbeitung Ihrer Daten die erklärte Einwilligung. Andernfalls werden die mithilfe von Cookies
1041                            verarbeiteten
1042                            Daten auf Grundlage unserer berechtigten Interessen (z.B. an einem betriebswirtsc
1042haftlichen Betrieb
1043                            unseres Onlineangebotes und dessen Verbesserung) verarbeitet oder, wenn der Einsatz von Cookies
1044                            erforderlich ist, um unsere vertraglichen Verpflichtungen zu erfüllen. </p>
1045
1046                        <p class="mt-3">Speicherdauer: Sofern wir Ihnen keine expliziten Angaben zur Speicherdauer von permanenten
1047                            Cookies
1048                            mitteilen (z. B. im Rahmen eines sog. Cookie-Opt-Ins), gehen Sie bitte davon aus, dass die Speicherdauer
1049                            bis zu zwei Jahre betragen kann. </p>
1050
1051                        <p class="my-3">Allgemeine Hinweise zum Widerruf und Widerspruch (Opt-Out): Abhängig davon, ob die
1052                            Verarbeitung auf
1053                            Grundlage einer Einwilligung oder gesetzlichen Erlaubnis erfolgt, haben Sie jederzeit die Möglichkeit,
1054                            eine erteilte Einwilligung zu widerrufen oder der Verarbeitung Ihrer Daten durch Cookie-Technologien zu
1055                            widersprechen (zusammenfassend als "Opt-Out" bezeichnet). Sie können Ihren Widerspruch zunächst mittels
1056                            der Einstellungen Ihres Browsers erklären, z.B., indem Sie die Nutzung von Cookies deaktivieren (wobei
1057                            hierdurch auch die Funktionsfähigkeit unseres Onlineangebotes eingeschränkt werden kann). Ein
1058                            Widerspruch gegen den Einsatz von Cookies zu Zwecken des Onlinemarketings kann auch mittels einer
1059                            Vielzahl von Diensten, vor allem im Fall des Trackings, über die Webseiten https://optout.aboutads.info
1060                            und https://www.youronlinechoices.com/ erklärt werden. Daneben können Sie weitere Widerspruchshinweise
1061                            im Rahmen der Angaben zu den eingesetzten Dienstleistern und Cookies erhalten.</p>
1062
1063                        <strong>Datenschutzerklärung für SSL-/TLS-Verschlüsselung</strong>
1064                        <p class="my-3">Diese Website nutzt aus Gründen der Sicherheit und zum Schutz der Übertragung vertraulicher
1065                            Inhalte, wie
1066                            zum Beispiel der Anfragen, die Sie an uns als Seitenbetreiber senden, eine SSL-/TLS-Verschlüsselung.
1067                            Eine verschlüsselte Verbindung erkennen Sie daran, dass die Adresszeile des Browsers von "http://" auf
1068                            "https://" wechselt und an dem Schloss-Symbol in Ihrer Browserzeile.
1069
1070                            Wenn die SSL bzw. TLS Verschlüsselung aktiviert ist, können die Daten, die Sie an uns übermitteln, nicht
1071                            von Dritten mitgelesen werden. </p>
1072
1073
1074                        <strong>Zahlungsabwicklung Online</strong>
1075                        <p class="my-3">Wenn Sie auf unserer Website kostenpflichtig Leistungen oder Produkte erwerben, ist je nach Produkt oder Leistung und
1076                            gewünschter Zahlungsart die Angabe weiterer Daten erforderlich, wie z.B. Ihre Kreditkarteninformationen oder das Login bei Ihrem
1077                            Zahlungsdienstleister. Diese Informationen sowie der Umstand, dass Sie bei uns eine Leistung zum betreffenden Betrag und Zeitpunkt
1078                            erworben haben, werden an die jeweiligen Zahlungsdienstleister (z.B. Anbieter von Zahlungslösungen, Kreditkarteherausgeber und
1079                            Kreditkarten-Acquirer) weitergeleitet. Beachten Sie dabei stets auch die Informationen des jeweiligen Unternehmens, insbesondere die
1080                            Datenschutzerklärung und die Allgemeinen Geschäftsbedingungen. Zur Vermeidung von Zahlungsfällen kann ferner eine Übermittlung der
1081                            erforderlichen Daten, insbesondere Ihrer Personalien, an eine Auskunftei zur automatisierten Einschätzung Ihrer Bonität erfolgen. In
1082                            diesem Rahmen kann Ihnen die Auskunftei einen sogenannten Score-Wert zuordnen. Es handelt sich dabei um einen Schätz-wert über das
1083                            künftige Risiko eines Zahlungsausfalls, z.B. anhand einer Prozentangabe. Der Wert wird unter Anwendung von
1084                            mathematisch-statistischen Verfahren und unter Einbezug von Daten der Auskunftei aus anderen Quellen erhoben. Wir behalten uns vor,
1085                            entsprechend der erhaltenen Auskunft, Ihnen die Zahlungsart "Rechnung" nicht anzubieten. </p>
1086
1087
1088                        <strong>
1088Datenschutzerklärung für Kontaktformular</strong>
1089                        <p class="my-3">Wenn Sie uns per Kontaktformular Anfragen zukommen lassen, werden Ihre Angaben aus dem
1090                            Anfrageformular
1091                            inklusive der von Ihnen dort angegebenen Kontaktdaten zwecks Bearbeitung
1092                            der Anfrage und für den Fall von Anschlussfragen bei uns gespeichert. Diese Daten geben wir nicht ohne
1093                            Ihre Einwilligung weiter.</p>
1094
1095                        <strong>Datenschutzerklärung für Newsletterdaten</strong>
1096                        <p class="mt-3">Wenn Sie den auf dieser Website angebotenen Newsletter beziehen möchten, benötigen wir von
1097                            Ihnen eine
1098                            E-Mail-Adresse sowie Informationen, welche uns die Überprüfung gestatten, dass Sie der Inhaber der
1099                            angegebenen E-Mail-Adresse
1100                            sind und mit dem Empfang des Newsletters einverstanden sind. Weitere Daten werden nicht erhoben. Diese
1101                            Daten verwenden wir ausschliesslich für den Versand der angeforderten Informationen und geben sie nicht
1102                            an Dritte weiter.</p>
1103
1104                        <p class="my-3">Die erteilte Einwilligung zur Speicherung der Daten, der E-Mail-Adresse sowie deren Nutzung
1105                            zum Versand
1106                            des Newsletters können Sie jederzeit widerrufen, etwa über den «Newsletter abbestellen» Link im
1107                            Newsletter.</p>
1108
1109                        <strong>Datenschutzerklärung für Widerspruch Werbe-Mails</strong>
1110                        <p class="mt-3">Der Nutzung von im Rahmen der Impressumspflicht veröffentlichten Kontaktdaten zur
1111                            Übersendung von nicht
1112                            ausdrücklich angeforderter Werbung und Informationsmaterialien wird hiermit widersprochen.
1113                            Die Betreiber der Seiten behalten sich ausdrücklich rechtliche Schritte im Falle der unverlangten
1114                            Zusendung von Werbeinformationen, etwa durch Spam-E-Mails, vor.</p>
1115                    </div>
1116                </section>
1117
1118                <section data-cms-accordion
1119                         class="-mx-4 md:-ml-5 pb-0 sm:pb-4 border border-gray-300 bg-gray-50"
1120                         data-selected-class="bg-gray-50" data-unselected-class="bg-primary-lighter sm:bg-gray-50" data-cms-accordion-class="accordionClass">
1121                    <div class="p-0 sm:p-4">
1122                        <div class="accordion-wrapper">
1123                            <div class="p-4 sm:p-0 mt-auto sm:mt-3 cursor-pointer sm:cursor-auto flex items-center justify-between"
1124                                 data-cms-accordion-toggle>
1125                                <h3>Verwendung von Google</h3>
1126                                <span class=" block sm:hidden transform transition-all rotate-0" data-cms-accordion-icon>
1127                        <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-prefix="fas" data-icon="chevron-down" viewBox="0 0 448 512" class="w-3.5 h-3.5 text-purple mt-px" role="img"><path fill="currentColor" d="M207.029 381.476 12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"/><title>chevron-down</title></svg>
1128
1129                    </span>
1130                            </div>
1131                            <div class="accordion-content mt-auto sm:mt-4 max-h-0 sm:max-h-full overflow-hidden transition-all"
1132                                 x-ref="container1" data-cms-accordion-content
1133                                 x-cloak>
1134                                <strong class="px-4 sm:px-0">Google Maps</strong>
1135                                <p class="px-4 sm:px-0 my-3 pt-4 sm:pt-0">
1136                                    Diese Website nutzt das Angebot von Google Maps. Dadurch können wir Ihnen interaktive Karten
1137                                    direkt in der Website anzeigen und ermöglichen Ihnen die komfortable Nutzung der
1138                                    Karten-Funktion.
1139                                    Durch den Besuch auf der Website erhält Google die Information, dass Sie die entsprechende
1140                                    Unterseite unserer Website aufgerufen haben. Dies erfolgt unabhängig davon, ob Google ein
1141                                    Nutzerkonto bereitstellt,
1142                                    über das Sie eingeloggt sind, oder ob kein Nutzerkonto besteht. Wenn Sie bei Google eingeloggt
1143                                    sind, werden Ihre Daten direkt Ihrem Konto zugeordnet. Wenn Sie die Zuordnung mit Ihrem Profil
1144                                    bei Google nicht wünschen,
1145                                    müssen Sie sich vor Aktivierung des Buttons ausloggen. Google speichert Ihre Daten als
1146                                    Nutzungsprofile und nutzt sie für Zwecke der Werbung, Marktforschung und/oder bedarfsgerechten
1147                                    Gestaltung seiner Website.
1148                                    Eine solche Auswertung erfolgt insbesondere (selbst für nicht eingeloggte Nutzer) zur Erbringung
1149                                    von bedarfsgerechter Werbung und um andere Nutzer des sozialen Netzwerks über Ihre Aktivitäten
1150                                    auf unserer Website zu informieren.
1151                                    Ihnen steht ein Widerspruchsrecht zu gegen die Bildung dieser Nutzerprofile, wobei Sie sich zur
1152                                    Ausübung dessen an Google richten müssen. Weitere Informationen zu Zweck und Umfang der
1153                                    Datenerhebung und ihrer Verarbeitung durch
1154                                    Google erhalten Sie neben weiteren Informationen zu Ihren diesbezüglichen Rechten und
1155                                    Einstellungsmöglichkeiten zum Schutze Ihrer Privatsphäre unter:
1156                                    www.google.de/intl/de/policies/privacy.
1157                                </p>
1158                                <strong class="px-4 sm:px-0">Google Ads</strong>
1159                                <p class="px-4 sm:px-0 mt-3">Diese Website nutzt das Google Conversion-Tracking. Sind Sie über eine
1160                                    von Google
1161                                    geschaltete
1162                                    Anzeige auf unsere Website gelangt, wird von Google Ads ein Cookie auf Ihrem Rechner gesetzt.
1163                                    Das Cookie für Conversion-Tracking
1164                                    wird gesetzt, wenn ein Nutzer auf eine von Google geschaltete Anzeige klickt. Diese Cookies
1165                                    verlieren nach 30 Tagen ihre Gültigkeit und dienen nicht der persönlichen Identifizierung.
1166                                    Besucht der Nutzer bestimmte Seiten unserer Website und
1167                                    das Cookie ist noch nicht abgelaufen, können wir und Google erkennen, dass der Nutzer auf die
1168                                    Anzeige geklickt hat und zu dieser Seite weitergeleitet wurde. Jeder Google Ads-Kunde erhält ein
1169                                    anderes Cookie.
1170                                    Cookies können somit nicht über die Websites von Ads-Kunden nachverfolgt werden. Die mithilfe
1171                                    des Conversion-Cookies eingeholten Informationen dienen dazu, Conversion-Statistiken für
1172                                    Ads-Kunden zu erstellen, die sich für
1173                                    Conversion-Tracking entschieden haben. Die Kunden erfahren die Gesamtanzahl der Nutzer, die auf
1174                                    ihre Anzeige geklickt haben und zu einer mit einem Conversion-Tracking-Tag versehenen Seite
1175                                    weitergeleitet wurden.
1176                                    Sie erhalten jedoch keine Informationen, mit denen sich Nutzer persönlich identifizieren lassen.
1177                                </p>
1178                                <p class="px-4 sm:px-0 mt-3">Möchten Sie nicht am Tracking teilnehmen, können Sie das hierfür
1179                                    erforderliche
1180                                    Setzen eines
1181                                    Cookies ablehnen – etwa per Browser-Einstellung, die das automatische Setzen von Cookies
1182                                    generell deaktiviert oder Ihren
1183                                    Browser so einstellen, dass Cookies von der Domain «googleleadservices.com» blockiert werden.
1184                                </p>
1185                                <p class="px-4 sm:px-0 mt-3">Bitte beachten Sie, dass Sie die Opt-out-Cookies nicht löschen dürfen,
1186                                    solange Sie
1187                                    keine
1188                                    Aufzeichnung von Messdaten wünschen. Haben Sie alle Ihre Cookies im Browser gelöscht, müssen Sie
1189                                    das jeweilige Opt-out Cookie erneut setzen.</p>
1190                                <p class="px-4 sm:px-0 my-3">Die Webseite nutzt "erweiterte Conversions" von Google Ads. Dazu werden
1191                                    verschlüsselte
1192                                    Nutzerdaten an Google übertragen und mit angemeldeten Google-Konten abgeglichen, um Conversions
1193                                    zuzuordnen.</p>
1194                                <strong class="px-4 sm:px-0">Google Analytics</strong>
1195                                <p class="px-4 sm:px-0 mt-3">
1195Diese Website benutzt Google Analytics, einen Webanalysedienst der
1196                                    Google Ireland
1197                                    Limited. Wenn
1198                                    der Verantwortliche für die Datenverarbeitung auf dieser Website ausserhalb des Europäischen
1199                                    Wirtschaftsraumes oder der Schweiz sitzt, dann erfolgt die Google Analytics Datenverarbeitung
1200                                    durch Google LLC. Google LLC und Google Ireland Limited werden nachfolgend «Google» genannt.</p>
1201                                <p class="px-4 sm:px-0 mt-3">Über die gewonnenen Statistiken können wir unser Angebot verbessern und
1202                                    für Sie als
1203                                    Nutzer
1204                                    interessanter ausgestalten. Diese Website verwendet Google Analytics zudem für eine
1205                                    geräteübergreifende Analyse von Besucherströmen,
1206                                    die über eine User-ID durchgeführt wird. Sofern Sie über ein Google-Benutzerkonto verfügen,
1207                                    können Sie in den dortigen Einstellungen unter «Meine Daten», «persönliche Daten» die
1208                                    geräteübergreifende Analyse Ihrer Nutzung deaktivieren.</p>
1209                                <p class="px-4 sm:px-0 mt-3">Rechtsgrundlage für die Nutzung von Google Analytics ist Art. 6 Abs. 1
1210                                    S. 1 lit. f
1211                                    DS-GVO. Die im
1212                                    Rahmen von Google Analytics von Ihrem Browser übermittelte IP-Adresse wird nicht mit anderen
1213                                    Daten von Google zusammengeführt. Wir weisen Sie darauf hin, dass auf dieser
1214                                    Website Google Analytics um den Code «_anonymizeIp();» erweitert wurde, um eine anonymisierte
1215                                    Erfassung von IP-Adressen zu gewährleisten.
1216                                    Dadurch werden IP-Adressen gekürzt weiterverarbeitet, eine Personenbeziehbarkeit kann damit
1217                                    ausgeschlossen werden. Soweit den über Sie erhobenen Daten ein Personenbezug zukommt, wird
1218                                    dieser also sofort ausgeschlossen und
1219                                    die personenbezogenen Daten damit umgehend gelöscht.</p>
1220                                <p class="px-4 sm:px-0 mt-3">Nur in Ausnahmefällen wird die volle IP-Adresse an einen Server von
1221                                    Google in den
1222                                    USA übertragen
1223                                    und dort gekürzt. Im Auftrag des Betreibers dieser Website wird Google diese Informationen
1224                                    benutzen, um Ihre Nutzung der Website auszuwerten,
1225                                    um Reports über die Websitenaktivitäten zusammenzustellen und um weitere mit der Websitennutzung
1226                                    und der Internetnutzung verbundene Dienstleistungen gegenüber dem Websitenbetreiber zu
1227                                    erbringen.</p>
1228                                <p class="px-4 sm:px-0 mt-3">Google Analytics verwendet Cookies. Die durch das Cookie erzeugten
1229                                    Informationen
1230                                    über Ihre
1231                                    Benutzung dieser Website werden in der Regel an einen Server von Google in den USA übertragen
1232                                    und dort gespeichert. Sie können die Speicherung der Cookies durch eine entsprechende
1233                                    Einstellung Ihrer Browser-Software verhindern; wir weisen Sie jedoch darauf hin, dass Sie in
1234                                    diesem Fall gegebenenfalls nicht sämtliche Funktionen dieser Website vollumfänglich werden
1235                                    nutzen können.
1236                                    Sie können darüber hinaus die Erfassung der durch das Cookie erzeugten und auf Ihre Nutzung der
1237                                    Website bezogenen Daten (inkl. Ihrer IP-Adresse) an Google sowie die Verarbeitung dieser Daten
1238                                    durch
1239                                    Google verhindern, indem Sie das unter dem folgenden Link verfügbare Browser-Plugin
1240                                    herunterladen und installieren: Google Analytics deaktivieren.</p>
1241                                <p class="px-4 sm:px-0 my-3">Ausserdem können Sie die Nutzung von Google Analytics auch verhindern,
1242                                    indem Sie auf
1243                                    diesen Link
1244                                    klicken: Google Analytics deaktivieren. Hierdurch wird ein sog. opt-out Cookie auf Ihrem
1245                                    Datenträger gespeichert, der die Verarbeitung personenbezogener Daten
1246                                    durch Google Analytics verhindert. Bitte beachten Sie, dass bei einem Löschen sämtlicher Cookies
1247                                    auf Ihrem Endgerät auch diese Opt-out-Cookies gelöscht werden, d.h., dass Sie erneut die
1248                                    Opt-out-Cookies setzen müssen, wenn Sie weiterhin diese
1249                                    Form der Datenerhebung verhindern wollen. Die Opt-out-Cookies sind pro Browser und
1250                                    Rechner/Endgerät gesetzt und müssen daher für jeden Browser, Rechner oder anderes Endgerät
1251                                    gesondert aktiviert werden.</p>
1252                                <strong class="px-4 sm:px-0">Google Web Fonts</strong>
1253                                <p class="px-4 sm:px-0 my-3">Diese Seite nutzt zur einheitlichen Darstellung von Schriftarten
1254                                    sogenannte Web
1255                                    Fonts, die von
1256                                    der Google Ireland Limited, Gordon House, 4 Barrow St, Dublin, D04 E5W5, Irland („Google“)
1257                                    bereitgestellt werden.
1258                                    Beim Aufruf einer Seite lädt Ihr Browser die benötigten Web Fonts in Ihren Browser-Cache, um
1259                                    Texte und Schriftarten korrekt anzuzeigen. Zu diesem Zweck muss der von Ihnen verwendete Browser
1260                                    Verbindung zu den Servern
1261                                    von Google aufnehmen. Hierbei kann es auch zu einer Übermittlung von personenbezogenen Daten an
1262                                    die Server der Google LLC. in den USA kommen. Auf diese Weise erlangt Google Kenntnis darüber,
1263                                    dass über
1264                                    Ihre IP-Adresse unsere Website aufgerufen wurde. Die Nutzung von Google Web Fonts erfolgt im
1265                                    Interesse einer einheitlichen und ansprechenden Darstellung unserer Online-Angebote.
1266                                    Wenn Ihr Browser Web Fonts nicht unterstützt, wird eine Standardschrift von Ihrem Computer
1267                                    genutzt. Weitere Informationen zu Google Web Fonts finden Sie unter
1268                                    https://developers.google.com/fonts/faq und in der Datenschutzerklärung von
1269                                    Google: https://www.google.com/policies/privacy/.</p>
1270                                <strong class="px-4 sm:px-0">Google Kundenrezensionen</strong>
1271                                <p class="px-4 sm:px-0 my-3 mb-4 sm:mb-0">Wir arbeiten mit Google im Rahmen des Programms „Google
1272                                    Kundenrezensionen“ zusammen.
1273                                    Der Anbieter
1274                                    ist Google Ireland Limited, Gordon House, 4 Barrow St, Dublin, D04 E5W5, Irland (“Google”).
1275                                    Dieses Programm gibt uns die Möglichkeit, Kundenrezensionen
1276                                    von Nutzern unserer Website einzuholen. Hierbei werden Sie nach einem Einkauf auf unserer
1277                                    Website gefragt, ob Sie an einer E-Mail-Umfrage von Google teilnehmen möchten. Wenn Sie Ihre
1278                                    Einwilligung erteilen, übermitteln wir Ihre E-Mail-Adresse an Google.
1279                                    Sie erhalten eine E-Mail von Google Kundenrezensionen, in der Sie gebeten werden, die
1280                                    Kauferfahrung auf unserer Website zu bewerten. Die von Ihnen abgegebene Bewertung wird
1281                                    anschliessend mit unseren anderen
1282                                    Bewertungen zusammengefasst und in unserem Logo Google Kundenrezensionen sowie in unserem
1283                                    Merchant Center-Dashboard angezeigt. Ausserdem wird Ihre Bewertung für Google
1284                                    Verkäuferbewertungen genutzt. Im Rahmen der Nutzung von
1285                                    Google Kundenrezensionen kann es auch zu einer Übermittlung von personenbezogenen Daten an die
1286                                    Server der Google LLC. in den USA kommen.</p>
1287                                <strong class="px-4 sm:px-0 mt-3 block">Google Tag Manager</strong>
1288                                <p class="px-4 sm:px-0 my-3 mb-4 sm:mb-0">Diese Webseite verwendet den Google Tag Manager. Durch
1289                                    diesen Dienst können Website-Tags über eine Oberfläche verwaltet werden. Der Google Tool Manager
1290                                    implementiert lediglich Tags.
1291                                    Das bedeutet: Es werden keine Cookies eingesetzt und es werden keine personenbezogenen Daten
1292                                    erfasst. Der Google Tool Manager löst andere Tags aus, die wiederum ggf. Daten erfassen.
1293                                    Jedoch greift der Google Tag Manager nicht auf diese Daten zu.
1294                                    Nutzungsrichtlinien: https://www.google.com/intl/de/tagmanager/use-policy.html</p>
1295                            </div>
1296                        </div>
1297                    </div>
1298                </section>
1299
1300                <section data-cms-accordion
1301                         class="-mx-4 md:-ml-5 pb-0 sm:pb-4 border border-t-0 border-gray-300"
1302                         data-selected-class="bg-white" data-unselected-class="bg-primary-lighter sm:bg-white" data-cms-accordion-class="accordionClass">
1303                    <div class="p-0 sm:p-4">
1304                        <div class="p-4 sm:p-0 mt-auto sm:mt-3 cursor-pointer sm:cursor-auto flex items-center justify-between"
1305                             data-cms-accordion-toggle>
1306                            <h3>Facebook</h3>
1307                            <span class=" block sm:hidden transform transition-all rotate-0" data-cms-accordion-icon>
1308                    <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-prefix="fas" data-icon="chevron-down" viewBox="0 0 448 512" class="w-3.5 h-3.5 text-purple mt-px" role="img"><path fill="currentColor" d="M207.029 381.476 12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"/><title>chevron-down</title></svg>
1309
1310                </span>
1311                        </div>
1312                        <div class="accordion-content mt-0 sm:mt-4 max-h-0 sm:max-h-full overflow-hidden transition-all"
1313                             x-ref="container1" data-cms-accordion-content
1314                             x-cloak>
1315                            <p class="mt-3 px-4 sm:px-0 mb-4 sm:mb-0"> Diese Website verwendet Funktionen von Facebook Inc., 1601
1316                                S.
1317                                California Ave, Palo
1318                                Alto, CA
1319                                94304, USA . Bei Aufruf unserer Seiten mit Facebook-Plug-Ins wird eine Verbindung zwischen Ihrem
1320                                Browser und den Servern von Facebook aufgebaut.
1321                                Dabei werden bereits Daten an Facebook übertragen. Besitzen Sie einen Facebook-Account, können
1322                                diese Daten damit verknüpft werden. Wenn Sie keine Zuordnung dieser Daten zu Ihrem
1323                                Facebook-Account wünschen, loggen Sie sich bitte vor dem
1324                                Besuch unserer Seite bei Facebook aus. Interaktionen, insbesondere das Nutzen einer
1325                                Kommentarfunktion oder das Anklicken eines „Like“- oder „Teilen“-Buttons werden ebenfalls an
1326                                Facebook weitergegeben.
1327                                Mehr erfahren Sie unter: <a class="link__pink"
1328                                                            href="https://www.facebook.com/about/privacy/"
1329                                                            target="_blank">https://www.facebook.com/about/privacy/</a>.
1330                            </p>
1331                        </div>
1332                    </div>
1333                </section>
1334
1335                <section data-cms-accordion
1336                         class="-mx-4 md:-ml-5 pb-0 sm:pb-4 border border-t-0 border-gray-300 bg-gray-50"
1337                         data-selected-class="bg-gray-50" data-unselected-class="bg-primary-lighter sm:bg-gray-50" data-cms-accordion-class="accordionClass">
1338                    <div class="p-0 sm:p-4">
1339                        <div class="accordion-wrapper">
1340                            <div class="p-4 sm:p-0 mt-auto sm:mt-3 cursor-pointer sm:cursor-auto flex items-center justify-between"
1341                                 data-cms-accordion-toggle>
1342                                <h3>Instagram</h3>
1343                                <span class=" block sm:hidden transform transition-all rotate-0" data-cms-accordion-icon>
1344                        <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-prefix="fas" data-icon="chevron-down" viewBox="0 0 448 512" class="w-3.5 h-3.5 text-purple mt-px" role="img"><path fill="currentColor" d="M207.029 381.476 12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"/><title>chevron-down</title></svg>
1345
1346                    </span>
1347                            </div>
1348                            <div class="accordion-content mt-0 sm:mt-4 max-h-0 sm:max-h-full overflow-hidden transition-all"
1349                                 x-ref="container1" data-cms-accordion-content
1350                                 x-cloak>
1351                                <p class="px-4 sm:px-0 mb-4 sm:mb-0"> Auf unserer Website sind Funktionen des Dienstes Instagram
1352                                    eingebunden. Diese
1353                                    Funktionen werden
1354                                    angeboten durch die Instagram Inc., 1601 Willow Road, Menlo Park, CA, 94025, USA. Wenn Sie in
1355                                    Ihrem Instagram-Account eingeloggt sind,
1356                                    können Sie durch Anklicken des Instagram-Buttons die Inhalte unserer Seiten mit Ihrem
1357                                    Instagram-Profil verlinken. Dadurch kann Instagram den Besuch unserer Seiten Ihrem Benutzerkonto
1358                                    zuordnen.
1359                                    Wir weisen darauf hin, dass wir als Anbieter der Seiten keine Kenntnis vom Inhalt der
1360                                    übermittelten Daten sowie deren Nutzung durch Instagram erhalten. Weitere Informationen hierzu
1361                                    finden Sie in der Datenschutzerklärung von Instagram: <a class="link__pink"
1362                                                                                             href="https://instagram.com/about/legal/privacy/"
1363                                                                                             target="_blank">http://instagram.com/about/legal/privacy/</a>.
1364                                </p>
1365                            </div>
1366                        </div>
1367                    </div>
1368                </section>
1369
1370                <section data-cms-accordion
1371                         class="-mx-4 md:-ml-5 pb-0 sm:pb-4 border border-t-0 border-gray-300"
1372                         data-selected-class="bg-white" data-unselected-class="bg-primary-lighter sm:bg-white" data-cms-accordion-class="accordionClass">
1373                    <div class="p-0 sm:p-4">
1374                        <div class="accordion-wrapper">
1375                            <div class="p-4 sm:p-0 mt-auto sm:mt-3 cursor-pointer sm:cursor-auto flex items-center justify-between"
1376                                 data-cms-accordion-toggle>
1377                                <h3>YouTube</h3>
1378                                <span class=" block sm:hidden transform transition-all rotate-0" data-cms-accordion-icon>
1379                        <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-prefix="fas" data-icon="chevron-down" viewBox="0 0 448 512" class="w-3.5 h-3.5 text-purple mt-px" role="img"><path fill="currentColor" d="M207.029 381.476 12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"/><title>chevron-down</title></svg>
1380
1381                    </span>
1382                            </div>
1383                            <div class="accordion-content mt-auto sm:mt-4 max-h-0 sm:max-h-full overflow-hidden transition-all"
1384                                 x-ref="container1" data-cms-accordion-content
1385                                 x-cloak>
1386                                <p class="px-4 sm:px-0 mb-4 sm:mb-0"> Auf dieser Website sind Funktionen des Dienstes «YouTube»
1387                                    eingebunden.
1388                                    «YouTube» gehört der
1389                                    Google Ireland Limited, einer nach irischem Recht eingetragenen und betriebenen Gesellschaft mit
1390                                    Sitz
1391                                    in Gordon House, Barrow Street, Dublin 4, Irland, welche die Dienste im Europäischen
1392                                    Wirtschaftsraum und der Schweiz betreibt. Ihre rechtliche Vereinbarung mit «YouTube» besteht aus
1393                                    den unter folgendem Link zu entnehmenden Bestimmungen und Bedingungen: <a class="link__pink"
1394                                                                                                              href="https://www.youtube.com/static?gl=de&template=terms&hl=de"
1395                                                                                                              target="_blank">http://www.youtube.com/static?gl=de&template=terms&hl=de/</a>.
1396                                    Diese
1397                                    Bestimmungen bilden eine rechtlich bindende Vereinbarung zwischen Ihnen und «YouTube»
1398                                    bezüglich der Nutzung der Dienste. In der Datenschutzerklärung von Google wird erläutert, wie
1399                                    «YouTube» mit Ihren personenbezogenen Daten verfährt und Ihre Daten schützt, wenn Sie den Dienst
1400                                    nutzen.
1401                                </p>
1402                            </div>
1403                        </div>
1404                    </div>
1405                </section>
1406
1407                <section data-cms-accordion
1408                         class="-mx-4 md:-ml-5 pb-0 sm:pb-4 border border-t-0 border-gray-300"
1409                         data-selected-class="bg-white" data-unselected-class="bg-primary-lighter sm:bg-white" data-cms-accordion-class="accordionClass">
1410                    <div class="p-0 sm:p-4">
1411                        <div class="accordion-wrapper">
1412                            <div class="p-4 sm:p-0 mt-auto sm:mt-3 cursor-pointer sm:cursor-auto flex items-center justify-between"
1413                                 data-cms-accordion-toggle>
1414                                <h3>Pinterest</h3>
1415                                <span class=" block sm:hidden transform transition-all rotate-0" data-cms-accordion-icon>
1416                        <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-prefix="fas" data-icon="chevron-down" viewBox="0 0 448 512" class="w-3.5 h-3.5 text-purple mt-px" role="img"><path fill="currentColor" d="M207.029 381.476 12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"/><title>chevron-down</title></svg>
1417
1418                    </span>
1419                            </div>
1420                            <div class="accordion-content mt-auto sm:mt-4 max-h-0 sm:max-h-full overflow-hidden transition-all"
1421                                 x-ref="container1" data-cms-accordion-content
1422                                 x-cloak>
1423                                <p class="px-4 sm:px-0 mb-4 sm:mb-0"> Auf dieser Website sind Funktionen des Dienstes «Pinterest»
1424                                    eingebunden. «Pinterest gehört der Pinterest Inc, einer nach US-amerikanischen eingetragenen und
1425                                    betriebenen
1426                                    Gesellschaft mit Sitz in 808 Brannan Street, San Francisco, CA 94103-490, USA, welche die
1427                                    Dienste im Europäischen Wirtschaftsraum und Schweiz betreibt. Wenn Sie die Website aufrufen und
1428                                    gleichzeitig in Ihrem Pinterest-Account eingeloggt sind, kann
1429                                    Pinterest den Besuch unserer Website Ihrem Pinterest-Account unmittelbar zuordnen. Wenn Sie
1430                                    nicht möchten, dass Pinterest Ihre Daten Ihrem Konto zuordnet, müssen Sie sich vor Ihrem Besuch
1431                                    unserer Website
1432                                    bei Pinterest ausloggen. Wir weisen darauf hin, dass wir als Anbieter der Seiten keine Kenntnis
1433                                    vom Inhalt der übermittelten Daten sowie deren Nutzung durch Pinterest erhalten.
1434
1435                                    Weitere Informationen hierzu finden Sie in der Datenschutzerklärung von Pinterest: <a
1436                                            class="link__pink"
1437                                            href="https://policy.pinterest.com/de/privacy-policy"
1438                                            target="_blank">https://policy.pinterest.com/de/privacy-policy</a>
1439
1440
1441                                </p>
1442                            </div>
1443                        </div>
1444                    </div>
1445                </section>
1446
1447                <section data-cms-accordion
1448                         class="-mx-4 md:-ml-5 pb-0 sm:pb-4 border border-t-0 border-gray-300 bg-gray-50"
1449                         data-selected-class="bg-gray-50" data-unselected-class="bg-primary-lighter sm:bg-gray-50" data-cms-accordion-class="accordionClass">
1450                    <div class="p-0 sm:p-4">
1451                        <div class="accordion-wrapper">
1452                            <div class="p-4 sm:p-0 mt-auto sm:mt-3 cursor-pointer sm:cursor-auto flex items-center justify-between"
1453                                 data-cms-accordion-toggle>
1454                                <h3>Adresult</h3>
1455                                <span class=" block sm:hidden transform transition-all rotate-0" data-cms-accordion-icon>
1456                        <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-prefix="fas" data-icon="chevron-down" viewBox="0 0 448 512" class="w-3.5 h-3.5 text-purple mt-px" role="img"><path fill="currentColor" d="M207.029 381.476 12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"/><title>chevron-down</title></svg>
1457
1458                    </span>
1459                            </div>
1460                            <div class="accordion-content mt-auto sm:mt-4 max-h-0 sm:max-h-full overflow-hidden transition-all"
1461                                 x-ref="container1" data-cms-accordion-content
1462                                 x-cloak>
1463                                <p class="px-4 sm:px-0 mb-4 sm:mb-0"> Der für die Verarbeitung Verantwortliche hat auf dieser
1464                                    Internetseite
1465                                    Komponenten des
1466                                    Unternehmens adresult integriert. Adresult ist eine Agentur, welche diverse Affiliate-Programme
1467                                    betreut und Affiliate-Marketing anbietet. Affiliate-Marketing ist eine internetgestützte
1468                                    Vertriebsform, die es
1469                                    kommerziellen Betreibern von Internetseiten, den sogenannten Merchants oder Advertisern,
1470                                    ermöglicht, Werbung, die meist über Klick- oder Sale-Provisionen vergütet wird, auf
1471                                    Internetseiten Dritter, also bei Vertriebspartnern, die auch Affiliates oder Publisher genannt
1472                                    werden, einzublenden.
1473                                    Der Merchant stellt über das Affiliate-Netzwerk ein Werbemittel, also einen Werbebanner oder
1474                                    andere geeignete Mittel der Internetwerbung, zur Verfügung, welche in der Folge von einem
1475                                    Affiliate auf eigenen Internetseiten eingebunden oder über sonstige Kanäle, wie etwa das
1476                                    Keyword-
1477                                    Advertising oder E-Mail-Marketing, beworben werden. Betreibergesellschaft von adresult ist die
1478                                    adresult AG, Hönggerstrasse 65, 8037 Züric
1478h, Schweiz. Adresult setzt ein Cookie auf dem
1479                                    informationstechnologischen System der betroffenen Person. Was Cookies sind, wurde oben bereits
1480                                    erläutert. Das Tracking-Cookie von adresult speichert keinerlei personenbezogene Daten.
1481                                    Gespeichert werden lediglich die Identifikationsnummer des Affiliate, also des den potentiellen
1482                                    Kunden vermittelnden Partners, sowie die Ordnungsnummer des Besuchers einer Internetseite und
1483                                    des angeklickten Werbemittels. Zweck der Speicherung dieser Daten ist die Abwicklung von
1484                                    Provisionszahlungen zwischen einem Merchant und dem Affiliate, welche über das
1485                                    Affiliate-Netzwerk, also adresult, abgewickelt werden.
1486                                    Die betroffene Person kann die Setzung von Cookies durch unsere Internetseite, wie oben bereits
1487                                    dargestellt, jederzeit mittels einer entsprechenden Einstellung des genutzten Internetbrowsers
1488                                    verhindern und damit der Setzung von Cookies dauerhaft widersprechen.
1489                                    Eine solche Einstellung des genutzten Internetbrowsers würde auch verhindern, dass adresult ein
1490                                    Cookie auf dem informationstechnologischen System der betroffenen Person setzt. Zudem können von
1491                                    adresult bereits gesetzte Cookies jederzeit über einen Internetbrowser oder andere
1492                                    Softwareprogramme gelöscht werden. Die geltenden Datenschutzbestimmungen von adresult können
1493                                    unter <a class="link__pink"
1494                                             href="https://www.adresult.ch/impressum/"
1495                                             target="_blank">https://www.adresult.ch/impressum/</a> abgerufen werden. </p>
1496                            </div>
1497                        </div>
1498                    </div>
1499                </section>
1500
1501                <section data-cms-accordion
1502                         class="-mx-4 md:-ml-5 pb-0 sm:pb-4 border border-t-0 border-gray-300"
1503                         data-selected-class="bg-white" data-unselected-class="bg-primary-lighter sm:bg-white" data-cms-accordion-class="accordionClass">
1504                    <div class="p-0 sm:p-4">
1505                        <div class="accordion-wrapper">
1506                            <div class="p-4 sm:p-0 mt-auto sm:mt-3 cursor-pointer sm:cursor-auto flex items-center justify-between"
1507                                 data-cms-accordion-toggle>
1508                                <h3>Personalisierte Banner</h3>
1509                                <span class=" block sm:hidden transform transition-all rotate-0" data-cms-accordion-icon>
1510                        <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-prefix="fas" data-icon="chevron-down" viewBox="0 0 448 512" class="w-3.5 h-3.5 text-purple mt-px" role="img"><path fill="currentColor" d="M207.029 381.476 12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"/><title>chevron-down</title></svg>
1511
1512                    </span>
1513                            </div>
1514                            <div class="accordion-content mt-auto sm:mt-4 max-h-0 sm:max-h-full overflow-hidden transition-all"
1515                                 x-ref="container1" data-cms-accordion-content
1516                                 x-cloak>
1517                                <p class="px-4 sm:px-0">Unsere Webseite verwendet Cookies/Werbungs-IDs zu Werbezwecken. Dadurch
1518                                    können wir unsere Werbung
1519                                    Besuchern, die sich für unsere Produkte interessieren, auf Partner-Webseiten, Apps und E-Mails
1520                                    zeigen.
1521                                    Retargeting-Technologien verwenden Cookies oder Werbe-IDs und zeigen Werbung ausgehend von Ihrem
1522                                    bisherigen Browsing-Verhalten an. Um diese interessenbasierte Werbung abzulehnen, besuchen Sie
1523                                    bitte die folgenden Webseiten:
1524                                </p>
1525                                <p class="px-4 sm:px-0 mt-3">
1526                                    <a class="link__pink"
1527                                       href="https://optout.networka
1527dvertising.org/?c=1/"
1528                                       target="_blank">https://optout.networkadvertising.org/?c=1/</a>.
1529                                </p>
1530                                <p class="px-4 sm:px-0 mt-3">
1531                                    <a class="link__pink"
1532                                       href="https://www.youronlinechoices.com/"
1533                                       target="_blank">https://www.youronlinechoices.com/</a>.
1534                                </p>
1535                                <p class="px-4 sm:px-0 mt-3 mb-4 sm:mb-0">
1536                                    Wir können Informationen wie technische Kennungen aus Ihrer Anmeldungsinformation auf unserer
1537                                    Webseite oder unserem CRM-System mit zuverlässigen Werbepartnern austauschen.
1538                                    Dadurch können Ihre Geräte und/oder Umgebungen verknüpft und Ihnen eine nahtlose
1539                                    Nutzungserfahrung
1540                                    mit den von Ihnen verwendeten Geräten und Umgebungen angeboten werden.
1541                                    Nähere Einzelheiten zu diesen Verknüpfungsfähigkeiten entnehmen Sie bitte der
1542                                    Datenschutzrichtlinie,
1543                                    die Sie in den vorgenannten Plattformen finden oder den nachstehenden Erläuterungen. </p>
1544                                </p>
1545                            </div>
1546                        </div>
1547                    </div>
1548                </section>
1549
1550                <section data-cms-accordion
1551                         class="-mx-4 md:-ml-5 pb-0 sm:pb-4 border border-t-0 border-gray-300"
1552                         data-selected-class="bg-gray-50" data-unselected-class="bg-primary-lighter sm:bg-gray-50" data-cms-accordion-class="accordionClass">
1553                    <div class="p-0 sm:p-4">
1554                        <div class="accordion-wrapper">
1555                            <div class="p-4 sm:p-0 mt-auto sm:mt-3 cursor-pointer sm:cursor-auto flex items-center justify-between"
1556                                 data-cms-accordion-toggle>
1557                                <h3>Criteo</h3>
1558                                <span class=" block sm:hidden transform transition-all rotate-0" data-cms-accordion-icon>
1559                        <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-prefix="fas" data-icon="chevron-down" viewBox="0 0 448 512" class="w-3.5 h-3.5 text-purple mt-px" role="img"><path fill="currentColor" d="M207.029 381.476 12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"/><title>chevron-down</title></svg>
1560
1561                    </span>
1562                            </div>
1563                            <div class="accordion-content mt-auto sm:mt-4 max-h-0 sm:max-h-full overflow-hidden transition-all"
1564                                 x-ref="container1" data-cms-accordion-content
1565                                 x-cloak>
1566                                <p class="px-4 sm:px-0 mb-4 sm:mb-0">Auf dieser Webseite werden durch Technologien von Criteo
1567                                    Interaktionsdaten
1568                                    des
1569                                    Webseiten-Besuchers in anonymisierter Form zu Marketingzwecken gesammelt und gespeichert. Die
1570                                    Daten werden nicht dazu benutzt, den
1571                                    Besucher dieser Webseite persönlich zu identifizieren. Wenn Sie keine personalisierten Banner im
1572                                    Criteo-Werbenetzwerk mehr sehen möchten, können Sie sich durch Klick auf den nachfolgenden Link
1573                                    austragen: <a class="link__pink"
1574                                                  href=" https://www.criteo.com/de/privacy/"
1575                                                  target="_blank">
1576                                        https://www.criteo.com/de/privacy/</a>.
1577                                </p>
1578                            </div>
1579                        </div>
1580                    </div>
1581                </section>
1582
1583                <section data-cms-accordion
1584                         class="-mx-4 md:-ml-5 pb-0 sm:pb-4 border border-t-0 border-gray-300"
1585                         data-selected-class="bg-white" data-unselected-class="bg-primary-lighter sm:bg-white" data-cms-accordion-class="accordionClass">
1586                    <div class="p-0 sm:p-4">
1587                        <div class="accordion-wrapper">
1588                            <div class="p-4 sm:p-0 mt-auto sm:mt-3 cursor-pointer sm:cursor-auto flex items-center justify-between"
1589                                 data-cms-accordion-toggle>
1590                                <h3>Getback</h3>
1591                                <span class=" block sm:hidden transform transition-all rotate-0" data-cms-accordion-icon>
1592                        <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-prefix="fas" data-icon="chevron-down" viewBox="0 0 448 512" class="w-3.5 h-3.5 text-purple mt-px" role="img"><path fill="currentColor" d="M207.029 381.476 12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"/><title>chevron-down</title></svg>
1593
1594                    </span>
1595                            </div>
1596                            <div class="accordion-content mt-auto sm:mt-4 max-h-0 sm:max-h-full overflow-hidden transition-all"
1597                                 x-ref="container1" data-cms-accordion-content
1598                                 x-cloak>
1599                                <p class="px-4 sm:px-0 mb-4 sm:mb-0">Wir verwenden in unserem Shop das Angebot „Getback“ der adfocus
1600                                    GmbH,
1601                                    Theilerstrasse 7, 6300 Zug,
1602                                    Schweiz (im Folgenden „Getback“), um unsere Besucher und Kunden mit Hilfe von Benachrichtigungen
1603                                    im jeweiligen
1604                                    Browser auf unsere Produkte und Angebote aufmerksam zu machen. Mithilfe der durch die Cookies
1605                                    erzeugten Informationen über Ihre Benutzung unseres Shops (einschliesslich Ihrer IP-Adresse)
1606                                    können wir bzw.
1607                                    Getback Ihnen bei Ihrem nächsten Besuch unseres Shops Benachrichtigungen anzeigen lassen, um Sie
1608                                    über aktuelle Angebote und Rabatte zu informieren sowie personalisierte Produktempfehlungen
1609                                    anzuzeigen.
1610                                    Für weitere Informationen zum Datenschutz und zu den eingesetzten Cookies von Getback verweisen
1611                                    wir auf die Webseite <a class="link__pink"
1612                                                            href=" https://www.getback.app/about/privacy/"
1613                                                            target="_blank"> https://www.getback.app/about/privacy/</a>.
1614                                </p>
1615                            </div>
1616                        </div>
1617                    </div>
1618                </section>
1619
1620                <section data-cms-accordion
1621                         class="-mx-4 md:-ml-5 pb-0 sm:pb-4 border border-t-0 border-gray-300"
1622                         data-selected-class="bg-gray-50" data-unselected-class="bg-primary-lighter sm:bg-gray-50" data-cms-accordion-class="accordionClass">
1623                    <div class="p-0 sm:p-4">
1624                        <div class="accordion-wrapper">
1625                            <div class="p-4 sm:p-0 mt-auto sm:mt-3 cursor-pointer sm:cursor-auto flex items-center justify-between"
1626                                 data-cms-accordion-toggle>
1627                                <h3>Gutscheinangebote der Sovendus GmbH</h3>
1628                                <span class=" block sm:hidden transform transition-all rotate-0" data-cms-accordion-icon>
1629                        <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-prefix="fas" data-icon="chevron-down" viewBox="0 0 448 512" class="w-3.5 h-3.5 text-purple mt-px" role="img"><path fill="currentColor" d="M207.029 381.476 12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"/><title>chevron-down</title></svg>
1630
1631                    </span>
1632                            </div>
1633                            <div class="accordion-content mt-auto sm:mt-4 max-h-0 sm:max-h-full overflow-hidden transition-all"
1634                                 x-ref="container1" data-cms-accordion-content
1635                                 x-cloak>
1636                                <p class="px-4 sm:px-0">Für die Auswahl eines für Sie aktuell interessanten Gutscheinangebots werden
1637                                    von uns
1638                                    pseudonymisiert und verschlüsselt der Hashwert Ihrer E-Mail-Adresse und Ihre IP-Adresse an die
1639                                    Sovendus GmbH, Moltkestr. 11, 76133 Karlsruhe (Sovendus) übermittelt (Art. 6 Abs.1 f DSGVO).
1640                                    Der pseudonymisierte Hashwert der E-Mail-Adresse wird zur Berücksichtigung eines möglicherweise
1641                                    vorliegenden Widerspruchs gegen Werbung von Sovendus verwendet (Art. 21 Abs.3, Art. 6 Abs.1 c
1642                                    DSGVO). Die IP-Adresse wird von Sovendus ausschliesslich zu Zwecken
1643                                    der Datensicherheit verwendet und im Regelfall nach sieben Tagen anonymisiert (Art. 6 Abs.1 f
1644                                    DSGVO). Ausserdem übermitteln wir zu Abrechnungszwecken pseudonymisiert Bestellnummer,
1645                                    Bestellwert mit Währung,
1646                                    Session-ID, Vorteilscode und Zeitstempel an Sovendus (Art. 6 Abs.1 f DSGVO). Wenn Sie sich für
1647                                    ein Gutscheinangebot von Sovendus interessieren, zu Ihrer E-Mail-Adresse kein Werbewiderspruch
1648                                    vorliegt und auf das nur in diesem Fall
1649                                    angezeigte Gutschein-Banner klicken, werden von uns verschlüsselt Anrede, Name und Ihre
1650                                    E-Mail-Adresse an Sovendus zur Vorbereitung des Gutscheins übermittelt (Art. 6 Abs.1 b, f
1651                                    DSGVO).
1652                                </p>
1653                                <p class="px-4 sm:px-0 mt-3">Weitere Informationen zur Verarbeitung Ihrer Daten durch Sovendus
1654                                    entnehmen Sie
1655                                    bitte den
1656                                    Online-Datenschutzhinweisen unter </p>
1657                                <p class="px-4 sm:px-0 mt-2 mb-4 sm:mb-0"><a class="link__pink"
1658                                                                             href="https://www.sovendus.com/ch/datenschutz/"
1659                                                                             target="_blank">https://www.sovendus.com/ch/datenschutz/</a>.
1660                                </p>
1661                            </div>
1662                        </div>
1663                    </div>
1664                </section>
1665
1666                <section data-cms-accordion
1667                         class="-mx-4 md:-ml-5 pb-0 sm:pb-4 border border-t-0 border-gray-300"
1668                         data-selected-class="bg-white" data-unselected-class="bg-primary-lighter sm:bg-white" data-cms-accordion-class="accordionClass">
1669                    <div class="p-0 sm:p-4">
1670                        <div class="accordion-wrapper">
1671                            <div class="p-4 sm:p-0 mt-auto sm:mt-3 cursor-pointer sm:cursor-auto flex items-center justify-between"
1672                                 data-cms-accordion-toggle>
1673                                <h3>Microsoft Advertising</h3>
1674                                <span class=" block sm:hidden transform transition-all rotate-0" data-cms-accordion-icon>
1675                        <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-prefix="fas" data-icon="chevron-down" viewBox="0 0 448 512" class="w-3.5 h-3.5 text-purple mt-px" role="img"><path fill="currentColor" d="M207.029 381.476 12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"/><title>chevron-down</title></svg>
1676
1677                    </span>
1678                            </div>
1679                            <div class="accordion-content mt-auto sm:mt-4 max-h-0 sm:max-h-full overflow-hidden transition-all"
1680                                 x-ref="container1" data-cms-accordion-content
1681                                 x-cloak>
1682                                <p class="px-4 sm:px-0">Wir nutzen das Online-Werbeprogramm „Micorosoft Advertising“ des Anbieters
1683                                    Microsoft Corporation,
1684                                    One Microsoft Way, Redmond, WA 98052-6399, USA (im Folgenden „Microsoft“), um mit Hilfe von
1685                                    Werbemitteln
1686                                    (sogenannten „Ads“) auf unsere Angebote im Shop auf Webseiten von Dritten aufmerksam zu machen.
1687                                    Über unseren Cookie-Banner binden wir Funktionen von Bing Ads auf unserer Website ein und
1688                                    ermöglichen Microsoft die Auswertung Ihres Surfverhaltens. Wenn Sie auf eine von Microsoft
1689                                    geschaltete Anzeige klicken, wird ein Cookie für das Conversion-Tracking auf Ihrem jeweilig
1690                                    genutzten Endgerät abgelegt.
1691                                </p>
1692                                <p class="px-4 sm:px-0 mt-2">Wenn Sie bestimmte Internetseiten unserer Webseite besuchen und das
1693                                    Cookie noch
1694                                    nicht abgelaufen
1695                                    ist, kann Microsoft erkennen, dass Sie auf die Anzeige geklickt haben und zu dieser Seite
1696                                    weitergeleitet wurden. £
1697                                    Jeder Ads-Kunde erhält eine spezifische Identifikationskennung. Somit besteht keine Möglichkeit,
1698                                    dass Cookies über die Webseiten von Ads-Kunden nachverfolgt werden können.
1699                                </p>
1700                                <p class="px-4 sm:px-0 mt-2 mb-4 sm:mb-0">Die Informationen, die mithilfe des Conversion-Cookies
1701                                    eingeholten
1702                                    werden, dienen
1703                                    dazu,
1704                                    Conversion-Statistiken für Ads-Kunden zu erstellen, die sich für Conversion-Tracking entschieden
1705                                    haben. Hierbei erfahren die Kunden die Gesamtanzahl der Nutzer,
1706                                    die auf ihre Anzeige geklickt haben und zu einer mit einem Conversion-Tracking-Tag versehenen
1707                                    Seite weitergeleitet wurden. Microsoft erhebt, verarbeitet und nutzt über das Cookie
1708                                    Informationen, aus denen unter Verwendung von
1709                                    Pseudonymen Nutzungsprofile erstellt werden. Diese Nutzungsprofile dienen der Analyse des
1710                                    Besucherverhaltens und werden zur Ausspielung von Werbeanzeigen verwendet. Es werden keine
1711                                    persönlichen Informationen zur Identität des Nutzers verarbeitet.
1712                                    Für weitere Informationen zum Datenschutz und zu den eingesetzten Cookies von Microsoft Ads
1713                                    verweisen wir auf die Webseite: <a class="link__pink"
1714                                                                       href="https://privacy.microsoft.com/de-de/privacystatement"
1715                                                                       target="_blank">https://privacy.microsoft.com/de-de/privacystatement/</a>
1716                                </p>
1717                            </div>
1718                        </div>
1719                    </div>
1720                </section>
1721
1722                <section data-cms-accordion
1723                         class="-mx-4 md:-ml-5 pb-0 sm:pb-4 border border-t-0 border-gray-300"
1724                         data-selected-class="bg-gray-50" data-unselected-class="bg-primary-lighter sm:bg-gray-50" data-cms-accordion-class="accordionClass">
1725                    <div class="p-0 sm:p-4">
1726                        <div class="accordion-wrapper">
1727                            <div class="p-4 sm:p-0 mt-auto sm:mt-3 cursor-pointer sm:cursor-auto flex items-center justify-between"
1728                                 data-cms-accordion-toggle>
1729                                <h3>TrackJS</h3>
1730                                <span class=" block sm:hidden transform transition-all rotate-0" data-cms-accordion-icon>
1731                        <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-prefix="fas" data-icon="chevron-down" viewBox="0 0 448 512" class="w-3.5 h-3.5 text-purple mt-px" role="img"><path fill="currentColor" d="M207.029 381.476 12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"/><title>chevron-down</title></svg>
1732
1733                    </span>
1734                            </div>
1735                            <div class="accordion-content mt-auto sm:mt-4 max-h-0 sm:max-h-full overflow-hidden transition-all"
1736                                 x-ref="container1" data-cms-accordion-content
1737                                 x-cloak>
1738                                <p class="px-4 sm:px-0 mb-4 sm:mb-0">TrackJS ist ein Dienst zum Error-Tracking in Java Script.
1739                                    Programmfehler in
1740                                    Java Script werden
1741                                    durch TrackJS aufgezeichnet und können analysiert werden. Da es sich um Software as a Service
1742                                    handelt, werden Nutzerdaten an das Unternehmen übermittelt.
1743                                    TrackJS ist nicht durch das EU-US-Privacy-Shield zertifiziert, daher hat das Unternehmen von der
1744                                    EU-Kommission genehmigte Standardvertragsklauseln in seine Allgemeinen Geschäftsbedingungen
1745                                    integriert
1746                                    (Additional Data Processing Agreement <a class="link__pink"
1747                                                                             href="https://trackjs.com/dpa/"
1748                                                                             target="_blank">https://trackjs.com/dpa/</a> ). Ein
1749                                    gesonderter Auftragsverarbeitungsvertrag
1750                                    ist nicht erforderlich.
1751                                </p>
1752                            </div>
1753                        </div>
1754                    </div>
1755                </section>
1756
1757                <section data-cms-accordion
1758                         class="-mx-4 md:-ml-5 pb-0 sm:pb-4 border border-t-0 border-gray-300"
1759                         data-selected-class="bg-white" data-unselected-class="bg-primary-lighter sm:bg-white" data-cms-accordion-class="accordionClass">
1760                    <div class="p-0 sm:p-4">
1761                        <div class="accordion-wrapper">
1762                            <div class="p-4 sm:p-0 mt-auto sm:mt-3 cursor-pointer sm:cursor-auto flex items-center justify-between"
1763                                 data-cms-accordion-toggle>
1764                                <h3>Einsatz und Verwendung von Boxalino</h3>
1765                                <span class=" block sm:hidden transform transition-all rotate-0" data-cms-accordion-icon>
1766                        <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-prefix="fas" data-icon="chevron-down" viewBox="0 0 448 512" class="w-3.5 h-3.5 text-purple mt-px" role="img"><path fill="currentColor" d="M207.029 381.476 12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"/><title>chevron-down</title></svg>
1767
1768                    </span>
1769                            </div>
1770                            <div class="accordion-content mt-auto sm:mt-4 max-h-0 sm:max-h-full overflow-hidden transition-all"
1771                                 x-ref="container1" data-cms-accordion-content
1772                                 x-cloak>
1773                                <p class="px-4 sm:px-0">Der für die Verarbeitung Verantwortliche hat auf dieser Internetseite
1774                                    Komponenten von Boxalino
1775                                    integriert. Boxalino ist ein Web-Analyse-Dienst. Web-Analyse ist die Erhebung, Sammlung und
1776                                    Auswertung von Daten über das Verhalten von Besuchern von Internetseiten.
1777                                    Ein Web-Analyse-Dienst erfasst unter anderem Daten darüber, von welcher Internetseite eine
1778                                    betroffene Person auf eine Internetseite gekommen ist (sogenannte Referrer), auf welche
1779                                    Unterseiten der Internetseite zugegriffen oder wie oft und für welche Verweildauer eine
1780                                    Unterseite
1781                                    betrachtet wurde. Eine Web-Analyse wird überwiegend zur Optimierung einer Internetseite und zur
1782                                    Kosten-Nutzen-Analyse von Internetwerbung eingesetzt.
1783                                </p>
1784                                <p class="px-4 sm:px-0 mt-2">Betreibergesellschaft von Boxalino ist die winning interactoins AG,
1785                                    Hertistrasse 27a, 8304 Wallisellen, Schweiz. Boxalino setzt ein Cookie auf dem
1786                                    informationstechnologischen System der betroffenen
1787                                    Person. Was Cookies sind, wurde oben bereits erläutert. Durch jeden Aufruf einer
1788                                    der Einzelseiten dieser Internetseite, die durch den für die Verarbeitung Verantwortlichen
1789                                    betrieben wird und auf welcher eine Boxalino-Komponente integriert wurde, wird der
1790                                    Internetbrowser auf dem informationstechnologischen System
1791                                    der betroffenen Person automatisch durch die jeweilige Boxalino-Komponente veranlasst, Daten zu
1792                                    Marketing- und Optimierungszwecken an Boxalino zu übermitteln. Im Rahmen dieses technischen
1793                                    Verfahrens erhält Boxalino Kenntnis über Daten, die in der
1794                                    Folge zur Erstellung von pseudonymen Nutzungsprofilen verwendet werden. Die so gewonnenen
1795                                    Nutzungsprofile dienen der Analyse des Verhaltens der betroffenen Person, welche auf die
1796                                    Internetseite des für die Verarbeitung Verantwortlichen zugegriffen
1797                                    hat und werden mit dem Ziel, die Internetseite zu verbessern und zu optimieren, ausgewertet. Die
1798                                    über die Boxalino-Komponente erhobenen Daten werden nicht ohne vorherige Einholung einer
1799                                    gesonderten und ausdrücklichen
1800                                    Einwilligung der betroffenen Person dazu genutzt, die betroffene Person zu identifizieren. Diese
1801                                    Daten werden nicht mit personenbezogenen Daten oder mit anderen Daten, die das gleiche Pseudonym
1802                                    enthalten, zusammengeführt.
1803
1804                                </p>
1805                                <p class="px-4 sm:px-0 mt-2 mb-4 sm:mb-0">Die betroffene Person kann die Setzung von Cookies durch
1806                                    unsere
1807                                    Internetseite, wie
1808                                    oben bereits
1809                                    dargestellt, jederzeit mittels einer entsprechenden Einstellung des genutzten Internetbrowsers
1810                                    verhindern und damit der Setzung von Cookies dauerhaft widersprechen.
1811                                    Eine solche Einstellung des genutzten Internetbrowsers würde auch verhindern, dass Boxalino ein
1812                                    Cookie auf dem informationstechnologischen System der betroffenen Person setzt. Zudem können von
1813                                    Boxalino bereits
1814                                    gesetzte Cookies jederzeit über einen Internetbrowser oder andere Softwareprogramme gelöscht
1815                                    werden. Die geltenden Datenschutzbestimmungen von Boxalino können unter: <a class="link__pink"
1816                                                                                                                href="https://www.winning-interactions.ai/legal---terms.html/"
1817                                                                                                                target="_blank">http://www.boxalino.com/de/impressum/</a>
1818                                    abgerufen werden.</p>
1819                            </div>
1820                        </div>
1821                    </div>
1822                </section>
1823
1824                <section data-cms-accordion
1825                         class="-mx-4 md:-ml-5 pb-0 sm:pb-4 border border-t-0 border-gray-300"
1826                         data-selected-class="bg-gray-50" data-unselected-class="bg-primary-lighter sm:bg-gray-50" data-cms-accordion-class="accordionClass">
1827                    <div class="p-0 sm:p-4">
1828                        <div class="accordion-wrapper">
1829                            <div class="p-4 sm:p-0 mt-auto sm:mt-3 cursor-pointer sm:cursor-auto flex items-center justify-between"
1830                                 data-cms-accordion-toggle>
1831                                <h3>Mautic</h3>
1832                                <span class=" block sm:hidden transform transition-all rotate-0" data-cms-accordion-icon>
1833                        <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-prefix="fas" data-icon="chevron-down" viewBox="0 0 448 512" class="w-3.5 h-3.5 text-purple mt-px" role="img"><path fill="currentColor" d="M207.029 381.476 12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"/><title>chevron-down</title></svg>
1834
1835                    </span>
1836                            </div>
1837                            <div class="accordion-content mt-auto sm:mt-4 max-h-0 sm:max-h-full overflow-hidden transition-all"
1838                                 x-ref="container1" data-cms-accordion-content
1839                                 x-cloak>
1840                                <p class="px-4 sm:px-0">Wir setzen auf dieser Website "Mautic" als Open-Source Werkzeug zur
1841                                    Marketing Automatisierung ein. Dies ist Tool zur zeitgerechten Ausgabe von passgenauen
1842                                    Informationen auf Basis der zustimmungsbasierten Erfassung und Analyse von Nutzungsdaten (u.a.
1843                                    verwendeter Browser, besuchte Seite, Dauer des Aufenthaltes).
1844                                    Mautic wird auf betriebenen Servern in der EU gehostet. Eine Weitergabe der Daten an Dritte
1845                                    findet nicht statt. Wir erfassen und verarbeiten Daten mit Mautic nur insoweit, wie für die
1846                                    Erreichung der geschäftlichen Ziele sinnvoll und erforderlich ist.
1847                                </p>
1848
1849                                <p class="px-4 sm:px-0 mt-2">Unsere Mautic-Nutzung kann (muss aber nicht) umfassen:</p>
1850
1851                                <p class="px-4 sm:px-0 mt-2">Zwar kann ein absoluter Schutz nicht garantiert werden, aber wir legen
1852                                    grössten Wert auf die
1853                                    Sicherheit Ihrer Daten:</p>
1854
1855                                <ol class="px-4 sm:px-0 numbered-ol mt-4">
1856                                    <li>
1857                                        <p class="text-base">
1858                                            Sämtliche Daten des Registrierungsdialoges werden verschlüsselt übertragen.
1859                                        </p>
1860                                    </li>
1861                                    <li class="mt-2">
1862                                        <p class="text-base">
1863                                            a) Newsletter / E-Mail-Marketing und Kampagnen
1864                                            Beim sog. E-Mail-Marketing werden Ihnen personalisierte E-Mails zugesandt. Diese
1865                                            basieren auf Ihren Newsletter-Präferenzen und ggf. auch auf dem Nutzungsverhalten auf
1866                                            unseren Websites, beim Lesen unserer E-Mails und beim Interagieren mit den darin
1867                                            enthaltenen Links. Des Weiteren versenden wir E-Mails auch im Rahmen von Kampagnen.
1868                                            Dem Versand solcher Marketing-E-Mails liegt immer eine gesonderte Zustimmung zu Grunde.
1869                                        </p>
1870                                    </li>
1871                                    <li class="mt-2 mb-4 sm:mb-0">
1872                                        <p class="text-base">
1873                                            b) Erfassung von Interaktionen
1874                                            Auf unseren Web-Ressourcen inkl. Shop werden auf Basis Ihrer Zustimmung Interaktionen
1875                                            erfasst, um Präferenzen der Nutzenden möglichst gut einzuordnen (Profilbildung) und
1876                                            Inhalte darauf anzupassen. Für die Zuordnung der Einzelaktivitäten zu anonymen oder
1877                                            bekannten Nutzenden setzt die Software verschiedene technische Verfahren ein:
1878                                        </p>
1879                                        <p> Zählpixel: Um zu erkennen, ob z.B. eine E-Mail geöffnet wurde, setzt Mautic sogenannte
1880                                            Zählpixel (Tracking Pixel) ein. Durch diese wird eine kleine Grafik vom Server des
1881                                            Anbieters geladen, die zuvor einem individuellen Nutzerprofil zugeordnet wurde.
1882                                            Personalisierte Weblinks: Um zu erkennen, ob z.B. ein Nutzer einen Link aus einer
1883                                            E-Mail, QR-Code oder SMS aufruft, fügt Mautic diesen Links eine eindeutige Kennung
1884                                            hinzu, die zuvor einem individuellen Nutzerprofil zugeordnet wurde.
1885                                            Bei den dabei erhobenen Daten handelt es sich um:
1886                                    <li> die Aktivität auf unserer Website</li>
1887                                    <li> Anzahl der Seitenaufrufe und Verweildauer des Webseiten Besuchers</li>
1888                                    <li> der Klickpfad des jeweiligen Besuchers</li>
1889                                    <li> Downloads von Dateien die über die Webseite bereitgestellt werden</li>
1890                                    <li> Besuche von Landingpages</li>
1891                                    <li> Öffnungen von E-Mails aus Newsletter und Kampagnen</li>
1892                                    <li> Aufrufen von Links aus z.B. E-Mails, SMS oder QR-Codes</li>
1893                                    </p>
1894
1895                                    </li>
1896                                </ol>
1897                                <p class="px-4 sm:px-0 mt-3"> Die von Webseitenbesuchern aktuell genutzte IP Adresse wird bei jedem
1898                                    Aufruf unserer Webseite an uns übertragen. Mautic speichert diese nur anonymisiert. </p>
1899                            </div>
1900                        </div>
1901                    </div>
1902                </section>
1903
1904                <section data-cms-accordion
1905                         class="-mx-4 md:-ml-5 pb-0 sm:pb-4 border border-t-0 border-gray-300"
1906                         data-selected-class="bg-white" data-unselected-class="bg-primary-lighter sm:bg-white" data-cms-accordion-class="accordionClass">
1907                    <div class="p-0 sm:p-4">
1908                        <div class="accordion-wrapper">
1909                            <div class="p-4 sm:p-0 mt-auto sm:mt-3 cursor-pointer sm:cursor-auto flex items-center justify-between"
1910                                 data-cms-accordion-toggle>
1911                                <h3>Cloudflare</h3>
1912                                <span class=" block sm:hidden transform transition-all rotate-0" data-cms-accordion-icon>
1913                        <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-prefix="fas" data-icon="chevron-down" viewBox="0 0 448 512" class="w-3.5 h-3.5 text-purple mt-px" role="img"><path fill="currentColor" d="M207.029 381.476 12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"/><title>chevron-down</title></svg>
1914
1915                    </span>
1916                            </div>
1917                            <div class="accordion-content mt-auto sm:mt-4 max-h-0 sm:max-h-full overflow-hidden transition-all"
1918                                 x-ref="container1" data-cms-accordion-content
1919                                 x-cloak>
1920                                <p class="px-4 sm:px-0">Wir nutzen den Service „Cloudflare“. Anbieter ist die Cloudflare Inc., 101
1921                                    Townsend St., San Francisco, CA 94107, USA (im Folgenden „Cloudflare”). Cloudflare bietet ein
1922                                    weltweit verteiltes Content Delivery Network mit DNS und SSL Zertifizierung an. Dabei wird
1923                                    technisch der Informationstransfer zwischen Ihrem Browser und unserer Website über das Netzwerk
1924                                    von Cloudflare geleitet. Das versetzt Cloudflare in die Lage, den Datenverkehr zwischen Ihrem
1925                                    Browser und unserer Website zu analysieren und als Filter zwischen unseren Servern und
1926                                    potenziell bösartigem Datenverkehr aus dem Internet zu dienen. Hierbei kann Cloudflare auch
1927                                    Cookies oder sonstige Technologien zur Wiedererkennung von Internetnutzern einsetzen, die jedoch
1928                                    allein zum hier beschriebenen Zweck verwendet werden. Cloudflare ist zertifizierter Teilnehmer
1929                                    des „EU-US Privacy Shield Frameworks“. Cloudflare hat sich dazu verpflichtet, sämtliche aus den
1930                                    Mitgliedstaaten der Europäischen Union (EU) erhaltenen personenbezogenen Daten gemäß dem
1931                                    „Privacy Shield Framework“ zu handhaben. Der Einsatz von Cloudflare beruht auf unserem
1932                                    berechtigten Interesse an einer möglichst fehlerfreien und sicheren Bereitstellung unseres
1933                                    Webangebotes (Art. 6 Abs. 1 lit. f DSGVO).Weitere Informationen zum Thema Sicherheit und
1934                                    Datenschutz bei Cloudflare finden Sie hier: <a target="_blank" href="https://www.cloudflare.com/privacypolicy/">Cloudflare
1935                                        Privacy Policy</a> .
1936                                </p>
1937                            </div>
1938                        </div>
1939                    </div>
1940                </section>
1941
1942                <section data-cms-accordion
1943                         class="-mx-4 md:-ml-5 pb-0 sm:pb-4 border border-t-0 border-gray-300"
1944                         data-selected-class="bg-white" data-unselected-class="bg-primary-lighter sm:bg-white" data-cms-accordion-class="accordionClass">
1945                    <div class="p-0 sm:p-4">
1946                        <div class="accordion-wrapper">
1947                            <div class="p-4 sm:p-0 mt-auto sm:mt-3 cursor-pointer sm:cursor-auto flex items-center justify-between"
1948                                 data-cms-accordion-toggle>
1949                                <h3>Sichere Datenübertragung</h3>
1950                                <span class=" block sm:hidden transform transition-all rotate-0" data-cms-accordion-icon>
1951                        <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-prefix="fas" data-icon="chevron-down" viewBox="0 0 448 512" class="w-3.5 h-3.5 text-purple mt-px" role="img">
1951<path fill="currentColor" d="M207.029 381.476 12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"/><title>chevron-down</title></svg>
1952
1953                    </span>
1954                            </div>
1955                            <div class="accordion-content mt-auto sm:mt-4 max-h-0 sm:max-h-full overflow-hidden transition-all"
1956                                 x-ref="container1" data-cms-accordion-content
1957                                 x-cloak>
1958                                <p class="px-4 sm:px-0 mb-4 sm:mb-0">Ihre persönlichen Daten werden bei uns sicher durch
1959                                    Verschlüsselung übertragen. Dies gilt für
1960                                    Ihre Bestellung und auch für das Kundenlogin. Wir bedienen uns dabei des Codierungssystems SSL.
1961                                </p>
1962                                <p class="px-4 sm:px-0 mb-4 sm:mb-0">SSL steht für "Secure Socket Layer" und wird heute als Standard
1963                                    eingesetzt.</p>
1964                                <p class="px-4 sm:px-0 mb-4 sm:mb-0">Zwar kann ein absoluter Schutz nicht garantiert werden, aber
1965                                    wir legen grössten Wert auf die
1966                                    Sicherheit Ihrer Daten:</p>
1967
1968                                <ol class="px-4 sm:px-0 numbered-ol mt-4">
1969                                    <li>
1970                                        <p> Sämtliche Daten des Registrierungsdialoges werden verschlüsselt übertragen.</p>
1971                                    </li>
1972
1973                                    <li>
1974                                        <p>Alle Systeme, in denen Ihre Daten gespeichert sind, sind passwortgeschützt und nur einem
1975                                            sehr eingeschränkten Personenkreis zugänglich.</p>
1976                                    </li>
1977
1978                                    <li>
1979                                        <p> Ihre Daten werden nur zu dem Zwecke genutzt, zu dem Sie uns beauftragt haben.</p>
1980                                    </li>
1981                                </ol>
1982                            </div>
1983                        </div>
1984                    </div>
1985                </section>
1986
1987                <section data-cms-accordion
1988                         class="-mx-4 md:-ml-5 pb-0 sm:pb-4 border border-t-0 border-gray-300"
1989                         data-selected-class="bg-gray-50" data-unselected-class="bg-primary-lighter sm:bg-gray-50" data-cms-accordion-class="accordionClass">
1990                    <div class="p-0 sm:p-4">
1991                        <div class="accordion-wrapper">
1992                            <div class="p-4 sm:p-0 mt-auto sm:mt-3 cursor-pointer sm:cursor-auto flex items-center justify-between"
1993                                 data-cms-accordion-toggle>
1994                                <h3>Sichere Kreditkartenzahlung</h3>
1995                                <span class=" block sm:hidden transform transition-all rotate-0" data-cms-accordion-icon>
1996                        <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-prefix="fas" data-icon="chevron-down" viewBox="0 0 448 512" class="w-3.5 h-3.5 text-purple mt-px" role="img"><path fill="currentColor" d="M207.029 381.476 12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"/><title>chevron-down</title></svg>
1997
1998                    </span>
1999                            </div>
2000                            <div class="accordion-content mt-auto sm:mt-4 max-h-0 sm:max-h-full overflow-hidden transition-all"
2001                                 x-ref="container1" data-cms-accordion-content
2002                                 x-cloak>
2003                                <p class="px-4 sm:px-0"
2004                                   `>Mit dem PCI-DSS-Zertifikat garantieren wir Ihnen, dass wir ein sicherer Anbieter für
2005                                    Kreditkartenzahlungen sind. PCI DSS steht für Payment Card Industry Data Security Standard und
2006                                    stellt den weltweit gültigen Sicherheitsstandard für Kartendaten dar.
2007                                    Die Sicherheitsrichtlinien von PCI wirken Diebstahl und Missbrauch wirkungsvoll entgegen.
2008                                    PCI-DSS enthält 12 verbindliche Anforderungen, deren Einhaltung jährlich mit einem Zertifikat
2009                                    bescheinigt wird. Weitere Informationen dazu finden Sie unter:
2010                                    <a class="link__pink"
2011                                       href="https://assurance.sysnetgs.com/assurancecard/be8e7fbc4499573fd49c094e465c61e60d83cf8135657915/assurancecard/"
2012                                       target="_blank">https://assurance.sysnetgs.com/assurancecard</a>
2013                                </p>
2014                            </div>
2015
2016
2017                        </div>
2018                    </div>
2019                </section>
2020                <section data-cms-accordion
2021                         class="-mx-4 md:-ml-5 pb-0 sm:pb-4 border border-t-0 border-gray-300"
2022                         data-selected-class="bg-gray-50" data-unselected-class="bg-primary-lighter sm:bg-gray-50" data-cms-accordion-class="accordionClass">
2023                    <div class="p-0 sm:p-4">
2024                        <div class="accordion-wrapper">
2025                            <div class="p-4 sm:p-0 mt-auto sm:mt-3 cursor-pointer sm:cursor-auto flex items-center justify-between"
2026                                 data-cms-accordion-toggle>
2027                                <h3>New Relic</h3>
2028                                <span class=" block sm:hidden transform transition-all rotate-0" data-cms-accordion-icon>
2029                        <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-prefix="fas" data-icon="chevron-down" viewBox="0 0 448 512" class="w-3.5 h-3.5 text-purple mt-px" role="img"><path fill="currentColor" d="M207.029 381.476 12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"/><title>chevron-down</title></svg>
2030
2031                    </span>
2032                            </div>
2033                            <div class="accordion-content mt-auto sm:mt-4 max-h-0 sm:max-h-full overflow-hidden transition-all"
2034                                 x-ref="container1" data-cms-accordion-content
2035                                 x-cloak>
2036                                <p class="px-4 sm:px-0">Wir setzen auf unserer Webseite die Software NewRelic ein. Hierdurch wird
2037                                    eine Analyse Ihrer Websitenutzung ermöglicht. Die durch das Cookie gespeicherten Informationen
2038                                    über Ihre Benutzung dieser Website (einschliesslich Ihrer IP-Adresse),
2039                                    werden an einen Server von NewRelic in den USA übertragen. Die Daten verarbeiten wir aufgrund
2040                                    unseres überwiegenden Interesses an der optimalen Vermarktung unseres Onlineangebotes nach Art.6
2041                                    Abs. 1 f) DSGVO. NewRelic wird die gespeicherten Informationen verwenden,
2042                                    um Ihre Nutzung der Website auszuwerten, um Reports über die Websiteaktivitäten für die
2043                                    Websitebetreiber zusammenzustellen und um weitere mit der Websitenutzung und der Internetnutzung
2044                                    verbundene Dienstleistungen zu erbringen. </p>
2045                                <p class="px-4 sm:px-0 mt-2">NewRelic ist nach dem Privacy Shield Agreement zertifiziert und
2046                                    garantiert damit die
2047                                    Einhaltung
2048                                    der europäischen Datenschutzgesetzgebung: <a class="link__pink"
2049                                                                                 href="https://www.privacyshield.gov/participant?id=a2zt0000000TNPiAAO&status=Active"
2050                                                                                 target="_blank">https://www.privacyshield.gov/participant?id=a2zt0000000TNPiAAO&status=Active</a>
2051                                    ).</p>
2052                                <p class="px-4 sm:px-0 mt-2 mb-4 sm:mb-0"> Weitere Informationen zum Datenschutz finden Sie unter:
2053                                    <a class="link__pink"
2054                                       href="https://newrelic.com/termsandconditions/privacy"
2055                                       target="_blank">https://newrelic.com/termsandconditions/privacy</a>
2056                                </p>
2057                            </div>
2058                        </div>
2059                    </div>
2060                </section>
2061
2062
2063                <section data-cms-accordion
2064                         class="-mx-4 md:-ml-5 pb-0 sm:pb-4 border border-t-0 border-gray-300"
2065                         data-selected-class="bg-white" data-unselected-class="bg-primary-lighter sm:bg-white" data-cms-accordion-class="accordionClass">
2066                    <div class="p-0 sm:p-4">
2067                        <div class="accordion-wrapper">
2068                            <div class="p-4 sm:p-0 mt-auto sm:mt-3 cursor-pointer sm:cursor-auto flex items-center justify-between"
2069                                 data-cms-accordion-toggle>
2070
2071                                <h3>Nutzung unserer Chat-Funktion</h3>
2072                                <span class=" block sm:hidden transform transition-all rotate-0" data-cms-accordion-icon>
2073                        <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-prefix="fas" data-icon="chevron-down" viewB
2073ox="0 0 448 512" class="w-3.5 h-3.5 text-purple mt-px" role="img"><path fill="currentColor" d="M207.029 381.476 12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"/><title>chevron-down</title></svg>
2074
2075                    </span>
2076                            </div>
2077                            <div class="accordion-content mt-auto sm:mt-4 max-h-0 sm:max-h-full overflow-hidden transition-all"
2078                                 x-ref="container1" data-cms-accordion-content
2079                                 x-cloak>
2080                                <p class="px-4 sm:px-0">Wir setzen auf unserer Website die Software Typewise ein. Typewise gehört
2081                                    zur Typewise AG mit Sitz an der Buckhauserstrasse 36, 8048 Zürich, Schweiz.</p>
2082
2083                                <p class="px-4 sm:px-0 mt-2">Wenn Sie uns per Chat kontaktieren, werden Ihre personenbezogenen Daten
2084                                    bearbeitet. Bearbeitet werden die Daten, die Sie uns zur Verfügung stellen, zum Beispiel Ihr Name,
2085                                    Ihre E-Mail-Adresse, Ihr Anliegen sowie weitere Informationen, die Sie im Rahmen der Chat-Anfrage
2086                                    freiwillig mitteilen. Darüber hinaus können technische Informationen sowie der Zeitpunkt des
2087                                    Eingangs der Anfrage dokumentiert werden. Pflichtangaben sind mit einem Sternchen (*)
2088                                    gekennzeichnet.</p>
2089
2090                                <p class="px-4 sm:px-0 mt-2">Die Chat-Funktion wird durch einen virtuellen Assistenten unterstützt.
2091                                    Dieser kann einen grossen Teil der Anfragen mithilfe künstlicher Intelligenz automatisiert
2092                                    beantworten. Je nach Anliegen kann die Anfrage durch Mitarbeitende von Lehner
2093                                    weiterbearbeitet werden.</p>
2094
2095                                <p class="px-4 sm:px-0 mt-2">Wir verarbeiten diese Daten ausschliesslich, um Ihr Anliegen zu
2096                                    bearbeiten, zum Beispiel zur Erteilung einer Auskunft über ein Produkt, zur Unterstützung bei der
2097                                    Vertragsabwicklung, etwa bei Rücksendungen, oder zur Verbesserung unseres Services.</p>
2098
2099                                <p class="px-4 sm:px-0 mt-2">Ihre Daten können im Rahmen der Bereitstellung der Chat-Funktion durch
2100                                    Typewise bearbeitet werden. Dies kann Typewise den Zugriff auf Ihre Daten ermöglichen, soweit dies
2101                                    für die Bereitstellung, den Betrieb, die Wartung und die Unterstützung bei der Nutzung der
2102                                    Software erforderlich ist.</p>
2103
2104                                <p class="px-4 sm:px-0 mt-2">Bitte geben Sie im Chat keine besonders schützenswerten Personendaten
2105                                    oder vertraulichen Informationen ein, sofern diese für die Bearbeitung Ihres Anliegens nicht
2106                                    erforderlich sind.</p>
2107
2108                                <p class="px-4 sm:px-0 mt-2">Weitere Informationen hierzu finden Sie in der Datenschutzerklärung von
2109                                    Typewise:</p> <a class="link__pink" href="https://www.typewise.app/legal/privacy-policy"
2110                                                     target="_blank">https://www.typewise.app/legal/privacy-policy</a>.
2111                            </div>
2112                        </div>
2113                    </div>
2114                </section>
2115
2116                <section data-cms-accordion
2117                         class="-mx-4 md:-ml-5 pb-0 sm:pb-4 border border-t-0 border-gray-300"
2118                         data-selected-class="bg-white" data-unselected-class="bg-primary-lighter sm:bg-white" data-cms-accordion-class="accordionClass">
2119                    <div class="p-0 sm:p-4">
2120                        <div class="accordion-wrapper">
2121                            <div class="p-4 sm:p-0 mt-auto sm:mt-3 cursor-pointer sm:cursor-auto flex items-center justify-between"
2122                                 data-cms-accordion-toggle>
2123                                <h3>Allgemeiner Haftungsausschluss</h3>
2124                                <span class=" block sm:hidden transform transition-all rotate-0" data-cms-accordion-icon>
2125                        <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-prefix="fas" data-icon="chevron-down" viewBox="0 0 448 512" class="w-3.5 h-3.5 text-purple mt-px" role="img"><path fill="currentColor" d="M207.029 381.476 12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z"/><title>chevron-down</title></svg>
2126
2127                    </span>
2128                            </div>
2129                            <div class="accordion-content mt-auto sm:mt-4 max-h-0 sm:max-h-full overflow-hidden transition-all"
2130                                 x-ref="container1" data-cms-accordion-content
2131                                 x-cloak>
2132                                <p class="px-4 sm:px-0">Alle Angaben unseres Internetangebotes wurden sorgfältig geprüft. Wir
2133                                    bemühen uns, unser
2134                                    Informationsangebot aktuell, inhaltlich richtig und vollständig anzubieten. Trotzdem kann das
2135                                    Auftreten von Fehlern nicht völlig ausgeschlossen werden,
2136                                    womit wir keine Garantie für Vollständigkeit, Richtigkeit und Aktualität von Informationen auch
2137                                    journalistisch-redaktioneller Art übernehmen können. Haftungsansprüche aus Schäden materieller
2138                                    oder ideeller Art, die durch die
2139                                    Nutzung der angebotenen Informationen verursacht wurden, sind ausgeschlossen, sofern kein
2140                                    nachweislich vorsätzliches oder grob fahrlässiges Verschulden vorliegt.
2141                                </p>
2142                                <p class="px-4 sm:px-0 mt-2">Der Herausgeber kann nach eigenem Ermessen und ohne Ankündigung Texte
2143                                    verändern oder
2144                                    löschen und
2145                                    ist nicht verpflichtet, Inhalte dieser Website zu aktualisieren. Die Benutzung bzw. der Zugang
2146                                    zu dieser Website geschieht auf eigene Gefahr des Besuchers.
2147                                    Der Herausgeber, seine Auftraggeber oder Partner sind nicht verantwortlich für Schäden, wie
2148                                    direkte, indirekte, zufällige, vorab konkret zu bestimmende oder Folgeschäden, die angeblich
2149                                    durch den Besuch
2150                                    dieser Website entstanden sind und übernehmen hierfür folglich keine Haftung.</p>
2151
2152                                <p class="px-4 sm:px-0 mt-2">Der Herausgeber übernimmt ebenfalls keine Verantwortung und Haftung für
2153                                    die Inhalte
2154                                    und die
2155                                    Verfügbarkeit von Webseiten Dritter, die über externe Links dieser Website erreichbar sind. Für
2156                                    den Inhalt der verlinkten Seiten
2157                                    sind ausschliesslich deren Betreiber verantwortlich. Der Herausgeber distanziert sich damit
2158                                    ausdrücklich von allen Inhalten Dritter, die möglicherweise straf- oder haftungsrechtlich
2159                                    relevant sind oder gegen die guten Sitten verstossen.</p>
2160
2161                                <h3 class="px-4 sm:px-0 mt-4">Änderungen</h3>
2162
2163                                <p class="px-4 sm:px-0 mt-2">Wir können diese Datenschutzerklärung jederzeit ohne Vorankündigung
2164                                    anpassen. Es
2165                                    gilt die jeweils
2166                                    aktuelle, auf unserer Website publizierte Fassung. Soweit die Datenschutzerklärung Teil einer
2167                                    Vereinbarung mit Ihnen ist,
2168                                    werden wir Sie im Falle einer Aktualisierung 
2168über die Änderung per E-Mail oder auf andere
2169                                    geeignete Weise informieren. </p>
2170
2171                                <p class="px-4 sm:px-0 mt-2 mb-4 sm:mb-0">Schenkon, 23.06.2026</p>
2172                            </div>
2173                        </div>
2174                    </div>
2175                </section>
2176            </div>
2177        </div>
2178    </div>
2179</div>        </div>
2180    <div class="gap-2 mt-4">
2181        
2182<div class="flex flex-row justify-center lg:justify-start">
2183                                                
2184<button
2185        type="button"
2186        x-data="initAmCookieActionDispatcherBtn"
2187        data-dispatch-action="cookiebar-action-allow"
2188                @click.prevent="actiondispatchHandler"
2189        class="primary&#x20;btn&#x20;btn-primary&#x20;mr-5&#x20;py-2&#x20;leading-5&#x20;text-sm"
2190>
2191    Schliessen</button>
2192            </div>
2193    </div>
2194</div>
2195
2196</dialog>
2197</div>
vendor: 110 bytes, lines 2197-2199
2197
2198
2199<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
2199<script data-cfasync="false">
2200    'use strict';
2201
2202    function initAmastyCookieBar() {
2203        return {
2204            ...hyva.modal({
2205                duration: 150,
2206                transitionEnter: 'transform duration-150',
2207                transitionLeave: 'transform duration-150'
2208            }),
2209            eventListeners: {
2210                ['@close-cookie-bar']() {
2211                    this.hide('am-cookie-bar');
2212                },
2213                ['@open-cookie-bar']() {
2214                    this.show('am-cookie-bar');
2215                    this.$nextTick(() => hyva.trapFocus(this.modalElement));
2216                },
2217                ['@amasty-cookie-group-updated.window']() {
2218                    const lastUpdate = Alpine.store('AmastyCookieGroups').lastUpdate;
2219
2220                    if (this.isShowNotificationBar(this.firstShowProcess, lastUpdate)) {
2221                        if (!this.opened['am-cookie-bar']) {
2222                            this.show('am-cookie-bar');
2223                            window.dispatchEvent(new CustomEvent('amcookie-show-notification-bar'));
2224                        }
2225                        this.$nextTick(() => hyva.trapFocus(this.modalElement));
2226                    } else {
2227                        !!this.opened['am-cookie-bar'] &&
2228                        this.hide('am-cookie-bar');
2229                    }
2230                }
2231            },
2232
2233            firstShowProcess: '0',
2234
2235            /**
2236             * @returns {void}
2237             */
2238            init: function () {
2239                window.isGdprCookieEnabled = true;
2240                Alpine.store('AmastyCookieGroups').updateGroupData();
2241                this.modalElement = this.$refs['am-cookie-bar'];
2242                this.modalElement.setAttribute('aria-describedby', 'amcookie-bar-content');
2243            },
2244
2245            /**
2246             * @param {string|number} firstShowProcess
2247             * @param {number} lastUpdate
2248             * @returns {boolean}
2249             */
2250            isShowNotificationBar: function (firstShowProcess, lastUpdate) {
2251                return (this.isNeedFirstShow(firstShowProcess, lastUpdate) && !hyva.getCookie('amcookie_allowed')
2252                    || this.isNeedShowOnUpdate(lastUpdate));
2253            },
2254
2255            /**
2256             * @param {string|number} firstShowProcess
2257             * @param {number} lastUpdate
2258             * @returns {boolean}
2259             */
2260            isNeedFirstShow: function (firstShowProcess, lastUpdate) {
2261                hyva.getBrowserStorage().setItem('amCookieBarFirstShowTime', lastUpdate);
2262
2263                if (firstShowProcess === '0') {
2264                    return true;
2265                }
2266
2267                if (hyva.getBrowserStorage().getItem('amCookieBarFirstShow') !== '1') {
2268                    hyva.getBrowserStorage().setItem('amCookieBarFirstShow', '1');
2269
2270                    return true;
2271                }
2272
2273                return false;
2274            },
2275
2276            /**
2277             * @param {number} lastUpdate
2278             * @returns {boolean}
2279             */
2280            isNeedShowOnUpdate: function (lastUpdate) {
2281                if (!lastUpdate) {
2282                    return false;
2283                }
2284
2285                return this.isNeedShowAfterLastVisit(lastUpdate) || this.isNeedShowAfterLastAccept(lastUpdate);
2286            },
2287
2288            /**
2289             * @param {number} lastUpdate
2290             * @returns {boolean}
2291             */
2292            isNeedShowAfterLastVisit: function (lastUpdate) {
2293                let needToShowAfterLastVisit =
2294                    lastUpdate > hyva.getBrowserStorage().getItem('amCookieBarFirstShowTime');
2295
2296                if (needToShowAfterLastVisit) {
2297                    hyva.getBrowserStorage().setItem('amCookieBarFirstShow', null);
2298                    this.clearAmCookieAllowed();
2299                }
2300
2301                return needToShowAfterLastVisit;
2302            },
2303
2304            /**
2305             * @param {number} lastUpdate
2306             * @returns {boolean}
2307             */
2308            isNeedShowAfterLastAccept: function (lastUpdate) {
2309                let needToShowAfterLastAccept = false;
2310
2311                if (hyva.getBrowserStorage().getItem('am-last-cookie-acceptance')) {
2312                    needToShowAfterLastAccept =
2313                        lastUpdate > hyva.getBrowserStorage().getItem('am-last-cookie-acceptance');
2314                }
2315
2316                if (needToShowAfterLastAccept) {
2317                    this.clearAmCookieAllowed(needToShowAfterLastAccept);
2318                }
2319
2320                return needToShowAfterLastAccept;
2321            },
2322
2323            /**
2324             * @returns {void}
2325             */
2326            closeCookieBarHandler: function () {
2327                this.$dispatch('close-cookie-bar');
2328            },
2329
2330            /**
2331             * @param {boolean} needToShowAfterLastAccept
2332             * @returns {void}
2333             */
2334            clearAmCookieAllowed: function (needToShowAfterLastAccept = false) {
2335                hyva.setCookie('amcookie_allowed', '', -1, true);
2336
2337                const amastyCookieManager = window.amastyCookieManager ?? {};
2338                const groupData = amastyCookieManager.getAmastyCookieGroupStorage?.()?.groupData ?? [];
2339
2340                if (needToShowAfterLastAccept && !!groupData.length) {
2341                    const disallowedCookies = groupData
2342                        .filter(group => !group.isEssential)
2343                        .flatMap(group => group.cookies?.map(cookie => cookie.name) ?? []);
2344
2345                    hyva.setCookie('amcookie_disallowed', disallowedCookies.join(','));
2346
2347                    amastyCookieManager.deleteDisallowedCookie?.();
2348                    amastyCookieManager.getAmastyCookieGroupStorage?.()?.updateGroupDataPermanently(
2349                        groupData.map((group) => {
2350                            return {
2351                                ...group,
2352                                checked: group.isEssential
2353                            }
2354                        })
2355                    );
2356                }
2357            }
2358        };
2359    }
2360
2361    window.addEventListener('alpine:init', () => Alpine.data('initAmastyCookieBar', initAmastyCookieBar), {once: true});
2362</script>
2362
2363<div class="page-wrapper"><div class="m-siteNav placeholder"><!-- --></div><header class="page-header"><a class="action skip sr-only focus:not-sr-only focus:absolute focus:z-40 focus:bg-white
2364   contentarea"
2365   href="#contentarea">
2366    <span>
2367        Direkt zum Inhalt    </span>
2368</a>
2369<div class="header content"><div class="border-b border-gray-200">
2370    <div class="container  mt-0 md:mt-4">
2371        <div class="checkout-logo row flex justify-center items-center pb-4 mt-2 lg:mt-auto pt-2 md:pt-0">
2372            <div class="z-40">
2373                <div class="w-full">
2374    <a class="flex items-center text-xl font-medium tracking-wide text-gray-800
2375        no-underline hover:no-underline font-title" href="https://www.vedia.ch/" title="" aria-label="store logo">
2376        <img src="https://www.vedia.ch/static/version1790063611/frontend/Vedia/hyva/de_CH/images/vedia-logo.svg" title="" alt="" class="h-7 xl:h-9" />
2377    </a>
2378</div>
2379            </div>
2380            <div class="order-2 md:order-3 md:ml-auto absolute left-0 md:right-12 md:relative md:top-0 lg:right-0 w-full md:w-auto">
2381                <div class="customer-header-wrapper flex items-center w-full justify-between md:justify-end px-[10px] md:px-0">
2382                    <div class="checkout-store-switcher hidden md:block pl-4 sm:pl-0 md:pr-0 md:pl-5 xl:ml-3"
2383                         x-show="isOpen">
2384                        
2385    <div x-data="refusionLanguageSwitcher"
2386         data-ui-id="language-switcher"
2387         x-on:click="toggle"
2388         x-on:click.away="close"
2389         class="switcher language switcher-language flex xl:relative text-sm"
2390         id="switcher-language">
2391                    
2392
2393                            <div class="flex lg:last:border-0 lg:last:border-t-0 lg:last:border-b-0 lg:last:border-gray-300 order-1 lg:order-none z-40">
2394                    <span class="flex items-center lg:font-bold px-4 py-3 text-gray transition cursor-pointer lg:cursor-auto uppercase xl:hidden"
2395                          :class="getBackgroundClasses">
2396                       De                        <span class="relative xl:hidden top-px ml-1.5 transform transition rotate-90"
2397                              :class="getRotateClasses">
2398                            <svg xmlns="http://www.w3.org/2000/svg" class="text-current" fill="none" viewBox="0 0 24 24" stroke="currentColor" width="14" height="14" role="img"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m9 5 7 7-7 7"/><title>chevron-right</title></svg>
2399                        </span>
2400                    </span>
2401                </div>
2402            
2403                    
2404
2405            
2406                                                    
2407
2408            <div class="language-switcher flex-col xl:flex-row flex w-full order-2 xl:order-none absolute xl:relative left-0 z-40 bg-white text-black xl:bg-transparent transform translate-y-full xl:translate-y-0 shadow-3xl xl:shadow-none transition-all opacity-0 xl:opacity-100"
2409                 :class="getPointersClasses"
2410                 x-cloak>
2411                <a class="relative w-full z-50 p-4 xl:p-1 xl:py-0 text-black font-bold transition flex items-center justify-between" href="https://www.vedia.ch/fr/customer/account/login/referer/aHR0cHM6Ly93d3cudmVkaWEuY2gvY3VzdG9tZXIvYWNjb3VudC9pbmRleC8~/" onclick="window.gtag && gtag('event', 'Change-Language', {'event_category' : 'Header', 'event_label' : 've_fr'});" x-cloak>  Deutsch <span class="text-primary xl:hidden"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22" width="16" height="16" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="stroke-primary" role="img"><path d="M20 6 9 17l-5-5"/><title>check</title></svg>
2412</span></a>
2413                <span class="text-gray-500 hidden xl:inline-block">/</span>
2414                <a class="relative w-full z-50 text-black transition p-4 xl:p-1 xl:py-0" href="https://www.vedia.ch/fr/customer/account/login/referer/aHR0cHM6Ly93d3cudmVkaWEuY2gvY3VzdG9tZXIvYWNjb3VudC9pbmRleC8~/" onclick="window.gtag && gtag('event', 'Change-Language', {'event_category' : 'Header', 'event_label' : 've_fr'});" x-cloak>
2415                        Français                    </a>
2416
2417                </div>
2418            
2419            </div>
2420<script>
2421    'use strict';
2422    function refusionLanguageSwitcher() {
2423        return {
2424            open: false,
2425            toggle() {
2426                this.open = !this.open;
2427            },
2428            close() {
2429                this.open = false;
2430            },
2431            getBackgroundClasses() {
2432                if (this.open)
2433                   return 'bg-gray-200 xl:bg-white text-black xl:hidden';
2434                else
2435                    return '';
2436            },
2437            getRotateClasses() {
2438                if (this.open)
2439                    return '-rotate-90';
2440                else
2441                    return 'rotate-90';
2442            },
2443            getPointersClasses() {
2444                if (this.open)
2445                    return 'bottom-0 xl:bottom-0 xl:transform-none xl:transition-none opacity-100 pointer-events-auto';
2446                else
2447                    return '-bottom-4 xl:bottom-0 pointer-events-none xl:pointer-events-auto';
2448            }
2449        }
2450    }
2451    window.addEventListener('alpine:init', () => {Alpine.data('refusionLanguageSwitcher', refusionLanguageSwitcher)}, {once: true})
2452</script>
2452
2453
2454                    </div>
2455                </div>
2456            </div>
2457        </div>
2458    </div>
2459</div>
2460
2461</div></header><main id="maincontent" class="page-main"><div class="page messages">
2461<script>
2462        function initMessages() {
2463        "use strict";
2464        return {
2465            messages: window.mageMessages || [],
2466            isEmpty() {
2467                return this.messages.reduce(
2468                    function (isEmpty, message) {
2469                        return isEmpty && message === undefined
2470                    }, true
2471                )
2472            },
2473            hasMessages() {
2474                return !this.isEmpty();
2475            },
2476            hasMessage() {
2477                return !!this.message;
2478            },
2479            removeMessage() {
2480                this.messages[this.index] = undefined;
2481            },
2482            addMessages(messages, hideAfter) {
2483                messages.map((message) => {
2484                    this.messages = this.messages.concat(message);
2485                    if (hideAfter === undefined && message.type === 'success' && window.defaultSuccessMessageTimeout) {
2486                        hideAfter = window.defaultSuccessMessageTimeout;
2487                    }
2488                    if (hideAfter) {
2489                        this.setHideTimeOut(this.messages.length -1, hideAfter);
2490                    }
2491                });
2492            },
2493            setHideTimeOut(messageIndex, hideAfter) {
2494                setTimeout((messageIndex) => {
2495                    this.removeMessage(messageIndex);
2496                }, hideAfter, messageIndex);
2497            },
2498            eventListeners: {
2499                ['@messages-loaded.window'](event) {
2500                    this.addMessages(event.detail.messages, event.detail.hideAfter)
2501                },
2502                ['@private-content-loaded.window'](event) {
2503                    const data = event.detail.data;
2504                    if (
2505                        data.messages &&
2506                        data.messages.messages &&
2507                        data.messages.messages.length
2508                    ) {
2509                        this.addMessages(data.messages.messages);
2510                    }
2511                },
2512                ['@clear-messages.window']() {
2513                    this.messages = [];
2514                }
2515            },
2516            getMessageUiId() {
2517                return 'message-' + this.message.type;
2518            }
2519        }
2520    }
2521
2522    window.addEventListener('alpine:init', () => Alpine.data('initMessages', initMessages), {once: true})
2523</script>
2523
2524<section id="messages"
2525         x-data="initMessages"
2526         x-bind="eventListeners"
2527         aria-live="assertive"
2528         role="alert"
2529>
2530    <template x-if="hasMessages">
2531        <div class="w-full">
2532            <div role="alert" class="messages container mx-auto">
2533                <template x-for="(message, index) in messages" :key="index">
2534                    <div>
2535                        <template x-if="hasMessage">
2536                            <div class="message px-5 py-3 mt-8 sm:mt-4 md:-mt-4 lg:mt-4 xl:mt-0 rounded-none shadow-none" :class="message.type"
2537                                 :ui-id="getMessageUiId"
2538                            >
2539                                <span x-html="message.text"></span>
2540                                <a href="#" class="close cursor-pointer text-white" title="close"
2541                                   @click.prevent="removeMessage">
2542                                    <svg class="fill-white" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"
2543                                         width="18" height="18" viewBox="0 0 18 18">
2544                                        <path
2545                                            d="M14.53 4.53l-1.06-1.06L9 7.94 4.53 3.47 3.47 4.53 7.94 9l-4.47
2546                                                4.47 1.06 1.06L9 10.06l4.47 4.47 1.06-1.06L10.06 9z">
2547                                        </path>
2548                                    </svg>
2549                                </a>
2550                            </div>
2551                        </template>
2552                    </div>
2553                </template>
2554            </div>
2555        </div>
2556    </template>
2557</section>
2558</div><div class="columns"><div class="column main"><div id="customer-login-container" class="login-container container"><div class="wrap flex flex-wrap justify-center mx-auto w-full"><div class="w-full md:w-[540px] py-10 px-4 md:py-8 md:px-6 bg-gray-100 rounded-lg">
2559    <div aria-labelledby="block-customer-login-heading">
2560        <form class="form form-login w-full"
2561              action="https://www.vedia.ch/customer/account/loginPost/referer/aHR0cHM6Ly93d3cudmVkaWEuY2gvY3VzdG9tZXIvYWNjb3VudC9pbmRleC8~/"
2562              method="post"
2563              x-data="initCustomerLoginForm()"
2564              @submit.prevent="submitForm()"
2565              id="customer-login-form">
2566            <input name="form_key" type="hidden" value="uojecUerWSEOGZi3" />            <fieldset class="fieldset login flex flex-col gap-4">
2567                <legend class="mb-4">
2568                    <h2 class="text-2xl font-bold title-font text-black" x-text="mainTitle"></h2>
2569                </legend>
2570                <div class="text-gray-blue w-full" x-text="infoText" x-show="infoText"></div>
2571                <div class="field email required !my-2">
2572                    <label class="label gap-1" for="email"><span>E-Mail</span></label>
2573                    <div class="control relative">
2574                        <input name="login[username]"
2575                               class="form-input w-full mb-1"
2576                               value=""
2577                               autocomplete="off"
2578                               @blur="validateEmail()"
2579                               @keydown.enter.prevent="nextStep()"
2580                               id="email"
2581                               type="email"
2582                               title="E-Mail"/>
2583                        <p x-show="emailError" x-text="emailError" class="text-sm text-red-600 absolute"></p>
2584                    </div>
2585                </div>
2586
2587                <!-- Show two buttons when passkey is detected -->
2588                <div x-show="step === 2 && hasPasskey" class="space-y-4" style="display:none;">
2589                    <div class="flex flex-col md:flex-row gap-3">
2590                        <button type="button" @click="loginWithPassword()" class="btn btn-secondary text-base w-full justify-center">
2591                            <span>Mit Passwort anmelden</span>
2592                        </button>
2593                        <button type="button" @click="loginWithPasskey()" class="btn btn-primary  text-base w-full white justify-center ">
2594                            <span>Mit Passkey anmelden</span>
2595                        </button>
2596                    </div>
2597                    <a @click.prevent="goBack()" class="w-full flex text-center items-centar cursor-pointer back-button items-center gap-2">
2598                        <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 21" fill="none" aria-hidden="true">
2599<path fill-rule="evenodd" clip-rule="evenodd" d="M16.875 10.5503C16.875 10.8955 16.5952 11.1753 16.25 11.1753L5.25888 11.1753L9.81694 15.7334C10.061 15.9774 10.061 16.3732 9.81694 16.6172C9.57286 16.8613 9.17714 16.8613 8.93306 16.6172L3.30806 10.9922C3.06398 10.7482 3.06398 10.3524 3.30806 10.1084L8.93306 4.48335C9.17714 4.23927 9.57286 4.23927 9.81694 4.48335C10.061 4.72743 10.061 5.12316 9.81694 5.36723L5.25888 9.92529L16.25 9.92529C16.5952 9.92529 16.875 10.2051 16.875 10.5503Z" fill="#D72B8A"/>
2600</svg>
2601                        <span>Zurück</span>
2602                    </a>
2603                </div>
2604
2605                <div x-show="step === 2 && !hasPasskey" style="display:none;">
2606                    <div class="field password required">
2607                        <div class="flex justify-between">
2608                            <label for="pass" class="label"><span>Passwort</span></label>
2609                            <a class="text-primary" href="https://www.vedia.ch/customer/account/forgotpassword/"><span>Passwort vergessen?</span>
2610                            </a>
2611                        </div>
2612
2613                        <div class="control">
2614                            <input name="login[password]"
2615                                   class="form-input w-full"
2616                                   :class="{ 'border-red-600': passwordError }"
2617                                   type="password"
2618                                                                    autocomplete="off"
2619                                                                   id="pass"
2620                                   x-effect="if (step === 2 && !hasPasskey) $nextTick(() => $el.focus())"
2621                                   @blur="validatePassword()"
2622                                   @input="passwordError = ''"
2623                                   title="Passwort"/>
2624                            <p x-show="passwordError" x-text="passwordError" class="mt-1 text-sm text-red-600"></p>
2625                        </div>
2626                    </div>
2627
2628                    <div x-data="{open: false}" id="remember-me-box" class="field choice persistent m-rememberMe">
2629        <div class="m-rememberWrapper flex justify-between w-full items-center flex-wrap">
2630        <input type="checkbox" name="persistent_remember_me" class="checkbox" id="remember_mehF6NHtwrRH" checked="checked" title="Angemeldet&#x20;bleiben" />
2631        <label for="remember_mehF6NHtwrRH" class="label text-sm">
2632
2633            <span>Angemeldet bleiben</span></label>
2634
2635        <p @click="open = !open" class="a-link tooltip toggle text-sm flex items-center" :class="open ? 'text-primary': 'text-blue'">
2636            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="fill-current mr-2" width="20" height="20" role="img"><g fill="none" fill-rule="evenodd"><circle fill="currentColor" cx="12" cy="12" r="12"/><path d="M12 7a1 1 0 1 0 1 1c0-.551-.449-1-1-1z" fill="#FFF"/><rect fill="#FFF" transform="matrix(-1 0 0 1 24 0)" x="11" y="10" width="2" height="8" rx="1"/></g><title>info</title></svg>
2637            <span :class="open ? 'text-primary' : 'text-blue'" class="cursor-pointer hover:cursor-pointer">
2638                Was ist das?            </span>
2639        </p>
2640        <div class="tooltip content mage-error p-2 w-full max-w-full border border-primary bg-gray-100 mt-3" :class="open ? 'block' : 'hidden'">
2641            <p>
2642                Wenn Sie &#039;Angemeldet bleiben&#039; anklicken, bleiben Sie eine Woche lang automatisch mit Ihren Logindaten auf diesem Computer bei Lehner Versand eingeloggt. Ihr Warenkorb bleibt erhalten, auch wenn Sie den Browser schliessen oder mehr als einen Tag keine Aktion mehr auf dieser Seite durchführen. Dies ist jedoch nur der Fall, sofern Sie sich nicht über &#039;Abmelden&#039; ausloggen. Aus Sicherheitsgründen raten wir Ihnen jedoch, dieses automatische Login nicht zu nutzen, wenn Sie an einem für andere Nutzer zugänglichen Computer sitzen (z.B. in einem Internetcafé) oder einen öffentlichen Rechner nutzen.</p>
2643            <div class="button-wrapper">
2644                <div class="js-toogleRemover a-linkArrow -up text-primary fill-primary" @click="open = !open" :class="open ? 'text-primary': 'text-blue'">
2645                    <div class="transform -rotate-90 inline-block text-primary"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 185.343 185.343" fill="currentColor" style="enable-background:new 0 0 185.343 185.343" xml:space="preserve" class="fill-current" width="10" height="10" role="img"><path d="M51.707 185.343a10.692 10.692 0 0 1-7.593-3.149 10.724 10.724 0 0 1 0-15.175l74.352-74.347L44.114 18.32c-4.194-4.194-4.194-10.987 0-15.175 4.194-4.194 10.987-4.194 15.18 0l81.934 81.934c4.194 4.194 4.194 10.987 0 15.175l-81.934 81.939a10.678 10.678 0 0 1-7.587 3.15z"/><title>chevron</title></svg>
2646</div>
2647                    <span>Schliessen</span></div>
2648            </div>
2649        </div>
2650    </div>
2651</div>
2652                    <div class="control">
2653    <input type="hidden"
2654           value=""
2655           name="g-recaptcha-response"
2656    >
2657</div>
2658                </div>
2659
2660                <div class="flex justify-between items-center w-full mt-1">
2661                    <button x-show="step === 1" type="button" @click="nextStep()" class="btn gap-2 btn-primary w-full max-w-full md:max-w-[180px] justify-center white" :disabled="isChecking">
2662                        <span x-text="'Weiter'"></span>
2663                        <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 21 21" fill="none" aria-hidden="true">
2664<path d="M4.25 10.5503L16.75 10.5503M16.75 10.5503L11.125 4.92529M16.75 10.5503L11.125 16.1753" stroke="#D72B8A" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
2665</svg>
2666                    </button>
2667                    <a x-show="step === 2 && !hasPasskey" @click.prevent="goBack()" class="w-full flex gap-2 items-center text-center cursor-pointer back-button">
2668                        <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 21" fill="none" aria-hidden="true">
2669<path fill-rule="evenodd" clip-rule="evenodd" d="M16.875 10.5503C16.875 10.8955 16.5952 11.1753 16.25 11.1753L5.25888 11.1753L9.81694 15.7334C10.061 15.9774 10.061 16.3732 9.81694 16.6172C9.57286 16.8613 9.17714 16.8613 8.93306 16.6172L3.30806 10.9922C3.06398 10.7482 3.06398 10.3524 3.30806 10.1084L8.93306 4.48335C9.17714 4.23927 9.57286 4.23927 9.81694 4.48335C10.061 4.72743 10.061 5.12316 9.81694 5.36723L5.25888 9.92529L16.25 9.92529C16.5952 9.92529 16.875 10.2051 16.875 10.5503Z" fill="#D72B8A"/>
2670</svg>
2671                        <span>Zurück</span>
2672                    </a>
2673                    <button x-show="step === 2 && !hasPasskey" type="button"  @click="submitForm()" class="btn btn-primary w-full max-w-full md:max-w-[180px] justify-center white" name="send" style="display:none;">
2674                        <span>Anmelden</span>
2675                    </button>
2676                </div>
2677
2678                <div>
2679                    <template x-if="displayErrorMessage">
2680                        <p class="text-red flex items-center">
2681                                    <span class="inline-block w-8 h-8 mr-3">
2682                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
2683                                             stroke="currentColor">
2684                                          <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
2685                                                d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/>
2686                                        </svg>
2687                                    </span>
2688                            <template x-for="errorMessage in errorMessages">
2689                                <span x-html="errorMessage"></span>
2690                            </template>
2691                        </p>
2692                    </template>
2693                </div>
2694            </fieldset>
2695        </form>
2696    </div>
2697    <div class="w-full">
2698        <p class="my-4 text-sm text-gray-900 px-5 text-recaptcha">
2699        Dieses Formular ist durch reCAPTCHA geschützt - es gelten die <a class="underline" href="https://policies.google.com/privacy" target="_blank" rel="noopener">Google-Datenschutzbestimmungen</a> und <a class="underline" href="https://policies.google.com/terms" target="_blank" rel="noopener">Geschäftsbedingungen</a>.</p>
2700    </div>
2701    
2701<script>
2702        function initCustomerLoginForm() {
2703            return {
2704                errors: 0,
2705                emailError: '',
2706                passwordError: '',
2707                hasCaptchaToken: 0,
2708                displayErrorMessage: false,
2709                errorMessages: [],
2710                step: 1,
2711                mainTitle: 'Anmelden oder Benutzerkonto erstellen ',
2712                infoText: 'Geben Sie Ihre E-Mail-Adresse ein, um sich anzumelden oder ein Benutzerkonto zu erstellen.',
2713                hasPasskey: false,
2714                isChecking: false,
2715                checkEmailUrl: 'https://www.vedia.ch/refusion_webauthn/ajax/checkEmail/',
2716                createAccountUrl: 'https://www.vedia.ch/customer/account/create/',
2717                setErrorMessages(messages) {
2718                    this.errorMessages = [messages];
2719                    this.displayErrorMessage = this.errorMessages.length;
2720                    if (this.step === 2) {
2721                        this.passwordError = 'Bitte\u0020geben\u0020Sie\u0020ein\u0020g\u00FCltiges\u0020Passwort\u0020ein';
2722                    }
2723                },
2724                nextStep() {
2725                    if (!this.validateEmail()) return;
2726                    this.isChecking = true;
2727                    const email = document.querySelector('#email').value;
2728                    this.checkIfCustomerIsLogged(email)
2729                        .catch(err => {
2730                            console.error('Customer check failed:', err);
2731                            this.setErrorMessages('An error occurred. Please try again.');
2732                            this.isChecking = false;
2733                        });
2734                },
2735                validateEmail() {
2736                    const emailInput = document.querySelector('#email');
2737                    if (!emailInput.value.trim() || !emailInput.checkValidity()) {
2738                        this.emailError = 'Bitte\u0020g\u00FCltige\u0020E\u002DMail\u0020Adresse\u0020eingeben';
2739                        return false;
2740                    }
2741                    this.emailError = '';
2742                    return true;
2743                },
2744                validatePassword() {
2745                    const passInput = document.querySelector('#pass');
2746                    if (!passInput.value.trim()) {
2747                        this.passwordError = 'Bitte\u0020geben\u0020Sie\u0020ein\u0020g\u00FCltiges\u0020Passwort\u0020ein';
2748                        return false;
2749                    }
2750                    this.passwordError = '';
2751                    return true;
2752                },
2753                checkIfCustomerIsLogged(email) {
2754                    return fetch(this.checkEmailUrl, {
2755                        method: 'POST',
2756                        headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' },
2757                        body: new URLSearchParams({ email })
2758                    })
2759                        .then(response => response.json())
2760                        .then(async customerCheckResult => {
2761                            if (customerCheckResult.success && !customerCheckResult.exists) {
2762                                // Customer doesn't exist, redirect to registration
2763                                window.location.href = this.createAccountUrl + '?email=' + encodeURIComponent(email);
2764                                return;
2765                            }
2766
2767                            this.mainTitle = 'Willkommen zurück!';
2768                            this.infoText = '';
2769
2770                            const result = await new Promise((resolve, reject) => {
2771                                document.dispatchEvent(new CustomEvent('webauthn:check', {
2772                                    detail: { email: email, resolve, reject }
2773                                }));
2774                            });
2775
2776                            if (result.success && result.enrolled) {
2777                                this.hasPasskey = true;
2778                            }
2779
2780                            this.step = 2;
2781                            this.isChecking = false;
2782                        });
2783                },
2784                async loginWithPasskey() {
2785                    const emailInput = document.querySelector('#email');
2786                    const email = emailInput.value;
2787
2788                    try {
2789                        await new Promise((resolve, reject) => {
2790                            document.dispatchEvent(new CustomEvent('webauthn:login', {
2791                                detail: { email: email, resolve, reject }
2792                            }));
2793                        });
2794                    } catch (error) {
2795
2796                    }
2797                },
2798                loginWithPassword() {
2799                    this.hasPasskey = false;
2800                },
2801                submitForm() {
2802                    const $form = document.querySelector('#customer-login-form');
2803                        if (!this.hasCaptchaToken) {
2804        this.errors = 1;
2805
2806        const lockSubmitButton = () => {
2807            $form.querySelector('[type="submit"]')?.setAttribute('disabled', true);
2808        };
2809
2810        const failCaptcha = (errorMessage, exception = null) => {
2811            this.errors = 1;
2812            lockSubmitButton();
2813
2814            if (this.setErrorMessages) {
2815                this.setErrorMessages([errorMessage]);
2816                this.displayErrorMessage = true;
2817            } else {
2818                window.dispatchMessages && window.dispatchMessages([{ type: "error", text: errorMessage }], 5000);
2819            }
2820
2821            if (exception) {
2822                console.error(
2823                    exception ||
2824                    'An unknown error occurred during ReCaptcha validation. Are the tokens and the domain correctly set up in the Google console?'
2825                );
2826            }
2827        };
2828
2829        const executeGreCaptcha = () => {
2830            grecaptcha.ready(() => {
2831                grecaptcha.execute(
2832                    '6LeIilUeAAAAAI0woiL9D4LhTYABSJ1fZdBmfMJj',
2833                    {action: 'submit'}
2834                ).then((token) => {
2835                    const tokenElement = $form['g\u002Drecaptcha\u002Dresponse']
2836                        || $form.querySelector('input[name="g-recaptcha-response"]');
2837
2838                    if (tokenElement && token && token.length > 0) {
2839                        tokenElement.value = token;
2840                        this.errors = 0;
2841                        this.hasCaptchaToken = 1;
2842                        (this.submitForm || $form.submit).call(this);
2843                    } else {
2844                        failCaptcha(
2845                            tokenElement
2846                                ? 'ReCaptcha\u0020validation\u0020failed.\u0020Please\u0020refresh\u0020the\u0020page\u0020and\u0020try\u0020again.'
2847                                : 'Your\u0020form\u0020does\u0020not\u0020have\u0020the\u0020required\u0020fields\u0020for\u0020recaptcha\u0020to\u0020work.'
2848                        );
2849                    }
2850                }).catch((exception) => {
2851                    failCaptcha(
2852                        'ReCaptcha\u0020validation\u0020failed\u0020due\u0020to\u0020a\u0020technical\u0020error.\u0020Please\u0020refresh\u0020the\u0020page\u0020and\u0020try\u0020again.',
2853                        exception
2854                    );
2855                });
2856            });
2857        };
2858
2859        if (window.grecaptcha) {
2860            executeGreCaptcha();
2861        } else {
2862            const recaptchaUrl = "https://www.google.com/recaptcha/api.js?render=6LeIilUeAAAAAI0woiL9D4LhTYABSJ1fZdBmfMJj&lang=de";
2863            const script = document.createElement('script');
2864            script.setAttribute('type', 'text/javascript');
2865            script.setAttribute('src', recaptchaUrl);
2866            document.head.appendChild(script);
2867
2868            script.addEventListener('load', executeGreCaptcha, false);
2869        }
2870    }
2871
2872                    if (this.errors === 0) {
2873                        if (!this.validatePassword()) return;
2874                        $form.submit();
2875                    }
2876                },
2877                goBack() {
2878                    this.step = 1;
2879                    this.hasPasskey = false;
2880                    this.mainTitle = 'Anmelden oder Benutzerkonto erstellen ';
2881                    this.infoText = 'Geben Sie Ihre E-Mail-Adresse ein, um sich anzumelden oder ein Benutzerkonto zu erstellen.';
2882                }
2883            }
2884        }
2885    </script>
2885
2886</div>
2887
2888</div></div></div></div></main><footer class="page-footer"><div class="footer content"><div class="bg-white flex items-center justify-center py-8 gap-4 w-full">
2889    <a href="/i-impressum/"
2890   class="text-gray text-sm font-normal">
2891    Impressum
2892</a>
2893<a href="/i-sicherheit-datenschutz/"
2894   class="text-gray text-sm font-normal">
2895    Datenschutz
2896</a></div>
2897
2898</div></footer>
2898<script>
2899    (function () {
2900        const badgeDiv = document.getElementById("google_customer_review_badge_general");
2901        if (badgeDiv !== null)
2902        {
2903            const badge = document.createElement("g:ratingbadge");
2904            badge.setAttribute("merchant_id", "100551455");
2905
2906            badgeDiv.appendChild(badge);
2907        }
2908    })();
2909</script>
2909
2910
2911<script src="https://apis.google.com/js/platform.js" async defer></script>
2911
2912
2913<script>
2914    window.___gcfg = {
2915        lang: 'de'
2916    };
2917</script>
vendor: 1 bytes, line 2917
2917
2918<script>
2919    if (typeof Alpine !== 'undefined' && Alpine.data) {
2920        Alpine.data('cmsAccordionState', () => ({
2921            selected: false
2922        }));
2923    } else {
2924        document.addEventListener('alpine:init', () => {
2925            Alpine.data('cmsAccordionState', () => ({
2926                selected: false
2927            }));
2928        });
2929    }
2930</script>
2930
2931
2932<script>
2933    (() => {
2934        const classBindings = {
2935            accordionClass: (root, element, selected) => selected
2936                ? element.dataset.selectedClass || root.dataset.selectedClass
2937                : element.dataset.unselectedClass || root.dataset.unselectedClass,
2938            marginClass: (root, element, selected) => selected ? 'mb-4' : 'mb-0',
2939            transparentHeaderClass: (root, element, selected) => selected
2940                ? 'bg-white sm:bg-transparent'
2941                : 'bg-gray-100 sm:bg-transparent',
2942            borderedTransparentHeaderClass: (root, element, selected) => selected
2943                ? 'bg-white sm:bg-transparent border-b-0 border-x-0'
2944                : 'bg-gray-100 sm:bg-transparent border-b border-x',
2945            primaryBorderedTransparentHeaderClass: (root, element, selected) => selected
2946                ? 'bg-white sm:bg-transparent border-b-0 border-x-0'
2947                : 'bg-primary-lighter sm:bg-transparent border-b border-x',
2948            borderXTransparentHeaderClass: (root, element, selected) => selected
2949                ? 'bg-white sm:bg-transparent border-x-0'
2950                : 'bg-gray-100 sm:bg-transparent border-x'
2951        };
2952
2953        const splitClasses = value => (value || '').split(/\s+/).filter(Boolean);
2954        const findAll = (root, selector) => [
2955            ...(root.matches(selector) ? [root] : []),
2956            ...root.querySelectorAll(selector)
2957        ];
2958
2959        const setClasses = (element, selectedClasses, unselectedClasses, selected) => {
2960            element.classList.remove(...splitClasses(selectedClasses), ...splitClasses(unselectedClasses));
2961            element.classList.add(...splitClasses(selected ? selectedClasses : unselectedClasses));
2962        };
2963
2964        const updateAccordion = root => {
2965            const selected = root.dataset.cmsAccordionSelected === 'true';
2966
2967            findAll(root, '[data-cms-accordion-class]').forEach(element => {
2968                const binding = element.dataset.cmsAccordionClass;
2969                const resolver = classBindings[binding];
2970
2971                if (!resolver) {
2972                    return;
2973                }
2974
2975                setClasses(
2976                    element,
2977                    resolver(root, element, true),
2978                    resolver(root, element, false),
2979                    selected
2980                );
2981            });
2982
2983            findAll(root, '[data-cms-accordion-icon]').forEach(icon => {
2984                icon.classList.toggle('-rotate-180', selected);
2985                icon.classList.toggle('rotate-0', !selected);
2986            });
2987
2988            findAll(root, '[data-cms-accordion-content]').forEach(content => {
2989                content.style.maxHeight = selected ? `${content.scrollHeight}px` : '';
2990                content.removeAttribute('x-cloak');
2991            });
2992        };
2993
2994        const initAccordion = root => {
2995            if (root.dataset.cmsAccordionInitialized === 'true') {
2996                updateAccordion(root);
2997                return;
2998            }
2999
3000            root.dataset.cmsAccordionInitialized = 'true';
3001            root.dataset.cmsAccordionSelected = root.dataset.cmsAccordionSelected || 'false';
3002
3003            findAll(root, '[data-cms-accordion-toggle]').forEach(toggle => {
3004                toggle.addEventListener('click', () => {
3005                    root.dataset.cmsAccordionSelected = root.dataset.cmsAccordionSelected === 'true' ? 'false' : 'true';
3006                    updateAccordion(root);
3007                });
3008            });
3009
3010            updateAccordion(root);
3011        };
3012
3013        const initAccordions = () => {
3014            document.querySelectorAll('[data-cms-accordion]').forEach(initAccordion);
3015        };
3016
3017        const updateFooterCollapse = root => {
3018            const opened = root.dataset.cmsFooterOpened === 'true';
3019
3020            findAll(root, '[data-cms-footer-icon]').forEach(icon => {
3021                icon.classList.toggle('rotate-180', opened);
3022                icon.classList.toggle('justify-end', opened);
3023            });
3024
3025            findAll(root, '[data-cms-footer-content]').forEach(content => {
3026                content.classList.remove('block', 'hidden', 'sm:block');
3027                content.classList.add(...splitClasses(opened ? 'block' : 'hidden sm:block'));
3028            });
3029
3030            findAll(root, '[data-cms-footer-class-open]').forEach(element => {
3031                const openClasses = element.dataset.cmsFooterClassOpen;
3032                const closedClasses = element.dataset.cmsFooterClassClosed;
3033
3034                element.classList.remove(...splitClasses(openClasses), ...splitClasses(closedClasses));
3035                element.classList.add(...splitClasses(opened ? openClasses : closedClasses));
3036            });
3037        };
3038
3039        const initFooterCollapse = root => {
3040            if (root.dataset.cmsFooterInitialized === 'true') {
3041                updateFooterCollapse(root);
3042                return;
3043            }
3044
3045            root.dataset.cmsFooterInitialized = 'true';
3046            root.dataset.cmsFooterOpened = root.dataset.cmsFooterOpened || 'false';
3047
3048            findAll(root, '[data-cms-footer-toggle]').forEach(toggle => {
3049                toggle.addEventListener('click', () => {
3050                    root.dataset.cmsFooterOpened = root.dataset.cmsFooterOpened === 'true' ? 'false' : 'true';
3051                    updateFooterCollapse(root);
3052                });
3053            });
3054
3055            updateFooterCollapse(root);
3056        };
3057
3058        const initFooterCollapses = () => {
3059            document.querySelectorAll('[data-cms-footer-collapse]').forEach(initFooterCollapse);
3060        };
3061
3062        const initCmsInteractions = () => {
3063            initAccordions();
3064            initFooterCollapses();
3065        };
3066
3067        document.addEventListener('DOMContentLoaded', initCmsInteractions);
3068        window.addEventListener('load', initCmsInteractions);
3069        window.addEventListener('private-content-loaded', initCmsInteractions);
3070        window.addEventListener('resize', initCmsInteractions);
3071    })();
3072</script>
3072
3073
3074<script>
3075    (() => {
3076        function src_default(Alpine) {
3077            Alpine.directive("intersect", Alpine.skipDuringClone((el, { value, expression, modifiers }, { evaluateLater, cleanup }) => {
3078                let evaluate = evaluateLater(expression);
3079                let options = {
3080                    rootMargin: getRootMargin(modifiers),
3081                    threshold: getThreshold(modifiers)
3082                };
3083                let observer = new IntersectionObserver((entries) => {
3084                    entries.forEach((entry) => {
3085                        if (entry.isIntersecting === (value === "leave"))
3086                            return;
3087                        evaluate();
3088                        modifiers.includes("once") && observer.disconnect();
3089                    });
3090                }, options);
3091                observer.observe(el);
3092                cleanup(() => {
3093                    observer.disconnect();
3094                });
3095            }));
3096        }
3097        function getThreshold(modifiers) {
3098            if (modifiers.includes("full"))
3099                return 0.99;
3100            if (modifiers.includes("half"))
3101                return 0.5;
3102            if (!modifiers.includes("threshold"))
3103                return 0;
3104            let threshold = modifiers[modifiers.indexOf("threshold") + 1];
3105            if (threshold === "100")
3106                return 1;
3107            if (threshold === "0")
3108                return 0;
3109            return Number(`.${threshold}`);
3110        }
3111        function getLengthValue(rawValue) {
3112            let match = rawValue.match(/^(-?[0-9]+)(px|%)?$/);
3113            return match ? match[1] + (match[2] || "px") : void 0;
3114        }
3115        function getRootMargin(modifiers) {
3116            const key = "margin";
3117            const fallback = "0px 0px 0px 0px";
3118            const index = modifiers.indexOf(key);
3119            if (index === -1)
3120                return fallback;
3121            let values = [];
3122            for (let i = 1; i < 5; i++) {
3123                values.push(getLengthValue(modifiers[index + i] || ""));
3124            }
3125            values = values.filter((v) => v !== void 0);
3126            return values.length ? values.join(" ").trim() : fallback;
3127        }
3128
3129        document.addEventListener("alpine:init", () => {
3130            window.Alpine.plugin(src_default);
3131        });
3132    })();
3133    //# sourceURL=alpine-intersect.js
3134</script>
3134
3135
3136
3137<script type="module"
3138        src="https://www.vedia.ch/static/version1790063611/frontend/Vedia/hyva/de_CH/Hyva_Theme/js/alpine3.min.js"
3139        defer
3140        crossorigin
3141></script>
vendor: 1 bytes, line 3141
3141
3142<script>
3143    function dispatchMessages(messages, hideAfter) {
3144        const messagesEvent = new CustomEvent("messages-loaded", {
3145            detail: {
3146                messages: messages,
3147                hideAfter: hideAfter
3148            }
3149        });
3150        window.dispatchEvent(messagesEvent);
3151    }
3152
3153        if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) {
3154        console.warn("Hyvä helpers are not loaded yet. Make sure they are included before this script");
3155    }
3156
3157    (function( hyva, undefined ) {
3158
3159        hyva.initFormKey = () => {
3160            if (typeof hyva.getFormKey !== 'function') return;
3161
3162            const formKey = hyva.getFormKey();
3163            if (!formKey) return;
3164
3165            document.querySelectorAll('input[name="form_key"]').forEach((input) => {
3166                input.value = formKey;
3167            });
3168        }
3169
3170        hyva.initMessages = () => {
3171            try {
3172                const messages = hyva.getCookie('mage-messages');
3173                window.mageMessages = messages ? JSON.parse(decodeURIComponent(messages).replace(/\+/g, ' ')) : [];
3174
3175                dispatchMessages(window.mageMessages);
3176
3177                                // empty `mage-messages` cookie
3178                const skipSetDomain = true;
3179                hyva.setCookie('mage-messages','', -1, skipSetDomain);
3180
3181            } catch (error) {
3182                console.warn('Error parsing Cookie Messages:', error);
3183            }
3184        }
3185
3186        window.addEventListener('DOMContentLoaded', hyva.initFormKey);
3187
3188        window.addEventListener('pageshow', (event) => {
3189            if (event.persisted) {
3190                hyva.initFormKey();
3191            }
3192        });
3193
3194        hyva.alpineInitialized(hyva.initMessages)
3195    }( window.hyva = window.hyva || {} ));
3196    //# sourceURL=hyva-cookies.js
3197</script>
vendor: 1 bytes, line 3197
3197
3198<script>
3199    'use strict';
3200    {
3201        const private_content_key = 'mage-cache-storage';
3202        const private_content_expire_key = 'mage-cache-timeout';
3203        const private_content_version_key = 'private_content_version';
3204        const section_data_ids_key = 'section_data_ids';
3205        const mage_cache_session_id_key = 'mage-cache-sessid';
3206        const last_visited_store_key = 'last_visited_store';
3207
3208        const ttl = 3600;
3209
3210        if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) {
3211            console.warn("Hyvä helpers are not loaded yet. Make sure they are included before this script");
3212        }
3213
3214        function loadSectionData () {
3215            const browserStorage = hyva.getBrowserStorage();
3216            if (!browserStorage) {
3217                typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
3218                    [{
3219                        type: "warning",
3220                        text: "Please enable LocalStorage in your browser."
3221                    }]
3222                );
3223                return;
3224            }
3225            try {
3226                let isInvalid = false;
3227
3228                if (hyva.getCookie(last_visited_store_key) !== CURRENT_STORE_CODE) {
3229                    isInvalid = true;
3230                }
3231                hyva.setCookie(last_visited_store_key, CURRENT_STORE_CODE, false, false);
3232
3233                if (window.location.pathname === '/checkout/onepage/success/') {
3234                    isInvalid = true;
3235                }
3236
3237                if (!hyva.getCookie(mage_cache_session_id_key)) {
3238                    isInvalid = true;
3239                    browserStorage.removeItem(private_content_key);
3240                    const skipSetDomain = true;
3241                    const days = false;
3242                    hyva.setCookie(mage_cache_session_id_key, true, days, skipSetDomain)
3243                }
3244
3245                const cookieVersion = hyva.getCookie(private_content_version_key);
3246                const storageVersion = browserStorage.getItem(private_content_version_key);
3247
3248                if (cookieVersion && !storageVersion || cookieVersion !== storageVersion) {
3249                    isInvalid = true;
3250                }
3251
3252                const privateContentExpires = browserStorage.getItem(private_content_expire_key);
3253                if (privateContentExpires && new Date(privateContentExpires) < new Date()) {
3254                    browserStorage.removeItem(private_content_key);
3255                }
3256
3257                if (isInvalid && cookieVersion) {
3258                    fetchPrivateContent([]);
3259                } else if (cookieVersion && storageVersion && cookieVersion === storageVersion) {
3260                    const privateContent = JSON.parse(browserStorage.getItem(private_content_key));
3261                    if (
3262                        privateContent &&
3263                        privateContentExpires &&
3264                        privateContent.cart &&
3265                        privateContent.customer
3266                    ) {
3267                        dispatchPrivateContent(privateContent);
3268                    } else {
3269                        fetchPrivateContent([]);
3270                    }
3271                } else {
3272                    if (document.getElementById('default-section-data')) {
3273                        const privateContent = JSON.parse(document.getElementById('default-section-data').innerText.trim());
3274                        dispatchPrivateContent(privateContent);
3275                } else {
3276                    dispatchPrivateContent({});
3277                }
3278                }
3279
3280            } catch (error) {
3281                console.warn('Error retrieving Private Content:', error);
3282            }
3283        }
3284
3285        hyva.alpineInitialized(loadSectionData)
3286        window.addEventListener('reload-customer-section-data', loadSectionData);
3287
3288        window.processSectionDataBeforeDispatch = window.processSectionDataBeforeDispatch || (data => data);
3289
3290        function dispatchPrivateContent(data) {
3291
3292            const privateContentEvent = new CustomEvent("private-content-loaded", {
3293                detail: {
3294                    data: window.processSectionDataBeforeDispatch(data)
3295                }
3296            });
3297            window.dispatchEvent(privateContentEvent);
3298        }
3299
3300        function fetchPrivateContent(sections) {
3301            fetch(`${BASE_URL}customer/section/load/?sections=${encodeURIComponent(sections.join(','))}`, {
3302                method: 'GET',
3303                headers: {
3304                    'Content-Type': 'application/json',
3305                    'X-Requested-With': 'XMLHttpRequest'
3306                }
3307            })
3308                .then(response => response.ok && response.json())
3309                .then(
3310                    data => {
3311                        if (data) {
3312                            try {
3313                                const browserStorage = hyva.getBrowserStorage();
3314
3315                                // merge new data preserving non-invalidated sections
3316                                const oldSectionData = JSON.parse(browserStorage.getItem(private_content_key) || '{}') || {};
3317
3318                                if ((! data.cart || ! data.cart.cartId) && oldSectionData['checkout-data']) {
3319                                    delete oldSectionData['checkout-data'];
3320                                }
3321                                const newSectionData = Object.assign(oldSectionData, data);
3322
3323                                dispatchPrivateContent(newSectionData);
3324
3325                                // don't persist messages, they've been dispatched already
3326                                if (newSectionData.messages && newSectionData.messages.messages ) {
3327                                    newSectionData.messages.messages = [];
3328                                }
3329
3330                                browserStorage.setItem(private_content_key, JSON.stringify(newSectionData));
3331
3332                                const expiresAt = new Date(Date.now() + (ttl * 1000)).toISOString();
3333                                browserStorage.setItem(private_content_expire_key, expiresAt);
3334
3335                                const newCookieVersion = hyva.getCookie(private_content_version_key);
3336                                browserStorage.setItem(private_content_version_key, newCookieVersion);
3337
3338                                // We don't need the section_data_ids in Hyvä, but we store them for compatibility
3339                                // with Luma Fallback. Otherwise, not all sections are loaded in Luma Checkout
3340                                hyva.setCookie(
3341                                    section_data_ids_key,
3342                                    JSON.stringify(
3343                                        Object.keys(data).reduce((sectionDataIds, sectionKey) => {
3344                                            sectionDataIds[sectionKey] = data[sectionKey]['data_id'];
3345                                            return sectionDataIds;
3346                                        }, {})
3347                                    ),
3348                                    false,
3349                                    true
3350                                );
3351                            } catch (error) {
3352                                console.warn("Couldn't store privateContent", error);
3353                            }
3354                        }
3355                    }
3356                );
3357        }
3358    }
3359</script>
vendor: 1 bytes, line 3359
3359
3360<script>
3361    (() => {
3362        document.addEventListener('submit', event => event.target.action = event.target.action.replace('%25uenc%25', hyva.getUenc()));
3363    })()
3364</script>
vendor: 1 bytes, line 3364
3364
3365<script>
3366    (events => {
3367        const dispatchUserInteractionEvent = () => {
3368            events.forEach(type => window.removeEventListener(type, dispatchUserInteractionEvent))
3369            window.dispatchEvent(new Event('init-external-scripts'))
3370        };
3371        events.forEach(type => window.addEventListener(type, dispatchUserInteractionEvent, {once: true, passive: true}))
3372    })(['touchstart', 'mousemove', 'wheel', 'scroll', 'keydown']);
3373    //# sourceURL=hyva-init-external-scripts.js
3374</script>
vendor: 1 bytes, line 3374
3374
3375<script>
3376    'use strict';
3377
3378    (function() {
3379
3380        const recaptchaUrl = "https://www.google.com/recaptcha/api.js?render=6LeIilUeAAAAAI0woiL9D4LhTYABSJ1fZdBmfMJj&lang=de";
3381
3382        const loadRecaptchaScript = (event) => {
3383            if (typeof window.grecaptcha !== 'undefined' || !event.target.form) {
3384                return
3385            }
3386
3387            let script = document.createElement('script');
3388            script.setAttribute('type', 'text/javascript');
3389            script.setAttribute('src', recaptchaUrl);
3390            document.head.appendChild(script);
3391        }
3392
3393        document.body.addEventListener("input", loadRecaptchaScript, { once: true });
3394        document.body.addEventListener("focus", loadRecaptchaScript, { once: true });
3395
3396    }());
3397
3398</script>
3398
3399
3400<div
3401    id="tab-title-watcher"
3402    x-data="tabTitleWatcher"
3403    data-inactive-emoji="&#x1F44B;"
3404    data-inactive-text="Sind&#x20;Sie&#x20;noch&#x20;da&#x3F;&#x20;Unsere&#x20;Angebote&#x20;warten&#x20;auf&#x20;Sie"
3405>
3406</div>
3407
3408<script>
3409    document.addEventListener('alpine:init', () => {
3410        Alpine.data('tabTitleWatcher', () => ({
3411            originalTitle: document.title,
3412            inactiveTitle: '',
3413            scrollPosition: 0,
3414            intervalId: null,
3415            step: 3,
3416            delay: 100,
3417
3418            init() {
3419                const emoji = this.$el.dataset.inactiveEmoji || '';
3420                const text  = this.$el.dataset.inactiveText  || '';
3421                this.inactiveTitle = `${emoji} ${text}   `;
3422
3423                document.addEventListener('visibilitychange', () => {
3424                    if (document.hidden) {
3425                        this.startLoop();
3426                    } else {
3427                        this.stopLoop();
3428                        document.title = this.originalTitle;
3429                    }
3430                });
3431            },
3432
3433            startLoop() {
3434                if (this.intervalId) return;
3435
3436                this.scrollPosition = 0;
3437                let fullText = this.inactiveTitle;
3438
3439                this.intervalId = setInterval(() => {
3440                    const len = fullText.length;
3441                    const display = fullText.slice(this.scrollPosition) + fullText.slice(0, this.scrollPosition);
3442                    document.title = display;
3443
3444                    this.scrollPosition = (this.scrollPosition + this.step) % len;
3445                }, this.delay);
3446            },
3447
3448            stopLoop() {
3449                if (this.intervalId) {
3450                    clearInterval(this.intervalId);
3451                    this.intervalId = null;
3452                }
3453            }
3454        }));
3455    });
3456</script>
3456
3457
3458
3459<script>
3460    function privacyPolicyModal() {
3461        return {
3462            open: false,
3463            init() {
3464                this.$nextTick(() => {
3465                    this.$refs.backdrop.addEventListener('click', (e) => {
3466                        if (e.target === this.$refs.backdrop) this.closeModal();
3467                    });
3468                });
3469            },
3470            stickyHeader: window.pageYOffset > 1200,
3471            openModal() {
3472                this.open = true;
3473            },
3474            closeModal() {
3475                this.open = false;
3476            },
3477            isModalOpen() {
3478                return this.isOpen;
3479            },
3480            getOpenOpacityClasses() {
3481                if (this.open)
3482                    return 'opacity-100 pointer-events-auto';
3483                else
3484                    return 'opacity-0 pointer-events-none';
3485            }
3486        };
3487    }
3488    window.addEventListener('alpine:init', () => Alpine.data('privacyPolicyModal', privacyPolicyModal),)
3489</script>
vendor: 1 bytes, line 3489
3489
3490<script>
3491    (function () {
3492        'use strict';
3493
3494        const partUrl = 'https://www.vedia.ch/refusion_webauthn/ajax/';
3495        const accountUrl = 'https://www.vedia.ch/customer/account/';
3496
3497        const api = (url, data) => {
3498            return fetch(url, {
3499                method: 'POST',
3500                headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},
3501                body: new URLSearchParams(data)
3502            }).then(response => response.json());
3503        };
3504
3505        const bufferToBase64Url = (input) => {
3506            const bytes = input instanceof ArrayBuffer
3507                ? new Uint8Array(input)
3508                : (input instanceof Uint8Array ? input : new Uint8Array(input.buffer || input));
3509            let binary = '';
3510            for (let i = 0; i < bytes.length; i++) binary += String.fromCharCode(bytes[i]);
3511            const b64 = btoa(binary);
3512            return b64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
3513        };
3514
3515        const b64urlToBuffer = (b64url) => {
3516            const pad = '='.repeat((4 - (b64url.length % 4)) % 4);
3517            const base64 = (b64url + pad).replace(/-/g, '+').replace(/_/g, '/');
3518            const raw = atob(base64);
3519            const buffer = new ArrayBuffer(raw.length);
3520            const view = new Uint8Array(buffer);
3521            for (let i = 0; i < raw.length; ++i) view[i] = raw.charCodeAt(i);
3522            return buffer;
3523        };
3524
3525        document.addEventListener('webauthn:check', async (e) => {
3526            const {email, resolve, reject} = e.detail;
3527            try {
3528                const result = await api(partUrl + 'check', {email});
3529                resolve(result);
3530            } catch (error) {
3531                reject(error);
3532            }
3533        });
3534
3535        document.addEventListener('webauthn:login', async (e) => {
3536            const {email, resolve, reject} = e.detail;
3537            try {
3538                // Your existing login logic here...
3539                const result = await performPasskeyLogin(email);
3540                resolve(result);
3541            } catch (error) {
3542                reject(error);
3543            }
3544        });
3545
3546        // Exported function to perform passkey login
3547        const performPasskeyLogin = async (email) => {
3548            return api(partUrl + 'options', {email}).then(opts => {
3549                if (!opts.success) throw new Error(opts.message || 'Error');
3550                const publicKey = opts.publicKey;
3551                publicKey.challenge = b64urlToBuffer(publicKey.challenge);
3552                if (publicKey.allowCredentials) {
3553                    publicKey.allowCredentials = publicKey.allowCredentials.map(item => ({...item, id: b64urlToBuffer(item.id)}));
3554                }
3555                return navigator.credentials.get({publicKey});
3556            }).then(assertion => {
3557                const data = {
3558                    email,
3559                    assertion: JSON.stringify({
3560                        id: assertion.id,
3561                        type: assertion.type,
3562                        rawId: bufferToBase64Url(assertion.rawId),
3563                        response: {
3564                            authenticatorData: bufferToBase64Url(assertion.response.authenticatorData),
3565                            clientDataJSON: bufferToBase64Url(assertion.response.clientDataJSON),
3566                            signature: bufferToBase64Url(assertion.response.signature),
3567                            userHandle: assertion.response.userHandle ? bufferToBase64Url(assertion.response.userHandle) : null,
3568                        }
3569                    })
3570                };
3571                return api(partUrl + 'verify', data);
3572            }).then(result => {
3573                if (result && result.success) {
3574                    window.location.href = result.redirect || accountUrl;
3575                } else if (result && result.message) {
3576                    throw new Error(result.message);
3577                }
3578                return result;
3579            });
3580        };
3581    })();
3582</script>
vendor: 1 bytes, line 3582
3582
3583<script>
3584    (function () {
3585        const modals = [];
3586                let lastHide = 0;
3587
3588                function resolveElement($refs, value) {
3589            if (!value) return null;
3590                        if (value instanceof Element) return value;
3591                        if (typeof value === 'string') {
3592                try {
3593                    return ($refs && $refs[value]) || document.querySelector(value) || null;
3594                } catch (e) {}
3595            }
3596            return null;
3597        }
3598
3599                function determineTrigger($refs, dialog, trigger) {
3600                        if (!trigger && dialog?.target instanceof HTMLElement) {
3601                return dialog.target;
3602            }
3603
3604                        if (typeof dialog === 'string' && trigger?.target instanceof HTMLElement) {
3605                return trigger.target;
3606            }
3607
3608            return resolveElement($refs, trigger);
3609        }
3610
3611                function setFocusFirstElement(dialogElement) {
3612            if (!dialogElement) return;
3613
3614            window.setTimeout(() => {
3615                const candidates = dialogElement.querySelectorAll('[x-focus-first]');
3616                for (const candidate of candidates) {
3617                    if (candidate.closest('dialog') === dialogElement) {
3618                        candidate.focus();
3619                        return;
3620                    }
3621                }
3622            }, 50);
3623        }
3624
3625        window.hyva.modal = function(options = {}) {
3626                        if (this.$el && this.$el.dataset && this.$el.dataset.options) {
3627                try {
3628                    options = Object.assign(options, JSON.parse(this.$el.dataset.options || '{}'));
3629                } catch (e) {
3630                    throw new Error('Cannot read the dialog options from the data-options attribute: not valid JSON');
3631                }
3632            }
3633
3634            const config = Object.assign({
3635                dialog: 'dialog',                 duration: 300,                 transitionEnter: 'transition ease-out duration-300',
3636                transitionEnterStart: 'opacity-0',
3637                transitionEnterEnd: 'opacity-100',
3638                transitionLeave: 'transition ease-in duration-300',
3639                transitionLeaveStart: 'opacity-100',
3640                transitionLeaveEnd: 'opacity-0',
3641            }, options);
3642
3643            return {
3644                opened: {},
3645                show(dialog, trigger) {
3646                    const name = typeof dialog === 'string' ? dialog : config.dialog;
3647                    if (!name || this.opened[name]) return;
3648
3649                    this.opened[name] = true;
3650                    const focusTarget = determineTrigger(this.$refs, dialog, trigger);
3651                    const dialogEl = this.$refs && this.$refs[name];
3652                    const frame = { name, instance: this, focusTarget, time: Date.now() };
3653                    modals.push(frame);
3654                    setFocusFirstElement(dialogEl);
3655                    return new Promise(resolve => { frame.resolve = resolve; });
3656                },
3657                cancel() {
3658                    this.hide(false);
3659                },
3660                ok() {
3661                    this.hide(true);
3662                },
3663                hide(value) {
3664                                        if (Date.now() - lastHide < config.duration) return;
3665                    lastHide = Date.now();
3666
3667                                        const modal = modals.pop();
3668                    if (!modal) return;
3669
3670                    modal.instance.opened[modal.name] = false;
3671
3672                                        const focusTarget = modal.focusTarget;
3673                    focusTarget && window.setTimeout(() => focusTarget.focus(), config.duration + 50);
3674                    modal.resolve && modal.resolve(value);
3675                },
3676                /**
3677                 * @deprecated Use dialogConfig() instead, which is used by the default modal-container.phtml template.
3678                 * This method is kept for backwards compatibility with custom container templates.
3679                 */
3680                overlay(dialog) {
3681                    dialog = this.$el.dataset.dialogRefName || dialog;
3682                    const name = typeof dialog === 'string' ? dialog : config.dialog;
3683                    if (this.$el.tagName !== 'DIALOG' && ! window.hyva.modal.legacyModalCompatibility) {
3684                        console.warn(
3685                            '[hyva] Deprecated modal markup detected (x-bind="overlay" on a non-dialog element' +
3686                            (name ? ` for "${name}"` : '') + ').\n' +
3687                            'Escape and click-outside closing are not available for such dialogs anymore.\n' +
3688                            'Install hyva-themes/magento2-legacy-modal-compatibility or migrate to the native <dialog> markup.'
3689                        );
3690                    }
3691                    return Object.assign({}, this.dialogConfig(name), {
3692                        ['@hyva-modal-show.window'](event) {
3693                            event.detail && event.detail.dialog === name && this.show(name, event.detail.focusAfterHide)
3694                        }
3695                    });
3696                },
3697                dialogConfig(name) {
3698                    name = name || this.$el.dataset.dialogRefName || config.dialog;
3699                    return {
3700                        ['x-show']: () => name ? this.opened[name] : false,
3701                        ['x-transition:enter']: config.transitionEnter,
3702                        ['x-transition:enter-start']: config.transitionEnterStart,
3703                        ['x-transition:enter-end']: config.transitionEnterEnd,
3704                        ['x-transition:leave']: config.transitionLeave,
3705                        ['x-transition:leave-start']: config.transitionLeaveStart,
3706                        ['x-transition:leave-end']: config.transitionLeaveEnd,
3707                        ['@hyva-modal-show.window'](event) {
3708                            event.detail && event.detail.dialog === name && this.show(name, event.detail.focusAfterHide);
3709                        },
3710                    };
3711                },
3712                showDialogOnInit() {
3713                    const name = this.$el.dataset.dialogRefName;
3714                    if (name) {
3715                        this.show(name);
3716                    }
3717                }
3718            };
3719        }
3720
3721        window.hyva.modal.peek = () => modals.length > 0 && modals[modals.length - 1]
3722
3723        window.hyva.modal.pop = function () {
3724            if (modals.length > 0) {
3725                modals[modals.length - 1].instance.hide();
3726            }
3727        }
3728
3729        /**
3730         * @deprecated Native <dialog> handles focus trapping automatically.
3731         * Calling this function has no effect. Kept for backwards compatibility.
3732         */
3733        window.hyva.modal.excludeSelectorsFromFocusTrap = function (selectors) {}
3734
3735        /**
3736         * @deprecated Native <dialog> with x-htmldialog handles ESC key and click-outside events.
3737         * These functions have no effect. Kept for backwards compatibility.
3738         */
3739        window.hyva.modal.eventListeners = {
3740            keydown: event => {},
3741            click: event => {}
3742        };
3743    })();
3744
3745    window.addEventListener('alpine:init', () => {
3746        Alpine.data('hyvaModal', window.hyva.modal);
3747    }, {once: true});
3748</script>
3748
3749
3750<div x-data="initCookieBarSettings" x-bind="eventListeners">
3751    <dialog
3752        x-ref="am-cookie-bar-settings"
3753        data-dialog-ref-name="am-cookie-bar-settings"
3754        aria-labelledby="cookiebar-groups"
3755        closeby="any"
3756        class="open:flex flex-col relative max-h-[70vh] overflow-auto max-w-[90vw] md:max-w-[50vw] shadow-xl
3757            rounded-lg p-10 text-gray-700 bg-white backdrop:bg-black/60 am-cookie-bar-settings"
3758        x-bind="dialogConfig('am-cookie-bar-settings')"
3759        x-htmldialog="hideHandler"
3760    >
3761        <button @click="hideHandler"
3762                aria-label="Schliessen"
3763                x-ref="ambar-settings-close"
3764                class="absolute right-2 top-2 text-gray-300 transition
3765                    hover:text-black focus:drop-shadow-md hover:drop-shadow-md">
3766            <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24"
3767                 stroke="currentColor"
3768                 stroke-width="2">
3769                <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/>
3770            </svg>
3771        </button>
3772        <div id="cookiebar-groups">
3773            
3774<div class="w-full flex flex-col" x-data="cookieGroupData">
3775    <template x-for="group in getGroupsData" :key="group.groupId">
3776        <div class="mb-2">
3777            <div class="header flex justify-between items-start py-2">
3778                <div>
3779                    <h3 class="text-lg font-semibold pr-6 ambar-group-title" x-text="group.name"></h3>
3780                    <p class="py-2 text-sm ambar-group-description" x-html="group.description"></p>
3781                    <button class="mb-4 text-sm text-primary rounded-sm before:content-none after:content-none"
3782                            type="button"
3783                            title="Weitere Informationen"
3784                            aria-label="Weitere Informationen"
3785                            @click="$dispatch('classic-open-am-cookie-group-info', group)">
3786                        Weitere Informationen                </div>
3787                <label class="relative inline-flex items-center cursor-pointer">
3788                    <input class="sr-only peer"
3789                           type="checkbox"
3790                           data-amcookie-js="field"
3791                           name="groups[]"
3792                           x-model="group.checked"
3793                           value="group.groupId"
3794                           id="getSwitchBoxId"
3795                           disabled="group.isEssential"
3796                           aria-label="group.name">
3797                    <div class="w-11 h-6 bg-gray-200 peer-focus:outline-none peer-focus:ring-4 peer-focus:ring-blue-300 dark:peer-focus:ring-blue-800 rounded-full peer dark:bg-gray-700 peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all dark:border-gray-600 peer-checked:bg-blue-600"></div>
3798                </label>
3799            </div>
3800        </div>
3801    </template>
3802</div>
3803
3804<script>
3805    'use strict';
3806    function cookieGroupData() {
3807        return {
3808            getGroupsData() {
3809                let amStorage = hyva.amStorage
3810                if (!amStorage)
3811                    return [];
3812
3813                let cookieGroups = amStorage.getStorage('AmastyCookieGroups')
3814                if (!cookieGroups)
3815                    return [];
3816
3817                return cookieGroups.groupData;
3818            },
3819            getSwitchBoxId() {
3820                return 'switchBox' + this.group.groupId;
3821            }
3822        }
3823    }
3824    window.addEventListener('alpine:init', () => Alpine.data('cookieGroupData', cookieGroupData),)
3825</script>
3825
3826        </div>
3827        <div class="w-full flex justify-center">
3828            <button type="button"
3829                    class="ambar-action-btn text-xs font-semibold text-white uppercase btn-primary px-8 py-2"
3830                    x-ref="ambar-settings-done"
3831                    @click="$dispatch('cookiebar-action-accept', { include_checked_groups: true })"
3832            >
3833                Fertig            </button>
3834        </div>
3835    </dialog>
3836</div>
3837
3838<script data-cfasync="false">
3839    'use strict';
3840
3841    function initCookieBarSettings() {
3842        return {
3843            ...hyva.modal({
3844                dialog: 'am-cookie-bar-settings'
3845            }),
3846            eventListeners: {
3847                ['@close-am-cookie-bar-settings.window']() {
3848                    this.hideHandler();
3849                },
3850                ['@open-am-cookie-bar-settings.window']() {
3851                    !this.opened['am-cookie-bar-settings'] &&
3852                    this.show('am-cookie-bar-settings');
3853                },
3854                ['@cookiebar-action-accept-finish.window']() {
3855                    this.hideHandler();
3856                }
3857            },
3858            hideHandler: function () {
3859                !!this.opened['am-cookie-bar-settings'] &&
3860                this.hide('am-cookie-bar-settings');
3861            },
3862            focusDoneButton: function () {
3863                this.$refs['ambar-settings-done']?.focus();
3864            },
3865            focusCloseButton: function () {
3866                this.$refs['ambar-settings-close']?.focus();
3867            }
3868        }
3869    }
3870
3871    window.addEventListener('alpine:init', () => Alpine.data('initCookieBarSettings', initCookieBarSettings), { once: true });
3872</script>
3872
3873
3874<script data-cfasync="false">
3875    'use strict';
3876
3877    /**
3878     * @typedef {Object} CookieGroupData
3879     * @prop {Boolean} checked
3880     * @prop {[{description: string, lifetime: number|null, name: string, provider: string, type: string}]} cookies
3881     * @prop {String} description
3882     * @prop {string|null} groupId
3883     * @prop {Boolean} isEssential
3884     * @prop {String} name
3885     */
3886
3887    function initAmastyCookieGroupsStorage() {
3888        return {
3889            /**
3890             * @type {[CookieGroupData]}
3891             */
3892            groupData: [],
3893            cookiePolicy: undefined,
3894            lastUpdate: undefined,
3895
3896            /**
3897             * @returns {string|number[]}
3898             */
3899            getEssentialGroupIds: function () {
3900                return this.groupData.reduce(function (essentialGroupIds, group) {
3901                    if (group.isEssential) {
3902                        essentialGroupIds.push(group.groupId)
3903                    }
3904
3905                    return essentialGroupIds;
3906                }, []);
3907            },
3908
3909            /**
3910             * @returns {string|number[]}
3911             */
3912            getCheckedGroupIds: function () {
3913                return this.groupData.reduce(function (checkedGroupIds, group) {
3914                    if (group.checked) {
3915                        checkedGroupIds.push(group.groupId);
3916                    }
3917
3918                    return checkedGroupIds;
3919                }, []);
3920            },
3921
3922            /**
3923             * @param {string} cookieName
3924             * @returns {boolean}
3925             */
3926            isCookieEssential: function (cookieName) {
3927                const allEssentialCookies = this.getEssentialCookies();
3928
3929                return !!allEssentialCookies.find(cookie => cookie.name === cookieName);
3930            },
3931
3932            /**
3933             * @returns {array}
3934             */
3935            getEssentialCookies: function () {
3936                return this.groupData
3937                    .filter(group => group.isEssential)
3938                    .map(group => group.cookies)
3939                    .flat();
3940            },
3941
3942            /**
3943             * @returns {boolean}
3944             */
3945            hasGroupData: function () {
3946                return !!this.groupData.length;
3947            },
3948
3949            /**
3950             * @param {string} cookieName
3951             * @param {string} pattern
3952             * @returns {boolean}
3953             */
3954            isEssentialByPattern: function (cookieName, pattern) {
3955                const essentialCookiePatterns = this.getEssentialCookiesPattern(pattern);
3956
3957                return essentialCookiePatterns.some((pattern) => !!cookieName.match(this.getCookiePattern(pattern)));
3958            },
3959
3960            /**
3961             * @param {string} pattern
3962             * @return {Array}
3963             */
3964            getEssentialCookiesPattern: function (pattern) {
3965                return this.getCookiesByPattern(pattern, this.getEssentialCookies());
3966            },
3967
3968            /**
3969             * @param {string} pattern
3970             * @param {Array|undefined} cookies
3971             * @return {Array}
3972             */
3973            getCookiesByPattern: function (pattern, cookies) {
3974                if (typeof cookie === 'undefined') {
3975                    cookies = this.getAllCookies();
3976                }
3977
3978                return cookies
3979                    .map((cookie) => typeof cookie === 'object' ? cookie.name : cookie.split('=')[0].trim())
3980                    .filter((cookie) => cookie.match(pattern) !== null);
3981            },
3982
3983            /**
3984             * @returns {array}
3985             */
3986            getDisallowedCookies: function () {
3987                const disallowedCookie = decodeURIComponent(hyva.getCookie('amcookie_disallowed') ?? '');
3988                if (!disallowedCookie) {
3989                    return [];
3990                }
3991
3992                return disallowedCookie.split(',');
3993            },
3994
3995            /**
3996             * @returns {string}
3997             */
3998            getCookiePattern: function (pattern) {
3999                return `^${pattern.replaceAll('*', '.*')}$`;
4000            },
4001
4002            /**
4003             * @returns {array}
4004             */
4005            getAllCookies: function () {
4006                return document.cookie.split(';');
4007            },
4008
4009            /**
4010             * @param {Array} groupData
4011             * @returns {array}
4012             */
4013            updateGroupDataPermanently: function (groupData) {
4014                this.groupData = [...groupData];
4015            },
4016
4017            /**
4018             * @param {boolean} setAcceptance
4019             * @returns {Promise}
4020             */
4021            updateGroupData: function (setAcceptance = false) {
4022                const cookieFetchUrl = `${BASE_URL}amcookie/cookie/cookies`;
4023                const requestUrl = new URL(cookieFetchUrl, window.location.origin);
4024
4025                requestUrl.searchParams.append('allowed', hyva.getCookie('amcookie_allowed'));
4026                requestUrl.searchParams.append('restriction', hyva.getCookie('amcookie_policy_restriction'));
4027
4028                return fetch(requestUrl.toString(), {
4029                    method: "GET",
4030                    headers: {
4031                        'X-Requested-With': 'XMLHttpRequest'
4032                    }
4033                }).then(response => {
4034                    if (response.ok) {
4035                        return response.json();
4036                    }
4037
4038                    return Promise.reject(`${response.status} ${response.statusText}`);
4039                }).then(data => {
4040                    this.cookiePolicy = data.cookiePolicy ?? 'allowed';
4041                    this.lastUpdate = data.lastUpdate ?? 0;
4042                    this.groupData = [...data.groupData];
4043
4044                    hyva.setCookie('amcookie_policy_restriction', this.cookiePolicy, 10);
4045                    if (setAcceptance) {
4046                        amastyCookieManager.setLastCookieAcceptance(this.lastUpdate);
4047                    }
4048
4049                    return data;
4050                }).catch(error => {
4051                    typeof window.dispatchMessages !== "undefined" && window.dispatchMessages([
4052                        {
4053                            type: "error",
4054                            text: error
4055                        }
4056                    ]);
4057                }).finally(() => window.dispatchEvent(new CustomEvent('amasty-cookie-group-updated')));
4058            }
4059        }
4060    }
4061
4062    window.addEventListener(
4063        'alpine:init',
4064        () => Alpine.store('AmastyCookieGroups', initAmastyCookieGroupsStorage()),
4065        { once: true }
4066    );
4067</script>
4067
4068
4069<script data-cfasync="false">
4070    (function (amastyCookieManager) {
4071        'use strict';
4072
4073        amastyCookieManager.pattern = '{(?<cookiePattern>.*)}';
4074
4075        amastyCookieManager.getAmastyCookieGroupStorage = function () {
4076            return Alpine.store('AmastyCookieGroups') ?? {};
4077        };
4078
4079        amastyCookieManager.deleteDisallowedCookie = function () {
4080            const amastyCookieGroupStorage = this.getAmastyCookieGroupStorage();
4081            const disallowedCookies = amastyCookieGroupStorage?.getDisallowedCookies() ?? [];
4082
4083            disallowedCookies.forEach((name) => {
4084                const pattern = name.match(this.pattern);
4085                if (!!pattern && !!amastyCookieGroupStorage) {
4086                    const cookiePattern = amastyCookieGroupStorage.getCookiePattern(pattern.groups.cookiePattern) ?? '';
4087
4088                    amastyCookieGroupStorage.getCookiesByPattern(cookiePattern).forEach((cookieName) => {
4089                        this.deleteNotEssentialCookie(cookieName);
4090                    });
4091                } else {
4092                    this.deleteNotEssentialCookie(name);
4093                }
4094            });
4095        };
4096
4097        amastyCookieManager.isCookieAllowed = function (cookieName) {
4098            const allowedGroups = hyva.getCookie('amcookie_allowed');
4099            const disallowedCookie = this.getAmastyCookieGroupStorage()?.getDisallowedCookies() ?? [];
4100            const isCookiePolicyAllowed = hyva.getCookie('amcookie_policy_restriction') === 'allowed';
4101            const isCookieEssential = this.getAmastyCookieGroupStorage()?.isCookieEssential(cookieName);
4102            const isCookieEssentialByPattern = this.getAmastyCookieGroupStorage()?.isEssentialByPattern(cookieName, this.pattern);
4103
4104            if (!isCookiePolicyAllowed || isCookieEssential || isCookieEssentialByPattern) {
4105                return true;
4106            }
4107
4108            return !((!allowedGroups && !disallowedCookie) || this.isCookieDisallowed(cookieName));
4109        };
4110
4111        amastyCookieManager.isCookieDisallowed = function (cookieName) {
4112            const amastyCookieGroupStorage = this.getAmastyCookieGroupStorage();
4113            const disallowedCookies = amastyCookieGroupStorage?.getDisallowedCookies() ?? [];
4114
4115            return disallowedCookies.some((cookie) => {
4116                const pattern = cookie.match(this.pattern);
4117
4118                return !!pattern && !!cookieName.match(amastyCookieGroupStorage?.getCookiePattern(pattern.groups.cookiePattern));
4119            }) || disallowedCookies.indexOf(cookieName) !== -1;
4120        };
4121
4122        amastyCookieManager.processManageableCookies = function () {
4123            let cookieScripts = document.querySelectorAll('script[data-amcookie-groupid][type="text/plain"]');
4124
4125            cookieScripts.forEach((elem) => {
4126                if (this.isChecked(elem.dataset['amcookie-groupid'])) {
4127                    let elClone = elem.cloneNode(true).setAttribute('type', 'text/javascript');
4128
4129                    elem.remove();
4130                    document.body.appendChild(elClone);
4131                }
4132            });
4133        };
4134
4135        amastyCookieManager.deleteNotEssentialCookie = function (cookieName) {
4136            if (!this.getAmastyCookieGroupStorage()?.isCookieEssential(cookieName)) {
4137                hyva.setCookie(cookieName, '', -1, true);
4138            }
4139        };
4140
4141        amastyCookieManager.setLastCookieAcceptance = function (lastUpdate) {
4142            localStorage.setItem('am-last-cookie-acceptance', lastUpdate);
4143        };
4144
4145        window.addEventListener('amasty-cookie-group-updated', () => {
4146            amastyCookieManager.deleteDisallowedCookie();
4147        });
4148
4149        window.addEventListener('private-content-loaded', () => {
4150            amastyCookieManager.getAmastyCookieGroupStorage()?.hasGroupData() && amastyCookieManager.deleteDisallowedCookie();
4151        });
4152    }(window.amastyCookieManager = window.amastyCookieManager || {}));
4153</script>
4153
4154
4155<script data-cfasync="false">
4156    (function () {
4157        'use strict';
4158
4159        window.addEventListener('cookiebar-action-accept', (event) => {
4160            const groups = event.detail?.include_checked_groups ? Alpine.store('AmastyCookieGroups').getCheckedGroupIds() : [];
4161            const url = `${BASE_URL}amcookie/cookie/savegroups`;
4162            const urlParams = event.detail?.params ?? {};
4163            const contentType = 'application/x-www-form-urlencoded; charset=UTF-8';
4164            const body = new URLSearchParams({
4165                form_key: hyva.getFormKey()
4166            });
4167            groups.length && groups.map(groupId => body.append('groups[]', groupId));
4168
4169            for (const [key, value] of Object.entries(urlParams)) {
4170                body.append(key, value);
4171            }
4172
4173            fetch(url, {method: 'POST', body, headers: {'Content-Type': contentType}})
4174                .then(response => {
4175                    if (response.ok) {
4176                        return response.json();
4177                    }
4178
4179                    return Promise.reject(`${response.status} ${response.statusText}`);
4180                })
4181                .then(data => {
4182                    !!data.success && Alpine.store('AmastyCookieGroups').updateGroupData(true);
4183                })
4184                .catch(error => {
4185                    typeof window.dispatchMessages !== "undefined" && window.dispatchMessages([
4186                        {
4187                            type: "error",
4188                            text: error
4189                        }
4190                    ]);
4191                })
4192                .finally(() => {
4193                    amastyCookieManager.processManageableCookies();
4194                    window.dispatchEvent(new CustomEvent('cookiebar-action-accept-finish'));
4195                    window.dispatchEvent(new CustomEvent('amasty-cookie-group-updated'));
4196                    // Wait cookiebar close animation
4197                    setTimeout(() => {
4198                        window.dispatchEvent(new CustomEvent('reload-customer-section-data'));
4199                    }, 100);
4200                });
4201        });
4202    })();
4203</script>
4203
4204
4205<script data-cfasync="false">
4206    (function () {
4207        'use strict';
4208
4209        window.addEventListener('cookiebar-action-allow', () => {
4210            const url = `${BASE_URL}amcookie/cookie/allow`;
4211            const contentType = 'application/x-www-form-urlencoded; charset=UTF-8';
4212            const body = new URLSearchParams({
4213                form_key: hyva.getFormKey()
4214            });
4215            fetch(url, {method: 'POST', body, headers: {'Content-Type': contentType}})
4216                .then(response => {
4217                    if (response.ok) {
4218                        return response;
4219                    }
4220
4221                    return Promise.reject(`${response.status} ${response.statusText}`);
4222                })
4223                .then(() => {
4224                    Alpine.store('AmastyCookieGroups').updateGroupData(true);
4225                })
4226                .catch(error => {
4227                    typeof window.dispatchMessages !== "undefined" && window.dispatchMessages([
4228                        {
4229                            type: "error",
4230                            text: error
4231                        }
4232                    ]);
4233                })
4234                .finally(() => {
4235                    amastyCookieManager.processManageableCookies();
4236                    window.dispatchEvent(new CustomEvent('cookiebar-action-allow-finish'));
4237                    // Wait cookiebar close animation
4238                    setTimeout(() => {
4239                        window.dispatchEvent(new CustomEvent('reload-customer-section-data'));
4240                    }, 100);
4241                });
4242        });
4243    })();
4244</script>
4244
4245
4246<script data-cfasync="false">
4247    (function () {
4248        'use strict';
4249
4250        window.addEventListener('cookiebar-action-settings', () => {
4251            window.dispatchEvent(new Event('open-am-cookie-bar-settings'));
4252        });
4253    })();
4254</script>
4254
4255
4256<style>
4257    :root {
4258        /* Bar Color Settings */
4259        --ambar-background: #fff;
4260        --ambar-links-color: #326ed1;
4261        --ambar-policy-text: #374151;
4262        --ambar-toggle-active-color: #2563eb;
4263        --ambar-toggle-inactive-color: #fff;
4264
4265        /* Buttons Color Settings */
4266        --ambar-button-accept-color: #337ab7;
4267        --ambar-button-accept-hover-color: #337ab7;
4268        --ambar-button-accept-text: #fff;
4269        --ambar-button-accept-hover-text: #fff;
4270
4271        --ambar-button-allow-color: #337ab7;
4272        --ambar-button-allow-hover-color: #337ab7;
4273        --ambar-button-allow-text: #fff;
4274        --ambar-button-allow-hover-text: #fff;
4275
4276        --ambar-button-decline-color: #337ab7;
4277        --ambar-button-decline-hover-color: #337ab7;
4278        --ambar-button-decline-text: #fff;
4279        --ambar-button-decline-hover-text: #fff;
4280
4281        --ambar-button-settings-color: #337ab7;
4282        --ambar-button-settings-hover-color: #337ab7;
4283        --ambar-button-settings-text: #fff;
4284        --ambar-button-settings-hover-text: #fff;
4285
4286        /* Buttons Order Settings */
4287        --ambar-button-accept-order: 0;
4288        --ambar-button-allow-order: 0;
4289        --ambar-button-settings-order: 0;
4290        --ambar-button-decline-order: 0;
4291
4292        /* Cookie Information Bar Color Settings */
4293        --ambar-information-background: #fff;
4294        --ambar-information-title: #374151;
4295        --ambar-information-description: #374151;
4296        --ambar-information-table-header: #374151;
4297        --ambar-information-table-content: #374151;
4298
4299        /* Cookie Information Bar Done Button Settings */
4300        --ambar-information-button-color: #1d4ed8;
4301        --ambar-information-button-hover-color: #1d4ed8;
4302        --ambar-information-button-text: #fff;
4303        --ambar-information-button-hover-text: #fff;
4304
4305        /* Settings Bar Done Button Settings */
4306        --ambar-setting-button-color: #1d4ed8;
4307        --ambar-setting-button-hover-color: #1d4ed8;
4308        --ambar-setting-button-text: #fff;
4309        --ambar-setting-button-hover-text: #fff;
4310
4311        /* cookie_settings_bar_customisation */
4312        --ambar-setting-bar-group-background: #fff;
4313        --ambar-setting-bar-group-title: #000;
4314        --ambar-setting-bar-group-description: #000;
4315        --ambar-setting-bar-group-links: #326ed1;
4316    }
4317</style>
4318
4319<script data-cfasync="false">
4320    'use strict';
4321
4322    function initAmCookieActionDispatcherBtn() {
4323        return {
4324            actiondispatchHandler: function (event) {
4325                const { dispatchAction, dispatchPayload } = event.currentTarget.dataset;
4326                this.$dispatch(dispatchAction, this.parsePayload(dispatchPayload));
4327            },
4328            parsePayload: function (payload) {
4329                try {
4330                    return JSON.parse(payload);
4331                } catch (e) {
4332                    return null;
4333                }
4334            }
4335        };
4336    }
4337
4338    window.addEventListener(
4339        'alpine:init',
4340        () => Alpine.data('initAmCookieActionDispatcherBtn', initAmCookieActionDispatcherBtn),
4341        { once: true }
4342    );
4343</script>
4343
4344
4345<script data-cfasync="false">
4346    'use strict';
4347
4348    function initAmCookieGroups() {
4349        return {
4350            /**
4351             * @withContext x-for: $store.AmastyCookieGroups.groupData
4352             * @returns {string}
4353             */
4354            getInputGroupId: function () {
4355                return `amcookie-${this.$el.dataset.groupPrefix}group-${this.group.groupId}`
4356            },
4357
4358            /**
4359             * @withContext x-for: $store.AmastyCookieGroups.groupData
4360             * @returns {{"!bg-gray-400": boolean}}
4361             */
4362            getInputStyles: function () {
4363                return {
4364                    '!bg-gray-400': this.group.isEssential
4365                }
4366            },
4367
4368            /**
4369             * @withContext x-for: $store.AmastyCookieGroups.groupData
4370             * @returns {void}
4371             */
4372            toggleGroup: function () {
4373                this.group.checked = !this.group.checked;
4374            },
4375
4376            /**
4377             * @withContext x-for: $store.AmastyCookieGroups.groupData
4378             * @returns {void}
4379             */
4380            moreInfoClickHandler: function () {
4381                this.$dispatch(this.$el.dataset.dispatchAction, this.group);
4382            },
4383
4384            moreInformationAboutCookieGroup: function () {
4385                return hyva.str('About\u0020\u0022\u00251\u0022\u0020Cookie\u0020Group', this.group.name);
4386            }
4387        }
4388    }
4389
4390    window.addEventListener(
4391        'alpine:init',
4392        () => Alpine.data('initAmCookieGroups', initAmCookieGroups),
4393        {once: true}
4394    );
4395</script>
vendor: 1 bytes, line 4395
4395
4396<script>
4397    if (window.AmFB) {
4398        (() => {
4399            const gdprListeners = [
4400                {
4401                    event: 'cookiebar-action-accept-finish',
4402                    callback: () => window.AmFB.initPixels(),
4403                    options: { once: true }
4404                },
4405                {
4406                    event: 'cookiebar-action-allow-finish',
4407                    callback: () => window.AmFB.initPixels(),
4408                    options: { once: true }
4409                }
4410            ];
4411
4412            const isAllowedToRunScript = function () {
4413                const facebookPixelCookieName = '_fbp';
4414                const allowedCookies = hyva.getCookie('amcookie_allowed') || '';
4415                const disallowedCookies = hyva.getCookie('amcookie_disallowed') || '';
4416                return !!allowedCookies.length
4417                    && (!disallowedCookies || disallowedCookies.indexOf(facebookPixelCookieName) === -1);
4418            };
4419
4420            window.AmFB.setDataToSection = new Proxy(window.AmFB.setDataToSection, {
4421                apply(target, thisArg, argArray) {
4422                    if (isAllowedToRunScript()) {
4423                        return target.apply(thisArg, argArray);
4424                    }
4425
4426                    return {
4427                        then: () => {}
4428                    }
4429                }
4430            });
4431
4432            window.AmFB.initPixels = new Proxy(window.AmFB.initPixels, {
4433                apply(target, thisArg, argArray) {
4434                    if (isAllowedToRunScript()) {
4435                        return target.apply(thisArg, argArray);
4436                    }
4437                }
4438            });
4439
4440            window.AmFB = new Proxy(window.AmFB, {
4441                get(target, prop, receiver) {
4442                    if (prop === 'listeners') {
4443                        return [...Reflect.get(...arguments), ...(gdprListeners)];
4444                    }
4445
4446                    return Reflect.get(...arguments);
4447                }
4448            });
4449        })();
4450    }
4451</script>
vendor: 1 bytes, line 4451
4451
4452<script>
4453    'use strict';
4454
4455    (function () {
4456        document.querySelectorAll('[data-amcookie-js="footer-link"]').forEach(link => {
4457            link.addEventListener('click', function (event) {
4458                event.preventDefault();
4459                window.dispatchEvent(new CustomEvent('cookiebar-action-settings'));
4460            });
4461        });
4462    })();
4463</script>
vendor: 1 bytes, line 4463
4463
4464<script>
4465    (function () {
4466        let amFancyProcessed = false;
4467
4468        window.addEventListener('load-amfancybox', () => {
4469            if (amFancyProcessed) {
4470                window?.Fancybox && window.dispatchEvent(new CustomEvent('amfancybox-loaded', {}));
4471                return;
4472            }
4473
4474            const script = document.createElement('script');
4475            script.src = 'https://www.vedia.ch/static/version1790063611/frontend/Vedia/hyva/de_CH/Amasty_LibFancybox/fancybox_ui/fancybox.min.js';
4476            script.async = true;
4477            document.body.appendChild(script);
4478
4479            amFancyProcessed = true;
4480
4481            script.onload = () => {
4482                window.dispatchEvent(new CustomEvent('amfancybox-loaded', {}));
4483            }
4484
4485            const stylesHref = 'https://www.vedia.ch/static/version1790063611/frontend/Vedia/hyva/de_CH/Amasty_LibFancybox/fancybox_ui/fancybox.min.css';
4486
4487            if (document.querySelector(`link[href="${stylesHref}"]`)) {
4488                return;
4489            }
4490
4491            const styles = document.createElement('link');
4492            styles.rel = 'stylesheet';
4493            styles.type = 'text/css';
4494            styles.href = stylesHref;
4495
4496            document.head.appendChild(styles);
4497        });
4498    }());
4499</script>
4499
4500
4501
4502<script>
4503    window.addEventListener('amfancybox-loaded', () => {
4504        Fancybox.bind('[data-fancybox="gallery"]', {
4505            Thumbs : false
4506        });
4507    });
4508</script>
4508
4509
4510<script>
4511    function amReviewCommentFormDataFn() {
4512        const element = this.$el;
4513        const validation = hyva.formValidation(element);
4514        const comments = amReviewCommentsHandler();
4515
4516        return {
4517            ...validation,
4518            ...comments,
4519            init() {
4520                if (validation.init) {
4521                    validation.init.call(this);
4522                }
4523                if (comments.init) {
4524                    comments.init.call(this);
4525                }
4526            }
4527        };
4528    }
4529
4530    window.addEventListener(
4531        'alpine:init',
4532        () => Alpine.data(
4533            'amReviewCommentFormDataFn',
4534            amReviewCommentFormDataFn
4535        ),
4536        {once: true}
4537    )
4538</script>
4538
4539
4540<script>
4541    'use strict';
4542
4543    function amReviewsSlider() {
4544        return {
4545            active: 0,
4546            itemCount: 0,
4547            pageSize: parseInt(this.$el.dataset.pageSize),
4548            sliderClass: this.$el.dataset.sliderClass,
4549            slidesClass: this.$el.dataset.slidesClass,
4550            pageFillers: 0,
4551            getSlider() {
4552                return this.$root.querySelector(this.sliderClass);
4553            },
4554
4555            calcPageSize() {
4556                const slider = this.getSlider();
4557                if (slider) {
4558                    this.itemCount = slider.querySelectorAll(this.slidesClass).length;
4559                    this.pageSize = Math.round(slider.clientWidth / slider.querySelector(this.slidesClass).clientWidth);
4560                    this.pageFillers = (
4561                        this.pageSize * Math.ceil(this.itemCount / this.pageSize)
4562                    ) - this.itemCount;
4563                }
4564            },
4565
4566            calcActive() {
4567                const slider = this.getSlider();
4568                if (slider) {
4569                    const sliderItems = this.itemCount + this.pageFillers;
4570                    const calculatedActiveSlide = slider.scrollLeft / (slider.scrollWidth / sliderItems);
4571                    this.active = Math.round(calculatedActiveSlide / this.pageSize) * this.pageSize;
4572                }
4573            },
4574
4575            scrollPrevious() {
4576                this.scrollTo(this.active - this.pageSize);
4577            },
4578
4579            scrollNext() {
4580                this.scrollTo(this.active + this.pageSize);
4581            },
4582
4583            scrollTo(idx) {
4584                const slider = this.getSlider();
4585                if (slider) {
4586                    const slideWidth = slider.scrollWidth / (this.itemCount + this.pageFillers);
4587                    slider.scrollLeft = Math.floor(slideWidth) * idx;
4588                    this.active = idx;
4589                }
4590            },
4591
4592            sliderPreviousClass() {
4593                return {
4594                    'opacity-25 pointer-events-none' : this.active === 0
4595                }
4596            },
4597
4598            sliderDotClass() {
4599                return {
4600                    'bg-opacity-100': this.active === parseInt(this.$el.dataset.index),
4601                    'bg-opacity-25': this.active !== parseInt(this.$el.dataset.index),
4602                    'hidden': (this.pageSize !== 1 && !!(parseInt(this.$el.dataset.index) % this.pageSize))
4603                }
4604            },
4605
4606            sliderNextClass() {
4607                return {
4608                    'opacity-25 pointer-events-none' : this.active >= this.itemCount-this.pageSize
4609                }
4610            },
4611
4612            setSliderDot() {
4613                return this.scrollTo(parseInt(this.$el.dataset.index))
4614            },
4615
4616            isNav() {
4617                return this.itemCount > this.pageSize
4618            },
4619
4620            reviewSliderResize() {
4621                const self = this;
4622                self.calcPageSize();
4623                self.$nextTick( function() {
4624                    self.calcActive()
4625                })
4626            }
4627        }
4628    }
4629
4630    window.addEventListener(
4631        'alpine:init',
4632        () => Alpine.data(
4633            'amReviewsSlider',
4634            amReviewsSlider
4635        ),
4636        {once: true}
4637    )
4638</script>
4638
4639
4640<script>
4641    'use strict';
4642
4643    function helpFul() {
4644        const reviewId = this.$el.dataset.reviewId;
4645        
4646        return {
4647            config: {
4648                plusReview: 0,
4649                minusReview: 0,
4650                reviewId: reviewId,
4651            },
4652
4653            voted: {
4654                plus: 0,
4655                minus: 0
4656            },
4657
4658            jsonConfig: JSON.parse(this.$el.dataset.config),
4659
4660            selectors: {
4661                shortHelpFul: '[data-review-helpful="'+ reviewId +'"] .count-plus-review'
4662            },
4663
4664            /**
4665             * @returns {void}
4666             */
4667            initVoteBlock: function () {
4668                window.addEventListener('amreview-update-vote-data', (event) => {
4669                    const voteData = {
4670                        data: event.detail.votes[reviewId],
4671                        voted: event.detail.voted[reviewId]
4672                    }
4673
4674                    this.updateVote(voteData);
4675                })
4676            },
4677
4678            /**
4679             * @param {string} type
4680             * @returns {void}
4681             */
4682            sendVote: function (type) {
4683                const body = new URLSearchParams({
4684                    form_key: hyva.getFormKey(),
4685                    type: type,
4686                    review: this.config.reviewId
4687                });
4688
4689                fetch(this.jsonConfig.url, {
4690                    method: 'POST',
4691                    body: body,
4692                    headers: {
4693                        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
4694                        'X-Requested-With': 'XMLHttpRequest'
4695                    }
4696                }).then(response => {
4697                    if (response.ok) {
4698                        return response.json();
4699                    }
4700
4701                    return Promise.reject(`${response.status} ${response.statusText}`);
4702                }).then(result => {
4703                    if (result && result.success) {
4704                        this.updateVote(result);
4705                    }
4706                }).catch(error => {
4707                    typeof window.dispatchMessages !== "undefined" && window.dispatchMessages([
4708                        {
4709                            type: "error",
4710                            text: error
4711                        }
4712                    ]);
4713                });
4714            },
4715
4716            /**
4717             * @param {Object} result
4718             * @returns {void}
4719             */
4720            updateVote: function (result) {
4721                this.config.plusReview = result.data.plus;
4722                this.config.minusReview = result.data.minus;
4723                this.voted.plus = result.voted.plus;
4724                this.voted.minus = result.voted.minus;
4725
4726                this.updateShortHelpFul();
4727            },
4728
4729            /**
4730             * @returns {void}
4731             */
4732            updateShortHelpFul: function () {
4733                document.querySelector(this.selectors.shortHelpFul).textContent = this.config.plusReview;
4734            },
4735
4736            /**
4737             * @returns {string}
4738             */
4739            reviewPulsClass() {
4740                return !!this.voted.plus ? 'text-green-600': 'text-gray-400'
4741            },
4742
4743            /**
4744             * @returns {string}
4745             */
4746            reviewMinusClass() {
4747                return !!this.voted.minus ? 'text-red-600': 'text-gray-400'
4748            },
4749
4750            /**
4751             * @returns {void}
4752             */
4753            sendPlusVote() {
4754                return this.sendVote('plus')
4755            },
4756
4757            /**
4758             * @returns {void}
4759             */
4760            sendMinusVote() {
4761                return this.sendVote('minus')
4762            },
4763
4764            /**
4765             * @returns {string}
4766             */
4767            configPlusReview() {
4768                return this.config.plusReview
4769            },
4770
4771            /**
4772             * @returns {string}
4773             */
4774            configMinusReview() {
4775                return this.config.minusReview
4776            }
4777        }
4778    }
4779
4780    window.addEventListener(
4781        'alpine:init',
4782        () => Alpine.data(
4783            'helpFul',
4784            helpFul
4785        ),
4786        {once: true}
4787    );
4788    
4789    function reviewWidgetModal() {
4790        return Object.assign( 
4791            hyva.modal(),
4792            {
4793                /**
4794                 * @returns {void}
4795                 */
4796                showModal() {
4797                    return this.$dispatch('hyva-modal-show', { dialog: 'amreview-popup-' + this.$el.dataset.productId });
4798                },
4799
4800                /**
4801                 * @returns {void}
4802                 */
4803                hideModal() {
4804                    return this.$dispatch('hyva-modal-hide', { dialog: 'amreview-popup-' + this.$el.dataset.productId });
4805                }
4806            }
4807        )
4808    }
4809
4810    window.addEventListener(
4811        'alpine:init',
4812        () => Alpine.data(
4813            'reviewWidgetModal',
4814            reviewWidgetModal
4815        ),
4816        {once: true}
4817    )
4818</script>
4818
4819
4820<div x-data="initCookieGroupInfo_6ab7e945c7e16" x-bind="eventListeners">
4821    <dialog
4822        x-ref="classic-am-cookie-group-info"
4823        data-dialog-ref-name="classic-am-cookie-group-info"
4824        aria-labelledby="amcookie-group-info"
4825        closeby="any"
4826        class="open:flex flex-col max-h-[70vh] max-w-[90vw] md:max-w-[50vw] overflow-auto
4827            bg-white shadow-xl rounded-lg p-8 text-gray-700 relative backdrop:bg-gray-500/50"
4828        x-bind="dialogConfig('classic-am-cookie-group-info')"
4829        x-htmldialog="closeHandler"
4830    >
4831        <template x-if="group">
4832            <div id="amcookie-group-info">
4833                <button type="button"
4834                        @mousedown.prevent.stop
4835                        @click.prevent.stop="closeHandler($event)"
4836                        aria-label="Schliessen"
4837                        class="absolute right-2 top-2 text-gray-300 transition
4838                            hover:text-black focus:drop-shadow-md hover:drop-shadow-md"
4839                >
4840                    <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24"
4841                         stroke="currentColor"
4842                         stroke-width="2">
4843                        <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/>
4844                    </svg>
4845                </button>
4846                <div class="md:flex md:justify-start pb-4">
4847                    <h3 class="text-xl font-semibold" x-text="group.name"></h3>
4848                </div>
4849                <template x-if="group.description">
4850                    <p class="mb-4" x-html="group.description"></p>
4851                </template>
4852                <div class="overflow-x-scroll md:overflow-x-auto">
4853                    <div class="table-auto w-full mb-4 text-left">
4854                        <div>
4855                        <template x-for="(item, index) in group.cookies" :key="index">
4856                            <div class="mt-5 pb-3 border-primary-light border-b">
4857                                <div class="flex">
4858                                    <span class="pr-4 font-bold">Cookie-Name:</span>
4859                                    <div x-text="item.name" class="font-semibold pr-4"></div>
4860                                </div>
4861                                <div class="flex mt-2">
4862                                    <div class="pr-4 font-bold">Cookie-Anbieter:</div>
4863                                    <div x-text="item.provider" class="pr-4"></div>
4864                                </div>
4865                                <div class="mt-2 flex flex-col">
4866                                    <div class="min-w-[30%] pr-4 font-bold">Cookie-Beschreibung:</div>
4867                                    <div x-html="item.description" class="min-w-[30%] pr-4"></div>
4868                                </div>
4869                                <div class="mt-2 flex">
4870                                    <div class="pr-4 font-bold">Cookie-Lebensdauer:</div>
4871                                    <div x-text="item.lifetime" class="pr-4"></div>
4872                                </div>
4873                                <div class="flex mt-2">
4874                                    <div class="pr-4 font-bold">Cookie-Typ:</div>
4875                                    <div x-text="item.type" class="pr-4"></div>
4876                                </div>
4877                            </div>
4878                        </template>
4879                        </div>
4880                    </div>
4881                </div>
4882            </div>
4883        </template>
4884        <div class="w-full flex justify-center">
4885            <button
4886                type="button"
4887                @mousedown.prevent.stop
4888                @click.prevent.stop="closeHandler($event)"
4889                aria-label="Fertig"
4890                class="mt-4 text-xs font-semibold text-white btn-primary btn uppercase ambar-action-btn"
4891            >
4892                Fertig            </button>
4893        </div>
4894    </dialog>
4895</div>
4896<script data-cfasync="false">
4897    'use strict';
4898
4899    function initCookieGroupInfo_6ab7e945c7e16() {
4900        return {
4901            ...hyva.modal({
4902                dialog: 'classic-am-cookie-group-info'
4903            }),
4904            group: null,
4905            eventListeners: {
4906                ['@classic-close-am-cookie-group-info.window']() {
4907                    this.closeHandler();
4908                },
4909                ['@classic-open-am-cookie-group-info.window'](event) {
4910                    this.group = event.detail;
4911
4912                    if (!!this.group) {
4913                        /*
4914                         If modal have big cookies list this can lead to
4915                         trigger hide event in hyva.modal.eventListeners.click,
4916                         so we should wait till this.group is reassigned
4917                         */
4918                        this.$nextTick(() => this.show('classic-am-cookie-group-info'));
4919                    }
4920                }
4921            },
4922            closeHandler: function (event = null) {
4923                event?.preventDefault?.();
4924                event?.stopPropagation?.();
4925                this.hide('classic-am-cookie-group-info');
4926            }
4927        }
4928    }
4929
4930    window.addEventListener(
4931        'alpine:init',
4932        () => Alpine.data(
4933            'initCookieGroupInfo_6ab7e945c7e16',
4934            initCookieGroupInfo_6ab7e945c7e16        ),
4935        {once: true}
4936    );
4937</script>
4937
4938<div id="check-75c9b43529a638ae560e272516d95f3d" style="display:none"></div>
4939<script type="text/json" id="default-section-data">
4940    {"messages":[],"customer":[],"compare-products":[],"last-ordered-items":[],"cart":[],"directory-data":{"CH":{"name":"Schweiz","regions":{"104":{"code":"AG","name":"Aargau"},"106":{"code":"AR","name":"Appenzell Ausserrhoden"},"105":{"code":"AI","name":"Appenzell Innerrhoden"},"108":{"code":"BL","name":"Basel-Landschaft"},"109":{"code":"BS","name":"Basel-Stadt"},"107":{"code":"BE","name":"Bern"},"110":{"code":"FR","name":"Friburg"},"111":{"code":"GE","name":"Geneva"},"112":{"code":"GL","name":"Glarus"},"113":{"code":"GR","name":"Graub\u00fcnden"},"114":{"code":"JU","name":"Jura"},"115":{"code":"LU","name":"Lucerne"},"116":{"code":"NE","name":"Neuch\u00e2tel"},"117":{"code":"NW","name":"Nidwalden"},"118":{"code":"OW","name":"Obwalden"},"120":{"code":"SH","name":"Schaffhausen"},"122":{"code":"SZ","name":"Schwyz"},"121":{"code":"SO","name":"Solothurn"},"119":{"code":"SG","name":"St. Gallen"},"123":{"code":"TG","name":"Thurgau"},"124":{"code":"TI","name":"Ticino"},"125":{"code":"UR","name":"Uri"},"126":{"code":"VD","name":"Vaud"},"127":{"code":"VS","name":"Wallis"},"128":{"code":"ZG","name":"Zug"},"129":{"code":"ZH","name":"Z\u00fcrich"}}},"LI":{"name":"Liechtenstein"},"data_id":1790437701},"loggedAsCustomer":[],"captcha":[],"persistent":[],"review":[],"wishlist":{"items":[]},"amgiftcard_cart":[],"hyva_checkout":[],"wp_ga4":[],"recently_viewed_product":[],"recently_compared_product":[],"product_data_storage":[]}</script>
4940
4941</div>    
4941<script>
4942        const wpGA4ServerSide = {
4943            pushClick: function(productId, listId, listName, index) {
4944                if (window.wpGA4ServerSideIsBot === true) return;
4945                if (productId) {
4946                    var requestUrl = 'https://www.vedia.ch/weltpixel_ga4/track/productclick/';
4947                    if (productId && listId && listName) {
4948                        fetch(requestUrl, {
4949                            method: 'POST',
4950                            headers: {
4951                                'Content-Type': 'application/x-www-form-urlencoded',
4952                                'X-Requested-With': 'XMLHttpRequest'
4953                            },
4954                            body: 'product_id=' + productId + '&list_id=' + listId +'&list_name=' + listName + '&index=' + index
4955                        })
4956                        .then(res => res.json())
4957                        .then(data => {
4958                        });
4959                    }
4960                }
4961            },
4962
4963            pushViewItemList: function(hashId) {
4964                if (window.wpGA4ServerSideIsBot === true) return;
4965                if (hashId && document.getElementById('wp_ga4_server_side_view_item_list')) {
4966                    var requestUrl = 'https://www.vedia.ch/weltpixel_ga4/track/viewitemlist/';
4967                    fetch(requestUrl, {
4968                        method: 'POST',
4969                        headers: {
4970                            'Content-Type': 'application/x-www-form-urlencoded',
4971                            'X-Requested-With': 'XMLHttpRequest'
4972                        },
4973
4974                        body: 'hash_id='+hashId
4975                    })
4976                    .then(res => res.json())
4977                    .then(data => {
4978                    });
4979                }
4980            }
4981        };
4982
4983        window.wpGA4ServerSide = wpGA4ServerSide;
4984
4985        let allowGa4Services = window.ga4AllowServices ?? true;
4986
4987        if (allowGa4Services) {
4988            let selectedShippingMethod = '';
4989            let selectedPaymentMethod = '';
4990
4991            const {fetch: originalFetch} = window;
4992            window.fetch = async (...args) => {
4993                let [resource, config] = args;
4994                let response = await originalFetch(resource, config);
4995                let ajaxContentBody = false;
4996
4997                if ((typeof resource == 'string') &&
4998                    ((resource.search('post/livewire/message/checkout.shipping.methods') > 0) || (resource.search('post/livewire/message/checkout.payment.methods') > 0))) {
4999                    var jsonBody = false;
5000                    if (config.body) {
5001                        try {
5002                            jsonBody = JSON.parse(config.body);
5003                        } catch (e) {}
5004                    }
5005
5006                    if (jsonBody && jsonBody.updates && jsonBody.updates[0] && jsonBody.updates[0].payload && jsonBody.updates[0].payload.value) {
5007                        if (resource.search('checkout.shipping.methods') > 0) {
5008                            if (selectedShippingMethod != jsonBody.updates[0].payload.value) {
5009                                selectedShippingMethod = jsonBody.updates[0].payload.value;
5010                                ajaxContentBody = 'step=1&option=' + selectedShippingMethod;
5011                            }
5012                        }
5013                        if (resource.search('checkout.payment.methods') > 0) {
5014                            if (selectedPaymentMethod != jsonBody.updates[0].payload.value) {
5015                                selectedPaymentMethod = jsonBody.updates[0].payload.value;
5016                                ajaxContentBody = 'step=2&option=' + selectedPaymentMethod;
5017                            }
5018                        }
5019
5020                        if (ajaxContentBody && window.wpGA4ServerSideIsBot !== true) {
5021                                fetch('https://www.vedia.ch/weltpixel_ga4/track/hyva/', {
5022                                    method: 'POST',
5023                                    headers: {
5024                                        'Content-Type': 'application/x-www-form-urlencoded',
5025                                        'X-Requested-With': 'XMLHttpRequest'
5026                                    },
5027                                    body: ajaxContentBody
5028                                })
5029                                    .then(res => res.json())
5030                                    .then(data => {
5031                                        if (data) {
5032                                            window.dataLayer.push({ecommerce: null});
5033                                            window.dataLayer.push(data);
5034                                        }
5035                                    });
5036                        }
5037                    }
5038                }
5039
5040                if ((typeof resource == 'string') && resource.search('/customer\/section\/load/') > 0) {
5041                    response.clone().json().then(data => {
5042                        if (data.wp_ga4.datalayer) {
5043                            const dataLayerData = JSON.parse(data.wp_ga4.datalayer);
5044                            dataLayerData.forEach((dataLayerItem) => {
5045                                window.dataLayer.push({ecommerce: null});
5046                                window.dataLayer.push(dataLayerItem);
5047                            });
5048                        }
5049                    });
5050                }
5051                return response;
5052            };
5053
5054
5055            (function() {
5056                if (window.wpGA4ServerSideIsBot === true) return;
5057                const ga4PromotionOptions = {
5058                    enabled: 0,
5059                    disableDatalayerEvents: 0,
5060                    serverSidePromotionViewEnabled: 0,
5061                    serverSidePromotionClickEnabled: 0                };
5062
5063                const dataLayerPromotionViewPush = ga4PromotionOptions.enabled && !(ga4PromotionOptions.disableDatalayerEvents && ga4PromotionOptions.serverSidePromotionViewEnabled);
5064                const dataLayerPromotionClickPush = ga4PromotionOptions.enabled && !(ga4PromotionOptions.disableDatalayerEvents && ga4PromotionOptions.serverSidePromotionClickEnabled);
5065
5066                const promotionViewUrl = 'https://www.vedia.ch/weltpixel_ga4/track/promotionview/';
5067                const promotionClickUrl = 'https://www.vedia.ch/weltpixel_ga4/track/promotionclick/';
5068
5069                function parseJsonSafe(text, fallback) {
5070                    try { return JSON.parse(text); } catch (e) { return fallback; }
5071                }
5072
5073                function getPromoItemsById(uniqueId) {
5074                    if (!uniqueId) return [];
5075                    const el = document.getElementById(uniqueId);
5076                    if (!el) return [];
5077                    const raw = el.textContent || el.innerText || '[]';
5078                    return parseJsonSafe(raw, []);
5079                }
5080
5081                function pushDataLayerEvent(evtName, ecommerce) {
5082                    if (!window.dataLayer) { window.dataLayer = []; }
5083                    window.dataLayer.push({ ecommerce: null });
5084                    window.dataLayer.push({ event: evtName, ecommerce: ecommerce });
5085                }
5086
5087                function serializePromotionViews(promotionViews) {
5088                    const parts = [];
5089                    parts.push('dataLayerPush=' + (dataLayerPromotionViewPush ? 1 : 0));
5090                    promotionViews.forEach((pv, i) => {
5091                        for (const key in pv) {
5092                            if (!Object.prototype.hasOwnProperty.call(pv, key)) continue;
5093                            const value = pv[key] == null ? '' : String(pv[key]);
5094                            parts.push('promotion_views[' + i + '][' + encodeURIComponent(key) + ']=' + encodeURIComponent(value));
5095                        }
5096                    });
5097                    return parts.join('&');
5098                }
5099
5100                function setCookie(name, value, maxAgeSeconds) {
5101                    try {
5102                        document.cookie = name + '=' + encodeURIComponent(value) + '; path=/; max-age=' + maxAgeSeconds;
5103                    } catch (e) {}
5104                }
5105
5106                function onPromotionClick(ev) {
5107                    const el = ev.currentTarget;
5108                    const promoId = el.getAttribute('data-track-promo-id') || '';
5109                    const promoName = el.getAttribute('data-track-promo-name') || '';
5110                    const promoCreative = el.getAttribute('data-track-promo-creative') || '';
5111                    const promoPositionSlot = el.getAttribute('data-track-promo-position') || '';
5112                    const promoItemIds = el.getAttribute('data-unqiue-id-items') || '';
5113                    const promoProductIds = el.getAttribute('data-track-promo-product-ids') || '';
5114                    const promoItems = getPromoItemsById(promoItemIds);
5115
5116                    if (dataLayerPromotionClickPush && promoItemIds) {
5117                        pushDataLayerEvent('select_promotion', {
5118                            promotion_id: promoId,
5119                            promotion_name: promoName,
5120                            creative_name: promoCreative,
5121                            creative_slot: promoPositionSlot,
5122                            items: promoItems
5123                        });
5124
5125                        const promotionClickCookie = JSON.stringify({
5126                            promotion_id: promoId,
5127                            promotion_name: promoName,
5128                            product_ids: promoProductIds
5129                        });
5130                        setCookie('wp_ga4_promotion_click', promotionClickCookie, 86400);
5131                    }
5132
5133                    if (dataLayerPromotionClickPush || ga4PromotionOptions.serverSidePromotionClickEnabled) {
5134                        const body =
5135                            'promotion_id=' + encodeURIComponent(promoId) +
5136                            '&promotion_name=' + encodeURIComponent(promoName) +
5137                            '&creative_name=' + encodeURIComponent(promoCreative) +
5138                            '&creative_slot=' + encodeURIComponent(promoPositionSlot) +
5139                            '&product_ids=' + encodeURIComponent(promoProductIds) +
5140                            '&promo_items_uniqueid=' + encodeURIComponent(promoItemIds) +
5141                            '&dataLayerPush=' + (dataLayerPromotionClickPush ? 1 : 0);
5142
5143                        fetch(promotionClickUrl, {
5144                            method: 'POST',
5145                            headers: {
5146                                'Content-Type': 'application/x-www-form-urlencoded',
5147                                'X-Requested-With': 'XMLHttpRequest'
5148                            },
5149                            body: body
5150                        })
5151                            .then(res => res.json())
5152                            .then(pushData => {
5153                                if (dataLayerPromotionClickPush && pushData) {
5154                                    try {
5155                                        for (let i = 0; i < pushData.length; i++) {
5156                                            window.dataLayer.push({ ecommerce: null });
5157                                            window.dataLayer.push(pushData[i]);
5158                                        }
5159                                        const promotionClickCookie = JSON.stringify({
5160                                            promotion_id: promoId,
5161                                            promotion_name: promoName,
5162                                            product_ids: promoProductIds
5163                                        });
5164                                        setCookie('wp_ga4_promotion_click', promotionClickCookie, 86400);
5165                                    } catch (e) {}
5166                                }
5167                            })
5168                            .catch(() => {});
5169                    }
5170                }
5171
5172                function bindPromotionClicks() {
5173                    const elements = document.querySelectorAll('[data-track-promo-id]');
5174                    elements.forEach((el) => {
5175                        el.removeEventListener('click', onPromotionClick);
5176                        el.addEventListener('click', onPromotionClick);
5177                    });
5178                }
5179
5180                function handlePromotionViews() {
5181                    if (!(dataLayerPromotionViewPush || ga4PromotionOptions.serverSidePromotionViewEnabled)) return;
5182                    const promotionViews = [];
5183                    const elements = document.querySelectorAll('[data-track-promo-id]');
5184                    elements.forEach((el) => {
5185                        const promoId = el.getAttribute('data-track-promo-id') || '';
5186                        const promoName = el.getAttribute('data-track-promo-name') || '';
5187                        const promoCreative = el.getAttribute('data-track-promo-creative') || '';
5188                        const promoPositionSlot = el.getAttribute('data-track-promo-position') || '';
5189                        const promoItemIds = el.getAttribute('data-unqiue-id-items') || '';
5190                        const promoProductIds = el.getAttribute('data-track-promo-product-ids') || '';
5191                        const promoItems = getPromoItemsById(promoItemIds);
5192
5193                        if (dataLayerPromotionViewPush && promoItemIds) {
5194                            pushDataLayerEvent('view_promotion', {
5195                                promotion_id: promoId,
5196                                promotion_name: promoName,
5197                                creative_name: promoCreative,
5198                                creative_slot: promoPositionSlot,
5199                                items: promoItems
5200                            });
5201                        }
5202
5203                        promotionViews.push({
5204                            promotion_id: promoId,
5205                            promotion_name: promoName,
5206                            creative_name: promoCreative,
5207                            creative_slot: promoPositionSlot,
5208                            product_ids: promoProductIds,
5209                            promo_items_uniqueid: promoItemIds
5210                        });
5211                    });
5212
5213                    if (promotionViews.length) {
5214                        const body = serializePromotionViews(promotionViews);
5215                        fetch(promotionViewUrl, {
5216                            method: 'POST',
5217                            headers: {
5218                                'Content-Type': 'application/x-www-form-urlencoded',
5219                                'X-Requested-With': 'XMLHttpRequest'
5220                            },
5221                            body: body
5222                        })
5223                            .then(res => res.json())
5224                            .then(pushData => {
5225                                if (dataLayerPromotionViewPush && pushData) {
5226                                    try {
5227                                        for (let i = 0; i < pushData.length; i++) {
5228                                            window.dataLayer.push({ ecommerce: null });
5229                                            window.dataLayer.push(pushData[i]);
5230                                        }
5231                                    } catch (e) {}
5232                                }
5233                            })
5234                            .catch(() => {});
5235                    }
5236                }
5237
5238                if (dataLayerPromotionClickPush || ga4PromotionOptions.serverSidePromotionClickEnabled ||
5239                    dataLayerPromotionViewPush || ga4PromotionOptions.serverSidePromotionViewEnabled) {
5240                    if (document.readyState === 'loading') {
5241                        document.addEventListener('DOMContentLoaded', function() {
5242                            bindPromotionClicks();
5243                            handlePromotionViews();
5244                        });
5245                    } else {
5246                        bindPromotionClicks();
5247                        handlePromotionViews();
5248                    }
5249                }
5250            })();
5251
5252        }
5253
5254    </script>
vendor: 1 bytes, line 5254
5254
5255<script type="text/x-magento-init">{"*":
5256            {"Magento_Persistent/js/remember-me-config": {
5257            "config": {"persistenceConfig":{"isRememberMeCheckboxVisible":true,"isRememberMeCheckboxChecked":true}}
5258            }}}</script>
5258</body>
5259</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.