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/search"> 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>Suchen – odiporo.de - Smarte Elektronik für jeden Anspruch</title><meta name="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:site_name" content="odiporo.de - Smarte Elektronik für jeden Anspruch"> 23<meta property="og:url" content="https://odiporo.de/search"> 24<meta property="og:title" content="Suchen"> 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="Suchen"> 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":"search"}</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":"8cbd1582-1c2a-4bd0-9c16-74a71321a35f-1791081633","pageurl":"odiporo.de\/search","u":"d21726736f12","p":"searchresults"};</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: false, 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/kor-order-limit-quantity/blocks/app-embed/143c1e59-4c01-4de6-ad3e-90b86ada592d --> 472 473 474<!-- BEGIN app snippet: mc-checkout -->
474<script type="text/javascript"> 475 476 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":[]}}; 477 478 479 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"}; 480 481 482 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."}}}; 483 484 const mcLimitKORData = { ...mcLimitKORData1, ...mcLimitKORData2, ...mcLimitKORData3 }; 485 486 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":[]}; 487 488 // For add to cart button Click 489 var template = "search"; 490 function jqueryCode() { 491 if (template == 'product') { 492 document.addEventListener('DOMContentLoaded', () => { 493 $('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) { 494 options = options || {}; 495 if (!options.eventTrigger) { 496 e.preventDefault(); 497 if (addToCartEventStopPropogation.includes(Shopify.shop)) { 498 e.stopImmediatePropagation(); 499 } 500 CheckOnAddToCart().then(function (res) { 501 if (res.msg != '') { 502 showMessage(res.msg); 503 } else { 504 if (Shopify.shop == "urbanbaristas.myshopify.com") { 505 $('form[action^="/cart/add"]').submit(); 506 } else { 507 $(e.target).trigger("click", { eventTrigger: true }); 508 } updateNumberOfProductLimit(res.qty); 509 } 510 }); 511 } 512 }); 513 if (typeof mcKorAppSettings != "undefined" && (mcKorAppSettings?.pPage?.addToCart && mcKorAppSettings?.pPage?.addToCart != "")) { 514 $(mcKorAppSettings?.pPage?.addToCart).click(function (e, options) { 515 options = options || {}; 516 if (!options.eventTrigger) { 517 e.preventDefault(); 518 if (addToCartEventStopPropogation.includes(Shopify.shop)) { 519 e.stopImmediatePropagation(); 520 } 521 CheckOnAddToCart().then(function (res) { 522 if (res.msg != '') { 523 showMessage(res.msg); 524 } else { 525 $(e.target).trigger("click", { eventTrigger: true }); 526 updateNumberOfProductLimit(res.qty); 527 } 528 }); 529 } 530 }); 531 } 532 }); 533 } 534 } 535 536 function CheckOnAddToCart() { 537 return new Promise(function (resolve) { 538 jQuery.getJSON("/cart.js", function (cartItems) { 539 540 var res = window.mcproductresponse.data; 541 var msg = ''; 542 var globalMsg = ''; 543 let variantMsg = ""; 544 var collectionMsg = ''; 545 var tagMsg = ''; 546 var is_global_limit = false, 547 is_product_limit = false, 548 is_number_collection_limit = false, 549 is_tag_limit = false, 550 is_variant_limit = false, 551 is_product_tag_limit = false;
552 var productMsg = ''; 553 var productTagMsg = ''; 554 //var productData = $('form[action^="/cart/add"], form[action$="/cart/add"]').serializeArray(); 555 var productId = product_id, 556 variantId = '', 557 qty = '', 558 variantqty = '', 559 collectionqty = ''; 560 561 var productData = $('form[action^="/cart/add"], form[action$="/cart/add"]').serializeArray(); 562 if (mcKorAppSettings?.pPage?.fmSelecotor) { 563 productData = $(mcKorAppSettings?.pPage?.fmSelecotor).serializeArray(); 564 } 565 566 // get variant id 567 const queryString = window.location.search; 568 const urlParams = new URLSearchParams(queryString); 569 const variant_id = urlParams.get('variant'); 570 571 productData.map((product) => { 572 if (product.name == 'quantity') { 573 qty = variantqty = collectionqty = parseInt(product.value, 10); 574 } else if (product.name == 'id') { 575 variantId = product.value; 576 } 577 }) 578 579 cartItems.items.map((item) => { 580 if (productId == item.product_id) { 581 qty = parseInt(item.quantity, 10) + qty; 582 } 583 if (variantId == item.id) { 584 variantqty = parseInt(item.quantity, 10) + variantqty; 585 } 586 }) 587 588 if (res?.tag?.info) { 589 var tagMaxQty = res.tag.info.max_limit; 590 var tagMinQty = res.tag.info.min_limit; 591 if (tagMinQty != 0 && tagMinQty && tagMaxQty != 0 && tagMaxQty) { 592 is_tag_limit = true; 593 if (qty > tagMaxQty) { 594 tagMsg = res.tag.message.upper_limit_msg; 595 } else if (qty < tagMinQty) { 596 tagMsg = res.tag.message.lower_limit_msg; 597 } 598 } 599 } 600 601 if (res?.number_of_product_limit?.length > 0) { 602 is_number_collection_limit = true; 603 res.number_of_product_limit.map(collection => { 604 if (collectionqty > collection.remaining_max_qty) { 605 collectionMsg = collection.max_msg; 606 } 607 }) 608 } 609 610 611 if (variantId && res?.variants?.length > 0) {
612 res.variants.forEach((variant) => { 613 if (variant.info.id == variantId) { 614 let min_qty = variant.info.lower_limit; 615 let max_qty = variant.info.purchase_limit; 616 if (max_qty != null && max_qty != 0 && max_qty && min_qty != null && min_qty != 0 && min_qty) { 617 is_variant_limit = true; 618 if (variantqty > max_qty) { 619 variantMsg = variant.message.upper_limit_msg; 620 } else if (variantqty < min_qty) { 621 variantMsg = variant.message.lower_limit_msg; 622 } 623 } 624 } 625 }); 626 } 627 628 if (res?.product?.info) { 629 var maxQty = res.product.info.purchase_limit; 630 var minQty = res.product.info.min_purchase_limit; 631 // var lifetimeQty = res.product.info.life_time_limit || 0; 632 633 var lifetimeQty = res.product.info?.remainingQty; 634 var remainingQty = res.product.info?.remainingQty; 635 636 if (minQty != 0 && minQty && maxQty != 0 && maxQty) { 637 is_product_limit = true; 638 if (lifetimeQty != null && lifetimeQty != undefined && qty > remainingQty) { 639 productMsg = res.product.message.lifetime_limit_msg; 640 } else if (qty > maxQty) { 641 productMsg = res.product.message.upper_limit_msg; 642 } else if (qty < minQty) { 643 productMsg = res.product.message.lower_limit_msg; 644 } 645 } 646 } 647 648 if (res?.product_tag?.info) { 649 var maxQty = res.product_tag.info.max_limit; 650 var minQty = res.product_tag.info.min_limit; 651 652 var lifetimeQty = res.product_tag.info?.remainingQty; 653 var remainingQty = res.product_tag.info?.remainingQty; 654 655 if (minQty != 0 && minQty && maxQty != 0 && maxQty) { 656 is_product_tag_limit = true; 657 if (lifetimeQty != null && lifetimeQty != undefined && qty > remainingQty) { 658 productTagMsg = res.product_tag.message.future_limit_msg; 659 } else if (qty > maxQty) { 660 productTagMsg = res.product_tag.message.upper_limit_msg; 661 } else if (qty < minQty) { 662 productTagMsg = res.product_tag.message.lower_limit_msg; 663 } 664 } 665 } 666 667 if (res?.global?.info && Object.keys(res.global.message).length > 0) { 668 var globalMaxQty = res.global.info.global_limit; 669 var globalMinQty = res.global.info.min_global_limit; 670 // is_product_check = 1 -> check against product-level qty (this product across all its 671 // variants); 0/null/undefined -> existing variant-level qty (this variant only). 672 var globalQty = res.global.info.is_product_check ? qty : variantqty; 673 674 if (globalMaxQty != null && globalMinQty != null) { 675 is_global_limit = true; 676 if (globalQty > globalMaxQty) { 677 globalMsg = res.global.message.upper_limit_msg; 678 } else if (globalQty < globalMinQty) { 679 globalMsg = res.global.message.lower_limit_msg; 680 } 681 } 682 } 683 684 if (res?.priority) { 685 for (const [key, value] of Object.entries(res.priority)) { 686 if ((value == "COLLECTION_MIN_MAX" || value == "PRODUCT_LIMIT") && is_product_limit) { 687 msg = productMsg; 688 break; 689 } 690 if (value == "PRODUCT_TAG_LIMIT" && is_product_tag_limit) { 691 msg = productTagMsg; 692 break; 693 } 694 if (value == "VARIANT_LIMIT" && is_variant_limit) { 695 msg = variantMsg; 696 break; 697 } 698 if (value == "GLOBAL_LIMIT" && is_global_limit) { 699 msg = globalMsg; 700 break; 701 } 702 if (value == "TAG_LIMIT" && is_tag_limit) { 703 msg = tagMsg; 704 break; 705 } 706 } 707 } 708 709 if (is_number_collection_limit) { 710 if (msg) { 711 msg += "<br>" + collectionMsg; 712 } else { 713 msg = collectionMsg; 714 } 715 } 716 717 var response = { 718 msg: msg, 719 qty: collectionqty 720 } 721 resolve(response); 722 }); 723 }) 724 } 725 726 function updateNumberOfProductLimit(qty) { 727 qty = parseInt(qty, 10); 728 var res = window.mcproductresponse.data; 729 if (res?.number_of_product_limit.length > 0) { 730 res?.number_of_product_limit.map(collection => { 731 collection.remaining_max_qty = parseInt(collection.remaining_max_qty - qty, 10); 732 }) 733 } 734 window.mcproductresponse.data = res; 735 } 736</script>
736<!-- END app snippet --><!-- BEGIN app snippet: mc-product -->
736<script> 737 function mcKorGetDateRangeFromLifeSpan(ctx) { 738 const now = new Date(); 739 740 // Helpers scoped inside 741 function startOfDay(date) { 742 return new Date(date.getFullYear(), date.getMonth(), date.getDate()); 743 } 744 745 function endOfDay(date) { 746 return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59, 999); 747 } 748 749 function startOfWeek(date) { 750 const d = new Date(date); 751 const day = d.getDay(); 752 const diff = d.getDate() - day + (day === 0 ? -6 : 1); // Monday as start 753 return startOfDay(new Date(d.setDate(diff))); 754 } 755 756 function endOfWeek(date) { 757 const start = startOfWeek(date); 758 return endOfDay(new Date(start.getFullYear(), start.getMonth(), start.getDate() + 6)); 759 } 760 761 function startOfMonth(date) { 762 return new Date(date.getFullYear(), date.getMonth(), 1); 763 } 764 765 function endOfMonth(date) { 766 return new Date(date.getFullYear(), date.getMonth() + 1, 0, 23, 59, 59, 999); 767 } 768 769 function startOfYear(date) { 770 return new Date(date.getFullYear(), 0, 1); 771 } 772 773 function endOfYear(date) { 774 return new Date(date.getFullYear(), 11, 31, 23, 59, 59, 999); 775 } 776 777 // Main logic 778 if (ctx.life_span_type === 2) { 779 const startDate = startOfDay(new Date(now.getFullYear(), now.getMonth(), now.getDate() - ctx.life_span_days)); 780 const endDate = endOfDay(now); 781 return [startDate, endDate]; 782 } 783 784 if (ctx.life_span_type === 4) { 785 const startDate = endOfDay(new Date(ctx.start_date)); 786 const endDate = startOfDay(new Date(ctx.end_date)); 787 const currentDate = now; 788 789 if (currentDate < startDate || currentDate > endDate) { 790 return [null, null]; 791 } 792 793 return [startDate, endDate]; 794 } 795 796 if (ctx.life_span_type === 5) { 797 const intervalSetting = ctx.user_interval; 798 if (!intervalSetting) return [null, null]; 799 800 const interval = intervalSetting.interval; 801 802 if (interval === "day") { 803 return [startOfDay(now), endOfDay(now)]; 804 } 805 806 if (interval === "week") { 807 return [startOfWeek(now), endOfWeek(now)]; 808 } 809 810 if (interval === "month") { 811 return [startOfMonth(now), endOfMonth(now)]; 812 } 813 814 if (interval === "year") { 815 return [startOfYear(now), endOfYear(now)]; 816 } 817 818 if (["10", "20", "30", "custom"].includes(interval)) { 819 let days = 1; 820 let start = new Date(); 821 822 if (intervalSetting.date) { 823 start = new Date(intervalSetting.date); 824 } 825 826 if (["10", "20", "30"].includes(interval)) { 827 days = parseInt(interval, 10); 828 } else if (interval === "custom") { 829 days = parseInt(intervalSetting.custom_days || 1, 10); 830 } 831 832 const now = new Date(); 833 if (now < start) return [null, null]; 834 835 const diffDays = Math.floor((now - start) / (1000 * 60 * 60 * 24)); 836 const multiplier = Math.floor(diffDays / days); 837 838 if (multiplier >= 1) { 839 start.setDate(start.getDate() + multiplier * days); 840 } 841 842 const end = new Date(start); 843 end.setDate(start.getDate() + days); 844 845 return [startOfDay(start), endOfDay(end)]; 846 } 847 } 848 849 return [null, null]; 850 } 851 852 function mcKorAnalyzeOrdersByDateRange(orders, startDate, endDate) { 853 let total_order_amount = 0; 854 let order_product_data = {}; 855 let order_variant_data = {}; 856 857 orders.forEach(order => { 858 const orderDate = new Date(order.created_at); 859 if (startDate && endDate && orderDate >= startDate && orderDate <= endDate) { 860 total_order_amount += order.total_price; 861 862 order.line_items.forEach(item => { 863 // Count product quantity 864 if (!order_product_data[item.product_id]) { 865 order_product_data[item.product_id] = 0; 866 } 867 order_product_data[item.product_id] += item.quantity; 868 869 // Count variant quantity 870 if (!order_variant_data[item.variant_id]) { 871 order_variant_data[item.variant_id] = 0; 872 } 873 order_variant_data[item.variant_id] += item.quantity; 874 }); 875 } 876 }); 877 878 return { 879 total_order_amount, 880 order_product_data, 881 order_variant_data 882 }; 883 } 884</script>
884 885 886 887<!-- END app snippet --><!-- BEGIN app snippet: mc-limit -->
887<script> 888 if (typeof jQuery == 'undefined') { 889 var headTag = document.getElementsByTagName("head")[0]; 890 var jqTag = document.createElement('script'); 891 jqTag.type = 'text/javascript'; 892 jqTag.src = 'https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js'; 893 jqTag.defer = 'defer'; 894 headTag.appendChild(jqTag); 895 } 896</script>
vendor: 1 bytes, line 896
896
897<script src="https://magecomp.us/js/LimitQtyHelper.js" defer></script>
897 898 899<div> 900 901 <style> 902 .close-custom { 903 color: #aaa; 904 float: right; 905 font-size: 28px; 906 font-weight: 700; 907 margin-right: 4px; 908 margin-top: -3px; 909 position: absolute; 910 top: 0; 911 right: 0; 912 } 913 </style> 914 915 916 917 <style> 918 /*.d-none { 919 display: none !important; 920 }*/ 921 922 .modal-custom { 923 display: none; 924 position: fixed; 925 z-index: 10000; 926 left: 0; 927 top: 0; 928 width: 100%; 929 height: 100%; 930 overflow: auto; 931 background-color: #000; 932 background-color: rgba(0, 0, 0, .4) 933 } 934 935 936 .modal-content-custom { 937 background-color: #fefefe; 938 margin: 15% auto; 939 padding: 25px; 940 border: 1px solid #888; 941 width: fit-content; 942 position: relative; 943 } 944 945 946 .close-custom:focus, 947 .close-custom:hover { 948 color: #000; 949 text-decoration: none; 950 cursor: pointer 951 } 952 953 #mc-loader { 954 display: none; 955 position: fixed; 956 left: 50%; 957 top: 50%; 958 z-index: 10000; 959 width: 150px; 960 height: 150px; 961 margin: -75px 0 0 -75px; 962 border: 16px solid #f3f3f3; 963 border-radius: 50%; 964 border-top: 16px solid #3498db; 965 width: 120px; 966 height: 120px; 967 -webkit-animation: spin 2s linear infinite; 968 animation: spin 2s linear infinite 969 } 970 971 @-webkit-keyframes spin { 972 0% { 973 -webkit-transform: rotate(0) 974 } 975 976 100% { 977 -webkit-transform: rotate(360deg) 978 } 979 } 980 981 @keyframes spin { 982 0% { 983 transform: rotate(0) 984 } 985 986 100% { 987 transform: rotate(360deg) 988 } 989 } 990 991 .animate-bottom { 992 position: relative; 993 -webkit-animation-name: animatebottom; 994 -webkit-animation-duration: 1s; 995 animation-name: animatebottom; 996 animation-duration: 1s 997 } 998 999 @-webkit-keyframes animatebottom { 1000 from { 1001 bottom: -100px; 1002 opacity: 0 1003 } 1004 1005 to { 1006 bottom: 0; 1007 opacity: 1 1008 } 1009 } 1010 1011 @keyframes animatebottom { 1012 from { 1013 bottom: -100px; 1014 opacity: 0 1015 } 1016 1017 to { 1018 bottom: 0; 1019 opacity: 1 1020 } 1021 } 1022 1023 @media only screen and (max-width: 768px) {
1024 .modal-content-custom { 1025 margin-top: 70%; 1026 } 1027 } 1028 1029 #purchase_limit_messages ul { 1030 list-style: none !important; 1031 } 1032 1033 .mc-disabled { 1034 pointer-events: none; 1035 opacity: 0.5; 1036 } 1037 </style> 1038 <div id="modelDesignId"></div> 1039 <div id="mc-loader"></div> 1040 <div id="myModal" class="modal-custom"> 1041 <div class="modal-content-custom"> 1042 <div id="purchase_limit_messages"></div><span class="close-custom">×</span> 1043 </div> 1044 </div> 1045
1045<script id="kor-market-config" type="application/json"> 1046 { 1047 "market_id": "96371376507", 1048 "market_handle": "de" 1049 } 1050 </script>
1050 1051
1051<script type="text/javascript"> 1052 1053 var template = "search"; 1054 var customer_id = ""; 1055 var product_id = ""; 1056 var shopName = "v80rnh-af.myshopify.com"; 1057 var defaultvariantId = ""; //get default variant id when page load 1058 window.mcproductresponse = {}; 1059 1060 function cartSubmitAndCheckout(formElement) { 1061 var params = formElement.serializeArray(); 1062 $.ajax({ 1063 url: "/cart", 1064 type: "post", 1065 data: params, 1066 success: function (res) { 1067 //window.location.replace('/checkout'); 1068 1069 window.location.replace('/checkout'); 1070 1071 }, 1072 error: function (err) { 1073 console.error(err.responseText); 1074 } 1075 }); 1076 } 1077 1078 function checkLimitOne(e, click = false, trigger = null) { 1079 e.customer_id = customer_id; 1080 const marketElem = document.querySelector("#kor-market-config"); 1081 const marketData = JSON.parse(marketElem?.textContent?.trim() || "{}"); 1082 e.config = { 1083 locale: Shopify?.locale, 1084 currency: Shopify?.currency, 1085 country: Shopify?.country, 1086 market: marketData 1087 }; 1088 1089 $.ajax({ 1090 type: "POST", 1091 url: "/a/cart-update", 1092 dataType: "json", 1093 data: e, 1094 success: function (e) { 1095 console.log("e..."); 1096 console.log(e); 1097 if (1 == e.error) { 1098 var t = "<ul>"; 1099 $.each(e.messages, function (e, n) { 1100 t += "<li>" + n + "</li>" 1101 }), t += "</ul>", $("#purchase_limit_messages").html(t), document.getElementById("myModal").style.display = "block" 1102 $(".additional-checkout-buttons, .additional_checkout_buttons, .dynamic-checkout__content").addClass("mc-disabled"); 1103 } else if (click) { 1104 //window.location.replace('/checkout'); 1105 1106 window.location.replace('/checkout'); 1107 1108 } 1109 else { 1110 // $(".additional-checkout-buttons").removeClass("mc-disabled"); 1111 $(".additional-checkout-buttons,.additional_checkout_buttons, .dynamic-checkout__content").removeClass("mc-disabled"); 1112 } 1113 document.getElementById("mc-loader").style.display = "none" 1114 } 1115 }); 1116 } 1117 1118 function myJQueryCode() { 1119 jqueryCode(); 1120 if (template == 'login') { 1121 $(document).ready(function () { 1122 $("input[name='checkout_url']").attr('value', '/cart'); 1123 }); 1124 } 1125 1126 var modal = document.getElementById("myModal"), 1127 span = document.getElementsByClassName("close-custom")[0]; 1128 1129 function checkLimit(e, click = false) { 1130 1131 e.customer_id = customer_id; 1132 const marketElem = document.querySelector("#kor-market-config"); 1133 const marketData = JSON.parse(marketElem?.textContent?.trim() || "{}"); 1134 e.config = { 1135 locale: Shopify?.locale, 1136 currency: Shopify?.currency, 1137 country: Shopify?.country, 1138 market: marketData 1139 }; 1140 1141 $.ajax({ 1142 type: "POST", 1143 url: "/a/cart-update", 1144 dataType: "json", 1145 data: e, 1146 success: function (e) { 1147 console.log("e..k."); 1148 console.log(e); 1149 let cartUpdateRes = e; 1150 var purchaseCartLimitMessages = document.getElementById('modelDesignId'); 1151 if (purchaseCartLimitMessages && cartUpdateRes?.modelDesign) { 1152 purchaseCartLimitMessages.innerHTML = cartUpdateRes.modelDesign; 1153 } 1154 if (1 == e.error) { 1155 var t = "<ul>"; 1156 $.each(e.messages, function (e, n) { 1157 t += "<li>" + n + "</li>" 1158 }), t += "</ul>", $("#purchase_limit_messages").html(t), document.getElementById("myModal").style.display = "block" 1159 $(".additional-checkout-buttons, .dynamic-checkout__content").addClass("mc-disabled"); 1160 } else if (click) { 1161 // window.location.replace('/checkout'); 1162 let submitFormEventShop = ["pro-image-sports-at-the-mall-of-america.myshopify.com", "distell-staff-sales.myshopify.com", "trevocorp.myshopify.com"]; 1163 if (submitFormEventShop.includes(Shopify.shop)) { 1164 if (shopName == "distell-staff-sales.myshopify.com") { 1165 if (document.querySelector("#cart").reportValidity()) { 1166 let formElement = 'form[action="/cart"]'; 1167 cartSubmitAndCheckout($(formElement)); 1168 } 1169 } else { 1170 let formElement = 'form[action="/cart"]'; 1171 cartSubmitAndCheckout($(formElement)); 1172 } 1173 1174 } else { 1175 if (typeof preventDirectCheckout !== "undefined" && !preventDirectCheckout.includes(Shopify.shop)) { 1176 //window.location.replace('/checkout'); 1177 1178 window.location.replace('/checkout'); 1179 1180 } 1181 } 1182 } 1183 document.getElementById("mc-loader").style.display = "none" 1184 } 1185 }); 1186 } 1187 1188 document.getElementsByClassName("close-custom")[0].addEventListener("click", function () { 1189 document.getElementById("myModal").style.display = "none"; 1190 }); 1191 1192 if (Shopify.shop == 'nghia-nippers-corporation.myshopify.com') { 1193 $(document).ready(function () { 1194 $("a[href='/cart']").click(() => { 1195 jQuery.getJSON("/cart.js", function (cartItems) { 1196 checkLimitOne(cartItems); 1197 }); 1198 }); 1199 }); 1200 } 1201 1202 if (template == 'product') { 1203 var mcPlusName; 1204 var mcMinusName; 1205 var mcQtyInput; 1206 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
1206='-']", '[data-increase-qty]', '.t4s-quantity-selector is--plus', "button[aria-label='increment']", ".qty-adjuster__up", "button[aria-label='Add']"]; 1207 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']"]; 1208 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']"]; 1209 1210 // jQuery.getJSON("/cart.js", function (cartItems) { 1211 // productLimit(product_id, cartItems); 1212 // }); 1213 mcKorSetProductLimit(); 1214 const intMCval = setInterval(() => { 1215 if(typeof updateMcCartQtyFromCart == "function") { 1216 updateMcCartQtyFromCart(); 1217 clearInterval(intMCval); 1218 } 1219 }, 1000); 1220 1221 setTimeout(() => { 1222 clearInterval(intMCval); 1223 }, 3000); 1224 1225 mcPlusSelector.forEach((plus) => { 1226 if ($(document).find(plus).length > 0) { 1227 mcPlusName = $(plus); 1228 } 1229 }) 1230 1231 mcMinusSelector.forEach((minus) => { 1232 if ($(document).find(minus).length > 0) { 1233 mcMinusName = $(minus); 1234 } 1235 }) 1236 1237 window.mcQtyInputSelector.forEach((input) => { 1238 if ($(document).find(input).length > 0) { 1239 mcQtyInput = $(input); 1240 } 1241 }) 1242 1243 if (typeof mcKorAppSettings != "undefined" && (mcKorAppSettings?.pPage?.inputQty && mcKorAppSettings?.pPage?.inputQty != "")) { 1244 jQuery(document).on("change", mcKorAppSettings?.pPage?.inputQty, function (e) { 1245 e.preventDefault(); 1246 e.stopImmediatePropagation(); 1247 limitOnProductSuccess(); 1248 }); 1249 } else { 1250 jQuery(document).on("change", mcQtyInput, function (e) { 1251 e.preventDefault(); 1252 e.stopImmediatePropagation(); 1253 limitOnProductSuccess(); 1254 }); 1255 } 1256 // For shops 1257 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"]; 1258 if (shops.includes(shopName)) { 1259 if (typeof mcKorAppSettings != "undefined" && (mcKorAppSettings?.pPage?.plusBtn && mcKorAppSettings?.pPage?.plusBtn != "")) { 1260 jQuery(document).on("click", mcKorAppSettings?.pPage?.plusBtn, function (e) { 1261 limitOnProductSuccess(); 1262 }); 1263 } else { 1264 jQuery(document).on("click", mcPlusName, function (e) { 1265 limitOnProductSuccess(); 1266 }); 1267 } 1268 if (typeof mcKorAppSettings != "undefined" && (mcKorAppSettings?.pPage?.minusBtn && mcKorAppSettings?.pPage?.minusBtn != "")) { 1269 jQuery(document).on("click", mcKorAppSettings?.pPage?.minusBtn, function (e) { 1270 limitOnProductSuccess(); 1271 }); 1272 } else { 1273 jQuery(document).on("click", mcMinusName, function (e) { 1274 limitOnProductSuccess(); 1275 }); 1276 } 1277 } 1278 1279 $(span).click(function (e) { 1280 modal.style.display = "none"; 1281 e.preventDefault(); 1282 }); 1283 } 1284 1285 if (template == 'cart') { 1286 1287 jQuery.getJSON("/cart.js", function (e) { 1288 checkLimit(e) 1289 }), span.onclick = function () { 1290 modal.style.display = "none" 1291 }, window.onclick = function (e) { 1292 e.target == modal && (modal.style.display = "none") 1293 }; 1294 jQuery(document).on("click", span, function (e) { 1295 modal.style.display = "none"; 1296 }); 1297 } 1298 1299 jQuery(document).on("click", "button[name='checkout']", function (e, options) { 1300 if (!options) { 1301 document.getElementById("mc-loader").style.display = "block"; 1302 e.preventDefault(); 1303 e.stopImmediatePropagation(); 1304 jQuery.getJSON("/cart.js", function (cartItems) { 1305 checkLimit(cartItems, true); 1306 }); 1307 } 1308 }); 1309 1310 jQuery(document).on("click", "input[name='checkout']", function (e, options) { 1311 if (!options) { 1312 document.getElementById("mc-loader").style.display = "block"; 1313 e.preventDefault(); 1314 e.stopImmediatePropagation(); 1315 jQuery.getJSON("/cart.js", function (cartItems) { 1316 checkLimit(cartItems, true); 1317 }); 1318 } 1319 }); 1320 1321 // jQuery(document).on("click", span, function (e) { 1322 // modal.style.display = "none"; 1323 // }); 1324 1325 jQuery(document).on("click", "a[href='/checkout']", function (e) { 1326 document.getElementById("mc-loader").style.display = "block"; 1327 e.preventDefault(); 1328 e.stopImmediatePropagation(); 1329 jQuery.getJSON("/cart.js", function (cartItems) { 1330 checkLimit(cartItems, true); 1331 }); 1332 }); 1333 1334 jQuery(document).on("click", "input[name='checkouts']", function (e) { 1335 document.getElementById("mc-loader").style.display = "block"; 1336 e.preventDefault(); 1337 e.stopImmediatePropagation(); 1338 jQuery.getJSON("/cart.js", function (cartItems) { 1339 checkLimit(cartItems, true); 1340 }); 1341 }); 1342 1343 1344 if (template == 'product') { 1345 if (shopName == 'shop-hamples.myshopify.com') { 1346 $(document).ready(function () { 1347 var className = $(".btn-addtocart"); 1348 var t = className.clone(); 1349 t.removeClass("addtocart-js").attr("type", "button").attr('data-mc', "add-to-cart").css({ 1350 "background": "#a24e4e", "font-family": "'Sen-Bold', sans-serif", "border": "none", 1351 "color": "#ffffff", "font-size": "14px", "line-height": "1.0", "font-weight": "400", "letter-spacing": "0.05em", "position": "relative", 1352 "outline": "none", "padding": "6px 31px 4px", "display": "inline-flex", "justify-content": "center", "align-items": "center", "text-align": "center", 1353 }); 1354 className.after(t); 1355 className.hide(); 1356 t.on("click", () => { 1357 CheckOnAddToCart().then(res => { 1358 if (res.msg != '') { 1359 showMessage(res.msg); 1360 } else { 1361 className.trigger("click", { eventTrigger: true }); 1362 updateNumberOfProductLimit(res.qty); 1363 } 1364 }); 1365 }); 1366 1367 var buttonName = $(".stickyaddtocart"); 1368 var clone = buttonName.clone(); 1369 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", }); 1370 buttonName.after(clone); 1371 buttonName.hide(); 1372 clone.on("click", () => { 1373 CheckOnAddToCart().then(res => { 1374 if (res.msg != '') { 1375 showMessage(res.msg); 1376 } else { 1377 buttonName.trigger("click", { eventTrigger: true }); 1378 updateNumberOfProductLimit(res.qty); 1379 } 1380 }); 1381 }); 1382 }); 1383 } 1384 } 1385 1386 1387 if (shopName == '0861banner.myshopify.com') { 1388 $(document).ready(function () { 1389 var clone = $('#add-to-cart').clone(); 1390 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'); 1391 $('#add-to-cart').after(clone); 1392 $('#add-to-cart').hide(); 1393 clone.on("click", () => { 1394 CheckOnAddToCart().then(res => { 1395 if (res.msg != '') { 1396 showMessage(res.msg); 1397 } else { 1398 $('#add-to-cart').trigger("click", { eventTrigger: true }); 1399 updateNumberOfProductLimit(res.qty); 1400 } 1401 }); 1402 }); 1403 }); 1404 } 1405 1406 if (shopName == 'imprensa-nacional-casa-da-moeda-test.mysh
1406opify.com') { 1407 $(document).ready(function () { 1408 var clone = $('.single_add_to_cart_button').clone(); 1409 var clone1 = clone.clone(); 1410 clone1.attr("type", "button").attr('data-mc', "add-to-cart"); 1411 clone.after(clone1); 1412 clone.hide(); 1413 clone1.on("click", () => { 1414 CheckOnAddToCart().then(res => { 1415 if (res.msg != '') { 1416 showMessage(res.msg); 1417 } else { 1418 $('.single_add_to_cart_button').trigger("click", { eventTrigger: true }); 1419 updateNumberOfProductLimit(res.qty); 1420 } 1421 }); 1422 }); 1423 }); 1424 } 1425 1426 } 1427 1428 function productLimit(e, cartItems) { 1429 const config = { 1430 locale: Shopify?.locale, 1431 currency: Shopify?.currency, 1432 country: Shopify?.country, 1433 }; 1434 1435 $.ajax({ 1436 type: "POST", 1437 url: "/a/cart-update?page=product", 1438 dataType: "json", 1439 data: { product_id: e, cartItems: cartItems, config }, 1440 success: function (e) { 1441 console.log("e..l."); 1442 console.log(e); 1443 window.mcproductresponse = e; 1444 if (window.mcproductresponse?.data?.modelDesign) { 1445 var purchaseLimitMessages = document.getElementById('modelDesignId'); 1446 if (purchaseLimitMessages) { 1447 purchaseLimitMessages.innerHTML = window.mcproductresponse?.data?.modelDesign; 1448 } 1449 } 1450 limitOnProductSuccess(true); 1451 } 1452 }); 1453 } 1454 1455 function ifCheckoutNotWorking(e) { 1456 document.getElementById("mc-loader").style.display = "block"; 1457 e.preventDefault(); 1458 e.stopImmediatePropagation(); 1459 jQuery.getJSON("/cart.js", function (cartItems) { 1460 checkLimitOne(cartItems, true); 1461 }); 1462 } 1463 1464 if (typeof jQuery == 'undefined') { 1465 var headTag = document.getElementsByTagName("head")[0]; 1466 var jqTag = document.createElement('script'); 1467 jqTag.type = 'text/javascript'; 1468 jqTag.src = 'https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js'; 1469 jqTag.onload = myJQueryCode; 1470 headTag.appendChild(jqTag); 1471 } else { 1472 myJQueryCode(); 1473 } 1474 </script>
1474 1475</div><!-- END app snippet --> 1476 1477<!-- END app block --><!-- BEGIN app block: shopify://apps/judge-me-reviews/blocks/judgeme_core/61ccd3b1-a9f2-4160-9fe9-4fec8413e5d8 --><!-- Start of Judge.me Core --> 1478 1479 1480 1481 1482 1483 1484 1485<link rel="dns-prefetch" href="https://cdn.judge.me"> 1486<link rel="dns-prefetch" href="https://cdn1.judge.me"> 1487<link rel="dns-prefetch" href="https://api.judge.me"> 1488
1489<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
1489wertungen 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
1489h 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
1489itle":"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
1489sen 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
1489wertung 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
1489wertung 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_
1489number_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>
1489 <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 )} 1490</style> <style class='jdgm-settings-style'></style> 1491 1492 1493 1494 1495 <style class='jdgm-miracle-styles'> 1496 @-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
1496/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} 1497 1498</style> 1499 1500 1501 1502 1503 1504 1505 1506 1507
1508<script data-cfasync='false' class='jdgm-script'> 1509!function(e){window.jdgm=window.jdgm||{}; 1510/* INF-1976 */ 1511var _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;}(); 1512if(_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;} 1513jdgm.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/", 1514jdgm.docReady=function(d){(e.attachEvent?"complete"===e.readyState:"loading"!==e.readyState)? 1515setTimeout(d,0):e.addEventListener("DOMContentLoaded",d)},jdgm.loadCSS=function(d,t,o,a){ 1516!o&&jdgm.loadCSS.requestedUrls.indexOf(d)>=0||(jdgm.loadCSS.requestedUrls.push(d), 1517(a=e.createElement("link")).rel="stylesheet",a.class="jdgm-stylesheet",a.media="nope!", 1518a.href=d,a.onload=function(){this.media="all",t&&setTimeout(t)},e.body.appendChild(a))}, 1519jdgm.loadCSS.requestedUrls=[],jdgm.loadJS=function(e,d){var t=new XMLHttpRequest; 1520t.onreadystatechange=function(){4===t.readyState&&t.status>=200&&t.status<300&&(Function(t.response)(),d&&d(t.response))}, 1521t.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( 1522".jdgm-widget, .jdgm-all-reviews-page").length>0)&&(jdgmSettings.widget_load_with_code_splitting? 1523parseFloat(jdgmSettings.widget_version)>=3?jdgm.loadCSS(jdgm.CDN_BASE_URL+"widget_v3_base.css"): 1524jdgm.loadCSS(jdgm.CDN_BASE_URL+"widget_base.css"):jdgm.loadCSS(jdgm.CDN_BASE_URL+"shopify_v2.css") 1525)}))}(document); 1526</script>
1526 1527<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> 1528 1529<!-- BEGIN app snippet: theme_fix_tags -->
1529<script> 1530 (function() { 1531 var jdgmThemeFixes = null; 1532 if (!jdgmThemeFixes) return; 1533 1534 // "All themes" fix: CSS and JS applied on every theme. CSS is injected 1535 // before the per-theme fix so the theme-specific CSS wins the cascade. 1536 // HTML is never applied globally (too risky). 1537 var allThemesFix = jdgmThemeFixes['all']; 1538 if (allThemesFix && allThemesFix.css) { 1539 var allStyleTag = document.createElement('style'); 1540 allStyleTag.classList.add('jdgm-theme-fix-style-all'); 1541 allStyleTag.innerHTML = allThemesFix.css; 1542 document.head.append(allStyleTag); 1543 }; 1544 1545 if (allThemesFix && allThemesFix.js) { 1546 var allScriptTag = document.createElement('script'); 1547 allScriptTag.classList.add('jdgm-theme-fix-script-all'); 1548 allScriptTag.innerHTML = allThemesFix.js; 1549 document.head.append(allScriptTag); 1550 }; 1551 1552 var thisThemeFix = jdgmThemeFixes[Shopify.theme.id]; 1553 if (!thisThemeFix) return; 1554 1555 if (thisThemeFix.html) { 1556 document.addEventListener("DOMContentLoaded", function() { 1557 var htmlDiv = document.createElement('div'); 1558 htmlDiv.classList.add('jdgm-theme-fix-html'); 1559 htmlDiv.innerHTML = thisThemeFix.html; 1560 document.body.append(htmlDiv); 1561 }); 1562 }; 1563 1564 if (thisThemeFix.css) { 1565 var styleTag = document.createElement('style'); 1566 styleTag.classList.add('jdgm-theme-fix-style'); 1567 styleTag.innerHTML = thisThemeFix.css; 1568 document.head.append(styleTag); 1569 }; 1570 1571 if (thisThemeFix.js) { 1572 var scriptTag = document.createElement('script'); 1573 scriptTag.classList.add('jdgm-theme-fix-script'); 1574 scriptTag.innerHTML = thisThemeFix.js; 1575 document.head.append(scriptTag); 1576 }; 1577 })(); 1578</script>
1578 1579<!-- END app snippet --> 1580<!-- End of Judge.me Core --> 1581 1582 1583 1584<!-- END app block --><!-- BEGIN app block: shopify://apps/amazon-reviews/blocks/product-rating-snippet-embed/88ab28f3-a438-4eb3-a83e-f1a9c62c5069 --> 1585 1586 1587 1588<!-- END app block --><!-- BEGIN app block: shopify://apps/adcell-tracking-remarketing/blocks/theme_extension/578397e0-3e42-4c27-add7-dfc15023b09b -->
1588<script> 1589 (function () { 1590 var PROXY = '/apps/adcell/bid'; 1591 1592 function readCookie(name) { 1593 var m = document.cookie.match('(?:^|; )' + name + '=([^;]*)'); 1594 return m ? decodeURIComponent(m[1]) : null; 1595 } 1596 function writeCookie(name, value, maxAge) { 1597 document.cookie = name + '=' + encodeURIComponent(value) + '; Path=/; Max-Age=' + maxAge + '; Secure; SameSite=Lax'; 1598 } 1599 function lsGet(name) { try { return window.localStorage.getItem(name); } catch (e) { return null; } } 1600 function lsSet(name, value) { try { window.localStorage.setItem(name, value); } catch (e) {} } 1601 function fetchCart() { 1602 return fetch('/cart.js', { credentials: 'same-origin' }) 1603 .then(function (r) { return r.json(); }) 1604 .catch(function () { return null; }); 1605 } 1606 function stampCart(cart, bid) { 1607 var token = (cart && cart.token) ? cart.token : ''; 1608 if (!bid || !token) { return; } 1609 if (((cart && cart.attributes) || {})['_adcell_bid'] === bid) { return; } 1610 var guard = token + ':' + bid; 1611 if (sessionStorage.getItem('adcellCartStamped') === guard) { return; } 1612 fetch('/cart/update.js', { 1613 method: 'POST', 1614 credentials: 'same-origin', 1615 headers: { 'Content-Type': 'application/json' }, 1616 body: JSON.stringify({ attributes: { _adcell_bid: bid } }) 1617 }).then(function () { 1618 sessionStorage.setItem('adcellCartStamped', guard); 1619 }).catch(function () {}); 1620 } 1621 1622 var syTries = 0; 1623 function syncServer(bid, vc) { 1624 fetchCart().then(function (cart) { 1625 var token = (cart && cart.token) ? cart.token : ''; 1626 var sy = readCookie('_shopify_y') || ''; 1627 stampCart(cart, bid); 1628 if (!sy && syTries < 2) { 1629 syTries++; 1630 setTimeout(function () { 1631 if (readCookie('_shopify_y')) { syncServer(bid, vc); } 1632 }, 2000); 1633 } 1634 var guard = token + ':' + (bid || '') + ':' + (vc || '') + ':' + sy; 1635 if (sessionStorage.getItem('adcellBidSynced') === guard) { return; } 1636 var body = ''; 1637 if (bid) { body += 'bid=' + encodeURIComponent(bid); } 1638 if (vc) { body += (body ? '&' : '') + 'vc=' + encodeURIComponent(vc); } 1639 if (token) { body += (body ? '&' : '') + 'cart_token=' + encodeURIComponent(token); } 1640 if (sy) { body += (body ? '&' : '') + 'sy=' + encodeURIComponent(sy); } 1641 if (!body) { return; } 1642 fetch(PROXY, { 1643 method: 'POST', 1644 credentials: 'same-origin', 1645 headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, 1646 body: body 1647 }).then(function () { 1648 sessionStorage.setItem('adcellBidSynced', guard); 1649 }).catch(function () {}); 1650 }); 1651 } 1652 1653 var urlBid = new URLSearchParams(window.location.search).get('bid'); 1654 var jsBid = readCookie('adcell'); 1655 var vc = readCookie('adcell_vc'); 1656 1657 if (!urlBid && !jsBid) { 1658 jsBid = lsGet('adcell'); 1659 if (jsBid) { writeCookie('adcell', jsBid, 90 * 24 * 3600); } 1660 } 1661 if (urlBid || jsBid) { lsSet('adcell', urlBid || jsBid); } 1662 1663 if (urlBid || jsBid) { 1664 syncServer(urlBid || jsBid, vc); 1665 } else { 1666 fetchCart().then(function (cart) { 1667 var sy = readCookie('_shopify_y'); 1668 var token = cart && cart.token; 1669 if (!sy && !token) { 1670 if (vc) { syncServer(null, vc); } 1671 return; 1672 } 1673 var qs = []; 1674 if (sy) { qs.push('sy=' + encodeURIComponent(sy)); } 1675 if (token) { qs.push('cart_token=' + encodeURIComponent(token)); } 1676 fetch(PROXY + '?' + qs.join('&'), { credentials: 'same-origin' }) 1677 .then(function (r) { return r.json(); }) 1678 .then(function (data) {
1679 var bid = (data && data.bid) || null; 1680 var view = vc || (data && data.vc) || null; 1681 if (bid) { writeCookie('adcell', bid, 90 * 24 * 3600); lsSet('adcell', bid); } 1682 if (!vc && data && data.vc) { writeCookie('adcell_vc', data.vc, 24 * 3600); } 1683 if (!bid && !view) { return; } 1684 syncServer(bid, view); 1685 }) 1686 .catch(function () { 1687 if (vc) { syncServer(null, vc); } 1688 }); 1689 }); 1690 } 1691 })(); 1692</script>
1692 1693
1694<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 1694
1694
1695<script> 1696 var script = document.querySelector("#trad-js"); 1697 script.addEventListener('load', function() { 1698 Adcell.Tracking.track(); 1699 }); 1700</script>
1700 1701 1702<!-- 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 -->
1702<script type="text/javascript"> 1703 1704 if (typeof window.formbuilder_customer != "object") { 1705 window.formbuilder_customer = {} 1706 } 1707 1708 1709 1710 window.hulkFormBuilder = { 1711 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
1711003cp\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
1711003cp\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
1711ing 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
1711003cp\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
1711003cp\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}}, 1712 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}}, 1713 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
1713d_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"}}}, 1714 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"]}}, 1715 shop: null, 1716 shop_id: null, 1717 plan_features: null, 1718 validateDoubleQuotes: false, 1719 assets: { 1720 searchableDropdown: "https://cdn.shopify.com/extensions/01a08a53-1431-71a3-8d75-dd04d3c69aa4/form-builder-by-hulkapps-74/assets/searchable-dropdown.js", 1721 extraFunctions: "https://cdn.shopify.com/extensions/01a08a53-1431-71a3-8d75-dd04d3c69aa4/form-builder-by-hulkapps-74/assets/extra-functions.js", 1722 extraStyles: "https://cdn.shopify.com/extensions/01a08a53-1431-71a3-8d75-dd04d3c69aa4/form-builder-by-hulkapps-74/assets/extra-styles.css", 1723 bootstrapStyles: "https://cdn.shopify.com/extensions/01a08a53-1431-71a3-8d75-dd04d3c69aa4/form-builder-by-hulkapps-74/assets/theme-app-extension-bootstrap.css", 1724 }, 1725 translations: { 1726 htmlTagNotAllowed: "HTML Tags are not allowed", 1727 sqlQueryNotAllowed: "SQL Queries are not allowed", 1728 doubleQuoteNotAllowed: "Double quotes are not allowed", 1729 1730 maxTextFieldsReached: "You have added the maximum number of text fields.", 1731 1732 1733 1734 zerobounceApiErrorMsg: "We couldn\u0026#39;t verify your email due to a technical issue. Please try again later.", 1735 } 1736 1737 } 1738 1739 1740 1741 window.FbThemeAppExtSettingsHash = {} 1742 1743</script>
1743<!-- END app snippet --><!-- END app block --><!-- BEGIN app block: shopify://apps/ta-labels-badges/blocks/bss-pl-config-data/91bfe765-b604-49a1-805e-3599fa600b24 -->
1743<script 1744 id='bss-pl-config-data' 1745 data-nosnippet 1746> 1747 let TAE_StoreId = "66168"; 1748 if (typeof BSS_PL == 'undefined' || TAE_StoreId !== "") { 1749 var BSS_PL = {}; 1750 BSS_PL.storeId = 66168; 1751 BSS_PL.currentPlan = "free"; 1752 BSS_PL.apiServerProduction = "https://product-labels.tech-arms.io"; 1753 BSS_PL.publicAccessToken = "69fb7e281c40886d881224d0ab04299c"; 1754 BSS_PL.customerTags = "null"; 1755 BSS_PL.customerId = "null"; 1756 BSS_PL.storeIdCustomOld = 10678; 1757 BSS_PL.storeIdOldWIthPriority = 12200; 1758 BSS_PL.storeIdOptimizeAppendLabel = 59637 1759 BSS_PL.optimizeCodeIds = null; 1760 BSS_PL.extendedFeatureIds = null; 1761 BSS_PL.watermarkRemoved = null; 1762 BSS_PL.watermarkGoliveConfigId = 747; 1763 BSS_PL.watermarkUrl = "https://cdn.shopify.com/extensions/01a0fb6d-171d-712b-8764-40c957e243dd/version_06d0a5c3-2026-10-02_14h03m/assets/bss-pl-watermark.png"; 1764 BSS_PL.integration = {"laiReview":{"status":0,"config":[]}} || {}; 1765 BSS_PL.settingsData = {} || {}; 1766 BSS_PL.configProductMetafields = [] || []; 1767 BSS_PL.configVariantMetafields = [] || []; 1768 1769 BSS_PL.configData = [].concat(); 1770 1771 1772 BSS_PL.configDataBanner = [].concat(); 1773 1774 1775 BSS_PL.configDataPopup = [].concat(); 1776 1777 1778 BSS_PL.configDataLabelGroup = [].concat(); 1779 1780 1781 BSS_PL.collectionID = ``; 1782 BSS_PL.collectionHandle = ``; 1783 BSS_PL.collectionTitle = ``; 1784 1785 1786 BSS_PL.conditionConfigData = [].concat(); 1787 } 1788</script>
1788 1789 1790 1791 1792
1792<script id='fixBugForStore66168' data-nosnippet> 1793 1794function bssFixSupportProductParent($, page, parents, itemHandle) { 1795 return parents.filter(function () { 1796 return !( 1797 // $(this).is(".card-grid .card .product-card__media") || 1798 $(this).is(".product__thumbnail") || 1799 $(this).is("figure.media.media--transparent") || 1800 $(this).is(".product-sticky-form__variant .media") || 1801 $(this).is(".dynamic-image-wrapper picture") || 1802 $(this).is(".rte") || 1803 $(this).is(".rte .brand-logo-snippet > a") || 1804 $(this).is(".product-form-wrapper ~ .flex.justify-between.items-center .items-center") || 1805 $(this).is(".footer__logo > a") || 1806 $(this).is("cart-drawer .horizontal-product__media") 1807 ); 1808 }); 1809} 1810 1811function bssFixSupportAppendHtmlLabel($, BSS_PL, parent, page, htmlLabel) { 1812 let appended = false; 1813 if($(parent).is(".product__media-container .product__media")){ 1814 $(parent).css("position", "relative").append(htmlLabel); 1815 appended = true; 1816 } 1817 1818 if($(parent).is(".snize-product")){ 1819 $(parent).find(".snize-thumbnail").css("position", "relative").append(htmlLabel); 1820 appended = true; 1821 } 1822 if ($(parent).is(".horizontal-products .horizontal-product")) { 1823 $(parent).find(".horizontal-product__media").append(htmlLabel); 1824 appended = true; 1825 } 1826 1827 if ($(parent).is(".product-card__details .horizontal-product")) { 1828 $(parent).find(".horizontal-product__media").append(htmlLabel); 1829 appended = true; 1830 } 1831 return appended; 1832} 1833 1834function bssFixSupportElementImage($, img, parent, page) { 1835 // Write code here 1836 if($(parent).is(".product__media-container .product__media")){ 1837 img = $(parent); 1838 } 1839 1840 if($(parent).is(".snize-product")){ 1841 img = $(parent).find(".snize-thumbnail img"); 1842 } 1843 1844 if ($(parent).is(".horizontal-products .horizontal-product")) { 1845 img = $(parent).find(".horizontal-product__media"); 1846 } 1847 1848 return img; 1849} 1850 1851function bssFixSupportReInitLabel($, BSS_PL, firstLoadProduct, checkPageFly, initCollectionLabel, initBadge) { 1852 // Write code here 1853 const input = document.querySelector("search-drawer .search__form .search__field > input"); 1854 let idTimeOut = null; 1855 1856 function observeSearchResults() { 1857 const target = document.querySelector("#snize-instant-search-results .snize-ac-results-singlecolumn-list"); 1858 // if (!target) return console.warn("Chưa thấy danh sách kết quả."); 1859 1860 const observer = new MutationObserver(() => { 1861 const preOrderItem = target.querySelector(".snize-product"); 1862 // console.log("preOrderItem", preOrderItem) 1863 if (preOrderItem) { 1864 if (idTimeOut) clearTimeout(idTimeOut); 1865 idTimeOut = setTimeout(() => { 1866 BSS_PL.firstLoad = true; 1867 BSS_PL.init(); 1868 }, 888); 1869 } 1870 }); 1871 1872 observer.observe(target, { 1873 childList: true, 1874 subtree: true, 1875 }); 1876 } 1877 1878 if (input) { 1879 input.addEventListener("input", (e) => { 1880 observeSearchResults(); 1881 }); 1882 } else { 1883 // console.warn("Không tìm thấy input."); 1884 } 1885 1886 $(document).on('click', '.cart-drawer-button', function() { 1887 let resizeTimeout; 1888 clearTimeout(resizeTimeout); 1889 resizeTimeout = setTimeout(() => { 1890 document.querySelectorAll('.horizontal-products .bss_pl_img').forEach(el => el.remove()); 1891 document.querySelectorAll('.horizontal-products [data-bss-pl="active"]').forEach(el => { 1892 el.setAttribute('data-bss-pl', 'none'); 1893 }); 1894 if (typeof BSS_PL !== 'undefined') { 1895 BSS_PL.firstLoad = true; 1896 BSS_PL.init(); 1897 } 1898 }, 100); 1899 }); 1900 1901 1902 return { firstLoadProduct, checkPageFly }; 1903} 1904 1905function bssFixSupportTurnOffAutoAppendLabel() { 1906 return false; 1907} 1908 1909 </script>
1909 1910 1911 1912<style> 1913 1914 1915 1916</style> 1917
1918<script data-nosnippet> 1919 function bssLoadScripts(src, callback, isDefer = false) { 1920 const scriptTag = document.createElement('script'); 1921 document.head.appendChild(scriptTag); 1922 scriptTag.src = src; 1923 if (isDefer) { 1924 scriptTag.defer = true; 1925 } else { 1926 scriptTag.async = true; 1927 } 1928 if (callback) { 1929 scriptTag.addEventListener('load', function () { 1930 callback(); 1931 }); 1932 } 1933 } 1934 const scriptUrls = [ 1935 "https://cdn.shopify.com/extensions/01a0fb6d-171d-712b-8764-40c957e243dd/version_06d0a5c3-2026-10-02_14h03m/assets/bss-pl-init-helper.js", 1936 "https://cdn.shopify.com/extensions/01a0fb6d-171d-712b-8764-40c957e243dd/version_06d0a5c3-2026-10-02_14h03m/assets/bss-pl-init-config-run-scripts.js", 1937 ]; 1938 Promise.all(scriptUrls.map((script) => new Promise((resolve) => bssLoadScripts(script, resolve)))).then((res) => { 1939 console.log('BSS scripts loaded'); 1940 window.bssScriptsLoaded = true; 1941 }); 1942 1943 function bssInitScripts() { 1944 if (BSS_PL.configData.length) { 1945 const enabledFeature = [ 1946 { 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" }, 1947 { 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" }, 1948 { 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" }, 1949 { 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" }, 1950 { 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" }, 1951 { 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" }, 1952 { 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" }, 1953 { 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" } 1954 ] 1955 .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)) 1956 .map(({ script }) => script); 1957 1958 enabledFeature.forEach((src) => bssLoadScripts(src)); 1959 1960 if (enabledFeature.length) { 1961 const src = "https://cdn.shopify.com/extensions/01a0fb6d-171d-712b-8764-40c957e243dd/version_06d0a5c3-2026-10-02_14h03m/assets/bss-product-label-js.js"; 1962 bssLoadScripts(src); 1963 } 1964 } 1965 1966 if (BSS_PL.configDataBanner && BSS_PL.configDataBanner.length) { 1967 const src = "https://cdn.shopify.com/extensions/01a0fb6d-171d-712b-8764-40c957e243dd/version_06d0a5c3-2026-10-02_14h03m/assets/bss-product-label-banner.js"; 1968 bssLoadScripts(src); 1969 } 1970 1971 if (BSS_PL.configDataPopup && BSS_PL.configDataPopup.length) { 1972 const src = "https://cdn.shopify.com/extensions/01a0fb6d-171d-712b-8764-40c957e243dd/version_06d0a5c3-2026-10-02_14h03m/assets/bss-product-label-popup.js"; 1973 bssLoadScripts(src); 1974 } 1975 1976 if (window.location.search.includes('bss-pl-custom-selector')) { 1977 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"; 1978 bssLoadScripts(src, null, true); 1979 } 1980 } 1981 bssInitScripts(); 1982</script>
1982 1983 1984 1985<!-- END app block -->
1985<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 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>
vendor: 1 bytes, line 1986
1986
1987<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 1987
1987
1988<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>
1988 1989<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">
1990<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>
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: "search"};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":[],"purchasingCompany":null},},"https://odiporo.de/cdn","5982071ew7ea472e3p69b68784m2150dfea",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"true","themeId":"179096813947","themeStoreId":"2412","themePublished":"true","eventMetadataId":"b47b9558-62d9-420a-9bec-aaa49da488c7","pageType":"searchresults","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\",{}],[\"search_submitted\",{\"searchResult\":{\"query\":\"\",\"productVariants\":[]}}]]"});})();</script>
1996<script> 1997 window.ShopifyAnalytics = window.ShopifyAnalytics || {}; 1998 window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; 1999 window.ShopifyAnalytics.meta.currency = 'EUR'; 2000 var meta = {"products":[],"page":{"pageType":"searchresults","requestId":"8cbd1582-1c2a-4bd0-9c16-74a71321a35f-1791081633"}}; 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":"b47b9558-62d9-420a-9bec-aaa49da488c7"},"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 window.ShopifyAnalytics.lib.track("Performed Search",{"query":null},undefined,undefined,{"shopifyEmitted":true}); 2179 } 2180 }); 2181 2182 window.ShopifyAnalytics.lib.page(null,{"pageType":"searchresults","requestId":"8cbd1582-1c2a-4bd0-9c16-74a71321a35f-1791081633","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="search" 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="9500efa1-8410-440d-8358-49084f39a784" data-expiration="1822639233000"><meta name="shopify-s" content="2de0268a-052c-4f1a-9b7d-0ce2437e5472" data-expiration="1791083433000"><meta name="new-cookie-storage-activated" content="t"> 2208</head> 2209 2210<body class="template-search" 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®ion_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&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&width=260 260w, //odiporo.de/cdn/shop/files/Odiporo.de_Logo_Pantone.jpg?v=1776089538&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&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&width=160 160w, //odiporo.de/cdn/shop/files/Odiporo.de_Logo_Pantone_abc754b7-3558-4575-a94b-e9706704929d.jpg?v=1776089582&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&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&width=260 260w, //odiporo.de/cdn/shop/files/Odiporo.de_Logo_Pantone_invers.png?v=1776255252&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&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&width=160 160w, //odiporo.de/cdn/shop/files/Odiporo.de_Logo_Pantone_invers.png?v=1776255252&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®ion_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">
2532<script src="//odiporo.de/cdn/shop/t/3/assets/cart.js?v=15891569860397040191744817341" defer></script>
2532<cart-drawer id="CartDrawer" class="cart-drawer drawer drawer--end z-35 fixed bottom-0 left-0 h-full w-full pointer-events-none" 2533 role="dialog" 2534 aria-modal="true" 2535 aria-label="Warenkorb" 2536 data-section-id="sections--24796502983035__cart-drawer" 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="CartDrawer" 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 <ul class="drawer__tabs flex gap-10" is="tab-list"> 2544 <li> 2545 <button class="drawer__tab relative" type="button" aria-controls="MiniCart-sections--24796502983035__cart-drawer" aria-expanded="true"> 2546 <span class="drawer__title heading lg:text-3xl text-2xl leading-none tracking-tight">Warenkorb</span> 2547 <cart-count class="count absolute font-medium text-xs lg:text-sm leading-none" aria-label="0 Artikel" hidden>0</cart-count> 2548 </button> 2549 </li></ul> 2550 <button class="button button--secondary button--close drawer__close hidden sm:flex items-center justify-center" type="button" is="hover-button" aria-controls="CartDrawer" aria-expanded="false" aria-label="SchlieÃen"> 2551 <span class="btn-fill" data-fill></span> 2552 <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"> 2553 <path stroke-linecap="round" stroke-linejoin="round" d="M5 15L15 5M5 5L15 15"></path> 2554 </svg></span> 2555 </button> 2556 </gesture-element> 2557 2558 <div class="drawer__content opacity-0 invisible flex flex-col h-full grow shrink"> 2559 <div id="MiniCart-sections--24796502983035__cart-drawer" class="drawer__panel opacity-0 flex flex-col overflow-hidden" open> 2560 <span class="sr-only">Warenkorb</span> 2561 <div class="flex flex-col h-full"><div class="drawer__scrollable relative flex justify-center items-start grow shrink text-center"> 2562 <div class="drawer__empty grid gap-5 md:gap-8"> 2563 <h2 class="drawer__empty-text heading leading-none tracking-tight">Dein Warenkorb ist leer.</h2> 2564 <div class="drawer__empty-message text-sm md:text-base leading-tight rte"><p><strong>odiporo.de: Ihr E-Commerce-Spezialist aus der Region Düsseldorf.</strong></p><p><br/>Wir bringen die neuesten Smart-TVs, Monitor- und Fitness-Trends direkt zu Ihnen nach Hause. </p><p>Starten Sie jetzt und lassen Sie sich von unseren Kollektionen inspirieren:<br/><br/><br/><br/></p></div> 2565 <ul class="drawer__empty-collections grid gap-3"><li> 2566 <a class="flex items-center justify-between" href="/collections/dyon-fernseher-smart-tv"> 2567 <span class="flex items-center gap-3">Alle Fernseher</span><svg class="icon icon-arrow-right icon-sm transform" viewBox="0 0 21 20" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg"> 2568 <path stroke-linecap="round" stroke-linejoin="round" d="M3 10H18M18 10L12.1667 4.16675M18 10L12.1667 15.8334"></path> 2569 </svg></a> 2570 </li><li> 2571 <a class="flex items-center justify-between" href="/collections/odys-monitore-gaming-office-curved-ultra-wide-alle"> 2572 <span class="flex items-center gap-3">Monitore</span><svg class="icon icon-arrow-right icon-sm transform" viewBox="0 0 21 20" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg"> 2573 <path stroke-linecap="round" stroke-linejoin="round" d="M3 10H18M18 10L12.1667 4.16675M18 10L12.1667 15.8334"></path> 2574 </svg></a> 2575 </li><li> 2576 <a class="flex items-center justify-between" href="/collections/fitness"> 2577 <span class="flex items-center gap-3">Fitness</span><svg class="icon icon-arrow-right icon-sm transform" viewBox="0 0 21 20" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg"> 2578 <path stroke-linecap="round" stroke-linejoin="round" d="M3 10H18M18 10L12.1667 4.16675M18 10L12.1667 15.8334"></path> 2579 </svg></a> 2580 </li><li> 2581 <a class="flex items-center justify-between" href="/collections/e-scooter">
2582 <span class="flex items-center gap-3">E-Scooter</span><svg class="icon icon-arrow-right icon-sm transform" viewBox="0 0 21 20" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg"> 2583 <path stroke-linecap="round" stroke-linejoin="round" d="M3 10H18M18 10L12.1667 4.16675M18 10L12.1667 15.8334"></path> 2584 </svg></a> 2585 </li><li> 2586 <a class="flex items-center justify-between" href="/collections/wohnen"> 2587 <span class="flex items-center gap-3">Wohnen</span><svg class="icon icon-arrow-right icon-sm transform" viewBox="0 0 21 20" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg"> 2588 <path stroke-linecap="round" stroke-linejoin="round" d="M3 10H18M18 10L12.1667 4.16675M18 10L12.1667 15.8334"></path> 2589 </svg></a> 2590 </li></ul> 2591 </div> 2592 </div><div class="drawer__scrollable relative flex flex-col gap-9 grow shrink hidden"><cart-items class="block grow" data-section-id="sections--24796502983035__cart-drawer"> 2593 <ul class="horizontal-products grid" role="list"></ul> 2594 </cart-items></div> 2595 <div class="drawer__footer grid w-full hidden"><div class="drawer__footer-top flex"><button type="button" class="flex gap-2d5 grow items-center justify-center" aria-controls="CartNote-sections--24796502983035__cart-drawer" aria-expanded="false"><svg class="icon icon-note icon-lg icon-light shrink-0" viewBox="0 0 25 24" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg"> 2596 <path class="fill" d="M12.9 2H12.1C8.73969 2 7.05953 2 5.77606 2.65396C4.64708 3.2292 3.7292 4.14708 3.15396 5.27606C2.5 6.55953 2.5 8.23969 2.5 11.6V12.4C2.5 15.7603 2.5 17.4405 3.15396 18.7239C3.7292 19.8529 4.64708 20.7708 5.77606 21.346C7.05953 22 8.73969 22 12.1 22H13.5C14.4319 22 14.8978 22 15.2654 21.8478C15.7554 21.6448 16.1448 21.2554 16.3478 20.7654C16.5 20.3978 16.5 19.9319 16.5 19C16.5 18.0681 16.5 17.6021 16.6522 17.2346C16.8552 16.7445 17.2446 16.3552 17.7346 16.1522C18.1022 16 18.5681 16 19.5 16C20.4319 16 20.8978 16 21.2654 15.8477C21.7554 15.6447 22.1448 15.2554 22.3478 14.7653C22.5 14.3978 22.5 13.9319 22.5 13V11.6C22.5 8.23969 22.5 6.55953 21.846 5.27606C21.2708 4.14708 20.3529 3.2292 19.2239 2.65396C17.9405 2 16.2603 2 12.9 2Z"></path> 2597 <path stroke-linecap="round" stroke-linejoin="round" d="M16.5 21.5V19.2C16.5 18.0799 16.5 17.5198 16.718 17.092C16.9097 16.7157 17.2157 16.4097 17.592 16.218C18.0198 16 18.5799 16 19.7 16H22M7.5 7H15.5M7.5 11H13.5M7.5 15H9.5M15.6716 22H12.1C8.73969 22 7.05953 22 5.77606 21.346C4.64708 20.7708 3.7292 19.8529 3.15396 18.7239C2.5 17.4405 2.5 15.7603 2.5 12.4V11.6C2.5 8.23969 2.5 6.55953 3.15396 5.27606C3.7292 4.14708 4.64708 3.2292 5.77606 2.65396C7.05953 2 8.73969 2 12.1 2H12.9C16.2603 2 17.9405 2 19.2239 2.65396C20.3529 3.2292 21.2708 4.14708 21.846 5.27606C22.5 6.55953 22.5 8.23969 22.5 11.6V15.1716C22.5 15.5088 22.5 15.6774 22.4912 15.8399C22.4171 17.2049 21.8791 18.5036 20.9663 19.5212C20.8577 19.6423 20.7385 19.7615 20.5 20V20C20.2615 20.2385 20.1423 20.3577 20.0212 20.4663C19.0036 21.3791 17.7049 21.9171 16.3399 21.9912C16.1774 22 16.0088 22 15.6716 22Z"></path> 2598 </svg><span class="reversed-link text-sm leading-tight">Notiz</span> 2599 </button><modal-element id="CartNote-sections--24796502983035__cart-drawer" class="modal invisible absolute bottom-0 left-0 w-full h-full" role="dialog" hidden> 2600 <overlay-element class="fixed-modal opacity-0 z-1 absolute top-0 left-0 w-full h-full" aria-controls="CartNote-sections--24796502983035__cart-drawer" aria-expanded="false"></overlay-element> 2601 <div class="modal__container flex flex-col z-3 absolute left-0 bottom-0 w-full"> 2602 <div class="modal__header flex items-center justify-between relative"> 2603 <span class="font-medium text-sm md:text-base">Sonderanweisung bestellen</span> 2604 <button type="button" class="close flex items-center justify-center absolute top-0 right-0" is="magnet-button" aria-controls="CartNote-sections--24796502983035__cart-drawer" aria-expanded="false" aria-label="SchlieÃen">
2604<svg class="icon icon-close icon-md" viewBox="0 0 20 20" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg"> 2605 <path stroke-linecap="round" stroke-linejoin="round" d="M5 15L15 5M5 5L15 15"></path> 2606 </svg></button> 2607 </div> 2608 <div class="modal__content flex flex-col overflow-hidden"> 2609 <cart-note class="modal__scrollable grid gap-4"> 2610 <div class="field"> 2611 <textarea name="note" class="textarea is-floating" rows="3" placeholder=" " id="CartNoteForm-sections--24796502983035__cart-drawer"></textarea> 2612 <label class="label is-floating" for="CartNoteForm-sections--24796502983035__cart-drawer">Notiz</label> 2613 </div> 2614 <div class="justify-self-start"> 2615 <button class="button button--primary" type="button" is="hover-button" aria-controls="CartNote-sections--24796502983035__cart-drawer" aria-expanded="false"> 2616 <span class="btn-fill" data-fill></span> 2617 <span class="btn-text">Anwenden</span> 2618 </button> 2619 </div> 2620 </cart-note> 2621 </div> 2622 </div> 2623 </modal-element></div><div class="drawer__footer-bottom grid gap-6"> 2624 <div class="grid gap-4 sm:grid-6"><div class="grid grid-cols-2 gap-4"> 2625 <div class="tax-note text-sm sm:text-base rte">Preis inkl. Steuern und <a href="/policies/shipping-policy">kostenlosem Versand</a></div> 2626 <div class="totals grid place-self-end gap-1"> 2627 <span class="totals__subtotal text-sm sm:text-base">Zwischensumme</span> 2628 <div class="totals__subtotal-value text-lg-2xl font-bold leading-none tracking-tight">â¬0,00 EUR</div> 2629 </div> 2630 </div> 2631 </div><form action="/cart" method="POST" novalidate class="drawer__footer-buttons grid grid-cols-12 gap-4"><button class="button button--primary icon-with-text col-span-6 md:col-span-7" type="submit" name="checkout" is="hover-button"> 2632 <span class="btn-fill" data-fill></span> 2633 <span class="btn-text"><svg class="icon icon-lock icon-sm hidden sm:block" viewBox="0 0 20 20" stroke="currentColor" fill="none" xmlns="http://www.w3.org/2000/svg"> 2634 <path stroke-linecap="round" d="M5.83333 6.66675V5.83341C5.83333 4.74781 5.83333 4.205 5.97218 3.76463C6.26651 2.83114 6.99772 2.09993 7.93122 1.8056C8.37159 1.66675 8.91439 1.66675 10 1.66675V1.66675C11.0856 1.66675 11.6284 1.66675 12.0688 1.8056C13.0023 2.09993 13.7335 2.83114 14.0278 3.76463C14.1667 4.205 14.1667 4.74781 14.1667 5.83341V6.66675M10 11.6667V13.3334M8.33333 18.3334H11.6667C13.3741 18.3334 14.2278 18.3334 14.909 18.077C15.9871 17.6713 16.8379 16.8205 17.2436 15.7424C17.5 15.0612 17.5 14.2075 17.5 12.5001V12.5001C17.5 10.7926 17.5 9.93892 17.2436 9.25775C16.8379 8.17969 15.9871 7.32888 14.909 6.92312C14.2278 6.66675 13.3741 6.66675 11.6667 6.66675H8.33333C6.62589 6.66675 5.77218 6.66675 5.091 6.92312C4.01294 7.32888 3.16213 8.17969 2.75638 9.25775C2.5 9.93892 2.5 10.7926 2.5 12.5001V12.5001C2.5 14.2075 2.5 15.0612 2.75638 15.7424C3.16213 16.8205 4.01294 17.6713 5.091 18.077C5.77218 18.3334 6.62589 18.3334 8.33333 18.3334Z"></path> 2635 </svg>Auschecken</span> 2636 </button><a href="/cart" class="button button--secondary col-span-6 md:col-span-5" is="hover-link" data-no-instant> 2637 <span class="btn-fill" data-fill></span> 2638 <span class="btn-text">Warenkorb ansehen</span> 2639 </a></form></div> 2640 </div> 2641 </div> 2642 </div></div> 2643 </div> 2644 </cart-drawer> 2645<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"><search-drawer id="SearchDrawer" class="search-drawer drawer drawer--end z-35 fixed bottom-0 left-0 h-full w-full pointer-events-none" 2646 role="dialog" 2647 aria-modal="true" 2648 aria-label="Suche" 2649 shopify-design-mode 2650 hidden 2651 >
2652 <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> 2653 <div class="drawer__inner z-10 absolute top-0 flex flex-col w-full h-full overflow-hidden"> 2654 <gesture-element class="drawer__header flex justify-between opacity-0 invisible relative"> 2655 <span class="drawer__title heading lg:text-3xl text-2xl leading-none tracking-tight">Suche</span> 2656 <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"> 2657 <span class="btn-fill" data-fill></span> 2658 <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"> 2659 <path stroke-linecap="round" stroke-linejoin="round" d="M5 15L15 5M5 5L15 15"></path> 2660 </svg></span> 2661 </button> 2662 </gesture-element> 2663 <div class="drawer__content opacity-0 invisible flex flex-col h-full grow shrink"> 2664 <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"> 2665 <input type="hidden" name="options[prefix]" value="last" /> 2666 <label class="sr-only" for="SearchFormInput-sections--24796502983035__search-drawer">Suche</label> 2667 <div class="search__field field flex items-center gap-4 relative"><input 2668 class="input" 2669 type="search" 2670 name="q" 2671 id="SearchFormInput-sections--24796502983035__search-drawer" 2672 placeholder="Durchsuchen Sie unseren Shop" 2673 autocomplete="off" 2674 autocorrect="off" 2675 autocapitalize="off" 2676 spellcheck="off"/></div></form> 2677</div> 2678 </div> 2679 </div> 2680 </search-drawer> 2681</div> 2682<!-- END sections: overlay-group --><div class="page-container" id="PageContainer"> 2683 <main class="main-content relative" id="MainContent" role="main"> 2684 <div id="shopify-section-template--24796501934459__main" class="shopify-section collection-section search-section"><style> 2685 #shopify-section-template--24796501934459__main { 2686 --section-padding-top: 40px; 2687 --section-padding-bottom: 100px; 2688 } 2689</style> 2690 2691<link href="//odiporo.de/cdn/shop/t/3/assets/blog.css?v=75377069634824137381744817342" rel="stylesheet" type="text/css" media="all" /> 2692<link href="//odiporo.de/cdn/shop/t/3/assets/search.css?v=156872746984004058391744817341" rel="stylesheet" type="text/css" media="all" />
2693<script src="//odiporo.de/cdn/shop/t/3/assets/collection.js?v=129805740315324966031744817342" defer></script>
vendor: 1 bytes, line 2693
2693
2694<script src="//odiporo.de/cdn/shop/t/3/assets/search.js?v=153964456974568625491744817342" defer></script>
2694<div class="section section--padding section--rounded relative"> 2695 <div class="collection page-width relative with-drawer"> 2696 <div class="title-wrapper text-center leading-none grid gap-8"> 2697 <h1 class="heading title-xl tracking-heading" tabindex="-1"> 2698 <split-words class="split-words block" data-animate="fade-up-large">Suche</split-words> 2699 </h1><form class="search__form flex flex-col gap-8 h-full relative" action="/search" method="GET" role="search"> 2700 <input type="hidden" name="options[prefix]" value="last" /> 2701 <label class="sr-only" for="SearchFormInput-template--24796501934459__main">Suche</label> 2702 <div class="search__field field flex items-center gap-4 relative"><input 2703 class="input" 2704 type="search" 2705 name="q" 2706 id="SearchFormInput-template--24796501934459__main" 2707 placeholder="Durchsuchen Sie unseren Shop" 2708 autocomplete="off" 2709 autocorrect="off" 2710 autocapitalize="off" 2711 spellcheck="off" 2712 value="" 2713 /></div></form> 2714</div><div class="active-facets flex flex-wrap items-center gap-2 z-1 relative" id="FacetFiltersActive"></div> 2715<div class="collection__content flex"><div class="flex flex-col gap-12 grow" id="ProductGridContainer"></div> 2716 </div></div> 2717</div> 2718 2719 2720</div> 2721 </main> 2722 2723 <footer-group class="footer-group block w-full"><!-- BEGIN sections: footer-group --> 2724<div id="shopify-section-sections--24796503048571__footer" class="shopify-section shopify-section-group-footer-group"><style> 2725 #shopify-section-sections--24796503048571__footer { 2726 --section-padding-top: 12px; 2727 --section-padding-bottom: 48px;--color-background: 31 31 31;--color-foreground: 255 255 255; 2728 --color-border: var(--color-foreground)/ 0.1; 2729 --color-border-dark: var(--color-foreground)/ 0.4; 2730 --color-border-light: var(--color-foreground)/ 0.06;--color-button-background: 255 255 255; 2731 --color-button-border: 255 255 255;--color-button-text: 0 0 0;} 2732</style><div class="section section--padding section--rounded" is="footer-parallax"> 2733 <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"> 2734 2735 <details class="footer__item--link_list-2 details active" is="footer-details" data-opened > 2736 <summary class="details__summary flex items-center justify-between gap-2 cursor-pointer"> 2737 <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"> 2738 <path stroke-linecap="round" stroke-linejoin="round" d="M6 15L12 9L18 15"></path> 2739 </svg></summary><div class="details__content"> 2740 <ul class="flex flex-col gap-3"><li class="inline-flex"> 2741 <a href="/pages/uber-uns" class="block reversed-link text-sm-lg leading-tight">Ãber uns</a> 2742 </li><li class="inline-flex"> 2743 <a href="/pages/b2b-geschaftskundenanfragen" class="block reversed-link text-sm-lg leading-tight">Geschäftskunden</a> 2744 </li><li class="inline-flex"> 2745 <a href="/blogs/ratgeber_kaufberatung_wissen" class="block reversed-link text-sm-lg leading-tight">Ratgeber</a> 2746 </li><li class="inline-flex"> 2747 <a href="/pages/kontakt" class="block reversed-link text-sm-lg leading-tight">Hilfe & Kontakt</a> 2748 </li><li class="inline-flex"> 2749 <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> 2750 </li><li class="inline-flex"> 2751 <a href="/pages/kostenlose-lieferung" class="block reversed-link text-sm-lg leading-tight">Kostenlose Lieferung</a> 2752 </li><li class="inline-flex"> 2753 <a href="/pages/zahlungsarten" class="block reversed-link text-sm-lg leading-tight">Sichere & flexible Zahlung</a> 2754 </li><li class="inline-flex"> 2755 <a href="/pages/erklarung-zur-barrierefreiheit" class="block reversed-link text-sm-lg leading-tight">Barrierefreiheit</a> 2756 </li><li class="inline-flex"> 2757 <a href="/apps/widerruf" class="block reversed-link text-sm-lg leading-tight">Vertrag widerrufen</a> 2758 </li></ul> 2759 </div> 2760 <style> 2761 @media (min-width: 1280px) { 2762 .footer__item--link_list-2 { width: calc(50% - var(--sp-12)); } 2763 } 2764 </style></details> 2765 2766 2767 2768 2769 <div class="footer__custom-badge text-center" style="margin-top:30px;"> 2770 2771 <h2 class="h4" style="margin-bottom:10px;">Unsere Partner</h2> 2772 2773 <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 Be
2773wertungen" style="max-width:200px;height:auto;"></a> <br> <a href="https://www.adcell.de/partnerprogramme/11079" target="_blank"> 2774 <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"> 2775 </a> 2776 </div> 2777 2778 2779 </div> 2780 </div><div class="footer__right grid gap-10"><div class="footer__newsletter grid gap-6"><p class="footer__logo leading-none"> 2781 <a href="/"> 2782 <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&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&width=274 274w, //odiporo.de/cdn/shop/files/Odiporo.de_Logo_Pantone_invers.png?v=1776255252&width=549 549w" width="1000" height="255" loading="eager" sizes="274.5098039215686px" style="--image-width: 274.5098039215686px; --image-height: 70px;" is="lazy-image"></a> 2783 </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" /> 2784 <input type="hidden" name="contact[context]" value="footer" /> 2785 <div class="field relative"> 2786 <input 2787 id="NewsletterForm--sections--24796503048571__footer" 2788 class="input is-floating input--fill" 2789 type="email" 2790 name="contact[email]" 2791 value="" 2792 autocorrect="off" 2793 autocapitalize="off" 2794 autocomplete="email" 2795 placeholder="Deine Mailadresse" 2796 required/> 2797 <label class="label is-floating" for="NewsletterForm--sections--24796503048571__footer">Deine Mailadresse</label> 2798 <div class="self-submit-button absolute"> 2799 <button type="submit" class="button button--primary self-button flex justify-center items-center" is="magnet-button" data-magnet="20" aria-label="Abonnieren"> 2800 <span class="btn-text"> 2801 <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"> 2802 <path stroke-linecap="round" stroke-linejoin="round" d="M2 8.00012H14M14 8.00012L9.33333 3.3335M14 8.00012L9.33333 12.6668"></path> 2803 </svg> 2804 </span> 2805 </button> 2806 </div> 2807 </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="odiporo.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"> 2808 <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"/> 2809 </svg><span class="sr-only">Facebook</span> 2810 </a> 2811 </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"> 2812 <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
28127 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"/> 2813 </svg><span class="sr-only">Instagram</span> 2814 </a> 2815 </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"> 2816 <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"/> 2817 </svg><span class="sr-only">YouTube</span> 2818 </a> 2819 </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-lg" viewBox="0 0 24 24" stroke="none" fill="currentColor" xmlns="http://www.w3.org/2000/svg"> 2820 <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"/> 2821 </svg><span class="sr-only">TikTok</span> 2822 </a> 2823 </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> 2824 2825 2826</div><div id="shopify-section-sections--24796503048571__footer-copyright" class="shopify-section shopify-section-group-footer-group"><style> 2827 #shopify-section-sections--24796503048571__footer-copyright { 2828 --gradient-background: #171717; 2829 --color-background: 23 23 23; 2830 --color-foreground: 255 255 255; 2831 } 2832</style> 2833 2834<div class="section section--rounded" is="footer-parallax"> 2835 <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"> 2836 <div class="rte credits text-center">Powered by Axdia International GmbH<ul class="flex flex-wrap gap-3 justify-center lg:justify-start"><li> 2837 <small> 2838 <a href="/policies/privacy-policy" class="block reversed-link">Datenschutzerklärung</a> 2839 </small> 2840 </li><li> 2841 <small> 2842 <a href="/policies/legal-notice" class="block reversed-link">Impressum</a> 2843 </small> 2844 </li><li> 2845 <small> 2846 <a href="/policies/refund-policy" class="block reversed-link">Widerrufsrecht</a> 2847 </small> 2848 </li><li> 2849 <small> 2850 <a href="/policies/terms-of-service" class="block reversed-link">AGB</a> 2851 </small> 2852 </li><li> 2853 <small> 2854 <a href="/policies/contact-information" class="block reversed-link">Kontaktinformationen</a> 2855 </small> 2856 </li><li> 2857 <small> 2858 <a href="/policies/shipping-policy" class="block reversed-link">Versand</a> 2859 </small> 2860 </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;"/>
2860<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;"/></svg> 2861</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" />
2861<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> 2862</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.
286206zM23.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> 2863</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;"/>
2863<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> 2864</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
28640-.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> 2865</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.
2865635.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
286516.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> 2866</li></ul></div> 2867</div> 2868 2869 2870<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> 2871<!-- END sections: footer-group --></footer-group> 2872 </div> 2873 2874 <ul hidden> 2875 <li id="a11y-refresh-page-message">Wenn du dich für eine Auswahl entscheidest, wird die Seite komplett aktualisiert.</li> 2876 <li id="a11y-new-window-message">Wird in einem neuen Fenster geöffnet.</li> 2877 </ul>
2877<script src="//odiporo.de/cdn/shop/t/3/assets/instant-page.js?v=99963444960178710701744817341" type="module" fetchpriority="low" defer="defer"></script>
2877<script> 2878 const updatePlaceholderIfFound = () => { 2879 document.querySelectorAll('input[type="email"]').forEach(input => { 2880 const current = input.getAttribute('placeholder') || ''; 2881 if (current.includes('Newsletter') || current.trim() === '') { 2882 input.setAttribute('placeholder', 'Deine Mailadresse'); 2883 } 2884 }); 2885 }; 2886 2887 // Starte Beobachter 2888 const observer = new MutationObserver((mutationsList, observer) => { 2889 updatePlaceholderIfFound(); 2890 }); 2891 2892 // Aktiviere, sobald DOM da ist 2893 document.addEventListener('DOMContentLoaded', function () { 2894 updatePlaceholderIfFound(); // erster Versuch 2895 observer.observe(document.body, { 2896 childList: true, 2897 subtree: true 2898 }); 2899 }); 2900 2901 // Sicherheit: Wiederholung nach 1s und 3s 2902 setTimeout(updatePlaceholderIfFound, 1000); 2903 setTimeout(updatePlaceholderIfFound, 3000); 2904</script>
2904 2905 2906 2907 2908 2909<style> .ips-small-text {color: #fae009;} </style> 2910<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" /> 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929
2930<script> 2931 // Country and locale come from Liquid, so they are known at first paint. The 2932 // sheet href is built synchronously, and resolving the language from anything 2933 // that has to be fetched first would show the wrong one for a moment. 2934 window.energyLabelContext = window.energyLabelContext || { 2935 country: 'DE', 2936 locale: 'de' 2937 }; 2938 2939 // The country decides the sheet language and the browser only breaks ties, so 2940 // both travel with the request and the server resolves what it asks EPREL for. 2941 window.energyLabelSheetUrl = window.energyLabelSheetUrl || function(eprelNumber){ 2942 const params = new URLSearchParams({ 2943 country: window.energyLabelContext.country || '', 2944 langs: (navigator.languages || [navigator.language]).filter(Boolean).join(',') 2945 }); 2946 return '/apps/energy-label/api/products/' + eprelNumber + '/sheets?' + params; 2947 }; 2948 2949 // Fetched unconditionally â the sheet options below may be off, but the label 2950 // settings are still needed. Cached on window so badge click handlers can read 2951 // openLabelInNewTab synchronously (an await before window.open reads as a popup). 2952 window.energyLabelSettings = window.energyLabelSettings || {}; 2953 window.energyLabelSettingsReady = window.energyLabelSettingsReady || 2954 fetch(`/apps/energy-label/api/settings?locale=${encodeURIComponent(window.energyLabelContext.locale || '')}`) 2955 .then(response => response.json()) 2956 .then(settings => { window.energyLabelSettings = settings; return settings; }) 2957 .catch(() => window.energyLabelSettings); 2958 2959 window.energyLabelShouldOpenInNewTab = function(){ 2960 return window.energyLabelSettings.openLabelInNewTab === true; 2961 }; 2962 2963 window.energyLabelOpenInNewTab = function(labelUrl){ 2964 if(!labelUrl){ return false; } 2965 window.open(labelUrl, '_blank', 'noopener'); 2966 return true; 2967 }; 2968</script>
2968 2969 2970 2971 2972<div style="display: none"> 2973 2974 2975
2975<script src="https://cdn.shopify.com/extensions/01a0c92e-2778-7671-a9da-706379edd60a/3.4.1/assets/script-embed.js" async 2976 data-cssSelector="product-card__top" 2977 data-cssSelectorProduct="card.product-card" 2978 data-cssSelector-drawer="horizontal-product__details" 2979 data-cssSelectorProduct-drawer="horizontal-product" 2980 data-cssSelector-drawer-block="cart-drawer" 2981 > 2982 </script>
2982 2983 2984</div> 2985<template class="energy-label__template"> 2986 <div class="energy-label__overlay" onclick="handleCollectionOverlayClick(event)" popover> 2987 <button class="energy-label__close-button" onclick="hideCollectionOverlay(event)"> 2988 <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> 2989 <path d="M6 6L26 26M6 26L26 6" stroke="#ffffff" stroke-width="2"/> 2990 </svg> 2991 </button> 2992 <div class="energy-label__image-container"> 2993 <img class="energy-label__image" width="auto" height="auto" src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiAzQzcuMDI5NDQgMyAzIDcuMDI5NDQgMyAxMkMzIDE2Ljk3MDYgNy4wMjk0NCAyMSAxMiAyMUMxMi44Mjg0IDIxIDEzLjUgMjEuNjcxNiAxMy41IDIyLjVDMTMuNSAyMy4zMjg0IDEyLjgyODQgMjQgMTIgMjRDNS4zNzI1OCAyNCAwIDE4LjYyNzQgMCAxMkMwIDUuMzcyNTggNS4zNzI1OCAwIDEyIDBDMTguNjI3NCAwIDI0IDUuMzcyNTggMjQgMTJDMjQgMTIuODI4NCAyMy4zMjg0IDEzLjUgMjIuNSAxMy41QzIxLjY3MTYgMTMuNSAyMSAxMi44Mjg0IDIxIDEyQzIxIDcuMDI5NDQgMTYuOTcwNiAzIDEyIDNaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K" alt="Energy Label"> 2994 <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> 2995 </div> 2996 </div> 2997</template> 2998 2999 3000<embed-block-energy-label></embed-block-energy-label> 3001 3002<style> 3003 3004 3005 3006 3007 .product-card__top .energy-badge__container { 3008 margin-left: 0px; 3009 margin-right: 0px; 3010 margin-top: 0px; 3011 margin-bottom: 0px; 3012 flex-direction: row; 3013 3014 flex-direction: row; 3015 justify-content: flex-end; 3016 align-items: center; 3017 gap: 12px; 3018 3019 } 3020 3021 3022 .product-card__top .energy-badge__link-text::before { 3023 font-size: 12px; 3024 } 3025 3026 3027 3028 3029 .horizontal-product__details .energy-badge__container { 3030 margin-left: 0px; 3031 margin-right: 0px; 3032 margin-top: 0px; 3033 margin-bottom: 0px; 3034 3035 flex-direction: row; 3036 justify-content: flex-start; 3037 align-items: center; 3038 gap: 12px; 3039 3040 } 3041 3042 3043 .horizontal-product__details .energy-badge__link-text::before { 3044 font-size: 12px; 3045 } 3046 3047 3048 3049 3050 .product-card__top { 3051 width: 100%; 3052 } 3053 .product-card__top .energy-badge__image { 3054 height: 24px; 3055 } 3056 .product-card__top .energy-badge__image--manual, 3057 .product-card__top .energy-badge__image.manual { 3058 height: 14px; 3059 } 3060 3061 3062 3063 3064 3065 .horizontal-product__details .energy-badge__image { 3066 height: 24px; 3067 } 3068 .horizontal-product__details .energy-badge__image--manual, 3069 .horizontal-product__details .energy-badge__image.manual { 3070 height: 14px; 3071 } 3072 3073 3074 3075</style> 3076 3077 3078</div><div id="shopify-block-AV1c1MGppS3Bld2V0Z__1967102994182284862" class="shopify-block shopify-app-block"><!-- BEGIN app snippet: connected_sdk_script -->
3078<script src='https://www.paypalobjects.com/pa/js/min/pa.js'></script>
3078 3079
3080<script 3081 src='https://www.paypal.com/sdk/js?client-id=AbtXlp5R3xc83T9xW_ZXKTK8IVZ-14EMelDioU4VC285IqSuxUI4yotKxjV0sz_X6YsONYi10vSBPNKM&merchant-id=SK45JS2S8VVTS&components=messages' 3082 data-namespace='PayPalSDK' 3083 data-partner-attribution-id='JADEDPIXEL_SHOPPINGCART_EC_CA' 3084></script>
3084 3085<!-- END app snippet --><!-- BEGIN app snippet: utils -->
3085<script> 3086 // ============================================ 3087 // Core Utilities 3088 // ============================================ 3089 3090 // Setup FPTI Analytics 3091 if (PAYPAL && PAYPAL.analytics) { 3092 PAYPAL.analytics.setup({ 3093 data: { 3094 pgrp: 'shopify:messaging:app-embed', 3095 comp: 'shopify-app-embed', 3096 }, 3097 }); 3098 } 3099 3100 const recordEvent = (event_name, additionalData) => { 3101 PAYPAL.analytics.instance.recordEvent(event_name, { 3102 theme: window?.Shopify?.theme?.name || 'unknown', 3103 shop: window?.Shopify?.shop || 'unknown', 3104 path: window.location.pathname, 3105 flow: 'Shopify - Pay Later', 3106 space_key: 'SKD8GM', 3107 ...additionalData, 3108 }); 3109 }; 3110 3111 // In Theme Editor when using Advanced Settings 3112 // User chooses copy as JS Path from their browser 3113 // The pasted value will be a string that contains "document.querySelector("...") 3114 // Remove document.querySelector(" and ") 3115 // Using JS Path we can ensure the path to the element is accurate 3116 const parseSelector = (selector) => { 3117 try { 3118 // Handle both single and double quotes 3119 return selector 3120 .replace(/document\.querySelector\(["']/g, '') 3121 .replace(/["']\)/g, ''); 3122 } catch (e) { 3123 recordEvent('appEmbed:parseSelector:error', { error: e.message }); 3124 } 3125 }; 3126 3127 // Waits for Element to be rendered 3128 // Uses mutation observer to watch for changes in the DOM 3129 // https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver 3130 // On changes, check for the selector again 3131 const waitForElement = (selector) => { 3132 try { 3133 return new Promise((resolve) => { 3134 const existing = document.querySelector(selector); 3135 if (existing) return resolve(existing); 3136 3137 const observer = new MutationObserver(() => { 3138 const el = document.querySelector(selector); 3139 if (el) { 3140 observer.disconnect(); 3141 resolve(el); 3142 } 3143 }); 3144 3145 observer.observe(document.body, { 3146 childList: true, 3147 subtree: true, 3148 }); 3149 }); 3150 } catch (e) { 3151 recordEvent('appEmbed:waitForElement:error', { error: e.message }); 3152 } 3153 }; 3154 3155 // Formats correct cart/drawer subtotal and adds or updates messaging 3156 const addOrUpdateMessagingPriceAttribute = async (price, locator, messaging) => { 3157 try { 3158 // Format price to 2 decimal places ex: 150000 => 1500.00 3159 // Messaging requires price to be in string format 3160 const formattedPrice = Number((price / 100).toFixed(2)).toString(); 3161 3162 const messagingId = messaging.id; 3163 const existingMessaging = document.getElementById(messagingId); 3164 3165 if (existingMessaging) { 3166 // Update the data-pp-amount attribute on the existing element 3167 existingMessaging.setAttribute('data-pp-amount', formattedPrice); 3168 } else { 3169 const element = await waitForElement(locator); 3170 3171 const updatedPriceMessaging = messaging.cloneNode(); 3172 updatedPriceMessaging.setAttribute('data-pp-amount', formattedPrice); 3173 3174 element.after(updatedPriceMessaging); 3175 } 3176 } catch (e) { 3177 recordEvent('appEmbed:addOrUpdateMessagingPriceAttribute:error', { error: e.message }); 3178 } 3179 }; 3180 3181 // Fetches cart details from Shopify cart endpoint 3182 const fetchCartDetails = async () => { 3183 try { 3184 const response = await fetch('/cart.js'); 3185 const cart = await response.json(); 3186 3187 return cart.total_price; 3188 } catch (e) { 3189 recordEvent('appEmbed:fetchCartDetails:error', { error: e.message }); 3190 } 3191 }; 3192 3193 // Fetches variant details Shopify product endpoint 3194 // https://shopify.dev/docs/api/ajax/reference/product 3195 const fetchVariant = async () => { 3196 try { 3197 // Ex: https://test-store.myshopify.com/products/the-multi-location-snowboard?variant=45268551368883 3198 const urlParams = new URLSearchParams(window.location.search); 3199 const urlVariantId = parseInt(urlParams.get('variant'), 10); 3200 const productHandle = window.location.pathname.split('/products/')[1]?.split('?')[0]; 3201 3202 const response = await fetch(`/products/${productHandle}.js`); 3203 const productData = await response.json(); 3204 const variants = productData.variants; 3205 const selectedVariant = variants.find(v => v.id === urlVariantId); 3206 3207 if (selectedVariant) { 3208 return selectedVariant; 3209 } 3210 3211 return variants.find(v => v.available) || variants[0]; 3212 } catch (e) { 3213 recordEvent('appEmbed:fetchVariant:error', { error: e.message }); 3214 } 3215 }; 3216 3217 // Get the selected variant ID from URL, form input, or select element
3218 const getSelectedVariantId = () => { 3219 try { 3220 const urlParams = new URLSearchParams(window.location.search); 3221 const urlVariant = urlParams.get('variant'); 3222 if (urlVariant) return parseInt(urlVariant, 10); 3223 3224 const formInput = document.querySelector('form[action*="/cart/add"] input[name="id"]'); 3225 if (formInput?.value) return parseInt(formInput.value, 10); 3226 3227 const selectInput = document.querySelector('form[action*="/cart/add"] select[name="id"]'); 3228 if (selectInput?.value) return parseInt(selectInput.value, 10); 3229 3230 return null; 3231 } catch (e) { 3232 recordEvent('appEmbed:getSelectedVariantId:error', { error: e.message }); 3233 return null; 3234 } 3235 }; 3236 3237 const getShopifyData = () => { 3238 try { 3239 const selectedVariantId = getSelectedVariantId(); 3240 3241 const findVariant = (variants) => { 3242 if (!variants?.length) return null; 3243 if (selectedVariantId) { 3244 const selected = variants.find(v => v.id === selectedVariantId); 3245 if (selected) return selected; 3246 } 3247 return variants.find(v => v.available) || variants[0]; 3248 }; 3249 3250 if (window.meta?.product) { 3251 const product = window.meta.product; 3252 const variant = findVariant(product.variants); 3253 return { 3254 product: { title: product.title, vendor: product.vendor, type: product.type, id: product.id }, 3255 price: variant ? { 3256 priceInCents: variant.price, 3257 compareAtPrice: variant.compare_at_price, 3258 currency: window.Shopify?.currency?.active || 'USD', 3259 variantId: variant.id, 3260 variantTitle: variant.title 3261 } : null 3262 }; 3263 } 3264 3265 if (window.ShopifyAnalytics?.meta?.product) { 3266 const product = window.ShopifyAnalytics.meta.product; 3267 const variant = findVariant(product.variants); 3268 return { 3269 product: { title: product.title, vendor: product.vendor, id: product.id }, 3270 price: variant ? { 3271 priceInCents: variant.price, 3272 currency: window.Shopify?.currency?.active || 'USD', 3273 variantId: variant.id 3274 } : null 3275 }; 3276 } 3277 3278 return null; 3279 } catch (e) { 3280 recordEvent('appEmbed:getShopifyData:error', { error: e.message }); 3281 return null; 3282 } 3283 }; 3284 3285 // Generic function to watch for changes in the DOM 3286 // and listen for specific API calls made by the Shopify store 3287 // Callback provides specific logic for handling the response 3288 const watchForChanges = (locator, messaging, callback) => { 3289 try { 3290 // Overrides the native `fetch` function to listen for specific API calls. 3291 // Wrapped in an Immediately Invoked Function Expression (IIFE) 3292 // To avoid polluting the global namespace. 3293 (function (window, windowFetch) { 3294 // Check if `fetch` is a function. If not, exit early. 3295 if (typeof fetch !== 'function') return; 3296 3297 window.fetch = function () { 3298 // Call the original `fetch` function with the provided arguments. 3299 const response = windowFetch.apply(this, arguments); 3300 3301 response.then(async (res) => { 3302 if (typeof callback === 'function') { 3303 callback(res, locator, messaging); 3304 } 3305 }); 3306 3307 // Return the original `fetch` response. 3308 return response; 3309 }; 3310 })(window, window.fetch); 3311 } catch (e) { 3312 recordEvent('appEmbed:watchForChanges:error', { error: e.message }); 3313 } 3314 }; 3315 3316 // Provides ability to watch for cart changes 3317 // such as increment, decrement, or remove items 3318 // Also handles adding new items which opens Cart Drawer 3319 // and updates the messaging with the new cart total 3320 // This function is used for both Cart Drawer and Cart Page 3321 const watchForCartChanges = (locator, messaging) => { 3322 const cartChangeCallback = async (res, locator, messaging) => { 3323 // Determine the id of messaging div either #paypal-upstream-messaging-cart-{page | drawer} 3324 const messagingId = messaging.id; 3325 3326 // Changes (e.g., increment, decrement, or remove items). 3327 if (res.url.includes('/cart/change')) { 3328 // Clone the response to read its JSON data without consuming the original response. 3329 res 3330 .clone() 3331 .json() 3332 .then((data) => { 3333 addOrUpdateMessagingPriceAttribute(data.total_price, locator, messaging); 3334 }); 3335 3336 // Called when adding a new item which opens Cart Drawer 3337 } else if (res.url.includes('/cart/add')) { 3338 // Adding items does not return the updated cart details, 3339 // Fetch the updated cart details (e.g., total_price). 3340 const updatedPrice = await fetchCartDetails(); 3341 3342 // Introduce a delay to handle potential race conditions where the cart drawer has not rendered yet. 3343 setTimeout(async () => { 3344 await addOrUpdateMessagingPriceAttribute(updatedPrice, locator, messaging); 3345 }, 500); 3346 } 3347 }; 3348 3349 watchForChanges(locator, messaging, cartChangeCallback); 3350 }; 3351
3352 // Provides ability to watch for product specific changes 3353 // such as variant selection on product pages 3354 const watchForProductChanges = (locator, messaging) => { 3355 let lastVariantId = new URLSearchParams(window.location.search).get('variant'); 3356 3357 const handleVariantChange = async () => { 3358 const currentVariantId = new URLSearchParams(window.location.search).get('variant'); 3359 if (currentVariantId && currentVariantId !== lastVariantId) { 3360 lastVariantId = currentVariantId; 3361 3362 const newVariantData = await fetchVariant(); 3363 const newPriceInCents = newVariantData?.price; 3364 3365 if (newPriceInCents) { 3366 await addOrUpdateMessagingPriceAttribute(newPriceInCents, locator, messaging); 3367 } else { 3368 recordEvent('appEmbed:watchForProductChanges:error:noNewVariantPrice'); 3369 } 3370 } 3371 }; 3372 3373 // Shopify themes can either handle variant changes on the client-side or server-side (via variant API calls) 3374 // We will "intercept" and handle variant changes by: 3375 // 1. Watching for URL changes 3376 const _pushState = history.pushState.bind(history); 3377 const _replaceState = history.replaceState.bind(history); 3378 3379 history.pushState = function (...args) { 3380 _pushState(...args); 3381 handleVariantChange(); 3382 }; 3383 3384 history.replaceState = function (...args) { 3385 _replaceState(...args); 3386 handleVariantChange(); 3387 }; 3388 3389 // 2. Watching for back/forward browser clicks 3390 window.addEventListener('popstate', handleVariantChange); 3391 3392 // 3. Fallback: Watching for variant API calls 3393 // Future optimization: This fallback could be removed if all Shopify themes can be handled with 1. and 2. 3394 const productChangeCallback = async (res, locator, messaging) => { 3395 if (res.url.includes('/variants')) { 3396 await handleVariantChange(); 3397 return; 3398 } 3399 }; 3400 3401 watchForChanges(locator, messaging, productChangeCallback); 3402 }; 3403</script>
3403 3404<!-- END app snippet --><!-- BEGIN app snippet: price-detection -->
3404<script> 3405 // ============================================ 3406 // Price Detection & Element Scoring 3407 // Depends on: utils.liquid (recordEvent, getShopifyData) 3408 // ============================================ 3409 3410 const extractPriceFromText = (text) => { 3411 const match = text.match(/[\d,]+\.?\d*/); 3412 if (!match) return null; 3413 return parseFloat(match[0].replace(/,/g, '')); 3414 }; 3415 3416 const textMatchesPrice = (text, knownPriceInCents) => { 3417 const extracted = extractPriceFromText(text); 3418 if (extracted === null) return false; 3419 const knownPrice = knownPriceInCents / 100; 3420 return Math.abs(extracted - knownPrice) < 0.01; 3421 }; 3422 3423 const hasStrikethrough = (element) => { 3424 let el = element; 3425 while (el && el !== document.body) { 3426 const style = getComputedStyle(el); 3427 if (style.textDecoration.includes('line-through') || 3428 style.textDecorationLine?.includes('line-through')) { 3429 return true; 3430 } 3431 if (['S', 'DEL', 'STRIKE'].includes(el.tagName)) { 3432 return true; 3433 } 3434 el = el.parentElement; 3435 } 3436 return false; 3437 }; 3438 3439 // Find the add-to-cart button. Result is cached since the button doesn't change per page load. 3440 let _cachedAddToCartButton; 3441 const findAddToCartButton = () => { 3442 if (_cachedAddToCartButton !== undefined) return _cachedAddToCartButton; 3443 try { 3444 const formButton = document.querySelector('form[action*="/cart/add"] button[type="submit"]'); 3445 if (formButton) return (_cachedAddToCartButton = formButton); 3446 3447 const buttons = document.querySelectorAll('button'); 3448 for (const btn of buttons) { 3449 const text = btn.textContent.toLowerCase(); 3450 if (text.includes('add to cart') || text.includes('add to bag') || 3451 text.includes('buy now') || text.includes('add to basket')) { 3452 return (_cachedAddToCartButton = btn); 3453 } 3454 } 3455 3456 return (_cachedAddToCartButton = null); 3457 } catch (e) { 3458 recordEvent('appEmbed:findAddToCartButton:error', { error: e.message }); 3459 return (_cachedAddToCartButton = null); 3460 } 3461 }; 3462 3463 // Find element containing specific text (used for product title proximity). 3464 // Result is cached per text string â title is static per page load and scoreElement 3465 // calls this once per candidate, so without caching it's O(candidates) full DOM walks. 3466 let _titleElementCache = {}; 3467 const findElementContainingText = (text) => { 3468 if (text in _titleElementCache) return _titleElementCache[text]; 3469 try { 3470 const normalizedText = text.toLowerCase().trim(); 3471 const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT); 3472 3473 let node; 3474 while (node = walker.nextNode()) { 3475 const nodeText = node.textContent.trim().toLowerCase(); 3476 if (nodeText.length > 5 && normalizedText.includes(nodeText.substring(0, 20))) { 3477 const el = node.parentElement; 3478 const rect = el.getBoundingClientRect(); 3479 if (rect.width > 0 && rect.height > 0) { 3480 const fontSize = parseFloat(getComputedStyle(el).fontSize); 3481 if (fontSize >= 16) return (_titleElementCache[text] = el); 3482 } 3483 } 3484 } 3485 return (_titleElementCache[text] = null); 3486 } catch (e) { 3487 return null; 3488 } 3489 }; 3490 3491 const getViewportThresholds = () => { 3492 const vh = window.innerHeight; 3493 const isMobile = window.innerWidth < 768; 3494 3495 return { 3496 position: [[vh * 0.6, 50], [vh * 1.2, 30], [vh * 2.0, 10]], 3497 fontSize: [ 3498 [isMobile ? 18 : 24, 40], 3499 [isMobile ? 14 : 18, 25], 3500 [isMobile ? 12 : 14, 10], 3501 ], 3502 proximity: { 3503 close: isMobile ? 60 : 100, 3504 medium: isMobile ? 120 : 200, 3505 far: isMobile ? 240 : 400, 3506 }, 3507 }; 3508 }; 3509 3510 const getTieredScore = (value, tiers, defaultScore = 0) => { 3511 for (const [threshold, points] of tiers) { 3512 if (value < threshold) return points; 3513 } 3514 return defaultScore; 3515 }; 3516 3517 // Scores a DOM element on how likely it is to be the product's main price. 3518 // Higher score = better candidate. Factors: 3519 // - Position on page (elements higher up score better) 3520 // - Font size (larger text = more likely a displayed price) 3521 // - Proximity to product title and add-to-cart button 3522 // - Structural exclusions (footer/header/nav/hidden = heavy penalty) 3523 // - Strikethrough detection (compare-at prices = heavy penalty) 3524 const scoreElement = (element, productMeta = null, debug = false) => { 3525 let score = 0; 3526 const breakdown = debug ? {} : null; 3527 const { position, fontSize, proximity } = getViewportThresholds(); 3528 const { close, medium, far } = proximity; 3529 const rect = element.getBoundingClientRect(); 3530 3531 // POSITION ON PAGE 3532 const absoluteTop = rect.top + window.scrollY; 3533 const posScore = getTieredScore(absoluteTop, position, -30); 3534 score += posScore; 3535 if (debug) breakdown.position = `${posScore >= 0 ? '+' : ''}${posScore} (top ${Math.round(absoluteTop)}px)`; 3536 3537 // FONT SIZE 3538 const fontPx = parseFloat(getComputedStyle(element).fontSize); 3539 const fontScore = fontSize.find(([t]) => fontPx >= t)?.[1] ?? -10; 3540 score += fontScore; 3541 if (debug) breakdown.fontSize = `${fontScore >= 0 ? '+' : ''}${fontScore} (${fontPx}px)`; 3542 3543 // PROXIMITY TO PRODUCT TITLE 3544 if (productMeta?.title) { 3545 const titleElement = findElementContainingText(productMeta.title); 3546 if (titleElement) { 3547 const distance = Math.abs(titleElement.getBoundingClientRect().bottom - rect.top); 3548 const titleScore = getTieredScore(distance, [[close, 40], [medium, 25], [far, 10]], 0); 3549 score += titleScore; 3550 if (debug) breakdown.titleProximity = `+${titleScore} (${Math.round(distance)}px)`; 3551 } else if (debug) { 3552 breakdown.titleProximity = 'title element not found'; 3553 } 3554 } else if (debug) { 3555 breakdown.titleProximity = 'no product title'; 3556 } 3557 3558 // PROXIMITY TO ADD-TO-CART BUTTON 3559 const addButton = findAddToCartButton(); 3560 if (addButton) { 3561 const distance = Math.abs(addButton.getBoundingClientRect().top - rect.top); 3562 const cartScore = getTieredScore(distance, [[close, 30], [medium, 20], [far, 10]], 0); 3563 score += cartScore; 3564 if (debug) breakdown.cartProximity = `+${cartScore} (${Math.round(distance)}px)`; 3565 } else if (debug) { 3566 breakdown.cartProximity = 'add-to-cart not found'; 3567 } 3568 3569 // STRUCTURAL EXCLUSIONS 3570 const exclusions = [ 3571 ['footer, header, nav', 'in footer/header/nav'], 3572 ['button, a[href*="/cart"], [type="submit"]', 'in button/link'], 3573 ['[aria-hidden="true"], [hidden], .hidden, .visually-hidden', 'hidden'], 3574 ]; 3575 for (const [selector, reason] of exclusions) { 3576 if (element.closest(selector)) { 3577 score -= 100; 3578 if (debug) breakdown.structural = `-100 (${reason})`; 3579 break; 3580 } 3581 } 3582 if (debug && !breakdown.structural) breakdown.structural = '+0'; 3583 3584 // STRIKETHROUGH 3585 if (hasStrikethrough(element)) { 3586 score -= 100; 3587 if (debug) breakdown.strikethrough = '-100 (compare-at price)'; 3588 } else if (debug) { 3589 breakdown.strikethrough = '+0'; 3590 } 3591 3592 if (debug) { 3593 breakdown.totalScore = score; 3594 breakdown.elementText = element.textContent.trim().substring(0, 30); 3595 breakdown.elementTag = element.tagName; 3596 } 3597 3598 return debug ? { score, breakdown } : score; 3599 }; 3600 3601 // Find all elements containing a specific price value 3602 const findElementsWithPrice = (knownPriceInCents, productMeta = null, debug = false, log = () => {}) => { 3603 const candidates = []; 3604 const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT); 3605 3606 let node; 3607 while (node = walker.nextNode()) { 3608 const text = node.textContent.trim(); 3609 if (text.length > 30 || !textMatchesPrice(text, knownPriceInCents)) continue; 3610 3611 const element = node.parentElement; 3612 const rect = element.getBoundingClientRect(); 3613 3614 if (rect.width === 0 || rect.height === 0 || hasStrikethrough(element)) continue; 3615 3616 const score = scoreElement(element, productMeta, false); 3617 candidates.push({ element, text, score }); 3618 } 3619 3620 if (debug && candidates.length > 0) { 3621 candidates.sort((a, b) => b.score - a.score); 3622 log(` Candidates: ${candidates.length}, top: score=${candidates[0].score}, text="${candidates[0].text}"`); 3623 } 3624 3625 return candidates; 3626 }; 3627 3628 // Find the /cart/add form by traversing from the price element 3629 // This is more reliable than name-based container detection since all Shopify themes have this form 3630 const findCartFormFromPrice = (priceElement, debug = false, log = () => {}) => { 3631 let el = priceElement; 3632 3633 while (el && el !== document.body) { 3634 if (el.tagName === 'FORM' && el.action?.includes('/cart/add')) { 3635 if (debug) log(` Found /cart/add form (element itself)`); 3636 return el; 3637 } 3638 3639 let sibling = el.nextElementSibling; 3640 while (sibling) { 3641 if (sibling.tagName === 'FORM' && sibling.action?.includes('/cart/add')) { 3642 if (debug) log(` Found /cart/add form as sibling`); 3643 return sibling; 3644 } 3645 // Check if sibling contains the form 3646 const formInSibling = sibling.querySelector('form[action*="/cart/add"]'); 3647 if (formInSibling) { 3648 if (debug) log(` Found /cart/add form inside sibling`); 3649 return formInSibling; 3650 } 3651 sibling = sibling.nextElementSibling; 3652 } 3653 3654 el = el.parentElement; 3655 } 3656 3657 if (debug) log(` No /cart/add form found`); 3658 return null; 3659 }; 3660 3661 // Fallback: walk up from the price text element to find a suitable wrapper. 3662 // Used when no /cart/add form exists near the price element. 3663 const findPriceContainer = (priceElement) => { 3664 let el = priceElement; 3665 let bestContainer = priceElement; 3666 3667 while (el && el !== document.body) { 3668 // Look for elements with price-related IDs (common Shopify pattern) 3669 if (el.id && /price/i.test(el.id)) { 3670 bestContainer = el; 3671 } 3672 // Look for elements with price-related classes that seem like containers 3673 if (el.className && typeof el.className === 'string') { 3674 const classes = el.className.toLowerCase(); 3675 if (/\bprice\b/.test(classes) && !/price-item|price__regular|price__sale/.test(classes)) { 3676 bestContainer = el; 3677 } 3678 } 3679 // Stop at major structural elements 3680 if (el.tagName === 'SECTION' || el.tagName === 'ARTICLE' || el.tagName === 'MAIN') { 3681 break; 3682 } 3683 el = el.parentElement; 3684 } 3685 3686 return bestContainer; 3687 }; 3688 3689 // Try common Shopify theme price selectors (Dawn and derivatives) 3690 const findPriceByTemplateSelector = (debug = false, log = () => {}) => { 3691 const selectors = [ 3692 '[id*="price-template"]', // Dawn theme pattern 3693 '.price-item--regular:not(s):not(del)',
3694 '[data-product-price]', 3695 ]; 3696 3697 for (const selector of selectors) { 3698 const el = document.querySelector(selector); 3699 if (el && !hasStrikethrough(el)) { 3700 if (debug) log(`Template selector found: ${selector}`); 3701 return el; 3702 } 3703 } 3704 return null; 3705 }; 3706 3707 // Check if we're in an isolated/sandboxed iframe (theme editor) 3708 const isIsolatedContext = () => { 3709 if (window === window.top) return false; // Not in iframe 3710 try { 3711 // Try to access parent - if cross-origin, we're isolated 3712 const test = window.parent.document; 3713 return false; // Can access parent, not isolated 3714 } catch (e) { 3715 return true; // Cross-origin, we're isolated 3716 } 3717 }; 3718 3719 // Try to find price element in sibling iframes (theme editor workaround) 3720 const findPriceInSiblingIframes = (knownPriceInCents) => { 3721 const iframes = document.querySelectorAll('iframe'); 3722 3723 for (const iframe of iframes) { 3724 try { 3725 const iframeDoc = iframe.contentDocument || iframe.contentWindow?.document; 3726 if (!iframeDoc) continue; 3727 3728 const priceElement = iframeDoc.querySelector('.price-item, .price, [data-product-price]'); 3729 if (priceElement) { 3730 return { element: priceElement, document: iframeDoc }; 3731 } 3732 } catch (e) { 3733 // Cross-origin iframe, skip 3734 } 3735 } 3736 3737 return null; 3738 }; 3739 3740 // Helper: Insert messaging near a price element (before cart form or after price container). 3741 // Returns the price container element used as the logical anchor. 3742 const insertMessagingNearPrice = (priceElement, messaging, debug = false, log = () => {}) => { 3743 const cartForm = findCartFormFromPrice(priceElement, debug, log); 3744 const container = findPriceContainer(priceElement); 3745 if (cartForm) { 3746 cartForm.before(messaging.cloneNode()); 3747 if (debug) log('Inserted messaging before /cart/add form'); 3748 } else { 3749 container.after(messaging.cloneNode()); 3750 if (debug) log('Inserted after price container (no form found)'); 3751 } 3752 return container; 3753 }; 3754 3755 // Insert messaging after price element 3756 const insertMessagingWithRetry = (shopifyData, messaging, debug = false, log = () => {}) => { 3757 // Skip visual preview iframe 3758 if (window.location.search.includes('source=visualPreviewInitialLoad')) return; 3759 if (document.querySelector('#paypal-upstream-messaging-product')) return; 3760 3761 const liquidPriceInCents = shopifyData?.price?.priceInCents; 3762 const isIsolated = isIsolatedContext(); 3763 3764 if (debug) { 3765 log('=== Price Detection ==='); 3766 log(`Context: ${isIsolated ? 'Theme Editor' : 'Live Storefront'}`); 3767 log(`Price: ${liquidPriceInCents} cents ($${(liquidPriceInCents / 100).toFixed(2)})`); 3768 } 3769 3770 // Priority 1: Template selectors (common theme patterns like Dawn) 3771 const templateElement = findPriceByTemplateSelector(debug, log); 3772 if (templateElement) { 3773 return insertMessagingNearPrice(templateElement, messaging, debug, log); 3774 } 3775 3776 // Priority 2: Scoring-based price detection 3777 const priceElement = findPriceElement(shopifyData, debug, log); 3778 if (priceElement) { 3779 return insertMessagingNearPrice(priceElement, messaging, debug, log); 3780 } 3781 3782 // Priority 3: Sibling iframes (theme editor only) 3783 if (isIsolated) { 3784 const siblingResult = findPriceInSiblingIframes(liquidPriceInCents); 3785 if (siblingResult) { 3786 return insertMessagingNearPrice(siblingResult.element, messaging, debug, log); 3787 } 3788 } 3789 3790 if (!isIsolated) { 3791 log('Could not find price element. Consider using Advanced Settings with a custom selector.'); 3792 } 3793 return null; 3794 }; 3795 3796 const findPriceElement = (shopifyData = null, debug = false, log = () => {}) => { 3797 try { 3798 const knownPriceInCents = shopifyData?.price?.priceInCents; 3799 const productMeta = shopifyData?.product; 3800 3801 if (debug) log(`findPriceElement: ${knownPriceInCents} cents`); 3802 3803 if (knownPriceInCents) { 3804 const candidates = findElementsWithPrice(knownPriceInCents, productMeta, debug, log); 3805 if (candidates.length > 0) { 3806 candidates.sort((a, b) => b.score - a.score); 3807 if (debug) log(` â FOUND (score=${candidates[0].score})`); 3808 return candidates[0].element; 3809 } 3810 } 3811 3812 if (debug) log(' â null (no candidates)'); 3813 return null; 3814 } catch (e) { 3815 if (debug) log(` â Error: ${e.message}`); 3816 recordEvent('appEmbed:findPriceElement:error', { error: e.message }); 3817 return null; 3818 } 3819 }; 3820</script>
3820 3821<!-- END app snippet --><!-- BEGIN app snippet: navigator-panel --><template id="pp-nav-template"> 3822 <style> 3823 /* --- Floating placement panel shell --- */ 3824 #pp-nav-panel { 3825 position: fixed; 3826 top: 50%; 3827 left: 20px; 3828 transform: translateY(-50%); 3829 background: #fff; 3830 border-radius: 12px; 3831 font-family: system-ui, -apple-system, sans-serif; 3832 font-size: 13px; 3833 z-index: 999999; 3834 width: 340px; 3835 box-shadow: 0 8px 32px rgba(0,0,0,0.18); 3836 overflow: hidden; 3837 transition: transform 0.3s ease, height 0.3s ease; 3838 } 3839 #pp-nav-panel.minimized { 3840 display: none; 3841 } 3842 3843 /* --- Minimized pill button --- */ 3844 #pp-nav-pill { 3845 position: fixed; 3846 bottom: 20px; 3847 left: 20px; 3848 background: #003087; 3849 color: #fff; 3850 border: none; 3851 border-radius: 24px; 3852 padding: 10px 18px; 3853 font-family: system-ui, -apple-system, sans-serif; 3854 font-size: 13px; 3855 font-weight: 600; 3856 cursor: pointer; 3857 z-index: 999999; 3858 box-shadow: 0 4px 16px rgba(0,48,135,0.3); 3859 display: none; 3860 align-items: center; 3861 gap: 8px; 3862 transition: box-shadow 0.2s; 3863 } 3864 #pp-nav-pill:hover { 3865 box-shadow: 0 6px 20px rgba(0,48,135,0.45); 3866 } 3867 3868 /* --- Header --- */ 3869 .pp-panel-header { 3870 background: #003087; 3871 color: #fff; 3872 padding: 14px 16px; 3873 display: flex; 3874 align-items: center; 3875 justify-content: space-between; 3876 } 3877 .pp-panel-title { 3878 font-size: 14px; 3879 font-weight: 700; 3880 margin: 0; 3881 letter-spacing: 0.01em; 3882 } 3883 .pp-minimize-btn { 3884 background: none; 3885 border: none; 3886 color: rgba(255,255,255,0.8); 3887 cursor: pointer; 3888 font-size: 18px; 3889 line-height: 1; 3890 padding: 2px; 3891 border-radius: 4px; 3892 transition: color 0.15s; 3893 } 3894 .pp-minimize-btn:hover { 3895 color: #fff; 3896 } 3897 3898 /* --- Panel body --- */ 3899 .pp-panel-content { 3900 padding: 16px; 3901 } 3902 3903 /* --- Step info boxes --- */ 3904 .pp-step-box { 3905 border-radius: 8px; 3906 padding: 10px 12px; 3907 font-size: 12px; 3908 line-height: 1.5; 3909 margin-bottom: 12px; 3910 display: flex; 3911 align-items: flex-start; 3912 gap: 8px; 3913 } 3914 .pp-step-box.blue { 3915 background: #e8f4fd; 3916 border: 1px solid #b8dff5; 3917 color: #0a5a96; 3918 } 3919 .pp-step-box.green { 3920 background: #e6f9ee; 3921 border: 1px solid #a3e4b8; 3922 color: #1a7a3a; 3923 } 3924 .pp-step-text { 3925 flex: 1; 3926 } 3927 .pp-step-text p { 3928 margin: 0 0 8px 0; 3929 } 3930 .pp-step-text p:last-child { 3931 margin-bottom: 0; 3932 } 3933 .pp-step-text strong { 3934 display: block; 3935 font-size: 12px; 3936 margin-bottom: 2px; 3937 } 3938 .pp-step-dismiss { 3939 background: none; 3940 border: none; 3941 color: inherit; 3942 opacity: 0.5; 3943 cursor: pointer; 3944 font-size: 16px; 3945 line-height: 1; 3946 padding: 0; 3947 flex-shrink: 0; 3948 } 3949 .pp-step-dismiss:hover { 3950 opacity: 1; 3951 } 3952 3953 /* --- Warning banners --- */ 3954 .pp-warning { 3955 background: #fff3cd; 3956 border: 1px solid #ffc107; 3957 border-radius: 8px; 3958 padding: 10px 12px; 3959 margin-bottom: 12px; 3960 font-size: 12px; 3961 color: #856404; 3962 line-height: 1.4; 3963 } 3964 .pp-warning-icon { 3965 margin-right: 4px; 3966 } 3967 3968 /* --- Pick placement + copy actions --- */ 3969 .pp-pick-btn { 3970 width: 100%; 3971 padding: 12px; 3972 border: 2px solid #0070ba; 3973 border-radius: 8px; 3974 background: #0070ba; 3975 color: #fff; 3976 cursor: pointer; 3977 font-size: 13px; 3978 font-weight: 600; 3979 transition: all 0.15s; 3980 display: flex; 3981 align-items: center; 3982 justify-content: center; 3983 gap: 8px; 3984 } 3985 .pp-pick-btn:hover { 3986 opacity: 0.9; 3987 } 3988 .pp-pick-btn.active { 3989 background: #f0f7ff; 3990 color: #0070ba; 3991 border-color: #b8dff5; 3992 } 3993 .pp-pick-btn.active:hover { 3994 background: #e0efff; 3995 } 3996 3997 /* --- Copy button --- */ 3998 #pp-apply-btn { 3999 width: 100%; 4000 background: #28a745; 4001 color: #fff; 4002 border: none; 4003 padding: 12px; 4004 border-radius: 8px; 4005 font-weight: 600; 4006 cursor: pointer; 4007 font-size: 13px; 4008 transition: all 0.2s; 4009 display: none; 4010 align-items: center; 4011 justify-content: center; 4012 gap: 8px; 4013 margin-top: 12px; 4014 } 4015 #pp-apply-btn:hover { 4016 opacity: 0.9; 4017 } 4018 #pp-apply-btn.applied { 4019 background: #28a745; 4020 } 4021 4022 /* --- Step 2 confirmation --- */ 4023 #pp-step2 { 4024 display: none; 4025 margin-top: 18px; 4026 } 4027 </style> 4028 <div class='pp-panel-header'> 4029 <div class='pp-panel-title'>PayPal Pay Later Messaging</div> 4030 <button class='pp-minimize-btn' id='pp-collapse-btn' title='Minimize panel'>▾</button> 4031 </div> 4032 <div class='pp-panel-content'> 4033 <div id='pp-warning' class='pp-warning' style='display: none;'></div> 4034 <div id='pp-inspector-warning' class='pp-warning' style='display: none;'></div> 4035 <div class='pp-step-box blue' id='pp-step1'>
4036 <span class='pp-step-text' 4037 ><strong>Step 1: Choose message placement</strong> 4038 Click the button below and then hover over your page to select a placement. 4039 </span> 4040 </div> 4041 <button id='pp-pick-btn' class='pp-pick-btn'>◎ Start Picking Placement</button 4042 ><button id='pp-apply-btn'>Copy Current Placement</button> 4043 <div id='pp-step2' style='display:none;'> 4044 <div class='pp-step-box green'> 4045 <span class='pp-step-text' 4046 ><strong>Step 2: Paste and save</strong> 4047 <p style='margin: 0 0 8px 0;'> 4048 You have copied the placement for the <b id='pp-context-name'>Product Page</b>. 4049 </p> 4050 <p style='margin: 0;'> 4051 Go back to the App Embeds section, and in the Paypal Advanced Settings, paste the copied value into the 4052 <b id='pp-selector-name'>Product Page</b> field and click the 'Save' button in the top right corner. 4053 </p></span 4054 ><button class='pp-step-dismiss' id='pp-step2-dismiss' title='Dismiss'>×</button> 4055 </div> 4056 </div> 4057 </div> 4058</template> 4059<!-- END app snippet --><!-- BEGIN app snippet: navigator -->
4059<script> 4060 // ============================================ 4061 // DOM Traversal Controls for Theme Editor 4062 // Depends on: price-detection.liquid (isIsolatedContext) 4063 // ============================================ 4064 4065 const OVERLAY_STYLE = 4066 '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;'; 4067 const OVERLAY_LABEL_STYLE = 4068 '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;'; 4069 const COPY_BUTTON_LABEL = 'Copy Current Placement'; 4070 const COPIED_BUTTON_LABEL = 'Placement Copied!'; 4071 4072 const isInOverlay = (el) => { 4073 while (el && el !== document.body) { 4074 if (getComputedStyle(el).position === 'fixed') return true; 4075 el = el.parentElement; 4076 } 4077 return false; 4078 }; 4079 4080 // Position a fixed overlay to cover a target element 4081 const positionOverlayOnElement = (overlay, el) => { 4082 const rect = el.getBoundingClientRect(); 4083 Object.assign(overlay.style, { 4084 top: rect.top + 'px', 4085 left: rect.left + 'px', 4086 width: rect.width + 'px', 4087 height: rect.height + 'px', 4088 display: 'block', 4089 }); 4090 }; 4091 4092 // Module-level refs for global listeners added by createNavigationPanel. 4093 // Stored here so they can be removed if the panel is re-initialized. 4094 let _panelInspectorActivate = null; 4095 let _panelInspectorDeactivate = null; 4096 let _highlightedElement = null; 4097 let _panelPickModeCleanup = null; 4098 4099 // Detect UID pattern in ID (Shopify's --suffix or long numeric/hex suffixes) 4100 const hasUid = (id) => { 4101 if (!id) return false; 4102 if (/--/.test(id)) return true; 4103 return /[-_](\d{5,}|[a-f0-9]{8,})$/i.test(id); 4104 }; 4105 const getIdPrefix = (id) => { 4106 if (id.includes('--')) return id.split('--')[0]; 4107 const match = id.match(/^(.+?)[-_](\d{5,}|[a-f0-9]{8,})$/i); 4108 return match ? match[1] : null; 4109 }; 4110 const getMeaningfulClasses = (el) => { 4111 if (!el.className || typeof el.className !== 'string') return []; 4112 return el.className.trim().split(/\s+/).filter(c => 4113 c && !c.startsWith('_') && !c.startsWith('js-') && 4114 c.length < 30 && !/^[a-f0-9]{6,}$/i.test(c) && !/^[A-Z]/.test(c) 4115 ); 4116 }; 4117 const isUnique = (selector) => document.querySelectorAll(selector).length === 1; 4118 4119 // Returns null if no unique selector can be generated 4120 const generateSelector = (element) => { 4121 if (!element || element === document.body || element === document.documentElement) { 4122 return null; 4123 } 4124 const classes = getMeaningfulClasses(element); 4125 4126 // Priority 1: Clean ID 4127 if (element.id && !hasUid(element.id)) return `#${element.id}`; 4128 4129 // Priority 2: ID with UID â attribute wildcard selector 4130 if (element.id && hasUid(element.id)) { 4131 const prefix = getIdPrefix(element.id); 4132 if (prefix) { 4133 const selector = `[id^="${prefix}-"]`; 4134 if (isUnique(selector)) return selector; 4135 } 4136 } 4137 4138 // Priority 3: Unique class 4139 for (const cls of classes) { 4140 if (isUnique('.' + cls)) return '.' + cls; 4141 } 4142 4143 // Priority 4: Ancestor + target class combinations (walk up to 5 levels) 4144 if (classes.length > 0) { 4145 let ancestor = element.parentElement; 4146 let depth = 0; 4147 while (ancestor && ancestor !== document.body && ancestor !== document.documentElement && depth < 5) { 4148 const ancClasses = getMeaningfulClasses(ancestor); 4149 if (ancClasses.length > 0) { 4150 const s1 = `.${ancClasses[0]} .${classes[0]}`; 4151 if (isUnique(s1)) return s1; 4152 const s2 = `.${ancClasses[0]} > .${classes[0]}`; 4153 if (isUnique(s2)) return s2; 4154 } 4155 if (ancestor.id && !hasUid(ancestor.id)) { 4156 const s3 = `#${ancestor.id} .${classes[0]}`; 4157 if (isUnique(s3)) return s3; 4158 } 4159 ancestor = ancestor.parentElement; 4160 depth++; 4161 } 4162 } 4163 4164 // NO FALLBACK - return null if no unique selector exists 4165 return null; 4166 }; 4167 const hasSpecificSelector = (el) => generateSelector(el) !== null; 4168 const shouldSkipElement = (el) => { 4169 if (!el || el.hidden) return true; 4170 if (['SCRIPT', 'STYLE', 'TEMPLATE'].includes(el.tagName)) return true; 4171 if ( 4172 el.closest('#pp-nav-panel') || 4173 el.closest('#pp-nav-pill') || 4174 el.closest('#pp-pick-overlay') 4175 ) 4176 return true; 4177 if (el.hasAttribute('data-pp-message')) return true; 4178 if (!hasSpecificSelector(el)) return true; 4179 return false;
4180 }; 4181 const resolveContextName = (providedContextName, messagingTemplate) => { 4182 if (providedContextName && providedContextName !== 'this area') return providedContextName; 4183 const id = messagingTemplate?.id || ''; 4184 if (id.includes('cart-drawer')) return 'Cart Drawer'; 4185 if (id.includes('cart')) return 'Cart Page'; 4186 if (id.includes('product')) return 'Product Page'; 4187 return 'this area'; 4188 }; 4189 4190 // Called when the cart drawer closes (via IntersectionObserver in cartDrawer.liquid) 4191 // and at the start of createNavigationPanel to tear down any existing instance. 4192 // Cleans up pick mode listeners, DOM elements, highlights, and preview clones. 4193 const destroyNavigationPanel = () => { 4194 if (_panelPickModeCleanup) { 4195 _panelPickModeCleanup(); 4196 _panelPickModeCleanup = null; 4197 } 4198 document.getElementById('pp-nav-panel')?.remove(); 4199 document.getElementById('pp-nav-pill')?.remove(); 4200 const preview = document.querySelector('[id$="-preview"][data-pp-message]'); 4201 if (preview) preview.remove(); 4202 if (_highlightedElement) { 4203 _highlightedElement.style.outline = ''; 4204 _highlightedElement.style.outlineOffset = ''; 4205 _highlightedElement = null; 4206 } 4207 if (_panelInspectorActivate) { 4208 document.removeEventListener('shopify:inspector:activate', _panelInspectorActivate); 4209 document.removeEventListener('shopify:inspector:deactivate', _panelInspectorDeactivate); 4210 _panelInspectorActivate = _panelInspectorDeactivate = null; 4211 } 4212 document.documentElement.style.cursor = ''; 4213 }; 4214 4215 const createNavigationPanel = ( 4216 initialElement, 4217 messagingTemplate, 4218 warningMessage = null, 4219 contextName = 'this area', 4220 ) => {
4221 let currentTarget = initialElement; 4222 let resolvedContextName = resolveContextName(contextName, messagingTemplate); 4223 destroyNavigationPanel(); 4224 4225 const panel = document.createElement('div'); 4226 panel.id = 'pp-nav-panel'; 4227 const tmpl = document.getElementById('pp-nav-template'); 4228 panel.appendChild(tmpl.content.cloneNode(true)); 4229 4230 // Create minimized pill button (separate from panel) 4231 const pill = document.createElement('button'); 4232 pill.id = 'pp-nav-pill'; 4233 pill.innerHTML = 'PayPal Pay Later Messaging'; 4234 const applyBtn = panel.querySelector('#pp-apply-btn'); 4235 const warningEl = panel.querySelector('#pp-warning'); 4236 const step2 = panel.querySelector('#pp-step2'); 4237 const step2Dismiss = panel.querySelector('#pp-step2-dismiss'); 4238 const contextEl = panel.querySelector('#pp-context-name'); 4239 const selectorEl = panel.querySelector('#pp-selector-name'); 4240 const updateContextUI = (newContext) => { 4241 resolvedContextName = newContext; 4242 if (contextEl) contextEl.textContent = resolvedContextName; 4243 if (selectorEl) { 4244 selectorEl.textContent = resolvedContextName; 4245 } 4246 }; 4247 updateContextUI(resolvedContextName); 4248 const detectContextFromElement = (el) => { 4249 if (el.closest('#CartDrawer, .drawer, .cart-drawer, [id*="cart-drawer"], [class*="cart-drawer"]')) 4250 return 'Cart Drawer'; 4251 if (window.location.pathname.endsWith('/cart') || el.closest('.cart, #cart, #main-cart-items, #main-cart-footer')) 4252 return 'Cart Page'; 4253 return 'Product Page'; 4254 }; 4255 4256 // Show warning message if provided 4257 if (warningMessage && warningEl) { 4258 warningEl.innerHTML = `<span class="pp-warning-icon">â ï¸</span>${warningMessage}`; 4259 warningEl.style.display = 'block'; 4260 } 4261 let isInitialRender = true; 4262 const updateUI = () => { 4263 // Highlight element 4264 highlightElement(currentTarget); 4265 // Update button states 4266 applyBtn.textContent = COPY_BUTTON_LABEL; 4267 applyBtn.classList.remove('applied'); 4268 // Reposition messaging â skip on initial render (already placed correctly by auto-detection) 4269 if (!isInitialRender) repositionMessaging(); 4270 isInitialRender = false;
4271 }; 4272 4273 const highlightElement = (el) => { 4274 if (_highlightedElement) { 4275 _highlightedElement.style.outline = ''; 4276 _highlightedElement.style.outlineOffset = ''; 4277 } 4278 _highlightedElement = el; 4279 if (el) { 4280 el.style.outline = '2px solid rgba(255,152,0,0.6)'; 4281 el.style.outlineOffset = '-1px'; 4282 } 4283 }; 4284 4285 const repositionMessaging = () => { 4286 if (!currentTarget) return; 4287 const existing = document.getElementById(messagingTemplate.id); 4288 const targetInOverlay = isInOverlay(currentTarget); 4289 const msgInOverlay = existing && isInOverlay(existing); 4290 if (targetInOverlay !== msgInOverlay) { 4291 // Cross-context: reposition messaging in the target's context without touching the original 4292 const allMessaging = document.querySelectorAll('[data-pp-message]'); 4293 let contextMsg = null; 4294 for (const el of allMessaging) { 4295 if (isInOverlay(el) === targetInOverlay) { contextMsg = el; break; } 4296 } 4297 if (!contextMsg) { 4298 contextMsg = messagingTemplate.cloneNode(true); 4299 contextMsg.id = messagingTemplate.id + '-preview'; 4300 } 4301 contextMsg.remove(); 4302 currentTarget.after(contextMsg); 4303 return; 4304 } 4305 if (existing) existing.remove(); 4306 const newMessaging = messagingTemplate.cloneNode(true); 4307 currentTarget.after(newMessaging); 4308 }; 4309 4310 const collapseBtn = panel.querySelector('#pp-collapse-btn'); 4311 const pickBtn = panel.querySelector('#pp-pick-btn'); 4312 let pickMode = false; 4313 let pickHoverTarget = null; 4314 let pickOverlay = null; 4315 let pickLabel = null; 4316 let applyBtnResetTimer = null; 4317 let _pickRafId = null; 4318 4319 const enterPickMode = () => { 4320 pickMode = true; 4321 document.documentElement.style.cursor = 'crosshair'; 4322 pickBtn.classList.add('active'); 4323 pickBtn.innerHTML = 'â Pick a spot on the page...'; 4324 applyBtn.textContent = COPY_BUTTON_LABEL; 4325 applyBtn.classList.remove('applied'); 4326 applyBtn.style.display = 'flex'; 4327 step2.style.display = 'none'; 4328 if (contextEl) contextEl.textContent = resolvedContextName; 4329 // Create overlay for highlighting (pointer-events:none prevents interference) 4330 pickOverlay = document.createElement('div'); 4331 pickOverlay.id = 'pp-pick-overlay'; 4332 pickOverlay.style.cssText = OVERLAY_STYLE; 4333 pickLabel = document.createElement('div'); 4334 pickLabel.style.cssText = OVERLAY_LABEL_STYLE; 4335 pickOverlay.appendChild(pickLabel); 4336 document.body.appendChild(pickOverlay); 4337 4338 document.addEventListener('mousemove', onPickHover, true); 4339 document.addEventListener('click', onPickClick, true); 4340 document.addEventListener('mousedown', onPickSuppressEvent, true); 4341 document.addEventListener('pointerdown', onPickSuppressEvent, true); 4342 }; 4343 4344 const exitPickMode = () => { 4345 pickMode = false; 4346 document.documentElement.style.cursor = ''; 4347 pickBtn.classList.remove('active'); 4348 pickBtn.innerHTML = 'â Start Picking Placement'; 4349 applyBtn.style.display = 'none'; 4350 // Remove overlay 4351 const overlay = document.getElementById('pp-pick-overlay'); 4352 if (overlay) overlay.remove(); 4353 pickOverlay = null; 4354 pickLabel = null; 4355 pickHoverTarget = null; 4356 4357 if (_pickRafId) { cancelAnimationFrame(_pickRafId); _pickRafId = null; } 4358 document.removeEventListener('mousemove', onPickHover, true); 4359 document.removeEventListener('click', onPickClick, true); 4360 document.removeEventListener('mousedown', onPickSuppressEvent, true); 4361 document.removeEventListener('pointerdown', onPickSuppressEvent, true); 4362 }; 4363 4364 // Find the nearest visible child element to cursor coordinates 4365 const snapToNearestChild = (parent, cx, cy) => { 4366 const children = parent.children; 4367 if (!children.length) return null; 4368 let best = null; 4369 let bestDist = 30; 4370 for (const child of children) { 4371 if (shouldSkipElement(child)) continue; 4372 const r = child.getBoundingClientRect(); 4373 if (r.width === 0 || r.height === 0) continue; 4374 const dx = cx < r.left ? r.left - cx : cx > r.right ? cx - r.right : 0; 4375 const dy = cy < r.top ? r.top - cy : cy > r.bottom ? cy - r.bottom : 0; 4376 const dist = Math.sqrt(dx * dx + dy * dy); 4377 if (dist < bestDist) { 4378 bestDist = dist; 4379 best = child; 4380 } 4381 } 4382 return best; 4383 }; 4384 4385 const onPickHover = (e) => { 4386 if (_pickRafId) return; 4387 _pickRafId = requestAnimationFrame(() => { 4388 _pickRafId = null; 4389 let el = document.elementFromPoint(e.clientX, e.clientY); 4390 if (!el || shouldSkipElement(el)) { 4391 document.documentElement.style.cursor = 'not-allowed'; 4392 if (pickOverlay) pickOverlay.style.display = 'none'; 4393 pickHoverTarget = null; 4394 return; 4395 } 4396 4397 if (el.children.length > 0) { 4398 const snapped = snapToNearestChild(el, e.clientX, e.clientY); 4399 if (snapped) el = snapped; 4400 } 4401 4402 // Skip elements without a unique selector 4403 if (shouldSkipElement(el)) { 4404 document.documentElement.style.cursor = 'not-allowed'; 4405 pickHoverTarget = null; 4406 if (pickOverlay) pickOverlay.style.display = 'none'; 4407 return; 4408 } 4409 document.documentElement.style.cursor = 'crosshair'; 4410 if (el === pickHoverTarget) return; 4411 pickHoverTarget = el; 4412 positionOverlayOnElement(pickOverlay, el);
4413 pickLabel.innerHTML = 'Select this placement'; 4414 }); 4415 }; 4416 4417 const onPickSuppressEvent = (e) => { 4418 if (e.target.closest('#pp-nav-panel')) return; 4419 e.preventDefault(); 4420 e.stopPropagation(); 4421 }; 4422 4423 const onPickClick = (e) => { 4424 if (e.target.closest('#pp-nav-panel')) return; 4425 e.preventDefault(); 4426 e.stopPropagation(); 4427 e.stopImmediatePropagation(); 4428 if (pickHoverTarget && !shouldSkipElement(pickHoverTarget)) { 4429 currentTarget = pickHoverTarget; 4430 updateContextUI(detectContextFromElement(currentTarget)); 4431 updateUI(); 4432 } 4433 }; 4434 4435 // --- Pick button --- 4436 pickBtn.addEventListener('click', () => { 4437 if (pickMode) exitPickMode(); 4438 else enterPickMode(); 4439 }); 4440 4441 _panelPickModeCleanup = () => { if (pickMode) exitPickMode(); }; 4442 4443 // --- Minimize / expand --- 4444 collapseBtn.addEventListener('click', () => { 4445 if (pickMode) exitPickMode(); 4446 panel.classList.add('minimized'); 4447 pill.style.display = 'flex'; 4448 highlightElement(null); 4449 }); 4450 pill.addEventListener('click', () => { 4451 panel.classList.remove('minimized'); 4452 pill.style.display = 'none'; 4453 highlightElement(currentTarget); 4454 }); 4455 4456 // --- Step 2 dismiss --- 4457 step2Dismiss.addEventListener('click', () => { 4458 step2.style.display = 'none'; 4459 }); 4460 4461 // Handle copy button click 4462 panel.addEventListener('click', async (e) => { 4463 const button = e.target.closest('#pp-apply-btn'); 4464 if (!button) return; 4465 // Skip buttons handled separately 4466 if (button.id === 'pp-collapse-btn' || button.id === 'pp-pick-btn' || button.id === 'pp-step2-dismiss') return; 4467 if (button.id === 'pp-apply-btn') { 4468 const selector = generateSelector(currentTarget); 4469 if (!selector) return; 4470 let copied = false; 4471 try { 4472 // Try multiple copy methods (iframe security blocks clipboard API) 4473 if (navigator.clipboard?.writeText) { 4474 await navigator.clipboard.writeText(selector); 4475 copied = true; 4476 } 4477 } catch {} 4478 if (!copied) { 4479 try { 4480 const ta = document.createElement('textarea'); 4481 ta.value = selector; 4482 ta.style.position = 'fixed'; 4483 ta.style.opacity = '0'; 4484 document.body.appendChild(ta); 4485 ta.select(); 4486 copied = document.execCommand('copy'); 4487 ta.remove(); 4488 } catch {} 4489 } 4490 if (copied) { 4491 applyBtn.textContent = COPIED_BUTTON_LABEL; 4492 applyBtn.classList.add('applied'); 4493 if (applyBtnResetTimer) clearTimeout(applyBtnResetTimer); 4494 applyBtnResetTimer = setTimeout(() => { 4495 applyBtn.textContent = COPY_BUTTON_LABEL; 4496 applyBtn.classList.remove('applied'); 4497 applyBtnResetTimer = null; 4498 }, 1200); 4499 // Show Step 2 confirmation 4500 step2.style.display = 'block'; 4501 } 4502 exitPickMode(); 4503 } 4504 }); 4505 4506 // --- Inspector mode detection --- 4507 const inspectorWarning = panel.querySelector('#pp-inspector-warning'); 4508 let inspectorActive = typeof Shopify !== 'undefined' && Shopify.inspectMode; 4509 const isMac = navigator.platform?.startsWith('Mac') || navigator.userAgentData?.platform === 'macOS'; 4510 const shortcut = isMac ? 'â â§ I' : 'Ctrl + Shift + I'; 4511 const enableInspectorMode = () => { 4512 inspectorActive = true; 4513 inspectorWarning.innerHTML = `<span class="pp-warning-icon">â ï¸</span> For a better experience, press <strong>${shortcut}</strong> to turn off inspector mode`; 4514 inspectorWarning.style.display = 'block'; 4515 }; 4516 const disableInspectorMode = () => { 4517 inspectorActive = false; 4518 inspectorWarning.style.display = 'none'; 4519 }; 4520 _panelInspectorActivate = enableInspectorMode; 4521 _panelInspectorDeactivate = disableInspectorMode; 4522 document.addEventListener('shopify:inspector:activate', enableInspectorMode); 4523 document.addEventListener('shopify:inspector:deactivate', disableInspectorMode); 4524 4525 // Prevent panel/pill clicks from closing cart drawer (themes close drawer on outside mousedown) 4526 const stopBubble = (e) => e.stopPropagation(); 4527 panel.addEventListener('mousedown', stopBubble); 4528 panel.addEventListener('pointerdown', stopBubble); 4529 pill.addEventListener('mousedown', stopBubble); 4530 pill.addEventListener('pointerdown', stopBubble); 4531 4532 document.body.appendChild(panel); 4533 document.body.appendChild(pill); 4534 if (inspectorActive) enableInspectorMode(); 4535 updateUI(); 4536 return panel; 4537 }; 4538</script>
4538 4539<!-- END app snippet --><!-- BEGIN app snippet: cartDrawer -->
4539<script> 4540 // Determine correct locator by theme name 4541 const cartDrawerThemeName = window.Shopify.theme.name; 4542 let cartDrawerLocator, cartDrawerNodeToObserve, cartDrawerMutationNode; 4543 4544 switch (cartDrawerThemeName) { 4545 // to support other themes add cases 4546 // default case supports Shopify Free themes 4547 default: 4548 cartDrawerLocator = '.cart-drawer__footer .totals'; 4549 cartDrawerNodeToObserve = '#CartDrawer'; 4550 cartDrawerMutationNode = 'drawer__inner'; 4551 break; 4552 } 4553 // Begin Upstream Messaging Implementation 4554 try { 4555 const cartDrawerMessaging = document.createElement('div'); 4556 const price = 0 / 100; 4557 4558 const cartDrawerAttributes = { 4559 'id': 'paypal-upstream-messaging-cart-drawer', 4560 'data-pp-message': '', 4561 'data-pp-placement': 'cart', 4562 'data-pp-style-layout': 'text', 4563 'data-pp-style-text-align': 'right', 4564 'data-pp-style-logo-type': "inline", 4565 'data-pp-style-text-color': "black", 4566 'data-pp-style-text-size': "16", 4567 'data-pp-style-logo-position': "", 4568 'data-pp-amount': price, 4569 }; 4570 4571 Object.keys(cartDrawerAttributes).forEach((key) => { 4572 cartDrawerMessaging.setAttribute(key, cartDrawerAttributes[key]); 4573 }); 4574 4575 const advancedSettingsEnabled = 'true' === 'true'; 4576 const customCartDrawerSelector = ''.trim(); 4577 4578 if (advancedSettingsEnabled && customCartDrawerSelector !== '') { 4579 // utils.liquid 4580 cartDrawerLocator = parseSelector(customCartDrawerSelector); 4581 } 4582 4583 if ("enabled" === 'enabled') { 4584 waitForElement(cartDrawerLocator).then(elem => { 4585 elem.after(cartDrawerMessaging.cloneNode()); 4586 4587 if (advancedSettingsEnabled && isIsolatedContext() && !document.getElementById('pp-nav-panel')) { 4588 let drawerPanelActive = false; 4589 new IntersectionObserver((entries) => { 4590 if (entries[0].isIntersecting) { 4591 if (!document.getElementById('pp-nav-panel')) { 4592 setTimeout(() => { 4593 if (!document.getElementById('pp-nav-panel')) { 4594 createNavigationPanel(elem, cartDrawerMessaging, null, 'Cart Drawer'); 4595 drawerPanelActive = true; 4596 } 4597 }, 300); 4598 } 4599 } else if (drawerPanelActive) { 4600 destroyNavigationPanel(); 4601 drawerPanelActive = false; 4602 } 4603 }, { threshold: 0.1 }).observe(elem); 4604 } 4605 }); 4606 4607 // Custom selector not found â show navigator with warning when drawer opens 4608 if (advancedSettingsEnabled && customCartDrawerSelector && !document.querySelector(cartDrawerLocator) && isIsolatedContext() && !document.getElementById('pp-nav-panel')) { 4609 const drawerContainer = document.querySelector(cartDrawerNodeToObserve); 4610 if (drawerContainer) { 4611 let warningPanelActive = false; 4612 const warning = 'Selected placement not found on this page. Please choose an element that is present on all page templates.'; 4613 recordEvent('appEmbed:advanced-settings-selector-not-found', { locator: cartDrawerLocator }); 4614 new IntersectionObserver((entries) => { 4615 if (entries[0].isIntersecting) { 4616 if (!document.getElementById('pp-nav-panel')) { 4617 setTimeout(() => { 4618 if (!document.getElementById('pp-nav-panel')) { 4619 createNavigationPanel(drawerContainer, cartDrawerMessaging, warning, 'Cart Drawer'); 4620 warningPanelActive = true; 4621 } 4622 }, 300); 4623 } 4624 } else if (warningPanelActive) { 4625 destroyNavigationPanel(); 4626 warningPanelActive = false; 4627 } 4628 }, { threshold: 0.1 }).observe(drawerContainer); 4629 } 4630 } 4631 4632 // utils.liquid 4633 watchForCartChanges(cartDrawerLocator, cartDrawerMessaging); 4634 } 4635 } catch (e) { 4636 // utils.liquid 4637 recordEvent('appEmbed:query-selector-not-found-cart-drawer', { locator: cartDrawerLocator, error: e.message }); 4638 } 4639 </script>
4639 4640<!-- END app snippet --> 4641 4642 4643</div><div id="shopify-block-AYWlrTlpQRGRQaXlOZ__5280235153711299465" class="shopify-block shopify-app-block">
4643<script> 4644 window.__widerrufLocale = "de"; 4645 4646 4647 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\"}}}"); 4648 4649</script>
4649 4650
4651<script> 4652 (function () { 4653 var src = "https:\/\/cdn.shopify.com\/extensions\/01a0eecd-e3cf-72d9-81f3-f3f881b5b528\/checkout-regeln-grosse-warenkoerbe-2026-09-29\/assets\/widerruf-button.js"; 4654 function ensure() { 4655 if (window.__widerrufButtonLoaded) return; 4656 var s = document.createElement("script"); 4657 s.src = src; 4658 s.defer = true; 4659 document.head.appendChild(s); 4660 } 4661 if (document.readyState === "complete") { 4662 ensure(); 4663 } else { 4664 window.addEventListener("load", ensure); 4665 } 4666 })(); 4667</script>
4667 4668 4669 4670</div><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="eyAgICAgICAidHlwZXMiOiBbIkFOTk9VTkNFTUVOVF9CQU5ORVIiLCJQUk9EVUNUX1BBR0VfQkFOTkVSIiwiUkVXQVJEX1NIT1dDQVNFIiwiUkVXQVJEX1NIT1dDQVNFX1VQU0VMTCJdLCAgICAgICAiZW1iZWRkZWQiOiB0cnVlLCAgICAgICAidGVtcGxhdGUiOiB7ICAgICAgICAgIm5hbWUiOiAic2VhcmNoIiAgICAgICB9LCAgICAgICAgICAgICAgImFwcCI6IHsgICAgICAgICAicHJveHlTdWJQYXRoIjogImtvYWxhLXVwc2VsbC1naWZ0IiAgICAgICB9LCAgICAgICAiY3VzdG9tZXIiOiB7ICAgICAgICAgImlzQXV0aGVudGljYXRlZCI6IGZhbHNlLCAgICAgICAgICJhbGxUaW1lQW1vdW50U3BlbnQiOiAwLCAgICAgICAgICJhbGxUaW1lT3JkZXJzQ291bnQiOiAwLCAgICAgICAgICJ0YWdzIjogeyAgICAgICAgICAgICAgICAgICAgfSAgICAgICB9LCAgICAgICAic2hvcCI6IHsgICAgICAgICAibG9jYWxlIjogImRlIiwgICAgICAgICAibW9uZXlGb3JtYXQiOiAi4oKse3thbW91bnRfd2l0aF9jb21tYV9zZXBhcmF0b3J9fSIsICAgICAgICAgImZsYWdzIjoge30gICAgICAgfSwgICAgICAgIm9mZmVycyI6IFsgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAgICAgImlkIjogImNtZGluNXRqdDBwZHh6NTFpaWVjOGo3M20iLCAgICAgICAgICAgICAiZGVmaW5pdGlvbiI6IHsidGllcnMiOlt7ImlkIjoiNjBlZjU5MzYtZGI3Ny00MWIyLTljMzUtMWRlZjYzNjllMDVmIiwibmFtZSI6IlRpZXIgMSIsInJld2FyZCI6eyJ0eXBlIjoiUFJPRFVDVCIsIml0ZW1zIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFwvMTUwODM5MDA0Njk2MjciLCJoYW5kbGUiOiJmbGV4cHVtcC1tb2JpbGVyLW1pbmkta29tcHJlc3NvciIsInZhcmlhbnRzIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NDU3MDk2MDQwODI3IiwicXVhbnRpdHkiOjF9XX1dLCJkaXNjb3VudCI6eyJuYW1lIjp7InZhbHVlIjoiRlJFRSBHSUZUIn0sInR5cGUiOiJQRVJDRU5UQUdFIiwidmFsdWUiOjEwMH19LCJ0cmlnZ2VycyI6W3sidHlwZSI6IlNQRUNJRklDX1BST0RVQ1QiLCJpdGVtcyI6W3siaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RcLzE1MDgzODk3MjU4MzYzIiwidmFyaWFudHMiOlt7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU0NTcwODY5OTY4NTkifV19LHsiaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RcLzE1MDQ4NTczMzg3MTMxIiwidmFyaWFudHMiOlt7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTUzNTI5MjE2NTM2MjcifSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTUzNTI5MjE3MTkxNjMifV19LHsiaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RcLzE1MDgzODk3MDk0NTIzIiwidmFyaWFudHMiOlt7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU0NTcwODY4MzMwMTkifV19LHsiaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RcLzE1MDgzODk3MTYwMDU5IiwidmFyaWFudHMiOlt7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU0NTcwODY4OTg1NTUifV19LHsiaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RcLzE1MDgzODk3MTkyODI3IiwidmFyaWFudHMiOlt7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU0NTcwODY5MzEzMjMifV19LHsiaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RcLzE1MDgzODk3MjI1NTk1IiwidmFyaWFudHMiOlt7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU0NTcwODY5NjQwOTEifV19LHsiaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RcLzE1MDgzODk3NDg3NzM5IiwidmFyaWFudHMiOlt7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU0NTcwODcyMjYyMzUifV19LHsiaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RcLzE1MDgzODk3NTIwNTA3IiwidmFyaWFudHMiOlt7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU0NTcwODcyNTkwMDMifV19LHsiaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RcLzE1MDgzODk3NTUzMjc1IiwidmFyaWFudHMiOlt7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU0NTcwODcyOTE3NzEifV19LHsiaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RcLzE1MDgzODk3NjE4ODExIiwidmFyaWFudHMiOlt7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU0NTcwODczNTczMDcifV19LHsiaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RcLzE1MDgzODk3NjUxNTc5IiwidmFyaWFudHMiOlt7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU0NTcwODczOTAwNzUifSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU2Mzc5Nzg5MDcwMDMifSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU2Mzc5Nzg5Mzk3NzEifSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU2Mzc5Nzg5NzI1MzkifV19LHsiaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RcLzE1MDgzODk3Njg0MzQ3IiwidmFyaWFudHMiOlt7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU0NTcwODc0MjI4NDMifV19LHsiaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RcLzE1MDgzODk3NzE3MTE1IiwidmFyaWFudHMiOlt7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU0NTcwODc0NTU2MTEifSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU0NTcwODc0ODgzNzkifV19XSwicnVsZXMiOltdfV19XSwiYWN0aW9uIjoiQVVUT19BRERfVE9fQ0FSVCIsIm9wdGlvbnMiOnsibGltaXQiOnsidmFsdWUiOjUsImVuYWJsZWQiOnRydWV9LCJzY2hlZHVsZSI6eyJzdGFydCI6IjIwMjUtMDctMjRUMDk6NTk6NDEuMzQxWiIsImVuYWJsZWQiOmZhbHNlfSwid29ya3NJblJldmVyc2UiOmZhbHNlfSwidmVyc2lvbiI6IlYyIn0sICAgICAgICAgICAgICJjb21wYXRpYmlsaXR5Ijoge30sICAgICAgICAgICAgICJ0ZW1wbGF0ZSI6IHt9LCAgICAgICAgICAgICAidHlwZSI6ICJCWEdZIiAgICAgICAgICAgfSAgICAgICAgICAgICAgICBdLCAgICAgICAicmV3YXJkUHJvZHVjdHMiOiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjYwZWY1OTM2LWRiNzctNDFiMi05YzM1LTFkZWY2MzY5ZTA1ZiI6IFsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
4670HsgICAgICAgICAgICAgICAgICAgICAgICJpZCI6IDE1MDgzOTAwNDY5NjI3LCAgICAgICAgICAgICAgICAgICAgICAgInRpdGxlIjogIk9EWVMgRmxleFB1bXAgLSBNb2JpbGVyIE1pbmkgS29tcHJlc3NvciIsICAgICAgICAgICAgICAgICAgICAgICAiaGFzT25seURlZmF1bHRWYXJpYW50IjogdHJ1ZSwgICAgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlc1NlbGxpbmdQbGFuIjogZmFsc2UsICAgICAgICAgICAgICAgICAgICAgICAiZmVhdHVyZWRfaW1hZ2UiOiAiXC9cL29kaXBvcm8uZGVcL2Nkblwvc2hvcFwvZmlsZXNcL3g5MTAwMDEtb2R5cy1mbGV4cHVtcC1taW5pYWlyY29tcHBiMTIwMHgxMjAwcHh2MDJqcGctMTA1NTg3LmpwZz92PTE3NDgyMjI3MjQiLCAgICAgICAgICAgICAgICAgICAgICAgInVybCI6ICIvcHJvZHVjdHMvZmxleHB1bXAtbW9iaWxlci1taW5pLWtvbXByZXNzb3IiLCAgICAgICAgICAgICAgICAgICAgICAgInZhcmlhbnRzIjogWyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaWQiOiA1NTQ1NzA5NjA0MDgyNywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpdGxlIjogIkRlZmF1bHQgVGl0bGUiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJpY2UiOiAzOTk5LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcGFyZV9hdF9wcmljZSI6IDQ5OTksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdmFpbGFibGUiOiB0cnVlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmVhdHVyZWRfaW1hZ2UiOiBudWxsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52ZW50b3J5X21hbmFnZW1lbnQiOiAic2hvcGlmeSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZlbnRvcnlfcG9saWN5IjogIkNPTlRJTlVFIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmVudG9yeV9xdWFudGl0eSI6IDgwNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAgICAgICAibWFya2V0IjogeyAgICAgICAgICJpZCI6ICI5NjM3MTM3NjUwNyIsICAgICAgICAgImNvdW50cnlDb2RlIjogIkRFIiwgICAgICAgICAibGFuZ3VhZ2VDb2RlIjogIkRFIiAgICAgICB9LCAgICAgICAic2VsZWN0b3JzIjogW10gICAgIH0="></koala-gifts-banners> <!-- END app snippet --> <!-- BEGIN app snippet: styles --> <!-- END app snippet --> <!-- BEGIN app snippet: script --> <!-- END app snippet --> <koala-gifts data-state="eyAgICAgICAidGVtcGxhdGUiOiB7ICAgICAgICJuYW1lIjogInNlYXJjaCIgICAgICAgfSwgICAgICAgICAgICAgICJhcHAiOiB7ICAgICAgICJwcm94eVN1YlBhdGgiOiAia29hbGEtdXBzZWxsLWdpZnQiICAgICAgIH0sICAgICAgICJjdXN0b21lciI6IHsgICAgICAgImlzQXV0aGVudGljYXRlZCI6IGZhbHNlLCAgICAgICAiYWxsVGltZUFtb3VudFNwZW50IjogMCwgICAgICAgImFsbFRpbWVPcmRlcnNDb3VudCI6IDAsICAgICAgICJ0YWdzIjogeyAgICAgICAgICAgICAgfSAgICAgICB9LCAgICAgICAic2hvcCI6IHsgICAgICAgImxvY2FsZSI6ICJkZSIsICAgICAgICJtb25leUZvcm1hdCI6ICLigqx7e2Ftb3VudF93aXRoX2NvbW1hX3NlcGFyYXRvcn19IiwgICAgICAgImZsYWdzIjoge30gICAgICAgfSwgICAgICAgIm9mZmVycyI6IFsgICAgICAgICAgICAgICAgeyAgICAgICAgICJpZCI6ICJjbWRpbjV0anQwcGR4ejUxaWllYzhqNzNtIiwgICAgICAgICAiZGVmaW5pdGlvbiI6IHsidGllcnMiOlt7ImlkIjoiNjBlZjU5MzYtZGI3Ny00MWIyLTljMzUtMWRlZjYzNjllMDVmIiwibmFtZSI6IlRpZXIgMSIsInJld2FyZCI6eyJ0eXBlIjoiUFJPRFVDVCIsIml0ZW1zIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFwvMTUwODM5MDA0Njk2MjciLCJoYW5kbGUiOiJmbGV4cHVtcC1tb2JpbGVyLW1pbmkta29tcHJlc3NvciIsInZhcmlhbnRzIjpbeyJpZCI6ImdpZDpcL1wvc2hvcGlmeVwvUHJvZHVjdFZhcmlhbnRcLzU1NDU3MDk2MDQwODI3IiwicXVhbnRpdHkiOjF9XX1dLCJkaXNjb3VudCI6eyJuYW1lIjp7InZhbHVlIjoiRlJFRSBHSUZUIn0sInR5cGUiOiJQRVJDRU5UQUdFIiwidmFsdWUiOjEwMH19LCJ0cmlnZ2VycyI6W3sidHlwZSI6IlNQRUNJRklDX1BST0RVQ1QiLCJpdGVtcyI6W3siaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RcLzE1MDgzODk3MjU4MzYzIiwidmFyaWFudHMiOlt7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU0NTcwODY5OTY4NTkifV19LHsiaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RcLzE1MDQ4NTczMzg3MTMxIiwidmFyaWFudHMiOlt7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTUzNTI5MjE2NTM2MjcifSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTUzNTI5MjE3MTkxNjMifV19LHsiaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RcLzE1MDgzODk3MDk0NTIzIiwidmFyaWFudHMiOlt7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU0NTcwODY4MzMwMTkifV19LHsiaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RcLzE1MDgzODk3MTYwMDU5IiwidmFyaWFudHMiOlt7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU0NTcwODY4OTg1NTUifV19LHsiaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RcLzE1MDgzODk3MTkyODI3IiwidmFyaWFudHMiOlt7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU0NTcwODY5MzEzMjMifV19LHsiaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RcLzE1MDgzODk3MjI1NTk1IiwidmFyaWFudHMiOlt7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU0NTcwODY5NjQwOTEifV19LHsiaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RcLzE1MDgzODk3NDg3NzM5IiwidmFyaWFudHMiOlt7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU0NTcwODcyMjYyMzUifV19LHsiaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RcLzE1MDgzODk3NTIwNTA3IiwidmFyaWFudHMiOlt7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU0NTcwODcyNTkwMDMifV19LHsiaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RcLzE1MDgzODk3NTUzMjc1IiwidmFyaWFudHMiOlt7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU0NTcwODcyOTE3NzEifV19LHsiaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RcLzE1MDgzODk3NjE4ODExIiwidmFyaWFudHMiOlt7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU0NTcwODczNTczMDcifV19LHsiaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RcLzE1MDgzODk3NjUxNTc5IiwidmFyaWFudHMiOlt7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU0NTcwODczOTAwNzUifSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU2Mzc5Nzg5MDcwMDMifSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU2Mzc5Nzg5Mzk3NzEifSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU2Mzc5Nzg5NzI1MzkifV19LHsiaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RcLzE1MDgzODk3Njg0MzQ3IiwidmFyaWFudHMiOlt7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU0NTcwODc0MjI4NDMifV19LHsiaWQiOiJnaWQ6XC9cL3Nob3BpZnlcL1Byb2R1Y3RcLzE1MDgzODk3NzE3MTE1IiwidmFyaWFudHMiOlt7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU0NTcwODc0NTU2MTEifSx7ImlkIjoiZ2lkOlwvXC9zaG9waWZ5XC9Qcm9kdWN0VmFyaWFudFwvNTU0NTcwODc0ODgzNzkifV19XSwicnVsZXMiOltdfV19XSwiYWN0aW9uIjoiQVVUT19BRERfVE9fQ0FSVCIsIm9wdGlvbnMiOnsibGltaXQiOnsidmFsdWUiOjUsImVuYWJsZWQiOnRydWV9LCJzY2hlZHVsZSI6eyJzdGFydCI6IjIwMjUtMDctMjRUMDk6NTk6NDEuMzQxWiIsImVuYWJsZWQiOmZhbHNlfSwid29ya3NJblJldmVyc2UiOmZhbHNlfSwidmVyc2lvbiI6IlYyIn0sICAgICAgICAgImNvbXBhdGliaWxpdHkiOiB7fSwgICAgICAgICAidGVtcGxhdGUiOiB7fSwgICAgICAgICAidHlwZSI6ICJCWEdZIiAgICAgICAgI
4670H0gICAgICAgICAgICAgIF0sICAgICAgICJyZXdhcmRQcm9kdWN0cyI6IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjYwZWY1OTM2LWRiNzctNDFiMi05YzM1LTFkZWY2MzY5ZTA1ZiI6IFsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICJpZCI6IDE1MDgzOTAwNDY5NjI3LCAgICAgICAgICAgICAgICAgICAgICAgInRpdGxlIjogIk9EWVMgRmxleFB1bXAgLSBNb2JpbGVyIE1pbmkgS29tcHJlc3NvciIsICAgICAgICAgICAgICAgICAgICAgICAiaGFzT25seURlZmF1bHRWYXJpYW50IjogdHJ1ZSwgICAgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlc1NlbGxpbmdQbGFuIjogZmFsc2UsICAgICAgICAgICAgICAgICAgICAgICAiZmVhdHVyZWRfaW1hZ2UiOiAiXC9cL29kaXBvcm8uZGVcL2Nkblwvc2hvcFwvZmlsZXNcL3g5MTAwMDEtb2R5cy1mbGV4cHVtcC1taW5pYWlyY29tcHBiMTIwMHgxMjAwcHh2MDJqcGctMTA1NTg3LmpwZz92PTE3NDgyMjI3MjQiLCAgICAgICAgICAgICAgICAgICAgICAgInVybCI6ICIvcHJvZHVjdHMvZmxleHB1bXAtbW9iaWxlci1taW5pLWtvbXByZXNzb3IiLCAgICAgICAgICAgICAgICAgICAgICAgInZhcmlhbnRzIjogWyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpZCI6IDU1NDU3MDk2MDQwODI3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGl0bGUiOiAiRGVmYXVsdCBUaXRsZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcmljZSI6IDM5OTksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21wYXJlX2F0X3ByaWNlIjogNDk5OSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF2YWlsYWJsZSI6IHRydWUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmZWF0dXJlZF9pbWFnZSI6IG51bGwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZlbnRvcnlfbWFuYWdlbWVudCI6ICJzaG9waWZ5IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmVudG9yeV9wb2x
4670pY3kiOiAiQ09OVElOVUUiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52ZW50b3J5X3F1YW50aXR5IjogODA2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAgICAgICAibWFya2V0IjogeyAgICAgICAiaWQiOiAiOTYzNzEzNzY1MDciLCAgICAgICAiY291bnRyeUNvZGUiOiAiREUiLCAgICAgICAibGFuZ3VhZ2VDb2RlIjogIkRFIiAgICAgICB9ICAgICAgIH0="></koala-gifts> <!-- BEGIN app snippet: koala-ids --> <!-- END app snippet --> </div>
4670<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
4670 4671</body> 4672</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.