PageSourceSearch

https://odiporo.de/cart

html odiporo.de collected 2026-10-04 02:40:37 UTC 358,932 bytes, 4,643 lines download raw bytes

1<!doctype html><html class="no-js" lang="de" dir="ltr">
2<head>
3  <meta charset="utf-8">
4  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
5  <meta name="viewport" content="width=device-width,initial-scale=1">
6  <meta name="theme-color" content="#171717">
7  <link rel="canonical" href="https://odiporo.de/cart">
8  <link rel="preconnect" href="https://cdn.shopify.com" crossorigin>
9  <link rel="preconnect" href="https://fonts.shopifycdn.com" crossorigin>
10  
11  <link rel="dns-prefetch" href="https://ajax.googleapis.com">
12  <link rel="dns-prefetch" href="https://maps.googleapis.com">
13  <link rel="dns-prefetch" href="https://maps.gstatic.com">
14  
15<link rel="shortcut icon" href="//odiporo.de/cdn/shop/files/O_Logo_White-01.png?crop=center&height=32&v=1752656128&width=32" type="image/png" /><!-- Google Tag Manager -->
16<script>
vendor: 327 bytes, lines 16-20
16(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
17new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
18j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
19'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
20})(window,document,'script','dataLayer','
20GTM-KX7KVKS
vendor: 3 bytes, line 20
20');
20</script>
20
21<!-- End Google Tag Manager -->
22  <title>Dein Warenkorb &ndash; odiporo.de - Smarte Elektronik für jeden Anspruch</title><meta property="og:site_name" content="odiporo.de - Smarte Elektronik für jeden Anspruch">
23<meta property="og:url" content="https://odiporo.de/cart">
24<meta property="og:title" content="Dein Warenkorb">
25<meta property="og:type" content="website">
26<meta property="og:description" content="Als dynamisch wachsendes E Commerce-Unternehmen haben wir uns einer klaren Mission verschrieben: Wir bieten unseren Kunden erstklassige Technologie-Produkte mit einem hervorragenden Preis Leistungs-Verhältnis. Unser sorgfältig kuratiertes und wachsendes Sortiment reicht von zukunftsweisender Elektromobilität über intel"><meta property="og:image" content="http://odiporo.de/cdn/shop/files/Odiporo.de_Logo_Insta_Profilbild_1080x1080_537f761d-70e6-49fb-87bf-7d698bf65e71.png?v=1787740204">
27  <meta property="og:image:secure_url" content="https://odiporo.de/cdn/shop/files/Odiporo.de_Logo_Insta_Profilbild_1080x1080_537f761d-70e6-49fb-87bf-7d698bf65e71.png?v=1787740204">
28  <meta property="og:image:width" content="1080">
29  <meta property="og:image:height" content="1080"><meta name="twitter:site" content="@">
30<meta name="twitter:card" content="summary_large_image">
31<meta name="twitter:title" content="Dein Warenkorb">
32<meta name="twitter:description" content="Als dynamisch wachsendes E Commerce-Unternehmen haben wir uns einer klaren Mission verschrieben: Wir bieten unseren Kunden erstklassige Technologie-Produkte mit einem hervorragenden Preis Leistungs-Verhältnis. Unser sorgfältig kuratiertes und wachsendes Sortiment reicht von zukunftsweisender Elektromobilität über intel">
33<style>@font-face {
34  font-family: Roboto;
35  font-weight: 400;
36  font-style: normal;
37  font-display: swap;
38  src: url("//odiporo.de/cdn/fonts/roboto/roboto_n4.2019d890f07b1852f56ce63ba45b2db45d852cba.woff2") format("woff2"),
39       url("//odiporo.de/cdn/fonts/roboto/roboto_n4.238690e0007583582327135619c5f7971652fa9d.woff") format("woff");
40}
41@font-face {
42  font-family: Roboto;
43  font-weight: 500;
44  font-style: normal;
45  font-display: swap;
46  src: url("//odiporo.de/cdn/fonts/roboto/roboto_n5.250d51708d76acbac296b0e21ede8f81de4e37aa.woff2") format("woff2"),
47       url("//odiporo.de/cdn/fonts/roboto/roboto_n5.535e8c56f4cbbdea416167af50ab0ff1360a3949.woff") format("woff");
48}
49@font-face {
50  font-family: Roboto;
51  font-weight: 700;
52  font-style: normal;
53  font-display: swap;
54  src: url("//odiporo.de/cdn/fonts/roboto/roboto_n7.f38007a10afbbde8976c4056bfe890710d51dec2.woff2") format("woff2"),
55       url("//odiporo.de/cdn/fonts/roboto/roboto_n7.94bfdd3e80c7be00e128703d245c207769d763f9.woff") format("woff");
56}
57@font-face {
58  font-family: Roboto;
59  font-weight: 400;
60  font-style: italic;
61  font-display: swap;
62  src: url("//odiporo.de/cdn/fonts/roboto/roboto_i4.57ce898ccda22ee84f49e6b57ae302250655e2d4.woff2") format("woff2"),
63       url("//odiporo.de/cdn/fonts/roboto/roboto_i4.b21f3bd061cbcb83b824ae8c7671a82587b264bf.woff") format("woff");
64}
65@font-face {
66  font-family: Roboto;
67  font-weight: 700;
68  font-style: italic;
69  font-display: swap;
70  src: url("//odiporo.de/cdn/fonts/roboto/roboto_i7.7ccaf9410746f2c53340607c42c43f90a9005937.woff2") format("woff2"),
71       url("//odiporo.de/cdn/fonts/roboto/roboto_i7.49ec21cdd7148292bffea74c62c0df6e93551516.woff") format("woff");
72}
73:root {
74    /*! General */
75    --color-base-text: 23 23 23;
76    --color-base-highlight: 255 209 0;
77    --color-base-background: 255 255 255;
78    --color-base-button: 23 23 23;
79    --color-base-button-gradient: #171717;
80    --color-base-button-text: 255 255 255;
81    --color-keyboard-focus: 255 217 0;
82    --color-shadow: 23 23 23;
83    --color-price: 23 23 23;
84    --color-sale-price: 198 40 40;
85    --color-sale-tag: 255 209 0;
86    --color-sale-tag-text: 23 23 23;
87    --color-rating: 245 158 11;
88    --color-placeholder: 255 255 255;
89    --color-success-text: 46 125 50;
90    --color-success-background: 255 255 255;
91    --color-error-text: 198 40 40;
92    --color-error-background: 255 255 255;
93    --color-info-text: 21 101 192;
94    --color-info-background: 255 255 255;
95    
96    /*! Menu and drawers */
97    --color-drawer-text: 23 23 23;
98    --color-drawer-background: 255 255 255;
99    --color-drawer-button-background: 255 209 0;
100    --color-drawer-button-gradient: #ffd100;
101    --color-drawer-button-text: 23 23 23;
102    --color-drawer-overlay: 255 217 0;
103
104    /*! Product card */
105    --card-radius: var(--rounded-card);
106    --card-border-width: 0.0rem;
107    --card-border-opacity: 0.0;
108    --card-shadow-opacity: 0.1;
109    --card-shadow-horizontal-offset: 0.0rem;
110    --card-shadow-vertical-offset: 0.0rem;
111
112    /*! Buttons */
113    --buttons-radius: var(--rounded-button);
114    --buttons-border-width: 2px;
115    --buttons-border-opacity: 1.0;
116    --buttons-shadow-opacity: 0.0;
117    --buttons-shadow-horizontal-offset: 0px;
118    --buttons-shadow-vertical-offset: 0px;
119
120    /*! Inputs */
121    --inputs-radius: var(--rounded-input);
122    --inputs-border-width: 0px;
123    --inputs-border-opacity: 0.65;
124
125    /*! Spacing */
126    --sp-0d5: 0.125rem;
127    --sp-1: 0.25rem;
128    --sp-1d5: 0.375rem;
129    --sp-2: 0.5rem;
130    --sp-2d5: 0.625rem;
131    --sp-3: 0.75rem;
132    --sp-3d5: 0.875rem;
133    --sp-4: 1rem;
134    --sp-4d5: 1.125rem;
135    --sp-5: 1.25rem;
136    --sp-5d5: 1.375rem;
137    --sp-6: 1.5rem;
138    --sp-6d5: 1.625rem;
139    --sp-7: 1.75rem;
140    --sp-7d5: 1.875rem;
141    --sp-8: 2rem;
142    --sp-8d5: 2.125rem;
143    --sp-9: 2.25rem;
144    --sp-9d5: 2.375rem;
145    --sp-10: 2.5rem;
146    --sp-10d5: 2.625rem;
147    --sp-11: 2.75rem;
148    --sp-12: 3rem;
149    --sp-13: 3.25rem;
150    --sp-14: 3.5rem;
151    --sp-15: 3.875rem;
152    --sp-16: 4rem;
153    --sp-18: 4.5rem;
154    --sp-20: 5rem;
155    --sp-23: 5.625rem;
156    --sp-24: 6rem;
157    --sp-28: 7rem;
158    --sp-32: 8rem;
159    --sp-36: 9rem;
160    --sp-40: 10rem;
161    --sp-44: 11rem;
162    --sp-48: 12rem;
163    --sp-52: 13rem;
164    --sp-56: 14rem;
165    --sp-60: 15rem;
166    --sp-64: 16rem;
167    --sp-68: 17rem;
168    --sp-72: 18rem;
169    --sp-80: 20rem;
170    --sp-96: 24rem;
171    --sp-100: 32rem;
172
173    /*! Font family */
174    --font-heading-family: Roboto, sans-serif;
175    --font-heading-style: normal;
176    --font-heading-weight: 400;
177    --font-heading-line-height: 1.2;
178    --font-heading-letter-spacing: 0.0em;
179    
180
181    --font-body-family: Roboto, sans-serif;
182    --font-body-style: normal;
183    --font-body-weight: 400;
184    --font-body-line-height: 1.6;
185    --font-body-letter-spacing: 0.0em;
186
187    --font-navigation-family: var(--font-body-family);
188    --font-navigation-size: clamp(0.875rem, 0.748rem + 0.3174vw, 1.125rem);
189    --font-navigation-weight: 500;
190    
191
192    --font-button-family: var(--font-body-family);
193    --font-button-size: clamp(0.875rem, 0.8115rem + 0.1587vw, 1.0rem);
194    --font-button-weight: 500;
195    
196
197    --font-product-family: var(--font-body-family);
198    --font-product-size: clamp(1.0rem, 0.873rem + 0.3175vw, 1.25rem);
199    --font-product-weight: 500;
200    
201
202    /*! Font size */
203    --text-3xs: 0.625rem;
204    --text-2xs: 0.6875rem;
205    --text-xs: 0.75rem;
206    --text-2sm: 0.8125rem;
207    --text-sm: 0.875rem;
208    --text-base: 1.0rem;
209    --text-lg: 1.125rem;
210    --text-xl: 1.25rem;
211    --text-2xl: 1.5rem;
212    --text-3xl: 1.875rem;
213    --text-4xl: 2.25rem;
214    --text-5xl: 3.0rem;
215    --text-6xl: 3.75rem;
216    --text-7xl: 4.5rem;
217    --text-8xl: 6.0rem;
218
219    /*! Layout */
220    --page-width: 1900px;
221    --gap-padding: clamp(var(--sp-5), 2.526vw, var(--sp-12));
222    --grid-gap: clamp(40px, 20vw, 60px);
223    --page-padding: var(--sp-5);
224    --page-container: min(calc(100vw - var(--scrollbar-width, 0px) - var(--page-padding) * 2), var(--page-width));
225    --rounded-button: 0.75rem;
226    --rounded-input: 0.75rem;
227    --rounded-card: clamp(var(--sp-2d5), 1.053vw, var(--sp-5));
228    --rounded-block: clamp(var(--sp-2d5), 1.053vw, var(--sp-5));
229
230    /*! Other */
231    --icon-weight: 1.5px;
232  }
233
234  @media screen and (min-width: 1024px) {
235    :root {
236      --page-padding: var(--sp-9);
237    }
238  }
239
240  @media screen and (min-width: 1280px) {
241    :root {
242      --gap-padding: var(--sp-12);
243      --page-padding: var(--sp-12);
244      --page-container: min(calc(100vw - var(--scrollbar-width, 0px) - var(--page-padding) * 2), max(var(--page-width), 1280px));
245    }
246  }
247
248  @media screen and (min-width: 1536px) {
249    :root {
250      --page-padding: max(var(--sp-12), 50vw - var(--scrollbar-width, 0px)/2 - var(--page-width)/2);
251    }
252  }
253</style>
254  <link rel="preload" as="font" href="//odiporo.de/cdn/fonts/roboto/roboto_n4.2019d890f07b1852f56ce63ba45b2db45d852cba.woff2" type="font/woff2" crossorigin>
255  
256
257  <link rel="preload" as="font" href="//odiporo.de/cdn/fonts/roboto/roboto_n4.2019d890f07b1852f56ce63ba45b2db45d852cba.woff2" type="font/woff2" crossorigin>
258  
259<link href="//odiporo.de/cdn/shop/t/3/assets/theme.css?v=147535658888616814551767967621" rel="stylesheet" type="text/css" media="all" /><link rel="stylesheet" href="//odiporo.de/cdn/shop/t/3/assets/apps.css?v=181677850728302373271744817342" media="print" fetchpriority="low" onload="this.media='all'">
260
261  
261<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
261<meta name="google-site-verification" content="0nfOA03KB2llEYepo7ebUe5QZ-ZWgCEOHJt93iusFxE">
262<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/90810417531/digital_wallets/dialog">
263<meta id="in-context-paypal-metadata" data-shop-id="90810417531" data-venmo-supported="false" data-environment="production" data-locale="de_DE" data-paypal-v4="true" data-currency="EUR">
264<link rel="ucp" href="/.well-known/ucp" version="2026-08-25">
264<script async="async" src="/checkouts/internal/preloads.js?locale=de-DE"></script>
264
265<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
266<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=de-DE&shop_id=90810417531" crossorigin="anonymous"></script>
vendor: 1 bytes, line 266
266
267<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":90810417531,"countryCode":"DE","currencyCode":"EUR","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/90810417531","merchantName":"odiporo.de - Smarte Elektronik für jeden Anspruch","requiredBillingContactFields":["postalAddress","email"],"requiredShippingContactFields":["postalAddress","email"],"shippingType":"shipping","supportedNetworks":["visa","maestro","masterCard","amex"],"total":{"type":"pending","label":"odiporo.de - Smarte Elektronik für jeden Anspruch","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 267
267
268<script id="shopify-features" type="application/json">{"accessToken":"c7fb4a2c810720620d03dbb82618158c","betas":["rich-media-storefront-analytics"],"domain":"odiporo.de","predictiveSearch":true,"shopId":90810417531,"locale":"de"}</script>
vendor: 1 bytes, line 268
268
269<script>var Shopify = Shopify || {};
270Shopify.shop = "v80rnh-af.myshopify.com";
271Shopify.locale = "de";
272Shopify.currency = {"active":"EUR","rate":"1.0"};
273Shopify.country = "DE";
274Shopify.theme = {"name":"Concept live","id":179096813947,"schema_name":"Concept","schema_version":"4.1.0","theme_store_id":2412,"role":"main"};
275Shopify.theme.handle = "null";
276Shopify.theme.style = {"id":null,"handle":null};
277Shopify.cdnHost = "odiporo.de/cdn";
278Shopify.routes = Shopify.routes || {};
279Shopify.routes.root = "/";
280Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js";
281Shopify.SignInWithShop = Shopify.SignInWithShop || {};
282Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {};
283Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 283
283
284<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 284
284
285<script>!function(o){function n(){var o=[];function n(){o.push(Array.prototype.slice.apply(arguments))}return n.q=o,n}var t=o.Shopify=o.Shopify||{};t.loadFeatures=n(),t.autoloadFeatures=n()}(window);</script>
vendor: 1 bytes, line 285
285
286<script>
287  window.ShopifyPay = window.ShopifyPay || {};
288  window.ShopifyPay.apiHost = "shop.app\/pay";
289  window.ShopifyPay.redirectState = null;
290</script>
vendor: 1 bytes, line 290
290
291<script>
292  window.Shopify = window.Shopify || {};
293  window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {};
294  window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 };
295  window.Shopify.SignInWithShop.eligible = true;
296</script>
vendor: 1 bytes, line 296
296
297<script id="shop-js-analytics" type="application/json">{"pageType":"cart"}</script>
vendor: 1 bytes, line 297
297
298<script defer="defer" async type="module" src="https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.de.esm.js"></script>
vendor: 1 bytes, line 298
298
299<script type="module">
300  await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.de.esm.js");
301
302  window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true});
303
304</script>
vendor: 1 bytes, line 304
304
305<script>
306  window.Shopify = window.Shopify || {};
307  if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {};
308  window.Shopify.featureAssets['shop-js'] = {"avatar":["modules/v2/loader.avatar.de.esm.js"],"checkout-modal":["modules/v2/loader.checkout-modal.de.esm.js"],"init-customer-accounts-sign-up":["modules/v2/loader.init-customer-accounts-sign-up.de.esm.js"],"init-customer-accounts":["modules/v2/loader.init-customer-accounts.de.esm.js"],"init-fed-cm":["modules/v2/loader.init-fed-cm.de.esm.js"],"init-shop-cart-sync":["modules/v2/loader.init-shop-cart-sync.de.esm.js"],"init-shop-email-lookup-coordinator":["modules/v2/loader.init-shop-email-lookup-coordinator.de.esm.js"],"init-shop-for-new-customer-accounts":["modules/v2/loader.init-shop-for-new-customer-accounts.de.esm.js"],"init-shop-user-recognition":["modules/v2/loader.init-shop-user-recognition.de.esm.js"],"init-windoid":["modules/v2/loader.init-windoid.de.esm.js"],"lead-capture":["modules/v2/loader.lead-capture.de.esm.js"],"listener":["modules/v2/loader.listener.de.esm.js"],"pay-button":["modules/v2/loader.pay-button.de.esm.js"],"payment-terms":["modules/v2/loader.payment-terms.de.esm.js"],"shop-button":["modules/v2/loader.shop-button.de.esm.js"],"shop-cart-sync":["modules/v2/loader.shop-cart-sync.de.esm.js"],"shop-cash-offers":["modules/v2/loader.shop-cash-offers.de.esm.js"],"shop-follow-button":["modules/v2/loader.shop-follow-button.de.esm.js"],"shop-login-button":["modules/v2/loader.shop-login-button.de.esm.js"],"shop-login":["modules/v2/loader.shop-login.de.esm.js"],"shop-toast-manager":["modules/v2/loader.shop-toast-manager.de.esm.js"],"shop-user-recognition":["modules/v2/loader.shop-user-recognition.de.esm.js"]};
309</script>
vendor: 1 bytes, line 309
309
310<script>(function() {
311  var isLoaded = false;
312  function asyncLoad() {
313    if (isLoaded) return;
314    isLoaded = true;
315    var urls = ["https:\/\/dr4qe3ddw9y32.cloudfront.net\/awin-shopify-integration-code.js?aid=32931\u0026v=shopifyApp_5.2.3\u0026ts=1753793870681\u0026shop=v80rnh-af.myshopify.com","https:\/\/widget.trustpilot.com\/bootstrap\/v5\/tp.widget.sync.bootstrap.min.js?shop=v80rnh-af.myshopify.com","https:\/\/ecommplugins-scripts.trustpilot.com\/v2.1\/js\/header.min.js?settings=eyJrZXkiOiI3S3RBeFRUeUJOeUxIcE9mIiwicyI6InNrdSJ9\u0026shop=v80rnh-af.myshopify.com","https:\/\/ecommplugins-scripts.trustpilot.com\/v2.1\/js\/success.min.js?settings=eyJrZXkiOiI3S3RBeFRUeUJOeUxIcE9mIiwicyI6InNrdSIsInQiOlsib3JkZXJzL2Z1bGZpbGxlZCJdLCJ2IjoiIiwiYSI6Ildvb0NvbW1lcmNlLTcuMi4wIn0=\u0026shop=v80rnh-af.myshopify.com","https:\/\/ecommplugins-trustboxsettings.trustpilot.com\/v80rnh-af.myshopify.com.js?settings=1749535109302\u0026shop=v80rnh-af.myshopify.com","https:\/\/tseish-app.connect.trustedshops.com\/esc.js?apiBaseUrl=aHR0cHM6Ly90c2Vpc2gtYXBwLmNvbm5lY3QudHJ1c3RlZHNob3BzLmNvbQ==\u0026instanceId=djgwcm5oLWFmLm15c2hvcGlmeS5jb20=\u0026shop=v80rnh-af.myshopify.com","https:\/\/searchanise-ef84.kxcdn.com\/widgets\/shopify\/init.js?a=1g7I4c8g3n\u0026shop=v80rnh-af.myshopify.com"];
316    for (var i = 0; i < urls.length; i++) {
317      var s = document.createElement('script');
318      s.type = 'text/javascript';
319      s.async = true;
320      s.src = urls[i];
321      var x = document.getElementsByTagName('script')[0];
322      x.parentNode.insertBefore(s, x);
323    }
324  };
325  if(window.attachEvent) {
326    window.attachEvent('onload', asyncLoad);
327  } else {
328    window.addEventListener('load', asyncLoad, false);
329  }
330})();</script>
vendor: 1 bytes, line 330
330
331<script id="__st">var __st={"a":90810417531,"offset":7200,"reqid":"ccd1293e-0848-4e78-b196-6fac301051d1-1791081636","pageurl":"odiporo.de\/cart","u":"b6ec5763ec88","p":"cart"};</script>
vendor: 1 bytes, line 331
331
332<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 332
332
333<script id="captcha-bootstrap">!function(){'use strict';const t='contact',e='account',n='new_comment',o=[[t,t],['blogs',n],['comments',n],[t,'customer']],c=[[e,'customer_login'],[e,'guest_login'],[e,'recover_customer_password'],[e,'create_customer']],r=t=>t.map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe',I='https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.5.3.iife.js',D={infoText:'Durch hCaptcha geschützt',privacyText:'Datenschutz',termsText:'Allgemeine Geschäftsbedingungen'},(t,e,n)=>{const o=w[L][v],c=o.bindForm;if(c)return c(t,g,e,D).then(n);var r;o.q.push([[t,g,e,D],n]),r=I,A||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:r})),A=!0)});var g,I,D;w[L]=w[L]||{},w[L][v]=w[L][v]||{},w[L][v].q=[],w[L][y]=w[L][y]||{},w[L][y].protect=function(t,e){n(t,void 0,e),T(t)},Object.freeze(w[L][y]),function(t,e,n,w,h,L){const[v,y,A,g]=function(t,e,n){const i=e?o:[],u=t?c:[],d=[...i,...u],f=r(d),m=r(i),_=r(d.filter((([t,e])=>n.includes(e))));return[a(f),a(m),a(_),s()]}(w,h,L),I=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},D=t=>v().includes(t);t.addEventListener('submit',(t=>{const e=I(t);if(!e)return;const n=D(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=_(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!f())return;!function(t){const e=f();if(!e)return;const n=_(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){_(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:u})),t.elements[u].value=e}(t,e),function(t,e){const n=f();if(!n)return;const o=[...t.querySelectorAll(`input[type='${i}']`)].map((({name:t})=>t)),c=[...d,...o],r={};for(const[a,s]of new FormData(t).entries())c.includes(a)||(r[a]=s);n.setItem(e,JSON.stringify({[m]:1,action:t.action,data:r}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const S=(t,e)=>{t&&!t.dataset[E]&&(n(t,e.some((e=>e===t))),T(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=I(t);D(e)&&S(e,y())}));const B=e.get('form_key'),M=e.get(l),P=B&&M;t.addEventListener('DOMContentLoaded',(()=>{const t=y();if(P)for(const e of t)e.elements[l].value===M&&p(e,B);[...new Set([...A(),...v().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>S(e,t)))}))}(h,new URLSearchParams(w.location.search),n,t,e,['guest_login'])})(!0,!0)}();</script>
vendor: 1 bytes, line 333
333
334<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//odiporo.de/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 334
334
335<script>(function () {var userAgent = navigator.userAgent;var platform = navigator.platform;var maxTouchPoints = navigator.maxTouchPoints || 0;var isIOS = /iPad|iPhone|iPod/.test(platform) || (platform === 'MacIntel' && maxTouchPoints > 1);var isMacSafari = platform.indexOf('Mac') === 0 && /Safari/.test(userAgent) && !/Chrome|Chromium|CriOS|FxiOS|Edg|OPR|Android/.test(userAgent);var isAppleSafari = isIOS || isMacSafari;if (isAppleSafari) {fetch('/sf_private_access_tokens' + location.search).catch(function () {});}function browserMajorVersion(pattern) {var match = userAgent.match(pattern);return match ? parseInt(match[1], 10) : null;}function shouldLoadAutosizesPolyfill() {if (!window.PerformanceObserver?.supportedEntryTypes?.includes('paint')) {return false;}var chromeVersion = browserMajorVersion(/Chrome\/(\d+)/);if (chromeVersion !== null) {return chromeVersion < 126;}var firefoxVersion = browserMajorVersion(/Firefox\/(\d+)/);if (firefoxVersion !== null) {return firefoxVersion < 150;}var safariVersion = isAppleSafari ? browserMajorVersion(/Version\/(\d+).*Safari\//) : null;if (safariVersion !== null) {return safariVersion < 27;}return true;}if (shouldLoadAutosizesPolyfill()) {var autosizesScript = document.createElement('script');autosizesScript.async = true;autosizesScript.crossOrigin = 'anonymous';autosizesScript.src = "//odiporo.de/cdn/shopifycloud/storefront/assets/storefront/autosizes-84416378.js";(document.head || document.documentElement).appendChild(autosizesScript);}window.ShopifyAnalytics = window.ShopifyAnalytics || {};window.ShopifyAnalytics.performance = window.ShopifyAnalytics.performance || {};(function () {var LONG_FRAME_THRESHOLD = 50;var longAnimationFrames = [];var activeRafId = null;function collectLongFrames() {var previousTime = null;function rafMonitor(now) {if (activeRafId === null) {return;}var delta = now - previousTime;if (delta > LONG_FRAME_THRESHOLD) {longAnimationFrames.push({startTime: previousTime,endTime: now,});}previousTime = now;activeRafId = requestAnimationFrame(rafMonitor);}previousTime = performance.now();activeRafId = requestAnimationFrame(rafMonitor);}if (!window.PerformanceObserver?.supportedEntryTypes?.includes('long-animation-frame')) {collectLongFrames();var timeoutId = setTimeout(function () {cancelAnimationFrame(activeRafId);}, 10000);window.ShopifyAnalytics.performance.getLongAnimationFrames = function (stopCollection) {if (stopCollection === undefined) {stopCollection = false;}if (stopCollection) {clearTimeout(timeoutId);cancelAnimationFrame(activeRafId);}return longAnimationFrames;};}})();})();</script>
335<script crossorigin="anonymous" defer="defer" src="//odiporo.de/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-616277c7.js?v=20250812"></script>
vendor: 1 bytes, line 335
335
336<script id="shopify-origin-trials" async="async" integrity="sha256-qJbe/jEZBHtr5W/BlA2cKAz3vkXu6vJQyLjgvgCC86g=" src="//cdn.shopify.com/shopifycloud/storefront/assets/storefront/origin_trials-318ab40a.js" crossorigin="anonymous" onload="window.__shopifyOriginTrialsDone = true" onerror="window.__shopifyOriginTrialsDone = true"></script>
vendor: 1 bytes, line 336
336
337<script>
338  window.Shopify = window.Shopify || {};
339  window.Shopify.MCP = window.Shopify.MCP || {};
340  window.Shopify.MCP.enabled = true;
341  window.Shopify.MCP.shop = "v80rnh-af.myshopify.com";
342  window.Shopify.MCP.mcpEndpoint = "https:\/\/odiporo.de\/api\/mcp";
343  window.Shopify.MCP.tools = [{"name":"search_shop_policies_and_faqs","description":"Used to get facts about the stores policies, products, or services.\nSome examples of questions you can ask are:\n  - What is your return policy?\n  - What is your shipping policy?\n  - What is your phone number?\n  - What are your hours of operation?\"\n","inputSchema":{"$schema":"https:\/\/json-schema.org\/draft\/2020-12\/schema","type":"object","properties":{"query":{"type":"string","description":"A natural language query."},"context":{"type":"string","description":"Additional information about the request such as user demographics, mood, location, or other relevant details that could help in tailoring the response appropriately."}},"required":["query"]}}];
344</script>
vendor: 1 bytes, line 344
344
345<script>(()=>{var d="shopify:webmcp_adapter_loaded",n=Symbol.for("shopify.webmcp_adapter_loading");function s(c,a,{win:r=window,doc:o=document}={}){function p(){try{return r.localStorage.getItem(d)==="true"}catch{return!1}}function l(){try{r.localStorage.setItem(d,"true")}catch{}}function u(){return typeof(o.modelContext||r.navigator?.modelContext)?.registerTool=="function"}function f(){if(r[n]||!u())return;let t=o.head||o.getElementsByTagName("head")[0];if(!t)return;let e=o.createElement("script");e.type="module",e.crossOrigin="anonymous",a&&(e.integrity=a),e.src=c,e.addEventListener("load",l,{once:!0}),e.addEventListener("error",()=>{r[n]=!1},{once:!0}),t.appendChild(e),r[n]=!0}function _(t){let e=o.getElementById("shopify-origin-trials");if(!e||r.__shopifyOriginTrialsDone){t();return}e.addEventListener("load",t,{once:!0}),e.addEventListener("error",t,{once:!0})}function i(){_(()=>r.setTimeout(f,0))}function m(){o.addEventListener("DOMContentLoaded",i,{once:!0})}p()?i():m()}s("\/\/odiporo.de\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})();
346</script>
vendor: 1 bytes, line 346
346
347<script data-source-attribution="shopify.dynamic_checkout.dynamic.init">var Shopify=Shopify||{};Shopify.PaymentButton=Shopify.PaymentButton||{isStorefrontPortableWallets:!0,init:function(){window.Shopify.PaymentButton.init=function(){};var t=document.createElement("script");t.src="https://odiporo.de/cdn/shopifycloud/portable-wallets/latest/portable-wallets.de.js",t.type="module",document.head.appendChild(t)}};
348</script>
vendor: 1 bytes, line 348
348
349<script data-source-attribution="shopify.dynamic_checkout.buyer_consent">
350  function portableWalletsHideBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.add("hidden"),t.setAttribute("aria-hidden","true"),n.removeEventListener("click",e))}function portableWalletsShowBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.remove("hidden"),t.removeAttribute("aria-hidden"),n.addEventListener("click",e))}window.Shopify?.PaymentButton&&(window.Shopify.PaymentButton.hideBuyerConsent=portableWalletsHideBuyerConsent,window.Shopify.PaymentButton.showBuyerConsent=portableWalletsShowBuyerConsent);
351</script>
vendor: 1 bytes, line 351
351
352<script data-source-attribution="shopify.dynamic_checkout.cart.bootstrap">document.addEventListener("DOMContentLoaded",(function(){function t(){return document.querySelector("shopify-accelerated-checkout-cart, shopify-accelerated-checkout")}if(t())Shopify.PaymentButton.init();else{new MutationObserver((function(e,n){t()&&(Shopify.PaymentButton.init(),n.disconnect())})).observe(document.body,{childList:!0,subtree:!0})}}));
353</script>
vendor: 1 bytes, line 353
353
354<script id='scb4127' type='text/javascript' async='' src='https://odiporo.de/cdn/shopifycloud/privacy-banner/storefront-banner.js'></script>
354<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://odiporo.de/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous">
355<style id="shopify-accelerated-checkout-cart">
356        #shopify-buyer-consent {
357  margin-top: 1em;
358  display: inline-block;
359  width: 100%;
360}
361
362#shopify-buyer-consent.hidden {
363  display: none;
364}
365
366#shopify-subscription-policy-button {
367  background: none;
368  border: none;
369  padding: 0;
370  text-decoration: underline;
371  font-size: inherit;
372  cursor: pointer;
373}
374
375#shopify-subscription-policy-button::before {
376  box-shadow: none;
377}
378
379      </style>
380
381<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
381
382
383  
383<script src="//odiporo.de/cdn/shop/t/3/assets/vendor.js?v=83836565987576270061744817342" defer="defer"></script>
383
384  
384<script src="//odiporo.de/cdn/shop/t/3/assets/theme.js?v=29274041475657875791757172179" defer="defer"></script>
384<script>
385  document.documentElement.classList.replace('no-js', 'js');
386
387  window.theme = window.theme || {};
388  theme.routes = {
389    shop_url: 'https://odiporo.de',
390    root_url: '/',
391    cart_url: '/cart',
392    cart_add_url: '/cart/add',
393    cart_change_url: '/cart/change',
394    cart_update_url: '/cart/update',
395    search_url: '/search',
396    predictive_search_url: '/search/suggest'
397  };
398
399  theme.variantStrings = {
400    preOrder: "Vorbestellung",
401    addToCart: "In den Einkaufswagen legen",
402    soldOut: "Ausverkauft",
403    unavailable: "Nicht verfügbar",
404    addToBundle: "Zum Bundle hinzufügen",
405    backInStock: "Benachrichtigen Sie mich, wenn es verfügbar ist"
406  };
407
408  theme.shippingCalculatorStrings = {
409    error: "Beim Abrufen der Versandtarife sind ein oder mehrere Fehler aufgetreten:",
410    notFound: "Wir liefern leider nicht an Ihre Adresse.",
411    oneResult: "Es gibt einen Versandtarif für Ihre Adresse:",
412    multipleResults: "Es gibt mehrere Versandtarife für Ihre Adresse:"
413  };
414
415  theme.recipientFormStrings = {
416    expanded: "Formular für den Empfänger des Geschenkgutscheins erweitert",
417    collapsed: "Formular für den Empfänger des Geschenkgutscheins minimiert"
418  };
419
420  theme.quickOrderListStrings = {
421    itemsAdded: "[quantity] Artikel hinzugefügt",
422    itemAdded: "[quantity] Artikel hinzugefügt",
423    itemsRemoved: "[quantity] Artikel entfernt",
424    itemRemoved: "[quantity] Artikel entfernt",
425    viewCart: "Warenkorb ansehen",
426    each: "[money]\/Stück",
427    minError: "Dieser Artikel hat ein Minimum von [min]",
428    maxError: "Dieser Artikel hat ein Maximum von [max]",
429    stepError: "Du kannst diesen Artikel nur in Abstufungen von [step] hinzufügen."
430  };
431
432  theme.cartStrings = {
433    error: `Beim Aktualisieren deines Warenkorbs ist ein Fehler aufgetreten. Bitte versuche es erneut.`,
434    quantityError: `Du kannst deinem Warenkorb nur [quantity] Stück dieses Artikels hinzufügen.`,
435  };
436
437  theme.dateStrings = {
438    d: "T",
439    day: "Tag",
440    days: "Tage",
441    h: "S",
442    hour: "Stunde",
443    hours: "Stunden",
444    m: "M",
445    minute: "Minute",
446    minutes: "Minuten",
447    s: "S",
448    second: "Sekunde",
449    seconds: "Sekunden"
450  };theme.strings = {
451    recentlyViewedEmpty: "Ihre zuletzt angesehenen Produkte sind leer.",
452    close: "Schließen",
453    next: "Vorwärts",
454    previous: "Zurück",
455    qrImageAlt: "QR-Code – Scannen, um Geschenkgutschein einzulösen"
456  };
457
458  theme.settings = {
459    moneyFormat: "€{{amount_with_comma_separator}}",
460    moneyWithCurrencyFormat: "€{{amount_with_comma_separator}} EUR",
461    currencyCodeEnabled: false,
462    externalLinksNewTab: false,
463    cartType: "drawer",
464    isCartTemplate: true,
465    pswpModule: "\/\/odiporo.de\/cdn\/shop\/t\/3\/assets\/photoswipe.min.js?v=41760041872977459911744817341",
466    themeName: 'Concept',
467    themeVersion: '4.1.0',
468    agencyId: ''
469  };</script>
469
470<meta name="google-site-verification" content="oXgyZf81eTvYPx2Im5JpetGnXQ6s1NhTnFvjBBLqmq8" />
471<!-- BEGIN app block: shopify://apps/amazon-reviews/blocks/product-rating-snippet-embed/88ab28f3-a438-4eb3-a83e-f1a9c62c5069 -->
472
473
474
475<!-- END app block --><!-- BEGIN app block: shopify://apps/hulk-form-builder/blocks/app-embed/b6b8dd14-356b-4725-a4ed-77232212b3c3 --><!-- BEGIN app snippet: hulkapps-formbuilder-theme-ext -->
475<script type="text/javascript">
476  
477  if (typeof window.formbuilder_customer != "object") {
478        window.formbuilder_customer = {}
479  }
480
481  
482
483  window.hulkFormBuilder = {
484    form_data: {"form_64N2MOqnj6GawputCWCQwA":{"uuid":"64N2MOqnj6GawputCWCQwA","form_name":"My Form","form_data":{"div_back_gradient_1":"#fff","div_back_gradient_2":"#fff","back_color":"#d8d1d1","form_title":"\u003ch2 style=\"text-align: center;\"\u003e\u003cstrong\u003eOrder Cancellation Form\u003c\/strong\u003e\u003c\/h2\u003e\n\u003cquillbot-extension-portal\u003e\u003c\/quillbot-extension-portal\u003e\u003cquillbot-extension-portal\u003e\u003c\/quillbot-extension-portal\u003e\u003cquillbot-extension-portal\u003e\u003c\/quillbot-extension-portal\u003e","form_submit":"Submit Cancellation Form","after_submit":"hideAndmessage","after_submit_msg":"","captcha_enable":"no","label_style":"inlineLabels","input_border_radius":"2","back_type":"color","input_back_color":"#fff","input_back_color_hover":"#fff","back_shadow":"none","label_font_clr":"#333333","input_font_clr":"#333333","button_align":"fullBtn","button_clr":"#fff","button_back_clr":"#333333","button_border_radius":"2","form_width":"600px","form_border_size":"2","form_border_clr":"#c7c7c7","form_border_radius":"1","label_font_size":"14","input_font_size":"12","button_font_size":"16","form_padding":"35","input_border_color":"#ccc","input_border_color_hover":"#ccc","btn_border_clr":"#333333","btn_border_size":"1","form_name":"My Form","form_description":"\u003cp style=\"text-align: center;\"\u003ePlease fill out the fields below to cancel your order.\u003c\/p\u003e\n\u003cquillbot-extension-portal\u003e\u003c\/quillbot-extension-portal\u003e\u003cquillbot-extension-portal\u003e\u003c\/quillbot-extension-portal\u003e\u003cquillbot-extension-portal\u003e\u003c\/quillbot-extension-portal\u003e","form_access_message":"\u
484003cp\u003ePlease login to access the form\u003cbr\u003eDo not have an account? Create account\u003c\/p\u003e","formElements":[{"Conditions":{},"type":"text","position":0,"label":"Order Number\/ID","page_number":1},{"Conditions":{},"type":"text","position":1,"label":"First Name","required":"yes","halfwidth":"yes","page_number":1},{"Conditions":{},"type":"text","position":2,"label":"Last Name","required":"yes","halfwidth":"yes","page_number":1},{"Conditions":{},"type":"email","position":3,"required":"yes","email_confirm":"yes","label":"Email Address","halfwidth":"no","page_number":1},{"Conditions":{},"type":"address","position":4,"label":"Address","page_number":1},{"Conditions":{},"type":"textarea","position":5,"label":"What is your reason for canceling? ","page_number":1}]},"is_spam_form":false,"shop_uuid":"3V4DRpazYs-jm-3e98wLgA","shop_timezone":"Europe\/Berlin","shop_id":138025,"shop_is_after_submit_enabled":false,"shop_shopify_plan":"Grow","shop_shopify_domain":"v80rnh-af.myshopify.com","popup_settings":{},"form_is_active":true},"form_72wWVIobEOG7TER4ZbeVqA":{"uuid":"72wWVIobEOG7TER4ZbeVqA","form_name":"Ihre Anfrage – wir beraten Sie persönlich","form_data":{"div_back_gradient_1":"#fff","div_back_gradient_2":"#fff","back_color":"#fff","form_title":"\u003ch2\u003eGesch\u0026auml;ftskundenanfrage\u003c\/h2\u003e\n","form_submit":"Absenden","after_submit":"hideAndmessage","after_submit_msg":"\u003cp\u003e\u003cstrong data-end=\"111\" data-start=\"95\"\u003eVielen Dank!\u003c\/strong\u003e\u003cbr data-end=\"114\" data-start=\"111\" \/\u003e\nWir haben deine Anfrage erhalten und melden uns in K\u0026uuml;rze bei dir.\u003c\/p\u003e\n","captcha_enable":"yes","label_style":"blockLabels","input_border_radius":"10","back_type":"transparent","input_back_color":"#fff","input_back_color_hover":"#fff","back_shadow":"none","label_font_clr":"#333333","input_font_clr":"#333333","button_align":"fullBtn","button_clr":"#fff","button_back_clr":"#333333","button_border_radius":"30","form_width":"100%","form_border_size":"1","form_border_clr":"#c7c7c7","form_border_radius":"20","label_font_size":"14","input_font_size":"12","button_font_size":"16","form_padding":"35","input_border_color":"#ccc","input_border_color_hover":"#ccc","btn_border_clr":"#333333","btn_border_size":"1","form_name":"Ihre Anfrage – wir beraten Sie persönlich","form_access_message":"\u
484003cp\u003ePlease login to access the form\u003cbr\u003eDo not have an account? Create account\u003c\/p\u003e","captcha_honeypot":"no","captcha_align":"left","captcha_lang":"de","captcha_version_3_enable":"no","input_fonts_type":"Google Fonts","formElements":[{"Conditions":{},"type":"text","position":0,"label":"Firma","halfwidth":"yes","page_number":1},{"Conditions":{},"type":"text","position":1,"label":"Name","halfwidth":"yes","required":"yes","page_number":1},{"type":"email","position":2,"label":"Email","required":"yes","email_confirm":"yes","Conditions":{},"page_number":1,"centerfield":"no","email_validate_field":"no"},{"Conditions":{},"type":"phone","position":3,"label":"Telefonummer","default_country_code":"Germany +49","phone_validate_field":"no","page_number":1},{"Conditions":{},"type":"multipleCheckbox","position":4,"label":"Produktinteresse","values":"TV - Fernseher\nMonitore\nE-Scooter\nLaufbänder\nSaugroboter\nSonstiges","elementCost":{},"align":"horizontal","required":"yes","other_for_multi_value":"yes","other_multi_checkbox_label":"Sonstige","page_number":1},{"Conditions":{},"type":"select","position":5,"label":"Bestimmtes Produkt","values":"aeco HARMONY HDX1 Hochgeschwindigkeits-Ionen-Haartrockner\naeco AirX - Flow 100 Ventilator\naeco AirX - SPIN Turmventilator\naeco DUO Doppelkammer AirFryer 9 Liter\naeco Touch Airfryer 5,7 Liter\naeco Compact Airfryer 4,3 Liter\naeco VacuBot X3\naeco VacuBot X5\naeco VacuBot X5 Plus\naeco Cube 2.0 Airfryer 2 Liter\nEufy S1 Pro\nEufy S1 Saug\/Wischroboter Mit All-in-One Station\nDyon Enter 32 Pro X2\nDyon Enter 40 PRO X2 FHD\nDyon Enter 24 Pro X2\nDyon Smart 24 VX HD\nDyon Smart 43 VX FHD\nDyon Movie Smart 32 VX\nDyon Movie Smart 40 VX-2\nDyon Movie Smart 24 VX\nDyon Enter 22 Pro X2\nDyon SMART 50 VX\nDyon Movie Smart 55 VX\nDyon Ultimax 32F-TI\nDyon Ultimax 43F-TI\nDyon Ultimax 50U-TI\nDyon Ultimax 55U-TI\nDyon Ultimax 24F-TI\nDyon Ultimax 24H-TI-W HD\nDyon Ultimax 32H-TI-W HD\nDYON Movie Smart 22 VX\nDYON ENTER 24 PRO-X-V\nDYON SMART 24 VX-V\nDYON nexGo 24H\nDYON Smart 32 VX\nDYON Movie Smart 32 VX-S\nDYON nexGo 32H\nDYON Ultimax 32H-TI-WS\nDYON Smart 40 VX-2\nDYON Ultimax 40F-TI\nDYON nexGo 40F\nDYON Movie Smart 43 VX\nDYON nexGo 43F\nDYON Movie Smart 50 VX\nDYON Movie Smart 50 VX-S\nDYON Smart 55 VX\nDYON Movie Smart 55 VX-2\nEureka NERE10S – 2-in-1 Saug-\u0026 Wischroboter Schwarz\nEureka J20 - 3in1 Saug\/ Wischroboter\nEureka E10S – 2-in-1 Saug-\u0026 Wischroboter Weiß\nEureka J12 Ultra Saug\/Wischroboter Schwarz\nEureka J12 Ultra Saug\/Wischroboter Weiß\nEureka J20 - 3in1 Saug\/ Wischroboter Weiß\nEureka E20 PLUS weiß - 2 in 1 Saug\/Wischroboter mit Zyklon Absaugstation\nEureka E20 PLUS schwarz - 2 in 1 Saug\/Wischroboter mit Zyklon Absaugstation\nEureka J15 Pro Ultra Saug\/Wischroboter\nHUTT W8 Fensterputzroboter\nHUTT W9 Fensterputzroboter\nHUTT A1 Fensterputzroboter\nHUTT C7 Fensterputzroboter\nHUTT E+Universal 5000 mAh Akku für W8\/W9\/A1\nKingsmith Rutschfeste WalkingPad Laufband-Bodenmatte (Version II)\nKingsmith Neck Massage Kingsmith\nKingsmith WalkingPad C1 Klappbares Laufband\nKingsmith WalkingPad C2 Klappbares Laufband - weiß\nKingsmith WalkingPad C2 Klappbares Laufband - schwarz\nKingsmith WalkingPad P1 Klappbares Laufband für Schreibtisch\nKingsmith WalkingPad Z1 Klappbares Laufband für Schreibtisch\nKingsmith WalkingPad Z3 Hybrid+ Klappbares Laufband\nKingsmith WalkingPad A1 Pro Klappbares Laufband\nKingsmith WalkingPad R1 Pro\nKingsmith WalkingPad R1H\nKingsmith WalkingPad R2\nKingsmith WalkingPad R2H\nKingsmith WalkingPad MC11 Klappbares Laufband\nKingsmith WalkingPad MC21\nKingsmith WalkingPad X23\/MX16 Klappbares Laufband\nKingsmith WalkingPad X218 Klappbares Laufband\nKingsmith Klappbare Trainingsbank Multifunktion\nKEYi Premium Petbot mit Ladestation\nMolly\u0026Cody SPRING Water Fountain\nMolly\u0026Cody BALOU Futtermaschine\nMolly\u0026Cody LUCKY Futtermaschine\nMolly\u0026Cody SAMSON Tierhaarschneidemaschine\n1More ColorBuds 2 Bluetooth In-Ear Kopfhörer Weiß\nRoborock ZEO One - weiß \/2in1 Wash \u0026 Dryer\nSharp Core S3 E-Scooter\nSharp Core S4 E-Scooter\nEureka J12 Ultra Saug\/Wischroboter\nEureka NERE10S – 2-in-1 Saug-\u0026 Wischroboter\nNIU KQi1 Pro E-Scooter\nNIU KQi2 Pro E-Scooter\nNIU KQi3 Pro E-Scooter\nNIU KQi3 Sport E-Scooter\nKingsmith WalkingPad C2 Klappbares Laufband\nKingsmith WalkingPad R1H\/R1 Pro 2IN1 Klappbares Laufband\nKingsmith WalkingPad R2\/R2H Walk\u0026Run 2IN1 Faltbares Laufband\nKingsmith WalkingPad G1 Klappbares Laufband mit Handläufen\nODYS i25-F-144\nODYS Q27-X\nODYS i27-F-144\nODYS XE34-UWQ-120\nOdys XP32 32 Zoll Curved Monitor WQHD\nOdys i27 27 Zoll Office \u0026 Gam
484ing Monitor\nOdys XP32-X 32 Zoll  Curved Gaming Monitor\nOdys XP32 PRO-X 32 Zoll Curved Gaming Monitor\nOdys XP34 PRO-X 34 Zoll Curved Gaming Monitor\nOdys Q27 PRO-X 27 Zoll Curved Monitor WQHD\nOdys i27-Q-100 27 Zoll Flat Monitor WQHD\nOdys i27-Q-180 27 Zoll Flat Monitor WQHD\nOdys XP27-F-180 27 Zoll Curved Monitor\nOdys NEO e100 E-Scooter\nOdys PAX E-Scooter\nOdys ALPHA X5 PRO - E-Scooter\nOdys ALPHA X5 E Scooter\nOdys Phi X30 - E-Scooter\nOdys ULTRON i75 E-Scooter\nOdys FlexPump - Mobiler Mini Kompressor\nNIU KQi3 Pro Gold E-Scooter\nNIU KQi3 Pro Schwarz E-Scooter\nNIU KQi3 Sport Schwarz E-Scooter\nNIU KQi3 Sport Blau E-Scooter\nNIU KQi3 Sport Rot E-Scooter\nNIU KQi3 Sport Weiß E-Scooter\nNIU KQi2 Pro Grau E-Scooter\nNIU KQi2 Pro Weiß E-Scooter\nNIU KQi3 Max E-Scooter\nNIU KQi1 Pro Anthrazit E-Scooter\nNIU KQi1 Pro White E-Scooter\nNIU KQi 300X DE-BG E-Scooter\nNIU KQi 300P DE-BK E-Scooter\nNIU KQi 300P DE-WT E-Scooter\nNIU KQi100P Anthrazit E-Scooter\nNIU KQi100F Schwarz E-Scooter\nXiaomi Electric Scooter Storage Bag\nXiaomi Electric Scooter 4 Ultra\nXiaomi Electric Scooter 4 Lite Gen 2\nXiaomi Electric Scooter 5 MAX DE AX\nXiaomi Electric Scooter 5 PRO\nXiaomi Electric Scooter 5 DE AX\nXiaomi Electric Scooter Elite DE AX\nXiaomi Smart Doorbell 3\nXiaomi 12V Max Brushless Cordless Drill EU\nXiaomi Sports Fanny Pack\nXiaomi A27i Monitor 27 Zoll\nSonstiges","elementCost":{},"other_value":"yes","other_value_label":"Sonstiges","page_number":1},{"Conditions":{},"type":"textarea","position":6,"label":"Frage oder Nachricht","inputHeight":"100","page_number":1,"required":"yes"},{"Conditions":{},"type":"terms_conditions","position":7,"label":"Datenverarbeitung akzeptiert","checked":"no","infoMessage":"Mit dem Absenden meiner Anfrage erkläre ich mich damit einverstanden, dass meine oben angegebenen Daten von der odiporo GmbH an autorisierte Vertriebspartner weitergegeben werden dürfen. Diese dürfen mich per Post, Telefon und\/oder E-Mail kontaktieren, um mein Interesse an Produkten und Dienstleistungen der odiporo GmbH zu besprechen. Die Verarbeitung meiner Daten erfolgt gemäß den geltenden Datenschutzbestimmungen. Weitere Informationen findest du in unserer Datenschutzerklärung.","required":"yes","halfwidth":"no","page_number":1}]},"is_spam_form":false,"shop_uuid":"3V4DRpazYs-jm-3e98wLgA","shop_timezone":"Europe\/Berlin","shop_id":138025,"shop_is_after_submit_enabled":false,"shop_shopify_plan":"Grow","shop_shopify_domain":"v80rnh-af.myshopify.com","popup_settings":{},"form_is_active":true},"form_cfjl7Hus5DHEv6-DyZL3lQ":{"uuid":"cfjl7Hus5DHEv6-DyZL3lQ","form_name":"B2B-Anfrage","form_data":{"div_back_gradient_1":"#fff","div_back_gradient_2":"#fff","back_color":"#fff","form_title":"\u003ch3\u003eB2B \/\u003cbr \/\u003e\nGesch\u0026auml;ftskunden Anfrage\u003c\/h3\u003e\n","form_submit":"Senden","after_submit":"hideAndmessage","after_submit_msg":"\u003cp\u003eVielen Dank. Die Anfrage wurde erfolgreich \u0026uuml;bermittelt.\u003c\/p\u003e\n","captcha_enable":"yes","label_style":"blockLabels","input_border_radius":"10","back_type":"transparent","input_back_color":"#fff","input_back_color_hover":"#fff","back_shadow":"none","label_font_clr":"#333333","input_font_clr":"#333333","button_align":"fullBtn","button_clr":"#fff","button_back_clr":"#000000","button_border_radius":"30","form_width":"100%","form_border_size":0,"form_border_clr":"#000000","form_border_radius":"30","label_font_size":"15","input_font_size":"12","button_font_size":"16","form_padding":"10","input_border_color":"#ccc","input_border_color_hover":"#ccc","btn_border_clr":"#000000","btn_border_size":"1","form_name":"B2B-Anfrage","form_access_message":"\u
484003cp\u003ePlease login to access the form\u003cbr\u003eDo not have an account? Create account\u003c\/p\u003e","captcha_honeypot":"no","captcha_version_3_enable":"no","input_fonts_type":"System Fonts","label_fonts_type":"System Fonts","logged_in_users":"no","captcha_align":"left","captcha_lang":"de","formElements":[{"Conditions":{},"type":"text","position":0,"label":"Produktname","required":"yes","page_number":1},{"Conditions":{},"type":"number","position":1,"label":"Menge","minNumber":"1","required":"yes","page_number":1},{"type":"text","position":2,"label":"Name \/ Firma","customClass":"","halfwidth":"no","Conditions":{},"centerfield":"no","required":"yes","page_number":1},{"type":"email","position":3,"label":"Email","required":"yes","email_confirm":"yes","Conditions":{},"page_number":1},{"type":"textarea","position":4,"label":"Nachricht","required":"no","Conditions":{},"page_number":1,"inputHeight":"200"}]},"is_spam_form":false,"shop_uuid":"3V4DRpazYs-jm-3e98wLgA","shop_timezone":"Europe\/Berlin","shop_id":138025,"shop_is_after_submit_enabled":false,"shop_shopify_plan":"Grow","shop_shopify_domain":"v80rnh-af.myshopify.com","popup_settings":{},"form_is_active":true},"form_E5Os6jaNVGwNKNJbXL34IA":{"uuid":"E5Os6jaNVGwNKNJbXL34IA","form_name":"Geschäftskundenanfrage (B2B)","form_data":{"div_back_gradient_1":"#fff","div_back_gradient_2":"#fff","back_color":"#fff","form_title":"\u003ch2\u003e\u003cspan style=\"font-family:Arial;\"\u003eIhre Anfrage - wir beraten Sie gerne pers\u0026ouml;nlich.\u003c\/span\u003e\u003c\/h2\u003e\n","form_submit":"Jetzt beraten lassen","after_submit":"hideAndmessage","after_submit_msg":"\u003cp data-path-to-node=\"8\"\u003eVielen Dank f\u0026uuml;r Ihre Nachricht und Ihr Interesse an odiporo.de. Wir freuen uns, dass Sie den Weg zu uns gefunden haben.\u003c\/p\u003e\n\n\u003cp data-path-to-node=\"9\"\u003eOb smarte Elektronik f\u0026uuml;r Ihr Zuhause oder L\u0026ouml;sungen f\u0026uuml;r Ihr Unternehmen, Ihr Anliegen ist bei uns eingegangen und wird bereits bearbeitet.\u003c\/p\u003e\n\n\u003cp data-path-to-node=\"11\"\u003e\u003cb data-index-in-node=\"0\" data-path-to-node=\"11\"\u003eWie es weitergeht:\u003c\/b\u003e Wir pr\u0026uuml;fen Ihre Anfrage individuell. Sollten Sie spezifische Unterlagen, technische Datenbl\u0026auml;tter oder Unterst\u0026uuml;tzung bei der Ger\u0026auml;teauswahl ben\u0026ouml;tigen, bereiten unsere Produktspezialisten diese bereits f\u0026uuml;r Sie vor.\u003c\/p\u003e\n\n\u003cp data-path-to-node=\"12\"\u003eGewerbliche Projektanfragen aus dem B2B-Bereich leiten wir direkt an unsere pers\u0026ouml;nliche Fachbetreuung weiter, um Ihnen eine optimale und unkomplizierte Abwicklung zu garantieren.\u003c\/p\u003e\n\n\u003cp data-path-to-node=\"13\"\u003eWir melden uns in K\u0026uuml;rze bei Ihnen.\u003c\/p\u003e\n\n\u003cp data-path-to-node=\"14\"\u003eMit freundlichen Gr\u0026uuml;\u0026szlig;en\u003c\/p\u003e\n\n\u003cp data-path-to-node=\"15\"\u003e\u003cb data-index-in-node=\"0\" data-path-to-node=\"15\"\u003eIhr Team von odiporo.de\u003c\/b\u003e\u003c\/p\u003e\n","captcha_enable":"yes","label_style":"blockLabels","input_border_radius":"10","back_type":"transparent","input_back_color":"#fff","input_back_color_hover":"#fff","back_shadow":"none","label_font_clr":"#333333","input_font_clr":"#333333","button_align":"centerBtn","button_clr":"#fff","button_back_clr":"#333333","button_border_radius":"30","form_width":"100%","form_border_size":"1","form_border_clr":"#c7c7c7","form_border_radius":"20","label_font_size":"14","input_font_size":"12","button_font_size":"16","form_padding":"35","input_border_color":"#ccc","input_border_color_hover":"#ccc","btn_border_clr":"#333333","btn_border_size":"1","form_name":"Geschäftskundenanfrage (B2B)","form_access_message":"\u
484003cp\u003ePlease login to access the form\u003cbr\u003eDo not have an account? Create account\u003c\/p\u003e","captcha_honeypot":"no","captcha_align":"left","captcha_lang":"de","captcha_version_3_enable":"no","input_fonts_type":"Google Fonts","formElements":[{"Conditions":{},"type":"text","position":0,"label":"Firmenname","halfwidth":"yes","page_number":1,"required":"yes"},{"Conditions":{},"type":"text","position":1,"label":"Umsatzsteuer-ID (USt.-ID.)","page_number":1},{"Conditions":{},"type":"text","position":2,"label":"Ansprechpartner","halfwidth":"yes","required":"yes","page_number":1},{"type":"email","position":3,"label":"E-Mail Adresse","required":"yes","email_confirm":"yes","Conditions":{},"page_number":1,"centerfield":"no","email_validate_field":"no","halfwidth":"no"},{"Conditions":{},"type":"phone","position":4,"label":"Telefonummer (optional)","default_country_code":"Germany +49","phone_validate_field":"no","page_number":1,"required":"no"},{"Conditions":{},"type":"select","position":5,"label":"Ihre Branche (optional)","values":"Hotel \u0026 Tourismus\nBüro \u0026 Verwaltung\nIndustrie\nGastronomie\nFitnessstudio\nWiederverkäufer\nSonstiges","elementCost":{},"page_number":1},{"Conditions":{},"type":"select","position":6,"label":"Produktinteresse","required":"yes","values":"Fernseher\nMonitore\nFitness\nE-Scooter\nSaugroboter\nAir Fryer\nLuftreiniger\nHeizlüfter\nGPS-Tier-Tracker\nSonstiges","elementCost":{},"page_number":1},{"Conditions":{},"type":"textarea","position":7,"label":"Frage oder Nachricht","required":"yes","page_number":1},{"Conditions":{},"type":"terms_conditions","position":8,"label":"Datenverarbeitung akzeptiert","checked":"no","required":"yes","halfwidth":"no","page_number":1,"infoMessage":"Ich bin damit einverstanden, dass die odiporo GmbH meine Daten an autorisierte Vertriebspartner weitergibt, die mich per Post, Telefon oder E-Mail zu Produkten und Dienstleistungen kontaktieren dürfen. Weitere Informationen unter: https:\/\/odiporo.de\/policies\/privacy-policy"}]},"is_spam_form":false,"shop_uuid":"3V4DRpazYs-jm-3e98wLgA","shop_timezone":"Europe\/Berlin","shop_id":138025,"shop_is_after_submit_enabled":false,"shop_shopify_plan":"Grow","shop_shopify_domain":"v80rnh-af.myshopify.com","popup_settings":{},"form_is_active":true}},
485    shop_data: {"shop_3V4DRpazYs-jm-3e98wLgA":{"shop_uuid":"3V4DRpazYs-jm-3e98wLgA","shop_timezone":"Europe\/Berlin","shop_id":138025,"shop_is_after_submit_enabled":false,"shop_shopify_plan":"Grow","shop_shopify_domain":"v80rnh-af.myshopify.com","shop_created_at":"2025-05-27T23:26:22.258Z","is_skip_metafield":false,"shop_deleted":false,"shop_disabled":false}},
486    settings_data: {"shop_settings":{"shop_customise_msgs":[],"default_customise_msgs":{"is_required":"is required","thank_you":"Thank you! The form was submitted successfully.","processing":"Processing...","valid_data":"Please provide valid data","valid_email":"Provide valid email format","valid_tags":"HTML Tags are not allowed","valid_phone":"Provide valid phone number","valid_captcha":"Please provide a valid CAPTCHA response.","valid_url":"Provide valid URL","only_number_alloud":"Provide valid number in","number_less":"must be less than","number_more":"must be more than","image_must_less":"Image must be less than 20MB","image_number":"Images allowed","image_extension":"Invalid extension! Please provide image file","error_image_upload":"Error in image upload. Please try again.","error_file_upload":"Error in file upload. Please try again.","your_response":"Your response","error_form_submit":"Error occur.Please try again after sometime.","email_submitted":"Form with this email is already submitted","invalid_email_by_zerobounce":"The email address you entered appears to be invalid. Please check it and try again.","download_file":"Download file","card_details_invalid":"Your card details are invalid","card_details":"Card details","please_enter_card_details":"Please enter card details","card_number":"Card number","exp_mm":"Exp MM","exp_yy":"Exp YY","crd_cvc":"CVV","payment_value":"Payment amount","please_enter_payment_amount":"Please enter a payment amount.","address1":"Address line 1","address2":"Address line 2","city":"City","province":"Province","zipcode":"Zip code","country":"Country","blocked_domain":"This form does not accept addresses from","file_must_less":"File must be less than 20MB","file_extension":"Invalid extension! Please provide file","only_file_number_alloud":"files allowed","previous":"Previous","next":"Next","must_have_a_input":"Please enter at least one field.","please_enter_required_data":"Please enter required data","atleast_one_special_char":"Include at least one special character","atleast_one_lowercase_char":"Include at least one lowercase character","atleast_one_uppercase_char":"Include at least one uppercase character","atleast_one_number":"Include at least one number","must_have_8_chars":"Must have 8 characters long","be_between_8_and_12_chars":"Be between 8 and 12 characters long","please_select":"Please Select","phone_submitted":"Form with this phone number is already submitted","user_res_parse_error":"Error while submitting the form","valid_same_values":"values must be the same","product_choice_clear_selection":"Clear Selection","picture_choice_clear_selection":"Clear Selection","remove_all_for_file_image_upload":"Remove All","invali
486d_file_type_for_image_upload":"You can't upload files of this type.","invalid_file_type_for_signature_upload":"You can't upload files of this type.","max_files_exceeded_for_file_upload":"You can not upload any more files.","max_files_exceeded_for_image_upload":"You can not upload any more files.","file_already_exist":"File already uploaded","max_limit_exceed":"You have added the maximum number of text fields.","cancel_upload_for_file_upload":"Cancel upload","cancel_upload_for_image_upload":"Cancel upload","cancel_upload_for_signature_upload":"Cancel upload"}}},
487    features_data: {"shop_plan_features":{"shop_plan_features":["unlimited-forms","full-design-customization","export-form-submissions","multiple-recipients-for-form-submissions","multiple-admin-notifications","enable-captcha","unlimited-file-uploads","save-submitted-form-data","set-auto-response-message","conditional-logic","form-banner","save-as-draft-facility","include-user-response-in-admin-email","disable-form-submission","mail-platform-integration","stripe-payment-integration","pre-built-templates","create-customer-account-on-shopify","google-analytics-3-by-tracking-id","facebook-pixel-id","bing-uet-pixel-id","advanced-js","advanced-css","api-available","customize-form-message","hidden-field","restrict-from-submissions-per-one-user","utm-tracking","ratings","privacy-notices","heading","paragraph","shopify-flow-trigger","domain-setup","block-domain","address","html-code","form-schedule","after-submit-script","customize-form-scrolling","on-form-submission-record-the-referrer-url","password","duplicate-the-forms","include-user-response-in-auto-responder-email","elements-add-ons","admin-and-auto-responder-email-with-tokens","email-export","premium-support","google-analytics-4-by-measurement-id","google-ads-for-tracking-conversion","validation-field","load_form_as_popup","advanced_conditional_logic","forms-limit","submissions-visibility-limit","approve-or-decline-submission","product-choice","ticket-system","emoji-feedback","multi-line-text","iamge-choice","image-display","file-upload","slack-integration","google-sheets-integration","multi-page-form","access-only-for-logged-in-users","zapier-integration","add-tags-for-existing-customers","restrict-from-submissions-per-phone-number","multi-column-text","booking","zerobounce-integration","form-layout-image"]}},
488    shop: null,
489    shop_id: null,
490    plan_features: null,
491    validateDoubleQuotes: false,
492    assets: {
493      searchableDropdown: "https://cdn.shopify.com/extensions/01a08a53-1431-71a3-8d75-dd04d3c69aa4/form-builder-by-hulkapps-74/assets/searchable-dropdown.js",
494      extraFunctions: "https://cdn.shopify.com/extensions/01a08a53-1431-71a3-8d75-dd04d3c69aa4/form-builder-by-hulkapps-74/assets/extra-functions.js",
495      extraStyles: "https://cdn.shopify.com/extensions/01a08a53-1431-71a3-8d75-dd04d3c69aa4/form-builder-by-hulkapps-74/assets/extra-styles.css",
496      bootstrapStyles: "https://cdn.shopify.com/extensions/01a08a53-1431-71a3-8d75-dd04d3c69aa4/form-builder-by-hulkapps-74/assets/theme-app-extension-bootstrap.css",
497    },
498    translations: {
499      htmlTagNotAllowed: "HTML Tags are not allowed",
500      sqlQueryNotAllowed: "SQL Queries are not allowed",
501      doubleQuoteNotAllowed: "Double quotes are not allowed",
502      
503      maxTextFieldsReached: "You have added the maximum number of text fields.",
504      
505
506      
507      zerobounceApiErrorMsg: "We couldn\u0026#39;t verify your email due to a technical issue. Please try again later.",
508    }
509
510  }
511
512  
513
514  window.FbThemeAppExtSettingsHash = {}
515  
516</script>
516<!-- END app snippet --><!-- END app block --><!-- BEGIN app block: shopify://apps/judge-me-reviews/blocks/judgeme_core/61ccd3b1-a9f2-4160-9fe9-4fec8413e5d8 --><!-- Start of Judge.me Core -->
517
518
519
520
521
522
523
524<link rel="dns-prefetch" href="https://cdn.judge.me">
525<link rel="dns-prefetch" href="https://cdn1.judge.me">
526<link rel="dns-prefetch" href="https://api.judge.me">
527
528<script data-cfasync='false' class='jdgm-settings-script'>window.jdgmSettings={"pagination":5,"disable_web_reviews":false,"coupon_receiving_condition":"any_review","coupon_value_type":"percentage","coupon_value_percentage":10,"coupon_value_fixed_amount":0,"coupon_discount_type":"single","coupon_tier_text_enabled":false,"coupon_tier_text_percentage":10,"coupon_tier_text_fixed_amount":0,"coupon_tier_photo_enabled":false,"coupon_tier_photo_percentage":10,"coupon_tier_photo_fixed_amount":0,"coupon_tier_video_enabled":false,"coupon_tier_video_percentage":10,"coupon_tier_video_fixed_amount":0,"enable_coupons":false,"badge_no_review_text":"Keine Bewertungen","badge_n_reviews_text":"{{ n }} Bewertung/Bewertungen","hide_badge_preview_if_no_reviews":true,"badge_hide_text":false,"enforce_center_preview_badge":false,"widget_title":"Kundenbewertungen","widget_open_form_text":"Bewertung schreiben","widget_close_form_text":"Bewertung abbrechen","widget_refresh_page_text":"Seite aktualisieren","widget_summary_text":"Basierend auf {{ number_of_reviews }} Bewertung/Bewertungen","widget_no_review_text":"Schreiben Sie die erste Bewertung","widget_name_field_text":"Anzeigename","widget_verified_name_field_text":"Verifizierter Name (öffentlich)","widget_name_placeholder_text":"Anzeigename","widget_required_field_error_text":"Dieses Feld ist erforderlich.","widget_email_field_text":"E-Mail-Adresse","widget_verified_email_field_text":"Verifizierte E-Mail (privat, kann nicht bearbeitet werden)","widget_email_placeholder_text":"Ihre E-Mail-Adresse","widget_email_field_error_text":"Bitte geben Sie eine gültige E-Mail-Adresse ein.","widget_rating_field_text":"Bewertung","widget_review_title_field_text":"Bewertungstitel","widget_review_title_placeholder_text":"Geben Sie Ihrer Bewertung einen Titel","widget_review_body_field_text":"Bewertungsinhalt","widget_review_body_placeholder_text":"Beginnen Sie hier zu schreiben...","widget_pictures_field_text":"Bild/Video (optional)","widget_submit_review_text":"Bewertung abschicken","widget_submit_verified_review_text":"Verifizierte Bewertung abschicken","widget_submit_success_msg_with_auto_publish":"Vielen Dank! Bitte aktualisieren Sie die Seite in wenigen Momenten, um Ihre Bewertung zu sehen. Sie können Ihre Bewertung entfernen oder bearbeiten, indem Sie sich bei \u003ca href='https://judge.me/login' target='_blank' rel='nofollow noopener'\u003eJudge.me\u003c/a\u003e anmelden","widget_submit_success_msg_no_auto_publish":"Vielen Dank! Ihre Bewertung wird veröffentlicht, sobald sie vom Shop-Administrator genehmigt wurde. Sie können Ihre Bewertung entfernen oder bearbeiten, indem Sie sich bei \u003ca href='https://judge.me/login' target='_blank' rel='nofollow noopener'\u003eJudge.me\u003c/a\u003e anmelden","widget_show_default_reviews_out_of_total_text":"Es werden {{ n_reviews_shown }} von {{ n_reviews }} Bewertungen angezeigt.","widget_show_all_link_text":"Alle anzeigen","widget_show_less_link_text":"Weniger anzeigen","widget_author_said_text":"{{ reviewer_name }} sagte:","widget_days_text":"vor {{ n }} Tag/Tagen","widget_weeks_text":"vor {{ n }} Woche/Wochen","widget_months_text":"vor {{ n }} Monat/Monaten","widget_years_text":"vor {{ n }} Jahr/Jahren","widget_yesterday_text":"Gestern","widget_today_text":"Heute","widget_replied_text":"\u003e\u003e {{ shop_name }} antwortete:","widget_read_more_text":"Mehr lesen","widget_reviewer_name_as_initial":"","widget_rating_filter_color":"#fbcd0a","widget_rating_filter_see_all_text":"Alle Bewertungen anzeigen","widget_sorting_most_recent_text":"Neueste","widget_sorting_highest_rating_text":"Höchste Bewertung","widget_sorting_lowest_rating_text":"Niedrigste Bewertung","widget_sorting_with_pictures_text":"Nur Bilder","widget_sorting_most_helpful_text":"Hilfreichste","widget_open_question_form_text":"Eine Frage stellen","widget_reviews_subtab_text":"Bewertungen","widget_questions_subtab_text":"Fragen","widget_question_label_text":"Frage","widget_answer_label_text":"Antwort","widget_question_placeholder_text":"Schreiben Sie hier Ihre Frage","widget_submit_question_text":"Frage absenden","widget_question_submit_success_text":"Vielen Dank für Ihre Frage! Wir werden Sie benachrichtigen, sobald sie beantwortet wird.","verified_badge_text":"Verifiziert","verified_badge_bg_color":"","verified_badge_text_color":"","verified_badge_placement":"left-of-reviewer-name","widget_review_max_height":"","widget_hide_border":false,"widget_social_share":false,"widget_thumb":false,"widget_review_location_show":false,"widget_location_format":"","all_reviews_include_out_of_store_products":true,"all_reviews_out_of_store_text":"(außerhalb des Shops)","all_reviews_pagination":100,"all_reviews_product_name_prefix_text":"über","enable_review_pictures":true,"enable_question_anwser":false,"widget_theme":"default","review_date_format":"mm/dd/yyyy","default_sort_method":"most-recent","enable_ai_review_visibility":true,"widget_product_reviews_subtab_text":"Produktbewertungen","widget_shop_reviews_subtab_text":"Shop-Bewertungen","widget_other_products_reviews_text":"Be
528wertungen für andere Produkte","widget_store_reviews_subtab_text":"Shop-Bewertungen","widget_product_variant_reference_text":"Bewertung für","widget_no_store_reviews_text":"Dieser Shop hat noch keine Bewertungen erhalten","widget_web_restriction_product_reviews_text":"Dieses Produkt hat noch keine Bewertungen erhalten","widget_no_items_text":"Keine Elemente gefunden","widget_show_more_text":"Mehr anzeigen","widget_write_a_store_review_text":"Shop-Bewertung schreiben","widget_product_and_store_reviews_text":"Produkt- und Shop-Bewertungen","widget_reviews_in_collection_text":"Bewertungen in dieser Kollektion","widget_other_languages_heading":"Bewertungen in anderen Sprachen","widget_translate_review_text":"Bewertung übersetzen nach {{ language }}","widget_translating_review_text":"Übersetzung läuft...","widget_show_original_translation_text":"Original anzeigen ({{ language }})","widget_translate_review_failed_text":"Bewertung konnte nicht übersetzt werden.","widget_translate_review_retry_text":"Erneut versuchen","widget_translate_review_try_again_later_text":"Versuchen Sie es später noc
528h einmal","show_product_url_for_grouped_product":false,"widget_sorting_pictures_first_text":"Bilder zuerst","show_pictures_on_all_rev_page_mobile":false,"show_pictures_on_all_rev_page_desktop":false,"floating_tab_hide_mobile_install_preference":false,"floating_tab_button_name":"★ Bewertungen","floating_tab_title":"Lassen Sie Kunden für uns sprechen","floating_tab_button_color":"","floating_tab_button_background_color":"","floating_tab_url":"","floating_tab_url_enabled":false,"floating_tab_tab_style":"text","all_reviews_text_badge_text":"Kunden bewerten uns mit {{ shop.metafields.judgeme.all_reviews_rating | round: 1 }}/5 basierend auf {{ shop.metafields.judgeme.all_reviews_count }} Bewertungen.","all_reviews_text_badge_text_branded_style":"{{ shop.metafields.judgeme.all_reviews_rating | round: 1 }} von 5 Sternen basierend auf {{ shop.metafields.judgeme.all_reviews_count }} Bewertungen","is_all_reviews_text_badge_a_link":false,"show_stars_for_all_reviews_text_badge":false,"all_reviews_text_badge_url":"","all_reviews_text_style":"branded","all_reviews_text_color_style":"judgeme_brand_color","all_reviews_text_color":"#108474","all_reviews_text_show_jm_brand":false,"featured_carousel_show_header":true,"featured_carousel_title":"Lassen Sie Kunden für uns sprechen","testimonials_carousel_title":"Kunden sagen uns","videos_carousel_title":"Echte Kunden-Geschichten","cards_carousel_title":"Kunden sagen uns","featured_carousel_count_text":"aus {{ n }} Bewertungen","featured_carousel_add_link_to_all_reviews_page":false,"featured_carousel_url":"","featured_carousel_show_images":true,"featured_carousel_autoslide_interval":5,"featured_carousel_arrows_on_the_sides":false,"featured_carousel_height":250,"featured_carousel_width":80,"featured_carousel_image_size":0,"featured_carousel_image_height":250,"featured_carousel_arrow_color":"#eeeeee","verified_count_badge_style":"branded","verified_count_badge_orientation":"horizontal","verified_count_badge_color_style":"judgeme_brand_color","verified_count_badge_color":"#108474","is_verified_count_badge_a_link":false,"verified_count_badge_url":"","verified_count_badge_show_jm_brand":true,"widget_rating_preset_default":5,"widget_first_sub_tab":"product-reviews","widget_show_histogram":true,"widget_histogram_use_custom_color":false,"widget_pagination_use_custom_color":false,"widget_star_use_custom_color":false,"widget_verified_badge_use_custom_color":false,"widget_write_review_use_custom_color":false,"picture_reminder_submit_button":"Upload Pictures","enable_review_videos":false,"mute_video_by_default":false,"widget_sorting_videos_first_text":"Videos zuerst","widget_review_pending_text":"Ausstehend","featured_carousel_items_for_large_screen":3,"social_share_options_order":"Facebook,Twitter","remove_microdata_snippet":false,"disable_json_ld":false,"enable_json_ld_products":false,"preview_badge_show_question_text":false,"preview_badge_no_question_text":"Keine Fragen","preview_badge_n_question_text":"{{ number_of_questions }} Frage/Fragen","qa_badge_show_icon":false,"qa_badge_position":"same-row","remove_judgeme_branding":false,"widget_add_search_bar":false,"widget_search_bar_placeholder":"Suchen","widget_sorting_verified_only_text":"Nur verifizierte","widget_sorting_most_relevant_text":"Relevanteste","featured_carousel_theme":"default","featured_carousel_show_rating":true,"featured_carousel_show_title":true,"featured_carousel_show_body":true,"featured_carousel_show_date":false,"featured_carousel_show_reviewer":true,"featured_carousel_show_product":false,"featured_carousel_header_background_color":"#108474","featured_carousel_header_text_color":"#ffffff","featured_carousel_name_product_separator":"reviewed","featured_carousel_full_star_background":"#108474","featured_carousel_empty_star_background":"#dadada","featured_carousel_vertical_theme_background":"#f9fafb","featured_carousel_verified_badge_enable":true,"featured_carousel_verified_badge_color":"#108474","featured_carousel_border_style":"round","featured_carousel_review_line_length_limit":3,"featured_carousel_more_reviews_button_text":"Mehr Bewertungen lesen","featured_carousel_view_product_button_text":"Produkt ansehen","all_reviews_page_load_reviews_on":"scroll","all_reviews_page_load_more_text":"Mehr Bewertungen laden","disable_fb_tab_reviews":false,"enable_ajax_cdn_cache":false,"widget_advanced_speed_features":5,"widget_public_name_text":"wird öffentlich angezeigt wie","default_reviewer_name":"John Smith","default_reviewer_name_has_non_latin":true,"widget_reviewer_anonymous":"Anonym","medals_widget_title":"Judge.me Bewertungsmedaillen","medals_widget_background_color":"#f9fafb","medals_widget_position":"footer_all_pages","medals_widget_border_color":"#f9fafb","medals_widget_verified_text_position":"left","medals_widget_use_monochromatic_version":false,"medals_widget_elements_color":"#108474","show_reviewer_avatar":true,"widget_invalid_yt_video_url_error_text":"Keine YouTube-Video-URL","widget_max_length_field_error_text":"Bitte geben Sie nicht mehr als {0} Zeichen ein.","widget_show_country_flag":false,"widget_show_collected_via_shop_app":true,"widget_verified_by_shop_badge_style":"light","widget_verified_by_shop_text":"Verifiziert vom Shop","widget_show_photo_gallery":false,"widget_load_with_code_splitting":true,"widget_ugc_install_preference":false,"widget_ugc_title":"Von uns hergestellt, von Ihnen geteilt","widget_ugc_subt
528itle":"Markieren Sie uns, um Ihr Bild auf unserer Seite zu sehen","widget_ugc_arrows_color":"#ffffff","widget_ugc_primary_button_text":"Jetzt kaufen","widget_ugc_primary_button_background_color":"#108474","widget_ugc_primary_button_text_color":"#ffffff","widget_ugc_primary_button_border_width":"0","widget_ugc_primary_button_border_style":"none","widget_ugc_primary_button_border_color":"#108474","widget_ugc_primary_button_border_radius":"25","widget_ugc_secondary_button_text":"Mehr laden","widget_ugc_secondary_button_background_color":"#ffffff","widget_ugc_secondary_button_text_color":"#108474","widget_ugc_secondary_button_border_width":"2","widget_ugc_secondary_button_border_style":"solid","widget_ugc_secondary_button_border_color":"#108474","widget_ugc_secondary_button_border_radius":"25","widget_ugc_reviews_button_text":"Bewertungen ansehen","widget_ugc_reviews_button_background_color":"#ffffff","widget_ugc_reviews_button_text_color":"#108474","widget_ugc_reviews_button_border_width":"2","widget_ugc_reviews_button_border_style":"solid","widget_ugc_reviews_button_border_color":"#108474","widget_ugc_reviews_button_border_radius":"25","widget_ugc_reviews_button_link_to":"judgeme-reviews-page","widget_ugc_show_post_date":true,"widget_ugc_max_width":"800","widget_rating_metafield_value_type":true,"widget_primary_color":"#108474","widget_enable_secondary_color":false,"widget_secondary_color":"#edf5f5","widget_summary_average_rating_text":"{{ average_rating }} von 5","widget_media_grid_title":"Kundenfotos \u0026 -videos","widget_media_grid_see_more_text":"Mehr sehen","widget_round_style":false,"widget_show_product_medals":true,"widget_verified_by_judgeme_text":"Verifiziert von Judge.me","widget_show_store_medals":true,"widget_verified_by_judgeme_text_in_store_medals":"Verifiziert von Judge.me","widget_media_field_exceed_quantity_message":"Entschuldigung, wir können nur {{ max_media }} für eine Bewertung akzeptieren.","widget_media_field_exceed_limit_message":"{{ file_name }} ist zu groß, bitte wählen Sie ein {{ media_type }} kleiner als {{ size_limit }}MB.","widget_review_submitted_text":"Bewertung abgesendet!","widget_question_submitted_text":"Frage abgesendet!","widget_close_form_text_question":"Abbrechen","widget_write_your_answer_here_text":"Schreiben Sie hier Ihre Antwort","widget_enabled_branded_link":true,"widget_show_collected_by_judgeme":false,"widget_reviewer_name_color":"","widget_write_review_text_color":"","widget_write_review_bg_color":"","widget_collected_by_judgeme_text":"gesammelt von Judge.me","widget_pagination_type":"standard","widget_load_more_text":"Mehr laden","widget_load_more_color":"#108474","widget_full_review_text":"Vollständige Bewertung","widget_read_more_reviews_text":"Mehr Bewertungen lesen","widget_read_questions_text":"Fragen lesen","widget_questions_and_answers_text":"Fragen \u0026 Antworten","widget_verified_by_text":"Verifiziert von","widget_verified_text":"Verifiziert","widget_number_of_reviews_text":"{{ number_of_reviews }} Bewertungen","widget_back_button_text":"Zurück","widget_next_button_text":"Weiter","widget_custom_forms_filter_button":"Filter","custom_forms_style":"horizontal","widget_show_review_information":false,"how_reviews_are_collected":"Wie werden Bewertungen gesammelt?","widget_show_review_keywords":false,"widget_gdpr_statement":"Wie wir Ihre Daten verwenden: Wir kontaktieren Sie nur bezüglich der von Ihnen abgegebenen Bewertung und nur, wenn nötig. Durch das Absenden Ihrer Bewertung stimmen Sie den \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eNutzungsbedingungen\u003c/a\u003e, der \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eDatenschutzrichtlinie\u003c/a\u003e und den \u003ca href='https://judge.me/content-policy' target='_blank' rel='nofollow noopener'\u003eInhaltsrichtlinien\u003c/a\u003e von Judge.me zu.","widget_multilingual_sorting_enabled":false,"widget_translate_review_content_enabled":false,"widget_translate_review_content_method":"manual","popup_widget_review_selection":"automatically_with_pictures","popup_widget_round_border_style":true,"popup_widget_show_title":true,"popup_widget_show_body":true,"popup_widget_show_reviewer":false,"popup_widget_show_product":true,"popup_widget_show_pictures":true,"popup_widget_use_review_picture":true,"popup_widget_show_on_home_page":true,"popup_widget_show_on_product_page":true,"popup_widget_show_on_collection_page":true,"popup_widget_show_on_cart_page":true,"popup_widget_position":"bottom_left","popup_widget_first_review_delay":5,"popup_widget_duration":5,"popup_widget_interval":5,"popup_widget_review_count":5,"popup_widget_hide_on_mobile":true,"review_snippet_widget_round_border_style":true,"review_snippet_widget_card_color":"#FFFFFF","review_snippet_widget_text_color":"#000000","review_snippet_widget_lighter_text_color":"#7B7B7B","review_snippet_widget_slider_arrows_background_color":"#FFFFFF","review_snippet_widget_slider_arrows_color":"#000000","review_snippet_widget_star_color":"#108474","show_product_variant":false,"all_reviews_product_variant_label_text":"Variante: ","widget_show_verified_branding":true,"widget_ai_summary_title":"Kunden sagen","widget_ai_summary_disclaimer":"KI-gestützte Bewertungszusammenfassung basierend auf aktuellen Kundenbewertungen","widget_show_ai_summary":false,"widget_show_ai_summary_bg":false,"write_review_button_visibility":"everyone","store_summary_widget_heading":"Kunden bewerten die
528sen Shop","store_summary_widget_button_text":"Kundenbewertungen ansehen","store_summary_widget_button_theme_text":"KI-Bewertungszusammenfassung ansehen","widget_show_review_title_input":false,"widget_autofill_review_title":true,"redirect_reviewers_invited_via_email":"external_form","request_store_review_after_product_review":false,"request_review_other_products_in_order":false,"review_form_color_scheme":"default","review_form_corner_style":"square","review_form_star_color":"#108474","review_form_text_color":"#333333","review_form_background_color":"#ffffff","review_form_field_background_color":"#fafafa","review_form_button_color":"#108474","review_form_button_text_color":"#ffffff","review_form_modal_overlay_color":"#000000","review_form_theme":"multi_step","review_form_location":"in_store_popup","review_form_external_page_background_color":"#C5F7F0","review_content_screen_title_text":"Wie würden Sie dieses Produkt bewerten?","review_content_introduction_text":"Wir würden uns freuen, wenn Sie etwas über Ihre Erfahrung teilen würden.","store_review_form_title_text":"Wie würden Sie diesen Shop bewerten?","store_review_form_introduction_text":"Wir würden uns freuen, wenn Sie etwas über Ihre Erfahrung teilen würden.","show_review_guidance_text":true,"one_star_review_guidance_text":"Schlecht","five_star_review_guidance_text":"Großartig","customer_information_screen_title_text":"Über Sie","customer_information_introduction_text":"Bitte teilen Sie uns mehr über sich mit.","custom_questions_screen_title_text":"Ihre Erfahrung im Detail","custom_questions_introduction_text":"Hier sind einige Fragen, die uns helfen, mehr über Ihre Erfahrung zu verstehen.","review_submitted_screen_title_text":"Vielen Dank für Ihre Bewertung!","review_submitted_screen_thank_you_text":"Wir verarbeiten sie und sie wird bald im Shop erscheinen.","review_submitted_screen_email_verification_text":"Bitte bestätigen Sie Ihre E-Mail-Adresse, indem Sie auf den Link klicken, den wir Ihnen gerade gesendet haben. Dies hilft uns, die Bewertungen authentisch zu halten.","confirm_email_screen_title_text":"Bestätigen Sie Ihre E-Mail","confirm_email_screen_message_text":"Um Bewertungen authentisch zu halten, senden wir Ihnen einen sicheren Link zum Weiterschreiben Ihrer Bewertung. Es dauert nur einen Moment.","check_email_screen_title_text":"Überprüfen Sie Ihre E-Mail","check_email_screen_message_text":"Wir haben Ihnen eine E-Mail an {{ email }} gesendet. Klicken Sie auf die Schaltfläche in der E-Mail, um fortzufahren.","check_email_screen_resend_message_text":"E-Mail erneut gesendet!","check_email_resend_hint_text":"E-Mail nicht erhalten? Überprüfen Sie Ihren Spam-Ordner oder [senden Sie die E-Mail erneut].","verification_email_rate_limit_error_text":"Sie haben das Limit für Bewertungsversuche für dieses Produkt erreicht. Bitte überprüfen Sie Ihren Posteingang oder versuchen Sie es später erneut.","review_submitted_request_store_review_text":"Möchten Sie Ihre Erfahrung beim Einkaufen bei uns teilen?","review_submitted_review_other_products_text":"Möchten Sie diese Produkte bewerten?","store_review_screen_title_text":"Möchten Sie Ihre Erfahrung mit uns teilen?","store_review_introduction_text":"Wir würden uns freuen, wenn Sie etwas über Ihre Erfahrung teilen würden.","reviewer_media_screen_title_picture_text":"Bild teilen","reviewer_media_introduction_picture_text":"Laden Sie ein Foto hoch, um Ihre Bewertung zu unterstützen.","reviewer_media_screen_title_video_text":"Video teilen","reviewer_media_introduction_video_text":"Laden Sie ein Video hoch, um Ihre Bewertung zu unterstützen.","reviewer_media_screen_title_picture_or_video_text":"Bild oder Video teilen","reviewer_media_introduction_picture_or_video_text":"Laden Sie ein Foto oder Video hoch, um Ihre Bewertung zu unterstützen.","reviewer_media_youtube_url_text":"Fügen Sie hier Ihre Youtube-URL ein","advanced_settings_next_step_button_text":"Weiter","advanced_settings_close_review_button_text":"Schließen","modal_write_review_flow":true,"write_review_flow_required_text":"Erforderlich","write_review_flow_privacy_message_text":"Wir respektieren Ihre Privatsphäre.","write_review_flow_anonymous_text":"Be
528wertung als anonym","write_review_flow_visibility_text":"Dies wird nicht für andere Kunden sichtbar sein.","write_review_flow_multiple_selection_help_text":"Wählen Sie so viele aus, wie Sie möchten","write_review_flow_single_selection_help_text":"Wählen Sie eine Option","write_review_flow_required_field_error_text":"Dieses Feld ist erforderlich","write_review_flow_invalid_email_error_text":"Bitte geben Sie eine gültige E-Mail-Adresse ein","write_review_flow_max_length_error_text":"Max. {{ max_length }} Zeichen.","write_review_flow_media_upload_text":"\u003cb\u003eZum Hochladen klicken\u003c/b\u003e oder ziehen und ablegen","write_review_flow_gdpr_statement":"Wir kontaktieren Sie nur bei Bedarf bezüglich Ihrer Bewertung. Mit dem Absenden Ihrer Bewertung stimmen Sie unseren \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eGeschäftsbedingungen\u003c/a\u003e und unserer \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eDatenschutzrichtlinie\u003c/a\u003e zu.","rating_only_reviews_enabled":false,"show_negative_reviews_help_screen":false,"new_review_flow_help_screen_rating_threshold":3,"negative_review_resolution_screen_title_text":"Erzählen Sie uns mehr","negative_review_resolution_text":"Ihre Erfahrung ist uns wichtig. Falls es Probleme mit Ihrem Kauf gab, sind wir hier, um zu helfen. Zögern Sie nicht, uns zu kontaktieren, wir würden gerne die Gelegenheit haben, die Dinge zu korrigieren.","negative_review_resolution_button_text":"Kontaktieren Sie uns","negative_review_resolution_proceed_with_review_text":"Hinterlassen Sie eine Bewertung","negative_review_resolution_subject":"Problem mit dem Kauf von {{ shop_name }}.{{ order_name }}","coupon_promo_intro_any_review_text":"Schreiben Sie eine Bewertung und erhalten Sie einen Gutschein über {{ amount }} Rabatt auf Ihren nächsten Einkauf","coupon_promo_intro_with_photo_text":"Schreiben Sie eine Bewertung und fügen Sie ein Foto oder Video hinzu, um einen Gutschein über {{ amount }} Rabatt auf Ihren nächsten Einkauf zu erhalten","coupon_promo_intro_with_video_text":"Schreiben Sie eine Bewertung und fügen Sie ein Video hinzu, um einen Gutschein über {{ amount }} Rabatt auf Ihren nächsten Einkauf zu erhalten","coupon_promo_intro_up_to_any_review_text":"Schreiben Sie eine Bewertung und erhalten Sie einen Gutschein über bis zu {{ amount }} Rabatt auf Ihren nächsten Einkauf","coupon_promo_intro_up_to_with_photo_text":"Schreiben Sie eine Bewertung und fügen Sie ein Foto oder Video hinzu, um einen Gutschein über bis zu {{ amount }} Rabatt auf Ihren nächsten Einkauf zu erhalten","coupon_promo_intro_external_text":"Schreiben Sie eine Bewertung und erhalten Sie eine Belohnung für Ihren nächsten Einkauf","coupon_promo_intro_external_with_photo_text":"Schreiben Sie eine Bewertung und fügen Sie ein Foto oder Video hinzu, um eine Belohnung für Ihren nächsten Einkauf zu erhalten","coupon_promo_intro_external_with_video_text":"Schreiben Sie eine Bewertung und fügen Sie ein Video hinzu, um eine Belohnung für Ihren nächsten Einkauf zu erhalten","coupon_promo_media_photo_text":"Fügen Sie ein Foto oder Video hinzu und erhalten Sie einen Gutschein über {{ amount }} Rabatt auf Ihren nächsten Einkauf","coupon_promo_media_photo_only_text":"Fügen Sie ein Foto hinzu und erhalten Sie einen Gutschein über {{ amount }} Rabatt auf Ihren nächsten Einkauf","coupon_promo_media_video_text":"Fügen Sie ein Video hinzu und erhalten Sie einen Gutschein über {{ amount }} Rabatt auf Ihren nächsten Einkauf","coupon_promo_media_external_photo_text":"Fügen Sie ein Foto oder Video hinzu und erhalten Sie eine Belohnung für Ihren nächsten Einkauf","coupon_promo_media_external_photo_only_text":"Fügen Sie ein Foto hinzu und erhalten Sie eine Belohnung für Ihren nächsten Einkauf","coupon_promo_media_external_video_text":"Fügen Sie ein Video hinzu und erhalten Sie eine Belohnung für Ihren nächsten Einkauf","coupon_promo_success_text":"Sie haben einen Gutschein für Ihren nächsten Einkauf bei {{ shop_name }} erhalten!","coupon_promo_success_subtext":"Sie erhalten Ihre Gutschein-E-Mail innerhalb einer Stunde.","preview_badge_collection_page_install_status":false,"widget_review_custom_css":"","preview_badge_custom_css":"","preview_badge_stars_count":"5-stars","featured_carousel_custom_css":"","floating_tab_custom_css":"","all_reviews_widget_custom_css":"","medals_widget_custom_css":"","verified_badge_custom_css":"","all_reviews_text_custom_css":"","transparency_badges_collected_via_store_invite":false,"transparency_badges_from_another_provider":false,"transparency_badges_collected_from_store_visitor":false,"transparency_badges_collected_by_verified_review_provider":true,"transparency_badges_earned_reward":false,"transparency_badges_collected_via_store_invite_text":"Be
528wertung gesammelt durch eine Einladung zum Shop","transparency_badges_from_another_provider_text":"Bewertung gesammelt von einem anderen Anbieter","transparency_badges_collected_from_store_visitor_text":"Bewertung gesammelt von einem Shop-Besucher","transparency_badges_written_in_google_text":"Bewertung in Google geschrieben","transparency_badges_written_in_etsy_text":"Bewertung in Etsy geschrieben","transparency_badges_written_in_shop_app_text":"Bewertung in Shop App geschrieben","transparency_badges_earned_reward_text":"Bewertung erhielt eine Belohnung für zukünftige Bestellungen","product_review_widget_per_page":10,"widget_other_languages_reviews_per_page":3,"widget_store_review_label_text":"Shop-Bewertung","widget_cart_mode_aggregate_heading_text":"Kunden bewerten diesen Shop","checkout_comment_extension_title_on_product_page":"Customer Comments","checkout_comment_extension_num_latest_comment_show":5,"checkout_comment_extension_format":"name_and_timestamp","checkout_comment_customer_name":"last_initial","checkout_comment_comment_notification":true,"preview_badge_collection_page_install_preference":false,"preview_badge_home_page_install_preference":false,"preview_badge_product_page_install_preference":false,"review_widget_install_preference":"","review_carousel_install_preference":false,"floating_reviews_tab_install_preference":"none","verified_reviews_count_badge_install_preference":false,"all_reviews_text_install_preference":false,"review_widget_best_location":false,"judgeme_medals_install_preference":false,"review_widget_revamp_enabled":false,"review_widget_qna_enabled":false,"review_widget_header_theme":"minimal","review_widget_widget_title_enabled":true,"review_widget_header_text_size":"medium","review_widget_header_text_weight":"regular","review_widget_average_rating_style":"compact","review_widget_bar_chart_enabled":true,"review_widget_bar_chart_type":"numbers","review_widget_bar_chart_style":"standard","review_widget_expanded_media_gallery_enabled":false,"review_widget_show_review_highlights":false,"review_widget_show_review_keywords_in_gray":false,"review_widget_reviews_section_theme":"standard","review_widget_image_style":"thumbnails","review_widget_review_image_ratio":"square","review_widget_stars_size":"medium","review_widget_verified_badge":"standard_text","review_widget_review_title_text_size":"medium","review_widget_review_text_size":"medium","review_widget_review_text_length":"medium","review_widget_number_of_columns_desktop":3,"review_widget_carousel_transition_speed":5,"review_widget_custom_questions_answers_display":"always","review_widget_card_section_size":"small","review_widget_button_text_color":"#FFFFFF","review_widget_text_color":"#000000","review_widget_lighter_text_color":"#7B7B7B","review_widget_corner_styling":"soft","review_widget_review_word_singular":"Bewertung","review_widget_review_word_plural":"Bewertungen","review_widget_voting_label":"Hilfreich?","review_widget_shop_reply_label":"Antwort von {{ shop_name }}:","review_widget_filters_title":"Filter","review_widget_filter_rating_title":"Bewertung","review_widget_filter_keyword_title":"Stichwort","review_widget_clear_filters_text":"Filter löschen","review_widget_expand_more_text":"Mehr","review_widget_review_highlights_title":"Bewertungs-Highlights","qna_widget_question_word_singular":"Frage","qna_widget_question_word_plural":"Fragen","qna_widget_answer_reply_label":"Antwort von {{ answerer_name }}:","qna_content_screen_title_text":"Frage dieses Produkts stellen","qna_widget_question_required_field_error_text":"Bitte geben Sie Ihre Frage ein.","qna_widget_flow_gdpr_statement":"Wir kontaktieren Sie nur bei Bedarf bezüglich Ihrer Frage. Mit dem Absenden Ihrer Frage stimmen Sie unseren \u003ca href='https://judge.me/terms' target='_blank' rel='nofollow noopener'\u003eGeschäftsbedingungen\u003c/a\u003e und unserer \u003ca href='https://judge.me/privacy' target='_blank' rel='nofollow noopener'\u003eDatenschutzrichtlinie\u003c/a\u003e zu.","qna_widget_question_submitted_text":"Danke für Ihre Frage!","qna_widget_close_form_text_question":"Schließen","qna_widget_question_submit_success_text":"Wir werden Ihnen per E-Mail informieren, wenn wir Ihre Frage beantworten.","all_reviews_widget_v2025_enabled":false,"all_reviews_widget_v2025_header_theme":"default","all_reviews_widget_v2025_widget_title_enabled":true,"all_reviews_widget_v2025_header_text_size":"medium","all_reviews_widget_v2025_header_text_weight":"regular","all_reviews_widget_v2025_average_rating_style":"compact","all_reviews_widget_v2025_bar_chart_enabled":true,"all_reviews_widget_v2025_bar_chart_type":"numbers","all_reviews_widget_v2025_bar_chart_style":"standard","all_reviews_widget_v2025_expanded_media_gallery_enabled":false,"all_reviews_widget_v2025_show_store_medals":true,"all_reviews_widget_v2025_show_photo_gallery":true,"all_reviews_widget_v2025_show_review_keywords":false,"all_reviews_widget_v2025_show_ai_summary":false,"all_reviews_widget_v2025_show_ai_summary_bg":false,"all_reviews_widget_v2025_show_review_highlights":false,"all_reviews_widget_v2025_show_review_keywords_in_gray":false,"all_reviews_widget_v2025_add_search_bar":false,"all_reviews_widget_v2025_default_sort_method":"most-recent","all_reviews_widget_v2025_reviews_per_page":10,"all_reviews_widget_v2025_reviews_section_theme":"default","all_reviews_widget_v2025_image_style":"thumbnails","all_reviews_widget_v2025_review_image_ratio":"square","all_reviews_widget_v2025_stars_size":"medium","all_reviews_widget_v2025_verified_badge":"standard_text","all_reviews_widget_v2025_review_title_text_size":"medium","all_reviews_widget_v2025_review_text_size":"medium","all_reviews_widget_v2025_review_text_length":"medium","all_reviews_widget_v2025_
528number_of_columns_desktop":3,"all_reviews_widget_v2025_carousel_transition_speed":5,"all_reviews_widget_v2025_custom_questions_answers_display":"always","all_reviews_widget_v2025_review_dates":false,"all_reviews_widget_v2025_card_section_size":"small","all_reviews_widget_v2025_show_product_variant":false,"all_reviews_widget_v2025_show_reviewer_avatar":true,"all_reviews_widget_v2025_reviewer_name_as_initial":"","all_reviews_widget_v2025_review_location_show":false,"all_reviews_widget_v2025_location_format":"","all_reviews_widget_v2025_show_country_flag":false,"all_reviews_widget_v2025_widget_thumb":false,"all_reviews_widget_v2025_verified_by_shop_badge_style":"light","all_reviews_widget_v2025_social_share":false,"all_reviews_widget_v2025_social_share_options_order":"Facebook,Twitter,LinkedIn,Pinterest","all_reviews_widget_v2025_pagination_type":"standard","all_reviews_widget_v2025_button_text_color":"#FFFFFF","all_reviews_widget_v2025_text_color":"#000000","all_reviews_widget_v2025_lighter_text_color":"#7B7B7B","all_reviews_widget_v2025_corner_styling":"soft","all_reviews_widget_v2025_title":"Kundenbewertungen","all_reviews_widget_v2025_ai_summary_title":"Kunden sagen über diesen Shop","all_reviews_widget_v2025_no_review_text":"Schreiben Sie die erste Bewertung","all_reviews_widget_v2025_review_highlights_title":"Bewertungs-Highlights","reviews_grid_widget_show_sample_reviews":false,"reviews_grid_widget_review_selection":"all","reviews_grid_widget_select_products":[],"reviews_grid_widget_show_media_only":false,"reviews_grid_widget_display_order":"media_first","reviews_grid_widget_card_grouping":"per_media","reviews_grid_widget_columns_desktop":3,"reviews_grid_widget_rows_desktop":3,"reviews_grid_widget_columns_mobile":2,"reviews_grid_widget_rows_mobile":6,"reviews_grid_widget_show_stars":true,"reviews_grid_widget_show_reviewer_name":true,"reviews_grid_widget_show_review_title_on_hover_desktop":true,"reviews_grid_widget_corner_styling":"soft","reviews_grid_widget_card_spacing":"medium","reviews_grid_widget_header_text_color":"#000000","reviews_grid_widget_star_and_reviewer_name_color":"#F9F9F9","reviews_grid_widget_overlay_and_background_color":"#000000","reviews_grid_widget_content_color":"#F9F9F9","reviews_grid_widget_header_text":"Von unseren Kunden","reviews_grid_widget_show_average_rating":true,"trust_badge_enabled":false,"trust_badge_structure":"outline","trust_badge_color":"black","trust_badge_star":"black","trust_badge_rating_display_default":"show_avg_text","platform":"shopify","branding_url":"https://app.judge.me/reviews","branding_text":"Unterstützt von Judge.me","locale":"en","reply_name":"odiporo.de - Smarte Elektronik für jeden Anspruch","shop_currency":"EUR","widget_version":"3.0","footer":true,"autopublish":false,"review_dates":true,"enable_custom_form":false,"shop_locale":"de","enable_multi_locales_translations":false,"show_review_title_input":false,"autofill_review_title":true,"review_verification_email_status":"always","require_verification_before_submit":false,"sign_in_with_shop_enabled":false,"customer_account_validation_enabled":true,"most_relevant_sort_enabled":false,"coupon_promo_invited_eligible":true,"coupon_promo_web_eligible":false,"uses_coupon_integration":false,"uses_external_coupon":false,"can_be_branded":false,"rtl_stars_enabled_ar":true,"rtl_stars_enabled_he":true,"reply_name_text":"odiporo.de - Smarte Elektronik für jeden Anspruch"};</script>
528 <style class='jdgm-settings-style'>.jdgm-xx{left:0}:root{--jdgm-primary-color: #108474;--jdgm-secondary-color: rgba(16,132,116,0.1);--jdgm-star-color: #108474;--jdgm-write-review-text-color: white;--jdgm-write-review-bg-color: #108474;--jdgm-paginate-color: #108474;--jdgm-border-radius: 0;--jdgm-reviewer-name-color: #108474}.jdgm-histogram__bar-content{background-color:#108474}.jdgm-rev[data-verified-buyer=true] .jdgm-rev__icon.jdgm-rev__icon:after,.jdgm-rev__buyer-badge.jdgm-rev__buyer-badge{color:white;background-color:#108474}.jdgm-review-widget--small .jdgm-gallery.jdgm-gallery .jdgm-gallery__thumbnail-link:nth-child(8) .jdgm-gallery__thumbnail-wrapper.jdgm-gallery__thumbnail-wrapper:before{content:"Mehr sehen"}@media only screen and (min-width: 768px){.jdgm-gallery.jdgm-gallery .jdgm-gallery__thumbnail-link:nth-child(8) .jdgm-gallery__thumbnail-wrapper.jdgm-gallery__thumbnail-wrapper:before{content:"Mehr sehen"}}.jdgm-prev-badge[data-average-rating='0.00']{display:none !important}.jdgm-author-all-initials{display:none !important}.jdgm-author-last-initial{display:none !important}.jdgm-rev-widg__title{visibility:hidden}.jdgm-rev-widg__summary-text{visibility:hidden}.jdgm-prev-badge__text{visibility:hidden}.jdgm-rev__prod-link-prefix:before{content:'über'}.jdgm-rev__variant-label:before{content:'Variante: '}.jdgm-rev__out-of-store-text:before{content:'(außerhalb des Shops)'}@media only screen and (min-width: 768px){.jdgm-rev__pics .jdgm-rev_all-rev-page-picture-separator,.jdgm-rev__pics .jdgm-rev__product-picture{display:none}}@media only screen and (max-width: 768px){.jdgm-rev__pics .jdgm-rev_all-rev-page-picture-separator,.jdgm-rev__pics .jdgm-rev__product-picture{display:none}}.jdgm-preview-badge[data-template="product"]{display:none !important}.jdgm-preview-badge[data-template="collection"]{display:none !important}.jdgm-preview-badge[data-template="index"]{display:none !important}.jdgm-review-widget[data-from-snippet="true"]{display:none !important}.jdgm-verified-count-badget[data-from-snippet="true"]{display:none !important}.jdgm-carousel-wrapper[data-from-snippet="true"]{display:none !important}.jdgm-all-reviews-text[data-from-snippet="true"]{display:none !important}.jdgm-medals-section[data-from-snippet="true"]{display:none !important}.jdgm-ugc-media-wrapper[data-from-snippet="true"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_collected_via_store_invitation"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_collected_from_another_provider"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_collected_from_store_visitor"]{display:none !important}.jdgm-rev__transparency-badge[data-badge-type="review_earned_for_future_purchase"]{display:none !important}.jdgm-review-snippet-widget{--jdgm-snippet-card-color: #fff;--jdgm-snippet-text-color: #000;--jdgm-snippet-lighter-text-color: #7B7B7B;--jdgm-snippet-star-color: #108474;--jdgm-snippet-border-radius: 8px;--jdgm-snippet-arrows-bg-color: #fff;--jdgm-snippet-arrows-color: #000}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__cards-container .jdgm-rev-snippet-card{border-radius:8px;background:#fff}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__cards-container .jdgm-rev-snippet-card__rev-rating .jdgm-star{color:#108474}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__prev-btn,.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__next-btn{border-radius:50%;background:#fff}.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__prev-btn>svg,.jdgm-review-snippet-widget .jdgm-rev-snippet-widget__next-btn>svg{fill:#000}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jm-mfp-content,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__icon,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__pic-img,.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev__reply{border-radius:8px}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev[data-verified-buyer="true"] .jdgm-full-rev__icon::after{border-radius:8px}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-rev__buyer-badge{border-radius:calc( 8px / 2 )}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-full-rev__replier::before{content:'odiporo.de - Smarte Elektronik für jeden Anspruch'}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-full-rev__product-button{border-radius:calc( 8px * 6 )}
529</style> <style class='jdgm-settings-style'></style>
530
531  
532  
533  
534  <style class='jdgm-miracle-styles'>
535  @-webkit-keyframes jdgm-spin{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes jdgm-spin{0%{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);-ms-transform:rotate(359deg);transform:rotate(359deg)}}@font-face{font-family:'JudgemeStar';src:url("data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAAScAA0AAAAABrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAEgAAAABoAAAAcbyQ+3kdERUYAAARgAAAAHgAAACAAMwAGT1MvMgAAAZgAAABGAAAAVi+vS9xjbWFwAAAB8AAAAEAAAAFKwBMjvmdhc3AAAARYAAAACAAAAAj//wADZ2x5ZgAAAkAAAAEJAAABdH33LXtoZWFkAAABMAAAAC0AAAA2BroQKWhoZWEAAAFgAAAAHAAAACQD5QHQaG10eAAAAeAAAAAPAAAAFAYAAABsb2NhAAACMAAAAA4AAAAOAO4AeG1heHAAAAF8AAAAHAAAACAASgAvbmFtZQAAA0wAAADeAAABkorWfVZwb3N0AAAELAAAACkAAABEp3ubLXgBY2BkYADhPPP4OfH8Nl8ZuJkYQODS2fRrCPr/aSYGxq1ALgcDWBoAO60LkwAAAHgBY2BkYGDc+v80gx4TAwgASaAICmABAFB+Arl4AWNgZGBgYGPQYWBiAAIwyQgWc2AAAwAHVQB6eAFjYGRiYJzAwMrAwejDmMbAwOAOpb8ySDK0MDAwMbByMsCBAAMCBKS5pjA4PGB4wMR44P8BBj3GrQymQGFGkBwAjtgK
535/gAAeAFjYoAAEA1jAwAAZAAHAHgB3crBCcAwDEPRZydkih567CDdf4ZskmLwFBV8xBfCaC4BXkOUmx4sU0h2ngNb9V0vQCxaRKIAevT7fGWuBrEAAAAAAAAAAAA0AHgAugAAeAF9z79Kw1AUx/FzTm7un6QmJtwmQ5Bg1abgEGr/BAqlU6Gju+Cgg1MkQ/sA7Vj7BOnmO/gUvo2Lo14NqIO6/IazfD8HEODtmQCfoANwNsyp2/GJt3WKQrd1NLiYYWx2PBqOsmJMEOznPOTzfSCrhAtbbLdmeFLJV9eKd63WLrZcIcuaEVdssWCKM6pLCfTVOYbz/0pNSMSZKLIZpvh78sAUH6PlMrreTCabP9r+Z/puPZ2ur/RqpQHgh+MIegCnXeM4MRAPjYN//5tj4ZtTjkFqEdmeMShlEJ7tVAly2TAkx6R68Fl4E/aVvn8JqHFQ4JS1434gXKcuL31dDhzs3YbsEOAd/IU88gAAAHgBfY4xTgMxEEVfkk0AgRCioKFxQYd2ZRtpixxgRU2RfhU5q5VWseQ4JdfgAJyBlmNwAM7ABRhZQ0ORwp7nr+eZAa54YwYg9zm3ynPOeFRe8MCrciXOh/KSS76UV5L/iDmrLiS5AeU519wrL3jmSbkS5115yR2fyivJv9kx0ZMZ2RLZw27q87iNQi8EBo5FSPIMw3HqBboi5lKTGAGDp8FKXWP+t9TU01Lj5His1Ba6uM9dTEMwvrFmbf5GC/q2drW3ruXUhhsCiQOjznFlCzYhHUZp4xp76vsvQh89CQAAeAFjYGJABowM6IANLMrEyMTIzMjCXpyRWJBqZshWXJJYBKOMAFHFBucAAAAAAAAB//8AAngBY2BkYGDgA2IJBhBgAvKZGViBJAuYxwAABJsAOgAAeAFjYGBgZACCk535hiD60tn0azAaAEqpB6wAAA==") format("woff");font-weight:normal;font-style:normal}.jdgm-star{font-family:'JudgemeStar';display:inline !important;text-decoration:none !important;padding:0 4px 0 0 !important;margin:0 !important;font-weight:bold;opacity:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.jdgm-star:hover{opacity:1}.jdgm-star:last-of-type{padding:0 !important}.jdgm-star.jdgm--on:before{content:"\e000"}.jdgm-star.jdgm--off:before{content:"\e001"}.jdgm-star.jdgm--half:before{content:"\e002"}.jdgm-widget *{margin:0;line-height:1.4;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch}.jdgm-hidden{display:none !important;visibility:hidden !important}.jdgm-temp-hidden{display:none}.jdgm-spinner{width:40px;height:40px;margin:auto;border-radius:50%;border-top:2px solid #eee;border-right:2px solid #eee;border-bottom:2px solid #eee;border-left:2px solid #ccc;-webkit-animation:jdgm-spin 0.8s infinite linear;animation:jdgm-spin 0.8s infinite linear}.jdgm-spinner:empty{display:block}.jdgm-prev-badge{display:block !important}
536
537</style>
538
539
540  
541  
542   
543
544
545
546
547<script data-cfasync='false' class='jdgm-script'>
548!function(e){window.jdgm=window.jdgm||{};
549/* INF-1976 */
550var _jdgmBlocked=function(){var raw=(window.jdgmSettings||{}).hostname_allowlist;var list=(raw==null?"":""+raw).split(/[\s,]+/).map(function(h){return h.trim().toLowerCase().replace(/\.$/,"");}).filter(function(h){return h;});if(!list.length)return false;var host=(e.location.hostname||"").toLowerCase().replace(/\.$/,"");if(/(^|\.)shopifypreview\.com$/.test(host))return false;var bare=host.replace(/^www\./,"");for(var i=0;i<list.length;i++){var en=list[i];if(en.indexOf("*.")===0){var b=en.slice(2);if(host===b||host.slice(-(b.length+1))==="."+b)return false;}else if(bare===en.replace(/^www\./,""))return false;}return true;}();
551if(_jdgmBlocked){jdgm._loaderExecuted=true;jdgm._blocked=true;var _jdgmS=e.createElement("style");_jdgmS.textContent='[class^="jdgm-"],[class*=" jdgm-"]{display:none !important}';(e.head||e.documentElement).appendChild(_jdgmS);return;}
552jdgm.CDN_HOST="https://cdnwidget.judge.me/",jdgm.CDN_HOST_ALT="https://cdn2.judge.me/cdn/widget_frontend/",jdgm.API_HOST="https://api.judge.me/",jdgm.CDN_BASE_URL="https://cdn.shopify.com/extensions/01a0fd03-c455-7b82-9766-74101e55572c/judgeme-771/assets/",jdgm.CDN_API_HOST="https://cdn.judge.me/",
553jdgm.docReady=function(d){(e.attachEvent?"complete"===e.readyState:"loading"!==e.readyState)?
554setTimeout(d,0):e.addEventListener("DOMContentLoaded",d)},jdgm.loadCSS=function(d,t,o,a){
555!o&&jdgm.loadCSS.requestedUrls.indexOf(d)>=0||(jdgm.loadCSS.requestedUrls.push(d),
556(a=e.createElement("link")).rel="stylesheet",a.class="jdgm-stylesheet",a.media="nope!",
557a.href=d,a.onload=function(){this.media="all",t&&setTimeout(t)},e.body.appendChild(a))},
558jdgm.loadCSS.requestedUrls=[],jdgm.loadJS=function(e,d){var t=new XMLHttpRequest;
559t.onreadystatechange=function(){4===t.readyState&&t.status>=200&&t.status<300&&(Function(t.response)(),d&&d(t.response))},
560t.open("GET",e),t.onerror=function(){if(e.indexOf(jdgm.CDN_HOST)===0&&jdgm.CDN_HOST_ALT!==jdgm.CDN_HOST){var f=e.replace(jdgm.CDN_HOST,jdgm.CDN_HOST_ALT);jdgm.loadJS(f,d)}},t.send()},jdgm.docReady((function(){(window.jdgmLoadCSS||e.querySelectorAll(
561".jdgm-widget, .jdgm-all-reviews-page").length>0)&&(jdgmSettings.widget_load_with_code_splitting?
562parseFloat(jdgmSettings.widget_version)>=3?jdgm.loadCSS(jdgm.CDN_BASE_URL+"widget_v3_base.css"):
563jdgm.loadCSS(jdgm.CDN_BASE_URL+"widget_base.css"):jdgm.loadCSS(jdgm.CDN_BASE_URL+"shopify_v2.css")
564)}))}(document);
565</script>
565
566<noscript><link rel="stylesheet" type="text/css" media="all" href="https://cdn.shopify.com/extensions/01a0fd03-c455-7b82-9766-74101e55572c/judgeme-771/assets/shopify_v2.css"></noscript>
567
568<!-- BEGIN app snippet: theme_fix_tags -->
568<script>
569  (function() {
570    var jdgmThemeFixes = null;
571    if (!jdgmThemeFixes) return;
572
573    // "All themes" fix: CSS and JS applied on every theme. CSS is injected
574    // before the per-theme fix so the theme-specific CSS wins the cascade.
575    // HTML is never applied globally (too risky).
576    var allThemesFix = jdgmThemeFixes['all'];
577    if (allThemesFix && allThemesFix.css) {
578      var allStyleTag = document.createElement('style');
579      allStyleTag.classList.add('jdgm-theme-fix-style-all');
580      allStyleTag.innerHTML = allThemesFix.css;
581      document.head.append(allStyleTag);
582    };
583
584    if (allThemesFix && allThemesFix.js) {
585      var allScriptTag = document.createElement('script');
586      allScriptTag.classList.add('jdgm-theme-fix-script-all');
587      allScriptTag.innerHTML = allThemesFix.js;
588      document.head.append(allScriptTag);
589    };
590
591    var thisThemeFix = jdgmThemeFixes[Shopify.theme.id];
592    if (!thisThemeFix) return;
593
594    if (thisThemeFix.html) {
595      document.addEventListener("DOMContentLoaded", function() {
596        var htmlDiv = document.createElement('div');
597        htmlDiv.classList.add('jdgm-theme-fix-html');
598        htmlDiv.innerHTML = thisThemeFix.html;
599        document.body.append(htmlDiv);
600      });
601    };
602
603    if (thisThemeFix.css) {
604      var styleTag = document.createElement('style');
605      styleTag.classList.add('jdgm-theme-fix-style');
606      styleTag.innerHTML = thisThemeFix.css;
607      document.head.append(styleTag);
608    };
609
610    if (thisThemeFix.js) {
611      var scriptTag = document.createElement('script');
612      scriptTag.classList.add('jdgm-theme-fix-script');
613      scriptTag.innerHTML = thisThemeFix.js;
614      document.head.append(scriptTag);
615    };
616  })();
617</script>
617
618<!-- END app snippet -->
619<!-- End of Judge.me Core -->
620
621
622
623<!-- END app block --><!-- BEGIN app block: shopify://apps/ta-labels-badges/blocks/bss-pl-config-data/91bfe765-b604-49a1-805e-3599fa600b24 -->
623<script
624    id='bss-pl-config-data'
625	data-nosnippet
626>
627	let TAE_StoreId = "66168";
628	if (typeof BSS_PL == 'undefined' || TAE_StoreId !== "") {
629  		var BSS_PL = {};
630		BSS_PL.storeId = 66168;
631		BSS_PL.currentPlan = "free";
632		BSS_PL.apiServerProduction = "https://product-labels.tech-arms.io";
633		BSS_PL.publicAccessToken = "69fb7e281c40886d881224d0ab04299c";
634		BSS_PL.customerTags = "null";
635		BSS_PL.customerId = "null";
636		BSS_PL.storeIdCustomOld = 10678;
637		BSS_PL.storeIdOldWIthPriority = 12200;
638		BSS_PL.storeIdOptimizeAppendLabel = 59637
639		BSS_PL.optimizeCodeIds = null; 
640		BSS_PL.extendedFeatureIds = null;
641		BSS_PL.watermarkRemoved = null;
642		BSS_PL.watermarkGoliveConfigId = 747;
643		BSS_PL.watermarkUrl = "https://cdn.shopify.com/extensions/01a0fb6d-171d-712b-8764-40c957e243dd/version_06d0a5c3-2026-10-02_14h03m/assets/bss-pl-watermark.png";
644		BSS_PL.integration = {"laiReview":{"status":0,"config":[]}} || {};
645		BSS_PL.settingsData  = {} || {};
646		BSS_PL.configProductMetafields = [] || [];
647		BSS_PL.configVariantMetafields = [] || [];
648		
649		BSS_PL.configData = [].concat();
650
651		
652		BSS_PL.configDataBanner = [].concat();
653
654		
655		BSS_PL.configDataPopup = [].concat();
656
657		
658		BSS_PL.configDataLabelGroup = [].concat();
659		
660		
661		BSS_PL.collectionID = ``;
662		BSS_PL.collectionHandle = ``;
663		BSS_PL.collectionTitle = ``;
664
665		
666		BSS_PL.conditionConfigData = [].concat();
667	}
668</script>
668
669
670
671
672    
672<script id='fixBugForStore66168' data-nosnippet>
673		
674function bssFixSupportProductParent($, page, parents, itemHandle) {
675    return parents.filter(function () {
676        return !(
677            // $(this).is(".card-grid .card .product-card__media") ||
678            $(this).is(".product__thumbnail") ||
679            $(this).is("figure.media.media--transparent") ||
680            $(this).is(".product-sticky-form__variant .media") ||
681            $(this).is(".dynamic-image-wrapper picture") ||
682            $(this).is(".rte") ||
683            $(this).is(".rte .brand-logo-snippet > a") ||
684            $(this).is(".product-form-wrapper ~ .flex.justify-between.items-center .items-center") ||
685            $(this).is(".footer__logo > a") ||
686            $(this).is("cart-drawer .horizontal-product__media")
687        );
688    });    
689}
690
691function bssFixSupportAppendHtmlLabel($, BSS_PL, parent, page, htmlLabel) {
692  let appended = false;
693  if($(parent).is(".product__media-container .product__media")){
694      $(parent).css("position", "relative").append(htmlLabel);
695      appended = true;
696  }
697
698  if($(parent).is(".snize-product")){
699      $(parent).find(".snize-thumbnail").css("position", "relative").append(htmlLabel);
700      appended = true;
701  }
702  if ($(parent).is(".horizontal-products .horizontal-product")) {
703    $(parent).find(".horizontal-product__media").append(htmlLabel); 
704    appended = true; 
705  }
706
707  if ($(parent).is(".product-card__details .horizontal-product")) {
708    $(parent).find(".horizontal-product__media").append(htmlLabel); 
709    appended = true; 
710  }
711  return appended;
712}
713
714function bssFixSupportElementImage($, img, parent, page) {
715  // Write code here
716  if($(parent).is(".product__media-container .product__media")){
717      img = $(parent);
718  }
719
720  if($(parent).is(".snize-product")){
721      img = $(parent).find(".snize-thumbnail img");
722  }
723
724  if ($(parent).is(".horizontal-products .horizontal-product")) {
725    img = $(parent).find(".horizontal-product__media"); 
726  }
727  
728  return img;
729}
730
731function bssFixSupportReInitLabel($, BSS_PL, firstLoadProduct, checkPageFly, initCollectionLabel, initBadge) {
732  // Write code here
733  const input = document.querySelector("search-drawer .search__form .search__field > input");
734  let idTimeOut = null;
735
736  function observeSearchResults() {
737    const target = document.querySelector("#snize-instant-search-results .snize-ac-results-singlecolumn-list");
738    // if (!target) return console.warn("Chưa thấy danh sách kết quả.");
739  
740    const observer = new MutationObserver(() => {
741        const preOrderItem = target.querySelector(".snize-product");
742        // console.log("preOrderItem", preOrderItem)
743        if (preOrderItem) {
744          if (idTimeOut) clearTimeout(idTimeOut);
745          idTimeOut = setTimeout(() => {
746            BSS_PL.firstLoad = true;
747            BSS_PL.init();
748          }, 888);
749        }
750      });
751    
752      observer.observe(target, {
753        childList: true,
754        subtree: true,
755      });
756    }
757  
758  if (input) {
759    input.addEventListener("input", (e) => {
760        observeSearchResults();
761    });
762  } else {
763    // console.warn("Không tìm thấy input.");
764  }
765
766  $(document).on('click', '.cart-drawer-button', function() {
767    let resizeTimeout;
768    clearTimeout(resizeTimeout);
769    resizeTimeout = setTimeout(() => {
770      document.querySelectorAll('.horizontal-products .bss_pl_img').forEach(el => el.remove());
771      document.querySelectorAll('.horizontal-products [data-bss-pl="active"]').forEach(el => {
772        el.setAttribute('data-bss-pl', 'none');
773      });  
774      if (typeof BSS_PL !== 'undefined') {
775        BSS_PL.firstLoad = true;
776        BSS_PL.init();
777      }
778    }, 100);
779  });
780
781
782  return { firstLoadProduct, checkPageFly };
783}
784
785function bssFixSupportTurnOffAutoAppendLabel() {
786    return false;
787}
788
789    </script>
789
790
791
792<style>
793    
794    
795
796</style>
797
798<script data-nosnippet>
799    function bssLoadScripts(src, callback, isDefer = false) {
800        const scriptTag = document.createElement('script');
801        document.head.appendChild(scriptTag);
802        scriptTag.src = src;
803        if (isDefer) {
804            scriptTag.defer = true;
805        } else {
806            scriptTag.async = true;
807        }
808        if (callback) {
809            scriptTag.addEventListener('load', function () {
810                callback();
811            });
812        }
813    }
814    const scriptUrls = [
815        "https://cdn.shopify.com/extensions/01a0fb6d-171d-712b-8764-40c957e243dd/version_06d0a5c3-2026-10-02_14h03m/assets/bss-pl-init-helper.js",
816        "https://cdn.shopify.com/extensions/01a0fb6d-171d-712b-8764-40c957e243dd/version_06d0a5c3-2026-10-02_14h03m/assets/bss-pl-init-config-run-scripts.js",
817    ];
818    Promise.all(scriptUrls.map((script) => new Promise((resolve) => bssLoadScripts(script, resolve)))).then((res) => {
819        console.log('BSS scripts loaded');
820        window.bssScriptsLoaded = true;
821    });
822
823	function bssInitScripts() {
824		if (BSS_PL.configData.length) {
825			const enabledFeature = [
826				{ type: 1, script: "https://cdn.shopify.com/extensions/01a0fb6d-171d-712b-8764-40c957e243dd/version_06d0a5c3-2026-10-02_14h03m/assets/bss-pl-init-for-label.js" },
827				{ type: 2, badge: [0, 7, 8], script: "https://cdn.shopify.com/extensions/01a0fb6d-171d-712b-8764-40c957e243dd/version_06d0a5c3-2026-10-02_14h03m/assets/bss-pl-init-for-badge-product-name.js" },
828				{ type: 2, badge: [1, 11], script: "https://cdn.shopify.com/extensions/01a0fb6d-171d-712b-8764-40c957e243dd/version_06d0a5c3-2026-10-02_14h03m/assets/bss-pl-init-for-badge-product-image.js" },
829				{ type: 2, badge: 2, script: "https://cdn.shopify.com/extensions/01a0fb6d-171d-712b-8764-40c957e243dd/version_06d0a5c3-2026-10-02_14h03m/assets/bss-pl-init-for-badge-custom-selector.js" },
830				{ type: 2, badge: [3, 9, 10], script: "https://cdn.shopify.com/extensions/01a0fb6d-171d-712b-8764-40c957e243dd/version_06d0a5c3-2026-10-02_14h03m/assets/bss-pl-init-for-badge-price.js" },
831				{ type: 2, badge: 4, script: "https://cdn.shopify.com/extensions/01a0fb6d-171d-712b-8764-40c957e243dd/version_06d0a5c3-2026-10-02_14h03m/assets/bss-pl-init-for-badge-add-to-cart-btn.js" },
832				{ type: 2, badge: 5, script: "https://cdn.shopify.com/extensions/01a0fb6d-171d-712b-8764-40c957e243dd/version_06d0a5c3-2026-10-02_14h03m/assets/bss-pl-init-for-badge-quantity-box.js" },
833				{ type: 2, badge: 6, script: "https://cdn.shopify.com/extensions/01a0fb6d-171d-712b-8764-40c957e243dd/version_06d0a5c3-2026-10-02_14h03m/assets/bss-pl-init-for-badge-buy-it-now-btn.js" }
834			]
835				.filter(({ type, badge }) => BSS_PL.configData.some(item => item.label_type === type && (badge === undefined || (Array.isArray(badge) ? badge.includes(item.badge_type) : item.badge_type === badge))) || (BSS_PL.configDataLabelGroup && BSS_PL.configDataLabelGroup.length))
836				.map(({ script }) => script);
837				
838            enabledFeature.forEach((src) => bssLoadScripts(src));
839
840            if (enabledFeature.length) {
841                const src = "https://cdn.shopify.com/extensions/01a0fb6d-171d-712b-8764-40c957e243dd/version_06d0a5c3-2026-10-02_14h03m/assets/bss-product-label-js.js";
842                bssLoadScripts(src);
843            }
844        }
845
846        if (BSS_PL.configDataBanner && BSS_PL.configDataBanner.length) {
847            const src = "https://cdn.shopify.com/extensions/01a0fb6d-171d-712b-8764-40c957e243dd/version_06d0a5c3-2026-10-02_14h03m/assets/bss-product-label-banner.js";
848            bssLoadScripts(src);
849        }
850
851        if (BSS_PL.configDataPopup && BSS_PL.configDataPopup.length) {
852            const src = "https://cdn.shopify.com/extensions/01a0fb6d-171d-712b-8764-40c957e243dd/version_06d0a5c3-2026-10-02_14h03m/assets/bss-product-label-popup.js";
853            bssLoadScripts(src);
854        }
855
856        if (window.location.search.includes('bss-pl-custom-selector')) {
857            const src = "https://cdn.shopify.com/extensions/01a0fb6d-171d-712b-8764-40c957e243dd/version_06d0a5c3-2026-10-02_14h03m/assets/bss-product-label-custom-position.js";
858            bssLoadScripts(src, null, true);
859        }
860    }
861    bssInitScripts();
862</script>
862
863
864
865<!-- END app block --><!-- BEGIN app block: shopify://apps/kor-order-limit-quantity/blocks/app-embed/143c1e59-4c01-4de6-ad3e-90b86ada592d -->
866
867
868<!-- BEGIN app snippet: mc-checkout -->
868<script type="text/javascript">
869  
870  const mcLimitKORData1 = {"priority":{"default_priority":["VARIANT_LIMIT","PRODUCT_LIMIT","COLLECTION_MIN_MAX","PRODUCT_TAG_LIMIT","TAG_LIMIT","GLOBAL_LIMIT"],"cart_amount":["CART_LIMIT","AMOUNT_LIMIT","TAGS_AMOUNT_LIMIT","TOTAL_WEIGHT"]},"config":{"override_amount":null},"messages":{"upper_limit_msg":"Du kannst maximal \u003cstrong\u003e{%-limit-%}\u003c\/strong\u003e Stück von \u003cstrong\u003e{%-product_title-%}\u003c\/strong\u003e kaufen.","lower_limit_msg":"You Need to Purchase at least \u003cstrong\u003e{%-limit-%} \u003c\/strong\u003e Qty of \u003cstrong\u003e{%-product_title-%}\u003c\/strong\u003e.","increment_limit_msg":"You can buy  \u003cstrong\u003e{%-product_title-%}\u003c\/strong\u003e in multiples of \u003cstrong\u003e{%-limit-%}\u003c\/strong\u003e.","lifetime_limit_msg":"Du kannst maximal \u003cstrong\u003e{%-limit-%}\u003c\/strong\u003e Stück von \u003cstrong\u003e{%-product_title-%}\u003c\/strong\u003e kaufen."},"global":{"info":{"min_limit":1,"max_limit":5}},"products":{"info":[]}};
871  
872  
873  const mcLimitKORData2 = {"locale_messages":{"default":{"general_min_message":"You Need to Purchase at least \u003cstrong\u003e{%-limit-%} \u003c\/strong\u003e Qty of \u003cstrong\u003e{%-product_title-%}\u003c\/strong\u003e.","general_max_message":"Du kannst maximal \u003cstrong\u003e{%-limit-%}\u003c\/strong\u003e Stück von \u003cstrong\u003e{%-product_title-%}\u003c\/strong\u003e kaufen.","general_multiply_message":"You can buy  \u003cstrong\u003e{%-product_title-%}\u003c\/strong\u003e in multiples of \u003cstrong\u003e{%-limit-%}\u003c\/strong\u003e.","general_lifetime_message":"Du kannst maximal \u003cstrong\u003e{%-limit-%}\u003c\/strong\u003e Stück von \u003cstrong\u003e{%-product_title-%}\u003c\/strong\u003e kaufen.","order_amt_tag_min_message":"","order_amt_tag_max_message":"","weight_min_message":"","weight_max_message":"","product_tag_min_message":"Minimum quantity allowed for this product is \u003cstrong\u003e{%-limit-%}\u003c\/strong\u003e.","product_tag_max_message":"Maximum quantity allowed for this product is \u003cstrong\u003e{%-limit-%}\u003c\/strong\u003e.","product_tag_multiply_message":"Quantity must be a multiple of \u003cstrong\u003e{%-limit-%}\u003c\/strong\u003e.","product_tag_future_message":"Lifetime quantity limit for this product is \u003cstrong\u003e{%-limit-%}\u003c\/strong\u003e.","cart_min_message":"Total limit must be \u003cstrong\u003e{%-limit-%}\u003c\/strong\u003e to proceed with the checkout.","cart_max_message":"Pro Bestellung sind maximal 5 Stück möglich.","order_amt_min_message":"","order_amt_max_message":""}},"collections":{"info":[]},"tags":[],"modelDesign":"\u003cstyle\u003e.modal-content-custom{background-color:#fefefe;border:1px solid #888;color:#000000;font-size:15px;}\u003c\/style\u003e"};
874  
875  
876  const mcLimitKORData3 = {"collectionsProducts":{"info":[]},"variants":{"info":[]},"product_tags":{"info":[]},"cart":{"info":{"id":505,"min_limit":null,"max_limit":5,"min_limit_message":"Total limit must be \u003cstrong\u003e{%-limit-%}\u003c\/strong\u003e to proceed with the checkout.","max_limit_message":"Pro Bestellung sind maximal 5 Stück möglich."}},"amount":{"info":null},"weight":{"info":null,"message":{"min_weight_message":null,"max_weight_message":null,"product_tag_min_message":"Minimum quantity allowed for this product is \u003cstrong\u003e{%-limit-%}\u003c\/strong\u003e.","product_tag_max_message":"Maximum quantity allowed for this product is \u003cstrong\u003e{%-limit-%}\u003c\/strong\u003e.","product_tag_multiply_message":"Quantity must be a multiple of \u003cstrong\u003e{%-limit-%}\u003c\/strong\u003e.","product_tag_future_message":"Lifetime quantity limit for this product is \u003cstrong\u003e{%-limit-%}\u003c\/strong\u003e."}}};
877  
878  const mcLimitKORData = { ...mcLimitKORData1, ...mcLimitKORData2, ...mcLimitKORData3 };
879  
880  const mcKorAppSettings = {"plan":2,"hasFreeImpression":false,"disable_add_to_cart":false,"designType":"ALERT","lifetime_limit":{"life_span_type":0,"life_span_days":0,"end_date":null,"start_date":null,"interval":{"date":null,"interval":"custom","custom_days":1}},"pPage":[]};
881  
882  // For add to cart button Click
883  var template = "cart";
884  function jqueryCode() {
885    if (template == 'product') {
886      document.addEventListener('DOMContentLoaded', () => {
887        $('button[name="add"], .btn-addtocart, .buy-buttons__buttons [data-component="button-action"], .add-to-cart, button[data-action="add-to-cart"], button[type="submit"][data-add-to-cart-text]').click(function (e, options) {
888          options = options || {};
889          if (!options.eventTrigger) {
890            e.preventDefault();
891            if (addToCartEventStopPropogation.includes(Shopify.shop)) {
892              e.stopImmediatePropagation();
893            }
894            CheckOnAddToCart().then(function (res) {
895              if (res.msg != '') {
896                showMessage(res.msg);
897              } else {
898                if (Shopify.shop == "urbanbaristas.myshopify.com") {
899                  $('form[action^="/cart/add"]').submit();
900                } else {
901                  $(e.target).trigger("click", { eventTrigger: true });
902                } updateNumberOfProductLimit(res.qty);
903              }
904            });
905          }
906        });
907        if (typeof mcKorAppSettings != "undefined" && (mcKorAppSettings?.pPage?.addToCart && mcKorAppSettings?.pPage?.addToCart != "")) {
908          $(mcKorAppSettings?.pPage?.addToCart).click(function (e, options) {
909            options = options || {};
910            if (!options.eventTrigger) {
911              e.preventDefault();
912              if (addToCartEventStopPropogation.includes(Shopify.shop)) {
913                e.stopImmediatePropagation();
914              }
915              CheckOnAddToCart().then(function (res) {
916                if (res.msg != '') {
917                  showMessage(res.msg);
918                } else {
919                  $(e.target).trigger("click", { eventTrigger: true });
920                  updateNumberOfProductLimit(res.qty);
921                }
922              });
923            }
924          });
925        }
926      });
927    }
928  }
929
930  function CheckOnAddToCart() {
931    return new Promise(function (resolve) {
932      jQuery.getJSON("/cart.js", function (cartItems) {
933
934        var res = window.mcproductresponse.data;
935        var msg = '';
936        var globalMsg = '';
937        let variantMsg = "";
938        var collectionMsg = '';
939        var tagMsg = '';
940        var is_global_limit = false,
941          is_product_limit = false,
942          is_number_collection_limit = false,
943          is_tag_limit = false,
944          is_variant_limit = false,
945          is_product_tag_limit = false;
946        var productMsg = '';
947        var productTagMsg = '';
948        //var productData = $('form[action^="/cart/add"], form[action$="/cart/add"]').serializeArray();
949        var productId = product_id,
950          variantId = '',
951          qty = '',
952          variantqty = '',
953          collectionqty = '';
954
955        var productData = $('form[action^="/cart/add"], form[action$="/cart/add"]').serializeArray();
956        if (mcKorAppSettings?.pPage?.fmSelecotor) {
957          productData = $(mcKorAppSettings?.pPage?.fmSelecotor).serializeArray();
958        }
959
960        // get variant id
961        const queryString = window.location.search;
962        const urlParams = new URLSearchParams(queryString);
963        const variant_id = urlParams.get('variant');
964
965        productData.map((product) => {
966          if (product.name == 'quantity') {
967            qty = variantqty = collectionqty = parseInt(product.value, 10);
968          } else if (product.name == 'id') {
969            variantId = product.value;
970          }
971        })
972
973        cartItems.items.map((item) => {
974          if (productId == item.product_id) {
975            qty = parseInt(item.quantity, 10) + qty;
976          }
977          if (variantId == item.id) {
978            variantqty = parseInt(item.quantity, 10) + variantqty;
979          }
980        })
981
982        if (res?.tag?.info) {
983          var tagMaxQty = res.tag.info.max_limit;
984          var tagMinQty = res.tag.info.min_limit;
985          if (tagMinQty != 0 && tagMinQty && tagMaxQty != 0 && tagMaxQty) {
986            is_tag_limit = true;
987            if (qty > tagMaxQty) {
988              tagMsg = res.tag.message.upper_limit_msg;
989            } else if (qty < tagMinQty) {
990              tagMsg = res.tag.message.lower_limit_msg;
991            }
992          }
993        }
994
995        if (res?.number_of_product_limit?.length > 0) {
996          is_number_collection_limit = true;
997          res.number_of_product_limit.map(collection => {
998            if (collectionqty > collection.remaining_max_qty) {
999              collectionMsg = collection.max_msg;
1000            }
1001          })
1002        }
1003
1004
1005        if (variantId && res?.variants?.length > 0) {
1006          res.variants.forEach((variant) => {
1007            if (variant.info.id == variantId) {
1008              let min_qty = variant.info.lower_limit;
1009              let max_qty = variant.info.purchase_limit;
1010              if (max_qty != null && max_qty != 0 && max_qty && min_qty != null && min_qty != 0 && min_qty) {
1011                is_variant_limit = true;
1012                if (variantqty > max_qty) {
1013                  variantMsg = variant.message.upper_limit_msg;
1014                } else if (variantqty < min_qty) {
1015                  variantMsg = variant.message.lower_limit_msg;
1016                }
1017              }
1018            }
1019          });
1020        }
1021
1022        if (res?.product?.info) {
1023          var maxQty = res.product.info.purchase_limit;
1024          var minQty = res.product.info.min_purchase_limit;
1025          // var lifetimeQty = res.product.info.life_time_limit || 0;
1026
1027          var lifetimeQty = res.product.info?.remainingQty;
1028          var remainingQty = res.product.info?.remainingQty;
1029
1030          if (minQty != 0 && minQty && maxQty != 0 && maxQty) {
1031            is_product_limit = true;
1032            if (lifetimeQty != null && lifetimeQty != undefined && qty > remainingQty) {
1033              productMsg = res.product.message.lifetime_limit_msg;
1034            } else if (qty > maxQty) {
1035              productMsg = res.product.message.upper_limit_msg;
1036            } else if (qty < minQty) {
1037              productMsg = res.product.message.lower_limit_msg;
1038            }
1039          }
1040        }
1041
1042        if (res?.product_tag?.info) {
1043          var maxQty = res.product_tag.info.max_limit;
1044          var minQty = res.product_tag.info.min_limit;
1045
1046          var lifetimeQty = res.product_tag.info?.remainingQty;
1047          var remainingQty = res.product_tag.info?.remainingQty;
1048
1049          if (minQty != 0 && minQty && maxQty != 0 && maxQty) {
1050            is_product_tag_limit = true;
1051            if (lifetimeQty != null && lifetimeQty != undefined && qty > remainingQty) {
1052              productTagMsg = res.product_tag.message.future_limit_msg;
1053            } else if (qty > maxQty) {
1054              productTagMsg = res.product_tag.message.upper_limit_msg;
1055            } else if (qty < minQty) {
1056              productTagMsg = res.product_tag.message.lower_limit_msg;
1057            }
1058          }
1059        }
1060
1061        if (res?.global?.info && Object.keys(res.global.message).length > 0) {
1062          var globalMaxQty = res.global.info.global_limit;
1063          var globalMinQty = res.global.info.min_global_limit;
1064          // is_product_check = 1 -> check against product-level qty (this product across all its
1065          // variants); 0/null/undefined -> existing variant-level qty (this variant only).
1066          var globalQty = res.global.info.is_product_check ? qty : variantqty;
1067
1068          if (globalMaxQty != null && globalMinQty != null) {
1069            is_global_limit = true;
1070            if (globalQty > globalMaxQty) {
1071              globalMsg = res.global.message.upper_limit_msg;
1072            } else if (globalQty < globalMinQty) {
1073              globalMsg = res.global.message.lower_limit_msg;
1074            }
1075          }
1076        }
1077
1078        if (res?.priority) {
1079          for (const [key, value] of Object.entries(res.priority)) {
1080            if ((value == "COLLECTION_MIN_MAX" || value == "PRODUCT_LIMIT") && is_product_limit) {
1081              msg = productMsg;
1082              break;
1083            }
1084            if (value == "PRODUCT_TAG_LIMIT" && is_product_tag_limit) {
1085              msg = productTagMsg;
1086              break;
1087            }
1088            if (value == "VARIANT_LIMIT" && is_variant_limit) {
1089              msg = variantMsg;
1090              break;
1091            }
1092            if (value == "GLOBAL_LIMIT" && is_global_limit) {
1093              msg = globalMsg;
1094              break;
1095            }
1096            if (value == "TAG_LIMIT" && is_tag_limit) {
1097              msg = tagMsg;
1098              break;
1099            }
1100          }
1101        }
1102
1103        if (is_number_collection_limit) {
1104          if (msg) {
1105            msg += "<br>" + collectionMsg;
1106          } else {
1107            msg = collectionMsg;
1108          }
1109        }
1110
1111        var response = {
1112          msg: msg,
1113          qty: collectionqty
1114        }
1115        resolve(response);
1116      });
1117    })
1118  }
1119
1120  function updateNumberOfProductLimit(qty) {
1121    qty = parseInt(qty, 10);
1122    var res = window.mcproductresponse.data;
1123    if (res?.number_of_product_limit.length > 0) {
1124      res?.number_of_product_limit.map(collection => {
1125        collection.remaining_max_qty = parseInt(collection.remaining_max_qty - qty, 10);
1126      })
1127    }
1128    window.mcproductresponse.data = res;
1129  }
1130</script>
1130<!-- END app snippet --><!-- BEGIN app snippet: mc-product -->
1130<script>
1131  function mcKorGetDateRangeFromLifeSpan(ctx) {
1132    const now = new Date();
1133
1134    // Helpers scoped inside
1135    function startOfDay(date) {
1136      return new Date(date.getFullYear(), date.getMonth(), date.getDate());
1137    }
1138
1139    function endOfDay(date) {
1140      return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59, 999);
1141    }
1142
1143    function startOfWeek(date) {
1144      const d = new Date(date);
1145      const day = d.getDay();
1146      const diff = d.getDate() - day + (day === 0 ? -6 : 1); // Monday as start
1147      return startOfDay(new Date(d.setDate(diff)));
1148    }
1149
1150    function endOfWeek(date) {
1151      const start = startOfWeek(date);
1152      return endOfDay(new Date(start.getFullYear(), start.getMonth(), start.getDate() + 6));
1153    }
1154
1155    function startOfMonth(date) {
1156      return new Date(date.getFullYear(), date.getMonth(), 1);
1157    }
1158
1159    function endOfMonth(date) {
1160      return new Date(date.getFullYear(), date.getMonth() + 1, 0, 23, 59, 59, 999);
1161    }
1162
1163    function startOfYear(date) {
1164      return new Date(date.getFullYear(), 0, 1);
1165    }
1166
1167    function endOfYear(date) {
1168      return new Date(date.getFullYear(), 11, 31, 23, 59, 59, 999);
1169    }
1170
1171    // Main logic
1172    if (ctx.life_span_type === 2) {
1173      const startDate = startOfDay(new Date(now.getFullYear(), now.getMonth(), now.getDate() - ctx.life_span_days));
1174      const endDate = endOfDay(now);
1175      return [startDate, endDate];
1176    }
1177
1178    if (ctx.life_span_type === 4) {
1179      const startDate = endOfDay(new Date(ctx.start_date));
1180      const endDate = startOfDay(new Date(ctx.end_date));
1181      const currentDate = now;
1182
1183      if (currentDate < startDate || currentDate > endDate) {
1184        return [null, null];
1185      }
1186
1187      return [startDate, endDate];
1188    }
1189
1190    if (ctx.life_span_type === 5) {
1191      const intervalSetting = ctx.user_interval;
1192      if (!intervalSetting) return [null, null];
1193
1194      const interval = intervalSetting.interval;
1195
1196      if (interval === "day") {
1197        return [startOfDay(now), endOfDay(now)];
1198      }
1199
1200      if (interval === "week") {
1201        return [startOfWeek(now), endOfWeek(now)];
1202      }
1203
1204      if (interval === "month") {
1205        return [startOfMonth(now), endOfMonth(now)];
1206      }
1207
1208      if (interval === "year") {
1209        return [startOfYear(now), endOfYear(now)];
1210      }
1211
1212      if (["10", "20", "30", "custom"].includes(interval)) {
1213        let days = 1;
1214        let start = new Date();
1215
1216        if (intervalSetting.date) {
1217          start = new Date(intervalSetting.date);
1218        }
1219
1220        if (["10", "20", "30"].includes(interval)) {
1221          days = parseInt(interval, 10);
1222        } else if (interval === "custom") {
1223          days = parseInt(intervalSetting.custom_days || 1, 10);
1224        }
1225
1226        const now = new Date();
1227        if (now < start) return [null, null];
1228
1229        const diffDays = Math.floor((now - start) / (1000 * 60 * 60 * 24));
1230        const multiplier = Math.floor(diffDays / days);
1231
1232        if (multiplier >= 1) {
1233          start.setDate(start.getDate() + multiplier * days);
1234        }
1235
1236        const end = new Date(start);
1237        end.setDate(start.getDate() + days);
1238
1239        return [startOfDay(start), endOfDay(end)];
1240      }
1241    }
1242
1243    return [null, null];
1244  }
1245
1246  function mcKorAnalyzeOrdersByDateRange(orders, startDate, endDate) {
1247        let total_order_amount = 0;
1248        let order_product_data = {};
1249        let order_variant_data = {};
1250
1251        orders.forEach(order => {
1252            const orderDate = new Date(order.created_at);
1253            if (startDate && endDate && orderDate >= startDate && orderDate <= endDate) {
1254            total_order_amount += order.total_price;
1255
1256            order.line_items.forEach(item => {
1257                // Count product quantity
1258                if (!order_product_data[item.product_id]) {
1259                    order_product_data[item.product_id] = 0;
1260                }
1261                order_product_data[item.product_id] += item.quantity;
1262
1263                // Count variant quantity
1264                if (!order_variant_data[item.variant_id]) {
1265                    order_variant_data[item.variant_id] = 0;
1266                }
1267                order_variant_data[item.variant_id] += item.quantity;
1268            });
1269            }
1270        });
1271
1272        return {
1273            total_order_amount,
1274            order_product_data,
1275            order_variant_data
1276        };
1277  }
1278</script>
1278
1279
1280
1281<!-- END app snippet --><!-- BEGIN app snippet: mc-limit -->
1281<script>
1282    if (typeof jQuery == 'undefined') {
1283        var headTag = document.getElementsByTagName("head")[0];
1284        var jqTag = document.createElement('script');
1285        jqTag.type = 'text/javascript';
1286        jqTag.src = 'https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js';
1287        jqTag.defer = 'defer';
1288        headTag.appendChild(jqTag);
1289    }
1290</script>
vendor: 1 bytes, line 1290
1290
1291<script src="https://magecomp.us/js/LimitQtyHelper.js" defer></script>
1291
1292
1293<div>
1294    
1295    <style>
1296        .close-custom {
1297            color: #aaa;
1298            float: right;
1299            font-size: 28px;
1300            font-weight: 700;
1301            margin-right: 4px;
1302            margin-top: -3px;
1303            position: absolute;
1304            top: 0;
1305            right: 0;
1306        }
1307    </style>
1308
1309    
1310
1311    <style>
1312        /*.d-none {
1313            display: none !important;
1314        }*/
1315
1316        .modal-custom {
1317            display: none;
1318            position: fixed;
1319            z-index: 10000;
1320            left: 0;
1321            top: 0;
1322            width: 100%;
1323            height: 100%;
1324            overflow: auto;
1325            background-color: #000;
1326            background-color: rgba(0, 0, 0, .4)
1327        }
1328
1329
1330        .modal-content-custom {
1331            background-color: #fefefe;
1332            margin: 15% auto;
1333            padding: 25px;
1334            border: 1px solid #888;
1335            width: fit-content;
1336            position: relative;
1337        }
1338
1339
1340        .close-custom:focus,
1341        .close-custom:hover {
1342            color: #000;
1343            text-decoration: none;
1344            cursor: pointer
1345        }
1346
1347        #mc-loader {
1348            display: none;
1349            position: fixed;
1350            left: 50%;
1351            top: 50%;
1352            z-index: 10000;
1353            width: 150px;
1354            height: 150px;
1355            margin: -75px 0 0 -75px;
1356            border: 16px solid #f3f3f3;
1357            border-radius: 50%;
1358            border-top: 16px solid #3498db;
1359            width: 120px;
1360            height: 120px;
1361            -webkit-animation: spin 2s linear infinite;
1362            animation: spin 2s linear infinite
1363        }
1364
1365        @-webkit-keyframes spin {
1366            0% {
1367                -webkit-transform: rotate(0)
1368            }
1369
1370            100% {
1371                -webkit-transform: rotate(360deg)
1372            }
1373        }
1374
1375        @keyframes spin {
1376            0% {
1377                transform: rotate(0)
1378            }
1379
1380            100% {
1381                transform: rotate(360deg)
1382            }
1383        }
1384
1385        .animate-bottom {
1386            position: relative;
1387            -webkit-animation-name: animatebottom;
1388            -webkit-animation-duration: 1s;
1389            animation-name: animatebottom;
1390            animation-duration: 1s
1391        }
1392
1393        @-webkit-keyframes animatebottom {
1394            from {
1395                bottom: -100px;
1396                opacity: 0
1397            }
1398
1399            to {
1400                bottom: 0;
1401                opacity: 1
1402            }
1403        }
1404
1405        @keyframes animatebottom {
1406            from {
1407                bottom: -100px;
1408                opacity: 0
1409            }
1410
1411            to {
1412                bottom: 0;
1413                opacity: 1
1414            }
1415        }
1416
1417        @media only screen and (max-width: 768px) {
1418            .modal-content-custom {
1419                margin-top: 70%;
1420            }
1421        }
1422
1423        #purchase_limit_messages ul {
1424            list-style: none !important;
1425        }
1426
1427        .mc-disabled {
1428            pointer-events: none;
1429            opacity: 0.5;
1430        }
1431    </style>
1432    <div id="modelDesignId"></div>
1433    <div id="mc-loader"></div>
1434    <div id="myModal" class="modal-custom">
1435        <div class="modal-content-custom">
1436            <div id="purchase_limit_messages"></div><span class="close-custom">&times;</span>
1437        </div>
1438    </div>
1439    
1439<script id="kor-market-config" type="application/json">
1440        {
1441            "market_id": "96371376507",
1442            "market_handle": "de"
1443        }
1444    </script>
1444
1445    
1445<script type="text/javascript">
1446
1447        var template = "cart";
1448        var customer_id = "";
1449        var product_id = "";
1450        var shopName = "v80rnh-af.myshopify.com";
1451        var defaultvariantId = ""; //get default variant id when page load
1452        window.mcproductresponse = {};
1453
1454        function cartSubmitAndCheckout(formElement) {
1455            var params = formElement.serializeArray();
1456            $.ajax({
1457                url: "/cart",
1458                type: "post",
1459                data: params,
1460                success: function (res) {
1461                    //window.location.replace('/checkout');
1462                    
1463            window.location.replace('/checkout');
1464            
1465        },
1466        error: function (err) {
1467            console.error(err.responseText);
1468        }
1469            });
1470        }
1471
1472        function checkLimitOne(e, click = false, trigger = null) {
1473            e.customer_id = customer_id;
1474            const marketElem = document.querySelector("#kor-market-config");
1475            const marketData = JSON.parse(marketElem?.textContent?.trim() || "{}");
1476            e.config = {
1477                locale: Shopify?.locale,
1478                currency: Shopify?.currency,
1479                country: Shopify?.country,
1480                market: marketData
1481            };
1482
1483            $.ajax({
1484                type: "POST",
1485                url: "/a/cart-update",
1486                dataType: "json",
1487                data: e,
1488                success: function (e) {
1489                    console.log("e...");
1490                    console.log(e);
1491                    if (1 == e.error) {
1492                        var t = "<ul>";
1493                        $.each(e.messages, function (e, n) {
1494                            t += "<li>" + n + "</li>"
1495                        }), t += "</ul>", $("#purchase_limit_messages").html(t), document.getElementById("myModal").style.display = "block"
1496                        $(".additional-checkout-buttons, .additional_checkout_buttons, .dynamic-checkout__content").addClass("mc-disabled");
1497                    } else if (click) {
1498                        //window.location.replace('/checkout');
1499                        
1500            window.location.replace('/checkout');
1501        
1502                    }
1503                    else {
1504            // $(".additional-checkout-buttons").removeClass("mc-disabled");
1505            $(".additional-checkout-buttons,.additional_checkout_buttons, .dynamic-checkout__content").removeClass("mc-disabled");
1506        }
1507        document.getElementById("mc-loader").style.display = "none"
1508                }
1509            });
1510        }
1511
1512        function myJQueryCode() {
1513            jqueryCode();
1514            if (template == 'login') {
1515                $(document).ready(function () {
1516                    $("input[name='checkout_url']").attr('value', '/cart');
1517                });
1518            }
1519
1520            var modal = document.getElementById("myModal"),
1521                span = document.getElementsByClassName("close-custom")[0];
1522
1523            function checkLimit(e, click = false) {
1524
1525                e.customer_id = customer_id;
1526                const marketElem = document.querySelector("#kor-market-config");
1527                const marketData = JSON.parse(marketElem?.textContent?.trim() || "{}");
1528                e.config = {
1529                    locale: Shopify?.locale,
1530                    currency: Shopify?.currency,
1531                    country: Shopify?.country,
1532                    market: marketData
1533                };
1534
1535                $.ajax({
1536                    type: "POST",
1537                    url: "/a/cart-update",
1538                    dataType: "json",
1539                    data: e,
1540                    success: function (e) {
1541                        console.log("e..k.");
1542                        console.log(e);
1543                        let cartUpdateRes = e;
1544                        var purchaseCartLimitMessages = document.getElementById('modelDesignId');
1545                        if (purchaseCartLimitMessages && cartUpdateRes?.modelDesign) {
1546                            purchaseCartLimitMessages.innerHTML = cartUpdateRes.modelDesign;
1547                        }
1548                        if (1 == e.error) {
1549                            var t = "<ul>";
1550                            $.each(e.messages, function (e, n) {
1551                                t += "<li>" + n + "</li>"
1552                            }), t += "</ul>", $("#purchase_limit_messages").html(t), document.getElementById("myModal").style.display = "block"
1553                            $(".additional-checkout-buttons, .dynamic-checkout__content").addClass("mc-disabled");
1554                        } else if (click) {
1555                            // window.location.replace('/checkout');
1556                            let submitFormEventShop = ["pro-image-sports-at-the-mall-of-america.myshopify.com", "distell-staff-sales.myshopify.com", "trevocorp.myshopify.com"];
1557                            if (submitFormEventShop.includes(Shopify.shop)) {
1558                                if (shopName == "distell-staff-sales.myshopify.com") {
1559                                    if (document.querySelector("#cart").reportValidity()) {
1560                                        let formElement = 'form[action="/cart"]';
1561                                        cartSubmitAndCheckout($(formElement));
1562                                    }
1563                                } else {
1564                                    let formElement = 'form[action="/cart"]';
1565                                    cartSubmitAndCheckout($(formElement));
1566                                }
1567
1568                            } else {
1569                                if (typeof preventDirectCheckout !== "undefined" && !preventDirectCheckout.includes(Shopify.shop)) {
1570                                    //window.location.replace('/checkout');
1571                                    
1572                                window.location.replace('/checkout');
1573                            
1574        }
1575                            }
1576                        }
1577        document.getElementById("mc-loader").style.display = "none"
1578                    }
1579                });
1580            }
1581
1582        document.getElementsByClassName("close-custom")[0].addEventListener("click", function () {
1583            document.getElementById("myModal").style.display = "none";
1584        });
1585
1586        if (Shopify.shop == 'nghia-nippers-corporation.myshopify.com') {
1587            $(document).ready(function () {
1588                $("a[href='/cart']").click(() => {
1589                    jQuery.getJSON("/cart.js", function (cartItems) {
1590                        checkLimitOne(cartItems);
1591                    });
1592                });
1593            });
1594        }
1595
1596        if (template == 'product') {
1597            var mcPlusName;
1598            var mcMinusName;
1599            var mcQtyInput;
1600            var mcPlusSelector = [".qty_plus", ".increase", ".plus-btn", ".plus_btn", ".quantity-plus", ".plus", ".qty-plus", ".js--add", ".qty-up", "button[name='plus']", "input[name='plus']", "a[data-quantity='up']", ".js-qty__adjust--plus", "[data-action='increase-quantity']", ".icon-plus", "button[data-action='increase-picker-quantity']", ".inc", ".quantity__button--plus", "[data-quantity-action='increase']", ".quantity-input-plus", ".shopify-product-form [data-update-quantity='plus']", ".product-form__quantity-add-item", ".icon--plus-big", '.qtyplus', '.quantity-selector__button--plus', '.plus_btn', '.quantity-wrapper [data-quantity="up"]', ".ProductForm__QuantitySelector [data-action='increase-quantity']", ".adjust-plus", "button[aria-label='Increase the quantity']", "[data-control
1600='-']", '[data-increase-qty]', '.t4s-quantity-selector is--plus', "button[aria-label='increment']", ".qty-adjuster__up", "button[aria-label='Add']"];
1601            var mcMinusSelector = [".qty_minus", ".reduced", ".minus-btn", ".minus", ".quantity-minus", ".qty-minus", ".js--minus", ".qty-down", "button[name='minus']", "input[name='minus']", "a[data-quantity='down']", ".js-qty__adjust--minus", "[data-action='decrease-quantity']", ".icon-minus", "button[data-action='decrease-picker-quantity']", ".dec", ".quantity__button--minus", "[data-quantity-action='decrease']", ".quantity-input-minus", ".shopify-product-form [data-update-quantity='minus']", ".product-form__quantity-subtract-item", ".icon--minus-big", '.qtyminus', '.quantity-selector__button--minus', '.minus_btn', '.quantity-wrapper [data-quantity="down"]', ".ProductForm__QuantitySelector [data-action='decrease-quantity']", ".adjust-minus", "button[aria-label='Reduce the quantity']", "[data-control='+']", '[data-decrease-qty]', '.t4s-quantity-selector is--minus', "button[aria-label='decrement']", ".qty-adjuster__down", "button[aria-label='Subtract']"];
1602            window.mcQtyInputSelector = [".js-qty__num", ".quantity__input", ".quantity", ".quantity-selector", "input[name='quantity']", "input[name='product-quantity']", "#quantity", ".QuantitySelector__CurrentQuantity", ".quantity-selector--product .quantity-selector__value", "input[name='quantity'][class='quantity__input']", ".quantity-input-field", ".shopify-product-form [name='quantity']", ".product-form__input--quantity", "#quantity-selector__input", ".product-form__input--quantity", ".QuantitySelector__CurrentQuantity[name='quantity']", ".quantity_selector quantity-input [name='quantity']", ".product-form .quantity-selector__input", "input[name='quantity'][class='quantity']"];
1603
1604            // jQuery.getJSON("/cart.js", function (cartItems) {
1605            //     productLimit(product_id, cartItems);
1606            // });
1607            mcKorSetProductLimit();
1608            const intMCval = setInterval(() => {
1609                if(typeof updateMcCartQtyFromCart == "function") {
1610                    updateMcCartQtyFromCart();
1611                    clearInterval(intMCval);
1612                }
1613            }, 1000);
1614
1615            setTimeout(() => {
1616                clearInterval(intMCval);
1617            }, 3000);
1618
1619            mcPlusSelector.forEach((plus) => {
1620                if ($(document).find(plus).length > 0) {
1621                    mcPlusName = $(plus);
1622                }
1623            })
1624
1625            mcMinusSelector.forEach((minus) => {
1626                if ($(document).find(minus).length > 0) {
1627                    mcMinusName = $(minus);
1628                }
1629            })
1630
1631            window.mcQtyInputSelector.forEach((input) => {
1632                if ($(document).find(input).length > 0) {
1633                    mcQtyInput = $(input);
1634                }
1635            })
1636            
1637            if (typeof mcKorAppSettings != "undefined" && (mcKorAppSettings?.pPage?.inputQty && mcKorAppSettings?.pPage?.inputQty != "")) {
1638                jQuery(document).on("change", mcKorAppSettings?.pPage?.inputQty, function (e) {
1639                    e.preventDefault();
1640                    e.stopImmediatePropagation();
1641                    limitOnProductSuccess();
1642                });
1643            } else {
1644                jQuery(document).on("change", mcQtyInput, function (e) {
1645                    e.preventDefault();
1646                    e.stopImmediatePropagation();
1647                    limitOnProductSuccess();
1648                });
1649            }
1650            // For shops 
1651            let shops = ["aarogyam-wellness-store.myshopify.com", "pharmacy-at-spar-midrand.myshopify.com", "cathrin-walk.myshopify.com", "buffchick.myshopify.com", "masicbeauty.myshopify.com", "trevocorp.myshopify.com", "tapes-tools.myshopify.com", "imprensa-nacional-casa-da-moeda-test.myshopify.com", "denikwholesale.myshopify.com", "gmoco-ohio.myshopify.com", "imprensa-nacional-casa-da-moeda-test.myshopify.com", "d48a1f.myshopify.com", "le-parastore.myshopify.com", "lswiring.myshopify.com", "turkishsouq-shop.myshopify.com", "jainsonslightsonline.myshopify.com", "enzo-pt.myshopify.co", "fcxsport.myshopify.com", "dprimerocol.myshopify.com", "nocelab.myshopify.com", "hybrid-supreme-filter-shop.myshopify.com", "loud-pizza.myshopify.com", "sa-stage.myshopify.com"];
1652            if (shops.includes(shopName)) {
1653                if (typeof mcKorAppSettings != "undefined" && (mcKorAppSettings?.pPage?.plusBtn && mcKorAppSettings?.pPage?.plusBtn != "")) {
1654                    jQuery(document).on("click", mcKorAppSettings?.pPage?.plusBtn, function (e) {
1655                        limitOnProductSuccess();
1656                    });
1657                } else {
1658                    jQuery(document).on("click", mcPlusName, function (e) {
1659                        limitOnProductSuccess();
1660                    });
1661                }
1662                if (typeof mcKorAppSettings != "undefined" && (mcKorAppSettings?.pPage?.minusBtn && mcKorAppSettings?.pPage?.minusBtn != "")) {
1663                    jQuery(document).on("click", mcKorAppSettings?.pPage?.minusBtn, function (e) {
1664                        limitOnProductSuccess();
1665                    });
1666                } else {
1667                    jQuery(document).on("click", mcMinusName, function (e) {
1668                        limitOnProductSuccess();
1669                    });
1670                }
1671            }
1672
1673            $(span).click(function (e) {
1674                modal.style.display = "none";
1675                e.preventDefault();
1676            });
1677        }
1678
1679        if (template == 'cart') {
1680
1681            jQuery.getJSON("/cart.js", function (e) {
1682                checkLimit(e)
1683            }), span.onclick = function () {
1684                modal.style.display = "none"
1685            }, window.onclick = function (e) {
1686                e.target == modal && (modal.style.display = "none")
1687            };
1688            jQuery(document).on("click", span, function (e) {
1689                modal.style.display = "none";
1690            });
1691        }
1692
1693        jQuery(document).on("click", "button[name='checkout']", function (e, options) {
1694            if (!options) {
1695                document.getElementById("mc-loader").style.display = "block";
1696                e.preventDefault();
1697                e.stopImmediatePropagation();
1698                jQuery.getJSON("/cart.js", function (cartItems) {
1699                    checkLimit(cartItems, true);
1700                });
1701            }
1702        });
1703
1704        jQuery(document).on("click", "input[name='checkout']", function (e, options) {
1705            if (!options) {
1706                document.getElementById("mc-loader").style.display = "block";
1707                e.preventDefault();
1708                e.stopImmediatePropagation();
1709                jQuery.getJSON("/cart.js", function (cartItems) {
1710                    checkLimit(cartItems, true);
1711                });
1712            }
1713        });
1714
1715        // jQuery(document).on("click", span, function (e) {
1716        //         modal.style.display = "none";
1717        //     });
1718
1719        jQuery(document).on("click", "a[href='/checkout']", function (e) {
1720            document.getElementById("mc-loader").style.display = "block";
1721            e.preventDefault();
1722            e.stopImmediatePropagation();
1723            jQuery.getJSON("/cart.js", function (cartItems) {
1724                checkLimit(cartItems, true);
1725            });
1726        });
1727
1728        jQuery(document).on("click", "input[name='checkouts']", function (e) {
1729            document.getElementById("mc-loader").style.display = "block";
1730            e.preventDefault();
1731            e.stopImmediatePropagation();
1732            jQuery.getJSON("/cart.js", function (cartItems) {
1733                checkLimit(cartItems, true);
1734            });
1735        });
1736
1737
1738        if (template == 'product') {
1739            if (shopName == 'shop-hamples.myshopify.com') {
1740                $(document).ready(function () {
1741                    var className = $(".btn-addtocart");
1742                    var t = className.clone();
1743                    t.removeClass("addtocart-js").attr("type", "button").attr('data-mc', "add-to-cart").css({
1744                        "background": "#a24e4e", "font-family": "'Sen-Bold', sans-serif", "border": "none",
1745                        "color": "#ffffff", "font-size": "14px", "line-height": "1.0", "font-weight": "400", "letter-spacing": "0.05em", "position": "relative",
1746                        "outline": "none", "padding": "6px 31px 4px", "display": "inline-flex", "justify-content": "center", "align-items": "center", "text-align": "center",
1747                    });
1748                    className.after(t);
1749                    className.hide();
1750                    t.on("click", () => {
1751                        CheckOnAddToCart().then(res => {
1752                            if (res.msg != '') {
1753                                showMessage(res.msg);
1754                            } else {
1755                                className.trigger("click", { eventTrigger: true });
1756                                updateNumberOfProductLimit(res.qty);
1757                            }
1758                        });
1759                    });
1760
1761                    var buttonName = $(".stickyaddtocart");
1762                    var clone = buttonName.clone();
1763                    clone.removeClass("btn").attr("type", "button").attr('data-mc', "add-to-cart").css({ "font-family": "'Sen-Bold', sans-serif", "border": "none", "color": "#ffffff", "line-height": "1.0", "letter-spacing": "0.05em", "position": "relative", "justify-content": "center", "align-items": "center", "text-align": "center", "background": "#a24e4e", "font- size": "14px", "padding": "6px 31px 4px", "height": "40px", });
1764                    buttonName.after(clone);
1765                    buttonName.hide();
1766                    clone.on("click", () => {
1767                        CheckOnAddToCart().then(res => {
1768                            if (res.msg != '') {
1769                                showMessage(res.msg);
1770                            } else {
1771                                buttonName.trigger("click", { eventTrigger: true });
1772                                updateNumberOfProductLimit(res.qty);
1773                            }
1774                        });
1775                    });
1776                });
1777            }
1778        }
1779
1780
1781        if (shopName == '0861banner.myshopify.com') {
1782            $(document).ready(function () {
1783                var clone = $('#add-to-cart').clone();
1784                clone.removeClass("add-to-cart").removeAttr('id').attr("type", "button").attr('data-mc', "add-to-cart").css("padding", '10px 40px').css("line-height", '30px').css("font-size", '14px').css("border-radius", '25px');
1785                $('#add-to-cart').after(clone);
1786                $('#add-to-cart').hide();
1787                clone.on("click", () => {
1788                    CheckOnAddToCart().then(res => {
1789                        if (res.msg != '') {
1790                            showMessage(res.msg);
1791                        } else {
1792                            $('#add-to-cart').trigger("click", { eventTrigger: true });
1793                            updateNumberOfProductLimit(res.qty);
1794                        }
1795                    });
1796                });
1797            });
1798        }
1799
1800        if (shopName == 'imprensa-nacional-casa-da-moeda-test.mysh
1800opify.com') {
1801            $(document).ready(function () {
1802                var clone = $('.single_add_to_cart_button').clone();
1803                var clone1 = clone.clone();
1804                clone1.attr("type", "button").attr('data-mc', "add-to-cart");
1805                clone.after(clone1);
1806                clone.hide();
1807                clone1.on("click", () => {
1808                    CheckOnAddToCart().then(res => {
1809                        if (res.msg != '') {
1810                            showMessage(res.msg);
1811                        } else {
1812                            $('.single_add_to_cart_button').trigger("click", { eventTrigger: true });
1813                            updateNumberOfProductLimit(res.qty);
1814                        }
1815                    });
1816                });
1817            });
1818        }
1819
1820        }
1821
1822        function productLimit(e, cartItems) {
1823            const config = {
1824                locale: Shopify?.locale,
1825                currency: Shopify?.currency,
1826                country: Shopify?.country,
1827            };
1828
1829            $.ajax({
1830                type: "POST",
1831                url: "/a/cart-update?page=product",
1832                dataType: "json",
1833                data: { product_id: e, cartItems: cartItems, config },
1834                success: function (e) {
1835                    console.log("e..l.");
1836                    console.log(e);
1837                    window.mcproductresponse = e;
1838                    if (window.mcproductresponse?.data?.modelDesign) {
1839                        var purchaseLimitMessages = document.getElementById('modelDesignId');
1840                        if (purchaseLimitMessages) {
1841                            purchaseLimitMessages.innerHTML = window.mcproductresponse?.data?.modelDesign;
1842                        }
1843                    }
1844                    limitOnProductSuccess(true);
1845                }
1846            });
1847        }
1848
1849        function ifCheckoutNotWorking(e) {
1850            document.getElementById("mc-loader").style.display = "block";
1851            e.preventDefault();
1852            e.stopImmediatePropagation();
1853            jQuery.getJSON("/cart.js", function (cartItems) {
1854                checkLimitOne(cartItems, true);
1855            });
1856        }
1857
1858        if (typeof jQuery == 'undefined') {
1859            var headTag = document.getElementsByTagName("head")[0];
1860            var jqTag = document.createElement('script');
1861            jqTag.type = 'text/javascript';
1862            jqTag.src = 'https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js';
1863            jqTag.onload = myJQueryCode;
1864            headTag.appendChild(jqTag);
1865        } else {
1866            myJQueryCode();
1867        }
1868    </script>
1868
1869</div><!-- END app snippet -->
1870
1871<!-- END app block --><!-- BEGIN app block: shopify://apps/adcell-tracking-remarketing/blocks/theme_extension/578397e0-3e42-4c27-add7-dfc15023b09b -->
1871<script>
1872    (function () {
1873        var PROXY = '/apps/adcell/bid';
1874
1875        function readCookie(name) {
1876            var m = document.cookie.match('(?:^|; )' + name + '=([^;]*)');
1877            return m ? decodeURIComponent(m[1]) : null;
1878        }
1879        function writeCookie(name, value, maxAge) {
1880            document.cookie = name + '=' + encodeURIComponent(value) + '; Path=/; Max-Age=' + maxAge + '; Secure; SameSite=Lax';
1881        }
1882        function lsGet(name) { try { return window.localStorage.getItem(name); } catch (e) { return null; } }
1883        function lsSet(name, value) { try { window.localStorage.setItem(name, value); } catch (e) {} }
1884        function fetchCart() {
1885            return fetch('/cart.js', { credentials: 'same-origin' })
1886                .then(function (r) { return r.json(); })
1887                .catch(function () { return null; });
1888        }
1889        function stampCart(cart, bid) {
1890            var token = (cart && cart.token) ? cart.token : '';
1891            if (!bid || !token) { return; }
1892            if (((cart && cart.attributes) || {})['_adcell_bid'] === bid) { return; }
1893            var guard = token + ':' + bid;
1894            if (sessionStorage.getItem('adcellCartStamped') === guard) { return; }
1895            fetch('/cart/update.js', {
1896                method: 'POST',
1897                credentials: 'same-origin',
1898                headers: { 'Content-Type': 'application/json' },
1899                body: JSON.stringify({ attributes: { _adcell_bid: bid } })
1900            }).then(function () {
1901                sessionStorage.setItem('adcellCartStamped', guard);
1902            }).catch(function () {});
1903        }
1904
1905        var syTries = 0;
1906        function syncServer(bid, vc) {
1907            fetchCart().then(function (cart) {
1908                var token = (cart && cart.token) ? cart.token : '';
1909                var sy = readCookie('_shopify_y') || '';
1910                stampCart(cart, bid);
1911                if (!sy && syTries < 2) {
1912                    syTries++;
1913                    setTimeout(function () {
1914                        if (readCookie('_shopify_y')) { syncServer(bid, vc); }
1915                    }, 2000);
1916                }
1917                var guard = token + ':' + (bid || '') + ':' + (vc || '') + ':' + sy;
1918                if (sessionStorage.getItem('adcellBidSynced') === guard) { return; }
1919                var body = '';
1920                if (bid) { body += 'bid=' + encodeURIComponent(bid); }
1921                if (vc) { body += (body ? '&' : '') + 'vc=' + encodeURIComponent(vc); }
1922                if (token) { body += (body ? '&' : '') + 'cart_token=' + encodeURIComponent(token); }
1923                if (sy) { body += (body ? '&' : '') + 'sy=' + encodeURIComponent(sy); }
1924                if (!body) { return; }
1925                fetch(PROXY, {
1926                    method: 'POST',
1927                    credentials: 'same-origin',
1928                    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
1929                    body: body
1930                }).then(function () {
1931                    sessionStorage.setItem('adcellBidSynced', guard);
1932                }).catch(function () {});
1933            });
1934        }
1935
1936        var urlBid = new URLSearchParams(window.location.search).get('bid');
1937        var jsBid = readCookie('adcell');
1938        var vc = readCookie('adcell_vc');
1939
1940        if (!urlBid && !jsBid) {
1941            jsBid = lsGet('adcell');
1942            if (jsBid) { writeCookie('adcell', jsBid, 90 * 24 * 3600); }
1943        }
1944        if (urlBid || jsBid) { lsSet('adcell', urlBid || jsBid); }
1945
1946        if (urlBid || jsBid) {
1947            syncServer(urlBid || jsBid, vc);
1948        } else {
1949            fetchCart().then(function (cart) {
1950                var sy = readCookie('_shopify_y');
1951                var token = cart && cart.token;
1952                if (!sy && !token) {
1953                    if (vc) { syncServer(null, vc); }
1954                    return;
1955                }
1956                var qs = [];
1957                if (sy) { qs.push('sy=' + encodeURIComponent(sy)); }
1958                if (token) { qs.push('cart_token=' + encodeURIComponent(token)); }
1959                fetch(PROXY + '?' + qs.join('&'), { credentials: 'same-origin' })
1960                    .then(function (r) { return r.json(); })
1961                    .then(function (data) {
1962                        var bid = (data && data.bid) || null;
1963                        var view = vc || (data && data.vc) || null;
1964                        if (bid) { writeCookie('adcell', bid, 90 * 24 * 3600); lsSet('adcell', bid); }
1965                        if (!vc && data && data.vc) { writeCookie('adcell_vc', data.vc, 24 * 3600); }
1966                        if (!bid && !view) { return; }
1967                        syncServer(bid, view);
1968                    })
1969                    .catch(function () {
1970                        if (vc) { syncServer(null, vc); }
1971                    });
1972            });
1973        }
1974    })();
1975</script>
1975
1976
1977<script id="trad-js" type="text/javascript" src="https://t.adcell.com/js/trad.js?s=shopify&v=1.2.6&pid=11079" async="async"></script>
vendor: 1 bytes, line 1977
1977
1978<script>
1979    var script = document.querySelector("#trad-js");
1980    script.addEventListener('load', function() {
1981        Adcell.Tracking.track();
1982    });
1983</script>
1983
1984
1985<!-- END app block -->
1985<script src="https://cdn.shopify.com/extensions/01a08a53-1431-71a3-8d75-dd04d3c69aa4/form-builder-by-hulkapps-74/assets/form-builder-script.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 1985
1985
1986<script src="https://cdn.shopify.com/extensions/01a0fd03-c455-7b82-9766-74101e55572c/judgeme-771/assets/loader.js" type="text/javascript" defer="defer"></script>
1986
1987<link href="https://cdn.shopify.com/extensions/01a0fb6d-171d-712b-8764-40c957e243dd/version_06d0a5c3-2026-10-02_14h03m/assets/bss-pl-style.min.css" rel="stylesheet" type="text/css" media="all">
1988<script src="https://cdn.shopify.com/extensions/01a09f84-d46f-7905-a8c6-a2d9ec0b62c1/koala-upsell-gift-368/assets/gifts-embed.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 1988
1988
1989<script src="https://cdn.shopify.com/extensions/01a0ae26-3791-7e3e-a78c-3496db49db55/purchase-limit-84/assets/limit-qty.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 1989
1989
1990<script src="https://cdn.shopify.com/extensions/01a0eecd-e3cf-72d9-81f3-f3f881b5b528/checkout-regeln-grosse-warenkoerbe-2026-09-29/assets/widerruf-button.js" type="text/javascript" defer="defer"></script>
1990
1991<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
1992<script>(function(){if ("sendBeacon" in navigator && "performance" in window) {try {var session_token_from_headers = performance.getEntriesByType('navigation')[0].serverTiming.find(x => x.name == '_s').description;} catch {var session_token_from_headers = undefined;}var session_cookie_matches = document.cookie.match(/_shopify_s=([^;]*)/);var session_token_from_cookie = session_cookie_matches && session_cookie_matches.length === 2 ? session_cookie_matches[1] : "";var session_token = session_token_from_headers || session_token_from_cookie || "";function handle_abandonment_event(e) {var entries = performance.getEntries().filter(function(entry) {return /monorail-edge.shopifysvc.com/.test(entry.name);});if (!window.abandonment_tracked && entries.length === 0) {window.abandonment_tracked = true;var currentMs = Date.now();var navigation_start = performance.timing.navigationStart;var payload = {shop_id: 90810417531,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "cart"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
vendor: 1 bytes, line 1992
1992
1993<script>
1994  window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || [];
1995</script>
vendor: 1 bytes, line 1995
1995
1996<script>(function(){var wpmLoader=function(){"use strict";var e=/Googlebot|Storebot-Google|bingbot|Baiduspider|YandexBot|DuckDuckBot|Slurp|facebookexternalhit|Twitterbot|LinkedInBot|Applebot|AdsBot-Google|Mediapartners-Google|APIs-Google|PetalBot|SemrushBot|AhrefsBot|MJ12bot|DotBot|Acunetix|PerplexityBot|Perplexity-User/i,t=/bytedance/i;function i(){try{var e=document.cookie;if(!e||"string"!=typeof e)return;for(var t=0,i=e.split(";");t<i.length;t++){var n=i[t],r=n.indexOf("=");if(-1!==r){var o=n.slice(0,r).trim();if(o){var a=void 0;try{a=decodeURIComponent(o)}catch(e){a=o}if("_shopify_s"===a){var d=n.slice(r+1).trim();try{return decodeURIComponent(d)}catch(e){return d}}}}}return}catch(e){return}}function n(e){try{"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn(e)}catch(e){}}function r(e,t){return"string"==typeof e&&e.length>0&&e.length<=t?e:void 0}function o(e){var t;switch(null==(t=null==e?void 0:e.navigation)?void 0:t.type){case 0:return"navigate";case 1:return"reload";case 2:return"back_forward";default:return}}function a(){var e,t,i;try{var n=null==(i=null==(t=null==(e=self.ShopifyAnalytics)?void 0:e.lib)?void 0:t.trekkie)?void 0:i.state;return"awaiting-consent"===n||"initialized"===n?n:void 0}catch(e){return}}return function(d,s,u,l){var c=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};try{var p=c.trekkieShim;!0!==p&&"true"!==p||null!=window.__TREKKIE_SHIM_QUEUE||(window.__TREKKIE_SHIM_QUEUE=[])}catch(e){}var f,v,h,y,g=(v=(f={modern:/Edge?\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(9{2}|\d{3,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(15\.\d+|(1[6-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(9{2}|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]\d+|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|SamsungBrowser\/([2-9]\d|\d{3,})\.\d+/,legacy:/Edge?\/(1[6-9]|[2-9]\d|\d{3,})\.\d+(\.\d+|)|Firefox\/(5[4-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)|Chrom(ium|e)\/(5[1-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)([\d.]+$|.*Safari\/(?![\d.]+ Edge\/[\d.]+$))|(Maci|X1{2}).+ Version\/(10\.\d+|(1[1-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(3[89]|[4-9]\d|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(10[._]\d+|(1[1-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(5\.\d+|([6-9]|\d{2,})\.\d+)|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(3\.\d+|([4-9]|\d{2,})\.\d+)(\.\d+|)/}).modern,h=f.legacy,(y=navigator.userAgent).match(e)?"bot":y.match(v)?"modern":y.match(h)?"legacy":y.match(t)?"bot":"unknown"),m=function(e){var t,i,n=r(e,128);try{var a=window.performance,d=null==(t=null==a?void 0:a.getEntriesByType)?void 0:t.call(a,"navigation")[0];if(!d)return{requestId:n,navigationType:o(a)};var s="type"in d?r(d.type,64):void 0,u="serverTiming"in d&&Array.isArray(d.serverTiming)?d.serverTiming:[];return{requestId:null!=n?n:r(null==(i=u.find(function(e){return"requestID"===e.name}))?void 0:i.description,128),navigationType:s}}catch(e){return{requestId:n}}}(c.requestId),w=function(e){var t=e.version,r=e.browserTarget,o=e.surface,a=e.shopId,d=e.monorailEndpoint,s=window.location.href;return{emit:function(e){var u=e.status,l=e.errorMsg,c=e.failureReason,p=e.useKeepaliveFallback,f=void 0!==p&&p,v=e.navigationType,h=e.pagehidePersisted,y=e.requestId,g=e.trekkieState;if(d){var m,w;try{var b=(new Date).getTime();m=JSON.stringify({metadata:{event_sent_at_ms:b},events:[{schema_id:"web_pixels_manager_load/3.3",payload:{version:t,bundle_target:r,page_url:s,status:u,surface:o,error_msg:l,failure_reason:c,navigation_type:v,pagehide_persisted:h,request_id:y,trekkie_state:g,shop_id:a,visit_token:i()},metadata:{event_created_at_ms:b}}]})}catch(e){return}try{if("function"==typeof window.navigator.sendBeacon&&-1===(w=window.navigator.userAgent).indexOf("iPhone; CPU iPhone OS 12_")&&-1===w.indexOf("iPad; CPU OS 12_")&&-1===w.indexOf("iPod touch; CPU iPhone OS 12_")&&window.navigator.sendBeacon.bind(window.navigator)(d,m))return}catch(e){}if(f)try{"function"==typeof window.fetch&&window.fetch(d,{method:"POST",headers:{"Content-Type":"text/plain"},body:m,keepalive:!0}
1996).catch(function(){})}catch(e){}else try{var _=new XMLHttpRequest;_.open("POST",d,!0),_.setRequestHeader("Content-Type","text/plain"),_.send(m)}catch(e){n("[Web Pixels Manager] Got an unhandled error while logging to Monorail.")}}else n("[Web Pixels Manager] No Monorail endpoint provided, skipping logging.")}}}({version:u,browserTarget:g,surface:d.surface,shopId:d.shopId,monorailEndpoint:d.monorailEndpoint});if(Boolean(null==(_=null==(b=window.Shopify)?void 0:b.analytics)?void 0:_.replayQueue))w.emit({status:"setup-skipped",errorMsg:"replay queue already initialized."});else{var b,_;w.emit({status:"setup-started"}),window.Shopify=window.Shopify||{};var S=window.Shopify;S.analytics=S.analytics||{};var P=S.analytics;P.replayQueue=[],P.publish=function(e,t,i){return P.replayQueue.push([e,t,i]),!0};try{self.performance.mark("wpm:start")}catch(e){}var k,C="modern"===g?"modern":"legacy",E=(null!=l?l:{modern:"",legacy:""})[C],I=[(k={baseUrl:s,hashVersion:u,buildTarget:C}).baseUrl,"/wpm","/b",k.hashVersion,"modern"===k.buildTarget?"m":"l",".js"].join(""),O=!1,T=!1;try{c.browserTarget=g,function(){O=!0;try{window.addEventListener("pagehide",M)}catch(e){O=!1}}(),R(function(){try{R(x)}catch(e){D(e)}}),w.emit({status:"loading",requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()})}catch(e){D(e)}}function U(){var e;if(q(),!function(){var e,t;return Boolean(null==(t=null==(e=window.Shopify)?void 0:e.analytics)?void 0:t.initialized)}()){var t,i,n;try{if("function"!=typeof(null==(e=window.webPixelsManager)?void 0:e.init))return void A();if(!(null!==(n=i=t=window.webPixelsManager.init(d))&&"function"!=typeof n&&Object(n)===n&&"publish"in i&&"function"==typeof i.publish&&"publishCustomEvent"in i&&"function"==typeof i.publishCustomEvent&&"visitor"in i&&"function"==typeof i.visitor))return void A()}catch(e){return void A(e)}var r=window.Shopify.analytics;r.replayQueue.forEach(function(e){var i=e[0],n=e[1],r=e[2];t.publishCustomEvent(i,n,r)}),r.replayQueue=[],r.publish=t.publishCustomEvent,r.visitor=t.visitor,r.initialized=!0}}function A(e){B("manager_api_unavailable",void 0===e?void 0:Q(e))}function x(){B("script_load_failed","".concat(I," has failed to load"))}function B(e,t){T||(T=!0,q(),w.emit({status:"failed",errorMsg:t,failureReason:e,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function M(e){O&&(q(),w.emit({status:"pagehide-while-loading",useKeepaliveFallback:!0,pagehidePersisted:e.persisted,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function q(){O=!1;try{window.removeEventListener("pagehide",M)}catch(e){}}function R(e){var t;!function(e){var t=e.src,i=e.async,n=void 0===i||i,r=e.onload,o=e.onerror,a=e.sri,d=e.scriptDataAttributes,s=void 0===d?{}:d,u=document.createElement("script"),l=document.querySelector("head"),c=document.querySelector("body");if(u.async=n,u.src=t,a&&(u.integrity=a,u.crossOrigin="anonymous"),s)for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p))try{u.dataset[p]=String(s[p])}catch(e){}if(r&&u.addEventListener("load",r),o&&u.addEventListener("error",o),l)l.appendChild(u);else{if(!c)throw new Error("Did not find a head or body element to append the script");c.appendChild(u)}}({src:I,async:!0,onload:U,onerror:e,sri:(t=E,"string"==typeof t&&/^sha384-[A-Za-z0-9+/=]+$/.test(t)?E:""),scriptDataAttributes:c})}function D(e){B("script_append_failed",Q(e))}function Q(e){return e instanceof Error?e.message:"Unknown error"}}}();wpmLoader({shopId: 90810417531,storefrontBaseUrl: "https://odiporo.de",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://odiporo.de/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b","7ee89bf1"],webPixelsConfigList: [{"id":"1981874555","configuration":"{\"pixel_id\":\"24670573312611090\",\"pixel_type\":\"facebook_pixel\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"96420dbe9ea96c426a1b7f364f977719","type":"APP","apiClientId":2329312,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]}
1996,{"id":"1936589179","configuration":"{\"webPixelName\":\"Judge.me\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"8acc938b1a30dc7624e304493ca567d7","type":"APP","apiClientId":683015,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1888813435","configuration":"{\"pixelCode\":\"D1JRB3RC77U8NM2EQM60\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"22e92c2ad45662f435e4801458fb78cc","type":"APP","apiClientId":4383523,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":[]},"dataSharingState":"optimized"},{"id":"1850147195","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"G-KQW87QQ8C6\\\",\\\"GT-PLVXLZN9\\\",\\\"GT-PJWWR3DB\\\"],\\\"target_country\\\":\\\"ZZ\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"G-KQW87QQ8C6\\\",\\\"AW-10820734941\\\/16EWCOfEu-AaEN2f3aco\\\"]},{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"G-KQW87QQ8C6\\\",\\\"AW-10820734941\\\/aanTCOvFu-AaEN2f3aco\\\"]},{\\\"type\\\":\\\"remove_from_cart\\\",\\\"action_label\\\":\\\"G-KQW87QQ8C6\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-KQW87QQ8C6\\\",\\\"AW-10820734941\\\/HCJ5COjFu-AaEN2f3aco\\\",\\\"MC-7J6TNED5ZZ\\\"]},{\\\"type\\\":\\\"add_shipping_info\\\",\\\"action_label\\\":\\\"G-KQW87QQ8C6\\\"},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-KQW87QQ8C6\\\",\\\"AW-10820734941\\\/48EmCOTEu-AaEN2f3aco\\\",\\\"MC-7J6TNED5ZZ\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-KQW87QQ8C6\\\",\\\"AW-10820734941\\\/a1leCO3Eu-AaEN2f3aco\\\",\\\"MC-7J6TNED5ZZ\\\"]},{\\\"type\\\":\\\"view_item_list\\\",\\\"action_label\\\":\\\"G-KQW87QQ8C6\\\"},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":[\\\"G-KQW87QQ8C6\\\",\\\"AW-10820734941\\\/q57VCO7Fu-AaEN2f3aco\\\"]},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":[\\\"G-KQW87QQ8C6\\\",\\\"AW-10820734941\\\/gtULCOrEu-AaEN2f3aco\\\"]},{\\\"type\\\":\\\"view_cart\\\",\\\"action_label\\\":\\\"G-KQW87QQ8C6\\\"}],\\\"enable_monitoring_mode\\\":false}\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"a3321ca85cf5aaf6b57585fcd8d67b3a","type":"APP","apiClientId":1780363,"privacyPurposes":[],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized","enabledFlags":["9a3ed68a"]},{"id":"1848639867","configuration":"{\"apiKey\":\"1g7I4c8g3n\",\"host\":\"searchserverapi1.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"5559ea45e47b67d15b30b79e7c6719da","type":"APP","apiClientId":578825,"privacyPurposes":["ANALYTICS"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"unrestricted"},{"id":"1772224891","configuration":"{\"accountID\":\"2232\",\"programID\":\"11079\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"d6602526b535375a3751906f21a618e2","type":"APP","apiClientId":2982569,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"1734705531","configuration":"{\"advertiserId\":\"32931\",\"shopDomain\":\"v80rnh-af.myshopify.com\",\"appVersion\":\"shopifyApp_5.2.3\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"c287d09bac7e7a912a76f3941fab1c2f","type":"APP","apiClientId":2887701,"privacyPurposes":["ANALYTICS","MARKETING"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"}
1996,{"id":"1666285947","configuration":"{\"myshopifyDomain\":\"v80rnh-af.myshopify.com\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"23b97d18e2aa74363140dc29c9284e87","type":"APP","apiClientId":2775569,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_address","read_customer_email","read_customer_name","read_customer_phone","read_customer_personal_data"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"253952379","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["MARKETING","SALE_OF_DATA"],"name":"ADCELL Conversion Tracking"},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"odiporo.de - Smarte Elektronik für jeden Anspruch","paymentSettings":{"currencyCode":"EUR"},"myshopifyDomain":"v80rnh-af.myshopify.com","countryCode":"DE","storefrontUrl":"https:\/\/odiporo.de"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[{"id":"15083900469627","handle":"flexpump-mobiler-mini-kompressor","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"55457096040827","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]}],"purchasingCompany":null},},"https://odiporo.de/cdn","5982071ew7ea472e3p69b68784m2150dfea",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"true","themeId":"179096813947","themeStoreId":"2412","themePublished":"true","eventMetadataId":"8800b9a0-608f-4551-b772-4395efa0ae8f","pageType":"cart","shopId":"90810417531","storefrontBaseUrl":"https:\/\/odiporo.de","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\", \"8450a54b\", \"7ee89bf1\"]","isMerchantRequest":"false","hashVersion":"5982071ew7ea472e3p69b68784m2150dfea","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script>
1996<script>
1997  window.ShopifyAnalytics = window.ShopifyAnalytics || {};
1998  window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
1999  window.ShopifyAnalytics.meta.currency = 'EUR';
2000  var meta = {"page":{"pageType":"cart","requestId":"ccd1293e-0848-4e78-b196-6fac301051d1-1791081636"}};
2001  for (var attr in meta) {
2002    window.ShopifyAnalytics.meta[attr] = meta[attr];
2003  }
2004</script>
vendor: 1 bytes, line 2004
2004
2005<script class="analytics">
2006  (function () {
2007    var customDocumentWrite = function(content) {
2008      var jquery = null;
2009
2010      if (window.jQuery) {
2011        jquery = window.jQuery;
2012      } else if (window.Checkout && window.Checkout.$) {
2013        jquery = window.Checkout.$;
2014      }
2015
2016      if (jquery) {
2017        jquery('body').append(content);
2018      }
2019    };
2020
2021    var hasLoggedConversion = function(token) {
2022      if (token) {
2023        return document.cookie.indexOf('loggedConversion=' + token) !== -1;
2024      }
2025      return false;
2026    }
2027
2028    var setCookieIfConversion = function(token) {
2029      if (token) {
2030        var twoMonthsFromNow = new Date(Date.now());
2031        twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2);
2032
2033        document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow;
2034      }
2035    }
2036
2037    var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || [];
2038    window.ShopifyAnalytics.lib.trekkie = window.trekkie;
2039    if (trekkie.integrations) {
2040      return;
2041    }
2042    trekkie.methods = [
2043      'identify',
2044      'page',
2045      'ready',
2046      'track',
2047      'trackForm',
2048      'trackLink'
2049    ];
2050    trekkie.factory = function(method) {
2051      return function() {
2052        var args = Array.prototype.slice.call(arguments);
2053        args.unshift(method);
2054        trekkie.push(args);
2055        if (method == 'track' || method == 'page') {
2056          var pageUrl;
2057          try {
2058            pageUrl = window.location.href;
2059          } catch (e) {}
2060          var pageReferrer;
2061          try {
2062            pageReferrer = document.referrer;
2063          } catch (e) {}
2064          try {
2065            if (window.__TREKKIE_SHIM_QUEUE == null) {
2066              window.__TREKKIE_SHIM_QUEUE = [];
2067            }
2068            window.__TREKKIE_SHIM_QUEUE.push({
2069              from: 'trekkie-stub',
2070              method: method,
2071              args: args.slice(1),
2072              pageContext: {
2073                url: pageUrl,
2074                referrer: pageReferrer
2075              }
2076            });
2077          } catch (e) {
2078            // no-op
2079          }
2080        }
2081        return trekkie;
2082      };
2083    };
2084    for (var i = 0; i < trekkie.methods.length; i++) {
2085      var key = trekkie.methods[i];
2086      trekkie[key] = trekkie.factory(key);
2087    }
2088    trekkie.load = function(config) {
2089      trekkie.config = config || {};
2090      trekkie.config.initialDocumentCookie = document.cookie;
2091      var first = document.getElementsByTagName('script')[0];
2092var script = document.createElement('script');
2093script.type = 'text/javascript';
2094script.onerror = function(e) {
2095  var scriptFallback = document.createElement('script');
2096  scriptFallback.type = 'text/javascript';
2097  scriptFallback.onerror = function(error) {
2098          var Monorail = {
2099      produce: function produce(monorailDomain, schemaId, payload) {
2100        var currentMs = new Date().getTime();
2101        var event = {
2102          schema_id: schemaId,
2103          payload: payload,
2104          metadata: {
2105            event_created_at_ms: currentMs,
2106            event_sent_at_ms: currentMs
2107          }
2108        };
2109        return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event));
2110      },
2111      sendRequest: function sendRequest(endpointUrl, payload) {
2112        // Try the sendBeacon API
2113        if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) {
2114          var blobData = new window.Blob([payload], {
2115            type: 'text/plain'
2116          });
2117
2118          if (window.navigator.sendBeacon(endpointUrl, blobData)) {
2119            return true;
2120          } // sendBeacon was not successful
2121
2122        } // XHR beacon
2123
2124        var xhr = new XMLHttpRequest();
2125
2126        try {
2127          xhr.open('POST', endpointUrl);
2128          xhr.setRequestHeader('Content-Type', 'text/plain');
2129          xhr.send(payload);
2130        } catch (e) {
2131          console.log(e);
2132        }
2133
2134        return false;
2135      },
2136      isIos12: function isIos12() {
2137        return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1;
2138      }
2139    };
2140    Monorail.produce('monorail-edge.shopifysvc.com',
2141      'trekkie_storefront_load_errors/1.1',
2142      {shop_id: 90810417531,
2143      theme_id: 179096813947,
2144      app_name: "storefront",
2145      context_url: window.location.href,
2146      source_url: "//odiporo.de/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js"});
2147
2148  };
2149  scriptFallback.async = true;
2150  scriptFallback.src = '//odiporo.de/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js';
2151  first.parentNode.insertBefore(scriptFallback, first);
2152};
2153script.async = true;
2154script.src = '//odiporo.de/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js';
2155first.parentNode.insertBefore(script, first);
2156
2157    };
2158    trekkie.load(
2159      {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":90810417531,"isMerchantRequest":null,"themeId":179096813947,"themeCityHash":"16345578726536469421","contentLanguage":"de","currency":"EUR","eventMetadataId":"8800b9a0-608f-4551-b772-4395efa0ae8f"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","7ee89bf1","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}}
2160    );
2161
2162    var loaded = false;
2163    trekkie.ready(function() {
2164      if (loaded) return;
2165      loaded = true;
2166
2167      window.ShopifyAnalytics.lib = window.trekkie;
2168
2169      var originalDocumentWrite = document.write;
2170      document.write = customDocumentWrite;
2171      try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {};
2172      document.write = originalDocumentWrite;
2173
2174      var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/)
2175      var token = match? match[1]: undefined;
2176      if (!hasLoggedConversion(token)) {
2177        setCookieIfConversion(token);
2178        
2179      }
2180    });
2181
2182    window.ShopifyAnalytics.lib.page(null,{"pageType":"cart","requestId":"ccd1293e-0848-4e78-b196-6fac301051d1-1791081636","shopifyEmitted":true});
2183
2184    var eventsListenerScript = document.createElement('script');
2185    eventsListenerScript.async = true;
2186    eventsListenerScript.src = "//odiporo.de/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js";
2187    document.getElementsByTagName('head')[0].appendChild(eventsListenerScript);
2188})();</script>
vendor: 1 bytes, line 2188
2188
2189<script
2190  defer
2191  src="https://odiporo.de/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.4.min.js"
2192  data-application="storefront-renderer"
2193  data-shop-id="90810417531"
2194  data-render-region="gcp-us-west1"
2195  data-page-type="cart"
2196  data-theme-instance-id="179096813947"
2197  data-theme-name="Concept"
2198  data-theme-version="4.1.0"
2199  data-monorail-region="shop_domain"
2200  data-resource-timing-sampling-rate="10"
2201  data-shs="true"
2202  data-shs-beacon="true"
2203  data-shs-export-with-fetch="true"
2204  data-shs-logs-sample-rate="1"
2205  data-shs-beacon-endpoint="https://odiporo.de/api/collect"
2206></script>
2206
2207<meta name="shopify-y" content="de61e3ea-ba66-4ce5-8134-ed1a5160e66a" data-expiration="1822639237000"><meta name="shopify-s" content="b1f87317-c840-4dbe-b269-1f71643c9dcb" data-expiration="1791083437000"><meta name="new-cookie-storage-activated" content="t">
2208</head>
2209
2210<body class="template-cart" data-rounded-button="round-slight" data-rounded-input="round-slight" data-rounded-block="round" data-rounded-card="round" data-button-hover="standard" data-lazy-image data-title-animation data-page-rendering>
2211  <a class="sr-only skip-link" href="#MainContent">Direkt zum Inhalt</a>
2212
2213  <!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 2213-2214
2213
2214<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
2214GTM-KX7KVKS
vendor: 83 bytes, lines 2214-2215
2214"
2215height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
2216<!-- End Google Tag Manager (noscript) --><mouse-cursor class="mouse-cursor z-50 fixed select-none flex items-center justify-center pointer-events-none rounded-full"> 
2217  <svg class="icon icon-cursor" stroke="currentColor" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
2218    <path d="M10 30L30 10M10 10L30 30" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"></path>
2219  </svg>
2220</mouse-cursor>
2221<!-- BEGIN sections: header-group -->
2222<div id="shopify-section-sections--24796503015803__announcement-bar" class="shopify-section shopify-section-group-header-group topbar-section"><style>
2223    :root {--topbar-height: var(--sp-12);}
2224    
2225    @media screen and (min-width: 1536px) {
2226      :root {--topbar-height: var(--sp-14);}
2227    }
2228
2229    #shopify-section-sections--24796503015803__announcement-bar {
2230      --gradient-background: #ffd900;
2231      --color-background: 255 217 0;
2232      --color-foreground: 6 6 6;
2233      --color-highlight: 255 221 191;
2234    }
2235  </style><div class="topbar topbar--center page-width page-width--full section section--rounded relative grid py-0 h-full w-full items-center"><div class="social-icons hidden lg:flex items-center"><ul class="flex flex-wrap items-center gap-6"><li><a href="https://www.facebook.com/Odiporo" class="social_platform block relative" is="magnet-link" title="odiporo.de - Smarte Elektronik für jeden Anspruch auf Facebook"><svg class="icon icon-facebook icon-sm" viewBox="0 0 24 24" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
2236      <path d="M9.03153 23L9 13H5V9H9V6.5C9 2.7886 11.2983 1 14.6091 1C16.1951 1 17.5581 1.11807 17.9553 1.17085V5.04948L15.6591 5.05052C13.8584 5.05052 13.5098 5.90614 13.5098 7.16171V9H18.75L16.75 13H13.5098V23H9.03153Z"/>
2237    </svg><span class="sr-only">Facebook</span>
2238        </a>
2239      </li><li><a href="https://www.instagram.com/odiporo.de/" class="social_platform block relative" is="magnet-link" title="odiporo.de - Smarte Elektronik für jeden Anspruch auf Instagram"><svg class="icon icon-instagram icon-sm" viewBox="0 0 24 24" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
2240      <path d="M12 2.98C14.94 2.98 15.28 2.99 16.44 3.04C17.14 3.04 17.83 3.18 18.48 3.42C18.96 3.6 19.39 3.88 19.75 4.24C20.12 4.59 20.4 5.03 20.57 5.51C20.81 6.16 20.94 6.85 20.95 7.55C21 8.71 21.01 9.06 21.01 12C21.01 14.94 21 15.28 20.95 16.44C20.95 17.14 20.81 17.83 20.57 18.48C20.39 18.95 20.11 19.39 19.75 19.75C19.39 20.11 18.96 20.39 18.48 20.57C17.83 20.81 17.14 20.94 16.44 20.95C15.28 21 14.93 21.01 12 21.01C9.07 21.01 8.72 21 7.55 20.95C6.85 20.95 6.16 20.81 5.51 20.57C5.03 20.39 4.6 20.11 4.24 19.75C3.87 19.4 3.59 18.96 3.42 18.48C3.18 17.83 3.05 17.14 3.04 16.44C2.99 15.28 2.98 14.93 2.98 12C2.98 9.07 2.99 8.72 3.04 7.55C3.04 6.85 3.18 6.16 3.42 5.51C3.6 5.03 3.88 4.6 4.24 4.24C4.59 3.87 5.03 3.59 5.51 3.42C6.16 3.18 6.85 3.05 7.55 3.04C8.71 2.99 9.06 2.98 12 2.98ZM12 1C9.01 1 8.64 1.01 7.47 1.07C6.56 1.09 5.65 1.26 4.8 1.58C4.07 1.86 3.4 2.3 2.85 2.85C2.3 3.41 1.86 4.07 1.58 4.8C1.26 5.65 1.09 6.56 1.07 7.47C1.02 8.64 1 9.01 1 12C1 14.99 1.01 15.36 1.07 16.53C1.09 17.44 1.26 18.35 1.58 19.2C1.86 19.93 2.3 20.6 2.85 21.15C3.41 21.7 4.07 22.14 4.8 22.42C5.65 22.74 6.56 22.91 7.47 22.93C8.64 22.98 9.01 23 12 23C14.99 23 15.36 22.99 16.53 22.93C17.44 22.91 18.35 22.74 19.2 22.42C19.93 22.14 20.6 21.7 21.15 21.15C21.7 20.59 22.14 19.93 22.42 19.2C22.74 18.35 22.91 17.44 22.93 16.53C22.98 15.36 23 14.99 23 12C23 9.01 22.99 8.64 22.93 7.47C22.91 6.56 22.74 5.65 22.42 4.8C22.14 4.07 21.7 3.4 21.15 2.85C20.59 2.3 19.93 1.86 19.2 1.58C18.35 1.26 17.44 1.09 16.53 1.07C15.36 1.02 14.99 1 12 1ZM12 6.35C10.88 6.35 9.79 6.68 8.86 7.3C7.93 7.92 7.21 8.8 6.78 9.84C6.35 10.87 6.24 12.01 6.46 13.1C6.68 14.2 7.22 15.2 8.01 15.99C8.8 16.78 9.81 17.32 10.9 17.54C12 17.76 13.13 17.65 14.16 17.22C15.19 16.79 16.07 16.07 16.7 15.14C17.32 14.21 17.65 13.12 17.65 12C17.65 10.5 17.05 9.06 16 8.01C14.94 6.95 13.5 6.36 12.01 6.36L12 6.35ZM12 15.67C11.27 15.67 10.57 15.45 9.96 15.05C9.36 14.65 8.89 14.07 8.61 13.4C8.33 12.73 8.26 11.99 8.4 11.28C8.54 10.57 8.89 9.92 9.4 9.4C9.91 8.88 10.5
22407 8.54 11.28 8.4C11.99 8.26 12.73 8.33 13.4 8.61C14.07 8.89 14.64 9.36 15.05 9.96C15.45 10.56 15.67 11.27 15.67 12C15.67 12.97 15.28 13.91 14.6 14.59C13.91 15.28 12.98 15.66 12.01 15.66L12 15.67ZM17.87 7.45C18.6 7.45 19.19 6.86 19.19 6.13C19.19 5.4 18.6 4.81 17.87 4.81C17.14 4.81 16.55 5.4 16.55 6.13C16.55 6.86 17.14 7.45 17.87 7.45Z"/>
2241    </svg><span class="sr-only">Instagram</span>
2242        </a>
2243      </li><li><a href="https://www.youtube.com/channel/UCFAKK0tiJMLwDbjcoZQPiiA/videos" class="social_platform block relative" is="magnet-link" title="odiporo.de - Smarte Elektronik für jeden Anspruch auf YouTube"><svg class="icon icon-youtube icon-sm" viewBox="0 0 24 24" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
2244      <path d="M23.8 7.6C23.8 7.6 23.6 5.9 22.8 5.2C21.9 4.2 20.9 4.2 20.4 4.2C17 4 12 4 12 4C12 4 7 4 3.6 4.2C3.1 4.3 2.1 4.3 1.2 5.2C0.5 5.9 0.2 7.6 0.2 7.6C0.2 7.6 0 9.5 0 11.5V13.3C0 15.2 0.2 17.2 0.2 17.2C0.2 17.2 0.4 18.9 1.2 19.6C2.1 20.6 3.3 20.5 3.8 20.6C5.7 20.8 12 20.8 12 20.8C12 20.8 17 20.8 20.4 20.5C20.9 20.4 21.9 20.4 22.8 19.5C23.5 18.8 23.8 17.1 23.8 17.1C23.8 17.1 24 15.2 24 13.2V11.4C24 9.5 23.8 7.6 23.8 7.6ZM9.5 15.5V8.8L16 12.2L9.5 15.5Z"/>
2245    </svg><span class="sr-only">YouTube</span>
2246        </a>
2247      </li><li><a href="https://www.tiktok.com/@odiporo.de" class="social_platform block relative" is="magnet-link" title="odiporo.de - Smarte Elektronik für jeden Anspruch auf TikTok"><svg class="icon icon-tiktok icon-sm" viewBox="0 0 24 24" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
2248      <path d="M10.6315 8.937V13.059C10.1123 12.9221 9.56911 12.9034 9.0418 13.0044C8.5145 13.1054 8.01657 13.3234 7.58473 13.6424C7.15288 13.9613 6.79813 14.3732 6.54661 14.8475C6.2951 15.3218 6.15324 15.8466 6.13148 16.383C6.10175 16.8449 6.17125 17.3078 6.33531 17.7405C6.49938 18.1733 6.7542 18.5659 7.08266 18.892C7.41111 19.2181 7.80557 19.4701 8.23952 19.631C8.67346 19.7919 9.13684 19.8581 9.59848 19.825C10.0648 19.8608 10.5333 19.7949 10.9717 19.6319C11.41 19.4689 11.8078 19.2126 12.1374 18.8809C12.4671 18.5491 12.7208 18.1498 12.881 17.7104C13.0413 17.271 13.1042 16.8021 13.0655 16.336V0H17.1425C17.8355 4.315 19.9935 5.316 22.8825 5.778V9.913C20.8804 9.74881 18.9491 9.09645 17.2575 8.013V16.18C17.2575 19.88 15.0675 24 9.63048 24C8.61045 23.9955 7.60156 23.7875 6.66297 23.3881C5.72437 22.9886 4.87496 22.4059 4.16451 21.6739C3.45407 20.942 2.89689 20.0755 2.52563 19.1254C2.15438 18.1754 1.97652 17.1607 2.00248 16.141C2.03479 15.0794 2.29174 14.0366 2.75639 13.0815C3.22105 12.1265 3.88285 11.2807 4.69819 10.6C5.51352 9.9193 6.46387 9.41915 7.48658 9.1325C8.50929 8.84586 9.58114 8.77923 10.6315 8.937Z"/>
2249    </svg><span class="sr-only">TikTok</span>
2250        </a>
2251      </li></ul></div><div class="announcement-bar h-full flex justify-center lg:justify-center without-nav relative">
2252        <announcement-bar id="Slider-sections--24796503015803__announcement-bar" class="announcement__slides flex justify-center w-full h-full flickity" autoplay autoplay-speed="5"><div class="announcement__slide flex h-full" ><div class="announcement__content flex items-center gap-2"><span class="announcement-icon hidden md:block"><svg class="icon icon-truck icon-xs stroke-1" viewBox="0 0 16 16" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
2253      <path d="M6.66675 12.6667H9.33342M6.66675 12.6667C6.66675 13.7712 5.77132 14.6667 4.66675 14.6667C3.56218 14.6667 2.66675 13.7712 2.66675 12.6667M6.66675 12.6667C6.66675 11.5621 5.77132 10.6667 4.66675 10.6667C3.56218 10.6667 2.66675 11.5621 2.66675 12.6667M9.33342 12.6667C9.33342 13.7712 10.2288 14.6667 11.3334 14.6667C12.438 14.6667 13.3334 13.7712 13.3334 12.6667M9.33342 12.6667C9.33342 11.5621 10.2288 10.6667 11.3334 10.6667C12.438 10.6667 13.3334 11.5621 13.3334 12.6667M13.3334 12.6667V12.6667C14.438 12.6667 15.3334 11.7712 15.3334 10.6667V4.53334C15.3334 3.41324 15.3334 2.85319 15.1154 2.42536C14.9237 2.04904 14.6177 1.74308 14.2414 1.55133C13.8136 1.33334 13.2535 1.33334 12.1334 1.33334H10.3334C9.40153 1.33334 8.93559 1.33334 8.56805 1.48558C8.07799 1.68857 7.68864 2.07792 7.48566 2.56798C7.33342 2.93552 7.33342 3.40146 7.33342 4.33334V4.33334C7.33342 5.26523 7.33342 5.73117 7.18117 6.09871C6.97819 6.58877 6.58884 6.97811 6.09878 7.1811C5.73124 7.33334 5.2653 7.33334 4.33341 7.33334H1.00008M2.66675 12.6667V12.6667C2.20176 12.6667 1.9
22536927 12.6667 1.77852 12.6156C1.26088 12.4769 0.85656 12.0725 0.717859 11.5549C0.666748 11.3642 0.666748 11.1317 0.666748 10.6667V8.86795C0.666748 8.44463 0.666748 8.23297 0.688385 8.0258C0.734513 7.58411 0.853872 7.15318 1.04157 6.7507C1.1296 6.56192 1.2385 6.38042 1.4563 6.01743V6.01743C1.78307 5.47281 1.94646 5.20049 2.14753 4.97976C2.57779 4.50743 3.14762 4.18479 3.77402 4.05886C4.06674 4.00001 4.38431 4.00001 5.01944 4.00001H7.33342" stroke-linecap="round" stroke-linejoin="round"/>
2254    </svg></span><p class="announcement-text leading-tight">Kostenlose & schnelle Lieferung</p></div></div><div class="announcement__slide flex h-full" aria-hidden="true" ><div class="announcement__content flex items-center gap-2"><span class="announcement-icon hidden md:block"><svg class="icon icon-wallet icon-xs stroke-1" viewBox="0 0 16 16" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
2255      <path d="M1.33325 2.66668V11.4667C1.33325 12.5868 1.33325 13.1468 1.55124 13.5747C1.74299 13.951 2.04895 14.2569 2.42527 14.4487C2.85309 14.6667 3.41315 14.6667 4.53325 14.6667H11.4666C12.5867 14.6667 13.1467 14.6667 13.5746 14.4487C13.9509 14.2569 14.2569 13.951 14.4486 13.5747C14.6666 13.1468 14.6666 12.5868 14.6666 11.4667V7.20001C14.6666 6.07991 14.6666 5.51985 14.4486 5.09203C14.2569 4.71571 13.9509 4.40974 13.5746 4.218C13.1467 4.00001 12.5867 4.00001 11.4666 4.00001H7.99992M14.6666 7.33334H14.3333C13.2287 7.33334 12.3333 8.22877 12.3333 9.33334V9.33334C12.3333 10.4379 13.2287 11.3333 14.3333 11.3333H14.6666M11.3333 4.00001L10.7733 3.25334C10.2453 2.54935 9.98126 2.19735 9.64668 1.94347C9.35035 1.71862 9.01478 1.55083 8.6571 1.44868C8.25325 1.33334 7.81325 1.33334 6.93325 1.33334H2.66659C1.93021 1.33334 1.33325 1.9303 1.33325 2.66668V2.66668C1.33325 3.40306 1.93021 4.00001 2.66659 4.00001H11.3333Z" stroke-linecap="round" stroke-linejoin="round"/>
2256    </svg></span><p class="announcement-text leading-tight">Sichere & flexible Zahlungsarten</p></div></div></announcement-bar></div></div>
2257</div><div id="shopify-section-sections--24796503015803__header" class="shopify-section shopify-section-group-header-group header-section"><style>
2258  #shopify-section-sections--24796503015803__header {
2259    --section-padding-top: 32px;
2260    --section-padding-bottom: 32px;
2261    --color-background: 255 255 255;
2262    --color-foreground: 23 23 23;
2263    --color-transparent: 255 255 255;
2264  }
2265</style><menu-drawer id="MenuDrawer" class="menu-drawer drawer drawer--start z-30 fixed bottom-0 left-0 h-full w-full pointer-events-none"
2266  data-section-id="sections--24796503015803__header"
2267  hidden
2268>
2269  <overlay-element class="overlay fixed-modal invisible opacity-0 fixed bottom-0 left-0 w-full h-screen pointer-events-none" aria-controls="MenuDrawer" aria-expanded="false"></overlay-element>
2270  <div class="drawer__inner z-10 absolute top-0 flex flex-col w-full h-full overflow-hidden">
2271    <gesture-element class="drawer__header flex justify-between opacity-0 invisible relative">
2272      <span class="drawer__title heading lg:text-3xl text-2xl leading-none tracking-tight"></span>
2273      <button class="button button--secondary button--close drawer__close hidden sm:flex items-center justify-center" type="button" is="hover-button" aria-controls="MenuDrawer" aria-expanded="false" aria-label="Schließen">
2274        <span class="btn-fill" data-fill></span>
2275        <span class="btn-text"><svg class="icon icon-close icon-sm" viewBox="0 0 20 20" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
2276      <path stroke-linecap="round" stroke-linejoin="round" d="M5 15L15 5M5 5L15 15"></path>
2277    </svg></span>
2278      </button>
2279    </gesture-element>
2280    <div class="drawer__content opacity-0 invisible flex flex-col h-full grow shrink">
2281      <nav class="relative grow overflow-hidden" role="navigation">
2282        <ul class="drawer__scrollable drawer__menu relative w-full h-full" role="list" data-parent><li class="drawer__menu-group"><details is="menu-details">
2283  <summary class="drawer__menu-item block cursor-pointer relative" aria-expanded="false">
2284    <button type="button" class="heading text-2xl leading-none tracking-tight" is="api-button" data-id="DrawerSubMenu-sections--24796503015803__header-1" data-section-id="sections--24796503015803__header">Fernseher</button>
2285  </summary>
2286  <div class="drawer__submenu z-1 absolute top-0 left-0 flex flex-col w-full h-full" data-parent>
2287    <button type="button" class="tracking-tight heading text-base shrink-0 flex items-center gap-3 w-full" data-close>Fernseher</button><div id="DrawerSubMenu-sections--24796503015803__header-1" class="drawer__scrollable flex flex-col h-full"></div></div>
2288</details>
2289</li><li class="drawer__menu-group"><details is="menu-details">
2290  <summary class="drawer__menu-item block cursor-pointer relative" aria-expanded="false">
2291    <button type="button" class="heading text-2xl leading-none tracking-tight" is="api-button" data-id="DrawerSubMenu-sections--24796503015803__header-2" data-section-id="sections--24796503015803__header">Monitore</button>
2292  </summary>
2293  <div class="drawer__submenu z-1 absolute top-0 left-0 flex flex-col w-full h-full" data-parent>
2294    <button type="button" class="tracking-tight heading text-base shrink-0 flex items-center gap-3 w-full" data-close>Monitore</button><div id="DrawerSubMenu-sections--24796503015803__header-2" class="drawer__scrollable flex flex-col h-full"></div></div>
2295</details>
2296</li><li class="drawer__menu-group"><details is="menu-details">
2297  <summary class="drawer__menu-item block cursor-pointer relative" aria-expanded="false">
2298    <button type="button" class="heading text-2xl leading-none tracking-tight" is="api-button" data-id="DrawerSubMenu-sections--24796503015803__header-3" data-section-id="sections--24796503015803__header">Fitness</button>
2299  </summary>
2300  <div class="drawer__submenu z-1 absolute top-0 left-0 flex flex-col w-full h-full" data-parent>
2301    <button type="button" class="tracking-tight heading text-base shrink-0 flex items-center gap-3 w-full" data-close>Fitness</button><div id="DrawerSubMenu-sections--24796503015803__header-3" class="drawer__scrollable flex flex-col h-full"></div></div>
2302</details>
2303</li><li class="drawer__menu-group"><details is="menu-details">
2304  <summary class="drawer__menu-item block cursor-pointer relative" aria-expanded="false">
2305    <button type="button" class="heading text-2xl leading-none tracking-tight" is="api-button" data-id="DrawerSubMenu-sections--24796503015803__header-4" data-section-id="sections--24796503015803__header">E-Scooter</button>
2306  </summary>
2307  <div class="drawer__submenu z-1 absolute top-0 left-0 flex flex-col w-full h-full" data-parent>
2308    <button type="button" class="tracking-tight heading text-base shrink-0 flex items-center gap-3 w-full" data-close>E-Scooter</button><div id="DrawerSubMenu-sections--24796503015803__header-4" class="drawer__scrollable flex flex-col h-full"></div></div>
2309</details>
2310</li><li class="drawer__menu-group"><details is="menu-details">
2311  <summary class="drawer__menu-item block cursor-pointer relative" aria-expanded="false">
2312    <button type="button" class="heading text-2xl leading-none tracking-tight" is="api-button" data-id="DrawerSubMenu-sections--24796503015803__header-5" data-section-id="sections--24796503015803__header">Reinigungsroboter</button>
2313  </summary>
2314  <div class="drawer__submenu z-1 absolute top-0 left-0 flex flex-col w-full h-full" data-parent>
2315    <button type="button" class="tracking-tight heading text-base shrink-0 flex items-center gap-3 w-full" data-close>Reinigungsroboter</button><div id="DrawerSubMenu-sections--24796503015803__header-5" class="drawer__scrollable flex flex-col h-full"></div></div>
2316</details>
2317</li><li class="drawer__menu-group"><details is="menu-details">
2318  <summary class="drawer__menu-item block cursor-pointer relative" aria-expanded="false">
2319    <button type="button" class="heading text-2xl leading-none tracking-tight" is="api-button" data-id="DrawerSubMenu-sections--24796503015803__header-6" data-section-id="sections--24796503015803__header">Wohnen</button>
2320  </summary>
2321  <div class="drawer__submenu z-1 absolute top-0 left-0 flex flex-col w-full h-full" data-parent>
2322    <button type="button" class="tracking-tight heading text-base shrink-0 flex items-center gap-3 w-full" data-close>Wohnen</button><div id="DrawerSubMenu-sections--24796503015803__header-6" class="drawer__scrollable flex flex-col h-full"></div></div>
2323</details>
2324</li><li class="drawer__menu-group"><a class="drawer__menu-item block heading text-2xl leading-none tracking-tight" href="/pages/b2b-geschaftskundenanfragen">Geschäftskunden</a></li><li class="drawer__menu-group"><a class="drawer__menu-item block heading text-2xl leading-none tracking-tight" href="/pages/coming-soon">Angebote</a></li><li class="drawer__menu-group"><a class="drawer__menu-item block heading text-2xl leading-none tracking-tight" href="/blogs/ratgeber_kaufberatung_wissen">Ratgeber</a></li></ul>
2325      </nav>
2326      <div class="drawer__footer grid w-full"><div class="drawer__footer-bottom flex items-center justify-between gap-6"><a href="https://odiporo.de/customer_authentication/redirect?locale=de&region_country=DE" class="button button--primary icon-with-text" is="hover-link" rel="nofollow">
2327              <span class="btn-fill" data-fill></span>
2328              <span class="btn-text"><svg class="icon icon-account-2 icon-xs" viewBox="0 0 16 17" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
2329      <rect width="6.5" height="6.5" x="4.75" y="1.917" rx="3.25"></rect>
2330      <path stroke-linecap="round" d="M8 10.834c1 0 2.667.222 3 .333.333.11 2.467.533 3 1.333.667 1 .667 1.334.667 2.667M8 10.834c-1 0-2.667.222-3 .333-.333.11-2.467.533-3 1.333-.667 1-.667 1.334-.667 2.667"></path>
2331    </svg>Login</span>
2332            </a></div>
2333      </div>
2334    </div>
2335  </div>
2336</menu-drawer>
2337<header data-section-id="sections--24796503015803__header" class="header header--left mobile:header--left page-width page-width--full section section--rounded section--padding grid items-center z-20 relative w-full" is="sticky-header" data-sticky-type="always"><div class="header__icons header__icons--start flex justify-start z-2">
2338  <div class="header__buttons flex items-center gap-1d5"><a href="/search" class="search-drawer-button flex items-center justify-center" is="magnet-link" aria-controls="SearchDrawer" aria-expanded="false" >
2339        <span class="sr-only">Suche</span><svg class="icon icon-search icon-lg" viewBox="0 0 24 24" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
2340      <path stroke-linecap="round" d="m21 21-3.636-3.636m0 0A9 9 0 1 0 4.636 4.636a9 9 0 0 0 12.728 12.728Z"></path>
2341    </svg></a><button class="menu-drawer-button flex items-center justify-center" type="button" is="magnet-button" aria-controls="MenuDrawer" aria-expanded="false">
2342        <span class="sr-only">Seitennavigation</span><svg class="icon icon-hamburger icon-lg" viewBox="0 0 24 24" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
2343      <path stroke-linecap="round" d="M3 6H21M3 12H11M3 18H16"></path>
2344    </svg></button></div>
2345</div>
2346<div class="header__logo flex justify-center z-2" itemscope itemtype="http://schema.org/Organization"><a
2347      href="/"
2348      itemprop="url"
2349      class="header__logo-link has-white-logo flex items-center relative"
2350    >
2351      <span class="sr-only">odiporo.de - Smarte Elektronik für jeden Anspruch</span><img src="//odiporo.de/cdn/shop/files/Odiporo.de_Logo_Pantone.jpg?v=1776089538&amp;width=2794" alt="Logo mit dem Schriftzug odiporo.de in schwarzer Schrift, mit einer gelben und weißen Pillenform vor dem Buchstaben o auf weißem Hintergrund." srcset="//odiporo.de/cdn/shop/files/Odiporo.de_Logo_Pantone.jpg?v=1776089538&amp;width=260 260w, //odiporo.de/cdn/shop/files/Odiporo.de_Logo_Pantone.jpg?v=1776089538&amp;width=520 520w" width="2794" height="713" loading="eager" sizes="260px" style="max-height: 66.34931997136721px;max-width: 260px;" itemprop="logo" is="lazy-image" class="logo hidden md:block"><img src="//odiporo.de/cdn/shop/files/Odiporo.de_Logo_Pantone_abc754b7-3558-4575-a94b-e9706704929d.jpg?v=1776089582&amp;width=2794" alt="Logo mit dem Text odiporo.de in schwarzen Kleinbuchstaben; das o ist teilweise mit einem gelben kapselförmigen Hintergrund auf der linken Seite gefüllt." srcset="//odiporo.de/cdn/shop/files/Odiporo.de_Logo_Pantone_abc754b7-3558-4575-a94b-e9706704929d.jpg?v=1776089582&amp;width=160 160w, //odiporo.de/cdn/shop/files/Odiporo.de_Logo_Pantone_abc754b7-3558-4575-a94b-e9706704929d.jpg?v=1776089582&amp;width=320 320w" width="2794" height="713" loading="eager" sizes="160px" style="max-height: 40.83035075161059px;max-width: 160px;" itemprop="logo" is="lazy-image" class="logo md:hidden"><img src="//odiporo.de/cdn/shop/files/Odiporo.de_Logo_Pantone_invers.png?v=1776255252&amp;width=1000" alt="Das Bild zeigt den Text odiporo.de in einer modernen, hellen Schriftart mit einem gelben und weißen kapselförmigen Design, das den Buchstaben o am Anfang bildet." srcset="//odiporo.de/cdn/shop/files/Odiporo.de_Logo_Pantone_invers.png?v=1776255252&amp;width=260 260w, //odiporo.de/cdn/shop/files/Odiporo.de_Logo_Pantone_invers.png?v=1776255252&amp;width=520 520w" width="1000" height="255" loading="eager" sizes="260px" style="max-height: 66.3px;max-width: 260px;" itemprop="logo" is="lazy-image" class="white-logo hidden md:block absolute"><img src="//odiporo.de/cdn/shop/files/Odiporo.de_Logo_Pantone_invers.png?v=1776255252&amp;width=1000" alt="Das Bild zeigt den Text odiporo.de in einer modernen, hellen Schriftart mit einem gelben und weißen kapselförmigen Design, das den Buchstaben o am Anfang bildet." srcset="//odiporo.de/cdn/shop/files/Odiporo.de_Logo_Pantone_invers.png?v=1776255252&amp;width=160 160w, //odiporo.de/cdn/shop/files/Odiporo.de_Logo_Pantone_invers.png?v=1776255252&amp;width=320 320w" width="1000" height="255" loading="eager" sizes="160px" style="max-height: 40.800000000000004px;max-width: 160px;" itemprop="logo" is="lazy-image" class="white-logo md:hidden absolute"></a></div><div class="header__navigation hidden lg:flex lg:gap-5 lg:justify-start">
2352    <nav class="header__menu hidden lg:flex" role="navigation" aria-label="Primary"><ul class="flex flex-wrap gap-1 list-menu with-block"><li>
2353        <details is="details-mega" trigger="click" level="top" >
2354          <summary data-link="/collections/dyon-fernseher-smart-tv" class="z-2 relative rounded-full">
2355            <button type="button" class="menu__item text-sm-lg flex items-center font-medium z-2 relative cursor-pointer" is="api-magnet-button" data-id="HeaderNavMega-sections--24796503015803__header-1-start" data-section-id="sections--24796503015803__header" data-magnet
2355="0" tabindex="-1">
2356              <span class="btn-text" data-text>Fernseher<svg class="icon icon-chevron-menu icon-md" viewBox="0 0 10 7" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
2357      <path stroke-linecap="round" stroke-linejoin="round" d="m1 1 4 4 4-4"></path>
2358    </svg></span><span class="btn-text btn-duplicate">Fernseher<svg class="icon icon-chevron-menu icon-md" viewBox="0 0 10 7" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
2359      <path stroke-linecap="round" stroke-linejoin="round" d="m1 1 4 4 4-4"></path>
2360    </svg></span></button>
2361          </summary>
2362          <div class="mega-menu absolute top-0 left-0 w-full max-w-full overflow-hidden pointer-events-none"><div class="mega-menu__container invisible"><ul id="HeaderNavMega-sections--24796503015803__header-1-start" class="mega-menu__list page-width page-width--full flex flex-wrap w-full h-full overflow-hidden" role="list" tabindex="-1"><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2363            <span class="media-card media-card--card w-full h-full"></span>
2364          </li><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2365            <span class="media-card media-card--card w-full h-full"></span>
2366          </li><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2367            <span class="media-card media-card--card w-full h-full"></span>
2368          </li><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2369            <span class="media-card media-card--card w-full h-full"></span>
2370          </li><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2371            <span class="media-card media-card--card w-full h-full"></span>
2372          </li></ul></div></div>
2373        </details>
2374      </li><li>
2375        <details is="details-mega" trigger="click" level="top" >
2376          <summary data-link="/collections/odys-monitore-gaming-office-curved-ultra-wide-alle" class="z-2 relative rounded-full">
2377            <button type="button" class="menu__item text-sm-lg flex items-center font-medium z-2 relative cursor-pointer" is="api-magnet-button" data-id="HeaderNavMega-sections--24796503015803__header-2-start" data-section-id="sections--24796503015803__header" data-magnet="0" tabindex="-1">
2378              <span class="btn-text" data-text>Monitore<svg class="icon icon-chevron-menu icon-md" viewBox="0 0 10 7" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
2379      <path stroke-linecap="round" stroke-linejoin="round" d="m1 1 4 4 4-4"></path>
2380    </svg></span><span class="btn-text btn-duplicate">Monitore<svg class="icon icon-chevron-menu icon-md" viewBox="0 0 10 7" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
2381      <path stroke-linecap="round" stroke-linejoin="round" d="m1 1 4 4 4-4"></path>
2382    </svg></span></button>
2383          </summary>
2384          <div class="mega-menu absolute top-0 left-0 w-full max-w-full overflow-hidden pointer-events-none"><div class="mega-menu__container invisible"><ul id="HeaderNavMega-sections--24796503015803__header-2-start" class="mega-menu__list page-width page-width--full flex flex-wrap w-full h-full overflow-hidden" role="list" tabindex="-1"><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2385            <span class="media-card media-card--card w-full h-full"></span>
2386          </li><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2387            <span class="media-card media-card--card w-full h-full"></span>
2388          </li><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2389            <span class="media-card media-card--card w-full h-full"></span>
2390          </li><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2391            <span class="media-card media-card--card w-full h-full"></span>
2392          </li><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2393            <span class="media-card media-card--card w-full h-full"></span>
2394          </li></ul></div></div>
2395        </details>
2396      </li><li>
2397        <details is="details-mega" trigger="click" level="top" >
2398          <summary data-link="/collections/fitness" class="z-2 relative rounded-full">
2399            <button type="button" class="menu__item text-sm-lg flex items-center font-medium z-2 relative cursor-pointer" is="api-magnet-button" data-id="HeaderNavMega-sections--24796503015803__header-3-start" data-section-id="sections--24796503015803__header" data-magnet
2399="0" tabindex="-1">
2400              <span class="btn-text" data-text>Fitness<svg class="icon icon-chevron-menu icon-md" viewBox="0 0 10 7" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
2401      <path stroke-linecap="round" stroke-linejoin="round" d="m1 1 4 4 4-4"></path>
2402    </svg></span><span class="btn-text btn-duplicate">Fitness<svg class="icon icon-chevron-menu icon-md" viewBox="0 0 10 7" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
2403      <path stroke-linecap="round" stroke-linejoin="round" d="m1 1 4 4 4-4"></path>
2404    </svg></span></button>
2405          </summary>
2406          <div class="mega-menu absolute top-0 left-0 w-full max-w-full overflow-hidden pointer-events-none"><div class="mega-menu__container invisible"><ul id="HeaderNavMega-sections--24796503015803__header-3-start" class="mega-menu__list page-width page-width--full flex flex-wrap w-full h-full overflow-hidden" role="list" tabindex="-1"><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2407            <span class="media-card media-card--card w-full h-full"></span>
2408          </li><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2409            <span class="media-card media-card--card w-full h-full"></span>
2410          </li><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2411            <span class="media-card media-card--card w-full h-full"></span>
2412          </li><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2413            <span class="media-card media-card--card w-full h-full"></span>
2414          </li><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2415            <span class="media-card media-card--card w-full h-full"></span>
2416          </li></ul></div></div>
2417        </details>
2418      </li><li>
2419        <details is="details-mega" trigger="click" level="top" >
2420          <summary data-link="/collections/e-scooter" class="z-2 relative rounded-full">
2421            <button type="button" class="menu__item text-sm-lg flex items-center font-medium z-2 relative cursor-pointer" is="api-magnet-button" data-id="HeaderNavMega-sections--24796503015803__header-4-start" data-section-id="sections--24796503015803__header" data-magnet="0" tabindex="-1">
2422              <span class="btn-text" data-text>E-Scooter<svg class="icon icon-chevron-menu icon-md" viewBox="0 0 10 7" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
2423      <path stroke-linecap="round" stroke-linejoin="round" d="m1 1 4 4 4-4"></path>
2424    </svg></span><span class="btn-text btn-duplicate">E-Scooter<svg class="icon icon-chevron-menu icon-md" viewBox="0 0 10 7" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
2425      <path stroke-linecap="round" stroke-linejoin="round" d="m1 1 4 4 4-4"></path>
2426    </svg></span></button>
2427          </summary>
2428          <div class="mega-menu absolute top-0 left-0 w-full max-w-full overflow-hidden pointer-events-none"><div class="mega-menu__container invisible"><ul id="HeaderNavMega-sections--24796503015803__header-4-start" class="mega-menu__list page-width page-width--full flex flex-wrap w-full h-full overflow-hidden" role="list" tabindex="-1"><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2429            <span class="media-card media-card--card w-full h-full"></span>
2430          </li><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2431            <span class="media-card media-card--card w-full h-full"></span>
2432          </li><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2433            <span class="media-card media-card--card w-full h-full"></span>
2434          </li><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2435            <span class="media-card media-card--card w-full h-full"></span>
2436          </li><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2437            <span class="media-card media-card--card w-full h-full"></span>
2438          </li></ul></div></div>
2439        </details>
2440      </li><li>
2441        <details is="details-mega" trigger="click" level="top" >
2442          <summary data-link="/collections/saugroboter" class="z-2 relative rounded-full">
2443            <button type="button" class="menu__item text-sm-lg flex items-center font-medium z-2 relative cursor-pointer" is="api-magnet-button" data-id="HeaderNavMega-sections--24796503015803__header-5-start" data-section-id="sections--24796503015803__header" data-magnet
2443="0" tabindex="-1">
2444              <span class="btn-text" data-text>Reinigungsroboter<svg class="icon icon-chevron-menu icon-md" viewBox="0 0 10 7" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
2445      <path stroke-linecap="round" stroke-linejoin="round" d="m1 1 4 4 4-4"></path>
2446    </svg></span><span class="btn-text btn-duplicate">Reinigungsroboter<svg class="icon icon-chevron-menu icon-md" viewBox="0 0 10 7" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
2447      <path stroke-linecap="round" stroke-linejoin="round" d="m1 1 4 4 4-4"></path>
2448    </svg></span></button>
2449          </summary>
2450          <div class="mega-menu absolute top-0 left-0 w-full max-w-full overflow-hidden pointer-events-none"><div class="mega-menu__container invisible"><ul id="HeaderNavMega-sections--24796503015803__header-5-start" class="mega-menu__list page-width page-width--full flex flex-wrap w-full h-full overflow-hidden" role="list" tabindex="-1"><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2451            <span class="media-card media-card--card w-full h-full"></span>
2452          </li><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2453            <span class="media-card media-card--card w-full h-full"></span>
2454          </li><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2455            <span class="media-card media-card--card w-full h-full"></span>
2456          </li><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2457            <span class="media-card media-card--card w-full h-full"></span>
2458          </li><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2459            <span class="media-card media-card--card w-full h-full"></span>
2460          </li></ul></div></div>
2461        </details>
2462      </li><li>
2463        <details is="details-mega" trigger="click" level="top" >
2464          <summary data-link="/collections/wohnen" class="z-2 relative rounded-full">
2465            <button type="button" class="menu__item text-sm-lg flex items-center font-medium z-2 relative cursor-pointer" is="api-magnet-button" data-id="HeaderNavMega-sections--24796503015803__header-6-start" data-section-id="sections--24796503015803__header" data-magnet="0" tabindex="-1">
2466              <span class="btn-text" data-text>Wohnen<svg class="icon icon-chevron-menu icon-md" viewBox="0 0 10 7" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
2467      <path stroke-linecap="round" stroke-linejoin="round" d="m1 1 4 4 4-4"></path>
2468    </svg></span><span class="btn-text btn-duplicate">Wohnen<svg class="icon icon-chevron-menu icon-md" viewBox="0 0 10 7" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
2469      <path stroke-linecap="round" stroke-linejoin="round" d="m1 1 4 4 4-4"></path>
2470    </svg></span></button>
2471          </summary>
2472          <div class="mega-menu absolute top-0 left-0 w-full max-w-full overflow-hidden pointer-events-none"><div class="mega-menu__container invisible"><ul id="HeaderNavMega-sections--24796503015803__header-6-start" class="mega-menu__list page-width page-width--full flex flex-wrap w-full h-full overflow-hidden" role="list" tabindex="-1"><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2473            <span class="media-card media-card--card w-full h-full"></span>
2474          </li><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2475            <span class="media-card media-card--card w-full h-full"></span>
2476          </li><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2477            <span class="media-card media-card--card w-full h-full"></span>
2478          </li><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2479            <span class="media-card media-card--card w-full h-full"></span>
2480          </li><li class="mega-menu__item flex opacity-0 w-full aspect-square">
2481            <span class="media-card media-card--card w-full h-full"></span>
2482          </li></ul></div></div>
2483        </details>
2484      </li><li>
2485        <a href="/pages/b2b-geschaftskundenanfragen" class="menu__item text-sm-lg flex items-center font-medium z-2 relative cursor-pointer" is="magnet-link" data-magnet
2485="0">
2486          <span class="btn-text" data-text>Geschäftskunden</span><span class="btn-text btn-duplicate">Geschäftskunden</span></a>
2487      </li><li>
2488        <a href="/pages/coming-soon" class="menu__item text-sm-lg flex items-center font-medium z-2 relative cursor-pointer" is="magnet-link" data-magnet="0">
2489          <span class="btn-text" data-text>Angebote</span><span class="btn-text btn-duplicate">Angebote</span></a>
2490      </li><li>
2491        <a href="/blogs/ratgeber_kaufberatung_wissen" class="menu__item text-sm-lg flex items-center font-medium z-2 relative cursor-pointer" is="magnet-link" data-magnet="0">
2492          <span class="btn-text" data-text>Ratgeber</span><span class="btn-text btn-duplicate">Ratgeber</span></a>
2493      </li></ul>
2494</nav>
2495  </div><div class="header__icons header__icons--end flex justify-end z-2">
2496  <div class="header__buttons flex items-center gap-1d5"><a href="/search" class="search-drawer-button flex items-center justify-center" is="magnet-link" aria-controls="SearchDrawer" aria-expanded="false" >
2497        <span class="sr-only">Suche</span><svg class="icon icon-search icon-lg" viewBox="0 0 24 24" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
2498      <path stroke-linecap="round" d="m21 21-3.636-3.636m0 0A9 9 0 1 0 4.636 4.636a9 9 0 0 0 12.728 12.728Z"></path>
2499    </svg></a><a href="https://odiporo.de/customer_authentication/redirect?locale=de&region_country=DE" class="hidden lg:flex items-center justify-center" is="magnet-link" rel="nofollow">
2500        <span class="sr-only">Login</span><svg class="icon icon-account icon-lg" viewBox="0 0 24 24" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
2501      <rect width="10.5" height="10.5" x="6.75" y="1.75" rx="5.25"></rect>
2502      <path stroke-linecap="round" d="M12 15.5c1.5 0 4 .333 4.5.5.5.167 3.7.8 4.5 2 1 1.5 1 2 1 4m-10-6.5c-1.5 0-4 .333-4.5.5-.5.167-3.7.8-4.5 2-1 1.5-1 2-1 4"></path>
2503    </svg></a><a href="/cart" class="cart-drawer-button flex items-center justify-center relative" is="magnet-link" aria-controls="CartDrawer" aria-expanded="false" data-no-instant>
2504        <span class="sr-only">Warenkorb</span><svg class="icon icon-cart icon-lg" viewBox="0 0 24 24" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
2505          <path stroke-linecap="round" stroke-linejoin="round" d="M1 1h.5v0c.226 0 .339 0 .44.007a3 3 0 0 1 2.62 1.976c.034.095.065.204.127.42l.17.597m0 0 1.817 6.358c.475 1.664.713 2.496 1.198 3.114a4 4 0 0 0 1.633 1.231c.727.297 1.592.297 3.322.297h2.285c1.75 0 2.626 0 3.359-.302a4 4 0 0 0 1.64-1.253c.484-.627.715-1.472 1.175-3.161l.06-.221c.563-2.061.844-3.092.605-3.906a3 3 0 0 0-1.308-1.713C19.92 4 18.853 4 16.716 4H4.857ZM12 20a2 2 0 1 1-4 0 2 2 0 0 1 4 0Zm8 0a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z"></path>
2506        </svg><cart-count class="count absolute top-0 right-0 text-xs" aria-label="0 Artikel" hidden>0</cart-count>
2507      </a><button class="menu-drawer-button flex items-center justify-center" type="button" is="magnet-button" aria-controls="MenuDrawer" aria-expanded="false">
2508        <span class="sr-only">Seitennavigation</span><svg class="icon icon-hamburger icon-lg" viewBox="0 0 24 24" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
2509      <path stroke-linecap="round" d="M3 6H21M3 12H11M3 18H16"></path>
2510    </svg></button></div>
2511</div>
2512<span class="header__corner corner left bottom flex absolute pointer-events-none">
2513  <svg class="w-full h-auto" viewBox="0 0 101 101" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
2514    <path fill-rule="evenodd" clip-rule="evenodd" d="M101 0H0V101H1C1 45.7715 45.7715 1 101 1V0Z"></path>
2515    <path d="M1 101C1 45.7715 45.7715 1 101 1" fill="none"></path>
2516  </svg>
2517</span>
2518<span class="header__corner corner right bottom flex absolute pointer-events-none">
2519  <svg class="w-full h-auto" viewBox="0 0 101 101" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
2520    <path fill-rule="evenodd" clip-rule="evenodd" d="M101 0H0V101H1C1 45.7715 45.7715 1 101 1V0Z"></path>
2521    <path d="M1 101C1 45.7715 45.7715 1 101 1" fill="none"></path>
2522  </svg>
2523</span><span class="header__cutout cutout opacity-0 absolute left-0 top-100 w-full pointer-events-none"></span></header><overlay-element class="overlay opacity-0 z-1 fixed left-0 w-full pointer-events-none"></overlay-element>
2523<script>
2524  if (Shopify.designMode) {
2525    document.documentElement.style.setProperty('--header-height', Math.round(document.getElementById('shopify-section-sections--24796503015803__header').clientHeight) + 'px');
2526  }
2527</script>
2527
2528
2529
2530</div>
2531<!-- END sections: header-group --><!-- BEGIN sections: overlay-group -->
2532<div id="shopify-section-sections--24796502983035__cart-drawer" class="shopify-section shopify-section-group-overlay-group">
2533<style> #shopify-section-sections--24796502983035__cart-drawer .drawer__title.heading {font-size: 1.55rem;} </style></div><div id="shopify-section-sections--24796502983035__search-drawer" class="shopify-section shopify-section-group-overlay-group">
2533<script src="//odiporo.de/cdn/shop/t/3/assets/search.js?v=153964456974568625491744817342" defer></script>
2533<search-drawer id="SearchDrawer" class="search-drawer drawer drawer--end z-35 fixed bottom-0 left-0 h-full w-full pointer-events-none"
2534    role="dialog"
2535    aria-modal="true"
2536    aria-label="Suche"
2537    shopify-design-mode
2538    hidden
2539  >
2540    <overlay-element class="overlay fixed-modal invisible opacity-0 fixed bottom-0 left-0 w-full h-screen pointer-events-none" aria-controls="SearchDrawer" aria-expanded="false"></overlay-element>
2541    <div class="drawer__inner z-10 absolute top-0 flex flex-col w-full h-full overflow-hidden">
2542      <gesture-element class="drawer__header flex justify-between opacity-0 invisible relative">
2543        <span class="drawer__title heading lg:text-3xl text-2xl leading-none tracking-tight">Suche</span>
2544        <button class="button button--secondary button--close drawer__close hidden sm:flex items-center justify-center" type="button" is="hover-button" aria-controls="SearchDrawer" aria-expanded="false" aria-label="Schließen">
2545          <span class="btn-fill" data-fill></span>
2546          <span class="btn-text"><svg class="icon icon-close icon-sm" viewBox="0 0 20 20" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
2547      <path stroke-linecap="round" stroke-linejoin="round" d="M5 15L15 5M5 5L15 15"></path>
2548    </svg></span>
2549        </button>
2550      </gesture-element>
2551      <div class="drawer__content opacity-0 invisible flex flex-col h-full grow shrink">
2552        <div class="drawer__scrollable relative flex flex-col grow shrink"><form class="search__form flex flex-col gap-8 h-full relative" action="/search" method="GET" role="search">
2553  <input type="hidden" name="options[prefix]" value="last" />
2554  <label class="sr-only" for="SearchFormInput-sections--24796502983035__search-drawer">Suche</label>
2555  <div class="search__field field flex items-center gap-4 relative"><input
2556      class="input"
2557      type="search"
2558      name="q"
2559      id="SearchFormInput-sections--24796502983035__search-drawer"
2560      placeholder="Durchsuchen Sie unseren Shop"
2561      autocomplete="off"
2562      autocorrect="off"
2563      autocapitalize="off"
2564      spellcheck="off"/></div></form>
2565</div>
2566      </div>
2567    </div>
2568  </search-drawer>
2569</div>
2570<!-- END sections: overlay-group --><div class="page-container" id="PageContainer">
2571    <main class="main-content relative" id="MainContent" role="main">
2572      <div id="shopify-section-template--24796501901691__main" class="shopify-section"><style>
2573  #shopify-section-template--24796501901691__main {
2574    --section-padding-top: 72px;
2575    --section-padding-bottom: 60px;
2576  }
2577</style>
2578
2579<link href="//odiporo.de/cdn/shop/t/3/assets/cart.css?v=44492766454939690861744817342" rel="stylesheet" type="text/css" media="all" />
2580<script src="//odiporo.de/cdn/shop/t/3/assets/cart.js?v=15891569860397040191744817341" defer></script>
2580<div class="cart is-empty section">
2581  <div class="page-width relative">
2582    <div class="title-wrapper leading-none grid gap-4 md:flex md:items-end md:justify-between">
2583      <h1 class="heading title-xl tracking-heading">
2584        <split-words class="split-words block" data-animate="fade-up-large">Dein Warenkorb</split-words>
2585      </h1>
2586      <p>
2587        <a class="button button--secondary icon-with-text" href="/collections/all" is="hover-link">
2588          <span class="btn-fill" data-fill></span>
2589          <span class="btn-text"><svg class="icon icon-return icon-sm" viewBox="0 0 22 10" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
2590      <path stroke-linecap="round" stroke-linejoin="round" d="M1 9V1M1 9H8.77778M1 9C1 9 6 1 12 1C20 1 21 9 21 9"></path>
2591    </svg>Weiter shoppen</span>
2592        </a>
2593      </p>
2594    </div>
2595
2596    <div class="empty-state grid items-center justify-center text-center gap-7d5 md:gap-14">
2597      <div class="flex flex-col items-center gap-5 md:gap-10"><svg class="icon icon-empty icon-xxxl" viewBox="0 0 60 61" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
2598      <path stroke-linecap="round" stroke-linejoin="round" d="M23.75 25.5a1.25 1.25 0 1 1-2.5 0m2.5 0a1.25 1.25 0 1 0-2.5 0m2.5 0h-2.5m17.5 0a1.25 1.25 0 1 1-2.5 0m2.5 0a1.25 1.25 0 1 0-2.5 0m2.5 0h-2.5m3.75 15c-2.28-3.036-5.91-5-10-5s-7.72 1.964-10.001 5M30 55.5v0c13.807 0 25-11.193 25-25v0c0-13.807-11.193-25-25-25v0c-13.807 0-25 11.193-25 25v0c0 13.807 11.193 25 25 25Z"></path>
2599    </svg><div class="grid gap-5">
2600          <p class="heading leading-none tracking-tight">Dein Warenkorb ist leer.</p>
2601        </div>
2602      </div>
2603      <a class="empty-state__link button button--primary button--fixed" href="/collections/all" is="hover-link">
2604        <span class="btn-fill" data-fill></span>
2605        <span class="btn-text">Weiter shoppen</span>
2606      </a>
2607    </div></div>
2608</div>
2609
2610
2611</div><div id="shopify-section-template--24796501901691__recently-viewed" class="shopify-section recently-section"><style>
2612  #shopify-section-template--24796501901691__recently-viewed {
2613    --section-padding-top: 60px;
2614    --section-padding-bottom: 100px;}
2615</style>
2616
2617<recently-viewed class="recently-viewed block" data-url="/search?section_id=template--24796501901691__recently-viewed&type=product&q=" data-limit="6"></recently-viewed>
2618
2619
2620</div>
2621    </main>
2622
2623    <footer-group class="footer-group block w-full"><!-- BEGIN sections: footer-group -->
2624<div id="shopify-section-sections--24796503048571__footer" class="shopify-section shopify-section-group-footer-group"><style>
2625  #shopify-section-sections--24796503048571__footer {
2626    --section-padding-top: 12px;
2627    --section-padding-bottom: 48px;--color-background: 31 31 31;--color-foreground: 255 255 255;
2628  --color-border: var(--color-foreground)/ 0.1;
2629  --color-border-dark: var(--color-foreground)/ 0.4;
2630  --color-border-light: var(--color-foreground)/ 0.06;--color-button-background: 255 255 255;
2631  --color-button-border: 255 255 255;--color-button-text: 0 0 0;}
2632</style><div class="section section--padding section--rounded" is="footer-parallax">
2633  <footer class="footer footer--inverted page-width page-width--full relative grid"><div class="footer__left flex flex-col md:flex-row gap-10"><div class="footer__accordions flex flex-wrap flex-col md:flex-row md:grow md:gap-12">
2634            
2635                <details class="footer__item--link_list-2 details active" is="footer-details" data-opened >
2636      <summary class="details__summary flex items-center justify-between gap-2 cursor-pointer">
2637        <span class="heading text-base-2xl font-medium lg:font-heading">Support</span><svg class="icon icon-chevron-up icon-md" viewBox="0 0 24 24" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
2638      <path stroke-linecap="round" stroke-linejoin="round" d="M6 15L12 9L18 15"></path>
2639    </svg></summary><div class="details__content">
2640      <ul class="flex flex-col gap-3"><li class="inline-flex">
2641            <a href="/pages/uber-uns" class="block reversed-link text-sm-lg leading-tight">Über uns</a>
2642          </li><li class="inline-flex">
2643            <a href="/pages/b2b-geschaftskundenanfragen" class="block reversed-link text-sm-lg leading-tight">Geschäftskunden</a>
2644          </li><li class="inline-flex">
2645            <a href="/blogs/ratgeber_kaufberatung_wissen" class="block reversed-link text-sm-lg leading-tight">Ratgeber</a>
2646          </li><li class="inline-flex">
2647            <a href="/pages/kontakt" class="block reversed-link text-sm-lg leading-tight">Hilfe & Kontakt</a>
2648          </li><li class="inline-flex">
2649            <a href="/pages/warum-wir-dir-30-tage-ruckgaberecht-schenken" class="block reversed-link text-sm-lg leading-tight">30 Tage kostenlose Rückgabe</a>
2650          </li><li class="inline-flex">
2651            <a href="/pages/kostenlose-lieferung" class="block reversed-link text-sm-lg leading-tight">Kostenlose Lieferung</a>
2652          </li><li class="inline-flex">
2653            <a href="/pages/zahlungsarten" class="block reversed-link text-sm-lg leading-tight">
2653Sichere & flexible Zahlung</a>
2654          </li><li class="inline-flex">
2655            <a href="/pages/erklarung-zur-barrierefreiheit" class="block reversed-link text-sm-lg leading-tight">Barrierefreiheit</a>
2656          </li><li class="inline-flex">
2657            <a href="/apps/widerruf" class="block reversed-link text-sm-lg leading-tight">Vertrag widerrufen</a>
2658          </li></ul>
2659    </div>
2660    <style>
2661      @media (min-width: 1280px) {
2662        .footer__item--link_list-2 { width: calc(50% - var(--sp-12)); }
2663      }
2664    </style></details>
2665
2666              
2667          
2668            
2669                <div class="footer__custom-badge text-center" style="margin-top:30px;">
2670                  
2671                    <h2 class="h4" style="margin-bottom:10px;">Unsere Partner</h2>
2672                  
2673                  <a href="https://www.idealo.de/preisvergleich/Shop/324690.html#i" target="_blank"><img src="https://img.idealo.com/badges/324690/97223127-5589-4caf-8eb8-8e999df136ce" alt="unsere idealo.de Bewertungen" style="max-width:200px;height:auto;"></a> <br>   <a href="https://www.adcell.de/partnerprogramme/11079" target="_blank">
2674        <img style="border: 1px solid #aaa; border-radius: 5px;" src="https://storage.googleapis.com/adcell_documents/media_library/f7/11/26315627bafba5057f_6.png" title="Klicken Sie hier, um zum Affiliate-Programm von Odiporo bei ADCELL zu gelangen." alt="Affiliate Netzwerk ADCELL">
2675    </a>
2676                </div>
2677            
2678          
2679        </div>
2680      </div><div class="footer__right grid gap-10"><div class="footer__newsletter grid gap-6"><p class="footer__logo leading-none">
2681                <a href="/">
2682                  <span class="sr-only">odiporo.de - Smarte Elektronik für jeden Anspruch</span><img src="//odiporo.de/cdn/shop/files/Odiporo.de_Logo_Pantone_invers.png?v=1776255252&amp;width=1000" alt="Das Bild zeigt den Text odiporo.de in einer modernen, hellen Schriftart mit einem gelben und weißen kapselförmigen Design, das den Buchstaben o am Anfang bildet." srcset="//odiporo.de/cdn/shop/files/Odiporo.de_Logo_Pantone_invers.png?v=1776255252&amp;width=274 274w, //odiporo.de/cdn/shop/files/Odiporo.de_Logo_Pantone_invers.png?v=1776255252&amp;width=549 549w" width="1000" height="255" loading="eager" sizes="274.5098039215686px" style="--image-width: 274.5098039215686px; --image-height: 70px;" is="lazy-image"></a>
2683              </p><p class="h3 text-xl md:title-sm leading-none tracking-none font-medium lg:font-heading">Melden Sie sich für unseren odiporo.de Newsletter an und sichern Sie sich exklusive Angebote.</p><form method="post" action="/contact#newsletter-sections--24796503048571__footer" id="newsletter-sections--24796503048571__footer" accept-charset="UTF-8" class="newsletter-form grid gap-5"><input type="hidden" name="form_type" value="customer" /><input type="hidden" name="utf8" value="✓" /><input type="hidden" name="contact[tags]" value="newsletter" />
2684  <input type="hidden" name="contact[context]" value="footer" />
2685  <div class="field relative">
2686    <input
2687      id="NewsletterForm--sections--24796503048571__footer"
2688      class="input is-floating input--fill"
2689      type="email"
2690      name="contact[email]"
2691      value=""
2692      autocorrect="off"
2693      autocapitalize="off"
2694      autocomplete="email"
2695      placeholder="Deine Mailadresse"
2696      required/>
2697    <label class="label is-floating" for="NewsletterForm--sections--24796503048571__footer">Deine Mailadresse</label>
2698    <div class="self-submit-button absolute">
2699      <button type="submit" class="button button--primary self-button flex justify-center items-center" is="magnet-button" data-magnet="20" aria-label="Abonnieren">
2700        <span class="btn-text">
2701          <svg class="icon icon-arrow-right icon-xs transform" viewBox="0 0 16 16" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg">
2702            <path stroke-linecap="round" stroke-linejoin="round" d="M2 8.00012H14M14 8.00012L9.33333 3.3335M14 8.00012L9.33333 12.6668"></path>
2703          </svg>
2704        </span>
2705      </button>
2706    </div>
2707  </div></form></div><div class="footer__socials flex justify-start md:justify-end xl:justify-start"><ul class="flex flex-wrap items-center gap-7"><li><a href="https://www.facebook.com/Odiporo" class="social_platform block relative" is="magnet-link" title="odip
2707oro.de - Smarte Elektronik für jeden Anspruch auf Facebook"><svg class="icon icon-facebook icon-lg" viewBox="0 0 24 24" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
2708      <path d="M9.03153 23L9 13H5V9H9V6.5C9 2.7886 11.2983 1 14.6091 1C16.1951 1 17.5581 1.11807 17.9553 1.17085V5.04948L15.6591 5.05052C13.8584 5.05052 13.5098 5.90614 13.5098 7.16171V9H18.75L16.75 13H13.5098V23H9.03153Z"/>
2709    </svg><span class="sr-only">Facebook</span>
2710        </a>
2711      </li><li><a href="https://www.instagram.com/odiporo.de/" class="social_platform block relative" is="magnet-link" title="odiporo.de - Smarte Elektronik für jeden Anspruch auf Instagram"><svg class="icon icon-instagram icon-lg" viewBox="0 0 24 24" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
2712      <path d="M12 2.98C14.94 2.98 15.28 2.99 16.44 3.04C17.14 3.04 17.83 3.18 18.48 3.42C18.96 3.6 19.39 3.88 19.75 4.24C20.12 4.59 20.4 5.03 20.57 5.51C20.81 6.16 20.94 6.85 20.95 7.55C21 8.71 21.01 9.06 21.01 12C21.01 14.94 21 15.28 20.95 16.44C20.95 17.14 20.81 17.83 20.57 18.48C20.39 18.95 20.11 19.39 19.75 19.75C19.39 20.11 18.96 20.39 18.48 20.57C17.83 20.81 17.14 20.94 16.44 20.95C15.28 21 14.93 21.01 12 21.01C9.07 21.01 8.72 21 7.55 20.95C6.85 20.95 6.16 20.81 5.51 20.57C5.03 20.39 4.6 20.11 4.24 19.75C3.87 19.4 3.59 18.96 3.42 18.48C3.18 17.83 3.05 17.14 3.04 16.44C2.99 15.28 2.98 14.93 2.98 12C2.98 9.07 2.99 8.72 3.04 7.55C3.04 6.85 3.18 6.16 3.42 5.51C3.6 5.03 3.88 4.6 4.24 4.24C4.59 3.87 5.03 3.59 5.51 3.42C6.16 3.18 6.85 3.05 7.55 3.04C8.71 2.99 9.06 2.98 12 2.98ZM12 1C9.01 1 8.64 1.01 7.47 1.07C6.56 1.09 5.65 1.26 4.8 1.58C4.07 1.86 3.4 2.3 2.85 2.85C2.3 3.41 1.86 4.07 1.58 4.8C1.26 5.65 1.09 6.56 1.07 7.47C1.02 8.64 1 9.01 1 12C1 14.99 1.01 15.36 1.07 16.53C1.09 17.44 1.26 18.35 1.58 19.2C1.86 19.93 2.3 20.6 2.85 21.15C3.41 21.7 4.07 22.14 4.8 22.42C5.65 22.74 6.56 22.91 7.47 22.93C8.64 22.98 9.01 23 12 23C14.99 23 15.36 22.99 16.53 22.93C17.44 22.91 18.35 22.74 19.2 22.42C19.93 22.14 20.6 21.7 21.15 21.15C21.7 20.59 22.14 19.93 22.42 19.2C22.74 18.35 22.91 17.44 22.93 16.53C22.98 15.36 23 14.99 23 12C23 9.01 22.99 8.64 22.93 7.47C22.91 6.56 22.74 5.65 22.42 4.8C22.14 4.07 21.7 3.4 21.15 2.85C20.59 2.3 19.93 1.86 19.2 1.58C18.35 1.26 17.44 1.09 16.53 1.07C15.36 1.02 14.99 1 12 1ZM12 6.35C10.88 6.35 9.79 6.68 8.86 7.3C7.93 7.92 7.21 8.8 6.78 9.84C6.35 10.87 6.24 12.01 6.46 13.1C6.68 14.2 7.22 15.2 8.01 15.99C8.8 16.78 9.81 17.32 10.9 17.54C12 17.76 13.13 17.65 14.16 17.22C15.19 16.79 16.07 16.07 16.7 15.14C17.32 14.21 17.65 13.12 17.65 12C17.65 10.5 17.05 9.06 16 8.01C14.94 6.95 13.5 6.36 12.01 6.36L12 6.35ZM12 15.67C11.27 15.67 10.57 15.45 9.96 15.05C9.36 14.65 8.89 14.07 8.61 13.4C8.33 12.73 8.26 11.99 8.4 11.28C8.54 10.57 8.89 9.92 9.4 9.4C9.91 8.88 10.57 8.54 11.28 8.4C11.99 8.26 12.73 8.33 13.4 8.61C14.07 8.89 14.64 9.36 15.05 9.96C15.45 10.56 15.67 11.27 15.67 12C15.67 12.97 15.28 13.91 14.6 14.59C13.91 15.28 12.98 15.66 12.01 15.66L12 15.67ZM17.87 7.45C18.6 7.45 19.19 6.86 19.19 6.13C19.19 5.4 18.6 4.81 17.87 4.81C17.14 4.81 16.55 5.4 16.55 6.13C16.55 6.86 17.14 7.45 17.87 7.45Z"/>
2713    </svg><span class="sr-only">Instagram</span>
2714        </a>
2715      </li><li><a href="https://www.youtube.com/channel/UCFAKK0tiJMLwDbjcoZQPiiA/videos" class="social_platform block relative" is="magnet-link" title="odiporo.de - Smarte Elektronik für jeden Anspruch auf YouTube"><svg class="icon icon-youtube icon-lg" viewBox="0 0 24 24" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
2716      <path d="M23.8 7.6C23.8 7.6 23.6 5.9 22.8 5.2C21.9 4.2 20.9 4.2 20.4 4.2C17 4 12 4 12 4C12 4 7 4 3.6 4.2C3.1 4.3 2.1 4.3 1.2 5.2C0.5 5.9 0.2 7.6 0.2 7.6C0.2 7.6 0 9.5 0 11.5V13.3C0 15.2 0.2 17.2 0.2 17.2C0.2 17.2 0.4 18.9 1.2 19.6C2.1 20.6 3.3 20.5 3.8 20.6C5.7 20.8 12 20.8 12 20.8C12 20.8 17 20.8 20.4 20.5C20.9 20.4 21.9 20.4 22.8 19.5C23.5 18.8 23.8 17.1 23.8 17.1C23.8 17.1 24 15.2 24 13.2V11.4C24 9.5 23.8 7.6 23.8 7.6ZM9.5 15.5V8.8L16 12.2L9.5 15.5Z"/>
2717    </svg><span class="sr-only">YouTube</span>
2718        </a>
2719      </li><li><a href="https://www.tiktok.com/@odiporo.de" class="social_platform block relative" is="magnet-link" title="odip
2719oro.de - Smarte Elektronik für jeden Anspruch auf TikTok"><svg class="icon icon-tiktok icon-lg" viewBox="0 0 24 24" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
2720      <path d="M10.6315 8.937V13.059C10.1123 12.9221 9.56911 12.9034 9.0418 13.0044C8.5145 13.1054 8.01657 13.3234 7.58473 13.6424C7.15288 13.9613 6.79813 14.3732 6.54661 14.8475C6.2951 15.3218 6.15324 15.8466 6.13148 16.383C6.10175 16.8449 6.17125 17.3078 6.33531 17.7405C6.49938 18.1733 6.7542 18.5659 7.08266 18.892C7.41111 19.2181 7.80557 19.4701 8.23952 19.631C8.67346 19.7919 9.13684 19.8581 9.59848 19.825C10.0648 19.8608 10.5333 19.7949 10.9717 19.6319C11.41 19.4689 11.8078 19.2126 12.1374 18.8809C12.4671 18.5491 12.7208 18.1498 12.881 17.7104C13.0413 17.271 13.1042 16.8021 13.0655 16.336V0H17.1425C17.8355 4.315 19.9935 5.316 22.8825 5.778V9.913C20.8804 9.74881 18.9491 9.09645 17.2575 8.013V16.18C17.2575 19.88 15.0675 24 9.63048 24C8.61045 23.9955 7.60156 23.7875 6.66297 23.3881C5.72437 22.9886 4.87496 22.4059 4.16451 21.6739C3.45407 20.942 2.89689 20.0755 2.52563 19.1254C2.15438 18.1754 1.97652 17.1607 2.00248 16.141C2.03479 15.0794 2.29174 14.0366 2.75639 13.0815C3.22105 12.1265 3.88285 11.2807 4.69819 10.6C5.51352 9.9193 6.46387 9.41915 7.48658 9.1325C8.50929 8.84586 9.58114 8.77923 10.6315 8.937Z"/>
2721    </svg><span class="sr-only">TikTok</span>
2722        </a>
2723      </li></ul></div></div></footer><parallax-overlay class="footer-overlay hidden md:block z-20 absolute left-0 top-0 w-full pointer-events-none" data-target="height" data-start="100%" data-stop="0%"></parallax-overlay></div>
2724
2725
2726</div><div id="shopify-section-sections--24796503048571__footer-copyright" class="shopify-section shopify-section-group-footer-group"><style>
2727  #shopify-section-sections--24796503048571__footer-copyright {
2728    --gradient-background: #171717;
2729    --color-background: 23 23 23;
2730    --color-foreground: 255 255 255;
2731  }
2732</style>
2733
2734<div class="section section--rounded" is="footer-parallax">
2735  <div class="footer-copyright page-width page-width--full w-full flex flex-col items-center justify-between gap-4 lg:gap-0 lg:flex-row relative">
2736    <div class="rte credits text-center">Powered by Axdia International GmbH<ul class="flex flex-wrap gap-3 justify-center lg:justify-start"><li>
2737                <small>
2738                  <a href="/policies/privacy-policy" class="block reversed-link">Datenschutzerklärung</a>
2739                </small>
2740              </li><li>
2741                <small>
2742                  <a href="/policies/legal-notice" class="block reversed-link">Impressum</a>
2743                </small>
2744              </li><li>
2745                <small>
2746                  <a href="/policies/refund-policy" class="block reversed-link">Widerrufsrecht</a>
2747                </small>
2748              </li><li>
2749                <small>
2750                  <a href="/policies/terms-of-service" class="block reversed-link">AGB</a>
2751                </small>
2752              </li><li>
2753                <small>
2754                  <a href="/policies/contact-information" class="block reversed-link">Kontaktinformationen</a>
2755                </small>
2756              </li><li>
2757                <small>
2758                  <a href="/policies/shipping-policy" class="block reversed-link">Versand</a>
2759                </small>
2760              </li></ul></div><ul class="payment-icons flex flex-wrap justify-center gap-2 xl:gap-3"><li><svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" fill="none" aria-labelledby="pi-american_express"><title id="pi-american_express">American Express</title><rect x=".5" y=".5" width="37" height="23" rx="2.5" stroke="#000" stroke-opacity=".07" fill="none"/><path d="M35 0H3C1.3 0 0 1.3 0 3V21C0 22.7 1.4 24 3 24H35C36.7 24 38 22.7 38 21V3C38 1.3 36.6 0 35 0Z" fill="#0071CE" style="fill:#0071CE;fill:color(display-p3 0.0000 0.4431 0.8078);fill-opacity:1;"/><path d="M3 0.5H35C36.3348 0.5 37.5 1.58692 37.5 3V21C37.5 22.4239 36.4239 23.5 35 23.5H3C1.66524 23.5 0.5 22.4131 0.5 21V3C0.5 1.57614 1.57614 0.5 3 0.5Z" stroke="black" stroke-opacity="0.07" style="stroke:black;stroke-opacity:0.07;"/><path d="M25.8662 6.33203V3H31L31.8662 5.5332L32.7334 3H37V14.2002H36.7998L34.8672 16.2656L36.7998 18.3594H37V21.2666H33.5996L31.9336 19.3994L30.2002 21.2666H19.4668V12.666H16L20.2666 3H24.4004L25.8662 6.33203ZM20.5996 20.2656H27V18.5322H22.666V17.3994H26.8662V15.666H22.666V14.5322H27V12.7988H20.5996V20.2656ZM30.5332 16.5322L27 20.2656H29.5996L31.8662 17.8662L34.0664 20.2656H36.7324L33.1992 16.4658L36.7324 12.7988H34.1328L31.8662 15.1992L29.7324 12.7988H27L30.5332 16.5322ZM17.666 11.7324H19.9326L20.5332 10.1992H23.999L24.666 11.7324H26.999L23.666 4.19922H20.999L17.666 11.7324ZM33.5996 4.19922L31.9326 8.86621L30.1992 4.19922H27V11.666H29.0664V6.39941L31 11.666H32.7998L34.7324 6.39941V11.666H36.7324V4.13281L33.5996 4.19922ZM23.2656 8.46582H21.2656L22.2656 5.99902L23.2656 8.46582Z" fill="white" style="fill:white;fill-opacity:1;"/>
2760</svg>
2761</li><li><svg version="1.1" xmlns="http://www.w3.org/2000/svg" role="img" x="0" y="0" width="38" height="24" viewBox="0 0 165.521 105.965" xml:space="preserve" aria-labelledby="pi-apple_pay"><title id="pi-apple_pay">Apple Pay</title><path fill="#000" d="M150.698 0H14.823c-.566 0-1.133 0-1.698.003-.477.004-.953.009-1.43.022-1.039.028-2.087.09-3.113.274a10.51 10.51 0 0 0-2.958.975 9.932 9.932 0 0 0-4.35 4.35 10.463 10.463 0 0 0-.975 2.96C.113 9.611.052 10.658.024 11.696a70.22 70.22 0 0 0-.022 1.43C0 13.69 0 14.256 0 14.823v76.318c0 .567 0 1.132.002 1.699.003.476.009.953.022 1.43.028 1.036.09 2.084.275 3.11a10.46 10.46 0 0 0 .974 2.96 9.897 9.897 0 0 0 1.83 2.52 9.874 9.874 0 0 0 2.52 1.83c.947.483 1.917.79 2.96.977 1.025.183 2.073.245 3.112.273.477.011.953.017 1.43.02.565.004 1.132.004 1.698.004h135.875c.565 0 1.132 0 1.697-.004.476-.002.952-.009 1.431-.02 1.037-.028 2.085-.09 3.113-.273a10.478 10.478 0 0 0 2.958-.977 9.955 9.955 0 0 0 4.35-4.35c.483-.947.789-1.917.974-2.96.186-1.026.246-2.074.274-3.11.013-.477.02-.954.022-1.43.004-.567.004-1.132.004-1.699V14.824c0-.567 0-1.133-.004-1.699a63.067 63.067 0 0 0-.022-1.429c-.028-1.038-.088-2.085-.274-3.112a10.4 10.4 0 0 0-.974-2.96 9.94 9.94 0 0 0-4.35-4.35A10.52 10.52 0 0 0 156.939.3c-1.028-.185-2.076-.246-3.113-.274a71.417 71.417 0 0 0-1.431-.022C151.83 0 151.263 0 150.698 0z" /><path fill="#FFF" d="M150.698 3.532l1.672.003c.452.003.905.008 1.36.02.793.022 1.719.065 2.583.22.75.135 1.38.34 1.984.648a6.392 6.392 0 0 1 2.804 2.807c.306.6.51 1.226.645 1.983.154.854.197 1.783.218 2.58.013.45.019.9.02 1.36.005.557.005 1.113.005 1.671v76.318c0 .558 0 1.114-.004 1.682-.002.45-.008.9-.02 1.35-.022.796-.065 1.725-.221 2.589a6.855 6.855 0 0 1-.645 1.975 6.397 6.397 0 0 1-2.808 2.807c-.6.306-1.228.511-1.971.645-.881.157-1.847.2-2.574.22-.457.01-.912.017-1.379.019-.555.004-1.113.004-1.669.004H14.801c-.55 0-1.1 0-1.66-.004a74.993 74.993 0 0 1-1.35-.018c-.744-.02-1.71-.064-2.584-.22a6.938 6.938 0 0 1-1.986-.65 6.337 6.337 0 0 1-1.622-1.18 6.355 6.355 0 0 1-1.178-1.623 6.935 6.935 0 0 1-.646-1.985c-.156-.863-.2-1.788-.22-2.578a66.088 66.088 0 0 1-.02-1.355l-.003-1.327V14.474l.002-1.325a66.7 66.7 0 0 1 .02-1.357c.022-.792.065-1.717.222-2.587a6.924 6.924 0 0 1 .646-1.981c.304-.598.7-1.144 1.18-1.623a6.386 6.386 0 0 1 1.624-1.18 6.96 6.96 0 0 1 1.98-.646c.865-.155 1.792-.198 2.586-.22.452-.012.905-.017 1.354-.02l1.677-.003h135.875" /><g><g><path fill="#000" d="M43.508 35.77c1.404-1.755 2.356-4.112 2.105-6.52-2.054.102-4.56 1.355-6.012 3.112-1.303 1.504-2.456 3.959-2.156 6.266 2.306.2 4.61-1.152 6.063-2.858" /><path fill="#000" d="M45.587 39.079c-3.35-.2-6.196 1.9-7.795 1.9-1.6 0-4.049-1.8-6.698-1.751-3.447.05-6.645 2-8.395 5.1-3.598 6.2-.95 15.4 2.55 20.45 1.699 2.5 3.747 5.25 6.445 5.151 2.55-.1 3.549-1.65 6.647-1.65 3.097 0 3.997 1.65 6.696 1.6 2.798-.05 4.548-2.5 6.247-5 1.95-2.85 2.747-5.6 2.797-5.75-.05-.05-5.396-2.101-5.446-8.251-.05-5.15 4.198-7.6 4.398-7.751-2.399-3.548-6.147-3.948-7.447-4.048" /></g><g><path fill="#000" d="M78.973 32.11c7.278 0 12.347 5.017 12.347 12.321 0 7.33-5.173 12.373-12.529 12.373h-8.058V69.62h-5.822V32.11h14.062zm-8.24 19.807h6.68c5.07 0 7.954-2.729 7.954-7.46 0-4.73-2.885-7.434-7.928-7.434h-6.706v14.894z" /><path fill="#000" d="M92.764 61.847c0-4.809 3.665-7.564 10.423-7.98l7.252-.442v-2.08c0-3.04-2.001-4.704-5.562-4.704-2.938 0-5.07 1.507-5.51 3.82h-5.252c.157-4.86 4.731-8.395 10.918-8.395 6.654 0 10.995 3.483 10.995 8.89v18.663h-5.38v-4.497h-.13c-1.534 2.937-4.914 4.782-8.579 4.782-5.406 0-9.175-3.222-9.175-8.057zm17.675-2.417v-2.106l-6.472.416c-3.64.234-5.536 1.585-5.536 3.95 0 2.288 1.975 3.77 5.068 3.77 3.95 0 6.94-2.522 6.94-6.03z" /><path fill="#000" d="M120.975 79.652v-4.496c.364.051 1.247.103 1.715.103 2.573 0 4.029-1.09 4.913-3.899l.52-1.663-9.852-27.293h6.082l6.863 22.146h.13l6.862-22.146h5.927l-10.216 28.67c-2.34 6.577-5.017 8.735-10.683 8.735-.442 0-1.872-.052-2.261-.157z" /></g></g></svg>
2762</li><li><svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" aria-labelledby="pi-google_pay"><title id="pi-google_pay">Google Pay</title><path d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z" fill="#000" opacity=".07"/><path d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32" fill="#FFF"/><path d="M18.093 11.976v3.2h-1.018v-7.9h2.691a2.447 2.447 0 0 1 1.747.692 2.28 2.28 0 0 1 .11 3.224l-.11.116c-.47.447-1.098.69-1.747.674l-1.673-.006zm0-3.732v2.788h1.698c.377.012.741-.135 1.005-.404a1.391 1.391 0 0 0-1.005-2.354l-1.698-.03zm6.484 1.348c.65-.03 1.286.188 1.778.613.445.43.682 1.03.65 1.649v3.334h-.969v-.766h-.049a1.93 1.93 0 0 1-1.673.931 2.17 2.17 0 0 1-1.496-.533 1.667 1.667 0 0 1-.613-1.324 1.606 1.606 0 0 1 .613-1.336 2.746 2.746 0 0 1 1.698-.515c.517-.02 1.03.093 1.49.331v-.208a1.134 1.134 0 0 0-.417-.901 1.416 1.416 0 0 0-.98-.368 1.545 1.545 0 0 0-1.319.717l-.895-.564a2.488 2.488 0 0 1 2.182-1.
276206zM23.29 13.52a.79.79 0 0 0 .337.662c.223.176.5.269.785.263.429-.001.84-.17 1.146-.472.305-.286.478-.685.478-1.103a2.047 2.047 0 0 0-1.324-.374 1.716 1.716 0 0 0-1.03.294.883.883 0 0 0-.392.73zm9.286-3.75l-3.39 7.79h-1.048l1.281-2.728-2.224-5.062h1.103l1.612 3.885 1.569-3.885h1.097z" fill="#5F6368"/><path d="M13.986 11.284c0-.308-.024-.616-.073-.92h-4.29v1.747h2.451a2.096 2.096 0 0 1-.9 1.373v1.134h1.464a4.433 4.433 0 0 0 1.348-3.334z" fill="#4285F4"/><path d="M9.629 15.721a4.352 4.352 0 0 0 3.01-1.097l-1.466-1.14a2.752 2.752 0 0 1-4.094-1.44H5.577v1.17a4.53 4.53 0 0 0 4.052 2.507z" fill="#34A853"/><path d="M7.079 12.05a2.709 2.709 0 0 1 0-1.735v-1.17H5.577a4.505 4.505 0 0 0 0 4.075l1.502-1.17z" fill="#FBBC04"/><path d="M9.629 8.44a2.452 2.452 0 0 1 1.74.68l1.3-1.293a4.37 4.37 0 0 0-3.065-1.183 4.53 4.53 0 0 0-4.027 2.5l1.502 1.171a2.715 2.715 0 0 1 2.55-1.875z" fill="#EA4335"/></svg>
2763</li><li><svg xmlns="http://www.w3.org/2000/svg" role="img" width="38" height="24" viewBox="0 0 38 24" aria-labelledby="pi-klarna" fill="none"><title id="pi-klarna">Klarna</title><rect width="38" height="24" rx="2" fill="#FFA8CD"/><rect x=".5" y=".5" width="37" height="23" rx="1.5" stroke="#000" stroke-opacity=".07"/><path d="M30.62 14.755c-.662 0-1.179-.554-1.179-1.226 0-.673.517-1.226 1.18-1.226.663 0 1.18.553 1.18 1.226 0 .672-.517 1.226-1.18 1.226zm-.33 1.295c.565 0 1.286-.217 1.686-1.068l.04.02c-.176.465-.176.742-.176.81v.11h1.423v-4.786H31.84v.109c0 .069 0 .346.175.81l-.039.02c-.4-.85-1.121-1.068-1.687-1.068-1.355 0-2.31 1.088-2.31 2.522 0 1.433.955 2.521 2.31 2.521zm-4.788-5.043c-.643 0-1.15.228-1.56 1.068l-.039-.02c.175-.464.175-.741.175-.81v-.11h-1.423v4.787h1.462V13.4c0-.662.38-1.078.995-1.078.614 0 .917.356.917 1.068v2.532h1.462v-3.046c0-1.088-.838-1.869-1.989-1.869zm-4.963 1.068l-.039-.02c.176-.464.176-.741.176-.81v-.11h-1.424v4.787h1.463l.01-2.304c0-.673.35-1.078.926-1.078.156 0 .282.02.429.06v-1.464c-.644-.139-1.22.109-1.54.94zm-4.65 2.68c-.664 0-1.18-.554-1.18-1.226 0-.673.516-1.226 1.18-1.226.662 0 1.179.553 1.179 1.226 0 .672-.517 1.226-1.18 1.226zm-.332 1.295c.565 0 1.287-.217 1.687-1.068l.038.02c-.175.465-.175.742-.175.81v.11h1.424v-4.786h-1.424v.109c0 .069 0 .346.175.81l-.038.02c-.4-.85-1.122-1.068-1.687-1.068-1.356 0-2.311 1.088-2.311 2.522 0 1.433.955 2.521 2.31 2.521zm-4.349-.128h1.463V9h-1.463v6.922zM10.136 9H8.644c0 1.236-.751 2.343-1.892 3.134l-.448.317V9h-1.55v6.922h1.55V12.49l2.564 3.43h1.892L8.293 12.64c1.121-.82 1.852-2.096 1.843-3.639z" fill="#0B051D"/></svg></li><li><svg viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" width="38" height="24" role="img" aria-labelledby="pi-maestro"><title id="pi-maestro">Maestro</title><path opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"/><path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"/><circle fill="#EB001B" cx="15" cy="12" r="7"/><circle fill="#00A2E5" cx="23" cy="12" r="7"/><path fill="#7375CF" d="M22 12c0-2.4-1.2-4.5-3-5.7-1.8 1.3-3 3.4-3 5.7s1.2 4.5 3 5.7c1.8-1.2 3-3.3 3-5.7z"/></svg></li><li><svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" fill="none" aria-labelledby="pi-master"><title id="pi-master">Mastercard</title><rect x=".5" y=".5" width="37" height="23" rx="2.5" stroke="#000" stroke-opacity=".07" fill="none"/><path d="M35 0H3C1.3 0 0 1.3 0 3V21C0 22.7 1.4 24 3 24H35C36.7 24 38 22.7 38 21V3C38 1.3 36.6 0 35 0Z" fill="#1C1C1C" style="fill:#1C1C1C;fill:color(display-p3 0.1098 0.1098 0.1098);fill-opacity:1;"/><path d="M35 1C36.1 1 37 1.9 37 3V21C37 22.1 36.1 23 35 23H3C1.9 23 1 22.1 1 21V3C1 1.9 1.9 1 3 1H35Z" fill="#232323" style="fill:#232323;fill:color(display-p3 0.1373 0.1373 0.1373);fill-opacity:1;"/><path d="M14.6364 19.2727C18.8538 19.2727 22.2727 15.8538 22.2727 11.6364C22.2727 7.41892 18.8538 4 14.6364 4C10.4189 4 7 7.41892 7 11.6364C7 15.8538 10.4189 19.2727 14.6364 19.2727Z" fill="#EB001B" style="fill:#EB001B;fill:color(display-p3 0.9216 0.0000 0.1059);fill-opacity:1;"/><path d="M23.3637 19.2727C27.5811 19.2727 31 15.8538 31 11.6364C31 7.41892 27.5811 4 23.3637 4C19.1462 4 15.7273 7.41892 15.7273 11.6364C15.7273 15.8538 19.1462 19.2727 23.3637 19.2727Z" fill="#F79E1B" style="fill:#F79E1B;fill:color(display-p3 0.9686 0.6196 0.1059);fill-opacity:1;"/>
2763<path d="M22.2727 11.6362C22.2727 9.01797 20.9637 6.72706 19 5.41797C17.0364 6.83615 15.7273 9.12706 15.7273 11.6362C15.7273 14.1452 17.0364 16.5452 19 17.8543C20.9637 16.5452 22.2727 14.2543 22.2727 11.6362Z" fill="#FF5F00" style="fill:#FF5F00;fill:color(display-p3 1.0000 0.3725 0.0000);fill-opacity:1;"/></svg>
2764</li><li><svg viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" width="38" height="24" role="img" aria-labelledby="pi-paypal"><title id="pi-paypal">PayPal</title><path opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"/><path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32"/><path fill="#003087" d="M23.9 8.3c.2-1 0-1.7-.6-2.3-.6-.7-1.7-1-3.1-1h-4.1c-.3 0-.5.2-.6.5L14 15.6c0 .2.1.4.3.4H17l.4-3.4 1.8-2.2 4.7-2.1z"/><path fill="#3086C8" d="M23.9 8.3l-.2.2c-.5 2.8-2.2 3.8-4.6 3.8H18c-.3 0-.5.2-.6.5l-.6 3.9-.2 1c0 .2.1.4.3.4H19c.3 0 .5-.2.5-.4v-.1l.4-2.4v-.1c0-.2.3-.4.5-.4h.3c2.1 0 3.7-.8 4.1-3.2.2-1 .1-1.8-.4-2.4-.1-.5-.3-.7-.5-.8z"/><path fill="#012169" d="M23.3 8.1c-.1-.1-.2-.1-.3-.1-.1 0-.2 0-.3-.1-.3-.1-.7-.1-1.1-.1h-3c-.1 0-.2 
27640-.2.1-.2.1-.3.2-.3.4l-.7 4.4v.1c0-.3.3-.5.6-.5h1.3c2.5 0 4.1-1 4.6-3.8v-.2c-.1-.1-.3-.2-.5-.2h-.1z"/></svg></li><li><svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" aria-labelledby="pi-shopify_pay"><title id="pi-shopify_pay">Shop Pay</title><path opacity=".07" d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z" fill="#000"/><path d="M35.889 0C37.05 0 38 .982 38 2.182v19.636c0 1.2-.95 2.182-2.111 2.182H2.11C.95 24 0 23.018 0 21.818V2.182C0 .982.95 0 2.111 0H35.89z" fill="#5A31F4"/><path d="M9.35 11.368c-1.017-.223-1.47-.31-1.47-.705 0-.372.306-.558.92-.558.54 0 .934.238 1.225.704a.079.079 0 00.104.03l1.146-.584a.082.082 0 00.032-.114c-.475-.831-1.353-1.286-2.51-1.286-1.52 0-2.464.755-2.464 1.956 0 1.275 1.15 1.597 2.17 1.82 1.02.222 1.474.31 1.474.705 0 .396-.332.582-.993.582-.612 0-1.065-.282-1.34-.83a.08.08 0 00-.107-.035l-1.143.57a.083.083 0 00-.036.111c.454.92 1.384 1.437 2.627 1.437 1.583 0 2.539-.742 2.539-1.98s-1.155-1.598-2.173-1.82v-.003zM15.49 8.855c-.65 0-1.224.232-1.636.646a.04.04 0 01-.069-.03v-2.64a.08.08 0 00-.08-.081H12.27a.08.08 0 00-.08.082v8.194a.08.08 0 00.08.082h1.433a.08.08 0 00.081-.082v-3.594c0-.695.528-1.227 1.239-1.227.71 0 1.226.521 1.226 1.227v3.594a.08.08 0 00.081.082h1.433a.08.08 0 00.081-.082v-3.594c0-1.51-.981-2.577-2.355-2.577zM20.753 8.62c-.778 0-1.507.24-2.03.588a.082.082 0 00-.027.109l.632 1.088a.08.08 0 00.11.03 2.5 2.5 0 011.318-.366c1.25 0 2.17.891 2.17 2.068 0 1.003-.736 1.745-1.669 1.745-.76 0-1.288-.446-1.288-1.077 0-.361.152-.657.548-.866a.08.08 0 00.032-.113l-.596-1.018a.08.08 0 00-.098-.035c-.799.299-1.359 1.018-1.359 1.984 0 1.46 1.152 2.55 2.76 2.55 1.877 0 3.227-1.313 3.227-3.195 0-2.018-1.57-3.492-3.73-3.492zM28.675 8.843c-.724 0-1.373.27-1.845.746-.026.027-.069.007-.069-.029v-.572a.08.08 0 00-.08-.082h-1.397a.08.08 0 00-.08.082v8.182a.08.08 0 00.08.081h1.433a.08.08 0 00.081-.081v-2.683c0-.036.043-.054.069-.03a2.6 2.6 0 001.808.7c1.682 0 2.993-1.373 2.993-3.157s-1.313-3.157-2.993-3.157zm-.271 4.929c-.956 0-1.681-.768-1.681-1.783s.723-1.783 1.681-1.783c.958 0 1.68.755 1.68 1.783 0 1.027-.713 1.783-1.681 1.783h.001z" fill="#fff"/></svg>
2765</li><li><svg viewBox="-36 25 38 24" xmlns="http://www.w3.org/2000/svg" width="38" height="24" role="img" aria-labelledby="pi-unionpay"><title id="pi-unionpay">Union Pay</title><path fill="#005B9A" d="M-36 46.8v.7-.7zM-18.3 25v24h-7.2c-1.3 0-2.1-1-1.8-2.3l4.4-19.4c.3-1.3 1.9-2.3 3.2-2.3h1.4zm12.6 0c-1.3 0-2.9 1-3.2 2.3l-4.5 19.4c-.3 1.3.5 2.3 1.8 2.3h-4.9V25h10.8z"/><path fill="#E9292D" d="M-19.7 25c-1.3 0-2.9 1.1-3.2 2.3l-4.4 19.4c-.3 1.3.5 2.3 1.8 2.3h-8.9c-.8 0-1.5-.6-1.5-1.4v-21c0-.8.7-1.6 1.5-1.6h14.7z"/><path fill="#0E73B9" d="M-5.7 25c-1.3 0-2.9 1.1-3.2 2.3l-4.4 19.4c-.3 1.3.5 2.3 1.8 2.3H-26h.5c-1.3 0-2.1-1-1.8-2.3l4.4-19.4c.3-1.3 1.9-2.3 3.2-2.3h14z"/><path fill="#059DA4" d="M2 26.6v21c0 .8-.6 1.4-1.5 1.4h-12.1c-1.3 0-2.1-1.1-1.8-2.3l4.5-19.4C-8.6 26-7 25-5.7 25H.5c.9 0 1.5.7 1.5 1.6z"/><path fill="#fff" d="M-21.122 38.645h.14c.14 0 .28-.07.28-.14l.42-.63h1.19l-.21.35h1.4l-.21.63h-1.68c-.21.28-.42.42-.7.42h-.84l.21-.63m-.21.91h3.01l-.21.7h-1.19l-.21.7h1.19l-.21.7h-1.19l-.28 1.05c-.07.14 0 .28.28.21h.98l-.21.7h-1.89c-.35 0-.49-.21-.35-.63l.35-1.33h-.77l.21-.7h.77l.21-.7h-.7l.21-.7zm4.83-1.75v.42s.56-.42 1.12-.42h1.96l-.77 2.66c-.07.28-.35.49-.77.49h-2.24l-.49 1.89c0 .07 0 .14.14.14h.42l-.14.56h-1.12c-.42 0-.56-.14-.49-.35l1.47-5.39h.91zm1.68.77h-1.75l-.21.7s.28-.21.77-.21h1.05l.14-.49zm-.63 1.68c.14 0 .21 0 .21-.14l.14-.35h-1.75l-.14.56 1.54-.07zm-1.19.84h.98v.42h.28c.14 0 .21-.07.21-.14l.07-.28h.84l-.14.49c-.07.35-.35.49-.77.56h-.56v.77c0 .14.07.21.35.21h.49l-.14.56h-1.19c-.35 0-.49-.14-.49-.49l.07-2.1zm4.2-2.45l.21-.84h1.19l-.07.28s.56-.28 1.05-.28h1.47l-.21.84h-.21l-1.12 3.85h.21l-.21.77h-.21l-.07.35h-1.19l.07-.35h-2.17l.21-.77h.21l1.12-3.85h-.28m1.26 0l-.28 1.05s.49-.21.91-.28c.07-.35.21-.77.21-.77h-.84zm-.49 1.54l-.28 1.12s.56-.28.98-.28c.14-.42.21-.77.21-.77l-.91-.07zm.21 2.31l.21-.77h-.84l-.21.77h.84zm2.87-4.69h1.12l.07.42c0 .07.07.14.21.14h.21l-.21.7h-.77c-.28 0-.49-.07-.49-.35l-.14-.91zm-.35 1.47h3.57l-.21.77h-1.19l-.21.7h1.12l-.21.77h-1.26l-.28.42h.63l.14.84c0 .07.07.14.21.14h.21l-.21.7h-.7c-.35 0-.56-.07-.56-.35l-.14-.77-.56.84c-.14.21-.35.35-.63.35h-1.05l.21-.7h.35c.14 0 .21-.07.35-.21l.84-1.26h-1.05l.21-.77h1.19l.21-.7h-1.19l.21-.77zm-19.74-5.04c-.14.7-.42 1.19-.91 1.54-.49.35-1.12.56-1.89.56-.7 0-1.26-.21-1.54-.56-.21-.28-.35-.56-.35-.98 0-.14 0-.35.07-.56l.84-3.92h1.19l-.77 3.92v.28c0 .21.07.35.14.49.14.21.35.28.7.28s.7-.07.91-.28c.21-.21.42-.42.49-.77l.77-3.92h1.19l-.84 3.92m1.12-1.54h.84l-.07.49.14-.14c.28-.28.63-.42 1.05-.42.35 0 .63.14.77.35.14.21.21.49.14.91l-.49 2.38h-.91l.42-2.17c.07-.28.07-.49 0-.56-.07-.14-.21-.14-.35-.14-.21 0-.42.07-.56.21-.14.14-.28.35-.28.63l-.42 2.03h-.91l.63-3.57m9.8 0h.84l-.07.49.14-.14c.28-.28.63-.42 1.05-.42.35 0 .63.14.77.35s.21.49.14.91l-.49 2.38h-.91l.42-2.24c.07-.21 0-.42-.07-.49-.07-.14-.21-.14-.35-.14-.21 0-.42.07-.56.21-.14.14-.28.35-.28.63l-.42 2.03h-.91l.7-3.57m-5.81 0h.98l-.77 3.5h-.98l.77-3.5m.35-1.33h.98l-.21.84h-.98l.21-.84zm1.4 4.55c-.21-.21-.35-.56-.35-.98v-.21c0-.07 0-.21.07-.28.14-.56.35-1.05.7-1.33.35-.35.84-.49 1.33-.49.42 0 .77.14 1.05.35.21.21.35.56.35.98v.21c0 .07 0 .21-.07.28-.14.56-.35.98-.7 1.33-.35.35-.84.49-1.33.49-.35 0-.7-.14-1.05-.35m1.89-.7c.14-.21.28-.49.35-.84v-.35c0-.21-.07-.35-.14-.49a.
2765635.635 0 0 0-.49-.21c-.28 0-.49.07-.63.28-.14.21-.28.49-.35.84v.28c0 .21.07.35.14.49.14.14.28.21.49.21.28.07.42 0 .63-.21m6.51-4.69h2.52c.49 0 .84.14 1.12.35.28.21.35.56.35.91v.28c0 .07 0 .21-.07.28-.07.49-.35.98-.7 1.26-.42.35-.84.49-1.4.49h-1.4l-.42 2.03h-1.19l1.19-5.6m.56 2.59h1.12c.28 0 .49-.07.7-.21.14-.14.28-.35.35-.63v-.28c0-.21-.07-.35-.21-.42-.14-.07-.35-.14-.7-.14h-.91l-.35 1.68zm8.68 3.71c-.35.77-.7 1.26-.91 1.47-.21.21-.63.7-1.61.7l.07-.63c.84-.28 1.26-1.4 1.54-1.96l-.28-3.78h1.19l.07 2.38.91-2.31h1.05l-2.03 4.13m-2.94-3.85l-.42.28c-.42-.35-.84-.56-1.54-.21-.98.49-1.89 4.13.91 2.94l.14.21h1.12l.7-3.29-.91.07m-.56 1.82c-.21.56-.56.84-.91.77-.28-.14-.35-.63-.21-1.19.21-.56.56-.84.91-.77.28.14.35.63.21 1.19"/></svg></li><li><svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 38 24" width="38" height="24" fill="none" aria-labelledby="pi-visa"><title id="pi-visa">Visa</title><rect x=".5" y=".5" width="37" height="23" rx="2.5" stroke="#000" stroke-opacity=".07" fill="none"/><path d="M35 0H3C1.3 0 0 1.3 0 3V21C0 22.7 1.4 24 3 24H35C36.7 24 38 22.7 38 21V3C38 1.3 36.6 0 35 0Z" fill="#142FBD" style="fill:#142FBD;fill:color(display-p3 0.0784 0.1843 0.7412);fill-opacity:1;"/><path d="M35 1C36.1 1 37 1.9 37 3V21C37 22.1 36.1 23 35 23H3C1.9 23 1 22.1 1 21V3C1 1.9 1.9 1 3 1H35Z" fill="#1532CB" style="fill:#1532CB;fill:color(display-p3 0.0824 0.1961 0.7961);fill-opacity:1;"/><path d="M29.5944 10.2167H29.2778C28.8556 11.2722 28.5389 11.8 28.2222 13.3833H30.2278C29.9111 11.8 29.9111 11.0611 29.5944 10.2167V10.2167ZM32.6556 16.4444H30.8611C30.7556 16.4444 30.7556 16.4444 30.65 16.3389L30.4389 15.3889L30.3333 15.1778H27.8C27.6944 15.1778 27.5889 15.1778 27.5889 15.3889L27.2722 16.3389C27.2722 16.4444 27.1667 16.4444 27.1667 16.4444H24.95L25.1611 15.9167L28.2222 8.73889C28.2222 8.21111 28.5389 8 29.0667 8H30.65C30.7556 8 30.8611 8 30.8611 8.21111L32.3389 15.0722C32.4444 15.4944 32.55 15.8111 32.55 16.2333C32.6556 16.3389 32.6556 16.3389 32.6556 16.4444V16.4444ZM18.5111 16.1278L18.9333 14.2278C19.0389 14.2278 19.1444 14.3333 19.1444 14.3333C19.8833 14.65 20.6222 14.8611 21.3611 14.7556C21.5722 14.7556 21.8889 14.65 22.1 14.5444C22.6278 14.3333 22.6278 13.8056 22.2056 13.3833C21.9944 13.1722 21.6778 13.0667 21.3611 12.8556C20.9389 12.6444 20.5167 12.4333 20.2 12.1167C18.9333 11.0611 19.3556 9.58333 20.0944 8.84444C20.7278 8.42222 21.0444 8 21.8889 8C23.1556 8 24.5278 8 25.1611 8.21111H25.2667C25.1611 8.84444 25.0556 9.37222 24.8444 10.0056C24.3167 9.79444 23.7889 9.58333 23.2611 9.58333C22.9444 9.58333 22.6278 9.58333 22.3111 9.68889C22.1 9.68889 21.9944 9.79444 21.8889 9.9C21.6778 10.1111 21.6778 10.4278 21.8889 10.6389L22.4167 11.0611C22.8389 11.2722 23.2611 11.4833 23.5778 11.6944C24.1056 12.0111 24.6333 12.5389 24.7389 13.1722C24.95 14.1222 24.6333 14.9667 23.7889 15.6C23.2611 16.0222 23.05 16.2333 22.3111 16.2333C20.8333 16.2333 19.6722 16.3389 18.7222 16.0222C18.6167 16.2333 18.6167 16.2333 18.5111 16.1278V16.1278ZM14.8167 16.4444C14.9222 15.7056 14.9222 15.7056 15.0278 15.3889C15.5556 13.0667 16.0833 10.6389 16.5056 8.31667C16.6111 8.10556 16.6111 8 16.8222 8H18.7222C18.5111 9.26667 18.3 10.2167 17.9833 11.3778C17.6667 12.9611 17.35 14.5444 16.9278 16.1278C16.9278 16.3389 16.8222 16.3389 16.6111 16.3389L14.8167 16.4444ZM5 8.21111C5 8.10556 5.21111 8 5.31667 8H8.90556C9.43333 8 9.85556 8.31667 9.96111 8.84444L10.9111 13.4889C10.9111 13.5944 10.9111 13.5944 11.0167 13.7C11.0167 13.5944 11.1222 13.5944 11.1222 13.5944L13.3389 8.21111C13.2333 8.10556 13.3389 8 13.4444 8H15.6611C15.6611 8.10556 15.6611 8.10556 15.5556 8.21111L12.2833 15.9167C12.1778 16.1278 12.1778 
276516.2333 12.0722 16.3389C11.9667 16.4444 11.7556 16.3389 11.5444 16.3389H9.96111C9.85556 16.3389 9.75 16.3389 9.75 16.1278L8.06111 9.58333C7.85 9.37222 7.53333 9.05556 7.11111 8.95C6.47778 8.63333 5.31667 8.42222 5.10556 8.42222L5 8.21111Z" fill="white" style="fill:white;fill-opacity:1;"/></svg>
2766</li></ul></div>
2767</div>
2768
2769
2770<style> #shopify-section-sections--24796503048571__footer-copyright li:has(a[href="/policies/contact-information"]) {display: none;} #shopify-section-sections--24796503048571__footer-copyright li:has(a[href="/policies/shipping-policy"]) {display: none;} </style></div>
2771<!-- END sections: footer-group --></footer-group>
2772  </div>
2773
2774  <ul hidden>
2775    <li id="a11y-refresh-page-message">Wenn du dich für eine Auswahl entscheidest, wird die Seite komplett aktualisiert.</li>
2776    <li id="a11y-new-window-message">Wird in einem neuen Fenster geöffnet.</li>
2777  </ul>
2777<script src="//odiporo.de/cdn/shop/t/3/assets/instant-page.js?v=99963444960178710701744817341" type="module" fetchpriority="low" defer="defer"></script>
2777<script>
2778  const updatePlaceholderIfFound = () => {
2779    document.querySelectorAll('input[type="email"]').forEach(input => {
2780      const current = input.getAttribute('placeholder') || '';
2781      if (current.includes('Newsletter') || current.trim() === '') {
2782        input.setAttribute('placeholder', 'Deine Mailadresse');
2783      }
2784    });
2785  };
2786
2787  // Starte Beobachter
2788  const observer = new MutationObserver((mutationsList, observer) => {
2789    updatePlaceholderIfFound();
2790  });
2791
2792  // Aktiviere, sobald DOM da ist
2793  document.addEventListener('DOMContentLoaded', function () {
2794    updatePlaceholderIfFound(); // erster Versuch
2795    observer.observe(document.body, {
2796      childList: true,
2797      subtree: true
2798    });
2799  });
2800
2801  // Sicherheit: Wiederholung nach 1s und 3s
2802  setTimeout(updatePlaceholderIfFound, 1000);
2803  setTimeout(updatePlaceholderIfFound, 3000);
2804</script>
2804
2805
2806
2807
2808
2809<style> .ips-small-text {color: #fae009;} </style>
2810<div id="shopify-block-AVG5qQ0sxL0pGS1p1Z__6770548097779500122" class="shopify-block shopify-app-block">                                         <!-- BEGIN app snippet: banners -->                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <koala-gifts-banners  class="koala--hidden koala-element--app-embed-block"  data-state="eyAgICAgICAidHlwZXMiOiBbIkFOTk9VTkNFTUVOVF9CQU5ORVIiLCJQUk9EVUNUX1BBR0VfQkFOTkVSIiwiUkVXQVJEX1NIT1dDQVNFIiwiUkVXQVJEX1NIT1dDQVNFX1VQU0VMTCJdLCAgICAgICAiZW1iZWRkZWQiOiB0cnVlLCAgICAgICAidGVtcGxhdGUiOiB7ICAgICAgICAgIm5hbWUiOiAiY2FydCIgICAgICAgfSwgICAgICAgICAgICAgICJhcHAiOiB7ICAgICAgICAgInByb3h5U3ViUGF0aCI6ICJrb2FsYS11cHNlbGwtZ2lmdCIgICAgICAgfSwgICAgICAgImN1c3RvbWVyIjogeyAgICAgICAgICJpc0F1dGhlbnRpY2F0ZWQiOiBmYWxzZSwgICAgICAgICAiYWxsVGltZUFtb3VudFNwZW50IjogMCwgICAgICAgICAiYWxsVGltZU9yZGVyc0NvdW50IjogMCwgICAgICAgICAidGFncyI6IHsgICAgICAgICAgICAgICAgICAgIH0gICAgICAgfSwgICAgICAgInNob3AiOiB7ICAgICAgICAgImxvY2FsZSI6ICJkZSIsICAgICAgICAgIm1vbmV5Rm9ybWF0IjogIuKCrHt7YW1vdW50X3dpdGhfY29tbWFfc2VwYXJhdG9yfX0iLCAgICAgICAgICJmbGFncyI6IHt9ICAgICAgIH0sICAgICAgICJvZmZlcnMiOiBbICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgICAgICJpZCI6ICJjbWRpbjV0anQwcGR4ejUxaWllYzhqNzNtIiwgICAgICAgICAgICAgImRlZmluaXRpb24iOiB7InRpZXJzIjpbeyJpZCI6IjYwZWY1OTM2LWRiNzctNDFiMi05YzM1LTFkZWY2MzY5ZTA1ZiIsIm5hbWUiOiJUaWVyIDEiLCJyZXdhcmQiOnsidHlwZSI6IlBST0RVQ1QiLCJpdGVtcyI6W3siaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RcLzE1MDgzOTAwNDY5NjI3IiwiaGFuZGxlIjoiZmxleHB1bXAtbW9iaWxlci1taW5pLWtvbXByZXNzb3IiLCJ2YXJpYW50cyI6W3siaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RWYXJpYW50XC81NTQ1NzA5NjA0MDgyNyIsInF1YW50aXR5IjoxfV19XSwiZGlzY291bnQiOnsibmFtZSI6eyJ2YWx1ZSI6IkZSRUUgR0lGVCJ9LCJ0eXBlIjoiUEVSQ0VOVEFHRSIsInZhbHVlIjoxMDB9fSwidHJpZ2dlcnMiOlt7InR5cGUiOiJTUEVDSUZJQ19QUk9EVUNUIiwiaXRlbXMiOlt7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0XC8xNTA4Mzg5NzI1ODM2MyIsInZhcmlhbnRzIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NDU3MDg2OTk2ODU5In1dfSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0XC8xNTA0ODU3MzM4NzEzMSIsInZhcmlhbnRzIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1MzUyOTIxNjUzNjI3In0seyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1MzUyOTIxNzE5MTYzIn1dfSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0XC8xNTA4Mzg5NzA5NDUyMyIsInZhcmlhbnRzIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NDU3MDg2ODMzMDE5In1dfSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0XC8xNTA4Mzg5NzE2MDA1OSIsInZhcmlhbnRzIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NDU3MDg2ODk4NTU1In1dfSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0XC8xNTA4Mzg5NzE5MjgyNyIsInZhcmlhbnRzIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NDU3MDg2OTMxMzIzIn1dfSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0XC8xNTA4Mzg5NzIyNTU5NSIsInZhcmlhbnRzIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NDU3MDg2OTY0MDkxIn1dfSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0XC8xNTA4Mzg5NzQ4NzczOSIsInZhcmlhbnRzIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NDU3MDg3MjI2MjM1In1dfSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0XC8xNTA4Mzg5NzUyMDUwNyIsInZhcmlhbnRzIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NDU3MDg3MjU5MDAzIn1dfSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0XC8xNTA4Mzg5NzU1MzI3NSIsInZhcmlhbnRzIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NDU3MDg3MjkxNzcxIn1dfSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0XC8xNTA4Mzg5NzYxODgxMSIsInZhcmlhbnRzIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NDU3MDg3MzU3MzA3In1dfSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0XC8xNTA4Mzg5NzY1MTU3OSIsInZhcmlhbnRzIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NDU3MDg3MzkwMDc1In0seyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NjM3OTc4OTA3MDAzIn0seyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NjM3OTc4OTM5NzcxIn0seyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NjM3OTc4OTcyNTM5In1dfSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0XC8xNTA4Mzg5NzY4NDM0NyIsInZhcmlhbnRzIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NDU3MDg3NDIyODQzIn1dfSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0XC8xNTA4Mzg5NzcxNzExNSIsInZhcmlhbnRzIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NDU3MDg3NDU1NjExIn0seyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NDU3MDg3NDg4Mzc5In1dfV0sInJ1bGVzIjpbXX1dfV0sImFjdGlvbiI6IkFVVE9fQUREX1RPX0NBUlQiLCJvcHRpb25zIjp7ImxpbWl0Ijp7InZhbHVlIjo1LCJlbmFibGVkIjp0cnVlfSwic2NoZWR1bGUiOnsic3RhcnQiOiIyMDI1LTA3LTI0VDA5OjU5OjQxLjM0MVoiLCJlbmFibGVkIjpmYWxzZX0sIndvcmtzSW5SZXZlcnNlIjpmYWxzZX0sInZlcnNpb24iOiJWMiJ9LCAgICAgICAgICAgICAiY29tcGF0aWJpbGl0eSI6IHt9LCAgICAgICAgICAgICAidGVtcGxhdGUiOiB7fSwgICAgICAgICAgICAgInR5cGUiOiAiQlhHWSIgICAgICAgICAgI
2810H0gICAgICAgICAgICAgICAgXSwgICAgICAgInJld2FyZFByb2R1Y3RzIjogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI2MGVmNTkzNi1kYjc3LTQxYjItOWMzNS0xZGVmNjM2OWUwNWYiOiBbICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAiaWQiOiAxNTA4MzkwMDQ2OTYyNywgICAgICAgICAgICAgICAgICAgICAgICJ0aXRsZSI6ICJPRFlTIEZsZXhQdW1wIC0gTW9iaWxlciBNaW5pIEtvbXByZXNzb3IiLCAgICAgICAgICAgICAgICAgICAgICAgImhhc09ubHlEZWZhdWx0VmFyaWFudCI6IHRydWUsICAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZXNTZWxsaW5nUGxhbiI6IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAgImZlYXR1cmVkX2ltYWdlIjogIlwvXC9vZGlwb3JvLmRlXC9jZG5cL3Nob3BcL2ZpbGVzXC94OTEwMDAxLW9keXMtZmxleHB1bXAtbWluaWFpcmNvbXBwYjEyMDB4MTIwMHB4djAyanBnLTEwNTU4Ny5qcGc/dj0xNzQ4MjIyNzI0IiwgICAgICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiL3Byb2R1Y3RzL2ZsZXhwdW1wLW1vYmlsZXItbWluaS1rb21wcmVzc29yIiwgICAgICAgICAgICAgICAgICAgICAgICJ2YXJpYW50cyI6IFsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlkIjogNTU0NTcwOTYwNDA4MjcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aXRsZSI6ICJEZWZhdWx0IFRpdGxlIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByaWNlIjogMzk5OSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbXBhcmVfYXRfcHJpY2UiOiA0OTk5LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXZhaWxhYmxlIjogdHJ1ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZlYXR1cmVkX2ltYWdlIjogbnVsbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmVudG9yeV9tYW5hZ2VtZW50IjogInNob3BpZnkiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52ZW50b3J5X3BvbGljeSI6ICJDT05USU5VRSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZlbnRvcnlfcXVhbnRpdHkiOiA4MDYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgICAgICAgIm1hcmtldCI6IHsgICAgICAgICAiaWQiOiAiOTYzNzEzNzY1MDciLCAgICAgICAgICJjb3VudHJ5Q29kZSI6ICJERSIsICAgICAgICAgImxhbmd1YWdlQ29kZSI6ICJERSIgICAgICAgfSwgICAgICAgInNlbGVjdG9ycyI6IFtdICAgICB9"></koala-gifts-banners>   <!-- END app snippet -->     <!-- BEGIN app snippet: styles -->  <!-- END app snippet -->     <!-- BEGIN app snippet: script -->   <!-- END app snippet -->                  <koala-gifts data-state="eyAgICAgICAidGVtcGxhdGUiOiB7ICAgICAgICJuYW1lIjogImNhcnQiICAgICAgIH0sICAgICAgICAgICAgICAiYXBwIjogeyAgICAgICAicHJveHlTdWJQYXRoIjogImtvYWxhLXVwc2VsbC1naWZ0IiAgICAgICB9LCAgICAgICAiY3VzdG9tZXIiOiB7ICAgICAgICJpc0F1dGhlbnRpY2F0ZWQiOiBmYWxzZSwgICAgICAgImFsbFRpbWVBbW91bnRTcGVudCI6IDAsICAgICAgICJhbGxUaW1lT3JkZXJzQ291bnQiOiAwLCAgICAgICAidGFncyI6IHsgICAgICAgICAgICAgIH0gICAgICAgfSwgICAgICAgInNob3AiOiB7ICAgICAgICJsb2NhbGUiOiAiZGUiLCAgICAgICAibW9uZXlGb3JtYXQiOiAi4oKse3thbW91bnRfd2l0aF9jb21tYV9zZXBhcmF0b3J9fSIsICAgICAgICJmbGFncyI6IHt9ICAgICAgIH0sICAgICAgICJvZmZlcnMiOiBbICAgICAgICAgICAgICAgIHsgICAgICAgICAiaWQiOiAiY21kaW41dGp0MHBkeHo1MWlpZWM4ajczbSIsICAgICAgICAgImRlZmluaXRpb24iOiB7InRpZXJzIjpbeyJpZCI6IjYwZWY1OTM2LWRiNzctNDFiMi05YzM1LTFkZWY2MzY5ZTA1ZiIsIm5hbWUiOiJUaWVyIDEiLCJyZXdhcmQiOnsidHlwZSI6IlBST0RVQ1QiLCJpdGVtcyI6W3siaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RcLzE1MDgzOTAwNDY5NjI3IiwiaGFuZGxlIjoiZmxleHB1bXAtbW9iaWxlci1taW5pLWtvbXByZXNzb3IiLCJ2YXJpYW50cyI6W3siaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RWYXJpYW50XC81NTQ1NzA5NjA0MDgyNyIsInF1YW50aXR5IjoxfV19XSwiZGlzY291bnQiOnsibmFtZSI6eyJ2YWx1ZSI6IkZSRUUgR0lGVCJ9LCJ0eXBlIjoiUEVSQ0VOVEFHRSIsInZhbHVlIjoxMDB9fSwidHJpZ2dlcnMiOlt7InR5cGUiOiJTUEVDSUZJQ19QUk9EVUNUIiwiaXRlbXMiOlt7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0XC8xNTA4Mzg5NzI1ODM2MyIsInZhcmlhbnRzIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NDU3MDg2OTk2ODU5In1dfSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0XC8xNTA0ODU3MzM4NzEzMSIsInZhcmlhbnRzIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1MzUyOTIxNjUzNjI3In0seyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1MzUyOTIxNzE5MTYzIn1dfSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0XC8xNTA4Mzg5NzA5NDUyMyIsInZhcmlhbnRzIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NDU3MDg2ODMzMDE5In1dfSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0XC8xNTA4Mzg5NzE2MDA1OSIsInZhcmlhbnRzIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NDU3MDg2ODk4NTU1In1dfSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0XC8xNTA4Mzg5NzE5MjgyNyIsInZhcmlhbnRzIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NDU3MDg2OTMxMzIzIn1dfSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0XC8xNTA4Mzg5NzIyNTU5NSIsInZhcmlhbnRzIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NDU3MDg2OTY0MDkxIn1dfSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0XC8xNTA4Mzg5NzQ4NzczOSIsInZhcmlhbnRzIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NDU3MDg3MjI2MjM1In1dfSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0XC8xNTA4Mzg5NzUyMDUwNyIsInZhcmlhbnRzIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NDU3MDg3MjU5MDAzIn1dfSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0XC8xNTA4Mzg5NzU1MzI3NSIsInZhcmlhbnRzIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NDU3MDg3MjkxNzcxIn1dfSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0XC8xNTA4Mzg5NzYxODgxMSIsInZhcmlhbnRzIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NDU3MDg3MzU3MzA3In1dfSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0XC8xNTA4Mzg5NzY1MTU3OSIsInZhcmlhbnRzIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NDU3MDg3MzkwMDc1In0seyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NjM3OTc4OTA3MDAzIn0seyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NjM3OTc4OTM5NzcxIn0seyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NjM3OTc4OTcyNTM5In1dfSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0XC8xNTA4Mzg5NzY4NDM0NyIsInZhcmlhbnRzIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NDU3MDg3NDIyODQzIn1dfSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0XC8xNTA4Mzg5NzcxNzExNSIsInZhcmlhbnRzIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NDU3MDg3NDU1NjExIn0seyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NDU3MDg3NDg4Mzc5In1dfV0sInJ1bGVzIjpbXX1dfV0sImFjdGlvbiI6IkFVVE9fQUREX1RPX0NBUlQiLCJvcHRpb25zIjp7ImxpbWl0Ijp7InZhbHVlIjo1LCJlbmFibGVkIjp0cnVlfSwic2NoZWR1bGUiOnsic3RhcnQiOiIyMDI1LTA3LTI0VDA5OjU5OjQxLjM0MVoiLCJlbmFibGVkIjpmYWxzZX0sIndvcmtzSW5SZXZlcnNlIjpmYWxzZX0sInZlcnNpb24iOiJWMiJ9LCAgICAgICAgICJjb21wYXRpYmlsaXR5Ijoge30sICAgICAgICAgInRlbXBsYXRlIjoge30sICAgICAgICAgInR5cGUiOiAiQlhHWSIgICAgICAgICB9ICAgICAgICAgICAgICBdLCAgICAgICAicmV3YXJkUHJvZHVjdHMiOiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI2MGVmNTkzNi1kYjc3LTQxYjItOWMzNS0xZGVmNjM2OWUwNWYiOiBbICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAiaWQiOiAxNTA4MzkwMDQ2OTYyNywgICAgICAgICAgICAgICAgICAgICAgICJ0aXRsZSI6ICJPRFlTIEZsZXhQdW1wIC0gTW9iaWxlciBNaW5pIEtvbXByZXNzb3IiLCAgICAgICAgICAgICAgICAgICAgICAgImhhc09ubHlEZWZhdWx0VmFyaWFudCI6IHRydWUsICAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZXNTZWxsaW5nUGxhbiI6IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAgImZlYXR1cmVkX2ltYWdlIjogIlwvXC9vZGlwb3JvLmRlXC9jZG5cL3N
2810ob3BcL2ZpbGVzXC94OTEwMDAxLW9keXMtZmxleHB1bXAtbWluaWFpcmNvbXBwYjEyMDB4MTIwMHB4djAyanBnLTEwNTU4Ny5qcGc/dj0xNzQ4MjIyNzI0IiwgICAgICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiL3Byb2R1Y3RzL2ZsZXhwdW1wLW1vYmlsZXItbWluaS1rb21wcmVzc29yIiwgICAgICAgICAgICAgICAgICAgICAgICJ2YXJpYW50cyI6IFsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaWQiOiA1NTQ1NzA5NjA0MDgyNywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpdGxlIjogIkRlZmF1bHQgVGl0bGUiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJpY2UiOiAzOTk5LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcGFyZV9hdF9wcmljZSI6IDQ5OTksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdmFpbGFibGUiOiB0cnVlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmVhdHVyZWRfaW1hZ2UiOiBudWxsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52ZW50b3J5X21hbmFnZW1lbnQiOiAic2hvcGlmeSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZlbnRvcnlfcG9saWN5IjogIkNPTlRJTlVFIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmVudG9yeV9xdWFudGl0eSI6IDgwNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgICAgICAgIm1hcmtldCI6IHsgICAgICAgImlkIjogIjk2MzcxMzc2NTA3IiwgICAgICAgImNvdW50cnlDb2RlIjogIkRFIiwgICAgICAgImxhbmd1YWdlQ29kZSI6ICJERSIgICAgICAgfSAgICAgICB9"></koala-gifts>           <!-- BEGIN app snippet: koala-ids -->      <!-- END app snippet -->           </div><div id="shopify-block-AYWlrTlpQRGRQaXlOZ__5280235153711299465" class="shopify-block shopify-app-block">
2810<script>
2811  window.__widerrufLocale = "de";
2812  
2813  
2814    window.__widerrufSettings = JSON.parse("{\"buttonMode\":\"menu_item\",\"menuItemNames\":[\"Vertrag widerrufen\"],\"euOnly\":false,\"backgroundColor\":\"#fed133\",\"textColor\":\"#000000\",\"borderRadius\":\"20px\",\"displayMode\":\"page\",\"panelPosition\":\"right\",\"floatingButtonText\":\"Vertrag widerrufen\",\"floatingButtonPosition\":\"bottom-right\",\"panelTitle\":\"Widerruf\",\"fontWeight\":\"400\",\"buttonSize\":\"small\",\"marginTop\":5,\"marginBottom\":5,\"i18n\":{\"en\":{\"floatingButtonText\":\"Withdraw contract\",\"panelTitle\":\"Withdrawal\"},\"fr\":{\"floatingButtonText\":\"Rétracter le contrat\",\"panelTitle\":\"Rétractation\"},\"it\":{\"floatingButtonText\":\"Recedere dal contratto\",\"panelTitle\":\"Recesso\"},\"es\":{\"floatingButtonText\":\"Desistir del contrato\",\"panelTitle\":\"Desistimiento\"},\"nl\":{\"floatingButtonText\":\"Overeenkomst herroepen\",\"panelTitle\":\"Herroeping\"},\"pl\":{\"floatingButtonText\":\"Odstąp od umowy\",\"panelTitle\":\"Odstąpienie od umowy\"}}}");
2815  
2816</script>
2816
2817
2818<script>
2819  (function () {
2820    var src = "https:\/\/cdn.shopify.com\/extensions\/01a0eecd-e3cf-72d9-81f3-f3f881b5b528\/checkout-regeln-grosse-warenkoerbe-2026-09-29\/assets\/widerruf-button.js";
2821    function ensure() {
2822      if (window.__widerrufButtonLoaded) return;
2823      var s = document.createElement("script");
2824      s.src = src;
2825      s.defer = true;
2826      document.head.appendChild(s);
2827    }
2828    if (document.readyState === "complete") {
2829      ensure();
2830    } else {
2831      window.addEventListener("load", ensure);
2832    }
2833  })();
2834</script>
2834
2835
2836
2837</div><div id="shopify-block-AV1c1MGppS3Bld2V0Z__1967102994182284862" class="shopify-block shopify-app-block"><!-- BEGIN app snippet: connected_sdk_script -->
2837<script src='https://www.paypalobjects.com/pa/js/min/pa.js'></script>
2837
2838
2839<script
2840  src='https://www.paypal.com/sdk/js?client-id=AbtXlp5R3xc83T9xW_ZXKTK8IVZ-14EMelDioU4VC285IqSuxUI4yotKxjV0sz_X6YsONYi10vSBPNKM&merchant-id=SK45JS2S8VVTS&components=messages'
2841  data-namespace='PayPalSDK'
2842  data-partner-attribution-id='JADEDPIXEL_SHOPPINGCART_EC_CA'
2843></script>
2843
2844<!-- END app snippet --><!-- BEGIN app snippet: utils -->
2844<script>
2845  // ============================================
2846  // Core Utilities
2847  // ============================================
2848
2849  // Setup FPTI Analytics
2850  if (PAYPAL && PAYPAL.analytics) {
2851    PAYPAL.analytics.setup({
2852      data: {
2853        pgrp: 'shopify:messaging:app-embed',
2854        comp: 'shopify-app-embed',
2855      },
2856    });
2857  }
2858
2859  const recordEvent = (event_name, additionalData) => {
2860    PAYPAL.analytics.instance.recordEvent(event_name, {
2861      theme: window?.Shopify?.theme?.name || 'unknown',
2862      shop: window?.Shopify?.shop || 'unknown',
2863      path: window.location.pathname,
2864      flow: 'Shopify - Pay Later',
2865      space_key: 'SKD8GM',
2866      ...additionalData,
2867    });
2868  };
2869
2870  // In Theme Editor when using Advanced Settings
2871  // User chooses copy as JS Path from their browser
2872  // The pasted value will be a string that contains "document.querySelector("...")
2873  // Remove document.querySelector(" and ")
2874  // Using JS Path we can ensure the path to the element is accurate
2875  const parseSelector = (selector) => {
2876    try {
2877      // Handle both single and double quotes
2878      return selector
2879        .replace(/document\.querySelector\(["']/g, '')
2880        .replace(/["']\)/g, '');
2881    } catch (e) {
2882      recordEvent('appEmbed:parseSelector:error', { error: e.message });
2883    }
2884  };
2885
2886  // Waits for Element to be rendered
2887  // Uses mutation observer to watch for changes in the DOM
2888  // https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver
2889  // On changes, check for the selector again
2890  const waitForElement = (selector) => {
2891    try {
2892      return new Promise((resolve) => {
2893        const existing = document.querySelector(selector);
2894        if (existing) return resolve(existing);
2895
2896        const observer = new MutationObserver(() => {
2897          const el = document.querySelector(selector);
2898          if (el) {
2899            observer.disconnect();
2900            resolve(el);
2901          }
2902        });
2903
2904        observer.observe(document.body, {
2905          childList: true,
2906          subtree: true,
2907        });
2908      });
2909    } catch (e) {
2910      recordEvent('appEmbed:waitForElement:error', { error: e.message });
2911    }
2912  };
2913
2914  // Formats correct cart/drawer subtotal and adds or updates messaging
2915  const addOrUpdateMessagingPriceAttribute = async (price, locator, messaging) => {
2916    try {
2917      // Format price to 2 decimal places ex: 150000 => 1500.00
2918      // Messaging requires price to be in string format
2919      const formattedPrice = Number((price / 100).toFixed(2)).toString();
2920
2921      const messagingId = messaging.id;
2922      const existingMessaging = document.getElementById(messagingId);
2923
2924      if (existingMessaging) {
2925        // Update the data-pp-amount attribute on the existing element
2926        existingMessaging.setAttribute('data-pp-amount', formattedPrice);
2927      } else {
2928        const element = await waitForElement(locator);
2929
2930        const updatedPriceMessaging = messaging.cloneNode();
2931        updatedPriceMessaging.setAttribute('data-pp-amount', formattedPrice);
2932
2933        element.after(updatedPriceMessaging);
2934      }
2935    } catch (e) {
2936      recordEvent('appEmbed:addOrUpdateMessagingPriceAttribute:error', { error: e.message });
2937    }
2938  };
2939
2940  // Fetches cart details from Shopify cart endpoint
2941  const fetchCartDetails = async () => {
2942    try {
2943      const response = await fetch('/cart.js');
2944      const cart = await response.json();
2945
2946      return cart.total_price;
2947    } catch (e) {
2948      recordEvent('appEmbed:fetchCartDetails:error', { error: e.message });
2949    }
2950  };
2951
2952  // Fetches variant details Shopify product endpoint
2953  // https://shopify.dev/docs/api/ajax/reference/product
2954  const fetchVariant = async () => {
2955    try {
2956      // Ex: https://test-store.myshopify.com/products/the-multi-location-snowboard?variant=45268551368883
2957      const urlParams = new URLSearchParams(window.location.search);
2958      const urlVariantId = parseInt(urlParams.get('variant'), 10);
2959      const productHandle = window.location.pathname.split('/products/')[1]?.split('?')[0];
2960
2961      const response = await fetch(`/products/${productHandle}.js`);
2962      const productData = await response.json();
2963      const variants = productData.variants;
2964      const selectedVariant = variants.find(v => v.id === urlVariantId);
2965
2966      if (selectedVariant) {
2967        return selectedVariant;
2968      }
2969
2970      return variants.find(v => v.available) || variants[0];
2971    } catch (e) {
2972      recordEvent('appEmbed:fetchVariant:error', { error: e.message });
2973    }
2974  };
2975
2976  // Get the selected variant ID from URL, form input, or select element
2977  const getSelectedVariantId = () => {
2978    try {
2979      const urlParams = new URLSearchParams(window.location.search);
2980      const urlVariant = urlParams.get('variant');
2981      if (urlVariant) return parseInt(urlVariant, 10);
2982
2983      const formInput = document.querySelector('form[action*="/cart/add"] input[name="id"]');
2984      if (formInput?.value) return parseInt(formInput.value, 10);
2985
2986      const selectInput = document.querySelector('form[action*="/cart/add"] select[name="id"]');
2987      if (selectInput?.value) return parseInt(selectInput.value, 10);
2988
2989      return null;
2990    } catch (e) {
2991      recordEvent('appEmbed:getSelectedVariantId:error', { error: e.message });
2992      return null;
2993    }
2994  };
2995
2996  const getShopifyData = () => {
2997    try {
2998      const selectedVariantId = getSelectedVariantId();
2999
3000      const findVariant = (variants) => {
3001        if (!variants?.length) return null;
3002        if (selectedVariantId) {
3003          const selected = variants.find(v => v.id === selectedVariantId);
3004          if (selected) return selected;
3005        }
3006        return variants.find(v => v.available) || variants[0];
3007      };
3008
3009      if (window.meta?.product) {
3010        const product = window.meta.product;
3011        const variant = findVariant(product.variants);
3012        return {
3013          product: { title: product.title, vendor: product.vendor, type: product.type, id: product.id },
3014          price: variant ? {
3015            priceInCents: variant.price,
3016            compareAtPrice: variant.compare_at_price,
3017            currency: window.Shopify?.currency?.active || 'USD',
3018            variantId: variant.id,
3019            variantTitle: variant.title
3020          } : null
3021        };
3022      }
3023
3024      if (window.ShopifyAnalytics?.meta?.product) {
3025        const product = window.ShopifyAnalytics.meta.product;
3026        const variant = findVariant(product.variants);
3027        return {
3028          product: { title: product.title, vendor: product.vendor, id: product.id },
3029          price: variant ? {
3030            priceInCents: variant.price,
3031            currency: window.Shopify?.currency?.active || 'USD',
3032            variantId: variant.id
3033          } : null
3034        };
3035      }
3036
3037      return null;
3038    } catch (e) {
3039      recordEvent('appEmbed:getShopifyData:error', { error: e.message });
3040      return null;
3041    }
3042  };
3043
3044  // Generic function to watch for changes in the DOM
3045  // and listen for specific API calls made by the Shopify store
3046  // Callback provides specific logic for handling the response
3047  const watchForChanges = (locator, messaging, callback) => {
3048    try {
3049      // Overrides the native `fetch` function to listen for specific API calls.
3050      // Wrapped in an Immediately Invoked Function Expression (IIFE)
3051      // To avoid polluting the global namespace.
3052      (function (window, windowFetch) {
3053        // Check if `fetch` is a function. If not, exit early.
3054        if (typeof fetch !== 'function') return;
3055
3056        window.fetch = function () {
3057          // Call the original `fetch` function with the provided arguments.
3058          const response = windowFetch.apply(this, arguments);
3059
3060          response.then(async (res) => {
3061            if (typeof callback === 'function') {
3062              callback(res, locator, messaging);
3063            }
3064          });
3065
3066          // Return the original `fetch` response.
3067          return response;
3068        };
3069      })(window, window.fetch);
3070    } catch (e) {
3071      recordEvent('appEmbed:watchForChanges:error', { error: e.message });
3072    }
3073  };
3074
3075  // Provides ability to watch for cart changes
3076  // such as increment, decrement, or remove items
3077  // Also handles adding new items which opens Cart Drawer
3078  // and updates the messaging with the new cart total
3079  // This function is used for both Cart Drawer and Cart Page
3080  const watchForCartChanges = (locator, messaging) => {
3081    const cartChangeCallback = async (res, locator, messaging) => {
3082      // Determine the id of messaging div either #paypal-upstream-messaging-cart-{page | drawer}
3083      const messagingId = messaging.id;
3084
3085      // Changes (e.g., increment, decrement, or remove items).
3086      if (res.url.includes('/cart/change')) {
3087        // Clone the response to read its JSON data without consuming the original response.
3088        res
3089          .clone()
3090          .json()
3091          .then((data) => {
3092            addOrUpdateMessagingPriceAttribute(data.total_price, locator, messaging);
3093          });
3094
3095        // Called when adding a new item which opens Cart Drawer
3096      } else if (res.url.includes('/cart/add')) {
3097        // Adding items does not return the updated cart details,
3098        // Fetch the updated cart details (e.g., total_price).
3099        const updatedPrice = await fetchCartDetails();
3100
3101        // Introduce a delay to handle potential race conditions where the cart drawer has not rendered yet.
3102        setTimeout(async () => {
3103          await addOrUpdateMessagingPriceAttribute(updatedPrice, locator, messaging);
3104        }, 500);
3105      }
3106    };
3107
3108    watchForChanges(locator, messaging, cartChangeCallback);
3109  };
3110
3111  // Provides ability to watch for product specific changes
3112  // such as variant selection on product pages
3113  const watchForProductChanges = (locator, messaging) => {
3114    let lastVariantId = new URLSearchParams(window.location.search).get('variant');
3115
3116    const handleVariantChange = async () => {
3117      const currentVariantId = new URLSearchParams(window.location.search).get('variant');
3118      if (currentVariantId && currentVariantId !== lastVariantId) {
3119        lastVariantId = currentVariantId;
3120
3121        const newVariantData = await fetchVariant();
3122        const newPriceInCents = newVariantData?.price;
3123
3124        if (newPriceInCents) {
3125          await addOrUpdateMessagingPriceAttribute(newPriceInCents, locator, messaging);
3126        } else {
3127          recordEvent('appEmbed:watchForProductChanges:error:noNewVariantPrice');
3128        }
3129      }
3130    };
3131
3132    // Shopify themes can either handle variant changes on the client-side or server-side (via variant API calls)
3133    // We will "intercept" and handle variant changes by:
3134    // 1. Watching for URL changes
3135    const _pushState = history.pushState.bind(history);
3136    const _replaceState = history.replaceState.bind(history);
3137
3138    history.pushState = function (...args) {
3139      _pushState(...args);
3140      handleVariantChange();
3141    };
3142
3143    history.replaceState = function (...args) {
3144      _replaceState(...args);
3145      handleVariantChange();
3146    };
3147
3148    // 2. Watching for back/forward browser clicks
3149    window.addEventListener('popstate', handleVariantChange);
3150
3151    // 3. Fallback: Watching for variant API calls
3152    // Future optimization: This fallback could be removed if all Shopify themes can be handled with 1. and 2.
3153    const productChangeCallback = async (res, locator, messaging) => {
3154      if (res.url.includes('/variants')) {
3155        await handleVariantChange();
3156        return;
3157      }
3158    };
3159
3160    watchForChanges(locator, messaging, productChangeCallback);
3161  };  
3162</script>
3162
3163<!-- END app snippet --><!-- BEGIN app snippet: price-detection -->
3163<script>
3164  // ============================================
3165  // Price Detection & Element Scoring
3166  // Depends on: utils.liquid (recordEvent, getShopifyData)
3167  // ============================================
3168
3169  const extractPriceFromText = (text) => {
3170    const match = text.match(/[\d,]+\.?\d*/);
3171    if (!match) return null;
3172    return parseFloat(match[0].replace(/,/g, ''));
3173  };
3174
3175  const textMatchesPrice = (text, knownPriceInCents) => {
3176    const extracted = extractPriceFromText(text);
3177    if (extracted === null) return false;
3178    const knownPrice = knownPriceInCents / 100;
3179    return Math.abs(extracted - knownPrice) < 0.01;
3180  };
3181
3182  const hasStrikethrough = (element) => {
3183    let el = element;
3184    while (el && el !== document.body) {
3185      const style = getComputedStyle(el);
3186      if (style.textDecoration.includes('line-through') ||
3187          style.textDecorationLine?.includes('line-through')) {
3188        return true;
3189      }
3190      if (['S', 'DEL', 'STRIKE'].includes(el.tagName)) {
3191        return true;
3192      }
3193      el = el.parentElement;
3194    }
3195    return false;
3196  };
3197
3198  // Find the add-to-cart button. Result is cached since the button doesn't change per page load.
3199  let _cachedAddToCartButton;
3200  const findAddToCartButton = () => {
3201    if (_cachedAddToCartButton !== undefined) return _cachedAddToCartButton;
3202    try {
3203      const formButton = document.querySelector('form[action*="/cart/add"] button[type="submit"]');
3204      if (formButton) return (_cachedAddToCartButton = formButton);
3205
3206      const buttons = document.querySelectorAll('button');
3207      for (const btn of buttons) {
3208        const text = btn.textContent.toLowerCase();
3209        if (text.includes('add to cart') || text.includes('add to bag') ||
3210            text.includes('buy now') || text.includes('add to basket')) {
3211          return (_cachedAddToCartButton = btn);
3212        }
3213      }
3214
3215      return (_cachedAddToCartButton = null);
3216    } catch (e) {
3217      recordEvent('appEmbed:findAddToCartButton:error', { error: e.message });
3218      return (_cachedAddToCartButton = null);
3219    }
3220  };
3221
3222  // Find element containing specific text (used for product title proximity).
3223  // Result is cached per text string — title is static per page load and scoreElement
3224  // calls this once per candidate, so without caching it's O(candidates) full DOM walks.
3225  let _titleElementCache = {};
3226  const findElementContainingText = (text) => {
3227    if (text in _titleElementCache) return _titleElementCache[text];
3228    try {
3229      const normalizedText = text.toLowerCase().trim();
3230      const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT);
3231
3232      let node;
3233      while (node = walker.nextNode()) {
3234        const nodeText = node.textContent.trim().toLowerCase();
3235        if (nodeText.length > 5 && normalizedText.includes(nodeText.substring(0, 20))) {
3236          const el = node.parentElement;
3237          const rect = el.getBoundingClientRect();
3238          if (rect.width > 0 && rect.height > 0) {
3239            const fontSize = parseFloat(getComputedStyle(el).fontSize);
3240            if (fontSize >= 16) return (_titleElementCache[text] = el);
3241          }
3242        }
3243      }
3244      return (_titleElementCache[text] = null);
3245    } catch (e) {
3246      return null;
3247    }
3248  };
3249
3250  const getViewportThresholds = () => {
3251    const vh = window.innerHeight;
3252    const isMobile = window.innerWidth < 768;
3253
3254    return {
3255      position: [[vh * 0.6, 50], [vh * 1.2, 30], [vh * 2.0, 10]],
3256      fontSize: [
3257        [isMobile ? 18 : 24, 40],
3258        [isMobile ? 14 : 18, 25],
3259        [isMobile ? 12 : 14, 10],
3260      ],
3261      proximity: {
3262        close:  isMobile ? 60  : 100,
3263        medium: isMobile ? 120 : 200,
3264        far:    isMobile ? 240 : 400,
3265      },
3266    };
3267  };
3268
3269  const getTieredScore = (value, tiers, defaultScore = 0) => {
3270    for (const [threshold, points] of tiers) {
3271      if (value < threshold) return points;
3272    }
3273    return defaultScore;
3274  };
3275
3276  // Scores a DOM element on how likely it is to be the product's main price.
3277  // Higher score = better candidate. Factors:
3278  //   - Position on page (elements higher up score better)
3279  //   - Font size (larger text = more likely a displayed price)
3280  //   - Proximity to product title and add-to-cart button
3281  //   - Structural exclusions (footer/header/nav/hidden = heavy penalty)
3282  //   - Strikethrough detection (compare-at prices = heavy penalty)
3283  const scoreElement = (element, productMeta = null, debug = false) => {
3284    let score = 0;
3285    const breakdown = debug ? {} : null;
3286    const { position, fontSize, proximity } = getViewportThresholds();
3287    const { close, medium, far } = proximity;
3288    const rect = element.getBoundingClientRect();
3289
3290    // POSITION ON PAGE
3291    const absoluteTop = rect.top + window.scrollY;
3292    const posScore = getTieredScore(absoluteTop, position, -30);
3293    score += posScore;
3294    if (debug) breakdown.position = `${posScore >= 0 ? '+' : ''}${posScore} (top ${Math.round(absoluteTop)}px)`;
3295
3296    // FONT SIZE
3297    const fontPx = parseFloat(getComputedStyle(element).fontSize);
3298    const fontScore = fontSize.find(([t]) => fontPx >= t)?.[1] ?? -10;
3299    score += fontScore;
3300    if (debug) breakdown.fontSize = `${fontScore >= 0 ? '+' : ''}${fontScore} (${fontPx}px)`;
3301
3302    // PROXIMITY TO PRODUCT TITLE
3303    if (productMeta?.title) {
3304      const titleElement = findElementContainingText(productMeta.title);
3305      if (titleElement) {
3306        const distance = Math.abs(titleElement.getBoundingClientRect().bottom - rect.top);
3307        const titleScore = getTieredScore(distance, [[close, 40], [medium, 25], [far, 10]], 0);
3308        score += titleScore;
3309        if (debug) breakdown.titleProximity = `+${titleScore} (${Math.round(distance)}px)`;
3310      } else if (debug) {
3311        breakdown.titleProximity = 'title element not found';
3312      }
3313    } else if (debug) {
3314      breakdown.titleProximity = 'no product title';
3315    }
3316
3317    // PROXIMITY TO ADD-TO-CART BUTTON
3318    const addButton = findAddToCartButton();
3319    if (addButton) {
3320      const distance = Math.abs(addButton.getBoundingClientRect().top - rect.top);
3321      const cartScore = getTieredScore(distance, [[close, 30], [medium, 20], [far, 10]], 0);
3322      score += cartScore;
3323      if (debug) breakdown.cartProximity = `+${cartScore} (${Math.round(distance)}px)`;
3324    } else if (debug) {
3325      breakdown.cartProximity = 'add-to-cart not found';
3326    }
3327
3328    // STRUCTURAL EXCLUSIONS
3329    const exclusions = [
3330      ['footer, header, nav', 'in footer/header/nav'],
3331      ['button, a[href*="/cart"], [type="submit"]', 'in button/link'],
3332      ['[aria-hidden="true"], [hidden], .hidden, .visually-hidden', 'hidden'],
3333    ];
3334    for (const [selector, reason] of exclusions) {
3335      if (element.closest(selector)) {
3336        score -= 100;
3337        if (debug) breakdown.structural = `-100 (${reason})`;
3338        break;
3339      }
3340    }
3341    if (debug && !breakdown.structural) breakdown.structural = '+0';
3342
3343    // STRIKETHROUGH
3344    if (hasStrikethrough(element)) {
3345      score -= 100;
3346      if (debug) breakdown.strikethrough = '-100 (compare-at price)';
3347    } else if (debug) {
3348      breakdown.strikethrough = '+0';
3349    }
3350
3351    if (debug) {
3352      breakdown.totalScore = score;
3353      breakdown.elementText = element.textContent.trim().substring(0, 30);
3354      breakdown.elementTag = element.tagName;
3355    }
3356
3357    return debug ? { score, breakdown } : score;
3358  };
3359
3360  // Find all elements containing a specific price value
3361  const findElementsWithPrice = (knownPriceInCents, productMeta = null, debug = false, log = () => {}) => {
3362    const candidates = [];
3363    const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT);
3364
3365    let node;
3366    while (node = walker.nextNode()) {
3367      const text = node.textContent.trim();
3368      if (text.length > 30 || !textMatchesPrice(text, knownPriceInCents)) continue;
3369
3370      const element = node.parentElement;
3371      const rect = element.getBoundingClientRect();
3372
3373      if (rect.width === 0 || rect.height === 0 || hasStrikethrough(element)) continue;
3374
3375      const score = scoreElement(element, productMeta, false);
3376      candidates.push({ element, text, score });
3377    }
3378
3379    if (debug && candidates.length > 0) {
3380      candidates.sort((a, b) => b.score - a.score);
3381      log(`  Candidates: ${candidates.length}, top: score=${candidates[0].score}, text="${candidates[0].text}"`);
3382    }
3383
3384    return candidates;
3385  };
3386
3387  // Find the /cart/add form by traversing from the price element
3388  // This is more reliable than name-based container detection since all Shopify themes have this form
3389  const findCartFormFromPrice = (priceElement, debug = false, log = () => {}) => {
3390    let el = priceElement;
3391
3392    while (el && el !== document.body) {
3393      if (el.tagName === 'FORM' && el.action?.includes('/cart/add')) {
3394        if (debug) log(`  Found /cart/add form (element itself)`);
3395        return el;
3396      }
3397
3398      let sibling = el.nextElementSibling;
3399      while (sibling) {
3400        if (sibling.tagName === 'FORM' && sibling.action?.includes('/cart/add')) {
3401          if (debug) log(`  Found /cart/add form as sibling`);
3402          return sibling;
3403        }
3404        // Check if sibling contains the form
3405        const formInSibling = sibling.querySelector('form[action*="/cart/add"]');
3406        if (formInSibling) {
3407          if (debug) log(`  Found /cart/add form inside sibling`);
3408          return formInSibling;
3409        }
3410        sibling = sibling.nextElementSibling;
3411      }
3412
3413      el = el.parentElement;
3414    }
3415
3416    if (debug) log(`  No /cart/add form found`);
3417    return null;
3418  };
3419
3420  // Fallback: walk up from the price text element to find a suitable wrapper.
3421  // Used when no /cart/add form exists near the price element.
3422  const findPriceContainer = (priceElement) => {
3423    let el = priceElement;
3424    let bestContainer = priceElement;
3425
3426    while (el && el !== document.body) {
3427      // Look for elements with price-related IDs (common Shopify pattern)
3428      if (el.id && /price/i.test(el.id)) {
3429        bestContainer = el;
3430      }
3431      // Look for elements with price-related classes that seem like containers
3432      if (el.className && typeof el.className === 'string') {
3433        const classes = el.className.toLowerCase();
3434        if (/\bprice\b/.test(classes) && !/price-item|price__regular|price__sale/.test(classes)) {
3435          bestContainer = el;
3436        }
3437      }
3438      // Stop at major structural elements
3439      if (el.tagName === 'SECTION' || el.tagName === 'ARTICLE' || el.tagName === 'MAIN') {
3440        break;
3441      }
3442      el = el.parentElement;
3443    }
3444
3445    return bestContainer;
3446  };
3447
3448  // Try common Shopify theme price selectors (Dawn and derivatives)
3449  const findPriceByTemplateSelector = (debug = false, log = () => {}) => {
3450    const selectors = [
3451      '[id*="price-template"]',  // Dawn theme pattern
3452      '.price-item--regular:not(s):not(del)',
3453      '[data-product-price]',
3454    ];
3455
3456    for (const selector of selectors) {
3457      const el = document.querySelector(selector);
3458      if (el && !hasStrikethrough(el)) {
3459        if (debug) log(`Template selector found: ${selector}`);
3460        return el;
3461      }
3462    }
3463    return null;
3464  };
3465
3466  // Check if we're in an isolated/sandboxed iframe (theme editor)
3467  const isIsolatedContext = () => {
3468    if (window === window.top) return false; // Not in iframe
3469    try {
3470      // Try to access parent - if cross-origin, we're isolated
3471      const test = window.parent.document;
3472      return false; // Can access parent, not isolated
3473    } catch (e) {
3474      return true; // Cross-origin, we're isolated
3475    }
3476  };
3477
3478  // Try to find price element in sibling iframes (theme editor workaround)
3479  const findPriceInSiblingIframes = (knownPriceInCents) => {
3480    const iframes = document.querySelectorAll('iframe');
3481
3482    for (const iframe of iframes) {
3483      try {
3484        const iframeDoc = iframe.contentDocument || iframe.contentWindow?.document;
3485        if (!iframeDoc) continue;
3486
3487        const priceElement = iframeDoc.querySelector('.price-item, .price, [data-product-price]');
3488        if (priceElement) {
3489          return { element: priceElement, document: iframeDoc };
3490        }
3491      } catch (e) {
3492        // Cross-origin iframe, skip
3493      }
3494    }
3495
3496    return null;
3497  };
3498
3499  // Helper: Insert messaging near a price element (before cart form or after price container).
3500  // Returns the price container element used as the logical anchor.
3501  const insertMessagingNearPrice = (priceElement, messaging, debug = false, log = () => {}) => {
3502    const cartForm = findCartFormFromPrice(priceElement, debug, log);
3503    const container = findPriceContainer(priceElement);
3504    if (cartForm) {
3505      cartForm.before(messaging.cloneNode());
3506      if (debug) log('Inserted messaging before /cart/add form');
3507    } else {
3508      container.after(messaging.cloneNode());
3509      if (debug) log('Inserted after price container (no form found)');
3510    }
3511    return container;
3512  };
3513
3514  // Insert messaging after price element
3515  const insertMessagingWithRetry = (shopifyData, messaging, debug = false, log = () => {}) => {
3516    // Skip visual preview iframe
3517    if (window.location.search.includes('source=visualPreviewInitialLoad')) return;
3518    if (document.querySelector('#paypal-upstream-messaging-product')) return;
3519
3520    const liquidPriceInCents = shopifyData?.price?.priceInCents;
3521    const isIsolated = isIsolatedContext();
3522
3523    if (debug) {
3524      log('=== Price Detection ===');
3525      log(`Context: ${isIsolated ? 'Theme Editor' : 'Live Storefront'}`);
3526      log(`Price: ${liquidPriceInCents} cents ($${(liquidPriceInCents / 100).toFixed(2)})`);
3527    }
3528
3529    // Priority 1: Template selectors (common theme patterns like Dawn)
3530    const templateElement = findPriceByTemplateSelector(debug, log);
3531    if (templateElement) {
3532      return insertMessagingNearPrice(templateElement, messaging, debug, log);
3533    }
3534
3535    // Priority 2: Scoring-based price detection
3536    const priceElement = findPriceElement(shopifyData, debug, log);
3537    if (priceElement) {
3538      return insertMessagingNearPrice(priceElement, messaging, debug, log);
3539    }
3540
3541    // Priority 3: Sibling iframes (theme editor only)
3542    if (isIsolated) {
3543      const siblingResult = findPriceInSiblingIframes(liquidPriceInCents);
3544      if (siblingResult) {
3545        return insertMessagingNearPrice(siblingResult.element, messaging, debug, log);
3546      }
3547    }
3548
3549    if (!isIsolated) {
3550      log('Could not find price element. Consider using Advanced Settings with a custom selector.');
3551    }
3552    return null;
3553  };
3554
3555  const findPriceElement = (shopifyData = null, debug = false, log = () => {}) => {
3556    try {
3557      const knownPriceInCents = shopifyData?.price?.priceInCents;
3558      const productMeta = shopifyData?.product;
3559
3560      if (debug) log(`findPriceElement: ${knownPriceInCents} cents`);
3561
3562      if (knownPriceInCents) {
3563        const candidates = findElementsWithPrice(knownPriceInCents, productMeta, debug, log);
3564        if (candidates.length > 0) {
3565          candidates.sort((a, b) => b.score - a.score);
3566          if (debug) log(`  → FOUND (score=${candidates[0].score})`);
3567          return candidates[0].element;
3568        }
3569      }
3570
3571      if (debug) log('  → null (no candidates)');
3572      return null;
3573    } catch (e) {
3574      if (debug) log(`  → Error: ${e.message}`);
3575      recordEvent('appEmbed:findPriceElement:error', { error: e.message });
3576      return null;
3577    }
3578  };
3579</script>
3579
3580<!-- END app snippet --><!-- BEGIN app snippet: navigator-panel --><template id="pp-nav-template">
3581  <style>
3582    /* --- Floating placement panel shell --- */
3583    #pp-nav-panel {
3584      position: fixed;
3585      top: 50%;
3586      left: 20px;
3587      transform: translateY(-50%);
3588      background: #fff;
3589      border-radius: 12px;
3590      font-family: system-ui, -apple-system, sans-serif;
3591      font-size: 13px;
3592      z-index: 999999;
3593      width: 340px;
3594      box-shadow: 0 8px 32px rgba(0,0,0,0.18);
3595      overflow: hidden;
3596      transition: transform 0.3s ease, height 0.3s ease;
3597    }
3598    #pp-nav-panel.minimized {
3599      display: none;
3600    }
3601
3602    /* --- Minimized pill button --- */
3603    #pp-nav-pill {
3604      position: fixed;
3605      bottom: 20px;
3606      left: 20px;
3607      background: #003087;
3608      color: #fff;
3609      border: none;
3610      border-radius: 24px;
3611      padding: 10px 18px;
3612      font-family: system-ui, -apple-system, sans-serif;
3613      font-size: 13px;
3614      font-weight: 600;
3615      cursor: pointer;
3616      z-index: 999999;
3617      box-shadow: 0 4px 16px rgba(0,48,135,0.3);
3618      display: none;
3619      align-items: center;
3620      gap: 8px;
3621      transition: box-shadow 0.2s;
3622    }
3623    #pp-nav-pill:hover {
3624      box-shadow: 0 6px 20px rgba(0,48,135,0.45);
3625    }
3626
3627    /* --- Header --- */
3628    .pp-panel-header {
3629      background: #003087;
3630      color: #fff;
3631      padding: 14px 16px;
3632      display: flex;
3633      align-items: center;
3634      justify-content: space-between;
3635    }
3636    .pp-panel-title {
3637      font-size: 14px;
3638      font-weight: 700;
3639      margin: 0;
3640      letter-spacing: 0.01em;
3641    }
3642    .pp-minimize-btn {
3643      background: none;
3644      border: none;
3645      color: rgba(255,255,255,0.8);
3646      cursor: pointer;
3647      font-size: 18px;
3648      line-height: 1;
3649      padding: 2px;
3650      border-radius: 4px;
3651      transition: color 0.15s;
3652    }
3653    .pp-minimize-btn:hover {
3654      color: #fff;
3655    }
3656
3657    /* --- Panel body --- */
3658    .pp-panel-content {
3659      padding: 16px;
3660    }
3661
3662    /* --- Step info boxes --- */
3663    .pp-step-box {
3664      border-radius: 8px;
3665      padding: 10px 12px;
3666      font-size: 12px;
3667      line-height: 1.5;
3668      margin-bottom: 12px;
3669      display: flex;
3670      align-items: flex-start;
3671      gap: 8px;
3672    }
3673    .pp-step-box.blue {
3674      background: #e8f4fd;
3675      border: 1px solid #b8dff5;
3676      color: #0a5a96;
3677    }
3678    .pp-step-box.green {
3679      background: #e6f9ee;
3680      border: 1px solid #a3e4b8;
3681      color: #1a7a3a;
3682    }
3683    .pp-step-text {
3684      flex: 1;
3685    }
3686    .pp-step-text p {
3687      margin: 0 0 8px 0;
3688    }
3689    .pp-step-text p:last-child {
3690      margin-bottom: 0;
3691    }
3692    .pp-step-text strong {
3693      display: block;
3694      font-size: 12px;
3695      margin-bottom: 2px;
3696    }
3697    .pp-step-dismiss {
3698      background: none;
3699      border: none;
3700      color: inherit;
3701      opacity: 0.5;
3702      cursor: pointer;
3703      font-size: 16px;
3704      line-height: 1;
3705      padding: 0;
3706      flex-shrink: 0;
3707    }
3708    .pp-step-dismiss:hover {
3709      opacity: 1;
3710    }
3711
3712    /* --- Warning banners --- */
3713    .pp-warning {
3714      background: #fff3cd;
3715      border: 1px solid #ffc107;
3716      border-radius: 8px;
3717      padding: 10px 12px;
3718      margin-bottom: 12px;
3719      font-size: 12px;
3720      color: #856404;
3721      line-height: 1.4;
3722    }
3723    .pp-warning-icon {
3724      margin-right: 4px;
3725    }
3726
3727    /* --- Pick placement + copy actions --- */
3728    .pp-pick-btn {
3729      width: 100%;
3730      padding: 12px;
3731      border: 2px solid #0070ba;
3732      border-radius: 8px;
3733      background: #0070ba;
3734      color: #fff;
3735      cursor: pointer;
3736      font-size: 13px;
3737      font-weight: 600;
3738      transition: all 0.15s;
3739      display: flex;
3740      align-items: center;
3741      justify-content: center;
3742      gap: 8px;
3743    }
3744    .pp-pick-btn:hover {
3745      opacity: 0.9;
3746    }
3747    .pp-pick-btn.active {
3748      background: #f0f7ff;
3749      color: #0070ba;
3750      border-color: #b8dff5;
3751    }
3752    .pp-pick-btn.active:hover {
3753      background: #e0efff;
3754    }
3755
3756    /* --- Copy button --- */
3757    #pp-apply-btn {
3758      width: 100%;
3759      background: #28a745;
3760      color: #fff;
3761      border: none;
3762      padding: 12px;
3763      border-radius: 8px;
3764      font-weight: 600;
3765      cursor: pointer;
3766      font-size: 13px;
3767      transition: all 0.2s;
3768      display: none;
3769      align-items: center;
3770      justify-content: center;
3771      gap: 8px;
3772      margin-top: 12px;
3773    }
3774    #pp-apply-btn:hover {
3775      opacity: 0.9;
3776    }
3777    #pp-apply-btn.applied {
3778      background: #28a745;
3779    }
3780
3781    /* --- Step 2 confirmation --- */
3782    #pp-step2 {
3783      display: none;
3784      margin-top: 18px;
3785    }
3786  </style>
3787  <div class='pp-panel-header'>
3788    <div class='pp-panel-title'>PayPal Pay Later Messaging</div>
3789    <button class='pp-minimize-btn' id='pp-collapse-btn' title='Minimize panel'>&#x25BE;</button>
3790  </div>
3791  <div class='pp-panel-content'>
3792    <div id='pp-warning' class='pp-warning' style='display: none;'></div>
3793    <div id='pp-inspector-warning' class='pp-warning' style='display: none;'></div>
3794    <div class='pp-step-box blue' id='pp-step1'>
3795      <span class='pp-step-text'
3796        ><strong>Step 1: Choose message placement</strong>
3797        Click the button below and then hover over your page to select a placement.
3798      </span>
3799    </div>
3800    <button id='pp-pick-btn' class='pp-pick-btn'>&#x25CE; Start Picking Placement</button
3801    ><button id='pp-apply-btn'>Copy Current Placement</button>
3802    <div id='pp-step2' style='display:none;'>
3803      <div class='pp-step-box green'>
3804        <span class='pp-step-text'
3805          ><strong>Step 2: Paste and save</strong>
3806          <p style='margin: 0 0 8px 0;'>
3807            You have copied the placement for the <b id='pp-context-name'>Product Page</b>.
3808          </p>
3809          <p style='margin: 0;'>
3810            Go back to the App Embeds section, and in the Paypal Advanced Settings, paste the copied value into the
3811            <b id='pp-selector-name'>Product Page</b> field and click the 'Save' button in the top right corner.
3812          </p></span
3813        ><button class='pp-step-dismiss' id='pp-step2-dismiss' title='Dismiss'>&times;</button>
3814      </div>
3815    </div>
3816  </div>
3817</template>
3818<!-- END app snippet --><!-- BEGIN app snippet: navigator -->
3818<script>
3819  // ============================================
3820  // DOM Traversal Controls for Theme Editor
3821  // Depends on: price-detection.liquid (isIsolatedContext)
3822  // ============================================
3823
3824  const OVERLAY_STYLE =
3825    'position:fixed;pointer-events:none;background:rgba(255,152,0,0.12);border:2px solid rgba(255,152,0,0.6);z-index:999998;display:none;';
3826  const OVERLAY_LABEL_STYLE =
3827    'position:absolute;bottom:100%;left:-2px;background:#f57c00;color:#fff;font:10px system-ui;padding:2px 6px;border-radius:3px 3px 0 0;white-space:nowrap;';
3828  const COPY_BUTTON_LABEL = 'Copy Current Placement';
3829  const COPIED_BUTTON_LABEL = 'Placement Copied!';
3830
3831  const isInOverlay = (el) => {
3832    while (el && el !== document.body) {
3833      if (getComputedStyle(el).position === 'fixed') return true;
3834      el = el.parentElement;
3835    }
3836    return false;
3837  };
3838
3839  // Position a fixed overlay to cover a target element
3840  const positionOverlayOnElement = (overlay, el) => {
3841    const rect = el.getBoundingClientRect();
3842    Object.assign(overlay.style, {
3843      top: rect.top + 'px',
3844      left: rect.left + 'px',
3845      width: rect.width + 'px',
3846      height: rect.height + 'px',
3847      display: 'block',
3848    });
3849  };
3850
3851  // Module-level refs for global listeners added by createNavigationPanel.
3852  // Stored here so they can be removed if the panel is re-initialized.
3853  let _panelInspectorActivate = null;
3854  let _panelInspectorDeactivate = null;
3855  let _highlightedElement = null;
3856  let _panelPickModeCleanup = null;
3857
3858  // Detect UID pattern in ID (Shopify's --suffix or long numeric/hex suffixes)
3859  const hasUid = (id) => {
3860    if (!id) return false;
3861    if (/--/.test(id)) return true;
3862    return /[-_](\d{5,}|[a-f0-9]{8,})$/i.test(id);
3863  };
3864  const getIdPrefix = (id) => {
3865    if (id.includes('--')) return id.split('--')[0];
3866    const match = id.match(/^(.+?)[-_](\d{5,}|[a-f0-9]{8,})$/i);
3867    return match ? match[1] : null;
3868  };
3869  const getMeaningfulClasses = (el) => {
3870    if (!el.className || typeof el.className !== 'string') return [];
3871    return el.className.trim().split(/\s+/).filter(c =>
3872      c && !c.startsWith('_') && !c.startsWith('js-') &&
3873      c.length < 30 && !/^[a-f0-9]{6,}$/i.test(c) && !/^[A-Z]/.test(c)
3874    );
3875  };
3876  const isUnique = (selector) => document.querySelectorAll(selector).length === 1;
3877
3878  // Returns null if no unique selector can be generated
3879  const generateSelector = (element) => {
3880    if (!element || element === document.body || element === document.documentElement) {
3881      return null;
3882    }
3883    const classes = getMeaningfulClasses(element);
3884
3885    // Priority 1: Clean ID
3886    if (element.id && !hasUid(element.id)) return `#${element.id}`;
3887
3888    // Priority 2: ID with UID → attribute wildcard selector
3889    if (element.id && hasUid(element.id)) {
3890      const prefix = getIdPrefix(element.id);
3891      if (prefix) {
3892        const selector = `[id^="${prefix}-"]`;
3893        if (isUnique(selector)) return selector;
3894      }
3895    }
3896
3897    // Priority 3: Unique class
3898    for (const cls of classes) {
3899      if (isUnique('.' + cls)) return '.' + cls;
3900    }
3901
3902    // Priority 4: Ancestor + target class combinations (walk up to 5 levels)
3903    if (classes.length > 0) {
3904      let ancestor = element.parentElement;
3905      let depth = 0;
3906      while (ancestor && ancestor !== document.body && ancestor !== document.documentElement && depth < 5) {
3907        const ancClasses = getMeaningfulClasses(ancestor);
3908        if (ancClasses.length > 0) {
3909          const s1 = `.${ancClasses[0]} .${classes[0]}`;
3910          if (isUnique(s1)) return s1;
3911          const s2 = `.${ancClasses[0]} > .${classes[0]}`;
3912          if (isUnique(s2)) return s2;
3913        }
3914        if (ancestor.id && !hasUid(ancestor.id)) {
3915          const s3 = `#${ancestor.id} .${classes[0]}`;
3916          if (isUnique(s3)) return s3;
3917        }
3918        ancestor = ancestor.parentElement;
3919        depth++;
3920      }
3921    }
3922
3923    // NO FALLBACK - return null if no unique selector exists
3924    return null;
3925  };
3926  const hasSpecificSelector = (el) => generateSelector(el) !== null;
3927  const shouldSkipElement = (el) => {
3928    if (!el || el.hidden) return true;
3929    if (['SCRIPT', 'STYLE', 'TEMPLATE'].includes(el.tagName)) return true;
3930    if (
3931      el.closest('#pp-nav-panel') ||
3932      el.closest('#pp-nav-pill') ||
3933      el.closest('#pp-pick-overlay')
3934    )
3935      return true;
3936    if (el.hasAttribute('data-pp-message')) return true;
3937    if (!hasSpecificSelector(el)) return true;
3938    return false;
3939  };
3940  const resolveContextName = (providedContextName, messagingTemplate) => {
3941    if (providedContextName && providedContextName !== 'this area') return providedContextName;
3942    const id = messagingTemplate?.id || '';
3943    if (id.includes('cart-drawer')) return 'Cart Drawer';
3944    if (id.includes('cart')) return 'Cart Page';
3945    if (id.includes('product')) return 'Product Page';
3946    return 'this area';
3947  };
3948
3949  // Called when the cart drawer closes (via IntersectionObserver in cartDrawer.liquid)
3950  // and at the start of createNavigationPanel to tear down any existing instance.
3951  // Cleans up pick mode listeners, DOM elements, highlights, and preview clones.
3952  const destroyNavigationPanel = () => {
3953    if (_panelPickModeCleanup) {
3954      _panelPickModeCleanup();
3955      _panelPickModeCleanup = null;
3956    }
3957    document.getElementById('pp-nav-panel')?.remove();
3958    document.getElementById('pp-nav-pill')?.remove();
3959    const preview = document.querySelector('[id$="-preview"][data-pp-message]');
3960    if (preview) preview.remove();
3961    if (_highlightedElement) {
3962      _highlightedElement.style.outline = '';
3963      _highlightedElement.style.outlineOffset = '';
3964      _highlightedElement = null;
3965    }
3966    if (_panelInspectorActivate) {
3967      document.removeEventListener('shopify:inspector:activate', _panelInspectorActivate);
3968      document.removeEventListener('shopify:inspector:deactivate', _panelInspectorDeactivate);
3969      _panelInspectorActivate = _panelInspectorDeactivate = null;
3970    }
3971    document.documentElement.style.cursor = '';
3972  };
3973
3974  const createNavigationPanel = (
3975    initialElement,
3976    messagingTemplate,
3977    warningMessage = null,
3978    contextName = 'this area',
3979  ) => {
3980    let currentTarget = initialElement;
3981    let resolvedContextName = resolveContextName(contextName, messagingTemplate);
3982    destroyNavigationPanel();
3983
3984    const panel = document.createElement('div');
3985    panel.id = 'pp-nav-panel';
3986    const tmpl = document.getElementById('pp-nav-template');
3987    panel.appendChild(tmpl.content.cloneNode(true));
3988
3989    // Create minimized pill button (separate from panel)
3990    const pill = document.createElement('button');
3991    pill.id = 'pp-nav-pill';
3992    pill.innerHTML = 'PayPal Pay Later Messaging';
3993    const applyBtn = panel.querySelector('#pp-apply-btn');
3994    const warningEl = panel.querySelector('#pp-warning');
3995    const step2 = panel.querySelector('#pp-step2');
3996    const step2Dismiss = panel.querySelector('#pp-step2-dismiss');
3997    const contextEl = panel.querySelector('#pp-context-name');
3998    const selectorEl = panel.querySelector('#pp-selector-name');
3999    const updateContextUI = (newContext) => {
4000      resolvedContextName = newContext;
4001      if (contextEl) contextEl.textContent = resolvedContextName;
4002      if (selectorEl) {
4003        selectorEl.textContent = resolvedContextName;
4004      }
4005    };
4006    updateContextUI(resolvedContextName);
4007    const detectContextFromElement = (el) => {
4008      if (el.closest('#CartDrawer, .drawer, .cart-drawer, [id*="cart-drawer"], [class*="cart-drawer"]'))
4009        return 'Cart Drawer';
4010      if (window.location.pathname.endsWith('/cart') || el.closest('.cart, #cart, #main-cart-items, #main-cart-footer'))
4011        return 'Cart Page';
4012      return 'Product Page';
4013    };
4014
4015    // Show warning message if provided
4016    if (warningMessage && warningEl) {
4017      warningEl.innerHTML = `<span class="pp-warning-icon">⚠️</span>${warningMessage}`;
4018      warningEl.style.display = 'block';
4019    }
4020    let isInitialRender = true;
4021    const updateUI = () => {
4022      // Highlight element
4023      highlightElement(currentTarget);
4024      // Update button states
4025      applyBtn.textContent = COPY_BUTTON_LABEL;
4026      applyBtn.classList.remove('applied');
4027      // Reposition messaging — skip on initial render (already placed correctly by auto-detection)
4028      if (!isInitialRender) repositionMessaging();
4029      isInitialRender = false;
4030    };
4031
4032    const highlightElement = (el) => {
4033      if (_highlightedElement) {
4034        _highlightedElement.style.outline = '';
4035        _highlightedElement.style.outlineOffset = '';
4036      }
4037      _highlightedElement = el;
4038      if (el) {
4039        el.style.outline = '2px solid rgba(255,152,0,0.6)';
4040        el.style.outlineOffset = '-1px';
4041      }
4042    };
4043
4044    const repositionMessaging = () => {
4045      if (!currentTarget) return;
4046      const existing = document.getElementById(messagingTemplate.id);
4047      const targetInOverlay = isInOverlay(currentTarget);
4048      const msgInOverlay = existing && isInOverlay(existing);
4049      if (targetInOverlay !== msgInOverlay) {
4050        // Cross-context: reposition messaging in the target's context without touching the original
4051        const allMessaging = document.querySelectorAll('[data-pp-message]');
4052        let contextMsg = null;
4053        for (const el of allMessaging) {
4054          if (isInOverlay(el) === targetInOverlay) { contextMsg = el; break; }
4055        }
4056        if (!contextMsg) {
4057          contextMsg = messagingTemplate.cloneNode(true);
4058          contextMsg.id = messagingTemplate.id + '-preview';
4059        }
4060        contextMsg.remove();
4061        currentTarget.after(contextMsg);
4062        return;
4063      }
4064      if (existing) existing.remove();
4065      const newMessaging = messagingTemplate.cloneNode(true);
4066      currentTarget.after(newMessaging);
4067    };
4068
4069    const collapseBtn = panel.querySelector('#pp-collapse-btn');
4070    const pickBtn = panel.querySelector('#pp-pick-btn');
4071    let pickMode = false;
4072    let pickHoverTarget = null;
4073    let pickOverlay = null;
4074    let pickLabel = null;
4075    let applyBtnResetTimer = null;
4076    let _pickRafId = null;
4077
4078    const enterPickMode = () => {
4079      pickMode = true;
4080      document.documentElement.style.cursor = 'crosshair';
4081      pickBtn.classList.add('active');
4082      pickBtn.innerHTML = '◎ Pick a spot on the page...';
4083      applyBtn.textContent = COPY_BUTTON_LABEL;
4084      applyBtn.classList.remove('applied');
4085      applyBtn.style.display = 'flex';
4086      step2.style.display = 'none';
4087      if (contextEl) contextEl.textContent = resolvedContextName;
4088      // Create overlay for highlighting (pointer-events:none prevents interference)
4089      pickOverlay = document.createElement('div');
4090      pickOverlay.id = 'pp-pick-overlay';
4091      pickOverlay.style.cssText = OVERLAY_STYLE;
4092      pickLabel = document.createElement('div');
4093      pickLabel.style.cssText = OVERLAY_LABEL_STYLE;
4094      pickOverlay.appendChild(pickLabel);
4095      document.body.appendChild(pickOverlay);
4096
4097      document.addEventListener('mousemove', onPickHover, true);
4098      document.addEventListener('click', onPickClick, true);
4099      document.addEventListener('mousedown', onPickSuppressEvent, true);
4100      document.addEventListener('pointerdown', onPickSuppressEvent, true);
4101    };
4102
4103    const exitPickMode = () => {
4104      pickMode = false;
4105      document.documentElement.style.cursor = '';
4106      pickBtn.classList.remove('active');
4107      pickBtn.innerHTML = '◎ Start Picking Placement';
4108      applyBtn.style.display = 'none';
4109      // Remove overlay
4110      const overlay = document.getElementById('pp-pick-overlay');
4111      if (overlay) overlay.remove();
4112      pickOverlay = null;
4113      pickLabel = null;
4114      pickHoverTarget = null;
4115
4116      if (_pickRafId) { cancelAnimationFrame(_pickRafId); _pickRafId = null; }
4117      document.removeEventListener('mousemove', onPickHover, true);
4118      document.removeEventListener('click', onPickClick, true);
4119      document.removeEventListener('mousedown', onPickSuppressEvent, true);
4120      document.removeEventListener('pointerdown', onPickSuppressEvent, true);
4121    };
4122
4123    // Find the nearest visible child element to cursor coordinates
4124    const snapToNearestChild = (parent, cx, cy) => {
4125      const children = parent.children;
4126      if (!children.length) return null;
4127      let best = null;
4128      let bestDist = 30;
4129      for (const child of children) {
4130        if (shouldSkipElement(child)) continue;
4131        const r = child.getBoundingClientRect();
4132        if (r.width === 0 || r.height === 0) continue;
4133        const dx = cx < r.left ? r.left - cx : cx > r.right ? cx - r.right : 0;
4134        const dy = cy < r.top ? r.top - cy : cy > r.bottom ? cy - r.bottom : 0;
4135        const dist = Math.sqrt(dx * dx + dy * dy);
4136        if (dist < bestDist) {
4137          bestDist = dist;
4138          best = child;
4139        }
4140      }
4141      return best;
4142    };
4143
4144    const onPickHover = (e) => {
4145      if (_pickRafId) return;
4146      _pickRafId = requestAnimationFrame(() => {
4147        _pickRafId = null;
4148        let el = document.elementFromPoint(e.clientX, e.clientY);
4149        if (!el || shouldSkipElement(el)) {
4150          document.documentElement.style.cursor = 'not-allowed';
4151          if (pickOverlay) pickOverlay.style.display = 'none';
4152          pickHoverTarget = null;
4153          return;
4154        }
4155
4156        if (el.children.length > 0) {
4157          const snapped = snapToNearestChild(el, e.clientX, e.clientY);
4158          if (snapped) el = snapped;
4159        }
4160
4161        // Skip elements without a unique selector
4162        if (shouldSkipElement(el)) {
4163          document.documentElement.style.cursor = 'not-allowed';
4164          pickHoverTarget = null;
4165          if (pickOverlay) pickOverlay.style.display = 'none';
4166          return;
4167        }
4168        document.documentElement.style.cursor = 'crosshair';
4169        if (el === pickHoverTarget) return;
4170        pickHoverTarget = el;
4171        positionOverlayOnElement(pickOverlay, el);
4172        pickLabel.innerHTML = 'Select this placement';
4173      });
4174    };
4175
4176    const onPickSuppressEvent = (e) => {
4177      if (e.target.closest('#pp-nav-panel')) return;
4178      e.preventDefault();
4179      e.stopPropagation();
4180    };
4181
4182    const onPickClick = (e) => {
4183      if (e.target.closest('#pp-nav-panel')) return;
4184      e.preventDefault();
4185      e.stopPropagation();
4186      e.stopImmediatePropagation();
4187      if (pickHoverTarget && !shouldSkipElement(pickHoverTarget)) {
4188        currentTarget = pickHoverTarget;
4189        updateContextUI(detectContextFromElement(currentTarget));
4190        updateUI();
4191      }
4192    };
4193
4194    // --- Pick button ---
4195    pickBtn.addEventListener('click', () => {
4196      if (pickMode) exitPickMode();
4197      else enterPickMode();
4198    });
4199
4200    _panelPickModeCleanup = () => { if (pickMode) exitPickMode(); };
4201
4202    // --- Minimize / expand ---
4203    collapseBtn.addEventListener('click', () => {
4204      if (pickMode) exitPickMode();
4205      panel.classList.add('minimized');
4206      pill.style.display = 'flex';
4207      highlightElement(null);
4208    });
4209    pill.addEventListener('click', () => {
4210      panel.classList.remove('minimized');
4211      pill.style.display = 'none';
4212      highlightElement(currentTarget);
4213    });
4214
4215    // --- Step 2 dismiss ---
4216    step2Dismiss.addEventListener('click', () => {
4217      step2.style.display = 'none';
4218    });
4219
4220    // Handle copy button click
4221    panel.addEventListener('click', async (e) => {
4222      const button = e.target.closest('#pp-apply-btn');
4223      if (!button) return;
4224      // Skip buttons handled separately
4225      if (button.id === 'pp-collapse-btn' || button.id === 'pp-pick-btn' || button.id === 'pp-step2-dismiss') return;
4226      if (button.id === 'pp-apply-btn') {
4227        const selector = generateSelector(currentTarget);
4228        if (!selector) return;
4229        let copied = false;
4230        try {
4231          // Try multiple copy methods (iframe security blocks clipboard API)
4232          if (navigator.clipboard?.writeText) {
4233            await navigator.clipboard.writeText(selector);
4234            copied = true;
4235          }
4236        } catch {}
4237        if (!copied) {
4238          try {
4239            const ta = document.createElement('textarea');
4240            ta.value = selector;
4241            ta.style.position = 'fixed';
4242            ta.style.opacity = '0';
4243            document.body.appendChild(ta);
4244            ta.select();
4245            copied = document.execCommand('copy');
4246            ta.remove();
4247          } catch {}
4248        }
4249        if (copied) {
4250          applyBtn.textContent = COPIED_BUTTON_LABEL;
4251          applyBtn.classList.add('applied');
4252          if (applyBtnResetTimer) clearTimeout(applyBtnResetTimer);
4253          applyBtnResetTimer = setTimeout(() => {
4254            applyBtn.textContent = COPY_BUTTON_LABEL;
4255            applyBtn.classList.remove('applied');
4256            applyBtnResetTimer = null;
4257          }, 1200);
4258          // Show Step 2 confirmation
4259          step2.style.display = 'block';
4260        }
4261        exitPickMode();
4262      }
4263    });
4264
4265    // --- Inspector mode detection ---
4266    const inspectorWarning = panel.querySelector('#pp-inspector-warning');
4267    let inspectorActive = typeof Shopify !== 'undefined' && Shopify.inspectMode;
4268    const isMac = navigator.platform?.startsWith('Mac') || navigator.userAgentData?.platform === 'macOS';
4269    const shortcut = isMac ? '⌘ ⇧ I' : 'Ctrl + Shift + I';
4270    const enableInspectorMode = () => {
4271      inspectorActive = true;
4272      inspectorWarning.innerHTML = `<span class="pp-warning-icon">⚠️</span> For a better experience, press <strong>${shortcut}</strong> to turn off inspector mode`;
4273      inspectorWarning.style.display = 'block';
4274    };
4275    const disableInspectorMode = () => {
4276      inspectorActive = false;
4277      inspectorWarning.style.display = 'none';
4278    };
4279    _panelInspectorActivate = enableInspectorMode;
4280    _panelInspectorDeactivate = disableInspectorMode;
4281    document.addEventListener('shopify:inspector:activate', enableInspectorMode);
4282    document.addEventListener('shopify:inspector:deactivate', disableInspectorMode);
4283
4284    // Prevent panel/pill clicks from closing cart drawer (themes close drawer on outside mousedown)
4285    const stopBubble = (e) => e.stopPropagation();
4286    panel.addEventListener('mousedown', stopBubble);
4287    panel.addEventListener('pointerdown', stopBubble);
4288    pill.addEventListener('mousedown', stopBubble);
4289    pill.addEventListener('pointerdown', stopBubble);
4290
4291    document.body.appendChild(panel);
4292    document.body.appendChild(pill);
4293    if (inspectorActive) enableInspectorMode();
4294    updateUI();
4295    return panel;
4296  };
4297</script>
4297
4298<!-- END app snippet --><!-- BEGIN app snippet: cart -->
4298<script>
4299    // Determine correct locator by theme name
4300    const cartPageThemeName = window.Shopify.theme.name;
4301    let cartPageLocator, cartPageNodeToObserve, cartPageMutationNode;
4302
4303    try {
4304      switch (cartPageThemeName) {
4305        // to support other themes add cases
4306        // default case supports Shopify Free themes
4307        default:
4308          cartPageLocator = '.cart__footer .totals';
4309          cartPageNodeToObserve = '#main-cart-footer .js-contents';
4310          cartPageMutationNode = 'js-contents';
4311          break;
4312      }
4313      // Begin Upstream Messaging Implementation
4314      const cartPageMessaging = document.createElement('div');
4315      const price = 0 / 100;
4316
4317      const cartPageAttributes = {
4318        'id': 'paypal-upstream-messaging-cart-page',
4319        'data-pp-message': '',
4320        'data-pp-placement': 'cart',
4321        'data-pp-style-layout': 'text',
4322        'data-pp-style-text-align': 'right',
4323        'data-pp-style-logo-type': "inline",
4324        'data-pp-style-text-color': "black",
4325        'data-pp-style-text-size': "16",
4326        'data-pp-style-logo-position': "",
4327        'data-pp-style-text-align': "",
4328        'data-pp-amount': price,
4329        'style': 'padding-top: 10px',
4330      };
4331
4332      Object.keys(cartPageAttributes).forEach((key) => {
4333        cartPageMessaging.setAttribute(key, cartPageAttributes[key]);
4334      });
4335
4336      const advancedSettingsEnabled = 'true' === 'true';
4337      let selectorNotFoundWarning = null;
4338
4339      if (advancedSettingsEnabled && '' !== '') {
4340        // utils.liquid
4341        cartPageLocator = parseSelector('');
4342      }
4343
4344      if ("enabled" === 'enabled') {
4345        const element = document.querySelector(cartPageLocator);
4346
4347        if (element) {
4348          element.after(cartPageMessaging.cloneNode());
4349
4350          if (advancedSettingsEnabled && isIsolatedContext()) {
4351            setTimeout(() => {
4352              createNavigationPanel(element, cartPageMessaging, null, 'Cart Page');
4353            }, 500);
4354          }
4355
4356          // utils.liquid
4357          watchForCartChanges(cartPageLocator, cartPageMessaging);
4358        } else if (advancedSettingsEnabled && isIsolatedContext()) {
4359          selectorNotFoundWarning = 'Selected placement not found on this page. Please choose an element that is present on all page templates.';
4360          recordEvent('appEmbed:advanced-settings-selector-not-found', { locator: cartPageLocator });
4361          setTimeout(() => {
4362            createNavigationPanel(document.body, cartPageMessaging, selectorNotFoundWarning, 'Cart Page');
4363          }, 500);
4364        }
4365      }
4366    } catch (e) {
4367      // utils.liquid
4368      recordEvent('appEmbed:query-selector-not-found-cart-page', { locator: cartPageLocator, error: e.message });
4369    }
4370  </script>
4370
4371<!-- END app snippet --><!-- BEGIN app snippet: cartDrawer -->
4371<script>
4372    // Determine correct locator by theme name
4373    const cartDrawerThemeName = window.Shopify.theme.name;
4374    let cartDrawerLocator, cartDrawerNodeToObserve, cartDrawerMutationNode;
4375
4376    switch (cartDrawerThemeName) {
4377      // to support other themes add cases
4378      // default case supports Shopify Free themes
4379      default:
4380        cartDrawerLocator = '.cart-drawer__footer .totals';
4381        cartDrawerNodeToObserve = '#CartDrawer';
4382        cartDrawerMutationNode = 'drawer__inner';
4383        break;
4384    }
4385    // Begin Upstream Messaging Implementation
4386    try {
4387      const cartDrawerMessaging = document.createElement('div');
4388      const price = 0 / 100;
4389
4390      const cartDrawerAttributes = {
4391        'id': 'paypal-upstream-messaging-cart-drawer',
4392        'data-pp-message': '',
4393        'data-pp-placement': 'cart',
4394        'data-pp-style-layout': 'text',
4395        'data-pp-style-text-align': 'right',
4396        'data-pp-style-logo-type': "inline",
4397        'data-pp-style-text-color': "black",
4398        'data-pp-style-text-size': "16",
4399        'data-pp-style-logo-position': "",
4400        'data-pp-amount': price,
4401      };
4402
4403      Object.keys(cartDrawerAttributes).forEach((key) => {
4404        cartDrawerMessaging.setAttribute(key, cartDrawerAttributes[key]);
4405      });
4406
4407      const advancedSettingsEnabled = 'true' === 'true';
4408      const customCartDrawerSelector = ''.trim();
4409
4410      if (advancedSettingsEnabled && customCartDrawerSelector !== '') {
4411        // utils.liquid
4412        cartDrawerLocator = parseSelector(customCartDrawerSelector);
4413      }
4414
4415      if ("enabled" === 'enabled') {
4416        waitForElement(cartDrawerLocator).then(elem => {
4417          elem.after(cartDrawerMessaging.cloneNode());
4418
4419          if (advancedSettingsEnabled && isIsolatedContext() && !document.getElementById('pp-nav-panel')) {
4420            let drawerPanelActive = false;
4421            new IntersectionObserver((entries) => {
4422              if (entries[0].isIntersecting) {
4423                if (!document.getElementById('pp-nav-panel')) {
4424                  setTimeout(() => {
4425                    if (!document.getElementById('pp-nav-panel')) {
4426                      createNavigationPanel(elem, cartDrawerMessaging, null, 'Cart Drawer');
4427                      drawerPanelActive = true;
4428                    }
4429                  }, 300);
4430                }
4431              } else if (drawerPanelActive) {
4432                destroyNavigationPanel();
4433                drawerPanelActive = false;
4434              }
4435            }, { threshold: 0.1 }).observe(elem);
4436          }
4437        });
4438
4439        // Custom selector not found — show navigator with warning when drawer opens
4440        if (advancedSettingsEnabled && customCartDrawerSelector && !document.querySelector(cartDrawerLocator) && isIsolatedContext() && !document.getElementById('pp-nav-panel')) {
4441          const drawerContainer = document.querySelector(cartDrawerNodeToObserve);
4442          if (drawerContainer) {
4443            let warningPanelActive = false;
4444            const warning = 'Selected placement not found on this page. Please choose an element that is present on all page templates.';
4445            recordEvent('appEmbed:advanced-settings-selector-not-found', { locator: cartDrawerLocator });
4446            new IntersectionObserver((entries) => {
4447              if (entries[0].isIntersecting) {
4448                if (!document.getElementById('pp-nav-panel')) {
4449                  setTimeout(() => {
4450                    if (!document.getElementById('pp-nav-panel')) {
4451                      createNavigationPanel(drawerContainer, cartDrawerMessaging, warning, 'Cart Drawer');
4452                      warningPanelActive = true;
4453                    }
4454                  }, 300);
4455                }
4456              } else if (warningPanelActive) {
4457                destroyNavigationPanel();
4458                warningPanelActive = false;
4459              }
4460            }, { threshold: 0.1 }).observe(drawerContainer);
4461          }
4462        }
4463
4464        // utils.liquid
4465        watchForCartChanges(cartDrawerLocator, cartDrawerMessaging);
4466      }
4467    } catch (e) {
4468      // utils.liquid
4469      recordEvent('appEmbed:query-selector-not-found-cart-drawer', { locator: cartDrawerLocator, error: e.message });
4470    }
4471  </script>
4471
4472<!-- END app snippet -->
4473
4474
4475</div><div id="shopify-block-AVC9KZllULzBVbkRXS__18369883135137792385" class="shopify-block shopify-app-block"><link href="//cdn.shopify.com/extensions/01a0c92e-2778-7671-a9da-706379edd60a/3.4.1/assets/styles.css" rel="stylesheet" type="text/css" media="all" />
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
4495<script>
4496  // Country and locale come from Liquid, so they are known at first paint. The
4497  // sheet href is built synchronously, and resolving the language from anything
4498  // that has to be fetched first would show the wrong one for a moment.
4499  window.energyLabelContext = window.energyLabelContext || {
4500    country: 'DE',
4501    locale: 'de'
4502  };
4503
4504  // The country decides the sheet language and the browser only breaks ties, so
4505  // both travel with the request and the server resolves what it asks EPREL for.
4506  window.energyLabelSheetUrl = window.energyLabelSheetUrl || function(eprelNumber){
4507    const params = new URLSearchParams({
4508      country: window.energyLabelContext.country || '',
4509      langs: (navigator.languages || [navigator.language]).filter(Boolean).join(',')
4510    });
4511    return '/apps/energy-label/api/products/' + eprelNumber + '/sheets?' + params;
4512  };
4513
4514  // Fetched unconditionally — the sheet options below may be off, but the label
4515  // settings are still needed. Cached on window so badge click handlers can read
4516  // openLabelInNewTab synchronously (an await before window.open reads as a popup).
4517  window.energyLabelSettings = window.energyLabelSettings || {};
4518  window.energyLabelSettingsReady = window.energyLabelSettingsReady ||
4519    fetch(`/apps/energy-label/api/settings?locale=${encodeURIComponent(window.energyLabelContext.locale || '')}`)
4520      .then(response => response.json())
4521      .then(settings => { window.energyLabelSettings = settings; return settings; })
4522      .catch(() => window.energyLabelSettings);
4523
4524  window.energyLabelShouldOpenInNewTab = function(){
4525    return window.energyLabelSettings.openLabelInNewTab === true;
4526  };
4527
4528  window.energyLabelOpenInNewTab = function(labelUrl){
4529    if(!labelUrl){ return false; }
4530    window.open(labelUrl, '_blank', 'noopener');
4531    return true;
4532  };
4533</script>
4533
4534
4535
4536
4537<div style="display: none">
4538  
4539    
4540    
4541      
4541<script src="https://cdn.shopify.com/extensions/01a0c92e-2778-7671-a9da-706379edd60a/3.4.1/assets/script-embed.js" async data-typeCart="1"
4542              data-cssSelector="cart-item__details"
4543              data-cssSelectorProduct="cart-item"
4544              data-cssSelectorProduct-drawer="horizontal-product"
4545              data-cssSelector-drawer="horizontal-product__details"
4546              data-cssSelector-drawer-block="cart-drawer"
4547      >
4548      </script>
4548
4549    
4550  
4551</div>
4552<template class="energy-label__template">
4553  <div class="energy-label__overlay" onclick="handleCollectionOverlayClick(event)" popover>
4554    <button class="energy-label__close-button" onclick="hideCollectionOverlay(event)">
4555      <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
4556        <path d="M6 6L26 26M6 26L26 6" stroke="#ffffff" stroke-width="2"/>
4557      </svg>
4558    </button>
4559    <div class="energy-label__image-container">
4560      <img class="energy-label__image" width="auto" height="auto" src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiAzQzcuMDI5NDQgMyAzIDcuMDI5NDQgMyAxMkMzIDE2Ljk3MDYgNy4wMjk0NCAyMSAxMiAyMUMxMi44Mjg0IDIxIDEzLjUgMjEuNjcxNiAxMy41IDIyLjVDMTMuNSAyMy4zMjg0IDEyLjgyODQgMjQgMTIgMjRDNS4zNzI1OCAyNCAwIDE4LjYyNzQgMCAxMkMwIDUuMzcyNTggNS4zNzI1OCAwIDEyIDBDMTguNjI3NCAwIDI0IDUuMzcyNTggMjQgMTJDMjQgMTIuODI4NCAyMy4zMjg0IDEzLjUgMjIuNSAxMy41QzIxLjY3MTYgMTMuNSAyMSAxMi44Mjg0IDIxIDEyQzIxIDcuMDI5NDQgMTYuOTcwNiAzIDEyIDNaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K" alt="Energy Label">
4561      <div class="energy-label__popup-link">Powered by <a href="https://apps.shopify.com/eu-energy-label" target="_blank">EU Energy Label app</a></div>
4562    </div>
4563  </div>
4564</template>
4565
4566
4567<embed-block-energy-label></embed-block-energy-label>
4568
4569<style>
4570
4571     
4572     
4573     
4574      
4575        .cart-item__details .energy-badge__container {
4576          margin-left: 0px;
4577          margin-right: 0px;
4578          margin-top: 0px;
4579          margin-bottom: 0px;
4580          
4581              flex-direction: row;
4582              justify-content: flex-start;
4583              align-items: center;
4584              gap: 12px;
4585          
4586        }
4587        
4588        
4589          .cart-item__details .energy-badge__link-text::before {
4590            font-size: 12px;
4591          }
4592     
4593     
4594      
4595      .horizontal-product__details .energy-badge__container {
4596        margin-left: 0px;
4597        margin-right: 0px;
4598        margin-top: 0px;
4599        margin-bottom: 0px;
4600        
4601            flex-direction: row;
4602            justify-content: flex-start;
4603            align-items: center;
4604            gap: 12px;
4605        
4606      }
4607      
4608      
4609          .horizontal-product__details .energy-badge__link-text::before {
4610            font-size: 12px;
4611          }
4612     
4613
4614    
4615     
4616
4617    
4618      .cart-item__details .energy-badge__image {
4619          height: 24px;
4620      }
4621      .cart-item__details .energy-badge__image--manual,
4622      .cart-item__details .energy-badge__image.manual {
4623        height: 14px;
4624      }
4625    
4626
4627    
4628      .horizontal-product__details .energy-badge__image {
4629        height: 24px;
4630      }
4631      .horizontal-product__details .energy-badge__image--manual,
4632      .horizontal-product__details .energy-badge__image.manual {
4633        height: 14px;
4634      }
4635    
4636
4637
4638</style>
4639
4640
4641</div>
4641<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
4641
4642</body>
4643</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.