1<!doctype html> 2<html 3 4 lang="de" 5> 6 <head> 7 8<style> 9@media screen and (max-width: 749px) { 10 [id="shopify-section-template--27742387536136__section_pcwHgw"] p, 11 [id="shopify-section-template--27742387536136__section_pcwHgw"] .text-block--AQzBETjFjMU44aHRmQ_text_URXane { 12 font-size: 1.1rem !important; 13 line-height: 1.5 !important; 14 } 15} 16</style><link 17 rel="icon" 18 type="image/png" 19 href="//luxupur.de/cdn/shop/files/favicon-luxupur.png?crop=center&height=32&v=1775301969&width=32" 20 > 21 22<meta charset="utf-8"> 23<meta 24 http-equiv="X-UA-Compatible" 25 content="IE=edge" 26> 27<meta 28 name="viewport" 29 content="width=device-width,initial-scale=1" 30> 31<meta 32 name="view-transition" 33 content="same-origin" 34> 35<meta 36 name="theme-color" 37 content="" 38> 39 40<meta 41 property="og:site_name" 42 content="Luxupur®" 43> 44<meta 45 property="og:url" 46 content="https://luxupur.de/cart" 47> 48<meta 49 property="og:title" 50 content="Dein Warenkorb" 51> 52<meta 53 property="og:type" 54 content="website" 55> 56<meta 57 property="og:description" 58 content="Luxupur® Premium Topper & Matratzen aus deutscher Manufaktur â individuell nach Körperprofil gefertigt. Modular anpassbar und bis zu 100 Nächten Probeschlafen. 59." 60><meta 61 property="og:image" 62 content="http://luxupur.de/cdn/shop/files/Bildschirmfoto_2026-04-10_um_13.53.47.jpg?v=1775822112" 63 > 64 <meta 65 property="og:image:secure_url" 66 content="https://luxupur.de/cdn/shop/files/Bildschirmfoto_2026-04-10_um_13.53.47.jpg?v=1775822112" 67 > 68 <meta 69 property="og:image:width" 70 content="725" 71 > 72 <meta 73 property="og:image:height" 74 content="483" 75 ><meta 76 name="twitter:card" 77 content="summary_large_image" 78> 79<meta 80 name="twitter:title" 81 content="Dein Warenkorb" 82> 83<meta 84 name="twitter:description" 85 content="Luxupur® Premium Topper & Matratzen aus deutscher Manufaktur â individuell nach Körperprofil gefertigt. Modular anpassbar und bis zu 100 Nächten Probeschlafen. 86." 87> 88 89<title> 90 Dein Warenkorb 91 – Luxupur®</title> 92 93<link 94 rel="canonical" 95 href="https://luxupur.de/cart" 96> 97 98 99<link href="//luxupur.de/cdn/shop/t/97/assets/overflow-list.css?v=101911674359793798601781436597" as="style" rel="preload"> 100<link href="//luxupur.de/cdn/shop/t/97/assets/base.css?v=155559998745154531421781436597" rel="stylesheet" type="text/css" media="all" /> 101 102<link 103 rel="preload" 104 as="font" 105 href="//luxupur.de/cdn/fonts/lato/lato_n4.c3b93d431f0091c8be23185e15c9d1fee1e971c5.woff2" 106 type="font/woff2" 107 crossorigin 108 fetchpriority="low" 109 ><link 110 rel="preload" 111 as="font" 112 href="//luxupur.de/cdn/fonts/lato/lato_n3.a7080ececf6191f1dd5b0cb021691ca9b855c876.woff2" 113 type="font/woff2" 114 crossorigin 115 fetchpriority="low" 116 ><link 117 rel="preload" 118 as="font" 119 href="//luxupur.de/cdn/fonts/playfair_display/playfairdisplay_n5.6d96c6c4ac11fa0f6466bea3ceb706b13b60121f.woff2" 120 type="font/woff2" 121 crossorigin 122 fetchpriority="low" 123 ><link 124 rel="preload" 125 as="font" 126 href="//luxupur.de/cdn/fonts/lato/lato_n6.38d0e3b23b74a60f769c51d1df73fac96c580d59.woff2" 127 type="font/woff2" 128 crossorigin 129 fetchpriority="low" 130 >
131<script async crossorigin fetchpriority="high" src="/cdn/shopifycloud/importmap-polyfill/es-modules-shim.2.4.0.js"></script>
vendor: 1 bytes, line 131
131
132<script type="importmap"> 133 { 134 "imports": { 135 "@theme/overflow-list": "//luxupur.de/cdn/shop/t/97/assets/overflow-list.js?v=46858356770684902511781436597", 136 "@theme/product-title": "//luxupur.de/cdn/shop/t/97/assets/product-title-truncation.js?v=81744426891537421781781436597", 137 "@theme/component": "//luxupur.de/cdn/shop/t/97/assets/component.js?v=184240237101443119871781436597", 138 "@theme/dialog": "//luxupur.de/cdn/shop/t/97/assets/dialog.js?v=61774032287387761671781436597", 139 "@theme/events": "//luxupur.de/cdn/shop/t/97/assets/events.js?v=147926035229139604561781436597", 140 "@theme/focus": "//luxupur.de/cdn/shop/t/97/assets/focus.js?v=60436577539430446401781436597", 141 "@theme/morph": "//luxupur.de/cdn/shop/t/97/assets/morph.js?v=35457747882330740861781436597", 142 "@theme/paginated-list": "//luxupur.de/cdn/shop/t/97/assets/paginated-list.js?v=95298315036233333871781436597", 143 "@theme/performance": "//luxupur.de/cdn/shop/t/97/assets/performance.js?v=171015751390534793081781436597", 144 "@theme/product-form": "//luxupur.de/cdn/shop/t/97/assets/product-form.js?v=32292957242306690621781436597", 145 "@theme/recently-viewed-products": "//luxupur.de/cdn/shop/t/97/assets/recently-viewed-products.js?v=94729125001750262651781436597", 146 "@theme/scrolling": "//luxupur.de/cdn/shop/t/97/assets/scrolling.js?v=118005526288211533611781436597", 147 "@theme/section-renderer": "//luxupur.de/cdn/shop/t/97/assets/section-renderer.js?v=117273408521114569061781436597", 148 "@theme/section-hydration": "//luxupur.de/cdn/shop/t/97/assets/section-hydration.js?v=177651605160027701221781436597", 149 "@theme/utilities": "//luxupur.de/cdn/shop/t/97/assets/utilities.js?v=74252600229394689081781436597", 150 "@theme/variant-picker": "//luxupur.de/cdn/shop/t/97/assets/variant-picker.js?v=124079696159966615681781436597", 151 "@theme/media-gallery": "//luxupur.de/cdn/shop/t/97/assets/media-gallery.js?v=111441960308641931071781436597", 152 "@theme/quick-add": "//luxupur.de/cdn/shop/t/97/assets/quick-add.js?v=148903382353369979481781436597", 153 "@theme/paginated-list-aspect-ratio": "//luxupur.de/cdn/shop/t/97/assets/paginated-list-aspect-ratio.js?v=25254270272143792451781436597", 154 "@theme/popover-polyfill": "//luxupur.de/cdn/shop/t/97/assets/popover-polyfill.js?v=119029313658895111201781436597", 155 "@theme/component-quantity-selector": "//luxupur.de/cdn/shop/t/97/assets/component-quantity-selector.js?v=67906657287482036641781436597", 156 "@theme/comparison-slider": "//luxupur.de/cdn/shop/t/97/assets/comparison-slider.js?v=179888163153930939011781436597", 157 "@theme/sticky-add-to-cart": "//luxupur.de/cdn/shop/t/97/assets/sticky-add-to-cart.js?v=7773819771363051871781436597", 158 "@theme/fly-to-cart": "//luxupur.de/cdn/shop/t/97/assets/fly-to-cart.js?v=129971753673458693881781436597" 159 } 160 } 161</script>
161 162
163<script 164 src="//luxupur.de/cdn/shop/t/97/assets/view-transitions.js?v=7106414069516106341781436597" 165 async 166 167></script>
167 168 169<link 170 rel="modulepreload" 171 href="//luxupur.de/cdn/shop/t/97/assets/utilities.js?v=74252600229394689081781436597" 172 fetchpriority="low" 173> 174<link 175 rel="modulepreload" 176 href="//luxupur.de/cdn/shop/t/97/assets/component.js?v=184240237101443119871781436597" 177 fetchpriority="low" 178> 179<link 180 rel="modulepreload" 181 href="//luxupur.de/cdn/shop/t/97/assets/section-renderer.js?v=117273408521114569061781436597" 182 fetchpriority="low" 183> 184<link 185 rel="modulepreload" 186 href="//luxupur.de/cdn/shop/t/97/assets/section-hydration.js?v=177651605160027701221781436597" 187 fetchpriority="low" 188> 189<link 190 rel="modulepreload" 191 href="//luxupur.de/cdn/shop/t/97/assets/morph.js?v=35457747882330740861781436597" 192 fetchpriority="low" 193> 194 195 196 197<link 198 rel="modulepreload" 199 href="//luxupur.de/cdn/shop/t/97/assets/focus.js?v=60436577539430446401781436597" 200 fetchpriority="low" 201> 202<link 203 rel="modulepreload" 204 href="//luxupur.de/cdn/shop/t/97/assets/recently-viewed-products.js?v=94729125001750262651781436597" 205 fetchpriority="low" 206> 207<link 208 rel="modulepreload" 209 href="//luxupur.de/cdn/shop/t/97/assets/scrolling.js?v=118005526288211533611781436597" 210 fetchpriority="low" 211> 212<link 213 rel="modulepreload" 214 href="//luxupur.de/cdn/shop/t/97/assets/events.js?v=147926035229139604561781436597" 215 fetchpriority="low" 216>
217<script 218 src="//luxupur.de/cdn/shop/t/97/assets/popover-polyfill.js?v=119029313658895111201781436597" 219 type="module" 220 fetchpriority="low" 221></script>
vendor: 1 bytes, line 221
221
222<script 223 src="//luxupur.de/cdn/shop/t/97/assets/overflow-list.js?v=46858356770684902511781436597" 224 type="module" 225 fetchpriority="low" 226></script>
vendor: 1 bytes, line 226
226
227<script 228 src="//luxupur.de/cdn/shop/t/97/assets/quick-add.js?v=148903382353369979481781436597" 229 type="module" 230 fetchpriority="low" 231></script>
231 232 233
233<script 234 src="//luxupur.de/cdn/shop/t/97/assets/cart-discount.js?v=107077853990124422021781436597" 235 type="module" 236 fetchpriority="low" 237 ></script>
237 238 239
240<script 241 src="//luxupur.de/cdn/shop/t/97/assets/dialog.js?v=61774032287387761671781436597" 242 type="module" 243 fetchpriority="low" 244></script>
vendor: 1 bytes, line 244
244
245<script 246 src="//luxupur.de/cdn/shop/t/97/assets/variant-picker.js?v=124079696159966615681781436597" 247 type="module" 248 fetchpriority="low" 249></script>
vendor: 1 bytes, line 249
249
250<script 251 src="//luxupur.de/cdn/shop/t/97/assets/product-card.js?v=124402285637860180781781436597" 252 type="module" 253 fetchpriority="low" 254></script>
vendor: 1 bytes, line 254
254
255<script 256 src="//luxupur.de/cdn/shop/t/97/assets/product-form.js?v=32292957242306690621781436597" 257 type="module" 258 fetchpriority="low" 259></script>
vendor: 1 bytes, line 259
259
260<script 261 src="//luxupur.de/cdn/shop/t/97/assets/fly-to-cart.js?v=129971753673458693881781436597" 262 type="module" 263 fetchpriority="low" 264></script>
vendor: 1 bytes, line 264
264
265<script 266 src="//luxupur.de/cdn/shop/t/97/assets/accordion-custom.js?v=99000499017714805851781436597" 267 type="module" 268 fetchpriority="low" 269></script>
vendor: 1 bytes, line 269
269
270<script 271 src="//luxupur.de/cdn/shop/t/97/assets/disclosure-custom.js?v=168050880623268140331781436597" 272 type="module" 273 fetchpriority="low" 274></script>
vendor: 1 bytes, line 274
274
275<script 276 src="//luxupur.de/cdn/shop/t/97/assets/media.js?v=37825095869491791421781436597" 277 type="module" 278 fetchpriority="low" 279></script>
vendor: 1 bytes, line 279
279
280<script 281 src="//luxupur.de/cdn/shop/t/97/assets/product-price.js?v=117989390664188536191781436597" 282 type="module" 283 fetchpriority="low" 284></script>
vendor: 1 bytes, line 284
284
285<script 286 src="//luxupur.de/cdn/shop/t/97/assets/product-sku.js?v=121804655373531320511781436597" 287 type="module" 288 fetchpriority="low" 289></script>
vendor: 1 bytes, line 289
289
290<script 291 src="//luxupur.de/cdn/shop/t/97/assets/product-title-truncation.js?v=81744426891537421781781436597" 292 type="module" 293 fetchpriority="low" 294></script>
vendor: 1 bytes, line 294
294
295<script 296 src="//luxupur.de/cdn/shop/t/97/assets/product-inventory.js?v=16343734458933704981781436597" 297 type="module" 298 fetchpriority="low" 299></script>
vendor: 1 bytes, line 299
299
300<script 301 src="//luxupur.de/cdn/shop/t/97/assets/show-more.js?v=94563802205717136101781436597" 302 type="module" 303 fetchpriority="low" 304></script>
vendor: 1 bytes, line 304
304
305<script 306 src="//luxupur.de/cdn/shop/t/97/assets/slideshow.js?v=40796646405849125981781436597" 307 type="module" 308 fetchpriority="low" 309></script>
vendor: 1 bytes, line 309
309
310<script 311 src="//luxupur.de/cdn/shop/t/97/assets/layered-slideshow.js?v=30135417790894624731781436597" 312 type="module" 313 fetchpriority="low" 314></script>
vendor: 1 bytes, line 314
314
315<script 316 src="//luxupur.de/cdn/shop/t/97/assets/anchored-popover.js?v=95953304814728754461781436597" 317 type="module" 318 fetchpriority="low" 319></script>
vendor: 1 bytes, line 319
319
320<script 321 src="//luxupur.de/cdn/shop/t/97/assets/floating-panel.js?v=128677600744947036551781436597" 322 type="module" 323 fetchpriority="low" 324></script>
vendor: 1 bytes, line 324
324
325<script 326 src="//luxupur.de/cdn/shop/t/97/assets/video-background.js?v=25237992823806706551781436597" 327 type="module" 328 fetchpriority="low" 329></script>
vendor: 1 bytes, line 329
329
330<script 331 src="//luxupur.de/cdn/shop/t/97/assets/component-quantity-selector.js?v=67906657287482036641781436597" 332 type="module" 333 fetchpriority="low" 334></script>
vendor: 1 bytes, line 334
334
335<script 336 src="//luxupur.de/cdn/shop/t/97/assets/media-gallery.js?v=111441960308641931071781436597" 337 type="module" 338 fetchpriority="low" 339></script>
vendor: 1 bytes, line 339
339
340<script 341 src="//luxupur.de/cdn/shop/t/97/assets/rte-formatter.js?v=101420294193111439321781436597" 342 type="module" 343 fetchpriority="low" 344></script>
vendor: 1 bytes, line 344
344
345<script 346 src="//luxupur.de/cdn/shop/t/97/assets/volume-pricing.js?v=15442793518842484731781436597" 347 type="module" 348 fetchpriority="low" 349></script>
vendor: 1 bytes, line 349
349
350<script 351 src="//luxupur.de/cdn/shop/t/97/assets/price-per-item.js?v=144512917617120124431781436597" 352 type="module" 353 fetchpriority="low" 354></script>
vendor: 1 bytes, line 354
354
355<script 356 src="//luxupur.de/cdn/shop/t/97/assets/volume-pricing-info.js?v=94479640769665442661781436597" 357 type="module" 358 fetchpriority="low" 359></script>
359 360 361 362
362<script 363 src="//luxupur.de/cdn/shop/t/97/assets/localization.js?v=15585934801240115691781436597" 364 type="module" 365 fetchpriority="low" 366 ></script>
366 367 368 369 370 371 372
373<script 374 src="//luxupur.de/cdn/shop/t/97/assets/auto-close-details.js?v=58350291535404441581781436597" 375 defer="defer" 376></script>
376 377
378<script> 379 const Theme = { 380 translations: { 381 placeholder_image: `Platzhalterbild`, 382 added: `Hinzugefügt`, 383 recipient_form_fields_visible: `Empfängerformularfelder sind jetzt sichtbar.`, 384 recipient_form_fields_hidden: `Empfängerformularfelder sind jetzt ausgeblendet.`, 385 recipient_form_error: `Beim Absenden des Formulars ist ein Fehler aufgetreten.`, 386 items_added_to_cart_one: `1 Artikel zum Warenkorb hinzugefügt`, 387 items_added_to_cart_other: `{{ count }} Artikel zum Warenkorb hinzugefügt`, 388 }, 389 routes: { 390 cart_add_url: '/cart/add.js', 391 cart_change_url: '/cart/change', 392 cart_update_url: '/cart/update', 393 cart_url: '/cart', 394 predictive_search_url: '/search/suggest', 395 search_url: '/search', 396 }, 397 template: { 398 name: 'cart', 399 }, 400 }; 401</script>
401 402<style data-shopify> 403@font-face { 404 font-family: Lato; 405 font-weight: 400; 406 font-style: normal; 407 font-display: swap; 408 src: url("//luxupur.de/cdn/fonts/lato/lato_n4.c3b93d431f0091c8be23185e15c9d1fee1e971c5.woff2") format("woff2"), 409 url("//luxupur.de/cdn/fonts/lato/lato_n4.d5c00c781efb195594fd2fd4ad04f7882949e327.woff") format("woff"); 410} 411@font-face { 412 font-family: Lato; 413 font-weight: 700; 414 font-style: normal; 415 font-display: swap; 416 src: url("//luxupur.de/cdn/fonts/lato/lato_n7.900f219bc7337bc57a7a2151983f0a4a4d9d5dcf.woff2") format("woff2"), 417 url("//luxupur.de/cdn/fonts/lato/lato_n7.a55c60751adcc35be7c4f8a0313f9698598612ee.woff") format("woff"); 418} 419@font-face { 420 font-family: Lato; 421 font-weight: 400; 422 font-style: italic; 423 font-display: swap; 424 src: url("//luxupur.de/cdn/fonts/lato/lato_i4.09c847adc47c2fefc3368f2e241a3712168bc4b6.woff2") format("woff2"), 425 url("//luxupur.de/cdn/fonts/lato/lato_i4.3c7d9eb6c1b0a2bf62d892c3ee4582b016d0f30c.woff") format("woff"); 426} 427@font-face { 428 font-family: Lato; 429 font-weight: 700; 430 font-style: italic; 431 font-display: swap; 432 src: url("//luxupur.de/cdn/fonts/lato/lato_i7.16ba75868b37083a879b8dd9f2be44e067dfbf92.woff2") format("woff2"), 433 url("//luxupur.de/cdn/fonts/lato/lato_i7.4c07c2b3b7e64ab516aa2f2081d2bb0366b9dce8.woff") format("woff"); 434} 435@font-face { 436 font-family: Lato; 437 font-weight: 300; 438 font-style: normal; 439 font-display: swap; 440 src: url("//luxupur.de/cdn/fonts/lato/lato_n3.a7080ececf6191f1dd5b0cb021691ca9b855c876.woff2") format("woff2"), 441 url("//luxupur.de/cdn/fonts/lato/lato_n3.61e34b2ff7341f66543eb08e8c47eef9e1cde558.woff") format("woff"); 442} 443@font-face { 444 font-family: Lato; 445 font-weight: 300; 446 font-style: italic; 447 font-display: swap; 448 src: url("//luxupur.de/cdn/fonts/lato/lato_i3.d6f478a3beb94baebd09d08550010692d0969f6e.woff2") format("woff2"), 449 url("//luxupur.de/cdn/fonts/lato/lato_i3.881ba892942c15b0c0c25c0b311d6481b5311015.woff") format("woff"); 450} 451@font-face { 452 font-family: "Playfair Display"; 453 font-weight: 500; 454 font-style: normal; 455 font-display: swap; 456 src: url("//luxupur.de/cdn/fonts/playfair_display/playfairdisplay_n5.6d96c6c4ac11fa0f6466bea3ceb706b13b60121f.woff2") format("woff2"), 457 url("//luxupur.de/cdn/fonts/playfair_display/playfairdisplay_n5.243754f603c104a858dcf4ebe73445104040a1bf.woff") format("woff"); 458} 459@font-face { 460 font-family: "Playfair Display"; 461 font-weight: 700; 462 font-style: normal; 463 font-display: swap; 464 src: url("//luxupur.de/cdn/fonts/playfair_display/playfairdisplay_n7.592b3435e0fff3f50b26d410c73ae7ec893f6910.woff2") format("woff2"), 465 url("//luxupur.de/cdn/fonts/playfair_display/playfairdisplay_n7.998b1417dec711058cce2abb61a0b8c59066498f.woff") format("woff"); 466} 467@font-face { 468 font-family: "Playfair Display"; 469 font-weight: 500; 470 font-style: italic; 471 font-display: swap; 472 src: url("//luxupur.de/cdn/fonts/playfair_display/playfairdisplay_i5.31aa6a3354487056ef9f3ac7215837d7edb37ccb.woff2") format("woff2"), 473 url("//luxupur.de/cdn/fonts/playfair_display/playfairdisplay_i5.72905702ec2250f6bda20eb4d8ede3a26011700f.woff") format("woff"); 474} 475@font-face { 476 font-family: "Playfair Display"; 477 font-weight: 700; 478 font-style: italic; 479 font-display: swap; 480 src: url("//luxupur.de/cdn/fonts/playfair_display/playfairdisplay_i7.ba833b400bcd9c858b439c75a4a7c6eddc4c7de0.woff2") format("woff2"), 481 url("//luxupur.de/cdn/fonts/playfair_display/playfairdisplay_i7.4872c65919810cd2f622f4ba52cd2e9e595f11d5.woff") format("woff"); 482} 483@font-face { 484 font-family: Lato; 485 font-weight: 600; 486 font-style: normal; 487 font-display: swap; 488 src: url("//luxupur.de/cdn/fonts/lato/lato_n6.38d0e3b23b74a60f769c51d1df73fac96c580d59.woff2") format("woff2"), 489 url("//luxupur.de/cdn/fonts/lato/lato_n6.3365366161bdcc36a3f97cfbb23954d8c4bf4079.woff") format("woff"); 490} 491@font-face { 492 font-family: Lato; 493 font-weight: 600; 494 font-style: italic; 495 font-display: swap; 496 src: url("//luxupur.de/cdn/fonts/lato/lato_i6.ab357ee5069e0603c2899b31e2b8ae84c4a42a48.woff2") format("woff2"), 497 url("//luxupur.de/cdn/fonts/lato/lato_i6.3164fed79d7d987c1390528781c7c2f59ac7a746.woff") format("woff"); 498} 499 500 501 :root { 502 /* Page Layout */ 503 --sidebar-width: 25rem; 504 --narrow-content-width: 36rem; 505 --normal-content-width: 42rem; 506 --wide-content-width: 46rem; 507 --narrow-page-width: 90rem; 508 --normal-page-width: 120rem; 509 --wide-page-width: 150rem; 510 511 /* Section Heights */ 512 --section-height-small: 15rem; 513 --section-height-medium: 25rem; 514 --section-height-large: 35rem; 515 516 @media screen and (min-width: 40em) { 517 --section-height-small: 40svh; 518 --section-height-medium: 55svh; 519 --section-height-large: 70svh; 520 } 521 522 @media screen and (min-width: 60em) { 523 --section-height-small: 50svh; 524 --section-height-medium: 65svh; 525 --section-height-large: 80svh; 526 } 527 528 /* Letter spacing */ 529 --letter-spacing-sm: 0.06em; 530 --letter-spacing-md: 0.13em; 531 532 /* Font families */ 533 --font-body--family: Lato, sans-serif; 534 --font-body--style: normal; 535 --font-body--weight: 400; 536 --font-subheading--family: Lato, sans-serif; 537 --font-subheading--style: normal; 538 --font-subheading--weight: 300; 539 --font-heading--family: "Playfair Display", serif; 540 --font-heading--style: normal; 541 --font-heading--weight: 500; 542 --font-accent--family: Lato, sans-serif; 543 --font-accent--style: normal; 544 --font-accent--weight: 600; 545 546 /* Margin sizes */ 547 --font-h1--spacing: 0.25em; 548 --font-h2--spacing: 0.25em; 549 --font-h3--spacing: 0.25em; 550 --font-h4--spacing: 0.25em; 551 --font-h5--spacing: 0.25em; 552 --font-h6--spacing: 0.25em; 553 --font-paragraph--spacing: 0.5em; 554 555 /* Heading colors */ 556 --font-h1--color: var(--color-foreground-heading); 557 --font-h2--color: var(--color-foreground-heading); 558 --font-h3--color: var(--color-foreground-heading); 559 --font-h4--color: var(--color-foreground-heading); 560 --font-h5--color: var(--color-foreground-heading); 561 --font-h6--color: var(--color-foreground-heading); 562 563 /** Z-Index / Layering */ 564 --layer-section-background: -2; 565 --layer-lowest: -1; 566 --layer-base: 0; 567 --layer-flat: 1; 568 --layer-raised: 2; 569 --layer-heightened: 4; 570 --layer-sticky: 8; 571 --layer-window-overlay: 10; 572 --layer-header-menu: 12; 573 --layer-overlay: 16; 574 --layer-menu-drawer: 18; 575 --layer-temporary: 20; 576 577 /* Max-width / Measure */ 578 --max-width--body-normal: 32.5em; 579 --max-width--body-narrow: 22.75em; 580 581 --max-width--heading-normal: 32.5em; 582 --max-width--heading-narrow: 19.5em; 583 584 --max-width--display-normal: 13em; 585 --max-width--display-narrow: 9.75em; 586 --max-width--display-tight: 3.25em; 587 588 /* Letter-spacing / Tracking */ 589 --letter-spacing--display-tight: -0.03em; 590 --letter-spacing--display-normal: 0em; 591 --letter-spacing--display-loose: 0.03em; 592 593 --letter-spacing--heading-tight: -0.03em; 594 --letter-spacing--heading-normal: 0em; 595 --letter-spacing--heading-loose: 0.03em; 596 597 --letter-spacing--body-tight: -0.03em; 598 --letter-spacing--body-normal: 0em; 599 --letter-spacing--body-loose: 0.03em; 600 601 /* Line height / Leading */ 602 --line-height: 1; 603 604 --line-height--display-tight: 1; 605 --line-height--display-normal: 1.1; 606 --line-height--display-loose: 1.2; 607 608 --line-height--heading-tight: 1.15; 609 --line-height--heading-normal: 1.25; 610 --line-height--heading-loose: 1.35; 611 612 --line-height--body-tight: 1.2; 613 --line-height--body-normal: 1.4; 614 --line-height--body-loose: 1.6; 615 616 /* Typography presets */ 617 --font-size--paragraph: 0.875rem;--font-size--h1: clamp(3.0rem, 7.2vw, 4.5rem);--font-size--h2: clamp(2.75rem, 4.8vw, 3.0rem);--font-size--h3: 2.5rem;--font-size--h4: 1.5rem;--font-size--h5: 1.125rem;--font-size--h6: 2.5rem;--font-paragraph--weight: 400;--font-paragraph--letter-spacing: var(--letter-spacing--body-normal);--font-paragraph--size: var(--font-size--paragraph);--font-paragraph--family: var(--font-body--family);--font-paragraph--style: var(--font-body--style);--font-paragraph--case: ;--font-paragraph--line-height: var(--line-height--body-normal);--font-h1--weight: var(--font-heading--weight);--font-h1--letter-spacing: var(--letter-spacing--heading-normal);--font-h1--size: var(--font-size--h1);--font-h1--family: var(--font-heading--family);--font-h1--style: var(--font-heading--style);--font-h1--case: uppercase;--font-h1--line-height: var(--line-height--display-normal);--font-h2--weight: var(--font-heading--weight);--font-h2--letter-spacing: var(--letter-spacing--heading-normal);--font-h2--size: var(--font-size--h2);--font-h2--family: var(--font-heading--family);--font-h2--style: var(--font-heading--style);--font-h2--case: uppercase;--font-h2--line-height: var(--line-height--display-tight);--font-h3--weight: var(--font-heading--weight);--font-h3--letter-spacing: var(--letter-spacing--heading-normal);--font-h3--size: var(--font-size--h3);--font-h3--family: var(--font-heading--family);--font-h3--style: var(--font-heading--style);--font-h3--case: none;--font-h3--line-height: var(--line-height--display-normal);--font-h4--weight: var(--font-heading--weight);--font-h4--letter-spacing: var(--letter-spacing--heading-normal);--font-h4--size: var(--font-size--h4);--font-h4--family: var(--font-heading--family);--font-h4--style: var(--font-heading--style);--font-h4--case: none;--font-h4--line-height: var(--line-height--display-normal);--font-h5--weight: var(--font-accent--weight);--font-h5--letter-spacing: var(--letter-spacing--heading-normal);--font-h5--size: var(--font-size--h5);--font-h5--family: var(--font-accent--family);--font-h5--style: var(--font-accent--style);--font-h5--case: none;--font-h5--line-height: var(--line-height--display-normal);--font-h6--weight: var(--font-heading--weight);--font-h6--letter-spacing: var(--letter-spacing--heading-normal);--font-h6--size: var(--font-size--h6);--font-h6--family: var(--font-heading--family);--font-h6--style: var(--font-heading--style);--font-h6--case: none;--font-h6--line-height: var(--line-height--display-normal); 618 619 /* Hardcoded font sizes */ 620 --font-size--3xs: 0.625rem; 621 --font-size--2xs: 0.75rem; 622 --font-size--xs: 0.8125rem; 623 --font-size--sm: 0.875rem; 624 --font-size--md: 1rem; 625 --font-size--lg: 1.125rem; 626 --font-size--xl: 1.25rem; 627 --font-size--2xl: 1.5rem; 628 --font-size--3xl: 2rem; 629 --font-size--4xl: 2.5rem; 630 --font-size--5xl: 3rem; 631 --font-size--6xl: 3.5rem; 632 633 /* Menu font sizes */ 634 --menu-font-sm--size: 0.875rem; 635 --menu-font-sm--line-height: calc(1.1 + 0.5 * min(16 / 14)); 636 --menu-font-md--size: 1rem; 637 --menu-font-md--line-height: calc(1.1 + 0.5 * min(16 / 16)); 638 --menu-font-lg--size: 1.125rem; 639 --menu-font-lg--line-height: calc(1.1 + 0.5 * min(16 / 18)); 640 --menu-font-xl--size: 1.25rem; 641 --menu-font-xl--line-height: calc(1.1 + 0.5 * min(16 / 20)); 642 --menu-font-2xl--size: 1.75rem; 643 --menu-font-2xl--line-height: calc(1.1 + 0.5 * min(16 / 28)); 644 645 /* Colors */ 646 --color-error: #8B0000; 647 --color-success: #006400; 648 --color-white: #FFFFFF; 649 --color-white-rgb: 255 255 255; 650 --color-black: #000000; 651 --color-instock: #3ED660; 652 --color-lowstock: #EE9441; 653 --color-outofstock: #C8C8C8; 654 655 /* Opacity */ 656 --opacity-5: 0.05; 657 --opacity-8: 0.08; 658 --opacity-10: 0.1; 659 --opacity-15: 0.15; 660 --opacity-20: 0.2;
661 --opacity-25: 0.25; 662 --opacity-30: 0.3; 663 --opacity-40: 0.4; 664 --opacity-50: 0.5; 665 --opacity-60: 0.6; 666 --opacity-70: 0.7; 667 --opacity-80: 0.8; 668 --opacity-85: 0.85; 669 --opacity-90: 0.9; 670 --opacity-subdued-text: var(--opacity-70); 671 672 --shadow-button: 0 2px 3px rgb(0 0 0 / 20%); 673 --gradient-image-overlay: linear-gradient(to top, rgb(0 0 0 / 0.5), transparent); 674 675 /* Spacing */ 676 --margin-3xs: 0.125rem; 677 --margin-2xs: 0.3rem; 678 --margin-xs: 0.5rem; 679 --margin-sm: 0.7rem; 680 --margin-md: 0.8rem; 681 --margin-lg: 1rem; 682 --margin-xl: 1.25rem; 683 --margin-2xl: 1.5rem; 684 --margin-3xl: 1.75rem; 685 --margin-4xl: 2rem; 686 --margin-5xl: 3rem; 687 --margin-6xl: 5rem; 688 689 --scroll-margin: 50px; 690 691 --padding-3xs: 0.125rem; 692 --padding-2xs: 0.25rem; 693 --padding-xs: 0.5rem; 694 --padding-sm: 0.7rem; 695 --padding-md: 0.8rem; 696 --padding-lg: 1rem; 697 --padding-xl: 1.25rem; 698 --padding-2xl: 1.5rem; 699 --padding-3xl: 1.75rem; 700 --padding-4xl: 2rem; 701 --padding-5xl: 3rem; 702 --padding-6xl: 4rem; 703 704 --gap-3xs: 0.125rem; 705 --gap-2xs: 0.3rem; 706 --gap-xs: 0.5rem; 707 --gap-sm: 0.7rem; 708 --gap-md: 0.9rem; 709 --gap-lg: 1rem; 710 --gap-xl: 1.25rem; 711 --gap-2xl: 2rem; 712 --gap-3xl: 3rem; 713 714 --spacing-scale-sm: 0.6; 715 --spacing-scale-md: 0.7; 716 --spacing-scale-default: 1.0; 717 718 /* Checkout buttons gap */ 719 --checkout-button-gap: 10px; 720 721 /* Borders */ 722 --style-border-width: 1px; 723 --style-border-radius-xs: 0.2rem; 724 --style-border-radius-sm: 0.6rem; 725 --style-border-radius-md: 0.8rem; 726 --style-border-radius-50: 50%; 727 --style-border-radius-lg: 1rem; 728 --style-border-radius-pills: 40px; 729 --style-border-radius-inputs: 0px; 730 --style-border-radius-buttons-primary: 0px; 731 --style-border-radius-buttons-secondary: 0px; 732 --style-border-width-primary: 2px; 733 --style-border-width-secondary: 0px; 734 --style-border-width-inputs: 1px; 735 --style-border-radius-popover: 0px; 736 --style-border-popover: 1px none rgb(var(--color-border-rgb) / 50%); 737 --style-border-drawer: 1px none rgb(var(--color-border-rgb) / 50%); 738 --style-border-swatch-opacity: 10%; 739 --style-border-swatch-width: 1px; 740 --style-border-swatch-style: solid; 741 742 /* Animation */ 743 --ease-out-cubic: cubic-bezier(0.33, 1, 0.68, 1); 744 --ease-out-quad: cubic-bezier(0.32, 0.72, 0, 1); 745 --animation-speed-fast: 0.0625s; 746 --animation-speed: 0.125s; 747 --animation-speed-slow: 0.2s; 748 --animation-speed-medium: 0.15s; 749 --animation-easing: ease-in-out; 750 --animation-slideshow-easing: cubic-bezier(0.4, 0, 0.2, 1); 751 --drawer-animation-speed: 0.2s; 752 --animation-values-slow: var(--animation-speed-slow) var(--animation-easing); 753 --animation-values: var(--animation-speed) var(--animation-easing); 754 --animation-values-fast: var(--animation-speed-fast) var(--animation-easing); 755 --animation-values-allow-discrete: var(--animation-speed) var(--animation-easing) allow-discrete; 756 --animation-timing-hover: cubic-bezier(0.25, 0.46, 0.45, 0.94); 757 --animation-timing-active: cubic-bezier(0.5, 0, 0.75, 0); 758 --animation-timing-bounce: cubic-bezier(0.34, 1.56, 0.64, 1); 759 --animation-timing-default: cubic-bezier(0, 0, 0.2, 1); 760 --animation-timing-fade-in: cubic-bezier(0.16, 1, 0.3, 1); 761 --animation-timing-fade-out: cubic-bezier(0.4, 0, 0.2, 1); 762 763 /* View transitions */ 764 /* View transition old */ 765 --view-transition-old-main-content: var(--animation-speed) var(--animation-easing) both fadeOut; 766 767 /* View transition new */ 768 --view-transition-new-main-content: var(--animation-speed) var(--animation-easing) both fadeIn, var(--animation-speed) var(--animation-easing) both slideInTopViewTransition; 769 770 /* Focus */ 771 --focus-outline-width: 0.09375rem; 772 --focus-outline-offset: 0.2em; 773 774 /* Badges */ 775 --badge-blob-padding-block: 1px; 776 --badge-blob-padding-inline: 12px 8px; 777 --badge-rectangle-padding-block: 1px; 778 --badge-rectangle-padding-inline: 6px; 779 @media screen and (min-width: 750px) { 780 --badge-blob-padding-block: 4px; 781 --badge-blob-padding-inline: 16px 12px; 782 --badge-rectangle-padding-block: 4px; 783 --badge-rectangle-padding-inline: 10px; 784 } 785 786 /* Icons */ 787 --icon-size-2xs: 0.6rem; 788 --icon-size-xs: 0.85rem; 789 --icon-size-sm: 1.25rem; 790 --icon-size-md: 1.375rem; 791 --icon-size-lg: 1.5rem; 792 --icon-stroke-width: 1.5px; 793 794 /* Input */ 795 --input-email-min-width: 200px; 796 --input-search-max-width: 650px; 797 --input-padding-y: 0.8rem; 798 --input-padding-x: 0.8rem; 799 --input-padding: var(--input-padding-y) var(--input-padding-x); 800 --input-box-shadow-width: var(--style-border-width-inputs); 801 --input-box-shadow: 0 0 0 var(--input-box-shadow-width) var(--color-input-border); 802 --input-box-shadow-focus: 0 0 0 calc(var(--input-box-shadow-width) + 0.5px) var(--color-input-border); 803 --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10)); 804 --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5)); 805 --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50));
806 --input-textarea-min-height: 55px; 807 808 /* Button size */ 809 --button-size-sm: 30px; 810 --button-size-md: 36px; 811 --button-size: var(--minimum-touch-target); 812 --button-padding-inline: 24px; 813 --button-padding-block: 16px; 814 815 /* Button font-family */ 816 --button-font-family-primary: var(--font-accent--family); 817 --button-font-family-secondary: var(--font-body--family); 818 819 /* Button text case */ 820 --button-text-case: ; 821 --button-text-case-primary: default; 822 --button-text-case-secondary: default; 823 824 /* Borders */ 825 --border-color: rgb(var(--color-border-rgb) / var(--opacity-50)); 826 --border-width-sm: 1px; 827 --border-width-md: 2px; 828 --border-width-lg: 5px; 829 --border-radius-sm: 0.25rem; 830 831 /* Drawers */ 832 --drawer-inline-padding: 25px; 833 --drawer-menu-inline-padding: 2.5rem; 834 --drawer-header-block-padding: 20px; 835 --drawer-content-block-padding: 10px; 836 --drawer-header-desktop-top: 0rem; 837 --drawer-padding: calc(var(--padding-sm) + 7px); 838 --drawer-height: 100dvh; 839 --drawer-width: 95vw; 840 --drawer-max-width: 500px; 841 842 /* Variant Picker Swatches */ 843 --variant-picker-swatch-width-unitless: 30; 844 --variant-picker-swatch-height-unitless: 30; 845 --variant-picker-swatch-width: 30px; 846 --variant-picker-swatch-height: 30px; 847 --variant-picker-swatch-radius: 0px; 848 --variant-picker-border-width: 1px; 849 --variant-picker-border-style: solid; 850 --variant-picker-border-opacity: 10%; 851 852 /* Variant Picker Buttons */ 853 --variant-picker-button-radius: 3px; 854 --variant-picker-button-border-width: 2px; 855 856 /* Slideshow */ 857 --slideshow-controls-size: 3.5rem; 858 --slideshow-controls-icon: 2rem; 859 --peek-next-slide-size: 3rem; 860 861 /* Utilities */ 862 --backdrop-opacity: 0.15; 863 --backdrop-color-rgb: var(--color-shadow-rgb); 864 --minimum-touch-target: 44px; 865 --disabled-opacity: 0.5; 866 --skeleton-opacity: 0.025; 867 868 /* Shapes */ 869 --shape--circle: circle(50% at center); 870 --shape--sunburst: polygon(100% 50%,94.62% 55.87%,98.3% 62.94%,91.57% 67.22%,93.3% 75%,85.7% 77.39%,85.36% 85.36%,77.39% 85.7%,75% 93.3%,67.22% 91.57%,62.94% 98.3%,55.87% 94.62%,50% 100%,44.13% 94.62%,37.06% 98.3%,32.78% 91.57%,25% 93.3%,22.61% 85.7%,14.64% 85.36%,14.3% 77.39%,6.7% 75%,8.43% 67.22%,1.7% 62.94%,5.38% 55.87%,0% 50%,5.38% 44.13%,1.7% 37.06%,8.43% 32.78%,6.7% 25%,14.3% 22.61%,14.64% 14.64%,22.61% 14.3%,25% 6.7%,32.78% 8.43%,37.06% 1.7%,44.13% 5.38%,50% 0%,55.87% 5.38%,62.94% 1.7%,67.22% 8.43%,75% 6.7%,77.39% 14.3%,85.36% 14.64%,85.7% 22.61%,93.3% 25%,91.57% 32.78%,98.3% 37.06%,94.62% 44.13%); 871 --shape--diamond: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%); 872 --shape--blob: polygon(85.349% 11.712%, 87.382% 13.587%, 89.228% 15.647%, 90.886% 17.862%, 92.359% 20.204%, 93.657% 22.647%, 94.795% 25.169%, 95.786% 27.752%, 96.645% 30.382%, 97.387% 33.048%, 98.025% 35.740%, 98.564% 38.454%, 99.007% 41.186%, 99.358% 43.931%, 99.622% 46.685%, 99.808% 49.446%, 99.926% 52.210%, 99.986% 54.977%, 99.999% 57.744%, 99.975% 60.511%, 99.923% 63.278%, 99.821% 66.043%, 99.671% 68.806%, 99.453% 71.565%, 99.145% 74.314%, 98.724% 77.049%, 98.164% 79.759%, 97.433% 82.427%, 96.495% 85.030%, 95.311% 87.529%, 93.841% 89.872%, 92.062% 91.988%, 89.972% 93.796%, 87.635% 95.273%, 85.135% 96.456%, 82.532% 97.393%, 79.864% 98.127%, 77.156% 98.695%, 74.424% 99.129%, 71.676% 99.452%, 68.918% 99.685%, 66.156% 99.844%, 63.390% 99.942%, 60.624% 99.990%, 57.856% 99.999%, 55.089% 99.978%, 52.323% 99.929%, 49.557% 99.847%, 46.792% 99.723%, 44.031% 99.549%, 41.273% 99.317%, 38.522% 99.017%, 35.781% 98.639%, 33.054% 98.170%, 30.347% 97.599%, 27.667% 96.911%, 25.024% 96.091%, 22.432% 95.123%, 19.907% 93.994%, 17.466% 92.690%, 15.126% 91.216%, 12.902% 89.569%, 10.808% 87.761%, 8.854% 85.803%, 7.053% 83.703%, 5.418% 81.471%, 3.962% 79.119%, 2.702% 76.656%, 1.656% 74.095%, 0.846% 71.450%, 0.294% 68.740%, 0.024% 65.987%, 0.050% 63.221%, 0.343% 60.471%, 0.858% 57.752%, 1.548% 55.073%, 2.370% 52.431%, 3.283% 49.819%, 4.253% 47.227%, 5.249% 44.646%, 6.244% 42.063%, 7.211% 39.471%, 8.124% 36.858%, 8.958% 34.220%, 9.711% 31.558%, 10.409% 28.880%, 11.083% 26.196%, 11.760% 23.513%, 12.474% 20.839%, 13.259% 18.186%, 14.156% 15.569%, 15.214% 13.012%, 16.485% 10.556%, 18.028% 8.261%, 19.883
872% 6.211%, 22.041% 4.484%, 24.440% 3.110%, 26.998% 2.057%, 29.651% 1.275%, 32.360% 0.714%, 35.101% 0.337%, 37.859% 0.110%, 40.624% 0.009%, 43.391% 0.016%, 46.156% 0.113%, 48.918% 0.289%, 51.674% 0.533%, 54.425% 0.837%, 57.166% 1.215%, 59.898% 1.654%, 62.618% 2.163%, 65.322% 2.750%, 68.006% 3.424%, 70.662% 4.197%, 73.284% 5.081%, 75.860% 6.091%, 78.376% 7.242%, 80.813% 8.551%, 83.148% 10.036%, 85.349% 11.712%); 873 874 /* Buy buttons */ 875 --height-buy-buttons: calc(var(--padding-lg) * 2 + var(--icon-size-sm)); 876 877 /* Card image width and height variables */ 878 --card-width-small: 10rem; 879 880 --height-small: 10rem; 881 --height-medium: 11.5rem; 882 --height-large: 13rem; 883 --height-full: 100vh; 884 885 @media screen and (min-width: 750px) { 886 --height-small: 17.5rem; 887 --height-medium: 21.25rem; 888 --height-large: 25rem; 889 } 890 891 /* Modal */ 892 --modal-max-height: 65dvh; 893 894 /* Card styles for search */ 895 --card-bg-hover: rgb(var(--color-foreground-rgb) / var(--opacity-5)); 896 --card-border-hover: rgb(var(--color-foreground-rgb) / var(--opacity-30)); 897 --card-border-focus: rgb(var(--color-foreground-rgb) / var(--opacity-10)); 898 899 /* Cart */ 900 --cart-primary-font-family: var(--font-body--family); 901 --cart-primary-font-style: var(--font-body--style); 902 --cart-primary-font-weight: var(--font-body--weight); 903 --cart-secondary-font-family: var(--font-subheading--family); 904 --cart-secondary-font-style: var(--font-subheading--style); 905 --cart-secondary-font-weight: var(--font-subheading--weight); 906 } 907</style> 908<style data-shopify> 909 910 911 :root, 912 913 914 915 .color-scheme-1 { 916 --color-background: rgb(9 15 18 / 1.0); 917 /* RGB values only to apply different opacities - Relative color values are not supported in iOS < 16.4 */ 918 --color-background-rgb: 9 15 18; 919 --opacity-5-15: 0.15; 920 --opacity-10-25: 0.25; 921 --opacity-35-55: 0.55; 922 --opacity-40-60: 0.6; 923 --opacity-30-60: 0.6; 924 --color-foreground: rgb(255 255 255 / 1.0); 925 --color-foreground-rgb: 255 255 255; 926 --color-foreground-heading: rgb(255 255 255 / 1.0); 927 --color-foreground-heading-rgb: 255 255 255; 928 --color-primary: rgb(55 156 162 / 1.0); 929 --color-primary-rgb: 55 156 162; 930 --color-primary-hover: rgb(84 200 231 / 1.0); 931 --color-primary-hover-rgb: 84 200 231; 932 --color-border: rgb(230 230 230 / 1.0); 933 --color-border-rgb: 230 230 230; 934 --color-shadow: rgb(0 0 0 / 1.0); 935 --color-shadow-rgb: 0 0 0; 936 --color-primary-button-text: rgb(255 255 255 / 1.0); 937 --color-primary-button-background: rgb(255 255 255 / 0.07); 938 --color-primary-button-border: rgb(255 255 255 / 1.0); 939 --color-primary-button-hover-text: rgb(255 255 255 / 1.0); 940 --color-primary-button-hover-background: rgb(203 172 96 / 1.0); 941 --color-primary-button-hover-border: rgb(194 171 116 / 1.0); 942 --color-secondary-button-text: rgb(0 0 0 / 1.0); 943 --color-secondary-button-background: rgb(0 0 0 / 0.06); 944 --color-secondary-button-border: rgb(164 35 37 / 1.0); 945 --color-secondary-button-hover-text: rgb(0 0 0 / 1.0); 946 --color-secondary-button-hover-background: rgb(222 222 222 / 1.0); 947 --color-secondary-button-hover-border: rgb(0 0 0 / 1.0); 948 --color-input-background: rgb(255 255 255 / 1.0); 949 --color-input-text: rgb(0 0 0 / 1.0); 950 --color-input-text-rgb: 0 0 0; 951 --color-input-border: rgb(230 230 230 / 1.0); 952 --color-input-hover-background: rgb(245 245 245 / 1.0); 953 --color-variant-background: rgb(255 255 255 / 1.0); 954 --color-variant-border: rgb(230 230 230 / 1.0); 955 --color-variant-text: rgb(0 0 0 / 1.0); 956 --color-variant-text-rgb: 0 0 0; 957 --color-variant-hover-background: rgb(0 0 0 / 1.0); 958 --color-variant-hover-text: rgb(0 0 0 / 1.0); 959 --color-variant-hover-border: rgb(0 0 0 / 1.0); 960 --color-selected-variant-background: rgb(0 0 0 / 1.0); 961 --color-selected-variant-border: rgb(0 0 0 / 1.0); 962 --color-selected-variant-text: rgb(255 255 255 / 1.0); 963 --color-selected-variant-hover-background: rgb(26 26 26 / 1.0); 964 --color-selected-variant-hover-text: rgb(0 0 0 / 1.0); 965 --color-selected-variant-hover-border: rgb(26 26 26 / 1.0); 966 967 --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10)); 968 --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5-15)); 969 --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50)); 970 --color-foreground-muted: rgb(var(--color-foreground-rgb) / var(--opacity-60)); 971 --font-h1--color: var(--color-foreground-heading); 972 --font-h2--color: var(--color-foreground-heading); 973 --font-h3--color: var(--color-foreground-heading); 974 --font-h4--color: var(--color-foreground-heading); 975 --font-h5--color: var(--color-foreground-heading); 976 --font-h6--color: var(--color-foreground-heading); 977 978 /* Shadows */ 979 980 --shadow-drawer: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 981 982 983 --shadow-blur: 20px; 984 --shadow-popover: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 985 986 } 987 988 989 990 991 .color-scheme-2 {
992 --color-background: rgb(255 255 255 / 1.0); 993 /* RGB values only to apply different opacities - Relative color values are not supported in iOS < 16.4 */ 994 --color-background-rgb: 255 255 255; 995 --opacity-5-15: 0.05; 996 --opacity-10-25: 0.1; 997 --opacity-35-55: 0.35; 998 --opacity-40-60: 0.4; 999 --opacity-30-60: 0.3; 1000 --color-foreground: rgb(0 0 0 / 1.0); 1001 --color-foreground-rgb: 0 0 0; 1002 --color-foreground-heading: rgb(0 0 0 / 1.0); 1003 --color-foreground-heading-rgb: 0 0 0; 1004 --color-primary: rgb(0 0 0 / 1.0); 1005 --color-primary-rgb: 0 0 0; 1006 --color-primary-hover: rgb(0 0 0 / 1.0); 1007 --color-primary-hover-rgb: 0 0 0; 1008 --color-border: rgb(230 230 230 / 1.0); 1009 --color-border-rgb: 230 230 230; 1010 --color-shadow: rgb(0 0 0 / 1.0); 1011 --color-shadow-rgb: 0 0 0; 1012 --color-primary-button-text: rgb(242 242 242 / 1.0); 1013 --color-primary-button-background: rgb(201 168 110 / 1.0); 1014 --color-primary-button-border: rgb(164 35 37 / 1.0); 1015 --color-primary-button-hover-text: rgb(242 242 242 / 1.0); 1016 --color-primary-button-hover-background: rgb(164 35 37 / 1.0); 1017 --color-primary-button-hover-border: rgb(164 35 37 / 1.0); 1018 --color-secondary-button-text: rgb(0 0 0 / 1.0); 1019 --color-secondary-button-background: rgb(255 255 255 / 1.0); 1020 --color-secondary-button-border: rgb(0 0 0 / 1.0); 1021 --color-secondary-button-hover-text: rgb(164 35 37 / 1.0); 1022 --color-secondary-button-hover-background: rgb(255 255 255 / 1.0); 1023 --color-secondary-button-hover-border: rgb(164 35 37 / 1.0); 1024 --color-input-background: rgb(242 242 242 / 1.0); 1025 --color-input-text: rgb(0 0 0 / 1.0); 1026 --color-input-text-rgb: 0 0 0; 1027 --color-input-border: rgb(0 0 0 / 1.0); 1028 --color-input-hover-background: rgb(228 228 228 / 1.0); 1029 --color-variant-background: rgb(255 255 255 / 1.0); 1030 --color-variant-border: rgb(230 230 230 / 1.0); 1031 --color-variant-text: rgb(0 0 0 / 1.0); 1032 --color-variant-text-rgb: 0 0 0; 1033 --color-variant-hover-background: rgb(245 245 245 / 1.0); 1034 --color-variant-hover-text: rgb(0 0 0 / 1.0); 1035 --color-variant-hover-border: rgb(230 230 230 / 1.0); 1036 --color-selected-variant-background: rgb(0 0 0 / 1.0); 1037 --color-selected-variant-border: rgb(0 0 0 / 1.0); 1038 --color-selected-variant-text: rgb(255 255 255 / 1.0); 1039 --color-selected-variant-hover-background: rgb(26 26 26 / 1.0); 1040 --color-selected-variant-hover-text: rgb(255 255 255 / 1.0); 1041 --color-selected-variant-hover-border: rgb(26 26 26 / 1.0); 1042 1043 --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10)); 1044 --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5-15)); 1045 --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50)); 1046 --color-foreground-muted: rgb(var(--color-foreground-rgb) / var(--opacity-60)); 1047 --font-h1--color: var(--color-foreground-heading); 1048 --font-h2--color: var(--color-foreground-heading); 1049 --font-h3--color: var(--color-foreground-heading); 1050 --font-h4--color: var(--color-foreground-heading); 1051 --font-h5--color: var(--color-foreground-heading); 1052 --font-h6--color: var(--color-foreground-heading); 1053 1054 /* Shadows */ 1055 1056 --shadow-drawer: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1057 1058 1059 --shadow-blur: 20px; 1060 --shadow-popover: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1061 1062 } 1063 1064 1065 1066 1067 .color-scheme-3 { 1068 --color-background: rgb(203 172 96 / 1.0); 1069 /* RGB values only to apply different opacities - Relative color values are not supported in iOS < 16.4 */ 1070 --color-background-rgb: 203 172 96; 1071 --opacity-5-15: 0.05; 1072 --opacity-10-25: 0.1; 1073 --opacity-35-55: 0.35; 1074 --opacity-40-60: 0.4; 1075 --opacity-30-60: 0.3; 1076 --color-foreground: rgb(255 255 255 / 1.0); 1077 --color-foreground-rgb: 255 255 255; 1078 --color-foreground-heading: rgb(255 255 255 / 1.0); 1079 --color-foreground-heading-rgb: 255 255 255; 1080 --color-primary: rgb(120 4 6 / 0.91); 1081 --color-primary-rgb: 120 4 6; 1082 --color-primary-hover: rgb(0 0 0 / 1.0); 1083 --color-primary-hover-rgb: 0 0 0; 1084 --color-border: rgb(208 208 208 / 1.0); 1085 --color-border-rgb: 208 208 208; 1086 --color-shadow: rgb(0 0 0 / 1.0); 1087 --color-shadow-rgb: 0 0 0; 1088 --color-primary-button-text: rgb(255 255 255 / 1.0); 1089 --color-primary-button-background: rgb(120 4 6 / 0.91); 1090 --color-primary-button-border: rgb(120 4 6 / 0.91); 1091 --color-primary-button-hover-text: rgb(255 255 255 / 1.0); 1092 --color-primary-button-hover-background: rgb(0 0 0 / 1.0); 1093 --color-primary-button-hover-border: rgb(0 0 0 / 1.0); 1094 --color-secondary-button-text: rgb(0 0 0 / 1.0); 1095 --color-secondary-button-background: rgb(232 213 199 / 1.0); 1096 --color-secondary-button-border: rgb(51 50 50 / 1.0); 1097 --color-secondary-button-hover-text: rgb(0 0 0 / 1.0); 1098 --color-secondary-button-hover-background: rgb(241 227 217 / 0.77); 1099 --color-secondary-button-hover-border: rgb(0 0 0 / 1.0); 1100 --color-input-background: rgb(232 213 199 / 1.0); 1101 --color-input-text: rgb(0 0 0 / 1.0); 1102 --color-input-text-rgb: 0 0 0; 1103 --color-input-border: rgb(0 0 0 / 1.0); 1104 --color-input-hover-background: rgb(241 227 217 / 0.77); 1105 --color-variant-background: rgb(232 213 199 / 1.0); 1106 --color-variant-border: rgb(88 88 88 / 1.0); 1107 --color-variant-text: rgb(0 0 0 / 1.0); 1108 --color-variant-text-rgb: 0 0 0; 1109 --color-variant-hover-background: rgb(241 227 217 / 0.77); 1110 --color-variant-hover-text: rgb(0 0 0 / 1.0); 1111 --color-variant-hover-border: rgb(0 0 0 / 1.0); 1112 --color-selected-variant-background: rgb(0 0 0 / 1.0); 1113 --color-selected-variant-border: rgb(0 0 0 / 1.0); 1114 --color-selected-variant-text: rgb(255 255 255 / 1.0); 1115 --color-selected-variant-hover-background: rgb(26 26 26 / 1.0); 1116 --color-selected-variant-hover-text: rgb(255 255 255 / 1.0); 1117 --color-selected-variant-hover-border: rgb(26 26 26 / 1.0); 1118 1119 --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10)); 1120 --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5-15)); 1121 --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50)); 1122 --color-foreground-muted: rgb(var(--color-foreground-rgb) / var(--opacity-60)); 1123 --font-h1--color: var(--color-foreground-heading); 1124 --font-h2--color: var(--color-foreground-heading); 1125 --font-h3--color: var(--color-foreground-heading); 1126 --font-h4--color: var(--color-foreground-heading); 1127 --font-h5--color: var(--color-foreground-heading); 1128 --font-h6--color: var(--color-foreground-heading); 1129 1130 /* Shadows */ 1131 1132 --shadow-drawer: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1133 1134 1135 --shadow-blur: 20px; 1136 --shadow-popover: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1137 1138 } 1139 1140 1141 1142 1143 .color-scheme-4 { 1144 --color-background: rgb(252 250 246 / 1.0); 1145 /* RGB values only to apply different opacities - Relative color values are not supported in iOS < 16.4 */ 1146 --color-background-rgb: 252 250 246; 1147 --opacity-5-15: 0.05; 1148 --opacity-10-25: 0.1; 1149 --opacity-35-55: 0.35; 1150 --opacity-40-60: 0.4; 1151 --opacity-30-60: 0.3; 1152 --color-foreground: rgb(66 65 65 / 1.0); 1153 --color-foreground-rgb: 66 65 65; 1154 --color-foreground-heading: rgb(38 37 37 / 1.0); 1155 --color-foreground-heading-rgb: 38 37 37; 1156 --color-primary: rgb(131 130 130 / 1.0); 1157 --color-primary-rgb: 131 130 130; 1158 --color-primary-hover: rgb(255 255 255 / 1.0); 1159 --color-primary-hover-rgb: 255 255 255; 1160 --color-border: rgb(4 4 4 / 0.11); 1161 --color-border-rgb: 4 4 4; 1162 --color-shadow: rgb(0 0 0 / 1.0); 1163 --color-shadow-rgb: 0 0 0; 1164 --color-primary-button-text: rgb(255 255 255 / 1.0); 1165 --color-primary-button-background: rgb(201 168 110 / 1.0); 1166 --color-primary-button-border: rgb(201 168 110 / 1.0); 1167 --color-primary-button-hover-text: rgb(255 255 255 / 1.0); 1168 --color-primary-button-hover-background: rgb(152 123 51 / 1.0); 1169 --color-primary-button-hover-border: rgb(152 123 51 / 1.0); 1170 --color-secondary-button-text: rgb(201 168 110 / 1.0); 1171 --color-secondary-button-background: rgb(255 255 255 / 1.0); 1172 --color-secondary-button-border: rgb(201 168 110 / 1.0); 1173 --color-secondary-button-hover-text: rgb(255 255 255 / 1.0); 1174 --color-secondary-button-hover-background: rgb(201 168 110 / 1.0); 1175 --color-secondary-button-hover-border: rgb(201 168 110 / 1.0); 1176 --color-input-background: rgb(255 255 255 / 1.0); 1177 --color-input-text: rgb(82 79 79 / 1.0); 1178 --color-input-text-rgb: 82 79 79; 1179 --color-input-border: rgb(201 168 110 / 1.0); 1180 --color-input-hover-background: rgb(255 255 255 / 1.0); 1181 --color-variant-background: rgb(164 35 37 / 1.0); 1182 --color-variant-border: rgb(230 230 230 / 1.0); 1183 --color-variant-text: rgb(255 255 255 / 1.0); 1184 --color-variant-text-rgb: 255 255 255; 1185 --color-variant-hover-background: rgb(245 245 245 / 1.0); 1186 --color-variant-hover-text: rgb(0 0 0 / 1.0); 1187 --color-variant-hover-border: rgb(230 230 230 / 1.0); 1188 --color-selected-variant-background: rgb(0 0 0 / 1.0); 1189 --color-selected-variant-border: rgb(0 0 0 / 1.0); 1190 --color-selected-variant-text: rgb(255 255 255 / 1.0); 1191 --color-selected-variant-hover-background: rgb(26 26 26 / 1.0); 1192 --color-selected-variant-hover-text: rgb(255 255 255 / 1.0); 1193 --color-selected-variant-hover-border: rgb(26 26 26 / 1.0); 1194 1195 --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10)); 1196 --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5-15)); 1197 --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50)); 1198 --color-foreground-muted: rgb(var(--color-foreground-rgb) / var(--opacity-60)); 1199 --font-h1--color: var(--color-foreground-heading); 1200 --font-h2--color: var(--color-foreground-heading); 1201 --font-h3--color: var(--color-foreground-heading); 1202 --font-h4--color: var(--color-foreground-heading); 1203 --font-h5--color: var(--color-foreground-heading); 1204 --font-h6--color: var(--color-foreground-heading); 1205 1206 /* Shadows */ 1207 1208 --shadow-drawer: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1209 1210 1211 --shadow-blur: 20px; 1212 --shadow-popover: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1213 1214 } 1215 1216 1217 1218 1219 .color-scheme-5 { 1220 --color-background: rgb(25 26 28 / 1.0); 1221 /* RGB values only to apply different opacities - Relative color values are not supported in iOS < 16.4 */ 1222 --color-background-rgb: 25 26 28; 1223 --opacity-5-15: 0.15; 1224 --opacity-10-25: 0.25; 1225 --opacity-35-55: 0.55; 1226 --opacity-40-60: 0.6; 1227 --opacity-30-60: 0.6; 1228 --color-foreground: rgb(192 190 190 / 1.0); 1229 --color-foreground-rgb: 192 190 190; 1230 --color-foreground-heading: rgb(255 255 255 / 1.0); 1231 --color-foreground-heading-rgb: 255 255 255; 1232 --color-primary: rgb(203 172 96 / 1.0); 1233 --color-primary-rgb: 203 172 96; 1234 --color-primary-hover: rgb(255 255 255 / 1.0); 1235 --color-primary-hover-rgb: 255 255 255; 1236 --color-border: rgb(102 102 102 / 1.0); 1237 --color-border-rgb: 102 102 102; 1238 --color-shadow: rgb(0 0 0 / 1.0); 1239 --color-shadow-rgb: 0 0 0; 1240 --color-primary-button-text: rgb(255 255 255 / 1.0); 1241 --color-primary-button-background: rgb(194 171 116 / 1.0); 1242 --color-primary-button-border: rgb(194 171 116 / 1.0); 1243 --color-primary-button-hover-text: rgb(255 255 255 / 1.0); 1244 --color-primary-button-hover-background: rgb(158 136 83 / 1.0); 1245 --color-primary-button-hover-border: rgb(158 136 83 / 1.0); 1246 --color-secondary-button-text: rgb(255 255 255 / 1.0); 1247 --color-secondary-button-background: rgb(0 0 0 / 1.0); 1248 --color-secondary-button-border: rgb(255 255 255 / 1.0); 1249 --color-secondary-button-hover-text: rgb(172 172 172 / 1.0); 1250 --color-secondary-button-hover-background: rgb(0 0 0 / 1.0); 1251 --color-secondary-button-hover-border: rgb(172 172 172 / 1.0); 1252 --color-input-background: rgb(0 0 0 / 1.0); 1253 --color-input-text: rgb(255 255 255 / 1.0); 1254 --color-input-text-rgb: 255 255 255; 1255 --color-input-border: rgb(255 255 255 / 1.0); 1256 --color-input-hover-background: rgb(51 50 50 / 1.0); 1257 --color-variant-background: rgb(0 0 0 / 1.0); 1258 --color-variant-border: rgb(255 255 255 / 1.0); 1259 --color-variant-text: rgb(255 255 255 / 1.0); 1260 --color-variant-text-rgb: 255 255 255; 1261 --color-variant-hover-background: rgb(245 245 245 / 1.0); 1262 --color-variant-hover-text: rgb(0 0 0 / 1.0); 1263 --color-variant-hover-border: rgb(230 230 230 / 1.0); 1264 --color-selected-variant-background: rgb(255 255 255 / 1.0); 1265 --color-selected-variant-border: rgb(255 255 255 / 1.0); 1266 --color-selected-variant-text: rgb(0 0 0 / 1.0); 1267 --color-selected-variant-hover-background: rgb(255 255 255 / 0.19); 1268 --color-selected-variant-hover-text: rgb(255 255 255 / 1.0); 1269 --color-selected-variant-hover-border: rgb(0 0 0 / 1.0); 1270 1271 --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10)); 1272 --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5-15)); 1273 --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50)); 1274 --color-foreground-muted: rgb(var(--color-foreground-rgb) / var(--opacity-60)); 1275 --font-h1--color: var(--color-foreground-heading); 1276 --font-h2--color: var(--color-foreground-heading); 1277 --font-h3--color: var(--color-foreground-heading); 1278 --font-h4--color: var(--color-foreground-heading); 1279 --font-h5--color: var(--color-foreground-heading); 1280 --font-h6--color: var(--color-foreground-heading); 1281 1282 /* Shadows */ 1283 1284 --shadow-drawer: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1285 1286 1287 --shadow-blur: 20px; 1288 --shadow-popover: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1289 1290 } 1291 1292 1293 1294 1295 .color-scheme-6 { 1296 --color-background: rgb(255 255 255 / 1.0); 1297 /* RGB values only to apply different opacities - Relative color values are not supported in iOS < 16.4 */ 1298 --color-background-rgb: 255 255 255; 1299 --opacity-5-15: 0.05; 1300 --opacity-10-25: 0.1; 1301 --opacity-35-55: 0.35; 1302 --opacity-40-60: 0.4; 1303 --opacity-30-60: 0.3; 1304 --color-foreground: rgb(0 0 0 / 1.0); 1305 --color-foreground-rgb: 0 0 0; 1306 --color-foreground-heading: rgb(0 0 0 / 1.0); 1307 --color-foreground-heading-rgb: 0 0 0; 1308 --color-primary: rgb(0 0 0 / 1.0); 1309 --color-primary-rgb: 0 0 0; 1310 --color-primary-hover: rgb(123 119 119 / 1.0); 1311 --color-primary-hover-rgb: 123 119 119; 1312 --color-border: rgb(0 0 0 / 0.0); 1313 --color-border-rgb: 0 0 0; 1314 --color-shadow: rgb(0 0 0 / 0.0); 1315 --color-shadow-rgb: 0 0 0; 1316 --color-primary-button-text: rgb(255 255 255 / 1.0); 1317 --color-primary-button-background: rgb(194 171 116 / 1.0); 1318 --color-primary-button-border: rgb(194 171 116 / 1.0); 1319 --color-primary-button-hover-text: rgb(255 255 255 / 1.0); 1320 --color-primary-button-hover-background: rgb(142 120 67 / 1.0); 1321
1321 --color-primary-button-hover-border: rgb(142 120 67 / 1.0); 1322 --color-secondary-button-text: rgb(85 83 83 / 1.0); 1323 --color-secondary-button-background: rgb(0 0 0 / 0.06); 1324 --color-secondary-button-border: rgb(255 255 255 / 1.0); 1325 --color-secondary-button-hover-text: rgb(172 172 172 / 1.0); 1326 --color-secondary-button-hover-background: rgb(0 0 0 / 0.0); 1327 --color-secondary-button-hover-border: rgb(26 26 26 / 1.0); 1328 --color-input-background: rgb(255 255 255 / 1.0); 1329 --color-input-text: rgb(0 0 0 / 1.0); 1330 --color-input-text-rgb: 0 0 0; 1331 --color-input-border: rgb(0 0 0 / 1.0); 1332 --color-input-hover-background: rgb(245 245 245 / 1.0); 1333 --color-variant-background: rgb(255 255 255 / 1.0); 1334 --color-variant-border: rgb(230 230 230 / 1.0); 1335 --color-variant-text: rgb(0 0 0 / 1.0); 1336 --color-variant-text-rgb: 0 0 0; 1337 --color-variant-hover-background: rgb(245 245 245 / 1.0); 1338 --color-variant-hover-text: rgb(0 0 0 / 1.0); 1339 --color-variant-hover-border: rgb(230 230 230 / 1.0); 1340 --color-selected-variant-background: rgb(211 213 215 / 1.0); 1341 --color-selected-variant-border: rgb(88 81 81 / 1.0); 1342 --color-selected-variant-text: rgb(35 35 35 / 1.0); 1343 --color-selected-variant-hover-background: rgb(119 123 123 / 1.0); 1344 --color-selected-variant-hover-text: rgb(255 255 255 / 1.0); 1345 --color-selected-variant-hover-border: rgb(190 202 203 / 1.0); 1346 1347 --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10)); 1348 --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5-15)); 1349 --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50)); 1350 --color-foreground-muted: rgb(var(--color-foreground-rgb) / var(--opacity-60)); 1351 --font-h1--color: var(--color-foreground-heading); 1352 --font-h2--color: var(--color-foreground-heading); 1353 --font-h3--color: var(--color-foreground-heading); 1354 --font-h4--color: var(--color-foreground-heading); 1355 --font-h5--color: var(--color-foreground-heading); 1356 --font-h6--color: var(--color-foreground-heading); 1357 1358 /* Shadows */ 1359 1360 --shadow-drawer: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1361 1362 1363 --shadow-blur: 20px; 1364 --shadow-popover: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1365 1366 } 1367 1368 1369 1370 1371 .color-scheme-7 { 1372 --color-background: rgb(0 0 0 / 1.0); 1373 /* RGB values only to apply different opacities - Relative color values are not supported in iOS < 16.4 */ 1374 --color-background-rgb: 0 0 0; 1375 --opacity-5-15: 0.15; 1376 --opacity-10-25: 0.25; 1377 --opacity-35-55: 0.55; 1378 --opacity-40-60: 0.6; 1379 --opacity-30-60: 0.6; 1380 --color-foreground: rgb(230 230 230 / 1.0); 1381 --color-foreground-rgb: 230 230 230; 1382 --color-foreground-heading: rgb(82 79 79 / 1.0); 1383 --color-foreground-heading-rgb: 82 79 79; 1384 --color-primary: rgb(0 0 0 / 1.0); 1385 --color-primary-rgb: 0 0 0; 1386 --color-primary-hover: rgb(131 126 126 / 1.0); 1387 --color-primary-hover-rgb: 131 126 126; 1388 --color-border: rgb(230 230 230 / 1.0); 1389 --color-border-rgb: 230 230 230; 1390 --color-shadow: rgb(0 0 0 / 1.0); 1391 --color-shadow-rgb: 0 0 0; 1392 --color-primary-button-text: rgb(255 255 255 / 1.0); 1393 --color-primary-button-background: rgb(73 181 211 / 1.0); 1394 --color-primary-button-border: rgb(0 0 0 / 1.0); 1395 --color-primary-button-hover-text: rgb(255 255 255 / 1.0); 1396 --color-primary-button-hover-background: rgb(51 51 51 / 1.0); 1397 --color-primary-button-hover-border: rgb(51 51 51 / 1.0); 1398 --color-secondary-button-text: rgb(0 0 0 / 1.0); 1399 --color-secondary-button-background: rgb(0 0 0 / 0.06); 1400 --color-secondary-button-border: rgb(0 0 0 / 1.0); 1401 --color-secondary-button-hover-text: rgb(0 0 0 / 1.0); 1402 --color-secondary-button-hover-background: rgb(255 255 255 / 1.0); 1403 --color-secondary-button-hover-border: rgb(255 255 255 / 1.0); 1404 --color-input-background: rgb(255 255 255 / 1.0); 1405 --color-input-text: rgb(0 0 0 / 0.53); 1406 --color-input-text-rgb: 0 0 0; 1407 --color-input-border: rgb(0 0 0 / 0.13); 1408 --color-input-hover-background: rgb(245 245 245 / 1.0); 1409 --color-variant-background: rgb(255 255 255 / 1.0); 1410 --color-variant-border: rgb(230 230 230 / 1.0); 1411 --color-variant-text: rgb(0 0 0 / 1.0); 1412 --color-variant-text-rgb: 0 0 0; 1413 --color-variant-hover-background: rgb(245 245 245 / 1.0); 1414 --color-variant-hover-text: rgb(0 0 0 / 1.0); 1415 --color-variant-hover-border: rgb(230 230 230 / 1.0); 1416 --color-selected-variant-background: rgb(0 0 0 / 1.0); 1417 --color-selected-variant-border: rgb(0 0 0 / 1.0); 1418 --color-selected-variant-text: rgb(255 255 255 / 1.0); 1419 --color-selected-variant-hover-background: rgb(26 26 26 / 1.0); 1420 --color-selected-variant-hover-text: rgb(255 255 255 / 1.0); 1421 --color-selected-variant-hover-border: rgb(26 26 26 / 1.0); 1422 1423 --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10)); 1424 --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5-15)); 1425 --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50)); 1426 --color-foreground-muted: rgb(var(--color-foreground-rgb) / var(--opacity-60)); 1427 --font-h1--color: var(--color-foreground-heading); 1428 --font-h2--color: var(--color-foreground-heading); 1429 --font-h3--color: var(--color-foreground-heading); 1430 --font-h4--color: var(--color-foreground-heading); 1431 --font-h5--color: var(--color-foreground-heading); 1432 --font-h6--color: var(--color-foreground-heading); 1433 1434 /* Shadows */ 1435 1436 --shadow-drawer: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1437 1438 1439 --shadow-blur: 20px; 1440 --shadow-popover: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1441 1442 } 1443 1444 1445 1446 1447 .color-scheme-14d561a2-4fe3-4ccf-a8e8-e70dfad6e07b { 1448 --color-background: rgb(25 26 28 / 1.0); 1449 /* RGB values only to apply different opacities - Relative color values are not supported in iOS < 16.4 */ 1450 --color-background-rgb: 25 26 28; 1451 --opacity-5-15: 0.15; 1452 --opacity-10-25: 0.25; 1453 --opacity-35-55: 0.55; 1454 --opacity-40-60: 0.6; 1455 --opacity-30-60: 0.6; 1456 --color-foreground: rgb(255 255 255 / 1.0); 1457 --color-foreground-rgb: 255 255 255; 1458 --color-foreground-heading: rgb(255 255 255 / 1.0); 1459 --color-foreground-heading-rgb: 255 255 255; 1460 --color-primary: rgb(203 172 96 / 1.0); 1461 --color-primary-rgb: 203 172 96; 1462 --color-primary-hover: rgb(160 139 89 / 1.0); 1463 --color-primary-hover-rgb: 160 139 89; 1464 --color-border: rgb(230 230 230 / 1.0); 1465 --color-border-rgb: 230 230 230; 1466 --color-shadow: rgb(0 0 0 / 1.0); 1467 --color-shadow-rgb: 0 0 0; 1468 --color-primary-button-text: rgb(255 255 255 / 1.0); 1469 --color-primary-button-background: rgb(203 172 96 / 1.0); 1470 --color-primary-button-border: rgb(203 172 96 / 1.0); 1471 --color-primary-button-hover-text: rgb(255 255 255 / 1.0); 1472 --color-primary-button-hover-background: rgb(30 137 166 / 1.0); 1473 --color-primary-button-hover-border: rgb(0 0 0 / 1.0); 1474 --color-secondary-button-text: rgb(0 0 0 / 1.0); 1475 --color-secondary-button-background: rgb(0 0 0 / 0.06); 1476 --color-secondary-button-border: rgb(164 35 37 / 1.0); 1477 --color-secondary-button-hover-text: rgb(0 0 0 / 1.0); 1478 --color-secondary-button-hover-background: rgb(222 222 222 / 1.0); 1479 --color-secondary-button-hover-border: rgb(0 0 0 / 1.0); 1480 --color-input-background: rgb(255 255 255 / 1.0); 1481 --color-input-text: rgb(0 0 0 / 1.0); 1482 --color-input-text-rgb: 0 0 0; 1483 --color-input-border: rgb(230 230 230 / 1.0); 1484 --color-input-hover-background: rgb(245 245 245 / 1.0); 1485 --color-variant-background: rgb(255 255 255 / 1.0); 1486 --color-variant-border: rgb(230 230 230 / 1.0); 1487 --color-variant-text: rgb(0 0 0 / 1.0); 1488 --color-variant-text-rgb: 0 0 0; 1489 --color-variant-hover-background: rgb(245 245 245 / 1.0); 1490 --color-variant-hover-text: rgb(0 0 0 / 1.0); 1491 --color-variant-hover-border: rgb(230 230 230 / 1.0); 1492 --color-selected-variant-background: rgb(0 0 0 / 1.0); 1493 --color-selected-variant-border: rgb(0 0 0 / 1.0); 1494 --color-selected-variant-text: rgb(255 255 255 / 1.0); 1495 --color-selected-variant-hover-background: rgb(26 26 26 / 1.0); 1496 --color-selected-variant-hover-text: rgb(255 255 255 / 1.0); 1497 --color-selected-variant-hover-border: rgb(26 26 26 / 1.0); 1498 1499 --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10)); 1500 --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5-15)); 1501 --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50)); 1502 --color-foreground-muted: rgb(var(--color-foreground-rgb) / var(--opacity-60)); 1503 --font-h1--color: var(--color-foreground-heading); 1504 --font-h2--color: var(--color-foreground-heading); 1505 --font-h3--color: var(--color-foreground-heading); 1506 --font-h4--color: var(--color-foreground-heading); 1507 --font-h5--color: var(--color-foreground-heading); 1508 --font-h6--color: var(--color-foreground-heading); 1509 1510 /* Shadows */ 1511 1512 --shadow-drawer: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1513 1514 1515 --shadow-blur: 20px; 1516 --shadow-popover: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1517 1518 } 1519 1520 1521 1522 1523 .color-scheme-b7379327-f284-41e4-8b8f-3c34e0fea334 { 1524 --color-background: rgb(249 242 230 / 1.0); 1525 /* RGB values only to apply different opacities - Relative color values are not supported in iOS < 16.4 */ 1526 --color-background-rgb: 249 242 230; 1527 --opacity-5-15: 0.05; 1528 --opacity-10-25: 0.1; 1529 --opacity-35-55: 0.35; 1530 --opacity-40-60: 0.4; 1531 --opacity-30-60: 0.3; 1532 --color-foreground: rgb(102 101 101 / 1.0); 1533 --color-foreground-rgb: 102 101 101; 1534 --color-foreground-heading: rgb(255 255 255 / 1.0); 1535 --color-foreground-heading-rgb: 255 255 255; 1536 --color-primary: rgb(255 255 255 / 1.0); 1537 --color-primary-rgb: 255 255 255; 1538 --color-primary-hover: rgb(84 200 231 / 1.0); 1539 --color-primary-hover-rgb: 84 200 231; 1540 --color-border: rgb(230 230 230 / 1.0); 1541 --color-border-rgb: 230 230 230; 1542 --color-shadow: rgb(0 0 0 / 1.0); 1543 --color-shadow-rgb: 0 0 0; 1544 --color-primary-button-text: rgb(0 0 0 / 1.0); 1545 --color-primary-button-background: rgb(55 156 162 / 1.0); 1546 --color-primary-button-border: rgb(84 200 231 / 1.0); 1547 --color-primary-button-hover-text: rgb(255 255 255 / 1.0); 1548 --color-primary-button-hover-background: rgb(30 137 166 / 1.0); 1549 --color-primary-button-hover-border: rgb(0 0 0 / 1.0); 1550 --color-secondary-button-text: rgb(0 0 0 / 1.0); 1551 --color-secondary-button-background: rgb(0 0 0 / 0.06); 1552 --color-secondary-button-border: rgb(164 35 37 / 1.0); 1553 --color-secondary-button-hover-text: rgb(0 0 0 / 1.0); 1554 --color-secondary-button-hover-background: rgb(222 222 222 / 1.0); 1555 --color-secondary-button-hover-border: rgb(0 0 0 / 1.0); 1556 --color-input-background: rgb(255 255 255 / 1.0); 1557 --color-input-text: rgb(0 0 0 / 1.0); 1558 --color-input-text-rgb: 0 0 0; 1559 --color-input-border: rgb(230 230 230 / 1.0); 1560 --color-input-hover-background: rgb(245 245 245 / 1.0); 1561 --color-variant-background: rgb(255 255 255 / 1.0); 1562 --color-variant-border: rgb(230 230 230 / 1.0); 1563 --color-variant-text: rgb(0 0 0 / 1.0); 1564 --color-variant-text-rgb: 0 0 0; 1565 --color-variant-hover-background: rgb(0 0 0 / 1.0); 1566 --color-variant-hover-text: rgb(0 0 0 / 1.0); 1567 --color-variant-hover-border: rgb(0 0 0 / 1.0); 1568 --color-selected-variant-background: rgb(0 0 0 / 1.0); 1569 --color-selected-variant-border: rgb(0 0 0 / 1.0); 1570 --color-selected-variant-text: rgb(255 255 255 / 1.0); 1571 --color-selected-variant-hover-background: rgb(26 26 26 / 1.0); 1572 --color-selected-variant-hover-text: rgb(0 0 0 / 1.0); 1573 --color-selected-variant-hover-border: rgb(26 26 26 / 1.0); 1574 1575 --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10)); 1576 --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5-15)); 1577 --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50)); 1578 --color-foreground-muted: rgb(var(--color-foreground-rgb) / var(--opacity-60)); 1579 --font-h1--color: var(--color-foreground-heading); 1580 --font-h2--color: var(--color-foreground-heading); 1581 --font-h3--color: var(--color-foreground-heading); 1582 --font-h4--color: var(--color-foreground-heading); 1583 --font-h5--color: var(--color-foreground-heading); 1584 --font-h6--color: var(--color-foreground-heading); 1585 1586 /* Shadows */ 1587 1588 --shadow-drawer: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1589 1590 1591 --shadow-blur: 20px; 1592 --shadow-popover: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1593 1594 } 1595 1596 1597 1598 1599 .color-scheme-6b784332-3c2a-4cd3-8b9b-ef974cbb5b6a { 1600 --color-background: rgb(166 164 164 / 0.86); 1601 /* RGB values only to apply different opacities - Relative color values are not supported in iOS < 16.4 */ 1602 --color-background-rgb: 166 164 164; 1603 --opacity-5-15: 0.05; 1604 --opacity-10-25: 0.1; 1605 --opacity-35-55: 0.35; 1606 --opacity-40-60: 0.4; 1607 --opacity-30-60: 0.3; 1608 --color-foreground: rgb(255 255 255 / 1.0); 1609 --color-foreground-rgb: 255 255 255; 1610 --color-foreground-heading: rgb(255 255 255 / 1.0); 1611 --color-foreground-heading-rgb: 255 255 255; 1612 --color-primary: rgb(55 156 162 / 1.0); 1613 --color-primary-rgb: 55 156 162; 1614 --color-primary-hover: rgb(84 200 231 / 1.0); 1615 --color-primary-hover-rgb: 84 200 231; 1616 --color-border: rgb(230 230 230 / 1.0); 1617 --color-border-rgb: 230 230 230; 1618 --color-shadow: rgb(0 0 0 / 1.0); 1619 --color-shadow-rgb: 0 0 0; 1620 --color-primary-button-text: rgb(255 255 255 / 1.0); 1621 --color-primary-button-background: rgb(55 156 162 / 1.0); 1622 --color-primary-button-border: rgb(84 200 231 / 1.0); 1623 --color-primary-button-hover-text: rgb(255 255 255 / 1.0); 1624 --color-primary-button-hover-background: rgb(30 137 166 / 1.0); 1625 --color-primary-button-hover-border: rgb(0 0 0 / 1.0); 1626 --color-secondary-button-text: rgb(0 0 0 / 1.0); 1627 --color-secondary-button-background: rgb(0 0 0 / 0.06); 1628 --color-secondary-button-border: rgb(164 35 37 / 1.0); 1629 --color-secondary-button-hover-text: rgb(0 0 0 / 1.0); 1630 --color-secondary-button-hover-background: rgb(222 222 222 / 1.0); 1631 --color-secondary-button-hover-border: rgb(0 0 0 / 1.0); 1632 --color-input-background: rgb(255 255 255 / 1.0); 1633 --color-input-text: rgb(0 0 0 / 1.0); 1634 --color-input-text-rgb: 0 0 0; 1635 --color-input-border: rgb(230 230 230 / 1.0); 1636 --color-input-hover-background: rgb(245 245 245 / 1.0); 1637 --color-variant-background: rgb(255 255 255 / 1.0); 1638 --color-variant-border: rgb(230 230 230 / 1.0); 1639 --color-variant-text: rgb(0 0 0 / 1.0); 1640 --color-variant-text-rgb: 0 0 0; 1641 --color-variant-hover-background: rgb(0 0 0 / 1.0); 1642 --color-variant-hover-text: rgb(0 0 0 / 1.0); 1643 --color-variant-hover-border: rgb(0 0 0 / 1.0); 1644 --color-selected-variant-background: rgb(0 0 0 / 1
1644.0); 1645 --color-selected-variant-border: rgb(0 0 0 / 1.0); 1646 --color-selected-variant-text: rgb(255 255 255 / 1.0); 1647 --color-selected-variant-hover-background: rgb(26 26 26 / 1.0); 1648 --color-selected-variant-hover-text: rgb(0 0 0 / 1.0); 1649 --color-selected-variant-hover-border: rgb(26 26 26 / 1.0); 1650 1651 --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10)); 1652 --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5-15)); 1653 --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50)); 1654 --color-foreground-muted: rgb(var(--color-foreground-rgb) / var(--opacity-60)); 1655 --font-h1--color: var(--color-foreground-heading); 1656 --font-h2--color: var(--color-foreground-heading); 1657 --font-h3--color: var(--color-foreground-heading); 1658 --font-h4--color: var(--color-foreground-heading); 1659 --font-h5--color: var(--color-foreground-heading); 1660 --font-h6--color: var(--color-foreground-heading); 1661 1662 /* Shadows */ 1663 1664 --shadow-drawer: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1665 1666 1667 --shadow-blur: 20px; 1668 --shadow-popover: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1669 1670 } 1671 1672 1673 1674 1675 .color-scheme-44037267-dc56-4843-be9e-deacd4ab483a { 1676 --color-background: rgb(255 255 255 / 1.0); 1677 /* RGB values only to apply different opacities - Relative color values are not supported in iOS < 16.4 */ 1678 --color-background-rgb: 255 255 255; 1679 --opacity-5-15: 0.05; 1680 --opacity-10-25: 0.1; 1681 --opacity-35-55: 0.35; 1682 --opacity-40-60: 0.4; 1683 --opacity-30-60: 0.3; 1684 --color-foreground: rgb(255 255 255 / 1.0); 1685 --color-foreground-rgb: 255 255 255; 1686 --color-foreground-heading: rgb(255 255 255 / 1.0); 1687 --color-foreground-heading-rgb: 255 255 255; 1688 --color-primary: rgb(255 255 255 / 1.0); 1689 --color-primary-rgb: 255 255 255; 1690 --color-primary-hover: rgb(84 200 231 / 1.0); 1691 --color-primary-hover-rgb: 84 200 231; 1692 --color-border: rgb(230 230 230 / 1.0); 1693 --color-border-rgb: 230 230 230; 1694 --color-shadow: rgb(0 0 0 / 1.0); 1695 --color-shadow-rgb: 0 0 0; 1696 --color-primary-button-text: rgb(255 255 255 / 1.0); 1697 --color-primary-button-background: rgb(201 168 110 / 1.0); 1698 --color-primary-button-border: rgb(201 168 110 / 1.0); 1699 --color-primary-button-hover-text: rgb(255 255 255 / 1.0); 1700 --color-primary-button-hover-background: rgb(145 115 42 / 1.0); 1701 --color-primary-button-hover-border: rgb(145 115 42 / 1.0); 1702 --color-secondary-button-text: rgb(194 171 116 / 1.0); 1703 --color-secondary-button-background: rgb(0 0 0 / 0.0); 1704 --color-secondary-button-border: rgb(194 171 116 / 1.0); 1705 --color-secondary-button-hover-text: rgb(255 255 255 / 1.0); 1706 --color-secondary-button-hover-background: rgb(194 171 116 / 1.0); 1707 --color-secondary-button-hover-border: rgb(194 171 116 / 1.0); 1708 --color-input-background: rgb(255 255 255 / 1.0); 1709 --color-input-text: rgb(0 0 0 / 1.0); 1710 --color-input-text-rgb: 0 0 0; 1711 --color-input-border: rgb(230 230 230 / 1.0); 1712 --color-input-hover-background: rgb(245 245 245 / 1.0); 1713 --color-variant-background: rgb(255 255 255 / 1.0); 1714 --color-variant-border: rgb(230 230 230 / 1.0); 1715 --color-variant-text: rgb(0 0 0 / 1.0); 1716 --color-variant-text-rgb: 0 0 0; 1717 --color-variant-hover-background: rgb(0 0 0 / 1.0); 1718 --color-variant-hover-text: rgb(0 0 0 / 1.0); 1719 --color-variant-hover-border: rgb(0 0 0 / 1.0); 1720 --color-selected-variant-background: rgb(0 0 0 / 1.0); 1721 --color-selected-variant-border: rgb(0 0 0 / 1.0); 1722 --color-selected-variant-text: rgb(255 255 255 / 1.0); 1723 --color-selected-variant-hover-background: rgb(26 26 26 / 1.0); 1724 --color-selected-variant-hover-text: rgb(0 0 0 / 1.0); 1725 --color-selected-variant-hover-border: rgb(26 26 26 / 1.0); 1726 1727 --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10)); 1728 --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5-15)); 1729 --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50)); 1730 --color-foreground-muted: rgb(var(--color-foreground-rgb) / var(--opacity-60)); 1731 --font-h1--color: var(--color-foreground-heading); 1732 --font-h2--color: var(--color-foreground-heading); 1733 --font-h3--color: var(--color-foreground-heading); 1734 --font-h4--color: var(--color-foreground-heading); 1735 --font-h5--color: var(--color-foreground-heading); 1736 --font-h6--color: var(--color-foreground-heading); 1737 1738 /* Shadows */ 1739 1740 --shadow-drawer: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1741 1742 1743 --shadow-blur: 20px; 1744 --shadow-popover: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1745 1746 } 1747 1748 1749 1750 1751 .color-scheme-02fcdd7c-b2c9-4372-9922-e2a58541b795 { 1752 --color-background: rgb(255 255 255 / 1.0); 1753 /* RGB values only to apply different opacities - Relative color values are not supported in iOS < 16.4 */ 1754 --color-background-rgb: 255 255 255; 1755 --opacity-5-15: 0.05; 1756 --opacity-10-25: 0.1; 1757 --opacity-35-55: 0.35; 1758 --opacity-40-60: 0.4; 1759 --opacity-30-60: 0.3; 1760 --color-foreground: rgb(25 26 28 / 1.0); 1761 --color-foreground-rgb: 25 26 28; 1762 --color-foreground-heading: rgb(0 0 0 / 1.0); 1763 --color-foreground-heading-rgb: 0 0 0; 1764 --color-primary: rgb(0 0 0 / 0.59); 1765 --color-primary-rgb: 0 0 0; 1766 --color-primary-hover: rgb(222 222 222 / 1.0); 1767 --color-primary-hover-rgb: 222 222 222; 1768 --color-border: rgb(230 230 230 / 1.0); 1769 --color-border-rgb: 230 230 230; 1770 --color-shadow: rgb(0 0 0 / 1.0); 1771 --color-shadow-rgb: 0 0 0; 1772 --color-primary-button-text: rgb(255 255 255 / 1.0); 1773 --color-primary-button-background: rgb(0 0 0 / 1.0); 1774 --color-primary-button-border: rgb(0 0 0 / 1.0); 1775 --color-primary-button-hover-text: rgb(255 255 255 / 1.0); 1776 --color-primary-button-hover-background: rgb(67 67 65 / 1.0); 1777 --color-primary-button-hover-border: rgb(67 67 65 / 1.0); 1778 --color-secondary-button-text: rgb(201 168 110 / 1.0); 1779 --color-secondary-button-background: rgb(0 0 0 / 0.0); 1780 --color-secondary-button-border: rgb(201 168 110 / 1.0); 1781 --color-secondary-button-hover-text: rgb(255 255 255 / 1.0); 1782 --color-secondary-button-hover-background: rgb(201 168 110 / 1.0); 1783 --color-secondary-button-hover-border: rgb(201 168 110 / 1.0); 1784 --color-input-background: rgb(255 255 255 / 1.0); 1785 --color-input-text: rgb(0 0 0 / 1.0); 1786 --color-input-text-rgb: 0 0 0; 1787 --color-input-border: rgb(230 230 230 / 1.0); 1788 --color-input-hover-background: rgb(245 245 245 / 1.0); 1789 --color-variant-background: rgb(255 255 255 / 1.0); 1790 --color-variant-border: rgb(230 230 230 / 1.0); 1791 --color-variant-text: rgb(0 0 0 / 1.0); 1792 --color-variant-text-rgb: 0 0 0; 1793 --color-variant-hover-background: rgb(0 0 0 / 1.0); 1794 --color-variant-hover-text: rgb(0 0 0 / 1.0); 1795 --color-variant-hover-border: rgb(0 0 0 / 1.0); 1796 --color-selected-variant-background: rgb(0 0 0 / 1.0); 1797 --color-selected-variant-border: rgb(0 0 0 / 1.0); 1798 --color-selected-variant-text: rgb(255 255 255 / 1.0); 1799 --color-selected-variant-hover-background: rgb(26 26 26 / 1.0); 1800 --color-selected-variant-hover-text: rgb(0 0 0 / 1.0); 1801 --color-selected-variant-hover-border: rgb(26 26 26 / 1.0); 1802 1803 --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10)); 1804 --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5-15)); 1805 --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50)); 1806 --color-foreground-muted: rgb(var(--color-foreground-rgb) / var(--opacity-60)); 1807 --font-h1--color: var(--color-foreground-heading); 1808 --font-h2--color: var(--color-foreground-heading); 1809 --font-h3--color: var(--color-foreground-heading); 1810 --font-h4--color: var(--color-foreground-heading); 1811 --font-h5--color: var(--color-foreground-heading); 1812 --font-h6--color: var(--color-foreground-heading); 1813 1814 /* Shadows */ 1815 1816 --shadow-drawer: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1817 1818 1819 --shadow-blur: 20px; 1820 --shadow-popover: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1821 1822 } 1823 1824 1825 1826 1827 .color-scheme-9176e3ba-7c70-473f-a6a1-10649243c66e { 1828 --color-background: rgb(255 255 255 / 1.0); 1829 /* RGB values only to apply different opacities - Relative color values are not supported in iOS < 16.4 */ 1830 --color-background-rgb: 255 255 255; 1831 --opacity-5-15: 0.05; 1832 --opacity-10-25: 0.1; 1833 --opacity-35-55: 0.35; 1834 --opacity-40-60: 0.4; 1835 --opacity-30-60: 0.3; 1836 --color-foreground: rgb(66 64 64 / 1.0); 1837 --color-foreground-rgb: 66 64 64; 1838 --color-foreground-heading: rgb(225 227 228 / 1.0); 1839 --color-foreground-heading-rgb: 225 227 228; 1840 --color-primary: rgb(166 131 45 / 1.0); 1841 --color-primary-rgb: 166 131 45; 1842 --color-primary-hover: rgb(32 32 32 / 1.0); 1843 --color-primary-hover-rgb: 32 32 32;
1844 --color-border: rgb(230 230 230 / 1.0); 1845 --color-border-rgb: 230 230 230; 1846 --color-shadow: rgb(0 0 0 / 1.0); 1847 --color-shadow-rgb: 0 0 0; 1848 --color-primary-button-text: rgb(255 255 255 / 1.0); 1849 --color-primary-button-background: rgb(207 181 134 / 1.0); 1850 --color-primary-button-border: rgb(207 181 134 / 1.0); 1851 --color-primary-button-hover-text: rgb(255 255 255 / 1.0); 1852 --color-primary-button-hover-background: rgb(228 199 127 / 1.0); 1853 --color-primary-button-hover-border: rgb(228 199 127 / 1.0); 1854 --color-secondary-button-text: rgb(0 0 0 / 1.0); 1855 --color-secondary-button-background: rgb(255 255 255 / 1.0); 1856 --color-secondary-button-border: rgb(164 35 37 / 1.0); 1857 --color-secondary-button-hover-text: rgb(0 0 0 / 1.0); 1858 --color-secondary-button-hover-background: rgb(222 222 222 / 1.0); 1859 --color-secondary-button-hover-border: rgb(0 0 0 / 1.0); 1860 --color-input-background: rgb(255 255 255 / 1.0); 1861 --color-input-text: rgb(0 0 0 / 1.0); 1862 --color-input-text-rgb: 0 0 0; 1863 --color-input-border: rgb(230 230 230 / 1.0); 1864 --color-input-hover-background: rgb(0 0 0 / 1.0); 1865 --color-variant-background: rgb(37 30 30 / 1.0); 1866 --color-variant-border: rgb(230 230 230 / 1.0); 1867 --color-variant-text: rgb(0 0 0 / 1.0); 1868 --color-variant-text-rgb: 0 0 0; 1869 --color-variant-hover-background: rgb(0 0 0 / 1.0); 1870 --color-variant-hover-text: rgb(0 0 0 / 1.0); 1871 --color-variant-hover-border: rgb(0 0 0 / 1.0); 1872 --color-selected-variant-background: rgb(0 0 0 / 1.0); 1873 --color-selected-variant-border: rgb(0 0 0 / 1.0); 1874 --color-selected-variant-text: rgb(255 255 255 / 1.0); 1875 --color-selected-variant-hover-background: rgb(26 26 26 / 1.0); 1876 --color-selected-variant-hover-text: rgb(0 0 0 / 1.0); 1877 --color-selected-variant-hover-border: rgb(26 26 26 / 1.0); 1878 1879 --input-disabled-background-color: rgb(var(--color-foreground-rgb) / var(--opacity-10)); 1880 --input-disabled-border-color: rgb(var(--color-foreground-rgb) / var(--opacity-5-15)); 1881 --input-disabled-text-color: rgb(var(--color-foreground-rgb) / var(--opacity-50)); 1882 --color-foreground-muted: rgb(var(--color-foreground-rgb) / var(--opacity-60)); 1883 --font-h1--color: var(--color-foreground-heading); 1884 --font-h2--color: var(--color-foreground-heading); 1885 --font-h3--color: var(--color-foreground-heading); 1886 --font-h4--color: var(--color-foreground-heading); 1887 --font-h5--color: var(--color-foreground-heading); 1888 --font-h6--color: var(--color-foreground-heading); 1889 1890 /* Shadows */ 1891 1892 --shadow-drawer: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1893 1894 1895 --shadow-blur: 20px; 1896 --shadow-popover: 0px 4px 20px rgb(var(--color-shadow-rgb) / var(--opacity-15)); 1897 1898 } 1899 1900 1901 body, .color-scheme-1, .color-scheme-2, .color-scheme-3, .color-scheme-4, .color-scheme-5, .color-scheme-6, .color-scheme-7, .color-scheme-14d561a2-4fe3-4ccf-a8e8-e70dfad6e07b, .color-scheme-b7379327-f284-41e4-8b8f-3c34e0fea334, .color-scheme-6b784332-3c2a-4cd3-8b9b-ef974cbb5b6a, .color-scheme-44037267-dc56-4843-be9e-deacd4ab483a, .color-scheme-02fcdd7c-b2c9-4372-9922-e2a58541b795, .color-scheme-9176e3ba-7c70-473f-a6a1-10649243c66e { 1902 color: var(--color-foreground); 1903 background-color: var(--color-background); 1904 } 1905</style> 1906 1907 1908
1908<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
1908<meta name="facebook-domain-verification" content="k2s5720l60u19ye2vlqen23yap3624"> 1909<meta name="google-site-verification" content="V865pUpXVVkirU0PKbpgOwjqHvZZkZo1txlLzVMoj1o"> 1910<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/92284256520/digital_wallets/dialog"> 1911<meta id="in-context-paypal-metadata" data-shop-id="92284256520" data-venmo-supported="false" data-environment="production" data-locale="de_DE" data-paypal-v4="true" data-currency="EUR"> 1912<link rel="ucp" href="/.well-known/ucp" version="2026-08-25">
1912<script async="async" src="/checkouts/internal/preloads.js?locale=de-DE"></script>
1912 1913<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
1914<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=de-DE&shop_id=92284256520" crossorigin="anonymous"></script>
vendor: 1 bytes, line 1914
1914
1915<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":92284256520,"countryCode":"DE","currencyCode":"EUR","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/92284256520","merchantName":"Luxupur®","requiredBillingContactFields":["postalAddress","email","phone"],"requiredShippingContactFields":["postalAddress","email","phone"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","amex","maestro"],"total":{"type":"pending","label":"Luxupur®","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 1915
1915
1916<script id="shopify-features" type="application/json">{"accessToken":"c4a0fd8c710f7c3f1dd86bb4ff290c55","betas":["rich-media-storefront-analytics"],"domain":"luxupur.de","predictiveSearch":true,"shopId":92284256520,"locale":"de"}</script>
vendor: 1 bytes, line 1916
1916
1917<script>var Shopify = Shopify || {}; 1918Shopify.shop = "ahsvz2-1w.myshopify.com"; 1919Shopify.locale = "de"; 1920Shopify.currency = {"active":"EUR","rate":"1.0"}; 1921Shopify.country = "DE"; 1922Shopify.theme = {"name":"Neue Kopie von Heute 14.6. NEU","id":198021480712,"schema_name":"Savor","schema_version":"3.2.1","theme_store_id":3626,"role":"main"}; 1923Shopify.theme.handle = "null"; 1924Shopify.theme.style = {"id":null,"handle":null}; 1925Shopify.cdnHost = "luxupur.de/cdn"; 1926Shopify.routes = Shopify.routes || {}; 1927Shopify.routes.root = "/"; 1928Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js"; 1929Shopify.SignInWithShop = Shopify.SignInWithShop || {}; 1930Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {}; 1931Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 1931
1931
1932<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 1932
1932
1933<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 1933
1933
1934<script> 1935 window.ShopifyPay = window.ShopifyPay || {}; 1936 window.ShopifyPay.apiHost = "shop.app\/pay"; 1937 window.ShopifyPay.redirectState = null; 1938</script>
vendor: 1 bytes, line 1938
1938
1939<script> 1940 window.Shopify = window.Shopify || {}; 1941 window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {}; 1942 window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 }; 1943 window.Shopify.SignInWithShop.eligible = true; 1944</script>
vendor: 1 bytes, line 1944
1944
1945<script id="shop-js-analytics" type="application/json">{"pageType":"cart"}</script>
vendor: 1 bytes, line 1945
1945
1946<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 1946
1946
1947<script type="module"> 1948 await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.de.esm.js"); 1949 1950 window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true}); 1951 1952</script>
vendor: 1 bytes, line 1952
1952
1953<script> 1954 window.Shopify = window.Shopify || {}; 1955 if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {}; 1956 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"]}; 1957</script>
vendor: 1 bytes, line 1957
1957
1958<script>(function() { 1959 var isLoaded = false; 1960 function asyncLoad() { 1961 if (isLoaded) return; 1962 isLoaded = true; 1963 var urls = ["https:\/\/s3.eu-west-1.amazonaws.com\/production-klarna-il-shopify-osm\/72a80347586bd7910d812dacd7945a4c4d8224ff\/ahsvz2-1w.myshopify.com-1781452891562.js?shop=ahsvz2-1w.myshopify.com"]; 1964 for (var i = 0; i < urls.length; i++) { 1965 var s = document.createElement('script'); 1966 s.type = 'text/javascript'; 1967 s.async = true; 1968 s.src = urls[i]; 1969 var x = document.getElementsByTagName('script')[0]; 1970 x.parentNode.insertBefore(s, x); 1971 } 1972 }; 1973 if(window.attachEvent) { 1974 window.attachEvent('onload', asyncLoad); 1975 } else { 1976 window.addEventListener('load', asyncLoad, false); 1977 } 1978})();</script>
vendor: 1 bytes, line 1978
1978
1979<script id="__st">var __st={"a":92284256520,"offset":7200,"reqid":"806fb77a-305e-4a89-81e4-ef8968f1e206-1791355435","pageurl":"luxupur.de\/cart","u":"8736e55875ad","p":"cart"};</script>
vendor: 1 bytes, line 1979
1979
1980<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 1980
1980
1981<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 1981
1981
1982<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//luxupur.de/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 1982
1982
1983<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 = "//luxupur.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>
1983<script crossorigin="anonymous" defer="defer" src="//luxupur.de/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-616277c7.js?v=20250812"></script>
vendor: 1 bytes, line 1983
1983
1984<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 1984
1984
1985<script> 1986 window.Shopify = window.Shopify || {}; 1987 window.Shopify.MCP = window.Shopify.MCP || {}; 1988 window.Shopify.MCP.enabled = true; 1989 window.Shopify.MCP.shop = "ahsvz2-1w.myshopify.com"; 1990 window.Shopify.MCP.mcpEndpoint = "https:\/\/luxupur.de\/api\/mcp"; 1991 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?\"\nSet policy_types to also get the store's written policies (full text and URL).\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."},"policy_types":{"type":"array","items":{"type":"string","enum":["refund","shipping","privacy","terms_of_service","terms_of_sale","subscription","legal_notice","contact"]},"description":"Policy kinds to fetch, chosen from the user's question â e.g. [\"refund\"] for returns\/exchanges\/damaged items, [\"contact\"] for phone\/hours\/address. Include every kind the question touches. Omit it to get only FAQ answers."}},"required":["query"]}}]; 1992</script>
vendor: 1 bytes, line 1992
1992
1993<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("\/\/luxupur.de\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})(); 1994</script>
vendor: 1 bytes, line 1994
1994
1995<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://luxupur.de/cdn/shopifycloud/portable-wallets/latest/portable-wallets.de.js",t.type="module",document.head.appendChild(t)}}; 1996</script>
vendor: 1 bytes, line 1996
1996
1997<script data-source-attribution="shopify.dynamic_checkout.buyer_consent"> 1998 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); 1999</script>
vendor: 1 bytes, line 1999
1999
2000<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})}})); 2001</script>
vendor: 1 bytes, line 2001
2001
2002<script id='scb4127' type='text/javascript' async='' src='https://luxupur.de/cdn/shopifycloud/privacy-banner/storefront-banner.js'></script>
2002<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://luxupur.de/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous"> 2003<style id="shopify-accelerated-checkout-cart"> 2004 #shopify-buyer-consent { 2005 margin-top: 1em; 2006 display: inline-block; 2007 width: 100%; 2008} 2009 2010#shopify-buyer-consent.hidden { 2011 display: none; 2012} 2013 2014#shopify-subscription-policy-button { 2015 background: none; 2016 border: none; 2017 padding: 0; 2018 text-decoration: underline; 2019 font-size: inherit; 2020 cursor: pointer; 2021} 2022 2023#shopify-subscription-policy-button::before { 2024 box-shadow: none; 2025} 2026 2027 </style> 2028<link rel="stylesheet" media="screen" href="//luxupur.de/cdn/shop/t/97/compiled_assets/styles.css?v=9608100074363935081790678889">
2029<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
2029 2030 2031 2032 2033 2034 2035
2036<script 2037src="https://www.paypal.com/sdk/js?client-id=BAAdUogQnBvnWQsF0SCxUBAe93It8Un_s6YzNXARkSnx19Skr3tO4B5HxuLnJ9TWXK3gqyTtif9NlHUza8¤cy=EUR&components=messages" 2038data-namespace="PayPalSDK"> 2039</script>
2039 2040 2041 2042 2043 <!-- BEGIN app block: shopify://apps/mable/blocks/inject-log-script/369b4fed-dc17-45bb-b0b6-5cf0837c7ccb --> 2044 2045 2046
2047<script> 2048 localStorage.setItem('wtag_shp_mkt', JSON.stringify({ 2049 handle: 'de', 2050 id: '94288183560', 2051 region: 'Deutschland', 2052 })); 2053 localStorage.setItem('wtag_shp_ext_id', 'AL2ZKcUNwZUZYbnlBU__12634813005945594690'); 2054</script>
2054 2055
2056<script type='text/javascript' id='wgs-wrapper-prod'>(()=>{var e="/apps/m2/static2/wtag-shpfy.js?uid=ahsvz2-1w.myshopify.com",t="wgs-script-prod";function r(e,t){if(!document.getElementById(t)){var r=document.createElement("script");r.src=e,r.id=t,r.async=!0,r.type="text/javascript",document.head.appendChild(r)}}var a="wgs_cpx_loaded_prod";function n(){var e;return"true"===(localStorage.getItem(a)||"false")}if(n())localStorage.removeItem(a),r(e,t);else var i=setInterval(()=>{n()&&(clearInterval(i),localStorage.removeItem(a),r(e,t))},200)})();</script>
2056 2057<!-- END app block --><!-- BEGIN app block: shopify://apps/judge-me-reviews/blocks/judgeme_core/61ccd3b1-a9f2-4160-9fe9-4fec8413e5d8 --><!-- Start of Judge.me Core --> 2058 2059 2060 2061 2062 2063 2064 2065<link rel="dns-prefetch" href="https://cdn.judge.me"> 2066<link rel="dns-prefetch" href="https://cdn1.judge.me"> 2067<link rel="dns-prefetch" href="https://api.judge.me"> 2068
2069<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
2069wertungen 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
2069h 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":true,"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":true,"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":true,"widget_load_with_code_splitting":true,"widget_ugc_install_preference":false,"widget_ugc_title":"Von uns hergestellt, von Ihnen geteilt","widget_ugc_subt
2069itle":"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,"popup_widget_source_mode":"auto","popup_widget_page_product":"current_product","popup_widget_page_collection":"current_collection","popup_widget_page_cart":"cart_mode","popup_widget_page_home":"all","popup_widget_star_rating":"all","popup_widget_review_type":"all","popup_widget_top_up_thin_pages":true,"popup_widget_corner_styling":"soft","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":"Von KI zusammengefasst und ausgewählt aus 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
2069sen 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":true,"request_review_other_products_in_order":true,"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
2069wertung 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
2069wertung 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":"Bewerter erhielt einen Rabattcode für eine zukünftige Bestellung","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":true,"review_widget_qna_enabled":false,"review_widget_revamp_dual_publish_end_date":"2026-08-29T00:31:50.000+00:00","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_
2069number_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":"Luxupur®","shop_currency":"EUR","widget_version":"3.0","footer":true,"autopublish":true,"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":"Luxupur®"};</script>
2069 <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:'Luxupur®'}.jdgm-full-rev-modal.rev-snippet-widget .jm-mfp-container .jdgm-full-rev .jdgm-full-rev__product-button{border-radius:calc( 8px * 6 )} 2070</style> <style class='jdgm-settings-style'></style> 2071 2072 2073 2074 2075 <style class='jdgm-miracle-styles'> 2076 @-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
2076/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} 2077 2078</style> 2079 2080 2081 2082 2083 2084 2085 2086 2087
2088<script data-cfasync='false' class='jdgm-script'> 2089!function(e){window.jdgm=window.jdgm||{}; 2090/* INF-1976 */ 2091var _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;}(); 2092if(_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;} 2093jdgm.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/01a11176-2280-7862-971a-b99c4fd1084c/judgeme-773/assets/",jdgm.CDN_API_HOST="https://cdn.judge.me/", 2094jdgm.docReady=function(d){(e.attachEvent?"complete"===e.readyState:"loading"!==e.readyState)? 2095setTimeout(d,0):e.addEventListener("DOMContentLoaded",d)},jdgm.loadCSS=function(d,t,o,a){ 2096!o&&jdgm.loadCSS.requestedUrls.indexOf(d)>=0||(jdgm.loadCSS.requestedUrls.push(d), 2097(a=e.createElement("link")).rel="stylesheet",a.class="jdgm-stylesheet",a.media="nope!", 2098a.href=d,a.onload=function(){this.media="all",t&&setTimeout(t)},e.body.appendChild(a))}, 2099jdgm.loadCSS.requestedUrls=[],jdgm.loadJS=function(e,d){var t=new XMLHttpRequest; 2100t.onreadystatechange=function(){4===t.readyState&&t.status>=200&&t.status<300&&(Function(t.response)(),d&&d(t.response))}, 2101t.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( 2102".jdgm-widget, .jdgm-all-reviews-page").length>0)&&(jdgmSettings.widget_load_with_code_splitting? 2103parseFloat(jdgmSettings.widget_version)>=3?jdgm.loadCSS(jdgm.CDN_BASE_URL+"widget_v3_base.css"): 2104jdgm.loadCSS(jdgm.CDN_BASE_URL+"widget_base.css"):jdgm.loadCSS(jdgm.CDN_BASE_URL+"shopify_v2.css") 2105)}))}(document); 2106</script>
2106 2107<noscript><link rel="stylesheet" type="text/css" media="all" href="https://cdn.shopify.com/extensions/01a11176-2280-7862-971a-b99c4fd1084c/judgeme-773/assets/shopify_v2.css"></noscript> 2108 2109<!-- BEGIN app snippet: theme_fix_tags -->
2109<script> 2110 (function() { 2111 var jdgmThemeFixes = null; 2112 if (!jdgmThemeFixes) return; 2113 2114 // "All themes" fix: CSS and JS applied on every theme. CSS is injected 2115 // before the per-theme fix so the theme-specific CSS wins the cascade. 2116 // HTML is never applied globally (too risky). 2117 var allThemesFix = jdgmThemeFixes['all']; 2118 if (allThemesFix && allThemesFix.css) { 2119 var allStyleTag = document.createElement('style'); 2120 allStyleTag.classList.add('jdgm-theme-fix-style-all'); 2121 allStyleTag.innerHTML = allThemesFix.css; 2122 document.head.append(allStyleTag); 2123 }; 2124 2125 if (allThemesFix && allThemesFix.js) { 2126 var allScriptTag = document.createElement('script'); 2127 allScriptTag.classList.add('jdgm-theme-fix-script-all'); 2128 allScriptTag.innerHTML = allThemesFix.js; 2129 document.head.append(allScriptTag); 2130 }; 2131 2132 var thisThemeFix = jdgmThemeFixes[Shopify.theme.id]; 2133 if (!thisThemeFix) return; 2134 2135 if (thisThemeFix.html) { 2136 document.addEventListener("DOMContentLoaded", function() { 2137 var htmlDiv = document.createElement('div'); 2138 htmlDiv.classList.add('jdgm-theme-fix-html'); 2139 htmlDiv.innerHTML = thisThemeFix.html; 2140 document.body.append(htmlDiv); 2141 }); 2142 }; 2143 2144 if (thisThemeFix.css) { 2145 var styleTag = document.createElement('style'); 2146 styleTag.classList.add('jdgm-theme-fix-style'); 2147 styleTag.innerHTML = thisThemeFix.css; 2148 document.head.append(styleTag); 2149 }; 2150 2151 if (thisThemeFix.js) { 2152 var scriptTag = document.createElement('script'); 2153 scriptTag.classList.add('jdgm-theme-fix-script'); 2154 scriptTag.innerHTML = thisThemeFix.js; 2155 document.head.append(scriptTag); 2156 }; 2157 })(); 2158</script>
2158 2159<!-- END app snippet --> 2160<!-- End of Judge.me Core --> 2161 2162 2163 2164<!-- END app block -->
2164<script src="https://cdn.shopify.com/extensions/01a110dd-e163-7526-9aaf-7a12ca7c2687/forms-2612/assets/shopify-forms-loader.js" type="text/javascript" defer="defer"></script>
vendor: 1 bytes, line 2164
2164
2165<script src="https://cdn.shopify.com/extensions/01a11176-2280-7862-971a-b99c4fd1084c/judgeme-773/assets/loader.js" type="text/javascript" defer="defer"></script>
2165 2166<link href="https://cdn.shopify.com/extensions/01a06f8a-31bf-7121-afb7-4040e48c02a0/retentionly-whatsapp-99/assets/styles.css" rel="stylesheet" type="text/css" media="all"> 2167<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
2168<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: 92284256520,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "cart"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
vendor: 1 bytes, line 2168
2168
2169<script> 2170 window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || []; 2171</script>
vendor: 1 bytes, line 2171
2171
2172<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}
2172).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: 92284256520,storefrontBaseUrl: "https://luxupur.de",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://luxupur.de/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b"],webPixelsConfigList: [{"id":"5058494728","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"]}
2172,"dataSharingState":"unrestricted"},{"id":"4675338504","configuration":"{\"businessId\":\"C9D837DDA102A336BDF0E15A\",\"environment\":\"production\",\"debug\":\"false\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"5a8ca3d2c8c198d27ce52b5826353789","type":"APP","apiClientId":861484,"privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"dataSharingAdjustments":{"protectedCustomerApprovalScopes":["read_customer_email","read_customer_name","read_customer_personal_data","read_customer_phone"],"dataSharingControls":["share_all_events"]},"dataSharingState":"optimized"},{"id":"3512729864","configuration":"{\"shopifyDomain\":\"ahsvz2-1w.myshopify.com\",\"version\":\"2.5.0\"}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"f10c06a608a63ca90eda6b59723f35a2","type":"APP","apiClientId":80811360257,"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":"unrestricted"},{"id":"3259662600","configuration":"{\"config\":\"{\\\"google_tag_ids\\\":[\\\"GT-WPFKKX9L\\\",\\\"AW-17600260424\\\"],\\\"target_country\\\":\\\"ZZ\\\",\\\"gtag_events\\\":[{\\\"type\\\":\\\"begin_checkout\\\",\\\"action_label\\\":[\\\"G-3M2B9FYZCJ\\\",\\\"AW-17600260424\\\/UUVPCIPB3KQbEMjSushB\\\"]},{\\\"type\\\":\\\"search\\\",\\\"action_label\\\":[\\\"G-3M2B9FYZCJ\\\",\\\"AW-17600260424\\\/Xu6DCI_B3KQbEMjSushB\\\"]},{\\\"type\\\":\\\"remove_from_cart\\\",\\\"action_label\\\":\\\"G-3M2B9FYZCJ\\\"},{\\\"type\\\":\\\"view_item\\\",\\\"action_label\\\":[\\\"G-3M2B9FYZCJ\\\",\\\"AW-17600260424\\\/BUTeCIzB3KQbEMjSushB\\\",\\\"MC-QDQK7XG45Q\\\"]},{\\\"type\\\":\\\"add_shipping_info\\\",\\\"action_label\\\":\\\"G-3M2B9FYZCJ\\\"},{\\\"type\\\":\\\"purchase\\\",\\\"action_label\\\":[\\\"G-3M2B9FYZCJ\\\",\\\"AW-17600260424\\\/jAyrCIDB3KQbEMjSushB\\\",\\\"MC-QDQK7XG45Q\\\"]},{\\\"type\\\":\\\"page_view\\\",\\\"action_label\\\":[\\\"G-3M2B9FYZCJ\\\",\\\"AW-17600260424\\\/1_3mCInB3KQbEMjSushB\\\",\\\"MC-QDQK7XG45Q\\\"]},{\\\"type\\\":\\\"view_item_list\\\",\\\"action_label\\\":\\\"G-3M2B9FYZCJ\\\"},{\\\"type\\\":\\\"add_payment_info\\\",\\\"action_label\\\":[\\\"G-3M2B9FYZCJ\\\",\\\"AW-17600260424\\\/KviuCJLB3KQbEMjSushB\\\"]},{\\\"type\\\":\\\"add_to_cart\\\",\\\"action_label\\\":[\\\"G-3M2B9FYZCJ\\\",\\\"AW-17600260424\\\/THboCIbB3KQbEMjSushB\\\"]},{\\\"type\\\":\\\"view_cart\\\",\\\"action_label\\\":\\\"G-3M2B9FYZCJ\\\"}],\\\"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":"unrestricted","enabledFlags":["9a3ed68a"]},{"id":"2702868744","configuration":"{\"pixel_id\":\"585097444658887\",\"pixel_type\":\"facebook_pixel\"}","eventPayloadVersion":"v1","runtimeContext":"OPEN","scriptVersion":"bd2f978c17a94bbb8a74d43de2165dc5","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":"unrestricted","enabledFlags":["9a3ed68a"]},{"id":"309362952","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING","SALE_OF_DATA"],"name":"Adverfly"},{"id":"323387656","eventPayloadVersion":"1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":[],"name":"Mable 2.0"},{"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":"Luxupur®","paymentSettings":{"currencyCode":"EUR"},"myshopifyDomain":"ahsvz2-1w.myshopify.com","countryCode":"DE","storefrontUrl":"https:\/\/luxupur.de"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[{"id":"
217210753260585224","handle":"luxupur-ergopillow","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"53313281753352","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"10780297658632","handle":"orthobase-classic-lattenrost","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"53465034719496","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"10722235023624","handle":"orthobase-comfort-elektrischer-lattenrost","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"54516253360392","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"10779731099912","handle":"orthoflex-premium-tellerlattenrost-elektrisch","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"53411425124616","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]},{"id":"10546059673864","handle":"luxupur-orthopillow-kissen","isCollective":null,"title":null,"type":null,"untranslatedTitle":null,"url":null,"vendor":null,"remoteShopId":null,"variants":[{"id":"52999878803720","image":null,"price":null,"sku":null,"title":null,"untranslatedTitle":null}]}],"purchasingCompany":null},},"https://luxupur.de/cdn","87a86122w399bf3b8pd0403c97m2c07468c",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"true","themeId":"198021480712","themeStoreId":"3626","themePublished":"true","eventMetadataId":"3de7e4f8-e078-4ab9-83dd-42fade22e7ae","pageType":"cart","shopId":"92284256520","storefrontBaseUrl":"https:\/\/luxupur.de","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\", \"8450a54b\"]","isMerchantRequest":"false","hashVersion":"87a86122w399bf3b8pd0403c97m2c07468c","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script>
2172<script> 2173 window.ShopifyAnalytics = window.ShopifyAnalytics || {}; 2174 window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; 2175 window.ShopifyAnalytics.meta.currency = 'EUR'; 2176 var meta = {"page":{"pageType":"cart","requestId":"806fb77a-305e-4a89-81e4-ef8968f1e206-1791355435"}}; 2177 for (var attr in meta) { 2178 window.ShopifyAnalytics.meta[attr] = meta[attr]; 2179 } 2180</script>
vendor: 1 bytes, line 2180
2180
2181<script class="analytics"> 2182 (function () { 2183 var customDocumentWrite = function(content) { 2184 var jquery = null; 2185 2186 if (window.jQuery) { 2187 jquery = window.jQuery; 2188 } else if (window.Checkout && window.Checkout.$) { 2189 jquery = window.Checkout.$; 2190 } 2191 2192 if (jquery) { 2193 jquery('body').append(content); 2194 } 2195 }; 2196 2197 var hasLoggedConversion = function(token) { 2198 if (token) { 2199 return document.cookie.indexOf('loggedConversion=' + token) !== -1; 2200 } 2201 return false; 2202 } 2203 2204 var setCookieIfConversion = function(token) { 2205 if (token) { 2206 var twoMonthsFromNow = new Date(Date.now()); 2207 twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); 2208 2209 document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; 2210 } 2211 } 2212 2213 var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; 2214 window.ShopifyAnalytics.lib.trekkie = window.trekkie; 2215 if (trekkie.integrations) { 2216 return; 2217 } 2218 trekkie.methods = [ 2219 'identify', 2220 'page', 2221 'ready', 2222 'track', 2223 'trackForm', 2224 'trackLink' 2225 ]; 2226 trekkie.factory = function(method) { 2227 return function() { 2228 var args = Array.prototype.slice.call(arguments); 2229 args.unshift(method); 2230 trekkie.push(args); 2231 if (method == 'track' || method == 'page') { 2232 var pageUrl; 2233 try { 2234 pageUrl = window.location.href; 2235 } catch (e) {} 2236 var pageReferrer; 2237 try { 2238 pageReferrer = document.referrer; 2239 } catch (e) {} 2240 try { 2241 if (window.__TREKKIE_SHIM_QUEUE == null) { 2242 window.__TREKKIE_SHIM_QUEUE = []; 2243 } 2244 window.__TREKKIE_SHIM_QUEUE.push({ 2245 from: 'trekkie-stub', 2246 method: method, 2247 args: args.slice(1), 2248 pageContext: { 2249 url: pageUrl, 2250 referrer: pageReferrer 2251 } 2252 }); 2253 } catch (e) { 2254 // no-op 2255 } 2256 } 2257 return trekkie; 2258 }; 2259 }; 2260 for (var i = 0; i < trekkie.methods.length; i++) { 2261 var key = trekkie.methods[i]; 2262 trekkie[key] = trekkie.factory(key); 2263 } 2264 trekkie.load = function(config) { 2265 trekkie.config = config || {}; 2266 trekkie.config.initialDocumentCookie = document.cookie; 2267 var first = document.getElementsByTagName('script')[0]; 2268var script = document.createElement('script'); 2269script.type = 'text/javascript'; 2270script.onerror = function(e) { 2271 var scriptFallback = document.createElement('script'); 2272 scriptFallback.type = 'text/javascript'; 2273 scriptFallback.onerror = function(error) { 2274 var Monorail = { 2275 produce: function produce(monorailDomain, schemaId, payload) { 2276 var currentMs = new Date().getTime(); 2277 var event = { 2278 schema_id: schemaId, 2279 payload: payload, 2280 metadata: { 2281 event_created_at_ms: currentMs, 2282 event_sent_at_ms: currentMs 2283 } 2284 }; 2285 return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); 2286 }, 2287 sendRequest: function sendRequest(endpointUrl, payload) { 2288 // Try the sendBeacon API 2289 if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { 2290 var blobData = new window.Blob([payload], { 2291 type: 'text/plain' 2292 }); 2293 2294 if (window.navigator.sendBeacon(endpointUrl, blobData)) { 2295 return true; 2296 } // sendBeacon was not successful 2297 2298 } // XHR beacon 2299 2300 var xhr = new XMLHttpRequest(); 2301 2302 try { 2303 xhr.open('POST', endpointUrl); 2304 xhr.setRequestHeader('Content-Type', 'text/plain'); 2305 xhr.send(payload); 2306 } catch (e) { 2307 console.log(e); 2308 } 2309 2310 return false; 2311 }, 2312 isIos12: function isIos12() { 2313 return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; 2314 } 2315 }; 2316 Monorail.produce('monorail-edge.shopifysvc.com', 2317 'trekkie_storefront_load_errors/1.1', 2318 {shop_id: 92284256520, 2319 theme_id: 198021480712, 2320 app_name: "storefront", 2321 context_url: window.location.href, 2322 source_url: "//luxupur.de/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js"}); 2323 2324 }; 2325 scriptFallback.async = true; 2326 scriptFallback.src = '//luxupur.de/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js'; 2327 first.parentNode.insertBefore(scriptFallback, first); 2328}; 2329script.async = true; 2330script.src = '//luxupur.de/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js'; 2331first.parentNode.insertBefore(script, first); 2332 2333 }; 2334 trekkie.load( 2335 {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":92284256520,"isMerchantRequest":null,"themeId":198021480712,"themeCityHash":"5275321652457583478","contentLanguage":"de","currency":"EUR","eventMetadataId":"3de7e4f8-e078
2335-4ab9-83dd-42fade22e7ae"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":true,"source":"trekkie-storefront-renderer","apiClientId":580111}} 2336 ); 2337 2338 var loaded = false; 2339 trekkie.ready(function() { 2340 if (loaded) return; 2341 loaded = true; 2342 2343 window.ShopifyAnalytics.lib = window.trekkie; 2344 2345 var originalDocumentWrite = document.write; 2346 document.write = customDocumentWrite; 2347 try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; 2348 document.write = originalDocumentWrite; 2349 2350 var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) 2351 var token = match? match[1]: undefined; 2352 if (!hasLoggedConversion(token)) { 2353 setCookieIfConversion(token); 2354 2355 } 2356 }); 2357 2358 window.ShopifyAnalytics.lib.page(null,{"pageType":"cart","requestId":"806fb77a-305e-4a89-81e4-ef8968f1e206-1791355435","shopifyEmitted":true}); 2359 2360 var eventsListenerScript = document.createElement('script'); 2361 eventsListenerScript.async = true; 2362 eventsListenerScript.src = "//luxupur.de/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js"; 2363 document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); 2364})();</script>
vendor: 1 bytes, line 2364
2364
2365<script 2366 defer 2367 src="https://luxupur.de/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.6.min.js" 2368 data-application="storefront-renderer" 2369 data-shop-id="92284256520" 2370 data-render-region="gcp-us-west1" 2371 data-page-type="cart" 2372 data-theme-instance-id="198021480712" 2373 data-theme-name="Savor" 2374 data-theme-version="3.2.1" 2375 data-monorail-region="shop_domain" 2376 data-resource-timing-sampling-rate="10" 2377 data-shs="true" 2378 data-shs-beacon="true" 2379 data-shs-export-with-fetch="true" 2380 data-shs-logs-sample-rate="1" 2381 data-shs-beacon-endpoint="https://luxupur.de/api/collect" 2382></script>
2382 2383<meta name="shopify-y" content="c8b14cb1-a207-491d-98ea-d6d7110a5741" data-expiration="1822913035000"><meta name="shopify-s" content="78a2b8b6-3cb4-47da-999b-76a0145f18c4" data-expiration="1791357235000"><meta name="new-cookie-storage-activated" content="t"> 2384</head> 2385 2386 <body class="page-width-narrow card-hover-effect-none"> 2387 <a 2388 class="skip-to-content-link button-secondary" 2389 href="#MainContent" 2390> 2391 Direkt zum Inhalt 2392</a> 2393 2394 <div id="header-group"> 2395 <!-- BEGIN sections: header-group --> 2396<header id="shopify-section-sections--29313955201288__header_section" class="shopify-section shopify-section-group-header-group header-section"> 2397 2398 2399 2400 2401
2402<script type="application/ld+json"> 2403 { 2404 "@context": "http://schema.org", 2405 "@type": "Organization", 2406 "name": "Luxupur®", 2407 2408 "logo": "https:\/\/luxupur.de\/cdn\/shop\/files\/luxupur-matratzen-nach-mass-logo.png?v=1775301700\u0026width=500", 2409 2410 "url": "https:\/\/luxupur.de" 2411 } 2412</script>
2412 2413 2414<header-component 2415 id="header-component" 2416 class="header" 2417 data-theme-color="rgb(25 26 28)" 2418 2419 2420 data-skip-node-update 2421 data-scroll-direction="none" 2422> 2423 2424 2425 2426 2427 2428 2429 <div 2430 class="header__row header__row--top color-scheme-5 section section--full-width-margin section--page-width" 2431 ref="headerRowTop"style="--border-bottom-width: 0px; --border-bottom-width-mobile: 0px;"> 2432 <div class="header__columns spacing-style"> 2433 <div 2434 class="header__column header__column--left" 2435 data-testid="header-top-left" 2436 > 2437 2438 2439 2440 2441 2442 2443 2444 <div 2445 class="header__drawer desktop:hidden" 2446 ref="headerDrawerContainer" 2447 2448 > 2449 2450
2451<script 2452 src="//luxupur.de/cdn/shop/t/97/assets/header-drawer.js?v=44357639294953783801781436597" 2453 type="module" 2454 fetchpriority="low" 2455></script>
2455 2456 2457<header-drawer 2458 class="header-drawer header__drawer--mobile" 2459 style="--menu-image-border-radius: 0px; --resource-card-corner-radius: 0px;" 2460> 2461 <details 2462 id="Details-menu-drawer-container" 2463 data-skip-node-update="true" 2464 class="menu-drawer-container" 2465 ref="details" 2466 scroll-lock 2467 > 2468 <summary 2469 class="header__icon header__icon--menu header__icon--summary" 2470 aria-label="Menü" 2471 on:click="/toggle" 2472 > 2473 <span class="svg-wrapper header-drawer-icon header-drawer-icon--open"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"> 2474 <path d="M1 3.5H13" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round"/> 2475 <path d="M1 10.5H13" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round"/> 2476</svg> 2477</span> 2478 <span class="svg-wrapper header-drawer-icon header-drawer-icon--close"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"> 2479 <path d="M12 2L2 12" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 2480 <path d="M12 12L2 2" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 2481</svg> 2482</span> 2483 </summary> 2484 <div 2485 data-header-drawer 2486 class=" 2487 menu-drawer 2488 motion-reduce 2489 color-scheme-7 2490 " 2491 > 2492 <button 2493 class="button button-unstyled close-button menu-drawer__close-button" 2494 type="button" 2495 aria-label="SchlieÃen" 2496 on:click="/close" 2497 > 2498 <span class="svg-wrapper header-drawer-icon header-drawer-icon--close"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"> 2499 <path d="M12 2L2 12" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 2500 <path d="M12 12L2 2" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 2501</svg> 2502</span> 2503 </button> 2504 <nav 2505 class="menu-drawer__navigation" 2506 style="--menu-top-level-font-family: var(--font-accent--family); 2507--menu-top-level-font-size-desktop: 1rem; --menu-top-level-font-style: var(--font-accent--style); --menu-top-level-font-weight: var(--font-accent--weight); --menu-top-level-font-case:uppercase; 2508 2509 --menu-top-level-font-size: var(--menu-font-2xl--size); --menu-top-level-font-line-height: 2510 var(--menu-font-2xl--line-height); 2511 2512--menu-top-level-font-color: var(--color-foreground); --menu-top-level-font-color-rgb: var(--color-foreground-rgb); 2513 2514--menu-parent-font-family: var(--font-accent--family); --menu-parent-font-style: 2515var(--font-accent--style); --menu-parent-font-weight: var(--font-accent--weight); --menu-parent-font-case: 2516uppercase; 2517 2518 --menu-parent-font-size: var(--menu-font-sm--size); --menu-parent-font-line-height: 2519 var(--menu-font-sm--line-height); --menu-parent-font-color: rgb(var(--color-foreground-rgb) / 2520 var(--opacity-subdued-text)); --menu-parent-active-font-color: var(--color-foreground); 2521 2522--menu-child-font-family: var(--font-accent--family); --menu-child-font-style: 2523var(--font-accent--style); --menu-child-font-weight: var(--font-accent--weight); --menu-child-font-case: 2524uppercase; 2525 2526 --menu-child-font-size: var(--menu-font-xl--size); --menu-child-font-line-height: var(--menu-font-xl--line-height); 2527 --menu-child-font-color: var(--color-foreground); --menu-child-active-font-color: rgb(var(--color-foreground-rgb) / 2528 var(--opacity-subdued-text)); 2529 2530 2531 " 2532 > 2533 <ul 2534 class="menu-drawer__menu has-submenu" 2535 role="list" 2536 > 2537 2538 2539 2540 <li 2541 style="--menu-drawer-animation-index: 1;" 2542 class="menu-drawer__list-item--flat" 2543 > 2544 2545<a 2546 id="HeaderDrawer-matratze" 2547 href="/products/luxupur-orthosleep-koerperprofil-matratze" 2548 class="menu-drawer__menu-item menu-drawer__menu-item--mainlist menu-drawer__animated-element focus-inset" 2549 2550 >
2551 <span class="menu-drawer__menu-item-text wrap-text">Matratze</span> 2552 </a> 2553 2554 </li> 2555 <li 2556 style="--menu-drawer-animation-index: 2;" 2557 class="menu-drawer__list-item--flat" 2558 > 2559 2560<a 2561 id="HeaderDrawer-topper" 2562 href="/products/luxupur-orthotop-topper" 2563 class="menu-drawer__menu-item menu-drawer__menu-item--mainlist menu-drawer__animated-element focus-inset" 2564 2565 > 2566 <span class="menu-drawer__menu-item-text wrap-text">Topper</span> 2567 </a> 2568 2569 </li> 2570 <li 2571 style="--menu-drawer-animation-index: 3;" 2572 class="menu-drawer__list-item--flat" 2573 > 2574 2575<a 2576 id="HeaderDrawer-split-topper" 2577 href="/products/luxupur-orthotop-split-topper" 2578 class="menu-drawer__menu-item menu-drawer__menu-item--mainlist menu-drawer__animated-element focus-inset" 2579 2580 > 2581 <span class="menu-drawer__menu-item-text wrap-text">Split-Topper</span> 2582 </a> 2583 2584 </li> 2585 <li 2586 style="--menu-drawer-animation-index: 4;" 2587 class="menu-drawer__list-item--flat" 2588 > 2589 2590<a 2591 id="HeaderDrawer-kissen" 2592 href="/pages/luxupur-kissen" 2593 class="menu-drawer__menu-item menu-drawer__menu-item--mainlist menu-drawer__animated-element focus-inset" 2594 2595 > 2596 <span class="menu-drawer__menu-item-text wrap-text">Kissen</span> 2597 </a> 2598 2599 </li> 2600 <li 2601 style="--menu-drawer-animation-index: 5;" 2602 class="menu-drawer__list-item--flat" 2603 > 2604 2605<a 2606 id="HeaderDrawer-lattenroste" 2607 href="/pages/luxupur-lattenroste" 2608 class="menu-drawer__menu-item menu-drawer__menu-item--mainlist menu-drawer__animated-element focus-inset" 2609 2610 > 2611 <span class="menu-drawer__menu-item-text wrap-text">Lattenroste</span> 2612 </a> 2613 2614 </li> 2615 <li 2616 style="--menu-drawer-animation-index: 6;" 2617 class="menu-drawer__list-item--flat" 2618 > 2619 2620<a 2621 id="HeaderDrawer-sondergrosse-anfragen" 2622 href="/pages/sonderanfertigung" 2623 class="menu-drawer__menu-item menu-drawer__menu-item--mainlist menu-drawer__animated-element focus-inset" 2624 2625 > 2626 <span class="menu-drawer__menu-item-text wrap-text">Sondergrösse Anfragen</span> 2627 </a> 2628 2629 </li> 2630 <li 2631 style="--menu-drawer-animation-index: 7;" 2632 class="menu-drawer__list-item--flat" 2633 > 2634 2635<a 2636 id="HeaderDrawer-uber-luxupur®" 2637 href="/pages/uber-luxupur" 2638 class="menu-drawer__menu-item menu-drawer__menu-item--mainlist menu-drawer__animated-element focus-inset" 2639 2640 > 2641 <span class="menu-drawer__menu-item-text wrap-text">Ãber Luxupur®</span> 2642 </a> 2643 2644 </li> 2645 </ul> 2646 </nav> 2647 <div 2648 class="menu-drawer__utility-links menu-drawer__animated-element" 2649 style="--menu-drawer-animation-index: 7;" 2650 > 2651 2652 2653 2654 2655 <drawer-localization-component class="menu-drawer__localization"> 2656 <details 2657 id="drawer-localization" 2658 class="drawer-localization" 2659 on:toggle="/toggle" 2660 > 2661 <summary 2662 id="HeaderDrawer-localization"
2663 class="drawer-localization__button h3 link link--text focus-inset" 2664 aria-expanded="false" 2665 on:click="header-drawer/open" 2666 style="--menu-localization-font: var(--font-heading--family); --color-shadow: rgb(var(--color-foreground-rgb) / var(--opacity-10-25));" 2667 > 2668 <div class="drawer-localization__button--label h6"><div class="mobile-localization mobile-localization--country link link--text"><span class="currency-code">EUR</span> 2669 </div></div> 2670 <span class="svg-wrapper icon-caret icon-caret--forward"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"> 2671 <path d="M11 5.5L7 9.5L3 5.5" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 2672</svg> 2673</span> 2674 </summary> 2675 2676 <div 2677 class="menu-drawer__submenu has-submenu gradient motion-reduce color-scheme-1" 2678 style="" 2679 > 2680 <div 2681 class="menu-drawer__nav-buttons" 2682 ref="navButtons" 2683 > 2684 <button 2685 class="button menu-drawer__back-button link link--text focus-inset" 2686 aria-expanded="true" 2687 on:click="header-drawer/back" 2688 > 2689 <span class="svg-wrapper icon-caret icon-caret--backward"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"> 2690 <path d="M11 5.5L7 9.5L3 5.5" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 2691</svg> 2692</span> 2693 Region und Sprache 2694 </button> 2695 <button 2696 class="button close-button menu-drawer__close-button" 2697 type="button" 2698 aria-label="SchlieÃen" 2699 on:click="header-drawer/close" 2700 > 2701 <span class="svg-wrapper header-drawer-icon header-drawer-icon--close"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"> 2702 <path d="M12 2L2 12" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 2703 <path d="M12 12L2 2" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 2704</svg> 2705</span> 2706 </button> 2707 </div> 2708 2709 2710<localization-form-component 2711 ref="localizationForm" 2712 data-label-results-count="[count]Â Ergebnisse" 2713 data-show-filter="true" 2714 style="--menu-localization-font: var(--font-heading--family); --color-shadow: rgb(var(--color-foreground-rgb) / var(--opacity-10-25));" 2715> 2716 2717<form method="post" action="/localization" id="LocalizationForm" accept-charset="UTF-8" class="localization-form" enctype="multipart/form-data" ref="form" aria-label="Region und Sprache"><input type="hidden" name="form_type" value="localization" /><input type="hidden" name="utf8" value="â" /><input type="hidden" name="_method" value="put" /> 2718 2719 <div class="country-filter"> 2720 <div class="field"> 2721 <div class="country-filter__search-icon field__button motion-reduce"> 2722 <span class="svg-wrapper"> 2723 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none"><circle cx="9" cy="9" r="4.75" stroke="currentColor" stroke-width="var(--icon-stroke-width)"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="var(--icon-stroke-width)" d="m12.5 12.5 3.25 3.25"/></svg> 2724 2725 </span> 2726 </div> 2727 <input 2728 class="country-filter__input" 2729 id="country-filter-input" 2730 type="search" 2731 name="country_filter" 2732 value="" 2733 placeholder="Suchen" 2734 role="combobox" 2735 aria-owns="country-results" 2736 aria-controls="country-results" 2737 aria-haspopup="listbox"
2738 aria-autocomplete="list" 2739 aria-label="Land finden" 2740 autocorrect="off" 2741 autocomplete="off" 2742 autocapitalize="off" 2743 spellcheck="false" 2744 ref="search" 2745 on:keyup="/filterCountries" 2746 > 2747 <label 2748 class="field__label visually-hidden" 2749 for="country-filter-input" 2750 >Suche</label> 2751 <button 2752 type="reset" 2753 class="button button-unstyled country-filter__reset-button field__button" 2754 aria-label="Zurücksetzen" 2755 ref="resetButton" 2756 hidden 2757 on:click="/resetCountriesFilter" 2758 > 2759 <span class="svg-wrapper"> 2760 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none"><circle cx="10" cy="10" r="6.25" stroke="currentColor" stroke-width="var(--icon-stroke-width)"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="var(--icon-stroke-width)" d="m12.5 7.5-5 5M12.5 12.5l-5-5"/></svg> 2761 2762 </span> 2763 </button> 2764 </div> 2765 </div> 2766 2767 <div class="country-selector-form__wrapper"> 2768 <h2 2769 class="visually-hidden" 2770 id="drawer-CountryLabel" 2771 > 2772 Country/Region 2773 </h2> 2774 2775 <div 2776 id="sr-country-search-results-AemE0T0Frczl0ZWc4T__header-menu-1" 2777 class="visually-hidden" 2778 aria-live="polite" 2779 ref="liveRegion" 2780 ></div> 2781 2782 <div 2783 class="localization-form__list country-selector__list country-selector__list--with-multiple-currencies" 2784 id="drawer-country-results" 2785 ref="countryList" 2786 > 2787 2788 <ul 2789 role="list" 2790 class="list-unstyled countries" 2791 > 2792 <span 2793 class="localization-form__list-item localization-form__list-item-disabled" 2794 id="no-results-message" 2795 ref="noResultsMessage" 2796 hidden 2797 >Keine Ergebnisse gefunden</span> 2798 <li 2799 class="localization-form__list-item" 2800 2801 data-value="BE" 2802 2803 data-aliases="" 2804 2805 id="Belgien" 2806 aria-label="Belgien" 2807 role="option" 2808 tabindex="-1" 2809 ref="countryListItems[]" 2810 on:click="/selectCountry/BE" 2811 > 2812 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 2813<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 2814</svg> 2815</span> 2816 <span class="country">Belgien</span> 2817 <span 2818 class="localization-form__currency motion-reduce" 2819 2820 > 2821 EUR 2822 â¬</span> 2823 </li> 2824 <li 2825 class="localization-form__list-item" 2826 2827 data-value="BG" 2828 2829 data-aliases="" 2830 2831 id="Bulgarien" 2832 aria-label="Bulgarien" 2833 role="option" 2834 tabindex="-1" 2835 ref="countryListItems[]" 2836 on:click="/selectCountry/BG" 2837 > 2838 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 2839<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 2840</svg> 2841</span>
2842 <span class="country">Bulgarien</span> 2843 <span 2844 class="localization-form__currency motion-reduce" 2845 2846 > 2847 EUR 2848 â¬</span> 2849 </li> 2850 <li 2851 class="localization-form__list-item" 2852 2853 data-value="DK" 2854 2855 data-aliases="" 2856 2857 id="Dänemark" 2858 aria-label="Dänemark" 2859 role="option" 2860 tabindex="-1" 2861 ref="countryListItems[]" 2862 on:click="/selectCountry/DK" 2863 > 2864 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 2865<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 2866</svg> 2867</span> 2868 <span class="country">Dänemark</span> 2869 <span 2870 class="localization-form__currency motion-reduce" 2871 2872 > 2873 EUR 2874 â¬</span> 2875 </li> 2876 <li 2877 class="localization-form__list-item" 2878 2879 aria-current="true" 2880 2881 data-value="DE" 2882 2883 data-aliases="" 2884 2885 id="Deutschland" 2886 aria-label="Deutschland" 2887 role="option" 2888 tabindex="-1" 2889 ref="countryListItems[]" 2890 on:click="/selectCountry/DE" 2891 > 2892 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 2893<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 2894</svg> 2895</span> 2896 <span class="country">Deutschland</span> 2897 <span 2898 class="localization-form__currency motion-reduce" 2899 2900 > 2901 EUR 2902 â¬</span> 2903 </li> 2904 <li 2905 class="localization-form__list-item" 2906 2907 data-value="EE" 2908 2909 data-aliases="" 2910 2911 id="Estland" 2912 aria-label="Estland" 2913 role="option" 2914 tabindex="-1" 2915 ref="countryListItems[]" 2916 on:click="/selectCountry/EE" 2917 > 2918 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 2919<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 2920</svg> 2921</span> 2922 <span class="country">Estland</span> 2923 <span 2924 class="localization-form__currency motion-reduce" 2925 2926 > 2927 EUR 2928 â¬</span> 2929 </li> 2930 <li 2931 class="localization-form__list-item" 2932 2933 data-value="FI" 2934 2935 data-aliases="" 2936 2937 id="Finnland" 2938 aria-label="Finnland" 2939 role="option" 2940 tabindex="-1" 2941 ref="countryListItems[]" 2942 on:click="/selectCountry/FI" 2943 >
2944 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 2945<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 2946</svg> 2947</span> 2948 <span class="country">Finnland</span> 2949 <span 2950 class="localization-form__currency motion-reduce" 2951 2952 > 2953 EUR 2954 â¬</span> 2955 </li> 2956 <li 2957 class="localization-form__list-item" 2958 2959 data-value="FR" 2960 2961 data-aliases="" 2962 2963 id="Frankreich" 2964 aria-label="Frankreich" 2965 role="option" 2966 tabindex="-1" 2967 ref="countryListItems[]" 2968 on:click="/selectCountry/FR" 2969 > 2970 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 2971<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 2972</svg> 2973</span> 2974 <span class="country">Frankreich</span> 2975 <span 2976 class="localization-form__currency motion-reduce" 2977 2978 > 2979 EUR 2980 â¬</span> 2981 </li> 2982 <li 2983 class="localization-form__list-item" 2984 2985 data-value="GR" 2986 2987 data-aliases="" 2988 2989 id="Griechenland" 2990 aria-label="Griechenland" 2991 role="option" 2992 tabindex="-1" 2993 ref="countryListItems[]" 2994 on:click="/selectCountry/GR" 2995 > 2996 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 2997<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 2998</svg> 2999</span> 3000 <span class="country">Griechenland</span> 3001 <span 3002 class="localization-form__currency motion-reduce" 3003 3004 > 3005 EUR 3006 â¬</span> 3007 </li> 3008 <li 3009 class="localization-form__list-item" 3010 3011 data-value="IE" 3012 3013 data-aliases="" 3014 3015 id="Irland" 3016 aria-label="Irland" 3017 role="option" 3018 tabindex="-1" 3019 ref="countryListItems[]" 3020 on:click="/selectCountry/IE" 3021 > 3022 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 3023<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 3024</svg> 3025</span> 3026 <span class="country">Irland</span>
3027 <span 3028 class="localization-form__currency motion-reduce" 3029 3030 > 3031 EUR 3032 â¬</span> 3033 </li> 3034 <li 3035 class="localization-form__list-item" 3036 3037 data-value="IT" 3038 3039 data-aliases="" 3040 3041 id="Italien" 3042 aria-label="Italien" 3043 role="option" 3044 tabindex="-1" 3045 ref="countryListItems[]" 3046 on:click="/selectCountry/IT" 3047 > 3048 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 3049<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 3050</svg> 3051</span> 3052 <span class="country">Italien</span> 3053 <span 3054 class="localization-form__currency motion-reduce" 3055 3056 > 3057 EUR 3058 â¬</span> 3059 </li> 3060 <li 3061 class="localization-form__list-item" 3062 3063 data-value="HR" 3064 3065 data-aliases="" 3066 3067 id="Kroatien" 3068 aria-label="Kroatien" 3069 role="option" 3070 tabindex="-1" 3071 ref="countryListItems[]" 3072 on:click="/selectCountry/HR" 3073 > 3074 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 3075<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 3076</svg> 3077</span> 3078 <span class="country">Kroatien</span> 3079 <span 3080 class="localization-form__currency motion-reduce" 3081 3082 > 3083 EUR 3084 â¬</span> 3085 </li> 3086 <li 3087 class="localization-form__list-item" 3088 3089 data-value="LV" 3090 3091 data-aliases="" 3092 3093 id="Lettland" 3094 aria-label="Lettland" 3095 role="option" 3096 tabindex="-1" 3097 ref="countryListItems[]" 3098 on:click="/selectCountry/LV" 3099 > 3100 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 3101<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 3102</svg> 3103</span> 3104 <span class="country">Lettland</span> 3105 <span 3106 class="localization-form__currency motion-reduce" 3107 3108 > 3109 EUR 3110 â¬</span> 3111 </li> 3112 <li 3113 class="localization-form__list-item" 3114 3115 data-value="LT" 3116 3117 data-aliases="" 3118 3119 id="Litauen" 3120 aria-label="Litauen" 3121 role="option" 3122 tabindex="-1" 3123 ref="countryListItems[]" 3124 on:click="/selectCountry/LT" 3125 >
3126 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 3127<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 3128</svg> 3129</span> 3130 <span class="country">Litauen</span> 3131 <span 3132 class="localization-form__currency motion-reduce" 3133 3134 > 3135 EUR 3136 â¬</span> 3137 </li> 3138 <li 3139 class="localization-form__list-item" 3140 3141 data-value="LU" 3142 3143 data-aliases="" 3144 3145 id="Luxemburg" 3146 aria-label="Luxemburg" 3147 role="option" 3148 tabindex="-1" 3149 ref="countryListItems[]" 3150 on:click="/selectCountry/LU" 3151 > 3152 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 3153<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 3154</svg> 3155</span> 3156 <span class="country">Luxemburg</span> 3157 <span 3158 class="localization-form__currency motion-reduce" 3159 3160 > 3161 EUR 3162 â¬</span> 3163 </li> 3164 <li 3165 class="localization-form__list-item" 3166 3167 data-value="MT" 3168 3169 data-aliases="" 3170 3171 id="Malta" 3172 aria-label="Malta" 3173 role="option" 3174 tabindex="-1" 3175 ref="countryListItems[]" 3176 on:click="/selectCountry/MT" 3177 > 3178 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 3179<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 3180</svg> 3181</span> 3182 <span class="country">Malta</span> 3183 <span 3184 class="localization-form__currency motion-reduce" 3185 3186 > 3187 EUR 3188 â¬</span> 3189 </li> 3190 <li 3191 class="localization-form__list-item" 3192 3193 data-value="NL" 3194 3195 data-aliases="" 3196 3197 id="Niederlande" 3198 aria-label="Niederlande" 3199 role="option" 3200 tabindex="-1" 3201 ref="countryListItems[]" 3202 on:click="/selectCountry/NL" 3203 > 3204 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 3205<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 3206</svg> 3207</span> 3208 <span class="country">Niederlande</span>
3209 <span 3210 class="localization-form__currency motion-reduce" 3211 3212 > 3213 EUR 3214 â¬</span> 3215 </li> 3216 <li 3217 class="localization-form__list-item" 3218 3219 data-value="AT" 3220 3221 data-aliases="" 3222 3223 id="Ãsterreich" 3224 aria-label="Ãsterreich" 3225 role="option" 3226 tabindex="-1" 3227 ref="countryListItems[]" 3228 on:click="/selectCountry/AT" 3229 > 3230 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 3231<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 3232</svg> 3233</span> 3234 <span class="country">Ãsterreich</span> 3235 <span 3236 class="localization-form__currency motion-reduce" 3237 3238 > 3239 EUR 3240 â¬</span> 3241 </li> 3242 <li 3243 class="localization-form__list-item" 3244 3245 data-value="PL" 3246 3247 data-aliases="" 3248 3249 id="Polen" 3250 aria-label="Polen" 3251 role="option" 3252 tabindex="-1" 3253 ref="countryListItems[]" 3254 on:click="/selectCountry/PL" 3255 > 3256 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 3257<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 3258</svg> 3259</span> 3260 <span class="country">Polen</span> 3261 <span 3262 class="localization-form__currency motion-reduce" 3263 3264 > 3265 EUR 3266 â¬</span> 3267 </li> 3268 <li 3269 class="localization-form__list-item" 3270 3271 data-value="PT" 3272 3273 data-aliases="" 3274 3275 id="Portugal" 3276 aria-label="Portugal" 3277 role="option" 3278 tabindex="-1" 3279 ref="countryListItems[]" 3280 on:click="/selectCountry/PT" 3281 > 3282 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 3283<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 3284</svg> 3285</span> 3286 <span class="country">Portugal</span> 3287 <span 3288 class="localization-form__currency motion-reduce" 3289 3290 > 3291 EUR 3292 â¬</span> 3293 </li> 3294 <li 3295 class="localization-form__list-item" 3296 3297 data-value="RO" 3298 3299 data-aliases="" 3300 3301 id="Rumänien" 3302 aria-label="Rumänien" 3303 role="option" 3304 tabindex="-1" 3305 ref="countryListItems[]" 3306 on:click="/selectCountry/RO" 3307 >
3308 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 3309<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 3310</svg> 3311</span> 3312 <span class="country">Rumänien</span> 3313 <span 3314 class="localization-form__currency motion-reduce" 3315 3316 > 3317 EUR 3318 â¬</span> 3319 </li> 3320 <li 3321 class="localization-form__list-item" 3322 3323 data-value="SE" 3324 3325 data-aliases="" 3326 3327 id="Schweden" 3328 aria-label="Schweden" 3329 role="option" 3330 tabindex="-1" 3331 ref="countryListItems[]" 3332 on:click="/selectCountry/SE" 3333 > 3334 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 3335<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 3336</svg> 3337</span> 3338 <span class="country">Schweden</span> 3339 <span 3340 class="localization-form__currency motion-reduce" 3341 3342 > 3343 EUR 3344 â¬</span> 3345 </li> 3346 <li 3347 class="localization-form__list-item" 3348 3349 data-value="CH" 3350 3351 data-aliases="" 3352 3353 id="Schweiz" 3354 aria-label="Schweiz" 3355 role="option" 3356 tabindex="-1" 3357 ref="countryListItems[]" 3358 on:click="/selectCountry/CH" 3359 > 3360 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 3361<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 3362</svg> 3363</span> 3364 <span class="country">Schweiz</span> 3365 <span 3366 class="localization-form__currency motion-reduce" 3367 3368 > 3369 CHF 3370 CHF</span> 3371 </li> 3372 <li 3373 class="localization-form__list-item" 3374 3375 data-value="SK" 3376 3377 data-aliases="" 3378 3379 id="Slowakei" 3380 aria-label="Slowakei" 3381 role="option" 3382 tabindex="-1" 3383 ref="countryListItems[]" 3384 on:click="/selectCountry/SK" 3385 > 3386 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 3387<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 3388</svg> 3389</span> 3390 <span class="country">Slowakei</span>
3391 <span 3392 class="localization-form__currency motion-reduce" 3393 3394 > 3395 EUR 3396 â¬</span> 3397 </li> 3398 <li 3399 class="localization-form__list-item" 3400 3401 data-value="SI" 3402 3403 data-aliases="" 3404 3405 id="Slowenien" 3406 aria-label="Slowenien" 3407 role="option" 3408 tabindex="-1" 3409 ref="countryListItems[]" 3410 on:click="/selectCountry/SI" 3411 > 3412 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 3413<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 3414</svg> 3415</span> 3416 <span class="country">Slowenien</span> 3417 <span 3418 class="localization-form__currency motion-reduce" 3419 3420 > 3421 EUR 3422 â¬</span> 3423 </li> 3424 <li 3425 class="localization-form__list-item" 3426 3427 data-value="ES" 3428 3429 data-aliases="" 3430 3431 id="Spanien" 3432 aria-label="Spanien" 3433 role="option" 3434 tabindex="-1" 3435 ref="countryListItems[]" 3436 on:click="/selectCountry/ES" 3437 > 3438 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 3439<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 3440</svg> 3441</span> 3442 <span class="country">Spanien</span> 3443 <span 3444 class="localization-form__currency motion-reduce" 3445 3446 > 3447 EUR 3448 â¬</span> 3449 </li> 3450 <li 3451 class="localization-form__list-item" 3452 3453 data-value="CZ" 3454 3455 data-aliases="" 3456 3457 id="Tschechien" 3458 aria-label="Tschechien" 3459 role="option" 3460 tabindex="-1" 3461 ref="countryListItems[]" 3462 on:click="/selectCountry/CZ" 3463 > 3464 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 3465<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 3466</svg> 3467</span> 3468 <span class="country">Tschechien</span> 3469 <span 3470 class="localization-form__currency motion-reduce" 3471 3472 > 3473 EUR 3474 â¬</span> 3475 </li> 3476 <li 3477 class="localization-form__list-item" 3478 3479 data-value="HU" 3480 3481 data-aliases="" 3482 3483 id="Ungarn" 3484 aria-label="Ungarn" 3485 role="option" 3486 tabindex="-1" 3487 ref="countryListItems[]" 3488 on:click="/selectCountry/HU" 3489 >
3490 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 3491<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 3492</svg> 3493</span> 3494 <span class="country">Ungarn</span> 3495 <span 3496 class="localization-form__currency motion-reduce" 3497 3498 > 3499 EUR 3500 â¬</span> 3501 </li> 3502 <li 3503 class="localization-form__list-item" 3504 3505 data-value="CY" 3506 3507 data-aliases="" 3508 3509 id="Zypern" 3510 aria-label="Zypern" 3511 role="option" 3512 tabindex="-1" 3513 ref="countryListItems[]" 3514 on:click="/selectCountry/CY" 3515 > 3516 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 3517<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 3518</svg> 3519</span> 3520 <span class="country">Zypern</span> 3521 <span 3522 class="localization-form__currency motion-reduce" 3523 3524 > 3525 EUR 3526 â¬</span> 3527 </li></ul> 3528 </div> 3529 <div class="country-selector__overlay"></div> 3530 <input 3531 type="hidden" 3532 name="country_code" 3533 value="DE" 3534 ref="countryInput" 3535 > 3536 </div> 3537 3538 3539 3540</form></localization-form-component> 3541 3542 3543 3544 </div> 3545 </details> 3546 </drawer-localization-component> 3547 3548</div> 3549 3550 3551 </div> 3552 <div 3553 class="menu-drawer__backdrop" 3554 on:click="header-drawer/close" 3555 ></div> 3556 </details> 3557</header-drawer> 3558 3559 3560 3561 </div> 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 <search-button class="search-action desktop:hidden"> 3576 <button 3577 on:click="#search-modal/showDialog" 3578 class="button button-unstyled search-modal__button header-actions__action" 3579 aria-label="Suchen" 3580 aria-haspopup="dialog" 3581 > 3582 <span 3583 aria-hidden="true" 3584 class="svg-wrapper" 3585 > 3586 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none"><circle cx="9" cy="9" r="4.75" stroke="currentColor" stroke-width="var(--icon-stroke-width)"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="var(--icon-stroke-width)" d="m12.5 12.5 3.25 3.25"/></svg> 3587 3588 </span> 3589 </button> 3590 </search-button> 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605<a 3606 3607 href="/" 3608 class="size-style spacing-style header-logo" 3609 style=" 3610 --size-style-width: ;--size-style-height: ; 3611 --padding-block-start: 8px;--padding-block-end: 6px;--padding-inline-start: 0px;--padding-inline-end: 0px; 3612 --font-family: var(--font-body--family); 3613 --font-style: var(--font-body--style); 3614 --font-weight: 600; 3615 " 3616 3617> 3618 3619 3620 <span 3621 class="header-logo__image-container header-logo__image-container--original" 3622 data-testid="header-logo" 3623 > 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 <img src="//luxupur.de/cdn/shop/files/luxupur-matratzen-nach-mass-logo.png?height=72&v=1775301700" alt="" width="137" height="72" class="header-logo__image" srcset="//luxupur.de/cdn/shop/files/luxupur-matratzen-nach-mass-logo.png?height=72&v=1775301700 1x, //luxupur.de/cdn/shop/files/luxupur-matratzen-nach-mass-logo.png?height=144&v=1775301700 2x, //luxupur.de/cdn/shop/files/luxupur-matratzen-nach-mass-logo.png?height=216&v=1775301700 3x" style="--header-logo-image-width: 137px;
3635--header-logo-image-width-mobile: 88px; --header-logo-image-height: 72px; --header-logo-image-height-mobile: 46px;"> 3636 3637 3638 </span> 3639 3640 3641</a> 3642 3643 3644 3645 3646 3647 3648 3649 3650 </div><div 3651 class="header__column header__column--center" 3652 data-testid="header-top-center" 3653 > 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 <header-menu 3666 ref="headerMenu" 3667 class="header-menu mobile:hidden" 3668 data-animation-delay="200" 3669 3670 style="--submenu-animation-speed: 200ms;" 3671 > 3672 <div class="header-menu__inner"> 3673 <nav header-menu> 3674 <div 3675 class="menu-list" 3676 style="--menu-top-level-font-family: var(--font-accent--family); 3677--menu-top-level-font-size-desktop: 1rem; --menu-top-level-font-style: var(--font-accent--style); --menu-top-level-font-weight: var(--font-accent--weight); --menu-top-level-font-case:uppercase; 3678 3679 --menu-top-level-font-size: var(--menu-font-sm--size); --menu-top-level-font-line-height: 3680 var(--menu-font-sm--line-height); 3681 3682--menu-top-level-font-color: var(--color-foreground); --menu-top-level-font-color-rgb: var(--color-foreground-rgb); 3683" 3684 > 3685 3686 <overflow-list 3687 3688 ref="overflowMenu" 3689 3690 3691 class="overflow-menu color-scheme-7" 3692 3693 3694 minimum-items="2" 3695 3696 3697 data-testid="header-menu-overflow-list" 3698 3699 3700 data-skip-node-update 3701 3702> 3703 <template shadowrootmode="open"> 3704 <link href="//luxupur.de/cdn/shop/t/97/assets/overflow-list.css?v=101911674359793798601781436597" rel="stylesheet" type="text/css" media="all" /> 3705 3706 <ul part="list"> 3707 <slot></slot> 3708 <slot 3709 name="more" 3710 part="more" 3711 hidden 3712 3713 > 3714 <li 3715 part="more" 3716 > 3717 <button 3718 class="button" 3719 type="button" 3720 tabindex="0" 3721 > 3722 Mehr 3723 </button> 3724 </li> 3725 </slot> 3726 <li 3727 part="placeholder" 3728 hidden 3729 ></li> 3730 </ul> 3731 3732 <div part="overflow"> 3733 <ul part="overflow-list"> 3734 <slot name="overflow"></slot> 3735 </ul> 3736 </div> 3737 </template> 3738 3739 3740 3741 <li 3742 role="presentation" 3743 class="menu-list__list-item" 3744 on:focus="/activate" 3745 on:blur="/deactivate" 3746 on:pointerenter="/activate" 3747 on:pointerleave="/deactivate" 3748 > 3749 <a 3750 href="/products/luxupur-orthosleep-koerperprofil-matratze" 3751 data-skip-node-update="true" 3752 class="menu-list__link"ref="menuitem" 3753 > 3754 <span class="menu-list__link-title">Matratze</span> 3755 </a></li> 3756 3757 <li 3758 role="presentation" 3759 class="menu-list__list-item" 3760 on:focus="/activate" 3761 on:blur="/deactivate" 3762 on:pointerenter="/activate" 3763 on:pointerleave="/deactivate" 3764 > 3765 <a 3766 href="/products/luxupur-orthotop-topper" 3767 data-skip-node-update="true" 3768 class="menu-list__link"ref="menuitem" 3769 > 3770 <span class="menu-list__link-title">Topper</span> 3771 </a></li> 3772 3773 <li 3774 role="presentation" 3775 class="menu-list__list-item" 3776 on:focus="/activate" 3777 on:blur="/deactivate" 3778 on:pointerenter="/activate" 3779 on:pointerleave="/deactivate" 3780 > 3781 <a 3782 href="/products/luxupur-orthotop-split-topper" 3783 data-skip-node-update="true" 3784 class="menu-list__link"ref="menuitem" 3785 > 3786 <span class="menu-list__link-title">Split-Topper</span> 3787 </a></li> 3788 3789 <li 3790 role="presentation" 3791 class="menu-list__list-item" 3792 on:focus="/activate" 3793 on:blur="/deactivate" 3794 on:pointerenter="/activate" 3795 on:pointerleave="/deactivate" 3796 > 3797 <a 3798 href="/pages/luxupur-kissen" 3799 data-skip-node-update="true" 3800 class="menu-list__link"ref="menuitem" 3801 > 3802 <span class="menu-list__link-title">Kissen</span> 3803 </a></li> 3804 3805 <li 3806 role="presentation" 3807 class="menu-list__list-item" 3808 on:focus="/activate" 3809 on:blur="/deactivate"
3810 on:pointerenter="/activate" 3811 on:pointerleave="/deactivate" 3812 > 3813 <a 3814 href="/pages/luxupur-lattenroste" 3815 data-skip-node-update="true" 3816 class="menu-list__link"ref="menuitem" 3817 > 3818 <span class="menu-list__link-title">Lattenroste</span> 3819 </a></li> 3820 3821 <li 3822 role="presentation" 3823 class="menu-list__list-item" 3824 on:focus="/activate" 3825 on:blur="/deactivate" 3826 on:pointerenter="/activate" 3827 on:pointerleave="/deactivate" 3828 > 3829 <a 3830 href="/pages/sonderanfertigung" 3831 data-skip-node-update="true" 3832 class="menu-list__link"ref="menuitem" 3833 > 3834 <span class="menu-list__link-title">Sondergrösse Anfragen</span> 3835 </a></li> 3836 3837 <li 3838 role="presentation" 3839 class="menu-list__list-item" 3840 on:focus="/activate" 3841 on:blur="/deactivate" 3842 on:pointerenter="/activate" 3843 on:pointerleave="/deactivate" 3844 > 3845 <a 3846 href="/pages/uber-luxupur" 3847 data-skip-node-update="true" 3848 class="menu-list__link"ref="menuitem" 3849 > 3850 <span class="menu-list__link-title">Ãber Luxupur®</span> 3851 </a></li> 3852 3853 <li 3854 class="menu-list__list-item" 3855 role="presentation" 3856 slot="more" 3857 on:focus="/activate" 3858 on:blur="/deactivate" 3859 on:pointerenter="/activate" 3860 on:pointerleave="/deactivate" 3861 > 3862 <button role="menuitem" class="button menu-list__link button-unstyled"> 3863 <span class="menu-list__link-title">Mehr</span> 3864 </button> 3865 </li> 3866 3867</overflow-list> 3868 3869 </div> 3870 </nav> 3871 </div> 3872 3873
3873<script 3874 src="//luxupur.de/cdn/shop/t/97/assets/header-menu.js?v=32392277473258403531781436597" 3875 type="module" 3876 fetchpriority="low" 3877 ></script>
3877 3878 </header-menu> 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 </div><div 3889 class="header__column header__column--right" 3890 data-testid="header-top-right" 3891 > 3892 3893 3894 3895 3896 3897 3898 <dropdown-localization-component 3899 class="dropdown-localization mobile:hidden" 3900 > 3901 <button 3902 type="button" 3903 class="button dropdown-localization__button localization-selector link link--text" 3904 aria-expanded="false" 3905 aria-controls="dropdown-localization-results" 3906 ref="button" 3907 on:click="/toggleSelector" 3908 style="--menu-localization-font: var(--font-heading--family); --menu-localization-font-size: 0.75rem; " 3909 > 3910 3911 3912 <span 3913 class="currency-code" 3914 data-testid="localization-currency-code" 3915 >EUR</span> 3916 3917 <span 3918 class="visually-hidden" 3919 data-testid="localization-visually-hidden" 3920 >Region- und Sprachwahl</span><span class="svg-wrapper icon-caret"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"> 3921 <path d="M11 5.5L7 9.5L3 5.5" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 3922</svg> 3923</span> 3924 </button> 3925 3926 <div 3927 class="localization-wrapper right-bound color-scheme-6" 3928 hidden 3929 ref="panel" 3930 > 3931 3932<localization-form-component 3933 ref="localizationForm" 3934 data-label-results-count="[count] Ergebnisse" 3935 data-show-filter="true" 3936 style="--menu-localization-font: var(--font-heading--family); --menu-localization-font-size: 0.75rem; --color-shadow: rgb(var(--color-foreground-rgb) / var(--opacity-10-25));" 3937> 3938 3939<form method="post" action="/localization" id="LocalizationForm" accept-charset="UTF-8" class="localization-form" enctype="multipart/form-data" ref="form" aria-label="Region und Sprache"><input type="hidden" name="form_type" value="localization" /><input type="hidden" name="utf8" value="â" /><input type="hidden" name="_method" value="put" /> 3940 3941 <div class="country-filter"> 3942 <div class="field"> 3943 <div class="country-filter__search-icon field__button motion-reduce"> 3944 <span class="svg-wrapper"> 3945 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none"><circle cx="9" cy="9" r="4.75" stroke="currentColor" stroke-width="var(--icon-stroke-width)"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="var(--icon-stroke-width)" d="m12.5 12.5 3.25 3.25"/></svg> 3946 3947 </span> 3948 </div> 3949 <input 3950 class="country-filter__input" 3951 id="country-filter-input" 3952 type="search" 3953 name="country_filter" 3954 value="" 3955 placeholder="Suchen" 3956 role="combobox" 3957 aria-owns="country-results" 3958 aria-controls="country-results" 3959 aria-haspopup="listbox" 3960 aria-autocomplete="list" 3961 aria-label="Land finden" 3962 autocorrect="off" 3963 autocomplete="off" 3964 autocapitalize="off" 3965 spellcheck="false" 3966 ref="search" 3967 on:keyup="/filterCountries" 3968 > 3969 <label 3970 class="field__label visually-hidden" 3971 for="country-filter-input" 3972 >Suche</label> 3973 <button 3974 type="reset" 3975 class="button button-unstyled country-filter__reset-button field__button" 3976 aria-label="Zurücksetzen" 3977 ref="resetButton" 3978 hidden 3979 on:click="/resetCountriesFilter" 3980 > 3981 <span class="svg-wrapper"> 3982 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none"><circle cx="10" cy="10" r="6.25" stroke="currentColor" stroke-width="var(--icon-stroke-width)"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="var(--icon-stroke-width)" d="m12.5 7.5-5 5M12.5 12.5l-5-5"/></svg> 3983 3984 </span> 3985 </button> 3986 </div> 3987 </div> 3988 3989 <div class="country-selector-form__wrapper"> 3990 <h2 3991 class="visually-hidden" 3992 id="dropdown-CountryLabel" 3993 > 3994 Country/Region 3995 </h2> 3996 3997 <div 3998 id="sr-country-search-results-" 3999 class="visually-hidden"
4000 aria-live="polite" 4001 ref="liveRegion" 4002 ></div> 4003 4004 <div 4005 class="localization-form__list country-selector__list country-selector__list--with-multiple-currencies" 4006 id="dropdown-country-results" 4007 ref="countryList" 4008 > 4009 4010 <ul 4011 role="list" 4012 class="list-unstyled countries" 4013 > 4014 <span 4015 class="localization-form__list-item localization-form__list-item-disabled" 4016 id="no-results-message" 4017 ref="noResultsMessage" 4018 hidden 4019 >Keine Ergebnisse gefunden</span> 4020 <li 4021 class="localization-form__list-item" 4022 4023 data-value="BE" 4024 4025 data-aliases="" 4026 4027 id="Belgien" 4028 aria-label="Belgien" 4029 role="option" 4030 tabindex="-1" 4031 ref="countryListItems[]" 4032 on:click="/selectCountry/BE" 4033 > 4034 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 4035<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4036</svg> 4037</span> 4038 <span class="country">Belgien</span> 4039 <span 4040 class="localization-form__currency motion-reduce" 4041 4042 > 4043 EUR 4044 â¬</span> 4045 </li> 4046 <li 4047 class="localization-form__list-item" 4048 4049 data-value="BG" 4050 4051 data-aliases="" 4052 4053 id="Bulgarien" 4054 aria-label="Bulgarien" 4055 role="option" 4056 tabindex="-1" 4057 ref="countryListItems[]" 4058 on:click="/selectCountry/BG" 4059 > 4060 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 4061<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4062</svg> 4063</span> 4064 <span class="country">Bulgarien</span> 4065 <span 4066 class="localization-form__currency motion-reduce" 4067 4068 > 4069 EUR 4070 â¬</span> 4071 </li> 4072 <li 4073 class="localization-form__list-item" 4074 4075 data-value="DK" 4076 4077 data-aliases="" 4078 4079 id="Dänemark" 4080 aria-label="Dänemark" 4081 role="option" 4082 tabindex="-1" 4083 ref="countryListItems[]" 4084 on:click="/selectCountry/DK" 4085 > 4086 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 4087<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4088</svg> 4089</span> 4090 <span class="country">Dänemark</span> 4091 <span 4092 class="localization-form__currency motion-reduce" 4093 4094 > 4095 EUR 4096 â¬</span> 4097 </li> 4098 <li 4099 class="localization-form__list-item" 4100 4101 aria-current="true" 4102 4103 data-value="DE" 4104 4105 data-aliases="" 4106 4107 id="Deutschland" 4108 aria-label="Deutschland" 4109 role="option" 4110 tabindex="-1" 4111 ref="countryListItems[]" 4112 on:click="/selectCountry/DE" 4113 >
4114 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 4115<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4116</svg> 4117</span> 4118 <span class="country">Deutschland</span> 4119 <span 4120 class="localization-form__currency motion-reduce" 4121 4122 > 4123 EUR 4124 â¬</span> 4125 </li> 4126 <li 4127 class="localization-form__list-item" 4128 4129 data-value="EE" 4130 4131 data-aliases="" 4132 4133 id="Estland" 4134 aria-label="Estland" 4135 role="option" 4136 tabindex="-1" 4137 ref="countryListItems[]" 4138 on:click="/selectCountry/EE" 4139 > 4140 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 4141<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4142</svg> 4143</span> 4144 <span class="country">Estland</span> 4145 <span 4146 class="localization-form__currency motion-reduce" 4147 4148 > 4149 EUR 4150 â¬</span> 4151 </li> 4152 <li 4153 class="localization-form__list-item" 4154 4155 data-value="FI" 4156 4157 data-aliases="" 4158 4159 id="Finnland" 4160 aria-label="Finnland" 4161 role="option" 4162 tabindex="-1" 4163 ref="countryListItems[]" 4164 on:click="/selectCountry/FI" 4165 > 4166 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 4167<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4168</svg> 4169</span> 4170 <span class="country">Finnland</span> 4171 <span 4172 class="localization-form__currency motion-reduce" 4173 4174 > 4175 EUR 4176 â¬</span> 4177 </li> 4178 <li 4179 class="localization-form__list-item" 4180 4181 data-value="FR" 4182 4183 data-aliases="" 4184 4185 id="Frankreich" 4186 aria-label="Frankreich" 4187 role="option" 4188 tabindex="-1" 4189 ref="countryListItems[]" 4190 on:click="/selectCountry/FR" 4191 > 4192 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 4193<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4194</svg> 4195</span> 4196 <span class="country">Frankreich</span>
4197 <span 4198 class="localization-form__currency motion-reduce" 4199 4200 > 4201 EUR 4202 â¬</span> 4203 </li> 4204 <li 4205 class="localization-form__list-item" 4206 4207 data-value="GR" 4208 4209 data-aliases="" 4210 4211 id="Griechenland" 4212 aria-label="Griechenland" 4213 role="option" 4214 tabindex="-1" 4215 ref="countryListItems[]" 4216 on:click="/selectCountry/GR" 4217 > 4218 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 4219<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4220</svg> 4221</span> 4222 <span class="country">Griechenland</span> 4223 <span 4224 class="localization-form__currency motion-reduce" 4225 4226 > 4227 EUR 4228 â¬</span> 4229 </li> 4230 <li 4231 class="localization-form__list-item" 4232 4233 data-value="IE" 4234 4235 data-aliases="" 4236 4237 id="Irland" 4238 aria-label="Irland" 4239 role="option" 4240 tabindex="-1" 4241 ref="countryListItems[]" 4242 on:click="/selectCountry/IE" 4243 > 4244 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 4245<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4246</svg> 4247</span> 4248 <span class="country">Irland</span> 4249 <span 4250 class="localization-form__currency motion-reduce" 4251 4252 > 4253 EUR 4254 â¬</span> 4255 </li> 4256 <li 4257 class="localization-form__list-item" 4258 4259 data-value="IT" 4260 4261 data-aliases="" 4262 4263 id="Italien" 4264 aria-label="Italien" 4265 role="option" 4266 tabindex="-1" 4267 ref="countryListItems[]" 4268 on:click="/selectCountry/IT" 4269 > 4270 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 4271<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4272</svg> 4273</span> 4274 <span class="country">Italien</span> 4275 <span 4276 class="localization-form__currency motion-reduce" 4277 4278 > 4279 EUR 4280 â¬</span> 4281 </li> 4282 <li 4283 class="localization-form__list-item" 4284 4285 data-value="HR" 4286 4287 data-aliases="" 4288 4289 id="Kroatien" 4290 aria-label="Kroatien" 4291 role="option" 4292 tabindex="-1" 4293 ref="countryListItems[]" 4294 on:click="/selectCountry/HR" 4295 >
4296 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 4297<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4298</svg> 4299</span> 4300 <span class="country">Kroatien</span> 4301 <span 4302 class="localization-form__currency motion-reduce" 4303 4304 > 4305 EUR 4306 â¬</span> 4307 </li> 4308 <li 4309 class="localization-form__list-item" 4310 4311 data-value="LV" 4312 4313 data-aliases="" 4314 4315 id="Lettland" 4316 aria-label="Lettland" 4317 role="option" 4318 tabindex="-1" 4319 ref="countryListItems[]" 4320 on:click="/selectCountry/LV" 4321 > 4322 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 4323<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4324</svg> 4325</span> 4326 <span class="country">Lettland</span> 4327 <span 4328 class="localization-form__currency motion-reduce" 4329 4330 > 4331 EUR 4332 â¬</span> 4333 </li> 4334 <li 4335 class="localization-form__list-item" 4336 4337 data-value="LT" 4338 4339 data-aliases="" 4340 4341 id="Litauen" 4342 aria-label="Litauen" 4343 role="option" 4344 tabindex="-1" 4345 ref="countryListItems[]" 4346 on:click="/selectCountry/LT" 4347 > 4348 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 4349<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4350</svg> 4351</span> 4352 <span class="country">Litauen</span> 4353 <span 4354 class="localization-form__currency motion-reduce" 4355 4356 > 4357 EUR 4358 â¬</span> 4359 </li> 4360 <li 4361 class="localization-form__list-item" 4362 4363 data-value="LU" 4364 4365 data-aliases="" 4366 4367 id="Luxemburg" 4368 aria-label="Luxemburg" 4369 role="option" 4370 tabindex="-1" 4371 ref="countryListItems[]" 4372 on:click="/selectCountry/LU" 4373 > 4374 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 4375<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4376</svg> 4377</span> 4378 <span class="country">Luxemburg</span>
4379 <span 4380 class="localization-form__currency motion-reduce" 4381 4382 > 4383 EUR 4384 â¬</span> 4385 </li> 4386 <li 4387 class="localization-form__list-item" 4388 4389 data-value="MT" 4390 4391 data-aliases="" 4392 4393 id="Malta" 4394 aria-label="Malta" 4395 role="option" 4396 tabindex="-1" 4397 ref="countryListItems[]" 4398 on:click="/selectCountry/MT" 4399 > 4400 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 4401<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4402</svg> 4403</span> 4404 <span class="country">Malta</span> 4405 <span 4406 class="localization-form__currency motion-reduce" 4407 4408 > 4409 EUR 4410 â¬</span> 4411 </li> 4412 <li 4413 class="localization-form__list-item" 4414 4415 data-value="NL" 4416 4417 data-aliases="" 4418 4419 id="Niederlande" 4420 aria-label="Niederlande" 4421 role="option" 4422 tabindex="-1" 4423 ref="countryListItems[]" 4424 on:click="/selectCountry/NL" 4425 > 4426 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 4427<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4428</svg> 4429</span> 4430 <span class="country">Niederlande</span> 4431 <span 4432 class="localization-form__currency motion-reduce" 4433 4434 > 4435 EUR 4436 â¬</span> 4437 </li> 4438 <li 4439 class="localization-form__list-item" 4440 4441 data-value="AT" 4442 4443 data-aliases="" 4444 4445 id="Ãsterreich" 4446 aria-label="Ãsterreich" 4447 role="option" 4448 tabindex="-1" 4449 ref="countryListItems[]" 4450 on:click="/selectCountry/AT" 4451 > 4452 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 4453<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4454</svg> 4455</span> 4456 <span class="country">Ãsterreich</span> 4457 <span 4458 class="localization-form__currency motion-reduce" 4459 4460 > 4461 EUR 4462 â¬</span> 4463 </li> 4464 <li 4465 class="localization-form__list-item" 4466 4467 data-value="PL" 4468 4469 data-aliases="" 4470 4471 id="Polen" 4472 aria-label="Polen" 4473 role="option" 4474 tabindex="-1" 4475 ref="countryListItems[]" 4476 on:click="/selectCountry/PL" 4477 >
4478 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 4479<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4480</svg> 4481</span> 4482 <span class="country">Polen</span> 4483 <span 4484 class="localization-form__currency motion-reduce" 4485 4486 > 4487 EUR 4488 â¬</span> 4489 </li> 4490 <li 4491 class="localization-form__list-item" 4492 4493 data-value="PT" 4494 4495 data-aliases="" 4496 4497 id="Portugal" 4498 aria-label="Portugal" 4499 role="option" 4500 tabindex="-1" 4501 ref="countryListItems[]" 4502 on:click="/selectCountry/PT" 4503 > 4504 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 4505<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4506</svg> 4507</span> 4508 <span class="country">Portugal</span> 4509 <span 4510 class="localization-form__currency motion-reduce" 4511 4512 > 4513 EUR 4514 â¬</span> 4515 </li> 4516 <li 4517 class="localization-form__list-item" 4518 4519 data-value="RO" 4520 4521 data-aliases="" 4522 4523 id="Rumänien" 4524 aria-label="Rumänien" 4525 role="option" 4526 tabindex="-1" 4527 ref="countryListItems[]" 4528 on:click="/selectCountry/RO" 4529 > 4530 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 4531<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4532</svg> 4533</span> 4534 <span class="country">Rumänien</span> 4535 <span 4536 class="localization-form__currency motion-reduce" 4537 4538 > 4539 EUR 4540 â¬</span> 4541 </li> 4542 <li 4543 class="localization-form__list-item" 4544 4545 data-value="SE" 4546 4547 data-aliases="" 4548 4549 id="Schweden" 4550 aria-label="Schweden" 4551 role="option" 4552 tabindex="-1" 4553 ref="countryListItems[]" 4554 on:click="/selectCountry/SE" 4555 > 4556 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 4557<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4558</svg> 4559</span> 4560 <span class="country">Schweden</span>
4561 <span 4562 class="localization-form__currency motion-reduce" 4563 4564 > 4565 EUR 4566 â¬</span> 4567 </li> 4568 <li 4569 class="localization-form__list-item" 4570 4571 data-value="CH" 4572 4573 data-aliases="" 4574 4575 id="Schweiz" 4576 aria-label="Schweiz" 4577 role="option" 4578 tabindex="-1" 4579 ref="countryListItems[]" 4580 on:click="/selectCountry/CH" 4581 > 4582 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 4583<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4584</svg> 4585</span> 4586 <span class="country">Schweiz</span> 4587 <span 4588 class="localization-form__currency motion-reduce" 4589 4590 > 4591 CHF 4592 CHF</span> 4593 </li> 4594 <li 4595 class="localization-form__list-item" 4596 4597 data-value="SK" 4598 4599 data-aliases="" 4600 4601 id="Slowakei" 4602 aria-label="Slowakei" 4603 role="option" 4604 tabindex="-1" 4605 ref="countryListItems[]" 4606 on:click="/selectCountry/SK" 4607 > 4608 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 4609<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4610</svg> 4611</span> 4612 <span class="country">Slowakei</span> 4613 <span 4614 class="localization-form__currency motion-reduce" 4615 4616 > 4617 EUR 4618 â¬</span> 4619 </li> 4620 <li 4621 class="localization-form__list-item" 4622 4623 data-value="SI" 4624 4625 data-aliases="" 4626 4627 id="Slowenien" 4628 aria-label="Slowenien" 4629 role="option" 4630 tabindex="-1" 4631 ref="countryListItems[]" 4632 on:click="/selectCountry/SI" 4633 > 4634 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 4635<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4636</svg> 4637</span> 4638 <span class="country">Slowenien</span> 4639 <span 4640 class="localization-form__currency motion-reduce" 4641 4642 > 4643 EUR 4644 â¬</span> 4645 </li> 4646 <li 4647 class="localization-form__list-item" 4648 4649 data-value="ES" 4650 4651 data-aliases="" 4652 4653 id="Spanien" 4654 aria-label="Spanien" 4655 role="option" 4656 tabindex="-1" 4657 ref="countryListItems[]" 4658 on:click="/selectCountry/ES" 4659 >
4660 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 4661<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4662</svg> 4663</span> 4664 <span class="country">Spanien</span> 4665 <span 4666 class="localization-form__currency motion-reduce" 4667 4668 > 4669 EUR 4670 â¬</span> 4671 </li> 4672 <li 4673 class="localization-form__list-item" 4674 4675 data-value="CZ" 4676 4677 data-aliases="" 4678 4679 id="Tschechien" 4680 aria-label="Tschechien" 4681 role="option" 4682 tabindex="-1" 4683 ref="countryListItems[]" 4684 on:click="/selectCountry/CZ" 4685 > 4686 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 4687<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4688</svg> 4689</span> 4690 <span class="country">Tschechien</span> 4691 <span 4692 class="localization-form__currency motion-reduce" 4693 4694 > 4695 EUR 4696 â¬</span> 4697 </li> 4698 <li 4699 class="localization-form__list-item" 4700 4701 data-value="HU" 4702 4703 data-aliases="" 4704 4705 id="Ungarn" 4706 aria-label="Ungarn" 4707 role="option" 4708 tabindex="-1" 4709 ref="countryListItems[]" 4710 on:click="/selectCountry/HU" 4711 > 4712 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 4713<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4714</svg> 4715</span> 4716 <span class="country">Ungarn</span> 4717 <span 4718 class="localization-form__currency motion-reduce" 4719 4720 > 4721 EUR 4722 â¬</span> 4723 </li> 4724 <li 4725 class="localization-form__list-item" 4726 4727 data-value="CY" 4728 4729 data-aliases="" 4730 4731 id="Zypern" 4732 aria-label="Zypern" 4733 role="option" 4734 tabindex="-1" 4735 ref="countryListItems[]" 4736 on:click="/selectCountry/CY" 4737 > 4738 <span class="svg-wrapper icon-checkmark"><svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" class="icon-checkmark"> 4739<path d="M4.75439 10.7485L7.68601 14.5888C7.79288 14.7288 7.84632 14.7988 7.91174 14.8242C7.96907 14.8466 8.03262 14.8469 8.09022 14.8253C8.15596 14.8007 8.21026 14.7314 8.31886 14.5927L15.2475 5.74658" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4740</svg> 4741</span> 4742 <span class="country">Zypern</span>
4743 <span 4744 class="localization-form__currency motion-reduce" 4745 4746 > 4747 EUR 4748 â¬</span> 4749 </li></ul> 4750 </div> 4751 <div class="country-selector__overlay"></div> 4752 <input 4753 type="hidden" 4754 name="country_code" 4755 value="DE" 4756 ref="countryInput" 4757 > 4758 </div> 4759 4760 4761 4762</form></localization-form-component> 4763 4764 4765 4766 </div> 4767 </dropdown-localization-component> 4768 4769 4770 4771 4772 4773 4774 4775 4776 <search-button class="search-action mobile:hidden"> 4777 <button 4778 on:click="#search-modal/showDialog" 4779 class="button button-unstyled search-modal__button header-actions__action" 4780 aria-label="Suchen" 4781 aria-haspopup="dialog" 4782 > 4783 <span 4784 aria-hidden="true" 4785 class="svg-wrapper" 4786 > 4787 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none"><circle cx="9" cy="9" r="4.75" stroke="currentColor" stroke-width="var(--icon-stroke-width)"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="var(--icon-stroke-width)" d="m12.5 12.5 3.25 3.25"/></svg> 4788 4789 </span> 4790 </button> 4791 </search-button> 4792 4793 4794 4795 4796 4797 4798 4799 4800 4801
4801<script 4802 type="module" 4803 src="//luxupur.de/cdn/shop/t/97/assets/cart-icon.js?v=157241182139685326961781436597" 4804 fetchpriority="low" 4805></script>
4805 4806 4807 4808 4809<header-actions> 4810 4811 4812 4813 <anchored-popover-component 4814 data-close-on-resize="true" 4815 class="account-popover mobile:hidden" 4816 > 4817 <button 4818 class="account-button header-actions__action" 4819 aria-label="Konto" 4820 aria-haspopup="dialog"popovertarget="account-popover" 4821 popovertargetaction="toggle"ref="trigger" 4822 4823><span 4824 class="account-button__icon" 4825 aria-hidden="true" 4826 ><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none"><circle cx="10" cy="6.5" r="2.75" stroke="currentColor" stroke-width="var(--icon-stroke-width)"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="var(--icon-stroke-width)" d="m5.172 14.591-.437.786a.588.588 0 0 0 .514.873h9.502a.588.588 0 0 0 .514-.873l-.437-.786a5.523 5.523 0 0 0-9.656 0"/></svg> 4827</span></button> 4828 4829 4830 4831 <div 4832 class="account-popover__panel details-content color-scheme-6" 4833 id="account-popover" 4834 popover="auto" 4835 ref="popover" 4836 > 4837 <div class="account-actions"> 4838 <div class="account-actions__main-menu"> 4839 <header class="account-actions__header"> 4840 <h2 4841 id="account-drawer-heading" 4842 class="account-actions__title h5" 4843 > 4844 4845 Konto 4846 4847 </h2> 4848 4849 </header> 4850 4851 4852 <div 4853 class="account-actions__sign-ins" 4854 data-skip-subtree-update="true" 4855 > 4856
4856<script 4857 src="//luxupur.de/cdn/shop/t/97/assets/account-login-actions.js?v=132624473766457443991781436597" 4858 type="module" 4859 fetchpriority="low" 4860 ></script>
4860 4861 <account-login-actions class="account-actions__shop-login"> 4862
4862<script defer="defer" async type="module" src="https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.shop-login-button.de.esm.js"></script>
vendor: 1 bytes, line 4862
4862
4863<script type="module"> 4864 await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.shop-login-button.de.esm.js"); 4865 4866 4867</script>
4867 4868 4869<shop-login-button ux-mode="windoid" return-uri="https://luxupur.de/account/redirect" proxy="true" proxy-core-idp="true" redirect-type="iframe" response-type="code"></shop-login-button> 4870 4871 </account-login-actions> 4872 4873 <a 4874 href="/customer_authentication/login?return_to=%2Fcart&locale=de&ui_hint=full®ion_country=DE" 4875 class="account-actions__link button" 4876 > 4877 <span class="account-actions__sign-in-text"> 4878 Andere Anmeldeoptionen 4879 </span> 4880 <span class="account-actions__fallback-text"> 4881 Anmelden 4882 </span> 4883 </a> 4884 </div> 4885 4886 4887 <nav class="account-actions__nav"> 4888 <ul class="account-actions__list"> 4889 <li class="account-actions__list-item"> 4890 <a 4891 href="/account" 4892 class="account-actions__link button-secondary" 4893 > 4894 <span 4895 class="account-actions__icon" 4896 aria-hidden="true" 4897 ><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none"> 4898 <path stroke-linecap="round" stroke="currentColor" stroke-width="var(--icon-stroke-width)" d="M2.929 7.705c0-.482.154-.95.44-1.338L5.06 4.08c.303-.41.783-.652 1.293-.652h7.42c.525 0 1.018.257 1.319.69l1.577 2.266c.262.377.403.826.403 1.285v8.294c0 .888-.72 1.608-1.608 1.608H4.536c-.888 0-1.607-.72-1.607-1.608V7.705Z"/> 4899 <path stroke="currentColor" stroke-width="var(--icon-stroke-width)" d="M2.929 6.965h14.143M10 3.428v3.535M6.143 14.035v-2.571c0-.178.143-.321.321-.321h3.857c.178 0 .322.143.322.321v2.571a.321.321 0 0 1-.322.322H6.464a.321.321 0 0 1-.321-.322Z"/> 4900</svg> 4901</span> 4902 Bestellungen 4903 </a> 4904 </li> 4905 <li class="account-actions__list-item"> 4906 <a 4907 href="/account/addresses" 4908 class="account-actions__link button-secondary" 4909 > 4910 <span 4911 class="account-actions__icon" 4912 aria-hidden="true" 4913 ><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none"><circle cx="10" cy="6.5" r="2.75" stroke="currentColor" stroke-width="var(--icon-stroke-width)"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="var(--icon-stroke-width)" d="m5.172 14.591-.437.786a.588.588 0 0 0 .514.873h9.502a.588.588 0 0 0 .514-.873l-.437-.786a5.523 5.523 0 0 0-9.656 0"/></svg> 4914</span> 4915 Profil 4916 </a> 4917 </li> 4918 </ul> 4919 </nav> 4920 </div> 4921</div> 4922 4923 4924 4925 </div> 4926 </anchored-popover-component> 4927 4928 <dialog-component 4929 class="account-drawer" 4930 4931 > 4932 <button 4933 class="account-button header-actions__action" 4934 aria-label="Konto" 4935 aria-haspopup="dialog"ref="trigger"
4936 on:click="/showDialog" 4937><span 4938 class="account-button__icon" 4939 aria-hidden="true" 4940 ><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none"><circle cx="10" cy="6.5" r="2.75" stroke="currentColor" stroke-width="var(--icon-stroke-width)"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="var(--icon-stroke-width)" d="m5.172 14.591-.437.786a.588.588 0 0 0 .514.873h9.502a.588.588 0 0 0 .514-.873l-.437-.786a5.523 5.523 0 0 0-9.656 0"/></svg> 4941</span></button> 4942 4943 4944 4945 <dialog 4946 ref="dialog" 4947 class="color-scheme-6 dialog-modal dialog-drawer dialog-bottom-sheet account-drawer__dialog" 4948 scroll-lock 4949 aria-labelledby="account-drawer-heading" 4950 > 4951 <button 4952 ref="closeButton" 4953 on:click="/closeDialog" 4954 class="button button-unstyled close-button account-drawer__close-button" 4955 aria-label="Dialogfeld schlieÃen" 4956 autofocus 4957 > 4958 <span 4959 class="svg-wrapper" 4960 aria-hidden="true" 4961 ><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"> 4962 <path d="M12 2L2 12" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4963 <path d="M12 12L2 2" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 4964</svg> 4965</span> 4966 </button> 4967 <div class="account-actions"> 4968 <div class="account-actions__main-menu"> 4969 <header class="account-actions__header"> 4970 <h2 4971 id="account-drawer-heading" 4972 class="account-actions__title h5" 4973 > 4974 4975 Konto 4976 4977 </h2> 4978 4979 </header> 4980 4981 4982 <div 4983 class="account-actions__sign-ins" 4984 data-skip-subtree-update="true" 4985 > 4986
4986<script 4987 src="//luxupur.de/cdn/shop/t/97/assets/account-login-actions.js?v=132624473766457443991781436597" 4988 type="module" 4989 fetchpriority="low" 4990 ></script>
4990 4991 <account-login-actions class="account-actions__shop-login"> 4992
4992<script defer="defer" async type="module" src="https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.shop-login-button.de.esm.js"></script>
vendor: 1 bytes, line 4992
4992
4993<script type="module"> 4994 await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.shop-login-button.de.esm.js"); 4995 4996 4997</script>
4997 4998 4999<shop-login-button ux-mode="windoid" return-uri="https://luxupur.de/account/redirect" proxy="true" proxy-core-idp="true" redirect-type="iframe" response-type="code"></shop-login-button> 5000 5001 </account-login-actions> 5002 5003 <a 5004 href="/customer_authentication/login?return_to=%2Fcart&locale=de&ui_hint=full®ion_country=DE" 5005 class="account-actions__link button" 5006 > 5007 <span class="account-actions__sign-in-text"> 5008 Andere Anmeldeoptionen 5009 </span> 5010 <span class="account-actions__fallback-text"> 5011 Anmelden 5012 </span> 5013 </a> 5014 </div> 5015 5016 5017 <nav class="account-actions__nav"> 5018 <ul class="account-actions__list"> 5019 <li class="account-actions__list-item"> 5020 <a 5021 href="/account" 5022 class="account-actions__link button-secondary" 5023 > 5024 <span 5025 class="account-actions__icon" 5026 aria-hidden="true" 5027 ><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none"> 5028 <path stroke-linecap="round" stroke="currentColor" stroke-width="var(--icon-stroke-width)" d="M2.929 7.705c0-.482.154-.95.44-1.338L5.06 4.08c.303-.41.783-.652 1.293-.652h7.42c.525 0 1.018.257 1.319.69l1.577 2.266c.262.377.403.826.403 1.285v8.294c0 .888-.72 1.608-1.608 1.608H4.536c-.888 0-1.607-.72-1.607-1.608V7.705Z"/> 5029 <path stroke="currentColor" stroke-width="var(--icon-stroke-width)" d="M2.929 6.965h14.143M10 3.428v3.535M6.143 14.035v-2.571c0-.178.143-.321.321-.321h3.857c.178 0 .322.143.322.321v2.571a.321.321 0 0 1-.322.322H6.464a.321.321 0 0 1-.321-.322Z"/> 5030</svg> 5031</span> 5032 Bestellungen 5033 </a> 5034 </li> 5035 <li class="account-actions__list-item"> 5036 <a 5037 href="/account/addresses" 5038 class="account-actions__link button-secondary" 5039 > 5040 <span 5041 class="account-actions__icon" 5042 aria-hidden="true" 5043 ><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none"><circle cx="10" cy="6.5" r="2.75" stroke="currentColor" stroke-width="var(--icon-stroke-width)"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="var(--icon-stroke-width)" d="m5.172 14.591-.437.786a.588.588 0 0 0 .514.873h9.502a.588.588 0 0 0 .514-.873l-.437-.786a5.523 5.523 0 0 0-9.656 0"/></svg> 5044</span> 5045 Profil 5046 </a> 5047 </li> 5048 </ul> 5049 </nav> 5050 </div> 5051</div> 5052 5053 5054 5055 </dialog> 5056 </dialog-component> 5057 5058 5059 5060 <a 5061 href="/cart" 5062 class="header-actions__action action__cart" 5063 aria-label="Warenkorb" 5064 aria-describedby="cart-bubble-text" 5065 > 5066 5067 <cart-icon 5068 class=" 5069 header-actions__cart-icon 5070 5071 " 5072 data-testid="cart-icon" 5073 > 5074 <span 5075 class="svg-wrapper" 5076 aria-hidden="true" 5077 > 5078 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="var(--icon-stroke-width)" d="M3.392 6.875h13.216v8.016c0 .567-.224 1.112-.624 1.513-.4.402-.941.627-1.506.627H5.522a2.13 2.13 0 0 1-1.506-.627 2.15 2.15 0 0 1-.624-1.513zM8.818 2.969h2.333c.618 0 1.211.247 1.649.686a2.35 2.35 0 0 1 .683 1.658v1.562H6.486V5.313c0-.622.246-1.218.683-1.658a2.33 2.33 0 0 1 1.65-.686"/></svg> 5079 5080 </span> 5081 5082 <div 5083 ref="cartBubble" 5084 class="cart-bubble visually-hidden" 5085 5086 5087 data-maintain-ratio 5088 5089> 5090 <span class="cart-bubble__background"></span> 5091 <span 5092 ref="cartBubbleText" 5093 id="cart-bubble-text" 5094 class="cart-bubble__text" 5095 5096 role="status" 5097 5098 > 5099 <span class="visually-hidden">Artikel im Warenkorb insgesamt: 0 5100 </span> 5101 <span 5102 class="cart-bubble__text-count hidden" 5103 ref="cartBubbleCount" 5104 aria-hidden="true" 5105 data-testid="cart-bubble" 5106 > 51070</span> 5108 </span> 5109</div> 5110 5111 </cart-icon> 5112 5113 </a> 5114 5115</header-actions> 5116 5117 5118 5119 5120 5121 5122 </div> 5123 </div> 5124 </div> 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136</header-component> 5137
5138<script 5139 src="//luxupur.de/cdn/shop/t/97/assets/header.js?v=155792906110242140481781436597" 5140 type="module" 5141></script>
5141 5142 5143 5144 5145 5146
5146<script type="module"> 5147 import { hydrate } from '@theme/section-hydration'; 5148 const url = new URL(window.location.href); 5149 url.searchParams.delete('page'); 5150 hydrate('sections--29313955201288__header_section', url); 5151 </script>
5151 5152 5153 5154 5155</header> 5156<!-- END sections: header-group --> 5157 </div> 5158 5159
5159<script> 5160 // Inline header height calculation to prevent layout shift 5161 // Note: Updates in calculateHeaderGroupHeight() and updateTransparentHeaderOffset()utilities.js should be kept in sync with this function 5162 (function setHeaderHeighCustomProperties() { 5163 /* 5164 * Header calculation functions for maintaining CSS variables 5165 * Mimic calculateHeaderGroupHeight() in utilities.js 5166 */ 5167 const header = document.querySelector('header-component'); 5168 const headerGroup = document.querySelector('#header-group'); 5169 const hasHeaderSection = headerGroup?.querySelector('.header-section'); 5170 5171 if (!header || !headerGroup) return; 5172 5173 const headerHeight = header.offsetHeight; 5174 5175 // Calculate the total height of the header group 5176 let headerGroupHeight = 0; 5177 const children = headerGroup.children; 5178 for (let i = 0; i < children.length; i++) { 5179 const element = children[i]; 5180 if (element === header || !(element instanceof HTMLElement)) continue; 5181 headerGroupHeight += element.offsetHeight; 5182 } 5183 5184 // Check for transparent header special case 5185 if (header.hasAttribute('transparent') && header.parentElement?.nextElementSibling) { 5186 headerGroupHeight += headerHeight; 5187 } 5188 5189 // Set CSS variables 5190 document.body.style.setProperty('--header-height', `${headerHeight}px`); 5191 document.body.style.setProperty('--header-group-height', `${headerGroupHeight}px`); 5192 5193 /** 5194 * Updates CSS custom properties for transparent header offset calculation 5195 * Mimic updateTransparentHeaderOffset() in utilities.js 5196 */ 5197 5198 if (!hasHeaderSection || !header?.hasAttribute('transparent')) { 5199 document.body.style.setProperty('--transparent-header-offset-boolean', '0'); 5200 return; 5201 } 5202 5203 const hasImmediateSection = hasHeaderSection.nextElementSibling?.classList.contains('shopify-section'); 5204 5205 const shouldApplyOffset = !hasImmediateSection ? '1' : '0'; 5206 document.body.style.setProperty('--transparent-header-offset-boolean', shouldApplyOffset); 5207 })(); 5208 </script>
5208 5209 5210 <main 5211 id="MainContent" 5212 class="content-for-layout" 5213 role="main" 5214 data-page-transition-enabled="false" 5215 data-product-transition="false" 5216 data-template="cart" 5217 > 5218 <div id="shopify-section-template--29313960149256__cart-section" class="shopify-section"> 5219 5220<cart-items-component 5221 class="cart-items-component" 5222 data-section-id="template--29313960149256__cart-section" 5223> 5224 <div class="section-background color-scheme-6"></div> 5225 <div 5226 class="section color-scheme-6 section--page-width" 5227 > 5228 <div 5229 class="cart-page spacing-style cart-page--empty" 5230 style="--padding-block-start: 0px;--padding-block-end: max(20px, calc(var(--spacing-scale) * 62px));" 5231 > 5232 <div class="cart-page__title"> 5233 5234 5235 5236<div 5237 class="cart-title spacing-style text-left" 5238 style="--padding-block-start: 16px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px;" 5239 5240> 5241 <h1 class="h3">Dein Warenkorb ist leer 5242</h1> 5243</div> 5244 5245 5246 5247 5248 5249 </div> 5250 5251 <div class="cart-page__items"> 5252 5253 5254
5255<script 5256 src="//luxupur.de/cdn/shop/t/97/assets/component-cart-items.js?v=47090504063697747641781436597" 5257 type="module" 5258 fetchpriority="low" 5259></script>
vendor: 1 bytes, line 5259
5259
5260<script 5261 src="//luxupur.de/cdn/shop/t/97/assets/component-cart-quantity-selector.js?v=105130809908858639751781436597" 5262 type="module" 5263 fetchpriority="low" 5264></script>
vendor: 1 bytes, line 5264
5264
5265<script 5266 src="//luxupur.de/cdn/shop/t/97/assets/volume-pricing-info.js?v=94479640769665442661781436597" 5267 type="module" 5268 fetchpriority="low" 5269></script>
5269 5270 5271<div 5272 5273 class="cart-items__wrapper" 5274 5275> 5276 5277<p> 5278 Hast du ein Konto? <a href="https://luxupur.de/customer_authentication/redirect?locale=de®ion_country=DE">Logge dich ein</a>, damit es beim Checkout schneller geht. 5279 </p><a 5280 class="button cart-items__empty-button" 5281 href="https://luxupur.de/" 5282 > 5283 Weiter einkaufen 5284 </a></div> 5285 5286 5287 5288 5289 5290 5291 5292 5293 5294 </div><div class="cart-page__more-blocks"></div> 5295 </div> 5296 </div> 5297</cart-items-component> 5298 5299 5300 5301 5302 5303 5304</div> 5305 </main> 5306 5307 <!-- BEGIN sections: footer-group --> 5308<footer id="shopify-section-sections--29313955070216__footer_WnX4aJ" class="shopify-section shopify-section-group-footer-group section-wrapper"> 5309 5310<div class="section-background color-scheme-7"></div> 5311<div 5312 class="section section--page-width color-scheme-7" 5313> 5314 5315 <div 5316 class=" 5317 footer-content 5318 spacing-style 5319 5320 5321 " 5322 style=" 5323 --padding-block-start: max(20px, calc(var(--spacing-scale) * 100px));--padding-block-end: max(20px, calc(var(--spacing-scale) * 36px)); 5324 --footer-gap: 12px; 5325 --grid-columns: 4; 5326 --last-row-count: 4; 5327 --tablet-last-row-count: 2; 5328 " 5329 > 5330 5331 5332 5333 5334 5335 <accordion-custom 5336 class=" 5337 menu 5338 5339 5340 " 5341 data-disable-on-desktop="true" 5342 open-by-default-on-desktop 5343 5344 data-disable-on-mobile="true" 5345 open-by-default-on-mobile 5346 5347 > 5348 <details 5349 class=" 5350 menu__details 5351 spacing-style 5352 5353 " 5354 data-testid="menu-details" 5355 style=" 5356 --spacing--size: 7px; 5357 --padding-block-start: 0px;--padding-block-end: max(20px, calc(var(--spacing-scale) * 21px));--padding-inline-start: 0px;--padding-inline-end: 0px; 5358 " 5359 5360 open 5361 5362 5363 > 5364 <summary class="menu__heading menu__heading--empty h3"> 5365 <span class="menu__heading__default"></span> 5366 <span class="menu__heading__accordion"> 5367 Produktmenü 5368 <span class="menu__heading__toggle svg-wrapper icon-caret icon-animated"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"> 5369 <path d="M11 5.5L7 9.5L3 5.5" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 5370</svg> 5371</span> 5372 <span class="menu__heading__toggle svg-wrapper icon-plus"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"> 5373 <path class="vertical" d="M2.75 7H11.25" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round"/> 5374 <path class="horizontal" d="M7 2.75L7 11.25" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round"/> 5375</svg> 5376</span> 5377 </span> 5378 </summary> 5379 5380 <div class="details-content"> 5381 5382 <ul class="list-unstyled"> 5383 5384 <li class="menu__item paragraph"> 5385 <a href="/products/luxupur-orthosleep-koerperprofil-matratze"> 5386 Matratze 5387 </a> 5388 </li> 5389 5390 <li class="menu__item paragraph"> 5391 <a href="/products/luxupur-orthotop-topper"> 5392 Topper 5393 </a> 5394 </li> 5395 5396 <li class="menu__item paragraph"> 5397 <a href="/products/luxupur-orthotop-split-topper"> 5398 Split-Topper 5399 </a> 5400 </li> 5401 5402 <li class="menu__item paragraph"> 5403 <a href="/pages/luxupur-kissen"> 5404 Kissen 5405 </a> 5406 </li> 5407 5408 <li class="menu__item paragraph"> 5409 <a href="/pages/luxupur-lattenroste"> 5410 Lattenroste 5411 </a> 5412 </li> 5413 5414 <li class="menu__item paragraph"> 5415 <a href="/pages/sonderanfertigung"> 5416 Sondergrösse Anfragen 5417 </a> 5418 </li> 5419 5420 <li class="menu__item paragraph"> 5421 <a href="/pages/uber-luxupur"> 5422 Ãber Luxupur® 5423 </a> 5424 </li> 5425 5426 </ul> 5427 5428 </div> 5429 </details> 5430 </accordion-custom> 5431 5432 5433 5434 5435 5436 5437 5438 5439 5440 5441 <accordion-custom 5442 class=" 5443 menu 5444 5445 5446 " 5447 data-disable-on-desktop="true" 5448 open-by-default-on-desktop 5449 5450 data-disable-on-mobile="true" 5451 open-by-default-on-mobile 5452 5453 > 5454 <details 5455 class=" 5456 menu__details 5457 spacing-style 5458 5459 " 5460 data-testid="menu-details" 5461 style=" 5462 --spacing--size: 7px; 5463 --padding-block-start: 0px;--padding-block-end: max(20px, calc(var(--spacing-scale) * 21px));--padding-inline-start: 0px;--padding-inline-end: 0px; 5464 " 5465 5466 open 5467 5468 5469 > 5470 <summary class="menu__heading menu__heading--empty h3">
5471 <span class="menu__heading__default"></span> 5472 <span class="menu__heading__accordion"> 5473 Seitenleistenmenü links 5474 <span class="menu__heading__toggle svg-wrapper icon-caret icon-animated"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"> 5475 <path d="M11 5.5L7 9.5L3 5.5" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 5476</svg> 5477</span> 5478 <span class="menu__heading__toggle svg-wrapper icon-plus"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"> 5479 <path class="vertical" d="M2.75 7H11.25" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round"/> 5480 <path class="horizontal" d="M7 2.75L7 11.25" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round"/> 5481</svg> 5482</span> 5483 </span> 5484 </summary> 5485 5486 <div class="details-content"> 5487 5488 <ul class="list-unstyled"> 5489 5490 <li class="menu__item paragraph"> 5491 <a href="/pages/sonderanfertigung"> 5492 Kontakt 5493 </a> 5494 </li> 5495 5496 <li class="menu__item paragraph"> 5497 <a href="/pages/lieferinformationen"> 5498 Lieferinformationen 5499 </a> 5500 </li> 5501 5502 <li class="menu__item paragraph"> 5503 <a href="/pages/zahlungsoptionen"> 5504 Zahlungsoptionen 5505 </a> 5506 </li> 5507 5508 <li class="menu__item paragraph"> 5509 <a href="/pages/ruecksendung"> 5510 Rücksendung 5511 </a> 5512 </li> 5513 5514 </ul> 5515 5516 </div> 5517 </details> 5518 </accordion-custom> 5519 5520 5521 5522 5523 5524 5525 5526 5527 5528 5529 <accordion-custom 5530 class=" 5531 menu 5532 5533 5534 " 5535 data-disable-on-desktop="true" 5536 open-by-default-on-desktop 5537 5538 data-disable-on-mobile="true" 5539 open-by-default-on-mobile 5540 5541 > 5542 <details 5543 class=" 5544 menu__details 5545 spacing-style 5546 5547 " 5548 data-testid="menu-details" 5549 style=" 5550 --spacing--size: 7px; 5551 --padding-block-start: 0px;--padding-block-end: max(20px, calc(var(--spacing-scale) * 72px));--padding-inline-start: 0px;--padding-inline-end: 0px; 5552 " 5553 5554 open 5555 5556 5557 > 5558 <summary class="menu__heading menu__heading--empty h3"> 5559 <span class="menu__heading__default"></span> 5560 <span class="menu__heading__accordion"> 5561 Seitenleistenmenü rechts 5562 <span class="menu__heading__toggle svg-wrapper icon-caret icon-animated"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"> 5563 <path d="M11 5.5L7 9.5L3 5.5" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 5564</svg> 5565</span> 5566 <span class="menu__heading__toggle svg-wrapper icon-plus"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"> 5567 <path class="vertical" d="M2.75 7H11.25" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round"/> 5568 <path class="horizontal" d="M7 2.75L7 11.25" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round"/> 5569</svg> 5570</span> 5571 </span> 5572 </summary> 5573 5574 <div class="details-content"> 5575 5576 <ul class="list-unstyled"> 5577 5578 <li class="menu__item paragraph"> 5579 <a href="/pages/garantie"> 5580 Garantie 5581 </a> 5582 </li> 5583 5584 <li class="menu__item paragraph"> 5585 <a href="/pages/haufig-gestellte-fragen"> 5586 Häufig gestellte Fragen 5587 </a> 5588 </li> 5589 5590 <li class="menu__item paragraph"> 5591 <a href="/pages/sonderanfertigung"> 5592 Anfrage zu Sondergrössen 5593 </a> 5594 </li> 5595 5596 <li class="menu__item paragraph"> 5597 <a href="/pages/luxupur-newsletter"> 5598 Luxupur® Newsletter 5599 </a> 5600 </li> 5601 5602 </ul> 5603 5604 </div> 5605 </details> 5606 </accordion-custom> 5607 5608 5609 5610 5611 5612 5613 5614 5615 5616 5617 <accordion-custom 5618 class=" 5619 menu 5620 5621 5622 " 5623 data-disable-on-desktop="true" 5624 open-by-default-on-desktop 5625 5626 data-disable-on-mobile="true" 5627 open-by-default-on-mobile 5628 5629 > 5630 <details 5631 class=" 5632 menu__details 5633 spacing-style 5634 5635 " 5636 data-testid="menu-details" 5637 style=" 5638 --spacing--size: 7px; 5639 --padding-block-start: 0px;--padding-block-end: 0px;--padding-inline-start: 0px;--padding-inline-end: 0px; 5640 " 5641 5642 open 5643 5644 5645 > 5646 <summary class="menu__heading menu__heading--empty h3">
5647 <span class="menu__heading__default"></span> 5648 <span class="menu__heading__accordion"> 5649 Luxupur® Richtlinien 5650 <span class="menu__heading__toggle svg-wrapper icon-caret icon-animated"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"> 5651 <path d="M11 5.5L7 9.5L3 5.5" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 5652</svg> 5653</span> 5654 <span class="menu__heading__toggle svg-wrapper icon-plus"><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"> 5655 <path class="vertical" d="M2.75 7H11.25" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round"/> 5656 <path class="horizontal" d="M7 2.75L7 11.25" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round"/> 5657</svg> 5658</span> 5659 </span> 5660 </summary> 5661 5662 <div class="details-content"> 5663 5664 <ul class="list-unstyled"> 5665 5666 <li class="menu__item paragraph"> 5667 <a href="/policies/legal-notice"> 5668 Impressum 5669 </a> 5670 </li> 5671 5672 <li class="menu__item paragraph"> 5673 <a href="/policies/privacy-policy"> 5674 Datenschutzerklärung 5675 </a> 5676 </li> 5677 5678 <li class="menu__item paragraph"> 5679 <a href="/policies/terms-of-service"> 5680 AGB 5681 </a> 5682 </li> 5683 5684 <li class="menu__item paragraph"> 5685 <a href="/policies/refund-policy"> 5686 Widerrufsrecht 5687 </a> 5688 </li> 5689 5690 <li class="menu__item paragraph"> 5691 <a href="/policies/shipping-policy"> 5692 Versandbedingungen 5693 </a> 5694 </li> 5695 5696 </ul> 5697 5698 </div> 5699 </details> 5700 </accordion-custom> 5701 5702 5703 5704 5705 5706 5707 </div> 5708</div> 5709 5710 5711 5712 5713</footer><div id="shopify-section-sections--29313955070216__178168012090c12946" class="shopify-section shopify-section-group-footer-group section-wrapper"> 5714 5715 5716 5717<div class="section-background color-scheme-14d561a2-4fe3-4ccf-a8e8-e70dfad6e07b"></div> 5718<div 5719 class="section section--page-width color-scheme-14d561a2-4fe3-4ccf-a8e8-e70dfad6e07b" 5720 data-testid="ui-test-section" 5721 5722 5723 5724 style=" 5725 5726 --section-min-height: 0svh; 5727 5728 5729 5730 --section-preview-height: 600px; 5731 5732 " 5733> 5734 <div class="custom-section-background"> 5735 5736 5737 5738 5739 </div> 5740 5741 <div 5742 class="border-style custom-section-content" 5743 style="--border-width: 1px; --border-style: none; --border-color: 5744rgb(var(--color-border-rgb) / 1.0); --border-radius: 57450px; 5746" 5747 > 5748 5749 5750 <div 5751 class=" 5752 spacing-style 5753 layout-panel-flex 5754 layout-panel-flex--column 5755 section-content-wrapper 5756 mobile-column 5757 " 5758 style=" 5759 --flex-direction: column; --flex-wrap: nowrap; --flex-wrap-mobile: wrap; 5760 5761--gap: 12px; 5762 5763--horizontal-alignment: center; --vertical-alignment: center; 5764--vertical-alignment-mobile: center; 5765 5766 --padding-block-start: 0px;--padding-block-end: 0px; 5767 " 5768 data-testid="section-content" 5769 > 5770 5771 <div id="shopify-block-AZDVxTlpCWkJvemUve__eu_widerruf_button_button_XPyzeJ" class="shopify-block shopify-app-block"> 5772<style> 5773 /* Section Block Button Styles - Namespace: wbs-* (Withdrawal Button Section) */ 5774 5775 .wbs-section-AZDVxTlpCWkJvemUve__eu_widerruf_button_button_XPyzeJ { 5776 padding-top: 40px; 5777 padding-bottom: 40px; 5778 text-align: center; 5779 } 5780 5781 .wbs-button-wrapper-AZDVxTlpCWkJvemUve__eu_widerruf_button_button_XPyzeJ { 5782 display: inline-block;} 5783 5784 .wbs-trigger-btn-AZDVxTlpCWkJvemUve__eu_widerruf_button_button_XPyzeJ {display: inline-block; 5785 cursor: pointer; 5786 font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; 5787 font-weight: 600; 5788 text-decoration: none; 5789 text-align: center; 5790 transition: all 0.2s ease; 5791 border: none;padding: 14px 28px; 5792 font-size: 16px;background-color: #514e4e; 5793 color: #ffffff; 5794 border: 2px solid #514e4e; 5795 border-radius: 8px;} 5796 5797 .wbs-trigger-btn-AZDVxTlpCWkJvemUve__eu_widerruf_button_button_XPyzeJ:hover {opacity: 0.9; 5798 transform: translateY(-2px); 5799 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);} 5800 5801 .wbs-trigger-btn-AZDVxTlpCWkJvemUve__eu_widerruf_button_button_XPyzeJ:active { 5802 transform: scale(0.98); 5803 } 5804</style> 5805 5806<!-- Section Block Button (Triggers Global Modal) --> 5807<div id="wbs-section-AZDVxTlpCWkJvemUve__eu_widerruf_button_button_XPyzeJ" class="wbs-section-AZDVxTlpCWkJvemUve__eu_widerruf_button_button_XPyzeJ eu-wbs-button"> 5808 <div class="wbs-button-wrapper-AZDVxTlpCWkJvemUve__eu_widerruf_button_button_XPyzeJ"> 5809 <button 5810 type="button" 5811 class="wbs-trigger-btn-AZDVxTlpCWkJvemUve__eu_widerruf_button_button_XPyzeJ" 5812 id="wbs-trigger-AZDVxTlpCWkJvemUve__eu_widerruf_button_button_XPyzeJ" 5813 aria-label="Widerrufsformular öffnen" 5814 > 5815 Widerruf einreichen 5816 </button> 5817 </div> 5818</div>
5818<script> 5819 window.WITHDRAWAL_EMBED_CONFIG = window.WITHDRAWAL_EMBED_CONFIG || {}; 5820 window.WITHDRAWAL_EMBED_CONFIG["AZDVxTlpCWkJvemUve__eu_widerruf_button_button_XPyzeJ"] = { 5821 embedUrl: "https:\/\/euwiderrufsbutton.de\/withdrawal\/proxy\/embed\/withdrawal-form?c_shop=ahsvz2-1w.myshopify.com\u0026c_hmac=6d370740648fa0711be3767c4c1944c5d558248f7d703a2bdbdfd932972f6d8c\u0026c_timestamp=1791331200\u0026c_locale=de\u0026c_country=DE\u0026primaryColor=%23000000\u0026backgroundColor=%23ffffff\u0026textColor=%23212326\u0026borderRadius=8px\u0026maxWidth=100%\u0026showOrderLookup=true\u0026requireOrderNumber=true\u0026hideOrderNotes=false\u0026requireItems=false\u0026confirmStep=false", 5822 heading: "Widerruf erklären", 5823 description: "Füllen Sie das folgende Formular aus, um Ihre Widerrufserklärung abzugeben.", 5824 showHeading: true, 5825 hideOrderNotes: false, 5826 closeLabel: "SchlieÃen", 5827 watermarkHtml: "\u003c!-- BEGIN app snippet: watermark --\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \u003cdiv style=\"justify-content: center; visibility: visible !important; opacity: 1 !important; filter: opacity(1) !important; content-visibility: visible !important; display: flex !important; max-height: 100% !important; overflow: auto !important; width: 100% !important; min-height:20px !important;\"\u003e\n \u003ca\n target=\"_blank\"\n href=\"https:\/\/apps.shopify.com\/eu-widerrufsbutton\"\n rel=\"nofollow noopener noreferrer\" \n style=\"transform: scale(1) !important; text-decoration: none; color: rgb(20, 20, 20) !important; align-items: center; font-size: 12px !important; font-weight: 500 !important; display: flex !important; gap: 5px !important; visibility: visible !important; opacity: 1 !important; position: relative !important; filter: opacity(1) !important; content-visibility: visible !important; max-height: 100% !important; overflow: auto !important; min-height:20px !important;\"\u003e\n \u003cimg alt=\"EU Widerrufsbutton logo\" src=\"https:\/\/cdn.shopify.com\/extensions\/01a0fce3-4c6d-76a2-81ad-90d591b1691b\/eu-widerruf-button-111\/assets\/withdrawal_logo_128px.png\" style=\"vertical-align:bottom !important; height:32px !important; width:32px !important; visibility: visible !important; opacity: 1 !important; position: relative !important; filter: opacity(1) !important; content-visibility: visible !important; max-height: 100% !important; overflow: unset !important; display: flex !important; min-height:32px !important; max-width:32px; min-width:32px !important;\"\/\u003e\n \u003cspan style=\"transform: scale(1) !important; font-size: 16px; line-height: 1.4; visibility: visible !important; opacity: 1 !important; position: relative !important; filter: opacity(1) !important; content-visibility: visible !important; max-height: 100% !important; overflow: unset !important; display: flex !important; min-height:20px !important; font-weight:bold !important; color:#1250dc !important;\"\u003eEU Widerrufsbutton\u003c\/span\u003e\n \u003c\/a\u003e\n \u003c\/div\u003e\u003c!-- END app snippet --\u003e" 5828 }; 5829</script>
vendor: 1 bytes, line 5829
5829
5830<script src="https://cdn.shopify.com/extensions/01a0fce3-4c6d-76a2-81ad-90d591b1691b/eu-widerruf-button-111/assets/withdrawal-embed.js" defer></script>
5830 5831
5832<script> 5833(function() { 5834 const blockId = 'AZDVxTlpCWkJvemUve__eu_widerruf_button_button_XPyzeJ'; 5835 const alertMsg = "Das Widerrufsformular konnte nicht geladen werden. Bitte versuchen Sie es später erneut."; 5836 5837 // Single delegated listener: covers clicks on the button and any children, 5838 // including blocks injected after initial render. A direct listener on the 5839 // button itself would fire a second handleAction per click (double modal 5840 // open, double alert chain on asset-load failure). 5841 document.addEventListener('click', function(event) { 5842 const targetId = 'wbs-trigger-' + blockId; 5843 var trigger = event.target; 5844 if (!trigger) return; 5845 var btn = trigger.id === targetId ? trigger : (trigger.closest ? trigger.closest('#' + targetId) : null); 5846 if (btn) handleAction(btn); 5847 }); 5848 5849 function handleAction(triggerEl) { 5850 if (window.withdrawalModal && typeof window.withdrawalModal.open === 'function') { 5851 window.withdrawalModal.open(blockId); 5852 return; 5853 } 5854 // The shared script may still be loading (deferred asset). Ask it to open on 5855 // init with this block's config. Single global slot so the last clicked 5856 // block wins when several are clicked within the asset-load window. The 5857 // trigger element is stashed too so focus can be restored to it after the 5858 // modal closes (at deferred-script time document.activeElement is <body>). 5859 window.__wbsPendingOpen = { blockId: blockId, trigger: triggerEl || null }; 5860 // Last resort: asset failed to load and no modal initialized. One shared 5861 // chain, re-armed per click, so rapid clicks never stack alert() dialogs. 5862 if (window.__wbsFallbackTimer) clearTimeout(window.__wbsFallbackTimer); 5863 window.__wbsFallbackTimer = setTimeout(function() { 5864 if (window.withdrawalModal && typeof window.withdrawalModal.open === 'function') return; 5865 window.__wbsFallbackTimer = setTimeout(function() { 5866 if (!window.withdrawalModal || typeof window.withdrawalModal.open !== 'function') { 5867 alert(alertMsg); 5868 // The modal will not initialize in time; drop the pending open so a late 5869 // asset load does not open the modal after the alert. 5870 window.__wbsPendingOpen = null; 5871 } 5872 }, 2000); 5873 }, 600); 5874 } 5875})(); 5876</script>
5876 5877</div> 5878 5879 </div> 5880 </div> 5881</div> 5882 5883 5884 5885 5886 5887</div><div id="shopify-section-sections--29313955070216__utilities" class="shopify-section shopify-section-group-footer-group footer-utilities"> 5888 5889<div class="section-background color-scheme-14d561a2-4fe3-4ccf-a8e8-e70dfad6e07b"></div> 5890<div 5891 class="section section--page-width color-scheme-14d561a2-4fe3-4ccf-a8e8-e70dfad6e07b" 5892 5893> 5894 <div 5895 class="utilities utilities--blocks-3 spacing-style" 5896 style="--padding-block-start: 20px;--padding-block-end: 20px; --border-width: 0px; --gap: 24px;" 5897 data-testid="footer-utilities" 5898 > 5899 5900 5901<div 5902 class=" 5903 footer-utilities__group-copyright 5904 custom-typography 5905 footer-utilities__text 5906 custom-font-size 5907 " 5908 style=" 5909--color: ;--font-size: 0.875rem; --font-weight: ;--font-family: ; --text-transform: none; --text-wrap: pretty; --line-height: var(--line-height--body-); --letter-spacing: var(--letter-spacing--body-);" 5910 5911> 5912 <span class="footer-utilities__text"> 5913 © 2026 5914 <a href="/" title="">Luxupur®</a></span> 5915</div> 5916 5917 5918 5919 5920 <anchored-popover-component 5921 class="footer-utilities__policy-list footer-utilities__text" 5922 data-hover-triggered="true" 5923 > 5924 <button 5925 class="policy-list-trigger button-unstyled" 5926 popovertarget="terms-policies-popover" 5927 popovertargetaction="toggle" 5928 ref="trigger" 5929 style=" 5930--color: ;--font-size: 0.875rem; --font-weight: ;--font-family: ; --text-transform: none; --text-wrap: pretty; --line-height: var(--line-height--body-); --letter-spacing: var(--letter-spacing--body-);" 5931 5932 > 5933 Geschäftsbedingungen und Richtlinien 5934 </button> 5935 <div 5936 class="terms-policies-popover color-scheme-6" 5937 id="terms-policies-popover" 5938 popover="auto" 5939 ref="popover" 5940 > 5941 <ul 5942 class=" 5943 policy_list list-unstyled 5944 custom-typography 5945 custom-font-size 5946 " 5947 ><li> 5948 <a 5949 href="/policies/privacy-policy" 5950 class="footer-utilities__text" 5951 >Datenschutzerklärung</a> 5952 </li><li> 5953 <a 5954 href="/policies/terms-of-service" 5955 class="footer-utilities__text" 5956 >AGB</a> 5957 </li><li> 5958 <a 5959 href="/policies/refund-policy" 5960 class="footer-utilities__text" 5961 >Widerrufsrecht</a> 5962 </li><li> 5963 <a 5964 href="/policies/contact-information" 5965 class="footer-utilities__text" 5966 >Kontaktinformationen</a> 5967 </li><li> 5968 <a 5969 href="/policies/legal-notice" 5970 class="footer-utilities__text" 5971 >Impressum</a> 5972 </li><li> 5973 <a 5974 href="/policies/shipping-policy" 5975 class="footer-utilities__text" 5976 >Versand</a> 5977 </li></ul> 5978 </div> 5979 </anchored-popover-component> 5980 5981 5982 5983 5984 5985 5986 5987<div 5988 class="social-icons__wrapper footer-utilities__icons" 5989 5990> 5991 5992 5993 5994 5995 5996 5997 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6008 6009 6010 6011 6012 6013 6014 6015 6016 6017 6018 6019 6020 6021 6022 6023 6024 6025 6026 6027 6028 6029 6030 6031 6032 6033 6034 6035 6036 6037 6038 6039 6040 6041 6042 6043 6044 6045 6046 6047 6048 6049 6050 6051 6052 6053 6054 6055 6056 6057 6058 6059 6060 6061 6062 6063 6064 6065 6066 6067 6068 6069</div> 6070 6071 6072 6073 6074 6075 </div> 6076</div> 6077 6078 6079 6080 6081</div> 6082<!-- END sections: footer-group --> 6083 6084 6085
6086<script 6087 src="//luxupur.de/cdn/shop/t/97/assets/predictive-search.js?v=149240552485540508541781436597" 6088 type="module" 6089 fetchpriority="low" 6090></script>
6090 6091 6092<dialog-component 6093 id="search-modal" 6094 class="search-modal" 6095 6096> 6097 <dialog 6098 ref="dialog" 6099 on:click="/closeDialogOnClickOutside" 6100 on:keydown="/closeDialogOnEscapePress" 6101 class="search-modal__content dialog-modal" 6102 scroll-lock 6103 aria-labelledby="search-modal-heading" 6104 > 6105 <h2 6106 id="search-modal-heading" 6107 class="visually-hidden" 6108 > 6109 Suche 6110 </h2> 6111 <predictive-search-component 6112 class="predictive-search color-scheme-6" 6113 style="--product-corner-radius: 0px; --card-corner-radius: 0px;" 6114 data-section-id="predictive-search" 6115 data-testid="search-component--modal" 6116 role="search" 6117 aria-label="Suchen" 6118 > 6119 <form 6120 action="/search" 6121 method="get" 6122 role="search" 6123 class="predictive-search-form" 6124 ref="form" 6125 on:keydown="/onSearchKeyDown" 6126 > 6127 <div 6128 class="predictive-search-form__header" 6129 > 6130 <div class="predictive-search-form__header-inner"> 6131 <label 6132 for="cmdk-input" 6133 class="visually-hidden" 6134 >Suchen</label> 6135 <input 6136 class="search-input" 6137 id="cmdk-input" 6138 type="search" 6139 name="q" 6140 role="combobox" 6141 aria-expanded="false" 6142 aria-owns="predictive-search-results" 6143 aria-controls="predictive-search-results" 6144 aria-haspopup="listbox" 6145 aria-autocomplete="list" 6146 autocomplete="off" 6147 placeholder="Suchen" 6148 ref="searchInput" 6149 on:input="/search" 6150 on:keydown="/onSearchKeyDown" 6151 > 6152 <input 6153 name="options[prefix]" 6154 type="hidden" 6155 value="last" 6156 > 6157 <span class="svg-wrapper predictive-search__icon"> 6158 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="none"><circle cx="9" cy="9" r="4.75" stroke="currentColor" stroke-width="var(--icon-stroke-width)"/><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="var(--icon-stroke-width)" d="m12.5 12.5 3.25 3.25"/></svg> 6159 6160 </span> 6161 <button 6162 type="button" 6163 class="button-unstyled predictive-search__reset-button" 6164 ref="resetButton" 6165 hidden 6166 on:click="/resetSearch" 6167 > 6168 Löschen 6169 </button> 6170 </div> 6171 <button 6172 type="button" 6173 class="button predictive-search__close-modal-button" 6174 aria-label="Dialogfeld schlieÃen" 6175 on:click="dialog-component/closeDialog" 6176 ref="closeModalButton" 6177 > 6178 <span class="svg-wrapper"> 6179 <svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"> 6180 <path d="M12 2L2 12" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 6181 <path d="M12 12L2 2" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 6182</svg> 6183 6184 </span> 6185 </button> 6186 </div> 6187 6188 <div class="predictive-search-form__content-wrapper"> 6189 <div 6190 class="predictive-search-form__content" 6191 tabindex="-1" 6192 ref="predictiveSearchResults" 6193 on:click="/handleModalClick" 6194 > 6195 6196 6197<div 6198 id="predictive-search-results" 6199 class="predictive-search-dropdown" 6200 role="listbox" 6201 aria-expanded="true" 6202 style="--color-shadow: rgb(var(--color-foreground-rgb) / 0.1);" 6203> 6204 6205 <div class="predictive-search-results__inner"> 6206 6207 6208 6209 6210 6211 <div 6212 id="predictive-search-products" 6213 class="predictive-search-results__products" 6214 6215 data-testid="products-list-default--modal" 6216 6217> 6218 6219 <h4 class="predictive-search-results__title"> 6220 Produkte 6221 </h4> 6222 <ul 6223 class="predictive-search-results__list predictive-search-results__wrapper-products list-unstyled" 6224 role="listbox"
6225 aria-label="Produkte" 6226 > 6227 6228 6229 <li 6230 class="predictive-search-results__card predictive-search-results__card--product" 6231 ref="resultsItems[]" 6232 > 6233 6234<div 6235 class="resource-card" 6236 href="/products/luxupur-ergopillow" 6237 data-resource-type="product" 6238> 6239 <a 6240 class="resource-card__link" 6241 href="/products/luxupur-ergopillow" 6242 > 6243 <span class="visually-hidden"> 6244 Luxupur® ErgoPillow 6245 </span> 6246 </a> 6247 <div 6248 class="resource-card__media" 6249 style="--resource-card-aspect-ratio: 4 / 5;" 6250 6251 > 6252 6253 6254<img src="//luxupur.de/cdn/shop/files/luxupur-ergopillow-nackenkissen-ergonomisch-produktfoto.jpg?v=1789384712&width=500" alt="Luxupur ErgoPillow ergonomisches Premium Nackenkissen höhenverstellbar 8 11 13 cm 6255 6256" srcset="//luxupur.de/cdn/shop/files/luxupur-ergopillow-nackenkissen-ergonomisch-produktfoto.jpg?v=1789384712&width=240 240w, //luxupur.de/cdn/shop/files/luxupur-ergopillow-nackenkissen-ergonomisch-produktfoto.jpg?v=1789384712&width=352 352w" width="500" height="500" loading="lazy" class="resource-card__image" sizes="auto" transitionToProduct="false" style="object-position: 50.0% 50.0%;"> 6257 6258 <img src="//luxupur.de/cdn/shop/files/luxupur-ergopillow-modularer-kern-hoehenverstellbar-8-11-13-cm.png?v=1789384753&width=500" alt="Luxupur ErgoPillow modularer Premiumkern höhenverstellbar 8 11 13 cm ergonomisches Nackenkissen 6259" srcset="//luxupur.de/cdn/shop/files/luxupur-ergopillow-modularer-kern-hoehenverstellbar-8-11-13-cm.png?v=1789384753&width=240 240w, //luxupur.de/cdn/shop/files/luxupur-ergopillow-modularer-kern-hoehenverstellbar-8-11-13-cm.png?v=1789384753&width=352 352w" width="500" height="500" loading="lazy" class="resource-card__image resource-card__image--secondary" sizes="auto" transitionToProduct="false" data-media-id="66738357633288" style="object-position: 50.0% 50.0%;"> 6260</div> 6261 6262 <div class="resource-card__content"> 6263 <p class="resource-card__title paragraph">Luxupur® ErgoPillow</p> 6264 6265 6266 <div ref="priceContainer"> 6267 6268 6269 6270 6271 <span class="price">155,00 â¬</span> 6272 6273 6274 6275<div class="lux-price-meta">inkl. MwSt.</div> 6276 6277</div> 6278 6279 6280 6281 6282 </div> 6283</div> 6284 6285 </li> 6286 6287 <li 6288 class="predictive-search-results__card predictive-search-results__card--product" 6289 ref="resultsItems[]" 6290 > 6291 6292<div 6293 class="resource-card" 6294 href="/products/orthobase-classic-lattenrost" 6295 data-resource-type="product" 6296> 6297 <a 6298 class="resource-card__link" 6299 href="/products/orthobase-classic-lattenrost" 6300 > 6301 <span class="visually-hidden"> 6302 Luxupur® OrthoBase Classic 6303 </span> 6304 </a> 6305 <div 6306 class="resource-card__media" 6307 style="--resource-card-aspect-ratio: 4 / 5;" 6308 6309 > 6310 6311 6312<img src="//luxupur.de/cdn/shop/files/freepik_use-image-1-slatted-bed-base-lattenrost-as-the-base.-keep-the-slatted-base-exactly-as-it-is-do-not-change-anything-no-shape-changes-no-redesign-no-color-changes-no-material-ch.png?v=1775081055&width=500" alt="" srcset="//luxupur.de/cdn/shop/files/freepik_use-image-1-slatted-bed-base-lattenrost-as-the-base.-keep-the-slatted-base-exactly-as-it-is-do-not-change-anything-no-shape-changes-no-redesign-no-color-changes-no-material-ch.png?v=1775081055&width=240 240w, //luxupur.de/cdn/shop/files/freepik_use-image-1-slatted-bed-base-lattenrost-as-the-base.-keep-the-slatted-base-exactly-as-it-is-do-not-change-anything-no-shape-changes-no-redesign-no-color-changes-no-material-ch.png?v=1775081055&width=352 352w" width="500" height="500" loading="lazy" class="resource-card__image" sizes="auto" transitionToProduct="false" style="object-position: 50.0% 50.0%;"> 6313 6314 <img src="//luxupur.de/cdn/shop/files/freepik__nur-hochskalieren-in-high-quality-2k-ecommerce-nic__82626.jpg?v=1775081055&width=500" alt="Luxupur® OrthoBase Classic" srcset="//luxupur.de/cdn/shop/files/freepik__nur-hochskalieren-in-high-quality-2k-ecommerce-nic__82626.jpg?v=1775081055&width=240 240w, //luxupur.de/cdn/shop/files/freepik__nur-hochskalieren-in-high-quality-2k-ecommerce-nic__82626.jpg?v=1775081055&width=352 352w" width="500" height="500" loading="lazy" class="resource-card__image resource-card__image--secondary" sizes="auto" transitionToProduct="false" data-media-id="66158513094920" style="object-position: 50.0% 50.0%;"> 6315</div> 6316 6317 <div class="resource-card__content"> 6318 <p class="resource-card__title paragraph">Luxupur® OrthoBase Classic</p> 6319 6320 6321 <div ref="priceContainer"> 6322 6323 6324 6325
6326 <span class="price">395,00 â¬</span> 6327 6328 6329 6330<div class="lux-price-meta">inkl. MwSt.</div> 6331 6332</div> 6333 6334 6335 6336 6337 </div> 6338</div> 6339 6340 </li> 6341 6342 <li 6343 class="predictive-search-results__card predictive-search-results__card--product" 6344 ref="resultsItems[]" 6345 > 6346 6347<div 6348 class="resource-card" 6349 href="/products/orthobase-comfort-elektrischer-lattenrost" 6350 data-resource-type="product" 6351> 6352 <a 6353 class="resource-card__link" 6354 href="/products/orthobase-comfort-elektrischer-lattenrost" 6355 > 6356 <span class="visually-hidden"> 6357 Luxupur® OrthoBase Comfort 6358 </span> 6359 </a> 6360 <div 6361 class="resource-card__media" 6362 style="--resource-card-aspect-ratio: 4 / 5;" 6363 6364 > 6365 6366 6367<img src="//luxupur.de/cdn/shop/files/luxupur-orthobase-comfort-lattenrost-elektrisch-premium.webp?v=1776890666&width=500" alt="Luxupur elektrischer Lattenrost â komfortabel verstellbare Premium Unterfederung für ergonomisches Liegen und entspanntes Schlafen" srcset="//luxupur.de/cdn/shop/files/luxupur-orthobase-comfort-lattenrost-elektrisch-premium.webp?v=1776890666&width=240 240w, //luxupur.de/cdn/shop/files/luxupur-orthobase-comfort-lattenrost-elektrisch-premium.webp?v=1776890666&width=352 352w" width="500" height="500" loading="lazy" class="resource-card__image" sizes="auto" transitionToProduct="false" style="object-position: 50.0% 50.0%;"> 6368 6369 <img src="//luxupur.de/cdn/shop/files/luxupur-orthobase-comfort-verstellung-elektrisch.webp?v=1776890870&width=500" alt="Luxupur® OrthoBase Comfort" srcset="//luxupur.de/cdn/shop/files/luxupur-orthobase-comfort-verstellung-elektrisch.webp?v=1776890870&width=240 240w, //luxupur.de/cdn/shop/files/luxupur-orthobase-comfort-verstellung-elektrisch.webp?v=1776890870&width=352 352w" width="500" height="500" loading="lazy" class="resource-card__image resource-card__image--secondary" sizes="auto" transitionToProduct="false" data-media-id="68113913479432" style="object-position: 50.0% 50.0%;"> 6370</div> 6371 6372 <div class="resource-card__content"> 6373 <p class="resource-card__title paragraph">Luxupur® OrthoBase Comfort</p> 6374 6375 6376 <div ref="priceContainer"> 6377 6378 6379 <span role="group"> 6380 <span class="visually-hidden">Normaler Preis </span> 6381 <span class="compare-at-price">1.095,00 â¬</span> 6382 </span> 6383 6384 6385 6386 <span role="group"> 6387 <span class="visually-hidden">Angebotspreis </span> 6388 <span class="price">895,00 â¬</span> 6389 </span> 6390 6391 6392 6393<div class="lux-price-meta">inkl. MwSt.</div> 6394<style> 6395 6396 6397 6398.price-savings{ 6399 color:#C9A96E; 6400 font-size:13.5px; 6401 font-weight:600; 6402 margin-left:0; 6403 display:block; 6404 width:100%; 6405 margin-top:4px; 6406 line-height:1.2; 6407} 6408 6409 6410.sticky-add-to-cart .price-savings, 6411.sticky-add-to-cart__bar .price-savings{ 6412 font-size:11px !important; 6413 margin-left:6px !important; 6414 line-height:1 !important; 6415 white-space:nowrap; 6416} 6417 6418@media screen and (max-width: 749px){ 6419 .price-savings{ 6420 font-size:12px; 6421 margin-left:6px; 6422 } 6423 6424 .sticky-add-to-cart .price-savings, 6425 .sticky-add-to-cart__bar .price-savings{ 6426 font-size:10px !important; 6427 margin-left:4px !important; 6428 } 6429} 6430 6431 6432/* ===== Sticky Add-to-Cart: Desktop / allgemein ===== */ 6433.sticky-add-to-cart__bar{ 6434 align-items:center; 6435 padding-top:10px; 6436 padding-bottom:10px; 6437} 6438 6439.sticky-add-to-cart__price{ 6440 display:flex; 6441 flex-direction:column; 6442 align-items:flex-start; 6443 justify-content:center; 6444 line-height:1.1; 6445} 6446 6447.sticky-add-to-cart__price .compare-at-price{ 6448 margin-right:6px; 6449} 6450 6451.sticky-add-to-cart__price .price-savings{ 6452 display:block; 6453 margin-left:0 !important; 6454 margin-top:4px; 6455 font-size:14px !important; 6456 font-weight:600; 6457 color:#C9A96E !important; 6458 line-height:1.1; 6459 white-space:nowrap; 6460} 6461 6462/* ===== Sticky Add-to-Cart: Mobile wie Tempur-artig ===== */ 6463@media screen and (max-width: 749px){ 6464 6465 .sticky-add-to-cart__bar{ 6466 display:grid !important; 6467 grid-template-columns:56px 1fr !important; 6468 grid-template-areas: 6469 "image info" 6470 "image price" 6471 "button button" !important; 6472 align-items:start !important; 6473 column-gap:12px !important; 6474 row-gap:6px !important; 6475 padding:12px 14px 14px !important; 6476 min-height:auto !important; 6477 } 6478 6479 .sticky-add-to-cart__image{ 6480 grid-area:image !important; 6481 width:56px !important; 6482 height:56px !important; 6483 min-width:56px !important; 6484 aspect-ratio:1/1 !important; 6485 } 6486 6487 .sticky-add-to-cart__info{ 6488 grid-area:info !important; 6489 min-width:0 !important; 6490 } 6491 6492 .sticky-add-to-cart__title{ 6493 display:block !important; 6494 font-size:13px !important; 6495 line-height:1.15 !important; 6496 white-space:nowrap !important; 6497 overflow:hidden !important; 6498 text-overflow:ellipsis !important; 6499 margin:0 !important; 6500 } 6501 6502 .sticky-add-to-cart__variant{ 6503 display:block !important; 6504 font-size:12px !important; 6505 line-height:1.1 !important; 6506 margin-top:2px !important; 6507 white-space:nowrap !important; 6508 overflow:hidden !important; 6509 text-overflow:ellipsis !important; 6510 } 6511 6512 .sticky-add-to-cart__price{ 6513 grid-area:price !important; 6514 display:flex !important; 6515 flex-direction:column !important;
6516 align-items:flex-start !important; 6517 gap:2px !important; 6518 min-width:0 !important; 6519 line-height:1.1 !important; 6520 } 6521 6522 .sticky-add-to-cart__price .compare-at-price{ 6523 display:block !important; 6524 font-size:16px !important; 6525 opacity:.65 !important; 6526 margin:0 !important; 6527 } 6528 6529 .sticky-add-to-cart__price .price{ 6530 display:block !important; 6531 font-size:18px !important; 6532 font-weight:700 !important; 6533 line-height:1.05 !important; 6534 } 6535 6536 .sticky-add-to-cart__price .price-savings{ 6537 display:block !important; 6538 margin:0 !important; 6539 font-size:14px !important; 6540 font-weight:600 !important; 6541 color:#C9A96E !important; 6542 line-height:1.05 !important; 6543 white-space:nowrap !important; 6544 } 6545 6546 .sticky-add-to-cart__button{ 6547 grid-area:button !important; 6548 width:100% !important; 6549 min-width:100% !important; 6550 height:48px !important; 6551 min-height:48px !important; 6552 border-radius:999px !important; 6553 padding:0 16px !important; 6554 justify-content:center !important; 6555 } 6556 6557 .sticky-add-to-cart__bar .add-to-cart-text__content{ 6558 display:inline-flex !important; 6559 align-items:center !important; 6560 justify-content:center !important; 6561 } 6562 6563 .sticky-add-to-cart__button .svg-wrapper{ 6564 width:18px !important; 6565 height:18px !important; 6566 } 6567} 6568 6569@media screen and (max-width: 749px){ 6570 .price-savings{ 6571 font-size:13.5px !important; 6572 font-weight:600 !important; 6573 color:#C9A96E !important; 6574 margin-top:3px !important; 6575 margin-left:0 !important; 6576 line-height:1.15 !important; 6577 display:block !important; 6578 } 6579} 6580 6581/* ===== Sticky Drawer Preis Desktop gröÃer ===== */ 6582@media screen and (min-width: 750px){ 6583 6584 .sticky-add-to-cart__price .price{ 6585 font-size:18px !important; 6586 font-weight:800 !important; 6587 line-height:1.1; 6588 } 6589 6590 .sticky-add-to-cart__price .compare-at-price{ 6591 font-size:17px !important; 6592 opacity:0.6; 6593 margin-left:8px; 6594 } 6595 6596 .sticky-add-to-cart__price .price-savings{ 6597 font-size:14px !important; 6598 font-weight:600; 6599 } 6600 6601} 6602.lux-price-meta { 6603 color: #aaaaaa !important; 6604} 6605</style> 6606 6607 6608</div> 6609 6610 6611 <span class="price-savings">Sie sparen 200,00 â¬</span> 6612 6613 6614 6615 </div> 6616</div> 6617 6618 </li> 6619 6620 <li 6621 class="predictive-search-results__card predictive-search-results__card--product" 6622 ref="resultsItems[]" 6623 > 6624 6625<div 6626 class="resource-card" 6627 href="/products/orthoflex-premium-tellerlattenrost-elektrisch" 6628 data-resource-type="product" 6629> 6630 <a 6631 class="resource-card__link" 6632 href="/products/orthoflex-premium-tellerlattenrost-elektrisch" 6633 > 6634 <span class="visually-hidden"> 6635 Luxupur® OrthoFlex Premium 6636 </span> 6637 </a> 6638 <div 6639 class="resource-card__media" 6640 style="--resource-card-aspect-ratio: 4 / 5;" 6641 6642 > 6643 6644 6645<img src="//luxupur.de/cdn/shop/files/freepik_use-the-provided-image-of-the-slatted-bed-base-lattenrost-as-the-exact-reference.-keep-the-product-100-unchanged-same-structure-proportions-materials-colors-details-and-perspe.webp?v=1775077243&width=500" alt="" srcset="//luxupur.de/cdn/shop/files/freepik_use-the-provided-image-of-the-slatted-bed-base-lattenrost-as-the-exact-reference.-keep-the-product-100-unchanged-same-structure-proportions-materials-colors-details-and-perspe.webp?v=1775077243&width=240 240w, //luxupur.de/cdn/shop/files/freepik_use-the-provided-image-of-the-slatted-bed-base-lattenrost-as-the-exact-reference.-keep-the-product-100-unchanged-same-structure-proportions-materials-colors-details-and-perspe.webp?v=1775077243&width=352 352w" width="500" height="500" loading="lazy" class="resource-card__image" sizes="auto" transitionToProduct="false" style="object-position: 50.0% 50.0%;"> 6646 6647 <img src="//luxupur.de/cdn/shop/files/luxupur-orthoflex-premium-tellerlattenrost-elektrisch-verstellbar.png?v=1775077243&width=500" alt="Luxupur® OrthoFlex Premium elektrisch verstellbarer Tellerlattenrost mit punktelastischem Teller-System in Detailansicht" srcset="//luxupur.de/cdn/shop/files/luxupur-orthoflex-premium-tellerlattenrost-elektrisch-verstellbar.png?v=1775077243&width=240 240w, //luxupur.de/cdn/shop/files/luxupur-orthoflex-premium-tellerlattenrost-elektrisch-verstellbar.png?v=1775077243&width=352 352w" width="500" height="500" loading="lazy" class="resource-card__image resource-card__image--secondary" sizes="auto" transitionToProduct="false" data-media-id="66352286531848" style="object-position: 50.0% 50.0%;"> 6648</div> 6649 6650 <div class="resource-card__content"> 6651 <p class="resource-card__title paragraph">Luxupur® OrthoFlex Premium</p> 6652 6653 6654 <div ref="priceContainer"> 6655 6656 6657 6658
6659 <span class="price">1.395,00 â¬</span> 6660 6661 6662 6663<div class="lux-price-meta">inkl. MwSt.</div> 6664 6665</div> 6666 6667 6668 6669 6670 </div> 6671</div> 6672 6673 </li> 6674 6675 </ul> 6676 6677</div> 6678 6679 6680 6681 6682 6683 </div> 6684 6685</div> 6686 6687 </div> 6688 6689 <div class="predictive-search-form__footer"> 6690 <button 6691 class="button button-primary predictive-search__search-button" 6692 ref="viewAllButton" 6693 > 6694 Alle anzeigen 6695 </button> 6696 </div> 6697 </div> 6698 </form> 6699 </predictive-search-component> 6700 </dialog> 6701</dialog-component> 6702 6703 6704 6705 6706 6707 <quick-add-dialog id="quick-add-dialog"> 6708 <dialog 6709 class="quick-add-modal dialog-modal color-scheme-6" 6710 ref="dialog" 6711 scroll-lock 6712 > 6713 <button 6714 ref="closeButton" 6715 on:click="/closeDialog" 6716 class="button button-unstyled close-button quick-add-modal__close" 6717 aria-label="Dialogfeld schlieÃen" 6718 ><svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"> 6719 <path d="M12 2L2 12" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 6720 <path d="M12 12L2 2" stroke="currentColor" stroke-width="var(--icon-stroke-width)" stroke-linecap="round" stroke-linejoin="round"/> 6721</svg> 6722</button> 6723 <div 6724 id="quick-add-modal-content" 6725 class="quick-add-modal__content" 6726 ></div> 6727 </dialog> 6728</quick-add-dialog> 6729 6730 6731 6732 6733 6734 6735
6735<script> 6736(() => { 6737 function alignKlarnaLeft() { 6738 document.querySelectorAll('klarna-placement').forEach(el => { 6739 const sr = el.shadowRoot; 6740 if (!sr) return; // Falls ShadowRoot geschlossen ist 6741 6742 const container = sr.querySelector('[part="osm-container"]'); 6743 const msg = sr.querySelector('[part="osm-message"]'); 6744 6745 /* ===== Container links + Rahmen entfernen ===== */ 6746 if (container) { 6747 container.style.width = '100%'; 6748 container.style.display = 'flex'; 6749 container.style.justifyContent = 'flex-start'; 6750 container.style.textAlign = 'left'; 6751 container.style.marginLeft = '-10px'; // deine Feinjustierung bleibt 6752 container.style.marginRight = 'auto'; 6753 6754 // ð¥ Rahmen entfernen 6755 container.style.border = 'none'; 6756 container.style.boxShadow = 'none'; 6757 container.style.background = 'transparent'; 6758 } 6759 6760 /* ===== Text-Styling ===== */ 6761 if (msg) { 6762 msg.style.textAlign = 'left'; 6763 msg.style.marginLeft = '0'; 6764 6765 // Grundtext etwas kräftiger (0.75) 6766 msg.style.color = 'rgba(0,0,0,0.75)'; 6767 6768 // Alle inneren Elemente ebenfalls angleichen 6769 msg.querySelectorAll('*').forEach(node => { 6770 node.style.color = 'rgba(0,0,0,0.75)'; 6771 }); 6772
6773 // Speziell das Wort "Klarna" etwas heller (0.65) 6774 msg.querySelectorAll('*').forEach(node => { 6775 if ((node.textContent || '').trim() === 'Klarna') { 6776 node.style.color = 'rgba(0,0,0,0.65)'; 6777 } 6778 }); 6779 } 6780 }); 6781 } 6782 6783 function boot() { alignKlarnaLeft(); } 6784 6785 window.addEventListener('load', boot); 6786 document.addEventListener('DOMContentLoaded', boot); 6787 6788 // Klarna lädt dynamisch â beobachten 6789 const obs = new MutationObserver(() => { 6790 clearTimeout(window.__lxKlarnaFixT); 6791 window.__lxKlarnaFixT = setTimeout(alignKlarnaLeft, 80); 6792 }); 6793 6794 obs.observe(document.documentElement, { 6795 subtree: true, 6796 childList: true 6797 }); 6798})(); 6799</script>
6799 6800 6801<style> 6802 .lx-modal-overlay{ 6803 position:fixed; 6804 inset:0; 6805 background:rgba(0,0,0,.72); 6806 backdrop-filter:blur(10px); 6807 -webkit-backdrop-filter:blur(10px); 6808 display:none; 6809 z-index:999999; 6810 padding:min(5vh,34px) min(4vw,18px); 6811 } 6812 .lx-modal-overlay.is-open{ 6813 display:flex; 6814 } 6815 6816 .lx-modal{ 6817 margin:auto; 6818 width:min(1050px,100%); 6819 max-height:min(86vh,900px); 6820 overflow:auto; 6821 border-radius:0 !important; 6822 border:1px solid rgba(201,169,110,.30); 6823 background:linear-gradient(180deg,#050505 0%, #0b0b0b 100%); 6824 box-shadow:0 30px 80px rgba(0,0,0,.55); 6825 color:rgba(255,255,255,.92); 6826 } 6827 6828 .lx-modal-header{ 6829 position:sticky; 6830 top:0; 6831 background:rgba(8,8,8,.92); 6832 backdrop-filter:blur(10px); 6833 -webkit-backdrop-filter:blur(10px); 6834 border-bottom:1px solid rgba(201,169,110,.22); 6835 padding:18px 20px; 6836 display:flex; 6837 align-items:flex-start; 6838 justify-content:space-between; 6839 gap:14px; 6840 z-index:2; 6841 } 6842 6843 .lx-modal-title{ 6844 margin:0; 6845 font-size:clamp(18px,2vw,26px); 6846 line-height:1.2; 6847 font-weight:800; 6848 letter-spacing:-.2px; 6849 color:#ffffff; 6850 } 6851 6852 .lx-modal-sub{ 6853 margin:6px 0 0; 6854 color:rgba(255,255,255,.68); 6855 font-size:14px; 6856 line-height:1.5; 6857 } 6858 6859 .lx-modal-close{ 6860 border:1px solid rgba(201,169,110,.38); 6861 background:rgba(201,169,110,.10); 6862 color:#C9A96E; 6863 border-radius:0 !important; 6864 padding:10px 12px; 6865 cursor:pointer; 6866 font-weight:700; 6867 line-height:1; 6868 min-width:42px; 6869 transition:all .2s ease; 6870 } 6871 .lx-modal-close:hover{ 6872 background:rgba(201,169,110,.16); 6873 border-color:rgba(201,169,110,.55); 6874 color:#f2dfb7; 6875 } 6876 6877 .lx-modal-body{ 6878 padding:22px 20px 24px; 6879 } 6880 6881 .lx-modal-body :where(h1,h2,h3,h4){ 6882 color:#ffffff; 6883 line-height:1.28; 6884 font-weight:750; 6885 letter-spacing:-.15px; 6886 } 6887 6888 .lx-modal-body :where(h1){ 6889 font-size:30px; 6890 margin:0 0 14px; 6891 } 6892 6893 .lx-modal-body :where(h2){ 6894 font-size:24px; 6895 margin:26px 0 12px; 6896 color:#C9A96E; 6897 } 6898 6899 .lx-modal-body :where(h3){ 6900 font-size:19px; 6901 margin:20px 0 10px; 6902 } 6903 6904 .lx-modal-body :where(p,li){ 6905 color:rgba(255,255,255,.78); 6906 line-height:1.65; 6907 font-size:15px; 6908 } 6909 6910 .lx-modal-body :where(ul,ol){ 6911 margin:0 0 18px 20px; 6912 padding:0; 6913 } 6914 6915 .lx-modal-body :where(li){ 6916 margin:0 0 8px; 6917 } 6918 6919 .lx-modal-body :where(strong,b){ 6920 color:#ffffff; 6921 font-weight:700; 6922 } 6923 6924 .lx-modal-body :where(a){ 6925 color:#C9A96E; 6926 text-decoration:none; 6927 border-bottom:1px solid rgba(201,169,110,.45); 6928 } 6929 .lx-modal-body :where(a:hover){ 6930 color:#f2dfb7; 6931 border-bottom-color:rgba(242,223,183,.65); 6932 } 6933 6934 .lx-modal-body :where(hr){ 6935 border:0; 6936 border-top:1px solid rgba(201,169,110,.18); 6937 margin:24px 0; 6938 } 6939 6940 .lx-modal-body :where(table){ 6941 width:100%; 6942 border-collapse:collapse; 6943 margin:16px 0 20px; 6944 } 6945 6946 .lx-modal-body :where(th,td){ 6947 border:1px solid rgba(201,169,110,.16); 6948 padding:10px 12px; 6949 text-align:left; 6950 vertical-align:top; 6951 color:rgba(255,255,255,.80); 6952 } 6953 6954 .lx-modal-body :where(th){ 6955 color:#C9A96E; 6956 font-weight:700; 6957 background:rgba(201,169,110,.06); 6958 } 6959 6960 .lx-modal-body :where(code){ 6961 background:rgba(255,255,255,.06); 6962 border:1px solid rgba(255,255,255,.10); 6963 padding:2px 6px; 6964 border-radius:0 !important; 6965 color:#f3f3f3; 6966 font-size:13px; 6967 } 6968 6969 @media screen and (max-width: 749px){ 6970 .lx-modal-overlay{ 6971 padding:14px; 6972 } 6973 6974 .lx-modal{ 6975 width:100%; 6976 max-height:92vh; 6977 } 6978 6979 .lx-modal-header{ 6980 padding:16px 14px; 6981 } 6982 6983 .lx-modal-title{ 6984 font-size:20px; 6985 } 6986 6987 .lx-modal-sub{ 6988 font-size:13px; 6989 } 6990 6991 .lx-modal-body{ 6992 padding:18px 14px 22px; 6993 } 6994 6995 .lx-modal-body :where(h1){ 6996 font-size:24px; 6997 } 6998 6999 .lx-modal-body :where(h2){ 7000 font-size:20px; 7001 } 7002 7003 .lx-modal-body :where(h3){ 7004 font-size:17px; 7005 } 7006 7007 .lx-modal-body :where(p,li){ 7008 font-size:14px; 7009 line-height:1.6; 7010 } 7011 } 7012</style> 7013 7014<div class="lx-modal-overlay" id="lxServiceModal" aria-hidden="true"> 7015 <div class="lx-modal" role="dialog" aria-modal="true" aria-labelledby="lxServiceModalTitle"> 7016 <div class="lx-modal-header"> 7017 <div> 7018 <h2 class="lx-modal-title" id="lxServiceModalTitle">Service, Garantie & Probeschlafen bei Luxupur®</h2> 7019 <p class="lx-modal-sub">
7019Ãbersicht zu Rückgabe, Garantie und Ablauf â klar, hochwertig und transparent.</p> 7020 </div> 7021 <button class="lx-modal-close" type="button" data-lx-close aria-label="SchlieÃen">â</button> 7022 </div> 7023 7024 <div class="lx-modal-body"><style> 7025 #lx-modal-content{ 7026 --lx-text: #23282d; 7027 --lx-muted: #5f676f; 7028 --lx-line: rgba(201,169,110,.32); 7029 --lx-line-2: rgba(201,169,110,.18); 7030 --lx-accent: #C9A96E; 7031 --lx-accent-2: #e7cf9c; 7032 --lx-bg: #ffffff; 7033 --lx-bg-soft: #fcfbf8; 7034 --lx-bg-soft-2: #f7f4ee; 7035 --lx-header-mask-h: 52px; 7036 --lx-icon-size-desktop: 24px; 7037 --lx-icon-size-mobile: 22px; 7038 font-family: inherit; 7039 color: var(--lx-text); 7040 margin: 0 !important; 7041 padding: 0 !important; 7042 background: #ffffff !important; 7043 } 7044 7045 #lx-modal-content *{ box-sizing:border-box; } 7046 #lx-modal-content p{ margin:0; } 7047 #lx-modal-content a{ color: inherit; } 7048 7049 #lx-modal-content .lx-wrap{ 7050 max-width: none !important; 7051 width: 100% !important; 7052 margin: 0 !important; 7053 padding: 0 !important; 7054 background:#ffffff !important; 7055 } 7056 7057 #lx-modal-content .lx-acc{ 7058 display:grid; 7059 gap:0 !important; 7060 margin:0; 7061 padding:0; 7062 background:#ffffff !important; 7063 } 7064 7065 #lx-modal-content details.lx-item{ 7066 background: #ffffff !important; 7067 border: 1px solid var(--lx-line); 7068 border-left: 0 !important; 7069 border-right: 0 !important; 7070 border-radius: 0 !important; 7071 overflow: hidden; 7072 width: 100% !important; 7073 box-shadow: none !important; 7074 } 7075 7076 #lx-modal-content summary{ 7077 list-style:none; 7078 cursor:pointer; 7079 padding: 16px 16px; 7080 display:grid; 7081 grid-template-columns: 34px 1fr auto; 7082 align-items:center; 7083 gap:12px; 7084 user-select:none; 7085 position:relative; 7086 z-index:1 !important; 7087 background: #ffffff !important; 7088 color:#23282d !important; 7089 transition: color .18s ease, background .18s ease; 7090 border: 0 !important; 7091 } 7092 7093 #lx-modal-content summary:hover{ 7094 color:#23282d !important; 7095 background: rgba(201,169,110,.06) !important; 7096 } 7097 7098 #lx-modal-content summary:hover .lx-chevron{ 7099 border-right-color:#C9A96E !important; 7100 border-bottom-color:#C9A96E !important; 7101 } 7102 7103 #lx-modal-content summary::-webkit-details-marker{ display:none; } 7104 7105 #lx-modal-content .lx-title{ 7106 margin:0; 7107 font-size:20px; 7108 font-weight:900; 7109 letter-spacing:-0.1px; 7110 text-transform:uppercase; 7111 flex:1; 7112 color:#23282d !important; 7113 } 7114 7115 #lx-modal-content .lx-chevron{ 7116 width:12px; 7117 height:12px; 7118 border-right: 2px solid rgba(201,169,110,.85); 7119 border-bottom: 2px solid rgba(201,169,110,.85); 7120 transform: rotate(45deg); 7121 transition: transform .18s ease; 7122 flex:0 0 auto; 7123 margin-left:6px; 7124 display:inline-block; 7125 position:relative; 7126 z-index:1 !important; 7127 } 7128 7129 #lx-modal-content details[open] > summary .lx-chevron{ 7130 display:none !important; 7131 } 7132 7133 #lx-modal-content .lx-body{ 7134 border-top: 1px solid var(--lx-line-2); 7135 padding: 16px 14px; 7136 background: #ffffff !important; 7137 color:#23282d !important; 7138 } 7139 7140 #lx-modal-content .lx-intro{ 7141 color: var(--lx-muted) !important; 7142 font-size: 14px; 7143 line-height: 1.75; 7144 margin-bottom: 12px; 7145 max-width: 980px; 7146 } 7147 7148 #lx-modal-content .lx-points{ 7149 display:grid; 7150 gap:12px; 7151 margin:0; 7152 padding:0; 7153 list-style:none; 7154 } 7155 7156 #lx-modal-content .lx-point{ 7157 display:flex; 7158 gap:10px; 7159 align-items:flex-start; 7160 } 7161 7162 #lx-modal-content .lx-dot{ 7163 width:10px; 7164 height:10px; 7165 border-radius:999px; 7166 background: var(--lx-accent); 7167 flex:0 0 auto; 7168 margin-top:6px; 7169 box-shadow: 0 0 0 3px rgba(201,169,110,.12); 7170 } 7171 7172 #lx-modal-content .lx-point h4{ 7173 margin:0; 7174 font-size:17.5px !important; 7175 font-weight:900; 7176 line-height:1.35; 7177 text-transform:none !important; 7178 letter-spacing:0 !important; 7179 color:#23282d !important; 7180 } 7181 7182 #lx-modal-content .lx-point p{ 7183 margin-top:4px; 7184 color: var(--lx-muted) !important; 7185 font-size:14px; 7186 line-height:1.75; 7187 } 7188 7189 #lx-modal-content .lx-cta{ 7190 margin-top:14px; 7191 display:flex; 7192 gap:10px; 7193 flex-wrap:wrap; 7194 } 7195 7196 #lx-modal-content .lx-btn-primary{ 7197 padding: 11px 16px; 7198 border: 1px solid rgba(201,169,110,.55); 7199 background: rgba(201,169,110,.10); 7200 font-weight: 800; 7201 color: #8b6a31 !important; 7202 text-decoration:none; 7203 display:inline-flex; 7204 align-items:center; 7205 justify-content:center; 7206 width:fit-content; 7207 border-radius:0 !important; 7208 } 7209 7210 #lx-modal-content .lx-btn-primary:hover{ 7211 background: rgba(201,169,110,.16); 7212 } 7213 7214 #lx-modal-content .lx-btn-secondary{ 7215 padding: 11px 16px; 7216 border: 1px solid rgba(35,40,45,.14); 7217 background: #ffffff; 7218 font-weight: 800; 7219 color: #23282d !important; 7220 text-decoration:none; 7221 display:inline-flex; 7222 align-items:center; 7223 justify-content:center; 7224 width:fit-content; 7225 border-radius:0 !important; 7226 } 7227 7228 #lx-modal-content .lx-btn-secondary:hover{ 7229 background: #f8f8f8; 7230 } 7231 7232 #lx-modal-content .lx-table-wrap{ 7233 margin-top:12px; 7234 border:1px solid var(--lx-line); 7235 background: #ffffff !important; 7236 } 7237 7238 #lx-modal-content table{ 7239 width:100%; 7240 border-collapse:collapse; 7241 table-layout:fixed; 7242 background:#ffffff !important; 7243 } 7244 7245 #lx-modal-content thead th{ 7246 text-align:left; 7247 padding:12px; 7248 font-size:13px; 7249 letter-spacing:.2px; 7250 color: #8b6a31 !important; 7251 border-bottom:1px solid var(--lx-line); 7252 background: rgba(201,169,110,.08); 7253 } 7254 7255 #lx-modal-content tbody td{ 7256 padding:12px; 7257 vertical-align:top; 7258 border-bottom:1px solid var(--lx-line-2); 7259 font-size:14px; 7260 line-height:1.7; 7261 color: #4f575f !important; 7262 word-break:break-word; 7263 background: #ffffff !important; 7264 } 7265 7266 #lx-modal-content tbody tr:last-child td{ border-bottom:none; } 7267 7268 #lx-modal-content td.lx-wcol{ 7269 background: rgba(201,169,110,.08) !important; 7270 color: #23282d !important; 7271 font-weight: 900; 7272 } 7273 7274 #lx-modal-content .lx-mini-table{ 7275 width:100%; 7276 border-collapse:collapse; 7277 table-layout:fixed; 7278 border:1px solid var(--lx-line); 7279 margin-top:10px; 7280 background: #ffffff !important; 7281 } 7282 7283 #lx-modal-content .lx-mini-table th, 7284 #lx-modal-content .lx-mini-table td{ 7285 padding:10px; 7286 border-bottom:1px solid var(--lx-line-2); 7287 font-size:14px; 7288 text-align:left; 7289 vertical-align:top; 7290 color: #4f575f !important; 7291 background:#ffffff !important; 7292 } 7293 7294 #lx-modal-content .lx-mini-table th{ 7295 background: rgba(201,169,110,.08) !important; 7296 font-size:13px; 7297 color: #8b6a31 !important; 7298 letter-spacing:.2px; 7299 font-weight:900; 7300 } 7301 7302 #lx-modal-content .lx-mini-table tr:last-child td{ border-bottom:none; } 7303 7304 #lx-modal-content .lx-note{ 7305 margin-top:12px; 7306 color: var(--lx-muted) !important; 7307 font-size:13.5px; 7308 line-height:1.75; 7309 } 7310 7311 #lx-modal-content .lx-note strong, 7312 #lx-modal-content .lx-point strong, 7313 #lx-modal-content td strong, 7314 #lx-modal-content p strong{ 7315 color:#23282d !important; 7316 } 7317 7318 #lx-modal-content .lx-close-row{ 7319 display:flex; 7320 justify-content:flex-end; 7321 margin-top:18px; 7322 padding-top:10px; 7323 border-top:1px solid var(--lx-line-2); 7324 position:relative; 7325 z-index:5; 7326 pointer-events:auto; 7327 background:#ffffff !important; 7328 } 7329 7330 #lx-modal-content .lx-close-btn{ 7331 display:inline-flex; 7332 align-items:center; 7333 gap:8px; 7334 padding:10px 12px; 7335 border:1px solid rgba(201,169,110,.32); 7336 background: rgba(201,169,110,.08); 7337 color:#8b6a31 !important; 7338 font-weight:800; 7339 font-size:14px; 7340 cursor:pointer; 7341 -webkit-tap-highlight-color:transparent; 7342 position:relative; 7343 z-index:6; 7344 pointer-events:auto; 7345 border-radius:0 !important; 7346 } 7347 7348 #lx-modal-content .lx-close-btn .lx-close-chevron{ 7349 width:12px; 7350 height:12px; 7351 border-right:2px solid rgba(201,169,110,.85); 7352 border-bottom:2px solid rgba(201,169,110,.85); 7353 transform: rotate(225deg); 7354 } 7355 7356 #lx-modal-content .lx-acc-ico{ 7357 width:24px; 7358 height:24px; 7359 flex:0 0 auto; 7360 display:inline-flex; 7361 align-items:center; 7362 justify-content:center; 7363 margin-right:8px; 7364 } 7365 7366 #lx-modal-content .lx-acc-ico img{ 7367 width: var(--lx-icon-size-desktop) !important; 7368 height: var(--lx-icon-size-desktop) !important; 7369 object-fit:contain; 7370 max-width:24px !important; 7371 max-height:24px !important; 7372 filter: brightness(0) saturate(100%) invert(73%) sepia(26%) saturate(551%) hue-rotate(357deg) brightness(90%) contrast(87%); 7373 } 7374 7375 #lx-modal-content a{ 7376 color:#8b6a31 !important; 7377 text-decoration:none; 7378 border-bottom:1px solid rgba(201,169,110,.35); 7379 } 7380 7381 #lx-modal-content a:hover{ 7382 color:#6f5428 !important; 7383 border-bottom-color: rgba(201,169,110,.65); 7384 } 7385 7386 .product-popup-modal__content, 7387 .popup-modal__content, 7388 .modal__content, 7389 .product-popup-modal__content-info, 7390 .product-popup-modal__content .rte, 7391 .popup-modal__content-info, 7392 .modal__content-info, 7393 .product-popup-modal__content-header, 7394 .product-popup-modal__content-body{ 7395 padding:0 !important; 7396 margin:0 !important; 7397 max-width:none !important; 7398 width:100% !important; 7399 box-shadow:none !important; 7400 border:0 !important; 7401 border-radius:0 !important; 7402 overflow:auto !important; 7403 -webkit-overflow-scrolling:touch !important; 7404 background: transparent !important; 7405 } 7406 7407 .lx-modal{ 7408 display:flex; 7409 flex-direction:column; 7410 max-height:100vh; 7411 } 7412 7413 .lx-modal-header{ 7414 position:sticky; 7415 top:0; 7416 z-index:9999; 7417 background:#ffffff !important; 7418 padding:18px 22px; 7419 } 7420 7421 .lx-modal-body{ 7422 overflow:auto !important; 7423 -webkit-overflow-scrolling:touch; 7424 position:relative; 7425 z-index:1; 7426 padding-top:8px !important; 7427 background:#ffffff !important; 7428 } 7429 7430 @media (max-width: 760px){ 7431 #lx-modal-content .lx-table-wrap table, 7432 #lx-modal-content .lx-table-wrap thead, 7433 #lx-modal-content .lx-table-wrap tbody, 7434 #lx-modal-content .lx-table-wrap th, 7435 #lx-modal-content .lx-table-wrap td, 7436 #lx-modal-content .lx-table-wrap tr{ 7437 display:block; 7438 width:100%; 7439 } 7440 7441 #lx-modal-content .lx-table-wrap thead{ display:none; } 7442 #lx-modal-content .lx-table-wrap tbody tr{ border-bottom:1px solid var(--lx-line); } 7443 #lx-modal-content .lx-table-wrap tbody tr:last-child{ border-bottom:none; } 7444 7445 #lx-modal-content .lx-table-wrap tbody td{ 7446 border:none; 7447 border-bottom:1px solid var(--lx-line-2); 7448 padding:10px 12px; 7449 } 7450 7451 #lx-modal-content .lx-table-wrap tbody td:last-child{ border-bottom:none; } 7452 7453 #lx-modal-content .lx-table-wrap tbody td::before{ 7454 content: attr(data-label); 7455 display:block; 7456 font-size:12.5px; 7457 letter-spacing:.2px; 7458 color: #8b6a31 !important; 7459 margin-bottom:4px; 7460 font-weight:900; 7461 } 7462 7463 #lx-modal-content .lx-mini-table, 7464 #lx-modal-content .lx-mini-table thead, 7465 #lx-modal-content .lx-mini-table tbody, 7466 #lx-modal-content .lx-mini-table th, 7467 #lx-modal-content .lx-mini-table td, 7468 #lx-modal-content .lx-mini-table tr{ 7469 display:block; 7470 width:100%; 7471 } 7472 7473 #lx-modal-content .lx-mini-table thead{ display:none; } 7474 #lx-modal-content .lx-mini-table{ border:none; } 7475 7476 #lx-modal-content .lx-mini-table tr{ 7477 border:1px solid var(--lx-line); 7478 margin-top:10px; 7479 padding:6px 0; 7480 background: #ffffff !important; 7481 } 7482 7483 #lx-modal-content .lx-mini-table td{ 7484 border:none; 7485 border-bottom:1px solid var(--lx-line-2); 7486 } 7487 7488 #lx-modal-content .lx-mini-table td:last-child{ border-bottom:none; } 7489 7490 #lx-modal-content .lx-mini-table td::before{ 7491 content: attr(data-label); 7492 display:block; 7493 font-size:12.5px; 7494 color: #8b6a31 !important; 7495 font-weight:900; 7496 margin-bottom:4px; 7497 letter-spacing:.2px; 7498 } 7499 } 7500 7501 @media (max-width: 768px){ 7502 #lx-modal-content .lx-acc-ico img{ 7503 width: var(--lx-icon-size-mobile) !important; 7504 height: var(--lx-icon-size-mobile) !important; 7505 max-width:22px !important; 7506 max-height:22px !important; 7507 } 7508 } 7509 7510 @media (max-width: 640px){ 7511 #lx-modal-content{
7512 --lx-header-mask-h: 98px; 7513 } 7514 7515 #lx-modal-content .lx-title{ 7516 font-size:18px !important; 7517 } 7518 7519 #lx-modal-content .lx-point h4{ 7520 font-size:16.5px !important; 7521 } 7522 7523 #lx-modal-content summary{ 7524 padding:14px 12px !important; 7525 } 7526 7527 #lx-modal-content .lx-body{ 7528 padding:12px !important; 7529 } 7530 7531 #lx-modal-content .lx-btn-primary, 7532 #lx-modal-content .lx-btn-secondary{ 7533 width:100%; 7534 } 7535 7536 #lx-modal-content .lx-wrap{ 7537 padding-left:0 !important; 7538 padding-right:0 !important; 7539 margin-left:-16px !important; 7540 margin-right:-16px !important; 7541 width:calc(100% + 32px) !important; 7542 max-width:none !important; 7543 } 7544 } 7545 7546 #lx-modal-content details.lx-item > summary, 7547 #lx-modal-content details.lx-item > summary:link, 7548 #lx-modal-content details.lx-item > summary:visited, 7549 #lx-modal-content details.lx-item > summary:hover, 7550 #lx-modal-content details.lx-item > summary:active, 7551 #lx-modal-content details.lx-item > summary:focus, 7552 #lx-modal-content details.lx-item > summary:focus-visible{ 7553 color:#23282d !important; 7554 text-decoration:none !important; 7555 } 7556 7557 #lx-modal-content details.lx-item > summary:hover, 7558 #lx-modal-content details.lx-item > summary:focus, 7559 #lx-modal-content details.lx-item > summary:focus-visible{ 7560 color:#23282d !important; 7561 background:rgba(201,169,110,.05) !important; 7562 } 7563 7564 #lx-modal-content details.lx-item > summary *, 7565 #lx-modal-content details.lx-item > summary *:hover, 7566 #lx-modal-content details.lx-item > summary *:focus, 7567 #lx-modal-content details.lx-item > summary *:active{ 7568 color:inherit !important; 7569 } 7570 7571 #lx-modal-content details.lx-item > summary .lx-chevron, 7572 #lx-modal-content details.lx-item > summary:hover .lx-chevron, 7573 #lx-modal-content details.lx-item > summary:focus .lx-chevron, 7574 #lx-modal-content details.lx-item > summary:focus-visible .lx-chevron{ 7575 border-right-color:#C9A96E !important; 7576 border-bottom-color:#C9A96E !important; 7577 } 7578 7579 7580/* ===== Modal-Kopf / groÃe Ãberschrift oben wieder sichtbar ===== */ 7581#lx-modal-content .lx-modal-header, 7582#lx-modal-content .modal-header, 7583#lx-modal-content .popup-modal__header, 7584#lx-modal-content .product-popup-modal__content-header{ 7585 background: #ffffff !important; 7586 color: #23282d !important; 7587 border-bottom: 1px solid rgba(201,169,110,.22) !important; 7588} 7589 7590/* Hauptüberschrift oben */ 7591#lx-modal-content .lx-modal-header h1, 7592#lx-modal-content .lx-modal-header h2, 7593#lx-modal-content .lx-modal-header h3, 7594#lx-modal-content .popup-modal__header h1, 7595#lx-modal-content .popup-modal__header h2, 7596#lx-modal-content .popup-modal__header h3, 7597#lx-modal-content .product-popup-modal__content-header h1, 7598#lx-modal-content .product-popup-modal__content-header h2, 7599#lx-modal-content .product-popup-modal__content-header h3{ 7600 color: #23282d !important; 7601 opacity: 1 !important; 7602 visibility: visible !important; 7603 display: block !important; 7604} 7605 7606/* Falls die Ãberschrift als normaler Textblock oder span ausgegeben wird */ 7607#lx-modal-content .lx-modal-header, 7608#lx-modal-content .lx-modal-header *, 7609#lx-modal-content .popup-modal__header, 7610#lx-modal-content .popup-modal__header *, 7611#lx-modal-content .product-popup-modal__content-header, 7612#lx-modal-content .product-popup-modal__content-header *{ 7613 color: #23282d !important; 7614 -webkit-text-fill-color: #23282d !important; 7615 opacity: 1 !important; 7616} 7617 7618/* Subline unter der Hauptüberschrift */ 7619#lx-modal-content .lx-modal-header p, 7620#lx-modal-content .lx-modal-header small, 7621#lx-modal-content .popup-modal__header p, 7622#lx-modal-content .popup-modal__header small, 7623#lx-modal-content .product-popup-modal__content-header p, 7624#lx-modal-content .product-popup-modal__content-header small{ 7625 color: #5f676f !important; 7626 opacity: 1 !important; 7627} 7628 7629/* SchlieÃen-Button oben rechts */ 7630#lx-modal-content .lx-modal-header button, 7631#lx-modal-content .popup-modal__header button, 7632#lx-modal-content .product-popup-modal__content-header button{ 7633 color: #8b6a31 !important; 7634 border-color: rgba(201,169,110,.35) !important; 7635 background: rgba(201,169,110,.06) !important; 7636} 7637/* ===== Sichtbarer Header oben ===== */ 7638#lx-modal-content{ 7639 background:#ffffff !important; 7640} 7641 7642#lx-modal-content .lx-modal-top{ 7643 display:flex !important; 7644 align-items:flex-start; 7645 justify-content:space-between; 7646 gap:16px; 7647 padding:18px 20px 14px !important; 7648 background:#ffffff !important; 7649 border-bottom:1px solid rgba(201,169,110,.22) !important; 7650} 7651 7652#lx-modal-content .lx-modal-top__text{ 7653 display:block !important; 7654 width:100% !important; 7655} 7656 7657#lx-modal-content .lx-modal-top__text h2{ 7658 margin:0 0 6px 0 !important; 7659 display:block !important; 7660 font-family:"Lato", sans-serif !important; 7661 font-size:30px !important; 7662 line-height:1.15 !important; 7663 font-weight:700 !important; 7664 letter-spacing:0 !important; 7665 text-transform:none !important; 7666 color:#23282d !important; 7667 -webkit-text-fill-color:#23282d !important; 7668 opacity:1 !important; 7669 visibility:visible !important; 7670} 7671 7672#lx-modal-content .lx-modal-top__text p{ 7673 margin:0 !important; 7674 display:block !important; 7675 font-size:14px !important; 7676 line-height:1.45 !important; 7677 color:#5f676f !important; 7678 -webkit-text-fill-color:#5f676f !important; 7679 opacity:1 !important; 7680 visibility:visible !important; 7681} 7682 7683/* Mobile */ 7684@media (max-width: 640px){ 7685 #lx-modal-content .lx-modal-top{ 7686 padding:14px 14px 12px !important; 7687 } 7688 7689 #lx-modal-content .lx-modal-top__text h2{ 7690 font-size:22px !important; 7691 line-height:1.18 !important; 7692 } 7693 7694 #lx-modal-content .lx-modal-top__text p{ 7695 font-size:13px !important; 7696 line-height:1.4 !important; 7697 } 7698} 7699 7700 7701/* ========================= 7702 FINAL OVERRIDE â Accordion Zeilen gröÃer 7703 GANZ UNTEN im Styleblock einfügen 7704========================= */ 7705
7706/* Zeilen insgesamt */ 7707#lx-modal-content .lx-acc details.lx-item > summary{ 7708 display: grid !important; 7709 grid-template-columns: 44px 1fr 18px !important; 7710 align-items: center !important; 7711 gap: 14px !important; 7712 padding: 18px 18px !important; 7713 7714 font-size: 19px !important; 7715 line-height: 1.35 !important; 7716 font-weight: 700 !important; 7717 letter-spacing: 0 !important; 7718 7719 color: #2f3438 !important; 7720 -webkit-text-fill-color: #2f3438 !important; 7721} 7722 7723/* Auch alle direkten Inhalte darin */ 7724#lx-modal-content .lx-acc details.lx-item > summary, 7725#lx-modal-content .lx-acc details.lx-item > summary *{ 7726 font-size: 19px !important; 7727 line-height: 1.35 !important; 7728 font-weight: 700 !important; 7729 color: #2f3438 !important; 7730 -webkit-text-fill-color: #2f3438 !important; 7731} 7732 7733/* Icons links gröÃer */ 7734#lx-modal-content .lx-acc details.lx-item > summary .lx-acc-ico{ 7735 width: 44px !important; 7736 height: 44px !important; 7737 min-width: 44px !important; 7738 min-height: 44px !important; 7739 margin: 0 !important; 7740 7741 display: inline-flex !important; 7742 align-items: center !important; 7743 justify-content: center !important; 7744} 7745 7746/* SVG / PNG im Icon */ 7747#lx-modal-content .lx-acc details.lx-item > summary .lx-acc-ico img{ 7748 width: 26px !important; 7749 height: 26px !important; 7750 max-width: 26px !important; 7751 max-height: 26px !important; 7752 object-fit: contain !important; 7753 display: block !important; 7754} 7755 7756/* Chevron rechts etwas deutlicher */ 7757#lx-modal-content .lx-acc details.lx-item > summary .lx-chevron{ 7758 width: 11px !important; 7759 height: 11px !important; 7760 margin-left: 0 !important; 7761 justify-self: end !important; 7762 7763 border-right: 2px solid #b8924f !important; 7764 border-bottom: 2px solid #b8924f !important; 7765} 7766 7767/* Hover */ 7768#lx-modal-content .lx-acc details.lx-item > summary:hover{ 7769 background: rgba(201,169,110,.05) !important; 7770 color: #23282d !important; 7771} 7772 7773/* ========================= 7774 Mobile 7775========================= */ 7776@media (max-width: 768px){ 7777 #lx-modal-content .lx-acc details.lx-item > summary{ 7778 grid-template-columns: 38px 1fr 16px !important; 7779 gap: 12px !important; 7780 padding: 15px 14px !important; 7781 7782 font-size: 16px !important; 7783 line-height: 1.3 !important; 7784 font-weight: 700 !important; 7785 } 7786 7787 #lx-modal-content .lx-acc details.lx-item > summary, 7788 #lx-modal-content .lx-acc details.lx-item > summary *{ 7789 font-size: 16px !important; 7790 line-height: 1.3 !important; 7791 font-weight: 700 !important; 7792 } 7793 7794 #lx-modal-content .lx-acc details.lx-item > summary .lx-acc-ico{ 7795 width: 38px !important; 7796 height: 38px !important; 7797 min-width: 38px !important; 7798 min-height: 38px !important; 7799 } 7800 7801 #lx-modal-content .lx-acc details.lx-item > summary .lx-acc-ico img{ 7802 width: 22px !important; 7803 height: 22px !important; 7804 max-width: 22px !important; 7805 max-height: 22px !important; 7806 } 7807 7808 #lx-modal-content .lx-acc details.lx-item > summary .lx-chevron{ 7809 width: 10px !important; 7810 height: 10px !important; 7811 } 7812} 7813 7814 7815 7816 7817 7818 /* ===== FINAL ICON SIZE OVERRIDE ===== */ 7819#lx-modal-content details.lx-item > summary .lx-acc-ico, 7820#lx-modal-content .lx-acc details.lx-item > summary .lx-acc-ico{ 7821 width: 46px !important; 7822 height: 46px !important; 7823 min-width: 46px !important; 7824 min-height: 46px !important; 7825 flex: 0 0 46px !important; 7826 display: inline-flex !important; 7827 align-items: center !important; 7828 justify-content: center !important; 7829} 7830 7831#lx-modal-content details.lx-item > summary .lx-acc-ico img, 7832#lx-modal-content .lx-acc details.lx-item > summary .lx-acc-ico img{ 7833 width: 36px !important; 7834 height: 36px !important; 7835 min-width: 36px !important; 7836 min-height: 36px !important; 7837 max-width: none !important; 7838 max-height: none !important; 7839 display: block !important; 7840 object-fit: contain !important; 7841} 7842 7843@media (max-width: 768px){ 7844 #lx-modal-content details.lx-item > summary .lx-acc-ico, 7845 #lx-modal-content .lx-acc details.lx-item > summary .lx-acc-ico{ 7846 width: 40px !important; 7847 height: 40px !important; 7848 min-width: 40px !important; 7849 min-height: 40px !important; 7850 flex: 0 0 40px !important; 7851 } 7852 7853 #lx-modal-content details.lx-item > summary .lx-acc-ico img, 7854 #lx-modal-content .lx-acc details.lx-item > summary .lx-acc-ico img{ 7855 width: 24px !important; 7856 height: 24px !important; 7857 min-width: 24px !important; 7858 min-height: 24px !important; 7859 max-width: none !important; 7860 max-height: none !important; 7861 } 7862} 7863 7864/* ===== MOBILE FEINTUNING MODAL ===== */ 7865@media (max-width: 768px){ 7866 7867 /* Obere Headline bewusst etwas kleiner, damit 2 Zeilen statt 3 */ 7868 #lx-modal-content .lx-modal-top__text h2{ 7869 font-size: 18px !important; 7870 line-height: 1.16 !important; 7871 letter-spacing: 0 !important; 7872 max-width: 290px !important; 7873 } 7874 7875 #lx-modal-content .lx-modal-top__text p{ 7876 font-size: 12.5px !important; 7877 line-height: 1.35 !important; 7878 max-width: 280px !important; 7879 } 7880 7881 /* Accordion-Zeilen kompakter */ 7882 #lx-modal-content details.lx-item > summary{ 7883 grid-template-columns: 40px 1fr 16px !important; 7884 gap: 10px !important; 7885 padding: 13px 12px !important; 7886 min-height: 58px !important; 7887 } 7888 7889 /* Text etwas kleiner, damit erste Zeile nicht so schnell umbrecht */ 7890 #lx-modal-content details.lx-item > summary, 7891 #lx-modal-content details.lx-item > summary span, 7892 #lx-modal-content details.lx-item > summary strong{ 7893 font-size: 13.5px !important; 7894 line-height: 1.22 !important; 7895 font-weight: 700 !important; 7896 letter-spacing: 0 !important; 7897 } 7898 7899 /* Icons mobil etwas gröÃer */ 7900 #lx-modal-content .lx-acc-ico{ 7901 width: 40px !important; 7902 height: 40px !important; 7903 min-width: 40px !important; 7904 min-height: 40px !important; 7905 flex: 0 0 40px !important; 7906 margin-right: 0 !important; 7907 } 7908 7909 #lx-modal-content .lx-acc-ico img{ 7910 width: 24px !important; 7911 height: 24px !important; 7912 max-width: 24px !important; 7913 max-height: 24px !important; 7914 min-width: 24px !important; 7915 min-height: 24px !important; 7916 object-fit: contain !important; 7917 } 7918 7919 /* Chevron etwas kleiner, damit mehr Platz für Text bleibt */ 7920 #lx-modal-content .lx-chevron{ 7921 width: 9px !important; 7922 height: 9px !important; 7923 margin-left: 0 !important; 7924 } 7925} 7926/* ===== MOBILE: Headline oben gröÃer & sauber 2 Zeilen ===== */ 7927@media (max-width: 768px){ 7928 7929 #lx-modal-content .lx-modal-top__text h2{ 7930 font-size: 21px !important; 7931 line-height: 1.2 !important; 7932 font-weight: 700 !important; 7933 letter-spacing: 0 !important; 7934 7935 /* sorgt für sauberen Umbruch */ 7936 max-width: 300px !important; 7937 } 7938 7939 #lx-modal-content .lx-modal-top__text p{ 7940 font-size: 13px !important; 7941 line-height: 1.4 !important; 7942 max-width: 300px !important; 7943 } 7944} 7945 7946/* ===== DISABLE SERVICE DRAWER COMPLETELY ===== */ 7947.lx-sv-drawer, 7948.lx-sv-drawer_panel, 7949.lx-sv-drawer_body, 7950.lx-sv-drawer_backdrop { 7951 display: none !important; 7952 visibility: hidden !important; 7953 opacity: 0 !important; 7954 pointer-events: none !important; 7955} 7956 7957 7958 7959/* ===== FINAL FONT OVERRIDE: ALLES AUF LATO ===== */ 7960#lx-modal-content, 7961#lx-modal-content * , 7962#lx-modal-content summary, 7963#lx-modal-content button, 7964#lx-modal-content input, 7965#lx-modal-content textarea,
7966#lx-modal-content select, 7967#lx-modal-content table, 7968#lx-modal-content th, 7969#lx-modal-content td, 7970#lx-modal-content p, 7971#lx-modal-content a, 7972#lx-modal-content li, 7973#lx-modal-content h1, 7974#lx-modal-content h2, 7975#lx-modal-content h3, 7976#lx-modal-content h4, 7977#lx-modal-content h5, 7978#lx-modal-content h6, 7979#lx-modal-content .lx-title, 7980#lx-modal-content .lx-intro, 7981#lx-modal-content .lx-note, 7982#lx-modal-content .lx-point h4, 7983#lx-modal-content .lx-point p, 7984#lx-modal-content .lx-modal-top__text h2, 7985#lx-modal-content .lx-modal-top__text p, 7986#lx-modal-content .lx-btn-primary, 7987#lx-modal-content .lx-btn-secondary, 7988#lx-modal-content .lx-close-btn, 7989#lx-modal-content .lx-acc details.lx-item > summary, 7990#lx-modal-content .lx-acc details.lx-item > summary *{ 7991 font-family: "Lato", sans-serif !important; 7992} 7993 7994 7995 7996</style> 7997<div id="lx-modal-content"> 7998<div class="lx-modal-top"> 7999<div class="lx-modal-top__text"> 8000<h2>Service, Garantie & Probeschlafen bei Luxupur®</h2> 8001<p>Ãbersicht zu Rückgabe, Garantie und Ablauf â klar, hochwertig und transparent.</p> 8002</div> 8003</div> 8004<div class="lx-wrap"> 8005<div aria-label="Service-Inhalte" class="lx-acc"> 8006<!-- 1) RISIKO --> 8007<details class="lx-item" open=""> 8008<summary><span style="--ico-size: 24px;" class="lx-acc-ico"> <img alt="" src="https://cdn.shopify.com/s/files/1/0922/8425/6520/files/luxupur-einkauf.svg?v=1774531517"> </span> So kaufen Sie bei Luxupur® ohne Risiko <span aria-hidden="true" class="lx-chevron"></span></summary> 8009<div class="lx-body"> 8010<p class="lx-intro">Bei Luxupur® basiert jedes Produkt auf einer individuellen Abstimmung. Sie testen zu Hause in Ruhe â und wenn das Liegegefühl noch nicht optimal ist, unterstützen wir Sie innerhalb der laufenden Testphase mit einer gezielten und strukturierten Feinabstimmung.</p> 8011<ul aria-label="Risikofreier Kauf â Punkte" class="lx-points"> 8012<li class="lx-point"> 8013<span aria-hidden="true" class="lx-dot"></span> 8014<div> 8015<h4>Individuell auf Ihr Körperprofil abgestimmt â allein oder als Paar</h4> 8016<p>Bei der Luxupur® OrthoSleep Matratze wird die Fertigung anhand Ihres Körperprofils und Ihrer Angaben im Konfigurator vorbereitet. Schlafen Sie allein, wird die Matratze individuell auf Sie abgestimmt. Schlafen Sie zu zweit, können â je nach gewählter Ausführung â zwei individuelle Kerne für beide Personen gefertigt werden, sodass jede Seite passend auf das jeweilige Körperprofil abgestimmt ist.</p> 8017</div> 8018</li> 8019<li class="lx-point"> 8020<span aria-hidden="true" class="lx-dot"></span> 8021<div> 8022<h4>Probeschlafen zu Hause (nicht nur wenige Minuten)</h4> 8023<p>Sie testen Ihr Produkt in Ihrem eigenen Schlafumfeld â nicht in einem kurzen Probeliegen im Showroom. Eine Matratze, ein Topper oder ein Kissen zeigt erst in echten Nächten, ob es wirklich passt.</p> 8024</div> 8025</li> 8026<li class="lx-point"> 8027<span aria-hidden="true" class="lx-dot"></span> 8028<div> 8029<h4>Liegegefühl zu Hause fein anpassbar (Topper & Kern: fester/softer)</h4> 8030<p>Bei der Luxupur® OrthoSleep lässt sich das Liegegefühl auch zu Hause noch fein abstimmen. Der integrierte 2-in-1-Topper verfügt über eine festere und eine softere Seite. Je nach Ausführung kann auch der Matratzenkern wendbar oder entsprechend angepasst sein. So können Sie Ihr Liegegefühl Schritt für Schritt verändern â einfach, nachvollziehbar und ohne groÃen Aufwand. In bestimmten Fällen kann die Ausführung davon abweichen, wenn von Anfang an ein besonders weiches oder besonders festes Liegegefühl gewünscht ist.</p> 8031</div> 8032</li> 8033<li class="lx-point"> 8034<span aria-hidden="true" class="lx-dot"></span> 8035<div> 8036<h4>Gezielte Unterstützung während Ihrer Testzeit</h4> 8037<p>Wenn sich zeigt, dass das Liegegefühl noch nicht optimal ist, unterstützen wir Sie während Ihrer Testzeit mit einer gezielten Feinabstimmung. Je nach Fall kann dies z. B. eine alternative Topper-Variante (weicher oder fester) oder eine Anpassung des Matratzenkerns (weicher oder fester) sein.<br><br><br><strong>Wichtig:</strong> Eine solche Anpassung erfolgt einmalig und dient der gezielten Optimierung des Liegegefühls. Die jeweils laufende Testphase bleibt hiervon unberührt; sie verlängert sich dadurch nicht und beginnt nicht erneut. 8038 8039<br><br>Sofern trotz dieser Unterstützung keine passende Lösung gefunden wird, gilt weiterhin die jeweils anwendbare Rückgabemöglichkeit innerhalb der vorgesehenen Frist gemäà unseren AGB und Testphasen-Bedingungen. Die freiwillige Testphase beträgt bei Luxupur® OrthoSleep Matratzen 100 Nächte sowie bei Toppern, Kissen und Lattenrosten 30 Nächte; für Kunden mit Wohnsitz oder Rechnungsadresse auÃerhalb der Europäischen Union sind die freiwilligen Testphasen aufgrund des erhöhten logistischen Aufwands, internationaler Versand- und Rücktransportkosten s
8039owie organisatorischer Besonderheiten bei Speditions- und Zollabwicklungen ausgeschlossen. 8040</p> 8041</div> 8042</li> 8043</ul> 8044<div class="lx-cta"> 8045<a href="https://luxupur.de/" class="lx-btn-primary">Zum Shop</a> <a href="/pages/contact" class="lx-btn-secondary">Fragen? Kontakt aufnehmen</a> 8046</div> 8047</div> 8048</details> 8049<!-- 2) GARANTIE --> 8050<details open="" class="lx-item"> 8051<summary><span style="--ico-size: 24px;" class="lx-acc-ico"> <img alt="" src="https://cdn.shopify.com/s/files/1/0922/8425/6520/files/luxupur-garantie.svg?v=1774531356"> </span> Luxupur® Garantie <span aria-hidden="true" class="lx-chevron"></span></summary> 8052<div class="lx-body"> 8053<p class="lx-intro">Nachfolgend finden Sie eine übersichtliche Zusammenfassung der Luxupur® Garantie je Produktgruppe. Die Garantie bezieht sich auf <strong>Material- und Herstellungsfehler</strong> innerhalb der jeweiligen Laufzeit. Gesetzliche Rechte (z. B. Gewährleistung) bleiben unberührt.</p> 8054<div aria-label="Tabelle Luxupur Garantie" role="region" class="lx-table-wrap"> 8055<table> 8056<thead> 8057<tr> 8058<th style="width: 40%;">Produkt</th> 8059<th style="width: 18%;">Garantie</th> 8060<th style="width: 42%;">Was ist abgedeckt?</th> 8061</tr> 8062</thead> 8063<tbody> 8064<tr> 8065<td data-label="Produkt"><strong>Luxupur® OrthoSleep Matratze</strong></td> 8066<td class="lx-wcol" data-label="Garantie"><strong>10 Jahre</strong></td> 8067<td data-label="Was ist abgedeckt?">Material- und Herstellungsfehler am Produkt innerhalb der Garantielaufzeit (gemäà Bedingungen).</td> 8068</tr> 8069<tr> 8070<td data-label="Produkt"> 8071<strong>Luxupur® Kissen</strong><br><span style="color: rgba(255,255,255,.62); font-size: 13.5px; line-height: 1.5;">OrthoPillow & ErgoPillow</span> 8072</td> 8073<td class="lx-wcol" data-label="Garantie"><strong>3 Jahre</strong></td> 8074<td data-label="Was ist abgedeckt?">Material- und Herstellungsfehler innerhalb der Garantielaufzeit (gemäà Bedingungen).</td> 8075</tr> 8076<tr> 8077<td data-label="Produkt"><strong>Luxupur® OrthoTop Topper</strong></td> 8078<td class="lx-wcol" data-label="Garantie"><strong>5 Jahre</strong></td> 8079<td data-label="Was ist abgedeckt?">Material- und Herstellungsfehler innerhalb der Garantielaufzeit (gemäà Bedingungen).</td> 8080</tr> 8081<tr> 8082<td data-label="Produkt"> 8083<strong>Luxupur® Lattenroste</strong><br><span style="color: rgba(255,255,255,.62); font-size: 13.5px; line-height: 1.5;">OrthoBase Classic, OrthoBase Comfort (elektrisch), OrthoFlex Premium</span> 8084</td> 8085<td class="lx-wcol" data-label="Garantie"> 8086<p><strong>2 Jahre auf Orthobase</strong></p> 8087<p><strong>10 Jahre auf OrthoFlex</strong></p> 8088</td> 8089<td data-label="Was ist abgedeckt?">Material- und Herstellungsfehler innerhalb der Garantielaufzeit (gemäà Bedingungen).</td> 8090</tr> 8091</tbody> 8092</table> 8093</div> 8094<p class="lx-note"><strong>Garantieprüfung:</strong> Luxupur® behält sich vor, die beanstandete Ware in der Manufaktur prüfen zu lassen. Im berechtigten Fall übernimmt Luxupur® Transport- und Verpackungskosten.</p> 8095<p class="lx-note"><strong>Voraussetzungen:</strong><br>⢠Nachweis des Kaufdatums durch Originalrechnung<br>⢠BestimmungsgemäÃe Verwendung (keine Gewalteinwirkung, keine Verschmutzung, keine falsche Unterfederung)<br>⢠Matratze auf funktionstüchtigem Rahmen mit geringem Leistenabstand<br>⢠Ausgeschlossen: Schäden durch unsachgemäÃen Gebrauch (z. B. Flüssigkeiten, falsches Waschen, ungeeignete Reinigung)</p> 8096<p class="lx-note"><strong>Von der Garantie ausgeschlossen (Beispiele):</strong><br>⢠Kuhlenbildung an Rändern durch geknickte Lagerung<br>⢠Aufgegangene Stepp- oder Ziernähte nach Waschen<br>⢠Farbveränderungen von Schäumen durch Licht/Alterung<br>⢠Pilling oder Faltenbildung als übliche Gebrauchsspuren<br>⢠Unhygienische oder verschmutzte Matratzen</p> 8097<p class="lx-note"><strong>Hinweis:</strong> Die jeweilige Garantie endet mit Ablauf der für das entsprechende Produkt genannten Garantielaufzeit ab Kaufdatum.</p> 8098</div> 8099</details> 8100<!-- 3) PFLEGEHINWEISE --> 8101<details class="lx-item" open=""> 8102<summary><span style="--ico-size: 24px;" class="lx-acc-ico"> <img alt="" src="https://cdn.shopify.com/s/files/1/0922/8425/6520/files/luxupur-pflegehinweise.svg?v=1774531615"> </span> Pflegehinweise für Luxupur® Produkte <span aria-hidden="true" class="lx-chevron"></span></summary> 8103<div class="lx-body"> 8104<p class="lx-intro">Diese Hinweise helfen Ihnen, Material, Bezug und Komfort langfristig zu erhalten. MaÃgeblich sind stets die Pflegeetiketten am Produkt.</p> 8105<ul aria-label="Pflegehinweise â Punkte" class="lx-points"> 8106<li class="lx-point"> 8107<span aria-hidden="true" class="lx-dot"></span> 8108<div> 8109<h4>Bezüge: abnehmbar & waschbar (40 °C)</h4> 8110<p>Viele Luxupur® Bezüge sind abnehmbar und waschbar. Bitte beachten Sie das Pflegeetikett. Für die Wäsche empfehlen wir: ReiÃverschluss schlieÃen, Bezug auf links drehen und bei <strong>40 °C Schonwäsche</strong>
8110 reinigen. Lufttrocknen ist in der Regel schonend; ein Trockner kann je nach Material zu Einlaufen führen.</p> 8111</div> 8112</li> 8113<li class="lx-point"> 8114<span aria-hidden="true" class="lx-dot"></span> 8115<div> 8116<h4>Pilling, Falten & âSchlafspurenâ</h4> 8117<p>Leichte Fusselbildung (Pilling) kann durch Reibung mit Bettwäsche entstehen und ist in der Regel kein Qualitätsmangel. Falten im Bezug können nach Transport oder Nutzung auftreten und reduzieren sich meist nach kurzer Zeit oder nach einer Wäsche gemäà Etikett. Vertiefungen im Liegebereich entstehen durch Druck und Wärme â das Material passt sich an.</p> 8118</div> 8119</li> 8120<li class="lx-point"> 8121<span aria-hidden="true" class="lx-dot"></span> 8122<div> 8123<h4>Material & Gefühl: Visco-/Hybrid-Schaum-Technologie</h4> 8124<p>Unsere Schäume reagieren auf Gewicht, Druck und Temperatur. Bei kühler Raumtemperatur kann sich das Liegegefühl zunächst fester anfühlen, bei Wärme entsprechend anpassungsfähiger. Das ist materialtypisch.</p> 8125</div> 8126</li> 8127<li class="lx-point"> 8128<span aria-hidden="true" class="lx-dot"></span> 8129<div> 8130<h4>Nach Lieferung: Auspacken, Formaufbau & Geruch</h4> 8131<p>Je nach Kompression kann es bis zu <strong>72 Stunden</strong> dauern, bis Form/Höhe vollständig erreicht sind. Ein leichter âNeuproduktâ-Geruch ist unbedenklich und verfliegt meist schnell â Lüften beschleunigt das.</p> 8132</div> 8133</li> 8134<li class="lx-point"> 8135<span aria-hidden="true" class="lx-dot"></span> 8136<div> 8137<h4>Reinigung: schonend statt âaggressivâ</h4> 8138<p>Vermeiden Sie harte Bürsten und aggressive Behandlung. Wenn Sie Fussel entfernen möchten, gehen Sie bitte vorsichtig vor.</p> 8139</div> 8140</li> 8141<li class="lx-point"> 8142<span aria-hidden="true" class="lx-dot"></span> 8143<div> 8144<h4>Wärmequellen: Heizdecke/Wärmflasche</h4> 8145<p>Direkter, dauerhafter Kontakt mit starken Wärmequellen kann Materialien beeinflussen. Schäden durch Flüssigkeiten können Garantieansprüche beeinträchtigen.</p> 8146</div> 8147</li> 8148<li class="lx-point"> 8149<span aria-hidden="true" class="lx-dot"></span> 8150<div> 8151<h4>Aufbewahrung & Transport</h4> 8152<p>Lagern Sie Produkte trocken und gut belüftet. Starkes Knicken kann Materialien beschädigen.</p> 8153<p style="margin-top: 10px;" class="lx-note"><strong>Orientierung Waschen/Trocknen (Bezugbreite & Maschinenkapazität):</strong></p> 8154<table aria-label="Waschmaschinenkapazität nach Bezugbreite" class="lx-mini-table"> 8155<thead> 8156<tr> 8157<th>Breite des Bezugs</th> 8158<th>Waschmaschine/Trockner Kapazität</th> 8159</tr> 8160</thead> 8161<tbody> 8162<tr> 8163<td data-label="Breite des Bezugs">Bis zu 95 cm</td> 8164<td data-label="Kapazität">6 kg</td> 8165</tr> 8166<tr> 8167<td data-label="Breite des Bezugs">Bis zu 105 cm</td> 8168<td data-label="Kapazität">7 kg</td> 8169</tr> 8170<tr> 8171<td data-label="Breite des Bezugs">Bis zu 120 cm</td> 8172<td data-label="Kapazität">8 kg</td> 8173</tr> 8174<tr> 8175<td data-label="Breite des Bezugs">Ãber 120 cm</td> 8176<td data-label="Kapazität">Professionelle Reinigung empfohlen</td> 8177</tr> 8178</tbody> 8179</table> 8180<p class="lx-note"><strong>Wichtig:</strong> Bezug vollständig trocknen lassen, bevor er wieder verwendet/gelagert wird.</p> 8181</div> 8182</li> 8183</ul> 8184<p class="lx-note"><strong>Hinweis:</strong> MaÃgeblich sind die Pflegeetiketten und die produktbezogenen Hinweise.</p> 8185</div> 8186</details> 8187<!-- 4) LIEFERINFORMATIONEN --> 8188<details open="" class="lx-item"> 8189<summary><span style="--ico-size: 24px;" class="lx-acc-ico"> <img alt="" src="https://cdn.shopify.com/s/files/1/0922/8425/6520/files/luxupur-kostenlose-lieferung.svg?v=1774531536"> </span> Lieferinformationen <span aria-hidden="true" class="lx-chevron"></span></summary> 8190<div class="lx-body"> 8191<p class="lx-intro">Luxupur® liefert in der Regel <strong>versandkostenfrei</strong> innerhalb von <strong>Deutschland, Ãsterreich und der Schweiz</strong>. Je nach Produkt erfolgt der Versand als Paket oder per Spedition mit Terminabsprache.</p> 8192<ul aria-label="Lieferinfos â Punkte" class="lx-points"> 8193<li class="lx-point"> 8194<span aria-hidden="true" class="lx-dot"></span> 8195<div> 8196<h4>Kleinteile (z. B. Kissen, Zubehör)</h4> 8197<p>Regellieferzeit: <strong>ca. 5â10 Werktage</strong> nach Bestelleingang. Der Versand erfolgt üblicherweise über <strong>gängige Paketdienstleister</strong> (z. B. DHL, DPD oder vergleichbare Anbieter).</p> 8198</div> 8199</li> 8200<li class="lx-point"> 8201<span aria-hidden="true" class="lx-dot"></span> 8202<div> 8203<h4>OrthoTop Topper</h4> 8204<p>Regellieferzeit: <strong>ca. 2 Wochen</strong> nach Bestelleingang. Da jeder Topper individuell in unserer deutschen Manufaktur gefertigt wird, kann sich die Lieferzeit bei <strong>
8204SondergröÃen oder Sonderanfertigungen</strong> geringfügig verlängern. Der Versand erfolgt üblicherweise <strong>gerollt und vakuumiert</strong> im Karton über gängige Paketdienstleister.</p> 8205</div> 8206</li> 8207<li class="lx-point"> 8208<span aria-hidden="true" class="lx-dot"></span> 8209<div> 8210<h4>Matratzen & GroÃteile (OrthoSleep Matratze & Lattenroste)</h4> 8211<p>Die Lieferzeit beträgt in der Regel <strong>2â4 Wochen</strong> und gilt für Luxupur® Matratzen, OrthoBase Lattenroste. Für unseren OrthoFlex Tellerlattenrost liegt die Lieferzeit bei <strong>4â6 Wochen</strong>.</p> 8212<p>Bei Lieferungen in die Schweiz kann sich die Lieferzeit aufgrund zusätzlicher Versand- und Zollabwicklung geringfügig verlängern.</p> 8213</div> 8214</li> 8215<li class="lx-point"> 8216<span aria-hidden="true" class="lx-dot"></span> 8217<div> 8218<h4>Matratzen bis 100 cm Breite (Box-Versand)</h4> 8219<p>In der Regel <strong>gerollt und vakuumiert</strong> im Karton. Die Zustellung erfolgt üblicherweise über Paketdienstleister bis zur Haustür.</p> 8220</div> 8221</li> 8222<li class="lx-point"> 8223<span aria-hidden="true" class="lx-dot"></span> 8224<div> 8225<h4>GroÃteile (z. B. gröÃere Matratzen, Rahmen/Lattenroste)</h4> 8226<p>GroÃteile werden in der Regel per <strong>Spedition oder im Zwei-Personen-Handling</strong> geliefert. Die Zustellung erfolgt grundsätzlich <strong>frei Bordsteinkante</strong>; eine weitergehende Zustellung bis zum gewünschten Aufstellort ist in Einzelfällen auf Anfrage und je nach Verfügbarkeit möglich. Die Terminabsprache erfolgt üblicherweise <strong>telefonisch</strong>.</p> 8227</div> 8228</li> 8229<li class="lx-point"> 8230<span aria-hidden="true" class="lx-dot"></span> 8231<div> 8232<h4>Rechnungs- & Lieferadresse</h4> 8233<p>Sie können bei Ihrer Bestellung eine abweichende Lieferadresse angeben.</p> 8234</div> 8235</li> 8236<li class="lx-point"> 8237<span aria-hidden="true" class="lx-dot"></span> 8238<div> 8239<h4>Kontakt bei Rückfragen</h4> 8240<p>Luxupur by Wolken Matratzen UG (haftungsbeschränkt), Kurfürstendamm 11, 10719 Berlin<br>Tel.: +49 30 754 35 644<br>E-Mail: <a href="mailto:[email protected]">[email protected]</a></p> 8241</div> 8242</li> 8243</ul> 8244<p class="lx-note">Hinweis: Bei SondermaÃen oder Sonderanfertigungen können Lieferzeiten abweichen. Die Auswahl des Versanddienstleisters erfolgt je nach Produkt, GröÃe, Lieferregion und logistischer Verfügbarkeit. Ein Anspruch auf einen bestimmten Versanddienstleister besteht nicht.</p> 8245</div> 8246</details> 8247 8248<!-- 5) KOSTENFREIE RÃCKSENDUNG --> 8249<details open="" class="lx-item"> 8250<summary><span style="--ico-size: 24px;" class="lx-acc-ico"> <img alt="" src="https://cdn.shopify.com/s/files/1/0922/8425/6520/files/luxupur-kostenlose-r_cksendung.svg?v=1774531472"> </span> Kostenfreie Rücksendung <span aria-hidden="true" class="lx-chevron"></span></summary> 8251<div class="lx-body"> 8252<p class="lx-intro">Für direkt in unserem Onlineshop erworbene Luxupur® Produkte bieten wir im Rahmen unserer freiwilligen Testphase in der Regel eine <strong>kostenfreie Rücksendung</strong> an. Unabhängig davon gelten ergänzend die jeweils maÃgeblichen gesetzlichen Regelungen sowie unsere Widerrufsbelehrung und AGB.</p> 8253<ul aria-label="Rücksendung â Punkte" class="lx-points"> 8254<li class="lx-point"> 8255<span aria-hidden="true" class="lx-dot"></span> 8256<div> 8257<h4>Testzeiträume</h4> 8258<p><strong>Luxupur® OrthoSleep Matratze:</strong><strong> 100 Nächte</strong> testen.<br><strong>Kissen, Topper & Lattenroste:</strong><strong> 30 Nächte</strong> testen.</p> 8259</div> 8260</li> 8261<li class="lx-point"> 8262<span aria-hidden="true" class="lx-dot"></span> 8263<div> 8264<h4>So funktioniert die Rücksendung</h4> 8265<p>Für <strong>Kleinteile</strong> erhalten Sie in der Regel ein <strong>Retourenlabel</strong> (z. B. DHL/DPD).<br>Für <strong>GroÃteile</strong> organisieren wir eine <strong>kostenfreie Abholung per Spedition</strong>.</p> 8266</div> 8267</li> 8268<li class="lx-point"> 8269<span aria-hidden="true" class="lx-dot"></span> 8270<div> 8271<h4>Kontakt für Rücksendung (Klein- & GroÃteile)</h4> 8272<p>Bitte wenden Sie sich an unseren Kundenservice: <a href="mailto:[email protected]">[email protected]</a><br>Oder nutzen Sie unser Kontaktformular: <a href="/pages/contact">Kontakt</a></p> 8273</div> 8274</li> 8275<li class="lx-point"> 8276<span aria-hidden="true" class="lx-dot"></span> 8277<div> 8278<h4>Erstattung des Kaufbetrags</h4> 8279<p>Nach Eingang und Prüfung der Rücksendung veranlassen wir die Erstattung über die <strong>ursprünglich verwendete Zahlungsart</strong>
8279. Die tatsächliche Gutschrift kann â abhängig von Zahlungsart und Zahlungsanbieter â in der Regel <strong>bis zu 14 Tage</strong> in Anspruch nehmen.</p> 8280</div> 8281</li> 8282<li class="lx-point"> 8283<span aria-hidden="true" class="lx-dot"></span> 8284<div> 8285<h4>Gezielte Anpassung vor einer Rückgabe</h4> 8286<p>Wenn das Liegegefühl noch nicht optimal passt, prüfen wir zunächst eine gezielte Anpassung â z. B. einen <strong>weicheren oder festeren Topper</strong> oder eine <strong>Anpassung des Matratzenkerns</strong> (modell- und fallabhängig).<br><br>Diese Unterstützung erfolgt einmalig während Ihrer Testzeit und dient der gezielten Optimierung des Liegegefühls. Die Testzeit verlängert sich dadurch nicht und beginnt auch nicht erneut.</p> 8287</div> 8288</li> 8289</ul> 8290<p class="lx-note"><strong>Wichtig:</strong> Die kostenfreie Rücksendung gilt für Luxupur® Produkte aus unserem Onlineshop.</p> 8291</div> 8292</details> 8293<!-- 6) ZAHLUNGSOPTIONEN --> 8294<details class="lx-item"> 8295<summary><span style="--ico-size: 24px;" class="lx-acc-ico"> <img alt="" src="https://cdn.shopify.com/s/files/1/0922/8425/6520/files/luxupur-zahlungsm_glichkeiten.svg?v=1774531578"> </span> Zahlungsoptionen <span aria-hidden="true" class="lx-chevron"></span></summary> 8296<div class="lx-body"> 8297<p class="lx-intro">Im Luxupur® Onlineshop stehen Ihnen mehrere sichere Zahlungsmethoden zur Verfügung. Die verfügbaren Optionen sehen Sie im Checkout.</p> 8298<ul aria-label="Zahlungsoptionen â Punkte" class="lx-points"> 8299<li class="lx-point"> 8300<span aria-hidden="true" class="lx-dot"></span> 8301<div> 8302<h4>PayPal</h4> 8303<p>Sie zahlen schnell und sicher über PayPal. Im Bestellprozess werden Sie zu PayPal weitergeleitet. Je nach PayPal-Einstellung ist auch eine Zahlung ohne eigenes PayPal-Konto möglich.</p> 8304</div> 8305</li> 8306<li class="lx-point"> 8307<span aria-hidden="true" class="lx-dot"></span> 8308<div> 8309<h4>Google Pay / Apple Pay</h4> 8310<p>Bezahlen Sie bequem über Google Pay oder Apple Pay, sofern Sie die Funktion auf Ihrem Gerät eingerichtet haben (z. B. mit hinterlegter Karte in der Wallet).</p> 8311</div> 8312</li> 8313<li class="lx-point"> 8314<span aria-hidden="true" class="lx-dot"></span> 8315<div> 8316<h4>Kreditkarte</h4> 8317<p>Wir akzeptieren gängige Kreditkarten (z. B. Visa, Mastercard). Erstattungen im Rückabwicklungsfall erfolgen auf das ursprünglich genutzte Zahlungsmittel.</p> 8318</div> 8319</li> 8320<li class="lx-point"> 8321<span aria-hidden="true" class="lx-dot"></span> 8322<div> 8323<h4>Sofort bezahlen via Klarna</h4> 8324<p>Mit âSofort bezahlenâ begleichen Sie den Gesamtbetrag direkt im Checkout über Klarna.</p> 8325</div> 8326</li> 8327<li class="lx-point"> 8328<span aria-hidden="true" class="lx-dot"></span> 8329<div> 8330<h4>Kauf auf Rechnung via Klarna</h4> 8331<p>Der Rechnungskauf ist bei Luxupur® ausschlieÃlich über Klarna möglich. Klarna prüft und verwaltet die Abwicklung. Die Zahlungsinformationen erhalten Sie von Klarna.</p> 8332</div> 8333</li> 8334<li class="lx-point"> 8335<span aria-hidden="true" class="lx-dot"></span> 8336<div> 8337<h4>Ratenkauf via Klarna (bis zu 36 Monate)</h4> 8338<p>Auf Wunsch können Sie Ihren Einkauf bequem über Klarna in monatlichen Raten bezahlen. Je nach Auswahl sind Laufzeiten von <strong>bis zu 36 Monaten</strong> möglich. Die tatsächlich verfügbaren Optionen, Ratenhöhen und Konditionen werden Ihnen im Rahmen der Zahlungsabwicklung durch Klarna angezeigt und sind <strong>abhängig von Bonität und den Vorgaben von Klarna</strong>.</p> 8339</div> 8340</li> 8341<li class="lx-point"> 8342<span aria-hidden="true" class="lx-dot"></span> 8343<div> 8344<h4>Vorauskasse (Banküberweisung)</h4> 8345<p>Sie können im Checkout auch <strong>Vorauskasse (Banküberweisung)</strong> auswählen. Nach Auswahl werden Ihnen die Ãberweisungsdaten angezeigt.<br><br><strong>Wichtig:</strong> Vorauskasse ist <strong>kein Kauf auf Rechnung</strong>. Rechnungskauf bieten wir ausschlieÃlich über Klarna an. Die Produktion bzw. Bearbeitung beginnt erst, sobald der Betrag bei uns eingegangen und auf dem Konto verbucht ist.</p> 8346</div> 8347</li> 8348</ul> 8349<p class="lx-note">Hinweis: Klarna ist ein eigenständiger Zahlungsdienstleister. Welche Klarna-Optionen Ihnen angeboten werden, kann von einer Bonitätsprüfung abhängen.</p> 8350</div> 8351</details> 8352</div> 8353</div> 8354</div> 8355<p>
8355<script> 8356 (function(){ 8357 var root = document.getElementById('lx-modal-content'); 8358 if(!root) return; 8359 8360 var items = root.querySelectorAll('details.lx-item'); 8361 8362 items.forEach(function(d){ 8363 d.addEventListener('toggle', function(){ 8364 if(!d.open) return; 8365 items.forEach(function(other){ 8366 if(other !== d) other.removeAttribute('open'); 8367 }); 8368 }); 8369 }); 8370 })(); 8371 8372 (function(){ 8373 if (window.matchMedia('(max-width: 768px)').matches) { 8374 document.querySelectorAll('#lx-modal-content details.lx-item[open]') 8375 .forEach(function(d){ d.removeAttribute('open'); }); 8376 } 8377 })(); 8378</script>
8378
8378<script> 8379 (function(){ 8380 var root = document.getElementById('lx-modal-content'); 8381 if(!root) return; 8382 8383 root.querySelectorAll('details.lx-item').forEach(function(d){ 8384 var body = d.querySelector('.lx-body'); 8385 if(!body) return; 8386 if(body.querySelector('.lx-close-row')) return; 8387 8388 var row = document.createElement('div'); 8389 row.className = 'lx-close-row'; 8390 8391 var btn = document.createElement('button'); 8392 btn.type = 'button'; 8393 btn.className = 'lx-close-btn'; 8394 btn.setAttribute('aria-label', 'Accordion schlieÃen'); 8395 btn.innerHTML = '<span>SchlieÃen</span><span class="lx-close-chevron" aria-hidden="true"></span>'; 8396 8397 row.appendChild(btn); 8398 body.appendChild(row); 8399 }); 8400 8401 root.addEventListener('click', function(e){ 8402 var btn = e.target.closest('.lx-close-btn'); 8403 if(!btn) return; 8404 8405 e.preventDefault(); 8406 e.stopPropagation(); 8407 8408 var details = btn.closest('details.lx-item'); 8409 if(!details) return; 8410 8411 details.removeAttribute('open'); 8412 }, true); 8413 })(); 8414</script>
8414</p> 8415</div> 8416 </div> 8417</div> 8418
8419<script> 8420(function(){ 8421 var overlay = document.getElementById('lxServiceModal'); 8422 if (!overlay) return; 8423 8424 function openModal(){ 8425 overlay.classList.add('is-open'); 8426 overlay.setAttribute('aria-hidden','false'); 8427 document.documentElement.style.overflow = 'hidden'; 8428 document.body.style.overflow = 'hidden'; 8429 } 8430 8431 function closeModal(){ 8432 overlay.classList.remove('is-open'); 8433 overlay.setAttribute('aria-hidden','true'); 8434 document.documentElement.style.overflow = ''; 8435 document.body.style.overflow = ''; 8436 } 8437 8438 document.addEventListener('click', function(e){ 8439 var opener = e.target.closest('[data-lx-open="service"]'); 8440 if (opener){ 8441 e.preventDefault(); 8442 openModal(); 8443 return; 8444 } 8445 8446 if (!overlay.classList.contains('is-open')) return; 8447 8448 if (e.target === overlay) closeModal(); 8449 if (e.target.closest('[data-lx-close]')) closeModal(); 8450 }); 8451 8452 document.addEventListener('keydown', function(e){ 8453 if (e.key === 'Escape' && overlay.classList.contains('is-open')) { 8454 closeModal(); 8455 } 8456 }); 8457})(); 8458</script>
8458 8459<div id="lx-atc-overlay" class="lx-atc-overlay" aria-hidden="true" hidden></div> 8460 8461<aside 8462 id="lx-atc-drawer" 8463 class="lx-atc-drawer" 8464 aria-hidden="true" 8465 role="dialog" 8466 aria-modal="true" 8467 aria-label="In den Warenkorb gelegt" 8468 hidden 8469> 8470 <div class="lx-atc-drawer__header"> 8471 <div class="lx-atc-drawer__title"> 8472 <span class="lx-atc-drawer__check" aria-hidden="true">â</span> 8473 <span>In Ihren Warenkorb gelegt</span> 8474 </div> 8475 <button type="button" class="lx-atc-drawer__close" aria-label="SchlieÃen">Ã</button> 8476 </div> 8477 8478 <div class="lx-atc-drawer__added"> 8479 <div class="lx-atc-drawer__added-media"> 8480 <img id="lx-atc-added-img" alt="" loading="lazy" decoding="async"> 8481 </div> 8482 8483 <div class="lx-atc-drawer__added-info"> 8484 <div id="lx-atc-added-title" class="lx-atc-drawer__added-title">â</div> 8485 8486 <div class="lx-atc-priceblock"> 8487 <div id="lx-atc-added-compare" class="lx-atc-price-compare" hidden>â</div> 8488 8489 <div class="lx-atc-price-row"> 8490 <div id="lx-atc-added-price" class="lx-atc-price-current">â</div> 8491 <div id="lx-atc-added-save" class="lx-atc-price-save" hidden>â</div> 8492 </div> 8493 </div> 8494 </div> 8495 </div> 8496 8497 <div class="lx-atc-drawer__actions"> 8498 <a href="/cart" class="lx-atc-btn lx-atc-btn--primary"> 8499 Warenkorb anzeigen 8500 </a> 8501 8502 <button type="button" 8503 class="lx-atc-btn lx-atc-btn--ghost" 8504 id="lx-atc-continue"> 8505 <span class="lx-atc-continue-text"> 8506 Einkauf fortsetzen 8507 </span> 8508 <span class="lx-atc-arrow">â</span> 8509 </button> 8510 </div> 8511 8512 <div class="lx-atc-drawer__divider"></div> 8513 8514 <div class="lx-atc-drawer__reco"> 8515 <div class="lx-atc-drawer__reco-title">Vervollständigen Sie Ihr Schlafsystem</div> 8516 8517 <div id="lx-atc-reco-list" class="lx-atc-drawer__reco-list"><a class="lx-atc-reco-item" href="/products/orthobase-comfort-elektrischer-lattenrost"> 8518 <div class="lx-atc-reco-item__img"><img 8519 src="//luxupur.de/cdn/shop/files/luxupur-orthobase-comfort-lattenrost-elektrisch-premium.webp?v=1776890666&width=160" 8520 alt="Luxupur® OrthoBase Comfort" 8521 loading="lazy" 8522 decoding="async" 8523 ></div> 8524 8525 <div class="lx-atc-reco-item__meta"> 8526 <div class="lx-atc-reco-item__title">Luxupur® OrthoBase Comfort</div><div class="lx-atc-reco-item__compare"> 8527 ab 1.095,00 ⬠8528 </div> 8529 8530 <div class="lx-atc-reco-item__price"> 8531 ab 895,00 ⬠8532 </div> 8533 8534 <div class="lx-atc-reco-item__save"> 8535 Sie sparen 200,00 ⬠8536 </div></div> 8537 8538 <div class="lx-atc-reco-item__cta"> 8539 <span class="lx-atc-reco-text">Mehr erfahren</span> 8540 <span class="lx-atc-reco-arrow">â</span> 8541 </div> 8542 </a><a class="lx-atc-reco-item" href="/products/orthoflex-premium-tellerlattenrost-elektrisch"> 8543 <div class="lx-atc-reco-item__img"><img 8544 src="//luxupur.de/cdn/shop/files/freepik_use-the-provided-image-of-the-slatted-bed-base-lattenrost-as-the-exact-reference.-keep-the-product-100-unchanged-same-structure-proportions-materials-colors-details-and-perspe.webp?v=1775077243&width=160" 8545 alt="Luxupur® OrthoFlex Premium" 8546 loading="lazy" 8547 decoding="async" 8548 ></div> 8549 8550 <div class="lx-atc-reco-item__meta"> 8551 <div class="lx-atc-reco-item__title">Luxupur® OrthoFlex Premium</div><div class="lx-atc-reco-item__price"> 8552 ab 1.395,00 ⬠8553 </div></div> 8554 8555 <div class="lx-atc-reco-item__cta"> 8556 <span class="lx-atc-reco-text">Mehr erfahren</span> 8557 <span class="lx-atc-reco-arrow">â</span> 8558 </div> 8559 </a><a class="lx-atc-reco-item" href="/products/luxupur-orthopillow-kissen"> 8560 <div class="lx-atc-reco-item__img"><img 8561 src="//luxupur.de/cdn/shop/files/luxupur-orthopillow-ergonomisches-nackenkissen-seitenschlaefer.webp?v=1789204398&width=160" 8562 alt="Luxupur® OrthoPillow" 8563 loading="lazy" 8564 decoding="async" 8565 ></div> 8566 8567 <div class="lx-atc-reco-item__meta"> 8568 <div class="lx-atc-reco-item__title">Luxupur® OrthoPillow</div><div class="lx-atc-reco-item__price"> 8569 ab 135,00 ⬠8570 </div></div> 8571 8572 <div class="lx-atc-reco-item__cta">
8573 <span class="lx-atc-reco-text">Mehr erfahren</span> 8574 <span class="lx-atc-reco-arrow">â</span> 8575 </div> 8576 </a><a class="lx-atc-reco-item" href="/products/luxupur-ergopillow"> 8577 <div class="lx-atc-reco-item__img"><img 8578 src="//luxupur.de/cdn/shop/files/luxupur-ergopillow-nackenkissen-ergonomisch-produktfoto.jpg?v=1789384712&width=160" 8579 alt="Luxupur® ErgoPillow" 8580 loading="lazy" 8581 decoding="async" 8582 ></div> 8583 8584 <div class="lx-atc-reco-item__meta"> 8585 <div class="lx-atc-reco-item__title">Luxupur® ErgoPillow</div><div class="lx-atc-reco-item__price"> 8586 ab 155,00 ⬠8587 </div></div> 8588 8589 <div class="lx-atc-reco-item__cta"> 8590 <span class="lx-atc-reco-text">Mehr erfahren</span> 8591 <span class="lx-atc-reco-arrow">â</span> 8592 </div> 8593 </a></div> 8594 </div> 8595</aside> 8596 8597<style> 8598 /* ===== Typography (global for drawer) â LATO überall ===== */ 8599 #lx-atc-drawer, 8600 #lx-atc-drawer *{ 8601 font-family: "Lato", sans-serif !important; 8602 } 8603 8604 /* ===== Overlay ===== */ 8605 .lx-atc-overlay{ 8606 position: fixed; 8607 inset: 0; 8608 background: rgba(0,0,0,.32); 8609 opacity: 0; 8610 pointer-events: none; 8611 transition: opacity .22s ease; 8612 z-index: 9998; 8613 backdrop-filter: blur(4px); 8614 -webkit-backdrop-filter: blur(4px); 8615 } 8616 8617 /* ===== Drawer base â WEISS ===== */ 8618 .lx-atc-drawer{ 8619 position: fixed; 8620 z-index: 9999; 8621 background: #ffffff; 8622 color: #1a2428; 8623 box-shadow: 0 26px 70px rgba(0,0,0,.18); 8624 border: 1px solid #e8dfc8; 8625 opacity: 0; 8626 pointer-events: none; 8627 transform: translate3d(0,0,0); 8628 transition: transform .26s ease, opacity .18s ease; 8629 overflow: hidden; 8630 } 8631 8632 @media (min-width: 750px){ 8633 .lx-atc-drawer{ 8634 top: 0; 8635 right: 34px; 8636 width: min(468px, 92vw); 8637 max-height: 100vh; 8638 border-radius: 0 !important; 8639 transform: translateY(-14px) translateX(18px); 8640 } 8641 } 8642 8643 @media (max-width: 749px){ 8644 .lx-atc-drawer{ 8645 left: 0; 8646 right: 0; 8647 bottom: 0; 8648 width: 100%; 8649 max-height: 85vh; 8650 border-radius: 14px 14px 0 0 !important; 8651 transform: translateY(110%); 8652 border-left: 0 !important; 8653 border-right: 0 !important; 8654 border-bottom: 0 !important; 8655 } 8656 } 8657 8658 html.lx-atc-open .lx-atc-overlay{ 8659 opacity: 1; 8660 pointer-events: auto; 8661 } 8662 8663 html.lx-atc-open .lx-atc-drawer{ 8664 opacity: 1; 8665 pointer-events: auto; 8666 transform: translateY(0) translateX(0); 8667 } 8668 8669 /* ===== Header ===== */ 8670 .lx-atc-drawer__header{ 8671 display: flex; 8672 align-items: center; 8673 justify-content: space-between; 8674 padding: 16px 16px 12px; 8675 border-bottom: 1px solid #e8dfc8; 8676 background: #faf8f4; 8677 } 8678 8679 .lx-atc-drawer__title{ 8680 display: flex; 8681 align-items: center; 8682 gap: 12px; 8683 font-weight: 600; 8684 font-size: 18px; 8685 line-height: 1.15; 8686 color: #1a2428; 8687 font-family: "Lato", sans-serif !important; 8688 } 8689 8690 .lx-atc-drawer__check{ 8691 display: inline-flex; 8692 width: 32px; 8693 height: 32px; 8694 align-items: center; 8695 justify-content: center; 8696 border-radius: 0 !important; 8697 background: #fdf8f0; 8698 border: 1px solid #C9A96E; 8699 color: #C9A96E; 8700 font-weight: 900; 8701 font-size: 15px; 8702 } 8703 8704 .lx-atc-drawer__close{ 8705 appearance: none; 8706 border: 1px solid #d4bc8e; 8707 background: #ffffff; 8708 color: #1a2428; 8709 cursor: pointer; 8710 font-size: 22px; 8711 line-height: 1; 8712 padding: 6px 10px; 8713 border-radius: 0 !important; 8714 } 8715 8716 .lx-atc-drawer__close:hover{ 8717 background: #fdf8f0; 8718 border-color: #C9A96E; 8719 color: #1a2428; 8720 } 8721 8722 /* ===== Added product ===== */ 8723 .lx-atc-drawer__added{ 8724 display: grid; 8725 grid-template-columns: 96px 1fr; 8726 gap: 20px; 8727 padding: 14px 16px 0; 8728 align-items: start; 8729 } 8730 8731 .lx-atc-drawer__added-media{ 8732 width: 96px; 8733 height: 96px; 8734 border-radius: 0 !important; 8735 overflow: hidden; 8736 background: transparent; 8737 border: 0 !important; 8738 align-self: start; 8739 } 8740 8741 .lx-atc-drawer__added-media img{ 8742 width: 100%; 8743 height: 100%; 8744 object-fit: cover; 8745 display: block; 8746 } 8747 8748 .lx-atc-drawer__added-info{ 8749 align-self: start; 8750 padding-top: 2px; 8751 } 8752 8753 .lx-atc-drawer__added-title{ 8754 font-weight: 600; 8755 font-size: 17px; 8756 line-height: 1.15; 8757 margin: 0 0 6px 0; 8758 color: #1a2428; 8759 font-family: "Lato", sans-serif !important; 8760 } 8761 8762 /* ===== Price block ===== */ 8763 .lx-atc-priceblock{ 8764 margin-top: 2px; 8765 margin-bottom: 18px; 8766 } 8767 8768 .lx-atc-price-compare{ 8769 font-size: 14px; 8770 font-weight: 500; 8771 color: #8a8f96; 8772 text-decoration: line-through; 8773 margin-bottom: 0; 8774 line-height: 1.05; 8775 } 8776 8777 .lx-atc-price-row{ 8778 display: flex; 8779 align-items: baseline; 8780 gap: 10px; 8781 flex-wrap: wrap; 8782 } 8783 8784 .lx-atc-price-current{ 8785 font-size: 16px; 8786 font-weight: 700; 8787 color: #1a2428; 8788 } 8789 8790 .lx-atc-price-save{ 8791 font-size: 14px; 8792 font-weight: 600; 8793 color: #C9A96E !important; 8794 } 8795 8796 /* ===== Actions ===== */ 8797 .lx-atc-drawer__actions{ 8798 display: grid; 8799 gap: 10px; 8800 padding: 14px 16px 24px; 8801 } 8802 8803 .lx-atc-btn{ 8804 display: inline-flex; 8805 align-items: center; 8806 justify-content: center; 8807 min-height: 46px; 8808 padding: 12px 14px; 8809 border-radius: 0 !important; 8810 text-decoration: none; 8811 font-weight: 600; 8812 font-size: 16px; 8813 border: 1px solid #d4bc8e; 8814 cursor: pointer; 8815 user-select: none; 8816 background: #ffffff; 8817 color: #1a2428; 8818 } 8819 8820 .lx-atc-btn--primary{ 8821 border-color: #C9A96E; 8822 background: #C9A96E; 8823 color: #ffffff !important; 8824 } 8825 8826 .lx-atc-btn--primary, 8827 .lx-atc-btn--primary:visited, 8828 .lx-atc-btn--primary:hover, 8829 .lx-atc-btn--primary:focus{ 8830 color: #ffffff !important; 8831 } 8832 8833 .lx-atc-btn--primary *{ 8834 color: #ffffff !important; 8835 } 8836 8837 .lx-atc-btn--primary:hover{ 8838 background: #b8965d; 8839 border-color: #b8965d; 8840 } 8841 8842 #lx-atc-continue{ 8843 margin-top: 8px; 8844 margin-bottom: 14px; 8845 display: inline-flex; 8846 } 8847 8848 #lx-atc-continue.lx-atc-btn--ghost{ 8849 background: transparent !important; 8850 border: 0 !important; 8851 padding: 0 !important; 8852 min-height: auto !important; 8853 border-radius: 0 !important; 8854 font-weight: 500; 8855 font-size: 15px; 8856 color: #1a2428; 8857 display: inline-flex; 8858 align-items: center; 8859 justify-content: center; 8860 gap: 8px; 8861 text-decoration: none !important; 8862 } 8863 8864 #lx-atc-continue .lx-atc-continue-text{ 8865 text-decoration: underline; 8866 text-underline-offset: 3px; 8867 text-decoration-color: #C9A96E; 8868 } 8869 8870 #lx-atc-continue .lx-atc-arrow{ 8871 text-decoration: none !important; 8872 display: inline-block; 8873 margin-left: 6px; 8874 transition: transform .18s ease; 8875 color: #C9A96E; 8876 } 8877 8878 #lx-atc-continue:hover{ 8879 color: #b8965d !important; 8880 } 8881 8882 #lx-atc-continue:hover .lx-atc-continue-text{ 8883 text-decoration-color: #b8965d; 8884 } 8885 8886 #lx-atc-continue:hover .lx-atc-arrow{ 8887 transform: translateX(4px); 8888 } 8889 8890 .lx-atc-drawer__divider{ 8891 height: 1px; 8892 background: #e8dfc8; 8893 margin: 0 16px; 8894 } 8895 8896 /* ===== Recos ===== */ 8897 .lx-atc-drawer__reco{ 8898 padding: 16px; 8899 padding-top: 18px; 8900 } 8901 8902 .lx-atc-drawer__reco-title{ 8903 font-weight: 600; 8904 font-size: 16px; 8905 margin-bottom: 12px; 8906 color: #1a2428; 8907 } 8908 8909 .lx-atc-drawer__reco-list{ 8910 display: grid; 8911 gap: 22px !important; 8912 } 8913 8914 #lx-atc-reco-list .lx-atc-reco-item{ 8915 display: grid !important; 8916 grid-template-columns: 92px minmax(0, 1fr) auto !important; 8917 gap: 16px !important;
8918 align-items: center !important; 8919 padding: 0 !important; 8920 border: 0 !important; 8921 background: transparent !important; 8922 border-radius: 0 !important; 8923 text-decoration: none; 8924 color: inherit; 8925 } 8926 8927 #lx-atc-reco-list .lx-atc-reco-item > div{ 8928 min-width: 0 !important; 8929 } 8930 8931 #lx-atc-reco-list .lx-atc-reco-item__img{ 8932 width: 92px !important; 8933 aspect-ratio: 1 / 1 !important; 8934 height: auto !important; 8935 border-radius: 0 !important; 8936 overflow: hidden !important; 8937 background: transparent !important; 8938 border: 0 !important; 8939 } 8940 8941 #lx-atc-reco-list .lx-atc-reco-item__img img{ 8942 width: 100% !important; 8943 height: 100% !important; 8944 object-fit: cover !important; 8945 display: block !important; 8946 } 8947 8948 #lx-atc-reco-list .lx-atc-reco-item__meta{ 8949 min-width: 0; 8950 } 8951 8952 #lx-atc-reco-list .lx-atc-reco-item__title{ 8953 font-size: 15px !important; 8954 font-weight: 600 !important; 8955 line-height: 1.18 !important; 8956 margin: 0; 8957 color: #1a2428; 8958 font-family: "Lato", sans-serif !important; 8959 overflow: hidden !important; 8960 display: -webkit-box !important; 8961 -webkit-line-clamp: 2 !important; 8962 -webkit-box-orient: vertical !important; 8963 } 8964 8965 #lx-atc-reco-list .lx-atc-reco-item__compare{ 8966 font-size: 13px; 8967 font-weight: 500; 8968 color: #8a8f96; 8969 text-decoration: line-through; 8970 margin: 2px 0 0 0 !important; 8971 line-height: 1.1 !important; 8972 } 8973 8974 #lx-atc-reco-list .lx-atc-reco-item__price{ 8975 font-size: 14px !important; 8976 font-weight: 700 !important; 8977 color: #1a2428 !important; 8978 margin: 2px 0 0 0 !important; 8979 line-height: 1.1 !important; 8980 } 8981 8982 #lx-atc-reco-list .lx-atc-reco-item__save{ 8983 font-size: 13px !important; 8984 font-weight: 600; 8985 color: #C9A96E !important; 8986 margin: 2px 0 0 0 !important; 8987 line-height: 1.1 !important; 8988 white-space: nowrap; 8989 } 8990 8991 #lx-atc-reco-list .lx-atc-reco-item__cta, 8992 .lx-atc-reco-item__cta{ 8993 text-decoration: none !important; 8994 background: transparent !important; 8995 border: 0 !important; 8996 padding: 0 !important; 8997 border-radius: 0 !important; 8998 white-space: nowrap !important; 8999 font-size: 13px !important; 9000 font-weight: 600 !important; 9001 color: #1a2428 !important; 9002 } 9003 9004 #lx-atc-reco-list .lx-atc-reco-item__cta::after, 9005 .lx-atc-reco-item__cta::after{ 9006 content: none !important; 9007 } 9008 9009 #lx-atc-reco-list .lx-atc-reco-text{ 9010 text-decoration: underline !important; 9011 text-underline-offset: 3px !important; 9012 text-decoration-color: #C9A96E; 9013 } 9014 9015 #lx-atc-reco-list .lx-atc-reco-arrow{ 9016 text-decoration: none !important; 9017 display: inline-block !important; 9018 margin-left: 6px !important; 9019 color: #C9A96E !important; 9020 } 9021 9022 .lx-atc-reco-item:hover .lx-atc-reco-item__cta{ 9023 color: #b8965d !important; 9024 } 9025 9026 .lx-atc-reco-item:hover .lx-atc-reco-text{ 9027 text-decoration-color: #b8965d !important; 9028 } 9029 9030 @media (max-width: 749px){ 9031 .lx-atc-drawer__reco{ 9032 padding-bottom: 20px !important; 9033 } 9034 9035 .lx-atc-drawer__reco-list{ 9036 padding-bottom: 14px !important; 9037 } 9038 } 9039 9040 /* ===== FIX: Button "Warenkorb anzeigen" Schrift ===== */ 9041 .lx-atc-btn--primary{ 9042 font-family: "Lato", sans-serif !important; 9043 } 9044 9045 .lx-atc-btn--primary *{ 9046 font-family: "Lato", sans-serif !important; 9047 } 9048 9049 /* ===== FIX: Produktname oben (Lato erzwingen) ===== */ 9050 #lx-atc-drawer .lx-atc-drawer__added-title{ 9051 font-family: "Lato", sans-serif !important; 9052 } 9053 9054 9055 /* ===== Produktname + Variante trennen ===== */ 9056 .lx-atc-title-main{ 9057 display: block; 9058 font-family: "Lato", sans-serif !important; 9059 font-size: 17px; 9060 line-height: 1.15; 9061 font-weight: 600; 9062 color: #1a2428; 9063 } 9064 9065 .lx-atc-title-sub{ 9066 display: block; 9067 font-size: 13px; 9068 line-height: 1.15; 9069 color: #6a7280; 9070 margin-top: 2px; 9071 font-weight: 400; 9072 } 9073 9074 /* ===== Mobile Drawer etwas höher (1cm Abstand unten) ===== */ 9075 @media (max-width: 749px){ 9076 html.lx-atc-open .lx-atc-drawer{ 9077 transform: translateY(-10px) !important; 9078 } 9079 } 9080 9081</style> 9082
9083<script> 9084(() => { 9085 const html = document.documentElement; 9086 const overlay = document.getElementById('lx-atc-overlay'); 9087 const drawer = document.getElementById('lx-atc-drawer'); 9088 if (!overlay || !drawer) return; 9089 9090 const closeBtn = drawer.querySelector('.lx-atc-drawer__close'); 9091 const continueBtn = drawer.querySelector('#lx-atc-continue'); 9092 9093 const imgEl = drawer.querySelector('#lx-atc-added-img'); 9094 const titleEl = drawer.querySelector('#lx-atc-added-title'); 9095 const priceEl = drawer.querySelector('#lx-atc-added-price'); 9096 const compareEl = drawer.querySelector('#lx-atc-added-compare'); 9097 const saveEl = drawer.querySelector('#lx-atc-added-save'); 9098 const recoList = drawer.querySelector('#lx-atc-reco-list'); 9099 9100 const esc = (s) => String(s || '').replace(/[&<>"']/g, (m) => ( 9101 {'&':'&','<':'<','>':'>','"':'"',"'":'''}[m] 9102 )); 9103 9104 const renderRecos = (recos) => { 9105 if (!recoList) return; 9106 if (!Array.isArray(recos)) return; 9107 if (!recos.length) return; 9108 9109 recoList.innerHTML = recos.map((r) => { 9110 const t = esc(r.title || 'â'); 9111 const p = esc(r.price || ''); 9112 const img = esc(r.img || ''); 9113 const vid = esc((r.variantId || '').toString()); 9114 9115 return ` 9116 <div class="lx-atc-reco-item"> 9117 <div class="lx-atc-reco-item__img">${img ? `<img src="${img}" alt="" loading="lazy" decoding="async">` : ''}</div> 9118 <div> 9119 <div class="lx-atc-reco-item__title">${t}</div> 9120 ${p ? `<div class="lx-atc-reco-item__price">${p}</div>` : ``} 9121 </div> 9122 <button class="lx-atc-reco-item__btn" type="button" data-lx-add-variant="${vid}"> 9123 + Hinzufügen 9124 </button> 9125 </div> 9126 `; 9127 }).join(''); 9128 }; 9129 9130 const openSuccess = (payload = {}) => { 9131 if (titleEl){ 9132 const full = payload.title || ''; 9133 const parts = full.split(' - '); 9134 9135 if(parts.length > 1){ 9136 titleEl.innerHTML = ` 9137 <span class="lx-atc-title-main">${parts[0]}</span> 9138 <span class="lx-atc-title-sub">${parts.slice(1).join(' - ')}</span> 9139 `; 9140 } else { 9141 titleEl.textContent = full; 9142 } 9143} 9144 if (priceEl) priceEl.textContent = payload.price || 'â'; 9145 9146 const cp = (payload.comparePrice || '').trim(); 9147 const pr = (payload.price || '').trim(); 9148 const hasCompare = !!cp && cp !== pr; 9149 9150 if (compareEl) { 9151 compareEl.textContent = hasCompare ? cp : ''; 9152 compareEl.hidden = !hasCompare; 9153 } 9154 9155 const sv = (payload.savings || '').trim(); 9156 const hasSave = hasCompare && !!sv; 9157 9158 if (saveEl) { 9159 saveEl.textContent = hasSave ? `Sie sparen ${sv}` : ''; 9160 saveEl.hidden = !hasSave; 9161 } 9162 9163 if (imgEl) { 9164 const img = (payload.img || '').trim(); 9165 if (img) { 9166 imgEl.src = img; 9167 imgEl.hidden = false; 9168 } else { 9169 imgEl.removeAttribute('src'); 9170 imgEl.hidden = true; 9171 } 9172 } 9173 9174 if (Array.isArray(payload.recos) && payload.recos.length) { 9175 renderRecos(payload.recos); 9176 } 9177 9178 overlay.hidden = false; 9179 drawer.hidden = false; 9180 9181 html.classList.add('lx-atc-open'); 9182 document.body.classList.add('lx-hide-chatty'); 9183 drawer.setAttribute('aria-hidden', 'false'); 9184 overlay.setAttribute('aria-hidden', 'false'); 9185 }; 9186 9187 const close = () => { 9188 html.classList.remove('lx-atc-open'); 9189 document.body.classList.remove('lx-hide-chatty'); 9190 drawer.setAttribute('aria-hidden', 'true'); 9191 overlay.setAttribute('aria-hidden', 'true'); 9192 9193 setTimeout(() => { 9194 overlay.hidden = true; 9195 drawer.hidden = true; 9196 }, 220); 9197 }; 9198 9199 overlay.addEventListener('click', close); 9200 closeBtn && closeBtn.addEventListener('click', close); 9201 continueBtn && continueBtn.addEventListener('click', close); 9202 9203 document.addEventListener('keydown', (e) => { 9204 if (e.key === 'Escape' && html.classList.contains('lx-atc-open')) close(); 9205 }); 9206 9207 // ATC Drawer aktiv â echtes Drawer-Verhalten 9208 window.lxAtcDrawer = { 9209 openSuccess, 9210 close 9211 }; 9212})(); 9213 9214 9215</script>
9215 9216 9217<!-- ProvenExpert Badge --> 9218<style type="text/css">body {-ms-overflow-style: scrollbar;}@media(max-width:991px){#pe_badge_arbyxvhb {display:none !important;}}</style> 9219<a id="pe_badge_arbyxvhb" style="z-index:9999;position:fixed;float:left;line-height:0;right:0px;bottom:160px;" target="_blank" rel="noopener noreferrer"></a>
9219<script type="text/javascript" src="https://www.provenexpert.com/badge/toprecommend.js?id=2xwZkqQAmtGpiuQZiSap5pGAjR3o1RKZ&w=140&key=arbyxvhb&l=de-de" async></script>
9219 9220<!-- ProvenExpert Badge --> 9221 9222 9223 9224 9225 9226 9227<!-- Failed to render app block "7539343560218715217": app block path "shopify://apps/lucky-orange-heatmaps-replay/blocks/lucky_orange_tracking/019b2899-e426-7dbd-b9e7-ff9f0bb0d0f3" does not exist --><div id="shopify-block-AOW9IR2RlVlBCRUh0T__12510727292439481604" class="shopify-block shopify-app-block"> 9228 9229 9230 9231<style> 9232 .wb-btn-trigger { 9233 position: fixed; 9234 9235 bottom: 20px; 9236 left: 20px; 9237 9238 z-index: 9999; 9239 padding: 14px 28px; 9240 background-color: #A9A7A7; 9241 color: #FFFFFF; 9242 border: none; 9243 border-radius: 8px; 9244 cursor: pointer; 9245 font-size: 15px; 9246 font-weight: 600; 9247 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); 9248 transition: all 0.2s ease; 9249 } 9250 9251 .wb-btn-trigger:hover { 9252 transform: translateY(-2px); 9253 box-shadow: 0 6px 20px rgba(0, 0, 0, 0.2); 9254 } 9255 9256 .wb-btn-trigger.wb-btn-center:hover { 9257 transform: translateX(-50%) translateY(-2px); 9258 } 9259 9260 .wb-btn-trigger:active { 9261 transform: translateY(0); 9262 } 9263 9264 .wb-btn-trigger.wb-btn-center:active { 9265 transform: translateX(-50%) translateY(0); 9266 } 9267 9268 .wb-modal-overlay { 9269 display: none; 9270 position: fixed; 9271 top: 0; 9272 left: 0; 9273 width: 100%; 9274 height: 100%; 9275 background-color: rgba(0, 0, 0, 0.5); 9276 z-index: 10000; 9277 justify-content: center; 9278 align-items: center; 9279 padding: 20px; 9280 backdrop-filter: blur(2px); 9281 } 9282 9283 .wb-modal-overlay.wb-active { 9284 display: flex; 9285 animation: fadeIn 0.2s ease; 9286 } 9287 9288 @keyframes fadeIn { 9289 from { opacity: 0; } 9290 to { opacity: 1; } 9291 } 9292 9293 .wb-modal { 9294 background: white; 9295 border-radius: 12px; 9296 width: 100%; 9297 max-width: 650px; 9298 max-height: 90vh; 9299 overflow: hidden; 9300 display: flex; 9301 flex-direction: column; 9302 box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3); 9303 animation: slideUp 0.3s ease; 9304 position: relative; 9305 } 9306 9307 @keyframes slideUp { 9308 from { 9309 transform: translateY(20px); 9310 opacity: 0; 9311 } 9312 to { 9313 transform: translateY(0); 9314 opacity: 1; 9315 } 9316 } 9317 9318 .wb-modal-header { 9319 padding: 24px 60px 20px 28px; 9320 flex-shrink: 0; 9321 } 9322 9323 .wb-modal-title { 9324 margin: 0; 9325 font-size: 20px; 9326 font-weight: 600; 9327 color: #111827; 9328 } 9329 9330 .wb-modal-title--p { 9331 margin: 0; 9332 font-family: var(--font-heading-family, var(--heading-font-family, inherit)); 9333 } 9334 9335 .wb-modal-description { 9336 margin: 8px 0 0 0; 9337 font-size: 14px; 9338 color: #6b7280; 9339 line-height: 1.5; 9340 } 9341 9342 .wb-modal-close { 9343 position: absolute; 9344 top: 20px; 9345 right: 20px; 9346 background: #f3f4f6; 9347 border: none; 9348 font-size: 20px; 9349 cursor: pointer; 9350 padding: 0; 9351 width: 32px; 9352 height: 32px; 9353 display: flex; 9354 align-items: center; 9355 justify-content: center; 9356 border-radius: 6px; 9357 line-height: 1; 9358 color: #6b7280; 9359 transition: all 0.15s ease; 9360 z-index: 1; 9361 } 9362 9363 .wb-modal-close:hover { 9364 background: #e5e7eb; 9365 color: #111827; 9366 } 9367 9368 .wb-modal-close:active { 9369 transform: scale(0.95); 9370 } 9371 9372 .wb-modal-body { 9373 flex: 1; 9374 overflow-y: auto; 9375 display: flex; 9376 flex-direction: column; 9377 min-height: 0; 9378 scrollbar-gutter: stable; 9379 } 9380 9381 .wb-modal-body iframe { 9382 width: 100%; 9383 min-height: 425px; 9384 border: none; 9385 display: block; 9386 flex-shrink: 0; 9387 } 9388 9389 @media (max-width: 768px) { 9390 .wb-btn-trigger { 9391 padding: 12px 20px; 9392 font-size: 14px; 9393 9394 bottom: 16px; 9395 left: 16px; 9396 9397 } 9398 9399 .wb-modal { 9400 max-width: 100%; 9401 max-height: 100vh; 9402 border-radius: 0; 9403 height: 100%; 9404 } 9405 9406 .wb-modal-overlay { 9407 padding: 0; 9408 } 9409 9410 .wb-modal-header { 9411 padding: 20px 20px 16px; 9412 } 9413 } 9414</style> 9415 9416<div class="wb-container"> 9417 9418 9419 <div class="wb-modal-overlay" id="wb-modal-overlay"> 9420 <div class="wb-modal" role="dialog" aria-modal="true" aria-labelledby="wb-modal-title"> 9421 <button type="button" class="wb-modal-close" id="wb-close-btn" aria-label="SchlieÃen">×</button> 9422 <div class="wb-modal-header"> 9423 9424 9425 <h2 class="wb-modal-title" id="wb-modal-title">Widerruf erklären</h2> 9426 9427 9428 9429 9430 <p class="wb-modal-description">Füllen Sie das folgende Formular aus, um Ihre Widerrufserklärung abzugeben.</p> 9431 9432 </div> 9433 <div class="wb-modal-body"> 9434 <iframe 9435 id="wb-iframe" 9436 src="https://euwiderrufsbutton.de/withdrawal/proxy/embed/withdrawal-form?c_shop=ahsvz2-1w.myshopify.com&c_hmac=6d370740648fa0711be3767c4c1944c5d558248f7d703a2bdbdfd932972f6d8c&c_timestamp=1791331200&c_locale=de&c_country=DE&primaryColor=%23A9A7A7&backgroundColor=%23ffffff&textColor=%23212326&borderRadius=8px&maxWidth=100%&showOrderLookup=true&requireOrderNumber=true&hideOrderNotes=false&requireItems=false&confirmStep=false" 9437 title="Withdrawal Form" 9438 loading="lazy" 9439 ></iframe> 9440 </div><div style="margin-bottom:10px; margin-top:10px; justify-content: center; visibility: visible !important; opacity: 1 !important; filter: opacity(1) !important; content-visibility: visible !important; display: flex !important; max-height: 100% !important; overflow: auto !important; width: 100% !important; min-height:20px !important;"> 9441 <!-- BEGIN app snippet: watermark --> 9442 9443 9444 9445 9446 9447 9448 9449 9450 9451 9452 9453 9454 9455 9456 9457 9458 <div style="justify-content: center; visibility: visible !important; opacity: 1 !important; filter: opacity(1) !important; content-visibility: visible !important; display: flex !important; max-height: 100% !important; overflow: auto !important; width: 100% !important; min-height:20px !important;"> 9459 <a 9460 target="_blank" 9461 href="https://apps.shopify.com/eu-widerrufsbutton" 9462 rel="nofollow noopener noreferrer" 9463 style="transform: scale(1) !important; text-decoration: none; color: rgb(20, 20, 20) !important; align-items: center; font-size: 12px !important; font-weight: 500 !important; display: flex !important; gap: 5px !important; visibility: visible !important; opacity: 1 !important; position: relative !important; filter: opacity(1) !important; content-visibility: visible !important; max-height: 100% !important; overflow: auto !important; min-height:20px !important;"> 9464 <img alt="EU Widerrufsbutton logo" src="https://cdn.shopify.com/extensions/01a0fce3-4c6d-76a2-81ad-90d591b1691b/eu-widerruf-button-111/assets/withdrawal_logo_128px.png" style="vertical-align:bottom !important; height:32px !important; width:32px !important; visibility: visible !important; opacity: 1 !important; position: relative !important; filter: opacity(1) !important; content-visibility: visible !important; max-height: 100% !important; overflow: unset !important; display: flex !important; min-height:32px !important; max-width:32px; min-width:32px !important;"/>
9465 <span style="transform: scale(1) !important; font-size: 16px; line-height: 1.4; visibility: visible !important; opacity: 1 !important; position: relative !important; filter: opacity(1) !important; content-visibility: visible !important; max-height: 100% !important; overflow: unset !important; display: flex !important; min-height:20px !important; font-weight:bold !important; color:#1250dc !important;">EU Widerrufsbutton</span> 9466 </a> 9467 </div><!-- END app snippet --> 9468 </div></div> 9469 </div> 9470</div> 9471
9472<script> 9473 (function() { 9474 const triggerBtn = document.getElementById('wb-trigger-btn'); 9475 const modalOverlay = document.getElementById('wb-modal-overlay'); 9476 const closeBtn = document.getElementById('wb-close-btn'); 9477 const iframe = document.getElementById('wb-iframe'); 9478 let lastFocused = null; 9479 // Rendered by Liquid to a plain true/false literal â kept out of the script 9480 // body so no Liquid tag can ever interfere with JS parsing. 9481 const wbsHideOrderNotes = false; 9482 9483 // Expose the global API FIRST, before anything below that could throw in a 9484 // particular theme (dedup query, const captures, listener wiring). Section 9485 // blocks and links call window.withdrawalModal.open()/close(); if this 9486 // registration ever failed, they would silently do nothing and the fallback 9487 // alert would surface instead of the modal. 9488 window.withdrawalModal = { 9489 open: openModal, 9490 close: closeModal 9491 }; 9492 9493 // If the standalone asset built its own overlay before this embed block was 9494 // added (theme-editor section render without a page reload), remove it so 9495 // the two modals do not stack with duplicate IDs and z-index. 9496 var standaloneOverlay = document.querySelector('#wb-modal-overlay[data-wbs-standalone]'); 9497 if (standaloneOverlay && standaloneOverlay.parentNode) { 9498 standaloneOverlay.parentNode.removeChild(standaloneOverlay); 9499 } 9500 9501 // Embed's own server-rendered defaults, captured so a caller block's config 9502 // (heading/description/show_heading/form_color) can be applied on open and 9503 // restored when the embed's own floating button is used. 9504 const defaultEmbedUrl = iframe ? iframe.getAttribute('src') : null; 9505 const headerEl = modalOverlay ? modalOverlay.querySelector('.wb-modal-header') : null; 9506 const defaultHeaderHtml = headerEl ? headerEl.innerHTML : ''; 9507 // The role="dialog" element is the inner .wb-modal, not the overlay wrapper; 9508 // aria-labelledby must be synced there to affect the dialog's accessible name. 9509 const dialogEl = modalOverlay ? modalOverlay.querySelector('.wb-modal') : null; 9510 const defaultAriaLabelledby = dialogEl ? dialogEl.getAttribute('aria-labelledby') : null; 9511 9512 function applyBlockConfig(cfg) { 9513 if (!cfg) return; 9514 if (iframe && cfg.embedUrl && iframe.getAttribute('src') !== cfg.embedUrl) { 9515 iframe.setAttribute('src', cfg.embedUrl); 9516 // Fresh iframe load: reset to the config's default height; the form 9517 // re-sends setHeight once loaded. Same-src re-opens preserve the 9518 // current height so a taller form is not clipped back to the default. 9519 if (typeof cfg.hideOrderNotes === 'boolean') { 9520 iframe.style.height = cfg.hideOrderNotes ? '425px' : '570px'; 9521 } 9522 } 9523 if (headerEl) { 9524 if (cfg.showHeading) { 9525 headerEl.style.display = ''; 9526 // The embed's own server-rendered header only contains title/description 9527 // when the embed's Show Heading is on; when the merchant disabled it 9528 // those nodes do not exist, so create them for the caller's config. 9529 var titleEl = headerEl.querySelector('.wb-modal-title'); 9530 if (!titleEl && cfg.heading) { 9531 titleEl = document.createElement('h2'); 9532 titleEl.className = 'wb-modal-title'; 9533 headerEl.insertBefore(titleEl, headerEl.firstChild); 9534 } 9535 if (titleEl) { 9536 titleEl.textContent = cfg.heading || ''; 9537 titleEl.id = 'wb-modal-title'; 9538 if (dialogEl) dialogEl.setAttribute('aria-labelledby', 'wb-modal-title'); 9539 } else if (dialogEl) { 9540 dialogEl.removeAttribute('aria-labelledby'); 9541 } 9542 var descEl = headerEl.querySelector('.wb-modal-description'); 9543 if (!descEl && cfg.description) { 9544 descEl = document.createElement('p'); 9545 descEl.className = 'wb-modal-description'; 9546 headerEl.appendChild(descEl); 9547 } 9548 if (descEl) descEl.textContent = cfg.description || ''; 9549 } else { 9550 headerEl.style.display = 'none'; 9551 if (dialogEl) dialogEl.removeAttribute('aria-labelledby'); 9552 } 9553 } 9554 } 9555 9556 function restoreEmbedDefaults() { 9557 if (iframe && defaultEmbedUrl && iframe.getAttribute('src') !== defaultEmbedUrl) { 9558 iframe.setAttribute('src', defaultEmbedUrl); 9559 iframe.style.height = wbsHideOrderNotes ? '425px' : '570px'; 9560 } 9561 if (headerEl) { 9562 headerEl.style.display = ''; 9563 headerEl.innerHTML = defaultHeaderHtml; 9564 } 9565 if (dialogEl) {
9566 if (defaultAriaLabelledby) { 9567 dialogEl.setAttribute('aria-labelledby', defaultAriaLabelledby); 9568 } else { 9569 dialogEl.removeAttribute('aria-labelledby'); 9570 } 9571 } 9572 } 9573 9574 function openModal(blockId) { 9575 if (modalOverlay) { 9576 // A button block with "hide outside EU" sets this flag for non-EU 9577 // visitors; URL/hash triggers must not open the form either. 9578 if (window.__wbsEuHidden) return; 9579 // Re-entry safe: same-document #eu-withdrawal=open clicks fire the click 9580 // handler AND a hashchange (which calls openModal again); without this 9581 // guard the second call overwrites lastFocused with the close button 9582 // and focus restore on close drops to <body>. 9583 if (modalOverlay.classList.contains('wb-active')) return; 9584 var cfg = blockId && window.WITHDRAWAL_EMBED_CONFIG && window.WITHDRAWAL_EMBED_CONFIG[blockId]; 9585 if (cfg) applyBlockConfig(cfg); else restoreEmbedDefaults(); 9586 lastFocused = document.activeElement; 9587 modalOverlay.classList.add('wb-active'); 9588 document.body.style.overflow = 'hidden'; 9589 if (closeBtn) closeBtn.focus(); 9590 } 9591 } 9592 9593 function closeModal() { 9594 if (modalOverlay) { 9595 modalOverlay.classList.remove('wb-active'); 9596 document.body.style.overflow = ''; 9597 if (lastFocused && typeof lastFocused.focus === 'function') { 9598 lastFocused.focus(); 9599 } 9600 lastFocused = null; 9601 } 9602 } 9603 9604 if (triggerBtn) { 9605 triggerBtn.addEventListener('click', function() { openModal(); }); 9606 } 9607 9608 if (closeBtn) { 9609 closeBtn.addEventListener('click', closeModal); 9610 } 9611 9612 if (modalOverlay) { 9613 modalOverlay.addEventListener('click', function(e) { 9614 if (e.target === modalOverlay) closeModal(); 9615 }); 9616 9617 document.addEventListener('keydown', function(e) { 9618 if (e.key === 'Escape' && modalOverlay.classList.contains('wb-active')) { 9619 closeModal(); 9620 return; 9621 } 9622 // Keep focus inside the open dialog while tabbing. 9623 if (e.key === 'Tab' && modalOverlay.classList.contains('wb-active')) { 9624 const focusables = modalOverlay.querySelectorAll('button, [href], iframe, [tabindex]:not([tabindex="-1"])'); 9625 if (!focusables.length) return; 9626 const first = focusables[0]; 9627 const last = focusables[focusables.length - 1]; 9628 if (e.shiftKey && (document.activeElement === first || document.activeElement === modalOverlay)) { 9629 e.preventDefault(); 9630 last.focus(); 9631 } else if (!e.shiftKey && document.activeElement === last) { 9632 e.preventDefault(); 9633 first.focus(); 9634 } 9635 } 9636 }); 9637 } 9638 9639 window.addEventListener('message', function(event) { 9640 if (event.data.type === 'setHeight' && iframe && event.data.height > 0) { 9641 iframe.style.height = event.data.height + 'px'; 9642 } 9643 }); 9644 9645 if (iframe) { 9646 iframe.style.height = wbsHideOrderNotes ? '425px' : '570px'; 9647 } 9648 9649 function withdrawalTriggerInSearch() { 9650 return new URLSearchParams(window.location.search).get('eu-withdrawal') === 'open'; 9651 } 9652 9653 function withdrawalTriggerInHash() { 9654 return new URLSearchParams((window.location.hash || '').replace(/^#/, '')).get('eu-withdrawal') === 'open'; 9655 } 9656 9657 function clearWithdrawalTrigger() { 9658 if (!(window.history && window.history.replaceState)) return; 9659 var params = new URLSearchParams(window.location.search); 9660 params.delete('eu-withdrawal'); 9661 var newSearch = params.toString(); 9662 var newHash = ''; 9663 var hash = window.location.hash || ''; 9664 if (withdrawalTriggerInHash()) { 9665 var hashParams = new URLSearchParams(hash.replace(/^#/, '')); 9666 hashParams.delete('eu-withdrawal'); 9667 var rebuiltHash = hashParams.toString(); 9668 if (rebuiltHash) newHash = '#' + rebuiltHash; 9669 } else { 9670 // Trigger came from the search parameter: keep the fragment verbatim, 9671 // so plain-word fragments like #reviews are not mangled. 9672 newHash = hash; 9673 } 9674 var newUrl = window.location.pathname + (newSearch ? '?' + newSearch : '') + newHash; 9675 window.history.replaceState(null, '', newUrl); 9676 } 9677 9678 function openFromUrlTrigger() { 9679 if (withdrawalTriggerInSearch() || withdrawalTriggerInHash()) { 9680 openModal(); 9681 clearWithdrawalTrigger(); 9682 } 9683 } 9684 9685 openFromUrlTrigger(); 9686 9687 window.addEventListener('hashchange', function() { 9688 if (withdrawalTriggerInHash()) { 9689 openModal(); 9690 clearWithdrawalTrigger(); 9691 } 9692 }); 9693 9694 // Same-document re-clicks: after the fragment was stripped, clicking a link 9695 // to the identical #eu-withdrawal=open hash fires no hashchange. Open the 9696 // modal directly for links whose target is this document; cross-document 9697 // navigations are handled by the initial-load check on the target page. 9698 document.addEventListener('click', function(e) { 9699 var target = e.target; 9700 var link = target && target.closest ? target.closest('a[href*="eu-withdrawal"]') : null; 9701 if (!link) return; 9702 var url;
9703 try { 9704 url = new URL(link.getAttribute('href'), window.location.href); 9705 } catch (err) { 9706 return; 9707 } 9708 if (!url.hash) return; 9709 if (new URLSearchParams(url.hash.replace(/^#/, '')).get('eu-withdrawal') !== 'open') return; 9710 if (url.pathname === window.location.pathname && url.search === window.location.search) { 9711 openModal(); 9712 } 9713 }); 9714 })(); 9715</script>
9715 9716</div><div id="shopify-block-AZFd6aGFnS21FS1hVa__13768625480086291342" class="shopify-block shopify-app-block">
9716<script> 9717 window['ShopifyForms'] = { 9718 ...window['ShopifyForms'], 9719 currentPageType: "cart" 9720 }; 9721</script>
9721 9722 9723 9724</div><div id="shopify-block-AdlhZazdFQTVWS3ZzY__13762318497758424536" class="shopify-block shopify-app-block"><style> 9725 .wl-btn-link { 9726 display: inline-block; 9727 text-decoration: none !important; 9728 font-weight: 600 !important; 9729 padding: 10px 24px !important; 9730 font-size: 15px !important;background-color: #000000 !important; 9731 color: #FFFFFF !important; 9732 border: none; 9733 border-radius: 8px !important;text-align: center !important; 9734 cursor: pointer !important; 9735 transition: all 0.2s ease; 9736 } 9737 9738 .wl-btn-link:hover {opacity: 0.85;} 9739 9740 .wl-btn-link:active { 9741 transform: scale(0.98); 9742 } 9743</style> 9744
9745<script> 9746 (function() { 9747 var selector = "\/pages\/widerruf-formular"; 9748 if (!selector) return; 9749 9750 function isTriggerLink(href) { 9751 if (!href) return false; 9752 var url; 9753 try { url = new URL(href, window.location.href); } catch (e) { return false; } 9754 if (url.hash) { 9755 var hashParams = new URLSearchParams(url.hash.replace(/^#/, '')); 9756 if (hashParams.get('eu-withdrawal') === 'open') return true; 9757 } 9758 if (url.search) { 9759 var searchParams = new URLSearchParams(url.search); 9760 if (searchParams.get('eu-withdrawal') === 'open') return true; 9761 } 9762 return false; 9763 } 9764 9765 function apply() { 9766 var links = document.querySelectorAll('a[href*="' + selector + '"], a[href*="eu-withdrawal"]'); 9767 for (var i = 0; i < links.length; i++) { 9768 var href = links[i].getAttribute('href') || ''; 9769 if (href.indexOf(selector) !== -1 || isTriggerLink(href)) { 9770 links[i].classList.add('wl-btn-link'); 9771 } 9772 } 9773 } 9774 9775 if (document.readyState === 'loading') { 9776 document.addEventListener('DOMContentLoaded', apply); 9777 } else { 9778 apply(); 9779 } 9780 })(); 9781</script>
9781 9782</div><div id="shopify-block-AV1c1MGppS3Bld2V0Z__1967102994182284862" class="shopify-block shopify-app-block"><!-- BEGIN app snippet: connected_sdk_script -->
9782<script src='https://www.paypalobjects.com/pa/js/min/pa.js'></script>
9782 9783
9784<script 9785 src='https://www.paypal.com/sdk/js?client-id=AbtXlp5R3xc83T9xW_ZXKTK8IVZ-14EMelDioU4VC285IqSuxUI4yotKxjV0sz_X6YsONYi10vSBPNKM&merchant-id=JGQBD3GDFKK64&components=messages' 9786 data-namespace='PayPalSDK' 9787 data-partner-attribution-id='JADEDPIXEL_SHOPPINGCART_EC_CA' 9788></script>
9788 9789<!-- END app snippet --><!-- BEGIN app snippet: utils -->
9789<script> 9790 // ============================================ 9791 // Core Utilities 9792 // ============================================ 9793 9794 // Setup FPTI Analytics 9795 if (PAYPAL && PAYPAL.analytics) { 9796 PAYPAL.analytics.setup({ 9797 data: { 9798 pgrp: 'shopify:messaging:app-embed', 9799 comp: 'shopify-app-embed', 9800 }, 9801 }); 9802 } 9803 9804 const recordEvent = (event_name, additionalData) => { 9805 PAYPAL.analytics.instance.recordEvent(event_name, { 9806 theme: window?.Shopify?.theme?.name || 'unknown', 9807 shop: window?.Shopify?.shop || 'unknown', 9808 path: window.location.pathname, 9809 flow: 'Shopify - Pay Later', 9810 space_key: 'SKD8GM', 9811 ...additionalData, 9812 }); 9813 }; 9814 9815 // In Theme Editor when using Advanced Settings 9816 // User chooses copy as JS Path from their browser 9817 // The pasted value will be a string that contains "document.querySelector("...") 9818 // Remove document.querySelector(" and ") 9819 // Using JS Path we can ensure the path to the element is accurate 9820 const parseSelector = (selector) => { 9821 try { 9822 // Handle both single and double quotes 9823 return selector 9824 .replace(/document\.querySelector\(["']/g, '') 9825 .replace(/["']\)/g, ''); 9826 } catch (e) { 9827 recordEvent('appEmbed:parseSelector:error', { error: e.message }); 9828 } 9829 }; 9830 9831 // Waits for Element to be rendered 9832 // Uses mutation observer to watch for changes in the DOM 9833 // https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver 9834 // On changes, check for the selector again 9835 const waitForElement = (selector) => { 9836 try { 9837 return new Promise((resolve) => { 9838 const existing = document.querySelector(selector); 9839 if (existing) return resolve(existing); 9840 9841 const observer = new MutationObserver(() => { 9842 const el = document.querySelector(selector); 9843 if (el) { 9844 observer.disconnect(); 9845 resolve(el); 9846 } 9847 }); 9848 9849 observer.observe(document.body, { 9850 childList: true, 9851 subtree: true, 9852 }); 9853 }); 9854 } catch (e) { 9855 recordEvent('appEmbed:waitForElement:error', { error: e.message }); 9856 } 9857 }; 9858 9859 // Formats correct cart/drawer subtotal and adds or updates messaging 9860 const addOrUpdateMessagingPriceAttribute = async (price, locator, messaging) => { 9861 try { 9862 // Format price to 2 decimal places ex: 150000 => 1500.00 9863 // Messaging requires price to be in string format 9864 const formattedPrice = Number((price / 100).toFixed(2)).toString(); 9865 9866 const messagingId = messaging.id; 9867 const existingMessaging = document.getElementById(messagingId); 9868 9869 if (existingMessaging) { 9870 // Update the data-pp-amount attribute on the existing element 9871 existingMessaging.setAttribute('data-pp-amount', formattedPrice); 9872 } else { 9873 const element = await waitForElement(locator); 9874 9875 const updatedPriceMessaging = messaging.cloneNode(); 9876 updatedPriceMessaging.setAttribute('data-pp-amount', formattedPrice); 9877 9878 element.after(updatedPriceMessaging); 9879 } 9880 } catch (e) { 9881 recordEvent('appEmbed:addOrUpdateMessagingPriceAttribute:error', { error: e.message }); 9882 } 9883 }; 9884 9885 // Fetches cart details from Shopify cart endpoint 9886 const fetchCartDetails = async () => { 9887 try { 9888 const response = await fetch('/cart.js'); 9889 const cart = await response.json(); 9890 9891 return cart.total_price; 9892 } catch (e) { 9893 recordEvent('appEmbed:fetchCartDetails:error', { error: e.message }); 9894 } 9895 }; 9896 9897 // Fetches variant details Shopify product endpoint 9898 // https://shopify.dev/docs/api/ajax/reference/product 9899 const fetchVariant = async () => { 9900 try { 9901 // Ex: https://test-store.myshopify.com/products/the-multi-location-snowboard?variant=45268551368883 9902 const urlParams = new URLSearchParams(window.location.search); 9903 const urlVariantId = parseInt(urlParams.get('variant'), 10); 9904 const productHandle = window.location.pathname.split('/products/')[1]?.split('?')[0]; 9905 9906 const response = await fetch(`/products/${productHandle}.js`); 9907 const productData = await response.json(); 9908 const variants = productData.variants; 9909 const selectedVariant = variants.find(v => v.id === urlVariantId); 9910 9911 if (selectedVariant) { 9912 return selectedVariant; 9913 } 9914 9915 return variants.find(v => v.available) || variants[0]; 9916 } catch (e) { 9917 recordEvent('appEmbed:fetchVariant:error', { error: e.message }); 9918 } 9919 }; 9920 9921 // Get the selected variant ID from URL, form input, or select element
9922 const getSelectedVariantId = () => { 9923 try { 9924 const urlParams = new URLSearchParams(window.location.search); 9925 const urlVariant = urlParams.get('variant'); 9926 if (urlVariant) return parseInt(urlVariant, 10); 9927 9928 const formInput = document.querySelector('form[action*="/cart/add"] input[name="id"]'); 9929 if (formInput?.value) return parseInt(formInput.value, 10); 9930 9931 const selectInput = document.querySelector('form[action*="/cart/add"] select[name="id"]'); 9932 if (selectInput?.value) return parseInt(selectInput.value, 10); 9933 9934 return null; 9935 } catch (e) { 9936 recordEvent('appEmbed:getSelectedVariantId:error', { error: e.message }); 9937 return null; 9938 } 9939 }; 9940 9941 const getShopifyData = () => { 9942 try { 9943 const selectedVariantId = getSelectedVariantId(); 9944 9945 const findVariant = (variants) => { 9946 if (!variants?.length) return null; 9947 if (selectedVariantId) { 9948 const selected = variants.find(v => v.id === selectedVariantId); 9949 if (selected) return selected; 9950 } 9951 return variants.find(v => v.available) || variants[0]; 9952 }; 9953 9954 if (window.meta?.product) { 9955 const product = window.meta.product; 9956 const variant = findVariant(product.variants); 9957 return { 9958 product: { title: product.title, vendor: product.vendor, type: product.type, id: product.id }, 9959 price: variant ? { 9960 priceInCents: variant.price, 9961 compareAtPrice: variant.compare_at_price, 9962 currency: window.Shopify?.currency?.active || 'USD', 9963 variantId: variant.id, 9964 variantTitle: variant.title 9965 } : null 9966 }; 9967 } 9968 9969 if (window.ShopifyAnalytics?.meta?.product) { 9970 const product = window.ShopifyAnalytics.meta.product; 9971 const variant = findVariant(product.variants); 9972 return { 9973 product: { title: product.title, vendor: product.vendor, id: product.id }, 9974 price: variant ? { 9975 priceInCents: variant.price, 9976 currency: window.Shopify?.currency?.active || 'USD', 9977 variantId: variant.id 9978 } : null 9979 }; 9980 } 9981 9982 return null; 9983 } catch (e) { 9984 recordEvent('appEmbed:getShopifyData:error', { error: e.message }); 9985 return null; 9986 } 9987 }; 9988 9989 // Generic function to watch for changes in the DOM 9990 // and listen for specific API calls made by the Shopify store 9991 // Callback provides specific logic for handling the response 9992 const watchForChanges = (locator, messaging, callback) => { 9993 try { 9994 // Overrides the native `fetch` function to listen for specific API calls. 9995 // Wrapped in an Immediately Invoked Function Expression (IIFE) 9996 // To avoid polluting the global namespace. 9997 (function (window, windowFetch) { 9998 // Check if `fetch` is a function. If not, exit early. 9999 if (typeof fetch !== 'function') return; 10000 10001 window.fetch = function () { 10002 // Call the original `fetch` function with the provided arguments. 10003 const response = windowFetch.apply(this, arguments); 10004 10005 response.then(async (res) => { 10006 if (typeof callback === 'function') { 10007 callback(res, locator, messaging); 10008 } 10009 }); 10010 10011 // Return the original `fetch` response. 10012 return response; 10013 }; 10014 })(window, window.fetch); 10015 } catch (e) { 10016 recordEvent('appEmbed:watchForChanges:error', { error: e.message }); 10017 } 10018 }; 10019 10020 // Provides ability to watch for cart changes 10021 // such as increment, decrement, or remove items 10022 // Also handles adding new items which opens Cart Drawer 10023 // and updates the messaging with the new cart total 10024 // This function is used for both Cart Drawer and Cart Page 10025 const watchForCartChanges = (locator, messaging) => { 10026 const cartChangeCallback = async (res, locator, messaging) => { 10027 // Determine the id of messaging div either #paypal-upstream-messaging-cart-{page | drawer} 10028 const messagingId = messaging.id; 10029 10030 // Changes (e.g., increment, decrement, or remove items). 10031 if (res.url.includes('/cart/change')) { 10032 // Clone the response to read its JSON data without consuming the original response. 10033 res 10034 .clone() 10035 .json() 10036 .then((data) => { 10037 addOrUpdateMessagingPriceAttribute(data.total_price, locator, messaging); 10038 }); 10039 10040 // Called when adding a new item which opens Cart Drawer 10041 } else if (res.url.includes('/cart/add')) { 10042 // Adding items does not return the updated cart details, 10043 // Fetch the updated cart details (e.g., total_price). 10044 const updatedPrice = await fetchCartDetails(); 10045 10046 // Introduce a delay to handle potential race conditions where the cart drawer has not rendered yet. 10047 setTimeout(async () => { 10048 await addOrUpdateMessagingPriceAttribute(updatedPrice, locator, messaging); 10049 }, 500); 10050 } 10051 }; 10052 10053 watchForChanges(locator, messaging, cartChangeCallback); 10054 }; 10055
10056 // Provides ability to watch for product specific changes 10057 // such as variant selection on product pages 10058 const watchForProductChanges = (locator, messaging) => { 10059 let lastVariantId = new URLSearchParams(window.location.search).get('variant'); 10060 10061 const handleVariantChange = async () => { 10062 const currentVariantId = new URLSearchParams(window.location.search).get('variant'); 10063 if (currentVariantId && currentVariantId !== lastVariantId) { 10064 lastVariantId = currentVariantId; 10065 10066 const newVariantData = await fetchVariant(); 10067 const newPriceInCents = newVariantData?.price; 10068 10069 if (newPriceInCents) { 10070 await addOrUpdateMessagingPriceAttribute(newPriceInCents, locator, messaging); 10071 } else { 10072 recordEvent('appEmbed:watchForProductChanges:error:noNewVariantPrice'); 10073 } 10074 } 10075 }; 10076 10077 // Shopify themes can either handle variant changes on the client-side or server-side (via variant API calls) 10078 // We will "intercept" and handle variant changes by: 10079 // 1. Watching for URL changes 10080 const _pushState = history.pushState.bind(history); 10081 const _replaceState = history.replaceState.bind(history); 10082 10083 history.pushState = function (...args) { 10084 _pushState(...args); 10085 handleVariantChange(); 10086 }; 10087 10088 history.replaceState = function (...args) { 10089 _replaceState(...args); 10090 handleVariantChange(); 10091 }; 10092 10093 // 2. Watching for back/forward browser clicks 10094 window.addEventListener('popstate', handleVariantChange); 10095 10096 // 3. Fallback: Watching for variant API calls 10097 // Future optimization: This fallback could be removed if all Shopify themes can be handled with 1. and 2. 10098 const productChangeCallback = async (res, locator, messaging) => { 10099 if (res.url.includes('/variants')) { 10100 await handleVariantChange(); 10101 return; 10102 } 10103 }; 10104 10105 watchForChanges(locator, messaging, productChangeCallback); 10106 }; 10107</script>
10107 10108<!-- END app snippet --><!-- BEGIN app snippet: price-detection -->
10108<script> 10109 // ============================================ 10110 // Price Detection & Element Scoring 10111 // Depends on: utils.liquid (recordEvent, getShopifyData) 10112 // ============================================ 10113 10114 const extractPriceFromText = (text) => { 10115 const match = text.match(/[\d,]+\.?\d*/); 10116 if (!match) return null; 10117 return parseFloat(match[0].replace(/,/g, '')); 10118 }; 10119 10120 const textMatchesPrice = (text, knownPriceInCents) => { 10121 const extracted = extractPriceFromText(text); 10122 if (extracted === null) return false; 10123 const knownPrice = knownPriceInCents / 100; 10124 return Math.abs(extracted - knownPrice) < 0.01; 10125 }; 10126 10127 const hasStrikethrough = (element) => { 10128 let el = element; 10129 while (el && el !== document.body) { 10130 const style = getComputedStyle(el); 10131 if (style.textDecoration.includes('line-through') || 10132 style.textDecorationLine?.includes('line-through')) { 10133 return true; 10134 } 10135 if (['S', 'DEL', 'STRIKE'].includes(el.tagName)) { 10136 return true; 10137 } 10138 el = el.parentElement; 10139 } 10140 return false; 10141 }; 10142 10143 // Find the add-to-cart button. Result is cached since the button doesn't change per page load. 10144 let _cachedAddToCartButton; 10145 const findAddToCartButton = () => { 10146 if (_cachedAddToCartButton !== undefined) return _cachedAddToCartButton; 10147 try { 10148 const formButton = document.querySelector('form[action*="/cart/add"] button[type="submit"]'); 10149 if (formButton) return (_cachedAddToCartButton = formButton); 10150 10151 const buttons = document.querySelectorAll('button'); 10152 for (const btn of buttons) { 10153 const text = btn.textContent.toLowerCase(); 10154 if (text.includes('add to cart') || text.includes('add to bag') || 10155 text.includes('buy now') || text.includes('add to basket')) { 10156 return (_cachedAddToCartButton = btn); 10157 } 10158 } 10159 10160 return (_cachedAddToCartButton = null); 10161 } catch (e) { 10162 recordEvent('appEmbed:findAddToCartButton:error', { error: e.message }); 10163 return (_cachedAddToCartButton = null); 10164 } 10165 }; 10166 10167 // Find element containing specific text (used for product title proximity). 10168 // Result is cached per text string â title is static per page load and scoreElement 10169 // calls this once per candidate, so without caching it's O(candidates) full DOM walks. 10170 let _titleElementCache = {}; 10171 const findElementContainingText = (text) => { 10172 if (text in _titleElementCache) return _titleElementCache[text]; 10173 try { 10174 const normalizedText = text.toLowerCase().trim(); 10175 const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT); 10176 10177 let node; 10178 while (node = walker.nextNode()) { 10179 const nodeText = node.textContent.trim().toLowerCase(); 10180 if (nodeText.length > 5 && normalizedText.includes(nodeText.substring(0, 20))) { 10181 const el = node.parentElement; 10182 const rect = el.getBoundingClientRect(); 10183 if (rect.width > 0 && rect.height > 0) { 10184 const fontSize = parseFloat(getComputedStyle(el).fontSize); 10185 if (fontSize >= 16) return (_titleElementCache[text] = el); 10186 } 10187 } 10188 } 10189 return (_titleElementCache[text] = null); 10190 } catch (e) { 10191 return null; 10192 } 10193 }; 10194 10195 const getViewportThresholds = () => { 10196 const vh = window.innerHeight; 10197 const isMobile = window.innerWidth < 768; 10198 10199 return { 10200 position: [[vh * 0.6, 50], [vh * 1.2, 30], [vh * 2.0, 10]], 10201 fontSize: [ 10202 [isMobile ? 18 : 24, 40], 10203 [isMobile ? 14 : 18, 25], 10204 [isMobile ? 12 : 14, 10], 10205 ], 10206 proximity: { 10207 close: isMobile ? 60 : 100, 10208 medium: isMobile ? 120 : 200, 10209 far: isMobile ? 240 : 400, 10210 }, 10211 }; 10212 }; 10213 10214 const getTieredScore = (value, tiers, defaultScore = 0) => { 10215 for (const [threshold, points] of tiers) { 10216 if (value < threshold) return points; 10217 } 10218 return defaultScore; 10219 }; 10220 10221 // Scores a DOM element on how likely it is to be the product's main price. 10222 // Higher score = better candidate. Factors: 10223 // - Position on page (elements higher up score better) 10224 // - Font size (larger text = more likely a displayed price) 10225 // - Proximity to product title and add-to-cart button 10226 // - Structural exclusions (footer/header/nav/hidden = heavy penalty) 10227 // - Strikethrough detection (compare-at prices = heavy penalty) 10228 const scoreElement = (element, productMeta = null, debug = false) => { 10229 let score = 0; 10230 const breakdown = debug ? {} : null; 10231 const { position, fontSize, proximity } = getViewportThresholds(); 10232 const { close, medium, far } = proximity; 10233 const rect = element.getBoundingClientRect(); 10234 10235 // POSITION ON PAGE 10236 const absoluteTop = rect.top + window.scrollY; 10237 const posScore = getTieredScore(absoluteTop, position, -30); 10238 score += posScore; 10239 if (debug) breakdown.position = `${posScore >= 0 ? '+' : ''}${posScore} (top ${Math.round(absoluteTop)}px)`; 10240 10241 // FONT SIZE 10242 const fontPx = parseFloat(getComputedStyle(element).fontSize); 10243 const fontScore = fontSize.find(([t]) => fontPx >= t)?.[1] ?? -10; 10244 score += fontScore; 10245 if (debug) breakdown.fontSize = `${fontScore >= 0 ? '+' : ''}${fontScore} (${fontPx}px)`; 10246 10247 // PROXIMITY TO PRODUCT TITLE 10248 if (productMeta?.title) { 10249 const titleElement = findElementContainingText(productMeta.title); 10250 if (titleElement) { 10251 const distance = Math.abs(titleElement.getBoundingClientRect().bottom - rect.top); 10252 const titleScore = getTieredScore(distance, [[close, 40], [medium, 25], [far, 10]], 0); 10253 score += titleScore; 10254 if (debug) breakdown.titleProximity = `+${titleScore} (${Math.round(distance)}px)`; 10255 } else if (debug) { 10256 breakdown.titleProximity = 'title element not found'; 10257 } 10258 } else if (debug) { 10259 breakdown.titleProximity = 'no product title'; 10260 } 10261 10262 // PROXIMITY TO ADD-TO-CART BUTTON 10263 const addButton = findAddToCartButton(); 10264 if (addButton) { 10265 const distance = Math.abs(addButton.getBoundingClientRect().top - rect.top); 10266 const cartScore = getTieredScore(distance, [[close, 30], [medium, 20], [far, 10]], 0); 10267 score += cartScore; 10268 if (debug) breakdown.cartProximity = `+${cartScore} (${Math.round(distance)}px)`; 10269 } else if (debug) { 10270 breakdown.cartProximity = 'add-to-cart not found'; 10271 } 10272 10273 // STRUCTURAL EXCLUSIONS 10274 const exclusions = [ 10275 ['footer, header, nav', 'in footer/header/nav'], 10276 ['button, a[href*="/cart"], [type="submit"]', 'in button/link'], 10277 ['[aria-hidden="true"], [hidden], .hidden, .visually-hidden', 'hidden'], 10278 ]; 10279 for (const [selector, reason] of exclusions) { 10280 if (element.closest(selector)) { 10281 score -= 100; 10282 if (debug) breakdown.structural = `-100 (${reason})`; 10283 break; 10284 } 10285 } 10286 if (debug && !breakdown.structural) breakdown.structural = '+0'; 10287 10288 // STRIKETHROUGH 10289 if (hasStrikethrough(element)) { 10290 score -= 100; 10291 if (debug) breakdown.strikethrough = '-100 (compare-at price)'; 10292 } else if (debug) { 10293 breakdown.strikethrough = '+0'; 10294 } 10295 10296 if (debug) { 10297 breakdown.totalScore = score; 10298 breakdown.elementText = element.textContent.trim().substring(0, 30); 10299 breakdown.elementTag = element.tagName; 10300 } 10301 10302 return debug ? { score, breakdown } : score; 10303 }; 10304 10305 // Find all elements containing a specific price value 10306 const findElementsWithPrice = (knownPriceInCents, productMeta = null, debug = false, log = () => {}) => { 10307 const candidates = []; 10308 const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT); 10309 10310 let node; 10311 while (node = walker.nextNode()) { 10312 const text = node.textContent.trim(); 10313 if (text.length > 30 || !textMatchesPrice(text, knownPriceInCents)) continue; 10314 10315 const element = node.parentElement; 10316 const rect = element.getBoundingClientRect(); 10317 10318 if (rect.width === 0 || rect.height === 0 || hasStrikethrough(element)) continue; 10319 10320 const score = scoreElement(element, productMeta, false); 10321 candidates.push({ element, text, score }); 10322 } 10323 10324 if (debug && candidates.length > 0) { 10325 candidates.sort((a, b) => b.score - a.score); 10326 log(` Candidates: ${candidates.length}, top: score=${candidates[0].score}, text="${candidates[0].text}"`); 10327 } 10328 10329 return candidates; 10330 }; 10331 10332 // Find the /cart/add form by traversing from the price element 10333 // This is more reliable than name-based container detection since all Shopify themes have this form 10334 const findCartFormFromPrice = (priceElement, debug = false, log = () => {}) => { 10335 let el = priceElement; 10336 10337 while (el && el !== document.body) { 10338 if (el.tagName === 'FORM' && el.action?.includes('/cart/add')) { 10339 if (debug) log(` Found /cart/add form (element itself)`); 10340 return el; 10341 } 10342 10343 let sibling = el.nextElementSibling; 10344 while (sibling) { 10345 if (sibling.tagName === 'FORM' && sibling.action?.includes('/cart/add')) { 10346 if (debug) log(` Found /cart/add form as sibling`); 10347 return sibling; 10348 } 10349 // Check if sibling contains the form 10350 const formInSibling = sibling.querySelector('form[action*="/cart/add"]'); 10351 if (formInSibling) { 10352 if (debug) log(` Found /cart/add form inside sibling`); 10353 return formInSibling; 10354 } 10355 sibling = sibling.nextElementSibling; 10356 } 10357 10358 el = el.parentElement; 10359 } 10360 10361 if (debug) log(` No /cart/add form found`); 10362 return null; 10363 }; 10364 10365 // Fallback: walk up from the price text element to find a suitable wrapper. 10366 // Used when no /cart/add form exists near the price element. 10367 const findPriceContainer = (priceElement) => { 10368 let el = priceElement; 10369 let bestContainer = priceElement; 10370 10371 while (el && el !== document.body) { 10372 // Look for elements with price-related IDs (common Shopify pattern) 10373 if (el.id && /price/i.test(el.id)) { 10374 bestContainer = el; 10375 } 10376 // Look for elements with price-related classes that seem like containers 10377 if (el.className && typeof el.className === 'string') { 10378 const classes = el.className.toLowerCase(); 10379 if (/\bprice\b/.test(classes) && !/price-item|price__regular|price__sale/.test(classes)) { 10380 bestContainer = el; 10381 } 10382 } 10383 // Stop at major structural elements 10384 if (el.tagName === 'SECTION' || el.tagName === 'ARTICLE' || el.tagName === 'MAIN') { 10385 break; 10386 } 10387 el = el.parentElement; 10388 } 10389 10390 return bestContainer; 10391 }; 10392 10393 // Try common Shopify theme price selectors (Dawn and derivatives) 10394 const findPriceByTemplateSelector = (debug = false, log = () => {}) => { 10395 const selectors = [ 10396 '[id*="price-template"]', // Dawn theme pattern 10397 '.price-item--regular:not(s):not(del)',
10398 '[data-product-price]', 10399 ]; 10400 10401 for (const selector of selectors) { 10402 const el = document.querySelector(selector); 10403 if (el && !hasStrikethrough(el)) { 10404 if (debug) log(`Template selector found: ${selector}`); 10405 return el; 10406 } 10407 } 10408 return null; 10409 }; 10410 10411 // Check if we're in an isolated/sandboxed iframe (theme editor) 10412 const isIsolatedContext = () => { 10413 if (window === window.top) return false; // Not in iframe 10414 try { 10415 // Try to access parent - if cross-origin, we're isolated 10416 const test = window.parent.document; 10417 return false; // Can access parent, not isolated 10418 } catch (e) { 10419 return true; // Cross-origin, we're isolated 10420 } 10421 }; 10422 10423 // Try to find price element in sibling iframes (theme editor workaround) 10424 const findPriceInSiblingIframes = (knownPriceInCents) => { 10425 const iframes = document.querySelectorAll('iframe'); 10426 10427 for (const iframe of iframes) { 10428 try { 10429 const iframeDoc = iframe.contentDocument || iframe.contentWindow?.document; 10430 if (!iframeDoc) continue; 10431 10432 const priceElement = iframeDoc.querySelector('.price-item, .price, [data-product-price]'); 10433 if (priceElement) { 10434 return { element: priceElement, document: iframeDoc }; 10435 } 10436 } catch (e) { 10437 // Cross-origin iframe, skip 10438 } 10439 } 10440 10441 return null; 10442 }; 10443 10444 // Helper: Insert messaging near a price element (before cart form or after price container). 10445 // Returns the price container element used as the logical anchor. 10446 const insertMessagingNearPrice = (priceElement, messaging, debug = false, log = () => {}) => { 10447 const cartForm = findCartFormFromPrice(priceElement, debug, log); 10448 const container = findPriceContainer(priceElement); 10449 if (cartForm) { 10450 cartForm.before(messaging.cloneNode()); 10451 if (debug) log('Inserted messaging before /cart/add form'); 10452 } else { 10453 container.after(messaging.cloneNode()); 10454 if (debug) log('Inserted after price container (no form found)'); 10455 } 10456 return container; 10457 }; 10458 10459 // Insert messaging after price element 10460 const insertMessagingWithRetry = (shopifyData, messaging, debug = false, log = () => {}) => { 10461 // Skip visual preview iframe 10462 if (window.location.search.includes('source=visualPreviewInitialLoad')) return; 10463 if (document.querySelector('#paypal-upstream-messaging-product')) return; 10464 10465 const liquidPriceInCents = shopifyData?.price?.priceInCents; 10466 const isIsolated = isIsolatedContext(); 10467 10468 if (debug) { 10469 log('=== Price Detection ==='); 10470 log(`Context: ${isIsolated ? 'Theme Editor' : 'Live Storefront'}`); 10471 log(`Price: ${liquidPriceInCents} cents ($${(liquidPriceInCents / 100).toFixed(2)})`); 10472 } 10473 10474 // Priority 1: Template selectors (common theme patterns like Dawn) 10475 const templateElement = findPriceByTemplateSelector(debug, log); 10476 if (templateElement) { 10477 return insertMessagingNearPrice(templateElement, messaging, debug, log); 10478 } 10479 10480 // Priority 2: Scoring-based price detection 10481 const priceElement = findPriceElement(shopifyData, debug, log); 10482 if (priceElement) { 10483 return insertMessagingNearPrice(priceElement, messaging, debug, log); 10484 } 10485 10486 // Priority 3: Sibling iframes (theme editor only) 10487 if (isIsolated) { 10488 const siblingResult = findPriceInSiblingIframes(liquidPriceInCents); 10489 if (siblingResult) { 10490 return insertMessagingNearPrice(siblingResult.element, messaging, debug, log); 10491 } 10492 } 10493 10494 if (!isIsolated) { 10495 log('Could not find price element. Consider using Advanced Settings with a custom selector.'); 10496 } 10497 return null; 10498 }; 10499 10500 const findPriceElement = (shopifyData = null, debug = false, log = () => {}) => { 10501 try { 10502 const knownPriceInCents = shopifyData?.price?.priceInCents; 10503 const productMeta = shopifyData?.product; 10504 10505 if (debug) log(`findPriceElement: ${knownPriceInCents} cents`); 10506 10507 if (knownPriceInCents) { 10508 const candidates = findElementsWithPrice(knownPriceInCents, productMeta, debug, log); 10509 if (candidates.length > 0) { 10510 candidates.sort((a, b) => b.score - a.score); 10511 if (debug) log(` â FOUND (score=${candidates[0].score})`); 10512 return candidates[0].element; 10513 } 10514 } 10515 10516 if (debug) log(' â null (no candidates)'); 10517 return null; 10518 } catch (e) { 10519 if (debug) log(` â Error: ${e.message}`); 10520 recordEvent('appEmbed:findPriceElement:error', { error: e.message }); 10521 return null; 10522 } 10523 }; 10524</script>
10524 10525<!-- END app snippet --><!-- BEGIN app snippet: navigator-panel --><template id="pp-nav-template"> 10526 <style> 10527 /* --- Floating placement panel shell --- */ 10528 #pp-nav-panel { 10529 position: fixed; 10530 top: 50%; 10531 left: 20px; 10532 transform: translateY(-50%); 10533 background: #fff; 10534 border-radius: 12px; 10535 font-family: system-ui, -apple-system, sans-serif; 10536 font-size: 13px; 10537 z-index: 999999; 10538 width: 340px; 10539 box-shadow: 0 8px 32px rgba(0,0,0,0.18); 10540 overflow: hidden; 10541 transition: transform 0.3s ease, height 0.3s ease; 10542 } 10543 #pp-nav-panel.minimized { 10544 display: none; 10545 } 10546 10547 /* --- Minimized pill button --- */ 10548 #pp-nav-pill { 10549 position: fixed; 10550 bottom: 20px; 10551 left: 20px; 10552 background: #003087; 10553 color: #fff; 10554 border: none; 10555 border-radius: 24px; 10556 padding: 10px 18px; 10557 font-family: system-ui, -apple-system, sans-serif; 10558 font-size: 13px; 10559 font-weight: 600; 10560 cursor: pointer; 10561 z-index: 999999; 10562 box-shadow: 0 4px 16px rgba(0,48,135,0.3); 10563 display: none; 10564 align-items: center; 10565 gap: 8px; 10566 transition: box-shadow 0.2s; 10567 } 10568 #pp-nav-pill:hover { 10569 box-shadow: 0 6px 20px rgba(0,48,135,0.45); 10570 } 10571 10572 /* --- Header --- */ 10573 .pp-panel-header { 10574 background: #003087; 10575 color: #fff; 10576 padding: 14px 16px; 10577 display: flex; 10578 align-items: center; 10579 justify-content: space-between; 10580 } 10581 .pp-panel-title { 10582 font-size: 14px; 10583 font-weight: 700; 10584 margin: 0; 10585 letter-spacing: 0.01em; 10586 } 10587 .pp-minimize-btn { 10588 background: none; 10589 border: none; 10590 color: rgba(255,255,255,0.8); 10591 cursor: pointer; 10592 font-size: 18px; 10593 line-height: 1; 10594 padding: 2px; 10595 border-radius: 4px; 10596 transition: color 0.15s; 10597 } 10598 .pp-minimize-btn:hover { 10599 color: #fff; 10600 } 10601 10602 /* --- Panel body --- */ 10603 .pp-panel-content { 10604 padding: 16px; 10605 } 10606 10607 /* --- Step info boxes --- */ 10608 .pp-step-box { 10609 border-radius: 8px; 10610 padding: 10px 12px; 10611 font-size: 12px; 10612 line-height: 1.5; 10613 margin-bottom: 12px; 10614 display: flex; 10615 align-items: flex-start; 10616 gap: 8px; 10617 } 10618 .pp-step-box.blue { 10619 background: #e8f4fd; 10620 border: 1px solid #b8dff5; 10621 color: #0a5a96; 10622 } 10623 .pp-step-box.green { 10624 background: #e6f9ee; 10625 border: 1px solid #a3e4b8; 10626 color: #1a7a3a; 10627 } 10628 .pp-step-text { 10629 flex: 1; 10630 } 10631 .pp-step-text p { 10632 margin: 0 0 8px 0; 10633 } 10634 .pp-step-text p:last-child { 10635 margin-bottom: 0; 10636 } 10637 .pp-step-text strong { 10638 display: block; 10639 font-size: 12px; 10640 margin-bottom: 2px; 10641 } 10642 .pp-step-dismiss { 10643 background: none; 10644 border: none; 10645 color: inherit; 10646 opacity: 0.5; 10647 cursor: pointer; 10648 font-size: 16px; 10649 line-height: 1; 10650 padding: 0; 10651 flex-shrink: 0; 10652 } 10653 .pp-step-dismiss:hover { 10654 opacity: 1; 10655 } 10656 10657 /* --- Warning banners --- */ 10658 .pp-warning { 10659 background: #fff3cd; 10660 border: 1px solid #ffc107; 10661 border-radius: 8px; 10662 padding: 10px 12px; 10663 margin-bottom: 12px; 10664 font-size: 12px; 10665 color: #856404; 10666 line-height: 1.4; 10667 } 10668 .pp-warning-icon { 10669 margin-right: 4px; 10670 } 10671 10672 /* --- Pick placement + copy actions --- */ 10673 .pp-pick-btn { 10674 width: 100%; 10675 padding: 12px; 10676 border: 2px solid #0070ba; 10677 border-radius: 8px; 10678 background: #0070ba; 10679 color: #fff; 10680 cursor: pointer; 10681 font-size: 13px; 10682 font-weight: 600; 10683 transition: all 0.15s; 10684 display: flex; 10685 align-items: center; 10686 justify-content: center; 10687 gap: 8px; 10688 } 10689 .pp-pick-btn:hover { 10690 opacity: 0.9; 10691 } 10692 .pp-pick-btn.active { 10693 background: #f0f7ff; 10694 color: #0070ba; 10695 border-color: #b8dff5; 10696 } 10697 .pp-pick-btn.active:hover { 10698 background: #e0efff; 10699 } 10700 10701 /* --- Copy button --- */ 10702 #pp-apply-btn { 10703 width: 100%; 10704 background: #28a745; 10705 color: #fff; 10706 border: none; 10707 padding: 12px; 10708 border-radius: 8px; 10709 font-weight: 600; 10710 cursor: pointer; 10711 font-size: 13px; 10712 transition: all 0.2s; 10713 display: none; 10714 align-items: center; 10715 justify-content: center; 10716 gap: 8px; 10717 margin-top: 12px; 10718 } 10719 #pp-apply-btn:hover { 10720 opacity: 0.9; 10721 } 10722 #pp-apply-btn.applied { 10723 background: #28a745; 10724 } 10725 10726 /* --- Step 2 confirmation --- */ 10727 #pp-step2 { 10728 display: none; 10729 margin-top: 18px; 10730 } 10731 </style> 10732 <div class='pp-panel-header'> 10733 <div class='pp-panel-title'>PayPal Pay Later Messaging</div> 10734 <button class='pp-minimize-btn' id='pp-collapse-btn' title='Minimize panel'>▾</button> 10735 </div> 10736 <div class='pp-panel-content'> 10737 <div id='pp-warning' class='pp-warning' style='display: none;'></div> 10738 <div id='pp-inspector-warning' class='pp-warning' style='display: none;'></div> 10739 <div class='pp-step-box blue' id='pp-step1'>
10740 <span class='pp-step-text' 10741 ><strong>Step 1: Choose message placement</strong> 10742 Click the button below and then hover over your page to select a placement. 10743 </span> 10744 </div> 10745 <button id='pp-pick-btn' class='pp-pick-btn'>◎ Start Picking Placement</button 10746 ><button id='pp-apply-btn'>Copy Current Placement</button> 10747 <div id='pp-step2' style='display:none;'> 10748 <div class='pp-step-box green'> 10749 <span class='pp-step-text' 10750 ><strong>Step 2: Paste and save</strong> 10751 <p style='margin: 0 0 8px 0;'> 10752 You have copied the placement for the <b id='pp-context-name'>Product Page</b>. 10753 </p> 10754 <p style='margin: 0;'> 10755 Go back to the App Embeds section, and in the Paypal Advanced Settings, paste the copied value into the 10756 <b id='pp-selector-name'>Product Page</b> field and click the 'Save' button in the top right corner. 10757 </p></span 10758 ><button class='pp-step-dismiss' id='pp-step2-dismiss' title='Dismiss'>×</button> 10759 </div> 10760 </div> 10761 </div> 10762</template> 10763<!-- END app snippet --><!-- BEGIN app snippet: navigator -->
10763<script> 10764 // ============================================ 10765 // DOM Traversal Controls for Theme Editor 10766 // Depends on: price-detection.liquid (isIsolatedContext) 10767 // ============================================ 10768 10769 const OVERLAY_STYLE = 10770 '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;'; 10771 const OVERLAY_LABEL_STYLE = 10772 '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;'; 10773 const COPY_BUTTON_LABEL = 'Copy Current Placement'; 10774 const COPIED_BUTTON_LABEL = 'Placement Copied!'; 10775 10776 const isInOverlay = (el) => { 10777 while (el && el !== document.body) { 10778 if (getComputedStyle(el).position === 'fixed') return true; 10779 el = el.parentElement; 10780 } 10781 return false; 10782 }; 10783 10784 // Position a fixed overlay to cover a target element 10785 const positionOverlayOnElement = (overlay, el) => { 10786 const rect = el.getBoundingClientRect(); 10787 Object.assign(overlay.style, { 10788 top: rect.top + 'px', 10789 left: rect.left + 'px', 10790 width: rect.width + 'px', 10791 height: rect.height + 'px', 10792 display: 'block', 10793 }); 10794 }; 10795 10796 // Module-level refs for global listeners added by createNavigationPanel. 10797 // Stored here so they can be removed if the panel is re-initialized. 10798 let _panelInspectorActivate = null; 10799 let _panelInspectorDeactivate = null; 10800 let _highlightedElement = null; 10801 let _panelPickModeCleanup = null; 10802 10803 // Detect UID pattern in ID (Shopify's --suffix or long numeric/hex suffixes) 10804 const hasUid = (id) => { 10805 if (!id) return false; 10806 if (/--/.test(id)) return true; 10807 return /[-_](\d{5,}|[a-f0-9]{8,})$/i.test(id); 10808 }; 10809 const getIdPrefix = (id) => { 10810 if (id.includes('--')) return id.split('--')[0]; 10811 const match = id.match(/^(.+?)[-_](\d{5,}|[a-f0-9]{8,})$/i); 10812 return match ? match[1] : null; 10813 }; 10814 const getMeaningfulClasses = (el) => { 10815 if (!el.className || typeof el.className !== 'string') return []; 10816 return el.className.trim().split(/\s+/).filter(c => 10817 c && !c.startsWith('_') && !c.startsWith('js-') && 10818 c.length < 30 && !/^[a-f0-9]{6,}$/i.test(c) && !/^[A-Z]/.test(c) 10819 ); 10820 }; 10821 const isUnique = (selector) => document.querySelectorAll(selector).length === 1; 10822 10823 // Returns null if no unique selector can be generated 10824 const generateSelector = (element) => { 10825 if (!element || element === document.body || element === document.documentElement) { 10826 return null; 10827 } 10828 const classes = getMeaningfulClasses(element); 10829 10830 // Priority 1: Clean ID 10831 if (element.id && !hasUid(element.id)) return `#${element.id}`; 10832 10833 // Priority 2: ID with UID â attribute wildcard selector 10834 if (element.id && hasUid(element.id)) { 10835 const prefix = getIdPrefix(element.id); 10836 if (prefix) { 10837 const selector = `[id^="${prefix}-"]`; 10838 if (isUnique(selector)) return selector; 10839 } 10840 } 10841 10842 // Priority 3: Unique class 10843 for (const cls of classes) { 10844 if (isUnique('.' + cls)) return '.' + cls; 10845 } 10846 10847 // Priority 4: Ancestor + target class combinations (walk up to 5 levels) 10848 if (classes.length > 0) { 10849 let ancestor = element.parentElement; 10850 let depth = 0; 10851 while (ancestor && ancestor !== document.body && ancestor !== document.documentElement && depth < 5) { 10852 const ancClasses = getMeaningfulClasses(ancestor); 10853 if (ancClasses.length > 0) { 10854 const s1 = `.${ancClasses[0]} .${classes[0]}`; 10855 if (isUnique(s1)) return s1; 10856 const s2 = `.${ancClasses[0]} > .${classes[0]}`; 10857 if (isUnique(s2)) return s2; 10858 } 10859 if (ancestor.id && !hasUid(ancestor.id)) { 10860 const s3 = `#${ancestor.id} .${classes[0]}`; 10861 if (isUnique(s3)) return s3; 10862 } 10863 ancestor = ancestor.parentElement; 10864 depth++; 10865 } 10866 } 10867 10868 // NO FALLBACK - return null if no unique selector exists 10869 return null; 10870 }; 10871 const hasSpecificSelector = (el) => generateSelector(el) !== null; 10872 const shouldSkipElement = (el) => { 10873 if (!el || el.hidden) return true; 10874 if (['SCRIPT', 'STYLE', 'TEMPLATE'].includes(el.tagName)) return true; 10875 if ( 10876 el.closest('#pp-nav-panel') || 10877 el.closest('#pp-nav-pill') || 10878 el.closest('#pp-pick-overlay') 10879 ) 10880 return true; 10881 if (el.hasAttribute('data-pp-message')) return true; 10882 if (!hasSpecificSelector(el)) return true; 10883 return false;
10884 }; 10885 const resolveContextName = (providedContextName, messagingTemplate) => { 10886 if (providedContextName && providedContextName !== 'this area') return providedContextName; 10887 const id = messagingTemplate?.id || ''; 10888 if (id.includes('cart-drawer')) return 'Cart Drawer'; 10889 if (id.includes('cart')) return 'Cart Page'; 10890 if (id.includes('product')) return 'Product Page'; 10891 return 'this area'; 10892 }; 10893 10894 // Called when the cart drawer closes (via IntersectionObserver in cartDrawer.liquid) 10895 // and at the start of createNavigationPanel to tear down any existing instance. 10896 // Cleans up pick mode listeners, DOM elements, highlights, and preview clones. 10897 const destroyNavigationPanel = () => { 10898 if (_panelPickModeCleanup) { 10899 _panelPickModeCleanup(); 10900 _panelPickModeCleanup = null; 10901 } 10902 document.getElementById('pp-nav-panel')?.remove(); 10903 document.getElementById('pp-nav-pill')?.remove(); 10904 const preview = document.querySelector('[id$="-preview"][data-pp-message]'); 10905 if (preview) preview.remove(); 10906 if (_highlightedElement) { 10907 _highlightedElement.style.outline = ''; 10908 _highlightedElement.style.outlineOffset = ''; 10909 _highlightedElement = null; 10910 } 10911 if (_panelInspectorActivate) { 10912 document.removeEventListener('shopify:inspector:activate', _panelInspectorActivate); 10913 document.removeEventListener('shopify:inspector:deactivate', _panelInspectorDeactivate); 10914 _panelInspectorActivate = _panelInspectorDeactivate = null; 10915 } 10916 document.documentElement.style.cursor = ''; 10917 }; 10918 10919 const createNavigationPanel = ( 10920 initialElement, 10921 messagingTemplate, 10922 warningMessage = null, 10923 contextName = 'this area', 10924 ) => {
10925 let currentTarget = initialElement; 10926 let resolvedContextName = resolveContextName(contextName, messagingTemplate); 10927 destroyNavigationPanel(); 10928 10929 const panel = document.createElement('div'); 10930 panel.id = 'pp-nav-panel'; 10931 const tmpl = document.getElementById('pp-nav-template'); 10932 panel.appendChild(tmpl.content.cloneNode(true)); 10933 10934 // Create minimized pill button (separate from panel) 10935 const pill = document.createElement('button'); 10936 pill.id = 'pp-nav-pill'; 10937 pill.innerHTML = 'PayPal Pay Later Messaging'; 10938 const applyBtn = panel.querySelector('#pp-apply-btn'); 10939 const warningEl = panel.querySelector('#pp-warning'); 10940 const step2 = panel.querySelector('#pp-step2'); 10941 const step2Dismiss = panel.querySelector('#pp-step2-dismiss'); 10942 const contextEl = panel.querySelector('#pp-context-name'); 10943 const selectorEl = panel.querySelector('#pp-selector-name'); 10944 const updateContextUI = (newContext) => { 10945 resolvedContextName = newContext; 10946 if (contextEl) contextEl.textContent = resolvedContextName; 10947 if (selectorEl) { 10948 selectorEl.textContent = resolvedContextName; 10949 } 10950 }; 10951 updateContextUI(resolvedContextName); 10952 const detectContextFromElement = (el) => { 10953 if (el.closest('#CartDrawer, .drawer, .cart-drawer, [id*="cart-drawer"], [class*="cart-drawer"]')) 10954 return 'Cart Drawer'; 10955 if (window.location.pathname.endsWith('/cart') || el.closest('.cart, #cart, #main-cart-items, #main-cart-footer')) 10956 return 'Cart Page'; 10957 return 'Product Page'; 10958 }; 10959 10960 // Show warning message if provided 10961 if (warningMessage && warningEl) { 10962 warningEl.innerHTML = `<span class="pp-warning-icon">â ï¸</span>${warningMessage}`; 10963 warningEl.style.display = 'block'; 10964 } 10965 let isInitialRender = true; 10966 const updateUI = () => { 10967 // Highlight element 10968 highlightElement(currentTarget); 10969 // Update button states 10970 applyBtn.textContent = COPY_BUTTON_LABEL; 10971 applyBtn.classList.remove('applied'); 10972 // Reposition messaging â skip on initial render (already placed correctly by auto-detection) 10973 if (!isInitialRender) repositionMessaging(); 10974 isInitialRender = false;
10975 }; 10976 10977 const highlightElement = (el) => { 10978 if (_highlightedElement) { 10979 _highlightedElement.style.outline = ''; 10980 _highlightedElement.style.outlineOffset = ''; 10981 } 10982 _highlightedElement = el; 10983 if (el) { 10984 el.style.outline = '2px solid rgba(255,152,0,0.6)'; 10985 el.style.outlineOffset = '-1px'; 10986 } 10987 }; 10988 10989 const repositionMessaging = () => { 10990 if (!currentTarget) return; 10991 const existing = document.getElementById(messagingTemplate.id); 10992 const targetInOverlay = isInOverlay(currentTarget); 10993 const msgInOverlay = existing && isInOverlay(existing); 10994 if (targetInOverlay !== msgInOverlay) { 10995 // Cross-context: reposition messaging in the target's context without touching the original 10996 const allMessaging = document.querySelectorAll('[data-pp-message]'); 10997 let contextMsg = null; 10998 for (const el of allMessaging) { 10999 if (isInOverlay(el) === targetInOverlay) { contextMsg = el; break; } 11000 } 11001 if (!contextMsg) { 11002 contextMsg = messagingTemplate.cloneNode(true); 11003 contextMsg.id = messagingTemplate.id + '-preview'; 11004 } 11005 contextMsg.remove(); 11006 currentTarget.after(contextMsg); 11007 return; 11008 } 11009 if (existing) existing.remove(); 11010 const newMessaging = messagingTemplate.cloneNode(true); 11011 currentTarget.after(newMessaging); 11012 }; 11013 11014 const collapseBtn = panel.querySelector('#pp-collapse-btn'); 11015 const pickBtn = panel.querySelector('#pp-pick-btn'); 11016 let pickMode = false; 11017 let pickHoverTarget = null; 11018 let pickOverlay = null; 11019 let pickLabel = null; 11020 let applyBtnResetTimer = null; 11021 let _pickRafId = null; 11022 11023 const enterPickMode = () => { 11024 pickMode = true; 11025 document.documentElement.style.cursor = 'crosshair'; 11026 pickBtn.classList.add('active'); 11027 pickBtn.innerHTML = 'â Pick a spot on the page...'; 11028 applyBtn.textContent = COPY_BUTTON_LABEL; 11029 applyBtn.classList.remove('applied'); 11030 applyBtn.style.display = 'flex'; 11031 step2.style.display = 'none'; 11032 if (contextEl) contextEl.textContent = resolvedContextName; 11033 // Create overlay for highlighting (pointer-events:none prevents interference) 11034 pickOverlay = document.createElement('div'); 11035 pickOverlay.id = 'pp-pick-overlay'; 11036 pickOverlay.style.cssText = OVERLAY_STYLE; 11037 pickLabel = document.createElement('div'); 11038 pickLabel.style.cssText = OVERLAY_LABEL_STYLE; 11039 pickOverlay.appendChild(pickLabel); 11040 document.body.appendChild(pickOverlay); 11041 11042 document.addEventListener('mousemove', onPickHover, true); 11043 document.addEventListener('click', onPickClick, true); 11044 document.addEventListener('mousedown', onPickSuppressEvent, true); 11045 document.addEventListener('pointerdown', onPickSuppressEvent, true); 11046 }; 11047 11048 const exitPickMode = () => { 11049 pickMode = false; 11050 document.documentElement.style.cursor = ''; 11051 pickBtn.classList.remove('active'); 11052 pickBtn.innerHTML = 'â Start Picking Placement'; 11053 applyBtn.style.display = 'none'; 11054 // Remove overlay 11055 const overlay = document.getElementById('pp-pick-overlay'); 11056 if (overlay) overlay.remove(); 11057 pickOverlay = null; 11058 pickLabel = null; 11059 pickHoverTarget = null; 11060 11061 if (_pickRafId) { cancelAnimationFrame(_pickRafId); _pickRafId = null; } 11062 document.removeEventListener('mousemove', onPickHover, true); 11063 document.removeEventListener('click', onPickClick, true); 11064 document.removeEventListener('mousedown', onPickSuppressEvent, true); 11065 document.removeEventListener('pointerdown', onPickSuppressEvent, true); 11066 }; 11067 11068 // Find the nearest visible child element to cursor coordinates 11069 const snapToNearestChild = (parent, cx, cy) => { 11070 const children = parent.children; 11071 if (!children.length) return null; 11072 let best = null; 11073 let bestDist = 30; 11074 for (const child of children) { 11075 if (shouldSkipElement(child)) continue; 11076 const r = child.getBoundingClientRect(); 11077 if (r.width === 0 || r.height === 0) continue; 11078 const dx = cx < r.left ? r.left - cx : cx > r.right ? cx - r.right : 0; 11079 const dy = cy < r.top ? r.top - cy : cy > r.bottom ? cy - r.bottom : 0; 11080 const dist = Math.sqrt(dx * dx + dy * dy); 11081 if (dist < bestDist) { 11082 bestDist = dist; 11083 best = child; 11084 } 11085 } 11086 return best; 11087 }; 11088 11089 const onPickHover = (e) => { 11090 if (_pickRafId) return; 11091 _pickRafId = requestAnimationFrame(() => { 11092 _pickRafId = null; 11093 let el = document.elementFromPoint(e.clientX, e.clientY); 11094 if (!el || shouldSkipElement(el)) { 11095 document.documentElement.style.cursor = 'not-allowed'; 11096 if (pickOverlay) pickOverlay.style.display = 'none'; 11097 pickHoverTarget = null; 11098 return; 11099 } 11100 11101 if (el.children.length > 0) { 11102 const snapped = snapToNearestChild(el, e.clientX, e.clientY); 11103 if (snapped) el = snapped; 11104 } 11105 11106 // Skip elements without a unique selector 11107 if (shouldSkipElement(el)) { 11108 document.documentElement.style.cursor = 'not-allowed'; 11109 pickHoverTarget = null; 11110 if (pickOverlay) pickOverlay.style.display = 'none'; 11111 return; 11112 } 11113 document.documentElement.style.cursor = 'crosshair'; 11114 if (el === pickHoverTarget) return; 11115 pickHoverTarget = el; 11116 positionOverlayOnElement(pickOverlay, el);
11117 pickLabel.innerHTML = 'Select this placement'; 11118 }); 11119 }; 11120 11121 const onPickSuppressEvent = (e) => { 11122 if (e.target.closest('#pp-nav-panel')) return; 11123 e.preventDefault(); 11124 e.stopPropagation(); 11125 }; 11126 11127 const onPickClick = (e) => { 11128 if (e.target.closest('#pp-nav-panel')) return; 11129 e.preventDefault(); 11130 e.stopPropagation(); 11131 e.stopImmediatePropagation(); 11132 if (pickHoverTarget && !shouldSkipElement(pickHoverTarget)) { 11133 currentTarget = pickHoverTarget; 11134 updateContextUI(detectContextFromElement(currentTarget)); 11135 updateUI(); 11136 } 11137 }; 11138 11139 // --- Pick button --- 11140 pickBtn.addEventListener('click', () => { 11141 if (pickMode) exitPickMode(); 11142 else enterPickMode(); 11143 }); 11144 11145 _panelPickModeCleanup = () => { if (pickMode) exitPickMode(); }; 11146 11147 // --- Minimize / expand --- 11148 collapseBtn.addEventListener('click', () => { 11149 if (pickMode) exitPickMode(); 11150 panel.classList.add('minimized'); 11151 pill.style.display = 'flex'; 11152 highlightElement(null); 11153 }); 11154 pill.addEventListener('click', () => { 11155 panel.classList.remove('minimized'); 11156 pill.style.display = 'none'; 11157 highlightElement(currentTarget); 11158 }); 11159 11160 // --- Step 2 dismiss --- 11161 step2Dismiss.addEventListener('click', () => { 11162 step2.style.display = 'none'; 11163 }); 11164 11165 // Handle copy button click 11166 panel.addEventListener('click', async (e) => { 11167 const button = e.target.closest('#pp-apply-btn'); 11168 if (!button) return; 11169 // Skip buttons handled separately 11170 if (button.id === 'pp-collapse-btn' || button.id === 'pp-pick-btn' || button.id === 'pp-step2-dismiss') return; 11171 if (button.id === 'pp-apply-btn') { 11172 const selector = generateSelector(currentTarget); 11173 if (!selector) return; 11174 let copied = false; 11175 try { 11176 // Try multiple copy methods (iframe security blocks clipboard API) 11177 if (navigator.clipboard?.writeText) { 11178 await navigator.clipboard.writeText(selector); 11179 copied = true; 11180 } 11181 } catch {} 11182 if (!copied) { 11183 try { 11184 const ta = document.createElement('textarea'); 11185 ta.value = selector; 11186 ta.style.position = 'fixed'; 11187 ta.style.opacity = '0'; 11188 document.body.appendChild(ta); 11189 ta.select(); 11190 copied = document.execCommand('copy'); 11191 ta.remove(); 11192 } catch {} 11193 } 11194 if (copied) { 11195 applyBtn.textContent = COPIED_BUTTON_LABEL; 11196 applyBtn.classList.add('applied'); 11197 if (applyBtnResetTimer) clearTimeout(applyBtnResetTimer); 11198 applyBtnResetTimer = setTimeout(() => { 11199 applyBtn.textContent = COPY_BUTTON_LABEL; 11200 applyBtn.classList.remove('applied'); 11201 applyBtnResetTimer = null; 11202 }, 1200); 11203 // Show Step 2 confirmation 11204 step2.style.display = 'block'; 11205 } 11206 exitPickMode(); 11207 } 11208 }); 11209 11210 // --- Inspector mode detection --- 11211 const inspectorWarning = panel.querySelector('#pp-inspector-warning'); 11212 let inspectorActive = typeof Shopify !== 'undefined' && Shopify.inspectMode; 11213 const isMac = navigator.platform?.startsWith('Mac') || navigator.userAgentData?.platform === 'macOS'; 11214 const shortcut = isMac ? 'â â§ I' : 'Ctrl + Shift + I'; 11215 const enableInspectorMode = () => { 11216 inspectorActive = true; 11217 inspectorWarning.innerHTML = `<span class="pp-warning-icon">â ï¸</span> For a better experience, press <strong>${shortcut}</strong> to turn off inspector mode`; 11218 inspectorWarning.style.display = 'block'; 11219 }; 11220 const disableInspectorMode = () => { 11221 inspectorActive = false; 11222 inspectorWarning.style.display = 'none'; 11223 }; 11224 _panelInspectorActivate = enableInspectorMode; 11225 _panelInspectorDeactivate = disableInspectorMode; 11226 document.addEventListener('shopify:inspector:activate', enableInspectorMode); 11227 document.addEventListener('shopify:inspector:deactivate', disableInspectorMode); 11228 11229 // Prevent panel/pill clicks from closing cart drawer (themes close drawer on outside mousedown) 11230 const stopBubble = (e) => e.stopPropagation(); 11231 panel.addEventListener('mousedown', stopBubble); 11232 panel.addEventListener('pointerdown', stopBubble); 11233 pill.addEventListener('mousedown', stopBubble); 11234 pill.addEventListener('pointerdown', stopBubble); 11235 11236 document.body.appendChild(panel); 11237 document.body.appendChild(pill); 11238 if (inspectorActive) enableInspectorMode(); 11239 updateUI(); 11240 return panel; 11241 }; 11242</script>
11242 11243<!-- END app snippet --><!-- BEGIN app snippet: cart -->
11243<script> 11244 // Determine correct locator by theme name 11245 const cartPageThemeName = window.Shopify.theme.name; 11246 let cartPageLocator, cartPageNodeToObserve, cartPageMutationNode; 11247 11248 try { 11249 switch (cartPageThemeName) { 11250 // to support other themes add cases 11251 // default case supports Shopify Free themes 11252 default: 11253 cartPageLocator = '.cart__footer .totals'; 11254 cartPageNodeToObserve = '#main-cart-footer .js-contents'; 11255 cartPageMutationNode = 'js-contents'; 11256 break; 11257 } 11258 // Begin Upstream Messaging Implementation 11259 const cartPageMessaging = document.createElement('div'); 11260 const price = 0 / 100; 11261 11262 const cartPageAttributes = { 11263 'id': 'paypal-upstream-messaging-cart-page', 11264 'data-pp-message': '', 11265 'data-pp-placement': 'cart', 11266 'data-pp-style-layout': 'text', 11267 'data-pp-style-text-align': 'right', 11268 'data-pp-style-logo-type': "inline", 11269 'data-pp-style-text-color': "black", 11270 'data-pp-style-text-size': "12", 11271 'data-pp-style-logo-position': "", 11272 'data-pp-style-text-align': "", 11273 'data-pp-amount': price, 11274 'style': 'padding-top: 10px', 11275 }; 11276 11277 Object.keys(cartPageAttributes).forEach((key) => { 11278 cartPageMessaging.setAttribute(key, cartPageAttributes[key]); 11279 }); 11280 11281 const advancedSettingsEnabled = 'false' === 'true'; 11282 let selectorNotFoundWarning = null; 11283 11284 if (advancedSettingsEnabled && '' !== '') { 11285 // utils.liquid 11286 cartPageLocator = parseSelector(''); 11287 } 11288 11289 if ("enabled" === 'enabled') { 11290 const element = document.querySelector(cartPageLocator); 11291 11292 if (element) { 11293 element.after(cartPageMessaging.cloneNode()); 11294 11295 if (advancedSettingsEnabled && isIsolatedContext()) { 11296 setTimeout(() => { 11297 createNavigationPanel(element, cartPageMessaging, null, 'Cart Page'); 11298 }, 500); 11299 } 11300 11301 // utils.liquid 11302 watchForCartChanges(cartPageLocator, cartPageMessaging); 11303 } else if (advancedSettingsEnabled && isIsolatedContext()) { 11304 selectorNotFoundWarning = 'Selected placement not found on this page. Please choose an element that is present on all page templates.'; 11305 recordEvent('appEmbed:advanced-settings-selector-not-found', { locator: cartPageLocator }); 11306 setTimeout(() => { 11307 createNavigationPanel(document.body, cartPageMessaging, selectorNotFoundWarning, 'Cart Page'); 11308 }, 500); 11309 } 11310 } 11311 } catch (e) { 11312 // utils.liquid 11313 recordEvent('appEmbed:query-selector-not-found-cart-page', { locator: cartPageLocator, error: e.message }); 11314 } 11315 </script>
11315 11316<!-- END app snippet --><!-- BEGIN app snippet: cartDrawer -->
11316<script> 11317 // Determine correct locator by theme name 11318 const cartDrawerThemeName = window.Shopify.theme.name; 11319 let cartDrawerLocator, cartDrawerNodeToObserve, cartDrawerMutationNode; 11320 11321 switch (cartDrawerThemeName) { 11322 // to support other themes add cases 11323 // default case supports Shopify Free themes 11324 default: 11325 cartDrawerLocator = '.cart-drawer__footer .totals'; 11326 cartDrawerNodeToObserve = '#CartDrawer'; 11327 cartDrawerMutationNode = 'drawer__inner'; 11328 break; 11329 } 11330 // Begin Upstream Messaging Implementation 11331 try { 11332 const cartDrawerMessaging = document.createElement('div'); 11333 const price = 0 / 100; 11334 11335 const cartDrawerAttributes = { 11336 'id': 'paypal-upstream-messaging-cart-drawer', 11337 'data-pp-message': '', 11338 'data-pp-placement': 'cart', 11339 'data-pp-style-layout': 'text', 11340 'data-pp-style-text-align': 'right', 11341 'data-pp-style-logo-type': "inline", 11342 'data-pp-style-text-color': "black", 11343 'data-pp-style-text-size': "12", 11344 'data-pp-style-logo-position': "", 11345 'data-pp-amount': price, 11346 }; 11347 11348 Object.keys(cartDrawerAttributes).forEach((key) => { 11349 cartDrawerMessaging.setAttribute(key, cartDrawerAttributes[key]); 11350 }); 11351 11352 const advancedSettingsEnabled = 'false' === 'true'; 11353 const customCartDrawerSelector = ''.trim(); 11354 11355 if (advancedSettingsEnabled && customCartDrawerSelector !== '') { 11356 // utils.liquid 11357 cartDrawerLocator = parseSelector(customCartDrawerSelector); 11358 } 11359 11360 if ("enabled" === 'enabled') { 11361 waitForElement(cartDrawerLocator).then(elem => { 11362 elem.after(cartDrawerMessaging.cloneNode()); 11363 11364 if (advancedSettingsEnabled && isIsolatedContext() && !document.getElementById('pp-nav-panel')) { 11365 let drawerPanelActive = false; 11366 new IntersectionObserver((entries) => { 11367 if (entries[0].isIntersecting) { 11368 if (!document.getElementById('pp-nav-panel')) { 11369 setTimeout(() => { 11370 if (!document.getElementById('pp-nav-panel')) { 11371 createNavigationPanel(elem, cartDrawerMessaging, null, 'Cart Drawer'); 11372 drawerPanelActive = true; 11373 } 11374 }, 300); 11375 } 11376 } else if (drawerPanelActive) { 11377 destroyNavigationPanel(); 11378 drawerPanelActive = false; 11379 } 11380 }, { threshold: 0.1 }).observe(elem); 11381 } 11382 }); 11383 11384 // Custom selector not found â show navigator with warning when drawer opens 11385 if (advancedSettingsEnabled && customCartDrawerSelector && !document.querySelector(cartDrawerLocator) && isIsolatedContext() && !document.getElementById('pp-nav-panel')) { 11386 const drawerContainer = document.querySelector(cartDrawerNodeToObserve); 11387 if (drawerContainer) { 11388 let warningPanelActive = false; 11389 const warning = 'Selected placement not found on this page. Please choose an element that is present on all page templates.'; 11390 recordEvent('appEmbed:advanced-settings-selector-not-found', { locator: cartDrawerLocator }); 11391 new IntersectionObserver((entries) => { 11392 if (entries[0].isIntersecting) { 11393 if (!document.getElementById('pp-nav-panel')) { 11394 setTimeout(() => { 11395 if (!document.getElementById('pp-nav-panel')) { 11396 createNavigationPanel(drawerContainer, cartDrawerMessaging, warning, 'Cart Drawer'); 11397 warningPanelActive = true; 11398 } 11399 }, 300); 11400 } 11401 } else if (warningPanelActive) { 11402 destroyNavigationPanel(); 11403 warningPanelActive = false; 11404 } 11405 }, { threshold: 0.1 }).observe(drawerContainer); 11406 } 11407 } 11408 11409 // utils.liquid 11410 watchForCartChanges(cartDrawerLocator, cartDrawerMessaging); 11411 } 11412 } catch (e) { 11413 // utils.liquid 11414 recordEvent('appEmbed:query-selector-not-found-cart-drawer', { locator: cartDrawerLocator, error: e.message }); 11415 } 11416 </script>
11416 11417<!-- END app snippet --> 11418 11419 11420</div><div id="shopify-block-AU0krZXZzNkZxNXNZZ__5394799768760407377" class="shopify-block shopify-app-block"><style> 11421 .rq-whatsapp-chat-container { 11422 font-size: 45px; 11423 bottom: 25px; 11424 11425 right: 25px; 11426 11427 } 11428 11429 .rq-whatsapp-chat-container span { 11430 background-color: #ffffff; 11431 color: #94814c; 11432 } 11433 11434 11435 11436 @media screen and (max-width: 768px){ 11437 .rq-whatsapp-chat-container { 11438 font-size: 45px; 11439 bottom: 68px; 11440 11441 right: 4px; 11442 11443 } 11444 } 11445</style> 11446 11447 11448<div 11449 11450 class="align-right rq-whatsapp-chat-container none" 11451 11452> 11453 <a 11454 target="_blank" 11455 11456 > 11457 11458 <span>Beratung</span> 11459 11460 <div style="--pulse-color: #ffffff !important;"> 11461 <svg 11462 viewBox="0 0 69.45 69.45" 11463 xmlns="http://www.w3.org/2000/svg" 11464 style="width: 45px !important; height: 45px !important;" 11465 > 11466 <g data-name="Layer 2"> 11467 <g data-name="Layer 1"> 11468 <circle 11469 cx="34.72" 11470 cy="34.72" 11471 r="34.72" 11472 fill="#ffffff" 11473 stroke="none" 11474 /> 11475 <path 11476 d="M53.8 33.76a18.74 18.74 0 0 0-37.45-.34v.81A18.49 18.49 0 0 0 19 43.84l-3.37 10L26 50.52a18.77 18.77 0 0 0 27.81-16.29c0-.16 0-.31-.01-.47ZM35.07 49.87a15.71 15.71 0 0 1-8.67-2.59l-6 1.93 2-5.81a15.53 15.53 0 0 1-3-9.17c0-.51 0-1 .08-1.52a15.76 15.76 0 0 1 31.38.3c0 .41.06.81.06 1.22a15.71 15.71 0 0 1-15.85 15.64Z" 11477 fill="#94814c" 11478 fill-rule="evenodd" 11479 stroke="none" 11480 /> 11481 <path 11482 d="M43.66 38c-.47-.23-2.72-1.34-3.14-1.49s-.73-.22-1 .23-1.23 1.48-1.52 1.77-.54.35-1 .12a12.36 12.36 0 0 1-3.7-2.27 13.37 13.37 0 0 1-2.55-3.15c-.26-.45 0-.7.2-.93s.46-.53.69-.79a2.65 2.65 0 0 0 .17-.22 4 4 0 0 0 .29-.55.83.83 0 0 0 0-.8c-.12-.22-1-2.47-1.43-3.38s-.76-.76-1-.76h-.88a1.68 1.68 0 0 0-1.23.57 5.12 5.12 0 0 0-1.6 3.81 5.45 5.45 0 0 0 .24 1.55 10.11 10.11 0 0 0 1.64 3.16c.22.3 3.17 5.05 7.84 6.89s4.68 1.21 5.52 1.13a4.56 4.56 0 0 0 3.09-2.17 3.82 3.82 0 0 0 .28-2.17c-.15-.22-.45-.33-.91-.55Z" 11483 fill="#94814c" 11484 fill-rule="evenodd" 11485 stroke="none" 11486 /> 11487 </g> 11488 </g> 11489 11490 11491</svg> 11492 </div> 11493 </a> 11494</div> 11495 11496
11497<script> 11498(function () { 11499 11500 // Prevent running in Shopify Admin or Theme Editor 11501 try { 11502 if ( 11503 window.top !== window && 11504 window.top.location.hostname.includes('admin.shopify.com') 11505 ) { 11506 return; 11507 } 11508 } catch (e) { 11509 return; 11510 } 11511 11512 /* -------------------------- 11513 Shopify Visitor API 11514 ---------------------------*/ 11515 function registerShopifyVisitorFromUrl() { 11516 const urlParams = new URLSearchParams(window.location.search); 11517 const phone = urlParams.get('phone')?.trim(); 11518 const appId = urlParams.get('appId')?.trim(); 11519 11520 if (!phone || !appId || !window.Shopify?.analytics?.visitor) return; 11521 11522 try { 11523 window.Shopify.analytics.visitor( 11524 { phone }, 11525 { appId } 11526 ); 11527 } catch (error) { 11528 console.error('Unable to register Shopify visitor:', error); 11529 } 11530 } 11531 11532 registerShopifyVisitorFromUrl(); 11533 11534 const COOKIE_NAME = 'rq_whatsapp_analytics'; 11535 const SHOP_DOMAIN = 'ahsvz2-1w.myshopify.com'; 11536 const today = new Date().toISOStr
11536ing().slice(0, 10); 11537 11538 /* -------------------------- 11539 Cookie Helpers 11540 ---------------------------*/ 11541 function getCookie(name) { 11542 const value = `; ${document.cookie}`; 11543 const parts = value.split(`; ${name}=`); 11544 if (parts.length === 2) return parts.pop().split(';').shift(); 11545 return null; 11546 } 11547 11548 function setCookie(name, value) { 11549 const expires = new Date(); 11550 expires.setTime(expires.getTime() + 2 * 24 * 60 * 60 * 1000); // 2 days 11551 document.cookie = 11552 `${name}=${value}; expires=${expires.toUTCString()}; path=/; SameSite=Lax`; 11553 } 11554 11555 /* -------------------------- 11556 Initialize analytics object 11557 ---------------------------*/ 11558 let analytics = {}; 11559 try { 11560 analytics = JSON.parse(getCookie(COOKIE_NAME) || '{}'); 11561 } catch (e) { 11562 analytics = {}; 11563 } 11564 11565 if (!analytics[today]) { 11566 analytics[today] = { impression: false, clicks: 0 }; 11567 } 11568 11569 function saveAnalytics() { 11570 setCookie(COOKIE_NAME, JSON.stringify(analytics)); 11571 } 11572 11573 /* -------------------------- 11574 IMPRESSION LOGIC (DELAY + USER INTERACTION) 11575 ---------------------------*/ 11576 11577 let interactionDetected = false; 11578 let impressionTriggered = false; 11579 11580 // Called after interaction + delay 11581 function fireImpression() { 11582 if (impressionTriggered) return; 11583 impressionTriggered = true; 11584 console.log("ð¥ Firing impression for:", SHOP_DOMAIN, "Date:", today); 11585 analytics[today].impression = true; 11586 saveAnalytics(); 11587 11588 fetch(`https://app.retentionly.io/whatsapp/default/call/json/registerStore?type=33dgfa&sh=${SHOP_DOMAIN}`, { 11589 method: "POST", 11590 headers: { "Content-Type": "application/json" }, 11591 body: JSON.stringify({ domain: SHOP_DOMAIN }) 11592 }); 11593 } 11594 11595 // When user interacts (scroll, click, mousemove, touchstart) 11596 function userInteracted() { 11597 if (interactionDetected) return; 11598 interactionDetected = true; 11599 //console.log("ð¢ User interaction detected â starting 10s delay"); 11600 // Delay 10 seconds BEFORE firing impression 11601 setTimeout(() => { 11602 //console.log("â³ 10 seconds passed â preparing to fire impression"); 11603 if (!analytics[today].impression) { 11604 fireImpression(); 11605 } 11606 }, 10000); 11607 } 11608 11609 // Attach interaction listeners 11610 ["click", "scroll", "mousemove", "touchstart"].forEach(evt => { 11611 window.addEventListener(evt, userInteracted, { once: true, passive: true }); 11612 }); 11613 11614 /* -------------------------- 11615 CLICK TRACKING 11616 ---------------------------*/ 11617 function trackClick() { 11618 analytics[today].clicks += 1; 11619 saveAnalytics(); 11620 11621 fetch(`https://app.retentionly.io/whatsapp/default/call/json/registerStore?type=23xmxs`, { 11622 method: "POST", 11623 headers: { "Content-Type": "application/json" }, 11624 body: JSON.stringify({ domain: "ahsvz2-1w.myshopify.com" }) 11625 }); 11626 } 11627 11628 //console.log("ð WhatsApp Debug"); 11629 //console.log("Current Path:", "/cart"); 11630 //console.log("Hide Paths Raw:", ""); 11631 //console.log("Should Hide Button:", false); 11632 11633 11634 /* -------------------------- 11635 Initialize WhatsApp Widget 11636 ---------------------------*/ 11637 function initWhatsAppWidget() { 11638 const whatsappLink = document.querySelector('.rq-whatsapp-chat-container a'); 11639 if (!whatsappLink) return; 11640 11641 let updatedMessage = `Hallo, Ich habe eine Anfrage `; 11642 if (false) { 11643 updatedMessage = updatedMessage.trim() + ' ' + window.location.href; 11644 } 11645 11646 const encodedMessage = encodeURIComponent(updatedMessage); 11647 whatsappLink.href = `https://api.whatsapp.com/send?phone=493075435644&text=${encodedMessage}`; 11648 11649 whatsappLink.setAttribute('data-source', "whatsapp_number_metafield"); 11650 11651 whatsappLink.addEventListener('click', function () { 11652 trackClick(); 11653 window.open(whatsappLink.href, '_blank'); 11654 }); 11655 } 11656 11657 if (document.readyState === 'loading') { 11658 document.addEventListener('DOMContentLoaded', initWhatsAppWidget); 11659 } else { 11660 initWhatsAppWidget(); 11661 } 11662 11663})(); 11664</script>
11664 11665 11666 11667</div>
11667<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
11667 11668</body> 11669</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.