PageSourceSearch

https://www.mode-jost.de/

html mode-jost.de collected 2026-09-24 13:01:01 UTC 520,561 bytes, 7,798 lines download raw bytes

1<!doctype html>
2<html lang="de">
3<head >
4    <meta charset="utf-8"/>
5<meta name="title" content="Modehaus Jost – Ihr Trendmode-Anbieter"/>
6<meta name="description" content="Modehaus Jost ist ein etablierter Anbieter hochwertiger Trendmode für Damen, Herren und Kinder mit fünf Filialen im Rhein-Neckar-Gebiet und der Pfalz."/>
7<meta name="keywords" content="Mode Jost"/>
8<meta name="robots" content="INDEX,FOLLOW"/>
9<meta name="viewport" content="width=device-width, initial-scale=1"/>
10<title>Modehaus Jost – Ihr Trendmode-Anbieter</title>
11        <link rel="stylesheet" type="text/css" media="all" href="https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/css/styles.css" />
12<link rel="stylesheet" type="text/css" media="all" href="https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/css/mhhyvacore.css" />
13<link rel="stylesheet" type="text/css" media="all" href="https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_Core/css/styles.css" />
14<link rel="stylesheet" type="text/css" media="all" href="https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_NinjaMenus/css/styles.css" />
15<link rel="stylesheet" type="text/css" media="all" href="https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_Core/css/owlcarousel/owl.carousel.min.css" />
16<link rel="stylesheet" type="text/css" media="all" href="https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_Core/css/animate.css" />
17<link rel="stylesheet" type="text/css" media="all" href="https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_Core/css/fontawesome5.css" />
18<link rel="stylesheet" type="text/css" media="all" href="https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_Core/css/mgz_font.css" />
19<link rel="stylesheet" type="text/css" media="all" href="https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_Core/css/mgz_bootstrap.css" />
20<link rel="stylesheet" type="text/css" media="all" href="https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_Builder/css/openiconic.min.css" />
21<link rel="stylesheet" type="text/css" media="all" href="https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_Builder/css/styles.css" />
22<link rel="stylesheet" type="text/css" media="all" href="https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_Builder/css/common.css" />
23<link rel="stylesheet" type="text/css" media="all" href="https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_Core/css/magnific.css" />
24<link rel="stylesheet" type="text/css" media="all" href="https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_PageBuilder/css/styles.css" />
25<link rel="stylesheet" type="text/css" media="all" href="https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_PageBuilder/vendor/photoswipe/photoswipe.css" />
26<link rel="stylesheet" type="text/css" media="all" href="https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_PageBuilder/vendor/photoswipe/default-skin/default-skin.css" />
27<link rel="stylesheet" type="text/css" media="all" href="https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_PageBuilder/vendor/blueimp/css/blueimp-gallery.min.css" />
28<link rel="stylesheet" type="text/css" media="all" href="https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/MHinspeya_LibSwiperJs/vendor/swiper/swiper.min.css" />
29<link rel="stylesheet" type="text/css" media="all" href="https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/MageArray_News/css/category_sidebar.css" />
30<link rel="stylesheet" type="text/css" media="all" href="https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/MageArray_News/css/widget.css" />
31<link rel="stylesheet" type="text/css" media="all" href="https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_Newsletter/css/styles.css" />
32<link rel="stylesheet" type="text/css" media="all" href="https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_PageBuilderIconBox/css/styles.css" />
33<link rel="stylesheet" type="text/css" media="all" href="https://use.typekit.net/whb3vhk.css" />
34<script type="text/javascript" src="https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/load-script.js"></script>
34
35<link rel="icon" type="image/x-icon" href="https://www.mode-jost.de/media/favicon/stores/1/favicon_jost.png" />
36<link rel="shortcut icon" type="image/x-icon" href="https://www.mode-jost.de/media/favicon/stores/1/favicon_jost.png" />
37<!-- Meta Pixel Code -->
38<script>
vendor: 408 bytes, lines 38-47
38
39!function(f,b,e,v,n,t,s)
40{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
41n.callMethod.apply(n,arguments):n.queue.push(arguments)};
42if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
43n.queue=[];t=b.createElement(e);t.async=!0;
44t.src=v;s=b.getElementsByTagName(e)[0];
45s.parentNode.insertBefore(t,s)}(window, document,'script',
46'https://connect.facebook.net/en_US/fbevents.js');
47fbq('init', '
47831400510908046
vendor: 32 bytes, lines 47-48
47');
48fbq('track', 'PageView');
49</script>
49
50<noscript><img height="1" width="1" style="display:none"
51src="https://www.facebook.com/tr?id=831400510908046&ev=PageView&noscript=1"
52/></noscript>
53<!-- End Meta Pixel Code -->
54
55
56<meta name="facebook-domain-verification" content="9n9mozq3xej12iwtxuapomgdns5bmq" />
57
58
59
60<meta name="facebook-domain-verification" content="hgacseasub0ntnx4omwheubzel9eu6" />
61<style>
62@media screen and (max-width: 767px)
63{
64.customer-welcome .customer-name {
65    cursor: pointer;
66    display:block;
67}
68.customer-welcome .action.switch {
69    background-image: none;
70    background: none;
71    -moz-box-sizing: content-box;
72    border: 0;
73    box-shadow: none;
74    line-height: inherit;
75    margin: 0;
76    padding: 0;
77    text-decoration: none;
78    text-shadow: none;
79    font-weight: 400;
80    color: #ffffff;
81}
82.customer-welcome .customer-menu {
83    display: none;
84    position:relative;
85}
86.customer-welcome .action.switch > span   
87{
88   border: 0;
89    clip: rect(0, 0, 0, 0);
90    height: 1px;
91    margin: -1px;
92    overflow: hidden;
93    padding: 0;
94    position: absolute;
95    width: 1px;
96
97}
98.customer-welcome.active .customer-menu {
99    display: block;
100}
101.customer-welcome ul:before {
102    border: 6px solid;
103    border-color: transparent transparent #ffffff transparent;
104    z-index: 99;
105}
106.customer-welcome ul {
107    margin: 0;
108    padding: 0;
109    list-style: none none;
110    background: #ffffff;
111    border: 1px solid #bbbbbb;
112    margin-top: 4px;
113    min-width: 100%;
114    z-index: 101;
115    box-sizing: border-box;
116    position: absolute;
117    top: 100%;
118    right: 0;
119    box-shadow: 0 3px 3px rgb(0 0 0 / 15%);
120}
121.customer-welcome .header.links {
122    min-width: 175px;
123    z-index: 1000;
124    display:inline-block !important;
125}
126.mh_headerContentWrapper .mh_userMenuWrapper .mh_userActions .header.links {
127    /* display: block; */
128    margin-right: 41px;
129    margin-top: 0px;
130}
131.customer-welcome ul li {
132    margin: 0;
133    padding: 0;
134}
135.customer-welcome li a {
136    color: #333333;
137    text-decoration: none;
138    display: block;
139    line-height: 1.4;
140    padding: 8px;
141}
142.mh_headerContentWrapper .mh_userMenuWrapper .mh_userActions .minicart-wrapper {
143    top: -10px;
144}
145.mh_headerContentWrapper .mh_userMenuWrapper .mh_userSearch {
146    margin-top: -37px;
147}
148}
149</style>
150
151
152<script type="module" src="https://widget.accessgo.de/accessGoWidget.js"></script>
152    <style>
153    .magezon-builder {
154        z-index: unset;
155    }
156	@media (min-width: 1260px) {
157		.magezon-builder .mgz-container {width: 1260px;}
158	}
159	</style>
160<script>
161    var BASE_URL = 'https://www.mode-jost.de/';
162    var THEME_PATH = 'https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE';
163    var COOKIE_CONFIG = {
164        "expires": null,
165        "path": "\u002F",
166        "domain": ".www.mode\u002Djost.de",
167        "secure": true,
168        "lifetime": "3600",
169        "cookie_restriction_enabled": false    };
170    var CURRENT_STORE_CODE = 'default';
171    var CURRENT_WEBSITE_ID = '1';
172
173    window.hyva = window.hyva || {}
174
175    window.cookie_consent_groups = window.cookie_consent_groups || {}
176    window.cookie_consent_groups['necessary'] = true;
177
178    window.cookie_consent_config = window.cookie_consent_config || {};
179    window.cookie_consent_config['necessary'] = [].concat(
180        window.cookie_consent_config['necessary'] || [],
181        [
182            'user_allowed_save_cookie',
183            'form_key',
184            'mage-messages',
185            'private_content_version',
186            'mage-cache-sessid',
187            'last_visited_store',
188            'section_data_ids'
189        ]
190    );
191    //# sourceURL=hyva-variables.js
192</script>
vendor: 1 bytes, line 192
192
193<script>
194    (function( hyva, undefined ) {
195
196        function lifetimeToExpires(options, defaults) {
197
198            const lifetime = options.lifetime || defaults.lifetime;
199
200            if (lifetime) {
201                const date = new Date;
202                date.setTime(date.getTime() + lifetime * 1000);
203                return date;
204            }
205
206            return null;
207        }
208
209        function generateRandomString() {
210
211            const allowedCharacters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
212                length = 16;
213
214            let formKey = '',
215                charactersLength = allowedCharacters.length;
216
217            for (let i = 0; i < length; i++) {
218                formKey += allowedCharacters[Math.round(Math.random() * (charactersLength - 1))]
219            }
220
221            return formKey;
222        }
223
224        const sessionCookieMarker = {noLifetime: true}
225
226        const cookieTempStorage = {};
227
228        const internalCookie = {
229            get(name) {
230                const v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)');
231                return v ? v[2] : null;
232            },
233            set(name, value, days, skipSetDomain) {
234                let expires,
235                    path,
236                    domain,
237                    secure,
238                    samesite;
239
240                const defaultCookieConfig = {
241                    expires: null,
242                    path: '/',
243                    domain: null,
244                    secure: false,
245                    lifetime: null,
246                    samesite: 'lax'
247                };
248
249                const cookieConfig = window.COOKIE_CONFIG || {};
250
251                expires = days && days !== sessionCookieMarker
252                    ? lifetimeToExpires({lifetime: 24 * 60 * 60 * days, expires: null}, defaultCookieConfig)
253                    : lifetimeToExpires(window.COOKIE_CONFIG, defaultCookieConfig) || defaultCookieConfig.expires;
254
255                path = cookieConfig.path || defaultCookieConfig.path;
256                domain = !skipSetDomain && (cookieConfig.domain || defaultCookieConfig.domain);
257                secure = cookieConfig.secure || defaultCookieConfig.secure;
258                samesite = cookieConfig.samesite || defaultCookieConfig.samesite;
259
260                document.cookie = name + "=" + encodeURIComponent(value) +
261                    (expires && days !== sessionCookieMarker ? '; expires=' + expires.toGMTString() : '') +
262                    (path ? '; path=' + path : '') +
263                    (domain ? '; domain=' + domain : '') +
264                    (secure ? '; secure' : '') +
265                    (samesite ? '; samesite=' + samesite : 'lax');
266            },
267            isWebsiteAllowedToSaveCookie() {
268                const allowedCookies = this.get('user_allowed_save_cookie');
269                if (allowedCookies) {
270                    const allowedWebsites = JSON.parse(unescape(allowedCookies));
271
272                    return allowedWebsites[CURRENT_WEBSITE_ID] === 1;
273                }
274                return false;
275            },
276            getGroupByCookieName(name) {
277                const cookieConsentConfig = window.cookie_consent_config || {};
278                let group = null;
279                for (let prop in cookieConsentConfig) {
280                    if (!cookieConsentConfig.hasOwnProperty(prop)) continue;
281                    if (cookieConsentConfig[prop].includes(name)) {
282                        group = prop;
283                        break;
284                    }
285                }
286                return group;
287            },
288            isCookieAllowed(name) {
289                const cookieGroup = this.getGroupByCookieName(name);
290                return cookieGroup
291                    ? window.cookie_consent_groups[cookieGroup]
292                    : this.isWebsiteAllowedToSaveCookie();
293            },
294            saveTempStorageCookies() {
295                for (const [name, data] of Object.entries(cookieTempStorage)) {
296                    if (this.isCookieAllowed(name)) {
297                        this.set(name, data['value'], data['days'], data['skipSetDomain']);
298                        delete cookieTempStorage[name];
299                    }
300                }
301            }
302        };
303
304        hyva.getCookie = (name) => {
305            const cookieConfig = window.COOKIE_CONFIG || {};
306
307            if (cookieConfig.cookie_restriction_enabled && ! internalCookie.isCookieAllowed(name)) {
308                return cookieTempStorage[name] ? cookieTempStorage[name]['value'] : null;
309            }
310
311            return internalCookie.get(name);
312        }
313
314        hyva.setCookie = (name, value, days, skipSetDomain) => {
315            const cookieConfig = window.COOKIE_CONFIG || {};
316
317            if (cookieConfig.cookie_restriction_enabled && ! internalCookie.isCookieAllowed(name)) {
318                cookieTempStorage[name] = {value, days, skipSetDomain};
319                return;
320            }
321            return internalCookie.set(name, value, days, skipSetDomain);
322        }
323
324
325        hyva.setSessionCookie = (name, value, skipSetDomain) => {
326            return hyva.setCookie(name, value, sessionCookieMarker, skipSetDomain)
327        }
328
329        hyva.getBrowserStorage = () => {
330            const browserStorage = window.localStorage || window.sessionStorage;
331            if (!browserStorage) {
332                console.warn('Browser Storage is unavailable');
333                return false;
334            }
335            try {
336                browserStorage.setItem('storage_test', '1');
337                browserStorage.removeItem('storage_test');
338            } catch (error) {
339                console.warn('Browser Storage is not accessible', error);
340                return false;
341            }
342            return browserStorage;
343        }
344
345        hyva.postForm = (postParams) => {
346            const form = document.createElement("form");
347
348            let data = postParams.data;
349
350            if (! postParams.skipUenc && ! data.uenc) {
351                data.uenc = btoa(window.location.href);
352            }
353            form.method = "POST";
354            form.action = postParams.action;
355
356            Object.keys(postParams.data).map(key => {
357                const field = document.createElement("input");
358                field.type = 'hidden'
359                field.value = postParams.data[key];
360                field.name = key;
361                form.appendChild(field);
362            });
363
364            const form_key = document.createElement("input");
365            form_key.type = 'hidden';
366            form_key.value = hyva.getFormKey();
367            form_key.name="form_key";
368            form.appendChild(form_key);
369
370            document.body.appendChild(form);
371
372            form.submit();
373        }
374
375        hyva.getFormKey = function () {
376            let formKey = hyva.getCookie('form_key');
377
378            if (!formKey) {
379                formKey = generateRandomString();
380                hyva.setCookie('form_key', formKey);
381            }
382
383            return formKey;
384        }
385
386        hyva.formatPrice = (value, showSign, options = {}) => {
387            const groupSeparator = options.groupSeparator;
388            const decimalSeparator = options.decimalSeparator
389            delete options.groupSeparator;
390            delete options.decimalSeparator;
391            const formatter = new Intl.NumberFormat(
392                'de\u002DDE',
393                Object.assign({
394                    style: 'currency',
395                    currency: 'EUR',
396                    signDisplay: showSign ? 'always' : 'auto'
397                }, options)
398            );
399            return (typeof Intl.NumberFormat.prototype.formatToParts === 'function') ?
400                formatter.formatToParts(value).map(({type, value}) => {
401                    switch (type) {
402                        case 'currency':
403                            return '\u20AC' || value;
404                        case 'minusSign':
405                            return '- ';
406                        case 'plusSign':
407                            return '+ ';
408                        case 'group':
409                            return groupSeparator !== undefined ? groupSeparator : value;
410                        case 'decimal':
411                            return decimalSeparator !== undefined ? decimalSeparator : value;
412                        default :
413                            return value;
414                    }
415                }).reduce((string, part) => string + part) :
416                formatter.format(value);
417        }
418
419        const formatStr = function (str, nStart) {
420            const args = Array.from(arguments).slice(2);
421
422            return str.replace(/(%+)([0-9]+)/g, (m, p, n) => {
423                const idx = parseInt(n) - nStart;
424
425                if (args[idx] === null || args[idx] === void 0) {
426                    return m;
427                }
428                return p.length % 2
429                    ? p.slice(0, -1).replace('%%', '%') + args[idx]
430                    : p.replace('%%', '%') + n;
431            })
432        }
433
434        hyva.str = function (string) {
435            const args = Array.from(arguments);
436            args.splice(1, 0, 1);
437
438            return formatStr.apply(undefined, args);
439        }
440
441        hyva.strf = function () {
442            const args = Array.from(arguments);
443            args.splice(1, 0, 0);
444
445            return formatStr.apply(undefined, args);
446        }
447
448        /**
449         * Take a html string as `content` parameter and
450         * extract an element from the DOM to replace in
451         * the current page under the same selector,
452         * defined by `targetSelector`
453         */
454        hyva.replaceDomElement = (targetSelector, content) => {
455            // Parse the content and extract the DOM node using the `targetSelector`
456            const parser = new DOMParser();
457            const doc = parser.parseFromString(content, 'text/html');
458            const contentNode = doc.querySelector(targetSelector);
459
460            // Bail if content or target can't be found
461            if (!contentNode || !document.querySelector(targetSelector)) {
462                return;
463            }
464
465                        hyva.activateScripts(contentNode);
466            
467            // Replace the old DOM node with the new content
468            document.querySelector(targetSelector).replaceWith(contentNode);
469
470            // Reload customerSectionData and display cookie-messages if present
471            window.dispatchEvent(new CustomEvent("reload-customer-section-data"));
472            hyva.initMessages();
473        }
474
475        hyva.removeScripts = (contentNode) => {
476            const scripts = contentNode.getElementsByTagName('script');
477            for (let i = 0; i < scripts.length; i++) {
478                scripts[i].parentNode.removeChild(scripts[i]);
479            }
480            const templates = contentNode.getElementsByTagName('template');
481            for (let i = 0; i < templates.length; i++) {
482                const container = document.createElement('div');
483                container.innerHTML = templates[i].innerHTML;
484                hyva.removeScripts(container);
485                templates[i].innerHTML = container.innerHTML;
486            }
487        }
488
489        hyva.activateScripts = (contentNode) => {
490            // Create new array from HTMLCollection to avoid mutation of collection while manipulating the DOM.
491            const scripts = Array.from(contentNode.getElementsByTagName('script'));
492
493            // Iterate over all script tags to duplicate+inject each into the head
494            for (const original of scripts) {
495                const script = document.createElement('script');
496                original.type && (script.type = original.type);
497                script.innerHTML = original.innerHTML;
498
499                // Remove the original (non-executing) script from the contentNode
500                original.parentNode.removeChild(original)
501
502                // Add script to head
503                document.head.appendChild(script);
504            }
505
506            return contentNode;
507        }
508
509        const replace = {['+']: '-', ['/']: '_', ['=']: ','};
510        hyva.getUenc = () => btoa(window.location.href).replace(/[+/=]/g, match => replace[match]);
511
512        let currentTrap;
513
514        const focusableElements = (rootElement) => {
515            const selector = 'button, [href], input, select, textarea, details, [tabindex]:not([tabindex="-1"]';
516            return Array.from(rootElement.querySelectorAll(selector))
517                .filter(el => {
518                    return el.style.display !== 'none'
519                        && !el.disabled
520                        && el.tabIndex !== -1
521                        && (el.offsetWidth || el.offsetHeight || el.getClientRects().length)
522                })
523        }
524
525        const focusTrap = (e) => {
526            const isTabPressed = e.key === 'Tab' || e.keyCode === 9;
527            if (!isTabPressed) return;
528
529            const focusable = focusableElements(currentTrap)
530            const firstFocusableElement = focusable[0]
531            const lastFocusableElement = focusable[focusable.length - 1]
532
533            e.shiftKey
534                ? document.activeElement === firstFocusableElement && (lastFocusableElement.focus(), e.preventDefault())
535                : document.activeElement === lastFocusableElement && (firstFocusableElement.focus(), e.preventDefault())
536        };
537
538        hyva.releaseFocus = (rootElement) => {
539            if (currentTrap && (!rootElement || rootElement === currentTrap)) {
540                currentTrap.removeEventListener('keydown', focusTrap)
541                currentTrap = null
542            }
543        }
544        hyva.trapFocus = (rootElement) => {
545            if (!rootElement) return;
546            hyva.releaseFocus()
547            currentTrap = rootElement
548            rootElement.addEventListener('keydown', focusTrap)
549            const firstElement = focusableElements(rootElement)[0]
550            firstElement && firstElement.focus()
551        }
552
553        hyva.safeParseNumber = (rawValue) => {
554            const number = rawValue ? parseFloat(rawValue) : null;
555
556            return Array.isArray(number) || isNaN(number) ? rawValue : number;
557        }
558
559        const toCamelCase = s => s.split('_').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join('');
560        hyva.createBooleanObject = (name, value = false, additionalMethods = {}) => {
561
562            const camelCase = toCamelCase(name);
563            const key = '__hyva_bool_' + name
564
565            return new Proxy(Object.assign(
566                additionalMethods,
567                {
568                    [key]: !!value,
569                    [name]() {return !!this[key]},
570                    ['!' + name]() {return !this[key]}, // @deprecated This does not work with non-CSP Alpine
571                    ['not' + camelCase]() {return !this[key]},
572                    ['toggle' + camelCase]() {this[key] = !this[key]},
573                    [`set${camelCase}True`]() {this[key] = true},
574                    [`set${camelCase}False`]() {this[key] = false},
575                }
576            ), {
577                set(target, prop, value) {
578                    return prop === name
579                        ? (target[key] = !!value)
580                        : Reflect.set(...arguments);
581                }
582            })
583        }
584
585                hyva.alpineInitialized = (fn) => window.addEventListener('alpine:initialized', fn, {once: true})
586        window.addEventListener('alpine:init', () => Alpine.data('{}', () => ({})), {once: true});
587                window.addEventListener('user-allowed-save-cookie', () => internalCookie.saveTempStorageCookies())
588
589    }( window.hyva = window.hyva || {} ));
590    //# sourceURL=hyva.js
591</script>
vendor: 1 bytes, line 591
591
592<script type="speculationrules">
593{
594    "tag": "Hyva Theme",
595    "prefetch": [{
596        "source": "document",
597        "where": {
598            "and": [
599                { "href_matches": "/*" },
600                { "not": {
601                    "href_matches": ["/customer/*","/search/*","/sales/*","/wishlist/*","/checkout/*","/paypal/*","/newsletter/*","/stores/store/redirect/*"]                }},
602                { "not": {
603                    "selector_matches": [".no-preload", ".do-not-prerender", "[download]", "[rel~=nofollow]", "[target]"]
604                }}
605            ]
606        },
607        "eagerness": "moderate"
608    }]
609}
610</script>
610
611<style>.bh7cydt-s{margin-bottom:16px !important}.nt3kdv0>.mgz-element-inner{padding:0}.k5t1l91-s{margin-right:0 !important;margin-bottom:16px !important;margin-left:0 !important}.enmcybr{border:16px solid transparent}.enmcybr>.mgz-element-inner{padding:0;margin:0}.crgxcif-s{padding-bottom:32px !important}.mgz-element.crgxcif .mgz-single-image-wrapper{border-radius:0}.mgz-element.crgxcif .image-content{width:100%;text-align:center}.mgz-element.crgxcif img{border-radius:0}.mgz-element.uxn4t2d .mgz-single-image-wrapper{border-radius:0}.mgz-element.uxn4t2d .image-content{width:100%;text-align:center}.mgz-element.uxn4t2d img{border-radius:0}.kxaicg9-s{padding-bottom:32px !important}.mgz-element.kxaicg9 .mgz-single-image-wrapper{border-radius:0}.mgz-element.kxaicg9 .image-content{width:100%;text-align:center}.mgz-element.kxaicg9 img{border-radius:0}.mgz-element.n3atxmv .mgz-single-image-wrapper{border-radius:0}.mgz-element.n3atxmv .image-content{width:100%;text-align:center}.mgz-element.n3atxmv img{border-radius:0}.ixd5jby-s{padding-bottom:32px !important}.mgz-element.ixd5jby .mgz-single-image-wrapper{border-radius:0}.mgz-element.ixd5jby .image-content{width:100%;text-align:center}.mgz-element.ixd5jby img{border-radius:0}.mgz-element.f9qmmxj .mgz-single-image-wrapper{border-radius:0}.mgz-element.f9qmmxj .image-content{width:100%;text-align:center}.mgz-element.f9qmmxj img{border-radius:0}.gf644nr-s{padding-bottom:32px !important}.mgz-element.gf644nr .mgz-single-image-wrapper{border-radius:0}.mgz-element.gf644nr .image-content{width:100%;text-align:center}.mgz-element.gf644nr img{border-radius:0}.mgz-element.ld114oc .mgz-single-image-wrapper{border-radius:0}.mgz-element.ld114oc .image-content{width:100%;text-align:center}.mgz-element.ld114oc img{border-radius:0}.rbecd04-s{margin-right:-16px !important;margin-left:-16px !important}.dd5y50s,.nqx1tbq,.vj9j2ve,.fppo318{border:16px solid transparent}.dd5y50s>.mgz-element-inner,.nqx1tbq>.mgz-element-inner,.vj9j2ve>.mgz-element-inner,.fppo318>.mgz-element-inner{padding:0;margin:0}.mgz-element.atesiee .mgz-carousel .item-content{width:100%}.ojc62w1>.mgz-element-inner{padding:0}.mo2vdm1-s{margin-bottom:32px !important}.dmk9wr6>.mgz-element-inner{padding:0}.ugqvjke .mgz-block-heading-line:before{height:1px;background-color:#cecece}.j3c4x8i>.mgz-element-inner,.tjtqmp1>.mgz-element-inner{padding:0}.m51uv2k-s{margin-top:-20px !important}.b4cb6b6-s{margin-bottom:10px !important}.et3087n-s{margin-top:-25px !important}.fadokag-s{margin-top:5px !important;margin-bottom:5px !important}.b4cb6b6>.mgz-element-inner,.fadokag>.mgz-element-inner{padding:0}.fa-facebook{background:unset;color:unset}.fa-instagram{background:unset;color:unset}.fa-youtube{background:unset;color:unset}.fa-android{background:unset;color:unset}</style></head>
612<body id="html-body" class="cms-startseite cms-index-index page-layout-1column">
613    <div class="headertopfix" id="myHeadertopfix">
614        <div class="ourbarfix">
615            <span>
616                <div class="mh_serviceLinksWrapper"><ul class="mh_panelHeaderList">
617  <li class="mh_panelHeaderItem">
618        <a href="/gutschein">Der Jost Gutschein – passt immer!</a>
619    </li>
620</ul></div>  
621            </span>
622                    </div>
623    </div>
624            <style>
625            /* Style the header */
626            .headertopfix {
627                padding: 10px 16px;
628                background: #555;
629                color: #f1f1f1;
630                text-align:center;
631            }
632
633            /* Page content */
634            .contenttopfix {
635                padding: 16px;
636
637            }
638                        /* The sticky class is added to the header with JS when it reaches its scroll position */
639            .stickytopfix {
640                position: fixed;
641                top: 0;
642                width: 100%;
643                z-index: 1000;
644            }
645
646            /* Add some top padding to the page content to prevent sudden quick movement (as the header gets a new position at the top of the page (position:fixed and top:0) */
647            .stickytopfix + .contenttopfix {
648                padding-top: 102px;
649            }
650                        .headertopfix span.topfix-close {
651                background-color: #FAD163;
652                border: 2px solid #735005;
653                cursor: pointer;
654                display: block;
655                float: right;
656                margin-right: 20px;
657                padding-left: 4px;
658                padding-right: 4px;
659                text-decoration: none;
660            }
661            .headertopfix .topfix-close a {
662                text-decoration: none;
663                color: #735005; }
664            .headertopfix .topfix-close a:hover {
665                text-decoration: none;
666            }
667        </style>
668        
668<script>
669
670    //     require([
671    //         'jquery',
672    //         'jquery/jquery.cookie'
673    //     ], function ($) {
674    //         window.onscroll = function () {
675    //             topfixFunction()
676    //         };
677
678    // // Get the header
679    //         var header = document.getElementById("myHeadertopfix");
680    // // Get the offset position of the navbar
681    //         var sticky = header.offsetTop;
682    //     //         /*
683    //         function readCookie(name) {
684    //             var nameEQ = name + '=';
685    //             var ca = document.cookie.split(';');
686    //             for (var i = 0; i < ca.length; i++) {
687    //                 var c = ca[i];
688    //                 while (c.charAt(0) == ' ')
689    //                     c = c.substring(1, c.length);
690    //                 if (c.indexOf(nameEQ) == 0)
691    //                     return c.substring(nameEQ.length, c.length);
692    //             }
693    //             return null;
694    //         }*/
695    //         function createCookie(name, value, days) {
696    //             if (days) {
697    //                 var date = new Date();
698    //                 date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
699    //                 var expires = ';expires=' + date.toGMTString();
700    //             }
701    //             else
702    //                 var expires = '';
703    //             document.cookie = name + '=' + value + expires + '; path=/';
704    //         }
705
706    // // Add the sticky class to the header when you reach its scroll position. Remove "sticky" when you leave the scroll position
707    //         function topfixFunction() {
708    //             if (window.pageYOffset > sticky) {
709    //                 header.classList.add("stickytopfix");
710    //             } else {
711    //                 header.classList.remove("stickytopfix");
712    //             }
713    //         }
714    //     });
715
716    </script>
716
717<input name="form_key" type="hidden" value="VYIswpNByTPP3EWM" />
718    <noscript>
719        <section
720            class="message global noscript border-b-2 border-blue-500 bg-blue-50 shadow-none m-0 px-0 rounded-none font-normal"
721            aria-labelledby="messageGlobalNoScriptMessage"
722        >
723            <div class="container text-center">
724                <p id="messageGlobalNoScriptMessage">
725                    <strong>JavaScript scheint in Ihrem Browser deaktiviert zu sein.</strong>
726                    <span>
727                        Um unsere Website in bester Weise zu erfahren, aktivieren Sie Javascript in Ihrem Browser.                    </span>
728                </p>
729            </div>
730        </section>
731    </noscript>
732
733
734
735<script>
736    'use strict';
737
738    (function () {
739        window.amGdprCookieBar = {
740            isEnabled: 1,
741
742            /**
743             * @public
744             * @returns {int}
745             */
746            getIsEnabled() {
747                return this.isEnabled;
748            }
749        }
750    })();
751</script>
751
752
753<script data-cfasync="false">
754    window.amastyCookieManager = window.amastyCookieManager || {};
755</script>
755
756
757<div x-data="initAmastyCookieBar"
758     x-bind="eventListeners"
759     x-cloak
760     id="am-cookie-bar"
761    >
762    <dialog
763    class="m-0&#x20;w-full&#x20;p-4&#x20;md&#x3A;p-2&#x20;bg-ambar-background&#x20;max-w-none&#x20;inset-y-auto&#x20;bottom-0&#x20;z-50&#x20;inset-y-0"
764    data-dialog-ref-name="am-cookie-bar"
765    closeby="any"
766            aria-label="Cookie&#x20;Bar"
767            x-bind="dialogConfig"
768            x-htmldialog.modeless="hide"
769        x-ref="am-cookie-bar"
770    ><span tabindex="0" class="focus:outline-hidden"></span>
771<div class="flex w-full justify-center">
772    <div class="flex w-full justify-center flex-col max-w-screen-sm">
773                    <div class="w-full">
774                <p id="amcookie-bar-content" class="max-h-[30vh] text-sm text-ambar-policy-text" >
775                    Wir verwenden Cookies, um unsere Dienste zu verbessern, persönliche Angebote zu machen und Ihre Erfahrung zu verbessern. Wenn Sie unten keine optionalen Cookies akzeptieren, kann dies Ihre Erfahrung beeinträchtigen. Wenn Sie mehr wissen möchten, lesen Sie bitte die <a href="datenschutz" title="Datenschutz"> Datenschutzerklärung </a>.                </p>
776            </div>
777                <div class="flex flex-wrap w-full justify-center gap-2 mt-4">
778            
779            
780<button
781    type="button"
782    x-data="initAmCookieActionDispatcherBtn"
783    data-dispatch-action="cookiebar-action-allow"
784        @click.prevent="actiondispatchHandler"
785    class="ambar-btn-accept&#x20;ambar-action-btn&#x20;w-full&#x20;justify-center&#x20;w-full&#x20;md&#x3A;max-w-&#x5B;30&#x25;&#x5D;&#x20;mb-2"
786>
787    Alle akzeptieren</button>
788                    
789<button
790    type="button"
791    x-data="initAmCookieActionDispatcherBtn"
792    data-dispatch-action="cookiebar-action-settings"
793        @click.prevent="actiondispatchHandler"
794    class="ambar-btn-settings&#x20;ambar-action-btn&#x20;w-full&#x20;justify-center&#x20;md&#x3A;max-w-&#x5B;30&#x25;&#x5D;&#x20;mb-2"
795>
796    Einstellungen bearbeiten</button>
797            </div>
798    </div>
799</div>
800    <button @click="closeCookieBarHandler"
801            aria-label="Close&#x20;Cookie&#x20;Bar"
802            class="absolute right-2 top-2 text-gray-300 transition
803                        hover:text-black focus:drop-shadow-md hover:drop-shadow-md"
804    >
805        <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24"
806             stroke="currentColor" stroke-width="2">
807            <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/>
808        </svg>
809    </button>
810
811</dialog>
812</div>
813
814<script data-cfasync="false">
815    'use strict';
816
817    function initAmastyCookieBar() {
818        return {
819            ...hyva.modal({
820                duration: 150,
821                transitionEnter: 'transform duration-150',
822                transitionLeave: 'transform duration-150'
823            }),
824            eventListeners: {
825                ['@close-cookie-bar']() {
826                    this.hide('am-cookie-bar');
827                },
828                ['@open-cookie-bar']() {
829                    this.show('am-cookie-bar');
830                    this.$nextTick(() => hyva.trapFocus(this.modalElement));
831                },
832                ['@amasty-cookie-group-updated.window']() {
833                    const lastUpdate = Alpine.store('AmastyCookieGroups').lastUpdate;
834
835                    if (this.isShowNotificationBar(this.firstShowProcess, lastUpdate)) {
836                        if (!this.opened['am-cookie-bar']) {
837                            this.show('am-cookie-bar');
838                            window.dispatchEvent(new CustomEvent('amcookie-show-notification-bar'));
839                        }
840                        this.$nextTick(() => hyva.trapFocus(this.modalElement));
841                    } else {
842                        !!this.opened['am-cookie-bar'] &&
843                        this.hide('am-cookie-bar');
844                    }
845                }
846            },
847
848            firstShowProcess: '0',
849
850            /**
851             * @returns {void}
852             */
853            init: function () {
854                window.isGdprCookieEnabled = true;
855                Alpine.store('AmastyCookieGroups').updateGroupData();
856                this.modalElement = this.$refs['am-cookie-bar'];
857                this.modalElement.setAttribute('aria-describedby', 'amcookie-bar-content');
858            },
859
860            /**
861             * @param {string|number} firstShowProcess
862             * @param {number} lastUpdate
863             * @returns {boolean}
864             */
865            isShowNotificationBar: function (firstShowProcess, lastUpdate) {
866                return (this.isNeedFirstShow(firstShowProcess, lastUpdate) && !hyva.getCookie('amcookie_allowed')
867                    || this.isNeedShowOnUpdate(lastUpdate));
868            },
869
870            /**
871             * @param {string|number} firstShowProcess
872             * @param {number} lastUpdate
873             * @returns {boolean}
874             */
875            isNeedFirstShow: function (firstShowProcess, lastUpdate) {
876                hyva.getBrowserStorage().setItem('amCookieBarFirstShowTime', lastUpdate);
877
878                if (firstShowProcess === '0') {
879                    return true;
880                }
881
882                if (hyva.getBrowserStorage().getItem('amCookieBarFirstShow') !== '1') {
883                    hyva.getBrowserStorage().setItem('amCookieBarFirstShow', '1');
884
885                    return true;
886                }
887
888                return false;
889            },
890
891            /**
892             * @param {number} lastUpdate
893             * @returns {boolean}
894             */
895            isNeedShowOnUpdate: function (lastUpdate) {
896                if (!lastUpdate) {
897                    return false;
898                }
899
900                return this.isNeedShowAfterLastVisit(lastUpdate) || this.isNeedShowAfterLastAccept(lastUpdate);
901            },
902
903            /**
904             * @param {number} lastUpdate
905             * @returns {boolean}
906             */
907            isNeedShowAfterLastVisit: function (lastUpdate) {
908                let needToShowAfterLastVisit =
909                    lastUpdate > hyva.getBrowserStorage().getItem('amCookieBarFirstShowTime');
910
911                if (needToShowAfterLastVisit) {
912                    hyva.getBrowserStorage().setItem('amCookieBarFirstShow', null);
913                    this.clearAmCookieAllowed();
914                }
915
916                return needToShowAfterLastVisit;
917            },
918
919            /**
920             * @param {number} lastUpdate
921             * @returns {boolean}
922             */
923            isNeedShowAfterLastAccept: function (lastUpdate) {
924                let needToShowAfterLastAccept = false;
925
926                if (hyva.getBrowserStorage().getItem('am-last-cookie-acceptance')) {
927                    needToShowAfterLastAccept =
928                        lastUpdate > hyva.getBrowserStorage().getItem('am-last-cookie-acceptance');
929                }
930
931                if (needToShowAfterLastAccept) {
932                    this.clearAmCookieAllowed(needToShowAfterLastAccept);
933                }
934
935                return needToShowAfterLastAccept;
936            },
937
938            /**
939             * @returns {void}
940             */
941            closeCookieBarHandler: function () {
942                this.$dispatch('close-cookie-bar');
943            },
944
945            /**
946             * @param {boolean} needToShowAfterLastAccept
947             * @returns {void}
948             */
949            clearAmCookieAllowed: function (needToShowAfterLastAccept = false) {
950                hyva.setCookie('amcookie_allowed', '', -1, true);
951
952                const amastyCookieManager = window.amastyCookieManager ?? {};
953                const groupData = amastyCookieManager.getAmastyCookieGroupStorage?.()?.groupData ?? [];
954
955                if (needToShowAfterLastAccept && !!groupData.length) {
956                    const disallowedCookies = groupData
957                        .filter(group => !group.isEssential)
958                        .flatMap(group => group.cookies?.map(cookie => cookie.name) ?? []);
959
960                    hyva.setCookie('amcookie_disallowed', disallowedCookies.join(','));
961
962                    amastyCookieManager.deleteDisallowedCookie?.();
963                    amastyCookieManager.getAmastyCookieGroupStorage?.()?.updateGroupDataPermanently(
964                        groupData.map((group) => {
965                            return {
966                                ...group,
967                                checked: group.isEssential
968                            }
969                        })
970                    );
971                }
972            }
973        };
974    }
975
976    window.addEventListener('alpine:init', () => Alpine.data('initAmastyCookieBar', initAmastyCookieBar), {once: true});
977</script>
977
978
979<script>
980    (function(hyva) {
981                const formValidationRules = {
982            required(value, options, field, context) {
983                const el = field.element.type === 'hidden' ? createTextInputFrom(field.element) : field.element,
984                    fieldName = getFieldName(field),
985                    msg = fieldName
986                        ? hyva.str('\u00251\u0020field\u0020is\u0020required.', fieldName)
987                        : 'Dies\u0020ist\u0020ein\u0020Pflichtfeld.';
988
989                if (el.type === 'radio' || el.type === 'checkbox') {
990                    return (value === undefined || value.length === 0) ? msg : true;
991                }
992
993                el.setAttribute('required', '');
994                el.checkValidity();
995
996                return el.validity.valueMissing ? msg : true;
997            },
998            maxlength(value, options, field, context) {
999                const n = Number(options)
1000                if (value.length > n) {
1001                    const fieldName = getFieldName(field);
1002                    return fieldName
1003                        ? n === 1
1004                            ? hyva.str('\u00251\u0020field\u0020cannot\u0020be\u0020longer\u0020than\u00201\u0020character.', fieldName)
1005                            : hyva.str('\u00251\u0020field\u0020cannot\u0020be\u0020longer\u0020than\u0020\u00252\u0020characters.', fieldName, options)
1006                        : n === 1
1007                            ? 'Bitte\u0020geben\u0020Sie\u0020nicht\u0020mehr\u0020als\u00201\u0020Zeichen\u0020ein.'
1008                            : hyva.strf('Bitte\u0020geben\u0020Sie\u0020nicht\u0020mehr\u0020als\u0020\u00250\u0020Zeichen\u0020ein.', options);
1009                }
1010                return true;
1011            },
1012            minlength(value, options, field, context) {
1013                const n = Number(options)
1014                if (value.length > 0 && value.length < n) {
1015                    const fieldName = getFieldName(field);
1016                    return fieldName
1017                        ? n === 1
1018                            ? hyva.str('\u00251\u0020field\u0020must\u0020be\u0020at\u0020least\u00201\u0020character\u0020long.', fieldName)
1019                            : hyva.str('\u00251\u0020field\u0020must\u0020be\u0020at\u0020least\u0020\u00252\u0020characters\u0020long.', fieldName, options)
1020                        : n === 1
1021                            ? 'Bitte\u0020geben\u0020Sie\u0020mindestens\u00201\u0020Zeichen\u0020ein.'
1022                            : hyva.strf('Bitte\u0020geben\u0020Sie\u0020mindestens\u0020\u00250\u0020Zeichen\u0020ein.', options);
1023                }
1024                return true;
1025            },
1026            max(value, options, field, context) {
1027                field.element.setAttribute('max', options);
1028                field.element.checkValidity();
1029                if (field.element.validity.rangeOverflow) {
1030                    const fieldName = getFieldName(field);
1031                    return fieldName
1032                        ? hyva.str('\u00251\u0020field\u0020must\u0020contain\u0020a\u0020value\u0020less\u0020than\u0020or\u0020equal\u0020to\u0020\u0022\u00252\u0022.', fieldName, options)
1033                        : hyva.strf('Bitte\u0020geben\u0020Sie\u0020einen\u0020Wert\u0020ein,\u0020der\u0020kleiner\u0020oder\u0020gleich\u0020\u0022\u00250\u0022\u0020ist.', options);
1034                }
1035                return true;
1036            },
1037            min(value, options, field, context) {
1038                field.element.setAttribute('min', options);
1039                field.element.checkValidity();
1040                if (field.element.validity.rangeUnderflow) {
1041                    const fieldName = getFieldName(field);
1042                    return fieldName
1043                        ? hyva.str('\u00251\u0020field\u0020must\u0020contain\u0020a\u0020value\u0020greater\u0020than\u0020or\u0020equal\u0020to\u0020\u0022\u00252\u0022.', fieldName, options)
1044                        : hyva.strf('Bitte\u0020geben\u0020Sie\u0020einen\u0020Wert\u0020gr\u00F6\u00DFer\u0020oder\u0020gleich\u0020\u0022\u00250\u0022\u0020ein.', options);
1045                }
1046                return true;
1047            },
1048            step(value, options, field, context) {
1049                field.element.setAttribute('step', options);
1050                field.element.checkValidity();
1051                if (field.element.validity.stepMismatch) {
1052                    const val = Number(value),
1053                        step = Number(options),
1054                        fieldName = getFieldName(field),
1055                        nearestLowerValue = Math.floor(val / step) * step,
1056                        nearestUpperValue = Math.ceil(val / step) * step;
1057                    return fieldName
1058                        ? hyva.str('\u00251\u0020field\u0020is\u0020invalid.\u0020The\u0020two\u0020nearest\u0020valid\u0020values\u0020are\u0020\u0022\u00252\u0022\u0020and\u0020\u0022\u00253\u0022.', fieldName, nearestLowerValue, nearestUpperValue)
1059                        : hyva.strf('Bitte\u0020geben\u0020Sie\u0020einen\u0020g\u00FCltigen\u0020Wert\u0020ein.\u0020Die\u0020beiden\u0020n\u00E4chstliegenden\u0020g\u00FCltigen\u0020Werte\u0020sind\u0020\u0022\u00250\u0022\u0020und\u0020\u0022\u00251\u0022.', nearestLowerValue, nearestUpperValue);
1060                }
1061                return true;
1062            },
1063            pattern(value, options, field, context) {
1064                field.element.setAttribute('pattern', options);
1065                field.element.checkValidity();
1066                if (field.element.validity.patternMismatch) {
1067                    const fieldName = getFieldName(field);
1068                    return fieldName
1069                        ? field.element.pattern
1070                            ? hyva.str('\u00251\u0020field\u0020must\u0020match\u0020the\u0020requested\u0020format\u003A\u0020\u00252.', fieldName, field.element.pattern)
1071                            : hyva.str('\u00251\u0020field\u0020must\u0020match\u0020the\u0020requested\u0020format.', fieldName)
1072                        : field.element.pattern
1073                            ? hyva.strf('Bitte\u0020entsprechen\u0020Sie\u0020dem\u0020gew\u00FCnschten\u0020Format\u003A\u0020\u00250.', field.element.pattern)
1074                            : 'Bitte\u0020beachten\u0020Sie\u0020das\u0020gew\u00FCnschte\u0020Format.';
1075                }
1076                return true;
1077            },
1078            email(value, options, field, context) {
1079                                const rule = /^([a-z0-9,!\#\$%&'\*\+\/=\?\^_`\{\|\}~-]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z0-9,!\#\$%&'\*\+\/=\?\^_`\{\|\}~-]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*@([a-z0-9-]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z0-9-]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*\.(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]){2,})$/i;
1080                if (value.length > 0 && !rule.test(value)) {
1081                    const fieldName = getFieldName(field);
1082                    return fieldName
1083                        ? hyva.str('\u00251\u0020field\u0020must\u0020contain\u0020a\u0020valid\u0020email\u0020address\u0020\u0028Ex\u003A\u0020johndoe\u0040domain.com\u0029.', fieldName)
1084                        : 'Bitte\u0020geben\u0020Sie\u0020eine\u0020g\u00FCltige\u0020E\u002DMail\u002DAdresse\u0020ein\u0020\u0028z.B\u003A\u0020johndoe\u0040domain.com\u0029.';
1085                }
1086                return true;
1087            },
1088            password(value, options, field, context) {
1089                const rule = /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/;
1090                if (value.length > 0 && !rule.test(value)) {
1091                    const fieldName = getFieldName(field);
1092                    return fieldName
1093                        ? hyva.str('\u00251\u0020field\u0020must\u0020contain\u0020at\u0020least\u0020one\u0020upper\u0020case,\u0020one\u0020lower\u0020case,\u0020one\u0020digit\u0020and\u0020one\u0020special\u0020character\u0020\u0028\u0023\u003F\u0021\u0040\u0024\u0025\u005E\u0026\u002A\u002D\u0029', fieldName)
1094                        : 'Bitte\u0020geben\u0020Sie\u0020mindestens\u0020einen\u0020Gro\u00DFbuchstaben,\u0020einen\u0020Kleinbuchstaben,\u0020eine\u0020Ziffer\u0020und\u0020ein\u0020Sonderzeichen\u0020\u0028\u0023\u003F\u0021\u0040\u0024\u0025\u005E\u0026amp\u003B\u002A\u002D\u0029\u0020an.';
1095                }
1096                return true;
1097            },
1098            equalTo(value, options, field, context) {
1099                const dependencyField = context.fields[options].element;
1100                if (value !== dependencyField.value) {
1101                    const dependencyFieldName =
1102                        dependencyField.label ||
1103                        dependencyField.title ||
1104                        (dependencyField.labels && dependencyField.labels[0] && dependencyField.labels[0].innerText) ||
1105                        dependencyField.name,
1106                        fieldName = getFieldName(field);
1107                    return fieldName
1108                        ? hyva.str('\u00251\u0020field\u0020value\u0020must\u0020be\u0020the\u0020same\u0020as\u0020\u0022\u00252\u0022.', fieldName, dependencyFieldName)
1109                        : hyva.strf('Der\u0020Wert\u0020dieses\u0020Feldes\u0020muss\u0020mit\u0020\u0022\u00250\u0022\u0020identisch\u0020sein.', dependencyFieldName);
1110                }
1111                return true;
1112            }
1113        };
1114
1115                function raceSome(promises, pred) {
1116            return new Promise((resolve, reject) => {
1117
1118                if (promises.length === 0) {
1119                    return resolve();
1120                }
1121
1122                let settled = false, nDone = 0;
1123
1124                const resolveIf = v => {
1125                    if (!settled && (pred(v) || ++nDone === promises.length)) {
1126                        settled = true;
1127                        resolve(v);
1128                    }
1129                    return v;
1130                }
1131
1132                promises.map(promise => {
1133                    promise.then(resolveIf).catch(reason => {
1134                        settled = true;
1135                        reject(reason)
1136                    });
1137                    return promise;
1138                });
1139            });
1140        }
1141
1142        const INPUT_ATTRIBUTE_RULES = {min: 'min', max: 'max', required: 'required', minlength: 'minlength', maxlength: 'maxlength', step: 'step', pattern: 'pattern'}
1143        const INPUT_TYPE_RULES = {email: 'email'}
1144
1145        function getRules(element) {
1146            let rules = {};
1147            Object.keys(INPUT_ATTRIBUTE_RULES).forEach(attrName => {
1148                if (element.hasAttribute(attrName)) {
1149                    rules[INPUT_ATTRIBUTE_RULES[attrName]] = element.getAttribute(attrName);
1150                }
1151            })
1152            if (INPUT_TYPE_RULES[element.type]) {
1153                rules[INPUT_TYPE_RULES[element.type]] = true;
1154            }
1155
1156            if (element.dataset.validate) {
1157                try {
1158                    Object.assign(rules, JSON.parse(element.dataset.validate));
1159                } catch (error) {
1160                    console.error('Validator error. Cannot parse data-validate attribute of element:\n', element);
1161                }
1162            }
1163
1164            return rules;
1165        }
1166
1167        function isInvalidRuleResult(ruleState) {
1168            return typeof ruleState === 'string' || !ruleState || (ruleState.type && ruleState.content);
1169        }
1170
1171        async function runValidateFn(rule, options, value, field) {
1172            return formValidationRules[rule](value, options, field, this);
1173        }
1174
1175        function generateId() {
1176            let id;
1177            do {
1178                id = `${this.idPrefix}-${++this.idSeq}`;
1179            } while (document.getElementById(id));
1180            return id;
1181        }
1182
1183        function isVisible(element) {
1184            const el = element.type !== 'hidden' ? element : (element.parentElement || {});
1185            return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length)
1186        }
1187
1188        function elementWillValidate(element) {
1189            return (element.willValidate || element.type === 'hidden')
1190                && element.tagName !== 'BUTTON'
1191                && element.disabled === false
1192                && !(element.tagName === 'INPUT' && element.type === 'submit')
1193                && (element.hasAttribute('data-validate-hidden') || isVisible(element))
1194        }
1195
1196        function createMessageContainer(el, fieldWrapperClassName) {
1197            if (! el.parentElement) {
1198                return;
1199            }
1200            const refocus = document.activeElement === el;
1201            const wrapper = document.createElement('div');
1202            wrapper.classList.add.apply(wrapper.classList, fieldWrapperClassName.split(' '));
1203            el.parentElement.insertBefore(wrapper, el);
1204            wrapper.appendChild(el);
1205            refocus && document.activeElement !== el && el.focus();
1206            return wrapper;
1207        }
1208
1209        function containerNotFound(selector, el) {
1210            const msg = `Cannot find message container element ${selector} of ${el.name}`;
1211            console.error(msg, el);
1212            throw msg;
1213        }
1214
1215        function createTextInputFrom(el) {
1216            const text = document.createElement('INPUT');
1217            text.type = 'text';
1218            text.value = el.value;
1219            return text;
1220        }
1221
1222        function classNamesToSelector(classNames) {
1223            return classNames.split(' ')
1224                .filter(className => className.length > 0)
1225                .map(className => `.${className}`)
1226                .join('')
1227        }
1228
1229        function hasMessagesWrapper(field, messagesWrapperClassName) {
1230            return this.getMessageContainer(field).querySelector(classNamesToSelector(messagesWrapperClassName));
1231        }
1232
1233        function getMessagesWrapper(field, messagesWrapperClassName) {
1234            if (hasMessagesWrapper.call(this, field, messagesWrapperClassName)) {
1235                return this.getMessageContainer(field).querySelector(classNamesToSelector(messagesWrapperClassName));
1236            }
1237
1238            const msgWrapper = document.createElement('ul');
1239            const msgId = generateId.call(this);
1240            msgWrapper.id = msgId;
1241            field.element.setAttribute('aria-errormessage', msgId);
1242            field.element.setAttribute('aria-describedby', msgId);
1243            msgWrapper.classList.add.apply(msgWrapper.classList, messagesWrapperClassName.split(' '));
1244            if (field.validateOnChange) {
1245                msgWrapper.setAttribute('aria-live', 'polite');
1246            }
1247            this.getMessageContainer(field).appendChild(msgWrapper);
1248
1249            return msgWrapper;
1250        }
1251
1252        function getCheckedValues(field) {
1253            const name = field.element.name.replace(/([\\"])/g, '\\$1');
1254            const elements = field.element.form.querySelectorAll('input[name="' + name + '"]:checked');
1255            return Array.from(elements).map(el => el.value);
1256        }
1257
1258        function escapeHtml(s) {
1259            const div = document.createElement('div')
1260            div.innerText = s;
1261            return div.innerHTML;
1262        }
1263
1264        
1265        function formValidation(form, options = {}) {
1266            const formElement = form || this.$el;
1267
1268            if (formElement.dataset && formElement.dataset.options) {
1269                try {
1270                    options = Object.assign(options, JSON.parse(formElement.dataset.options || '{}'));
1271                } catch (e) {
1272                    throw new Error('Cannot read the form options from the data-options attribute: not valid JSON');
1273                }
1274            }
1275
1276            // Disable browser default validation
1277            if (formElement.tagName === 'FORM') {
1278                formElement.setAttribute('novalidate', '');
1279            } else {
1280                console.error('formValidation can be initialized only on FORM element', formElement);
1281                return;
1282            }
1283
1284            options = Object.assign({
1285                fieldWrapperClassName: 'field field-reserved',
1286                messagesWrapperClassName: 'messages',
1287                validClassName: 'field-success',
1288                invalidClassName: 'field-error',
1289                pageMessagesWrapperSelector: null,
1290                scrollToFirstError: true,
1291            }, options || {});
1292
1293            return {
1294                state: {
1295                    valid: false,
1296                },
1297                isSubmitting: false,
1298                fields: {},
1299                idSeq: 0,
1300                idPrefix: formElement.id || 'vld-msg',
1301                setupFields(elements) {
1302                    this.fields = {};
1303                    Array.from(elements).forEach(element => {
1304                        if (elementWillValidate(element)) {
1305                            this.setupField(element);
1306                        }
1307                    });
1308                },
1309                setupField(element) {
1310                    if (! element) return;
1311                    const onChange = !!element.dataset.onChange;
1312                    if (elementWillValidate(element)) {
1313                        const rules = getRules(element);
1314                        if (Object.keys(rules).length > 0) {
1315                            if (this.fields[element.name]) {
1316                                Object.assign(this.fields[element.name].rules, rules);
1317                            } else {
1318                                this.fields[element.name] = {
1319                                    element,
1320                                    rules: rules,
1321                                    validateOnChange: onChange,
1322                                    state: {
1323                                        valid: null,
1324                                        rules: {}
1325                                    }
1326                                }
1327                            }
1328                        }
1329                    } else {
1330                        console.error('Element will not validate', element);
1331                    }
1332                },
1333                onSubmit(event) {
1334                    if (event.target.tagName === 'FORM') {
1335                        event.preventDefault();
1336
1337                        if (this.isSubmitting) return;
1338                        this.isSubmitting = true;
1339
1340                        this.validate()
1341                            .then(() => event.target.submit())
1342                            .catch(invalidElements => {
1343                                this.isSubmitting = false;
1344                            });
1345                    }
1346                },
1347                onChange(event) {
1348                    event.target.dataset.onChange = 'true';
1349                    if (!Object.keys(this.fields).length) {
1350                        this.setupFields(formElement.elements);
1351                    }
1352                    if (!Object.keys(this.fields).includes(event.target.name)) {
1353                        this.setupField(event.target);
1354                    }
1355                    const field = this.fields[event.target.name];
1356
1357                    this.validateField(field);
1358                    field && field.element.removeAttribute('data-on-change')
1359                },
1360                validateSafe() {
1361                    return new Promise(resolve => this.validate().then(() => resolve(true)).catch(() => {}))
1362                },
1363                validate() {
1364                    if (!Object.keys(this.fields).length || !Object.keys(this.fields).length !== formElement.elements.length) {
1365                        this.setupFields(formElement.elements);
1366                    }
1367                    return new Promise(async (resolve, reject) => {
1368                        if (formElement.elements) {
1369                                                        await raceSome(this.validateFields(), result => result !== true)
1370                            const invalidFields = Object.values(this.fields).filter(field => !field.state.valid);
1371                            this.state.valid = invalidFields.length === 0;
1372                            if (this.state.valid) {
1373                                resolve();
1374                            } else {
1375                                if (options.scrollToFirstError && invalidFields.length > 0) {
1376                                    invalidFields[0].element.focus()
1377                                    invalidFields[0].element.select && invalidFields[0].element.select();
1378                                }
1379                                reject(invalidFields.map(field => field.element));
1380                            }
1381                        }
1382                    });
1383                },
1384                                validateFields() {
1385                    const fields = Object.values(this.fields);
1386
1387                                        fields.forEach(field => {
1388                        this.getMessageContainer(field).classList.remove(options.validClassName, options.invalidClassName)
1389                    });
1390                                        return fields.map(field => this.validateField(field))
1391                },
1392                                validateField(field) {
1393                                        if (! field || ! elementWillValidate(field.element)) {
1394                        return new Promise(resolve => resolve(true))
1395                    }
1396
1397                    let value;
1398                    if (field.element.type === 'checkbox') {
1399                        value = getCheckedValues(field);
1400                    } else if (field.element.type === 'radio') {
1401                        value = getCheckedValues(field)[0] || undefined;
1402                    } else if (field.element.tagName === 'SELECT' && field.element.multiple) {
1403                        value = Array.from(field.element.selectedOptions).map(opt => opt.value);
1404                    } else {
1405                        value = field.element.value;
1406                    }
1407
1408                    const rules = field.rules || {};
1409
1410                                        field.state.valid = true;
1411                    this.showFieldState(field);
1412
1413                
1414                                        const fieldValidations = Object.keys(rules).filter(rule => formValidationRules[rule]).map(async rule => {
1415                        return runValidateFn.call(this, rule, rules[rule], value, field).then(result => {
1416                            field.state.rules[rule] = result;
1417                            return result;
1418                        })
1419                    });
1420
1421                    return new Promise(resolve => {
1422                                                Promise.all(fieldValidations).then(results => {
1423                                                                                    field.state.valid = !elementWillValidate(field.element) || rules.length === 0 || !results.some(isInvalidRuleResult)
1424                            this.showFieldState(field);
1425                            resolve(field.state.valid);
1426                        })
1427                    });
1428                },
1429                                getMessagesByField(field) {
1430                    const messages = [];
1431                    const invalidRules = Object.keys(field.state.rules).filter(rule => isInvalidRuleResult(field.state.rules[rule]));
1432
1433                    field.rules && Object.keys(field.rules).forEach((rule) => {
1434                        if (invalidRules.includes(rule)) {
1435                            const customMessage = field.element.getAttribute('data-msg-' + rule);
1436                            const message = customMessage ? customMessage : field.state.rules[rule];
1437                            const ruleOptions = JSON.parse(JSON.stringify(field.rules[rule]));
1438
1439                            if (typeof message === 'undefined' || message === null || (typeof message !== 'string' && ! message.type)) {
1440                                messages.push(hyva.strf('Validation rule "%0" failed.', rule));
1441                            } else if (Array.isArray(ruleOptions)) {
1442                                ruleOptions.unshift(message.type ? message.content : message);
1443                                const content = hyva.strf.apply(null, ruleOptions);
1444                                messages.push(message.type ? {type: message.type, content} : content);
1445                            } else {
1446                                const content = hyva.strf(message.type ? message.content : message, ruleOptions)
1447                                messages.push(message.type ? {type: message.type, content} : content);
1448                            }
1449                        }
1450                    });
1451                    return messages;
1452                },
1453                /** @deprecated */
1454                getFieldWrapper(field) {
1455                                        return this.getMessageContainer(field)
1456                },
1457                getMessageContainer(field) {
1458                    let container;
1459                    const pageSelector = field.element.getAttribute('data-validation-container') || options.pageMessagesContainerSelector;
1460                    if (pageSelector) {
1461                        container = document.querySelector(pageSelector)
1462                            || containerNotFound(pageSelector, field.element)
1463                    } else {
1464                        const containerSelector = classNamesToSelector(options.fieldWrapperClassName);
1465                        container = field.element.closest(containerSelector)
1466                            || createMessageContainer(field.element, options.fieldWrapperClassName)
1467                            || containerNotFound(containerSelector, field.element);
1468                    }
1469
1470                    return container;
1471                },
1472                showFieldState(field) {
1473                    const container = this.getMessageContainer(field),
1474                        hasErrorMessages = hasMessagesWrapper.call(this, field, options.messagesWrapperClassName),
1475                        messages = this.getMessagesByField(field).map(m => {
1476                            return m.type !== 'html' ? escapeHtml(m.type ? m.content : m) : m.content;
1477                        });
1478                    container.classList.toggle(options.validClassName, field.state.valid && ! hasErrorMessages);
1479                    container.classList.toggle(options.invalidClassName, !field.state.valid || hasErrorMessages);
1480                    this.createHtmlErrorMessage(field, messages);
1481
1482                    if (field.state.valid) {
1483                        field.element.removeAttribute('aria-invalid');
1484                    } else {
1485                        field.element.setAttribute('aria-invalid', 'true');
1486                        if (! document.activeElement) {
1487                            field.element.focus();
1488                        }
1489                    }
1490                },
1491                removeMessages(field, messagesClass) {
1492                    if (! hasMessagesWrapper.call(this, field, messagesClass || options.messagesWrapperClassName)) {
1493                        return;
1494                    }
1495
1496                    const msgWrapper = getMessagesWrapper.call(this, field, messagesClass || options.messagesWrapperClassName);
1497                    const messages = msgWrapper.querySelectorAll(`[data-msg-field='${field.element.name}']`);
1498                    Array.from(messages).forEach(msg => msg.remove());
1499                    if (msgWrapper && msgWrapper.childElementCount === 0) {
1500                        field.element.removeAttribute('aria-errormessage');
1501                        field.element.removeAttribute('aria-describedby');
1502                        msgWrapper.remove();
1503                    }
1504                },
1505                createErrorMessage(field, messages) {
1506                    const htmlMessages = (Array.isArray(messages) ? messages : [messages]).map(escapeHtml)
1507                    this.createHtmlErrorMessage(field, htmlMessages);
1508                },
1509                createHtmlErrorMessage(field, messages) {
1510                    this.removeMessages(field, options.messagesWrapperClassName);
1511                    field.element.removeAttribute('aria-errormessage');
1512                    field.element.removeAttribute('aria-describedby');
1513
1514                    if (!field.state.valid) {
1515                        const msgWrapper = this.addHtmlMessages(field, options.messagesWrapperClassName, messages);
1516                        field.element.setAttribute('aria-errormessage', msgWrapper.id);
1517                        field.element.setAttribute('aria-describedby', msgWrapper.id);
1518                    }
1519                },
1520                /** @deprecated */
1521                createMessage(field, message) {
1522                                        return this.addMessages(field, options.messagesWrapperClassName, message);
1523                },
1524                addMessages(field, messagesClass, messages) {
1525                    const htmlMessages = (Array.isArray(messages) ? messages : [messages]).map(escapeHtml)
1526                    return this.addHtmlMessages(field, messagesClass, htmlMessages);
1527                },
1528                addHtmlMessages(field, messagesClass, htmlMessages) {
1529                    const msgWrapper = getMessagesWrapper.call(this, field, messagesClass);
1530
1531                    (Array.isArray(htmlMessages) ? htmlMessages : [htmlMessages]).forEach((htmlMessage) => {
1532                        const li = document.createElement('li');
1533                        li.innerHTML = htmlMessage;
1534                        li.setAttribute('data-msg-field', field.element.name);
1535                        msgWrapper.appendChild(li);
1536                    });
1537
1538                    return msgWrapper;
1539                },
1540                setField(name, value) {
1541                    this.fields[name].element.value = value;
1542                    this.fields[name].element.dispatchEvent((new Event('input')));
1543                    this.validateField(this.fields[name]);
1544                }
1545            }
1546        }
1547
1548        function getFieldName(field) {
1549                        const fieldName = field.element?.getAttribute('title')
1550                || document.querySelector(`label[for="${field.element?.id}"]`)?.innerText;
1551
1552            return fieldName
1553                ? fieldName.trim()
1554                : '';
1555        }
1556
1557        hyva.formValidation = formValidation;
1558        hyva.formValidation.rules = formValidationRules;
1559        hyva.formValidation.setInputAttributeRuleName = (attrName, ruleName) => INPUT_ATTRIBUTE_RULES[attrName] = ruleName || attrName;
1560        hyva.formValidation.setInputTypeRuleName = (typeName, ruleName) => INPUT_TYPE_RULES[typeName] = ruleName || typeName;
1561        hyva.formValidation.addRule = (name, validator) => formValidationRules[name] = validator;
1562        hyva.formValidation.getFieldName = getFieldName;
1563    }(window.hyva = window.hyva || {}));
1564
1565    window.addEventListener('alpine:init', () => {
1566        Alpine.data('hyva.formValidation', hyva.formValidation);
1567        Alpine.data('hyva.formValidation($el)', hyva.formValidation);
1568    }, {once: true});
1569    //# sourceURL=hyva-advanced-form-validation.js
1570</script>
1570
1571<div class="page-wrapper"><header class="page-header"><a class="action skip sr-only focus:not-sr-only focus:absolute focus:z-40 focus:bg-white
1572   contentarea"
1573   href="#contentarea">
1574    <span>
1575        Direkt zum Inhalt    </span>
1576</a>
1577<script>
1578    function initHeader () {
1579        return {
1580            searchOpen: false,
1581            cart: {},
1582            isCartOpen: false,
1583            stickyHeaderApplied: false,
1584            stickyLogoVisible: false, // Initialize stickyLogoVisible
1585            getData(data) {
1586                if (data.cart) { this.cart = data.cart }
1587            },
1588            isCartEmpty() {
1589                return !this.cart.summary_count
1590            },
1591            toggleCart(event) {
1592                if (event.detail && event.detail.isOpen !== undefined) {
1593                    this.isCartOpen = event.detail.isOpen
1594                    if (!this.isCartOpen && this.$refs && this.$refs.cartButton) {
1595                        this.$refs.cartButton.focus()
1596                    }
1597                } else {
1598                                        this.isCartOpen = true
1599                }
1600            }
1601        }
1602    }
1603
1604    function initCompareHeader() {
1605        return {
1606            compareProducts: null,
1607            itemCount: 0,
1608            receiveCompareData(data) {
1609                if (data['compare-products']) {
1610                    this.compareProducts = data['compare-products'];
1611                    this.itemCount = this.compareProducts.count;
1612                }
1613            }
1614        }
1615    }
1616</script>
1616
1617<div id="header"
1618     class="relative header_inspeya_mobile z-30 w-full border-b bg-container-lighter border-container-lighter"
1619     x-data="initHeader()"
1620     @private-content-loaded.window="getData(event.detail.data)"
1621>
1622    <div class="container flex flex-wrap items-center justify-between w-full px-6 py-3 mx-auto mt-0">
1623        <!--Logo-->
1624        
1625<div class="order-1 sm:order-2 lg:order-1 w-full pb-2 sm:w-auto sm:pb-0 headerLogo"
1626     x-data="initStickyHeader()"
1627     x-init="init()"
1628>
1629    <a class="main_modehaus_logo flex items-center justify-center text-xl font-medium tracking-wide text-gray-800
1630              no-underline hover:no-underline font-title sticky_inspeya_mobile" id="mainLogo"
1631       href="https://www.mode-jost.de/"
1632       aria-label="Zur&#x20;Startseite&#x20;gehen"
1633       x-bind:class="{ 'sticky_inspeya_mobile': stickyLogoVisible }"
1634    >
1635        <!-- Display the main logo image when stickyLogoVisible is false -->
1636        <img
1637            class="main-header-logo"
1638            src="https://www.mode-jost.de/media/logo/stores/1/Jost-Logo-Web-Standard.png"
1639            alt="Mode&#x20;Jost&#x20;Logo"
1640            width="120"            height="150"            x-show="!stickyLogoVisible"
1641        />
1642        
1643        <!-- Display the sticky logo image when stickyLogoVisible is true -->
1644        <img style="display: none;" src="https://www.mode-jost.de/media/logo/stores/1/Jost-Logo-Web-Standard.png" 
1645         alt="Sticky Logo" 
1646         x-show="stickyLogoVisible" />
1647
1648        
1649            </a>
1650</div>
1651
1652
1653<script>
1654    function initStickyHeader() {
1655        return {
1656            stickyHeaderApplied: false,
1657            stickyLogoVisible: false,
1658            throttleTimeout: null, // Track the throttle timeout
1659            init() {
1660                // Check if the viewport width matches the criteria for mobile devices
1661                this.detectDevice();
1662                this.addEventListeners();
1663            },
1664            detectDevice() {
1665                const width = window.innerWidth;
1666                const height = window.innerHeight;
1667                const resolution = width * height;
1668                if (width <= 768 ) {
1669                    window.addEventListener('scroll', this.handleScrollThrottled.bind(this));
1670                } else {
1671                    this.removeStickyHeader();
1672                }
1673            },
1674            addEventListeners() {
1675                // Add event listener to handle viewport width changes
1676                window.addEventListener('resize', () => {
1677                    this.detectDevice();
1678                });
1679            },
1680            removeStickyHeader() {
1681                // Remove the sticky header class and hide the sticky logo
1682                const pageHeader = document.querySelector('.page-header');
1683                if (pageHeader) {
1684                    pageHeader.classList.remove('sticky', 'bg-white', 'z-10');
1685                }
1686                this.stickyHeaderApplied = false;
1687                this.stickyLogoVisible = false;
1688            },
1689            handleScrollThrottled() {
1690                // Throttle the scroll event to improve performance
1691                if (!this.throttleTimeout) {
1692                    this.throttleTimeout = setTimeout(() => {
1693                        this.throttleTimeout = null;
1694                        this.handleScroll();
1695                    }, 100); // Adjust the throttle interval as needed (in milliseconds)
1696                }
1697            },
1698            handleScroll() {
1699                const scrollPosition = window.pageYOffset;
1700                // Check if the scroll position reaches a certain threshold (e.g., 100 pixels)
1701                if (scrollPosition >= 60 && !this.stickyHeaderApplied) {
1702                    // Add sticky header class and make the sticky logo visible
1703                    const pageHeader = document.querySelector('.page-header');
1704                    if (pageHeader) {
1705                        pageHeader.classList.add('sticky', 'bg-white', 'z-10');
1706                    }
1707                    this.stickyHeaderApplied = true;
1708                    this.stickyLogoVisible = true;
1709                } else if (scrollPosition < 60 && this.stickyHeaderApplied) {
1710                    // Remove sticky header class and hide the sticky logo
1711                    this.removeStickyHeader();
1712                }
1713            }
1714        };
1715    }
1716</script>
1716
1717<style>
1718/* Hide sticky logo on tablet & desktop */
1719@media (min-width: 767px) {
1720    .sticky_inspeya_mobile {
1721        display: none !important;
1722    }
1723}
1724
1725/* Show only on mobile */
1726@media (max-width: 766px) {
1727    .sticky_inspeya_mobile {
1728        display: flex !important;
1729    }
1730}
1731</style>
1732
1733        <!--Main Navigation-->
1734        <div class="z-20 order-2 sm:order-1 lg:order-2 navigation hidden lg:flex"
1735>
1736            <div class="sections nav-sections">
1737            <nav class="navigation" data-action="navigation">
1738                        <div id="ninjamenus1" class="ninjamenus  ninjamenus-horizontal ninjamenus-mobile-accordion ninjamenus-desktop  ninjamenus-top" data-type="horizontal" data-mobile-type="accordion">
1739                        <div class="magezon-builder magezon-builder-preload"><div class="tba77py mgz-element nav-item mega left_edge_menu_bar level0"><a href="https://www.mode-jost.de/filialen" ><span class="title">FILIALEN</span> </a> <div class="item-submenu mgz-element-inner tba77py-s"><div class="pna71lm mgz-element mgz-element-row full_width_row"><div class="mgz-element-inner pna71lm-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="gau4rsv mgz-element mgz-element-column meusListBlock_ mgz-col-xl-15 mgz-col-lg-8 mgz-col-md-12 mgz-col-sm-12 mgz-col-xs-12"><div class="mgz-element-inner gau4rsv-s meusListBlock_Sub"><div class="y9xvypr mgz-element mgz-element-row full_width_row"><div class="mgz-element-inner y9xvypr-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="wsemtd1 mgz-element mgz-element-column mgz-col-xl-3 mgz-col-lg-3 mgz-col-md-3 mgz-col-sm-12 mgz-col-xs-12 mgz-row-gap-margin"><div class="mgz-element-inner wsemtd1-s"><div class="aa9r2fr mgz-element nav-item" data-icon="far mgz-fa-address-card"><a href="https://www.mode-jost.de/filialen/gruenstadt" ><span class="title">GRÜNSTADT</span> </a> <style class="mgz-style">.aa9r2fr>a{font-size:16px;font-weight:600!important;}</style></div></div></div></div>
1739<script>
1740    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
1741        .then(() => {
1742            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
1743        })
1744        .then(() => {
1745            const elemId = $('.y9xvypr');
1746            let mgzBuilder = new MagezonBuilder(elemId);
1747        })
1748</script>
1748<style class="mgz-style">.y9xvypr-s{margin-bottom:15px !important;}</style></div></div><style class="mgz-style">.gau4rsv-s{padding:0px!important;}</style></div></div><div class="h68u94v mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner h68u94v-s"><div class="ntofreo mgz-element nav-item"><a href="https://www.mode-jost.de/filialen/frankenthal" ><span class="title">FRANKENTHAL</span> </a> <style class="mgz-style">.ntofreo>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="q7ebbev mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner q7ebbev-s"><div class="xnwx1pt mgz-element nav-item"><a href="https://www.mode-jost.de/filialen/landau" ><span class="title">LANDAU</span> </a> <style class="mgz-style">.xnwx1pt>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="uskby9e mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner uskby9e-s"><div class="q2i4x69 mgz-element nav-item"><a href="https://www.mode-jost.de/filialen/worms" ><span class="title">WORMS</span> </a> <style class="mgz-style">.q2i4x69>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="wkqh137 mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner wkqh137-s"><div class="tkxsol9 mgz-element nav-item"><a href="https://www.mode-jost.de/filialen/bruchsal" ><span class="title">BRUCHSAL</span> </a> <style class="mgz-style">.tkxsol9>a{font-size:16px;font-weight:600!important;}</style></div></div></div></div>
1748<script>
1749    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
1750        .then(() => {
1751            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
1752        })
1753        .then(() => {
1754            const elemId = $('.pna71lm');
1755            let mgzBuilder = new MagezonBuilder(elemId);
1756        })
1757</script>
1757</div></div></div><style class="mgz-style">.tba77py-s{border-color:#d1d0ce !important;border-top-width:5px !important;border-top-style:solid;}.tba77py > .item-submenu{width:100% !important;}</style></div><div class="htd1n13 mgz-element nav-item mega left_edge_menu_bar level0"><a href="https://www.mode-jost.de/aktuelles" ><span class="title">AKTUELLES</span> </a> <div class="item-submenu mgz-element-inner htd1n13-s"><div class="j7cj3qr mgz-element mgz-element-row full_width_row"><div class="mgz-element-inner j7cj3qr-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="i3vef5f mgz-element mgz-element-column meusListBlock_ mgz-col-xl-15 mgz-col-lg-8 mgz-col-md-12 mgz-col-sm-12 mgz-col-xs-12"><div class="mgz-element-inner i3vef5f-s meusListBlock_Sub"><div class="bppyihm mgz-element mgz-element-row full_width_row"><div class="mgz-element-inner bppyihm-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="viycg1j mgz-element mgz-element-column mgz-col-xl-3 mgz-col-lg-3 mgz-col-md-3 mgz-col-sm-12 mgz-col-xs-12 mgz-row-gap-margin"><div class="mgz-element-inner viycg1j-s"><div class="np5rifo mgz-element nav-item" data-icon="far mgz-fa-address-card"><a href="/aktuelles/news" ><span class="title">NEWS</span> </a> <style class="mgz-style">.np5rifo>a{font-size:16px;font-weight:600!important;}</style></div></div></div></div>
1757<script>
1758    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
1759        .then(() => {
1760            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
1761        })
1762        .then(() => {
1763            const elemId = $('.bppyihm');
1764            let mgzBuilder = new MagezonBuilder(elemId);
1765        })
1766</script>
1766<style class="mgz-style">.bppyihm-s{margin-bottom:15px !important;}</style></div></div><style class="mgz-style">.i3vef5f-s{padding:0px!important;}</style></div></div><div class="gfpwrhy mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner gfpwrhy-s"><div class="dq5u59j mgz-element nav-item"><a href="https://www.mode-jost.de/aktuelles/prospekte" ><span class="title">PROSPEKTE</span> </a> <style class="mgz-style">.dq5u59j>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="rw662uu mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner rw662uu-s"><div class="y23fnn3 mgz-element nav-item"><a href="/aktuelles/termine" ><span class="title">TERMINE</span> </a> <style class="mgz-style">.y23fnn3>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="mshmm1l mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner mshmm1l-s"><div class="cuw4gey mgz-element nav-item"><a href="https://www.mode-jost.de/aktuelles/spenden" ><span class="title">SPENDEN</span> </a> <style class="mgz-style">.cuw4gey>a{font-size:16px;font-weight:600!important;}</style></div></div></div></div>
1766<script>
1767    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
1768        .then(() => {
1769            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
1770        })
1771        .then(() => {
1772            const elemId = $('.j7cj3qr');
1773            let mgzBuilder = new MagezonBuilder(elemId);
1774        })
1775</script>
1775</div></div></div><style class="mgz-style">.htd1n13-s{border-color:#d1d0ce !important;border-top-width:5px !important;border-top-style:solid;}.htd1n13 > .item-submenu{width:100% !important;}</style></div><div class="mb4ya1r mgz-element nav-item mega left_edge_menu_bar level0"><a href="https://www.mode-jost.de/unternehmen" ><span class="title">UNTERNEHMEN</span> </a> <div class="item-submenu mgz-element-inner mb4ya1r-s"><div class="m394bx3 mgz-element mgz-element-row full_width_row"><div class="mgz-element-inner m394bx3-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="jkksax4 mgz-element mgz-element-column meusListBlock_ mgz-col-xl-15 mgz-col-lg-8 mgz-col-md-12 mgz-col-sm-12 mgz-col-xs-12 mgz-element-column-empty"><div class="mgz-element-inner jkksax4-s meusListBlock_Sub"><style class="mgz-style">.jkksax4-s{padding:0px!important;}</style></div></div><div class="r0dlyg0 mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner r0dlyg0-s"><div class="yplhteh mgz-element nav-item"><a href="https://www.mode-jost.de/unternehmen/ansprechpartner" ><span class="title">ANSPRECHPARTNER</span> </a> <style class="mgz-style">.yplhteh>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="wy83w6g mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner wy83w6g-s"><div class="i15kn5m mgz-element nav-item"><a href="https://www.mode-jost.de/unternehmen/geschichte" ><span class="title">GESCHICHTE</span> </a> <style class="mgz-style">.i15kn5m>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="ylrpy28 mgz-element mgz-element-column mgz-col-md-15 mgz-element-column-empty"><div class="mgz-element-inner ylrpy28-s"></div></div><div class="efdpssw mgz-element mgz-element-column mgz-col-md-15 mgz-element-column-empty"><div class="mgz-element-inner efdpssw-s"></div></div></div>
1775<script>
1776    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
1777        .then(() => {
1778            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
1779        })
1780        .then(() => {
1781            const elemId = $('.m394bx3');
1782            let mgzBuilder = new MagezonBuilder(elemId);
1783        })
1784</script>
1784</div></div></div><style class="mgz-style">.mb4ya1r-s{border-color:#d1d0ce !important;border-top-width:5px !important;border-top-style:solid;}.mb4ya1r > .item-submenu{width:100% !important;}</style></div><div class="ma6uso2 mgz-element nav-item mega left_edge_menu_bar level0"><a href="https://www.mode-jost.de/mode" ><span class="title">MODE</span> </a> <div class="item-submenu mgz-element-inner ma6uso2-s"><div class="ukicd1y mgz-element mgz-element-row full_width_row"><div class="mgz-element-inner ukicd1y-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="defmh0u mgz-element mgz-element-column meusListBlock_ mgz-col-xl-15 mgz-col-lg-8 mgz-col-md-12 mgz-col-sm-12 mgz-col-xs-12"><div class="mgz-element-inner defmh0u-s meusListBlock_Sub"><div class="by6hqtr mgz-element mgz-element-row full_width_row"><div class="mgz-element-inner by6hqtr-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="q5iebgf mgz-element mgz-element-column mgz-col-xl-8 mgz-col-lg-3 mgz-col-md-3 mgz-col-sm-12 mgz-col-xs-12 mgz-row-gap-margin"><div class="mgz-element-inner q5iebgf-s"><div class="lubtbi3 mgz-element nav-item" data-icon="far mgz-fa-address-card"><a href="https://www.mode-jost.de/mode/damen" ><span class="title">DAMEN</span> </a> <style class="mgz-style">.lubtbi3>a{font-size:16px;font-weight:600!important;}</style></div><div class="kqwfxhk mgz-element nav-item" data-icon="far mgz-fa-address-card"><a href="/mode/damen/damen-trends" ><span class="title">Damen Trends</span> </a> <style class="mgz-style">.kqwfxhk>a{font-size:16px;font-weight:600!important;}</style></div><div class="viutlrl mgz-element nav-item" data-icon="far mgz-fa-address-card"><a href="/mode/damen/young-fashion" ><span class="title">Young Fashion</span> </a> <style class="mgz-style">.viutlrl>a{font-size:16px;font-weight:600!important;}</style></div><div class="pw5hde2 mgz-element nav-item" data-icon="far mgz-fa-address-card"><a href="/mode/damen/schuhe" ><span class="title">Schuhe</span> </a> <style class="mgz-style">.pw5hde2>a{font-size:16px;font-weight:600!important;}</style></div></div></div></div>
1784<script>
1785    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
1786        .then(() => {
1787            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
1788        })
1789        .then(() => {
1790            const elemId = $('.by6hqtr');
1791            let mgzBuilder = new MagezonBuilder(elemId);
1792        })
1793</script>
1793<style class="mgz-style">.by6hqtr-s{margin-bottom:15px !important;}</style></div></div><style class="mgz-style">.defmh0u-s{padding:0px!important;}</style></div></div><div class="u2yci15 mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner u2yci15-s"><div class="si15h38 mgz-element nav-item"><a href="https://www.mode-jost.de/mode/herren" ><span class="title">HERREN</span> </a> <style class="mgz-style">.si15h38>a{font-size:16px;font-weight:600!important;}</style></div><div class="hqcqwa9 mgz-element nav-item"><a href="/mode/herren/herren-trends" ><span class="title">Herren Trends</span> </a> <style class="mgz-style">.hqcqwa9>a{font-size:16px;font-weight:600!important;}</style></div><div class="wc12j4d mgz-element nav-item"><a href="/mode/herren/young-fashion" ><span class="title">Young Fashion</span> </a> <style class="mgz-style">.wc12j4d>a{font-size:16px;font-weight:600!important;}</style></div><div class="tbhux5x mgz-element nav-item"><a href="/mode/herren/schuhe" ><span class="title">Schuhe</span> </a> <style class="mgz-style">.tbhux5x>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="fau1cbj mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner fau1cbj-s"><div class="o3rsicw mgz-element nav-item"><a href="https://www.mode-jost.de/mode/kinder" ><span class="title">KINDER</span> </a> <style class="mgz-style">.o3rsicw>a{font-size:16px;font-weight:600!important;}</style></div><div class="vjh6cwg mgz-element nav-item"><a href="/mode/kinder/kinder-trends" ><span class="title">Kinder Trends</span> </a> <style class="mgz-style">.vjh6cwg>a{font-size:16px;font-weight:600!important;}</style></div><div class="gpwy36p mgz-element nav-item"><a href="https://www.mode-jost.de/service/kinder-service" ><span class="title">Kinder Service</span> </a> <style class="mgz-style">.gpwy36p>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="mw7ilkl mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner mw7ilkl-s"><div class="bkhk5ev mgz-element nav-item"><a href="https://www.mode-jost.de/mode/waesche-bade" ><span class="title">WÄSCHE/BADE</span> </a> <style class="mgz-style">.bkhk5ev>a{font-size:16px;font-weight:600!important;}</style></div><div class="qj8ip30 mgz-element nav-item"><a href="/mode/waesche-bade/tag-und-nachtwaesche-damen" ><span class="title">Tag- und Nachtwäsche Damen</span> </a> <style class="mgz-style">.qj8ip30>a{font-size:16px;font-weight:600!important;}</style></div><div class="i66y4y4 mgz-element nav-item"><a href="/mode/waesche-bade/tag-und-nachtwaesche-herren" ><span class="title">Tag- und Nachtwäsche Herren</span> </a> <style class="mgz-style">.i66y4y4>a{font-size:16px;font-weight:600!important;}</style></div><div class="h1950xn mgz-element nav-item"><a href="/mode/waesche-bade/damen-bademode" ><span class="title">Damen Bademode</span> </a> <style class="mgz-style">.h1950xn>a{font-size:16px;font-weight:600!important;}</style></div><div class="q1s1w75 mgz-element nav-item"><a href="/mode/waesche-bade/herren-bademode" ><span class="title">Herren Bademode</span> </a> <style class="mgz-style">.q1s1w75>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="ghouerk mgz-element mgz-element-column mgz-col-md-15 mgz-element-column-empty"><div class="mgz-element-inner ghouerk-s"></div></div></div>
1793<script>
1794    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
1795        .then(() => {
1796            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
1797        })
1798        .then(() => {
1799            const elemId = $('.ukicd1y');
1800            let mgzBuilder = new MagezonBuilder(elemId);
1801        })
1802</script>
1802</div></div></div><style class="mgz-style">.ma6uso2-s{border-color:#d1d0ce !important;border-top-width:5px !important;border-top-style:solid;}.ma6uso2 > .item-submenu{width:100% !important;}</style></div><div class="v78blyn mgz-element nav-item mega left_edge_menu_bar level0"><a href="https://www.mode-jost.de/service" ><span class="title">SERVICE</span> </a> <div class="item-submenu mgz-element-inner v78blyn-s"><div class="oqwfn7s mgz-element mgz-element-row full_width_row"><div class="mgz-element-inner oqwfn7s-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="qe2xqq2 mgz-element mgz-element-column meusListBlock_ mgz-col-xl-15 mgz-col-lg-8 mgz-col-md-12 mgz-col-sm-12 mgz-col-xs-12 mgz-element-column-empty"><div class="mgz-element-inner qe2xqq2-s meusListBlock_Sub"><style class="mgz-style">.qe2xqq2-s{padding:0px!important;}</style></div></div><div class="opf4oif mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner opf4oif-s"><div class="yt5pcfe mgz-element nav-item"><a href="https://www.mode-jost.de/service/jost-app" ><span class="title">JOST APP</span> </a> <style class="mgz-style">.yt5pcfe>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="qyc08qf mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner qyc08qf-s"><div class="boqmwl4 mgz-element nav-item"><a href="https://www.mode-jost.de/service/geschenkgutschein" ><span class="title">GESCHENKGUTSCHEIN</span> </a> <style class="mgz-style">.boqmwl4>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="fo193ij mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner fo193ij-s"><div class="bb7r8ap mgz-element nav-item"><a href="https://www.mode-jost.de/service/kinder-service" ><span class="title">KINDER SERVICE</span> </a> <style class="mgz-style">.bb7r8ap>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="vs9g5xk mgz-element mgz-element-column mgz-col-md-15 mgz-element-column-empty"><div class="mgz-element-inner vs9g5xk-s"></div></div></div>
1802<script>
1803    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
1804        .then(() => {
1805            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
1806        })
1807        .then(() => {
1808            const elemId = $('.oqwfn7s');
1809            let mgzBuilder = new MagezonBuilder(elemId);
1810        })
1811</script>
1811</div></div><div class="orueqn1 mgz-element mgz-element-row full_width_row"><div class="mgz-element-inner orueqn1-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="n91qnf5 mgz-element mgz-element-column meusListBlock_ mgz-col-xl-15 mgz-col-lg-8 mgz-col-md-12 mgz-col-sm-12 mgz-col-xs-12 mgz-element-column-empty"><div class="mgz-element-inner n91qnf5-s meusListBlock_Sub"><style class="mgz-style">.n91qnf5-s{padding:0px!important;}</style></div></div><div class="bpwhfsf mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner bpwhfsf-s"><div class="yy792un mgz-element nav-item"><a href="https://www.mode-jost.de/service/kundenkonto" ><span class="title">KUNDENKONTO</span> </a> <style class="mgz-style">.yy792un>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="rmhkl02 mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner rmhkl02-s"><div class="f02ei1y mgz-element nav-item"><a href="https://www.mode-jost.de/service/newsletter-anmeldung" ><span class="title">NEWSLETTER</span> </a> <style class="mgz-style">.f02ei1y>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="ua3552k mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner ua3552k-s"><div class="uih5y8b mgz-element nav-item"><a href="https://www.mode-jost.de/service/braeutigam-and-friends" ><span class="title">BRÄUTIGAM & FRIENDS</span> </a> <style class="mgz-style">.uih5y8b>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="qcyqgeu mgz-element mgz-element-column mgz-col-md-15 mgz-element-column-empty"><div class="mgz-element-inner qcyqgeu-s"></div></div></div>
1811<script>
1812    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
1813        .then(() => {
1814            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
1815        })
1816        .then(() => {
1817            const elemId = $('.orueqn1');
1818            let mgzBuilder = new MagezonBuilder(elemId);
1819        })
1820</script>
1820</div></div></div><style class="mgz-style">.v78blyn-s{border-color:#d1d0ce !important;border-top-width:5px !important;border-top-style:solid;}.v78blyn > .item-submenu{width:100% !important;}</style></div><div class="to193ky mgz-element nav-item mega left_edge_menu_bar level0"><a href="https://www.mode-jost.de/job-und-ausbildung" ><span class="title">JOB & AUSBILDUNG</span> </a> <div class="item-submenu mgz-element-inner to193ky-s"><div class="uw69v7m mgz-element mgz-element-row full_width_row"><div class="mgz-element-inner uw69v7m-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="opjsoys mgz-element mgz-element-column meusListBlock_ mgz-col-xl-15 mgz-col-lg-8 mgz-col-md-12 mgz-col-sm-12 mgz-col-xs-12 mgz-element-column-empty"><div class="mgz-element-inner opjsoys-s meusListBlock_Sub"><style class="mgz-style">.opjsoys-s{padding:0px!important;}</style></div></div><div class="ge3wklb mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner ge3wklb-s"><div class="a8rdfv4 mgz-element nav-item"><a href="https://www.mode-jost.de/karriere.html" ><span class="title">JOBS</span> </a> <style class="mgz-style">.a8rdfv4>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="c8kssq2 mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner c8kssq2-s"><div class="n3xdb6v mgz-element nav-item"><a href="https://azubi.mode-jost.de/" ><span class="title">AUSBILDUNG</span> </a> <style class="mgz-style">.n3xdb6v>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="uxber14 mgz-element mgz-element-column mgz-col-md-15 mgz-element-column-empty"><div class="mgz-element-inner uxber14-s"></div></div><div class="emesus3 mgz-element mgz-element-column mgz-col-md-15 mgz-element-column-empty"><div class="mgz-element-inner emesus3-s"></div></div></div>
1820<script>
1821    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
1822        .then(() => {
1823            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
1824        })
1825        .then(() => {
1826            const elemId = $('.uw69v7m');
1827            let mgzBuilder = new MagezonBuilder(elemId);
1828        })
1829</script>
1829</div></div><div class="sk9fl6e mgz-element mgz-element-row full_width_row"><div class="mgz-element-inner sk9fl6e-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="bs86h7y mgz-element mgz-element-column meusListBlock_ mgz-col-xl-15 mgz-col-lg-8 mgz-col-md-12 mgz-col-sm-12 mgz-col-xs-12 mgz-element-column-empty"><div class="mgz-element-inner bs86h7y-s meusListBlock_Sub"><style class="mgz-style">.bs86h7y-s{padding:0px!important;}</style></div></div><div class="jpw2kuk mgz-element mgz-element-column mgz-col-md-15 mgz-element-column-empty"><div class="mgz-element-inner jpw2kuk-s"></div></div><div class="gv1kyru mgz-element mgz-element-column mgz-col-md-15 mgz-element-column-empty"><div class="mgz-element-inner gv1kyru-s"></div></div><div class="un20ke5 mgz-element mgz-element-column mgz-col-md-15 mgz-element-column-empty"><div class="mgz-element-inner un20ke5-s"></div></div><div class="d9fjd4y mgz-element mgz-element-column mgz-col-md-15 mgz-element-column-empty"><div class="mgz-element-inner d9fjd4y-s"></div></div></div>
1829<script>
1830    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
1831        .then(() => {
1832            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
1833        })
1834        .then(() => {
1835            const elemId = $('.sk9fl6e');
1836            let mgzBuilder = new MagezonBuilder(elemId);
1837        })
1838</script>
1838</div></div></div><style class="mgz-style">.to193ky-s{border-color:#d1d0ce !important;border-top-width:5px !important;border-top-style:solid;}.to193ky > .item-submenu{width:100% !important;}</style></div><div class="y4y5bu6 mgz-element nav-item level0"><a href="https://www.mode-jost.de/kontakt" ><span class="title">KONTAKT</span> </a> <style class="mgz-style">.y4y5bu6-s{border-color:#d1d0ce !important;border-top-width:5px !important;border-top-style:solid;}.y4y5bu6 > .item-submenu{width:100% !important;}</style></div><div class="cvuw344 mgz-element nav-item level0"><a href="https://www.mode-jost.de/catalog/category/view/s/gutscheine/id/413/" ><span class="title">GUTSCHEIN</span> </a> <style class="mgz-style">.cvuw344-s{border-color:#d1d0ce !important;border-top-width:5px !important;border-top-style:solid;}.cvuw344 > .item-submenu{width:100% !important;}</style></div><style class="mgz-style">body #ninjamenus1 .nav-item > a span.title { font-weight: 400 !important; } #am-cookie-bar dialog, #am-cookie-bar .am-cookie-bar, dialog[data-dialog-ref-name="am-cookie-bar"] { position: fixed !important; left: 0; right: 0; bottom: 0 !important; top: auto !important; margin: 0 !important; width: 100%; max-width: 100%; z-index: 9999; } .mgz-single-image-wrapper .mgz-image-link { position: relative; } .mgz-single-image-wrapper .mgz-image-link .image-content { top: 50%; transform: translateY(-50%); } .mgz-single-image-wrapper .mgz-image-link .image-content .image-title { color: #fff; font-size: 30px; text-shadow: 0 0 9px #000; } html body button.ambar-action-btn.rounded-sm { background-color: #e2650c !important; } html body .ambar-btn-accept { background-color: #e2650c !important; } html body button.ambar-btn-settings.ambar-action-btn { background-color: #fff !important; color: #000 !important; font-weight: 800; } html body .ambar-btn-accept:hover { color: #fff; background-color: #e2650c !important; border-color: #e2650c !important; } .ninjamenus.ninjamenus-desktop .left_edge_menu_bar>.item-submenu { max-width: 1490px; background: #eaeaea !important; } .ninjamenus.ninjamenus-desktop .left_edge_menu_bar>.item-submenu .inner-content.mgz-container { display: flex; justify-content: center; } .ninjamenus.ninjamenus-desktop .left_edge_menu_bar>.item-submenu .inner-content.mgz-container>div { width: auto; } #myHeadertopfix .ourbarfix { max-width: 1488px; margin: auto; padding: 10px 10px 0; } .magezon-builder .mgz-element-text a { text-decoration: underline; text-decoration-color: #e2650c; color: unset; } #myHeadertopfix .ourbarfix li.mh_panelHeaderItem { text-align: right; white-space: nowrap; } #myHeadertopfix .ourbarfix li.mh_panelHeaderItem { width: 100%; } @media(max-width:1024px){ .headertopfix .ourbarfix .mh_serviceLinksWrapper .mh_panelHeaderList .mh_panelHeaderItem a { color: #fff; font-size: 15px; font-weight: 600; } #myHeadertopfix { background-color: #3a5674 !important; } #myHeadertopfix .ourbarfix ul.mh_panelHeaderList { justify-content: flex-end; } #myHeadertopfix .ourbarfix { padding: 10px 10px 10px; } }</style></div>                            </div>
1839    
1839<script>
1840    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
1841        .then(() => {
1842            return new Promise((resolve) => {
1843            const waitForjQuery = () => {
1844                if (typeof jQuery !== 'undefined') {
1845                    window.$ = window.jQuery = jQuery;
1846                    resolve();
1847                } else {
1848                setTimeout(waitForjQuery, 25);
1849                }
1850            };
1851            waitForjQuery();
1852            });
1853        })
1854        .then(() => loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_NinjaMenus/js/jquery.hoverIntent.min.js', 'hoverIntent'))
1855        .then(() => loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_Core/js/jquery-scrolltofixed-min.js', 'scrolltofixed'))
1856        .then(() => loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonNinjaMenus/js/jquery.drilldown.min.js', 'drilldown'))
1857        .then(() => loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonNinjaMenus/js/menu.js', 'menu'))
1858        .then(() => {
1859            if (typeof $.fn.drilldown === 'undefined') return;
1860
1861            const menuElement = $(".ninjamenus");
1862            const options = {
1863                "mobileBreakpoint": 1024,
1864                "stick": 0,
1865                "id": "ninjamenus1"
1866            };
1867            let ninjaMenus = new NinjaMenus(menuElement, options);
1868
1869            $('.ninjamenus-top-overlay').appendTo('.page-wrapper');
1870            $('.ninjamenus-top').hover(function() {
1871                $('.nav-sections').css('z-index', 999);
1872                $('.ninjamenus-top-overlay').fadeIn(400);
1873            }, function() {
1874                if (!$('.nav-sections').hasClass('scroll-to-fixed-fixed')) {
1875                    $('.nav-sections').css('z-index', '');
1876                }
1877                $('.ninjamenus-top-overlay').fadeOut(400);
1878            });
1879        })
1880</script>
1880            </nav>
1881        </div>
1882    </div>
1883<nav
1884        x-data="initMenuMobile_6ab514fede845()"
1885        @load.window="setActiveMenu($root)"
1886        @keydown.window.escape="closeMenu()"
1887        class="flex z-20 order-2 sm:order-1 lg:order-2 navigation lg:hidden w-12 h-12"
1888        aria-label="Navigation&#x20;der&#x20;Website"
1889        role="navigation"
1890>
1891    <!-- mobile -->
1892    <button
1893            x-ref="mobileMenuTrigger"
1894            @click="openMenu()"
1895            :class="{'overflow-x-hidden overflow-y-auto fixed top-0 left-0 w-full' : open}"
1896            type="button"
1897            aria-label="Men&#xFC;&#x20;&#xF6;ffnen"
1898            aria-haspopup="menu"
1899            :aria-expanded="open"
1900            :hidden="open"
1901    >
1902        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="p-3" width="48" height="48" :class="{ 'hidden' : open, 'block': !open }" aria-hidden="true">
1903  <path stroke-linecap="round" stroke-linejoin="round" d="M4 6h16M4 12h16M4 18h16"/>
1904</svg>
1905    </button>
1906    <!--Search Icon-->
1907    <button
1908        id="menu-search-icon"
1909        class="inline-block ml-1 no-underline sm:ml-3 hover:text-black"
1910        @click="toggleSearchContent()"
1911    >
1912        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 md:h-6 md:w-6 hover:text-black" width="25" height="25" aria-hidden="true">
1913  <path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"/>
1914</svg>
1915    </button>
1916    <div
1917            x-ref="mobileMenuNavLinks"
1918            class="
1919            fixed top-0 right-0 w-full h-full p-1 flex
1920            flex-col border-t border-container bg-container-lighter
1921            overflow-y-auto overflow-x-hidden
1922        "
1923            :class="{ 'hidden' : !open }"
1924            :aria-hidden="open ? 'false' : 'true'"
1925            role="dialog"
1926            aria-modal="true"
1927    >
1928        <div class="sections nav-sections border-t flex flex-col gap-y-1 mt-16">
1929            <nav class="navigation" data-action="navigation">
1930                        <div id="ninjamenus1" class="ninjamenus  ninjamenus-horizontal ninjamenus-mobile-accordion ninjamenus-desktop  ninjamenus-top" data-type="horizontal" data-mobile-type="accordion">
1931                        <div class="magezon-builder magezon-builder-preload"><div class="tba77py mgz-element nav-item mega left_edge_menu_bar level0"><a href="https://www.mode-jost.de/filialen" ><span class="title">FILIALEN</span> </a> <div class="item-submenu mgz-element-inner tba77py-s"><div class="pna71lm mgz-element mgz-element-row full_width_row"><div class="mgz-element-inner pna71lm-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="gau4rsv mgz-element mgz-element-column meusListBlock_ mgz-col-xl-15 mgz-col-lg-8 mgz-col-md-12 mgz-col-sm-12 mgz-col-xs-12"><div class="mgz-element-inner gau4rsv-s meusListBlock_Sub"><div class="y9xvypr mgz-element mgz-element-row full_width_row"><div class="mgz-element-inner y9xvypr-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="wsemtd1 mgz-element mgz-element-column mgz-col-xl-3 mgz-col-lg-3 mgz-col-md-3 mgz-col-sm-12 mgz-col-xs-12 mgz-row-gap-margin"><div class="mgz-element-inner wsemtd1-s"><div class="aa9r2fr mgz-element nav-item" data-icon="far mgz-fa-address-card"><a href="https://www.mode-jost.de/filialen/gruenstadt" ><span class="title">GRÜNSTADT</span> </a> <style class="mgz-style">.aa9r2fr>a{font-size:16px;font-weight:600!important;}</style></div></div></div></div>
1931<script>
1932    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
1933        .then(() => {
1934            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
1935        })
1936        .then(() => {
1937            const elemId = $('.y9xvypr');
1938            let mgzBuilder = new MagezonBuilder(elemId);
1939        })
1940</script>
1940<style class="mgz-style">.y9xvypr-s{margin-bottom:15px !important;}</style></div></div><style class="mgz-style">.gau4rsv-s{padding:0px!important;}</style></div></div><div class="h68u94v mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner h68u94v-s"><div class="ntofreo mgz-element nav-item"><a href="https://www.mode-jost.de/filialen/frankenthal" ><span class="title">FRANKENTHAL</span> </a> <style class="mgz-style">.ntofreo>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="q7ebbev mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner q7ebbev-s"><div class="xnwx1pt mgz-element nav-item"><a href="https://www.mode-jost.de/filialen/landau" ><span class="title">LANDAU</span> </a> <style class="mgz-style">.xnwx1pt>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="uskby9e mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner uskby9e-s"><div class="q2i4x69 mgz-element nav-item"><a href="https://www.mode-jost.de/filialen/worms" ><span class="title">WORMS</span> </a> <style class="mgz-style">.q2i4x69>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="wkqh137 mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner wkqh137-s"><div class="tkxsol9 mgz-element nav-item"><a href="https://www.mode-jost.de/filialen/bruchsal" ><span class="title">BRUCHSAL</span> </a> <style class="mgz-style">.tkxsol9>a{font-size:16px;font-weight:600!important;}</style></div></div></div></div>
1940<script>
1941    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
1942        .then(() => {
1943            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
1944        })
1945        .then(() => {
1946            const elemId = $('.pna71lm');
1947            let mgzBuilder = new MagezonBuilder(elemId);
1948        })
1949</script>
1949</div></div></div><style class="mgz-style">.tba77py-s{border-color:#d1d0ce !important;border-top-width:5px !important;border-top-style:solid;}.tba77py > .item-submenu{width:100% !important;}</style></div><div class="htd1n13 mgz-element nav-item mega left_edge_menu_bar level0"><a href="https://www.mode-jost.de/aktuelles" ><span class="title">AKTUELLES</span> </a> <div class="item-submenu mgz-element-inner htd1n13-s"><div class="j7cj3qr mgz-element mgz-element-row full_width_row"><div class="mgz-element-inner j7cj3qr-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="i3vef5f mgz-element mgz-element-column meusListBlock_ mgz-col-xl-15 mgz-col-lg-8 mgz-col-md-12 mgz-col-sm-12 mgz-col-xs-12"><div class="mgz-element-inner i3vef5f-s meusListBlock_Sub"><div class="bppyihm mgz-element mgz-element-row full_width_row"><div class="mgz-element-inner bppyihm-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="viycg1j mgz-element mgz-element-column mgz-col-xl-3 mgz-col-lg-3 mgz-col-md-3 mgz-col-sm-12 mgz-col-xs-12 mgz-row-gap-margin"><div class="mgz-element-inner viycg1j-s"><div class="np5rifo mgz-element nav-item" data-icon="far mgz-fa-address-card"><a href="/aktuelles/news" ><span class="title">NEWS</span> </a> <style class="mgz-style">.np5rifo>a{font-size:16px;font-weight:600!important;}</style></div></div></div></div>
1949<script>
1950    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
1951        .then(() => {
1952            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
1953        })
1954        .then(() => {
1955            const elemId = $('.bppyihm');
1956            let mgzBuilder = new MagezonBuilder(elemId);
1957        })
1958</script>
1958<style class="mgz-style">.bppyihm-s{margin-bottom:15px !important;}</style></div></div><style class="mgz-style">.i3vef5f-s{padding:0px!important;}</style></div></div><div class="gfpwrhy mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner gfpwrhy-s"><div class="dq5u59j mgz-element nav-item"><a href="https://www.mode-jost.de/aktuelles/prospekte" ><span class="title">PROSPEKTE</span> </a> <style class="mgz-style">.dq5u59j>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="rw662uu mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner rw662uu-s"><div class="y23fnn3 mgz-element nav-item"><a href="/aktuelles/termine" ><span class="title">TERMINE</span> </a> <style class="mgz-style">.y23fnn3>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="mshmm1l mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner mshmm1l-s"><div class="cuw4gey mgz-element nav-item"><a href="https://www.mode-jost.de/aktuelles/spenden" ><span class="title">SPENDEN</span> </a> <style class="mgz-style">.cuw4gey>a{font-size:16px;font-weight:600!important;}</style></div></div></div></div>
1958<script>
1959    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
1960        .then(() => {
1961            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
1962        })
1963        .then(() => {
1964            const elemId = $('.j7cj3qr');
1965            let mgzBuilder = new MagezonBuilder(elemId);
1966        })
1967</script>
1967</div></div></div><style class="mgz-style">.htd1n13-s{border-color:#d1d0ce !important;border-top-width:5px !important;border-top-style:solid;}.htd1n13 > .item-submenu{width:100% !important;}</style></div><div class="mb4ya1r mgz-element nav-item mega left_edge_menu_bar level0"><a href="https://www.mode-jost.de/unternehmen" ><span class="title">UNTERNEHMEN</span> </a> <div class="item-submenu mgz-element-inner mb4ya1r-s"><div class="m394bx3 mgz-element mgz-element-row full_width_row"><div class="mgz-element-inner m394bx3-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="jkksax4 mgz-element mgz-element-column meusListBlock_ mgz-col-xl-15 mgz-col-lg-8 mgz-col-md-12 mgz-col-sm-12 mgz-col-xs-12 mgz-element-column-empty"><div class="mgz-element-inner jkksax4-s meusListBlock_Sub"><style class="mgz-style">.jkksax4-s{padding:0px!important;}</style></div></div><div class="r0dlyg0 mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner r0dlyg0-s"><div class="yplhteh mgz-element nav-item"><a href="https://www.mode-jost.de/unternehmen/ansprechpartner" ><span class="title">ANSPRECHPARTNER</span> </a> <style class="mgz-style">.yplhteh>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="wy83w6g mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner wy83w6g-s"><div class="i15kn5m mgz-element nav-item"><a href="https://www.mode-jost.de/unternehmen/geschichte" ><span class="title">GESCHICHTE</span> </a> <style class="mgz-style">.i15kn5m>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="ylrpy28 mgz-element mgz-element-column mgz-col-md-15 mgz-element-column-empty"><div class="mgz-element-inner ylrpy28-s"></div></div><div class="efdpssw mgz-element mgz-element-column mgz-col-md-15 mgz-element-column-empty"><div class="mgz-element-inner efdpssw-s"></div></div></div>
1967<script>
1968    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
1969        .then(() => {
1970            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
1971        })
1972        .then(() => {
1973            const elemId = $('.m394bx3');
1974            let mgzBuilder = new MagezonBuilder(elemId);
1975        })
1976</script>
1976</div></div></div><style class="mgz-style">.mb4ya1r-s{border-color:#d1d0ce !important;border-top-width:5px !important;border-top-style:solid;}.mb4ya1r > .item-submenu{width:100% !important;}</style></div><div class="ma6uso2 mgz-element nav-item mega left_edge_menu_bar level0"><a href="https://www.mode-jost.de/mode" ><span class="title">MODE</span> </a> <div class="item-submenu mgz-element-inner ma6uso2-s"><div class="ukicd1y mgz-element mgz-element-row full_width_row"><div class="mgz-element-inner ukicd1y-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="defmh0u mgz-element mgz-element-column meusListBlock_ mgz-col-xl-15 mgz-col-lg-8 mgz-col-md-12 mgz-col-sm-12 mgz-col-xs-12"><div class="mgz-element-inner defmh0u-s meusListBlock_Sub"><div class="by6hqtr mgz-element mgz-element-row full_width_row"><div class="mgz-element-inner by6hqtr-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="q5iebgf mgz-element mgz-element-column mgz-col-xl-8 mgz-col-lg-3 mgz-col-md-3 mgz-col-sm-12 mgz-col-xs-12 mgz-row-gap-margin"><div class="mgz-element-inner q5iebgf-s"><div class="lubtbi3 mgz-element nav-item" data-icon="far mgz-fa-address-card"><a href="https://www.mode-jost.de/mode/damen" ><span class="title">DAMEN</span> </a> <style class="mgz-style">.lubtbi3>a{font-size:16px;font-weight:600!important;}</style></div><div class="kqwfxhk mgz-element nav-item" data-icon="far mgz-fa-address-card"><a href="/mode/damen/damen-trends" ><span class="title">Damen Trends</span> </a> <style class="mgz-style">.kqwfxhk>a{font-size:16px;font-weight:600!important;}</style></div><div class="viutlrl mgz-element nav-item" data-icon="far mgz-fa-address-card"><a href="/mode/damen/young-fashion" ><span class="title">Young Fashion</span> </a> <style class="mgz-style">.viutlrl>a{font-size:16px;font-weight:600!important;}</style></div><div class="pw5hde2 mgz-element nav-item" data-icon="far mgz-fa-address-card"><a href="/mode/damen/schuhe" ><span class="title">Schuhe</span> </a> <style class="mgz-style">.pw5hde2>a{font-size:16px;font-weight:600!important;}</style></div></div></div></div>
1976<script>
1977    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
1978        .then(() => {
1979            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
1980        })
1981        .then(() => {
1982            const elemId = $('.by6hqtr');
1983            let mgzBuilder = new MagezonBuilder(elemId);
1984        })
1985</script>
1985<style class="mgz-style">.by6hqtr-s{margin-bottom:15px !important;}</style></div></div><style class="mgz-style">.defmh0u-s{padding:0px!important;}</style></div></div><div class="u2yci15 mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner u2yci15-s"><div class="si15h38 mgz-element nav-item"><a href="https://www.mode-jost.de/mode/herren" ><span class="title">HERREN</span> </a> <style class="mgz-style">.si15h38>a{font-size:16px;font-weight:600!important;}</style></div><div class="hqcqwa9 mgz-element nav-item"><a href="/mode/herren/herren-trends" ><span class="title">Herren Trends</span> </a> <style class="mgz-style">.hqcqwa9>a{font-size:16px;font-weight:600!important;}</style></div><div class="wc12j4d mgz-element nav-item"><a href="/mode/herren/young-fashion" ><span class="title">Young Fashion</span> </a> <style class="mgz-style">.wc12j4d>a{font-size:16px;font-weight:600!important;}</style></div><div class="tbhux5x mgz-element nav-item"><a href="/mode/herren/schuhe" ><span class="title">Schuhe</span> </a> <style class="mgz-style">.tbhux5x>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="fau1cbj mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner fau1cbj-s"><div class="o3rsicw mgz-element nav-item"><a href="https://www.mode-jost.de/mode/kinder" ><span class="title">KINDER</span> </a> <style class="mgz-style">.o3rsicw>a{font-size:16px;font-weight:600!important;}</style></div><div class="vjh6cwg mgz-element nav-item"><a href="/mode/kinder/kinder-trends" ><span class="title">Kinder Trends</span> </a> <style class="mgz-style">.vjh6cwg>a{font-size:16px;font-weight:600!important;}</style></div><div class="gpwy36p mgz-element nav-item"><a href="https://www.mode-jost.de/service/kinder-service" ><span class="title">Kinder Service</span> </a> <style class="mgz-style">.gpwy36p>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="mw7ilkl mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner mw7ilkl-s"><div class="bkhk5ev mgz-element nav-item"><a href="https://www.mode-jost.de/mode/waesche-bade" ><span class="title">WÄSCHE/BADE</span> </a> <style class="mgz-style">.bkhk5ev>a{font-size:16px;font-weight:600!important;}</style></div><div class="qj8ip30 mgz-element nav-item"><a href="/mode/waesche-bade/tag-und-nachtwaesche-damen" ><span class="title">Tag- und Nachtwäsche Damen</span> </a> <style class="mgz-style">.qj8ip30>a{font-size:16px;font-weight:600!important;}</style></div><div class="i66y4y4 mgz-element nav-item"><a href="/mode/waesche-bade/tag-und-nachtwaesche-herren" ><span class="title">Tag- und Nachtwäsche Herren</span> </a> <style class="mgz-style">.i66y4y4>a{font-size:16px;font-weight:600!important;}</style></div><div class="h1950xn mgz-element nav-item"><a href="/mode/waesche-bade/damen-bademode" ><span class="title">Damen Bademode</span> </a> <style class="mgz-style">.h1950xn>a{font-size:16px;font-weight:600!important;}</style></div><div class="q1s1w75 mgz-element nav-item"><a href="/mode/waesche-bade/herren-bademode" ><span class="title">Herren Bademode</span> </a> <style class="mgz-style">.q1s1w75>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="ghouerk mgz-element mgz-element-column mgz-col-md-15 mgz-element-column-empty"><div class="mgz-element-inner ghouerk-s"></div></div></div>
1985<script>
1986    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
1987        .then(() => {
1988            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
1989        })
1990        .then(() => {
1991            const elemId = $('.ukicd1y');
1992            let mgzBuilder = new MagezonBuilder(elemId);
1993        })
1994</script>
1994</div></div></div><style class="mgz-style">.ma6uso2-s{border-color:#d1d0ce !important;border-top-width:5px !important;border-top-style:solid;}.ma6uso2 > .item-submenu{width:100% !important;}</style></div><div class="v78blyn mgz-element nav-item mega left_edge_menu_bar level0"><a href="https://www.mode-jost.de/service" ><span class="title">SERVICE</span> </a> <div class="item-submenu mgz-element-inner v78blyn-s"><div class="oqwfn7s mgz-element mgz-element-row full_width_row"><div class="mgz-element-inner oqwfn7s-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="qe2xqq2 mgz-element mgz-element-column meusListBlock_ mgz-col-xl-15 mgz-col-lg-8 mgz-col-md-12 mgz-col-sm-12 mgz-col-xs-12 mgz-element-column-empty"><div class="mgz-element-inner qe2xqq2-s meusListBlock_Sub"><style class="mgz-style">.qe2xqq2-s{padding:0px!important;}</style></div></div><div class="opf4oif mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner opf4oif-s"><div class="yt5pcfe mgz-element nav-item"><a href="https://www.mode-jost.de/service/jost-app" ><span class="title">JOST APP</span> </a> <style class="mgz-style">.yt5pcfe>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="qyc08qf mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner qyc08qf-s"><div class="boqmwl4 mgz-element nav-item"><a href="https://www.mode-jost.de/service/geschenkgutschein" ><span class="title">GESCHENKGUTSCHEIN</span> </a> <style class="mgz-style">.boqmwl4>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="fo193ij mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner fo193ij-s"><div class="bb7r8ap mgz-element nav-item"><a href="https://www.mode-jost.de/service/kinder-service" ><span class="title">KINDER SERVICE</span> </a> <style class="mgz-style">.bb7r8ap>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="vs9g5xk mgz-element mgz-element-column mgz-col-md-15 mgz-element-column-empty"><div class="mgz-element-inner vs9g5xk-s"></div></div></div>
1994<script>
1995    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
1996        .then(() => {
1997            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
1998        })
1999        .then(() => {
2000            const elemId = $('.oqwfn7s');
2001            let mgzBuilder = new MagezonBuilder(elemId);
2002        })
2003</script>
2003</div></div><div class="orueqn1 mgz-element mgz-element-row full_width_row"><div class="mgz-element-inner orueqn1-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="n91qnf5 mgz-element mgz-element-column meusListBlock_ mgz-col-xl-15 mgz-col-lg-8 mgz-col-md-12 mgz-col-sm-12 mgz-col-xs-12 mgz-element-column-empty"><div class="mgz-element-inner n91qnf5-s meusListBlock_Sub"><style class="mgz-style">.n91qnf5-s{padding:0px!important;}</style></div></div><div class="bpwhfsf mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner bpwhfsf-s"><div class="yy792un mgz-element nav-item"><a href="https://www.mode-jost.de/service/kundenkonto" ><span class="title">KUNDENKONTO</span> </a> <style class="mgz-style">.yy792un>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="rmhkl02 mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner rmhkl02-s"><div class="f02ei1y mgz-element nav-item"><a href="https://www.mode-jost.de/service/newsletter-anmeldung" ><span class="title">NEWSLETTER</span> </a> <style class="mgz-style">.f02ei1y>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="ua3552k mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner ua3552k-s"><div class="uih5y8b mgz-element nav-item"><a href="https://www.mode-jost.de/service/braeutigam-and-friends" ><span class="title">BRÄUTIGAM & FRIENDS</span> </a> <style class="mgz-style">.uih5y8b>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="qcyqgeu mgz-element mgz-element-column mgz-col-md-15 mgz-element-column-empty"><div class="mgz-element-inner qcyqgeu-s"></div></div></div>
2003<script>
2004    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
2005        .then(() => {
2006            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
2007        })
2008        .then(() => {
2009            const elemId = $('.orueqn1');
2010            let mgzBuilder = new MagezonBuilder(elemId);
2011        })
2012</script>
2012</div></div></div><style class="mgz-style">.v78blyn-s{border-color:#d1d0ce !important;border-top-width:5px !important;border-top-style:solid;}.v78blyn > .item-submenu{width:100% !important;}</style></div><div class="to193ky mgz-element nav-item mega left_edge_menu_bar level0"><a href="https://www.mode-jost.de/job-und-ausbildung" ><span class="title">JOB & AUSBILDUNG</span> </a> <div class="item-submenu mgz-element-inner to193ky-s"><div class="uw69v7m mgz-element mgz-element-row full_width_row"><div class="mgz-element-inner uw69v7m-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="opjsoys mgz-element mgz-element-column meusListBlock_ mgz-col-xl-15 mgz-col-lg-8 mgz-col-md-12 mgz-col-sm-12 mgz-col-xs-12 mgz-element-column-empty"><div class="mgz-element-inner opjsoys-s meusListBlock_Sub"><style class="mgz-style">.opjsoys-s{padding:0px!important;}</style></div></div><div class="ge3wklb mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner ge3wklb-s"><div class="a8rdfv4 mgz-element nav-item"><a href="https://www.mode-jost.de/karriere.html" ><span class="title">JOBS</span> </a> <style class="mgz-style">.a8rdfv4>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="c8kssq2 mgz-element mgz-element-column mgz-col-md-15"><div class="mgz-element-inner c8kssq2-s"><div class="n3xdb6v mgz-element nav-item"><a href="https://azubi.mode-jost.de/" ><span class="title">AUSBILDUNG</span> </a> <style class="mgz-style">.n3xdb6v>a{font-size:16px;font-weight:600!important;}</style></div></div></div><div class="uxber14 mgz-element mgz-element-column mgz-col-md-15 mgz-element-column-empty"><div class="mgz-element-inner uxber14-s"></div></div><div class="emesus3 mgz-element mgz-element-column mgz-col-md-15 mgz-element-column-empty"><div class="mgz-element-inner emesus3-s"></div></div></div>
2012<script>
2013    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
2014        .then(() => {
2015            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
2016        })
2017        .then(() => {
2018            const elemId = $('.uw69v7m');
2019            let mgzBuilder = new MagezonBuilder(elemId);
2020        })
2021</script>
2021</div></div><div class="sk9fl6e mgz-element mgz-element-row full_width_row"><div class="mgz-element-inner sk9fl6e-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="bs86h7y mgz-element mgz-element-column meusListBlock_ mgz-col-xl-15 mgz-col-lg-8 mgz-col-md-12 mgz-col-sm-12 mgz-col-xs-12 mgz-element-column-empty"><div class="mgz-element-inner bs86h7y-s meusListBlock_Sub"><style class="mgz-style">.bs86h7y-s{padding:0px!important;}</style></div></div><div class="jpw2kuk mgz-element mgz-element-column mgz-col-md-15 mgz-element-column-empty"><div class="mgz-element-inner jpw2kuk-s"></div></div><div class="gv1kyru mgz-element mgz-element-column mgz-col-md-15 mgz-element-column-empty"><div class="mgz-element-inner gv1kyru-s"></div></div><div class="un20ke5 mgz-element mgz-element-column mgz-col-md-15 mgz-element-column-empty"><div class="mgz-element-inner un20ke5-s"></div></div><div class="d9fjd4y mgz-element mgz-element-column mgz-col-md-15 mgz-element-column-empty"><div class="mgz-element-inner d9fjd4y-s"></div></div></div>
2021<script>
2022    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
2023        .then(() => {
2024            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
2025        })
2026        .then(() => {
2027            const elemId = $('.sk9fl6e');
2028            let mgzBuilder = new MagezonBuilder(elemId);
2029        })
2030</script>
2030</div></div></div><style class="mgz-style">.to193ky-s{border-color:#d1d0ce !important;border-top-width:5px !important;border-top-style:solid;}.to193ky > .item-submenu{width:100% !important;}</style></div><div class="y4y5bu6 mgz-element nav-item level0"><a href="https://www.mode-jost.de/kontakt" ><span class="title">KONTAKT</span> </a> <style class="mgz-style">.y4y5bu6-s{border-color:#d1d0ce !important;border-top-width:5px !important;border-top-style:solid;}.y4y5bu6 > .item-submenu{width:100% !important;}</style></div><div class="cvuw344 mgz-element nav-item level0"><a href="https://www.mode-jost.de/catalog/category/view/s/gutscheine/id/413/" ><span class="title">GUTSCHEIN</span> </a> <style class="mgz-style">.cvuw344-s{border-color:#d1d0ce !important;border-top-width:5px !important;border-top-style:solid;}.cvuw344 > .item-submenu{width:100% !important;}</style></div><style class="mgz-style">body #ninjamenus1 .nav-item > a span.title { font-weight: 400 !important; } #am-cookie-bar dialog, #am-cookie-bar .am-cookie-bar, dialog[data-dialog-ref-name="am-cookie-bar"] { position: fixed !important; left: 0; right: 0; bottom: 0 !important; top: auto !important; margin: 0 !important; width: 100%; max-width: 100%; z-index: 9999; } .mgz-single-image-wrapper .mgz-image-link { position: relative; } .mgz-single-image-wrapper .mgz-image-link .image-content { top: 50%; transform: translateY(-50%); } .mgz-single-image-wrapper .mgz-image-link .image-content .image-title { color: #fff; font-size: 30px; text-shadow: 0 0 9px #000; } html body button.ambar-action-btn.rounded-sm { background-color: #e2650c !important; } html body .ambar-btn-accept { background-color: #e2650c !important; } html body button.ambar-btn-settings.ambar-action-btn { background-color: #fff !important; color: #000 !important; font-weight: 800; } html body .ambar-btn-accept:hover { color: #fff; background-color: #e2650c !important; border-color: #e2650c !important; } .ninjamenus.ninjamenus-desktop .left_edge_menu_bar>.item-submenu { max-width: 1490px; background: #eaeaea !important; } .ninjamenus.ninjamenus-desktop .left_edge_menu_bar>.item-submenu .inner-content.mgz-container { display: flex; justify-content: center; } .ninjamenus.ninjamenus-desktop .left_edge_menu_bar>.item-submenu .inner-content.mgz-container>div { width: auto; } #myHeadertopfix .ourbarfix { max-width: 1488px; margin: auto; padding: 10px 10px 0; } .magezon-builder .mgz-element-text a { text-decoration: underline; text-decoration-color: #e2650c; color: unset; } #myHeadertopfix .ourbarfix li.mh_panelHeaderItem { text-align: right; white-space: nowrap; } #myHeadertopfix .ourbarfix li.mh_panelHeaderItem { width: 100%; } @media(max-width:1024px){ .headertopfix .ourbarfix .mh_serviceLinksWrapper .mh_panelHeaderList .mh_panelHeaderItem a { color: #fff; font-size: 15px; font-weight: 600; } #myHeadertopfix { background-color: #3a5674 !important; } #myHeadertopfix .ourbarfix ul.mh_panelHeaderList { justify-content: flex-end; } #myHeadertopfix .ourbarfix { padding: 10px 10px 10px; } }</style></div>                            </div>
2031    
2031<script>
2032    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
2033        .then(() => {
2034            return new Promise((resolve) => {
2035            const waitForjQuery = () => {
2036                if (typeof jQuery !== 'undefined') {
2037                    window.$ = window.jQuery = jQuery;
2038                    resolve();
2039                } else {
2040                setTimeout(waitForjQuery, 25);
2041                }
2042            };
2043            waitForjQuery();
2044            });
2045        })
2046        .then(() => loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_NinjaMenus/js/jquery.hoverIntent.min.js', 'hoverIntent'))
2047        .then(() => loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_Core/js/jquery-scrolltofixed-min.js', 'scrolltofixed'))
2048        .then(() => loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonNinjaMenus/js/jquery.drilldown.min.js', 'drilldown'))
2049        .then(() => loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonNinjaMenus/js/menu.js', 'menu'))
2050        .then(() => {
2051            if (typeof $.fn.drilldown === 'undefined') return;
2052
2053            const menuElement = $(".ninjamenus");
2054            const options = {
2055                "mobileBreakpoint": 1024,
2056                "stick": 0,
2057                "id": "ninjamenus1"
2058            };
2059            let ninjaMenus = new NinjaMenus(menuElement, options);
2060
2061            $('.ninjamenus-top-overlay').appendTo('.page-wrapper');
2062            $('.ninjamenus-top').hover(function() {
2063                $('.nav-sections').css('z-index', 999);
2064                $('.ninjamenus-top-overlay').fadeIn(400);
2065            }, function() {
2066                if (!$('.nav-sections').hasClass('scroll-to-fixed-fixed')) {
2067                    $('.nav-sections').css('z-index', '');
2068                }
2069                $('.ninjamenus-top-overlay').fadeOut(400);
2070            });
2071        })
2072</script>
2072            </nav>
2073        </div>
2074        <button
2075                @click="closeMenu()"
2076                class="absolute flex justify-end w-16 self-end mb-1"
2077                aria-label="Men&#xFC;&#x20;schlie&#xDF;en"
2078                type="button"
2079        >
2080            <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="hidden p-4" width="64" height="64" :class="{ 'hidden' : !open, 'block': open }" aria-hidden="true">
2081  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/>
2082</svg>
2083        </button>
2084    </div>
2085</nav>
2086<script>
2087    'use strict';
2088
2089    const initMenuMobile_6ab514fede845 = () => {
2090        return {
2091            mobilePanelActiveId: null,
2092            open: false,
2093            setActiveMenu(menuNode) {
2094                Array.from(menuNode.querySelectorAll('a')).filter(link => {
2095                    return link.href === window.location.href.split('?')[0];
2096                }).map(item => {
2097                    item.classList.add('underline');
2098                    item.closest('li.level-0') &&
2099                    item.closest('li.level-0').querySelector('a.level-0').classList.add('underline');
2100                });
2101            },
2102            openMenu() {
2103                this.open = true
2104                this.$nextTick(() => hyva.trapFocus(this.$refs['mobileMenuNavLinks']));
2105                // Prevent from body scrolling while mobile menu opened
2106                document.body.style.position = 'fixed';
2107            },
2108            closeMenu() {
2109                document.body.style.position = '';
2110
2111                if (this.open) {
2112                    this.$nextTick(() => this.$refs['mobileMenuTrigger'].focus() || hyva.releaseFocus());
2113                }
2114
2115                this.open = false
2116                this.mobilePanelActiveId = null
2117            },
2118            openSubcategory(index) {
2119                const menuNodeRef = document.querySelector('[data-child-id=' + index + ']')
2120                this.mobilePanelActiveId = this.mobilePanelActiveId === index ? 0 : index
2121                this.$nextTick(() => hyva.trapFocus(menuNodeRef))
2122            },
2123            backToMainCategories(index) {
2124                const menuNodeRef = document.querySelector('[data-child-id=' + index + ']')
2125                this.mobilePanelActiveId = 0
2126                this.$nextTick(() => {
2127                    hyva.trapFocus(this.$refs['mobileMenuNavLinks'])
2128                    menuNodeRef.querySelector('a').focus()
2129                })
2130            },
2131            toggleSearchContent() {
2132                // Toggle the visibility of the search content div
2133                const searchContent = document.getElementById('search-content');
2134                if (searchContent) {
2135                    searchContent.style.display = searchContent.style.display === 'none' ? 'block' : 'none';
2136                }
2137            }
2138        }
2139    }
2140</script>
2140
2141
2142<script>
2143    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
2144        .then(() => {
2145            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_NinjaMenus/js/jquery.drilldown.min.js', 'drilldown');
2146        })
2147        .then(() => {
2148            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_NinjaMenus/js/jquery.hoverIntent.min.js', 'hoverIntent');
2149        })
2150        .then(() => {
2151            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_Core/js/jquery-scrolltofixed-min.js', 'scrolltofixed');
2152        })
2153        .then(() => {
2154            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonNinjaMenus/js/menu.js', 'menu');
2155        })
2156        .then(() => {
2157            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonNinjaMenus/js/jquery.drilldown.min.js', 'drilldown');
2158        })
2159        .then(() => {
2160            const menuElement = $(".ninjamenus");
2161            const options = {
2162                "mobileBreakpoint": 1024,
2163                // "stick": true,
2164            };
2165            let ninjaMenus = new NinjaMenus(menuElement, options);
2166        })
2167</script>
2167
2168        <div class="flex items-center headerIcons order-3">
2169            <!--Search Icon-->
2170            <button
2171                id="menu-search-icon"
2172                x-data="{ isMobileOrTablet: window.innerWidth < 768 || (window.innerWidth >= 768 && window.innerWidth < 1024) }"
2173                x-show="!isMobileOrTablet"
2174                class="inline-block ml-1 no-underline sm:ml-3 hover:text-black"
2175                @click.prevent="
2176                    searchOpen = !searchOpen;
2177                    $dispatch('search-open');
2178                "
2179                aria-label="Suchformular&#x20;umschalten"
2180                aria-haspopup="true"
2181                :aria-expanded="searchOpen"
2182                x-ref="searchButton"
2183                x-on:resize.window="
2184                    isMobileOrTablet = window.innerWidth < 768 || (window.innerWidth >= 768 && window.innerWidth < 1024)
2185                "
2186            >
2187                <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 md:h-6 md:w-6 hover:text-black" width="25" height="25" aria-hidden="true">
2188  <path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"/>
2189</svg>
2190            </button>
2191
2192            <!--Customer Icon & Dropdown-->
2193            <!-- BLOCK header.customer -->
2194<div
2195    class="relative inline-block ml-1 sm:ml-3"
2196    x-data="{ open: false }"
2197    @keyup.escape="open = false"
2198>
2199    <button
2200        type="button"
2201        id="customer-menu"
2202        class="block hover:text-black"
2203        @click="open = !open"
2204        @click.outside="open = false"
2205        :aria-expanded="open ? 'true' : 'false'"
2206        aria-label="Mein&#x20;Konto"
2207        aria-haspopup="true"
2208    >
2209        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 md:h-6 md:w-6" width="32" height="32" aria-hidden="true">
2210  <path stroke-linecap="round" stroke-linejoin="round" d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"/>
2211</svg>
2212    </button>
2213    <nav
2214        class="
2215            absolute right-0 z-20 w-40 py-2 mt-2 -mr-4 px-1 overflow-auto origin-top-right rounded-sm
2216            shadow-lg sm:w-48 lg:mt-3 bg-container-lighter
2217        "
2218        x-cloak
2219        x-show="open"
2220        aria-labelledby="customer-menu"
2221        @click.outside="open = false"
2222    >
2223                    
2224<a id="customer.header.sign.in.link"
2225   class="block px-4 py-2 lg:px-5 lg:py-2 hover:bg-gray-100"
2226   onclick="hyva.setCookie && hyva.setCookie(
2227       'login_redirect',
2228       window.location.href,
2229       1
2230   )"
2231   href="https://www.mode-jost.de/customer/account/index/"
2232   title="Anmelden"
2233>
2234    Anmelden</a>
2235
2236            </nav>
2237</div>
2238<!-- /BLOCK header.customer -->
2239            
2240            <!--Cart Icon-->
2241            
2242            <button
2243            id="menu-cart-icon"
2244        class="relative inline-block ml-1 no-underline sm:ml-3 hover:text-black"
2245        x-ref="cartButton"
2246        :aria-disabled="isCartEmpty()"
2247        title="Warenkorb"
2248                    @click.prevent.stop="() => {
2249                $dispatch('toggle-cart', { isOpen: true })
2250            }"
2251            @toggle-cart.window="toggleCart($event)"
2252            :aria-expanded="isCartOpen"
2253            aria-haspopup="dialog"
2254            >
2255
2256        <span
2257            class="sr-only label"
2258            x-text="`
2259                Mini-Warenkorb umschalten,
2260                ${isCartEmpty()
2261                    ? 'Warenkorb ist leer'
2262                    : hyva.str(
2263                        'You have %1 product%2 in your cart.',
2264                        cart.summary_count,
2265                        cart.summary_count === 1 ? '' : 's'
2266                    )}`
2267        "></span>
2268
2269        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 md:h-6 md:w-6 hover:text-black" width="25" height="25" role="img">
2270  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
22700 014 0z"/>
2271<title>shopping-cart</title></svg>
2272
2273        <span
2274            x-text="cart.summary_count"
2275            x-show="!isCartEmpty()"
2276            x-cloak
2277            class="absolute top-0 right-0 h-5 px-2 py-1 -mt-5 -mr-4 text-xs font-semibold leading-none text-center text-white uppercase transform -translate-x-1 translate-y-1/2 rounded-full bg-primary"
2278            aria-hidden="true">
2279        </span>
2280
2281            </button>
2282    
2283
2284        </div>
2285    </div>
2286    <!--Search-->
2287    <div class="absolute z-10 w-full border-t shadow-sm bg-container-lighter border-container-lighter"
2288         id="search-content"
2289         x-cloak x-show="searchOpen"
2290         @click.outside="searchOpen = false"
2291         @keydown.escape="
2292            searchOpen = false;
2293            $refs.searchButton.focus();
2294         "
2295    >
2296        
2296<script>
2297    'use strict';
2298
2299    function initMiniSearch() {
2300        return {
2301            minSearchLength: 4,
2302            suggestions: [],
2303            suggest() {
2304                const search = this.$refs.searchInput;
2305                if (search.value.length >= this.minSearchLength) {
2306                    search.setCustomValidity('');
2307                    search.reportValidity();
2308                    this.fetchSuggestions(search.value);
2309                } else {
2310                    this.suggestions = [];
2311                }
2312            },
2313            fetchSuggestions(term) {
2314                fetch(
2315                    window.BASE_URL + 'search/ajax/suggest?' + new URLSearchParams({q: term}),
2316                    {
2317                        headers: {
2318                            'X-Requested-With': 'XMLHttpRequest'
2319                        }
2320                    }
2321                )
2322                .then(response => response.json())
2323                .then(result => this.suggestions = result);
2324            },
2325            search(term) {
2326                const search = this.$refs.searchInput;
2327                term = term || search.value;
2328                if (term.length < this.minSearchLength) {
2329                    search.setCustomValidity('Minimale\u0020L\u00E4nge\u0020der\u0020Suchanfrage\u0020ist\u00204');
2330                    search.reportValidity();
2331                } else {
2332                    search.setCustomValidity('');
2333                    search.value = term;
2334                    this.$refs.form.submit();
2335                }
2336            },
2337            focusElement(element) {
2338                if (element && element.nodeName === "DIV") {
2339                    element.focus();
2340                    return true;
2341                } else {
2342                    return false;
2343                }
2344            }
2345        }
2346    }
2347</script>
2347
2348<div class="container py-2 mx-auto text-black" x-data="initMiniSearch()">
2349     <form class="form minisearch" id="search_mini_form" x-ref="form" @submit.prevent="search()"
2350          action="https://www.mode-jost.de/catalogsearch/result/" method="get" role="search">
2351        <label class="hidden" for="search" data-role="minisearch-label">
2352            <span>Suche</span>
2353        </label>
2354        <input id="search"
2355               x-ref="searchInput"
2356               type="search"
2357               autocomplete="off"
2358               name="q"
2359               value=""
2360               placeholder="Hier&#x20;den&#x20;ganzen&#x20;Shop&#x20;durchsuchen..."
2361               maxlength="50"
2362               class="w-full p-2 text-lg leading-normal transition appearance-none text-grey-800
2363                focus:outline-none focus:border-transparent lg:text-xl"
2364               @focus.once="suggest"
2365               @input.debounce.300="suggest"
2366               @keydown.arrow-down.prevent="focusElement($root.querySelector('[tabindex]'))"
2367               @search-open.window.debounce.10="
2368                    $el.focus()
2369                    $el.select()
2370               "
2371        />
2372        <input type="hidden" name="product_list_order" value="neuheiten_sortierung">
2373         <template x-if="suggestions.length > 0">
2374             <div class="w-full leading-normal transition appearance-none text-grey-800 flex flex-col mt-1">
2375                 <template x-for="suggestion in suggestions">
2376                     <div class="flex justify-between p-2 bg-container-lighter even:bg-container mb-1 cursor-pointer
2377                                 border border-container hover:bg-container-darker"
2378                          tabindex="0"
2379                          @click="search(suggestion.title)"
2380                          @keydown.enter="search(suggestion.title)"
2381                          @keydown.arrow-up.prevent="
2382                              focusElement($event.target.previousElementSibling) || $refs.searchInput.focus()
2383                          "
2384                          @keydown.arrow-down.prevent="focusElement($event.target.nextElementSibling)"
2385                     >
2386                         <span x-text="suggestion.title"></span>
2387                         <span x-text="suggestion.num_results"></span>
2388                     </div>
2389                 </template>
2390             </div>
2391         </template>
2392        <button type="submit"
2393                title="Suche"
2394                class="action search sr-only"
2395                aria-label="Search"
2396        >
2397            Suche        </button>
2398    </form>
2399</div>
2400    </div>
2401
2402    <!--Cart Drawer-->
2403    
2404<script>
2405    function initCartDrawer() {
2406        return {
2407            open: false,
2408            isLoading: false,
2409            cart: {},
2410            maxItemsToDisplay: 10,
2411            itemsCount: 0,
2412            showSku: true,
2413            getData(data) {
2414                if (data.cart) {
2415                    this.cart = data.cart;
2416                    this.itemsCount = data.cart.items && data.cart.items.length || 0;
2417                    this.setCartItems();
2418                }
2419                this.isLoading = false;
2420            },
2421            cartItems: [],
2422            getItemCountTitle() {
2423                return hyva.strf('\u00250\u0020von\u0020\u00251\u0020Produkten\u0020im\u0020Warenkorb\u0020angezeigt', this.maxItemsToDisplay, this.itemsCount)
2424            },
2425            setCartItems() {
2426                this.cartItems = this.cart.items && this.cart.items.sort((a, b) => b.item_id - a.item_id) || [];
2427
2428                if (this.maxItemsToDisplay > 0) {
2429                    this.cartItems = this.cartItems.slice(0, parseInt(this.maxItemsToDisplay, 10));
2430                }
2431            },
2432          updateItemQty(form) {
2433    if (!form.action) return;
2434    this.isLoading = true;
2435    const action = form.action;
2436    const formData = new FormData(form);
2437    formData.append('form_key', hyva.getFormKey());
2438
2439    if (!formData.uenc) {
2440        formData.append('uenc', hyva.getUenc());
2441    }
2442
2443    fetch(action, {
2444        body: formData,
2445        method: 'POST',
2446        mode: "cors",
2447        credentials: "include"
2448    }).then((result) => {
2449        return result.text();
2450    }).then((content) => {
2451        // Replace the DOM first
2452        hyva.replaceDomElement('#maincontent', content);
2453
2454        // Then move the error message — BUT after DOM is updated
2455      setTimeout(() => {
2456    const errorMessage = document.querySelector('.message.error');
2457    const targetContainer = document.getElementById('custommhinspeyamove');
2458    
2459    if (errorMessage && targetContainer) {
2460        targetContainer.appendChild(errorMessage);
2461
2462        // Start fade-out after 10 seconds
2463        setTimeout(() => {
2464            errorMessage.style.transition = "opacity 3s ease";
2465            errorMessage.style.opacity = 0;
2466
2467            // Remove the element from DOM after fade-out completes (1s)
2468            setTimeout(() => {
2469                if (errorMessage.parentNode) {
2470                    errorMessage.parentNode.removeChild(errorMessage);
2471                }
2472            }, 1000);
2473        }, 3000);
2474    }
2475}, 50);
2476
2477    }).catch((error) => {
2478        window.dispatchMessages && window.dispatchMessages([{
2479            type: 'error',
2480            text: 'Es\u0020ist\u0020ein\u0020Fehler\u0020aufgetreten.\u0020Bitte\u0020versuchen\u0020Sie\u0020es\u0020erneut.'
2481        }]);
2482    }).finally(() => {
2483        this.isLoading = false;
2484    });
2485},
2486            deleteItemFromCart(itemId) {
2487                this.isLoading = true;
2488
2489                const formKey = hyva.getFormKey();
2490                const postUrl = BASE_URL + 'checkout/sidebar/removeItem/';
2491
2492                    fetch(postUrl, {
2493                        headers: {
2494                            "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
2495                        },
2496                        body: "form_key=" + formKey + "&item_id=" + itemId,
2497                        method: "POST",
2498                        mode: "cors",
2499                        credentials: "include"
2500                    }).then(response => {
2501                        if (response.redirected) {
2502                            window.location.href = response.url;
2503                        } else if (response.ok) {
2504                            return response.json();
2505                        } else {
2506                            window.dispatchMessages && window.dispatchMessages([{
2507                                type: 'warning',
2508                                text: 'Der\u0020Artikel\u0020konnte\u0020nicht\u0020aus\u0020dem\u0020Warenkorb\u0020entfernt\u0020werden.'
2509                            }]);
2510                            this.isLoading = false;
2511                        }
2512                    }).then(result => {
2513                        window.dispatchMessages && window.dispatchMessages([{
2514                            type: result.success ? 'success' : 'error',
2515                            text: result.success
2516                                ? 'Sie\u0020haben\u0020die\u0020Artikel\u0020entfernt.'
2517                                : result.error_message
2518                        }], result.success ? 5000 : 0)
2519                        window.dispatchEvent(new CustomEvent('reload-customer-section-data'));
2520                    });
2521            },
2522            scrollLock(use = true) {
2523                document.documentElement.style.scrollbarGutter = use ? "stable" : "";
2524                document.body.style.overflow = use ? "hidden" : "";
2525            },
2526            toggleCartDrawer(event) {
2527                if (event.detail && event.detail.isOpen) {
2528                    this.open = event.detail.isOpen;
2529                } else {
2530                    this.open = !this.open;
2531                }
2532
2533                if (this.open) {
2534                    this.$root.showModal();
2535                } else {
2536                    this.$root.close();
2537                }
2538
2539                this.scrollLock(this.open);
2540            },
2541            openCartDrawer() {
2542                this.$root.showModal();
2543                this.open = true;
2544                this.scrollLock(true);
2545            },
2546            closeCartDrawer() {
2547                this.$root.close();
2548                this.open = false;
2549                this.scrollLock(false);
2550            },
2551            onDialogBackdropClickHelper(event, target) {
2552                const rect = target.getBoundingClientRect();
2553                const isInDialog =
2554                    rect.top <= event.clientY &&
2555                    event.clientY <= rect.top + rect.height &&
2556                    rect.left <= event.clientX &&
2557                    event.clientX <= rect.left + rect.width;
2558                return isInDialog;
2559            },
2560            cartListeners: {
2561                ['@private-content-loaded.window'](event) {
2562                    this.getData(event.detail.data);
2563                },
2564                ['@click'](event) {
2565                    if (this.onDialogBackdropClickHelper(event, this.$root)) return;
2566                    this.closeCartDrawer();
2567                },
2568                ['@toggle-cart.window'](event) {
2569                    this.toggleCartDrawer(event);
2570                },
2571                ['@keydown.window.escape']() {
2572                    this.closeCartDrawer();
2573                }
2574            }
2575        }
2576    }
2577</script>
2577
2578
2579<dialog
2580    id="cart-drawer"
2581    aria-labelledby="cart-drawer-title"
2582    class="z-30 fixed inset-0 flex flex-col py-6 px-4 [&_>*]:px-2 gap-y-8 max-h-screen max-w-full h-full mr-0 w-[480px] md:w-[640px]
2583        transition ease-in-out shadow-2xl bg-gray-50 text-slate-800 backdrop:bg-black/25 backdrop:backdrop-blur-sm"
2584    x-show="open"
2585    x-transition:enter="duration-700"
2586    x-transition:enter-start="translate-x-full"
2587    x-transition:enter-end="translate-x-0"
2588    x-transition:leave="duration-500"
2589    x-transition:leave-start="translate-x-0"
2590    x-transition:leave-end="translate-x-full"
2591    x-ref="cartDialogContent"
2592    x-data="initCartDrawer()"
2593    x-bind="cartListeners"
2594    x-cloak
2595>
2596    
2597    <div class="flex gap-2 justify-between items-center">
2598        <p id="cart-drawer-title" class="text-2xl">
2599            <strong>Mein Warenkorb</strong>
2600            <span
2601                class="items-total text-xs"
2602                x-show="maxItemsToDisplay && maxItemsToDisplay < itemsCount"
2603                x-text="getItemCountTitle()"
2604            ></span>
2605        </p>
2606        <button
2607            type="button"
2608            class="btn justify-center rounded-full p-2.5 text-base shadow-none hover:shadow-lg active:shadow disabled:shadow-none transition
2609                bg-white text-blue-700 border border-blue-400 hover:bg-white focus:ring-blue-200 disabled:bg-white disabled:border-slate-200 disabled:text-slate-600 disabled:opacity-70"
2610            @click="closeCartDrawer"
2611            aria-label="Mini-Warenkorb&#x20;schlie&#xDF;en"
2612        >
2613            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
2614  <path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"/>
2615</svg>
2616        </button>
2617    </div>
2618
2619    
2620    <template x-if="!itemsCount">
2621        <div class="grow grid place-items-center">
2622            <div class="text-center">
2623                <div class="max-w-full max-h-full aspect-square w-44 h-44 inline-flex items-center justify-center rounded-full
2624                    bg-sky-100 text-blue-400 outline-2 outline-dashed outline-blue-300 outline-offset-8">
2625                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="120" height="120" aria-hidden="true">
2626  <path d="M3 1a1 1 0 000 2h1.22l.305 1.222a.997.997 0 00.01.042l1.358 5.43-.893.892C3.74 11.846 4.632 14 6.414 14H15a1 1 0 000-2H6.414l1-1H14a1 1 0 00.894-.553l3-6A1 1 0 0017 3H6.28l-.31-1.243A1 1 0 005 1H3zM16 16.5a1.5 1.5 0 11-3 0 1.5 1.5 0 013 0zM6.5 18a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"/>
2627</svg>
2628                </div>
2629                <p class="mt-10 text-xl">
2630                    <strong>Ihr Warenkorb ist leer</strong>
2631                </p>
2632                <p class="text-slate-500">
2633                    Sieht so aus, als hätten Sie Ihre Wahl noch nicht getroffen.                </p>
2634            </div>
2635        </div>
2636    </template>
2637<!-- Messages container: single place to show messages new -->
2638<div id="custommhinspeyamove" class="mb-4"></div>
2639    <template x-if="itemsCount">
2640        <ul class="grow flex flex-col overflow-y-auto overscroll-y-contain mask-overflow mask-dir-y">
2641            <template x-for="item in cartItems">
2642                <li class="flex gap-4 md:gap-6 items-start py-7 border-b border-slate-200">
2643                    <a
2644                        class="block shrink-0 max-w-[25%]"
2645                        :href="item.product_url"
2646                        :title="hyva.str('Product\u0020\u0022\u00251\u0022', item.product_name)"
2647                    >
2648                        <img
2649                            :src="item.product_image.src"
2650                            :width="item.product_image.width"
2651                            :height="item.product_image.height"
2652                            loading="lazy"
2653                            :alt="hyva.str('Product\u0020\u0022\u00251\u0022', item.product_name)"
2654                        />
2655                    </a>
2656                    <div class="grow space-y-4">
2657                        <div class="flex gap-2 justify-between items-center">
2658                            <p class="text-lg">
2659                                                                <strong x-html="item.product_name"></strong>
2660                            </p>
2661                            <span class="[&_.price]:font-normal" x-html="item.product_price"></span>
2662                        </div>
2663                        <template x-if="item.options && item.options.length || showSku">
2664                            <dl class="table text-sm">
2665                                <template x-if="showSku">
2666                                    <div class="table-row">
2667                                        <dt class="table-cell font-normal text-slate-500 min-w-[theme(spacing.16)] pr-2 pb-2">
2668                                            SKU                                        </dt>
2669                                        <dd class="table-cell font-bold pb-2" x-html="item.product_sku"></dd>
2670                                    </div>
2671                                </template>
2672                                <template x-for="option in item.options">
2673                                    <div class="table-row">
2674                                        <dt
2675                                            class="table-cell font-normal text-slate-500 min-w-[theme(spacing.16)] pr-2 pb-2"
2676                                            x-text="option.label"
2677                                        ></dt>
2678                                        <dd class="table-cell font-bold pb-2" x-html="option.value"></dd>
2679                                    </div>
2680                                </template>
2681                            </dl>
2682                        </template>
2683                        <div class="flex flex-wrap gap-2 justify-between items-center">
2684                                                            <form
2685                                    action="https://www.mode-jost.de/checkout/cart/updatePost/"
2686                                    x-data="{
2687                                        initQty: item.qty,
2688                                        itemQty: item.qty,
2689                                        prevQty: item.qty,
2690                                        updateQty() {
2691                                            const submitEvent = new Event('submit', { cancelable: true });
2692                                            this.$root.dispatchEvent(submitEvent);
2693                                        }
2694                                    }"
2695                                    @submit.prevent="updateItemQty($event.target);"
2696                                    x-init="$watch('isLoading', isLoading => {
2697                                        if (!isLoading) return;
2698                                        initQty = itemQty;
2699                                        prevQty = itemQty;
2700                                    })"
2701                                    method="post"
2702                                    class="form form-cart flex gap-1"
2703                                >
2704                                    <input name="form_key" type="hidden" value="VYIswpNByTPP3EWM" />                                                                        <label class="mb-0">
2705                                        <span class="sr-only">Anzahl</span>
2706                                        <input
2707                                            type="number"
2708                                            class="qty border-slate-300 shadow-none [-moz-appearance:textfield]
2709                                                form-input                                                w-20                                                hover:[-moz-appearance:auto] [&::-webkit-inner-spin-button]:invisible hover:[&::-webkit-inner-spin-button]:visible"
2710                                            required
2711                                            min="0"
2712                                            step="any"
2713                                            x-model.number="itemQty"
2714                                            :id="`minicart-${item.item_id}-qty`"
2715                                            :name="`cart[${item.item_id}][qty]`"
2716                                                                                                                                                                            >
2717                                    </label>
2718                                                                                                                <button
2719                                            type="submit"
2720                                            class="btn justify-center rounded-md w-11 p-2 text-base shadow-none hover:shadow-lg active:shadow disabled:shadow-none transition
2721                                                bg-blue-600 text-white border border-transparent hover:bg-blue-700 focus:ring-blue-200 active:bg-blue-700
2722                                                disabled:bg-slate-600 disabled:text-slate-50 disabled:opacity-70 disabled:invisible"
2723                                            :disabled="itemQty === initQty || itemQty === null"
2724                                            :aria-label="hyva.str(
2725                                                'Update\u0020qty\u0020for\u0020\u0022\u00251\u0022',
2726                                                item.product_name
2727                                            )"
2728                                        >
2729                                            <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
2730  <path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"/>
2731</svg>
2732                                        </button>
2733                                                                    </form>
2734                                                        <div class="inline-flex flex-wrap items-center gap-1">
2735                                <a
2736                                    :href="item.configure_url"
2737                                    x-show="item.product_type !== 'grouped'"
2738                                    class="btn justify-center rounded-full p-2 text-base shadow-none hover:shadow-lg active:shadow transition
2739                                        bg-blue-100 text-blue-700 border border-transparent hover:bg-blue-200 focus:ring-blue-200
2740                                        active:bg-blue-200 disabled:bg-slate-50 disabled:text-slate-600 disabled:opacity-70"
2741                                    :aria-label="hyva.str(
2742                                        'Edit\u0020product\u0020\u0022\u00251\u0022',
2743                                        item.product_name
2744                                    )"
2745                                >
2746                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
2747  <path d="M13.586 3.586a2 2 0 112.828 2.828l-.793.793-2.828-2.828.793-.793zM11.379 5.793L3 14.172V17h2.828l8.38-8.379-2.83-2.828z"/>
2748</svg>
2749                                </a>
2750                                <button
2751                                    type="button"
2752                                    class="btn justify-center rounded-full p-2 text-base shadow-none hover:shadow-lg active:shadow disabled:shadow-none transition
2753                                        bg-white text-slate-700 border border-slate-400 hover:bg-white focus:ring-slate-200 disabled:bg-white disabled:border-slate-200 disabled:text-slate-600 disabled:opacity-70"
2754                                    @click="deleteItemFromCart(item.item_id)"
2755                                    :aria-label="hyva.str(
2756                                        'Remove\u0020product\u0020\u0022\u00251\u0022\u0020from\u0020cart',
2757                                        item.product_name
2758                                    )"
2759                                >
2760                                    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
2761  <path fill-rule="evenodd" d="M9 2a1 1 0 00-.894.553L7.382 4H4a1 1 0 000 2v10a2 2 0 002 2h8a2 2 0 002-2V6a1 1 0 100-2h-3.382l-.724-1.447A1 1 0 0011 2H9zM7 8a1 1 0 012 0v6a1 1 0 11-2 0V8zm5-1a1 1 0 00-1 1v6a1 1 0 102 0V8a1 1 0 00-1-1z" clip-rule="evenodd"/>
2762</svg>
2763                                </button>
2764                            </div>
2765                        </div>
2766                    </div>
2767                </li>
2768            </template>
2769        </ul>
2770    </template>
2771
2772    
2773    <template x-if="itemsCount">
2774        <div>
2775            
2776            <dl class="flex gap-2 justify-between items-center text-sm font-bold">
2777                <dt class="text-slate-500">Zwischensumme</dt>
2778                <dd x-html="cart.subtotal"></dd>
2779            </dl>
2780
2781            <div class="flex flex-col gap-y-4 mt-8">
2782                <a
2783                    @click.prevent.stop="$dispatch(
2784                        'toggle-authentication',
2785                        { url: 'https://www.mode-jost.de/checkout/' }
2786                    );"
2787                    href="https://www.mode-jost.de/checkout/"
2788                    class="btn justify-center rounded-full py-3 px-6 text-base shadow-none hover:shadow-lg active:shadow transition
2789                        bg-black text-white border border-transparent hover:bg-black focus:bg-black active:bg-black rounded-none"
2790                >
2791                    Kasse                </a>
2792                <a
2793                    href="https://www.mode-jost.de/checkout/cart/"
2794                    class="rounded-none btn justify-center py-3 px-6 text-base shadow-none hover:shadow-lg active:shadow transition
2795                        bg-white text-blue-700 border border-blue-400 hover:bg-white focus:ring-blue-200"
2796                >
2797                    Warenkorb ansehen und bearbeiten                </a>
2798                            </div>
2799        </div>
2800    </template>
2801
2802    <template x-if="!itemsCount">
2803        <div class="flex flex-col">
2804            <button
2805                type="button"
2806                @click="closeCartDrawer"
2807                class="btn justify-center rounded-md py-3 px-6 text-base shadow-none hover:shadow-lg active:shadow disabled:shadow-none transition
2808                    bg-black rounded-none text-white border border-transparent hover:bg-black focus:ring-black-200 active:bg-black disabled:bg-slate-600 disabled:text-slate-50 disabled:opacity-70"
2809            >Weiter einkaufen</button>
2810        </div>
2811    </template>
2812
2813    
2814    <div
2815    class="z-50 fixed inset-0 flex justify-center items-center bg-white/70 select-none"
2816    x-show="isLoading"
2817    x-cloak
2818    x-transition.opacity.duration.200ms
2819>
2820    <div class="flex items-center">
2821        <svg xmlns="http://www.w3.org/2000/svg" width="54" height="54" viewBox="0 0 24 24" stroke="currentColor" fill="none" stroke-width="2" stroke-linecap="round" class="animate-spin" aria-hidden="true">
2822    <circle style="opacity: .3;" cx="12" cy="12" r="10"/>
2823    <path fill="none" stroke-width="2" d="M12,2 a10,10 0 0,1 10,10"/>
2824</svg>
2825        <div class="ml-10 text-xl">
2826            Laden...        </div>
2827    </div>
2828</div>
2829</dialog>
2830<style>
2831    #custommhinspeyamove button.text-gray-600.hover\:text-black {
2832    display: none;
2833}
2834</style>
2835    <!--Authentication Pop-Up-->
2836    <!-- BLOCK authentication-popup -->
2836<script>
2837    function initAuthentication() {
2838        return {
2839            open: false,
2840            close() {
2841                this.open = false;
2842            },
2843            forceAuthentication: false,
2844            checkoutUrl: 'https://www.mode-jost.de/checkout/index/',
2845            errors: 0,
2846            hasCaptchaToken: 0,
2847            displayErrorMessage: false,
2848            errorMessages: [],
2849            setErrorMessages(message) {
2850                this.errorMessages = [message];
2851                this.displayErrorMessage = true;
2852            },
2853            submitForm() {
2854                // Do not rename $form, the variable is expected to be declared in the recaptcha output
2855                const $form = document.querySelector('#login-form');
2856                
2857                if (this.errors === 0) {
2858                    this.dispatchLoginRequest($form);
2859                }
2860            },
2861            onPrivateContentLoaded() {
2862                const data = this.$event.detail.data;
2863                const isLoggedIn = data.customer && data.customer.firstname;
2864                if (data.cart && !isLoggedIn) {
2865                    this.forceAuthentication = !data.cart.isGuestCheckoutAllowed;
2866                }
2867            },
2868            redirectIfAuthenticated() {
2869                const event = this.$event;
2870                this.open = this.forceAuthentication;
2871
2872                if (event.detail && event.detail.url) {
2873                    this.checkoutUrl = event.detail.url;
2874                }
2875                if (!this.forceAuthentication) {
2876                    window.location.href = this.checkoutUrl;
2877                }
2878            },
2879            resetErrors() {
2880                this.errors = 0;
2881            },
2882            dispatchLoginRequest(form) {
2883                this.isLoading = true;
2884                const username = this.$refs['customer-email'].value;
2885                const password = this.$refs['customer-password'].value;
2886                const formKey = hyva.getFormKey();
2887                const bodyFields = {
2888                    'username': username,
2889                    'password': password,
2890                    'formKey': formKey
2891                };
2892                                const fieldName = 'g\u002Drecaptcha\u002Dresponse';
2893                const recaptchaField = fieldName && form[fieldName];
2894                if (recaptchaField) {
2895                    bodyFields[fieldName] = recaptchaField.value;
2896                }
2897                fetch('https://www.mode-jost.de/customer/ajax/login/', {
2898                        method: 'POST',
2899                        headers: {
2900                            'Content-Type': 'application/json',
2901                            'X-Requested-With': 'XMLHttpRequest'
2902                        },
2903                        body: JSON.stringify(bodyFields)
2904                    }
2905                ).then(response => {
2906                        return response.json()
2907                    }
2908                ).then(data => {
2909                    this.isLoading = false;
2910                    if (data.errors) {
2911                        this.setErrorMessages(data.message);
2912                        this.errors = 1;
2913                        this.hasCaptchaToken = 0;
2914                    } else {
2915                        window.location.href = this.checkoutUrl;
2916                    }
2917                });
2918            },
2919            eventListeners: {
2920                ['@private-content-loaded.window']() {
2921                    this.onPrivateContentLoaded();
2922                },
2923                ['@toggle-authentication.window']() {
2924                    this.redirectIfAuthenticated();
2925                },
2926                ['@pageshow.window'](event) {
2927                    if (event.persisted) {
2928                        this.close();
2929                    };
2930                }
2931            }
2932        }
2933    }
2934
2935    window.addEventListener('alpine:init', () => Alpine.data('initAuthentication', initAuthentication), {once: true})
2936</script>
2936
2937
2938<div x-data="initAuthentication" x-bind="eventListeners">
2939        <dialog
2940        id="authentication-popup"
2941        aria-labelledby="authentication-popup-title"
2942        class="open:flex flex-col transition ease-out duration-300 motion-reduce:duration-0 w-xl p-0 "
2943        x-show="open"
2944        x-htmldialog="close"
2945        closeby="any"
2946        x-transition
2947    >
2948        <div class="pt-8 px-8">
2949            <div class="flex gap-2 justify-between items-center">
2950                <p id="authentication-popup-title" class="text-xl">
2951                    <strong>Kundenlogin</strong>
2952                </p>
2953                <button
2954                    type="button"
2955                    class="btn bg-transparent border-transparent p-2"
2956                    @click="close"
2957                    aria-label="Panel&#x20;schlie&#xDF;en"
2958                >
2959                    <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" viewBox="0 0 24 24" aria-hidden="true"><path d="M18 6 6 18M6 6l12 12"/></svg>
2960                </button>
2961            </div>
2962
2963            <div class="message error" x-show="errors" x-cloak>
2964                <template x-for="(message, index) in errorMessages" :key="index">
2965                    <div>
2966                        <template x-if="message">
2967                            <span x-html="message"></span>
2968                        </template>
2969                    </div>
2970                </template>
2971            </div>
2972        </div>
2973
2974        <div class="block-customer-login p-8">
2975            <p id="authenticate-customer-login" class="text-lg mb-2">
2976                <strong>Auschecken über Ihr Konto</strong>
2977            </p>
2978
2979            <form
2980                id="login-form"
2981                class="form form-login"
2982                method="post"
2983                @submit.prevent="submitForm"
2984            >
2985                <input name="context" type="hidden" value="checkout">
2986
2987                <div class="flex flex-col gap-4 mb-3">
2988                    <div class="field email required">
2989                        <label for="form-login-username">
2990                            <span>E-Mail-Adresse</span>
2991                        </label>
2992                        <div class="control">
2993                            <input
2994                                id="form-login-username"
2995                                name="username"
2996                                type="email"
2997                                class="form-input w-full"
2998                                required
2999                                autocomplete="off"
3000                                x-ref="customer-email"
3001                                @change="resetErrors"
3002                            >
3003                        </div>
3004                    </div>
3005                    <div class="field password required">
3006                        <label for="form-login-password">
3007                            <span>Passwort</span>
3008                        </label>
3009                        <div class="control">
3010                            <input
3011                                id="form-login-password"
3012                                name="password"
3013                                type="password"
3014                                class="form-input w-full"
3015                                required
3016                                autocomplete="off"
3017                                x-ref="customer-password"
3018                                @change="resetErrors"
3019                            >
3020                        </div>
3021                    </div>
3022                </div>
3023
3024                
3025                <div class="actions-toolbar">
3026                    <button
3027                        type="submit"
3028                                                class="btn btn-primary"
3029                    >
3030                        Anmelden                    </button>
3031                    <a
3032                        href="https://www.mode-jost.de/customer/account/forgotpassword/"
3033                        class="underline hover:no-underline"
3034                    >
3035                        Passwort vergessen?                    </a>
3036                </div>
3037            </form>
3038
3039                    </div>
3040
3041        <div class="block-new-customer p-8 border-t border-gray-300">
3042            <p id="authenticate-new-customer" class="text-lg mb-2">
3043                <strong>Als Neukunde auschecken</strong>
3044            </p>
3045
3046            <div class="block-content">
3047                <p class="mb-1">
3048                    Ein Konto zu erstellen hat viele Vorteile:                </p>
3049                <ul class="list-disc pl-5">
3050                    <li> Bestellungen und Sendungen verfolgen</li>
3051                    <li> Alte Bestellungen einsehen</li>
3052                    <li> Schneller zur Kasse gehen</li>
3053                </ul>
3054                <div class="actions-toolbar mt-6 mb-2">
3055                    <a href="https://www.mode-jost.de/customer/account/create/"
3056                        class="inline-flex btn btn-primary">
3057                        Ein Konto erstellen                    </a>
3058                </div>
3059            </div>
3060        </div>
3061    </dialog>
3062</div>
3063<!-- /BLOCK authentication-popup --></div>
3064<style>
3065    .catalog-category-view span.shipping-cost-details {
3066    display: none;
3067}
3068
3069.catalog-category-view span.tax-separator {
3070    display: none;
3071}
3072
3073.catalog-category-view span.tax-label {
3074    display: none;
3075}
3076
3077
3078.cart-summary .cart-summary-actions .mhcard-add-code {
3079    width: 100%;
3080}
3081.actions-toolbar .secondary button.btn.btn-secondary {
3082    color:  #000 !important;
3083    border: 1px solid #000 !important;
3084}
3085
3086.cart.table-wrapper table.cart.items .iconBlockCart>a.btn {
3087    display: inline-block;
3088}
3089
3090.cart.table-wrapper table.cart.items .iconBlockCart button.btn {
3091    display: inline;
3092}
3093
3094
3095
3096.cart table tbody tr td.item {
3097    min-width: 260px;
3098}
3099.header-custom-btn {
3100    color: #fff!important;
3101    background: #e2650c;
3102    text-transform: uppercase;
3103    font-size: 1rem;
3104    margin: auto;
3105    font-family: din-condensed, sans-serif!important;
3106    padding: 0.7rem;
3107    letter-spacing: normal !important;
3108    font-weight: 400;
3109    border-radius: 0.175rem;
3110    border: 0.08rem solid #e2650c;
3111    line-height: 100% !important;
3112    display: inline-block;
3113}
3114
3115.header-custom-btn:hover {
3116    background: transparent;
3117    color:#e2650c!important;
3118}
3119@media(max-width:767px){
3120   tr.item-info {
3121    display: flex;
3122    flex-flow: column;
3123}
3124    .cart table tbody tr td.item {
3125    min-width: auto;
3126}
3127}
3128</style>
3129</header><main id="maincontent" class="page-main"><div id="contentarea" tabindex="-1"></div>
3130<div class="page messages">
3130<script>
3131        function initMessages() {
3132        "use strict";
3133        return {
3134            messages: window.mageMessages || [],
3135            isEmpty() {
3136                return this.messages.reduce(
3137                    function (isEmpty, message) {
3138                        return isEmpty && message === undefined
3139                    }, true
3140                )
3141            },
3142            hasMessages() {
3143                return !this.isEmpty();
3144            },
3145            hasMessage() {
3146                return !!this.message;
3147            },
3148            removeMessage() {
3149                this.messages[this.index] = undefined;
3150            },
3151            addMessages(messages, hideAfter) {
3152                messages.map((message) => {
3153                    if (!message.text || !message.text.trim()) return;
3154                    this.messages = this.messages.concat(message);
3155                    if (hideAfter === undefined && message.type === 'success' && window.defaultSuccessMessageTimeout) {
3156                        hideAfter = window.defaultSuccessMessageTimeout;
3157                    }
3158                    if (hideAfter) {
3159                        this.setHideTimeOut(this.messages.length -1, hideAfter);
3160                    }
3161                });
3162            },
3163            setHideTimeOut(messageIndex, hideAfter) {
3164                setTimeout((messageIndex) => {
3165                    this.messages[messageIndex] = undefined;
3166                }, hideAfter, messageIndex);
3167            },
3168            eventListeners: {
3169                ['@messages-loaded.window'](event) {
3170                    this.addMessages(event.detail.messages, event.detail.hideAfter)
3171                },
3172                ['@private-content-loaded.window'](event) {
3173                    const data = event.detail.data;
3174                    if (
3175                        data.messages &&
3176                        data.messages.messages &&
3177                        data.messages.messages.length
3178                    ) {
3179                        this.addMessages(data.messages.messages);
3180                    }
3181                },
3182                ['@clear-messages.window']() {
3183                    this.messages = [];
3184                },
3185                ['@pageshow.window'](event) {
3186                    if (event.persisted) {
3187                        this.messages = [];
3188                    };
3189                }
3190            },
3191            getMessageUiId() {
3192                return 'message-' + this.message.type;
3193            }
3194        }
3195    }
3196
3197    window.addEventListener('alpine:init', () => Alpine.data('initMessages', initMessages), {once: true})
3198</script>
3198
3199<section id="messages"
3200         x-data="initMessages"
3201         x-bind="eventListeners"
3202         role="alert"
3203>
3204    <template x-if="hasMessages">
3205        <div class="w-full">
3206            <div class="messages container mx-auto py-3">
3207                <template x-for="(message, index) in messages" :key="index">
3208                    <div>
3209                        <template x-if="hasMessage">
3210                            <div class="message"
3211                                 :class="message.type"
3212                                 :ui-id="getMessageUiId"
3213                            >
3214                                <span x-html="message.text"></span>
3215                                <button
3216                                    type="button"
3217                                    class="text-gray-600 hover:text-black"
3218                                    aria-label="Nachricht schließen"
3219                                    @click.prevent="removeMessage"
3220                                >
3221                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="stroke-current" width="18" height="18" aria-hidden="true">
3222  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/>
3223</svg>
3224                                </button>
3225                            </div>
3226                        </template>
3227                    </div>
3228                </template>
3229            </div>
3230        </div>
3231    </template>
3232</section>
3233</div><div class="columns"><div class="column main"><style>*, ::before, ::after {
3234--tw-border-spacing-x: 0;
3235--tw-border-spacing-y: 0;
3236--tw-translate-x: 0;
3237--tw-translate-y: 0;
3238--tw-rotate: 0;
3239--tw-skew-x: 0;
3240--tw-skew-y: 0;
3241--tw-scale-x: 1;
3242--tw-scale-y: 1;
3243--tw-pan-x:  ;
3244--tw-pan-y:  ;
3245--tw-pinch-zoom:  ;
3246--tw-scroll-snap-strictness: proximity;
3247--tw-gradient-from-position:  ;
3248--tw-gradient-via-position:  ;
3249--tw-gradient-to-position:  ;
3250--tw-ordinal:  ;
3251--tw-slashed-zero:  ;
3252--tw-numeric-figure:  ;
3253--tw-numeric-spacing:  ;
3254--tw-numeric-fraction:  ;
3255--tw-ring-inset:  ;
3256--tw-ring-offset-width: 0px;
3257--tw-ring-offset-color: #fff;
3258--tw-ring-color: rgb(59 130 246 / 0.5);
3259--tw-ring-offset-shadow: 0 0 #0000;
3260--tw-ring-shadow: 0 0 #0000;
3261--tw-shadow: 0 0 #0000;
3262--tw-shadow-colored: 0 0 #0000;
3263--tw-blur:  ;
3264--tw-brightness:  ;
3265--tw-contrast:  ;
3266--tw-grayscale:  ;
3267--tw-hue-rotate:  ;
3268--tw-invert:  ;
3269--tw-saturate:  ;
3270--tw-sepia:  ;
3271--tw-drop-shadow:  ;
3272--tw-backdrop-blur:  ;
3273--tw-backdrop-brightness:  ;
3274--tw-backdrop-contrast:  ;
3275--tw-backdrop-grayscale:  ;
3276--tw-backdrop-hue-rotate:  ;
3277--tw-backdrop-invert:  ;
3278--tw-backdrop-opacity:  ;
3279--tw-backdrop-saturate:  ;
3280--tw-backdrop-sepia:  ;
3281--tw-contain-size:  ;
3282--tw-contain-layout:  ;
3283--tw-contain-paint:  ;
3284--tw-contain-style:  
3285}
3286::backdrop {
3287--tw-border-spacing-x: 0;
3288--tw-border-spacing-y: 0;
3289--tw-translate-x: 0;
3290--tw-translate-y: 0;
3291--tw-rotate: 0;
3292--tw-skew-x: 0;
3293--tw-skew-y: 0;
3294--tw-scale-x: 1;
3295--tw-scale-y: 1;
3296--tw-pan-x:  ;
3297--tw-pan-y:  ;
3298--tw-pinch-zoom:  ;
3299--tw-scroll-snap-strictness: proximity;
3300--tw-gradient-from-position:  ;
3301--tw-gradient-via-position:  ;
3302--tw-gradient-to-position:  ;
3303--tw-ordinal:  ;
3304--tw-slashed-zero:  ;
3305--tw-numeric-figure:  ;
3306--tw-numeric-spacing:  ;
3307--tw-numeric-fraction:  ;
3308--tw-ring-inset:  ;
3309--tw-ring-offset-width: 0px;
3310--tw-ring-offset-color: #fff;
3311--tw-ring-color: rgb(59 130 246 / 0.5);
3312--tw-ring-offset-shadow: 0 0 #0000;
3313--tw-ring-shadow: 0 0 #0000;
3314--tw-shadow: 0 0 #0000;
3315--tw-shadow-colored: 0 0 #0000;
3316--tw-blur:  ;
3317--tw-brightness:  ;
3318--tw-contrast:  ;
3319--tw-grayscale:  ;
3320--tw-hue-rotate:  ;
3321--tw-invert:  ;
3322--tw-saturate:  ;
3323--tw-sepia:  ;
3324--tw-drop-shadow:  ;
3325--tw-backdrop-blur:  ;
3326--tw-backdrop-brightness:  ;
3327--tw-backdrop-contrast:  ;
3328--tw-backdrop-grayscale:  ;
3329--tw-backdrop-hue-rotate:  ;
3330--tw-backdrop-invert:  ;
3331--tw-backdrop-opacity:  ;
3332--tw-backdrop-saturate:  ;
3333--tw-backdrop-sepia:  ;
3334--tw-contain-size:  ;
3335--tw-contain-layout:  ;
3336--tw-contain-paint:  ;
3337--tw-contain-style:  
3338}
3339.cmsp18-block {
3340display: block
3341}
3342.cmsp18-inline {
3343display: inline
3344}</style>
3345<div class="magezon-builder magezon-builder-preload"><div id="Modehaus-BigTeaser" class="bh7cydt mgz-element mgz-element-row modehaus-teaser
3345-page-row full_width_row"><div class="mgz-element-inner bh7cydt-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="nt3kdv0 mgz-element mgz-element-column mgz-col-xs-12"><div class="mgz-element-inner nt3kdv0-s"><div class="kkge6cb mgz-element mgz-child mgz-element-slider"><div class="mgz-element-inner kkge6cb-s"><div id="17902541916ab51c6fe3021" class="mgz-carousel owl-carousel mgz-carousel-dot-inside mgz-carousel-nav-position-top_split mgz-carousel-nav-size-normal" data-slider_height="690"><div id="kkge6cb-slider-item0" class="item mgz-carousel-item " data-src="https://www.mode-jost.de/media/wysiwyg/Header/Mode-2026-HW/Damen/Trends/Jost-Webseite-Contentwechsel-Bilder-Damen-Trends-Header.jpg" style="background-image:url(https://www.mode-jost.de/media/wysiwyg/Header/Mode-2026-HW/Damen/Trends/Jost-Webseite-Contentwechsel-Bilder-Damen-Trends-Header.jpg)"><a href="/mode/damen/damen-trends" class="overlay-link" title="Mode Damen" ></a> <div class="slide-background slide-background-image"></div></div><div id="kkge6cb-slider-item1" class="item mgz-carousel-item " data-src="https://www.mode-jost.de/media/wysiwyg/Header/Mode-2026-HW/Herren/Trends/Jost-Webseite-Contentwechsel-Bilder-Herren-Trends-Header.jpg" style="background-image:url(https://www.mode-jost.de/media/wysiwyg/Header/Mode-2026-HW/Herren/Trends/Jost-Webseite-Contentwechsel-Bilder-Herren-Trends-Header.jpg)"><a href="/mode/herren/herren-trends" class="overlay-link" title="Mode Herren" ></a> <div class="slide-background slide-background-image"></div></div><div id="kkge6cb-slider-item2" class="item mgz-carousel-item " data-src="https://www.mode-jost.de/media/wysiwyg/Header/Mode-2026-HW/Kinder/Jost-Webseite-Contentwechsel-Bilder-Kinder-Trends-Header.jpg" style="background-image:url(https://www.mode-jost.de/media/wysiwyg/Header/Mode-2026-HW/Kinder/Jost-Webseite-Contentwechsel-Bilder-Kinder-Trends-Header.jpg)"><a href="/mode/kinder/kinder-trends" class="overlay-link" title="Kinder Trends" ></a> <div class="slide-background slide-background-image"></div></div><div id="kkge6cb-slider-item3" class="item mgz-carousel-item " data-src="https://www.mode-jost.de/media/wysiwyg/Header/Mode-2026-HW/Damen/Junge-Mode/Jost-Webseite-Contentwechsel-Bilder-WomenYoungFashion-Header4.jpg" style="background-image:url(https://www.mode-jost.de/media/wysiwyg/Header/Mode-2026-HW/Damen/Junge-Mode/Jost-Webseite-Contentwechsel-Bilder-WomenYoungFashion-Header4.jpg)"><a href="/mode/damen/young-fashion" class="overlay-link" title="Young Fashion Damen" ></a> <div class="slide-background slide-background-image"></div></div><div id="kkge6cb-slider-item4" class="item mgz-carousel-item " data-src="https://www.mode-jost.de/media/wysiwyg/Header/Mode-2026-HW/Herren/Junge-Mode/Jost-Webseite-Contentwechsel-Bilder-MenYoungFashion-Header4.jpg" style="background-image:url(https://www.mode-jost.de/media/wysiwyg/Header/Mode-2026-HW/Herren/Junge-Mode/Jost-Webseite-Contentwechsel-Bilder-MenYoungFashion-Header4.jpg)"><a href="/mode/herren/young-fashion" class="overlay-link" title="Young Fashion Herren" ></a> <div class="slide-background slide-background-image"></div></div><div id="kkge6cb-slider-item5" class="item mgz-carousel-item " data-src="https://www.mode-jost.de/media/wysiwyg/Header/Mode-2026-HW/Damen/Schuhe/Jost-Webseite-Contentwechsel-Damen-Schuhe-Header.jpg" style="background-image:url(https://www.mode-jost.de/media/wysiwyg/Header/Mode-2026-HW/Damen/Schuhe/Jost-Webseite-Contentwechsel-Damen-Schuhe-Header.jpg)"><a href="/mode/damen/schuhe" class="overlay-link" title="Schuhe Damen" ></a> <div class="slide-background slide-background-image"></div></div><div id="kkge6cb-slider-item6" class="item mgz-carousel-item " data-src="https://www.mode-jost.de/media/wysiwyg/Header/Mode-2026-HW/Herren/Schuhe/Jost-Webseite-Contentwechsel-Bilder-Herren-Schuhe-Header2.jpg" style="background-image:url(https://www.mode-jost.de/media/wysiwyg/Header/Mode-2026-HW/Herren/Schuhe/Jost-Webseite-Contentwechsel-Bilder-Herren-Schuhe-Header2.jpg)"><a href="/mode/herren/schuhe" class="overlay-link" title="Schuhe Herren" ></a> <div class="slide-background slide-background-image"></div></div><div id="kkge6cb-slider-item7" class="item mgz-carousel-item " data-src="https://www.mode-jost.de/media/wysiwyg/Header/Mode-2026-HW/Damen/Waesche/Jost-Webseite-Contentwechsel-Bilder-Nachtwaesche-Damen-Header2.jpg" style="background-image:url(https://www.mode-jost.de/media/wysiwyg/Header/Mode-2026-HW/Damen/Waesche/Jost-Webseite-Contentwechsel-Bilder-Nachtwaesche-Damen-Header2.jpg)"><a href="/mode/waesche-bade/tag-und-nachtwaesche-damen" class="overlay-link" title="Nachtwu00e4sche Damen" ></a> <div class="slide-background slide-background-image"></div></div><div id="kkge6cb-slider-item8" class="item mgz-carousel-item " data-src="https://www.mode-jost.de/media/wysiwyg/Header/Mode-2026-FS/
3345Damen/Bademode/Jost-Webseite-Contentwechsel-Bilder-Damen-Bademode-Header-Aubade.jpg" style="background-image:url(https://www.mode-jost.de/media/wysiwyg/Header/Mode-2026-FS/Damen/Bademode/Jost-Webseite-Contentwechsel-Bilder-Damen-Bademode-Header-Aubade.jpg)"><a href="/mode/waesche-bade/damen-bademode" class="overlay-link" title="Bademode Damen" ></a> <div class="slide-background slide-background-image"></div></div><div id="kkge6cb-slider-item9" class="item mgz-carousel-item " data-src="https://www.mode-jost.de/media/wysiwyg/Header/Mode-2026-HW/Herren/Waesche/Jost-Webseite-Contentwechsel-HW-2026-Bilder-Nachtwaesche-Herren-Header3.jpg" style="background-image:url(https://www.mode-jost.de/media/wysiwyg/Header/Mode-2026-HW/Herren/Waesche/Jost-Webseite-Contentwechsel-HW-2026-Bilder-Nachtwaesche-Herren-Header3.jpg)"><a href="/mode/waesche-bade/tag-und-nachtwaesche-herren" class="overlay-link" title="Tag- und Nachtwu00e4sche Herren" ></a> <div class="slide-background slide-background-image"></div></div><div id="kkge6cb-slider-item10" class="item mgz-carousel-item " data-src="https://www.mode-jost.de/media/wysiwyg/Header/Mode-2026-FS/Herren/Bademode/Jost-Webseite-Contentwechsel-Bilder-Herren-Bademode-Header-Schiesser.jpg" style="background-image:url(https://www.mode-jost.de/media/wysiwyg/Header/Mode-2026-FS/Herren/Bademode/Jost-Webseite-Contentwechsel-Bilder-Herren-Bademode-Header-Schiesser.jpg)"><a href="/mode/waesche-bade/herren-bademode" class="overlay-link" title="Herren Bademode" ></a> <div class="slide-background slide-background-image"></div></div></div>
3345<script>
3346    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
3347        .then(() => {
3348            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_Core/js/owl.carousel.min.js', 'carousel');
3349        })
3350        .then(() => {
3351            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/slider.min.js', 'slider');
3352        })
3353        .then(() => {
3354			$(document).ready(function() {
3355				setTimeout(function() {
3356					$('#17902541916ab51c6fe3021').trigger('destroy.owl.carousel');
3357					$('#17902541916ab51c6fe3021').slider({"nav":false,"dots":false,"autoplayHoverPause":true,"autoplay":true,"autoplayTimeout":"5000","lazyLoad":true,"loop":true,"margin":0,"autoHeight":false,"rtl":false,"center":false,"slideBy":1,"animateIn":"","animateOut":"","stagePadding":0});
3358				}, 500);
3359			});
3360        })
3361</script>
3361</div></div></div></div></div>
3361<script>
3362    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
3363        .then(() => {
3364            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
3365        })
3366        .then(() => {
3367            const elemId = $('.bh7cydt');
3368            let mgzBuilder = new MagezonBuilder(elemId);
3369        })
3370</script>
3370</div></div><div class="k5t1l91 mgz-element mgz-element-row contained mgz-container mgz-row-equal-height content-middle"><div class="mgz-element-inner k5t1l91-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content "><div class="enmcybr mgz-element mgz-element-column mgz-col-md-12 mgz-row-gap-margin"><div class="mgz-element-inner enmcybr-s"><div class="ndh1159 mgz-element mgz-child mgz-element-text"><div class="mgz-element-inner ndh1159-s"><h1>Mode Jost</h1><h2 class="p1"><span class="s1">Für Ihren stilvollen Auftritt</span></h2><p class="p1"><span class="s1">Stil beweisen – das ist für Mode Jost nicht nur der wichtigste Anspruch bei der Auswahl unserer Kollektionen. Wir finden: Hochwertige Mode sollte auch in einem stilvollen, einzigartigen Ambiente zur Geltung kommen. Genau das bieten wir unseren Kunden in unseren fünf Filialen: ein erfüllendes Einkaufserlebnis in entspannter Atmosphäre. </span></p><p class="p1"><span class="s1">Wir möchten, dass Sie sich bei uns wohlfühlen. Denn Mode ist unsere große Leidenschaft – und das seit unserer Gründung im Jahr 1892. Das Herzstück unseres inhabergeführten Modehauses ist unser motiviertes Team aus über 300 Mitarbeitern. Unsere Fachkräfte stehen Ihnen jederzeit für eine professionelle und stilsichere Beratung zur Verfügung. Bei Mode Jost sind Ehrlichkeit, Vertrauen und gegenseitige Wertschätzung die wichtigste Basis – sowohl im Kundenkontakt wie auch untereinander. Der Mensch steht bei uns im Vordergrund, als Kunde und als Mitarbeiter. </span></p><p class="p1"><span class="s1">Unser Sortiment umfasst <a href="https://mode-jost.de/mode/damen">Damen-</a>, <a href="https://mode-jost.de/mode/herren">Herren-</a> und <a href="https://mode-jost.de/mode/kinder">Kindermode</a> zahlreicher bekannter Marken. Dank saisonal wechselnder Kollektionen wartet bei jedem Besuch in unseren großzügig geschnittenen Filialen neue Trendmode auf stilbewusste Kunden. Wir freuen uns darauf, Sie in unserem Modehaus begrüßen zu dürfen!</span></p></div></div></div></div></div>
3370<script>
3371    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
3372        .then(() => {
3373            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
3374        })
3375        .then(() => {
3376            const elemId = $('.k5t1l91');
3377            let mgzBuilder = new MagezonBuilder(elemId);
3378        })
3379</script>
3379</div></div><div class="rbecd04 mgz-element mgz-element-row modehaus-teaser-page-row full_width_row mgz-row-equal-height content-middle"><div class="mgz-element-inner rbecd04-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="dd5y50s mgz-element mgz-element-column mgz-col-md-3 mgz-row-gap-margin"><div class="mgz-element-inner dd5y50s-s"><div class="crgxcif mgz-element mgz-child mgz-element-single_image mgz-image-hovers"><div class="mgz-element-inner crgxcif-s"><div class="mgz-single-image-wrapper"><div class="mgz-single-image-inner 8493e19 mgz-flex-position-bottom-center hover-type-zoomin mgz-image-link" x-data="{ currentSrc: 'https://www.mode-jost.de/media/wysiwyg/Teaser-Unterseiten/2026HW/Jost-Webseite-Contentwechsel-Bilder-Damen-Trends-Teaser.jpg', originalSrc: 'https://www.mode-jost.de/media/wysiwyg/Teaser-Unterseiten/2026HW/Jost-Webseite-Contentwechsel-Bilder-Damen-Trends-Teaser.jpg', hoverImage: '', handleHover() { if (this.hoverImage) { this.currentSrc = this.hoverImage; } }, handleLeave() { if (this.hoverImage) { this.currentSrc = this.originalSrc; } } }" @mouseenter="handleHover()" @mouseleave="handleLeave()" ><a class="" href="/mode" data-type="image" data-title="Mode" data-zoom="1" ><img class="mgz-hover-main" src="https://www.mode-jost.de/media/wysiwyg/Teaser-Unterseiten/2026HW/Jost-Webseite-Contentwechsel-Bilder-Damen-Trends-Teaser.jpg" :src="currentSrc" alt="Modehaus Jost | Mode" title="Mode"/></a> <div class="image-content"><div class="image-title">Mode</div></div></div></div></div></div><div class="uxn4t2d mgz-element mgz-child mgz-element-single_image mgz-image-hovers"><div class="mgz-element-inner uxn4t2d-s"><div class="mgz-single-image-wrapper"><div class="mgz-single-image-inner d1b3eac mgz-flex-position-bottom-center hover-type-zoomin mgz-image-link" x-data="{ currentSrc: 'https://www.mode-jost.de/media/wysiwyg/Teaser-Unterseiten/unternehmen-teaser.jpg', originalSrc: 'https://www.mode-jost.de/media/wysiwyg/Teaser-Unterseiten/unternehmen-teaser.jpg', hoverImage: '', handleHover() { if (this.hoverImage) { this.currentSrc = this.hoverImage; } }, handleLeave() { if (this.hoverImage) { this.currentSrc = this.originalSrc; } } }" @mouseenter="handleHover()" @mouseleave="handleLeave()" ><a class="" href="https://www.mode-jost.de/unternehmen" data-type="image" data-title="Unternehmen" data-zoom="1" ><img class="mgz-hover-main" src="https://www.mode-jost.de/media/wysiwyg/Teaser-Unterseiten/unternehmen-teaser.jpg" :src="currentSrc" alt="Modehaus Jost | Unternehmen" title="Unternehmen"/></a> <div class="image-content"><div class="image-title">Unternehmen</div></div></div></div></div></div></div></div><div class="nqx1tbq mgz-element mgz-element-column mgz-col-md-3 mgz-row-gap-margin"><div class="mgz-element-inner nqx1tbq-s"><div class="kxaicg9 mgz-element mgz-child mgz-element-single_image mgz-image-hovers"><div class="mgz-element-inner kxaicg9-s"><div class="mgz-single-image-wrapper"><div class="mgz-single-image-inner 8bdb90e mgz-flex-position-bottom-center hover-type-zoomin mgz-image-link" x-data="{ currentSrc: 'https://www.mode-jost.de/media/wysiwyg/Teaser-Unterseiten/filialen-teaser.jpg', originalSrc: 'https://www.mode-jost.de/media/wysiwyg/Teaser-Unterseiten/filialen-teaser.jpg', hoverImage: '', handleHover() { if (this.hoverImage) { this.currentSrc = this.hoverImage; } }, handleLeave() { if (this.hoverImage) { this.currentSrc = this.originalSrc; } } }" @mouseenter="handleHover()" @mouseleave="handleLeave()" ><a class="" href="https://www.mode-jost.de/filialen" data-type="image" data-title="Filialen" data-zoom="1" ><img class="mgz-hover-main" src="https://www.mode-jost.de/media/wysiwyg/Teaser-Unterseiten/filialen-teaser.jpg" :src="currentSrc" alt="Modehaus Jost | Filialen" title="Filialen"/></a> <div class="image-content"><div class="image-title">Filialen</div></div></div></div></div></div><div class="n3atxmv mgz-element mgz-child mgz-element-single_image mgz-image-hovers"><div class="mgz-element-inner n3atxmv-s"><div class="mgz-single-image-wrapper"><div class="mgz-single-image-inner 2fac1e7 mgz-flex-position-bottom-center hover-type-zoomin mgz-image-link" x-data="{ currentSrc: 'https://www.mode-jost.de/media/wysiwyg/Teaser-Unterseiten/job-und-ausbildung-teaser.jpg', originalSrc: 'https://www.mode-jost.de/media/wysiwyg/Teaser-Unterseiten/job-und-ausbildung-teaser.jpg', hoverImage: '', handleHover() { if (this.hoverImage) { this.currentSrc = this.hoverImage; } }, handleLeave() { if (this.hoverImage) { this.currentSrc = this.originalSrc; } } }" @mouseenter="handleHover()" @mouseleave="handleLeave()" ><a class="" href="https://www.mode-jost.de/job-und-ausbildung" data-type="image" data-title="Job & Ausbildung" data-zoom="1" ><img class="mgz-hover-main" src="https://www.mode-jost.de/media/wysiwyg/Teaser-Unterseiten/job-und-ausbildung-teaser.jpg" :src="currentSrc" alt="Modehaus Jost | Job & Ausbildung" title="Job &amp; Ausbildung"/></a> <div class="image-content"><div class="image-title">Job & Ausbildung</div></div></div></div></div></div></div></div><div class="vj9j2ve mgz-element mgz-element-column mgz-col-md-3 mgz-row-gap-margin"><div class="mgz-element-inner vj9j2ve-s"><div class="ixd5jby mgz-element mgz-child mgz-element-single_image mgz-image-hovers"><div class="mgz-element-inner ixd5jby-s"><div class="mgz-single-image-wrapper"><div class="mgz-single-image-inner e81ad63 mgz-flex-position-bottom-center hover-type-zoomin mgz-image-link" x-data="{ currentSrc: 'https://www.mode-jost.de/media/wysiwyg/Teaser-Unterseiten/aktuelles-teaser.jpg', originalSrc: 'https://www.mode-jost.de/media/wysiwyg/Teaser-Unterseiten/aktuelles-teaser.jpg', hoverImage: '', handleHover() { if (this.hoverImage) { this.currentSrc = this.hoverImage; } }, handleLeave() { if (this.hoverImage) { this.currentSrc = this.originalSrc; } } }" @mouseenter="handleHover()" @mouseleave="handleLeave()" ><a class="" href="https://www.mode-jost.de/aktuelles" data-type="image" data-title="Aktuelles" data-zoom="1" ><img class="mgz-hover-main" src="https://www.mode-jost.de/media/wysiwyg/Teaser-Unterseiten/aktuelles-teaser.jpg" :src="currentSrc" alt="Modehaus Jost | Aktuelles" title="Aktuelles"/></a> <div class="image-content"><div class="image-title">Aktuelles</div></div></div></div></div></div><div class="f9qmmxj mgz-element mgz-child mgz-element-single_image mgz-image-hovers"><div class="mgz-element-inner f9qmmxj-s"><div class="mgz-single-image-wrapper"><div class="mgz-single-image-inner 82f25ec mgz-flex-position-bottom-center hover-type-zoomin mgz-image-link" x-data="{ currentSrc: 'https://www.mode-jost.de/media/wysiwyg/Teaser-Unterseiten/azubi-webseite.jpg', originalSrc: 'https://www.mode-jost.de/media/wysiwyg/Teaser-Unterseiten/azubi-webseite.jpg', hoverImage: '', handleHover() { if (this.hoverImage) { this.currentSrc = this.hoverImage; } }, handleLeave() { if (this.hoverImage) { this.currentSrc = this.originalSrc; } } }" @mouseenter="handleHover()" @mouseleave="handleLeave()" ><a class="" href="https://azubi.mode-jost.de/startseite/" data-type="image" data-title="Ausbildung bei Jost" data-zoom="1" target="_blank" ><img class="mgz-hover-main" src="https://www.mode-jost.de/media/wysiwyg/Teaser-Unterseiten/azubi-webseite.jpg" :src="currentSrc" alt="Modehaus Jost | Ausbildung" title="Ausbildung bei Jost"/></a> <div class="image-content"><div class="image-title">Ausbildung bei Jost</div></div></div></div></div></div></div></div><div class="fppo318 mgz-element mgz-element-column mgz-col-md-3 mgz-row-gap-margin"><div class="mgz-element-inner fppo318-s"><div class="gf644nr mgz-element mgz-child mgz-element-single_image mgz-image-hovers"><div class="mgz-element-inner gf644nr-s"><div class="mgz-single-image-wrapper"><div class="mgz-single-image-inner 93fe622 mgz-flex-position-bottom-center hover-type-zoomin mgz-image-link" x-data="{ currentSrc: 'https://www.mode-jost.de/media/wysiwyg/Teaser-Unterseiten/service-teaser.jpg', originalSrc: 'https://www.mode-jost.de/media/wysiwyg/Teaser-Unterseiten/service-teaser.jpg', hoverImage: '', handleHover() { if (this.hoverImage) { this.currentSrc = this.hoverImage; } }, handleLeave() { if (this.hoverImage) { this.currentSrc = this.originalSrc; } } }" @mouseenter="handleHover()" @mouseleave="handleLeave()" ><a class="" href="https://www.mode-jost.de/service" data-type="image" data-title="Service" data-zoom="1" ><img class="mgz-hover-main" src="https://www.mode-jost.de/media/wysiwyg/Teaser-Unterseiten/service-teaser.jpg" :src="currentSrc" alt="Modehaus Jost | Service" title="Service"/></a> <div class="image-content"><div class="image-title">Service</div></div></div></div></div></div><div class="ld114oc mgz-element mgz-child mgz-element-single_image mgz-image-hovers"><div class="mgz-element-inner ld114oc-s"><div class="mgz-single-image-wrapper"><div class="mgz-single-image-inner b7a927d mgz-flex-position-bottom-center hover-type-zoomin mgz-image-link" x-data="{ currentSrc: 'https://www.mode-jost.de/media/wysiwyg/Teaser-Unterseiten/Jost-geschenkgutschein-hauptteil-v2.jpg', originalSrc: 'https://www.mode-jost.de/media/wysiwyg/Teaser-Unterseiten/Jost-geschenkgutschein-hauptteil-v2.jpg', hoverImage: '', handleHover() { if (this.hoverImage) { this.currentSrc = this.hoverImage; } }, handleLeave() { if (this.hoverImage) { this.currentSrc = this.originalSrc; } } }" @mouseenter="handleHover()" @mouseleave="handleLeave()" ><a class="" href="https://jost.modehaus.de/gutscheine" data-type="image" data-title="Geschenkgutschein" data-zoom="1" ><img class="mgz-hover-main" src="https://www.mode-jost.de/media/wysiwyg/Teaser-Unterseiten/Jost-geschenkgutschein-hauptteil-v2.jpg" :src="currentSrc" alt="Modehaus Jost | Geschenkgutschein" title="Geschenkgutschein"/></a> <div class="image-content"><div class="image-title">Geschenkgutschein</div></div></div></div></div></div></div></div></div>
3379<script>
3380    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
3381        .then(() => {
3382            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
3383        })
3384        .then(() => {
3385            const elemId = $('.rbecd04');
3386            let mgzBuilder = new MagezonBuilder(elemId);
3387        })
3388</script>
3388</div></div><div class="mo2vdm1 mgz-element mgz-element-row full_width_row"><div class="mgz-element-inner mo2vdm1-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="dmk9wr6 mgz-element mgz-element-column mgz-col-xs-12"><div class="mgz-element-inner dmk9wr6-s"><div class="a8u5k0u mgz-element mgz-child mgz-element-static_block"><div class="mgz-element-inner a8u5k0u-s"><style>*, ::before, ::after { --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / 0.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: } ::backdrop { --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-gradient-from-position: ; --tw-gradient-via-position: ; --tw-gradient-to-position: ; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgb(59 130 246 / 0.5); --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-shadow-colored: 0 0 #0000; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; --tw-contain-size: ; --tw-contain-layout: ; --tw-contain-paint: ; --tw-contain-style: }</style><div class="magezon-builder magezon-builder-preload"><div id="marken_slider" class="gni5fni mgz-element mgz-element-row modehaus-marken-karussel full_width_row"><div class="mgz-element-inner gni5fni-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="ojc62w1 mgz-element mgz-element-column mgz-col-xs-12"><div class="mgz-element-inner ojc62w1-s"><div id="marken_slider" class="atesiee mgz-element mgz-child mgz-element-image_carousel modehaus-marken-karussel mgz-element-title-align-center"><div class="mgz-element-inner atesiee-s"><div class="mgz-block"><div class="mgz-block-content"><div id="17902541916ab51c6fe47cb" class="mgz-carousel mgz-image-hovers owl-carousel mgz-carousel-nav-position-center_split mgz-carousel-nav-size-small image-content-mid
3388dle-center" data-type="gallery"><div class="item mgz-carousel-item "><div class="item-inner mgz-flex-position-middle-center"><img class="owl-item-image owl-lazy" data-src="https://www.mode-jost.de/media/wysiwyg/Marken/sw/Marc-Cain.png" src="" alt=""/></div></div><div class="item mgz-carousel-item "><div class="item-inner mgz-flex-position-middle-center"><img class="owl-item-image owl-lazy" data-src="https://www.mode-jost.de/media/wysiwyg/Marken/sw/Boss.png" src="" alt=""/></div></div><div class="item mgz-carousel-item "><div class="item-inner mgz-flex-position-middle-center"><img class="owl-item-image owl-lazy" data-src="https://www.mode-jost.de/media/wysiwyg/Marken/sw/Marie-Jo_1.png" src="" alt=""/></div></div><div class="item mgz-carousel-item "><div class="item-inner mgz-flex-position-middle-center"><img class="owl-item-image owl-lazy" data-src="https://www.mode-jost.de/media/wysiwyg/Marken/sw/Tommy-Jeans.png" src="" alt=""/></div></div><div class="item mgz-carousel-item "><div class="item-inner mgz-flex-position-middle-center"><img class="owl-item-image owl-lazy" data-src="https://www.mode-jost.de/media/wysiwyg/Marken/sw/DrMartens.png" src="" alt=""/></div></div><div class="item mgz-carousel-item "><div class="item-inner mgz-flex-position-middle-center"><img class="owl-item-image owl-lazy" data-src="https://www.mode-jost.de/media/wysiwyg/Marken/sw/Topshop.png" src="" alt=""/></div></div><div class="item mgz-carousel-item "><div class="item-inner mgz-flex-position-middle-center"><img class="owl-item-image owl-lazy" data-src="https://www.mode-jost.de/media/wysiwyg/Marken/sw/New-Balance.png" src="" alt=""/></div></div><div class="item mgz-carousel-item "><div class="item-inner mgz-flex-position-middle-center"><img class="owl-item-image owl-lazy" data-src="https://www.mode-jost.de/media/wysiwyg/Marken/sw/Name-it.png" src="" alt=""/></div></div><div class="item mgz-carousel-item "><div class="item-inner mgz-flex-position-middle-center"><img class="owl-item-image owl-lazy" data-src="https://www.mode-jost.de/media/wysiwyg/Marken/sw/Mey.png" src="" alt=""/></div></div><div class="item mgz-carousel-item "><div class="item-inner mgz-flex-position-middle-center"><img class="owl-item-image owl-lazy" data-src="https://www.mode-jost.de/media/wysiwyg/Marken/sw/Hilfiger.png" src="" alt=""/></div></div><div class="item mgz-carousel-item "><div class="item-inner mgz-flex-position-middle-center"><img class="owl-item-image owl-lazy" data-src="https://www.mode-jost.de/media/wysiwyg/Marken/sw/Camel-Active.png" src="" alt=""/></div></div></div>
3388<script>
3389            loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
3390                .then(() => {
3391                    return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_Core/js/owl.carousel.min.js', 'carousel');
3392                })
3393                .then(() => {
3394                    return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/carousel.min.js', 'image-carousel');
3395                })
3396                .then(() => {
3397					$(document).ready(function() {
3398						setTimeout(function() {
3399                    		$('#17902541916ab51c6fe47cb').trigger('destroy.owl.carousel');
3400							$('#17902541916ab51c6fe47cb').carousel({"item_xl":"5","item_lg":"4","item_md":"3","item_sm":"2","item_xs":"1","nav":false,"dots":false,"autoplayHoverPause":false,"autoplay":true,"autoplayTimeout":"3000","lazyLoad":true,"loop":true,"margin":10,"autoHeight":true,"rtl":false,"center":false,"slideBy":"1","animateIn":"","animateOut":"","stagePadding":0});
3401						}, 500);
3402					});
3403                })
3404        </script>
3404</div></div></div></div></div></div></div>
3404<script>
3405    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
3406        .then(() => {
3407            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
3408        })
3409        .then(() => {
3410            const elemId = $('.gni5fni');
3411            let mgzBuilder = new MagezonBuilder(elemId);
3412        })
3413</script>
3413</div></div></div></div></div></div></div></div>
3413<script>
3414    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
3415        .then(() => {
3416            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
3417        })
3418        .then(() => {
3419            const elemId = $('.mo2vdm1');
3420            let mgzBuilder = new MagezonBuilder(elemId);
3421        })
3422</script>
3422</div></div><div id="marken_slider" class="g6c7grg mgz-element mgz-element-row modehaus-marken-karussel full_width_row"><div class="mgz-element-inner g6c7grg-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="j3c4x8i mgz-element mgz-element-column mgz-col-xs-12"><div class="mgz-element-inner j3c4x8i-s"><div class="ugqvjke mgz-element mgz-child mgz-element-product_slider modehaus-teaser-product-slider mgz-element-title-align-center mgz-product-listing"><div class="mgz-element-inner ugqvjke-s"><div class="mgz-block"><div class="mgz-block-content"><div id="17902541436ab51c3fe97fe" class="mgz-carousel owl-carousel mgz-product-items mgz-carousel-nav-position-center_split mgz-carousel-nav-size-normal"><div class="item product product-item "><form method="post" action="https://www.mode-jost.de/checkout/cart/add/uenc/aHR0cHM6Ly93d3cubW9kZS1qb3N0LmRlLw~~/product/228768/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " ><input type="hidden" name="product" value="228768"/><a href="https://www.mode-jost.de/gutschein-happy-birthday.html" class="product photo product-item-photo block mx-auto mb-3 " tabindex="-1" ><img class="no-data hover:shadow-sm object-contain product-image-photo" x-data="{ defaultSrc: 'https://www.mode-jost.de/media/catalog/product/cache/67ee89799642c567a71fc92f3699d937/j/o/jost-geschenkgutschein-produktbilder9.jpg', remoteImage: 'https://www.mode-jost.de/media/catalog/product/cache/67ee89799642c567a71fc92f3699d937/j/o/jost-geschenkgutschein-produktbilder9.jpg', preloadedImage: {}, init() { if (this.remoteImage) { const img = new Image(); img.src = this.remoteImage; this.preloadedImage = img; } }, hoverImage() { return this.preloadedImage.src; }, resetImage() { return this.defaultSrc; } }" @update-gallery-228768.window="$root.src = $event.detail" @mouseenter="$event.target.src = hoverImage()" @mouseleave="$event.target.src = resetImage()" loading="eager" fetchpriority="high" src="https://www.mode-jost.de/media/catalog/product/cache/67ee89799642c567a71fc92f3699d937/j/o/jost-geschenkgutschein-produktbilder9.jpg" width="360" height="360" alt="Gutschein&#x20;Happy&#x20;Birthday" title="Gutschein&#x20;Happy&#x20;Birthday" /><style type="text/css"> .column.main button#mh-wishlist-icon { display: none; } </style></a> <div class="product-info flex flex-col grow p-2"><div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center truncate "><a class="product-item-link" href="https://www.mode-jost.de/gutschein-happy-birthday.html"> Gutschein Happy Birthday </a> </div>
3422<script>
3423                                    function initPriceBox__6ab51c3fe5091() {
3424                                        return {
3425                                            updatePrice(priceData) {
3426                                                const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
3427                                                const regularPriceElement = this.$root.querySelector('.normal-price [data-price-type=finalPrice].price-wrapper .price');
3428                                                const basePriceElement = this.$root.querySelector('.normal-price [data-price-type=basePrice].price-wrapper .price');
3429                                                if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
3430                                                    regularPriceLabel.classList.add('hidden');
3431                                                } else {
3432                                                    regularPriceLabel.classList.remove('hidden');
3433                                                }
3434                                                regularPriceElement && (regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount));
3435                                                basePriceElement && (basePriceElement.innerText = hyva.formatPrice(priceData.basePrice.amount));
3436                                            }
3437                                        }
3438                                    }
3439                                </script>
3439<div class="pt-1 text-gray-900" x-data="initPriceBox__6ab51c3fe5091()" @update-prices-228768.window="updatePrice($event.detail);" ><div class="price-box price-final_price" data-role="priceBox" data-product-id="228768" data-price-box="product-id-228768"><div x-data="dataFinalPriceGiftCard_228768()" x-init="initFinalPriceGiftCard_228768()" x-bind="eventListeners" x-spread="eventListeners" ><template x-if="canShowBlock && customMinAmountCategory && !finalPrice"><div class="flex flex-col"><div class="from-price inline-block mb-2"><span class="price-label xxxx block"> Ab </span> <span id="product-price-228768-from" class="price-wrapper title-font font-medium text-2xl text-gray-900" ><span class="price" x-html="hyva.formatPrice(customMinAmountCategory)"></span> </span> </div></div></template><template x-if="finalPrice || customMaxAmount"><div><template x-if="!finalPrice && customMaxAmount && !customMinAmountCategory"><div class="flex gap-2"><div class="from-price inline-block mb-2"><span class="price-label yyyy block"><!-- Ab --></span> <span id="product-price-228768-from" class="price-wrapper title-font font-medium text-base text-gray-900" ><span class="price" x-html="hyva.formatPrice(customMinAmount)"></span> </span> </div><div class="to-price inline-block"><span class="price-label block"><!-- Bis --></span> <span id="product-price-228768-from" class="price-wrapper title-font font-medium text-base text-gray-900" ><span class="price" x-html="hyva.formatPrice(customMaxAmount)"></span> </span> </div></div></template><template x-if="finalPrice || !customMaxAmount"><div class="final-price inline-block"><span id="product-price-228768" class="price-wrapper title-font font-medium text-base text-gray-900" ><span class="price" x-html="hyva.formatPrice(finalPrice)"></span> </span> </div></template></div></template></div>
3439<script>
3440    'use strict';
3441
3442    function dataFinalPriceGiftCard_228768() {
3443        return {
3444            prices: [{"value":10,"convertValue":10,"price":"10,00\u00a0\u20ac"},{"value":20,"convertValue":20,"price":"20,00\u00a0\u20ac"},{"value":50,"convertValue":50,"price":"50,00\u00a0\u20ac"},{"value":100,"convertValue":100,"price":"100,00\u00a0\u20ac"}],
3445            customMinAmount: 0 || 1,             customMaxAmount: 0,             customMinAmountCategory: 10,             finalPrice: 0,             canShowBlock: 1,
3446            isOpenAmount: '1',
3447
3448            initFinalPriceGiftCard_228768() {
3449                if (!this.isOpenAmount && this.prices.length > 1) {
3450                    this.customMinAmount = this.prices[0].convertValue;
3451                    this.customMaxAmount = this.prices[this.prices.length - 1].convertValue;
3452                }
3453
3454                if (this.isOpenAmount && this.prices.length > 1) {
3455                    if (this.customMinAmount > this.prices[0].convertValue) {
3456                        this.customMinAmount = this.prices[0].convertValue;
3457                    }
3458
3459                    if (this.customMaxAmount < this.prices[this.prices.length - 1].convertValue) {
3460                        this.customMaxAmount = this.prices[this.prices.length - 1].convertValue;
3461                    }
3462                }
3463            },
3464
3465            eventListeners: {
3466                ['@mhgiftcard-update-price.window'](event) {
3467                    this.finalPrice = event.detail;
3468                },
3469            }
3470        }
3471    }
3472</script>
3472<style type="text/css"> .category-gutscheine button.items-center.wishlists_mh_icon { display: none; } </style></div></div><div class="mt-auto pt-3 flex flex-wrap justify-center items-center"></div></div></form></div><div class="item product product-item "><form method="post" action="https://www.mode-jost.de/checkout/cart/add/uenc/aHR0cHM6Ly93d3cubW9kZS1qb3N0LmRlLw~~/product/228764/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " ><input type="hidden" name="product" value="228764"/><a href="https://www.mode-jost.de/gutschein-herzlichen-gluckwunsch.html" class="product photo product-item-photo block mx-auto mb-3 " tabindex="-1" ><img class="no-data hover:shadow-sm object-contain product-image-photo" x-data="{ defaultSrc: 'https://www.mode-jost.de/media/catalog/product/cache/67ee89799642c567a71fc92f3699d937/j/o/jost-geschenkgutschein-produktbilder5.jpg', remoteImage: 'https://www.mode-jost.de/media/catalog/product/cache/67ee89799642c567a71fc92f3699d937/j/o/jost-geschenkgutschein-produktbilder5.jpg', preloadedImage: {}, init() { if (this.remoteImage) { const img = new Image(); img.src = this.remoteImage; this.preloadedImage = img; } }, hoverImage() { return this.preloadedImage.src; }, resetImage() { return this.defaultSrc; } }" @update-gallery-228764.window="$root.src = $event.detail" @mouseenter="$event.target.src = hoverImage()" @mouseleave="$event.target.src = resetImage()" loading="eager" fetchpriority="high" src="https://www.mode-jost.de/media/catalog/product/cache/67ee89799642c567a71fc92f3699d937/j/o/jost-geschenkgutschein-produktbilder5.jpg" width="360" height="360" alt="Gutschein&#x20;Herzlichen&#x20;Gl&#xFC;ckwunsch" title="Gutschein&#x20;Herzlichen&#x20;Gl&#xFC;ckwunsch" /><style type="text/css"> .column.main button#mh-wishlist-icon { display: none; } </style></a> <div class="product-info flex flex-col grow p-2"><div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center truncate "><a class="product-item-link" href="https://www.mode-jost.de/gutschein-herzlichen-gluckwunsch.html"> Gutschein Herzlichen Glückwunsch </a> </div>
3472<script>
3473                                    function initPriceBox__6ab51c3fe5091() {
3474                                        return {
3475                                            updatePrice(priceData) {
3476                                                const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
3477                                                const regularPriceElement = this.$root.querySelector('.normal-price [data-price-type=finalPrice].price-wrapper .price');
3478                                                const basePriceElement = this.$root.querySelector('.normal-price [data-price-type=basePrice].price-wrapper .price');
3479                                                if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
3480                                                    regularPriceLabel.classList.add('hidden');
3481                                                } else {
3482                                                    regularPriceLabel.classList.remove('hidden');
3483                                                }
3484                                                regularPriceElement && (regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount));
3485                                                basePriceElement && (basePriceElement.innerText = hyva.formatPrice(priceData.basePrice.amount));
3486                                            }
3487                                        }
3488                                    }
3489                                </script>
3489<div class="pt-1 text-gray-900" x-data="initPriceBox__6ab51c3fe5091()" @update-prices-228764.window="updatePrice($event.detail);" ><div class="price-box price-final_price" data-role="priceBox" data-product-id="228764" data-price-box="product-id-228764"><div x-data="dataFinalPriceGiftCard_228764()" x-init="initFinalPriceGiftCard_228764()" x-bind="eventListeners" x-spread="eventListeners" ><template x-if="canShowBlock && customMinAmountCategory && !finalPrice"><div class="flex flex-col"><div class="from-price inline-block mb-2"><span class="price-label xxxx block"> Ab </span> <span id="product-price-228764-from" class="price-wrapper title-font font-medium text-2xl text-gray-900" ><span class="price" x-html="hyva.formatPrice(customMinAmountCategory)"></span> </span> </div></div></template><template x-if="finalPrice || customMaxAmount"><div><template x-if="!finalPrice && customMaxAmount && !customMinAmountCategory"><div class="flex gap-2"><div class="from-price inline-block mb-2"><span class="price-label yyyy block"><!-- Ab --></span> <span id="product-price-228764-from" class="price-wrapper title-font font-medium text-base text-gray-900" ><span class="price" x-html="hyva.formatPrice(customMinAmount)"></span> </span> </div><div class="to-price inline-block"><span class="price-label block"><!-- Bis --></span> <span id="product-price-228764-from" class="price-wrapper title-font font-medium text-base text-gray-900" ><span class="price" x-html="hyva.formatPrice(customMaxAmount)"></span> </span> </div></div></template><template x-if="finalPrice || !customMaxAmount"><div class="final-price inline-block"><span id="product-price-228764" class="price-wrapper title-font font-medium text-base text-gray-900" ><span class="price" x-html="hyva.formatPrice(finalPrice)"></span> </span> </div></template></div></template></div>
3489<script>
3490    'use strict';
3491
3492    function dataFinalPriceGiftCard_228764() {
3493        return {
3494            prices: [{"value":10,"convertValue":10,"price":"10,00\u00a0\u20ac"},{"value":20,"convertValue":20,"price":"20,00\u00a0\u20ac"},{"value":50,"convertValue":50,"price":"50,00\u00a0\u20ac"},{"value":100,"convertValue":100,"price":"100,00\u00a0\u20ac"}],
3495            customMinAmount: 0 || 1,             customMaxAmount: 0,             customMinAmountCategory: 10,             finalPrice: 0,             canShowBlock: 1,
3496            isOpenAmount: '1',
3497
3498            initFinalPriceGiftCard_228764() {
3499                if (!this.isOpenAmount && this.prices.length > 1) {
3500                    this.customMinAmount = this.prices[0].convertValue;
3501                    this.customMaxAmount = this.prices[this.prices.length - 1].convertValue;
3502                }
3503
3504                if (this.isOpenAmount && this.prices.length > 1) {
3505                    if (this.customMinAmount > this.prices[0].convertValue) {
3506                        this.customMinAmount = this.prices[0].convertValue;
3507                    }
3508
3509                    if (this.customMaxAmount < this.prices[this.prices.length - 1].convertValue) {
3510                        this.customMaxAmount = this.prices[this.prices.length - 1].convertValue;
3511                    }
3512                }
3513            },
3514
3515            eventListeners: {
3516                ['@mhgiftcard-update-price.window'](event) {
3517                    this.finalPrice = event.detail;
3518                },
3519            }
3520        }
3521    }
3522</script>
3522<style type="text/css"> .category-gutscheine button.items-center.wishlists_mh_icon { display: none; } </style></div></div><div class="mt-auto pt-3 flex flex-wrap justify-center items-center"></div></div></form></div><div class="item product product-item "><form method="post" action="https://www.mode-jost.de/checkout/cart/add/uenc/aHR0cHM6Ly93d3cubW9kZS1qb3N0LmRlLw~~/product/228767/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " ><input type="hidden" name="product" value="228767"/><a href="https://www.mode-jost.de/gutschein-zum-geburtstag.html" class="product photo product-item-photo block mx-auto mb-3 " tabindex="-1" ><img class="no-data hover:shadow-sm object-contain product-image-photo" x-data="{ defaultSrc: 'https://www.mode-jost.de/media/catalog/product/cache/67ee89799642c567a71fc92f3699d937/j/o/jost-geschenkgutschein-produktbilder8.jpg', remoteImage: 'https://www.mode-jost.de/media/catalog/product/cache/67ee89799642c567a71fc92f3699d937/j/o/jost-geschenkgutschein-produktbilder8.jpg', preloadedImage: {}, init() { if (this.remoteImage) { const img = new Image(); img.src = this.remoteImage; this.preloadedImage = img; } }, hoverImage() { return this.preloadedImage.src; }, resetImage() { return this.defaultSrc; } }" @update-gallery-228767.window="$root.src = $event.detail" @mouseenter="$event.target.src = hoverImage()" @mouseleave="$event.target.src = resetImage()" loading="eager" fetchpriority="high" src="https://www.mode-jost.de/media/catalog/product/cache/67ee89799642c567a71fc92f3699d937/j/o/jost-geschenkgutschein-produktbilder8.jpg" width="360" height="360" alt="Gutschein&#x20;Zum&#x20;Geburtstag" title="Gutschein&#x20;Zum&#x20;Geburtstag" /><style type="text/css"> .column.main button#mh-wishlist-icon { display: none; } </style></a> <div class="product-info flex flex-col grow p-2"><div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center truncate "><a class="product-item-link" href="https://www.mode-jost.de/gutschein-zum-geburtstag.html"> Gutschein Zum Geburtstag </a> </div>
3522<script>
3523                                    function initPriceBox__6ab51c3fe5091() {
3524                                        return {
3525                                            updatePrice(priceData) {
3526                                                const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
3527                                                const regularPriceElement = this.$root.querySelector('.normal-price [data-price-type=finalPrice].price-wrapper .price');
3528                                                const basePriceElement = this.$root.querySelector('.normal-price [data-price-type=basePrice].price-wrapper .price');
3529                                                if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
3530                                                    regularPriceLabel.classList.add('hidden');
3531                                                } else {
3532                                                    regularPriceLabel.classList.remove('hidden');
3533                                                }
3534                                                regularPriceElement && (regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount));
3535                                                basePriceElement && (basePriceElement.innerText = hyva.formatPrice(priceData.basePrice.amount));
3536                                            }
3537                                        }
3538                                    }
3539                                </script>
3539<div class="pt-1 text-gray-900" x-data="initPriceBox__6ab51c3fe5091()" @update-prices-228767.window="updatePrice($event.detail);" ><div class="price-box price-final_price" data-role="priceBox" data-product-id="228767" data-price-box="product-id-228767"><div x-data="dataFinalPriceGiftCard_228767()" x-init="initFinalPriceGiftCard_228767()" x-bind="eventListeners" x-spread="eventListeners" ><template x-if="canShowBlock && customMinAmountCategory && !finalPrice"><div class="flex flex-col"><div class="from-price inline-block mb-2"><span class="price-label xxxx block"> Ab </span> <span id="product-price-228767-from" class="price-wrapper title-font font-medium text-2xl text-gray-900" ><span class="price" x-html="hyva.formatPrice(customMinAmountCategory)"></span> </span> </div></div></template><template x-if="finalPrice || customMaxAmount"><div><template x-if="!finalPrice && customMaxAmount && !customMinAmountCategory"><div class="flex gap-2"><div class="from-price inline-block mb-2"><span class="price-label yyyy block"><!-- Ab --></span> <span id="product-price-228767-from" class="price-wrapper title-font font-medium text-base text-gray-900" ><span class="price" x-html="hyva.formatPrice(customMinAmount)"></span> </span> </div><div class="to-price inline-block"><span class="price-label block"><!-- Bis --></span> <span id="product-price-228767-from" class="price-wrapper title-font font-medium text-base text-gray-900" ><span class="price" x-html="hyva.formatPrice(customMaxAmount)"></span> </span> </div></div></template><template x-if="finalPrice || !customMaxAmount"><div class="final-price inline-block"><span id="product-price-228767" class="price-wrapper title-font font-medium text-base text-gray-900" ><span class="price" x-html="hyva.formatPrice(finalPrice)"></span> </span> </div></template></div></template></div>
3539<script>
3540    'use strict';
3541
3542    function dataFinalPriceGiftCard_228767() {
3543        return {
3544            prices: [{"value":10,"convertValue":10,"price":"10,00\u00a0\u20ac"},{"value":20,"convertValue":20,"price":"20,00\u00a0\u20ac"},{"value":50,"convertValue":50,"price":"50,00\u00a0\u20ac"},{"value":100,"convertValue":100,"price":"100,00\u00a0\u20ac"}],
3545            customMinAmount: 0 || 1,             customMaxAmount: 0,             customMinAmountCategory: 10,             finalPrice: 0,             canShowBlock: 1,
3546            isOpenAmount: '1',
3547
3548            initFinalPriceGiftCard_228767() {
3549                if (!this.isOpenAmount && this.prices.length > 1) {
3550                    this.customMinAmount = this.prices[0].convertValue;
3551                    this.customMaxAmount = this.prices[this.prices.length - 1].convertValue;
3552                }
3553
3554                if (this.isOpenAmount && this.prices.length > 1) {
3555                    if (this.customMinAmount > this.prices[0].convertValue) {
3556                        this.customMinAmount = this.prices[0].convertValue;
3557                    }
3558
3559                    if (this.customMaxAmount < this.prices[this.prices.length - 1].convertValue) {
3560                        this.customMaxAmount = this.prices[this.prices.length - 1].convertValue;
3561                    }
3562                }
3563            },
3564
3565            eventListeners: {
3566                ['@mhgiftcard-update-price.window'](event) {
3567                    this.finalPrice = event.detail;
3568                },
3569            }
3570        }
3571    }
3572</script>
3572<style type="text/css"> .category-gutscheine button.items-center.wishlists_mh_icon { display: none; } </style></div></div><div class="mt-auto pt-3 flex flex-wrap justify-center items-center"></div></div></form></div><div class="item product product-item "><form method="post" action="https://www.mode-jost.de/checkout/cart/add/uenc/aHR0cHM6Ly93d3cubW9kZS1qb3N0LmRlLw~~/product/228773/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " ><input type="hidden" name="product" value="228773"/><a href="https://www.mode-jost.de/gutschein-zum-geburtstag-ii.html" class="product photo product-item-photo block mx-auto mb-3 " tabindex="-1" ><img class="no-data hover:shadow-sm object-contain product-image-photo" x-data="{ defaultSrc: 'https://www.mode-jost.de/media/catalog/product/cache/67ee89799642c567a71fc92f3699d937/j/o/jost-geschenkgutschein-produktbilder14_1_1.jpg', remoteImage: 'https://www.mode-jost.de/media/catalog/product/cache/67ee89799642c567a71fc92f3699d937/j/o/jost-geschenkgutschein-produktbilder14_1_1.jpg', preloadedImage: {}, init() { if (this.remoteImage) { const img = new Image(); img.src = this.remoteImage; this.preloadedImage = img; } }, hoverImage() { return this.preloadedImage.src; }, resetImage() { return this.defaultSrc; } }" @update-gallery-228773.window="$root.src = $event.detail" @mouseenter="$event.target.src = hoverImage()" @mouseleave="$event.target.src = resetImage()" loading="eager" fetchpriority="high" src="https://www.mode-jost.de/media/catalog/product/cache/67ee89799642c567a71fc92f3699d937/j/o/jost-geschenkgutschein-produktbilder14_1_1.jpg" width="360" height="360" alt="Gutschein&#x20;Zum&#x20;Geburtstag&#x20;II" title="Gutschein&#x20;Zum&#x20;Geburtstag&#x20;II" /><style type="text/css"> .column.main button#mh-wishlist-icon { display: none; } </style></a> <div class="product-info flex flex-col grow p-2"><div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center truncate "><a class="product-item-link" href="https://www.mode-jost.de/gutschein-zum-geburtstag-ii.html"> Gutschein Zum Geburtstag II </a> </div>
3572<script>
3573                                    function initPriceBox__6ab51c3fe5091() {
3574                                        return {
3575                                            updatePrice(priceData) {
3576                                                const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
3577                                                const regularPriceElement = this.$root.querySelector('.normal-price [data-price-type=finalPrice].price-wrapper .price');
3578                                                const basePriceElement = this.$root.querySelector('.normal-price [data-price-type=basePrice].price-wrapper .price');
3579                                                if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
3580                                                    regularPriceLabel.classList.add('hidden');
3581                                                } else {
3582                                                    regularPriceLabel.classList.remove('hidden');
3583                                                }
3584                                                regularPriceElement && (regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount));
3585                                                basePriceElement && (basePriceElement.innerText = hyva.formatPrice(priceData.basePrice.amount));
3586                                            }
3587                                        }
3588                                    }
3589                                </script>
3589<div class="pt-1 text-gray-900" x-data="initPriceBox__6ab51c3fe5091()" @update-prices-228773.window="updatePrice($event.detail);" ><div class="price-box price-final_price" data-role="priceBox" data-product-id="228773" data-price-box="product-id-228773"><div x-data="dataFinalPriceGiftCard_228773()" x-init="initFinalPriceGiftCard_228773()" x-bind="eventListeners" x-spread="eventListeners" ><template x-if="canShowBlock && customMinAmountCategory && !finalPrice"><div class="flex flex-col"><div class="from-price inline-block mb-2"><span class="price-label xxxx block"> Ab </span> <span id="product-price-228773-from" class="price-wrapper title-font font-medium text-2xl text-gray-900" ><span class="price" x-html="hyva.formatPrice(customMinAmountCategory)"></span> </span> </div></div></template><template x-if="finalPrice || customMaxAmount"><div><template x-if="!finalPrice && customMaxAmount && !customMinAmountCategory"><div class="flex gap-2"><div class="from-price inline-block mb-2"><span class="price-label yyyy block"><!-- Ab --></span> <span id="product-price-228773-from" class="price-wrapper title-font font-medium text-base text-gray-900" ><span class="price" x-html="hyva.formatPrice(customMinAmount)"></span> </span> </div><div class="to-price inline-block"><span class="price-label block"><!-- Bis --></span> <span id="product-price-228773-from" class="price-wrapper title-font font-medium text-base text-gray-900" ><span class="price" x-html="hyva.formatPrice(customMaxAmount)"></span> </span> </div></div></template><template x-if="finalPrice || !customMaxAmount"><div class="final-price inline-block"><span id="product-price-228773" class="price-wrapper title-font font-medium text-base text-gray-900" ><span class="price" x-html="hyva.formatPrice(finalPrice)"></span> </span> </div></template></div></template></div>
3589<script>
3590    'use strict';
3591
3592    function dataFinalPriceGiftCard_228773() {
3593        return {
3594            prices: [{"value":10,"convertValue":10,"price":"10,00\u00a0\u20ac"},{"value":20,"convertValue":20,"price":"20,00\u00a0\u20ac"},{"value":50,"convertValue":50,"price":"50,00\u00a0\u20ac"},{"value":100,"convertValue":100,"price":"100,00\u00a0\u20ac"}],
3595            customMinAmount: 0 || 1,             customMaxAmount: 0,             customMinAmountCategory: 10,             finalPrice: 0,             canShowBlock: 1,
3596            isOpenAmount: '1',
3597
3598            initFinalPriceGiftCard_228773() {
3599                if (!this.isOpenAmount && this.prices.length > 1) {
3600                    this.customMinAmount = this.prices[0].convertValue;
3601                    this.customMaxAmount = this.prices[this.prices.length - 1].convertValue;
3602                }
3603
3604                if (this.isOpenAmount && this.prices.length > 1) {
3605                    if (this.customMinAmount > this.prices[0].convertValue) {
3606                        this.customMinAmount = this.prices[0].convertValue;
3607                    }
3608
3609                    if (this.customMaxAmount < this.prices[this.prices.length - 1].convertValue) {
3610                        this.customMaxAmount = this.prices[this.prices.length - 1].convertValue;
3611                    }
3612                }
3613            },
3614
3615            eventListeners: {
3616                ['@mhgiftcard-update-price.window'](event) {
3617                    this.finalPrice = event.detail;
3618                },
3619            }
3620        }
3621    }
3622</script>
3622<style type="text/css"> .category-gutscheine button.items-center.wishlists_mh_icon { display: none; } </style></div></div><div class="mt-auto pt-3 flex flex-wrap justify-center items-center"></div></div></form></div><div class="item product product-item "><form method="post" action="https://www.mode-jost.de/checkout/cart/add/uenc/aHR0cHM6Ly93d3cubW9kZS1qb3N0LmRlLw~~/product/228765/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " ><input type="hidden" name="product" value="228765"/><a href="https://www.mode-jost.de/gutschein-gonn-dir.html" class="product photo product-item-photo block mx-auto mb-3 " tabindex="-1" ><img class="no-data hover:shadow-sm object-contain product-image-photo" x-data="{ defaultSrc: 'https://www.mode-jost.de/media/catalog/product/cache/67ee89799642c567a71fc92f3699d937/j/o/jost-geschenkgutschein-produktbilder6.jpg', remoteImage: 'https://www.mode-jost.de/media/catalog/product/cache/67ee89799642c567a71fc92f3699d937/j/o/jost-geschenkgutschein-produktbilder6.jpg', preloadedImage: {}, init() { if (this.remoteImage) { const img = new Image(); img.src = this.remoteImage; this.preloadedImage = img; } }, hoverImage() { return this.preloadedImage.src; }, resetImage() { return this.defaultSrc; } }" @update-gallery-228765.window="$root.src = $event.detail" @mouseenter="$event.target.src = hoverImage()" @mouseleave="$event.target.src = resetImage()" loading="eager" fetchpriority="high" src="https://www.mode-jost.de/media/catalog/product/cache/67ee89799642c567a71fc92f3699d937/j/o/jost-geschenkgutschein-produktbilder6.jpg" width="360" height="360" alt="Gutschein&#x20;G&#xF6;nn&#x20;Dir&#x21;" title="Gutschein&#x20;G&#xF6;nn&#x20;Dir&#x21;" /><style type="text/css"> .column.main button#mh-wishlist-icon { display: none; } </style></a> <div class="product-info flex flex-col grow p-2"><div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center truncate "><a class="product-item-link" href="https://www.mode-jost.de/gutschein-gonn-dir.html"> Gutschein Gönn Dir! </a> </div>
3622<script>
3623                                    function initPriceBox__6ab51c3fe5091() {
3624                                        return {
3625                                            updatePrice(priceData) {
3626                                                const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
3627                                                const regularPriceElement = this.$root.querySelector('.normal-price [data-price-type=finalPrice].price-wrapper .price');
3628                                                const basePriceElement = this.$root.querySelector('.normal-price [data-price-type=basePrice].price-wrapper .price');
3629                                                if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
3630                                                    regularPriceLabel.classList.add('hidden');
3631                                                } else {
3632                                                    regularPriceLabel.classList.remove('hidden');
3633                                                }
3634                                                regularPriceElement && (regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount));
3635                                                basePriceElement && (basePriceElement.innerText = hyva.formatPrice(priceData.basePrice.amount));
3636                                            }
3637                                        }
3638                                    }
3639                                </script>
3639<div class="pt-1 text-gray-900" x-data="initPriceBox__6ab51c3fe5091()" @update-prices-228765.window="updatePrice($event.detail);" ><div class="price-box price-final_price" data-role="priceBox" data-product-id="228765" data-price-box="product-id-228765"><div x-data="dataFinalPriceGiftCard_228765()" x-init="initFinalPriceGiftCard_228765()" x-bind="eventListeners" x-spread="eventListeners" ><template x-if="canShowBlock && customMinAmountCategory && !finalPrice"><div class="flex flex-col"><div class="from-price inline-block mb-2"><span class="price-label xxxx block"> Ab </span> <span id="product-price-228765-from" class="price-wrapper title-font font-medium text-2xl text-gray-900" ><span class="price" x-html="hyva.formatPrice(customMinAmountCategory)"></span> </span> </div></div></template><template x-if="finalPrice || customMaxAmount"><div><template x-if="!finalPrice && customMaxAmount && !customMinAmountCategory"><div class="flex gap-2"><div class="from-price inline-block mb-2"><span class="price-label yyyy block"><!-- Ab --></span> <span id="product-price-228765-from" class="price-wrapper title-font font-medium text-base text-gray-900" ><span class="price" x-html="hyva.formatPrice(customMinAmount)"></span> </span> </div><div class="to-price inline-block"><span class="price-label block"><!-- Bis --></span> <span id="product-price-228765-from" class="price-wrapper title-font font-medium text-base text-gray-900" ><span class="price" x-html="hyva.formatPrice(customMaxAmount)"></span> </span> </div></div></template><template x-if="finalPrice || !customMaxAmount"><div class="final-price inline-block"><span id="product-price-228765" class="price-wrapper title-font font-medium text-base text-gray-900" ><span class="price" x-html="hyva.formatPrice(finalPrice)"></span> </span> </div></template></div></template></div>
3639<script>
3640    'use strict';
3641
3642    function dataFinalPriceGiftCard_228765() {
3643        return {
3644            prices: [{"value":10,"convertValue":10,"price":"10,00\u00a0\u20ac"},{"value":20,"convertValue":20,"price":"20,00\u00a0\u20ac"},{"value":50,"convertValue":50,"price":"50,00\u00a0\u20ac"},{"value":100,"convertValue":100,"price":"100,00\u00a0\u20ac"}],
3645            customMinAmount: 0 || 1,             customMaxAmount: 0,             customMinAmountCategory: 10,             finalPrice: 0,             canShowBlock: 1,
3646            isOpenAmount: '1',
3647
3648            initFinalPriceGiftCard_228765() {
3649                if (!this.isOpenAmount && this.prices.length > 1) {
3650                    this.customMinAmount = this.prices[0].convertValue;
3651                    this.customMaxAmount = this.prices[this.prices.length - 1].convertValue;
3652                }
3653
3654                if (this.isOpenAmount && this.prices.length > 1) {
3655                    if (this.customMinAmount > this.prices[0].convertValue) {
3656                        this.customMinAmount = this.prices[0].convertValue;
3657                    }
3658
3659                    if (this.customMaxAmount < this.prices[this.prices.length - 1].convertValue) {
3660                        this.customMaxAmount = this.prices[this.prices.length - 1].convertValue;
3661                    }
3662                }
3663            },
3664
3665            eventListeners: {
3666                ['@mhgiftcard-update-price.window'](event) {
3667                    this.finalPrice = event.detail;
3668                },
3669            }
3670        }
3671    }
3672</script>
3672<style type="text/css"> .category-gutscheine button.items-center.wishlists_mh_icon { display: none; } </style></div></div><div class="mt-auto pt-3 flex flex-wrap justify-center items-center"></div></div></form></div><div class="item product product-item "><form method="post" action="https://www.mode-jost.de/checkout/cart/add/uenc/aHR0cHM6Ly93d3cubW9kZS1qb3N0LmRlLw~~/product/228770/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " ><input type="hidden" name="product" value="228770"/><a href="https://www.mode-jost.de/gutschein-happy-birthday-iii.html" class="product photo product-item-photo block mx-auto mb-3 " tabindex="-1" ><img class="no-data hover:shadow-sm object-contain product-image-photo" x-data="{ defaultSrc: 'https://www.mode-jost.de/media/catalog/product/cache/67ee89799642c567a71fc92f3699d937/j/o/jost-geschenkgutschein-produktbilder-cupcake.jpg', remoteImage: 'https://www.mode-jost.de/media/catalog/product/cache/67ee89799642c567a71fc92f3699d937/j/o/jost-geschenkgutschein-produktbilder-cupcake.jpg', preloadedImage: {}, init() { if (this.remoteImage) { const img = new Image(); img.src = this.remoteImage; this.preloadedImage = img; } }, hoverImage() { return this.preloadedImage.src; }, resetImage() { return this.defaultSrc; } }" @update-gallery-228770.window="$root.src = $event.detail" @mouseenter="$event.target.src = hoverImage()" @mouseleave="$event.target.src = resetImage()" loading="eager" fetchpriority="high" src="https://www.mode-jost.de/media/catalog/product/cache/67ee89799642c567a71fc92f3699d937/j/o/jost-geschenkgutschein-produktbilder-cupcake.jpg" width="360" height="360" alt="Gutschein&#x20;Happy&#x20;Birthday&#x20;III" title="Gutschein&#x20;Happy&#x20;Birthday&#x20;III" /><style type="text/css"> .column.main button#mh-wishlist-icon { display: none; } </style></a> <div class="product-info flex flex-col grow p-2"><div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center truncate "><a class="product-item-link" href="https://www.mode-jost.de/gutschein-happy-birthday-iii.html"> Gutschein Happy Birthday III </a> </div>
3672<script>
3673                                    function initPriceBox__6ab51c3fe5091() {
3674                                        return {
3675                                            updatePrice(priceData) {
3676                                                const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
3677                                                const regularPriceElement = this.$root.querySelector('.normal-price [data-price-type=finalPrice].price-wrapper .price');
3678                                                const basePriceElement = this.$root.querySelector('.normal-price [data-price-type=basePrice].price-wrapper .price');
3679                                                if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
3680                                                    regularPriceLabel.classList.add('hidden');
3681                                                } else {
3682                                                    regularPriceLabel.classList.remove('hidden');
3683                                                }
3684                                                regularPriceElement && (regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount));
3685                                                basePriceElement && (basePriceElement.innerText = hyva.formatPrice(priceData.basePrice.amount));
3686                                            }
3687                                        }
3688                                    }
3689                                </script>
3689<div class="pt-1 text-gray-900" x-data="initPriceBox__6ab51c3fe5091()" @update-prices-228770.window="updatePrice($event.detail);" ><div class="price-box price-final_price" data-role="priceBox" data-product-id="228770" data-price-box="product-id-228770"><div x-data="dataFinalPriceGiftCard_228770()" x-init="initFinalPriceGiftCard_228770()" x-bind="eventListeners" x-spread="eventListeners" ><template x-if="canShowBlock && customMinAmountCategory && !finalPrice"><div class="flex flex-col"><div class="from-price inline-block mb-2"><span class="price-label xxxx block"> Ab </span> <span id="product-price-228770-from" class="price-wrapper title-font font-medium text-2xl text-gray-900" ><span class="price" x-html="hyva.formatPrice(customMinAmountCategory)"></span> </span> </div></div></template><template x-if="finalPrice || customMaxAmount"><div><template x-if="!finalPrice && customMaxAmount && !customMinAmountCategory"><div class="flex gap-2"><div class="from-price inline-block mb-2"><span class="price-label yyyy block"><!-- Ab --></span> <span id="product-price-228770-from" class="price-wrapper title-font font-medium text-base text-gray-900" ><span class="price" x-html="hyva.formatPrice(customMinAmount)"></span> </span> </div><div class="to-price inline-block"><span class="price-label block"><!-- Bis --></span> <span id="product-price-228770-from" class="price-wrapper title-font font-medium text-base text-gray-900" ><span class="price" x-html="hyva.formatPrice(customMaxAmount)"></span> </span> </div></div></template><template x-if="finalPrice || !customMaxAmount"><div class="final-price inline-block"><span id="product-price-228770" class="price-wrapper title-font font-medium text-base text-gray-900" ><span class="price" x-html="hyva.formatPrice(finalPrice)"></span> </span> </div></template></div></template></div>
3689<script>
3690    'use strict';
3691
3692    function dataFinalPriceGiftCard_228770() {
3693        return {
3694            prices: [{"value":10,"convertValue":10,"price":"10,00\u00a0\u20ac"},{"value":20,"convertValue":20,"price":"20,00\u00a0\u20ac"},{"value":50,"convertValue":50,"price":"50,00\u00a0\u20ac"},{"value":100,"convertValue":100,"price":"100,00\u00a0\u20ac"}],
3695            customMinAmount: 0 || 1,             customMaxAmount: 0,             customMinAmountCategory: 10,             finalPrice: 0,             canShowBlock: 1,
3696            isOpenAmount: '1',
3697
3698            initFinalPriceGiftCard_228770() {
3699                if (!this.isOpenAmount && this.prices.length > 1) {
3700                    this.customMinAmount = this.prices[0].convertValue;
3701                    this.customMaxAmount = this.prices[this.prices.length - 1].convertValue;
3702                }
3703
3704                if (this.isOpenAmount && this.prices.length > 1) {
3705                    if (this.customMinAmount > this.prices[0].convertValue) {
3706                        this.customMinAmount = this.prices[0].convertValue;
3707                    }
3708
3709                    if (this.customMaxAmount < this.prices[this.prices.length - 1].convertValue) {
3710                        this.customMaxAmount = this.prices[this.prices.length - 1].convertValue;
3711                    }
3712                }
3713            },
3714
3715            eventListeners: {
3716                ['@mhgiftcard-update-price.window'](event) {
3717                    this.finalPrice = event.detail;
3718                },
3719            }
3720        }
3721    }
3722</script>
3722<style type="text/css"> .category-gutscheine button.items-center.wishlists_mh_icon { display: none; } </style></div></div><div class="mt-auto pt-3 flex flex-wrap justify-center items-center"></div></div></form></div><div class="item product product-item "><form method="post" action="https://www.mode-jost.de/checkout/cart/add/uenc/aHR0cHM6Ly93d3cubW9kZS1qb3N0LmRlLw~~/product/228771/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " ><input type="hidden" name="product" value="228771"/><a href="https://www.mode-jost.de/gutschein-alles-liebe-ii.html" class="product photo product-item-photo block mx-auto mb-3 " tabindex="-1" ><img class="no-data hover:shadow-sm object-contain product-image-photo" x-data="{ defaultSrc: 'https://www.mode-jost.de/media/catalog/product/cache/67ee89799642c567a71fc92f3699d937/j/o/jost-geschenkgutschein-produktbilder12.jpg', remoteImage: 'https://www.mode-jost.de/media/catalog/product/cache/67ee89799642c567a71fc92f3699d937/j/o/jost-geschenkgutschein-produktbilder12.jpg', preloadedImage: {}, init() { if (this.remoteImage) { const img = new Image(); img.src = this.remoteImage; this.preloadedImage = img; } }, hoverImage() { return this.preloadedImage.src; }, resetImage() { return this.defaultSrc; } }" @update-gallery-228771.window="$root.src = $event.detail" @mouseenter="$event.target.src = hoverImage()" @mouseleave="$event.target.src = resetImage()" loading="eager" fetchpriority="high" src="https://www.mode-jost.de/media/catalog/product/cache/67ee89799642c567a71fc92f3699d937/j/o/jost-geschenkgutschein-produktbilder12.jpg" width="360" height="360" alt="Gutschein&#x20;Alles&#x20;Liebe&#x20;II" title="Gutschein&#x20;Alles&#x20;Liebe&#x20;II" /><style type="text/css"> .column.main button#mh-wishlist-icon { display: none; } </style></a> <div class="product-info flex flex-col grow p-2"><div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center truncate "><a class="product-item-link" href="https://www.mode-jost.de/gutschein-alles-liebe-ii.html"> Gutschein Alles Liebe II </a> </div>
3722<script>
3723                                    function initPriceBox__6ab51c3fe5091() {
3724                                        return {
3725                                            updatePrice(priceData) {
3726                                                const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
3727                                                const regularPriceElement = this.$root.querySelector('.normal-price [data-price-type=finalPrice].price-wrapper .price');
3728                                                const basePriceElement = this.$root.querySelector('.normal-price [data-price-type=basePrice].price-wrapper .price');
3729                                                if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
3730                                                    regularPriceLabel.classList.add('hidden');
3731                                                } else {
3732                                                    regularPriceLabel.classList.remove('hidden');
3733                                                }
3734                                                regularPriceElement && (regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount));
3735                                                basePriceElement && (basePriceElement.innerText = hyva.formatPrice(priceData.basePrice.amount));
3736                                            }
3737                                        }
3738                                    }
3739                                </script>
3739<div class="pt-1 text-gray-900" x-data="initPriceBox__6ab51c3fe5091()" @update-prices-228771.window="updatePrice($event.detail);" ><div class="price-box price-final_price" data-role="priceBox" data-product-id="228771" data-price-box="product-id-228771"><div x-data="dataFinalPriceGiftCard_228771()" x-init="initFinalPriceGiftCard_228771()" x-bind="eventListeners" x-spread="eventListeners" ><template x-if="canShowBlock && customMinAmountCategory && !finalPrice"><div class="flex flex-col"><div class="from-price inline-block mb-2"><span class="price-label xxxx block"> Ab </span> <span id="product-price-228771-from" class="price-wrapper title-font font-medium text-2xl text-gray-900" ><span class="price" x-html="hyva.formatPrice(customMinAmountCategory)"></span> </span> </div></div></template><template x-if="finalPrice || customMaxAmount"><div><template x-if="!finalPrice && customMaxAmount && !customMinAmountCategory"><div class="flex gap-2"><div class="from-price inline-block mb-2"><span class="price-label yyyy block"><!-- Ab --></span> <span id="product-price-228771-from" class="price-wrapper title-font font-medium text-base text-gray-900" ><span class="price" x-html="hyva.formatPrice(customMinAmount)"></span> </span> </div><div class="to-price inline-block"><span class="price-label block"><!-- Bis --></span> <span id="product-price-228771-from" class="price-wrapper title-font font-medium text-base text-gray-900" ><span class="price" x-html="hyva.formatPrice(customMaxAmount)"></span> </span> </div></div></template><template x-if="finalPrice || !customMaxAmount"><div class="final-price inline-block"><span id="product-price-228771" class="price-wrapper title-font font-medium text-base text-gray-900" ><span class="price" x-html="hyva.formatPrice(finalPrice)"></span> </span> </div></template></div></template></div>
3739<script>
3740    'use strict';
3741
3742    function dataFinalPriceGiftCard_228771() {
3743        return {
3744            prices: [{"value":10,"convertValue":10,"price":"10,00\u00a0\u20ac"},{"value":20,"convertValue":20,"price":"20,00\u00a0\u20ac"},{"value":50,"convertValue":50,"price":"50,00\u00a0\u20ac"},{"value":100,"convertValue":100,"price":"100,00\u00a0\u20ac"}],
3745            customMinAmount: 0 || 1,             customMaxAmount: 0,             customMinAmountCategory: 10,             finalPrice: 0,             canShowBlock: 1,
3746            isOpenAmount: '1',
3747
3748            initFinalPriceGiftCard_228771() {
3749                if (!this.isOpenAmount && this.prices.length > 1) {
3750                    this.customMinAmount = this.prices[0].convertValue;
3751                    this.customMaxAmount = this.prices[this.prices.length - 1].convertValue;
3752                }
3753
3754                if (this.isOpenAmount && this.prices.length > 1) {
3755                    if (this.customMinAmount > this.prices[0].convertValue) {
3756                        this.customMinAmount = this.prices[0].convertValue;
3757                    }
3758
3759                    if (this.customMaxAmount < this.prices[this.prices.length - 1].convertValue) {
3760                        this.customMaxAmount = this.prices[this.prices.length - 1].convertValue;
3761                    }
3762                }
3763            },
3764
3765            eventListeners: {
3766                ['@mhgiftcard-update-price.window'](event) {
3767                    this.finalPrice = event.detail;
3768                },
3769            }
3770        }
3771    }
3772</script>
3772<style type="text/css"> .category-gutscheine button.items-center.wishlists_mh_icon { display: none; } </style></div></div><div class="mt-auto pt-3 flex flex-wrap justify-center items-center"></div></div></form></div><div class="item product product-item "><form method="post" action="https://www.mode-jost.de/checkout/cart/add/uenc/aHR0cHM6Ly93d3cubW9kZS1qb3N0LmRlLw~~/product/228775/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " ><input type="hidden" name="product" value="228775"/><a href="https://www.mode-jost.de/gutschein-flugzeug.html" class="product photo product-item-photo block mx-auto mb-3 " tabindex="-1" ><img class="no-data hover:shadow-sm object-contain product-image-photo" x-data="{ defaultSrc: 'https://www.mode-jost.de/media/catalog/product/cache/67ee89799642c567a71fc92f3699d937/j/o/jost-geschenkgutschein-produktbilder16.jpg', remoteImage: 'https://www.mode-jost.de/media/catalog/product/cache/67ee89799642c567a71fc92f3699d937/j/o/jost-geschenkgutschein-produktbilder16.jpg', preloadedImage: {}, init() { if (this.remoteImage) { const img = new Image(); img.src = this.remoteImage; this.preloadedImage = img; } }, hoverImage() { return this.preloadedImage.src; }, resetImage() { return this.defaultSrc; } }" @update-gallery-228775.window="$root.src = $event.detail" @mouseenter="$event.target.src = hoverImage()" @mouseleave="$event.target.src = resetImage()" loading="eager" fetchpriority="high" src="https://www.mode-jost.de/media/catalog/product/cache/67ee89799642c567a71fc92f3699d937/j/o/jost-geschenkgutschein-produktbilder16.jpg" width="360" height="360" alt="Gutschein&#x20;Flugzeug" title="Gutschein&#x20;Flugzeug" /><style type="text/css"> .column.main button#mh-wishlist-icon { display: none; } </style></a> <div class="product-info flex flex-col grow p-2"><div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center truncate "><a class="product-item-link" href="https://www.mode-jost.de/gutschein-flugzeug.html"> Gutschein Flugzeug </a> </div>
3772<script>
3773                                    function initPriceBox__6ab51c3fe5091() {
3774                                        return {
3775                                            updatePrice(priceData) {
3776                                                const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
3777                                                const regularPriceElement = this.$root.querySelector('.normal-price [data-price-type=finalPrice].price-wrapper .price');
3778                                                const basePriceElement = this.$root.querySelector('.normal-price [data-price-type=basePrice].price-wrapper .price');
3779                                                if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
3780                                                    regularPriceLabel.classList.add('hidden');
3781                                                } else {
3782                                                    regularPriceLabel.classList.remove('hidden');
3783                                                }
3784                                                regularPriceElement && (regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount));
3785                                                basePriceElement && (basePriceElement.innerText = hyva.formatPrice(priceData.basePrice.amount));
3786                                            }
3787                                        }
3788                                    }
3789                                </script>
3789<div class="pt-1 text-gray-900" x-data="initPriceBox__6ab51c3fe5091()" @update-prices-228775.window="updatePrice($event.detail);" ><div class="price-box price-final_price" data-role="priceBox" data-product-id="228775" data-price-box="product-id-228775"><div x-data="dataFinalPriceGiftCard_228775()" x-init="initFinalPriceGiftCard_228775()" x-bind="eventListeners" x-spread="eventListeners" ><template x-if="canShowBlock && customMinAmountCategory && !finalPrice"><div class="flex flex-col"><div class="from-price inline-block mb-2"><span class="price-label xxxx block"> Ab </span> <span id="product-price-228775-from" class="price-wrapper title-font font-medium text-2xl text-gray-900" ><span class="price" x-html="hyva.formatPrice(customMinAmountCategory)"></span> </span> </div></div></template><template x-if="finalPrice || customMaxAmount"><div><template x-if="!finalPrice && customMaxAmount && !customMinAmountCategory"><div class="flex gap-2"><div class="from-price inline-block mb-2"><span class="price-label yyyy block"><!-- Ab --></span> <span id="product-price-228775-from" class="price-wrapper title-font font-medium text-base text-gray-900" ><span class="price" x-html="hyva.formatPrice(customMinAmount)"></span> </span> </div><div class="to-price inline-block"><span class="price-label block"><!-- Bis --></span> <span id="product-price-228775-from" class="price-wrapper title-font font-medium text-base text-gray-900" ><span class="price" x-html="hyva.formatPrice(customMaxAmount)"></span> </span> </div></div></template><template x-if="finalPrice || !customMaxAmount"><div class="final-price inline-block"><span id="product-price-228775" class="price-wrapper title-font font-medium text-base text-gray-900" ><span class="price" x-html="hyva.formatPrice(finalPrice)"></span> </span> </div></template></div></template></div>
3789<script>
3790    'use strict';
3791
3792    function dataFinalPriceGiftCard_228775() {
3793        return {
3794            prices: [{"value":10,"convertValue":10,"price":"10,00\u00a0\u20ac"},{"value":20,"convertValue":20,"price":"20,00\u00a0\u20ac"},{"value":50,"convertValue":50,"price":"50,00\u00a0\u20ac"},{"value":100,"convertValue":100,"price":"100,00\u00a0\u20ac"}],
3795            customMinAmount: 0 || 1,             customMaxAmount: 0,             customMinAmountCategory: 10,             finalPrice: 0,             canShowBlock: 1,
3796            isOpenAmount: '1',
3797
3798            initFinalPriceGiftCard_228775() {
3799                if (!this.isOpenAmount && this.prices.length > 1) {
3800                    this.customMinAmount = this.prices[0].convertValue;
3801                    this.customMaxAmount = this.prices[this.prices.length - 1].convertValue;
3802                }
3803
3804                if (this.isOpenAmount && this.prices.length > 1) {
3805                    if (this.customMinAmount > this.prices[0].convertValue) {
3806                        this.customMinAmount = this.prices[0].convertValue;
3807                    }
3808
3809                    if (this.customMaxAmount < this.prices[this.prices.length - 1].convertValue) {
3810                        this.customMaxAmount = this.prices[this.prices.length - 1].convertValue;
3811                    }
3812                }
3813            },
3814
3815            eventListeners: {
3816                ['@mhgiftcard-update-price.window'](event) {
3817                    this.finalPrice = event.detail;
3818                },
3819            }
3820        }
3821    }
3822</script>
3822<style type="text/css"> .category-gutscheine button.items-center.wishlists_mh_icon { display: none; } </style></div></div><div class="mt-auto pt-3 flex flex-wrap justify-center items-center"></div></div></form></div></div>
3822<script>
3823                loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
3824                    .then(() => {
3825                        return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_Core/js/owl.carousel.min.js', 'carousel');
3826                    })
3827                    .then(() => {
3828                        return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/carousel.min.js', 'product-slider');
3829                    })
3830                    .then(() => {
3831                        $(document).ready(function() {
3832                            setTimeout(function() {
3833                                $('#17902541436ab51c3fe97fe').trigger('destroy.owl.carousel');
3834                                $('#17902541436ab51c3fe97fe').carousel({"item_xl":"5","item_lg":"4","item_md":"2","item_sm":"2","item_xs":"2","nav":true,"dots":false,"autoplayHoverPause":false,"autoplay":false,"autoplayTimeout":"5000","lazyLoad":true,"loop":false,"margin":0,"autoHeight":true,"rtl":false,"center":false,"slideBy":"1","animateIn":"","animateOut":"","stagePadding":0});
3835                            }, 500);
3836                        });
3837                    })
3838            </script>
3838</div></div></div></div><div class="v63g5tx mgz-element mgz-element-row full_width_row"><div class="mgz-element-inner v63g5tx-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="r0bklbp mgz-element mgz-element-column mgz-col-xs-12"><div class="mgz-element-inner r0bklbp-s"><div class="xumdvtn mgz-element mgz-child mgz-element-text"><div class="mgz-element-inner xumdvtn-s"></div></div></div></div></div>
3838<script>
3839    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
3840        .then(() => {
3841            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
3842        })
3843        .then(() => {
3844            const elemId = $('.v63g5tx');
3845            let mgzBuilder = new MagezonBuilder(elemId);
3846        })
3847</script>
3847</div></div></div></div><div class="tjtqmp1 mgz-element mgz-element-column mgz-col-xs-12"><div class="mgz-element-inner tjtqmp1-s"></div></div></div>
3847<script>
3848    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
3849        .then(() => {
3850            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
3851        })
3852        .then(() => {
3853            const elemId = $('.g6c7grg');
3854            let mgzBuilder = new MagezonBuilder(elemId);
3855        })
3856</script>
3856</div></div></div></div><aside class="sidebar sidebar-additional">
3857    
3857<script>
3858        function initWishlistOnWishlistSidebar() {
3859            function wishlistSidebarFetchHandler(body, postUrl, isRemoveAction = true) {
3860                const messages = {
3861                    "success": isRemoveAction
3862                        ? "\u00251\u0020wurde\u0020von\u0020deiner\u0020Wunschliste\u0020entfernt."
3863                        : "\u00251\u0020wurde\u0020Ihrem\u0020Wunschzettel\u0020hinzugef\u00FCgt.",
3864                    "warning": isRemoveAction
3865                        ? "Der\u0020Artikel\u0020konnte\u0020nicht\u0020von\u0020Ihrem\u0020Wunschzettel\u0020entfernt\u0020werden."
3866                        : "Der\u0020Artikel\u0020konnte\u0020nicht\u0020zu\u0020Ihrem\u0020Wunschzettel\u0020hinzugef\u00FCgt\u0020werden.",
3867                }
3868
3869                const postHeaders = {
3870                    "headers": {
3871                        "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
3872                    },
3873                    body: body,
3874                    "method": "POST",
3875                    "mode": "cors",
3876                    "credentials": "include"
3877                };
3878
3879                return fetch(postUrl, postHeaders).then(function (response) {
3880                    if (response.redirected) {
3881                        window.location.href = response.url;
3882                    } else if (response.ok) {
3883                        return response.json();
3884                    } else {
3885                        const message = { type: "warning", text: messages.warning };
3886                        window.dispatchMessages && window.dispatchMessages([message], 5000);
3887                    }
3888                }).then(function (response) {
3889                    if (!response) return;
3890                    const message = {
3891                        type: (response.success) ? "success" : "error",
3892                        text: (response.success) ? messages.success : response.error_message
3893                    }
3894                    window.dispatchMessages && window.dispatchMessages([message], 5000);
3895                    window.dispatchEvent(new CustomEvent("reload-customer-section-data"));
3896                }).catch(function (error) {
3897                    const message = { type: "error", text: error };
3898                    window.dispatchMessages && window.dispatchMessages([message], 5000);
3899                });
3900            }
3901
3902            return {
3903                wishlistProducts: null,
3904                itemCount: 0,
3905                wishlistCountLabel: null,
3906                wishlistItems: {},
3907                receiveWishlistData: function (data) {
3908                    if (data['wishlist']) {
3909                        this.wishlistProducts = data['wishlist'];
3910                        this.wishlistCountLabel = '(' + this.wishlistProducts.counter + ')';
3911                        this.itemCount = this.wishlistProducts.items.length;
3912                        this.wishlistItems = this.wishlistProducts.items;
3913                    }
3914                },
3915                addToCart: function (json) {
3916                    const obj = JSON.parse(json);
3917                    const postUrl = obj.action;
3918                    const body = "form_key=" + hyva.getFormKey() + "&item=" + obj.data.item + "&qty=" + obj.data.qty + "&uenc=" 
3918+ hyva.getUenc();
3919                    wishlistSidebarFetchHandler(body, postUrl, /* isRemoveAction */ false);
3920                },
3921                removeFromWishlist: function(json) {
3922                    const obj = JSON.parse(json);
3923                    const postUrl = obj.action;
3924                    const body = "form_key=" + hyva.getFormKey() + "&item=" + obj.data.item+"&uenc=" + hyva.getUenc();
3925                    wishlistSidebarFetchHandler(body, postUrl);
3926                }
3927            }
3928        }
3929
3930    </script>
3930
3931
3932    <div x-data="initWishlistOnWishlistSidebar()"
3933         @private-content-loaded.window="receiveWishlistData($event.detail.data)"
3934         class="wishlist-widget"
3935    >
3936        <template x-if="itemCount">
3937            <div class="mt-8">
3938                <h2 class="border-t border-gray-300 mb-6 pt-5" id="wishlist-sidebar">
3939                    <strong class="title font-semibold text-lg">Mein Wunschzettel</strong>
3940                    <span class="counter text-xs" x-text="wishlistCountLabel"></span>
3941                </h2>
3942                <ul role="list" class="my-4" aria-labelledby="wishlist-sidebar">
3943                    <template x-for="product in wishlistItems">
3944                        <li class="flex items-start mb-4">
3945                            <a
3946                                :href="product.product_url"
3947                                class="block mb-3 w-10 h-10 shrink-0 mr-4"
3948                                tabindex="-1"
3949                                aria-hidden="true"
3950                            >
3951                                <img
3952                                    :src="product.image.src"
3953                                    alt=""
3954                                    loading="lazy"
3955                                >
3956                            </a>
3957                            <div class="product-item-details">
3958                                <strong class="mr-2 text-sm leading-6 font-normal">
3959                                    <a :href="product.product_url" :title="product.product_name" x-text="product.product_name"></a>
3960                                </strong>
3961                                <div class="mr-2 text-sm leading-6 font-bold" x-html="product.product_price"></div>
3962                                <template x-if="product.product_is_saleable_and_visible">
3963                                    <div class="actions-primary my-2">
3964                                        <template x-if="!product.product_has_required_options">
3965                                            <button
3966                                                type="button"
3967                                                @click.prevent="addToCart(product.add_to_cart_params)"
3968                                                class="action tocart primary btn btn-primary text-sm"
3969                                                :aria-label="hyva.str('Zum\u0020Warenkorb\u0020hinzuf\u00FCgen\u0020\u00251', product.product_name)"
3970                                                data-addto="cart"
3971                                            >
3972                                                In den Warenkorb                                            </button>
3973                                        </template>
3974                                    </div>
3975                                </template>
3976                            </div>
3977                            <button
3978                                type="button"
3979                                @click.prevent="removeFromWishlist(product.delete_item_params)"
3980                                :aria-label="hyva.str('Produkt\u0020\u0022\u00251\u0022\u0020von\u0020meiner\u0020Wunschliste\u0020entfernen', product.product_name)"
3981                                class="
3982                                    p-1 inline-flex shrink-0 items-center
3983                                    justify-center text-slate-400 hover:text-slate-800 ml-auto
3984                                "
3985                            >
3986                                <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" aria-hidden="true">
3987  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/>
3988</svg>
3989                            </button>
3990                        </li>
3991                    </template>
3992                </ul>
3993                <div class="flex flex-wrap items-center md:mt-5 gap-2 text-sm">
3994                    <a href="https://www.mode-jost.de/wishlist/"
3995                       aria-label="Zur&#x20;Seite&#x20;Wunschliste&#x20;gehen"
3996                       class="btn btn-secondary text-sm"
3997                    >
3998                        Zum Wunschzettel gehen                    </a>
3999                </div>
4000            </div>
4001        </template>
4002    </div>
4003</aside></div></main><div class="page-bottom"><div class="content"><!-- BLOCK persistent_initial_configs -->
4003<script type="application/javascript">
4004    window.persistent = {"expirationLifetime":31536000};
4005    window.notYouLink = 'href="https://www.mode-jost.de/persistent/index/unsetCookie/"';
4006</script>
vendor: 1 bytes, line 4006
4006
4007<script type="text/x-magento-init">
4008    {
4009        "li.greet.welcome > span.not-logged-in": {
4010            "Magento_Persistent/js/view/additional-welcome": {}
4011        }
4012    }
4013</script>
4013
4014<!-- /BLOCK persistent_initial_configs --></div></div><footer class="page-footer"><div class="footer content">
4014<script>
4015  addEventListener('DOMContentLoaded', () => {
4016      for (const [selector, label] of Object.entries({"aside.sidebar-main":"Sidebar Main","aside.sidebar-additional":"Sidebar Additional"})) {
4017          const target = document.querySelector(selector);
4018          target && target.setAttribute('aria-label', label);
4019      }
4020  }, {once: true})
4021</script>
4021
4022<section class="footer-section footer-section-1"><div class="widget block block-static-block">
4023    <style>*, ::before, ::after {
4024--tw-border-spacing-x: 0;
4025--tw-border-spacing-y: 0;
4026--tw-translate-x: 0;
4027--tw-translate-y: 0;
4028--tw-rotate: 0;
4029--tw-skew-x: 0;
4030--tw-skew-y: 0;
4031--tw-scale-x: 1;
4032--tw-scale-y: 1;
4033--tw-pan-x:  ;
4034--tw-pan-y:  ;
4035--tw-pinch-zoom:  ;
4036--tw-scroll-snap-strictness: proximity;
4037--tw-gradient-from-position:  ;
4038--tw-gradient-via-position:  ;
4039--tw-gradient-to-position:  ;
4040--tw-ordinal:  ;
4041--tw-slashed-zero:  ;
4042--tw-numeric-figure:  ;
4043--tw-numeric-spacing:  ;
4044--tw-numeric-fraction:  ;
4045--tw-ring-inset:  ;
4046--tw-ring-offset-width: 0px;
4047--tw-ring-offset-color: #fff;
4048--tw-ring-color: rgb(59 130 246 / 0.5);
4049--tw-ring-offset-shadow: 0 0 #0000;
4050--tw-ring-shadow: 0 0 #0000;
4051--tw-shadow: 0 0 #0000;
4052--tw-shadow-colored: 0 0 #0000;
4053--tw-blur:  ;
4054--tw-brightness:  ;
4055--tw-contrast:  ;
4056--tw-grayscale:  ;
4057--tw-hue-rotate:  ;
4058--tw-invert:  ;
4059--tw-saturate:  ;
4060--tw-sepia:  ;
4061--tw-drop-shadow:  ;
4062--tw-backdrop-blur:  ;
4063--tw-backdrop-brightness:  ;
4064--tw-backdrop-contrast:  ;
4065--tw-backdrop-grayscale:  ;
4066--tw-backdrop-hue-rotate:  ;
4067--tw-backdrop-invert:  ;
4068--tw-backdrop-opacity:  ;
4069--tw-backdrop-saturate:  ;
4070--tw-backdrop-sepia:  ;
4071--tw-contain-size:  ;
4072--tw-contain-layout:  ;
4073--tw-contain-paint:  ;
4074--tw-contain-style:  
4075}
4076::backdrop {
4077--tw-border-spacing-x: 0;
4078--tw-border-spacing-y: 0;
4079--tw-translate-x: 0;
4080--tw-translate-y: 0;
4081--tw-rotate: 0;
4082--tw-skew-x: 0;
4083--tw-skew-y: 0;
4084--tw-scale-x: 1;
4085--tw-scale-y: 1;
4086--tw-pan-x:  ;
4087--tw-pan-y:  ;
4088--tw-pinch-zoom:  ;
4089--tw-scroll-snap-strictness: proximity;
4090--tw-gradient-from-position:  ;
4091--tw-gradient-via-position:  ;
4092--tw-gradient-to-position:  ;
4093--tw-ordinal:  ;
4094--tw-slashed-zero:  ;
4095--tw-numeric-figure:  ;
4096--tw-numeric-spacing:  ;
4097--tw-numeric-fraction:  ;
4098--tw-ring-inset:  ;
4099--tw-ring-offset-width: 0px;
4100--tw-ring-offset-color: #fff;
4101--tw-ring-color: rgb(59 130 246 / 0.5);
4102--tw-ring-offset-shadow: 0 0 #0000;
4103--tw-ring-shadow: 0 0 #0000;
4104--tw-shadow: 0 0 #0000;
4105--tw-shadow-colored: 0 0 #0000;
4106--tw-blur:  ;
4107--tw-brightness:  ;
4108--tw-contrast:  ;
4109--tw-grayscale:  ;
4110--tw-hue-rotate:  ;
4111--tw-invert:  ;
4112--tw-saturate:  ;
4113--tw-sepia:  ;
4114--tw-drop-shadow:  ;
4115--tw-backdrop-blur:  ;
4116--tw-backdrop-brightness:  ;
4117--tw-backdrop-contrast:  ;
4118--tw-backdrop-grayscale:  ;
4119--tw-backdrop-hue-rotate:  ;
4120--tw-backdrop-invert:  ;
4121--tw-backdrop-opacity:  ;
4122--tw-backdrop-saturate:  ;
4123--tw-backdrop-sepia:  ;
4124--tw-contain-size:  ;
4125--tw-contain-layout:  ;
4126--tw-contain-paint:  ;
4127--tw-contain-style:  
4128}</style>
4129<style>*, ::before, ::after {
4130--tw-border-spacing-x: 0;
4131--tw-border-spacing-y: 0;
4132--tw-translate-x: 0;
4133--tw-translate-y: 0;
4134--tw-rotate: 0;
4135--tw-skew-x: 0;
4136--tw-skew-y: 0;
4137--tw-scale-x: 1;
4138--tw-scale-y: 1;
4139--tw-pan-x:  ;
4140--tw-pan-y:  ;
4141--tw-pinch-zoom:  ;
4142--tw-scroll-snap-strictness: proximity;
4143--tw-gradient-from-position:  ;
4144--tw-gradient-via-position:  ;
4145--tw-gradient-to-position:  ;
4146--tw-ordinal:  ;
4147--tw-slashed-zero:  ;
4148--tw-numeric-figure:  ;
4149--tw-numeric-spacing:  ;
4150--tw-numeric-fraction:  ;
4151--tw-ring-inset:  ;
4152--tw-ring-offset-width: 0px;
4153--tw-ring-offset-color: #fff;
4154--tw-ring-color: rgb(59 130 246 / 0.5);
4155--tw-ring-offset-shadow: 0 0 #0000;
4156--tw-ring-shadow: 0 0 #0000;
4157--tw-shadow: 0 0 #0000;
4158--tw-shadow-colored: 0 0 #0000;
4159--tw-blur:  ;
4160--tw-brightness:  ;
4161--tw-contrast:  ;
4162--tw-grayscale:  ;
4163--tw-hue-rotate:  ;
4164--tw-invert:  ;
4165--tw-saturate:  ;
4166--tw-sepia:  ;
4167--tw-drop-shadow:  ;
4168--tw-backdrop-blur:  ;
4169--tw-backdrop-brightness:  ;
4170--tw-backdrop-contrast:  ;
4171--tw-backdrop-grayscale:  ;
4172--tw-backdrop-hue-rotate:  ;
4173--tw-backdrop-invert:  ;
4174--tw-backdrop-opacity:  ;
4175--tw-backdrop-saturate:  ;
4176--tw-backdrop-sepia:  ;
4177--tw-contain-size:  ;
4178--tw-contain-layout:  ;
4179--tw-contain-paint:  ;
4180--tw-contain-style:  
4181}
4182::backdrop {
4183--tw-border-spacing-x: 0;
4184--tw-border-spacing-y: 0;
4185--tw-translate-x: 0;
4186--tw-translate-y: 0;
4187--tw-rotate: 0;
4188--tw-skew-x: 0;
4189--tw-skew-y: 0;
4190--tw-scale-x: 1;
4191--tw-scale-y: 1;
4192--tw-pan-x:  ;
4193--tw-pan-y:  ;
4194--tw-pinch-zoom:  ;
4195--tw-scroll-snap-strictness: proximity;
4196--tw-gradient-from-position:  ;
4197--tw-gradient-via-position:  ;
4198--tw-gradient-to-position:  ;
4199--tw-ordinal:  ;
4200--tw-slashed-zero:  ;
4201--tw-numeric-figure:  ;
4202--tw-numeric-spacing:  ;
4203--tw-numeric-fraction:  ;
4204--tw-ring-inset:  ;
4205--tw-ring-offset-width: 0px;
4206--tw-ring-offset-color: #fff;
4207--tw-ring-color: rgb(59 130 246 / 0.5);
4208--tw-ring-offset-shadow: 0 0 #0000;
4209--tw-ring-shadow: 0 0 #0000;
4210--tw-shadow: 0 0 #0000;
4211--tw-shadow-colored: 0 0 #0000;
4212--tw-blur:  ;
4213--tw-brightness:  ;
4214--tw-contrast:  ;
4215--tw-grayscale:  ;
4216--tw-hue-rotate:  ;
4217--tw-invert:  ;
4218--tw-saturate:  ;
4219--tw-sepia:  ;
4220--tw-drop-shadow:  ;
4221--tw-backdrop-blur:  ;
4222--tw-backdrop-brightness:  ;
4223--tw-backdrop-contrast:  ;
4224--tw-backdrop-grayscale:  ;
4225--tw-backdrop-hue-rotate:  ;
4226--tw-backdrop-invert:  ;
4227--tw-backdrop-opacity:  ;
4228--tw-backdrop-saturate:  ;
4229--tw-backdrop-sepia:  ;
4230--tw-contain-size:  ;
4231--tw-contain-layout:  ;
4232--tw-contain-paint:  ;
4233--tw-contain-style:  
4234}</style>
4235<h5>Service</h5>
4236<ul>
4237<li><a title="Zur Unterseite App" href="/service/jost-app">App</a></li>
4238<li><a title="Zur Unterseite Kundenkonto" href="/service/kundenkonto">Kundenkonto</a></li>
4239<li><a title="Zur Unterseite Newsletter" href="/service/newsletter-anmeldung">Newsletter</a></li>
4240
4241<li><a title="VERTRAG WIDERRUFEN" href="https://www.mode-jost.de/vertrag-widerrufen">VERTRAG WIDERRUFEN</a></li>
4242<li><a title="Gewährleistung" href="/gewaehrleistung">Gewährleistung</a></li>
4243</ul></div>
4244</section>
4245<section class="footer-section footer-section-2"><div class="widget block block-static-block">
4246    <style>*, ::before, ::after {
4247--tw-border-spacing-x: 0;
4248--tw-border-spacing-y: 0;
4249--tw-translate-x: 0;
4250--tw-translate-y: 0;
4251--tw-rotate: 0;
4252--tw-skew-x: 0;
4253--tw-skew-y: 0;
4254--tw-scale-x: 1;
4255--tw-scale-y: 1;
4256--tw-pan-x:  ;
4257--tw-pan-y:  ;
4258--tw-pinch-zoom:  ;
4259--tw-scroll-snap-strictness: proximity;
4260--tw-gradient-from-position:  ;
4261--tw-gradient-via-position:  ;
4262--tw-gradient-to-position:  ;
4263--tw-ordinal:  ;
4264--tw-slashed-zero:  ;
4265--tw-numeric-figure:  ;
4266--tw-numeric-spacing:  ;
4267--tw-numeric-fraction:  ;
4268--tw-ring-inset:  ;
4269--tw-ring-offset-width: 0px;
4270--tw-ring-offset-color: #fff;
4271--tw-ring-color: rgb(59 130 246 / 0.5);
4272--tw-ring-offset-shadow: 0 0 #0000;
4273--tw-ring-shadow: 0 0 #0000;
4274--tw-shadow: 0 0 #0000;
4275--tw-shadow-colored: 0 0 #0000;
4276--tw-blur:  ;
4277--tw-brightness:  ;
4278--tw-contrast:  ;
4279--tw-grayscale:  ;
4280--tw-hue-rotate:  ;
4281--tw-invert:  ;
4282--tw-saturate:  ;
4283--tw-sepia:  ;
4284--tw-drop-shadow:  ;
4285--tw-backdrop-blur:  ;
4286--tw-backdrop-brightness:  ;
4287--tw-backdrop-contrast:  ;
4288--tw-backdrop-grayscale:  ;
4289--tw-backdrop-hue-rotate:  ;
4290--tw-backdrop-invert:  ;
4291--tw-backdrop-opacity:  ;
4292--tw-backdrop-saturate:  ;
4293--tw-backdrop-sepia:  ;
4294--tw-contain-size:  ;
4295--tw-contain-layout:  ;
4296--tw-contain-paint:  ;
4297--tw-contain-style:  
4298}
4299::backdrop {
4300--tw-border-spacing-x: 0;
4301--tw-border-spacing-y: 0;
4302--tw-translate-x: 0;
4303--tw-translate-y: 0;
4304--tw-rotate: 0;
4305--tw-skew-x: 0;
4306--tw-skew-y: 0;
4307--tw-scale-x: 1;
4308--tw-scale-y: 1;
4309--tw-pan-x:  ;
4310--tw-pan-y:  ;
4311--tw-pinch-zoom:  ;
4312--tw-scroll-snap-strictness: proximity;
4313--tw-gradient-from-position:  ;
4314--tw-gradient-via-position:  ;
4315--tw-gradient-to-position:  ;
4316--tw-ordinal:  ;
4317--tw-slashed-zero:  ;
4318--tw-numeric-figure:  ;
4319--tw-numeric-spacing:  ;
4320--tw-numeric-fraction:  ;
4321--tw-ring-inset:  ;
4322--tw-ring-offset-width: 0px;
4323--tw-ring-offset-color: #fff;
4324--tw-ring-color: rgb(59 130 246 / 0.5);
4325--tw-ring-offset-shadow: 0 0 #0000;
4326--tw-ring-shadow: 0 0 #0000;
4327--tw-shadow: 0 0 #0000;
4328--tw-shadow-colored: 0 0 #0000;
4329--tw-blur:  ;
4330--tw-brightness:  ;
4331--tw-contrast:  ;
4332--tw-grayscale:  ;
4333--tw-hue-rotate:  ;
4334--tw-invert:  ;
4335--tw-saturate:  ;
4336--tw-sepia:  ;
4337--tw-drop-shadow:  ;
4338--tw-backdrop-blur:  ;
4339--tw-backdrop-brightness:  ;
4340--tw-backdrop-contrast:  ;
4341--tw-backdrop-grayscale:  ;
4342--tw-backdrop-hue-rotate:  ;
4343--tw-backdrop-invert:  ;
4344--tw-backdrop-opacity:  ;
4345--tw-backdrop-saturate:  ;
4346--tw-backdrop-sepia:  ;
4347--tw-contain-size:  ;
4348--tw-contain-layout:  ;
4349--tw-contain-paint:  ;
4350--tw-contain-style:  
4351}</style>
4352<style>*, ::before, ::after {
4353--tw-border-spacing-x: 0;
4354--tw-border-spacing-y: 0;
4355--tw-translate-x: 0;
4356--tw-translate-y: 0;
4357--tw-rotate: 0;
4358--tw-skew-x: 0;
4359--tw-skew-y: 0;
4360--tw-scale-x: 1;
4361--tw-scale-y: 1;
4362--tw-pan-x:  ;
4363--tw-pan-y:  ;
4364--tw-pinch-zoom:  ;
4365--tw-scroll-snap-strictness: proximity;
4366--tw-gradient-from-position:  ;
4367--tw-gradient-via-position:  ;
4368--tw-gradient-to-position:  ;
4369--tw-ordinal:  ;
4370--tw-slashed-zero:  ;
4371--tw-numeric-figure:  ;
4372--tw-numeric-spacing:  ;
4373--tw-numeric-fraction:  ;
4374--tw-ring-inset:  ;
4375--tw-ring-offset-width: 0px;
4376--tw-ring-offset-color: #fff;
4377--tw-ring-color: rgb(59 130 246 / 0.5);
4378--tw-ring-offset-shadow: 0 0 #0000;
4379--tw-ring-shadow: 0 0 #0000;
4380--tw-shadow: 0 0 #0000;
4381--tw-shadow-colored: 0 0 #0000;
4382--tw-blur:  ;
4383--tw-brightness:  ;
4384--tw-contrast:  ;
4385--tw-grayscale:  ;
4386--tw-hue-rotate:  ;
4387--tw-invert:  ;
4388--tw-saturate:  ;
4389--tw-sepia:  ;
4390--tw-drop-shadow:  ;
4391--tw-backdrop-blur:  ;
4392--tw-backdrop-brightness:  ;
4393--tw-backdrop-contrast:  ;
4394--tw-backdrop-grayscale:  ;
4395--tw-backdrop-hue-rotate:  ;
4396--tw-backdrop-invert:  ;
4397--tw-backdrop-opacity:  ;
4398--tw-backdrop-saturate:  ;
4399--tw-backdrop-sepia:  ;
4400--tw-contain-size:  ;
4401--tw-contain-layout:  ;
4402--tw-contain-paint:  ;
4403--tw-contain-style:  
4404}
4405::backdrop {
4406--tw-border-spacing-x: 0;
4407--tw-border-spacing-y: 0;
4408--tw-translate-x: 0;
4409--tw-translate-y: 0;
4410--tw-rotate: 0;
4411--tw-skew-x: 0;
4412--tw-skew-y: 0;
4413--tw-scale-x: 1;
4414--tw-scale-y: 1;
4415--tw-pan-x:  ;
4416--tw-pan-y:  ;
4417--tw-pinch-zoom:  ;
4418--tw-scroll-snap-strictness: proximity;
4419--tw-gradient-from-position:  ;
4420--tw-gradient-via-position:  ;
4421--tw-gradient-to-position:  ;
4422--tw-ordinal:  ;
4423--tw-slashed-zero:  ;
4424--tw-numeric-figure:  ;
4425--tw-numeric-spacing:  ;
4426--tw-numeric-fraction:  ;
4427--tw-ring-inset:  ;
4428--tw-ring-offset-width: 0px;
4429--tw-ring-offset-color: #fff;
4430--tw-ring-color: rgb(59 130 246 / 0.5);
4431--tw-ring-offset-shadow: 0 0 #0000;
4432--tw-ring-shadow: 0 0 #0000;
4433--tw-shadow: 0 0 #0000;
4434--tw-shadow-colored: 0 0 #0000;
4435--tw-blur:  ;
4436--tw-brightness:  ;
4437--tw-contrast:  ;
4438--tw-grayscale:  ;
4439--tw-hue-rotate:  ;
4440--tw-invert:  ;
4441--tw-saturate:  ;
4442--tw-sepia:  ;
4443--tw-drop-shadow:  ;
4444--tw-backdrop-blur:  ;
4445--tw-backdrop-brightness:  ;
4446--tw-backdrop-contrast:  ;
4447--tw-backdrop-grayscale:  ;
4448--tw-backdrop-hue-rotate:  ;
4449--tw-backdrop-invert:  ;
4450--tw-backdrop-opacity:  ;
4451--tw-backdrop-saturate:  ;
4452--tw-backdrop-sepia:  ;
4453--tw-contain-size:  ;
4454--tw-contain-layout:  ;
4455--tw-contain-paint:  ;
4456--tw-contain-style:  
4457}</style>
4458<h5>Kontakt</h5>
4459<ul>
4460<li>Jakob Jost GmbH</li>
4461<li><a title="E-Mail an das Modehaus Jost schreiben" href="mailto:[email protected]">[email protected]</a></li>
4462<li><a title="Beim Modehaus Jost anrufen" href="tel:+4963599520">06359 - 95 20</a></li>
4463<li><a title="Zur Unterseite Filialen" href="/filialen">Filialen</a></li>
4464</ul></div>
4465</section>
4466<section class="footer-section footer-section-3"><div class="widget block block-static-block">
4467    <h5>Rechtliches</h5>
4468<ul>
4469<li><a href="/impressum">Impressum</a></li>
4470<li><a href="/datenschutz">Datenschutz</a></li>
4471<li><a href="/widerruf">Widerrufsrecht</a></li>
4472<li><a href="/agb">AGB</a></li>
4473<li><a href="/barrierefreiheitserklaerung">Barrierefreiheitserklärung</a></li>
4474<li><a href="/" data-amcookie-js="footer-link">Cookie-Einstellungen</a></li>
4475</ul></div>
4476</section>
4477<section class="footer-section footer-section-4"><div class="widget block block-static-block">
4478    <style>*, ::before, ::after {
4479--tw-border-spacing-x: 0;
4480--tw-border-spacing-y: 0;
4481--tw-translate-x: 0;
4482--tw-translate-y: 0;
4483--tw-rotate: 0;
4484--tw-skew-x: 0;
4485--tw-skew-y: 0;
4486--tw-scale-x: 1;
4487--tw-scale-y: 1;
4488--tw-pan-x:  ;
4489--tw-pan-y:  ;
4490--tw-pinch-zoom:  ;
4491--tw-scroll-snap-strictness: proximity;
4492--tw-gradient-from-position:  ;
4493--tw-gradient-via-position:  ;
4494--tw-gradient-to-position:  ;
4495--tw-ordinal:  ;
4496--tw-slashed-zero:  ;
4497--tw-numeric-figure:  ;
4498--tw-numeric-spacing:  ;
4499--tw-numeric-fraction:  ;
4500--tw-ring-inset:  ;
4501--tw-ring-offset-width: 0px;
4502--tw-ring-offset-color: #fff;
4503--tw-ring-color: rgb(59 130 246 / 0.5);
4504--tw-ring-offset-shadow: 0 0 #0000;
4505--tw-ring-shadow: 0 0 #0000;
4506--tw-shadow: 0 0 #0000;
4507--tw-shadow-colored: 0 0 #0000;
4508--tw-blur:  ;
4509--tw-brightness:  ;
4510--tw-contrast:  ;
4511--tw-grayscale:  ;
4512--tw-hue-rotate:  ;
4513--tw-invert:  ;
4514--tw-saturate:  ;
4515--tw-sepia:  ;
4516--tw-drop-shadow:  ;
4517--tw-backdrop-blur:  ;
4518--tw-backdrop-brightness:  ;
4519--tw-backdrop-contrast:  ;
4520--tw-backdrop-grayscale:  ;
4521--tw-backdrop-hue-rotate:  ;
4522--tw-backdrop-invert:  ;
4523--tw-backdrop-opacity:  ;
4524--tw-backdrop-saturate:  ;
4525--tw-backdrop-sepia:  ;
4526--tw-contain-size:  ;
4527--tw-contain-layout:  ;
4528--tw-contain-paint:  ;
4529--tw-contain-style:  
4530}
4531::backdrop {
4532--tw-border-spacing-x: 0;
4533--tw-border-spacing-y: 0;
4534--tw-translate-x: 0;
4535--tw-translate-y: 0;
4536--tw-rotate: 0;
4537--tw-skew-x: 0;
4538--tw-skew-y: 0;
4539--tw-scale-x: 1;
4540--tw-scale-y: 1;
4541--tw-pan-x:  ;
4542--tw-pan-y:  ;
4543--tw-pinch-zoom:  ;
4544--tw-scroll-snap-strictness: proximity;
4545--tw-gradient-from-position:  ;
4546--tw-gradient-via-position:  ;
4547--tw-gradient-to-position:  ;
4548--tw-ordinal:  ;
4549--tw-slashed-zero:  ;
4550--tw-numeric-figure:  ;
4551--tw-numeric-spacing:  ;
4552--tw-numeric-fraction:  ;
4553--tw-ring-inset:  ;
4554--tw-ring-offset-width: 0px;
4555--tw-ring-offset-color: #fff;
4556--tw-ring-color: rgb(59 130 246 / 0.5);
4557--tw-ring-offset-shadow: 0 0 #0000;
4558--tw-ring-shadow: 0 0 #0000;
4559--tw-shadow: 0 0 #0000;
4560--tw-shadow-colored: 0 0 #0000;
4561--tw-blur:  ;
4562--tw-brightness:  ;
4563--tw-contrast:  ;
4564--tw-grayscale:  ;
4565--tw-hue-rotate:  ;
4566--tw-invert:  ;
4567--tw-saturate:  ;
4568--tw-sepia:  ;
4569--tw-drop-shadow:  ;
4570--tw-backdrop-blur:  ;
4571--tw-backdrop-brightness:  ;
4572--tw-backdrop-contrast:  ;
4573--tw-backdrop-grayscale:  ;
4574--tw-backdrop-hue-rotate:  ;
4575--tw-backdrop-invert:  ;
4576--tw-backdrop-opacity:  ;
4577--tw-backdrop-saturate:  ;
4578--tw-backdrop-sepia:  ;
4579--tw-contain-size:  ;
4580--tw-contain-layout:  ;
4581--tw-contain-paint:  ;
4582--tw-contain-style:  
4583}</style>
4584<div class="magezon-builder magezon-builder-preload"><div class="lt09grm mgz-element mgz-element-row full_width_row"><div class="mgz-element-inner lt09grm-s"><style> .bfb-element.required .bfb-element-label label > span:after { color: #e22626; content: '*'; font-size: 1.6rem; font-weight: 500; margin-left: 5px; } </style><div class="inner-content mgz-container"><div class="b4cb6b6 mgz-element mgz-element-column social-media mgz-col-xs-12"><div class="mgz-element-inner b4cb6b6-s social-media-sub"><div class="bodcnop mgz-element mgz-child mgz-element-text"><div class="mgz-element-inner bodcnop-s"><h5 style="margin: 0!important;">Social Media</h5></div></div><div class="m51uv2k mgz-element mgz-child mgz-element-raw_html social-media-link"><div class="mgz-element-inner m51uv2k-s social-media-link-sub"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha512-DTOQO9RWCH3ppGqcWaEA1BIZOC6xxalwEsw9c2QQeAIftl+Vegovlnee1c9QX4TctnWMn13TZye+giMm8e2LwA==" crossorigin="anonymous" referrerpolicy="no-referrer" /><br> <a href="https://www.facebook.com/ModehausJost/" target="_blank"><i class="fa-brands fa-facebook icons" style ="font-size: 28px; margin-right: 10px; "></i></a> <a href="https://www.instagram.com/modejost/?hl=de" target="_blank"><i class="fa-brands fa-instagram icons" style ="font-size: 30px; margin-right: 10px; "></i></a> <a href="https://www.youtube.com/channel/UCuO0mMfOvXiGOcFufPjjRlA"><i class="fa-brands fa-youtube icons" style ="font-size: 30px; margin-right: 10px; "></i></a></div></div></div></div><div class="fadokag mgz-element mgz-element-column social-app mgz-col-xs-12"><div class="mgz-element-inner fadokag-s social-app-sub"><div class="ue3hlag mgz-element mgz-child mgz-element-text"><div class="mgz-element-inner ue3hlag-s"><h5>Jost App</h5></div></div><div class="et3087n mgz-element mgz-child mgz-element-raw_html app-link"><div class="mgz-element-inner et3087n-s app-link-sub"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"><br> <a href="https://apps.apple.com/de/app/jost/id1199982892" target="_blank"><i class="fa-brands fa-apple" style ="font-size: 33px; margin-right: 10px; "></i></a> <a href="https://play.google.com/store/apps/details?id=com.modejost.jostapp" target="_blank"><i class="fa fa-android" style ="font-size: 33px; margin-right: 10px; "></i></a></div></div></div></div></div>
4584<script>
4585    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
4586        .then(() => {
4587            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/magezon-builder.js', 'mgzbuilder');
4588        })
4589        .then(() => {
4590            const elemId = $('.lt09grm');
4591            let mgzBuilder = new MagezonBuilder(elemId);
4592        })
4593</script>
4593</div></div></div></div>
4594</section>
4595<div class="footer-sub">
4596<div class="footer-sub-inner"><address class="company">Jakob Jost GmbH | Bahnhofstraße 1a | 67269 Grünstadt | [email protected]</address><address class="developer">Realisiert: <a title="Modehaus.de: System | eCommerce für Modehäuser" href="http://system.modehaus.de" target="_blank" rel="noopener">Modehaus.de</a> | <a title="SOL. Service Online - Magento - TYPO3 - Apps - Print -aus Hameln - SOLdesign.de" href="http://www.soldesign.de" target="_blank" rel="noopener">SOL.Service Online, Hameln</a></address></div>
4597</div></div></footer>
4598<div x-data="initCookieGroupInfo_6ab51c7001580" x-bind="eventListeners">
4599        <dialog
4600            x-ref="classic-am-cookie-group-info"
4601            data-dialog-ref-name="classic-am-cookie-group-info"
4602            aria-labelledby="amcookie-group-info"
4603            closeby="any"
4604            class="open:flex flex-col max-h-[92vh] max-w-[90vw] overflow-auto
4605            bg-ambar-info-bar-background shadow-xl rounded-lg p-8 text-gray-700 relative backdrop:bg-gray-500/50"
4606            x-bind="dialogConfig"
4607            x-htmldialog="closeHandler"
4608    >
4609                <template x-if="group">
4610                <div id="amcookie-group-info">
4611                    <button @click.stop="closeHandler"
4612                            aria-label="Schlie&#xDF;en"
4613                            class="absolute right-2 top-2 text-gray-300 transition
4614                                hover:text-black focus:drop-shadow-md hover:drop-shadow-md"
4615                    >
4616                        <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24"
4617                             stroke="currentColor"
4618                             stroke-width="2">
4619                            <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/>
4620                        </svg>
4621                    </button>
4622                    <div class="md:flex md:justify-start pb-4">
4623                        <h3 class="text-xl font-semibold text-ambar-info-bar-title" x-text="group.name"></h3>
4624                    </div>
4625                    <template x-if="group.description">
4626                        <p class="mb-4 text-ambar-info-bar-description" x-html="group.description"></p>
4627                    </template>
4628                    <div class="overflow-x-scroll md:overflow-x-auto">
4629                        <table class="table-auto w-full mb-4 text-left">
4630                            <thead class="text-ambar-info-bar-table-header">
4631                            <tr>
4632                                <th class="pr-4">Cookie-Name</th>
4633                                <th class="pr-4">Cookie-Anbieter</th>
4634                                <th class="min-w-[30%] pr-4">Cookie Beschreibung</th>
4635                                <th class="pr-4">Cookie-Lebensdauer</th>
4636                                <th class="pr-4">Cookie Typ</th>
4637                            </tr>
4638                            </thead>
4639                            <tbody class="text-ambar-info-bar-table-content">
4640                            <template x-for="(item, index) in group.cookies" :key="index">
4641                                <tr>
4642                                    <td x-text="item.name" class="font-semibold pr-4"></td>
4643                                    <td x-text="item.provider" class="pr-4"></td>
4644                                    <td x-html="item.description" class="min-w-[30%] pr-4"></td>
4645                                    <td x-text="item.lifetime" class="pr-4"></td>
4646                                    <td x-text="item.type" class="pr-4"></td>
4647                                </tr>
4648                            </template>
4649                            </tbody>
4650                        </table>
4651                    </div>
4652                </div>
4653            </template>
4654            <button
4655                @click.stop="closeHandler"
4656                aria-label="Fertig"
4657                class="mt-4 w-full text-xs font-semibold text-ambar-info-bar-button-text
4658                    hover:text-ambar-info-bar-button-hover-text uppercase bg-ambar-info-bar-button
4659                    hover:bg-ambar-info-bar-button-hover ambar-action-btn rounded-sm text-center text-sm transition-colors focus:drop-shadow hover:drop-shadow px-2 py-4"
4660            >
4661                Fertig            </button>
4662        </dialog>
4663  
4664</div>
4665<script data-cfasync="false">
4666    'use strict';
4667
4668    function initCookieGroupInfo_6ab51c7001580() {
4669        return {
4670            ...hyva.modal({
4671                dialog: 'classic-am-cookie-group-info'
4672            }),
4673            group: null,
4674            eventListeners: {
4675                ['@classic-close-am-cookie-group-info.window']() {
4676                    this.closeHandler();
4677                },
4678                ['@classic-open-am-cookie-group-info.window'](event) {
4679                    this.group = event.detail;
4680
4681                    if (!!this.group) {
4682                        /*
4683                         If modal have big cookies list this can lead to
4684                         trigger hide event in hyva.modal.eventListeners.click,
4685                         so we should wait till this.group is reassigned
4686                         */
4687                        this.$nextTick(() => this.show('classic-am-cookie-group-info'));
4688                    }
4689                }
4690            },
4691            closeHandler: function () {
4692                this.hide('classic-am-cookie-group-info');
4693            }
4694        }
4695    }
4696
4697    window.addEventListener(
4698        'alpine:init',
4699        () => Alpine.data(
4700            'initCookieGroupInfo_6ab51c7001580',
4701            initCookieGroupInfo_6ab51c7001580        ),
4702        {once: true}
4703    );
4704</script>
4704
4705
4706
4707<style>
4708        @keyframes splide-loading{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.splide__track--draggable{-webkit-touch-callout:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.splide__track--fade>.splide__list>.splide__slide{margin:0!important;opacity:0;z-index:0}.splide__track--fade>.splide__list>.splide__slide.is-active{opacity:1;z-index:1}.splide--rtl{direction:rtl}.splide__track--ttb>.splide__list{display:block}.splide__container{box-sizing:border-box;position:relative}.splide__list{backface-visibility:hidden;display:-ms-flexbox;display:flex;height:100%;margin:0!important;padding:0!important}.splide.is-initialized:not(.is-active) .splide__list{display:block}.splide__pagination{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;justify-content:center;margin:0;pointer-events:none}.splide__pagination li{display:inline-block;line-height:1;list-style-type:none;margin:0;pointer-events:auto}.splide:not(.is-overflow) .splide__pagination{display:none}.splide__progress__bar{width:0}.splide{position:relative;visibility:hidden}.splide.is-initialized,.splide.is-rendered{visibility:visible}.splide__slide{backface-visibility:hidden;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0;list-style-type:none!important;margin:0;position:relative}.splide__slide img{vertical-align:bottom}.splide__spinner{animation:splide-loading 1s linear infinite;border:2px solid #999;border-left-color:transparent;border-radius:50%;bottom:0;contain:strict;display:inline-block;height:20px;left:0;margin:auto;position:absolute;right:0;top:0;width:20px}.splide__sr{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.splide__toggle.is-active .splide__toggle__play,.splide__toggle__pause{display:none}.splide__toggle.is-active .splide__toggle__pause{display:inline}.splide__track{overflow:hidden;position:relative;z-index:0}
4709
4710    /* Custom additions from the splide.min.css but without the custom style */
4711    .splide__pagination--ttb {
4712        position: absolute;
4713        display: inline-flex;
4714        flex-direction: column;
4715        top: 0;
4716        bottom: 0;
4717        right: 100%;
4718    }
4719
4720    /* Hide the pagination dots when the input device is a touch based input */
4721    @media (pointer: coarse) or (max-width: 639px) {
4722        .splide__pagination { display: none }
4723    }
4724</style>
4725
4726<script>
4727    function r(n,t){for(var i=0;i<t.length;i++){var r=t[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}function Jt(n,t,i){t&&r(n.prototype,t),i&&r(n,i),Object.defineProperty(n,"prototype",{writable:!1})}
4728    
vendor: 17,762 bytes, line 4728
4728var n,t;n=this,t=function(){"use strict";var v="(prefers-reduced-motion: reduce)",G=4,rn=5,r={CREATED:1,MOUNTED:2,IDLE:3,MOVING:G,SCROLLING:rn,DRAGGING:6,DESTROYED:7};function D(n){n.length=0}function o(n,t,i){return Array.prototype.slice.call(n,t,i)}function R(n){return n.bind.apply(n,[null].concat(o(arguments,1)))}function on(){}var p=setTimeout;function h(n){return requestAnimationFrame(n)}function u(n,t){return typeof t===n}function un(n){return!c(n)&&u("object",n)}var e=Array.isArray,x=R(u,"function"),C=R(u,"string"),en=R(u,"undefined");function c(n){return null===n}function m(n){try{return n instanceof(n.ownerDocument.defaultView||window).HTMLElement}catch(n){return!1}}function y(n){return e(n)?n:[n]}function g(n,t){y(n).forEach(t)}function b(n,t){return-1<n.indexOf(t)}function k(n,t){return n.push.apply(n,y(t)),n}function A(t,n,i){t&&g(n,function(n){n&&t.classList[i?"add":"remove"](n)})}function M(n,t){A(n,C(t)?t.split(" "):t,!0)}function L(n,t){g(t,n.appendChild.bind(n))}function O(n,i){g(n,function(n){var t=(i||n).parentNode;t&&t.insertBefore(n,i)})}function cn(n,t){return m(n)&&(n.msMatchesSelector||n.matches).call(n,t)}function S(n,t){n=n?o(n.children):[];return t?n.filter(function(n){return cn(n,t)}):n}function fn(n,t){return t?S(n,t)[0]:n.firstElementChild}var E=Object.keys;function w(t,i,n){t&&(n?E(t).reverse():E(t)).forEach(function(n){"__proto__"!==n&&i(t[n],n)})}function an(r){return o(arguments,1).forEach(function(i){w(i,function(n,t){r[t]=i[t]})}),r}function d(i){return o(arguments,1).forEach(function(n){w(n,function(n,t){e(n)?i[t]=n.slice():un(n)?i[t]=d({},un(i[t])?i[t]:{},n):i[t]=n})}),i}function sn(t,n){g(n||E(t),function(n){delete t[n]})}function P(n,i){g(n,function(t){g(i,function(n){t&&t.removeAttribute(n)})})}function I(i,t,r){un(t)?w(t,function(n,t){I(i,t,n)}):g(i,function(n){c(r)||""===r?P(n,t):n.setAttribute(t,String(r))})}function j(n,t,i){n=document.createElement(n);return t&&(C(t)?M:I)(n,t),i&&L(i,n),n}function _(n,t,i){if(en(i))return getComputedStyle(n)[t];c(i)||(n.style[t]=""+i)}function ln(n,t){_(n,"display",t)}function dn(n){n.setActive&&n.setActive()||n.focus({preventScroll:!0})}function z(n,t){return n.getAttribute(t)}function vn(n,t){return n&&n.classList.contains(t)}function N(n){return n.getBoundingClientRect()}function T(n){g(n,function(n){n&&n.parentNode&&n.parentNode.removeChild(n)})}function hn(n){return fn((new DOMParser).parseFromString(n,"text/html").body)}function F(n,t){n.preventDefault(),t&&(n.stopPropagation(),n.stopImmediatePropagation())}function pn(n,t){return n&&n.querySelector(t)}function gn(n,t){return t?o(n.querySelectorAll(t)):[]}function X(n,t){A(n,t,!1)}function mn(n){return n.timeStamp}function W(n){return C(n)?n:n?n+"px":""}var yn="splide",f="data-"+yn;function bn(n,t){if(!n)throw new Error("["+yn+"] "+(t||""))}var Y=Math.min,wn=Math.max,xn=Math.floor,kn=Math.ceil,U=Math.abs;function Sn(n,t,i){return U(n-t)<i}function En(n,t,i,r){var o=Y(t,i),t=wn(t,i);return r?o<n&&n<t:o<=n&&n<=t}function q(n,t,i){var r=Y(t,i),t=wn(t,i);return Y(wn(r,n),t)}function Ln(n){return(0<n)-(n<0)}function On(t,n){return g(n,function(n){t=t.replace("%s",""+n)}),t}function An(n){return n<10?"0"+n:""+n}var _n={};function zn(){var c=[];function i(n,i,r){g(n,function(t){t&&g(i,function(n){n.split(" ").forEach(function(n){n=n.split(".");r(t,n[0],n[1])})})})}return{bind:function(n,t,u,e){i(n,t,function(n,t,i){var r="addEventListener"in n,o=r?n.removeEventListener.bind(n,t,u,e):n.removeListener.bind(n,u);r?n.addEventListener(t,u,e):n.addListener(u),c.push([n,t,i,u,o])})},unbind:function(n,t,o){i(n,t,function(t,i,r){c=c.filter(function(n){return!!(n[0]!==t||n[1]!==i||n[2]!==r||o&&n[3]!==o)||(n[4](),!1)})})},dispatch:function(n,t,i){var r;return"function"==typeof CustomEvent?r=new CustomEvent(t,{bubbles:!0,detail:i}):(r=document.createEvent("CustomEvent")).initCustomEvent(t,!0,!1,i),n.dispatchEvent(r),r},destroy:function(){c.forEach(function(n){n[4]()}),D(c)}}}var B="mounted",H="move",Dn="moved",Mn="click",Pn="active",In="inactive",Rn="visible",Cn="hidden",J="refresh",K="updated",jn="resize",Nn="resized",Tn="scroll",V="scrolled",a="destroy",Gn="navigation:mounted",Fn="autoplay:play",Xn="autoplay:pause",Wn="lazyload:loaded",Yn="sk",Un="sh";function Q(n){var i=n?n.event.bus:document.createDocumentFragment(),r=zn();return n&&n.event.on(a,r.destroy),an(r,{bus:i,on:function(n,t){r.bind(i,y(n).join(" "),function(n){t.apply(t,e(n.detail)?n.detail:[])})},off:R(r.unbind,i),emit:function(n){r.dispatch(i,n,o(arguments,1))}})}function qn(t,n,i,r){var o,u,e=Date.now,c=0,f=!0,a=0;function s(){if(!f){if(c=t?Y((e()-o)/t,1):1,i&&i(c),1<=c&&(n(),o=e(),r&&++a>=r))return l();u=h(s)}}function l(){f=!0}function d(){u&&cancelAnimationFrame(u),f=!(u=c=0)}return{start:function(n){n||d(),o=e()-(n?c*t:0),f=!1,u=h(s)},rewind:function(){o=e(),c=0,i&&i(c)},pause:l,cancel:d,set:function(n){t=n},isPaused:function(){return f}}}function s(n){var t=n;return{set:function(n){t=n},is:function(n){return b(y(n),t)}}}var n="Arrow",Bn=n+"Left",Hn=n+"Right",t=n+"Up",n=n+"Down",Jn="ttb",l={width:["height"],left:["top","right"],right:["bottom","left"],x:["y"],X:["Y"],Y:["X"],ArrowLeft:[t,Hn],ArrowRight:[n,Bn]};var Z="role",$="tabindex",i="aria-",Kn=i+"controls",Vn=i+"current",Qn=i+"selected",nn=i+"label",Zn=i+"labelledby",$n=i+"hidden",nt=i+"orientation",tt=i+"roledescription",it=i+"live",rt=i+"busy",ot=i+"atomic",ut=[Z,$,"disabled",Kn,Vn,nn,Zn,$n,nt,tt],i=yn+"__",et=yn,ct=i+"track",ft=i+"list",at=i+"slide",st=at+"--clone",lt=at+"__container",dt=i+"arrows",vt=i+"arrow",ht=vt+"--prev",pt=vt+"--next",gt=i+"pagination",mt=gt+"__page",yt=i+"progress"+"__bar",bt=i+"toggle",wt=i+"sr",tn="is-active",xt="is-prev",kt="is-next",St="is-visible",Et="is-loading",Lt="is-focus-in",Ot="is-overflow",At=[tn,St,xt,kt,Et,Lt,Ot];var _t="touchstart mousedown",zt="touchmove mousemove",Dt="touchend touchcancel mouseup click";var Mt="slide",Pt="loop",It="fade";function Rt(o,r,t,u){var e,n=Q(o),i=n.on,c=n.emit,f=n.bind,a=o.Components,s=o.root,l=o.options,d=l.isNavigation,v=l.updateOnMove,h=l.i18n,p=l.pagination,g=l.slideFocus,m=a.Direction.resolve,y=z(u,"style"),b=z(u,nn),w=-1<t,x=fn(u,"."+lt);function k(){var n=o.splides.map(function(n){n=n.splide.Components.Slides.getAt(r);return n?n.slide.id:""}).join(" ");I(u,nn,On(h.slideX,(w?t:r)+1)),I(u,Kn,n),I(u,Z,g?"button":""),g&&P(u,tt)}function S(){e||E()}function E(){var n,t,i;e||(n=o.index,(i=L())!==vn(u,tn)&&(A(u,tn,i),I(u,Vn,d&&i||""),c(i?Pn:In,O)),i=function(){if(o.is(It))return L();var n=N(a.Elements.track),t=N(u),i=m("left",!0),r=m("right",!0);return xn(n[i])<=kn(t[i])&&xn(t[r])<=kn(n[r])}(),t=!i&&(!L()||w),o.state.is([G,rn])||I(u,$n,t||""),I(gn(u,l.focusableNodes||""),$,t?-1:""),g&&I(u,$,t?-1:0),i!==vn(u,St)&&(A(u,St,i),c(i?Rn:Cn,O)),i||document.activeElement!==u||(t=a.Slides.getAt(o.index))&&dn(t.slide),A(u,xt,r===n-1),A(u,kt,r===n+1))}function L(){var n=o.index;return n===r||l.cloneStatus&&n===t}var O={index:r,slideIndex:t,slide:u,container:x,isClone:w,mount:function(){w||(u.id=s.id+"-slide"+An(r+1),I(u,Z,p?"tabpanel":"group"),I(u,tt,h.slide),I(u,nn,b||On(h.slideLabel,[r+1,o.length]))),f(u,"click",R(c,Mn,O)),f(u,"keydown",R(c,Yn,O)),i([Dn,Un,V],E),i(Gn,k),v&&i(H,S)},destroy:function(){e=!0,n.destroy(),X(u,At),P(u,ut),I(u,"style",y),I(u,nn,b||"")},update:E,style:function(n,t,i){_(i&&x||u,n,t)},isWithin:function(n,t){return n=U(n-r),(n=w||!l.rewind&&!o.is(Pt)?n:Y(n,o.length-n))<=t}};return O}var Ct=f+"-interval";var jt={passive:!1,capture:!0};var Nt={Spacebar:" ",Right:Hn,Left:Bn,Up:t,Down:n};function Tt(n){return n=C(n)?n:n.key,Nt[n]||n}var Gt="keydown";var Ft=f+"-lazy",Xt=Ft+"-srcset",Wt="["+Ft+"], ["+Xt+"]";var Yt=[" ","Enter"];var Ut=Object.freeze({__proto__:null,Media:function(r,n,o){var u=r.state,t=o.breakpoints||{},e=o.reducedMotion||{},i=zn(),c=[];function f(n){n&&i.destroy()}function a(n,t){t=matchMedia(t);i.bind(t,"change",s),c.push([n,t])}function s(){var n=u.is(7),t=o.direction,i=c.reduce(function(n,t){return d(n,t[1].matches?t[0]:{})},{});sn(o),l(i),o.destroy?r.destroy("completely"===o.destroy):n?(f(!0),r.mount()):t!==o.direction&&r.refresh()}function l(n,t,i){d(o,n),t&&d(Object.getPrototypeOf(o),n),!i&&u.is(1)||r.emit(K,o)}return{setup:function(){var i="min"===o.mediaQuery;E(t).sort(function(n,t){return i?+n-+t:+t-+n}).forEach(function(n){a(t[n],"("+(i?"min":"max")+"-width:"+n+"px)")}),a(e,v),s()},destroy:f,reduce:function(n){matchMedia(v).matches&&(n?d(o,e):sn(o,E(e)))},set:l}},Direction:function(n,t,o){return{resolve:function(n,t,i){var r="rtl"!==(i=i||o.direction)||t?i===Jn?0:-1:1;return l[n]&&l[n][r]||n.replace(/width|left|right/i,function(n,t){n=l[n.toLowerCase()][r]||n;return 0<t?n.charAt(0).toUpperCase()+n.slice(1):n})},orient:function(n){return n*("rtl"===o.direction?1:-1)}}},Elements:function(n,t,i){var r,o,u,e=Q(n),c=e.on,f=e.bind,a=n.root,s=i.i18n,l={},d=[],v=[],h=[];function p(){r=y("."+ct),o=fn(r,"."+ft),bn(r&&o,"A track/list element is missing."),k(d,S(o,"."+at+":not(."+st+")")),w({arrows:dt,pagination:gt,prev:ht,next:pt,bar:yt,toggle:bt},function(n,t){l[t]=y("."+n)}),an(l,{root:a,track:r,list:o,slides:d});var n=a.id||function(n){return""+n+An(_n[n]=(_n[n]||0)+1)}(yn),t=i.role;a.id=n,r.id=r.id||n+"-track",o.id=o.id||n+"-list",!z(a,Z)&&"SECTION"!==a.tagName&&t&&I(a,Z,t),I(a,tt,s.carousel),I(o,Z,"presentation"),m()}function g(n){var t=ut.concat("style");D(d),X(a,v),X(r,h),P([r,o],t),P(a,n?t:["style",tt])}function m(){X(a,v),X(r,h),v=b(et),h=b(ct),M(a,v),M(r,h),I(a,nn,i.label),I(a,Zn,i.labelledby)}function y(n){n=pn(a,n);return n&&function(n,t){if(x(n.closest))return n.closest(t);for(var i=n;i&&1===i.nodeType&&!cn(i,t);)i=i.parentElement;return i}(n,"."+et)===a?n:void 0}function b(n){return[n+"--"+i.type,n+"--"+i.direction,i.drag&&n+"--draggable",i.isNavigation&&n+"--nav",n===et&&tn]}return an(l,{setup:p,mount:function(){c(J,g),c(J,p),c(K,m),f(document,_t+" keydown",function(n){u="keydown"===n.type},{capture:!0}),f(a,"focusin",function(){A(a,Lt,!!u)})},destroy:g})},Slides:function(r,o,u){var n=Q(r),t=n.on,e=n.emit,c=n.bind,f=(n=o.Elements).slides,a=n.list,s=[];function i(){f.forEach(function(n,t){d(n,t,-1)})}function l(){h(function(n){n.destroy()}),D(s)}function d(n,t,i){t=Rt(r,t,i,n);t.mount(),s.push(t),s.sort(function(n,t){return n.index-t.index})}function v(n){return n?p(function(n){return!n.isClone}):s}function h(n,t){v(t).forEach(n)}function p(t){return s.filter(x(t)?t:function(n){return C(t)?cn(n.slide,t):b(y(t),n.index)})}return{mount:function(){i(),t(J,l),t(J,i)},destroy:l,update:function(){h(function(n){n.update()})},register:d,get:v,getIn:function(n){var t=o.Controller,i=t.toIndex(n),r=t.hasFocus()?1:u.perPage;return p(function(n){return En(n.index,i,i+r-1)})},getAt:function(n){return p(n)[0]},add:function(n,o){g(n,function(n){var t,i,r;m(n=C(n)?hn(n):n)&&((t=f[o])?O(n,t):L(a,n),M(n,u.classes.slide),t=n,i=R(e,jn),t=gn(t,"img"),(r=t.length)?t.forEach(function(n){c(n,"load error",function(){--r||i()})}):i())}),e(J)},remove:function(n){T(p(n).map(function(n){return n.slide})),e(J)},forEach:h,filter:p,style:function(t,i,r){h(function(n){n.style(t,i,r)})},getLength:function(n){return(n?f:s).length},isEnough:function(){return s.length>u.perPage}}},Layout:function(t,n,i){var r,o,u,e=(a=Q(t)).on,c=a.bind,f=a.emit,a=n.Slides,s=n.Direction.resolve,l=(n=n.Elements).root,d=n.track,v=n.list,h=a.getAt,p=a.style;function g(){r=i.direction===Jn,_(l,"maxWidth",W(i.width)),_(d,s("paddingLeft"),y(!1)),_(d,s("paddingRight"),y(!0)),m(!0)}function m(n){var t=N(l);!n&&o.width===t.width&&o.height===t.height||(_(d,"height",function(){var n="";r&&(bn(n=b(),"height or heightRatio is missing."),n="calc("+n+" - "+y(!1)+" - "+y(!0)+")");return n}()),p(s("marginRight"),W(i.gap)),p("width",i.autoWidth?null:W(i.fixedWidth)||(r?"":w())),p("height",W(i.fixedHeight)||(r?i.autoHeight?null:w():b()),!0),o=t,f(Nn),u!==(u=O())&&(A(l,Ot,u),f("overflow",u)))}function y(n){var t=i.padding,n=s(n?"right":"left");return t&&W(t[n]||(un(t)?0:t))||"0px"}function b(){return W(i.height||N(v).width*i.heightRatio)}function w(){var n=W(i.gap);return"calc((100%"+(n&&" + "+n)+")/"+(i.perPage||1)+(n&&" - "+n)+")"}function x(){return N(v)[s("width")]}function k(n,t){n=h(n||0);return n?N(n.slide)[s("width")]+(t?0:L()):0}function S(n,t){var i,n=h(n);return n?(n=N(n.slide)[s("right")],i=N(v)[s("left")],U(n-i)+(t?0:L())):0}function E(n){return S(t.length-1)-S(0)+k(0,n)}function L(){var n=h(0);return n&&parseFloat(_(n.slide,s("marginRight")))||0}function O(){return t.is(It)||E(!0)>x()}return{mount:function(){var n,t,i;g(),c(window,"resize load",(n=R(f,jn),i=qn(t||0,n,null,1),function(){i.isPaused()&&i.start()})),e([K,J],g),e(jn,m)},resize:m,listSize:x,slideSize:k,sliderSize:E,totalSize:S,getPadding:function(n){return parseFloat(_(d,s("padding"+(n?"Right":"Left"))))||0},isOverflow:O}},Clones:function(c,i,f){var t,r=Q(c),n=r.on,a=i.Elements,s=i.Slides,o=i.Direction.resolve,l=[];function u(){if(n(J,d),n([K,jn],v),t=h()){var o=t,u=s.get().slice(),e=u.length;if(e){for(;u.length<o;)k(u,u);k(u.slice(-o),u.slice(0,o)).forEach(function(n,t){var i=t<o,r=function(n,t){n=n.cloneNode(!0);return M(n,f.classes.clone),n.id=c.root.id+"-clone"+An(t+1),n}(n.slide,t);i?O(r,u[0].slide):L(a.list,r),k(l,r),s.register(r,t-o+(i?0:e),n.index)})}i.Layout.resize(!0)}}function d(){e(),u()}function e(){T(l),D(l),r.destroy()}function v(){var n=h();t!==n&&(t<n||!n)&&r.emit(J)}function h(){var n,t=f.clones;return c.is(Pt)?en(t)&&(t=(n=f[o("fixedWidth")]&&i.Layout.slideSize(0))&&kn(N(a.track)[o("width")]/n)||f[o("autoWidth")]&&c.length||2*f.perPage):t=0,t}return{mount:u,destroy:e}},Move:function(r,c,o){var e,n=Q(r),t=n.on,f=n.emit,a=r.state.set,u=(n=c.Layout).slideSize,i=n.getPadding,s=n.totalSize,l=n.listSize,d=n.sliderSize,v=(n=c.Direction).resolve,h=n.orient,p=(n=c.Elements).list,g=n.track;function m(){c.Controller.isBusy()||(c.Scroll.cancel(),y(r.index),c.Slides.update())}function y(n){b(S(n,!0))}function b(n,t){r.is(It)||(t=t?n:function(n){{var t,i;r.is(Pt)&&(t=k(n),i=t>c.Controller.getEnd(),(t<0||i)&&(n=w(n,i)))}return n}(n),_(p,"transform","translate"+v("X")+"("+t+"px)"),n!==t&&f(Un))}function w(n,t){var i=n-L(t),r=d();return n-=h(r*(kn(U(i)/r)||1))*(t?1:-1)}function x(){b(E(),!0),e.cancel()}function k(n){for(var t=c.Slides.get(),i=0,r=1/0,o=0;o<t.length;o++){var u=t[o].index,e=U(S(u,!0)-n);if(!(e<=r))break;r=e,i=u}return i}function S(n,t){var i=h(s(n-1)-(n=n,"center"===(i=o.focus)?(l()-u(n,!0))/2:+i*u(n)||0));return t?(n=i,n=o.trimSpace&&r.is(Mt)?q(n,0,h(d(!0)-l())):n):i}function E(){var n=v("left");return N(p)[n]-N(g)[n]+h(i(!1))}function L(n){return S(n?c.Controller.getEnd():0,!!o.trimSpace)}return{mount:function(){e=c.Transition,t([B,Nn,K,J],m)},move:function(n,t,i,r){var o,u;n!==t&&(o=i<n,u=h(w(E(),o)),o?0<=u:u<=p[v("scrollWidth")]-N(g)[v("width")])&&(x(),b(w(E(),i<n),!0)),a(G),f(H,t,i,n),e.start(t,function(){a(3),f(Dn,t,i,n),r&&r()})},jump:y,translate:b,shift:w,cancel:x,toIndex:k,toPosition:S,getPosition:E,getLimit:L,exceededLimit:function(n,t){t=en(t)?E():t;var i=!0!==n&&h(t)<h(L(!1)),n=!1!==n&&h(t)>h(L(!0));return i||n},reposition:m}},Controller:function(o,u,e){var c,f,a,s,n=Q(o),t=n.on,i=n.emit,l=u.Move,d=l.getPosition,r=l.getLimit,v=l.toPosition,h=(n=u.Slides).isEnough,p=n.getLength,g=e.omitEnd,m=o.is(Pt),y=o.is(Mt),b=R(L,!1),w=R(L,!0),x=e.start||0,k=x;function S(){f=p(!0),a=e.perMove,s=e.perPage,c=_();var n=q(x,0,g?c:f-1);n!==x&&(x=n,l.reposition())}function E(){c!==_()&&i("ei")}function L(n,t){var i=a||(P()?1:s),i=O(x+i*(n?-1:1),x,!(a||P()));return-1===i&&y&&!Sn(d(),r(!n),1)?n?0:c:t?i:A(i)}function O(n,t,i){var r;return h()||P()?((r=function(n){if(y&&"move"===e.trimSpace&&n!==x)for(var t=d();t===v(n,!0)&&En(n,0,o.length-1,!e.rewind);)n<x?--n:++n;return n}(n))!==n&&(t=n,n=r,i=!1),n<0||c<n?n=a||!En(0,n,t,!0)&&!En(c,t,n,!0)?m?i?n<0?-(f%s||s):f:n:e.rewind?n<0?c:0:-1:z(D(n)):i&&n!==t&&(n=z(D(t)+(n<t?-1:1)))):n=-1,n}function A(n){return m?(n+f)%f||0:n}function _(){for(var n=f-(P()||m&&a?1:s);g&&0<n--;)if(v(f-1,!0)!==v(n,!0)){n++;break}return q(n,0,f-1)}function z(n){return q(P()?n:s*n,0,c)}function D(n){return P()?Y(n,c):xn((c<=n?f-1:n)/s)}function M(n){n!==x&&(k=x,x=n)}function P(){return!en(e.focus)||e.isNavigation}function I(){return o.state.is([G,rn])&&!!e.waitForTransition}return{mount:function(){S(),t([K,J,"ei"],S),t(Nn,E)},go:function(n,t,i){var r;I()||-1<(r=A(n=function(n){var t=x;{var i,r;C(n)?(r=n.match(/([+\-<>])(\d+)?/)||[],i=r[1],r=r[2],"+"===i||"-"===i?t=O(x+ +(""+i+(+r||1)),x):">"===i?t=r?z(+r):b(!0):"<"===i&&(t=w(!0))):t=m?n:q(n,0,c)}return t}(n)))&&(t||r!==x)&&(M(r),l.move(n,r,k,i))},scroll:function(n,t,i,r){u.Scroll.scroll(n,t,i,function(){var n=A(l.toIndex(d()));M(g?Y(n,c):n),r&&r()})},getNext:b,getPrev:w,getAdjacent:L,getEnd:_,setIndex:M,getIndex:function(n){return n?k:x},toIndex:z,toPage:D,toDest:function(n){return n=l.toIndex(n),y?q(n,0,c):n},hasFocus:P,isBusy:I}},Arrows:function(o,n,t){var i,r,u=Q(o),e=u.on,c=u.bind,f=u.emit,a=t.classes,s=t.i18n,l=n.Elements,d=n.Controller,v=l.arrows,h=l.track,p=v,g=l.prev,m=l.next,y={};function b(){var n=t.arrows;!n||g&&m||(p=v||j("div",a.arrows),g=S(!0),m=S(!1),i=!0,L(p,[g,m]),v||O(p,h)),g&&m&&(an(y,{prev:g,next:m}),ln(p,n?"":"none"),M(p,r=dt+"--"+t.direction),n&&(e([B,Dn,J,V,"ei"],E),c(m,"click",R(k,">")),c(g,"click",R(k,"<")),E(),I([g,m],Kn,h.id),f("arrows:mounted",g,m))),e(K,w)}function w(){x(),b()}function x(){u.destroy(),X(p,r),i?(T(v?[g,m]:p),g=m=null):P([g,m],ut)}function k(n){d.go(n,!0)}function S(n){return hn('<button class="'+a.arrow+" "+(n?a.prev:a.next)+'" type="button"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" width="40" height="40" focusable="false"><path d="'+(t.arrowPath||"m15.5 0.932-4.3 4.38 14.5 14.6-14.5 14.5 4.3 4.4 14.6-14.6 4.4-4.3-4.4-4.4-14.6-14.6z")+'" 
4728></path
vendor: 10,971 bytes, line 4728
4728>')}function E(){var n,t,i,r;g&&m&&(r=o.index,n=d.getPrev(),t=d.getNext(),i=-1<n&&r<n?s.last:s.prev,r=-1<t&&t<r?s.first:s.next,g.disabled=n<0,m.disabled=t<0,I(g,nn,i),I(m,nn,r),f("arrows:updated",g,m,n,t))}return{arrows:y,mount:b,destroy:x,update:E}},Autoplay:function(n,t,i){var r,o,u=Q(n),e=u.on,c=u.bind,f=u.emit,a=qn(i.interval,n.go.bind(n,">"),function(n){var t=l.bar;t&&_(t,"width",100*n+"%"),f("autoplay:playing",n)}),s=a.isPaused,l=t.Elements,d=(u=t.Elements).root,v=u.toggle,h=i.autoplay,p="pause"===h;function g(){s()&&t.Slides.isEnough()&&(a.start(!i.resetProgress),o=r=p=!1,b(),f(Fn))}function m(n){p=!!(n=void 0===n?!0:n),b(),s()||(a.pause(),f(Xn))}function y(){p||(r||o?m(!1):g())}function b(){v&&(A(v,tn,!p),I(v,nn,i.i18n[p?"play":"pause"]))}function w(n){n=t.Slides.getAt(n);a.set(n&&+z(n.slide,Ct)||i.interval)}return{mount:function(){h&&(i.pauseOnHover&&c(d,"mouseenter mouseleave",function(n){r="mouseenter"===n.type,y()}),i.pauseOnFocus&&c(d,"focusin focusout",function(n){o="focusin"===n.type,y()}),v&&c(v,"click",function(){p?g():m(!0)}),e([H,Tn,J],a.rewind),e(H,w),v&&I(v,Kn,l.track.id),p||g(),b())},destroy:a.cancel,play:g,pause:m,isPaused:s}},Cover:function(n,t,i){var r=Q(n).on;function o(i){t.Slides.forEach(function(n){var t=fn(n.container||n.slide,"img");t&&t.src&&u(i,t,n)})}function u(n,t,i){i.style("background",n?'center/cover no-repeat url("'+t.src+'")':"",!0),ln(t,n?"none":"")}return{mount:function(){i.cover&&(r(Wn,R(u,!0)),r([B,K,J],R(o,!0)))},destroy:R(o,!1)}},Scroll:function(n,c,u){var f,a,t=Q(n),i=t.on,s=t.emit,l=n.state.set,d=c.Move,v=d.getPosition,e=d.getLimit,h=d.exceededLimit,p=d.translate,g=n.is(Mt),m=1;function y(n,t,i,r,o){var u,e=v(),i=(x(),!i||g&&h()||(i=c.Layout.sliderSize(),u=Ln(n)*i*xn(U(n)/i)||0,n=d.toPosition(c.Controller.toDest(n%i))+u),Sn(e,n,1));m=1,t=i?0:t||wn(U(n-e)/1.5,800),a=r,f=qn(t,b,R(w,e,n,o),1),l(rn),s(Tn),f.start()}function b(){l(3),a&&a(),s(V)}function w(n,t,i,r){var o=v(),r=(n+(t-n)*(t=r,(n=u.easingFunc)?n(t):1-Math.pow(1-t,4))-o)*m;p(o+r),g&&!i&&h()&&(m*=.6,U(r)<10&&y(e(h(!0)),600,!1,a,!0))}function x(){f&&f.cancel()}function r(){f&&!f.isPaused()&&(x(),b())}return{mount:function(){i(H,x),i([K,J],r)},destroy:x,scroll:y,cancel:r}},Drag:function(e,o,c){var f,t,u,a,s,l,d,v,n=Q(e),i=n.on,h=n.emit,p=n.bind,g=n.unbind,m=e.state,y=o.Move,b=o.Scroll,w=o.Controller,x=o.Elements.track,k=o.Media.reduce,r=(n=o.Direction).resolve,S=n.orient,E=y.getPosition,L=y.exceededLimit,O=!1;function j(){var n=c.drag;C(!n),a="free"===n}function N(n){var t,i,r;l=!1,d||(t=R(n),i=n.target,r=c.noDrag,cn(i,"."+mt+", ."+vt)||r&&cn(i,r)||!t&&n.button||(w.isBusy()?F(n,!0):(v=t?x:window,s=m.is([G,rn]),u=null,p(v,zt,A,jt),p(v,Dt,_,jt),y.cancel(),b.cancel(),z(n))))}function A(n){var t,i,r,o,u;m.is(6)||(m.set(6),h("drag")),n.cancelable&&(s?(y.translate(f+D(n)/(O&&e.is(Mt)?5:1)),u=200<M(n),t=O!==(O=L()),(u||t)&&z(n),l=!0,h("dragging"),F(n)):U(D(u=n))>U(D(u,!0))&&(t=n,i=c.dragMinThreshold,r=un(i),o=r&&i.mouse||0,r=(r?i.touch:+i)||10,s=U(D(t))>(R(t)?r:o),F(n)))}function _(n){var t,i,r;m.is(6)&&(m.set(3),h("dragged")),s&&(i=function(n){return E()+Ln(n)*Y(U(n)*(c.flickPower||600),a?1/0:o.Layout.listSize()*(c.flickMaxPages||1))}(t=function(n){if(e.is(Pt)||!O){var t=M(n);if(t&&t<200)return D(n)/t}return 0}(t=n)),r=c.rewind&&c.rewindByDrag,k(!1),a?w.scroll(i,0,c.snap):e.is(It)?w.go(S(Ln(t))<0?r?"<":"-":r?">":"+"):e.is(Mt)&&O&&r?w.go(L(!0)?">":"<"):w.go(w.toDest(i),!0),k(!0),F(n)),g(v,zt,A),g(v,Dt,_),s=!1}function T(n){!d&&l&&F(n,!0)}function z(n){u=t,t=n,f=E()}function D(n,t){return I(n,t)-I(P(n),t)}function M(n){return mn(n)-mn(P(n))}function P(n){return t===n&&u||t}function I(n,t){return(R(n)?n.changedTouches[0]:n)["page"+r(t?"Y":"X")]}function R(n){return"undefined"!=typeof TouchEvent&&n instanceof TouchEvent}function C(n){d=n}return{mount:function(){p(x,zt,on,jt),p(x,Dt,on,jt),p(x,_t,N,jt),p(x,"click",T,{capture:!0}),p(x,"dragstart",F),i([B,K],j)},disable:C,isDragging:function(){return s}}},Keyboard:function(t,n,i){var r,o,u=Q(t),e=u.on,c=u.bind,f=u.unbind,a=t.root,s=n.Direction.resolve;function l(){var n=i.keyboard;n&&(r="global"===n?window:a,c(r,Gt,h))}function d(){f(r,Gt)}function v(){var n=o;o=!0,p(function(){o=n})}function h(n){o||((n=Tt(n))===s(Bn)?t.go("<"):n===s(Hn)&&t.go(">"))}return{mount:function(){l(),e(K,d),e(K,l),e(H,v)},destroy:d,disable:function(n){o=n}}},LazyLoad:function(i,n,o){var t=Q(i),r=t.on,u=t.off,e=t.bind,c=t.emit,f="sequential"===o.lazyLoad,a=[Dn,V],s=[];function l(){D(s),n.Slides.forEach(function(r){gn(r.slide,Wt).forEach(function(n){var t=z(n,Ft),i=z(n,Xt);t===n.src&&i===n.srcset||(t=o.classes.spinner,t=fn(i=n.parentElement,"."+t)||j("span",t,i),s.push([n,r,t]),n.src||ln(n,"none"))})}),(f?p:(u(a),r(a,d),d))()}function d(){(s=s.filter(function(n){var t=o.perPage*((o.preloadPages||1)+1)-1;return!n[1].isWithin(i.index,t)||v(n)})).length||u(a)}function v(n){var t=n[0];M(n[1].slide,Et),e(t,"load error",R(h,n)),I(t,"src",z(t,Ft)),I(t,"srcset",z(t,Xt)),P(t,Ft),P(t,Xt)}function h(n,t){var i=n[0],r=n[1];X(r.slide,Et),"error"!==t.type&&(T(n[2]),ln(i,""),c(Wn,i,r),c(jn)),f&&p()}function p(){s.length&&v(s.shift())}return{mount:function(){o.lazyLoad&&(l(),r(J,l))},destroy:R(D,s),check:d}},Pagination:function(l,n,d){var v,h,t=Q(l),p=t.on,g=t.emit,m=t.bind,y=n.Slides,b=n.Elements,w=n.Controller,x=w.hasFocus,r=w.getIndex,e=w.go,c=n.Direction.resolve,k=b.pagination,S=[];function E(){v&&(T(k?o(v.children):v),X(v,h),D(S),v=null),t.destroy()}function L(n){e(">"+n,!0)}function O(n,t){var i=S.length,r=Tt(t),o=A(),u=-1,o=(r===c(Hn,!1,o)?u=++n%i:r===c(Bn,!1,o)?u=(--n+i)%i:"Home"===r?u=0:"End"===r&&(u=i-1),S[u]);o&&(dn(o.button),e(">"+u),F(t,!0))}function A(){return d.paginationDirection||d.direction}function _(n){return S[w.toPage(n)]}function z(){var n,t=_(r(!0)),i=_(r());t&&(X(n=t.button,tn),P(n,Qn),I(n,$,-1)),i&&(M(n=i.button,tn),I(n,Qn,!0),I(n,$,"")),g("pagination:updated",{list:v,items:S},t,i)}return{items:S,mount:function n(){E(),p([K,J,"ei"],n);var t=d.pagination;if(k&&ln(k,t?"":"none"),t){p([H,Tn,V],z);var t=l.length,i=d.classes,r=d.i18n,o=d.perPage,u=x()?w.getEnd()+1:kn(t/o);M(v=k||j("ul",i.pagination,b.track.parentElement),h=gt+"--"+A()),I(v,Z,"tablist"),I(v,nn,r.select),I(v,nt,A()===Jn?"vertical":"");for(var e=0;e<u;e++){var c=j("li",null,v),f=j("button",{class:i.page,type:"button"},c),a=y.getIn(e).map(function(n){return n.slide.id}),s=!x()&&1<o?r.pageX:r.slideX;m(f,"click",R(L,e)),d.paginationKeyboard&&m(f,"keydown",R(O,e)),I(c,Z,"presentation"),I(f,Z,"tab"),I(f,Kn,a.join(" ")),I(f,nn,On(s,e+1)),I(f,$,-1),S.push({li:c,button:f,page:e})}z(),g("pagination:mounted",{list:v,items:S},_(l.index))}},destroy:E,getAt:_,update:z}},Sync:function(i,n,t){var r=t.isNavigation,o=t.slideFocus,u=[];function e(){var n,t;i.splides.forEach(function(n){n.isParent||(f(i,n.splide),f(n.splide,i))}),r&&(n=Q(i),(t=n.on)(Mn,s),t(Yn,l),t([B,K],a),u.push(n),n.emit(Gn,i.splides))}function c(){u.forEach(function(n){n.destroy()}),D(u)}function f(n,r){n=Q(n);n.on(H,function(n,t,i){r.go(r.is(Pt)?i:n)}),u.push(n)}function a(){I(n.Elements.list,nt,t.direction===Jn?"vertical":"")}function s(n){i.go(n.index)}function l(n,t){b(Yt,Tt(t))&&(s(n),F(t))}return{setup:R(n.Media.set,{slideFocus:en(o)?r:o},!0),mount:e,destroy:c,remount:function(){c(),e()}}},Wheel:function(e,c,f){var n=Q(e).bind,a=0;function t(n){var t,i,r,o,u;n.cancelable&&(t=(u=n.deltaY)<0,i=mn(n),r=f.wheelMinThreshold||0,o=f.wheelSleep||0,U(u)>r&&o<i-a&&(e.go(t?"<":">"),a=i),u=t,f.releaseWheel&&!e.state.is(G)&&-1===c.Controller.getAdjacent(u)||F(n))}return{mount:function(){f.wheel&&n(c.Elements.track,"wheel",t,jt)}}},Live:function(n,t,i){var r=Q(n).on,o=t.Elements.track,u=i.live&&!i.isNavigation,e=j("span",wt),c=qn(90,R(f,!1));function f(n){I(o,rt,n),n?(L(o,e),c.start()):(T(e),c.cancel())}function a(n){u&&I(o,it,n?"off":"polite")}return{mount:function(){u&&(a(!t.Autoplay.isPaused()),I(o,ot,!0),e.textContent="…",r(Fn,R(a,!0)),r(Xn,R(a,!1)),r([Dn,V],R(f,!0)))},disable:a,destroy:function(){P(o,[it,ot,rt]),T(e)}}}}),qt={type:"slide",role:"region",speed:400,perPage:1,cloneStatus:!0,arrows:!0,pagination:!0,paginationKeyboard:!0,interval:5e3,pauseOnHover:!0,pauseOnFocus:!0,resetProgress:!0,easing:"cubic-bezier(0.25, 1, 0.5, 1)",drag:!0,direction:"ltr",trimSpace:!0,focusableNodes:"a, button, textarea, input, select, iframe",live:!0,classes:{slide:at,clone:st,arrows:dt,arrow:vt,prev:ht,next:pt,pagination:gt,page:mt,spinner:i+"spinner"},i18n:{prev:"Previous slide",next:"Next slide",first:"Go to first slide",last:"Go to last slide",slideX:"Go to slide %s",pageX:"Go to page %s",play:"Start autoplay",pause:"Pause autoplay",carousel:"carousel",slide:"slide",select:"Select a slide to show",slideLabel:"%s of %s"},reducedMotion:{speed:0,rewindSpeed:0,autoplay:"pause"}};function Bt(n,t,i){var r=t.Slides;function o(){r.forEach(function(n){n.style("transform","translateX(-"+100*n.index+"%)")})}return{mount:function(){Q(n).on([B,J],o)},start:function(n,t){r.style("transition","opacity "+i.speed+"ms "+i.easing),p(t)},cancel:on}}function Ht(u,n,e){var c,f=n.Move,a=n.Controller,s=n.Scroll,t=n.Elements.list,l=R(_,t,"transition");function i(){l(""),s.cancel()}return{mount:function(){Q(u).bind(t,"transitionend",function(n){n.target===t&&c&&(i(),c())})},start:function(n,t){var i=f.toPosition(n,!0),r=f.getPosition(),o=function(n){var t=e.rewindSpeed;if(u.is(Mt)&&t){var i=a.getIndex(!0),r=a.getEnd();if(0===i&&r<=n||r<=i&&0===n)return t}return e.speed}(n);1<=U(i-r)&&1<=o?e.useScroll?s.scroll(i,o,!1,t):(l("transform "+o+"ms "+e.easing),f.translate(i,!0),c=t):(f.jump(n),t())},cancel:i}}t=function(){function i(n,t){this.event=Q(),this.Components={},this.state=s(1),this.splides=[],this.n={},this.t={};n=C(n)?pn(document,n):n;bn(n,n+" is invalid."),t=d({label:z(this.root=n,nn)||"",labelledby:z(n,Zn)||""},qt,i.defaults,t||{});try{d(t,JSON.parse(z(n,f)))}catch(n){bn(!1,"Invalid JSON")}this.n=Object.create(d({},t))}var n=i.prototype;return n.mount=function(n,t){var i=this,r=this.state,o=this.Components;return bn(r.is([1,7]),"Already mounted!"),r.set(1),this.i=o,this.r=t||this.r||(this.is(It)?Bt:Ht),this.t=n||this.t,w(an({},Ut,this.t,{Transition:this.r}),function(n,t){n=n(i,o,i.n);(o[t]=n).setup&&n.setup()}),w(o,function(n){n.mount&&n.mount()}),this.emit(B),M(this.root,"is-initialized"),r.set(3),this.emit("ready"),this},n.sync=function(n){return this.splides.push({splide:n}),n.splides.push({splide:this,isParent:!0}),this.state.is(3)&&(this.i.Sync.remount(),n.Components.Sync.remount()),this},n.go=function(n){return this.i.Controller.go(n),this},n.on=function(n,t){return this.event.on(n,t),this},n.off=function(n){return this.event.off(n),this},n.emit=function(n){var t;return(t=this.event).emit.apply(t,[n].concat(o(arguments,1))),this},n.add=function(n,t){return this.i.Slides.add(n,t),this},n.remove=function(n){return this.i.Slides.remove(n),this},n.is=function(n){return this.n.type===n},n.refresh=function(){return this.emit(J),this},n.destroy=function(t){void
vendor: 511 bytes, lines 4728-4729
4728.0===t&&(t=!0);var n=this.event,i=this.state;return i.is(1)?Q(this).on("ready",this.destroy.bind(this,t)):(w(this.i,function(n){n.destroy&&n.destroy(t)},!0),n.emit(a),n.destroy(),t&&D(this.splides),i.set(7)),this},Jt(i,[{key:"options",get:function(){return this.n},set:function(n){this.i.Media.set(n,!0,!0)}},{key:"length",get:function(){return this.i.Slides.getLength(!0)}},{key:"index",get:function(){return this.i.Controller.getIndex()}}]),i}();return t.defaults={},t.STATES=r,t},window.Splide=t();
4729</script>
4729
4730<style>
4731        @keyframes splide-loading{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.splide__track--draggable{-webkit-touch-callout:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.splide__track--fade>.splide__list>.splide__slide{margin:0!important;opacity:0;z-index:0}.splide__track--fade>.splide__list>.splide__slide.is-active{opacity:1;z-index:1}.splide--rtl{direction:rtl}.splide__track--ttb>.splide__list{display:block}.splide__container{box-sizing:border-box;position:relative}.splide__list{backface-visibility:hidden;display:-ms-flexbox;display:flex;height:100%;margin:0!important;padding:0!important}.splide.is-initialized:not(.is-active) .splide__list{display:block}.splide__pagination{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;justify-content:center;margin:0;pointer-events:none}.splide__pagination li{display:inline-block;line-height:1;list-style-type:none;margin:0;pointer-events:auto}.splide:not(.is-overflow) .splide__pagination{display:none}.splide__progress__bar{width:0}.splide{position:relative;visibility:hidden}.splide.is-initialized,.splide.is-rendered{visibility:visible}.splide__slide{backface-visibility:hidden;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0;list-style-type:none!important;margin:0;position:relative}.splide__slide img{vertical-align:bottom}.splide__spinner{animation:splide-loading 1s linear infinite;border:2px solid #999;border-left-color:transparent;border-radius:50%;bottom:0;contain:strict;display:inline-block;height:20px;left:0;margin:auto;position:absolute;right:0;top:0;width:20px}.splide__sr{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.splide__toggle.is-active .splide__toggle__play,.splide__toggle__pause{display:none}.splide__toggle.is-active .splide__toggle__pause{display:inline}.splide__track{overflow:hidden;position:relative;z-index:0}
4732
4733    /* Custom additions from the splide.min.css but without the custom style */
4734    .splide__pagination--ttb {
4735        position: absolute;
4736        display: inline-flex;
4737        flex-direction: column;
4738        top: 0;
4739        bottom: 0;
4740        right: 100%;
4741    }
4742
4743    /* Hide the pagination dots when the input device is a touch based input */
4744    @media (pointer: coarse) or (max-width: 639px) {
4745        .splide__pagination { display: none }
4746    }
4747</style>
4748
4749<script>
4750    function r(n,t){for(var i=0;i<t.length;i++){var r=t[i];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(n,r.key,r)}}function Jt(n,t,i){t&&r(n.prototype,t),i&&r(n,i),Object.defineProperty(n,"prototype",{writable:!1})}
4751    
vendor: 17,761 bytes, line 4751
4751var n,t;n=this,t=function(){"use strict";var v="(prefers-reduced-motion: reduce)",G=4,rn=5,r={CREATED:1,MOUNTED:2,IDLE:3,MOVING:G,SCROLLING:rn,DRAGGING:6,DESTROYED:7};function D(n){n.length=0}function o(n,t,i){return Array.prototype.slice.call(n,t,i)}function R(n){return n.bind.apply(n,[null].concat(o(arguments,1)))}function on(){}var p=setTimeout;function h(n){return requestAnimationFrame(n)}function u(n,t){return typeof t===n}function un(n){return!c(n)&&u("object",n)}var e=Array.isArray,x=R(u,"function"),C=R(u,"string"),en=R(u,"undefined");function c(n){return null===n}function m(n){try{return n instanceof(n.ownerDocument.defaultView||window).HTMLElement}catch(n){return!1}}function y(n){return e(n)?n:[n]}function g(n,t){y(n).forEach(t)}function b(n,t){return-1<n.indexOf(t)}function k(n,t){return n.push.apply(n,y(t)),n}function A(t,n,i){t&&g(n,function(n){n&&t.classList[i?"add":"remove"](n)})}function M(n,t){A(n,C(t)?t.split(" "):t,!0)}function L(n,t){g(t,n.appendChild.bind(n))}function O(n,i){g(n,function(n){var t=(i||n).parentNode;t&&t.insertBefore(n,i)})}function cn(n,t){return m(n)&&(n.msMatchesSelector||n.matches).call(n,t)}function S(n,t){n=n?o(n.children):[];return t?n.filter(function(n){return cn(n,t)}):n}function fn(n,t){return t?S(n,t)[0]:n.firstElementChild}var E=Object.keys;function w(t,i,n){t&&(n?E(t).reverse():E(t)).forEach(function(n){"__proto__"!==n&&i(t[n],n)})}function an(r){return o(arguments,1).forEach(function(i){w(i,function(n,t){r[t]=i[t]})}),r}function d(i){return o(arguments,1).forEach(function(n){w(n,function(n,t){e(n)?i[t]=n.slice():un(n)?i[t]=d({},un(i[t])?i[t]:{},n):i[t]=n})}),i}function sn(t,n){g(n||E(t),function(n){delete t[n]})}function P(n,i){g(n,function(t){g(i,function(n){t&&t.removeAttribute(n)})})}function I(i,t,r){un(t)?w(t,function(n,t){I(i,t,n)}):g(i,function(n){c(r)||""===r?P(n,t):n.setAttribute(t,String(r))})}function j(n,t,i){n=document.createElement(n);return t&&(C(t)?M:I)(n,t),i&&L(i,n),n}function _(n,t,i){if(en(i))return getComputedStyle(n)[t];c(i)||(n.style[t]=""+i)}function ln(n,t){_(n,"display",t)}function dn(n){n.setActive&&n.setActive()||n.focus({preventScroll:!0})}function z(n,t){return n.getAttribute(t)}function vn(n,t){return n&&n.classList.contains(t)}function N(n){return n.getBoundingClientRect()}function T(n){g(n,function(n){n&&n.parentNode&&n.parentNode.removeChild(n)})}function hn(n){return fn((new DOMParser).parseFromString(n,"text/html").body)}function F(n,t){n.preventDefault(),t&&(n.stopPropagation(),n.stopImmediatePropagation())}function pn(n,t){return n&&n.querySelector(t)}function gn(n,t){return t?o(n.querySelectorAll(t)):[]}function X(n,t){A(n,t,!1)}function mn(n){return n.timeStamp}function W(n){return C(n)?n:n?n+"px":""}var yn="splide",f="data-"+yn;function bn(n,t){if(!n)throw new Error("["+yn+"] "+(t||""))}var Y=Math.min,wn=Math.max,xn=Math.floor,kn=Math.ceil,U=Math.abs;function Sn(n,t,i){return U(n-t)<i}function En(n,t,i,r){var o=Y(t,i),t=wn(t,i);return r?o<n&&n<t:o<=n&&n<=t}function q(n,t,i){var r=Y(t,i),t=wn(t,i);return Y(wn(r,n),t)}function Ln(n){return(0<n)-(n<0)}function On(t,n){return g(n,function(n){t=t.replace("%s",""+n)}),t}function An(n){return n<10?"0"+n:""+n}var _n={};function zn(){var c=[];function i(n,i,r){g(n,function(t){t&&g(i,function(n){n.split(" ").forEach(function(n){n=n.split(".");r(t,n[0],n[1])})})})}return{bind:function(n,t,u,e){i(n,t,function(n,t,i){var r="addEventListener"in n,o=r?n.removeEventListener.bind(n,t,u,e):n.removeListener.bind(n,u);r?n.addEventListener(t,u,e):n.addListener(u),c.push([n,t,i,u,o])})},unbind:function(n,t,o){i(n,t,function(t,i,r){c=c.filter(function(n){return!!(n[0]!==t||n[1]!==i||n[2]!==r||o&&n[3]!==o)||(n[4](),!1)})})},dispatch:function(n,t,i){var r;return"function"==typeof CustomEvent?r=new CustomEvent(t,{bubbles:!0,detail:i}):(r=document.createEvent("CustomEvent")).initCustomEvent(t,!0,!1,i),n.dispatchEvent(r),r},destroy:function(){c.forEach(function(n){n[4]()}),D(c)}}}var B="mounted",H="move",Dn="moved",Mn="click",Pn="active",In="inactive",Rn="visible",Cn="hidden",J="refresh",K="updated",jn="resize",Nn="resized",Tn="scroll",V="scrolled",a="destroy",Gn="navigation:mounted",Fn="autoplay:play",Xn="autoplay:pause",Wn="lazyload:loaded",Yn="sk",Un="sh";function Q(n){var i=n?n.event.bus:document.createDocumentFragment(),r=zn();return n&&n.event.on(a,r.destroy),an(r,{bus:i,on:function(n,t){r.bind(i,y(n).join(" "),function(n){t.apply(t,e(n.detail)?n.detail:[])})},off:R(r.unbind,i),emit:function(n){r.dispatch(i,n,o(arguments,1))}})}function qn(t,n,i,r){var o,u,e=Date.now,c=0,f=!0,a=0;function s(){if(!f){if(c=t?Y((e()-o)/t,1):1,i&&i(c),1<=c&&(n(),o=e(),r&&++a>=r))return l();u=h(s)}}function l(){f=!0}function d(){u&&cancelAnimationFrame(u),f=!(u=c=0)}return{start:function(n){n||d(),o=e()-(n?c*t:0),f=!1,u=h(s)},rewind:function(){o=e(),c=0,i&&i(c)},pause:l,cancel:d,set:function(n){t=n},isPaused:function(){return f}}}function s(n){var t=n;return{set:function(n){t=n},is:function(n){return b(y(n),t)}}}var n="Arrow",Bn=n+"Left",Hn=n+"Right",t=n+"Up",n=n+"Down",Jn="ttb",l={width:["height"],left:["top","right"],right:["bottom","left"],x:["y"],X:["Y"],Y:["X"],ArrowLeft:[t,Hn],ArrowRight:[n,Bn]};var Z="role",$="tabindex",i="aria-",Kn=i+"controls",Vn=i+"current",Qn=i+"selected",nn=i+"label",Zn=i+"labelledby",$n=i+"hidden",nt=i+"orientation",tt=i+"roledescription",it=i+"live",rt=i+"busy",ot=i+"atomic",ut=[Z,$,"disabled",Kn,Vn,nn,Zn,$n,nt,tt],i=yn+"__",et=yn,ct=i+"track",ft=i+"list",at=i+"slide",st=at+"--clone",lt=at+"__container",dt=i+"arrows",vt=i+"arrow",ht=vt+"--prev",pt=vt+"--next",gt=i+"pagination",mt=gt+"__page",yt=i+"progress"+"__bar",bt=i+"toggle",wt=i+"sr",tn="is-active",xt="is-prev",kt="is-next",St="is-visible",Et="is-loading",Lt="is-focus-in",Ot="is-overflow",At=[tn,St,xt,kt,Et,Lt,Ot];var _t="touchstart mousedown",zt="touchmove mousemove",Dt="touchend touchcancel mouseup click";var Mt="slide",Pt="loop",It="fade";function Rt(o,r,t,u){var e,n=Q(o),i=n.on,c=n.emit,f=n.bind,a=o.Components,s=o.root,l=o.options,d=l.isNavigation,v=l.updateOnMove,h=l.i18n,p=l.pagination,g=l.slideFocus,m=a.Direction.resolve,y=z(u,"style"),b=z(u,nn),w=-1<t,x=fn(u,"."+lt);function k(){var n=o.splides.map(function(n){n=n.splide.Components.Slides.getAt(r);return n?n.slide.id:""}).join(" ");I(u,nn,On(h.slideX,(w?t:r)+1)),I(u,Kn,n),I(u,Z,g?"button":""),g&&P(u,tt)}function S(){e||E()}function E(){var n,t,i;e||(n=o.index,(i=L())!==vn(u,tn)&&(A(u,tn,i),I(u,Vn,d&&i||""),c(i?Pn:In,O)),i=function(){if(o.is(It))return L();var n=N(a.Elements.track),t=N(u),i=m("left",!0),r=m("right",!0);return xn(n[i])<=kn(t[i])&&xn(t[r])<=kn(n[r])}(),t=!i&&(!L()||w),o.state.is([G,rn])||I(u,$n,t||""),I(gn(u,l.focusableNodes||""),$,t?-1:""),g&&I(u,$,t?-1:0),i!==vn(u,St)&&(A(u,St,i),c(i?Rn:Cn,O)),i||document.activeElement!==u||(t=a.Slides.getAt(o.index))&&dn(t.slide),A(u,xt,r===n-1),A(u,kt,r===n+1))}function L(){var n=o.index;return n===r||l.cloneStatus&&n===t}var O={index:r,slideIndex:t,slide:u,container:x,isClone:w,mount:function(){w||(u.id=s.id+"-slide"+An(r+1),I(u,Z,p?"tabpanel":"group"),I(u,tt,h.slide),I(u,nn,b||On(h.slideLabel,[r+1,o.length]))),f(u,"click",R(c,Mn,O)),f(u,"keydown",R(c,Yn,O)),i([Dn,Un,V],E),i(Gn,k),v&&i(H,S)},destroy:function(){e=!0,n.destroy(),X(u,At),P(u,ut),I(u,"style",y),I(u,nn,b||"")},update:E,style:function(n,t,i){_(i&&x||u,n,t)},isWithin:function(n,t){return n=U(n-r),(n=w||!l.rewind&&!o.is(Pt)?n:Y(n,o.length-n))<=t}};return O}var Ct=f+"-interval";var jt={passive:!1,capture:!0};var Nt={Spacebar:" ",Right:Hn,Left:Bn,Up:t,Down:n};function Tt(n){return n=C(n)?n:n.key,Nt[n]||n}var Gt="keydown";var Ft=f+"-lazy",Xt=Ft+"-srcset",Wt="["+Ft+"], ["+Xt+"]";var Yt=[" ","Enter"];var Ut=Object.freeze({__proto__:null,Media:function(r,n,o){var u=r.state,t=o.breakpoints||{},e=o.reducedMotion||{},i=zn(),c=[];function f(n){n&&i.destroy()}function a(n,t){t=matchMedia(t);i.bind(t,"change",s),c.push([n,t])}function s(){var n=u.is(7),t=o.direction,i=c.reduce(function(n,t){return d(n,t[1].matches?t[0]:{})},{});sn(o),l(i),o.destroy?r.destroy("completely"===o.destroy):n?(f(!0),r.mount()):t!==o.direction&&r.refresh()}function l(n,t,i){d(o,n),t&&d(Object.getPrototypeOf(o),n),!i&&u.is(1)||r.emit(K,o)}return{setup:function(){var i="min"===o.mediaQuery;E(t).sort(function(n,t){return i?+n-+t:+t-+n}).forEach(function(n){a(t[n],"("+(i?"min":"max")+"-width:"+n+"px)")}),a(e,v),s()},destroy:f,reduce:function(n){matchMedia(v).matches&&(n?d(o,e):sn(o,E(e)))},set:l}},Direction:function(n,t,o){return{resolve:function(n,t,i){var r="rtl"!==(i=i||o.direction)||t?i===Jn?0:-1:1;return l[n]&&l[n][r]||n.replace(/width|left|right/i,function(n,t){n=l[n.toLowerCase()][r]||n;return 0<t?n.charAt(0).toUpperCase()+n.slice(1):n})},orient:function(n){return n*("rtl"===o.direction?1:-1)}}},Elements:function(n,t,i){var r,o,u,e=Q(n),c=e.on,f=e.bind,a=n.root,s=i.i18n,l={},d=[],v=[],h=[];function p(){r=y("."+ct),o=fn(r,"."+ft),bn(r&&o,"A track/list element is missing."),k(d,S(o,"."+at+":not(."+st+")")),w({arrows:dt,pagination:gt,prev:ht,next:pt,bar:yt,toggle:bt},function(n,t){l[t]=y("."+n)}),an(l,{root:a,track:r,list:o,slides:d});var n=a.id||function(n){return""+n+An(_n[n]=(_n[n]||0)+1)}(yn),t=i.role;a.id=n,r.id=r.id||n+"-track",o.id=o.id||n+"-list",!z(a,Z)&&"SECTION"!==a.tagName&&t&&I(a,Z,t),I(a,tt,s.carousel),I(o,Z,"presentation"),m()}function g(n){var t=ut.concat("style");D(d),X(a,v),X(r,h),P([r,o],t),P(a,n?t:["style",tt])}function m(){X(a,v),X(r,h),v=b(et),h=b(ct),M(a,v),M(r,h),I(a,nn,i.label),I(a,Zn,i.labelledby)}function y(n){n=pn(a,n);return n&&function(n,t){if(x(n.closest))return n.closest(t);for(var i=n;i&&1===i.nodeType&&!cn(i,t);)i=i.parentElement;return i}(n,"."+et)===a?n:void 0}function b(n){return[n+"--"+i.type,n+"--"+i.direction,i.drag&&n+"--draggable",i.isNavigation&&n+"--nav",n===et&&tn]}return an(l,{setup:p,mount:function(){c(J,g),c(J,p),c(K,m),f(document,_t+" keydown",function(n){u="keydown"===n.type},{capture:!0}),f(a,"focusin",function(){A(a,Lt,!!u)})},destroy:g})},Slides:function(r,o,u){var n=Q(r),t=n.on,e=n.emit,c=n.bind,f=(n=o.Elements).slides,a=n.list,s=[];function i(){f.forEach(function(n,t){d(n,t,-1)})}function l(){h(function(n){n.destroy()}),D(s)}function d(n,t,i){t=Rt(r,t,i,n);t.mount(),s.push(t),s.sort(function(n,t){return n.index-t.index})}function v(n){return n?p(function(n){return!n.isClone}):s}function h(n,t){v(t).forEach(n)}function p(t){return s.filter(x(t)?t:function(n){return C(t)?cn(n.slide,t):b(y(t),n.index)})}return{mount:function(){i(),t(J,l),t(J,i)},destroy:l,update:function(){h(function(n){n.update()})},register:d,get:v,getIn:function(n){var t=o.Controller,i=t.toIndex(n),r=t.hasFocus()?1:u.perPage;return p(function(n){return En(n.index,i,i+r-1)})},getAt:function(n){return p(n)[0]},add:function(n,o){g(n,function(n){var t,i,r;m(n=C(n)?hn(n):n)&&((t=f[o])?O(n,t):L(a,n),M(n,u.classes.slide),t=n,i=R(e,jn),t=gn(t,"img"),(r=t.length)?t.forEach(function(n){c(n,"load error",function(){--r||i()})}):i())}),e(J)},remove:function(n){T(p(n).map(function(n){return n.slide})),e(J)},forEach:h,filter:p,style:function(t,i,r){h(function(n){n.style(t,i,r)})},getLength:function(n){return(n?f:s).length},isEnough:function(){return s.length>u.perPage}}},Layout:function(t,n,i){var r,o,u,e=(a=Q(t)).on,c=a.bind,f=a.emit,a=n.Slides,s=n.Direction.resolve,l=(n=n.Elements).root,d=n.track,v=n.list,h=a.getAt,p=a.style;function g(){r=i.direction===Jn,_(l,"maxWidth",W(i.width)),_(d,s("paddingLeft"),y(!1)),_(d,s("paddingRight"),y(!0)),m(!0)}function m(n){var t=N(l);!n&&o.width===t.width&&o.height===t.height||(_(d,"height",function(){var n="";r&&(bn(n=b(),"height or heightRatio is missing."),n="calc("+n+" - "+y(!1)+" - "+y(!0)+")");return n}()),p(s("marginRight"),W(i.gap)),p("width",i.autoWidth?null:W(i.fixedWidth)||(r?"":w())),p("height",W(i.fixedHeight)||(r?i.autoHeight?null:w():b()),!0),o=t,f(Nn),u!==(u=O())&&(A(l,Ot,u),f("overflow",u)))}function y(n){var t=i.padding,n=s(n?"right":"left");return t&&W(t[n]||(un(t)?0:t))||"0px"}function b(){return W(i.height||N(v).width*i.heightRatio)}function w(){var n=W(i.gap);return"calc((100%"+(n&&" + "+n)+")/"+(i.perPage||1)+(n&&" - "+n)+")"}function x(){return N(v)[s("width")]}function k(n,t){n=h(n||0);return n?N(n.slide)[s("width")]+(t?0:L()):0}function S(n,t){var i,n=h(n);return n?(n=N(n.slide)[s("right")],i=N(v)[s("left")],U(n-i)+(t?0:L())):0}function E(n){return S(t.length-1)-S(0)+k(0,n)}function L(){var n=h(0);return n&&parseFloat(_(n.slide,s("marginRight")))||0}function O(){return t.is(It)||E(!0)>x()}return{mount:function(){var n,t,i;g(),c(window,"resize load",(n=R(f,jn),i=qn(t||0,n,null,1),function(){i.isPaused()&&i.start()})),e([K,J],g),e(jn,m)},resize:m,listSize:x,slideSize:k,sliderSize:E,totalSize:S,getPadding:function(n){return parseFloat(_(d,s("padding"+(n?"Right":"Left"))))||0},isOverflow:O}},Clones:function(c,i,f){var t,r=Q(c),n=r.on,a=i.Elements,s=i.Slides,o=i.Direction.resolve,l=[];function u(){if(n(J,d),n([K,jn],v),t=h()){var o=t,u=s.get().slice(),e=u.length;if(e){for(;u.length<o;)k(u,u);k(u.slice(-o),u.slice(0,o)).forEach(function(n,t){var i=t<o,r=function(n,t){n=n.cloneNode(!0);return M(n,f.classes.clone),n.id=c.root.id+"-clone"+An(t+1),n}(n.slide,t);i?O(r,u[0].slide):L(a.list,r),k(l,r),s.register(r,t-o+(i?0:e),n.index)})}i.Layout.resize(!0)}}function d(){e(),u()}function e(){T(l),D(l),r.destroy()}function v(){var n=h();t!==n&&(t<n||!n)&&r.emit(J)}function h(){var n,t=f.clones;return c.is(Pt)?en(t)&&(t=(n=f[o("fixedWidth")]&&i.Layout.slideSize(0))&&kn(N(a.track)[o("width")]/n)||f[o("autoWidth")]&&c.length||2*f.perPage):t=0,t}return{mount:u,destroy:e}},Move:function(r,c,o){var e,n=Q(r),t=n.on,f=n.emit,a=r.state.set,u=(n=c.Layout).slideSize,i=n.getPadding,s=n.totalSize,l=n.listSize,d=n.sliderSize,v=(n=c.Direction).resolve,h=n.orient,p=(n=c.Elements).list,g=n.track;function m(){c.Controller.isBusy()||(c.Scroll.cancel(),y(r.index),c.Slides.update())}function y(n){b(S(n,!0))}function b(n,t){r.is(It)||(t=t?n:function(n){{var t,i;r.is(Pt)&&(t=k(n),i=t>c.Controller.getEnd(),(t<0||i)&&(n=w(n,i)))}return n}(n),_(p,"transform","translate"+v("X")+"("+t+"px)"),n!==t&&f(Un))}function w(n,t){var i=n-L(t),r=d();return n-=h(r*(kn(U(i)/r)||1))*(t?1:-1)}function x(){b(E(),!0),e.cancel()}function k(n){for(var t=c.Slides.get(),i=0,r=1/0,o=0;o<t.length;o++){var u=t[o].index,e=U(S(u,!0)-n);if(!(e<=r))break;r=e,i=u}return i}function S(n,t){var i=h(s(n-1)-(n=n,"center"===(i=o.focus)?(l()-u(n,!0))/2:+i*u(n)||0));return t?(n=i,n=o.trimSpace&&r.is(Mt)?q(n,0,h(d(!0)-l())):n):i}function E(){var n=v("left");return N(p)[n]-N(g)[n]+h(i(!1))}function L(n){return S(n?c.Controller.getEnd():0,!!o.trimSpace)}return{mount:function(){e=c.Transition,t([B,Nn,K,J],m)},move:function(n,t,i,r){var o,u;n!==t&&(o=i<n,u=h(w(E(),o)),o?0<=u:u<=p[v("scrollWidth")]-N(g)[v("width")])&&(x(),b(w(E(),i<n),!0)),a(G),f(H,t,i,n),e.start(t,function(){a(3),f(Dn,t,i,n),r&&r()})},jump:y,translate:b,shift:w,cancel:x,toIndex:k,toPosition:S,getPosition:E,getLimit:L,exceededLimit:function(n,t){t=en(t)?E():t;var i=!0!==n&&h(t)<h(L(!1)),n=!1!==n&&h(t)>h(L(!0));return i||n},reposition:m}},Controller:function(o,u,e){var c,f,a,s,n=Q(o),t=n.on,i=n.emit,l=u.Move,d=l.getPosition,r=l.getLimit,v=l.toPosition,h=(n=u.Slides).isEnough,p=n.getLength,g=e.omitEnd,m=o.is(Pt),y=o.is(Mt),b=R(L,!1),w=R(L,!0),x=e.start||0,k=x;function S(){f=p(!0),a=e.perMove,s=e.perPage,c=_();var n=q(x,0,g?c:f-1);n!==x&&(x=n,l.reposition())}function E(){c!==_()&&i("ei")}function L(n,t){var i=a||(P()?1:s),i=O(x+i*(n?-1:1),x,!(a||P()));return-1===i&&y&&!Sn(d(),r(!n),1)?n?0:c:t?i:A(i)}function O(n,t,i){var r;return h()||P()?((r=function(n){if(y&&"move"===e.trimSpace&&n!==x)for(var t=d();t===v(n,!0)&&En(n,0,o.length-1,!e.rewind);)n<x?--n:++n;return n}(n))!==n&&(t=n,n=r,i=!1),n<0||c<n?n=a||!En(0,n,t,!0)&&!En(c,t,n,!0)?m?i?n<0?-(f%s||s):f:n:e.rewind?n<0?c:0:-1:z(D(n)):i&&n!==t&&(n=z(D(t)+(n<t?-1:1)))):n=-1,n}function A(n){return m?(n+f)%f||0:n}function _(){for(var n=f-(P()||m&&a?1:s);g&&0<n--;)if(v(f-1,!0)!==v(n,!0)){n++;break}return q(n,0,f-1)}function z(n){return q(P()?n:s*n,0,c)}function D(n){return P()?Y(n,c):xn((c<=n?f-1:n)/s)}function M(n){n!==x&&(k=x,x=n)}function P(){return!en(e.focus)||e.isNavigation}function I(){return o.state.is([G,rn])&&!!e.waitForTransition}return{mount:function(){S(),t([K,J,"ei"],S),t(Nn,E)},go:function(n,t,i){var r;I()||-1<(r=A(n=function(n){var t=x;{var i,r;C(n)?(r=n.match(/([+\-<>])(\d+)?/)||[],i=r[1],r=r[2],"+"===i||"-"===i?t=O(x+ +(""+i+(+r||1)),x):">"===i?t=r?z(+r):b(!0):"<"===i&&(t=w(!0))):t=m?n:q(n,0,c)}return t}(n)))&&(t||r!==x)&&(M(r),l.move(n,r,k,i))},scroll:function(n,t,i,r){u.Scroll.scroll(n,t,i,function(){var n=A(l.toIndex(d()));M(g?Y(n,c):n),r&&r()})},getNext:b,getPrev:w,getAdjacent:L,getEnd:_,setIndex:M,getIndex:function(n){return n?k:x},toIndex:z,toPage:D,toDest:function(n){return n=l.toIndex(n),y?q(n,0,c):n},hasFocus:P,isBusy:I}},Arrows:function(o,n,t){var i,r,u=Q(o),e=u.on,c=u.bind,f=u.emit,a=t.classes,s=t.i18n,l=n.Elements,d=n.Controller,v=l.arrows,h=l.track,p=v,g=l.prev,m=l.next,y={};function b(){var n=t.arrows;!n||g&&m||(p=v||j("div",a.arrows),g=S(!0),m=S(!1),i=!0,L(p,[g,m]),v||O(p,h)),g&&m&&(an(y,{prev:g,next:m}),ln(p,n?"":"none"),M(p,r=dt+"--"+t.direction),n&&(e([B,Dn,J,V,"ei"],E),c(m,"click",R(k,">")),c(g,"click",R(k,"<")),E(),I([g,m],Kn,h.id),f("arrows:mounted",g,m))),e(K,w)}function w(){x(),b()}function x(){u.destroy(),X(p,r),i?(T(v?[g,m]:p),g=m=null):P([g,m],ut)}function k(n){d.go(n,!0)}function S(n){return hn('<button class="'+a.arrow+" "+(n?a.prev:a.next)+'" type="button"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" width="40" height="40" focusable="false"><path d="'+(t.arrowPath||"m15.5 0.932-4.3 4.38 14.5 14.6-14.5 14.5 4.3 4.4 14.6-14.6 4.4-4.3-4.4-4.4-14.6-14.6z")+'"
4751></path
vendor: 11,640 bytes, line 4751
4751>')}function E(){var n,t,i,r;g&&m&&(r=o.index,n=d.getPrev(),t=d.getNext(),i=-1<n&&r<n?s.last:s.prev,r=-1<t&&t<r?s.first:s.next,g.disabled=n<0,m.disabled=t<0,I(g,nn,i),I(m,nn,r),f("arrows:updated",g,m,n,t))}return{arrows:y,mount:b,destroy:x,update:E}},Autoplay:function(n,t,i){var r,o,u=Q(n),e=u.on,c=u.bind,f=u.emit,a=qn(i.interval,n.go.bind(n,">"),function(n){var t=l.bar;t&&_(t,"width",100*n+"%"),f("autoplay:playing",n)}),s=a.isPaused,l=t.Elements,d=(u=t.Elements).root,v=u.toggle,h=i.autoplay,p="pause"===h;function g(){s()&&t.Slides.isEnough()&&(a.start(!i.resetProgress),o=r=p=!1,b(),f(Fn))}function m(n){p=!!(n=void 0===n?!0:n),b(),s()||(a.pause(),f(Xn))}function y(){p||(r||o?m(!1):g())}function b(){v&&(A(v,tn,!p),I(v,nn,i.i18n[p?"play":"pause"]))}function w(n){n=t.Slides.getAt(n);a.set(n&&+z(n.slide,Ct)||i.interval)}return{mount:function(){h&&(i.pauseOnHover&&c(d,"mouseenter mouseleave",function(n){r="mouseenter"===n.type,y()}),i.pauseOnFocus&&c(d,"focusin focusout",function(n){o="focusin"===n.type,y()}),v&&c(v,"click",function(){p?g():m(!0)}),e([H,Tn,J],a.rewind),e(H,w),v&&I(v,Kn,l.track.id),p||g(),b())},destroy:a.cancel,play:g,pause:m,isPaused:s}},Cover:function(n,t,i){var r=Q(n).on;function o(i){t.Slides.forEach(function(n){var t=fn(n.container||n.slide,"img");t&&t.src&&u(i,t,n)})}function u(n,t,i){i.style("background",n?'center/cover no-repeat url("'+t.src+'")':"",!0),ln(t,n?"none":"")}return{mount:function(){i.cover&&(r(Wn,R(u,!0)),r([B,K,J],R(o,!0)))},destroy:R(o,!1)}},Scroll:function(n,c,u){var f,a,t=Q(n),i=t.on,s=t.emit,l=n.state.set,d=c.Move,v=d.getPosition,e=d.getLimit,h=d.exceededLimit,p=d.translate,g=n.is(Mt),m=1;function y(n,t,i,r,o){var u,e=v(),i=(x(),!i||g&&h()||(i=c.Layout.sliderSize(),u=Ln(n)*i*xn(U(n)/i)||0,n=d.toPosition(c.Controller.toDest(n%i))+u),Sn(e,n,1));m=1,t=i?0:t||wn(U(n-e)/1.5,800),a=r,f=qn(t,b,R(w,e,n,o),1),l(rn),s(Tn),f.start()}function b(){l(3),a&&a(),s(V)}function w(n,t,i,r){var o=v(),r=(n+(t-n)*(t=r,(n=u.easingFunc)?n(t):1-Math.pow(1-t,4))-o)*m;p(o+r),g&&!i&&h()&&(m*=.6,U(r)<10&&y(e(h(!0)),600,!1,a,!0))}function x(){f&&f.cancel()}function r(){f&&!f.isPaused()&&(x(),b())}return{mount:function(){i(H,x),i([K,J],r)},destroy:x,scroll:y,cancel:r}},Drag:function(e,o,c){var f,t,u,a,s,l,d,v,n=Q(e),i=n.on,h=n.emit,p=n.bind,g=n.unbind,m=e.state,y=o.Move,b=o.Scroll,w=o.Controller,x=o.Elements.track,k=o.Media.reduce,r=(n=o.Direction).resolve,S=n.orient,E=y.getPosition,L=y.exceededLimit,O=!1;function j(){var n=c.drag;C(!n),a="free"===n}function N(n){var t,i,r;l=!1,d||(t=R(n),i=n.target,r=c.noDrag,cn(i,"."+mt+", ."+vt)||r&&cn(i,r)||!t&&n.button||(w.isBusy()?F(n,!0):(v=t?x:window,s=m.is([G,rn]),u=null,p(v,zt,A,jt),p(v,Dt,_,jt),y.cancel(),b.cancel(),z(n))))}function A(n){var t,i,r,o,u;m.is(6)||(m.set(6),h("drag")),n.cancelable&&(s?(y.translate(f+D(n)/(O&&e.is(Mt)?5:1)),u=200<M(n),t=O!==(O=L()),(u||t)&&z(n),l=!0,h("dragging"),F(n)):U(D(u=n))>U(D(u,!0))&&(t=n,i=c.dragMinThreshold,r=un(i),o=r&&i.mouse||0,r=(r?i.touch:+i)||10,s=U(D(t))>(R(t)?r:o),F(n)))}function _(n){var t,i,r;m.is(6)&&(m.set(3),h("dragged")),s&&(i=function(n){return E()+Ln(n)*Y(U(n)*(c.flickPower||600),a?1/0:o.Layout.listSize()*(c.flickMaxPages||1))}(t=function(n){if(e.is(Pt)||!O){var t=M(n);if(t&&t<200)return D(n)/t}return 0}(t=n)),r=c.rewind&&c.rewindByDrag,k(!1),a?w.scroll(i,0,c.snap):e.is(It)?w.go(S(Ln(t))<0?r?"<":"-":r?">":"+"):e.is(Mt)&&O&&r?w.go(L(!0)?">":"<"):w.go(w.toDest(i),!0),k(!0),F(n)),g(v,zt,A),g(v,Dt,_),s=!1}function T(n){!d&&l&&F(n,!0)}function z(n){u=t,t=n,f=E()}function D(n,t){return I(n,t)-I(P(n),t)}function M(n){return mn(n)-mn(P(n))}function P(n){return t===n&&u||t}function I(n,t){return(R(n)?n.changedTouches[0]:n)["page"+r(t?"Y":"X")]}function R(n){return"undefined"!=typeof TouchEvent&&n instanceof TouchEvent}function C(n){d=n}return{mount:function(){p(x,zt,on,jt),p(x,Dt,on,jt),p(x,_t,N,jt),p(x,"click",T,{capture:!0}),p(x,"dragstart",F),i([B,K],j)},disable:C,isDragging:function(){return s}}},Keyboard:function(t,n,i){var r,o,u=Q(t),e=u.on,c=u.bind,f=u.unbind,a=t.root,s=n.Direction.resolve;function l(){var n=i.keyboard;n&&(r="global"===n?window:a,c(r,Gt,h))}function d(){f(r,Gt)}function v(){var n=o;o=!0,p(function(){o=n})}function h(n){o||((n=Tt(n))===s(Bn)?t.go("<"):n===s(Hn)&&t.go(">"))}return{mount:function(){l(),e(K,d),e(K,l),e(H,v)},destroy:d,disable:function(n){o=n}}},LazyLoad:function(i,n,o){var t=Q(i),r=t.on,u=t.off,e=t.bind,c=t.emit,f="sequential"===o.lazyLoad,a=[Dn,V],s=[];function l(){D(s),n.Slides.forEach(function(r){gn(r.slide,Wt).forEach(function(n){var t=z(n,Ft),i=z(n,Xt);t===n.src&&i===n.srcset||(t=o.classes.spinner,t=fn(i=n.parentElement,"."+t)||j("span",t,i),s.push([n,r,t]),n.src||ln(n,"none"))})}),(f?p:(u(a),r(a,d),d))()}function d(){(s=s.filter(function(n){var t=o.perPage*((o.preloadPages||1)+1)-1;return!n[1].isWithin(i.index,t)||v(n)})).length||u(a)}function v(n){var t=n[0];M(n[1].slide,Et),e(t,"load error",R(h,n)),I(t,"src",z(t,Ft)),I(t,"srcset",z(t,Xt)),P(t,Ft),P(t,Xt)}function h(n,t){var i=n[0],r=n[1];X(r.slide,Et),"error"!==t.type&&(T(n[2]),ln(i,""),c(Wn,i,r),c(jn)),f&&p()}function p(){s.length&&v(s.shift())}return{mount:function(){o.lazyLoad&&(l(),r(J,l))},destroy:R(D,s),check:d}},Pagination:function(l,n,d){var v,h,t=Q(l),p=t.on,g=t.emit,m=t.bind,y=n.Slides,b=n.Elements,w=n.Controller,x=w.hasFocus,r=w.getIndex,e=w.go,c=n.Direction.resolve,k=b.pagination,S=[];function E(){v&&(T(k?o(v.children):v),X(v,h),D(S),v=null),t.destroy()}function L(n){e(">"+n,!0)}function O(n,t){var i=S.length,r=Tt(t),o=A(),u=-1,o=(r===c(Hn,!1,o)?u=++n%i:r===c(Bn,!1,o)?u=(--n+i)%i:"Home"===r?u=0:"End"===r&&(u=i-1),S[u]);o&&(dn(o.button),e(">"+u),F(t,!0))}function A(){return d.paginationDirection||d.direction}function _(n){return S[w.toPage(n)]}function z(){var n,t=_(r(!0)),i=_(r());t&&(X(n=t.button,tn),P(n,Qn),I(n,$,-1)),i&&(M(n=i.button,tn),I(n,Qn,!0),I(n,$,"")),g("pagination:updated",{list:v,items:S},t,i)}return{items:S,mount:function n(){E(),p([K,J,"ei"],n);var t=d.pagination;if(k&&ln(k,t?"":"none"),t){p([H,Tn,V],z);var t=l.length,i=d.classes,r=d.i18n,o=d.perPage,u=x()?w.getEnd()+1:kn(t/o);M(v=k||j("ul",i.pagination,b.track.parentElement),h=gt+"--"+A()),I(v,Z,"tablist"),I(v,nn,r.select),I(v,nt,A()===Jn?"vertical":"");for(var e=0;e<u;e++){var c=j("li",null,v),f=j("button",{class:i.page,type:"button"},c),a=y.getIn(e).map(function(n){return n.slide.id}),s=!x()&&1<o?r.pageX:r.slideX;m(f,"click",R(L,e)),d.paginationKeyboard&&m(f,"keydown",R(O,e)),I(c,Z,"presentation"),I(f,Z,"tab"),I(f,Kn,a.join(" ")),I(f,nn,On(s,e+1)),I(f,$,-1),S.push({li:c,button:f,page:e})}z(),g("pagination:mounted",{list:v,items:S},_(l.index))}},destroy:E,getAt:_,update:z}},Sync:function(i,n,t){var r=t.isNavigation,o=t.slideFocus,u=[];function e(){var n,t;i.splides.forEach(function(n){n.isParent||(f(i,n.splide),f(n.splide,i))}),r&&(n=Q(i),(t=n.on)(Mn,s),t(Yn,l),t([B,K],a),u.push(n),n.emit(Gn,i.splides))}function c(){u.forEach(function(n){n.destroy()}),D(u)}function f(n,r){n=Q(n);n.on(H,function(n,t,i){r.go(r.is(Pt)?i:n)}),u.push(n)}function a(){I(n.Elements.list,nt,t.direction===Jn?"vertical":"")}function s(n){i.go(n.index)}function l(n,t){b(Yt,Tt(t))&&(s(n),F(t))}return{setup:R(n.Media.set,{slideFocus:en(o)?r:o},!0),mount:e,destroy:c,remount:function(){c(),e()}}},Wheel:function(e,c,f){var n=Q(e).bind,a=0;function t(n){var t,i,r,o,u;n.cancelable&&(t=(u=n.deltaY)<0,i=mn(n),r=f.wheelMinThreshold||0,o=f.wheelSleep||0,U(u)>r&&o<i-a&&(e.go(t?"<":">"),a=i),u=t,f.releaseWheel&&!e.state.is(G)&&-1===c.Controller.getAdjacent(u)||F(n))}return{mount:function(){f.wheel&&n(c.Elements.track,"wheel",t,jt)}}},Live:function(n,t,i){var r=Q(n).on,o=t.Elements.track,u=i.live&&!i.isNavigation,e=j("span",wt),c=qn(90,R(f,!1));function f(n){I(o,rt,n),n?(L(o,e),c.start()):(T(e),c.cancel())}function a(n){u&&I(o,it,n?"off":"polite")}return{mount:function(){u&&(a(!t.Autoplay.isPaused()),I(o,ot,!0),e.textContent="…",r(Fn,R(a,!0)),r(Xn,R(a,!1)),r([Dn,V],R(f,!0)))},disable:a,destroy:function(){P(o,[it,ot,rt]),T(e)}}}}),qt={type:"slide",role:"region",speed:400,perPage:1,cloneStatus:!0,arrows:!0,pagination:!0,paginationKeyboard:!0,interval:5e3,pauseOnHover:!0,pauseOnFocus:!0,resetProgress:!0,easing:"cubic-bezier(0.25, 1, 0.5, 1)",drag:!0,direction:"ltr",trimSpace:!0,focusableNodes:"a, button, textarea, input, select, iframe",live:!0,classes:{slide:at,clone:st,arrows:dt,arrow:vt,prev:ht,next:pt,pagination:gt,page:mt,spinner:i+"spinner"},i18n:{prev:"Previous slide",next:"Next slide",first:"Go to first slide",last:"Go to last slide",slideX:"Go to slide %s",pageX:"Go to page %s",play:"Start autoplay",pause:"Pause autoplay",carousel:"carousel",slide:"slide",select:"Select a slide to show",slideLabel:"%s of %s"},reducedMotion:{speed:0,rewindSpeed:0,autoplay:"pause"}};function Bt(n,t,i){var r=t.Slides;function o(){r.forEach(function(n){n.style("transform","translateX(-"+100*n.index+"%)")})}return{mount:function(){Q(n).on([B,J],o)},start:function(n,t){r.style("transition","opacity "+i.speed+"ms "+i.easing),p(t)},cancel:on}}function Ht(u,n,e){var c,f=n.Move,a=n.Controller,s=n.Scroll,t=n.Elements.list,l=R(_,t,"transition");function i(){l(""),s.cancel()}return{mount:function(){Q(u).bind(t,"transitionend",function(n){n.target===t&&c&&(i(),c())})},start:function(n,t){var i=f.toPosition(n,!0),r=f.getPosition(),o=function(n){var t=e.rewindSpeed;if(u.is(Mt)&&t){var i=a.getIndex(!0),r=a.getEnd();if(0===i&&r<=n||r<=i&&0===n)return t}return e.speed}(n);1<=U(i-r)&&1<=o?e.useScroll?s.scroll(i,o,!1,t):(l("transform "+o+"ms "+e.easing),f.translate(i,!0),c=t):(f.jump(n),t())},cancel:i}}t=function(){function i(n,t){this.event=Q(),this.Components={},this.state=s(1),this.splides=[],this.n={},this.t={};n=C(n)?pn(document,n):n;bn(n,n+" is invalid."),t=d({label:z(this.root=n,nn)||"",labelledby:z(n,Zn)||""},qt,i.defaults,t||{});try{d(t,JSON.parse(z(n,f)))}catch(n){bn(!1,"Invalid JSON")}this.n=Object.create(d({},t))}var n=i.prototype;return n.mount=function(n,t){var i=this,r=this.state,o=this.Components;return bn(r.is([1,7]),"Already mounted!"),r.set(1),this.i=o,this.r=t||this.r||(this.is(It)?Bt:Ht),this.t=n||this.t,w(an({},Ut,this.t,{Transition:this.r}),function(n,t){n=n(i,o,i.n);(o[t]=n).setup&&n.setup()}),w(o,function(n){n.mount&&n.mount()}),this.emit(B),M(this.root,"is-initialized"),r.set(3),this.emit("ready"),this},n.sync=function(n){return this.splides.push({splide:n}),n.splides.push({splide:this,isParent:!0}),this.state.is(3)&&(this.i.Sync.remount(),n.Components.Sync.remount()),this},n.go=function(n){return this.i.Controller.go(n),this},n.on=function(n,t){return this.event.on(n,t),this},n.off=function(n){return this.event.off(n),this},n.emit=function(n){var t;return(t=this.event).emit.apply(t,[n].concat(o(arguments,1))),this},n.add=function(n,t){return this.i.Slides.add(n,t),this},n.remove=function(n){return this.i.Slides.remove(n),this},n.is=function(n){return this.n.type===n},n.refresh=function(){return this.emit(J),this},n.destroy=function(t){void 0===t&&(t=!0);var n=this.event,i=this.state;return i.is(1)?Q(this).on("ready",this.destroy.bind(this,t)):(w(this.i,function(n){n.destroy&&n.destroy(t)},!0),n.emit(a),n.destroy(),t&&D(this.splides),i.set(7)),this},Jt(i,[{key:"options",get:function(){return this.n},set:function(n){this.i.Media.set(n,!0,!0)}},{key:"length",get:function(){return this.i.Slides.getLength(!0)}},{key:"index",get:function(){return this.i.Controller.getIndex()}}]),i}();return t.defaults={},t.STATES=r,t},"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(n="undefined"!=typeof globalThis?globalThis:n||self).Splide=t();
4752</script>
4752<script>
4753    let SnapSlider = class {
4754        constructor(el, {
4755            labelSepparator = 'von',
4756            autoPager,
4757            groupPager,
4758            loop,
4759            forcePager
4760        } = {}) {
4761            this.el = el;
4762            this.track = this.el.querySelector("[data-track]");
4763            if (!this.track) {
4764                console.warn(
4765                    "No Slider track defined, reverting back to CSS slider.\nPlease create a wrapper for your slides with the attribute data-track",
4766                    this.el
4767                );
4768                return;
4769            }
4770            this.initialLoad = true;
4771            this.slides = [];
4772            this.inViewObserver;
4773            this.mutationObserver;
4774            this.resizeObserver;
4775            this.pager = this.el.querySelector("[data-pager]");
4776            this.navBtns = Array.from(
4777                this.el.querySelectorAll("[data-next], [data-prev]")
4778            );
4779            this.slideLabelSepparator = this.el.dataset.slideLabelSepparator || labelSepparator;
4780            this.useAutoPager = autoPager || this.el.hasAttribute("data-auto-pager") || false;
4781            this.useGroupPager = groupPager || this.el.hasAttribute("data-group-pager") || false;
4782            this.useLoop = loop || this.el.hasAttribute("data-loop") || false;
4783            this.forcePager = forcePager || this.el.hasAttribute("data-force-pager") || false;
4784            this.sliderLabel = this.el.hasAttribute("aria-label") && this.el.getAttribute("aria-label").toLowerCase().trim().replace(/[^a-z0-9_-]+/g, "-").replace(/^-+|-+$/g, "");
4785            this.sliderId = this.el.id || this.sliderLabel || "slider";
4786            this.markerIdName = "data-target-id";
4787            this.pagerClasses = this.el.dataset.pagerClass || "snap-pager";
4788            this.markerClasses = this.el.dataset.markerClass || "snap-marker";
4789            this.init();
4790        }
4791        init() {
4792            this.setupSlides();
4793            this.setupNav();
4794            if (this.useAutoPager) {
4795                this.createPager();
4796            } else {
4797                this.setupPager();
4798            }
4799            this.setupObservers();
4800            this.setupMutationObserver();
4801            this.setupResizeObserver();
4802            this.el.addEventListener("click", this.eventHandler.bind(this));
4803            this.el.addEventListener("keydown", this.eventHandler.bind(this));
4804            if ("onscrollend" in window) {
4805                this.track.addEventListener("scrollend", () => {
4806                    this.isNavigating = false;
4807                });
4808            } else {
4809                this.track.addEventListener("scroll", () => {
4810                    clearTimeout(this.scrollEndTimer);
4811                    this.scrollEndTimer = setTimeout(() => {
4812                        this.isNavigating = false;
4813                    }, 100);
4814                });
4815            }
4816        }
4817        destroy() {
4818            this.inViewObserver?.disconnect();
4819            this.mutationObserver?.disconnect();
4820            this.resizeObserver?.disconnect();
4821            this.el.removeEventListener("click", this.eventHandler.bind(this));
4822            this.el.removeEventListener("keydown", this.eventHandler.bind(this));
4823        }
4824        roundUpIfGreaterThan(number, min = 8) {
4825            const decimalPart = number - Math.floor(number);
4826            return decimalPart >= min ? Math.ceil(number) : Math.floor(number);
4827        }
4828        getInViewItems() {
4829            const inViewSlides = Array.from(this.track.querySelectorAll("[data-in-view]")).filter((el) => this.slides.includes(el));
4830            const firstInViewSlide = inViewSlides[0] || null;
4831            const lastInViewSlide = inViewSlides[inViewSlides.length - 1] || null;
4832            const isAtStart = firstInViewSlide === this.slides[0];
4833            const isAtEnd = lastInViewSlide === this.slides[this.slides.length - 1];
4834            return {
4835                inViewSlides,
4836                totalInViewSlides: inViewSlides.length,
4837                firstInViewSlide,
4838                lastInViewSlide,
4839                isAtStart,
4840                isAtEnd,
4841                hasNoOverflow: isAtStart && isAtEnd
4842            };
4843        }
4844        groupPagerMarkers() {
4845            if (this.slides.length === 0 || !this.pager || !this.useGroupPager) return;
4846            const totalVisibleSlides = this.roundUpIfGreaterThan(
4847                this.track.offsetWidth / this.slides[0].offsetWidth
4848            );
4849            const markers = Array.from(this.pager.querySelectorAll("a, button"));
4850            markers.forEach((marker, index) => {
4851                marker.style.display = index % totalVisibleSlides === 0 ? null : "none";
4852            });
4853        }
4854        handleInView(entries) {
4855            entries.forEach((entry) => {
4856                const marker = this.pager && (this.pager.querySelector(`[href="#${entry.target.id}"]`) || this.pager.querySelector(
4857                    `[${this.markerIdName}="${entry.target.id}"]`
4858                ));
4859                entry.target.toggleAttribute("data-in-view", entry.isIntersecting);
4860                entry.target.toggleAttribute("inert", !entry.isIntersecting);
4861                marker?.setAttribute("aria-current", entry.isIntersecting);
4862                marker?.setAttribute("tabindex", entry.isIntersecting ? "0" : "-1");
4863            });
4864            const { isAtStart, isAtEnd, hasNoOverflow } = this.getInViewItems();
4865            this.navBtns.forEach((btn) => {
4866                if (btn.hasAttribute("data-next")) {
4867                    btn.style.visibility = hasNoOverflow ? "hidden" : null;
4868                    isAtEnd && !this.useLoop ? btn.setAttribute("disabled", "") : btn.removeAttribute("disabled");
4869                }
4870                if (btn.hasAttribute("data-prev")) {
4871                    btn.style.visibility = hasNoOverflow ? "hidden" : null;
4872                    isAtStart && !this.useLoop ? btn.setAttribute("disabled", "") : btn.removeAttribute("disabled");
4873                }
4874            });
4875            if (this.pager) {
4876                const hidePager = hasNoOverflow && !this.forcePager;
4877                this.pager.style.visibility = hidePager ? "hidden" : null;
4878                this.pager.toggleAttribute("inert", hidePager);
4879            }
4880            if (!this.initialLoad) {
4881                this.el.dispatchEvent(
4882                    new CustomEvent("slideChange", {
4883                        detail: this.getInViewItems()
4884                    })
4885                );
4886            } else {
4887                this.initialLoad = false;
4888            }
4889            if (document.activeElement.parentElement.hasAttribute("data-pager")) {
4890                const activeItems = this.pager.querySelectorAll('[tabindex="0"]');
4891                if (activeItems.length) {
4892                    activeItems[0].focus({ preventScroll: true });
4893                }
4894            }
4895        }
4896        getSlides() {
4897            if (!this.track) return [];
4898            return Array.from(this.track.children).filter(
4899                (child) => child.tagName.toLowerCase() !== "template" && child.tagName.toLowerCase() !== "style" && child.tagName.toLowerCase() !== "script" && child.style.display !== "none"
4900            );
4901        }
4902        refreshSlides() {
4903            this.initialLoad = true;
4904            this.slides = this.getSlides();
4905            this.setupSlides();
4906            if (this.useAutoPager) {
4907                this.createPager();
4908            } else {
4909                this.setupPager();
4910            }
4911            this.groupPagerMarkers();
4912            this.setupObservers();
4913        }
4914        setupSlides() {
4915            this.slides = this.getSlides();
4916            this.slides.forEach((slide, index) => {
4917                const totalSlides = this.slides.length;
4918                const currentSlide = index + 1;
4919                const existingLabel = slide.getAttribute("aria-label") || "";
4920                const isImage = slide.tagName.toLowerCase() === "img" || slide.tagName.toLowerCase() === "picture";
4921                const slideLabelTag = isImage ? "alt" : "aria-label";
4922                const hasAutoLabel = existingLabel.startsWith(
4923                    `${currentSlide} ${this.slideLabelSepparator} `
4924                );
4925                if (!slide.hasAttribute("id")) {
4926                    slide.setAttribute(
4927                        "id",
4928                        `${this.sliderId}-item-${currentSlide}`
4929                    );
4930                }
4931                if (!slide.hasAttribute(slideLabelTag) || slide.getAttribute(slideLabelTag) === "" || hasAutoLabel) {
4932                    slide.setAttribute(
4933                        slideLabelTag,
4934                        `${currentSlide} ${this.slideLabelSepparator} ${totalSlides}`
4935                    );
4936                }
4937                if (slide.tagName.toLowerCase() === "div" && !slide.hasAttribute("role")) {
4938                    slide.setAttribute("role", "group");
4939                }
4940                if (this.pager && !isImage) {
4941                    slide.setAttribute("role", "tabpanel");
4942                }
4943                if (slide.getAttribute("role") === "group") {
4944                    slide.setAttribute("aria-roledescription", "item");
4945                }
4946            });
4947            if (!this.el.hasAttribute("role") && this.el.tagName !== "SECTION") {
4948                this.el.setAttribute("role", "region");
4949            }
4950            if (!this.el.hasAttribute("aria-roledescription")) {
4951                this.el.setAttribute("aria-roledescription", "carousel");
4952            }
4953            if (!this.track.hasAttribute("tabindex")) {
4954                this.track.setAttribute("tabindex", 0);
4955            }
4956            this.track.setAttribute("aria-live", "polite");
4957        }
4958        setupNav() {
4959            this.navBtns.forEach((btn) => {
4960                btn.setAttribute("disabled", "");
4961                btn.removeAttribute("hidden");
4962                btn.classList.remove("invisible");
4963                btn.style.visibility = null;
4964            });
4965        }
4966        createPager() {
4967            const newPager = document.createElement("nav");
4968            newPager.setAttribute("data-pager", "");
4969            newPager.setAttribute("role", "tablist");
4970            newPager.classList.add(...this.pagerClasses.split(" "));
4971            this.slides.forEach((slide, index) => {
4972                const marker = document.createElement("button");
4973                const slideId = slide.id || `${this.sliderId}-item-${index + 1}`;
4974                marker.setAttribute(this.markerIdName, slideId);
4975                marker.classList.add(...this.markerClasses.split(" "));
4976                this.setupPagerMarker(marker, index);
4977                newPager.appendChild(marker);
4978                if (slide.tagName.toLowerCase() !== "img" && slide.tagName.toLowerCase() !== "picture") {
4979                    slide.removeAttribute("aria-roledescription");
4980                    slide.setAttribute("role", "tabpanel");
4981                }
4982            });
4983            if (this.pager) {
4984                this.pager.setAttribute("role", "tablist");
4985                this.pager.replaceChildren(...newPager.children);
4986            } else {
4987                this.track.after(newPager);
4988                this.pager = this.el.querySelector("[data-pager]");
4989            }
4990        }
4991        setupPager() {
4992            if (!this.pager) return;
4993            this.pager.setAttribute("role", "tablist");
4994            const items = Array.from(this.pager.querySelectorAll("a, button"));
4995            items.forEach((marker, index) => this.setupPagerMarker(marker, index));
4996        }
4997        setupPagerMarker(marker, index) {
4998            const markerId = marker.getAttribute("href")?.slice(1) || marker.getAttribute(this.markerIdName);
4999            const slideId = markerId || `${this.sliderId}-item-${index + 1}`;
5000            if (!markerId) {
5001                marker.setAttribute(this.markerIdName, slideId);
5002            }
5003            marker.setAttribute("role", "tab");
5004            marker.setAttribute("aria-controls", slideId);
5005            marker.setAttribute("aria-posinset", index + 1);
5006            marker.setAttribute("aria-setsize", this.slides.length);
5007            marker.setAttribute("tabindex", "-1");
5008            if (!marker.hasAttribute("aria-label")) {
5009                marker.setAttribute("aria-label", `Slide ${index + 1}`);
5010            }
5011        }
5012        setupObservers() {
5013            if (this.inViewObserver) {
5014                this.inViewObserver.disconnect();
5015            }
5016            this.inViewObserver = new IntersectionObserver(
5017                this.handleInView.bind(this), {
5018                    root: this.track,
5019                    threshold: 0.8
5020                }
5021            );
5022            this.slides.forEach((slide) => this.inViewObserver.observe(slide));
5023        }
5024        setupMutationObserver() {
5025            this.mutationObserver = new MutationObserver((mutations) => {
5026                if (mutations.some((m) => m.type === "childList" || m.target.parentElement === this.track)) {
5027                    this.refreshSlides();
5028                }
5029            });
5030            this.mutationObserver.observe(this.track, {
5031                childList: true,
5032                subtree: true,
5033                attributeFilter: ["style"]
5034            });
5035        }
5036        setupResizeObserver() {
5037            this.resizeObserver = new ResizeObserver(
5038                this.groupPagerMarkers.bind(this)
5039            );
5040            this.resizeObserver.observe(this.el);
5041        }
5042        goToSlideDir(dir = "next") {
5043            if (this.isNavigating) return;
5044            const { firstInViewSlide, lastInViewSlide } = this.getInViewItems();
5045            const isPrev = dir === "prev";
5046            const referenceSlide = isPrev ? firstInViewSlide : lastInViewSlide;
5047            const currentIndex = this.slides.indexOf(referenceSlide);
5048            let targetIndex = isPrev ? currentIndex - 1 : currentIndex + 1;
5049            if (targetIndex < 0 || targetIndex >= this.slides.length) {
5050                if (!this.useLoop) return;
5051                targetIndex = isPrev ? this.slides.length - 1 : 0;
5052            }
5053            const targetSlide = this.slides[targetIndex];
5054            if (!targetSlide) return;
5055            this.isNavigating = true;
5056            targetSlide.scrollIntoView({
5057                block: "nearest",
5058                inline: isPrev ? "end" : "start"
5059            });
5060        }
5061        pagerToSlide(event) {
5062            if (!event.target.closest("[data-pager]")) return;
5063            const marker = event.target.closest("a, button");
5064            if (!marker) return;
5065            event.preventDefault();
5066            const slideId = marker.getAttribute("href")?.slice(1) || marker.getAttribute(this.markerIdName);
5067            const targetSlide = this.track.querySelector(`#${slideId}`);
5068            targetSlide?.scrollIntoView({ block: "nearest", inline: "start" });
5069        }
5070        eventHandler(event) {
5071            const target = event.target.closest(
5072                "[data-next], [data-prev], [data-pager]"
5073            );
5074            if (!target) return;
5075            if (event.type === "click") {
5076                if (target.hasAttribute("data-next")) {
5077                    this.goToSlideDir("next");
5078                } else if (target.hasAttribute("data-prev")) {
5079                    this.goToSlideDir("prev");
5080                } else if (target.closest("[data-pager]")) {
5081                    this.pagerToSlide(event);
5082                }
5083            }
5084            if (event.type === "keydown" && target.closest("[data-pager]")) {
5085                if (event.key === "ArrowRight" || event.key === "ArrowDown") {
5086                    event.preventDefault();
5087                    this.goToSlideDir("next");
5088                } else if (event.key === "ArrowLeft" || event.key === "ArrowUp") {
5089                    event.preventDefault();
5090                    this.goToSlideDir("prev");
5091                }
5092            }
5093        }
5094    };
5095
5096    (() => {
5097        function alpineSnapSlider(Alpine) {
5098            Alpine.directive("snap-slider", (el, {
5099                modifiers
5100            }, {
5101                cleanup
5102            }) => {
5103                const slider = new SnapSlider(el, {
5104                    autoPager: modifiers.includes("auto-pager"),
5105                    groupPager: modifiers.includes("group-pager"),
5106                    loop: modifiers.includes("loop"),
5107                    forcePager: modifiers.includes("force-pager")
5108                });
5109                cleanup(() => {
5110                    slider.destroy();
5111                });
5112            });
5113        }
5114
5115        document.addEventListener("alpine:init", () => {
5116            window.Alpine.plugin(alpineSnapSlider);
5117        });
5118    })();
5119    //# sourceURL=alpine-snap-slider.js
5120</script>
vendor: 1 bytes, line 5120
5120
5121<script>
5122    (() => {
5123        // src/dialog.js
5124        function dialog_default(Alpine) {
5125            Alpine.directive("htmldialog", fylgjaAlpineDialog);
5126            function fylgjaAlpineDialog(el, { expression, modifiers }, { evaluateLater, cleanup }) {
5127            const evaluate = expression.length ? evaluateLater(expression) : () => {};
5128            const lockPageScroll = modifiers.includes("noscroll");
5129            const isModeless = modifiers.includes("modeless");
5130            const closeBy = el.getAttribute("closeby") || modifierValue(modifiers, "closeby", "closerequest");
5131            el.style.display = null;
5132            el.style.length === 0 && el.removeAttribute("style");
5133            if (el._x_isShown) {
5134                open();
5135            }
5136            const closeBySupported = (() => {
5137                return "closedBy" in HTMLDialogElement.prototype;
5138            })();
5139            function scrollLock(use = true) {
5140                document.body.style.overflow = use ? "hidden" : "";
5141            }
5142            function dialogSubmit(event) {
5143                if (event.target.getAttribute("method") === "dialog" || event.submitter?.getAttribute("formmethod") === "dialog") {
5144                event.preventDefault();
5145                evaluate();
5146                }
5147            }
5148            function escapeDialog(event) {
5149                if (event.key !== "Escape") return;
5150                event.preventDefault();
5151                if (closeBy === "none") return;
5152                evaluate();
5153            }
5154            function handleCloseByEvent(event) {
5155                if (event.target !== el) return;
5156                const rect = el.getBoundingClientRect();
5157                const isInDialog = rect.top <= event.clientY && event.clientY <= rect.top + rect.height && rect.left <= event.clientX && event.clientX <= rect.left + rect.width;
5158                if (!isInDialog) {
5159                if (closeBy === "any") {
5160                    if (closeBySupported) {
5161                    event.preventDefault();
5162                    }
5163                    evaluate();
5164                }
5165                }
5166            }
5167            function handleCloseEvent() {
5168                evaluate();
5169            }
5170            function open() {
5171                if (el.hasAttribute("open")) return;
5172                isModeless ? el.show() : el.showModal();
5173                scrollLock(lockPageScroll);
5174            }
5175            function close() {
5176                if (!el.hasAttribute("open")) return;
5177                el.close();
5178                scrollLock(false);
5179            }
5180            el._x_doShow = () => open();
5181            el._x_doHide = () => close();
5182            el.addEventListener("keydown", escapeDialog);
5183            el.addEventListener("submit", dialogSubmit);
5184            el.addEventListener("click", handleCloseByEvent);
5185            el.addEventListener("cancel", handleCloseEvent);
5186            cleanup(() => {
5187                el.removeEventListener("keydown", escapeDialog);
5188                el.removeEventListener("submit", dialogSubmit);
5189                el.removeEventListener("click", handleCloseByEvent);
5190                el.removeEventListener("cancel", handleCloseEvent);
5191                scrollLock(false);
5192            });
5193            }
5194        }
5195        function modifierValue(modifiers, key, fallback) {
5196            if (modifiers.indexOf(key) === -1) return fallback;
5197            const rawValue = modifiers[modifiers.indexOf(key) + 1];
5198            if (!rawValue) return fallback;
5199            if (key === "closeby") {
5200            const allowedValues = ["auto", "none", "closerequest", "any"];
5201            const options = allowedValues.join(", ");
5202            if (!allowedValues.includes(rawValue)) {
5203                console.warn(
5204                `"${rawValue}" is not one of the allowed values for closeby: ${options}`
5205                );
5206                return fallback;
5207            }
5208            }
5209            return rawValue;
5210        }
5211
5212        // src/cdn.js
5213        document.addEventListener("alpine:init", () => {
5214            window.Alpine.plugin(dialog_default);
5215        });
5216    })();
5217    //# sourceURL=alpine-htmldialog.js
5218</script>
vendor: 1 bytes, line 5218
5218
vendor: 2,386 bytes, lines 5219-5279
5219<script>
5220    (() => {
5221        function src_default(Alpine) {
5222            Alpine.directive("intersect", Alpine.skipDuringClone((el, { value, expression, modifiers }, { evaluateLater, cleanup }) => {
5223                let evaluate = evaluateLater(expression);
5224                let options = {
5225                    rootMargin: getRootMargin(modifiers),
5226                    threshold: getThreshold(modifiers)
5227                };
5228                let observer = new IntersectionObserver((entries) => {
5229                    entries.forEach((entry) => {
5230                        if (entry.isIntersecting === (value === "leave"))
5231                            return;
5232                        evaluate();
5233                        modifiers.includes("once") && observer.disconnect();
5234                    });
5235                }, options);
5236                observer.observe(el);
5237                cleanup(() => {
5238                    observer.disconnect();
5239                });
5240            }));
5241        }
5242        function getThreshold(modifiers) {
5243            if (modifiers.includes("full"))
5244                return 0.99;
5245            if (modifiers.includes("half"))
5246                return 0.5;
5247            if (!modifiers.includes("threshold"))
5248                return 0;
5249            let threshold = modifiers[modifiers.indexOf("threshold") + 1];
5250            if (threshold === "100")
5251                return 1;
5252            if (threshold === "0")
5253                return 0;
5254            return Number(`.${threshold}`);
5255        }
5256        function getLengthValue(rawValue) {
5257            let match = rawValue.match(/^(-?[0-9]+)(px|%)?$/);
5258            return match ? match[1] + (match[2] || "px") : void 0;
5259        }
5260        function getRootMargin(modifiers) {
5261            const key = "margin";
5262            const fallback = "0px 0px 0px 0px";
5263            const index = modifiers.indexOf(key);
5264            if (index === -1)
5265                return fallback;
5266            let values = [];
5267            for (let i = 1; i < 5; i++) {
5268                values.push(getLengthValue(modifiers[index + i] || ""));
5269            }
5270            values = values.filter((v) => v !== void 0);
5271            return values.length ? values.join(" ").trim() : fallback;
5272        }
5273
5274        document.addEventListener("alpine:init", () => {
5275            window.Alpine.plugin(src_default);
5276        });
5277    })();
5278    //# sourceURL=alpine-intersect.js
5279</script>
5279
5280
5281<script>
5282    for (const [selector, deferUntil] of Object.entries({".product-slider section[x-data]:not([x-data] [x-data])":"intersect",".product-info [x-data]:not([x-data] [x-data])":"intersect","#filters-content [x-data]:not([x-data] [x-data])":"intersect","#review_form":"intersect","section[x-data^=initRecentlyViewedProductsComponent]":"intersect","div[x-data^=initBundleOptions]":"intersect","#product_addtocart_form [x-data]:not([x-data] [x-data])":"intersect","#notice-cookie-block":"idle"})) {
5283        document.querySelectorAll(selector).forEach(el => el.setAttribute('x-defer', `${deferUntil}`));
5284    }
5285    //# sourceURL=alpine-defer-rules.js
5286</script>
vendor: 1 bytes, line 5286
5286
5287<script>
5288    (() => {
5289        const hasAlpine = new Promise(resolve => {
5290            window.addEventListener('alpine:initialized', resolve, {once: true, passive: true});
5291        });
5292
5293        const hasInteract = new Promise(resolve => {
5294            (events => {
5295                const onInteract = () => {
5296                    resolve();
5297                    events.forEach(type => window.removeEventListener(type, onInteract));
5298                }
5299                events.forEach(type => window.addEventListener(type, onInteract, {once: true, passive: true}))
5300            })(['touchstart', 'mouseover', 'wheel', 'scroll', 'keydown'])
5301        });
5302
5303        const onIntersect = (el) => {
5304            return new Promise(resolve => {
5305                const observer = new IntersectionObserver(entries => {
5306                    for (const entry of entries) {
5307                        if (entry.isIntersecting) {
5308                            observer.disconnect()
5309                            resolve();
5310                        }
5311                    }
5312                }, {});
5313                observer.observe(el);
5314            });
5315        }
5316
5317        function runComponent(el) {
5318            hasAlpine.then(() => {
5319                el.removeAttribute('x-ignore');
5320                queueMicrotask(() => Alpine.initTree(el));
5321            });
5322        }
5323
5324        function initDeferredComponents() {
5325            document.querySelectorAll('[x-data][x-defer]').forEach(el => {
5326                el.setAttribute('x-ignore', '');
5327                const deferUntil = (el.getAttribute('x-defer') || '').trim();
5328                switch (deferUntil) {
5329                    case 'interact':
5330                        hasInteract.then(() => runComponent(el));
5331                        break;
5332                    case 'intersect':
5333                        onIntersect(el).then(() => runComponent(el))
5334                        break;
5335                    case 'idle':
5336                        window.requestIdleCallback
5337                            ? window.requestIdleCallback(() => runComponent(el), {timeout: 4000})
5338                            : setTimeout(() => runComponent(el), 4000);
5339                        break;
5340                    case 'eager':
5341                        runComponent(el);
5342                        break;
5343                    default:
5344                        if (deferUntil.startsWith('event:') && deferUntil.length > 6) {
5345                            window.addEventListener(deferUntil.substring(6), () => runComponent(el), {once: true, passive: true});
5346                        }
5347                }
5348            });
5349        }
5350
5351        window.addEventListener('alpine:init', initDeferredComponents, {once: true, passive: true});
5352    })();
5353    //# sourceURL=alpine-defer.js
5354</script>
5354
5355
vendor: 4,392 bytes, lines 5356-5463
5356<script>
5357    (() => {
5358        // packages/collapse/src/index.js
5359        function src_default(Alpine) {
5360            Alpine.directive("collapse", collapse);
5361            collapse.inline = (el, {
5362                modifiers
5363            }) => {
5364                if (!modifiers.includes("min"))
5365                    return;
5366                el._x_doShow = () => {};
5367                el._x_doHide = () => {};
5368            };
5369
5370            function collapse(el, {
5371                modifiers
5372            }) {
5373                let duration = modifierValue(modifiers, "duration", 250) / 1e3;
5374                let floor = modifierValue(modifiers, "min", 0);
5375                let fullyHide = !modifiers.includes("min");
5376                if (!el._x_isShown)
5377                    el.style.height = `${floor}px`;
5378                if (!el._x_isShown && fullyHide)
5379                    el.hidden = true;
5380                if (!el._x_isShown)
5381                    el.style.overflow = "hidden";
5382                let setFunction = (el2, styles) => {
5383                    let revertFunction = Alpine.setStyles(el2, styles);
5384                    return styles.height ? () => {} : revertFunction;
5385                };
5386                let transitionStyles = {
5387                    transitionProperty: "height",
5388                    transitionDuration: `${duration}s`,
5389                    transitionTimingFunction: "cubic-bezier(0.4, 0.0, 0.2, 1)"
5390                };
5391                el._x_transition = {
5392                    in(before = () => {}, after = () => {}) {
5393                        if (fullyHide)
5394                            el.hidden = false;
5395                        if (fullyHide)
5396                            el.style.display = null;
5397                        let current = el.getBoundingClientRect().height;
5398                        el.style.height = "auto";
5399                        let full = el.getBoundingClientRect().height;
5400                        if (current === full) {
5401                            current = floor;
5402                        }
5403                        Alpine.transition(el, Alpine.setStyles, {
5404                            during: transitionStyles,
5405                            start: {
5406                                height: current + "px"
5407                            },
5408                            end: {
5409                                height: full + "px"
5410                            }
5411                        }, () => el._x_isShown = true, () => {
5412                            if (el.getBoundingClientRect().height == full) {
5413                                el.style.overflow = null;
5414                            }
5415                        });
5416                    },
5417                    out(before = () => {}, after = () => {}) {
5418                        let full = el.getBoundingClientRect().height;
5419                        Alpine.transition(el, setFunction, {
5420                            during: transitionStyles,
5421                            start: {
5422                                height: full + "px"
5423                            },
5424                            end: {
5425                                height: floor + "px"
5426                            }
5427                        }, () => el.style.overflow = "hidden", () => {
5428                            el._x_isShown = false;
5429                            if (el.style.height == `${floor}px` && fullyHide) {
5430                                el.style.display = "none";
5431                                el.hidden = true;
5432                            }
5433                        });
5434                    }
5435                };
5436            }
5437        }
5438
5439        function modifierValue(modifiers, key, fallback) {
5440            if (modifiers.indexOf(key) === -1)
5441                return fallback;
5442            const rawValue = modifiers[modifiers.indexOf(key) + 1];
5443            if (!rawValue)
5444                return fallback;
5445            if (key === "duration") {
5446                let match = rawValue.match(/([0-9]+)ms/);
5447                if (match)
5448                    return match[1];
5449            }
5450            if (key === "min") {
5451                let match = rawValue.match(/([0-9]+)px/);
5452                if (match)
5453                    return match[1];
5454            }
5455            return rawValue;
5456        }
5457
5458        // packages/collapse/builds/cdn.js
5459        document.addEventListener("alpine:init", () => {
5460            window.Alpine.plugin(src_default);
5461        });
5462    })();
5463</script>
5463<script>
5464// x-teleport implementation
5465(_ => {
5466    document.addEventListener('DOMContentLoaded', event => {
5467        // x-teleport available only for template
5468        if (!Alpine.version.startsWith('2')) {
5469            return;
5470        }
5471
5472        const teleportDirective = (el, expression) => {
5473            let target = document.querySelector(expression)
5474            let clone = el.content.cloneNode(true).firstElementChild;
5475
5476            target.appendChild(clone);
5477            setTimeout(() => {
5478                target.querySelectorAll('[x-data]')
5479                    .forEach(el => Alpine.initializeComponent(el));
5480            }, 0)
5481        };
5482
5483        document.querySelectorAll('template').forEach(el => {
5484            if (!el.hasAttribute('x-teleport')) {
5485                return;
5486            }
5487
5488            teleportDirective(el, el.getAttribute('x-teleport'));
5489        });
5490
5491        document.querySelectorAll('[x-data]').forEach(el => {
5492            if (el.hasAttribute('x-init')) {
5493                return;
5494            }
5495
5496            setTimeout(() => {
5497                Alpine.initializeComponent(el);
5498            }, 0);
5499        });
5500    });
5501})()
5502</script>
5502
5503
5504<script type="module"
5505        src="https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_Theme/js/alpine3.min.js"
5506        defer
5507        crossorigin
5508></script>
vendor: 1 bytes, line 5508
5508
5509<script>
5510    loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/jquery.min.js', 'jquery')
5511        .then(() => {
5512            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonPageBuilder/js/common.js', 'common');
5513        })
5514        .then(() => {
5515            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Hyva_MagezonBuilder/js/waypoints.min.js', 'waypoints');
5516        })
5517        .then(() => {
5518            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_Builder/js/jarallax/jarallax.min.js', 'jarallax');
5519        })
5520        .then(() => {
5521            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_Builder/js/jarallax/jarallax-video.js', 'jarallax-video');
5522        })
5523        .then(() => {
5524            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_Builder/js/vimeo/player.js', 'vimeo-player');
5525        })
5526        .then(() => {
5527            return loadScript('https://www.mode-jost.de/static/version1789565467/frontend/Modehaus/mhdesign_hyva/de_DE/Magezon_Core/js/jquery.magnific-popup.min.js', 'magnific-popup');
5528        })
5529        .then(() => {
5530            var $wnd = $(window);
5531            var $doc = $(document);
5532
5533            var throttle = function ( delay, noTrailing, callback, debounceMode ) {
5534                /*
5535                 * After wrapper has stopped being called, this timeout ensures that
5536                 * `callback` is executed at the proper times in `throttle` and `end`
5537                 * debounce modes.
5538                 */
5539                var timeoutID;
5540                var cancelled = false;
5541
5542                // Keep track of the last time `callback` was executed.
5543                var lastExec = 0;
5544
5545                // Function to clear existing timeout
5546                function clearExistingTimeout () {
5547                    if ( timeoutID ) {
5548                        clearTimeout(timeoutID);
5549                    }
5550                }
5551
5552                // Function to cancel next exec
5553                function cancel () {
5554                    clearExistingTimeout();
5555                    cancelled = true;
5556                }
5557
5558
5559                // `noTrailing` defaults to falsy.
5560                if ( typeof noTrailing !== 'boolean' ) {
5561                    debounceMode = callback;
5562                    callback = noTrailing;
5563                    noTrailing = undefined;
5564                }
5565
5566                /*
5567                 * The `wrapper` function encapsulates all of the throttling / debouncing
5568                 * functionality and when executed will limit the rate at which `callback`
5569                 * is executed.
5570                 */
5571                function wrapper () {
5572
5573                    var self = this;
5574                    var elapsed = Date.now() - lastExec;
5575                    var args = arguments;
5576
5577                    if (cancelled) {
5578                        return;
5579                    }
5580
5581                    // Execute `callback` and update the `lastExec` timestamp.
5582                    function exec () {
5583                        lastExec = Date.now();
5584                        callback.apply(self, args);
5585                    }
5586
5587                    /*
5588                     * If `debounceMode` is true (at begin) this is used to clear the flag
5589                     * to allow future `callback` executions.
5590                     */
5591                    function clear () {
5592                        timeoutID = undefined;
5593                    }
5594
5595                    if ( debounceMode && !timeoutID ) {
5596                        /*
5597                         * Since `wrapper` is being called for the first time and
5598                         * `debounceMode` is true (at begin), execute `callback`.
5599                         */
5600                        exec();
5601                    }
5602
5603                    clearExistingTimeout();
5604
5605                    if ( debounceMode === undefined && elapsed > delay ) {
5606                        /*
5607                         * In throttle mode, if `delay` time has been exceeded, execute
5608                         * `callback`.
5609                         */
5610                        exec();
5611
5612                    } else if ( noTrailing !== true ) {
5613                        /*
5614                         * In trailing throttle mode, since `delay` time has not been
5615                         * exceeded, schedule `callback` to execute `delay` ms after most
5616                         * recent execution.
5617                         *
5618                         * If `debounceMode` is true (at begin), schedule `clear` to execute
5619                         * after `delay` ms.
5620                         *
5621                         * If `debounceMode` is false (at end), schedule `callback` to
5622                         * execute after `delay` ms.
5623                         */
5624                        timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);
5625                    }
5626
5627                }
5628
5629                wrapper.cancel = cancel;
5630
5631                // Return the wrapper function.
5632                return wrapper;
5633
5634            }
5635
5636            var isMobile = /Android|iPhone|iPad|iPod|BlackBerry|W
5636indows Phone/g.test(navigator.userAgent || navigator.vendor || window.opera);
5637
5638            var wndW = 0;
5639            var wndH = 0;
5640            wndW = $wnd.width();
5641            wndH = $wnd.height();
5642            $wnd.on( 'resize load orientationchange', function() {
5643                wndW = $wnd.width();
5644                wndH = $wnd.height();
5645            });
5646
5647            /**
5648             * In Viewport checker
5649             * return visible percent from 0 to 1
5650             *
5651             * @param {Object} $item - jQuery object.
5652             * @param {Bool} returnRect - return array with result and rect.
5653             *
5654             * @return {Mixed} - in viewport flag.
5655             */
5656            function isInViewport( $item, returnRect ) {
5657                var rect = $item[ 0 ].getBoundingClientRect();
5658                var result = 1;
5659
5660                if ( rect.right <= 0 || rect.left >= wndW ) {
5661                    result = 0;
5662                } else if ( rect.bottom < 0 && rect.top <= wndH ) {
5663                    result = 0;
5664                } else {
5665                    var beforeTopEnd = Math.max( 0, rect.height + rect.top );
5666                    var beforeBottomEnd = Math.max( 0, rect.height - ( rect.top + rect.height - wndH ) );
5667                    var afterTop = Math.max( 0, -rect.top );
5668                    var beforeBottom = Math.max( 0, rect.top + rect.height - wndH );
5669
5670                    if ( rect.height < wndH ) {
5671                        result = 1 - ( ( afterTop || beforeBottom ) / rect.height );
5672                    } else if ( beforeTopEnd <= wndH ) {
5673                        result = beforeTopEnd / wndH;
5674                    } else if ( beforeBottomEnd <= wndH ) {
5675                        result = beforeBottomEnd / wndH;
5676                    }
5677                    result = result < 0 ? 0 : result;
5678                }
5679                if ( returnRect ) {
5680                    return [ result, rect ];
5681                }
5682                return result;
5683            }
5684
5685
5686            /**
5687             * Mouse Parallax
5688             */
5689            var $parallaxMouseList = false;
5690            var parallaxMouseTimeout;
5691            var parallaxMouseFirstRun = 1;
5692
5693            // run parallax animation
5694            function parallaxMouseRun( x, y, deviceOrientation ) {
5695                var data;
5696                var itemX;
5697                var itemY;
5698                $parallaxMouseList.each( function() {
5699                    var $this = $( this );
5700                    data = $this.data( 'parallax-mouse-data' );
5701
5702                    // don't animate if block isn't in viewport
5703                    if ( typeof data !== 'object' || ( ! data.is_in_viewport && ! ( deviceOrientation && parallaxMouseFirstRun ) ) ) {
5704                        return;
5705                    }
5706
5707                    // device acceleration calculate
5708                    if ( deviceOrientation ) {
5709                        itemX = -data.size * x;
5710                        itemY = -data.size * y;
5711
5712                        // mouse calculate
5713                    } else {
5714                        itemX = ( data.rect.width - ( x - data.rect.left ) ) / data.rect.width;
5715                        itemY = ( data.rect.height - ( y - data.rect.top ) ) / data.rect.height;
5716                        if ( itemX > 1 || itemX < 0 || itemY > 1 || itemY < 0 ) {
5717                            itemX = 0.5;
5718                            itemY = 0.5;
5719                        }
5720                        itemX = data.size * ( itemX - 0.5 ) * 2;
5721                        itemY = data.size * ( itemY - 0.5 ) * 2;
5722                    }
5723
5724                    // if first run orientation on device, set default values without animation
5725                    if ( deviceOrientation && parallaxMouseFirstRun ) {
5726                        $this.css( {
5727                            transform: `translateX(${ itemX }px) translateY(${ itemY }px) translateZ(0)`,
5728                        } );
5729                    } else {
5730                        $this.css( {
5731                            transition: `transform ${ deviceOrientation ? 2 : data.speed }s  cubic-bezier(0.22, 0.63, 0.6, 0.88)`,
5732                            transform: `translateX(${ itemX }px) translateY(${ itemY }px) translateZ(0)`,
5733                        } );
5734                    }
5735                } );
5736                parallaxMouseFirstRun = 0;
5737            }
5738            var throttledParallaxMouseRun = throttle( 200, ( x, y, deviceOrientation ) => {
5739                parallaxMouseRun( x, y, deviceOrientation );
5740            });
5741
5742            window.mgzParallaxMouse = function ( force ) {
5743                function run() {
5744                    var $newParallax = $( '.mgz-parallax.mgz-parallax-mouse-parallax' ).children( '.mgz-parallax-inner' );
5745                    if ( $newParallax.length ) {
5746                        // add new parallax blocks
5747                        if ( $parallaxMouseList ) {
5748                            $parallaxMouseList = $newParallax;
5749
5750                            // first init parallax
5751                        } else {
5752                            $parallaxMouseList = $newParallax;
5753
5754                            if ( isMobile && window.DeviceOrientationEvent ) {
5755                                $wnd.on( 'deviceorientation', ( event ) => {
5756                                    throttledParallaxMouseRun( event.originalEvent.gamma / 90, event.originalEvent.beta / 180, true );
5757                                } );
5758
5759                                // no smooth on firefox
5760                            } else {
5761                                $wnd.on( 'mousemove', ( event ) => {
5762                                    throttledParallaxMouseRun( event.clientX, event.clientY );
5763                                } );
5764                            }
5765                        }
5766                    }
5767
5768                    // update data for parallax blocks
5769                    if ( $parallaxMouseList ) {
5770                        $parallaxMouseList.each( function() {
5771                            var $this   = $( this );
5772                            var $elem   = $( this ).closest('.mgz-element');
5773                            var $parent = $this.parent();
5774                            var size    = parseFloat( $parent.attr( 'data-
5774parallax-mouse-parallax-size' ) ) || 30;
5775                            var speed   = parseFloat( $parent.attr( 'data-parallax-mouse-parallax-speed' ) ) || 10000;
5776                            $this.data( 'parallax-mouse-data', {
5777                                is_in_viewport: isInViewport( $parent ) ? $elem.is( ':visible' ) : 0,
5778                                rect: $parent[ 0 ].getBoundingClientRect(),
5779                                size,
5780                                speed: speed / 1000,
5781                            } );
5782                            $this.css( {
5783                                left: -size,
5784                                right: -size,
5785                                top: -size,
5786                                bottom: -size,
5787                            } );
5788                        } );
5789                    }
5790                }
5791
5792                // run force without timeout
5793                clearTimeout( parallaxMouseTimeout );
5794                if ( force ) {
5795                    run();
5796                } else {
5797                    parallaxMouseTimeout = setTimeout( parallaxMouseTimeout, 100 );
5798                }
5799            }
5800            $wnd.on( 'resize scroll orientationchange load', window.mgzParallaxMouse );
5801
5802            setInterval( window.mgzParallaxMouse, 3000 );
5803
5804            $(document).find('.mgz-parallax').each(function(index, el) {
5805                var $this           = $( this );
5806                var backgroundType  = $this.attr( 'data-background-type' );
5807                var imageBgSize     = $this.attr( 'data-parallax-image-background-size' );
5808                var imageBgPosition = $this.attr( 'data-parallax-image-background-position' );
5809                var video           = false;
5810                var videoStartTime  = 0;
5811                var videoEndTime    = 0;
5812                var videoVolume     = 0;
5813                var videoLoop       = true;
5814                var videoAlwaysPlay = true;
5815                var videoMobile     = false;
5816                var parallax        = $this.attr( 'data-parallax-type' );
5817                var parallaxSpeed   = $this.attr( 'data-parallax-speed' );
5818                var parallaxMobile  = $this.attr( 'data-parallax-mobile' ) === 'true' || $this.attr( 'data-parallax-mobile' ) === '1';
5819
5820                // video type
5821                if ( backgroundType === 'yt_vm_video' || backgroundType === 'video' ) {
5822                    video           = $this.attr( 'data-parallax-video' );
5823                    videoStartTime  = parseFloat( $this.attr( 'data-parallax-video-start-time' ) ) || 0;
5824                    videoEndTime    = parseFloat( $this.attr( 'data-parallax-video-end-time' ) ) || 0;
5825                    videoVolume     = parseFloat( $this.attr( 'data-parallax-video-volume' ) ) || 0;
5826                    videoLoop       = $this.attr( 'data-parallax-video-loop' ) !== 'false';
5827                    videoAlwaysPlay = $this.attr( 'data-parallax-video-always-play' ) === 'true';
5828                    videoMobile     = $this.attr( 'data-parallax-video-mobile' ) === '1' || $this.attr( 'data-parallax-video-mobile' ) === 'true';
5829
5830                    if ( video && ! parallax && ! parallaxSpeed ) {
5831                        parallax       = 'scroll';
5832                        parallaxSpeed  = 1;
5833                        parallaxMobile = videoMobile;
5834                    }
5835                }
5836
5837                // prevent if no parallax and no video
5838                if ( ! parallax && ! video ) return;
5839
5840                var jarallaxParams = {
5841                    automaticResize: true,
5842                    type: parallax,
5843                    speed: parallaxSpeed,
5844                    disableParallax() {
5845                        return parallaxMobile ? false : isMobile;
5846                    },
5847                    disableVideo() {
5848                        return videoMobile ? false : isMobile;
5849                    },
5850                    imgSize: imageBgSize || 'cover',
5851                    imgPosition: imageBgPosition || '50% 50%',
5852                };
5853
5854                if ( imageBgSize === 'pattern' ) {
5855                    jarallaxParams.imgSize   = 'auto';
5856                    jarallaxParams.imgRepeat = 'repeat';
5857                }
5858
5859                if ( video ) {
5860                    jarallaxParams.speed                = parallax ? parallaxSpeed : 1;
5861                    jarallaxParams.videoSrc             = video;
5862                    jarallaxParams.videoStartTime       = videoStartTime;
5863                    jarallaxParams.videoEndTime         = videoEndTime;
5864                    jarallaxParams.videoVolume          = videoVolume;
5865                    jarallaxParams.videoLoop            = videoLoop;
5866                    jarallaxParams.videoPlayOnlyVisible = ! videoAlwaysPlay;
5867                }
5868                jarallax($this.children( '.mgz-parallax-inner' ), jarallaxParams);
5869            });
5870
5871            var mgzInit = function() {
5872
5873                var height = $(window).height();
5874                $(document).find('.mgz-row-full-height').each(function(index, el) {
5875                    $(this).css('min-height', height);
5876                    $(this).children('.mgz-element-inner').css('min-height', height);
5877                    $(this).children().children('.mgz-element-row-content').css('min-height', height);
5878                });
5879
5880                // ANIMATION
5881                if ($(".mgz-animated:not(.mgz_start_animation)").length) {
5882                    $(".mgz-animated:not(.mgz_start_animation)").waypoint(function() {
5883                        var self = this;
5884                        var delayTime = 0;
5885                        if ($(this.element).data('animation-delay')) {
5886                            delayTime = $(this.element).data('animation-delay');
5887                        }
5888                        var durationTime = 0;
5889                        if ($(this.element).data('animation-duration')) {
5890                            durationTime = $(this.element).data('animation-duration');
5891                        }
5892                        if (durationTime) $(self.element).css("animation-duration", durationTime + 's');
5893                        setTimeout(function() {
5894                            $(self.element).addClass("mgz_start_animation animated")
5895                        }, delayTime * 1000);
5896                    }, {
5897                        offset: "85%"
5898                    });
5899                }
5900
5901                // WAYPOINT
5902                if ($(".mgz-waypoint").length) {
5903                    $(".mgz-waypoint").waypoint(function() {
5904                        if (!$(this.element).hasClass('mgz-animation-applied')) {
5905                            $(this.element).trigger('mgz:animation:run');
5906                            $(this.element).addClass('mgz-animation-applied');
5907                        }
5908                    }, {
5909                        offset: "85%",
5910                        triggerOnce: true
5911                    });
5912                }
5913
5914                $('.magezon-builder').find('.mgz-magnific-link').each(function(index, el) {
5915                    var type = $(this).data('type') ? $(this).data('type') : 'image';
5916                    var options = {
5917                        type: type,
5918                        mainClass: $(this).data('main-class'),
5919                        removalDelay: 300,
5920                        fixedContentPos: true,
5921                        fixedBgPos: true,
5922                        image: {
5923                            verticalFit: true
5924                        }
5925                    }
5926
5927                    if ($(this).data('zoom')) {
5928                        if (options['mainClass']) {
5929                            options['mainClass'] += ' mfp-no-margins mfp-with-zoom';
5930                        } else {
5931                            options['mainClass'] = 'mfp-no-margins mfp-with-zoom';
5932                        }
5933                        options['zoom'] = {
5934                            enabled: true,
5935                            duration: 300
5936                        };
5937                    }
5938
5939                    $(this).magnificPopup(options);
5940                });
5941
5942                $('.magezon-builder').find('.mgz-magnific-gallery').each(function(index, el) {
5943                    var options = {
5944                        delegate: 'a',
5945                        type: 'image',
5946                        tLoading: 'Loading image #%curr%...',
5947                        mainClass: 'mgz-mfp',
5948                        fixedContentPos: true,
5949                        gallery: {
5950                            enabled: true,
5951                            navigateByImgClick: true,
5952                            preload: [0,1]
5953                        }
5954                    }
5955                    $(this).magnificPopup(options);
5956                });
5957
5958                $('.magezon-builder').find('.mgz-magnific').each(function(index, el) {
5959                    var type = $(this).data('type') ? $(this).data('type') : 'image';
5960                    var options = {};
5961
5962                    switch (type) {
5963                        case 'gallery':
5964                            var delegate = 'a';
5965                            options = {
5966                                delegate: delegate,
5967                                type: 'image',
5968                                tLoading: 'Loading image #%curr%...',
5969                                mainClass: 'mgz-mfp',
5970                                fixedContentPos: true,
5971                                gallery: {
5972                                    enabled: true,
5973                                    navigateByImgClick: true,
5974                                    preload: [0,1]
5975                                },
5976                                iframe: {
5977                                    markup: '<div class="mfp-iframe-scaler">'+
5978                                        '<div class="mfp-close"></div>'+
5979                                        '<iframe class="mfp-iframe" allow="accelerometer; ; encrypted-media; gyroscope; picture-in-picture" frameborder="0" allowfullscreen></iframe>'+
5980                                        '<div class="mfp-title"></div>' +
5981                                        '<div class="mfp-counter"></div>' +
5982                                        '</div>'
5983                                },
5984                                callbacks: {
5985                                    elementParse: function(item) {
5986                                        if (item.el.data('type')) {
5987                                            item.type = item.el.data('type');
5988                                        }
5989                                    },
5990
5991                                    markupParse: function(template, values, item) {
5992                                        values.title = item.el.attr('title');
5993                                    }
5994                                }
5995                            }
5996                            break;
5997
5998                        default:
5999                            options = {
6000                                type: type,
6001                                mainClass: $(this).data('main-class'),
6002                                removalDelay: 300,
6003                                fixedContentPos: true,
6004                                image: {
6005                                    verticalFit: true
6006                                },
6007                                image: {
6008                                    titleSrc: function(item) {
6009                                        var title = item.el.attr('title');
6010                                        if (item.el.data('title')) {
6011                                            title = item.el.data('title');
6012                                        }
6013                                        return title;
6014                                    }
6015                                }
6016                            }
6017                            if ($(this).data('zoom')) {
6018                                options['zoom'] = {
6019                                    enabled: true,
6020                                    duration: 300
6021                                };
6022                            }
6023                            break;
6024                    }
6025
6026                    if ($(this).data('zoom')) {
6027                        if (options['mainClass']) {
6028                            options['mainClass'] += ' mfp-no-margins mfp-with-zoom';
6029                        } else {
6030                            options['mainClass'] = 'mfp-no-margins mfp-with-zoom';
6031                        }
6032                        options['zoom'] = {
6033                            enabled: true,
6034                            duration: 300
6035                        };
6036                    }
6037
6038                    $(this).click(function(e) {
6039                        e.preventDefault();
6040                    });
6041                    $(this).magnificPopup(options);
6042                });
6043
6044                $('.mgz-magnific').on('click', function() {
6045                    return false;
6046                });
6047
6048                $('.mgz-element-single_image .image-content').click(function(event) {
6049                    $(this).siblings('a')[0].click();
6050                });
6051
6052                $('.mgz-element-single_image .mgz-single-image-inner').hover(function() {
6053                    var img = $(this).find('img');
6054                    if (img.data('hover')) {
6055                        var src = img.attr('src');
6056                        img.data('src', src);
6057                        img.attr('src', img.data('hover'));
6058                    }
6059                }, function() {
6060                    var img = $(this).find('img');
6061                    if (img.data('src')) {
6062                        var src = img.data('src');
6063                        img.attr('src', src);
6064                    }
6065                });
6066            }
6067            $('body').on('magezonBuilderLoaded', mgzInit);
6068            $(document).on('mgz:init', mgzInit);
6069            $('body').trigger('magezonBuilderLoaded');
6070            jQuery(document).ready(function($) {
6071                $('.magezon-builder').removeClass('magezon-builder-preload');
6072            });
6073        })
6074</script>
6074<script>
6075    (function () {
6076        const modals = [];
6077                let lastHide = 0;
6078
6079                function resolveElement($refs, value) {
6080            if (!value) return null;
6081                        if (value instanceof Element) return value;
6082                        if (typeof value === 'string') {
6083                try {
6084                    return ($refs && $refs[value]) || document.querySelector(value) || null;
6085                } catch (e) {}
6086            }
6087            return null;
6088        }
6089
6090                function determineTrigger($refs, dialog, trigger) {
6091                        if (!trigger && dialog?.target instanceof HTMLElement) {
6092                return dialog.target;
6093            }
6094
6095                        if (typeof dialog === 'string' && trigger?.target instanceof HTMLElement) {
6096                return trigger.target;
6097            }
6098
6099            return resolveElement($refs, trigger);
6100        }
6101
6102                function setFocusFirstElement(dialogElement) {
6103            if (!dialogElement) return;
6104
6105            window.setTimeout(() => {
6106                const candidates = dialogElement.querySelectorAll('[x-focus-first]');
6107                for (const candidate of candidates) {
6108                    if (candidate.closest('dialog') === dialogElement) {
6109                        candidate.focus();
6110                        return;
6111                    }
6112                }
6113            }, 50);
6114        }
6115
6116        window.hyva.modal = function(options = {}) {
6117                        if (this.$el && this.$el.dataset && this.$el.dataset.options) {
6118                try {
6119                    options = Object.assign(options, JSON.parse(this.$el.dataset.options || '{}'));
6120                } catch (e) {
6121                    throw new Error('Cannot read the dialog options from the data-options attribute: not valid JSON');
6122                }
6123            }
6124
6125            const config = Object.assign({
6126                dialog: 'dialog',                 duration: 300,                 transitionEnter: 'transition ease-out duration-300',
6127                transitionEnterStart: 'opacity-0',
6128                transitionEnterEnd: 'opacity-100',
6129                transitionLeave: 'transition ease-in duration-300',
6130                transitionLeaveStart: 'opacity-100',
6131                transitionLeaveEnd: 'opacity-0',
6132            }, options);
6133
6134            return {
6135                opened: {},
6136                show(dialog, trigger) {
6137                    const name = typeof dialog === 'string' ? dialog : config.dialog;
6138                    if (!name || this.opened[name]) return;
6139
6140                    this.opened[name] = true;
6141                    const focusTarget = determineTrigger(this.$refs, dialog, trigger);
6142                    const dialogEl = this.$refs && this.$refs[name];
6143                    const frame = { name, instance: this, focusTarget, time: Date.now() };
6144                    modals.push(frame);
6145                    setFocusFirstElement(dialogEl);
6146                    return new Promise(resolve => { frame.resolve = resolve; });
6147                },
6148                cancel() {
6149                    this.hide(false);
6150                },
6151                ok() {
6152                    this.hide(true);
6153                },
6154                hide(value) {
6155                                        if (Date.now() - lastHide < config.duration) return;
6156                    lastHide = Date.now();
6157
6158                                        const modal = modals.pop();
6159                    if (!modal) return;
6160
6161                    modal.instance.opened[modal.name] = false;
6162
6163                                        const focusTarget = modal.focusTarget;
6164                    focusTarget && window.setTimeout(() => focusTarget.focus(), config.duration + 50);
6165                    modal.resolve && modal.resolve(value);
6166                },
6167                /**
6168                 * @deprecated Use dialogConfig() instead, which is used by the default modal-container.phtml template.
6169                 * This method is kept for backwards compatibility with custom container templates.
6170                 */
6171                overlay(dialog) {
6172                    dialog = this.$el.dataset.dialogRefName || dialog;
6173                    const name = typeof dialog === 'string' ? dialog : config.dialog;
6174                    if (this.$el.tagName !== 'DIALOG' && ! window.hyva.modal.legacyModalCompatibility) {
6175                        console.warn(
6176                            '[hyva] Deprecated modal markup detected (x-bind="overlay" on a non-dialog element' +
6177                            (name ? ` for "${name}"` : '') + ').\n' +
6178                            'Escape and click-outside closing are not available for such dialogs anymore.\n' +
6179                            'Install hyva-themes/magento2-legacy-modal-compatibility or migrate to the native <dialog> markup.'
6180                        );
6181                    }
6182                    return Object.assign({}, this.dialogConfig(name), {
6183                        ['@hyva-modal-show.window'](event) {
6184                            event.detail && event.detail.dialog === name && this.show(name, event.detail.focusAfterHide)
6185                        }
6186                    });
6187                },
6188                dialogConfig(name) {
6189                    name = name || this.$el.dataset.dialogRefName || config.dialog;
6190                    return {
6191                        ['x-show']: () => name ? this.opened[name] : false,
6192                        ['x-transition:enter']: config.transitionEnter,
6193                        ['x-transition:enter-start']: config.transitionEnterStart,
6194                        ['x-transition:enter-end']: config.transitionEnterEnd,
6195                        ['x-transition:leave']: config.transitionLeave,
6196                        ['x-transition:leave-start']: config.transitionLeaveStart,
6197                        ['x-transition:leave-end']: config.transitionLeaveEnd,
6198                        ['@hyva-modal-show.window'](event) {
6199                            event.detail && event.detail.dialog === name && this.show(name, event.detail.focusAfterHide);
6200                        },
6201                    };
6202                },
6203                showDialogOnInit() {
6204                    const name = this.$el.dataset.dialogRefName;
6205                    if (name) {
6206                        this.show(name);
6207                    }
6208                }
6209            };
6210        }
6211
6212        window.hyva.modal.peek = () => modals.length > 0 && modals[modals.length - 1]
6213
6214        window.hyva.modal.pop = function () {
6215            if (modals.length > 0) {
6216                modals[modals.length - 1].instance.hide();
6217            }
6218        }
6219
6220        /**
6221         * @deprecated Native <dialog> handles focus trapping automatically.
6222         * Calling this function has no effect. Kept for backwards compatibility.
6223         */
6224        window.hyva.modal.excludeSelectorsFromFocusTrap = function (selectors) {}
6225
6226        /**
6227         * @deprecated Native <dialog> with x-htmldialog handles ESC key and click-outside events.
6228         * These functions have no effect. Kept for backwards compatibility.
6229         */
6230        window.hyva.modal.eventListeners = {
6231            keydown: event => {},
6232            click: event => {}
6233        };
6234    })();
6235
6236    window.addEventListener('alpine:init', () => {
6237        Alpine.data('hyvaModal', window.hyva.modal);
6238    }, {once: true});
6239</script>
vendor: 1 bytes, line 6239
6239
6240<script>
6241    (function () {
6242        if (! window.hyva || ! window.hyva.modal) {
6243            return;
6244        }
6245
6246                window.hyva.modal.legacyModalCompatibility = true;
6247
6248        const refElement = frame =>
6249            frame && frame.instance && frame.instance.$refs && frame.instance.$refs[frame.name];
6250
6251        const isLegacyElement = el => !! el && el.tagName !== 'DIALOG';
6252
6253        const isOverlayDisabled = el => !! el && el.hasAttribute('x-no-overlay');
6254
6255                window.hyva.modal.eventListeners = Object.assign(window.hyva.modal.eventListeners || {}, {
6256            keydown: event => {
6257                if (event.key !== 'Escape') {
6258                    return;
6259                }
6260                const frame = window.hyva.modal.peek();
6261                if (frame && isLegacyElement(refElement(frame))) {
6262                    frame.instance.hide();
6263                }
6264            },
6265            click: event => {
6266                const frame = window.hyva.modal.peek();
6267                const dialog = refElement(frame);
6268                if (! frame || ! isLegacyElement(dialog)) {
6269                    return;
6270                }
6271                if (frame.time + 50 < Date.now() &&                     ! isOverlayDisabled(dialog) &&
6272                    ! dialog.contains(event.target)
6273                ) {
6274                    frame.instance.hide();
6275                }
6276            }
6277        });
6278
6279        document.addEventListener('keydown', window.hyva.modal.eventListeners.keydown);
6280        document.addEventListener('click', window.hyva.modal.eventListeners.click);
6281
6282                window.hyva.modal = new Proxy(window.hyva.modal, {
6283            apply(target, thisArg, args) {
6284                const instance = Reflect.apply(target, thisArg, args);
6285
6286                const originalShow = instance.show;
6287                instance.show = function (dialog, trigger) {
6288                    const frameBefore = window.hyva.modal.peek();
6289                    const openerCandidate = document.activeElement;
6290                    const result = originalShow.call(this, dialog, trigger);
6291                    const frame = window.hyva.modal.peek();
6292                    if (! frame || frame === frameBefore) {
6293                        return result;                     }
6294                    const el = refElement(frame);
6295                    if (isLegacyElement(el)) {
6296                        frame.legacyFocusTarget = openerCandidate;
6297                        if (! isOverlayDisabled(el)) {
6298                            document.body.classList.add('overflow-hidden');
6299                            this.$nextTick
6300                                ? this.$nextTick(() => hyva.trapFocus(el))
6301                                : hyva.trapFocus(el);
6302                        }
6303                        window.setTimeout(() => {
6304                            const focusFirst = el.querySelector('[x-focus-first]');
6305                            focusFirst && focusFirst.focus();
6306                        }, 50);
6307                    }
6308                    return result;
6309                };
6310
6311                const originalHide = instance.hide;
6312                instance.hide = function (value) {
6313                    const frame = window.hyva.modal.peek();
6314                    const el = refElement(frame);
6315                    const wasLegacy = frame && isLegacyElement(el);
6316                    const result = originalHide.call(this, value);
6317                    if (! wasLegacy || window.hyva.modal.peek() === frame) {
6318                        return result;                     }
6319                    hyva.releaseFocus(el);
6320
6321                    const next = window.hyva.modal.peek();
6322                    const nextEl = next ? refElement(next) : null;
6323                    if (isLegacyElement(nextEl) && ! isOverlayDisabled(nextEl)) {
6324                        hyva.trapFocus(nextEl);
6325                    } else {
6326                        document.body.classList.remove('overflow-hidden');
6327                    }
6328
6329                    const focusTarget = frame.legacyFocusTarget;
6330                    focusTarget && window.setTimeout(() =>
6330 focusTarget.focus(), 50);
6331
6332                    return result;
6333                };
6334
6335                return instance;
6336            }
6337        });
6338    })();
6339</script>
vendor: 1 bytes, line 6339
6339
6340<script>
6341    function dispatchMessages(messages, hideAfter) {
6342        const messagesEvent = new CustomEvent("messages-loaded", {
6343            detail: {
6344                messages: messages,
6345                hideAfter: hideAfter
6346            }
6347        });
6348        window.dispatchEvent(messagesEvent);
6349    }
6350
6351        if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) {
6352        console.warn("Hyvä helpers are not loaded yet. Make sure they are included before this script");
6353    }
6354
6355    (function( hyva, undefined ) {
6356
6357        hyva.initFormKey = () => {
6358            if (typeof hyva.getFormKey !== 'function') return;
6359
6360            const formKey = hyva.getFormKey();
6361            if (!formKey) return;
6362
6363            document.querySelectorAll('input[name="form_key"]').forEach((input) => {
6364                input.value = formKey;
6365            });
6366        }
6367
6368        hyva.initMessages = () => {
6369            try {
6370                const messages = hyva.getCookie('mage-messages');
6371                window.mageMessages = messages ? JSON.parse(decodeURIComponent(messages).replace(/\+/g, ' ')) : [];
6372
6373                dispatchMessages(window.mageMessages);
6374
6375                                // empty `mage-messages` cookie
6376                const skipSetDomain = true;
6377                hyva.setCookie('mage-messages','', -1, skipSetDomain);
6378
6379            } catch (error) {
6380                console.warn('Error parsing Cookie Messages:', error);
6381            }
6382        }
6383
6384        window.addEventListener('DOMContentLoaded', hyva.initFormKey);
6385
6386        window.addEventListener('pageshow', (event) => {
6387            if (event.persisted) {
6388                hyva.initFormKey();
6389            }
6390        });
6391
6392        hyva.alpineInitialized(hyva.initMessages)
6393    }( window.hyva = window.hyva || {} ));
6394    //# sourceURL=hyva-cookies.js
6395</script>
vendor: 1 bytes, line 6395
6395
6396<script>
6397    (() => {
6398        const private_content_key = 'mage-cache-storage';
6399        const private_content_expire_key = 'mage-cache-timeout';
6400        const private_content_version_key = 'private_content_version';
6401        const section_data_ids_key = 'section_data_ids';
6402        const mage_cache_session_id_key = 'mage-cache-sessid';
6403        const last_visited_store_key = 'last_visited_store';
6404
6405        const ttl = 3600;
6406
6407                if (typeof hyva === 'undefined' || (!hyva.getBrowserStorage || !hyva.getCookie || !hyva.setCookie)) {
6408            console.warn("Hyvä helpers are not loaded yet. Make sure they are included before this script");
6409        }
6410
6411        function loadSectionData () {
6412            const browserStorage = hyva.getBrowserStorage();
6413            if (!browserStorage) {
6414                typeof window.dispatchMessages !== "undefined" && window.dispatchMessages(
6415                    [{
6416                        type: "warning",
6417                        text: "Bitte aktivieren Sie LocalStorage in Ihrem Browser."
6418                    }]
6419                );
6420                return;
6421            }
6422            try {
6423                let isInvalid = false;
6424
6425                                if (hyva.getCookie(last_visited_store_key) !== CURRENT_STORE_CODE) {
6426                    isInvalid = true;
6427                }
6428                hyva.setCookie(last_visited_store_key, CURRENT_STORE_CODE, false, false);
6429
6430                                if (!hyva.getCookie(mage_cache_session_id_key)) {
6431                    isInvalid = true;
6432                    browserStorage.removeItem(private_content_key);
6433                    const skipSetDomain = true;
6434                    const days = false;
6435                    hyva.setCookie(mage_cache_session_id_key, true, days, skipSetDomain)
6436                }
6437
6438                const cookieVersion = hyva.getCookie(private_content_version_key);
6439                const storageVersion = browserStorage.getItem(private_content_version_key);
6440
6441                if (cookieVersion && !storageVersion || cookieVersion !== storageVersion) {
6442                    isInvalid = true;
6443                }
6444
6445                const privateContentExpires = browserStorage.getItem(private_content_expire_key);
6446                if (privateContentExpires && new Date(privateContentExpires) < new Date()) {
6447                    browserStorage.removeItem(private_content_key);
6448                }
6449
6450                if (isInvalid && cookieVersion) {
6451                    fetchPrivateContent([]);
6452                } else if (cookieVersion && storageVersion && cookieVersion === storageVersion) {
6453                    const privateContent = JSON.parse(browserStorage.getItem(private_content_key));
6454                    if (
6455                        privateContent &&
6456                        privateContentExpires &&
6457                        privateContent.cart &&
6458                        privateContent.customer
6459                    ) {
6460                        dispatchPrivateContent(privateContent);
6461                    } else {
6462                        fetchPrivateContent([]);
6463                    }
6464                } else {
6465                    if (document.getElementById('default-section-data')) {
6466                        const privateContent = JSON.parse(document.getElementById('default-section-data').textContent.trim());
6467                        dispatchPrivateContent(privateContent);
6468                    } else {
6469                        dispatchPrivateContent({});
6470                    }
6471                }
6472
6473            } catch (error) {
6474                console.warn('Error retrieving Private Content:', error);
6475            }
6476        }
6477
6478        hyva.alpineInitialized(loadSectionData)
6479        window.addEventListener('reload-customer-section-data', loadSectionData);
6480
6481                window.processSectionDataBeforeDispatch = window.processSectionDataBeforeDispatch || (data => data);
6482
6483        function dispatchPrivateContent(data) {
6484
6485            const privateContentEvent = new CustomEvent("private-content-loaded", {
6486                detail: {
6487                    data: window.processSectionDataBeforeDispatch(data)
6488                }
6489            });
6490            window.dispatchEvent(privateContentEvent);
6491        }
6492
6493                function fetchPrivateContent(sections) {
6494            fetch(`${BASE_URL}customer/section/load/?sections=${encodeURIComponent(sections.join(','))}`, {
6495                method: 'GET',
6496                headers: {
6497                    'Content-Type': 'application/json',
6498                    'X-Requested-With': 'XMLHttpRequest'
6499                }
6500            })
6501                .then(response => response.ok && response.json())
6502                .then(
6503                    data => {
6504                        if (data) {
6505                            try {
6506                                const browserStorage = hyva.getBrowserStorage();
6507
6508                                // merge new data preserving non-invalidated sections
6509                                const oldSectionData = JSON.parse(browserStorage.getItem(private_content_key) || '{}') || {};
6510
6511                                                                if ((! data.cart || ! data.cart.cartId) && oldSectionData['checkout-data']) {
6512                                    delete oldSectionData['checkout-data'];
6513                                }
6514                                const newSectionData = Object.assign(oldSectionData, data);
6515
6516                                dispatchPrivateContent(newSectionData);
6517
6518                                // don't persist messages, they've been dispatched already
6519                                if (newSectionData.messages && newSectionData.messages.messages ) {
6520                                    newSectionData.messages.messages = [];
6521                                }
6522
6523                                browserStorage.setItem(private_content_key, JSON.stringify(newSectionData));
6524
6525                                const expiresAt = new Date(Date.now() + (ttl * 1000)).toISOString();
6526                                browserStorage.setItem(private_content_expire_key, expiresAt);
6527
6528                                const newCookieVersion = hyva.getCookie(private_content_version_key);
6529                                browserStorage.setItem(private_content_version_key, newCookieVersion);
6530
6531                                // We don't need the section_data_ids in Hyvä, but we store them for compatibility
6532                                // with Luma Fallback. Otherwise, not all sections are loaded in Luma Checkout
6533                                hyva.setCookie(
6534                                    section_data_ids_key,
6535                                    JSON.stringify(
6536                                        Object.keys(data).reduce((sectionDataIds, sectionKey) => {
6537                                            sectionDataIds[sectionKey] = data[sectionKey]['data_id'];
6538                                            return sectionDataIds;
6539                                        }, {})
6540                                    ),
6541                                    false,
6542                                    true
6543                                );
6544                            } catch (error) {
6545                                console.warn("Couldn't store privateContent", error);
6546                            }
6547                        }
6548                    }
6549                )
6550                .catch(error => {
6551                    console.warn("Couldn't fetch privateContent", error);
6552                });
6553        }
6554    })();
6555    //# sourceURL=hyva-private-content.js
6556</script>
vendor: 1 bytes, line 6556
6556
6557<script>
6558    (() => {
6559        document.addEventListener('submit', event => event.target.action = event.target.action.replace('%25uenc%25', hyva.getUenc()));
6560    })()
6561</script>
vendor: 1 bytes, line 6561
6561
6562<script>
6563    (events => {
6564        const dispatchUserInteractionEvent = () => {
6565            events.forEach(type => window.removeEventListener(type, dispatchUserInteractionEvent))
6566            window.dispatchEvent(new Event('init-external-scripts'))
6567        };
6568        events.forEach(type => window.addEventListener(type, dispatchUserInteractionEvent, {once: true, passive: true}))
6569    })(['touchstart', 'mousemove', 'wheel', 'scroll', 'keydown']);
6570    //# sourceURL=hyva-init-external-scripts.js
6571</script>
vendor: 1 bytes, line 6571
6571
6572<script>
6573    function initConfigurableOptions(productId, optionConfig) {
6574
6575        function findPathParam(key) {
6576                        const baseUrl = (BASE_URL.substring(0, 2) === '//' ? 'http:' : '') + BASE_URL;
6577            const baseUrlParts = (new URL(baseUrl)).pathname.replace(/\/$/, '').split('/');
6578            const pathParts = window.location.pathname.split('/').slice(baseUrlParts.length + 3);
6579            for (let i = 0; i < pathParts.length; i += 2) {
6580                if (pathParts[i] === key && pathParts.length > i) {
6581                    return pathParts[i + 1];
6582                }
6583            }
6584        }
6585
6586        return {
6587            optionConfig,
6588            productId,
6589            itemId: (new URLSearchParams(window.location.search)).get('id') || findPathParam('id'),
6590            allowedAttributeOptions: [],
6591            selectedValues: [],
6592            selectedOptions: {},
6593            init() {
6594                this.baseInit();
6595            },
6596            baseInit() {
6597                this.buildLookupMap();
6598                this.findAllowedAttributeOptions();
6599                this.$nextTick(() => {
6600                    if (typeof this.optionConfig.defaultValues === 'object') {
6601                        for (const [attributeId, value] of Object.entries(this.optionConfig.defaultValues)) {
6602                            this.changeOption(attributeId, value + '');
6603                        }
6604                    }
6605                                        this.applyCheckedState();
6606                });
6607            },
6608            applyCheckedState() {
6609                this.$root.querySelectorAll('input[data-attribute-id], select[data-attribute-id]').forEach(el => {
6610                    const val = this.selectedValues[el.dataset.attributeId];
6611                    if (!val) return;
6612                    if (el.tagName === 'SELECT') {
6613                        el.value = val;
6614                        this.selectedOptions[el.dataset.attributeId] = el.options[el.selectedIndex]?.text || '';
6615                    } else if (el.value === val && this.optionIsActive(el.dataset.attributeId, el.value)) {
6616                        el.checked = true;
6617                        this.selectedOptions[el.dataset.attributeId] = el.dataset.optionLabel || '';
6618                    }
6619                });
6620            },
6621            productIndex: 0,
6622            productIndexForPrice: 0,
6623            productIndexesMap: null,
6624            productIndexesKeys: null,
6625            attributeCount: 0,
6626            optionIsActive(attributeId, optionId) {
6627                                return !!this.getAllowedAttributeOptions(attributeId).find(
6628                    option => option.id === optionId
6629                )
6630            },
6631            optionIsDisabled() {
6632                const attributeId = this.$el.dataset.attributeId;
6633                if (!attributeId) {
6634                    throw new Error('data-attribute-id missing, in item template');
6635                }
6636                return !this.optionIsActive(attributeId, this.$el.value);
6637            },
6638            findSimpleIndex() {
6639                                this.productIndex = this.calculateSimpleIndexForPartialSelection(this.selectedValues);
6640                this.productIndexForPrice = this.findCheapestProductForPartialSelection(this.selectedValues);
6641            },
6642            calculateSimpleIndexForPartialSelection(selectedValues) {
6643                if (selectedValues.length === 0) return 0;
6644                return this.findProductIdsForPartialSelection(selectedValues)[0];
6645            },
6646            buildLookupMap() {
6647                                this.productIndexesMap = new Map();
6648                this.attributeCount = Object.keys(this.optionConfig.attributes).length;
6649                for (const id in this.optionConfig.index) {
6650                    const options = this.optionConfig.index[id];
6651                    if (! this.productIndexesKeys) {
6652                        this.productIndexesKeys = Object.keys(options).sort();
6653                    }
6654                    const key = JSON.stringify(options, this.productIndexesKeys);
6655                    this.productIndexesMap.set(key, id);
6656                }
6657            },
6658            findAllowedAttributeOptions() {
6659                                this.allowedAttributeOptions = this.calculateAllowedAttributeOptions(this.selectedValues);
6660            },
6661            calculateAllowedAttributeOptions(selectedValues) {
6662                const allAttributes = this.optionConfig.attributes;
6663                const allAttributesSorted = Object.values(allAttributes).sort((a,b) => {
6664                    return a.position - b.position
6665                });
6666
6667                const newAllowedAttributeOptions = [];
6668
6669                allAttributesSorted.forEach(attribute => {
6670                    const selectionWithoutAttr = Object.assign({}, this.removeAttrFromSelection(selectedValues, attribute.id));
6671                    const availableIndexes = this.calculateAvailableProductIndexes(selectionWithoutAttr);
6672                    newAllowedAttributeOptions[attribute.id] = allAttributes[attribute.id].options.filter(option => {
6673                        return !!option.products.find(product => {
6674                            return availableIndexes.includes(product);
6675                        })
6676                    });
6677                });
6678                return newAllowedAttributeOptions;
6679            },
6680            calculateAvailableProductIndexes(selectedOptions) {
6681                if (Object.keys(selectedOptions).length === 0) {
6682                                        if (Object.values(this.optionConfig.salable || {}).length) {
6683                                                return [].concat.apply([], [].concat.apply([], Object.values(this.optionConfig.salable).map(Object.values))).filter((x, i, a) => a.indexOf(x) === i)
6684                    }
6685                                        return Object.keys(this.optionConfig.index);
6686                }
6687
6688                                const selectedIds = Object.keys(selectedOptions);
6689                if (Object.values(this.optionConfig.salable || {}).length) {
6690                                        const selectedOptionIndexes = selectedIds.map(attrId => {
6691                        const optionValue = selectedOptions[attrId];
6692                        return this.optionConfig.salable[attrId] && this.optionConfig.salable[attrId][optionValue] || []
6693                    })
6694                                        return selectedOptionIndexes.reduce((acc, optionIndexes) => {
6695                        return acc.filter(index => optionIndexes.includes(index));
6696                    });
6697                } else {
6698                                        const productIndexes = this.optionConfig.index;
6699                    return Object.keys(productIndexes).filter(index => {
6700                                                for (const attrId of selectedIds) {
6701                            if (productIndexes[index][attrId] !== `${selectedOptions[attrId]}`) return false
6702                        }
6703                        return true
6704                    });
6705                }
6706            },
6707            findAttributeByOptionId(optionId) {
6708                for (const attributeId in this.optionConfig.attributes) {
6709                    const attributeOptions = this.optionConfig.attributes[attributeId].options || [];
6710                    if (attributeOptions.find(option => option.id === optionId)) {
6711                        return attributeId;
6712                    }
6713                }
6714            },
6715            getAllowedAttributeOptions(attributeId) {
6716                return this.allowedAttributeOptions[attributeId] || []
6717            },
6718            getAllAttributeOptions(attributeId) {
6719                return (
6720                    this.optionConfig.attributes[attributeId] &&
6721                    this.optionConfig.attributes[attributeId].options
6722                ) || []
6723            },
6724            getProductIdsForOption(option) {
6725                const attributeId = this.findAttributeByOptionId(option.id);
6726                const allOptions = this.optionConfig.attributes[attributeId];
6727                const opt = (allOptions && allOptions.options || []).find(o => o.id === option.id);
6728                return opt && opt.products
6729                    ? opt.products
6730                    : [];
6731            },
6732            findProductIdsForPartialSelection(optionSelection) {
6733                const candidateProducts = Object.values(optionSelection).reduce((candidates, optionId) => {
6734                    const newCandidates = this.getProductIdsForOption({id: optionId});
6735                    return candidates === null
6736                        ? newCandidates
6737                        : candidates.filter(productId => newCandidates.includes(productId));
6738                }, null);
6739                return candidateProducts || [];
6740            },
6741            findCheapestProductForPartialSelection(optionSelection) {
6742                const candidateProducts = this.findProductIdsForPartialSelection(optionSelection);
6743                return candidateProducts.reduce((cheapest, simpleIdx) => {
6744                    // in the first iteration we start with simpleIdx as the currently cheapest product
6745                    if (! this.optionConfig.optionPrices[cheapest]) return simpleIdx;
6746                    const knownCheapestPrice = this.optionConfig.optionPrices[cheapest].finalPrice.amount;
6747                    return knownCheapestPrice > this.optionConfig.optionPrices[simpleIdx].finalPrice.amount
6748                        ? simpleIdx
6749                        : cheapest;
6750                }, 0)
6751            },
6752            removeAttrFromSelection(selectedValues, attributeId) {
6753                                attributeId = parseInt(attributeId);
6754                return selectedValues.reduce((newSelection, val, attr) => {
6755                    if (attr !== attributeId) {
6756                        newSelection[attr] = val;
6757                    }
6758                    return newSelection;
6759                }, []);
6760            },
6761            reflectOption(event) {
6762                const attributeId = event.target.dataset.attributeId;
6763                const label = event.target.dataset.optionLabel
6764                    || event.target.options?.[event.target.selectedIndex]?.text
6765                    || '';
6766                this.selectedOptions[attributeId] = label;
6767                this.changeOption(attributeId, event.target.value);
6768            },
6769            baseChangeOption(attributeId, value) {
6770                if (value === '') {
6771                    this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId)
6772                } else if (value && this.getAllowedAttributeOptions(attributeId).find(option => option.id === value)) {
6773                                        this.selectedValues[attributeId] = value;
6774                }
6775                this.findSimpleIndex();
6776                this.findAllowedAttributeOptions();
6777                this.updatePrices();
6778                this.updateGallery();
6779            },
6780            changeOption(attributeId, value) {
6781                this.baseChangeOption(attributeId, value);
6782
6783                const candidates = this.findProductIdsForPartialSelection(this.selectedValues);
6784
6785                                window.dispatchEvent(
6786                    new CustomEvent(
6787                        'configurable-selection-changed',
6788                        {
6789                            detail: {
6790                                productId: this.productId,
6791                                optionId: attributeId,
6792                                value: value,
6793                                productIndex: this.productIndex,
6794                                selectedValues: this.selectedValues,
6795                                candidates: candidates,
6796                                skuCandidates: Object.values(candidates).map(id => this.optionConfig.sku?.[id] ?? null).filter(Boolean),
6797                            }
6798                        }
6799                    )
6800                );
6801            },
6802            calculateIsMinimalPrice() {
6803                return ! this.isFullSelection(this.selectedValues);
6804            },
6805            isFullSelection(selectedValues) {
6806                return Object.keys(selectedValues).length === this.attributeCount;
6807            },
6808            updatePrices() {
6809                const value = this.optionConfig.optionPrices[this.productIndexForPrice] || this.optionConfig.prices;
6810                window.dispatchEvent(
6811                    new CustomEvent(
6812                        "update-prices-" + this.productId,
6813                        {
6814                            detail: Object.assign(
6815                                value,
6816                                { isMinimalPrice: this.calculateIsMinimalPrice() }
6817                            )
6818                        }
6819                    )
6820                );
6821            },
6822            updateGallery () {
6823                if (this.productIndex) {
6824                    const images = this.optionConfig.images[this.productIndex];
6825                    images && window.dispatchEvent(new CustomEvent(
6826                        "update-gallery",
6827                        { detail: this.sortImagesByPosition(images) }
6828                    ));
6829                } else {
6830                    window.dispatchEvent(new Event("reset-gallery"));
6831                }
6832            },
6833            sortImagesByPosition(images) {
6834                return images.sort((x, y) => {
6835                    return x.position === y.position ? 0 : (parseInt(x.position) > parseInt(y.position) ? 1 : -1)
6836                });
6837            },
6838            preselectQuerystringItems() {
6839                // pre-select option like ?size=167
6840                const urlQueryParams = new URLSearchParams(window.location.search.replace('?',''));
6841                this.preselectItemsBasedOnLocation(attribute => urlQueryParams.get(attribute.code));
6842            },
6843            preselectLocationHashItems() {
6844                // pre-select option like #144=167
6845                const urlHashParams = new URLSearchParams(window.location.hash.replace('#',''));
6846                this.preselectItemsBasedOnLocation(attribute => urlHashParams.get(attribute.id));
6847            },
6848            preselectItemsBasedOnLocation(getLocationValue) {
6849                Object.values(this.optionConfig.attributes).map(attribute => {
6850                    const v = getLocationValue(attribute);
6851                    v && this.changeOption(attribute.id, v)
6852                });
6853            },
6854            findProductForOptionPrice(attributeId, value) {
6855                const options = this.optionConfig.attributes[attributeId]?.options || [];
6856                const option = options.find(o => o.id === value);
6857                if (!option?.products?.length) return null;
6858                return option.products.reduce((cheapest, productId) => {
6859                    if (!cheapest) return productId;
6860                    const cheapestPrice = this.optionConfig.optionPrices[cheapest]?.finalPrice?.amount ?? Infinity;
6861                    const thisPrice = this.optionConfig.optionPrices[productId]?.finalPrice?.amount ?? Infinity;
6862                    return thisPrice < cheapestPrice ? productId : cheapest;
6863                }, null);
6864            },
6865            getOptionLabel() {
6866                const value = this.$el.value;
6867                const attributeId = this.$el.dataset.attributeId;
6868                const label = this.$el.dataset.optionLabel || '';
6869                if (!value || !attributeId) return label;
6870
6871                const productId = this.findProductForOptionPrice(attributeId, value);
6872                if (!productId) return label;
6873
6874                const optionPrice = this.optionConfig.optionPrices[productId]?.finalPrice?.amount;
6875                const basePrice = this.optionConfig.prices?.finalPrice?.amount;
6876                if (optionPrice == null || basePrice == null) return label;
6877
6878                const adjustment = optionPrice - basePrice;
6879                if (Math.abs(adjustment) < 0.001) return label;
6880
6881                const formatted = hyva.formatPrice(Math.abs(adjustment));
6882                return `${label} (${adjustment > 0 ? '+' : '-'}${formatted})`;
6883            },
6884        }
6885    }
6886</script>
vendor: 1 bytes, line 6886
6886
6887<script>
6888    function initSwatchOptions() {
6889        return {
6890            activeTooltipItem: false,
6891            tooltipPositionElement: false,
6892            isTooltipVisible() {
6893                return !!this.activeTooltipItem;
6894            },
6895            isCurrentTooltipVisual() {
6896                return this.activeTooltipItem && ['color', 'image'].includes(this.activeTooltipItem.type);
6897            },
6898            getTooltipImageStyle() {
6899                const item = this.activeTooltipItem;
6900                if (item?.type === 'color') return {
6901                    backgroundColor: item.preview,
6902                    width: `${item.width ?? 90}px`,
6903                    height: `${item.height ?? 90}px`
6904                };
6905                if (item?.type === 'image') return {
6906                    backgroundImage: `url(${item.preview})`,
6907                    backgroundSize: 'cover',
6908                    backgroundPosition: 'center',
6909                    backgroundRepeat: 'no-repeat',
6910                    width: `${item.width ?? 90}px`,
6911                    height: `${item.height ?? 90}px`
6912                };
6913                return null;
6914            },
6915            getTooltipPosition() {
6916                if (!this.tooltipPositionElement) return null;
6917                const el = this.tooltipPositionElement;
6918                const elRect = el.getBoundingClientRect();
6919                const left = elRect.left + elRect.width / 2;
6920
6921                return {
6922                    bottom: `${window.innerHeight - elRect.top}px`,
6923                    left: `${left}px`,
6924                    translate: '-50% 0'
6925                };
6926            },
6927            getTooltipLabel() {
6928                return this.activeTooltipItem ? this.activeTooltipItem.label : '';
6929            },
6930            showTooltip(event) {
6931                if (!window.matchMedia('(hover: hover) and (pointer: fine)').matches) return;
6932                const input = event.currentTarget.querySelector('input');
6933                this.activeTooltipItem = JSON.parse(input.dataset.tooltip);
6934                this.tooltipPositionElement = event.currentTarget;
6935            },
6936            hideTooltip() {
6937                this.activeTooltipItem = false;
6938            },
6939        }
6940    }
6941</script>
6941
6942
6943<div
6944    class="z-30 fixed bottom-6 sm:bottom-12 lg:bottom-16 right-4 sm:left-auto sm:right-8 md:right-12 lg:right-20 scrollToTop"
6945    x-data="initScrollToTop()"
6946    x-cloak
6947    x-show="visible"
6948    x-transition.duration.250ms
6949    @scroll.window.throttle.50ms="scrollPosition = document.documentElement.scrollTop"
6950            @scroll.window.debounce.4000ms="visible = false"
6951    >
6952    <button
6953        type="button"
6954        class="btn justify-center rounded-full mx-auto p-3 text-base shadow-lg hover:shadow-lg active:shadow transition
6955            bg-white text-blue-700 border border-transparent hover:bg-white focus:ring-blue-200"
6956        @click="scrollToTop()"
6957        aria-label="Scroll&#x20;back&#x20;to&#x20;the&#x20;top&#x20;of&#x20;the&#x20;page"
6958    >
6959        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" role="img">
6960  <path stroke-linecap="round" stroke-linejoin="round" d="M5 10l7-7m0 0l7 7m-7-7v18"/>
6961<title>Scroll back to the top of the page</title></svg>
6962    </button>
6963
6964    
6964<script>
6965        function initScrollToTop() {
6966            return {
6967                visible: false,
6968                scrollOffset: 200,
6969                scrollPosition: 0,
6970                init() {
6971                    scrollPosition = document.documentElement.scrollTop;
6972                    this.$watch('scrollPosition', (pos, prevPos) => {
6973                        this.visible = pos > this.scrollOffset && pos < prevPos;
6974                    });
6975                },
6976                scrollToTop() {
6977                    this.visible = false;
6978                    document.documentElement.scrollIntoView({ behavior: 'smooth' })
6979                },
6980            }
6981        }
6982    </script>
6982
6983</div>
6984
6985
6986<div x-data="initCookieBarSettings" x-bind="eventListeners">
6987                 <dialog
6988                x-ref="am-cookie-bar-settings"
6989                data-dialog-ref-name="am-cookie-bar-settings"
6990                aria-label="Cookie Bar Settings"
6991                closeby="any"
6992                class="open:flex flex-col relative max-h-screen overflow-auto max-w-[90vw] shadow-xl rounded-lg p-10 text-gray-700
6993                    bg-ambar-settings-bar-group-background backdrop:bg-gray-500/50 am-cookie-bar-settings"
6994                x-bind="dialogConfig"
6995                x-htmldialog="hideHandler"
6996             >
6997                <button @click="hideHandler"
6998                    aria-label="Close Cookie Bar Settings"
6999                    x-ref="ambar-settings-close"
7000                    class="absolute right-2 top-2 text-gray-300 transition
7001                        hover:text-black focus:drop-shadow-md hover:drop-shadow-md">
7002                <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24"
7003                     stroke="currentColor"
7004                     stroke-width="2">
7005                    <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/>
7006                </svg>
7007            </button>
7008            <div id="cookiebar-groups">
7009                
7010<div x-data="initAmCookieGroups" class="w-full flex flex-col">
7011    <template x-for="group in $store.AmastyCookieGroups.groupData" :key="group.groupId">
7012        <div class="mb-2">
7013            <div class="header flex justify-between items-start py-2">
7014                <h3 class="text-lg font-semibold pr-6 ambar-group-title text-ambar-settings-bar-group-title" x-text="group.name"></h3>
7015                <div>
7016                    <input type="checkbox"
7017                           :name="getInputGroupId"
7018                           data-group-prefix="classic-"
7019                           @change="toggleGroup"
7020                           :checked="group.checked"
7021                           :aria-checked="group.checked"
7022                           :id="getInputGroupId"
7023                           :disabled="group.isEssential"
7024                           :value="group.groupId"
7025                           class="amsettings-bar-input-toggle"
7026                           :class="getInputStyles"
7027                    >
7028                    <label data-group-prefix="classic-"
7029                           :for="getInputGroupId" class="sr-only" x-text="group.name">
7030                    </label>
7031                </div>
7032            </div>
7033            <p class="py-2 text-sm ambar-group-description text-ambar-settings-bar-group-description" x-html="group.description"></p>
7034            <button class="btn btn-secondary px-4 text-xs mb-4 rounded-xs before:content-none after:content-none"
7035                    type="button"
7036                    data-dispatch-action="classic-open-am-cookie-group-info"
7037                    @click="moreInfoClickHandler">
7038                <span class="text-ambar-settings-bar-group-links">Mehr Informationen</span>
7039                <span class="sr-only" x-text="moreInformationAboutCookieGroup"></span>
7040            </button>
7041        </div>
7042    </template>
7043</div>
7044            </div>
7045            <div class="w-full flex">
7046                <button type="button"
7047                        class="ambar-action-btn rounded-sm text-center text-sm transition-colors focus:drop-shadow hover:drop-shadow px-2 py-4 w-full text-xs font-semibold uppercase bg-ambar-settings-bar-button
7048                            hover:bg-ambar-settings-bar-button-hover text-ambar-settings-bar-button-text
7049                            hover:text-ambar-settings-bar-button-hover-text"
7050                        x-data="initAmCookieActionDispatcherBtn"
7051                        @click.prevent="actiondispatchHandler"
7052                        x-ref="ambar-settings-done"
7053                        data-dispatch-action="cookiebar-action-accept"
7054                        data-dispatch-payload='&#x7B;&quot;include_checked_groups&quot;&#x3A;true&#x7D;'
7055                >
7056                    Fertig                </button>
7057            </div>
7058        <dialog>
7059    </div>
7060
7061<script data-cfasync="false">
7062    'use strict';
7063
7064    function initCookieBarSettings() {
7065        return {
7066            ...hyva.modal({
7067                dialog: 'am-cookie-bar-settings'
7068            }),
7069            eventListeners: {
7070                ['@close-am-cookie-bar-settings.window']() {
7071                    this.hideHandler();
7072                },
7073                ['@open-am-cookie-bar-settings.window']() {
7074                    !this.opened['am-cookie-bar-settings'] &&
7075                    this.show('am-cookie-bar-settings');
7076                },
7077                ['@cookiebar-action-accept-finish.window']() {
7078                    this.hideHandler();
7079                }
7080            },
7081            hideHandler: function () {
7082                !!this.opened['am-cookie-bar-settings'] &&
7083                this.hide('am-cookie-bar-settings');
7084            },
7085            focusDoneButton: function () {
7086                this.$refs['ambar-settings-done']?.focus();
7087            },
7088            focusCloseButton: function () {
7089                this.$refs['ambar-settings-close']?.focus();
7090            }
7091        }
7092    }
7093
7094    window.addEventListener('alpine:init', () => Alpine.data('initCookieBarSettings', initCookieBarSettings), { once: true });
7095</script>
7095
7096
7097<div x-data="initCookieGroupInfo_6ab51c700597e" x-bind="eventListeners">
7098        <dialog
7099            x-ref="am-cookie-group-info"
7100            data-dialog-ref-name="am-cookie-group-info"
7101            aria-labelledby="amcookie-group-info"
7102            closeby="any"
7103            class="open:flex flex-col max-h-[92vh] max-w-[90vw] overflow-auto
7104            bg-ambar-info-bar-background shadow-xl rounded-lg p-8 text-gray-700 relative backdrop:bg-gray-500/50"
7105            x-bind="dialogConfig"
7106            x-htmldialog="closeHandler"
7107    >
7108                <template x-if="group">
7109                <div id="amcookie-group-info">
7110                    <button @click.stop="closeHandler"
7111                            aria-label="Schlie&#xDF;en"
7112                            class="absolute right-2 top-2 text-gray-300 transition
7113                                hover:text-black focus:drop-shadow-md hover:drop-shadow-md"
7114                    >
7115                        <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24"
7116                             stroke="currentColor"
7117                             stroke-width="2">
7118                            <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/>
7119                        </svg>
7120                    </button>
7121                    <div class="md:flex md:justify-start pb-4">
7122                        <h3 class="text-xl font-semibold text-ambar-info-bar-title" x-text="group.name"></h3>
7123                    </div>
7124                    <template x-if="group.description">
7125                        <p class="mb-4 text-ambar-info-bar-description" x-html="group.description"></p>
7126                    </template>
7127                    <div class="overflow-x-scroll md:overflow-x-auto">
7128                        <table class="table-auto w-full mb-4 text-left">
7129                            <thead class="text-ambar-info-bar-table-header">
7130                            <tr>
7131                                <th class="pr-4">Cookie-Name</th>
7132                                <th class="pr-4">Cookie-Anbieter</th>
7133                                <th class="min-w-[30%] pr-4">Cookie Beschreibung</th>
7134                                <th class="pr-4">Cookie-Lebensdauer</th>
7135                                <th class="pr-4">Cookie Typ</th>
7136                            </tr>
7137                            </thead>
7138                            <tbody class="text-ambar-info-bar-table-content">
7139                            <template x-for="(item, index) in group.cookies" :key="index">
7140                                <tr>
7141                                    <td x-text="item.name" class="font-semibold pr-4"></td>
7142                                    <td x-text="item.provider" class="pr-4"></td>
7143                                    <td x-html="item.description" class="min-w-[30%] pr-4"></td>
7144                                    <td x-text="item.lifetime" class="pr-4"></td>
7145                                    <td x-text="item.type" class="pr-4"></td>
7146                                </tr>
7147                            </template>
7148                            </tbody>
7149                        </table>
7150                    </div>
7151                </div>
7152            </template>
7153            <button
7154                @click.stop="closeHandler"
7155                aria-label="Fertig"
7156                class="mt-4 w-full text-xs font-semibold text-ambar-info-bar-button-text
7157                    hover:text-ambar-info-bar-button-hover-text uppercase bg-ambar-info-bar-button
7158                    hover:bg-ambar-info-bar-button-hover ambar-action-btn rounded-sm text-center text-sm transition-colors focus:drop-shadow hover:drop-shadow px-2 py-4"
7159            >
7160                Fertig            </button>
7161        </dialog>
7162  
7163</div>
7164<script data-cfasync="false">
7165    'use strict';
7166
7167    function initCookieGroupInfo_6ab51c700597e() {
7168        return {
7169            ...hyva.modal({
7170                dialog: 'am-cookie-group-info'
7171            }),
7172            group: null,
7173            eventListeners: {
7174                ['@close-am-cookie-group-info.window']() {
7175                    this.closeHandler();
7176                },
7177                ['@open-am-cookie-group-info.window'](event) {
7178                    this.group = event.detail;
7179
7180                    if (!!this.group) {
7181                        /*
7182                         If modal have big cookies list this can lead to
7183                         trigger hide event in hyva.modal.eventListeners.click,
7184                         so we should wait till this.group is reassigned
7185                         */
7186                        this.$nextTick(() => this.show('am-cookie-group-info'));
7187                    }
7188                }
7189            },
7190            closeHandler: function () {
7191                this.hide('am-cookie-group-info');
7192            }
7193        }
7194    }
7195
7196    window.addEventListener(
7197        'alpine:init',
7198        () => Alpine.data(
7199            'initCookieGroupInfo_6ab51c700597e',
7200            initCookieGroupInfo_6ab51c700597e        ),
7201        {once: true}
7202    );
7203</script>
7203
7204
7205<script data-cfasync="false">
7206    'use strict';
7207
7208    /**
7209     * @typedef {Object} CookieGroupData
7210     * @prop {Boolean} checked
7211     * @prop {[{description: string, lifetime: number|null, name: string, provider: string, type: string}]} cookies
7212     * @prop {String} description
7213     * @prop {string|null} groupId
7214     * @prop {Boolean} isEssential
7215     * @prop {String} name
7216     */
7217
7218    function initAmastyCookieGroupsStorage() {
7219        return {
7220            /**
7221             * @type {[CookieGroupData]}
7222             */
7223            groupData: [],
7224            cookiePolicy: undefined,
7225            lastUpdate: undefined,
7226
7227            /**
7228             * @returns {string|number[]}
7229             */
7230            getEssentialGroupIds: function () {
7231                return this.groupData.reduce(function (essentialGroupIds, group) {
7232                    if (group.isEssential) {
7233                        essentialGroupIds.push(group.groupId)
7234                    }
7235
7236                    return essentialGroupIds;
7237                }, []);
7238            },
7239
7240            /**
7241             * @returns {string|number[]}
7242             */
7243            getCheckedGroupIds: function () {
7244                return this.groupData.reduce(function (checkedGroupIds, group) {
7245                    if (group.checked) {
7246                        checkedGroupIds.push(group.groupId);
7247                    }
7248
7249                    return checkedGroupIds;
7250                }, []);
7251            },
7252
7253            /**
7254             * @param {string} cookieName
7255             * @returns {boolean}
7256             */
7257            isCookieEssential: function (cookieName) {
7258                const allEssentialCookies = this.getEssentialCookies();
7259
7260                return !!allEssentialCookies.find(cookie => cookie.name === cookieName);
7261            },
7262
7263            /**
7264             * @returns {array}
7265             */
7266            getEssentialCookies: function () {
7267                return this.groupData
7268                    .filter(group => group.isEssential)
7269                    .map(group => group.cookies)
7270                    .flat();
7271            },
7272
7273            /**
7274             * @returns {boolean}
7275             */
7276            hasGroupData: function () {
7277                return !!this.groupData.length;
7278            },
7279
7280            /**
7281             * @param {string} cookieName
7282             * @param {string} pattern
7283             * @returns {boolean}
7284             */
7285            isEssentialByPattern: function (cookieName, pattern) {
7286                const essentialCookiePatterns = this.getEssentialCookiesPattern(pattern);
7287
7288                return essentialCookiePatterns.some((pattern) => !!cookieName.match(this.getCookiePattern(pattern)));
7289            },
7290
7291            /**
7292             * @param {string} pattern
7293             * @return {Array}
7294             */
7295            getEssentialCookiesPattern: function (pattern) {
7296                return this.getCookiesByPattern(pattern, this.getEssentialCookies());
7297            },
7298
7299            /**
7300             * @param {string} pattern
7301             * @param {Array|undefined} cookies
7302             * @return {Array}
7303             */
7304            getCookiesByPattern: function (pattern, cookies) {
7305                if (typeof cookie === 'undefined') {
7306                    cookies = this.getAllCookies();
7307                }
7308
7309                return cookies
7310                    .map((cookie) => typeof cookie === 'object' ? cookie.name : cookie.split('=')[0].trim())
7311                    .filter((cookie) => cookie.match(pattern) !== null);
7312            },
7313
7314            /**
7315             * @returns {array}
7316             */
7317            getDisallowedCookies: function () {
7318                const disallowedCookie = decodeURIComponent(hyva.getCookie('amcookie_disallowed') ?? '');
7319                if (!disallowedCookie) {
7320                    return [];
7321                }
7322
7323                return disallowedCookie.split(',');
7324            },
7325
7326            /**
7327             * @returns {string}
7328             */
7329            getCookiePattern: function (pattern) {
7330                return `^${pattern.replaceAll('*', '.*')}$`;
7331            },
7332
7333            /**
7334             * @returns {array}
7335             */
7336            getAllCookies: function () {
7337                return document.cookie.split(';');
7338            },
7339
7340            /**
7341             * @param {Array} groupData
7342             * @returns {array}
7343             */
7344            updateGroupDataPermanently: function (groupData) {
7345                this.groupData = [...groupData];
7346            },
7347
7348            /**
7349             * @param {boolean} setAcceptance
7350             * @returns {Promise}
7351             */
7352            updateGroupData: function (setAcceptance = false) {
7353                const cookieFetchUrl = `${BASE_URL}amcookie/cookie/cookies`;
7354                const requestUrl = new URL(cookieFetchUrl, window.location.origin);
7355
7356                requestUrl.searchParams.append('allowed', hyva.getCookie('amcookie_allowed'));
7357                requestUrl.searchParams.append('restriction', hyva.getCookie('amcookie_policy_restriction'));
7358
7359                return fetch(requestUrl.toString(), {
7360                    method: "GET",
7361                    headers: {
7362                        'X-Requested-With': 'XMLHttpRequest'
7363                    }
7364                }).then(response => {
7365                    if (response.ok) {
7366                        return response.json();
7367                    }
7368
7369                    return Promise.reject(`${response.status} ${response.statusText}`);
7370                }).then(data => {
7371                    this.cookiePolicy = data.cookiePolicy ?? 'allowed';
7372                    this.lastUpdate = data.lastUpdate ?? 0;
7373                    this.groupData = [...data.groupData];
7374
7375                    hyva.setCookie('amcookie_policy_restriction', this.cookiePolicy, 10);
7376                    if (setAcceptance) {
7377                        amastyCookieManager.setLastCookieAcceptance(this.lastUpdate);
7378                    }
7379
7380                    return data;
7381                }).catch(error => {
7382                    typeof window.dispatchMessages !== "undefined" && window.dispatchMessages([
7383                        {
7384                            type: "error",
7385                            text: error
7386                        }
7387                    ]);
7388                }).finally(() => window.dispatchEvent(new CustomEvent('amasty-cookie-group-updated')));
7389            }
7390        }
7391    }
7392
7393    window.addEventListener(
7394        'alpine:init',
7395        () => Alpine.store('AmastyCookieGroups', initAmastyCookieGroupsStorage()),
7396        { once: true }
7397    );
7398</script>
7398
7399
7400<script data-cfasync="false">
7401    (function (amastyCookieManager) {
7402        'use strict';
7403
7404        amastyCookieManager.pattern = '{(?<cookiePattern>.*)}';
7405
7406        amastyCookieManager.getAmastyCookieGroupStorage = function () {
7407            return Alpine.store('AmastyCookieGroups') ?? {};
7408        };
7409
7410        amastyCookieManager.deleteDisallowedCookie = function () {
7411            const amastyCookieGroupStorage = this.getAmastyCookieGroupStorage();
7412            const disallowedCookies = amastyCookieGroupStorage?.getDisallowedCookies() ?? [];
7413
7414            disallowedCookies.forEach((name) => {
7415                const pattern = name.match(this.pattern);
7416                if (!!pattern && !!amastyCookieGroupStorage) {
7417                    const cookiePattern = amastyCookieGroupStorage.getCookiePattern(pattern.groups.cookiePattern) ?? '';
7418
7419                    amastyCookieGroupStorage.getCookiesByPattern(cookiePattern).forEach((cookieName) => {
7420                        this.deleteNotEssentialCookie(cookieName);
7421                    });
7422                } else {
7423                    this.deleteNotEssentialCookie(name);
7424                }
7425            });
7426        };
7427
7428        amastyCookieManager.isCookieAllowed = function (cookieName) {
7429            const allowedGroups = hyva.getCookie('amcookie_allowed');
7430            const disallowedCookie = this.getAmastyCookieGroupStorage()?.getDisallowedCookies() ?? [];
7431            const isCookiePolicyAllowed = hyva.getCookie('amcookie_policy_restriction') === 'allowed';
7432            const isCookieEssential = this.getAmastyCookieGroupStorage()?.isCookieEssential(cookieName);
7433            const isCookieEssentialByPattern = this.getAmastyCookieGroupStorage()?.isEssentialByPattern(cookieName, this.pattern);
7434
7435            if (!isCookiePolicyAllowed || isCookieEssential || isCookieEssentialByPattern) {
7436                return true;
7437            }
7438
7439            return !((!allowedGroups && !disallowedCookie) || this.isCookieDisallowed(cookieName));
7440        };
7441
7442        amastyCookieManager.isCookieDisallowed = function (cookieName) {
7443            const amastyCookieGroupStorage = this.getAmastyCookieGroupStorage();
7444            const disallowedCookies = amastyCookieGroupStorage?.getDisallowedCookies() ?? [];
7445
7446            return disallowedCookies.some((cookie) => {
7447                const pattern = cookie.match(this.pattern);
7448
7449                return !!pattern && !!cookieName.match(amastyCookieGroupStorage?.getCookiePattern(pattern.groups.cookiePattern));
7450            }) || disallowedCookies.indexOf(cookieName) !== -1;
7451        };
7452
7453        amastyCookieManager.processManageableCookies = function () {
7454            let cookieScripts = document.querySelectorAll('script[data-amcookie-groupid][type="text/plain"]');
7455
7456            cookieScripts.forEach((elem) => {
7457                if (this.isChecked(elem.dataset['amcookie-groupid'])) {
7458                    let elClone = elem.cloneNode(true).setAttribute('type', 'text/javascript');
7459
7460                    elem.remove();
7461                    document.body.appendChild(elClone);
7462                }
7463            });
7464        };
7465
7466        amastyCookieManager.deleteNotEssentialCookie = function (cookieName) {
7467            if (!this.getAmastyCookieGroupStorage()?.isCookieEssential(cookieName)) {
7468                hyva.setCookie(cookieName, '', -1, true);
7469            }
7470        };
7471
7472        amastyCookieManager.setLastCookieAcceptance = function (lastUpdate) {
7473            localStorage.setItem('am-last-cookie-acceptance', lastUpdate);
7474        };
7475
7476        window.addEventListener('amasty-cookie-group-updated', () => {
7477            amastyCookieManager.deleteDisallowedCookie();
7478        });
7479
7480        window.addEventListener('private-content-loaded', () => {
7481            amastyCookieManager.getAmastyCookieGroupStorage()?.hasGroupData() && amastyCookieManager.deleteDisallowedCookie();
7482        });
7483    }(window.amastyCookieManager = window.amastyCookieManager || {}));
7484</script>
7484
7485
7486<script data-cfasync="false">
7487    (function () {
7488        'use strict';
7489
7490        window.addEventListener('cookiebar-action-accept', (event) => {
7491            const groups = event.detail?.include_checked_groups ? Alpine.store('AmastyCookieGroups').getCheckedGroupIds() : [];
7492            const url = `${BASE_URL}amcookie/cookie/savegroups`;
7493            const urlParams = event.detail?.params ?? {};
7494            const contentType = 'application/x-www-form-urlencoded; charset=UTF-8';
7495            const body = new URLSearchParams({
7496                form_key: hyva.getFormKey()
7497            });
7498            groups.length && groups.map(groupId => body.append('groups[]', groupId));
7499
7500            for (const [key, value] of Object.entries(urlParams)) {
7501                body.append(key, value);
7502            }
7503
7504            fetch(url, {method: 'POST', body, headers: {'Content-Type': contentType}})
7505                .then(response => {
7506                    if (response.ok) {
7507                        return response.json();
7508                    }
7509
7510                    return Promise.reject(`${response.status} ${response.statusText}`);
7511                })
7512                .then(data => {
7513                    !!data.success && Alpine.store('AmastyCookieGroups').updateGroupData(true);
7514                })
7515                .catch(error => {
7516                    typeof window.dispatchMessages !== "undefined" && window.dispatchMessages([
7517                        {
7518                            type: "error",
7519                            text: error
7520                        }
7521                    ]);
7522                })
7523                .finally(() => {
7524                    amastyCookieManager.processManageableCookies();
7525                    window.dispatchEvent(new CustomEvent('cookiebar-action-accept-finish'));
7526                    window.dispatchEvent(new CustomEvent('amasty-cookie-group-updated'));
7527                    // Wait cookiebar close animation
7528                    setTimeout(() => {
7529                        window.dispatchEvent(new CustomEvent('reload-customer-section-data'));
7530                    }, 100);
7531                });
7532        });
7533    })();
7534</script>
7534
7535
7536<script data-cfasync="false">
7537    (function () {
7538        'use strict';
7539
7540        window.addEventListener('cookiebar-action-allow', () => {
7541            const url = `${BASE_URL}amcookie/cookie/allow`;
7542            const contentType = 'application/x-www-form-urlencoded; charset=UTF-8';
7543            const body = new URLSearchParams({
7544                form_key: hyva.getFormKey()
7545            });
7546            fetch(url, {method: 'POST', body, headers: {'Content-Type': contentType}})
7547                .then(response => {
7548                    if (response.ok) {
7549                        return response;
7550                    }
7551
7552                    return Promise.reject(`${response.status} ${response.statusText}`);
7553                })
7554                .then(() => {
7555                    Alpine.store('AmastyCookieGroups').updateGroupData(true);
7556                })
7557                .catch(error => {
7558                    typeof window.dispatchMessages !== "undefined" && window.dispatchMessages([
7559                        {
7560                            type: "error",
7561                            text: error
7562                        }
7563                    ]);
7564                })
7565                .finally(() => {
7566                    amastyCookieManager.processManageableCookies();
7567                    window.dispatchEvent(new CustomEvent('cookiebar-action-allow-finish'));
7568                    // Wait cookiebar close animation
7569                    setTimeout(() => {
7570                        window.dispatchEvent(new CustomEvent('reload-customer-section-data'));
7571                    }, 100);
7572                });
7573        });
7574    })();
7575</script>
7575
7576
7577<script data-cfasync="false">
7578    (function () {
7579        'use strict';
7580
7581        window.addEventListener('cookiebar-action-settings', () => {
7582            window.dispatchEvent(new Event('open-am-cookie-bar-settings'));
7583        });
7584    })();
7585</script>
7585
7586
7587<style>
7588    :root {
7589        /* Bar Color Settings */
7590        --ambar-background: #fff;
7591        --ambar-links-color: #131212;
7592        --ambar-policy-text: #131212;
7593        --ambar-toggle-active-color: #2563eb;
7594        --ambar-toggle-inactive-color: #fff;
7595
7596        /* Buttons Color Settings */
7597        --ambar-button-accept-color: #00B507;
7598        --ambar-button-accept-hover-color: #337ab7;
7599        --ambar-button-accept-text: #FFFFFF;
7600        --ambar-button-accept-hover-text: #fff;
7601
7602        --ambar-button-allow-color: #FFFFFF;
7603        --ambar-button-allow-hover-color: #337ab7;
7604        --ambar-button-allow-text: #131212;
7605        --ambar-button-allow-hover-text: #fff;
7606
7607        --ambar-button-decline-color: #337ab7;
7608        --ambar-button-decline-hover-color: #337ab7;
7609        --ambar-button-decline-text: #fff;
7610        --ambar-button-decline-hover-text: #fff;
7611
7612        --ambar-button-settings-color: #FFFFFF;
7613        --ambar-button-settings-hover-color: #337ab7;
7614        --ambar-button-settings-text: #131212;
7615        --ambar-button-settings-hover-text: #fff;
7616
7617        /* Buttons Order Settings */
7618        --ambar-button-accept-order: 0;
7619        --ambar-button-allow-order: 0;
7620        --ambar-button-settings-order: 0;
7621        --ambar-button-decline-order: 0;
7622
7623        /* Cookie Information Bar Color Settings */
7624        --ambar-information-background: #fff;
7625        --ambar-information-title: #374151;
7626        --ambar-information-description: #374151;
7627        --ambar-information-table-header: #374151;
7628        --ambar-information-table-content: #374151;
7629
7630        /* Cookie Information Bar Done Button Settings */
7631        --ambar-information-button-color: #1d4ed8;
7632        --ambar-information-button-hover-color: #1d4ed8;
7633        --ambar-information-button-text: #fff;
7634        --ambar-information-button-hover-text: #fff;
7635
7636        /* Settings Bar Done Button Settings */
7637        --ambar-setting-button-color: #1d4ed8;
7638        --ambar-setting-button-hover-color: #1d4ed8;
7639        --ambar-setting-button-text: #fff;
7640        --ambar-setting-button-hover-text: #fff;
7641
7642        /* cookie_settings_bar_customisation */
7643        --ambar-setting-bar-group-background: #fff;
7644        --ambar-setting-bar-group-title: #000;
7645        --ambar-setting-bar-group-description: #000;
7646        --ambar-setting-bar-group-links: #326ed1;
7647    }
7648</style>
7649
7650<script data-cfasync="false">
7651    'use strict';
7652
7653    function initAmCookieActionDispatcherBtn() {
7654        return {
7655            actiondispatchHandler: function (event) {
7656                const { dispatchAction, dispatchPayload } = event.currentTarget.dataset;
7657                this.$dispatch(dispatchAction, this.parsePayload(dispatchPayload));
7658            },
7659            parsePayload: function (payload) {
7660                try {
7661                    return JSON.parse(payload);
7662                } catch (e) {
7663                    return null;
7664                }
7665            }
7666        };
7667    }
7668
7669    window.addEventListener(
7670        'alpine:init',
7671        () => Alpine.data('initAmCookieActionDispatcherBtn', initAmCookieActionDispatcherBtn),
7672        { once: true }
7673    );
7674</script>
7674
7675
7676<script data-cfasync="false">
7677    'use strict';
7678
7679    function initAmCookieGroups() {
7680        return {
7681            /**
7682             * @withContext x-for: $store.AmastyCookieGroups.groupData
7683             * @returns {string}
7684             */
7685            getInputGroupId: function () {
7686                return `amcookie-${this.$el.dataset.groupPrefix}group-${this.group.groupId}`
7687            },
7688
7689            /**
7690             * @withContext x-for: $store.AmastyCookieGroups.groupData
7691             * @returns {{"!bg-gray-400": boolean}}
7692             */
7693            getInputStyles: function () {
7694                return {
7695                    '!bg-gray-400': this.group.isEssential
7696                }
7697            },
7698
7699            /**
7700             * @withContext x-for: $store.AmastyCookieGroups.groupData
7701             * @returns {void}
7702             */
7703            toggleGroup: function () {
7704                this.group.checked = !this.group.checked;
7705            },
7706
7707            /**
7708             * @withContext x-for: $store.AmastyCookieGroups.groupData
7709             * @returns {void}
7710             */
7711            moreInfoClickHandler: function () {
7712                this.$dispatch(this.$el.dataset.dispatchAction, this.group);
7713            },
7714
7715            moreInformationAboutCookieGroup: function () {
7716                return hyva.str('About\u0020\u0022\u00251\u0022\u0020Cookie\u0020Group', this.group.name);
7717            }
7718        }
7719    }
7720
7721    window.addEventListener(
7722        'alpine:init',
7723        () => Alpine.data('initAmCookieGroups', initAmCookieGroups),
7724        {once: true}
7725    );
7726</script>
vendor: 1 bytes, line 7726
7726
7727<script>
7728    if (window.AmFB) {
7729        (() => {
7730            const gdprListeners = [
7731                {
7732                    event: 'cookiebar-action-accept-finish',
7733                    callback: () => window.AmFB.initPixels(),
7734                    options: { once: true }
7735                },
7736                {
7737                    event: 'cookiebar-action-allow-finish',
7738                    callback: () => window.AmFB.initPixels(),
7739                    options: { once: true }
7740                }
7741            ];
7742
7743            const isAllowedToRunScript = function () {
7744                const facebookPixelCookieName = '_fbp';
7745                const allowedCookies = hyva.getCookie('amcookie_allowed') || '';
7746                const disallowedCookies = hyva.getCookie('amcookie_disallowed') || '';
7747                return !!allowedCookies.length
7748                    && (!disallowedCookies || disallowedCookies.indexOf(facebookPixelCookieName) === -1);
7749            };
7750
7751            window.AmFB.setDataToSection = new Proxy(window.AmFB.setDataToSection, {
7752                apply(target, thisArg, argArray) {
7753                    if (isAllowedToRunScript()) {
7754                        return target.apply(thisArg, argArray);
7755                    }
7756
7757                    return {
7758                        then: () => {}
7759                    }
7760                }
7761            });
7762
7763            window.AmFB.initPixels = new Proxy(window.AmFB.initPixels, {
7764                apply(target, thisArg, argArray) {
7765                    if (isAllowedToRunScript()) {
7766                        return target.apply(thisArg, argArray);
7767                    }
7768                }
7769            });
7770
7771            window.AmFB = new Proxy(window.AmFB, {
7772                get(target, prop, receiver) {
7773                    if (prop === 'listeners') {
7774                        return [...Reflect.get(...arguments), ...(gdprListeners)];
7775                    }
7776
7777                    return Reflect.get(...arguments);
7778                }
7779            });
7780        })();
7781    }
7782</script>
vendor: 1 bytes, line 7782
7782
7783<script>
7784    'use strict';
7785
7786    (function () {
7787        document.querySelectorAll('[data-amcookie-js="footer-link"]').forEach(link => {
7788            link.addEventListener('click', function (event) {
7789                event.preventDefault();
7790                window.dispatchEvent(new CustomEvent('cookiebar-action-settings'));
7791            });
7792        });
7793    })();
7794</script>
vendor: 1 bytes, line 7794
7794
7795<script type="text/json" id="default-section-data">
7796    {"messages":[],"customer":[],"compare-products":[],"last-ordered-items":[],"cart":[],"directory-data":{"DE":{"name":"Deutschland","regions":{"80":{"code":"BAW","name":"Baden-W\u00fcrttemberg"},"81":{"code":"BAY","name":"Bayern"},"82":{"code":"BER","name":"Berlin"},"83":{"code":"BRG","name":"Brandenburg"},"84":{"code":"BRE","name":"Bremen"},"85":{"code":"HAM","name":"Hamburg"},"86":{"code":"HES","name":"Hessen"},"87":{"code":"MEC","name":"Mecklenburg-Vorpommern"},"79":{"code":"NDS","name":"Niedersachsen"},"88":{"code":"NRW","name":"Nordrhein-Westfalen"},"89":{"code":"RHE","name":"Rheinland-Pfalz"},"90":{"code":"SAR","name":"Saarland"},"91":{"code":"SAS","name":"Sachsen"},"92":{"code":"SAC","name":"Sachsen-Anhalt"},"93":{"code":"SCN","name":"Schleswig-Holstein"},"94":{"code":"THE","name":"Th\u00fcringen"}}},"data_id":1790254192},"captcha":[],"instant-purchase":[],"loggedAsCustomer":[],"persistent":[],"review":[],"payments":[],"wishlist":{"items":[]},"recently_viewed_product":[],"recently_compared_product":[],"product_data_storage":[],"paypal-billing-agreement":[],"paypal-buyer-country":[]}</script>
7796
7797</div></body>
7798</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.