1<!DOCTYPE html> 2<html lang="de-DE" 3 itemscope="itemscope" 4 itemtype="https://schema.org/WebPage"> 5 6 7 8 9 <head> 10 11 <meta charset="utf-8"> 12 13 14
14<script> 15 window.dataLayer = window.dataLayer || []; 16 function gtag(){dataLayer.push(arguments);} 17 18 // Falls User bereits Consent gegeben hat, Default reflektieren (sonst würden nachfolgende update-Calls "zurückgesetzt" wirken) 19 var cookiePref = (document.cookie || '').match(/cookie-preference=([^;]+)/); 20 var dtgsAllow = (document.cookie || '').match(/dtgsAllowGtmTracking=([^;]+)/); 21 var adsEnabled = (document.cookie || '').match(/google-ads-enabled=([^;]+)/); 22 23 var analyticsGranted = dtgsAllow && dtgsAllow[1] === '1'; 24 var adsGranted = adsEnabled && adsEnabled[1] === '1'; 25 26 gtag('consent', 'default', { 27 'ad_storage': adsGranted ? 'granted' : 'denied', 28 'ad_user_data': adsGranted ? 'granted' : 'denied', 29 'ad_personalization': adsGranted ? 'granted' : 'denied', 30 'analytics_storage': analyticsGranted ? 'granted' : 'denied', 31 'functionality_storage': 'granted', 32 'security_storage': 'granted', 33 'wait_for_update': 500 34 }); 35 36 // Falls noch kein Consent: default=denied bleibt bis Dreisc-Plugin updated 37 // Falls Consent schon granted: default reflektiert bereits granted â keine Luecke 38 </script>
38 39 40
40<script>window.evCustomerLoggedIn = false;window.evCustomerFirstName = null;</script>
40 41 42 <meta name="viewport" 43 content="width=device-width, initial-scale=1, shrink-to-fit=no"> 44 45 <meta name="author" 46 content=""> 47 <meta name="robots" 48 content="noindex,follow"> 49 <meta name="revisit-after" 50 content="15 days"> 51 <meta name="keywords" 52 content=""> 53 <meta name="description" 54 content=""> 55 56 <link rel="alternate" 57 type="application/rss+xml" 58 title="Blog Feed" 59 href="/blog.rss" /> 60 61 62 <meta property="og:url" 63 content="https://echt-vital.de/account/login"> 64 <meta property="og:type" 65 content="website"> 66 <meta property="og:site_name" 67 content="Echt Vital"> 68 <meta property="og:title" 69 content="Registrierung | Echt Vital"> 70 <meta property="og:description" 71 content=""> 72 <meta property="og:image" 73 content="https://echtvital.cstatic.com/media/7f/d3/88/1679934207/ev-logo.webp?ts=1679934207"> 74 75 <meta name="twitter:card" 76 content="summary"> 77 <meta name="twitter:site" 78 content="Echt Vital"> 79 <meta name="twitter:title" 80 content="Registrierung | Echt Vital"> 81 <meta name="twitter:description" 82 content=""> 83 <meta name="twitter:image" 84 content="https://echtvital.cstatic.com/media/7f/d3/88/1679934207/ev-logo.webp?ts=1679934207"> 85 86 87 88 89 <meta name="facebook-domain-verification" content="qvzlx7x3bqymxo2b3oscdf3f2xm8yy" /> 90 91 <meta itemprop="copyrightHolder" 92 content="Echt Vital"> 93 <meta itemprop="copyrightYear" 94 content=""> 95 <meta itemprop="isFamilyFriendly" 96 content="true"> 97 <meta itemprop="image" 98 content="https://echtvital.cstatic.com/media/7f/d3/88/1679934207/ev-logo.webp?ts=1679934207"> 99 100 101 <meta name="theme-color" 102 content="#ffffff"> 103 104 105 106 107 108 109<!-- Google Tag Manager -->
110<script>!function(){"use strict";function l(e){for(var t=e,r=0,n=document.cookie.split(";");r<n.length;r++){var o=n[r].split("=");if(o[0].trim()===t)return o[1]}}function s(e){return localStorage.getItem(e)}function u(e){return window[e]}function A(e,t){e=document.querySelector(e);return t?null==e?void 0:e.getAttribute(t):null==e?void 0:e.textContent}var e=window,t=document,r="script",n="dataLayer",o="https://t.echt-vital.de",a="",i="chtlwgdqv",c="2kz=HxVZICMhWSY1PDNeIz43TgBMVklGShAGSxQHDwNBAgECEAhJEwk%3D",g="cookie",v="_y",E="",d=!1;try{var d=!!g&&(m=navigator.userAgent,!!(m=new RegExp("Version/([0-9._]+)(.*Mobile)?.*Safari.*").exec(m)))&&16.4<=parseFloat(m[1]),f="stapeUserId"===g,I=d&&!f?function(e,t,r){void 0===t&&(t="");var n={cookie:l,localStorage:s,jsVariable:u,cssSelector:A},t=Array.isArray(t)?t:[t];if(e&&n[e])for(var o=n[e],a=0,i=t;a<i.length;a++){var c=i[a],c=r?o(c,r):o(c);if(c)return c}else console.warn("invalid uid source",e)}(g,v,E):void 0;d=d&&(!!I||f)}catch(e){console.error(e)}var m=e,g=(m[n]=m[n]||[],m[n].push({"gtm.start":(new Date).getTime(),event:"gtm.js"}),t.getElementsByTagName(r)[0]),v=I?"&bi="+encodeURIComponent(I):"",E=t.createElement(r),f=(d&&(i=8<i.length?i.replace(/([a-z]{8}$)/,"kp$1"):"kp"+i),!d&&a?a:o);E.async=!0,E.src=f+"/"+i+".js?"+c+v,null!=(e=g.parentNode)&&e.insertBefore(E,g)}();</script>
110 111<!-- End Google Tag Manager --> 112 113 114 115 116<!-- eTrusted Performance-Optimierung --> 117<link rel="dns-prefetch" href="//integrations.etrusted.com"> 118<link rel="preconnect" href="https://integrations.etrusted.com" crossorigin> 119
120<script defer src="https://integrations.etrusted.com/applications/widget.js/v2"></script>
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 <link rel="icon" href="https://echtvital.cstatic.com/media/29/e7/c4/1687418881/Symbol.png?ts=1687418881"> 136 137 <link rel="apple-touch-icon" 138 href="https://echtvital.cstatic.com/media/b4/4b/d1/1751009062/Echt-Vital-favicon.png?ts=1753343691"> 139 140 141 <title itemprop="name"> 142 Registrierung | Echt Vital </title> 143 144 <link rel="stylesheet" 145 href="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/css/all.css?1790851198"> 146 147 148 <style> 149 /* ============================================================ 150 ECHT-VITAL GLOBALES CSS â SORTIERT & KOMMENTIERT 151 ============================================================ */ 152 153 154/* ************************************************************ 155 ABSCHNITT 2: CHECKOUT HEADER (Minimal-Header) 156 ************************************************************ */ 157 158/* Hotline/Kontakt im Checkout ausblenden */ 159body.is-ctl-checkout.is-act-confirmpage .header-minimal-contact, 160body.is-ctl-onepagecheckout.is-act-checkoutregisterpage .header-minimal-contact { 161 display: none !important; 162} 163 164/* Logo + Zurück-Button je 50% Breite */ 165body.is-ctl-checkout.is-act-confirmpage .header-minimal-logo, 166body.is-ctl-checkout.is-act-confirmpage .header-minimal-back-to-shop, 167body.is-ctl-onepagecheckout.is-act-checkoutregisterpage .header-minimal-logo, 168body.is-ctl-onepagecheckout.is-act-checkoutregisterpage .header-minimal-back-to-shop { 169 flex: 0 0 50% !important; 170 max-width: 50% !important; 171} 172 173/* AGB-Checkbox oben im One-Page-Checkout ausblenden */ 174.one-page-checkout[data-uri="/checkout/confirm"] > .confirm-tos { 175 display: none !important; 176} 177 178 179/* ************************************************************ 180 ABSCHNITT 3: SUCHE 181 ************************************************************ */ 182 183/* Suchfeld zentrieren */ 184.header-search-col { 185 justify-content: center; 186} 187 188@media (min-width: 576px) { 189 .header-search { 190 width: 500px; 191 } 192} 193 194/* Pfeil bei Suchergebnissen entfernen */ 195.search-suggest.js-search-result::after { 196 display: none !important; 197} 198 199 200/* ************************************************************ 201 ABSCHNITT 4: LAYOUT & CONTAINER 202 ************************************************************ */ 203 204/* Hauptcontainer Padding */ 205.container-main { 206 padding: 0px !important; 207 padding-bottom: 20px; 208} 209 210/* Hero-Block Fullbleed */ 211.ev-hero-fullbleed { 212 width: 100vw; 213 margin-left: calc(50% - 50vw); 214 margin-right: calc(50% - 50vw); 215} 216 217/* Offcanvas z-index (Warenkorb etc.) */ 218.offcanvas { 219 z-index: 3333333333; 220} 221 222 223/* ************************************************************ 224 ABSCHNITT 5: BUTTONS 225 ************************************************************ */ 226 227/* Primär-Button abgerundet */ 228.btn-primary { 229 border-radius: 20px; 230} 231 232/* Produkt-Detail-Button Styling */ 233.card.product-box.box-minimal .product-button-detail, 234.card.product-box.box-standard .product-button-detail { 235 background-color: transparent !important; 236 color: #36442d !important; 237 border: 2px solid #36442d !important; 238 border-radius: 50px !important; 239 margin-top: 10px; 240 font-size: 0.8rem !important; 241 text-decoration: none !important; 242 z-index: 2 !important; 243 position: relative !important; 244} 245 246/* z-index Fix für Detail-Button */ 247.card.product-box.box-standard .product-button-detail { 248 z-index: 1 !important; 249} 250 251 252/* ************************************************************ 253 ABSCHNITT 6: PRODUKTBOXEN & SLIDER 254 ************************************************************ */ 255 256/* Produktpreis Mindestbreite */ 257.product-box .card-body .product-info .product-price-info { 258 min-width: 60px !important; 259} 260 261/* Stretched-Link Höhe */ 262.product-box.box-standard .stretched-link::after, 263.product-box.box-minimal .stretched-link::after { 264 height: 100%; 265} 266 267/* Slider Container Padding */ 268.cms-element-product-slider .product-slider-container > div { 269 padding-right: 10px !important; 270} 271 272/* Mobile Kategorien Slider zentrieren */ 273.tanmar-mobile-categories-desktop .product-slider-container { 274 margin-left: auto; 275 margin-right: auto; 276} 277 278@media (max-width: 768px) { 279 .product-slider-container .card.product-box.box-standard { 280 margin: inherit; 281 } 282} 283 284 285/* ************************************************************ 286 ABSCHNITT 7: PRODUKTLISTING (Kategorieseiten) 287 ************************************************************ */ 288 289/* Hintergrund Warenkorb-Button */ 290.ev-product-listing-bg .product-box .card-body .product-info .product-action .d-grid { 291 background-color: #f2f1ec; 292} 293 294@media (max-width: 768px) { 295 /* Produkttitel max. Breite */ 296 .cms-listing-col .product-title { 297 max-width: 111px !important; 298 } 299 300 /* Listing-Abstand */ 301 .cms-listing-col { 302 margin-bottom: 20px !important; 303 } 304 305 /* Produktbilder Höhe & Padding */ 306 .cms-element-product-listing .card.product-box.box-minimal .product-image-wrapper .product-image, 307 .cms-element-product-listing .card.product-box.box-standard .product-image-wrapper .product-image { 308 height: 150px !important; 309 } 310 311 .cms-element-product-listing .card.product-box.box-minimal .product-image-wrapper, 312 .cms-element-product-listing .card.product-box.box-standard .product-image-wrapper { 313 padding: 0px; 314 padding-top: 30px; 315 } 316} 317 318 319/* ************************************************************ 320 ABSCHNITT 8: PRODUKTDETAILSEITE (Buy-Box) 321 ************************************************************ */ 322 323/* Buy-Box Titel */ 324.ev-buy-box .ev-gallery-buy .cms-row .product-detail-buy .ev-product-title h1 { 325 font-size: 1.6em; 326} 327
328/* Galerie-Slider Dot-Icon Fix */ 329.ev-buy-box .ev-gallery-buy .cms-row .product-detail-media .base-slider-dots .base-slider-dot .icon svg { 330 top: -0.9px !important; 331} 332 333/* Galerie zentrieren */ 334.ev-buy-box .ev-gallery-buy .cms-row .product-detail-media .cms-element-image-gallery .gallery-slider-image { 335 margin: auto !important; 336} 337 338/* Trustpilot Rating Mindesthöhe */ 339.ev-buy-box .product-detail-buy .ts-rating { 340 min-height: 27px !important; 341} 342 343/* Galerie Ladeflackern verhindern */ 344.ev-buy-box .product-detail-media:not(.is-ready) .gallery-slide { 345 display: none; 346} 347 348.ev-buy-box .product-detail-media:not(.is-ready) .gallery-slide:first-child { 349 display: block; 350} 351 352/* Mobil: Buy-Box Abstand oben */ 353@media screen and (max-width: 600px) { 354 .ev-buy-box { 355 margin-top: -12px; 356 } 357} 358 359/* Zoom-Modal über Navigation */ 360.modal.zoom-modal { 361 overflow: hidden; 362 z-index: 9999 !important; 363} 364 365/* Image-Zoom Container */ 366.image-zoom-container img { 367 height: auto !important; 368 width: auto !important; 369} 370 371 372/* ************************************************************ 373 ABSCHNITT 9: PRODUKTVORTEILE (Icons) 374 ************************************************************ */ 375 376@media screen and (max-width: 768px) { 377 .left-aligned-advantages .ev-product-advantages .boxev-group .boxev-item img { 378 margin-bottom: 10px; 379 } 380 381 .left-aligned-advantages .ev-product-advantages .boxev-group .boxev-item .boxev-item-descr { 382 text-align: center; 383 } 384 385 .ev-product-advantages { 386 padding: 0px !important; 387 padding-top: 30px; 388 } 389 390 .left-aligned-advantages .ev-product-advantages .boxev-group .boxev-item { 391 display: block; 392 width: 50%; 393 min-width: 50%; 394 padding: 5px; 395 } 396 397 .boxev-item-descr { 398 text-align: center; 399 } 400} 401 402 403/* ************************************************************ 404 ABSCHNITT 10: STICKY BUY WIDGET (Mobil) 405 ************************************************************ */ 406 407@media screen and (max-width: 768px) { 408 .rhweb-product-sticky-buy-widget * { 409 border-radius: 99px; 410 } 411 412 .rhweb-product-sticky-buy-widget { 413 z-index: 9999999999 !important; 414 } 415 416 .rhweb-product-sticky-buy-widget-form .col-5 { 417 max-width: 30% !important; 418 } 419} 420 421 422/* ************************************************************ 423 ABSCHNITT 11: BESTSELLER SEKTION 424 ************************************************************ */ 425 426.ev-bestseller { 427 padding-top: 80px; 428} 429 430.ev-bestseller .bestseller-content .bestseller-product-box .bestseller-product-img .product-img { 431 width: 260px; 432} 433 434.bestseller-product-box { 435 margin-top: 20px; 436 margin-bottom: 20px; 437} 438 439@media (max-width: 767.98px) { 440 .ev-bestseller .bestseller-product-img { 441 max-width: 100%; 442 } 443} 444 445@media (max-width: 768px) { 446 .ev-bestseller-slider-start #tns2-iw, 447 .ev-bestseller-slider-start #tns1-iw { 448 margin: 0px 130px 0px 0px; 449 } 450 451 .ev-bestseller-slider-start .cms-section-default { 452 padding-right: 0px !important; 453 } 454} 455 456 457/* ************************************************************ 458 ABSCHNITT 12: CROSS-SELLING SLIDER 459 ************************************************************ */ 460 461@media (max-width: 768px) { 462 .ev-cross-slider #tns2-iw { 463 margin: 0px 100px 0px 0px; 464 } 465} 466 467 468/* ************************************************************ 469 ABSCHNITT 13: KATEGORIESEITEN 470 ************************************************************ */ 471 472/* Kategorie-Block abgerundet */ 473.ev-category { 474 border-bottom-right-radius: 50px; 475 border-bottom-left-radius: 50px; 476} 477 478/* Kategorie-Start zentrieren */ 479@media (min-width: 992px) { 480 .ev-category-start .justify-content-lg-between { 481 justify-content: center !important; 482 } 483} 484 485/* Kategorie-Footer Abstand */ 486.ev-category-footer { 487 margin-bottom: -50px; 488} 489 490/* Badge Kategorie Titel mobil */ 491@media (max-width: 768px) { 492 .badge-rotated h1 { 493 font-size: 1.5rem !important; 494 line-height: 2.2rem; 495 } 496} 497 498 499/* ************************************************************ 500 ABSCHNITT 14: AKTIONEN / BANNER 501 ************************************************************ */ 502 503.ev-aktionen-banner { 504 margin-bottom: 80px; 505 border-bottom-right-radius: 50px; 506 border-bottom-left-radius: 50px; 507} 508 509.ev-aktion-banner img { 510 border-radius: 30px; 511} 512 513.ev-aktionen-banner .cms-image { 514 border-radius: 30px; 515 margin-bottom: 30px; 516} 517 518.ev-aktionen-banner-block { 519 padding-bottom: 60px; 520} 521 522/* Aktionen Badge */ 523.ev-aktionen-badge .badge-rotated { 524 padding: 1.3rem; 525 font-weight: 600; 526 color: white; 527 transform: rotate(-2deg); 528 transform-origin: top left; 529 z-index: 10; 530 border-radius: 20px; 531 width: fit-content; 532} 533 534.ev-aktionen-badge .badge-rotated.no-index { 535 z-index: 0; 536} 537 538.ev-aktionen-badge .badge-rotated h1 { 539 color: white; 540 font-style: italic; 541 margin-bottom: 0; 542 text-transform: uppercase; 543} 544 545 546/* ************************************************************ 547 ABSCHNITT 15: EVITAL SLIDER (Startseite) 548 ************************************************************ */ 549 550.evital-slider .evital-slide__image img { 551 max-width: auto; 552 padding-right: 50px; 553 padding-top: 30px; 554 padding-bottom: 30px; 555} 556 557.evital-slider .evital-slide__inner { 558 padding: 0px; 559} 560 561.evital-slider .evital-slide__image { 562 margin-top: auto; 563 text-align: left; 564} 565 566@media (max-width: 768px) { 567 .evital-slider .evital-slide__image img { 568 padding-top: 20px; 569 padding-right: 0px; 570 } 571} 572 573/* Custom Dotnav ausblenden */ 574.custom-dotnav { 575 display: none; 576} 577 578 579/* ************************************************************ 580 ABSCHNITT 16: KARTEN MIT BADGE 581 ************************************************************ */ 582 583.card-with-badge { 584 width: 370px; 585} 586 587.card-with-badge .card-content { 588 height: 400px; 589} 590 591 592/* ************************************************************ 593 ABSCHNITT 17: STORY / ZIGZAG BLÃCKE 594 ************************************************************ */ 595 596.ev-story-bild img { 597 vertical-align: middle; 598 max-width: 170px; 599} 600 601.zigzag-story-block .zigzag-bg-image { 602 top: 10px; 603} 604 605.zigzag-story-block .custom-paragraph-block { 606 font-size: 20px; 607} 608 609@media (max-width: 768px) { 610 .zigzag-story-block { 611 margin: 0px; 612 } 613} 614 615 616/* ************************************************************ 617 ABSCHNITT 18: CUSTOM ENERGY SEKTION 618 ************************************************************ */ 619 620@media (max-width: 768px) { 621 .custom-energy h2.main-title, 622 .custom-energy .main-title.h2 { 623 font-size: 35px !important; 624 } 625 626 .custom-energy { 627 padding: 0px; 628 } 629} 630 631 632/* ************************************************************ 633 ABSCHNITT 19: FAQ 634 ************************************************************ */ 635 636.ev-faq { 637 max-width: 560px !important; 638 margin: auto; 639} 640 641 642/* ************************************************************ 643 ABSCHNITT 20: SEO TEXT 644 ************************************************************ */ 645 646.ev-seo-text { 647 margin-top: 50px; 648 margin-bottom: 30px; 649 color: #36432D; 650} 651 652.ev-seo-text h2 { 653 font-weight: 700; 654 color: #36432D; 655 font-size: 1.2em; 656} 657 658 659/* ************************************************************ 660 ABSCHNITT 21: UNSER STANDARD SEKTION 661 ************************************************************ */ 662 663.our-standard { 664 max-width: 1120px; 665 margin: auto; 666} 667 668 669/* ************************************************************ 670 ABSCHNITT 22: HERO (Startseite) 671 ************************************************************ */ 672 673@media screen and (min-width: 2200px) { 674 .ev-hero .cms-section-default .cms-element-image .cms-element-alignment { 675 text-align: center; 676 } 677} 678 679 680/* ************************************************************ 681 ABSCHNITT 23: YOUTUBE VIDEO 682 ************************************************************ */ 683
684.startytvideo { 685 width: 50%; 686 max-width: 960px; 687 margin: 0 auto; 688} 689 690.startytvideo iframe { 691 width: 100% !important; 692 height: auto !important; 693 aspect-ratio: 16/9; 694 display: block; 695 border: 0; 696} 697 698/* Runde Ecken */ 699.cms-element-youtube-video.startytvideo iframe, 700.startytvideo .cms-element-youtube-video iframe { 701 border-radius: 20px !important; 702} 703 704@media (max-width: 768px) { 705 .startytvideo { 706 width: 100%; 707 max-width: none; 708 } 709} 710 711/* Mobil Fullbleed */ 712@media (max-width: 480px) { 713 .startytvideo { 714 width: 100vw !important; 715 margin-left: calc(50% - 50vw) !important; 716 margin-right: calc(50% - 50vw) !important; 717 border-radius: 0 !important; 718 } 719 720 .startytvideo iframe { 721 border-radius: 0 !important; 722 } 723} 724 725 726/* ************************************************************ 727 ABSCHNITT 24: BLOG 728 ************************************************************ */ 729 730.blog-detail-text { 731 max-width: 750px; 732 margin: auto; 733 padding-bottom: 80px; 734} 735 736.blog-detail-text img { 737 border-radius: 20px; 738} 739 740.netzp-blog6-post img.image-full { 741 border-radius: 20px; 742} 743 744 745/* ************************************************************ 746 ABSCHNITT 25: NEWSLETTER 747 ************************************************************ */ 748 749/* Newsletter im Footer ausblenden */ 750.rhweb-newsletter.footer-above { 751 display: none; 752} 753 754/* Newsletter Signup Box */ 755.qx-newsletter-signup-box { 756 max-width: 1000px !important; 757 min-height: 500px !important; 758} 759 760.qx-newsletter-signup-box .qx-newsletter-text p:last-of-type { 761 margin-bottom: 0px; 762} 763 764@media (max-width: 768px) { 765 .ev-footer-newsletter-merge { 766 margin-left: -20px; 767 margin-right: -20px; 768 } 769 770 .qx-newsletter-text { 771 padding-left: 0px !important; 772 padding-right: 0px !important; 773 } 774 775 .qx-newsletter-text-headline { 776 padding-left: 15px; 777 padding-right: 15px; 778 } 779} 780 781 782/* ************************************************************ 783 ABSCHNITT 26: FOOTER 784 ************************************************************ */ 785 786@media (max-width: 768px) { 787 .footer-main { 788 padding-top: 30px; 789 } 790} 791 792/* Footer Icon Position */ 793.qx-icon-footer .qx-icon { 794 top: 0px; 795} 796 797/* Payment-Logos */ 798.footer-logo-image { 799 max-width: 65px; 800} 801 802@media (max-width: 767.98px) { 803 .footer-logo-image { 804 max-width: 45px; 805 } 806 807 .footer-logo { 808 margin-right: 0rem !important; 809 } 810} 811 812/* Klarna Logos ausblenden */ 813.footer-logo.is-payment:has(img[alt="Klarna Ratenkauf"]) { 814 display: none !important; 815} 816 817.footer-logo.is-payment:has(img[alt="Klarna Payments"]) { 818 display: none !important; 819} 820 821.footer-bottom div:has(> img[alt="Klarna Rechnung"]) { 822 display: none !important; 823} 824 825.footer-bottom div:has(> img[alt="Klarna Ratenkauf"]) { 826 display: none !important; 827} 828 829 830/* ************************************************************ 831 ABSCHNITT 27: BESCHREIBUNGSLISTE (PDP) 832 ************************************************************ */ 833 834.description_list_first { 835 margin-top: -10px; 836} 837 838 839/* ************************************************************ 840 ABSCHNITT 28: WCB (Cookie Banner Links) 841 ************************************************************ */ 842 843.WCB-Item a { 844 pointer-events: none; 845 cursor: default; 846 text-decoration: none; 847 color: black; 848 font-weight: bold; 849} 850 </style> 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871
871<script> 872 window.features = JSON.parse('\u007B\u0022V6_5_0_0\u0022\u003Atrue,\u0022v6.5.0.0\u0022\u003Atrue,\u0022V6_6_0_0\u0022\u003Atrue,\u0022v6.6.0.0\u0022\u003Atrue,\u0022V6_7_0_0\u0022\u003Atrue,\u0022v6.7.0.0\u0022\u003Atrue,\u0022V6_8_0_0\u0022\u003Afalse,\u0022v6.8.0.0\u0022\u003Afalse,\u0022DISABLE_VUE_COMPAT\u0022\u003Atrue,\u0022disable.vue.compat\u0022\u003Atrue,\u0022ACCESSIBILITY_TWEAKS\u0022\u003Atrue,\u0022accessibility.tweaks\u0022\u003Atrue,\u0022TELEMETRY_METRICS\u0022\u003Afalse,\u0022telemetry.metrics\u0022\u003Afalse,\u0022FLOW_EXECUTION_AFTER_BUSINESS_PROCESS\u0022\u003Afalse,\u0022flow.execution.after.business.process\u0022\u003Afalse,\u0022PERFORMANCE_TWEAKS\u0022\u003Afalse,\u0022performance.tweaks\u0022\u003Afalse,\u0022CACHE_CONTEXT_HASH_RULES_OPTIMIZATION\u0022\u003Afalse,\u0022cache.context.hash.rules.optimization\u0022\u003Afalse,\u0022CACHE_REWORK\u0022\u003Afalse,\u0022cache.rework\u0022\u003Afalse,\u0022DEFERRED_CART_ERRORS\u0022\u003Afalse,\u0022deferred.cart.errors\u0022\u003Afalse,\u0022PRODUCT_ANALYTICS\u0022\u003Afalse,\u0022product.analytics\u0022\u003Afalse,\u0022REPEATED_PAYMENT_FINALIZE\u0022\u003Afalse,\u0022repeated.payment.finalize\u0022\u003Afalse,\u0022METEOR_TEXT_EDITOR\u0022\u003Afalse,\u0022meteor.text.editor\u0022\u003Afalse,\u0022SSO\u0022\u003Afalse,\u0022sso\u0022\u003Afalse,\u0022RULE_BUILDER\u0022\u003Atrue,\u0022rule.builder\u0022\u003Atrue,\u0022FLOW_BUILDER\u0022\u003Atrue,\u0022flow.builder\u0022\u003Atrue,\u0022ADVANCED_SEARCH\u0022\u003Atrue,\u0022advanced.search\u0022\u003Atrue,\u0022RETURNS_MANAGEMENT\u0022\u003Atrue,\u0022returns.management\u0022\u003Atrue,\u0022TEXT_GENERATOR\u0022\u003Atrue,\u0022text.generator\u0022\u003Atrue,\u0022CHECKOUT_SWEETENER\u0022\u003Atrue,\u0022checkout.sweetener\u0022\u003Atrue,\u0022IMAGE_CLASSIFICATION\u0022\u003Atrue,\u0022image.classification\u0022\u003Atrue,\u0022PROPERTY_EXTRACTOR\u0022\u003Atrue,\u0022property.extractor\u0022\u003Atrue,\u0022REVIEW_SUMMARY\u0022\u003Atrue,\u0022review.summary\u0022\u003Atrue,\u0022REVIEW_TRANSLATOR\u0022\u003Atrue,\u0022review.translator\u0022\u003Atrue,\u0022CONTENT_GENERATOR\u0022\u003Atrue,\u0022content.generator\u0022\u003Atrue,\u0022EXPORT_ASSISTANT\u0022\u003Atrue,\u0022export.assistant\u0022\u003Atrue,\u0022QUICK_ORDER\u0022\u003Atrue,\u0022quick.order\u0022\u003Atrue,\u0022EMPLOYEE_MANAGEMENT\u0022\u003Atrue,\u0022employee.management\u0022\u003Atrue,\u0022QUOTE_MANAGEMENT\u0022\u003Atrue,\u0022quote.management\u0022\u003Atrue,\u0022CAPTCHA\u0022\u003Atrue,\u0022captcha\u0022\u003Atrue,\u0022NATURAL_LANGUAGE_SEARCH\u0022\u003Atrue,\u0022natural.language.search\u0022\u003Atrue,\u0022IMAGE_UPLOAD_SEARCH\u0022\u003Atrue,\u0022image.upload.search\u0022\u003Atrue,\u0022ORDER_APPROVAL\u0022\u003Atrue,\u0022order.approval\u0022\u003Atrue,\u0022SPATIAL_CMS_ELEMENT\u0022\u003Atrue,\u0022spatial.cms.element\u0022\u003Atrue,\u0022SHOPPING_LISTS\u0022\u003Atrue,\u0022shopping.lists\u0022\u003Atrue,\u0022TEXT_TO_IMAGE_GENERATION\u0022\u003Atrue,\u0022text.to.image.generation\u0022\u003Atrue,\u0022SPATIAL_SCENE_EDITOR\u0022\u003Afalse,\u0022spatial.scene.editor\u0022\u003Afalse,\u0022ORGANIZATION_UNITS\u0022\u003Atrue,\u0022organization.units\u0022\u003Atrue\u007D'); 873 </script>
873 874 875 876
876<script nonce="kQgCx9aVlC8="> 877 dataLayer = window.dataLayer || []; 878 dataLayer.push({ ecommerce: null }); 879 dataLayer.push({"pageTitle":"Registrierung | Echt Vital","pageSubCategory":"","pageCategoryID":"","pageSubCategoryID":"","pageCountryCode":"de-DE","pageLanguageCode":"Deutsch","pageVersion":1,"pageTestVariation":"1","pageValue":1,"pageAttributes":"1","pageCategory":"Auth","visitorLoginState":"Logged Out","visitorType":"NOT LOGGED IN","visitorLifetimeValue":0,"visitorExistingCustomer":"No"}); 880 var dtgsConsentHandler = 'shopwareCmp'; 881 </script>
881 882 883 884
884<script> 885 window.dtgsGtmConsentCookieName = 'dtgsAllowGtmTracking'; 886 window.dtgsGtmCustomServices = []; 887 </script>
887 888 889 890
890<script nonce="kQgCx9aVlC8="> 891 window.dataLayer = window.dataLayer || []; 892 function gtag() { dataLayer.push(arguments); } 893 894 (() => { 895 const analyticsStorageEnabled = document.cookie.split(';').some((item) => item.trim().includes('dtgsAllowGtmTracking=1')); 896 897 let googleAdsCookieName = 'google-ads-enabled'; 898 googleAdsCookieName = 'dtgsAllowGtmTracking'; 899 window.googleAdsCookieName = 'dtgsAllowGtmTracking'; 900 901 const adsEnabled = document.cookie.split(';').some((item) => item.trim().includes(googleAdsCookieName + '=1')); 902 903 // Always set a default consent for consent mode v2 904 gtag('consent', 'default', { 905 'ad_user_data': adsEnabled ? 'granted' : 'denied', 906 'ad_storage': adsEnabled ? 'granted' : 'denied', 907 'ad_personalization': adsEnabled ? 'granted' : 'denied', 908 'analytics_storage': analyticsStorageEnabled ? 'granted' : 'denied' 909 }); 910 })(); 911 </script>
911 912 913 914 <!-- Shopware Analytics --> 915
915<script> 916 window.shopwareAnalytics = { 917 trackingId: '956ddedebd13df347fdd5ead7882e046', 918 merchantConsent: true, 919 debug: false, 920 storefrontController: 'Auth', 921 storefrontAction: 'loginPage', 922 storefrontRoute: 'frontend.account.login.page', 923 storefrontCmsPageType: null , 924 }; 925 </script>
925 926 <!-- End Shopware Analytics --> 927 928 929 930 <!-- added by Trusted Shops app: Start --> 931
931<script src="https://integrations.etrusted.com/applications/widget.js/v2" async defer></script>
931 932 <!-- End --> 933 934 935 936 937 938 939 940
940<script> 941 window.mediameetsTiktokPixelData = new Map(); 942 </script>
942 943 944 945
945<script> 946 window.mediameetsFacebookPixelData = new Map(); 947 </script>
vendor: 201 bytes, lines 947-951
947 948 949 950 <script type="text/javascript" id="recaptcha-script" 951 data-src='https://www.google.com/recaptcha/api.js?render=
9516Lc8vdgrAAAAAOYICxJR1cDWZnhzqvD3GzHG0JFK
vendor: 42 bytes, lines 951-953
951' 952 defer></script> 953
953<script> 954 window.googleReCaptchaV3Active = true; 955 </script>
955 956 957 958 959 960
960<script> 961 window.useDefaultCookieConsent = true; 962 </script>
962 963 964
964<script> 965 window.activeNavigationId = '85d03fd66f144308bab163588dd3a94f'; 966 window.activeRoute = 'frontend.account.login.page'; 967 window.activeRouteParameters = '\u007B\u0022_noStore\u0022\u003Atrue\u007D'; 968 window.router = { 969 'frontend.cart.offcanvas': '/checkout/offcanvas', 970 'frontend.cookie.offcanvas': '/cookie/offcanvas', 971 'frontend.cookie.groups': '/cookie/groups', 972 'frontend.checkout.finish.page': '/checkout/finish', 973 'frontend.checkout.info': '/widgets/checkout/info', 974 'frontend.menu.offcanvas': '/widgets/menu/offcanvas', 975 'frontend.cms.page': '/widgets/cms', 976 'frontend.cms.navigation.page': '/widgets/cms/navigation', 977 'frontend.country.country-data': '/country/country-state-data', 978 'frontend.app-system.generate-token': '/app-system/Placeholder/generate-token', 979 'frontend.gateway.context': '/gateway/context', 980 'frontend.cookie.consent.offcanvas': '/cookie/consent-offcanvas', 981 'frontend.account.login.page': '/account/login', 982 }; 983 window.salesChannelId = '2a3ffba2300a43579ef5dfa4e821b5d3'; 984 </script>
984 985 986 987 988 989 990 991 992
992<script> 993 window.router['widgets.swag.cmsExtensions.quickview'] = '/swag/cms-extensions/quickview'; 994 window.router['widgets.swag.cmsExtensions.quickview.variant'] = '/swag/cms-extensions/quickview/variant'; 995 </script>
995 996 997 998
998<script> 999 window.router['frontend.shopware_analytics.customer.data'] = '/storefront/script/shopware-analytics-customer' 1000 </script>
1000 1001 1002 1003
1003<script> 1004 window.router = window.router || {}; 1005 window.router['frontend.checkout.confirm.page'] = '\/checkout\/confirm'; 1006 1007 window.ShopwarePayments = { 1008 features: { 1009 contextGatewaySupported: false 1010 }, 1011 translations: { 1012 'GENERIC_ERROR': 'W\u00E4hrend\u0020des\u0020Zahlungsvorgangs\u0020ist\u0020ein\u0020Fehler\u0020aufgetreten.\u0020Bitte\u0020versuchen\u0020Sie\u0020es\u0020erneut\u0020oder\u0020w\u00E4hlen\u0020Sie\u0020eine\u0020andere\u0020Zahlungsart.', 1013 'SCRIPT_ERROR': 'Der\u0020Zahlungsanbieter\u0020konnte\u0020nicht\u0020geladen\u0020werden.\u0020Bitte\u0020aktualisieren\u0020Sie\u0020die\u0020Seite\u0020und\u0020versuchen\u0020Sie\u0020es\u0020erneut.', 1014 'SCRIPT_NOT_LOADED': 'Das\u0020Zahlungsanbieter\u002DSkript\u0020konnte\u0020nicht\u0020geladen\u0020werden.\u0020Bitte\u0020aktualisieren\u0020Sie\u0020die\u0020Seite\u0020und\u0020versuchen\u0020Sie\u0020es\u0020erneut.', 1015 'NOT_ELIGIBLE': 'Diese\u0020Zahlungsmethode\u0020ist\u0020f\u00FCr\u0020Ihre\u0020Transaktion\u0020nicht\u0020verf\u00FCgbar.\u0020Bitte\u0020w\u00E4hlen\u0020Sie\u0020eine\u0020andere\u0020Zahlungsmethode.', 1016 'BROWSER_UNSUPPORTED': 'Die\u0020gew\u00E4hlte\u0020Zahlungsart\u0020wird\u0020von\u0020Ihrem\u0020aktuellen\u0020Browser\u0020nicht\u0020unterst\u00FCtzt.\u0020Bitte\u0020versuchen\u0020Sie\u0020es\u0020mit\u0020einem\u0020anderen\u0020Browser\u0020oder\u0020w\u00E4hlen\u0020Sie\u0020eine\u0020andere\u0020Zahlungsart.', 1017 'USER_CANCELLED': 'Die\u0020Zahlung\u0020wurde\u0020abgebrochen.\u0020Bitte\u0020versuchen\u0020Sie\u0020es\u0020erneut\u0020oder\u0020w\u00E4hlen\u0020Sie\u0020eine\u0020andere\u0020Zahlungsmethode.', 1018 'DECLINED': 'Die\u0020Zahlung\u0020wurde\u0020abgelehnt.\u0020Bitte\u0020versuchen\u0020Sie\u0020es\u0020erneut\u0020oder\u0020w\u00E4hlen\u0020Sie\u0020eine\u0020andere\u0020Zahlungsmethode.', 1019 'ZERO_VALUE_CART': 'PayPal\u0020ist\u0020f\u00FCr\u0020Bestellungen\u0020ohne\u0020Warenwert\u0020nicht\u0020verf\u00FCgbar.\u0020Bitte\u0020nutzen\u0020Sie\u0020stattdessen\u0020den\u0020regul\u00E4ren\u0020Checkout.' 1020 } 1021 }; 1022 </script>
1022 1023 1024
1024<script> 1025 1026 window.breakpoints = JSON.parse('\u007B\u0022xs\u0022\u003A0,\u0022sm\u0022\u003A576,\u0022md\u0022\u003A768,\u0022lg\u0022\u003A992,\u0022xl\u0022\u003A1200,\u0022xxl\u0022\u003A1400\u007D'); 1027 </script>
1027 1028 1029 1030
1030<script src="https://echt-vital.de/bundles/pickwaredhl/assets/jquery-3.5.1.slim.min.js?1790936532"></script>
1030 1031 1032 1033
1033<script> 1034 window.validationMessages = JSON.parse('\u007B\u0022required\u0022\u003A\u0022Die\u0020Eingabe\u0020darf\u0020nicht\u0020leer\u0020sein.\u0022,\u0022email\u0022\u003A\u0022Ung\\u00fcltige\u0020E\u002DMail\u002DAdresse.\u0020Die\u0020E\u002DMail\u0020ben\\u00f6tigt\u0020das\u0020Format\u0020\\\u0022nutzer\u0040beispiel.de\\\u0022.\u0022,\u0022confirmation\u0022\u003A\u0022Ihre\u0020Eingaben\u0020sind\u0020nicht\u0020identisch.\u0022,\u0022minLength\u0022\u003A\u0022Die\u0020Eingabe\u0020ist\u0020zu\u0020kurz.\u0022,\u0022grecaptcha\u0022\u003A\u0022Bitte\u0020akzeptieren\u0020Sie\u0020die\u0020technisch\u0020erforderlichen\u0020Cookies,\u0020um\u0020die\u0020reCAPTCHA\u002D\\u00dcberpr\\u00fcfung\u0020zu\u0020erm\\u00f6glichen.\u0022\u007D'); 1035 </script>
1035 1036 1037 1038
1038<script> 1039 window.pluginConfig = {"rhwebCmsBundleCmsPageCartPositionEmpty":"below","rhwebCmsBundleCmsPageCartPosition":"below","rhwebCmsBundleCmsPageWishlistPositionEmpty":"below","rhwebCmsBundleCmsPageWishlistPosition":"below","rhwebCmsBundleCmsPageSearchPositionEmpty":"below","rhwebCmsBundleCmsPageSearchPosition":"below","rhwebCmsBundleCmsPageFinishPosition":"below","rhwebCmsBundleAnimationsMobileActivate":true,"generalFreeShippingType":2}; 1040 </script>
1040 1041 1042
1042<script> 1043 window.themeJsPublicPath = 'https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/'; 1044 </script>
1044 1045
1045<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/storefront/storefront.js?1790851198" defer></script>
1045 1046
1046<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/swag-pay-pal/swag-pay-pal.js?1790851198" defer></script>
1046 1047
1047<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/r-h-web-cms-elements/r-h-web-cms-elements.js?1790851198" defer></script>
1047 1048
1048<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/r-h-web-theme-features/r-h-web-theme-features.js?1790851198" defer></script>
1048 1049
1049<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/subscription/subscription.js?1790851198" defer></script>
1049 1050
1050<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/checkout-sweetener/checkout-sweetener.js?1790851198" defer></script>
1050 1051
1051<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/text-translator/text-translator.js?1790851198" defer></script>
1051 1052
1052<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/employee-management/employee-management.js?1790851198" defer></script>
1052 1053
1053<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/quick-order/quick-order.js?1790851198" defer></script>
1053 1054
1054<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/advanced-search/advanced-search.js?1790851198" defer></script>
1054 1055
1055<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/captcha/captcha.js?1790851198" defer></script>
1055 1056
1056<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/quote-management/quote-management.js?1790851198" defer></script>
1056 1057
1057<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/a-i-search/a-i-search.js?1790851198" defer></script>
1057 1058
1058<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/spatial-cms-element/spatial-cms-element.js?1790851198" defer></script>
1058 1059
1059<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/order-approval/order-approval.js?1790851198" defer></script>
1059 1060
1060<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/shopping-list/shopping-list.js?1790851198" defer></script>
1060 1061
1061<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/organization-unit/organization-unit.js?1790851198" defer></script>
1061 1062
1062<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/swag-cms-extensions/swag-cms-extensions.js?1790851198" defer></script>
1062 1063
1063<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/pickware-dhl/pickware-dhl.js?1790851198" defer></script>
1063 1064
1064<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/pickware-shipping-bundle/pickware-shipping-bundle.js?1790851198" defer></script>
1064 1065
1065<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/klarna-payment/klarna-payment.js?1790851198" defer></script>
1065 1066
1066<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/netzp-blog6/netzp-blog6.js?1790851198" defer></script>
1066 1067
1067<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/dtgs-google-tag-manager-sw6/dtgs-google-tag-manager-sw6.js?1790851198" defer></script>
1067 1068
1068<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/tmms-additional-newsletter-registration-options/tmms-additional-newsletter-registration-options.js?1790851198" defer></script>
1068 1069
1069<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/newsletter-sendinblue/newsletter-sendinblue.js?1790851198" defer></script>
1069 1070
1070<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/acris-private-shopping-c-s/acris-private-shopping-c-s.js?1790851198" defer></script>
1070 1071
1071<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/firs1-adcell-tracking/firs1-adcell-tracking.js?1790851198" defer></script>
1071 1072
1072<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/cogi-friends/cogi-friends.js?1790851198" defer></script>
1072 1073
1073<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/acris-search-c-s/acris-search-c-s.js?1790851198" defer></script>
1073 1074
1074<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/verign-dv-accessibility-sw6/verign-dv-accessibility-sw6.js?1790851198" defer></script>
1074 1075
1075<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/mediameets-tiktok-pixel/mediameets-tiktok-pixel.js?1790851198" defer></script>
1075 1076
1076<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/mediameets-fb-pixel/mediameets-fb-pixel.js?1790851198" defer></script>
1076 1077
1077<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/ev-mitdenker-slider/ev-mitdenker-slider.js?1790851198" defer></script>
1077 1078
1078<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/qubix-checkout/qubix-checkout.js?1790851198" defer></script>
1078 1079
1079<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/swag-analytics/swag-analytics.js?1790851198" defer></script>
1079 1080
1080<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/atl-pop-up/atl-pop-up.js?1790851198" defer></script>
1080 1081
1081<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/zeobv-prepared-cart/zeobv-prepared-cart.js?1790851198" defer></script>
1081 1082
1082<script type="text/javascript" src="https://echt-vital.de/theme/22a6e1aac2fe165c1833ba04f861f4c2/js/ev-theme/ev-theme.js?1790851198" defer></script>
1082 1083 1084 1085 1086 1087 1088 </head>
vendor: 70 bytes, lines 1088-1091
1088 1089 1090 1091 <script async src="https://www.googletagmanager.com/gtag/js?id=
1091AW-863339097
vendor: 16 bytes, lines 1091-1092
1091"></script> 1092
1092<script> 1093
vendor: 151 bytes, lines 1093-1096
1093window.dataLayer = window.dataLayer || []; 1094 function gtag(){dataLayer.push(arguments);} 1095 gtag('js', new Date()); 1096 gtag('config', '
1096AW-863339097
vendor: 8 bytes, lines 1096-1097
1096'); 1097
1097</script>
1097 1098 1099 <body class=" is-ctl-auth is-act-loginpage is-active-route-frontend-account-login-page rhweb-custom-cookie rhweb-header-layout-center 1100 rhweb-custom-cookie rhweb-header-layout-center 1101"> 1102 1103 1104 1105 1106 1107 <div id="page-top" class="skip-to-content bg-primary-subtle text-primary-emphasis overflow-hidden" tabindex="-1"> 1108 <div class="container skip-to-content-container d-flex justify-content-center visually-hidden-focusable"> 1109 <a href="#content-main" class="skip-to-content-link d-inline-flex text-decoration-underline m-1 p-2 fw-bold gap-2"> 1110 Zum Hauptinhalt springen 1111 </a> 1112 1113 <a href="#header-main-search-input" class="skip-to-content-link d-inline-flex text-decoration-underline m-1 p-2 fw-bold gap-2 d-none d-sm-block"> 1114 Zur Suche springen 1115 </a> 1116 1117 <a href="#main-navigation-menu" class="skip-to-content-link d-inline-flex text-decoration-underline m-1 p-2 fw-bold gap-2 d-none d-lg-block"> 1118 Zur Hauptnavigation springen 1119 </a> 1120 </div> 1121 </div> 1122 1123 1124 1125 1126
1126<script nonce="kQgCx9aVlC8="> 1127 (function e(){window.document.$emitter&&typeof window.document.$emitter.subscribe==="function"?window.document.$emitter.subscribe("CookieConfiguration_Update",t=>{t&&t.detail&&Object.prototype.hasOwnProperty.call(t.detail,"dtgsAllowGtmTracking")&&window.location.reload()}):setTimeout(e,100)})(); 1128 </script>
1128 1129 1130
1130<script nonce="kQgCx9aVlC8="> 1131 window.dataLayer = window.dataLayer || []; 1132 var loadGTM = function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 1133 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 1134 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 1135 'https://www.googletagmanager.com/gtm.js?id='+i+dl;var n=d.querySelector('[nonce]'); 1136 n&&j.setAttribute('nonce',n.nonce||n.getAttribute('nonce'));f.parentNode.insertBefore(j,f); 1137 }; 1138 loadGTM(window,document,'script','dataLayer','GTM-NCMW9TRC'); 1139 </script>
1139 1140 1141 <noscript class="noscript-main"> 1142 1143 <div role="alert" 1144 aria-live="polite" 1145 class="alert alert-info d-flex align-items-center"> 1146 1147 1148 1149 <span class="icon icon-info" aria-hidden="true"> 1150 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><defs><path d="M12 7c.5523 0 1 .4477 1 1s-.4477 1-1 1-1-.4477-1-1 .4477-1 1-1zm1 9c0 .5523-.4477 1-1 1s-1-.4477-1-1v-5c0-.5523.4477-1 1-1s1 .4477 1 1v5zm11-4c0 6.6274-5.3726 12-12 12S0 18.6274 0 12 5.3726 0 12 0s12 5.3726 12 12zM12 2C6.4772 2 2 6.4772 2 12s4.4772 10 10 10 10-4.4772 10-10S17.5228 2 12 2z" id="icons-default-info" /></defs><use xlink:href="#icons-default-info" fill="#758CA3" fill-rule="evenodd" /></svg> 1151 </span> 1152 1153 1154 <div class="alert-content-container"> 1155 1156 Um unseren Shop in vollem Umfang nutzen zu können, empfehlen wir Ihnen Javascript in Ihrem Browser zu aktivieren. 1157 1158 </div> 1159 </div> 1160 </noscript> 1161 1162 1163 <!-- Google Tag Manager Noscript --> 1164 <noscript class="noscript-gtm"> 1165 <iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NCMW9TRC" 1166 height="0" 1167 width="0" 1168 style="display:none;visibility:hidden"> 1169 </iframe> 1170 </noscript> 1171 <!-- End Google Tag Manager Noscript --> 1172 1173 1174 1175 <header class="header-main rhweb-cms-header"> 1176 1177 <div class="cms-sections"> 1178 1179 1180 1181 1182 1183 1184 1185 <div class="cms-section pos-0 cms-section-default" 1186 style=" 1187 background-size: cover; 1188 "> 1189 1190 1191 1192 1193 1194 1195 1196 1197 <section class="cms-section-default full-width"> 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 <div 1210 class="cms-block pos-0 cms-block-html position-relative" 1211 > 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 <div class="cms-block-container " style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px"> 1226 <div class="cms-block-container-row row cms-row "> 1227 1228 <div class="col-12" data-cms-element-id="019fd96078b47010a2f0103b24515db7"> 1229 <div class="cms-element-html"> 1230 <!-- Echt Vital Header | Stand 2026-08-25 (OHNE SALE: Sale-Block entfernt, Menue-Korrekturen bleiben). Menue-Korrekturen 25.08.: Reiter Aktionen/Bestseller/Alle Produkte/Themen (gleiche Breite, kein H-Scroll), Bestseller-Reiter mit Rangfolge aus echten Bestellungen (reference/bestseller-top20-shop.json) + Skelett + Vorladen, toter Desktop-Container evBsGridDesktop entfernt, z-index-Fix Mobil-Menue ueber PDP-Sticky-Leiste, keine HEAD-Sonde auf /neukunden-aktion. Login-State v1/v1.1 unveraendert. Gebaut mit tools/sommer-sale-2026/build_header.py --mode aktion; Doku docs/runbooks/sommer-sale-2026.md | Basis: ev-header-vitaminb-2026-08-18 (PROD-verifiziert sha e14686d4641c2bdf) --> 1231<style> 1232html:has(#ev-immersive-header){overflow-x:clip!important} 1233.cms-element-html:has(#ev-immersive-header){padding:0!important;margin:0!important;max-width:none!important;width:100vw!important;margin-left:calc(50% - 50vw)!important} 1234.cms-element-html:has(#ev-immersive-header)>div{max-width:none!important;padding:0!important} 1235.cms-section:has(#ev-immersive-header){overflow:visible!important} 1236.cms-element-html:has(#ev-immersive-header), 1237.cms-element-html:has(#ev-immersive-header)>div, 1238.cms-block:has(#ev-immersive-header), 1239.cms-block-container:has(#ev-immersive-header), 1240.cms-block-container-row:has(#ev-immersive-header), 1241[class*="col"]:has(#ev-immersive-header), 1242.cms-section:has(#ev-immersive-header), 1243.cms-section:has(#ev-immersive-header)>div, 1244header.header-main:has(#ev-immersive-header){ 1245 transform:none!important;will-change:auto!important;contain:none!important;filter:none!important;perspective:none!important 1246} 1247body.ev-mobile-open *:not(#mobileMenu):not(#mobileMenu *){ 1248 transform:none!important;will-change:auto!important;contain:none!important;filter:none!important;perspective:none!important 1249} 1250body .navigation-offcanvas, 1251body .js-off-canvas:not(.cart-offcanvas), 1252body .offcanvas-menu{display:none!important;visibility:hidden!important;pointer-events:none!important} 1253body .header-main > .header-row:not(:has(#ev-immersive-header)){display:none!important} 1254body .header-main .header-search{display:none!important} 1255body .header-main .nav-main{display:none!important} 1256body .cms-breadcrumb{display:none!important} 1257body:has(.offcanvas.cart-offcanvas.show){padding-right:0!important} 1258@media(min-width:1024px){body .evm-nav{display:none!important;visibility:hidden!important}} 1259body.ev-mobile-open .evm-nav{display:none!important;visibility:hidden!important}
1260/* Trusted-Shops-Trustbadge waehrend offenem Mobilmenue KOMPLETT entfernen. 1261 display:none statt opacity/visibility: die inneren Badge-Elemente (gehashte Klassen) behalten sonst 1262 pointer-events:auto -> unsichtbar aber KLICKBAR. display:none nimmt den ganzen Subtree aus Rendering UND Hit-Testing. */ 1263body.ev-mobile-open [id*="trustbadge" i],body.ev-mobile-open [id*="minimized-trustbadge" i],body.ev-mobile-open [class*="trustbadge" i]{display:none!important} 1264 1265:root{ 1266 --p:#3B6B4A;--pd:#2A4D35;--pl:#E8F0EA; 1267 --a:#C4A265;--al:#F5EDE0; 1268 --bg:#FAFAF7;--t1:#1A1A1A;--t2:#6B6B6B;--t3:#999; 1269 --bd:#EBEBEB;--white:#fff; 1270 --or:#D4874A;--orl:#FDF3EB;--pp:#7B61A6;--ppl:#F3EFF8; 1271 --rd:#D4534A;--rl:#FDF0EF;--bl:#4A7FB5;--bll:#EDF3F9; 1272 --teal:#3A9EA5;--teall:#EBF6F7;--rose:#C46A8A;--rosel:#F9EDF1; 1273 --ui:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif; 1274 --serif:Georgia,'Times New Roman',serif; 1275 --header-h:80px; 1276 --spring:cubic-bezier(.175,.885,.32,1.275); 1277 --smooth:cubic-bezier(.23,1,.32,1); 1278 --bounce:cubic-bezier(.34,1.56,.64,1) 1279} 1280 1281#ev-immersive-header{ 1282 font-family:var(--ui)!important; 1283 color:var(--t1)!important; 1284 -webkit-font-smoothing:antialiased!important; 1285 line-height:1.5!important; 1286 box-sizing:border-box!important 1287} 1288#ev-immersive-header *, 1289#ev-immersive-header *::before, 1290#ev-immersive-header *::after{ 1291 box-sizing:border-box!important; 1292 margin:0;padding:0 1293} 1294#ev-immersive-header a{text-decoration:none} 1295#ev-immersive-header button{font-family:var(--ui)} 1296#ev-immersive-header img{max-width:100%;height:auto} 1297 1298#ev-immersive-header .ev-header{ 1299 position:sticky!important;top:0!important;z-index:9000!important; 1300 background:rgba(250,250,247,.92)!important; 1301 backdrop-filter:blur(20px)!important;-webkit-backdrop-filter:blur(20px)!important; 1302 transition:box-shadow .4s ease!important; 1303 border:none!important;margin:0!important;padding:0!important 1304} 1305#ev-immersive-header .ev-header.scrolled{box-shadow:0 1px 0 var(--bd)!important} 1306 1307#ev-immersive-header .ev-header-main{ 1308 display:flex!important;align-items:center!important;justify-content:space-between!important; 1309 max-width:1120px!important;margin:0 auto!important; 1310 padding:0 20px!important;height:var(--header-h)!important 1311} 1312 1313#ev-immersive-header .ev-header-logo{display:flex!important;align-items:center!important;text-decoration:none!important;flex-shrink:0!important} 1314#ev-immersive-header .ev-header-logo img{height:40px!important;width:auto!important;transition:opacity .2s!important;max-height:40px!important} 1315@media(max-width:374px){#ev-immersive-header .ev-header-logo img{height:28px!important;max-height:28px!important}} 1316@media(min-width:375px) and (max-width:479px){#ev-immersive-header .ev-header-logo img{height:32px!important;max-height:32px!important}} 1317#ev-immersive-header .ev-header-logo:hover img{opacity:.7!important} 1318 1319#ev-immersive-header .ev-nav{display:none!important;align-items:center!important;gap:40px!important;list-style:none!important;height:100%!important;margin:0!important;padding:0!important} 1320@media(min-width:1024px){#ev-immersive-header .ev-nav{display:flex!important}} 1321#ev-immersive-header .ev-nav>li{position:relative!important;height:100%!important;display:flex!important;align-items:center!important;list-style:none!important;margin:0!important;padding:0!important} 1322#ev-immersive-header .ev-nav>li>a, 1323#ev-immersive-header .ev-nav>li>button{ 1324 color:var(--t2)!important;text-decoration:none!important; 1325 font-size:17px!important;font-weight:400!important; 1326 letter-spacing:.15px!important; 1327 text-transform:none!important; 1328 transition:color .2s!important; 1329 padding:0!important;display:inline-flex!important;align-items:center!important;gap:4px!important; 1330 background:none!important;border:none!important;cursor:pointer!important;font-family:var(--ui)!important; 1331 height:100%!important;line-height:1!important; 1332 margin:0!important 1333} 1334#ev-immersive-header .ev-nav>li>a:hover, 1335#ev-immersive-header .ev-nav>li>button:hover, 1336#ev-immersive-header .ev-nav>li.is-active>button{color:var(--t1)!important} 1337#ev-immersive-header .ev-nav .nav-arrow{ 1338 width:10px!important;height:10px!important; 1339 display:inline-block!important;vertical-align:middle!important; 1340 transition:transform .3s var(--smooth)!important; 1341 background:none!important;border:none!important;border-radius:0!important; 1342 margin-top:0!important;flex-shrink:0!important 1343} 1344#ev-immersive-header .ev-nav .nav-arrow svg{width:10px!important;height:10px!important;stroke:currentColor!important;fill:none!important;stroke-width:2!important;stroke-linecap:round!important;stroke-linejoin:round!important} 1345#ev-immersive-header .ev-nav>li.is-active .nav-arrow{transform:rotate(180deg)!important} 1346 1347#ev-immersive-header .ev-acts{display:flex!important;align-items:center!important;gap:6px!important} 1348#ev-immersive-header .ev-act{ 1349 display:flex!important;align-items:center!important;justify-content:center!important; 1350 width:42px!important;height:42px!important;border-radius:50%!important; 1351 background:none!important;border:none!important;cursor:pointer!important; 1352 transition:background .15s!important;color:var(--t2)!important;position:relative!important; 1353 text-decoration:none!important;padding:0!important;margin:0!important 1354} 1355#ev-immersive-header .ev-act:hover{background:rgba(0,0,0,.04)!important;color:var(--t1)!important} 1356#ev-immersive-header .ev-act svg{width:22px!important;height:22px!important;stroke:currentColor!important;fill:none!important;stroke-width:1.3!important} 1357#ev-immersive-header .ev-act .badge{ 1358 position:absolute!important;top:4px!important;right:4px!important; 1359 width:15px!important;height:15px!important;border-radius:50%!important; 1360 background:var(--p)!important;color:#fff!important; 1361 font-size:9px!important;font-weight:700!important; 1362 display:flex!important;align-items:center!important;justify-content:center!important 1363} 1364#ev-immersive-header .ev-burger{display:flex!important} 1365@media(min-width:1024px){#ev-immersive-header .ev-burger{display:none!important}} 1366 1367#ev-immersive-header .ev-account-wrap{position:relative!important;display:flex!important;align-items:center!important} 1368@media(max-width:1023px){#ev-immersive-header .ev-account-wrap{display:none!important}} 1369#ev-immersive-header .ev-account-dropdown{ 1370 position:absolute!important;top:calc(100% + 8px)!important;right:0!important;
1371 min-width:200px!important;background:var(--white)!important; 1372 border-radius:12px!important;box-shadow:0 8px 32px rgba(0,0,0,.12),0 1px 3px rgba(0,0,0,.06)!important; 1373 padding:6px!important; 1374 opacity:0!important;visibility:hidden!important;transform:translateY(-4px)!important; 1375 transition:opacity .2s,visibility .2s,transform .2s var(--smooth)!important; 1376 z-index:1001!important 1377} 1378#ev-immersive-header .ev-account-dropdown.is-open{opacity:1!important;visibility:visible!important;transform:translateY(0)!important} 1379#ev-immersive-header .ev-account-item{ 1380 display:flex!important;align-items:center!important;gap:10px!important; 1381 padding:10px 14px!important;border-radius:8px!important; 1382 color:var(--t1)!important;font-size:13.5px!important;font-weight:450!important; 1383 text-decoration:none!important;transition:background .15s!important;white-space:nowrap!important 1384} 1385#ev-immersive-header .ev-account-item:hover{background:var(--bg)!important} 1386#ev-immersive-header .ev-account-item svg{width:17px!important;height:17px!important;stroke:var(--t3)!important;fill:none!important;stroke-width:1.6!important;stroke-linecap:round!important;stroke-linejoin:round!important;flex-shrink:0!important} 1387#ev-immersive-header .ev-account-sep{height:1px!important;background:var(--bd)!important;margin:4px 8px!important} 1388#ev-immersive-header .ev-account-greet{padding:10px 14px 6px!important;font-size:12.5px!important;font-weight:600!important;color:var(--t3)!important;letter-spacing:.2px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;max-width:240px!important} 1389#ev-immersive-header .ev-account-logout-item{display:none!important;color:var(--rd)!important} 1390#ev-immersive-header .ev-account-logout-item svg{stroke:var(--rd)!important} 1391#ev-immersive-header.show-logout .ev-account-login-item{display:none!important} 1392#ev-immersive-header.show-logout .ev-account-logout-item{display:flex!important} 1393#ev-immersive-header .ev-header-line{height:1px!important;background:linear-gradient(90deg,transparent,var(--bd),transparent)!important;border:none!important;margin:0!important;padding:0!important} 1394 1395#ev-immersive-header .ev-mega-backdrop{ 1396 position:fixed!important;top:0;left:0;right:0;bottom:0; 1397 background:rgba(0,0,0,.12)!important; 1398 backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px); 1399 z-index:999; 1400 opacity:0;visibility:hidden; 1401 transition:opacity .3s ease,visibility .3s 1402} 1403#ev-immersive-header .ev-mega-backdrop.is-open{opacity:1;visibility:visible} 1404 1405#ev-immersive-header .ev-mega{ 1406 position:absolute!important;top:100%;left:0;right:0; 1407 background:var(--white)!important; 1408 border-bottom:1px solid var(--bd)!important; 1409 z-index:1001; 1410 opacity:0;visibility:hidden; 1411 transform:translateY(-4px); 1412 transition:opacity .25s var(--smooth),transform .25s var(--smooth),visibility .25s; 1413 overflow:hidden 1414} 1415#ev-immersive-header .ev-mega.is-open{ 1416 opacity:1;visibility:visible;transform:translateY(0) 1417} 1418#ev-immersive-header .ev-mega-inner{ 1419 max-width:1120px!important;margin:0 auto!important;padding:36px 48px 40px!important 1420} 1421 1422#ev-immersive-header .ev-mega-cats{ 1423 display:flex!important;gap:6px!important;margin-bottom:24px!important; 1424 border-bottom:1px solid var(--bd)!important;padding-bottom:16px!important 1425} 1426#ev-immersive-header .ev-mega-cat{ 1427 padding:8px 18px!important;border-radius:100px!important; 1428 font-size:12px!important;font-weight:500!important;letter-spacing:.5px!important;text-transform:uppercase!important; 1429 border:1px solid var(--bd)!important;background:none!important; 1430 color:var(--t2)!important;cursor:pointer; 1431 transition:all .2s;font-family:var(--ui)!important 1432} 1433#ev-immersive-header .ev-mega-cat:hover{border-color:var(--t3)!important;color:var(--t1)!important} 1434#ev-immersive-header .ev-mega-cat.is-active{background:var(--t1)!important;color:var(--white)!important;border-color:var(--t1)!important} 1435 1436#ev-immersive-header .ev-mega-products{display:grid!important;grid-template-columns:repeat(5,1fr)!important;gap:20px!important} 1437#ev-immersive-header .ev-mega-product{ 1438 text-decoration:none!important;color:var(--t1)!important; 1439 border-radius:12px!important;overflow:hidden; 1440 transition:transform .25s var(--smooth),box-shadow .25s; 1441 position:relative!important 1442} 1443#ev-immersive-header .ev-mega-product:hover{transform:translateY(-3px);box-shadow:0 8px 24px rgba(0,0,0,.06)} 1444#ev-immersive-header .ev-mega-product-img{ 1445 aspect-ratio:1;background:linear-gradient(135deg,var(--bg) 0%,#f0ede8 100%)!important; 1446 display:flex!important;align-items:center!important;justify-content:center!important; 1447 overflow:hidden;border-radius:12px!important 1448} 1449#ev-immersive-header .ev-mega-product-img img{width:70%!important;height:70%!important;object-fit:contain;transition:transform .4s var(--smooth)} 1450#ev-immersive-header .ev-mega-product:hover .ev-mega-product-img img{transform:scale(1.05)} 1451#ev-immersive-header .ev-mega-product-info{padding:10px 4px 4px!important} 1452#ev-immersive-header .ev-mega-product-name{font-size:13px!important;font-weight:500!important;line-height:1.3} 1453#ev-immersive-header .ev-mega-product-price{font-size:12px!important;color:var(--t3)!important;margin-top:2px!important} 1454#ev-immersive-header .ev-mega-foot{ 1455 display:flex!important;align-items:center!important;justify-content:space-between; 1456 margin-top:24px!important;padding-top:16px!important;border-top:1px solid var(--bd)!important 1457} 1458#ev-immersive-header .ev-mega-foot a{ 1459 font-size:13px!important;color:var(--p)!important;text-decoration:none!important;font-weight:500!important; 1460 display:inline-flex!important;align-items:center!important;gap:6px!important;transition:opacity .2s 1461} 1462#ev-immersive-header .ev-mega-foot a:hover{opacity:.7} 1463#ev-immersive-header .ev-mega-foot a svg{width:14px!important;height:14px!important;stroke:currentColor;fill:none;stroke-width:2} 1464 1465#ev-immersive-header .ev-mega-themes{ 1466 display:grid!important;grid-template-columns:repeat(4,1fr)!important;gap:6px!important 1467} 1468#ev-immersive-header .ev-mega-theme{ 1469 --tc:var(--bg); 1470 display:flex!important;align-items:center!important;gap:12px!important; 1471 padding:14px 16px!important;border-radius:14px!important; 1472 text-decoration:none!important;color:var(--t1)!important; 1473 transition:all .2s var(--smooth); 1474 border:1px solid var(--bd)!important; 1475 background:var(--white)!important 1476} 1477#ev-immersive-header .ev-mega-theme:hover{ 1478 background:var(--tc)!important; 1479 border-color:transparent!important; 1480 transform:translateY(-2px); 1481 box-shadow:0 6px 20px rgba(0,0,0,.06) 1482} 1483#ev-immersive-header .ev-mega-theme-icon{ 1484 width:36px!important;height:36px!important;border-radius:10px!important; 1485 display:flex!important;align-items:center!important;justify-content:center!important; 1486 flex-shrink:0; 1487 transition:transform .3s var(--bounce) 1488} 1489#ev-immersive-header .ev-mega-theme-icon svg{width:17px!important;height:17px!important;stroke-width:2;fill:none} 1490#ev-immersive-header .ev-mega-theme:hover .ev-mega-theme-icon{transform:scale(1.1)} 1491#ev-immersive-header .ev-mega-theme-text{flex:1!important;min-width:0} 1492#ev-immersive-header .ev-mega-theme-text strong{display:block!important;font-size:14px!important;font-weight:600!important;line-height:1.3} 1493#ev-immersive-header .ev-mega-theme-text span{font-size:11.5px!important;color:var(--t3)!important} 1494 1495#ev-immersive-header .ev-mega-bib{display:grid!important;grid-template-columns:repeat(3,1fr)!important;gap:12px!important} 1496#ev-immersive-header .ev-mega-bib-card{ 1497 padding:28px 24px!important;border-radius:16px!important; 1498 text-decoration:none!important;color:var(--t1)!important; 1499 transition:all .25s var(--smooth); 1500 border:1px solid var(--bd)!important; 1501 position:relative!important;overflow:hidden 1502} 1503#ev-immersive-header .ev-mega-bib-card:hover{ 1504 border-color:transparent!important; 1505 transform:translateY(-2px); 1506 box-shadow:0 8px 24px rgba(0,0,0,.06) 1507} 1508#ev-immersive-header .ev-mega-bib-card-icon{ 1509 width:44px!important;height:44px!important;border-radius:12px!important; 1510 display:flex!important;align-items:center!important;justify-content:center!important; 1511 font-size:20px!important;margin-bottom:14px!important 1512} 1513#ev-immersive-header .ev-mega-bib-card h4{font-size:16px!important;font-weight:600!important;margin-bottom:4px!important} 1514#ev-immersive-header .ev-mega-bib-card p{font-size:13px!important;color:var(--t3)!important;line-height:1.4} 1515 1516#ev-immersive-header .ev-search{ 1517 position:fixed!important;inset:0;z-index:9500; 1518 background:rgba(0,0,0,.4)!important; 1519 backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px); 1520 opacity:0;visibility:hidden; 1521 transition:opacity .2s,visibility .2s; 1522 cursor:pointer 1523} 1524#ev-immersive-header .ev-search.is-open{opacity:1;visibility:visible} 1525#ev-immersive-header .ev-search-panel{ 1526 position:absolute!important;top:0;left:0;right:0; 1527 background:var(--white)!important; 1528 transform:translateY(-100%); 1529 transition:transform .35s var(--smooth); 1530 max-height:88vh;overflow-y:auto;overflow-x:hidden; 1531 cursor:default; 1532 box-shadow:0 20px 60px rgba(0,0,0,.12) 1533} 1534#ev-immersive-header .ev-search.is-open .ev-search-panel{transform:translateY(0)} 1535 1536#ev-immersive-header .ev-search-close{ 1537 position:absolute!important;top:16px!important;right:20px!important; 1538 width:44px!important;height:44px!important;border-radius:50%!important; 1539 background:var(--bg)!important;border:none!important;cursor:pointer!important; 1540 display:flex!important;align-items:center!important;justify-content:center!important; 1541 transition:background .15s,transform .15s;z-index:1; 1542 box-shadow:0 2px 8px rgba(0,0,0,.1) 1543} 1544@media(max-width:680px){ 1545 #ev-immersive-header .ev-search-close{ 1546 position:fixed!important;top:auto!important;bottom:24px!important;right:24px!important; 1547 width:52px!important;height:52px!important; 1548 background:#fff!important;box-shadow:0 4px 16px rgba(0,0,0,.15)!important; 1549 z-index:10000!important 1550 } 1551} 1552#ev-immersive-header .ev-search-close:hover{background:var(--bd)!important;transform:scale(1.05)} 1553#ev-immersive-header .ev-search-close svg{width:20px!important;height:20px!important;stroke:var(--t2);fill:none;stroke-width:2.5} 1554 1555#ev-immersive-header .ev-search-wrap{max-width:760px!important;margin:0 auto!important;padding:32px 24px 40px!important} 1556#ev-immersive-header .ev-search-field{ 1557 display:flex!important;align-items:center!important;gap:14px!important; 1558 padding:16px 22px!important; 1559 background:var(--bg)!important;border:2px solid transparent!important;border-radius:18px!important; 1560 transition:border-color .2s,box-shadow .2s 1561} 1562#ev-immersive-header .ev-search-field:focus-within{border-color:var(--p)!important;box-shadow:0 0 0 4px rgba(59,107,74,.08)} 1563#ev-immersive-header .ev-search-field .ev-search-icon{width:22px!important;height:22px!important;stroke:var(--t3);fill:none;stroke-width:2;flex-shrink:0} 1564#ev-immersive-header .ev-search-field input{ 1565 flex:1!important;border:none!important;background:none!important;outline:none; 1566 font-size:18px!important;font-family:var(--ui)!important;color:var(--t1)!important 1567} 1568#ev-immersive-header .ev-search-field input::placeholder{color:var(--t3)!important} 1569 1570#ev-immersive-header .ev-search-clear{ 1571 width:28px!important;height:28px!important;border-radius:50%!important; 1572 background:var(--bd)!important;border:none!important;cursor:pointer!important; 1573 display:none!important;align-items:center!important;justify-content:center!important; 1574 transition:background .15s;flex-shrink:0 1575} 1576#ev-immersive-header .ev-search-clear.is-visible{display:flex!important} 1577#ev-immersive-header .ev-search-clear:hover{background:var(--t3)!important} 1578#ev-immersive-header .ev-search-clear svg{width:12px!important;height:12px!important;stroke:var(--white);fill:none;stroke-width:3} 1579 1580#ev-immersive-header .ev-search-loader{ 1581 width:22px!important;height:22px!important;flex-shrink:0; 1582 border:2.5px solid var(--bd)!important;border-top-color:var(--p)!important;border-radius:50%!important; 1583 animation:spin .6s linear infinite;display:none!important 1584} 1585#ev-immersive-header .ev-search-loader.is-visible{display:block!important} 1586 1587#ev-immersive-header .ev-search-field kbd{ 1588 font-size:11px!important;color:var(--t3)!important;background:var(--white)!important; 1589 border:1px solid var(--bd)!important;border-radius:6px!important; 1590 padding:3px 8px!important;font-family:var(--ui)!important;flex-shrink:0 1591} 1592@media(max-width:680px){
1593 #ev-immersive-header .ev-search-field kbd{display:none!important} 1594 #ev-immersive-header .ev-search-wrap{padding:20px 16px 28px!important} 1595 #ev-immersive-header .ev-search-field{padding:12px 14px!important;gap:10px!important} 1596 #ev-immersive-header .ev-search-field input{font-size:16px!important;min-width:0!important} 1597 #ev-immersive-header .ev-search-field .ev-search-icon{width:18px!important;height:18px!important} 1598 #ev-immersive-header .ev-search-inspo-grid{grid-template-columns:repeat(2,1fr)!important} 1599 #ev-immersive-header .ev-search-inspo-card{padding:10px 12px!important;gap:10px!important} 1600 #ev-immersive-header .ev-search-inspo-card img{width:40px!important;height:40px!important} 1601 #ev-immersive-header .ev-search-inspo-card-name{font-size:13px!important} 1602} 1603 1604 1605#ev-immersive-header .ev-search-tags{margin-top:20px!important;display:flex!important;flex-wrap:wrap;gap:8px!important} 1606#ev-immersive-header .ev-search-tags.is-hidden{display:none!important} 1607#ev-immersive-header .ev-search-tag{ 1608 padding:8px 18px!important;border-radius:100px!important; 1609 background:var(--bg)!important;color:var(--t2)!important;border:1px solid var(--bd)!important; 1610 font-size:14px!important;font-weight:450!important;cursor:pointer; 1611 font-family:var(--ui)!important;transition:all .15s 1612} 1613#ev-immersive-header .ev-search-tag:hover{border-color:var(--p)!important;color:var(--p)!important;background:var(--pl)!important} 1614 1615#ev-immersive-header .ev-search-inspo{margin-top:32px!important} 1616#ev-immersive-header .ev-search-inspo.is-hidden{display:none!important} 1617#ev-immersive-header .ev-search-inspo-title{ 1618 font-size:11px!important;font-weight:600!important;letter-spacing:1px!important; 1619 text-transform:uppercase!important;color:var(--t3)!important;margin-bottom:16px!important 1620} 1621#ev-immersive-header .ev-search-inspo-grid{ 1622 display:grid!important;grid-template-columns:repeat(3,1fr)!important;gap:16px!important 1623} 1624@media(max-width:680px){#ev-immersive-header .ev-search-inspo-grid{grid-template-columns:repeat(2,1fr)!important}} 1625#ev-immersive-header .ev-search-inspo-card{ 1626 display:flex!important;align-items:center!important;gap:14px!important; 1627 padding:14px 16px!important;border-radius:14px!important; 1628 background:var(--bg)!important;border:1px solid transparent!important; 1629 text-decoration:none!important;color:var(--t1)!important; 1630 transition:all .2s!important;cursor:pointer!important; 1631 overflow:hidden!important;min-width:0!important 1632} 1633#ev-immersive-header .ev-search-inspo-card:hover{ 1634 border-color:var(--bd)!important;box-shadow:0 2px 8px rgba(0,0,0,.06)!important; 1635 transform:translateY(-1px)!important 1636} 1637#ev-immersive-header .ev-search-inspo-card img{ 1638 width:52px!important;height:52px!important;object-fit:contain!important;flex-shrink:0!important; 1639 border-radius:10px!important 1640} 1641#ev-immersive-header .ev-search-inspo-card-text{display:flex!important;flex-direction:column!important;gap:2px!important;min-width:0!important} 1642#ev-immersive-header .ev-search-inspo-card-name{font-size:14px!important;font-weight:550!important;line-height:1.3!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important} 1643#ev-immersive-header .ev-search-inspo-card-sub{font-size:12px!important;color:var(--t3)!important;font-weight:400!important} 1644 1645#ev-immersive-header .ev-search-live{margin-top:24px!important} 1646#ev-immersive-header .ev-search-live:empty{display:none!important} 1647#ev-immersive-header .ev-search-live.is-hidden{display:none!important} 1648 1649#ev-immersive-header .ev-search-section{margin-bottom:20px!important} 1650#ev-immersive-header .ev-search-section:last-child{margin-bottom:0!important} 1651#ev-immersive-header .ev-search-section-label{ 1652 font-size:11px!important;font-weight:600!important;letter-spacing:1px!important; 1653 text-transform:uppercase!important;color:var(--t3)!important; 1654 margin-bottom:10px!important;padding-left:2px!important 1655} 1656 1657#ev-immersive-header .ev-search-themes{display:flex!important;flex-wrap:wrap;gap:8px!important} 1658#ev-immersive-header .ev-search-theme-card{ 1659 display:flex!important;align-items:center!important;gap:10px!important; 1660 padding:10px 18px 10px 12px!important;border-radius:14px!important; 1661 text-decoration:none!important;color:var(--t1)!important; 1662 transition:all .2s;cursor:pointer;border:1px solid var(--bd)!important; 1663 background:var(--white)!important 1664} 1665#ev-immersive-header .ev-search-theme-card:hover{border-color:var(--p)!important;background:var(--pl)!important} 1666#ev-immersive-header .ev-search-theme-icon{ 1667 width:32px!important;height:32px!important;border-radius:9px!important; 1668 display:flex!important;align-items:center!important;justify-content:center!important;flex-shrink:0 1669} 1670#ev-immersive-header .ev-search-theme-icon svg{width:16px!important;height:16px!important} 1671#ev-immersive-header .ev-search-theme-name{font-size:14px!important;font-weight:550!important} 1672#ev-immersive-header .ev-search-theme-sub{font-size:12px!important;color:var(--t3)!important;margin-left:4px!important} 1673 1674#ev-immersive-header .ev-search-products{ 1675 display:grid!important;grid-template-columns:repeat(4,1fr)!important;gap:14px!important 1676}
1677@media(max-width:900px){#ev-immersive-header .ev-search-products{grid-template-columns:repeat(3,1fr)!important}} 1678@media(max-width:600px){#ev-immersive-header .ev-search-products{grid-template-columns:repeat(2,1fr)!important}} 1679#ev-immersive-header .ev-search-prod{ 1680 text-decoration:none!important;color:var(--t1)!important; 1681 border-radius:14px!important;overflow:hidden; 1682 transition:transform .2s var(--smooth),box-shadow .2s; 1683 cursor:pointer 1684} 1685#ev-immersive-header .ev-search-prod:hover{transform:translateY(-3px);box-shadow:0 8px 24px rgba(0,0,0,.07)} 1686#ev-immersive-header .ev-search-prod-img{ 1687 aspect-ratio:1; 1688 background:linear-gradient(145deg,var(--bg) 0%,#f0ede8 100%)!important; 1689 display:flex!important;align-items:center!important;justify-content:center!important; 1690 border-radius:14px!important;overflow:hidden 1691} 1692#ev-immersive-header .ev-search-prod-img img{ 1693 width:72%!important;height:72%!important;object-fit:contain!important; 1694 transition:transform .35s var(--smooth) 1695} 1696#ev-immersive-header .ev-search-prod:hover .ev-search-prod-img img{transform:scale(1.06)} 1697#ev-immersive-header .ev-search-prod-info{padding:10px 4px 4px!important} 1698#ev-immersive-header .ev-search-prod-name{ 1699 font-size:13px!important;font-weight:520!important;line-height:1.3!important; 1700 display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden 1701} 1702#ev-immersive-header .ev-search-prod-price{ 1703 font-size:13px!important;color:var(--p)!important;font-weight:600!important;margin-top:4px!important 1704} 1705#ev-immersive-header .ev-search-prod-price.is-red{color:#C9392E!important} 1706#ev-immersive-header .ev-search-prod-old{ 1707 font-size:11.5px!important;color:var(--t3)!important;font-weight:400!important; 1708 text-decoration:line-through!important;margin-left:6px!important 1709} 1710#ev-immersive-header .ev-search-prod-from{ 1711 font-size:11px!important;color:var(--t3)!important;font-weight:400!important 1712} 1713#ev-immersive-header .ev-search-all{ 1714 grid-column:1/-1!important;text-align:center!important; 1715 padding:14px 0 4px!important;border-top:1px solid var(--bd)!important;margin-top:4px!important 1716} 1717#ev-immersive-header .ev-search-all a{ 1718 color:var(--p)!important;text-decoration:none!important; 1719 font-size:14px!important;font-weight:500!important; 1720 display:inline-flex!important;align-items:center!important;gap:6px!important; 1721 transition:opacity .15s 1722} 1723#ev-immersive-header .ev-search-all a:hover{opacity:.7!important} 1724#ev-immersive-header .ev-search-all a svg{width:14px!important;height:14px!important;stroke:currentColor;fill:none;stroke-width:2} 1725 1726#ev-immersive-header .ev-search-empty{ 1727 text-align:center!important;padding:32px 0!important;color:var(--t3)!important;font-size:15px!important 1728} 1729 1730#ev-immersive-header .ev-mobile{ 1731 position:fixed!important;inset:0;z-index:9990; 1732 background:var(--white)!important; 1733 transform:translateX(100%); 1734 transition:transform .4s var(--smooth); 1735 display:flex!important;flex-direction:column; 1736 overflow:hidden; 1737 -webkit-overflow-scrolling:touch 1738} 1739#ev-immersive-header .ev-mobile.is-open{transform:translateX(0)} 1740 1741#ev-immersive-header .ev-mobile-top{ 1742 display:flex!important;align-items:center!important;justify-content:space-between; 1743 padding:12px 16px!important;flex-shrink:0; 1744 border-bottom:1px solid var(--bd)!important 1745} 1746#ev-immersive-header .ev-mobile-top img{height:22px!important} 1747#ev-immersive-header .ev-mobile-close{ 1748 width:34px!important;height:34px!important;border-radius:50%!important; 1749 background:var(--bg)!important;border:none!important;cursor:pointer; 1750 display:flex!important;align-items:center!important;justify-content:center!important 1751} 1752#ev-immersive-header .ev-mobile-close svg{width:16px!important;height:16px!important;stroke:var(--t1);fill:none;stroke-width:2} 1753 1754#ev-immersive-header .ev-mobile-search-drawer{ 1755 display:none!important;padding:12px 16px!important; 1756 border-bottom:1px solid var(--bd)!important;flex-shrink:0 1757} 1758#ev-immersive-header .ev-mobile-search-drawer.is-open{display:block!important;animation:fadeUp .25s var(--smooth)} 1759#ev-immersive-header .ev-mobile-search-wrap{ 1760 display:flex!important;align-items:center!important;gap:10px!important; 1761 background:var(--bg)!important;border-radius:14px!important;padding:10px 14px!important; 1762 border:2px solid transparent!important;transition:border-color .2s 1763} 1764#ev-immersive-header .ev-mobile-search-wrap:focus-within{border-color:var(--p)!important} 1765#ev-immersive-header .ev-mobile-search-input{ 1766 flex:1!important;border:none!important;background:none!important;outline:none; 1767 font-size:16px!important;font-family:var(--ui)!important;color:var(--t1)!important 1768} 1769#ev-immersive-header .ev-mobile-search-input::placeholder{color:var(--t3)!important} 1770#ev-immersive-header .ev-mobile-search-icon{position:relative!important;flex-shrink:0} 1771#ev-immersive-header .ev-mobile-search-icon.is-loading svg{opacity:0}
1771 1772#ev-immersive-header .ev-mobile-loader{ 1773 display:none!important;width:18px!important;height:18px!important; 1774 border:2px solid var(--bd)!important;border-top-color:var(--p)!important;border-radius:50%!important; 1775 position:absolute!important;top:0;left:0;animation:spin .6s linear infinite 1776} 1777#ev-immersive-header .ev-mobile-search-icon.is-loading .ev-mobile-loader{display:block!important} 1778@keyframes spin{to{transform:rotate(360deg)}} 1779#ev-immersive-header .ev-mobile-suggestions{ 1780 max-height:50vh;overflow-y:auto; 1781 -webkit-overflow-scrolling:touch 1782} 1783#ev-immersive-header .ev-mobile-search-inspo{padding:8px 16px!important} 1784#ev-immersive-header .ev-mobile-search-inspo.is-hidden{display:none!important} 1785#ev-immersive-header .ev-mobile-inspo-chip{ 1786 display:inline-block!important;padding:8px 16px!important;border-radius:100px!important; 1787 background:var(--bg)!important;color:var(--t2)!important;border:1px solid var(--bd)!important; 1788 font-size:13px!important;font-weight:450!important;text-decoration:none!important; 1789 transition:all .15s!important 1790} 1791#ev-immersive-header .ev-mobile-inspo-chip:hover{border-color:var(--p)!important;color:var(--p)!important} 1792#ev-immersive-header .ev-mobile-suggestions:empty{display:none!important} 1793#ev-immersive-header .ev-mobile-suggestions .search-suggest-product{ 1794 padding:10px 0!important;border-bottom:1px solid rgba(0,0,0,.04)!important; 1795 display:flex!important;align-items:center!important;gap:12px!important 1796} 1797#ev-immersive-header .ev-mobile-suggestions .search-suggest-product-image-container{ 1798 width:48px!important;height:48px!important;flex-shrink:0!important; 1799 background:var(--bg)!important;border-radius:8px!important; 1800 display:flex!important;align-items:center!important;justify-content:center!important 1801} 1802#ev-immersive-header .ev-mobile-suggestions .search-suggest-product-image-container img{ 1803 width:36px!important;height:36px!important;object-fit:contain!important 1804} 1805#ev-immersive-header .ev-mobile-suggestions .row{ 1806 display:flex!important;align-items:center!important;gap:12px!important;margin:0!important 1807} 1808#ev-immersive-header .ev-mobile-suggestions .acris-search-suggest-total a{ 1809 display:block!important;padding:12px 0!important;text-align:center; 1810 color:var(--p)!important;font-size:13px!important;font-weight:500!important;text-decoration:none!important 1811} 1812#ev-immersive-header .ev-mobile-suggestions .search-suggest.js-search-result::after, 1813#ev-immersive-header .ev-mobile-suggestions .search-suggest.js-search-result::before, 1814#ev-immersive-header .ev-mobile-suggestions .loader, 1815#ev-immersive-header .ev-mobile-suggestions div.loader:not(.ev-mobile-loader){ 1816 display:none!important;opacity:0!important;visibility:hidden!important; 1817 width:0!important;height:0!important;position:absolute!important 1818} 1819 1820#ev-immersive-header .ev-mobile-body{flex:1!important;overflow-y:auto;padding:0!important;-webkit-overflow-scrolling:touch;touch-action:pan-y!important} 1821 1822#ev-immersive-header .ev-mobile-tabs{ 1823 display:flex!important;gap:6px!important;padding:16px 16px 12px!important; 1824 overflow-x:auto;flex-shrink:0; 1825 -webkit-overflow-scrolling:touch; 1826 scrollbar-width:none; 1827 touch-action:pan-x!important;overscroll-behavior-x:contain 1828} 1829#ev-immersive-header .ev-mobile-tabs::-webkit-scrollbar{display:none!important} 1830#ev-immersive-header .ev-mobile-tab{ 1831 padding:10px 20px!important;border-radius:100px!important; 1832 font-size:14px!important;font-weight:500!important;white-space:nowrap; 1833 border:1.5px solid var(--bd)!important;background:none!important; 1834 color:var(--t2)!important;cursor:pointer; 1835 font-family:var(--ui)!important; 1836 transition:all .2s;flex-shrink:0 1837} 1838#ev-immersive-header .ev-mobile-tab.is-active{ 1839 background:var(--t1)!important;color:var(--white)!important;border-color:var(--t1)!important 1840} 1841 1842#ev-immersive-header .ev-mobile-panel{ 1843 display:none!important;padding:8px 16px 100px!important; 1844 animation:fadeUp .25s var(--smooth) 1845} 1846#ev-immersive-header .ev-mobile-panel.is-active{display:block!important} 1847@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}} 1848 1849#ev-immersive-header .ev-mobile-grid{display:grid!important;grid-template-columns:repeat(2,1fr)!important;gap:10px!important} 1850#ev-immersive-header .ev-mobile-card{ 1851 text-decoration:none!important;color:var(--t1)!important; 1852 border-radius:14px!important;overflow:hidden; 1853 background:var(--white)!important; 1854 border:1px solid var(--bd)!important; 1855 transition:border-color .2s 1856} 1857#ev-immersive-header .ev-mobile-card:active{border-color:var(--p)!important;transform:scale(.98)} 1858#ev-immersive-header .ev-mobile-card-img{ 1859 aspect-ratio:1;background:linear-gradient(135deg,var(--bg) 0%,#f0ede8 100%)!important; 1860 display:flex!important;align-items:center!important;justify-content:center!important;overflow:hidden 1861}
1862#ev-immersive-header .ev-mobile-card-img img{width:65%!important;height:65%!important;object-fit:contain} 1863#ev-immersive-header .ev-mobile-card-info{padding:10px 12px 12px!important} 1864#ev-immersive-header .ev-mobile-card-name{font-size:13px!important;font-weight:500!important;line-height:1.3} 1865#ev-immersive-header .ev-mobile-card-price{font-size:12px!important;color:var(--t3)!important;margin-top:3px!important} 1866 1867#ev-immersive-header .ev-mobile-themes{display:flex!important;flex-direction:column;gap:6px!important} 1868#ev-immersive-header .ev-mobile-theme{ 1869 display:flex!important;align-items:center!important;gap:12px!important; 1870 padding:12px 14px!important;border-radius:14px!important; 1871 text-decoration:none!important;color:var(--t1)!important; 1872 transition:background .15s; 1873 -webkit-tap-highlight-color:transparent 1874} 1875#ev-immersive-header .ev-mobile-theme:active{transform:scale(.98)} 1876#ev-immersive-header .ev-mobile-theme-icon-m{ 1877 width:32px!important;height:32px!important;border-radius:9px!important;flex-shrink:0; 1878 display:flex!important;align-items:center!important;justify-content:center!important 1879} 1880#ev-immersive-header .ev-mobile-theme-icon-m svg{width:15px!important;height:15px!important;stroke-width:2;fill:none} 1881#ev-immersive-header .ev-mobile-theme-info{flex:1!important;min-width:0} 1882#ev-immersive-header .ev-mobile-theme-name{font-size:14px!important;font-weight:500!important;line-height:1.2} 1883#ev-immersive-header .ev-mobile-theme-sub{font-size:11px!important;color:var(--t3)!important} 1884#ev-immersive-header .ev-mobile-theme-prod{ 1885 width:44px!important;height:44px!important;flex-shrink:0; 1886 border-radius:10px!important;background:var(--bg)!important; 1887 padding:4px!important;display:flex!important;align-items:center!important;justify-content:center!important 1888} 1889#ev-immersive-header .ev-mobile-theme-prod img{ 1890 width:36px!important;height:36px!important;object-fit:contain!important 1891} 1892#ev-immersive-header .ev-mobile-theme-arrow{ 1893 width:16px!important;height:16px!important;stroke:var(--t3);fill:none;stroke-width:2; 1894 opacity:0;transform:translateX(-4px);flex-shrink:0; 1895 transition:opacity .15s,transform .15s 1896} 1897#ev-immersive-header .ev-mobile-theme:hover .ev-mobile-theme-arrow,#ev-immersive-header .ev-mobile-theme:active .ev-mobile-theme-arrow{ 1898 opacity:1;transform:translateX(0) 1899} 1900 1901#ev-immersive-header .ev-mobile-bib{display:flex!important;flex-direction:column;gap:8px!important} 1902#ev-immersive-header .ev-mobile-bib-card{ 1903 display:flex!important;align-items:center!important;gap:16px!important; 1904 padding:18px 16px!important;border-radius:16px!important; 1905 background:var(--bg)!important; 1906 text-decoration:none!important;color:var(--t1)!important; 1907 transition:background .15s; 1908 -webkit-tap-highlight-color:transparent 1909} 1910#ev-immersive-header .ev-mobile-bib-card:active{background:var(--pl)!important} 1911#ev-immersive-header .ev-mobile-bib-icon{ 1912 width:44px!important;height:44px!important;border-radius:12px!important; 1913 display:flex!important;align-items:center!important;justify-content:center!important; 1914 font-size:20px!important;flex-shrink:0 1915} 1916#ev-immersive-header .ev-mobile-bib-text h4{font-size:15px!important;font-weight:600!important;margin-bottom:2px!important} 1917#ev-immersive-header .ev-mobile-bib-text p{font-size:12px!important;color:var(--t3)!important} 1918 1919#ev-immersive-header .ev-mobile-links{display:flex!important;flex-direction:column;gap:2px!important;margin-top:8px!important} 1920#ev-immersive-header .ev-mobile-link{ 1921 display:flex!important;align-items:center!important;justify-content:space-between; 1922 padding:16px!important;border-radius:14px!important; 1923 text-decoration:none!important;color:var(--t1)!important; 1924 font-size:15px!important;font-weight:500!important; 1925 transition:background .15s; 1926 -webkit-tap-highlight-color:transparent 1927} 1928#ev-immersive-header .ev-mobile-link:active{background:var(--bg)!important} 1929#ev-immersive-header .ev-mobile-link svg{width:16px!important;height:16px!important;stroke:var(--t3);fill:none;stroke-width:2} 1930 1931#ev-immersive-header .ev-mobile-bar{ 1932 flex-shrink:0; 1933 padding:12px 16px calc(12px + env(safe-area-inset-bottom))!important; 1934 border-top:1px solid var(--bd)!important; 1935 display:flex!important;gap:8px!important; 1936 background:var(--white)!important; 1937 position:relative!important;z-index:3!important; 1938 box-shadow:0 -7px 18px rgba(20,25,15,.09)!important 1939} 1940#ev-immersive-header .ev-mobile-bar a{ 1941 flex:1!important;display:flex!important;flex-direction:column;align-items:center!important;gap:4px!important; 1942 padding:10px 0!important;border-radius:12px!important; 1943 text-decoration:none!important;color:var(--t2)!important; 1944 font-size:10px!important;font-weight:500!important;letter-spacing:.3px!important; 1945 transition:all .15s; 1946 -webkit-tap-highlight-color:transparent 1947} 1948#ev-immersive-header .ev-mobile-bar a:active{background:var(--bg)!important;color:var(--p)!important} 1949#ev-immersive-header .ev-mobile-bar a svg{width:20px!important;height:20px!important;stroke:currentColor;fill:none;stroke-width:1.4} 1950/* Scroll-Hinweis (deutet an, dass unter den bildschirmhohen Aktion-Cards mehr kommt) */ 1951#ev-immersive-header .ev-mobile-scrollhint{position:absolute!important;left:50%!important;bottom:calc(88px + env(safe-area-inset-bottom))!important;z-index:2!important;width:40px!important;height:40px!important;padding:0!important;border-radius:50%!important;background:var(--white)!important;border:1px solid var(--bd)!important;box-shadow:0 6px 18px rgba(20,25,15,.18)!important;display:flex!important;align-items:center!important;justify-content:center!important;cursor:pointer!important;opacity:0!important;visibility:hidden!important;pointer-events:none!important;transform:translateX(-50%)!important;transition:opacity .25s ease,visibility .25s!important;-webkit-tap-highlight-color:transparent} 1952#ev-immersive-header .ev-mobile-scrollhint.is-visible{opacity:1!important;visibility:visible!important;pointer-events:auto!important;animation:evScrollBounce 1.6s ease-in-out infinite!important} 1953#ev-immersive-header .ev-mobile-scrollhint svg{width:20px!important;height:20px!important;stroke:var(--p)!important;fill:none!important;stroke-width:2.4!important;stroke-linecap:round!important;stroke-linejoin:round!important} 1954@keyframes evScrollBounce{0%,100%{transform:translateX(-50%) translateY(0)}50%{transform:translateX(-50%) translateY(5px)}} 1955@media(prefers-reduced-motion:reduce){#ev-immersive-header .ev-mobile-scrollhint.is-visible{animation:none!important}} 1956 1957#ev-immersive-header .ev-mobile-tab.ev-tab-aktionen{background:var(--al)!important;color:var(--a)!important;font-weight:600!important;border-color:var(--a)!important} 1958#ev-immersive-header .ev-mobile-tab.ev-tab-aktionen.is-active{background:var(--a)!important;color:#fff!important;border-color:var(--a)!important} 1959 1960#ev-immersive-header .ev-mobile-aktion-hero{ 1961 display:block;position:relative;border-radius:16px;overflow:hidden; 1962 min-height:220px;text-decoration:none;-webkit-tap-highlight-color:transparent; 1963 background:linear-gradient(135deg,#2A4D35,#3B6B4A)} 1964#ev-immersive-header .ev-mobile-aktion-content{ 1965 position:relative;z-index:1;padding:24px 20px;display:flex;flex-direction:column;gap:8px} 1966#ev-immersive-header .ev-mobile-aktion-icon{font-size:32px;margin-bottom:4px} 1967#ev-immersive-header .ev-mobile-aktion-title{ 1968 font-size:20px;font-weight:700;color:#fff;line-height:1.2} 1969#ev-immersive-header .ev-mobile-aktion-sub{ 1970 font-size:14px;color:rgba(255,255,255,.85);line-height:1.4} 1971#ev-immersive-header .ev-mobile-aktion-cta{ 1972 display:inline-flex;align-items:center;gap:6px; 1973 background:rgba(255,255,255,.15);backdrop-filter:blur(8px);color:#fff;border-radius:10px; 1974 padding:10px 18px;font-size:14px;font-weight:600;font-family:var(--ui); 1975 border:1px solid rgba(255,255,255,.2);margin-top:8px;width:fit-content} 1976 1977#ev-immersive-header .ev-mobile-hscroll{ 1978 display:flex;gap:10px;overflow-x:auto;padding:4px 2px 12px; 1979 -webkit-overflow-scrolling:touch;scrollbar-width:none; 1980 touch-action:pan-x!important;overscroll-behavior-x:contain} 1981#ev-immersive-header .ev-mobile-hscroll::-webkit-scrollbar{display:none} 1982#ev-immersive-header .ev-mobile-hcard{ 1983 flex-shrink:0;width:138px;border-radius:14px;overflow:hidden; 1984 background:var(--white);border:1px solid var(--bd); 1985 text-decoration:none;color:var(--t1);transition:border-color .15s; 1986 -webkit-tap-highlight-color:transparent} 1987#ev-immersive-header .ev-mobile-hcard:active{border-color:var(--p);transform:scale(.98)} 1988#ev-immersive-header .ev-mobile-hcard-img{ 1989 aspect-ratio:1;background:linear-gradient(135deg,var(--bg) 0%,#f0ede8 100%); 1990 display:flex;align-items:center;justify-content:center;overflow:hidden} 1991#ev-immersive-header .ev-mobile-hcard-img img{width:80%;height:80%;object-fit:contain} 1992#ev-immersive-header .ev-mobile-hcard-info{padding:8px 10px 10px} 1993#ev-immersive-header .ev-mobile-hcard-name{font-size:12px;font-weight:600;line-height:1.3;margin-bottom:3px} 1994#ev-immersive-header .ev-mobile-hcard-reason{font-size:11px;color:var(--t3);line-height:1.3;margin-bottom:5px} 1995#ev-immersive-header .ev-mobile-hcard-price{font-size:12px;font-weight:700;color:var(--p)} 1996 1997#ev-immersive-header .ev-mobile-overlay{ 1998 position:absolute;inset:0;z-index:200;display:none; 1999 flex-direction:column;justify-content:flex-end; 2000 background:rgba(0,0,0,.45)} 2001#ev-immersive-header .ev-mobile-overlay.is-open{display:flex!important} 2002#ev-immersive-header .ev-mobile-overlay-sheet{ 2003 background:var(--white);border-radius:20px 20px 0 0; 2004 padding:20px 20px calc(20px + env(safe-area-inset-bottom)); 2005 max-height:72vh;overflow-y:auto;-webkit-overflow-scrolling:touch; 2006 animation:slideUp .3s var(--smooth)} 2007@keyframes slideUp{from{transform:translateY(100%)}to{transform:translateY(0)}} 2008#ev-immersive-header .ev-mobile-overlay-handle{ 2009 width:36px;height:4px;background:var(--bd);border-radius:2px;margin:0 auto 16px} 2010#ev-immersive-header .ev-mobile-overlay-title{ 2011 font-size:16px;font-weight:700;color:var(--t1);margin-bottom:14px; 2012 display:flex;align-items:center;justify-content:space-between} 2013#ev-immersive-header .ev-mobile-overlay-close{ 2014 width:28px;height:28px;border-radius:50%;background:var(--bg); 2015 border:none;cursor:pointer;display:flex;align-items:center;justify-content:center; 2016 flex-shrink:0} 2017#ev-immersive-header .ev-mobile-overlay-close svg{ 2018 width:14px;
2018height:14px;stroke:var(--t1);fill:none;stroke-width:2} 2019#ev-immersive-header .ev-mobile-nl{padding:0 0 14px;border-bottom:1px solid var(--bd);margin-bottom:10px} 2020#ev-immersive-header .ev-mobile-nl-label{font-size:13px;font-weight:600;color:var(--t1);margin-bottom:2px} 2021#ev-immersive-header .ev-mobile-nl-sub{font-size:12px;color:var(--t2);margin-bottom:8px} 2022#ev-immersive-header .ev-mobile-nl-hint{font-size:11px;color:var(--t3);margin-top:6px;line-height:1.4} 2023#ev-immersive-header .ev-mobile-nl-form{display:flex;gap:6px} 2024#ev-immersive-header .ev-mobile-nl-form input{ 2025 flex:1;padding:10px 14px;border-radius:10px;border:1.5px solid var(--bd); 2026 font-size:15px;font-family:var(--ui);background:var(--bg);color:var(--t1);outline:none} 2027#ev-immersive-header .ev-mobile-nl-form input:focus{border-color:var(--p)} 2028#ev-immersive-header .ev-mobile-nl-form button{ 2029 padding:0 16px;height:44px;border-radius:10px;border:none; 2030 background:var(--p);color:#fff;font-size:13px;cursor:pointer;flex-shrink:0; 2031 display:flex;align-items:center;justify-content:center;font-weight:600; 2032 font-family:var(--ui);white-space:nowrap} 2033#ev-immersive-header .ev-mobile-nl-msg{font-size:12px;margin-top:6px;min-height:16px} 2034#ev-immersive-header .ev-mobile-nl-msg.ok{color:var(--p)} 2035#ev-immersive-header .ev-mobile-nl-msg.err{color:var(--rd)} 2036#ev-immersive-header .ev-mobile-overlay-links{display:flex;flex-direction:column;gap:6px} 2037#ev-immersive-header .ev-mobile-overlay-link{ 2038 display:flex;align-items:center;justify-content:space-between; 2039 padding:14px 16px;border-radius:12px;background:var(--bg); 2040 text-decoration:none;color:var(--t1);font-size:15px;font-weight:500; 2041 -webkit-tap-highlight-color:transparent;transition:background .15s} 2042#ev-immersive-header .ev-mobile-overlay-greet{padding:2px 16px 10px;font-size:13px;font-weight:600;color:var(--t3);letter-spacing:.2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} 2043#ev-immersive-header .ev-mobile-overlay-link:active{background:var(--pl)} 2044#ev-immersive-header .ev-mobile-overlay-link svg{ 2045 width:16px;height:16px;stroke:var(--t3);fill:none;stroke-width:2;flex-shrink:0} 2046#ev-immersive-header .ev-mobile-hilfe-contact{ 2047 margin-top:14px;padding:16px;border-radius:12px; 2048 background:var(--bg);border:1px solid var(--bd)} 2049#ev-immersive-header .ev-mobile-hilfe-contact p{ 2050 font-size:13px;color:var(--t2);margin-bottom:6px} 2051#ev-immersive-header .ev-mobile-hilfe-contact a{ 2052 font-size:14px;font-weight:600;color:var(--p);text-decoration:none} 2053 2054#ev-immersive-header .ev-mobile-bar button{ 2055 flex:1!important;display:flex!important;flex-direction:column; 2056 align-items:center!important;gap:4px!important;padding:10px 0!important; 2057 border-radius:12px!important;background:none!important;border:none!important; 2058 cursor:pointer;color:var(--t2)!important;font-size:10px!important; 2059 font-weight:500!important;letter-spacing:.3px!important; 2060 font-family:var(--ui)!important;transition:all .15s; 2061 -webkit-tap-highlight-color:transparent} 2062#ev-immersive-header .ev-mobile-bar button:active{background:var(--bg)!important;color:var(--p)!important} 2063#ev-immersive-header .ev-mobile-bar button svg{ 2064 width:20px!important;height:20px!important;stroke:currentColor;fill:none;stroke-width:1.4} 2065 2066@keyframes megaItemIn{ 2067 from{opacity:0;transform:translateY(10px)} 2068 to{opacity:1;transform:translateY(0)} 2069} 2070#ev-immersive-header .ev-mega.is-open [data-stagger]{ 2071 animation:megaItemIn .3s var(--smooth) both 2072} 2073 2074/* Sichtbarkeits-Gates Aktionen (dual: Drogerie /aktionen + Neukunden /neukunden-aktion) */ 2075/* Pill, Mobil-Tab, Mobil-Panel: sichtbar sobald IRGENDEINE Aktion laeuft */ 2076body:not(.ev-any-aktion-active) #ev-immersive-header #navAktionen, 2077body:not(.ev-any-aktion-active) #ev-immersive-header .ev-mobile-tab.ev-tab-aktionen, 2078body:not(.ev-any-aktion-active) #ev-immersive-header #m-aktionen{display:none!important} 2079/* Neukunden-Topbar: nur wenn Neukunden-Aktion laeuft */ 2080body:not(.ev-neukunden-active) #ev-immersive-header .ev-nk-topbar:not(.ev-ma-topbar){display:none!important} 2081body:not(.ev-aktion-active) #ev-immersive-header .ev-ma-topbar{display:none!important}
2082/* Einzelne Cards je nach Aktion (Mobil-Hero + Desktop-Dropdown) */ 2083body:not(.ev-neukunden-active) #ev-immersive-header .evm-akt-hero--neukunden, 2084body:not(.ev-neukunden-active) #ev-immersive-header .ev-akt-dd-card--neukunden{display:none!important} 2085body:not(.ev-aktion-active) #ev-immersive-header .ev-akt-dd-card--vitaminb{display:none!important} 2086body:not(.ev-aktion-active) #ev-immersive-header .evm-akt-hero--vitaminb, 2087body:not(.ev-aktion-active) #ev-immersive-header .evm-akt-hero--haut-haare, 2088body:not(.ev-aktion-active) #ev-immersive-header .ev-akt-dd-card--haut-haare{display:none!important} 2089 2090#ev-immersive-header .ev-sparset-hero{position:relative;background:linear-gradient(180deg,#FFF8E8 0%,#FAEFD2 100%);border:1px solid #E8D89A;border-radius:14px;padding:24px 20px 20px;text-decoration:none;display:block;overflow:hidden;box-shadow:0 4px 16px rgba(196,162,101,.12)} 2091#ev-immersive-header .ev-sparset-hero::before{content:"";position:absolute;inset:0;background-image:radial-gradient(circle at 92% 18%, rgba(244,211,94,.35) 0%, transparent 28%),radial-gradient(circle at 8% 88%, rgba(168,200,221,.25) 0%, transparent 35%);pointer-events:none} 2092#ev-immersive-header .ev-sparset-leaf{position:absolute;color:#3B6B4A;opacity:.18;pointer-events:none} 2093#ev-immersive-header .ev-sparset-leaf--tl{top:-12px;left:-18px;width:64px;height:64px;transform:rotate(-25deg)} 2094#ev-immersive-header .ev-sparset-leaf--br{bottom:-20px;right:6px;width:88px;height:88px;transform:rotate(160deg);opacity:.14} 2095#ev-immersive-header .ev-sparset-leaf--bl{bottom:36px;left:-22px;width:56px;height:56px;transform:rotate(75deg);opacity:.14} 2096#ev-immersive-header .ev-sparset-lemon{position:absolute;top:14px;right:14px;width:54px;height:54px;filter:drop-shadow(0 4px 8px rgba(212,168,21,.25))} 2097#ev-immersive-header .ev-sparset-eyebrow{position:relative;display:inline-block;font-size:10px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:#1A4E32;background:rgba(255,252,245,.85);padding:4px 10px;border-radius:100px;border:1px solid #F4D35E;margin-bottom:10px} 2098#ev-immersive-header .ev-sparset-title{position:relative;font-size:22px;line-height:1.1;font-weight:700;color:#1A4E32;margin-bottom:4px;font-family:Georgia,"Times New Roman",serif;letter-spacing:-.3px} 2099#ev-immersive-header .ev-sparset-title em{font-style:italic;color:#D4A815} 2100#ev-immersive-header .ev-sparset-sub{position:relative;font-size:12px;color:#4F5B53;margin-bottom:16px;line-height:1.4;max-width:240px} 2101#ev-immersive-header .ev-sparset-benefits{position:relative;display:flex;flex-direction:column;gap:8px;margin-bottom:16px} 2102#ev-immersive-header .ev-sparset-benefit{display:flex;align-items:baseline;gap:10px;background:rgba(255,255,255,.6);border:1px solid rgba(244,211,94,.5);border-radius:10px;padding:10px 12px} 2103#ev-immersive-header .ev-sparset-benefit-pct{font-size:22px;font-weight:800;color:#1A4E32;font-family:inherit;line-height:1;letter-spacing:-.3px;min-width:48px} 2104#ev-immersive-header .ev-sparset-benefit-text{font-size:13px;color:#2C3A30;font-weight:600;line-height:1.3} 2105#ev-immersive-header .ev-sparset-benefit-text small{display:block;font-size:10px;color:#6b7269;font-weight:400;margin-top:2px} 2106#ev-immersive-header .ev-sparset-hint{position:relative;display:flex;align-items:center;gap:6px;font-size:11px;color:#4F5B53;margin-bottom:14px} 2107#ev-immersive-header .ev-sparset-hint::before{content:"";display:inline-block;width:14px;height:14px;flex-shrink:0;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231A4E32' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><polyline points='20 6 9 17 4 12'/></svg>") center/contain no-repeat} 2108#ev-immersive-header .ev-sparset-cta-primary{position:relative;display:flex;align-items:center;justify-content:center;gap:8px;background:#1A4E32;color:#fff!important;text-decoration:none;font-size:14px;font-weight:600;letter-spacing:.2px;padding:13px 16px;border-radius:100px;box-shadow:0 4px 12px rgba(26,78,50,.25);transition:transform .15s ease} 2109#ev-immersive-header .ev-sparset-cta-primary:hover{transform:translateY(-1px);background:#16432B} 2110#ev-immersive-header .ev-sparset-cta-primary svg{width:14px;
2110height:14px} 2111 2112#ev-immersive-header .ev-nk-topbar{position:relative;display:flex;align-items:center;justify-content:center;gap:9px;width:100%;background:linear-gradient(90deg,#16231A 0%,#274536 48%,#1B2E22 100%);color:#F4EFE4;text-decoration:none;padding:9px 16px;border-bottom:1px solid rgba(196,162,101,.35);overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:12.5px;font-weight:600;letter-spacing:.1px;line-height:1.25;text-align:center;transition:background .25s ease;box-sizing:border-box} 2113#ev-immersive-header .ev-nk-topbar:hover{background:linear-gradient(90deg,#1A2C21 0%,#2E5040 48%,#20342A 100%)} 2114#ev-immersive-header .ev-nk-topbar:focus-visible{outline:2px solid #C4A265;outline-offset:-3px} 2115/* Topbar-Zeitrotation Monatsaktion (2026-07-31): nk-Bar in-flow = Hoehe, ma-Bar absolut drueber, Crossfade */ 2116#ev-immersive-header .ev-topbar-rot{position:relative} 2117#ev-immersive-header .ev-topbar-rot .ev-nk-topbar{transition:opacity .4s ease,visibility .4s ease} 2118#ev-immersive-header .ev-ma-topbar{position:absolute;inset:0;opacity:0;visibility:hidden} 2119#ev-immersive-header .ev-topbar-rot.rot-ma .ev-nk-topbar:not(.ev-ma-topbar){opacity:0;visibility:hidden} 2120#ev-immersive-header .ev-topbar-rot.rot-ma .ev-ma-topbar{opacity:1;visibility:visible} 2121#ev-immersive-header .ev-topbar-rot.rot-ma-only .ev-nk-topbar:not(.ev-ma-topbar){display:none!important} 2122/* 2026-08-25 FIX: position:relative, NIE static. Sonst ist die Bar nicht Containing Block des Shine, er entkommt dem overflow:hidden, blaeht die Dokumentbreite auf 163% und iOS laesst die Seite kaputt-rauszoomen. */ 2123#ev-immersive-header .ev-topbar-rot.rot-ma-only .ev-ma-topbar{position:relative;opacity:1;visibility:visible} 2124/* Shine bewegt sich per transform, NIE per left: left rechnet in jedem Frame das Layout neu. -118.421% / 328.947% = die alten -45% / 125% umgerechnet auf die Eigenbreite (38%). */ 2125#ev-immersive-header .ev-nk-topbar-shine{position:absolute;top:0;left:0;width:38%;height:100%;background:linear-gradient(100deg,transparent,rgba(216,185,120,.16),transparent);transform:translateX(-118.421%) skewX(-18deg);pointer-events:none;animation:nkShine 6.5s ease-in-out infinite} 2126@keyframes nkShine{0%{transform:translateX(-118.421%) skewX(-18deg)}55%,100%{transform:translateX(328.947%) skewX(-18deg)}} 2127#ev-immersive-header .ev-nk-topbar-gift{position:relative;flex-shrink:0;width:18px;height:18px} 2128#ev-immersive-header .ev-nk-topbar-gift svg{width:18px;height:18px;display:block;stroke:#D8B978;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round} 2129#ev-immersive-header .ev-nk-topbar-text{position:relative;display:inline-block} 2130#ev-immersive-header .ev-nk-topbar-text strong{font-weight:800;color:#fff} 2131#ev-immersive-header .ev-nk-topbar-gold{color:#E0C083;font-weight:800} 2132#ev-immersive-header .ev-nk-topbar-sep{color:rgba(216,185,120,.6);margin:0 7px;font-weight:400} 2133#ev-immersive-header .ev-nk-topbar-cta{color:#E0C083;font-weight:700} 2134#ev-immersive-header .ev-nk-topbar-arrow{display:inline-block;margin-left:6px;color:#E0C083;font-weight:700;transition:transform .2s ease} 2135#ev-immersive-header .ev-nk-topbar:hover .ev-nk-topbar-arrow{transform:translateX(3px)} 2136#ev-immersive-header .ev-nk-topbar .evd-nk-short{display:none} 2137@media (min-width:768px){ 2138 #ev-immersive-header .ev-nk-topbar{padding:11px 20px;font-size:14px;gap:11px} 2139 #ev-immersive-header .ev-nk-topbar-gift,#ev-immersive-header .ev-nk-topbar-gift svg{width:20px;height:20px} 2140} 2141@media (max-width:767px){ 2142 #ev-immersive-header .ev-nk-topbar-sep,#ev-immersive-header .ev-nk-topbar-cta,#ev-immersive-header .ev-nk-topbar .evd-nk-long{display:none} 2143 #ev-immersive-header .ev-nk-topbar .evd-nk-short{display:inline} 2144 #ev-immersive-header .ev-nk-topbar-text{white-space:nowrap} 2145 #ev-immersive-header .ev-nk-topbar-arrow{margin-left:8px} 2146} 2147@media (prefers-reduced-motion: reduce){ 2148 #ev-immersive-header .ev-nk-topbar,#ev-immersive-header .ev-nk-topbar-arrow{transition:none} 2149 #ev-immersive-header .ev-nk-topbar-shine{animation:none;display:none} 2150} 2151 2152#ev-immersive-header a.ev-search-tag{display:inline-block!important;text-decoration:none!important} 2153#ev-immersive-header .ev-search-tag--nav{border-color:var(--p)!important;color:var(--p)!important;font-weight:600!important} 2154#ev-immersive-header .ev-search-tag--nav:hover{background:var(--pl)!important;border-color:var(--p)!important;color:var(--p)!important} 2155 2156#ev-immersive-header .evm-akt-badge{position:absolute!important;display:flex!important;align-items:center!important;justify-content:center!important;pointer-events:none!important;z-index:4!important;filter:drop-shadow(0 2px 4px rgba(0,0,0,.22))!important} 2157#ev-immersive-header .evm-akt-badge .evm-akt-flower{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;fill:#C9392E!important;stroke:none!important} 2158#ev-immersive-header .evm-akt-badge>span{position:relative!important;z-index:1!important;font-weight:800!important;color:#FFFFFF!important;letter-spacing:0!important;line-height:1!important;font-family:var(--ui)!important;white-space:nowrap!important;font-size:10px!important} 2159 2160#ev-immersive-header .evm-th-grid{display:grid!important;grid-template-columns:repeat(3,1fr)!important;gap:4px 10px!important} 2161#ev-immersive-header .evm-th-list{display:flex!important;flex-direction:column!important} 2162#ev-immersive-header .evm-th{display:flex!important;align-items:center!important;gap:14px!important;padding:12px!important;border-radius:14px!important;text-decoration:none!important;color:var(--t1)!important;transition:background .2s var(--smooth),transform .2s var(--smooth)!important} 2163#ev-immersive-header .evm-th-grid .evm-th:hover{background:var(--tc)!important;transform:translateY(-2px)!important} 2164#ev-immersive-header .evm-th-list .evm-th{border-radius:0!important;border-bottom:1px solid var(--bd)!important;padding:16px 6px!important;gap:16px!important;-webkit-tap-highlight-color:transparent} 2165#ev-immersive-header .evm-th-list .evm-th:last-child{border-bottom:none!important} 2166#ev-immersive-header .evm-th-list .evm-th:active{background:var(--tc)!important} 2167#ev-immersive-header .evm-th-img{position:relative!important;flex-shrink:0!important;width:56px!important;height:56px!important;border-radius:12px!important;background:var(--bg)!important;display:flex!important;align-items:center!important;justify-content:center!important;overflow:visible!important} 2168#ev-immersive-header .evm-th-list .evm-th-img{width:62px!important;height:62px!important} 2169#ev-immersive-header .evm-th-img img{width:82%!important;height:82%!important;object-fit:contain!important;filter:drop-shadow(0 4px 8px rgba(15,35,20,.14))!important} 2170#ev-immersive-header .evm-th-text{flex:1!important;min-width:0!important;display:flex!important;flex-direction:column!important;gap:3px!important} 2171#ev-immersive-header .evm-th-text strong{font-size:15px!important;font-weight:600!important;line-height:1.2!important;letter-spacing:-.01em!important;color:var(--t1)!important} 2172#ev-immersive-header .evm-th-text span{font-size:12.5px!important;color:var(--t3)!important;line-height:1.35!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important} 2173#ev-immersive-header .evm-th-list .evm-th-text span{white-space:normal!important} 2174#ev-immersive-header .evm-th-arrow{flex-shrink:0!important;width:18px!important;height:18px!important;color:var(--t3)!important;opacity:.55!important} 2175#ev-immersive-header .evm-th-arrow svg{width:18px!important;height:18px!important} 2176#ev-immersive-header .evm-th-img>.evm-akt-badge{top:-8px!important;right:-8px!important;width:32px!important;height:32px!important} 2177#ev-immersive-header .evm-th-img>.evm-akt-badge>span{font-size:9px!important} 2178 2179 2180#ev-immersive-header #m-aktionen.is-active{display:flex!important;flex-direction:column!important;gap:14px!important} 2181#ev-immersive-header .evm-akt-hero{position:relative!important;display:block!important;border-radius:18px!important;overflow:hidden!important;text-decoration:none!important;box-shadow:0 8px 28px rgba(0,0,0,.1)!important} 2182#ev-immersive-header .evm-akt-hero img{width:100%!important;height:auto!important;display:block!important} 2183#ev-immersive-header .evm-akt-ribbon{position:absolute!important;top:15px!important;left:-42px!important;transform:rotate(-45deg)!important;padding:5px 46px!important;font-size:12px!important;font-weight:800!important;letter-spacing:.4px!important;color:#fff!important;font-family:var(--ui)!important;text-align:center!important;box-shadow:0 2px 6px rgba(0,0,0,.25)!important;z-index:5!important;text-transform:uppercase!important} 2184#ev-immersive-header .evm-akt-ribbon--vitamine{background:#3B6B4A!important} 2185#ev-immersive-header .evm-akt-ribbon--haut-haare{background:#C9392E!important}
2186/* Titel-Overlay der H&H-Mobil-Card (Bild ist bewusst textfrei, ruhige Flaeche oben) */ 2187#ev-immersive-header .evm-akt-hero--haut-haare .ev-hh-card-txt{position:absolute;top:6.5%;left:10%;right:10%;text-align:center;z-index:4;pointer-events:none;color:#24422F;text-shadow:0 1px 8px rgba(255,255,255,.75),0 0 2px rgba(255,255,255,.6);font-family:Georgia,'Times New Roman',serif} 2188#ev-immersive-header .evm-akt-hero--haut-haare .ev-hh-card-txt strong{display:block;font-size:26px;font-weight:700;letter-spacing:-.3px;line-height:1.12} 2189#ev-immersive-header .evm-akt-hero--haut-haare .ev-hh-card-txt span{display:block;margin-top:4px;font-size:13px;font-weight:400;letter-spacing:.2px} 2190#ev-immersive-header .evm-akt-ribbon--vitaminb{background:#402284!important} 2191#ev-immersive-header .ev-mobile-links--top{margin:2px 0 12px!important} 2192#ev-immersive-header .ev-mobile-links--top .ev-mobile-link{background:var(--pl)!important;border:1px solid rgba(59,107,74,.28)!important;color:var(--p)!important;font-weight:600!important} 2193#ev-immersive-header .ev-mobile-links--top .ev-mobile-link svg{stroke:var(--p)!important} 2194#ev-immersive-header .evm-akt-hero>.evm-akt-badge{top:12px!important;right:12px!important;width:52px!important;height:52px!important} 2195#ev-immersive-header .evm-akt-hero>.evm-akt-badge>span{font-size:12px!important} 2196 2197/* ===== Neukunden Mobil-Card (Ribbon gold, Badge gruen = Geschenk) ===== */ 2198#ev-immersive-header .evm-akt-ribbon--neukunden{background:#C4A265!important;color:#1c2b20!important} 2199#ev-immersive-header .evm-akt-badge--gratis .evm-akt-flower{fill:#3B6B4A!important} 2200#ev-immersive-header .evm-akt-hero--neukunden>.evm-akt-badge>span{font-size:10px!important;letter-spacing:.2px!important} 2201 2202/* ===== Desktop Aktionen-Dropdown (2 Bild-Cards) ===== */ 2203#ev-immersive-header .ev-akt-nav{position:relative!important} 2204#ev-immersive-header .ev-akt-nav .ev-akt-pill{display:inline-flex!important;align-items:center!important;gap:5px!important;height:auto!important;color:var(--a)!important;font-weight:600!important;background:var(--al)!important;padding:7px 16px!important;border:none!important;border-radius:100px!important;font-size:13px!important;letter-spacing:.3px!important;cursor:pointer!important;font-family:var(--ui)!important;line-height:1!important;text-transform:none!important;transition:background .2s,color .2s!important} 2205#ev-immersive-header .ev-akt-nav .ev-akt-pill:hover,#ev-immersive-header .ev-akt-nav.is-open .ev-akt-pill{background:var(--a)!important;color:#fff!important} 2206#ev-immersive-header .ev-akt-nav .ev-akt-pill .nav-arrow{width:10px!important;height:10px!important;margin:0!important;transition:transform .25s var(--smooth)!important} 2207#ev-immersive-header .ev-akt-nav .ev-akt-pill .nav-arrow svg{width:10px!important;height:10px!important;stroke:currentColor!important;fill:none!important;stroke-width:2.4!important} 2208#ev-immersive-header .ev-akt-nav.is-open .ev-akt-pill .nav-arrow{transform:rotate(180deg)!important} 2209#ev-immersive-header .ev-akt-dd{position:absolute!important;top:calc(100% + 12px)!important;left:0!important;display:flex!important;gap:12px!important;padding:12px!important;background:var(--white)!important;border-radius:16px!important;box-shadow:0 12px 40px rgba(0,0,0,.14),0 2px 8px rgba(0,0,0,.06)!important;opacity:0!important;visibility:hidden!important;transform:translateY(-6px)!important;transition:opacity .2s,visibility .2s,transform .22s var(--smooth)!important;z-index:1002!important} 2210#ev-immersive-header .ev-akt-dd::before{content:""!important;position:absolute!important;bottom:100%!important;left:0!important;right:0!important;height:16px!important} 2211#ev-immersive-header .ev-akt-nav.is-open .ev-akt-dd{opacity:1!important;visibility:visible!important;transform:translateY(0)!important} 2212#ev-immersive-header .ev-akt-dd-card{display:block!important;width:190px!important;border-radius:12px!important;overflow:hidden!important;text-decoration:none!important;color:var(--t1)!important;background:var(--bg)!important;border:1px solid var(--bd)!important;transition:transform .2s var(--smooth),box-shadow .2s,border-color .2s!important} 2213#ev-immersive-header .ev-akt-dd-card:hover{transform:translateY(-3px)!important;box-shadow:0 10px 26px rgba(0,0,0,.1)!important;border-color:transparent!important} 2214#ev-immersive-header .ev-akt-dd-media{position:relative!important;display:block!important;aspect-ratio:16/10!important;overflow:hidden!important;background:linear-gradient(135deg,var(--bg),#f0ede8)!important} 2215#ev-immersive-header .ev-akt-dd-media img{width:100%!important;height:100%!important;object-fit:cover!important;object-position:center 34%!important;display:block!important} 2216#ev-immersive-header .ev-akt-dd-badge{position:absolute!important;top:8px!important;right:8px!important;font-size:10px!important;font-weight:800!important;letter-spacing:.3px!important;color:#fff!important;padding:3px 8px!important;border-radius:100px!important;line-height:1!important;box-shadow:0 2px 6px rgba(0,0,0,.25)!important} 2217#ev-immersive-header .ev-akt-dd-badge--gratis{background:#3B6B4A!important} 2218#ev-immersive-header .ev-akt-dd-badge--red{background:#C9392E!important} 2219#ev-immersive-header .ev-akt-dd-badge--vitaminb{background:#C4A265!important;color:#20301f!important;white-space:nowrap!important} 2220#ev-immersive-header .ev-akt-dd-info{display:block!important;padding:10px 12px 12px!important} 2221#ev-immersive-header .ev-akt-dd-info strong{display:block!important;font-size:13.5px!important;font-weight:650!important;line-height:1.25!important;color:var(--t1)!important}
2222#ev-immersive-header .ev-akt-dd-info span{display:block!important;font-size:11.5px!important;color:var(--t3)!important;line-height:1.35!important;margin-top:3px!important} 2223 2224/* ===== Menue-Korrekturen 25.08. (bleiben ueber den Sommer Sale hinaus) ===== */ 2225/* Vier Reiter muessen auf 390 px passen. Statt Inhaltsbreite + Scrollen bekommen sie gleiche 2226 Breite, kleinere Schrift und weniger Innenabstand - damit ist H-Scrollen ausgeschlossen, 2227 auch wenn ein Label spaeter laenger wird. Faellt ein Reiter weg (kein Aktions-Gate offen), 2228 teilen sich die uebrigen den Platz von selbst. */ 2229#ev-immersive-header .ev-mobile-tabs{gap:5px!important;padding:14px 12px 10px!important; 2230 overflow-x:hidden!important} 2231#ev-immersive-header .ev-mobile-tab{flex:1 1 0!important;min-width:0!important; 2232 padding:9px 3px!important;font-size:12px!important;text-align:center!important; 2233 justify-content:center!important} 2234 2235/* --- Bestseller-Reiter: Rangliste statt Kachel-Liste --- */ 2236/* Achtung: #ev-immersive-header *{margin:0;padding:0} schlaegt jede Klassen-Regel 2237 -> alle Abstaende mit id-Prefix + !important. */ 2238#ev-immersive-header .evm-bsr-intro{font-size:12.5px!important;line-height:1.45!important; 2239 color:var(--t3)!important;margin:2px 2px 8px!important} 2240#ev-immersive-header .evm-bsr-list{display:flex!important;flex-direction:column!important; 2241 min-height:120px!important} 2242#ev-immersive-header .evm-bsr{display:flex!important;align-items:center!important;gap:12px!important; 2243 padding:12px 2px!important;text-decoration:none!important;color:var(--t1)!important; 2244 border-bottom:1px solid var(--bd)!important} 2245#ev-immersive-header .evm-bsr:last-child{border-bottom:none!important} 2246#ev-immersive-header .evm-bsr-n{flex:0 0 auto!important;display:inline-flex!important; 2247 align-items:center!important;justify-content:center!important;width:24px!important; 2248 height:24px!important;border-radius:50%!important;background:var(--al)!important; 2249 color:var(--a)!important;font-size:12px!important;font-weight:800!important;line-height:1!important; 2250 font-variant-numeric:tabular-nums!important} 2251#ev-immersive-header .evm-bsr.is-top .evm-bsr-n{background:var(--a)!important;color:#fff!important} 2252#ev-immersive-header .evm-bsr-img{flex:0 0 auto!important;width:56px!important;height:56px!important; 2253 border-radius:10px!important;background:linear-gradient(135deg,var(--bg),#f0ede8)!important; 2254 display:flex!important;align-items:center!important;justify-content:center!important; 2255 overflow:hidden!important} 2256#ev-immersive-header .evm-bsr-img img{width:82%!important;height:82%!important;object-fit:contain!important} 2257#ev-immersive-header .evm-bsr-body{flex:1!important;min-width:0!important;display:flex!important; 2258 flex-direction:column!important;gap:2px!important} 2259#ev-immersive-header .evm-bsr-name{font-size:13.5px!important;font-weight:550!important; 2260 line-height:1.3!important;display:-webkit-box!important;-webkit-line-clamp:2!important; 2261 -webkit-box-orient:vertical!important;overflow:hidden!important} 2262#ev-immersive-header .evm-bsr-price{font-size:14px!important;font-weight:700!important; 2263 color:var(--t1)!important} 2264#ev-immersive-header .evm-bsr-sale{font-size:11.5px!important;font-weight:800!important; 2265 color:#C2410C!important} 2266#ev-immersive-header .evm-bsr-empty{padding:24px 0!important;text-align:center!important; 2267 color:var(--t3)!important;font-size:14px!important} 2268/* Skelett: exakt so hoch wie eine echte Zeile -> beim Nachladen springt nichts. 2269 (Vorher stand der Container leer da, bis die Store-API antwortete.) */ 2270#ev-immersive-header .evm-bsr-sk{display:flex!important;align-items:center!important; 2271 gap:12px!important;padding:12px 2px!important;border-bottom:1px solid var(--bd)!important} 2272#ev-immersive-header .evm-bsr-sk i{display:block!important;border-radius:8px!important; 2273 background:linear-gradient(90deg,#F2F0EB 25%,#E9E6DF 37%,#F2F0EB 63%)!important; 2274 background-size:400% 100%!important;animation:evBsrSk 1.3s ease-in-out infinite!important} 2275#ev-immersive-header .evm-bsr-sk i.n{width:24px!important;height:24px!important; 2276 border-radius:50%!important;flex:0 0 auto!important} 2277#ev-immersive-header .evm-bsr-sk i.m{width:56px!important;height:56px!important;flex:0 0 auto!important} 2278#ev-immersive-header .evm-bsr-sk i.t{height:12px!important;flex:1!important} 2279@keyframes evBsrSk{0%{background-position:100% 50%}100%{background-position:0 50%}} 2280@media(prefers-reduced-motion:reduce){#ev-immersive-header .evm-bsr-sk i{animation:none!important}} 2281 2282/* --- PDP-Sticky-Kaufleiste vs. geoeffnetes Mobil-Menue (Befund 25.08.) --- */ 2283/* Das Theme setzt header.header-main{z-index:10}. Der eigene Header (.ev-header z-index 9000) 2284 UND das Mobil-Menue (.ev-mobile z-index 9990) liegen darin und sind damit nach aussen auf 10 2285 gedeckelt. Die Sticky-Kaufleiste der PDP (.evm-stickycta, z-index 980) lag deshalb ueber dem 2286 geoeffneten Menue - im Browser nachgewiesen: elementFromPoint(195,810) lieferte bei offenem
2287 Menue .evm-stickycta-buy statt eines Menue-Elements. 2288 Fix: nur solange das Menue offen ist (body.ev-mobile-open) den Header-Stacking-Kontext 2289 hochziehen. Geschlossen bleibt alles wie vorher, die Leiste ist weiter klickbar. Offcanvas- 2290 Warenkorb und Consent-Layer oeffnen nie bei offenem Menue und sind nicht betroffen. 2291 Zweite Regel mit Theme-Klasse = hoehere Spezifitaet als seiten-eigene body:has()-Header-Fixes 2292 (siehe reference_header_zindex_standardproblem). */ 2293body.ev-mobile-open header.header-main{z-index:9990!important} 2294body.ev-mobile-open header.header-main.rhweb-cms-header{z-index:9990!important} 2295 2296/* ===== Aktions-Look (generisch, seit 14.09.2026; Klassen historisch ev-ss26-*) ===== */ 2297body:not(.ev-aktion-active) #ev-immersive-header .evm-ss26mm{display:none!important} 2298#ev-immersive-header .ev-nk-topbar.ev-ss26-topbar{background:linear-gradient(90deg,#FFD23A 0%,#FFC800 48%,#FFCE1F 100%);color:#3D2A00;border-bottom:2px solid #E08A00;padding-bottom:8px} 2299#ev-immersive-header .ev-nk-topbar.ev-ss26-topbar:hover{background:linear-gradient(90deg,#F7C420 0%,#F5BD00 48%,#F9C526 100%)} 2300#ev-immersive-header .ev-nk-topbar.ev-ss26-topbar:focus-visible{outline:2px solid #3D2A00;outline-offset:-3px} 2301#ev-immersive-header .ev-nk-topbar.ev-ss26-topbar .ev-nk-topbar-gold{color:#8A2F08;font-weight:900} 2302#ev-immersive-header .ev-nk-topbar.ev-ss26-topbar strong{color:#3D2A00;font-weight:900} 2303#ev-immersive-header .ev-nk-topbar.ev-ss26-topbar .ev-nk-topbar-arrow{color:#3D2A00} 2304#ev-immersive-header .ev-akt-pill.ev-ss26-pill{background:#FFC800;color:#3D2A00;font-weight:800;border-radius:100px;padding:7px 16px;text-decoration:none;display:inline-block;box-shadow:0 2px 0 #E08A00;transition:background .15s,transform .12s} 2305#ev-immersive-header .ev-akt-pill.ev-ss26-pill:hover{background:#F5BD00} 2306#ev-immersive-header .ev-akt-pill.ev-ss26-pill:active{transform:translateY(1px);box-shadow:0 1px 0 #E08A00} 2307 2308/* ===== Herbst-Trio kompakt (mobiler Aktionsreiter), aus tools/aktion_herbst/highlight_herbst.py ===== */ 2309#ev-immersive-header .evm-hbtk{position:relative!important;overflow:clip!important;display:block!important;border-radius:18px!important; 2310 border:1px solid #E7C58E!important;text-decoration:none!important;padding:14px 14px 12px!important; 2311 background:linear-gradient(158deg,#FFF9EE 0%,#FCEBCB 40%,#F3C98A 100%)!important; 2312 font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif!important} 2313#ev-immersive-header .evm-hbtk *{box-sizing:border-box;font-style:normal!important} 2314#ev-immersive-header .evm-hbtk-eye{display:inline-block!important;font-size:10px!important;font-weight:800!important;letter-spacing:.12em!important; 2315 text-transform:uppercase!important;color:#FFF8EC!important;background:#24402C!important;border-radius:100px!important; 2316 padding:4px 10px!important;margin:0 0 8px!important;white-space:nowrap!important} 2317#ev-immersive-header .evm-hbtk-h{display:block!important;font-size:17px!important;font-weight:800!important;line-height:1.2!important; 2318 color:#1F1A14!important;margin:0 0 2px!important} 2319#ev-immersive-header .evm-hbtk-sub{display:block!important;font-size:12.5px!important;line-height:1.4!important;color:#4A4034!important; 2320 margin:0 0 8px!important} 2321#ev-immersive-header .evm-hbtk-row{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:6px!important; 2322 align-items:end!important} 2323#ev-immersive-header .evm-hbtk-st{display:flex!important;flex-direction:column!important;align-items:center!important;text-align:center!important} 2324#ev-immersive-header .evm-hbtk-st img{display:block!important;width:62px!important;height:auto!important;margin:0 auto -6px!important; 2325 position:relative!important;z-index:1!important;filter:drop-shadow(0 6px 8px rgba(80,44,10,.3))!important} 2326#ev-immersive-header .evm-hbtk-st span{display:block!important;width:100%!important;border-radius:10px!important;padding:8px 2px 6px!important; 2327 background:linear-gradient(180deg,#F7F2E8,#E6DCCA)!important;border:1px solid rgba(160,130,90,.35)!important; 2328 font-size:11px!important;line-height:1.25!important;color:#24402C!important;font-weight:650!important} 2329#ev-immersive-header .evm-hbtk-st b{display:block!important;font-size:14px!important;font-weight:800!important;color:#1F1A14!important; 2330 white-space:nowrap!important}
2331/* Treppe auch im Menue erkennbar: Stufen 46 / 62 / 78 px (22.09. gemessen, vorher 46/52/58). */ 2332#ev-immersive-header .evm-hbtk-st:nth-child(2) span{padding-top:24px!important} 2333#ev-immersive-header .evm-hbtk-st:nth-child(3) span{padding-top:40px!important} 2334#ev-immersive-header .evm-hbtk-seal{position:absolute!important;right:10px!important;top:10px!important;width:66px!important;height:66px!important; 2335 border-radius:50%!important;display:flex!important;flex-direction:column!important;align-items:center!important; 2336 justify-content:center!important;text-align:center!important;background:#B4531A!important;border:2px solid #F6D9B5!important; 2337 color:#fff!important;line-height:1.05!important} 2338#ev-immersive-header .evm-hbtk-seal s{text-decoration:none!important;font-size:8.5px!important;color:#FFE9CF!important} 2339#ev-immersive-header .evm-hbtk-seal u{text-decoration:none!important;font-size:14px!important;font-weight:800!important;white-space:nowrap!important} 2340 2341#ev-immersive-header .evm-ss26mm{display:flex!important;flex-direction:column!important;gap:10px!important;max-width:100%!important;overflow-x:hidden!important} 2342#ev-immersive-header .evm-ss26mm-fig{display:block!important;background:none!important;border:0!important;padding:0!important;text-decoration:none!important} 2343#ev-immersive-header .evm-ss26mm-note:empty{display:none!important} 2344#ev-immersive-header .evm-ss26mm-note{font-size:13px!important;line-height:1.45!important;color:#5A4A2A!important;margin:0!important} 2345#ev-immersive-header .evm-ss26mm-cta{display:inline-block!important;align-self:flex-start!important;font-size:14px!important;font-weight:800!important;color:#C2410C!important;text-decoration:none!important;border-bottom:2px solid rgba(194,65,12,.35)!important;padding-bottom:1px!important} 2346 2347/* ===== Herbst-Trio: Desktop-Reiter braun mit weisser Schrift (tools/aktion_herbst/topbar_herbst.py) ===== */ 2348#ev-immersive-header #navAktionen .ev-akt-pill.ev-ss26-pill{ 2349 background:linear-gradient(180deg,#B5823F 0%,#9A672E 55%,#8E5C27 100%)!important;color:#fff!important; 2350 font-weight:800!important;letter-spacing:.01em!important;text-shadow:0 1px 1px rgba(60,30,5,.45)!important; 2351 border:0!important;box-shadow:inset 0 1px 0 rgba(255,236,200,.45),0 3px 0 #5E3A14,0 6px 14px -6px rgba(70,40,10,.55)!important; 2352 transition:transform .12s ease,box-shadow .12s ease,filter .15s ease!important} 2353#ev-immersive-header #navAktionen .ev-akt-pill.ev-ss26-pill:hover{filter:brightness(1.08)!important;color:#fff!important} 2354#ev-immersive-header #navAktionen .ev-akt-pill.ev-ss26-pill:active{transform:translateY(2px)!important; 2355 box-shadow:inset 0 1px 0 rgba(255,236,200,.35),0 1px 0 #5E3A14,0 3px 8px -5px rgba(70,40,10,.5)!important} 2356#ev-immersive-header #navAktionen .ev-akt-pill.ev-ss26-pill:focus-visible{outline:2px solid #5E3A14!important;outline-offset:3px!important} 2357@media(prefers-reduced-motion:reduce){#ev-immersive-header #navAktionen .ev-akt-pill.ev-ss26-pill{transition:none!important}} 2358</style> 2359 2360<div id="ev-immersive-header"> 2361 2362<!-- AKTIONS-TOPBAR (build_header.py --mode aktion). Inhalt kommt aus AKTION_PRESETS. --> 2363<div class="ev-topbar-rot rot-ma-only" id="evTopbarRot"> 2364<a href="/aktionen" class="ev-nk-topbar ev-ma-topbar ev-ss26-topbar" data-ev-promo="Herbst-Trio 2026" data-ev-promo-slot="global-topbar"> 2365 <span class="ev-nk-topbar-shine" aria-hidden="true"></span> 2366 <span class="ev-nk-topbar-text"><span class="evd-nk-long"><span class="ev-nk-topbar-gold">Herbst-Trio:</span> bis zu 3 Geschenke gratis · ab 75 € automatisch im Warenkorb</span><span class="evd-nk-short"><span class="ev-nk-topbar-gold">Herbst-Trio:</span> bis zu 3 Geschenke ab 75 €</span></span> 2367<span class="ev-nk-topbar-arrow">→</span> 2368</a> 2369</div>
2370<script> 2371/* Herbst-Trio-Topbar (tools/aktion_herbst/topbar_herbst.py): Zeit-Gate, Endspurt, persoenlicher Stand. */ 2372(function(){ 2373 'use strict'; 2374 var rot=document.getElementById('evTopbarRot');if(!rot)return; 2375 2376 var HB={s:Date.parse('2026-09-22T15:30:00+02:00'),es:Date.parse('2026-10-04T00:00:00+02:00'), 2377 e:Date.parse('2026-10-06T23:59:59+02:00'),namen:{'019a7d818b1e7b27ba5e9aa71f6b08d5':'Vitamin C','01a0ae429e0f797ca5a3363e8a93e27e':'Vitamin B','01a0ae171d187e04bef8c9572fd21c99':'Omega-3'}}; 2378 function hbAktiv(){var n=Date.now();return n>=HB.s&&n<=HB.e;} 2379 function hbEndspurt(){var n=Date.now();return n>=HB.es&&n<=HB.e;} 2380 function hbEur(n){try{return new Intl.NumberFormat('de-DE',{style:'currency',currency:'EUR'}).format(n);} 2381 catch(x){return (Math.round(n*100)/100).toFixed(2).replace('.',',')+'\u00a0\u20ac';}} 2382 function hbLies(h){ 2383 var m=String(h||'').match(/
2383<script type="application\/json" class="ev-tiered-gift-progress-data">[\s\S]*?<\/script>/g); 2384 if(!m)return null; 2385 try{var d=JSON.parse(m[m.length-1].replace(/^
2385<script[^>]*>/,'').replace(/<\/script>$/,''));return d&&d.enabled?d:null;} 2386 catch(x){return null;} 2387 } 2388 /* Nur die drei Herbst-Artikel zaehlen. Steht im Plugin eine weitere Regel (z. B. D3 am 23.09. 2389 als Ueberbrueckung), bleibt sie hier unsichtbar: Stufen-Index, Zaehler und Restbetrag werden 2390 aus den Herbst-Stufen selbst gerechnet, nicht aus reachedCount/missingAmount des Plugins. */ 2391 function hbStand(d){ 2392 if(!d||!d.normalEnabled||!d.steps||!d.steps.length)return null; 2393 var st=[],i,summe=+d.subtotal||0,er=0,nx=null; 2394 for(i=0;i<d.steps.length;i++){var s=d.steps[i],n=HB.namen[s.productId]; 2395 if(n)st.push({t:+s.threshold||0,r:!!s.reached,n:n});} 2396 if(!st.length)return null; 2397 st.sort(function(a,b){return a.t-b.t;}); 2398 for(i=0;i<st.length;i++){if(st[i].r)er++;else if(!nx)nx=st[i];} 2399 return {summe:summe,stufen:st,erreicht:er,next:nx, 2400 fehlt:nx?Math.max(0,Math.round((nx.t-summe)*100)/100):0,alle:!nx}; 2401 } 2402 function hbAbo(cb){ 2403 var da=false; 2404 function nimm(d){da=true;try{cb(hbStand(d));}catch(x){}} 2405 if('evGiftProgress' in window)nimm(window.evGiftProgress); 2406 document.addEventListener('ev:gift-progress',function(e){nimm(e.detail);}); 2407 setTimeout(function(){ 2408 if(da||!window.fetch)return; 2409 fetch('/checkout/offcanvas',{headers:{'X-Requested-With':'XMLHttpRequest'},credentials:'same-origin'}) 2410 .then(function(r){return r.text();}).then(function(h){if(!da)nimm(hbLies(h));}).catch(function(){}); 2411 },3000); 2412 } 2413 /* Namen der schon erreichten Stufen als Aufzaehlung: "Vitamin C" / "Vitamin C und Vitamin B" */ 2414 function hbDrin(st){var a=[],i;for(i=0;i<st.stufen.length;i++){if(st.stufen[i].r)a.push(st.stufen[i].n);} 2415 return a.length<2?a.join(''):a.slice(0,-1).join(', ')+' und '+a[a.length-1];} 2416 2417 var lang=rot.querySelector('.evd-nk-long'),kurz=rot.querySelector('.evd-nk-short'); 2418 var L0='<span class="ev-nk-topbar-gold">Herbst-Trio:</span> bis zu 3 Geschenke gratis · ab 75 € automatisch im Warenkorb',K0='<span class="ev-nk-topbar-gold">Herbst-Trio:</span> bis zu 3 Geschenke ab 75 €',LE='<span class="ev-nk-topbar-gold">Endspurt:</span> Herbst-Trio nur noch bis 6. Oktober · bis zu 3 Geschenke gratis ab 75 €',KE='<span class="ev-nk-topbar-gold">Nur noch bis 6.10.:</span> bis zu 3 Geschenke'; 2419 var st=null,zuletzt=''; 2420 function g(t){return '<span class="ev-nk-topbar-gold">'+t+'</span>';} 2421 function text(){ 2422 var es=hbEndspurt(),l=es?LE:L0,k=es?KE:K0; 2423 if(st&&st.summe>0){ 2424 if(st.alle){l=g('Alle 3 Herbst-Geschenke')+' sind in deinem Warenkorb \u2713'; 2425 k=g('Alle 3 Geschenke')+' sind drin \u2713';} 2426 else if(st.next){var f=g(hbEur(st.fehlt)); 2427 k='Noch '+f+' bis '+st.next.n+' gratis'; 2428 l=(st.erreicht?hbDrin(st)+(st.erreicht>1?' sind':' ist')+' schon drin · ':'')+k;} 2429 } 2430 if(l+k===zuletzt)return;zuletzt=l+k; 2431 if(lang)lang.innerHTML=l;if(kurz)kurz.innerHTML=k; 2432 } 2433 /* Sicherheitsnetz nach dem 06.10.: Reiter wieder "Aktionen", Stufen-Karte im Menue weg. 2434 Der regulaere Rueckbau (Preset "aus") bleibt trotzdem Pflicht. */ 2435 function nachEnde(){ 2436 if(Date.now()<=HB.e)return; 2437 var a=document.querySelector('#navAktionen .ev-akt-pill'), 2438 t=document.querySelector('.ev-mobile-tab[data-panel="m-aktionen"]'), 2439 k=document.querySelector('#evSs26MM .evm-hbtk'); 2440 /* setProperty mit important: das Karten-CSS traegt display:block!important. */ 2441 if(a)a.textContent='Aktionen';if(t)t.textContent='Aktionen';if(k)k.style.setProperty('display','none','important'); 2442 } 2443 function tick(){rot.style.display=hbAktiv()?'':'none';text();nachEnde();} 2444 tick();setInterval(tick,60000); 2445 document.addEventListener('DOMContentLoaded',nachEnde); 2446 hbAbo(function(s){st=s;text();}); 2447})(); 2448</script>
2448 2449 2450 2451 2452 2453<header class="ev-header" id="evHeader"> 2454 <div class="ev-header-main"> 2455 <a href="/" class="ev-header-logo"> 2456 <img src="https://echtvital.cstatic.com/media/7f/d3/88/1679934207/ev-logo.webp?ts=1679934207" alt="Echt Vital" loading="eager"> 2457 </a> 2458 2459 <ul class="ev-nav" id="desktopNav"> 2460 <li id="navAktionen" class="ev-akt-nav ev-akt-nav--direct"> 2461 <a href="/aktionen" class="ev-akt-pill ev-ss26-pill">Herbst-Trio</a> 2462 </li> 2463 <li> 2464 <a href="/mitdenker/produkte">Alle Produkte</a> 2465 </li> 2466 <li> 2467 <a href="/mitdenker/themen" data-mega="themen">Themen <span class="nav-arrow"><svg viewBox="0 0 24 24"><polyline points="6 9 12 15 18 9"/></svg></span></a> 2468 </li> 2469 <li><a href="/mitdenker/themen/bestseller">Bestseller</a></li> 2470 <li> 2471 <a href="/mitdenker/bibliothek" data-mega="bibliothek">Bibliothek <span class="nav-arrow"><svg viewBox="0 0 24 24"><polyline points="6 9 12 15 18 9"/></svg></span></a> 2472 </li> 2473 </ul> 2474 2475 <div class="ev-acts"> 2476 <button class="ev-act" id="btnSearch" aria-label="Suche"> 2477 <svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="7"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg> 2478 </button> 2479 <div class="ev-account-wrap" id="accountWrap"> 2480 <button class="ev-act" id="btnAccount" aria-label="Konto" aria-expanded="false"> 2481 <svg viewBox="0 0 24 24"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg> 2482 </button> 2483 <div class="ev-account-dropdown" id="accountDropdown"> 2484 <div class="ev-account-greet" id="evAccountGreet" hidden></div> 2485 <a href="/account" class="ev-account-item"> 2486 <svg viewBox="0 0 24 24"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg> 2487 Mein Konto 2488 </a> 2489 <a href="/account/order" class="ev-account-item"> 2490 <svg viewBox="0 0 24 24"><path d="M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z"/><line x1="3" y1="6" x2="21" y2="6"/><path d="M16 10a4 4 0 0 1-8 0"/></svg> 2491 Meine Bestellungen 2492 </a> 2493 <div class="ev-account-sep"></div> 2494 <a href="/account/login" class="ev-account-item ev-account-login-item"> 2495 <svg viewBox="0 0 24 24"><path d="M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4"/><polyline points="10 17 15 12 10 7"/><line x1="15" y1="12" x2="3" y2="12"/></svg> 2496 Anmelden 2497 </a> 2498 <a href="/account/logout" class="ev-account-item ev-account-logout-item"> 2499 <svg viewBox="0 0 24 24"><path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"/><polyline points="16 17 21 12 16 7"/><line x1="21" y1="12" x2="9" y2="12"/></svg> 2500 Abmelden 2501 </a> 2502 </div> 2503 </div> 2504 <button class="ev-act" id="btnCart" aria-label="Warenkorb"> 2505 <svg viewBox="0 0 24 24"><path d="M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z"/><line x1="3" y1="6" x2="21" y2="6"/><path d="M16 10a4 4 0 0 1-8 0"/></svg> 2506 <span class="badge">0</span> 2507 </button> 2508 <button class="ev-act ev-burger" id="btnBurger" aria-label="Menue"> 2509 <svg viewBox="0 0 24 24"><line x1="4" y1="7" x2="20" y2="7"/><line x1="4" y1="12" x2="20" y2="12"/><line x1="4" y1="17" x2="20" y2="17"/></svg> 2510 </button> 2511 </div> 2512 </div> 2513 <div class="ev-header-line"></div> 2514 2515 <!-- 25.08.: Mega-Panel "megaProdukte" entfernt. Es enthielt nur den nie befuellten 2516 Bestseller-Container #evBsGridDesktop - der Ausloeser .ev-nav [data-mega="produkte"] 2517 existiert im Header nicht (Navigationspunkt "Alle Produkte" ist ein Direktlink). 2518 Patrick 25.08.: kein Dropdown noetig, Leiche raus statt beleben. --> 2519 2520 <div class="ev-mega" id="megaThemen"> 2521 <div class="ev-mega-inner"> 2522 <div class="evm-th-grid"> 2523 <a href="/aktionen" class="evm-th evm-th--akt" style="--tc:var(--rl)"><span class="evm-th-img"><img src="https://echtvital.cstatic.com/media/2b/15/df/1777176031/Kollagen.png?ts=1777176034&w=160" alt="Haut & Haare" loading="lazy" width="80" height="80"></span><span class="evm-th-text"><strong>Haut & Haare</strong><span>Kollagen, Hyaluron & Co.</span></span><span class="evm-th-arrow"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg></span></a> 2524 <a href="/mitdenker/themen/vitamine" class="evm-th" style="--tc:var(--orl)"><span class="evm-th-img"><img src="https://echtvital.cstatic.com/media/cd/1c/ef/1777176074/Vitamin-D3-hochdosiert-Steinplatte.png?ts=1777176078&w=160" alt="Vitamine" loading="lazy" width="80" height="80"></span><span class="evm-th-text"><strong>Vitamine</strong><span>D3, K2, C und B-Komplex</span></span><span class="evm-th-arrow"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg></span></a> 2525 <a href="/mitdenker/themen/energie" class="evm-th" style="--tc:var(--orl)"><span class="evm-th-img"><img src="https://echtvital.cstatic.com/media/89/be/59/1777176249/Vitamin%20B12.png?ts=1777176253&w=160" alt="Energie" loading="lazy" width="80" height="80"></span><span class="evm-th-text"><strong>Energie</strong><span>B-Vitamine, Q10, Mitochondrien</span></span><span class="evm-th-arrow"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg></span></a> 2526 <a href="/mitdenker/themen/schlaf" class="evm-th" style="--tc:var(--ppl)"><span class="evm-th-img"><img src="https://echtvital.cstatic.com/media/46/3d/16/1777176739/Schlafspray%20mit%20Melatonin.png?ts=1777176742&w=160" alt="Schlaf" loading="lazy" width="80" height="80"></span><span class="evm-th-text"><strong>Schlaf</strong><span>Tief schlafen, früh wach</span></span><span class="evm-th-arrow"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg></span></a> 2527 <a href="/mitdenker/themen/immunsystem" class="evm-th" style="--tc:var(--pl)"><span class="evm-th-img"><img src="https://echtvital.cstatic.com/media/9f/df/af/1777176088/Vitamic%20C%20Acerola%20Kapseln.png?ts=1777176093&w=160" alt="Immunsystem" loading="lazy" width="80" height="80"></span><span class="evm-th-text"><strong>Immunsystem</strong><span>Robust durch jede Jahreszeit</span></span><span class="evm-th-arrow"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg></span></a> 2528 <a href="/mitdenker/themen/verdauung" class="evm-th" style="--tc:var(--al)"><span class="evm-th-img"><img src="https://echtvital.cstatic.com/media/ba/eb/d9/1777176542/Bitterstoffe.png?ts=1777176545&w=160" alt="Verdauung" loading="lazy" width="80" height="80"></span><span class="evm-th-text"><strong>Verdauung</strong><span>Bitterstoffe, Schwarzkümmel & Co.</span></span><span class="evm-th-arrow"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg></span></a> 2529 <a href="/mitdenker/themen/fokus" class="evm-th" style="--tc:var(--bll)"><span class="evm-th-img"><img src="https://echtvital.cstatic.com/media/cf/41/d6/1777176336/Lwenmhne%20Steinplatte.png?ts=1777176340&w=160" alt="Fokus" loading="lazy" width="80" height="80"></span><span class="evm-th-text"><strong>Fokus</strong><span>Löwenmähne, Omega-3, B-Vitamine</span></span><span class="evm-th-arrow"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg></span></a> 2530 <a href="/mitdenker/themen/longevity" class="evm-th" style="--tc:var(--teall)"><span class="evm-th-img"><img src="https://echtvital.cstatic.com/media/17/8d/14/1777176383/Spermidin%20Steinplatte.png?ts=1777176388&w=160" alt="Longevity" loading="lazy" width="80" height="80"></span><span class="evm-th-text"><strong>Longevity</strong><span>Vital alt werden, nicht nur älter</span></span><span class="evm-th-arrow"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg></span></a> 2531 <a href="/mitdenker/themen/kontrovers" class="evm-th" style="--tc:var(--rosel)"><span class="evm-th-img"><img src="https://echtvital.cstatic.com/media/f4/61/b1/1777780891/Premium%20Methylenblau.png?ts=1777780894&w=160" alt="Drogerie" loading="lazy" width="80" height="80"></span><span class="evm-th-text"><strong>Drogerie</strong><span>Methylenblau, DMSO & Co.</span></span><span class="evm-th-arrow"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg></span></a> 2532 <a href="/mitdenker/themen/gelenke" class="evm-th" style="--tc:var(--bll)"><span class="evm-th-img"><img src="https://echtvital.cstatic.com/media/7f/cc/f2/1777176508/MSM%20Kapseln.png?ts=1777176512&w=160" alt="Gelenke" loading="lazy" width="80" height="80"></span><span class="evm-th-text"><strong>Gelenke</strong><span>MSM, Kollagen, Magnesium</span></span><span class="evm-th-arrow"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg></span></a> 2533 <a href="/mitdenker/themen/hormone" class="evm-th" style="--tc:var(--ppl)"><span class="evm-th-img"><img src="https://echtvital.cstatic.com/media/e3/c5/dd/1777176235/Jod.png?ts=1777176238&w=160" alt="Hormone" loading="lazy" width="80" height="80"></span><span class="evm-th-text"><strong>Hormone</strong><span>Jod, Zink, Mönchspfeffer</span></span><span class="evm-th-arrow"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg></span></a> 2534 <a href="/mitdenker/themen/frauengesundheit" class="evm-th" style="--tc:var(--rosel)"><span class="evm-th-img"><img src="https://echtvital.cstatic.com/media/g0/0c/06/1777176146/Mnchspfeffer.png?ts=1777176149&w=160" alt="Frauengesundheit" loading="lazy" width="80" height="80"></span><span class="evm-th-text"><strong>Frauengesundheit</strong><span>Mönchspfeffer, Eisen, Wild Yam</span></span><span class="evm-th-arrow"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg></span></a> 2535 </div> 2536 <div class="ev-mega-foot" style="margin-top:20px;padding-top:14px"> 2537 <a href="/mitdenker/themen">Alle 21 Themen <svg viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"/></svg></a> 2538 </div> 2539 </div> 2540 </div> 2541 2542 <div class="ev-mega" id="megaBibliothek"> 2543 <div class="ev-mega-inner"> 2544 <div class="ev-mega-bib"> 2545 <a href="/mitdenker/bibliothek/ebooks" class="ev-mega-bib-card" data-stagger> 2546 <div class="ev-mega-bib-card-icon" style="background:var(--al)"><svg viewBox="0 0 24 24" style="width:20px;height:20px;stroke:var(--a);fill:none;stroke-width:1.8"><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"/><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"/></svg></div> 2547 <h4>eBooks</h4> 2548 <p>21 Ratgeber â von Vitamin D bis Darmgesundheit.</p> 2549 </a> 2550 2551 <a href="/blog" class="ev-mega-bib-card" data-stagger> 2552 <div class="ev-mega-bib-card-icon" style="background:var(--ppl)"><svg viewBox="0 0 24 24" style="width:20px;height:20px;stroke:var(--pp);fill:none;stroke-width:1.8"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"/><polyline points="22,6 12,13 2,6"/></svg></div> 2553 <h4>Mitdenker-Brief</h4> 2554 <p>Gedanken, Studien und Hintergründe â direkt ins Postfach.</p> 2555 </a> 2556 </div> 2557 </div> 2558 </div> 2559</header> 2560 2561<div class="ev-mega-backdrop" id="megaBackdrop"></div> 2562 2563<div class="ev-search" id="searchOverlay"> 2564 <div class="ev-search-panel">
2565 <button class="ev-search-close" id="btnSearchClose" aria-label="Suche schliessen"> 2566 <svg viewBox="0 0 24 24"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg> 2567 </button> 2568 <div class="ev-search-wrap"> 2569 <form action="/search" method="get" class="ev-search-field" id="searchForm"> 2570 <svg class="ev-search-icon" viewBox="0 0 24 24"><circle cx="11" cy="11" r="7"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg> 2571 <input type="search" name="search" id="searchInput" placeholder="Was suchst du?" autocomplete="off"> 2572 <div class="ev-search-loader" id="searchLoader"></div> 2573 <button type="button" class="ev-search-clear" id="searchClear" aria-label="Eingabe loeschen"> 2574 <svg viewBox="0 0 24 24"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg> 2575 </button> 2576 </form> 2577 <div class="ev-search-tags" id="searchTags"> 2578 <button type="button" class="ev-search-tag">Vitamin D3</button> 2579 <a class="ev-search-tag" href="/detail/019836144e7772e5af64e52b9f337f56">Methylenblau</a> 2580 <a class="ev-search-tag" href="/detail/5fcc38c248bb42de8f9647298ef3e107">Algenöl</a> 2581 <a class="ev-search-tag" href="/detail/8c37e80b950543f288c5f017c4121b63">Bitterstoffe</a> 2582 <a class="ev-search-tag ev-search-tag--nav" href="/mitdenker/themen/bestseller">Bestseller</a> 2583 <a class="ev-search-tag ev-search-tag--nav" href="/mitdenker/themen">Themen</a> 2584 </div> 2585 <div class="ev-search-inspo" id="searchInspo"> 2586 <div class="ev-search-inspo-title">Beliebte Produkte</div> 2587 <div class="ev-search-inspo-grid"> 2588 <a href="/detail/0195ccc82bf775bd8d25811a8a176e64" class="ev-search-inspo-card"> 2589 <img src="https://echtvital.cstatic.com/media/cd/1c/ef/1777176074/Vitamin-D3-hochdosiert-Steinplatte.png?w=200&ts=1768219696" alt="Vitamin D3" loading="lazy"> 2590 <div class="ev-search-inspo-card-text"><span class="ev-search-inspo-card-name">Vitamin D3 hochdosiert</span><span class="ev-search-inspo-card-sub">Bestseller</span></div> 2591 </a> 2592 <a href="/detail/41c99decb2434294b98b6da6d3cdc323" class="ev-search-inspo-card"> 2593 <img src="https://echtvital.cstatic.com/media/20/52/32/1782619216/OPC%20Pulver.png?w=200&ts=1782619218" alt="OPC" loading="lazy"> 2594 <div class="ev-search-inspo-card-text"><span class="ev-search-inspo-card-name">OPC Traubenkernextrakt</span><span class="ev-search-inspo-card-sub">Bestseller</span></div> 2595 </a> 2596 <a href="/detail/5fcc38c248bb42de8f9647298ef3e107" class="ev-search-inspo-card"> 2597 <img src="https://echtvital.cstatic.com/media/e5/13/bd/1777176047/Omega-3%20Algenl.png?w=200&ts=1768217550" alt="Omega-3" loading="lazy"> 2598 <div class="ev-search-inspo-card-text"><span class="ev-search-inspo-card-name">Omega-3 Algenöl</span><span class="ev-search-inspo-card-sub">Bestseller</span></div> 2599 </a> 2600 <a href="/detail/0195ccc96e2c749e844d48b87360ac40" class="ev-search-inspo-card"> 2601 <img src="https://echtvital.cstatic.com/media/c7/23/5f/1777176482/Magnesium-Komplex-Steinplatte.png?w=200&ts=1768217283" alt="Magnesium" loading="lazy"> 2602 <div class="ev-search-inspo-card-text"><span class="ev-search-inspo-card-name">Magnesium Komplex</span><span class="ev-search-inspo-card-sub">7 Magnesiumformen</span></div> 2603 </a> 2604 <a href="/detail/0195ccd91e3b7c55b345bf860983c2c5" class="ev-search-inspo-card"> 2605 <img src="https://echtvital.cstatic.com/media/ab/a4/ef/1758878454/Kreatin%20Steinplatte.png?w=200&ts=1758878455" alt="Kreatin" loading="lazy"> 2606 <div class="ev-search-inspo-card-text"><span class="ev-search-inspo-card-name">Kreatin Monohydrat</span><span class="ev-search-inspo-card-sub">Neu</span></div> 2607 </a> 2608 <a href="/detail/019836144e7772e5af64e52b9f337f56" class="ev-search-inspo-card"> 2609 <img src="https://echtvital.cstatic.com/media/f4/61/b1/1777780891/Premium%20Methylenblau.png?w=200&ts=1777780894" alt="Methylenblau" loading="lazy"> 2610 <div class="ev-search-inspo-card-text"><span class="ev-search-inspo-card-name">Methylenblau</span><span class="ev-search-inspo-card-sub">
2610Drogerie</span></div> 2611 </a> 2612 </div> 2613 </div> 2614 <div class="ev-search-live" id="searchLive"></div> 2615 </div> 2616 </div> 2617</div> 2618 2619<div class="ev-mobile" id="mobileMenu"> 2620 <div class="ev-mobile-top"> 2621 <img loading="lazy" src="https://echtvital.cstatic.com/media/7f/d3/88/1679934207/ev-logo.webp?ts=1679934207" alt="Echt Vital"> 2622 <button class="ev-mobile-close" id="btnMobileClose" aria-label="Schliessen"> 2623 <svg viewBox="0 0 24 24"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg> 2624 </button> 2625 </div> 2626 2627 <div class="ev-mobile-tabs" id="mobileTabs"> 2628 <button class="ev-mobile-tab ev-tab-aktionen" data-panel="m-aktionen">Herbst-Trio</button> 2629 <button class="ev-mobile-tab is-active ev-tab-bs" data-panel="m-bestseller">Bestseller</button> 2630 <button class="ev-mobile-tab" data-panel="m-produkte">Alle Produkte</button> 2631 <button class="ev-mobile-tab" data-panel="m-themen">Themen</button> 2632 </div> 2633 2634 <div class="ev-mobile-body"> 2635 <div class="ev-mobile-panel" id="m-aktionen"> 2636 <div class="evm-ss26mm" id="evSs26MM"> 2637 <span class="evm-ss26mm-fig"><a href="/aktionen" class="evm-hbtk" data-ev-promo="Herbst-Trio 2026" data-ev-promo-slot="header-mobil-aktion"><span class="evm-hbtk-eye">Herbst-Trio · bis 6.10.</span><span class="evm-hbtk-seal" aria-hidden="true"><s>bis zu</s><u>64,97 €</u><s>geschenkt</s></span><span class="evm-hbtk-h">Bis zu 3 Geschenke</span><span class="evm-hbtk-sub">Automatisch im Warenkorb, ohne Code</span><span class="evm-hbtk-row"><span class="evm-hbtk-st"><img src="https://echtvital.cstatic.com/media/9f/df/af/1777176088/Vitamic%20C%20Acerola%20Kapseln.png?ts=1777176093&w=140" alt="" width="62" height="65" loading="lazy" decoding="async"><span><b>ab 75 €</b>Vitamin C</span></span><span class="evm-hbtk-st"><img src="https://echtvital.cstatic.com/media/90/15/10/1777176119/Vitamin%20B%20Komplex.png?ts=1777176122&w=140" alt="" width="62" height="65" loading="lazy" decoding="async"><span><b>ab 175 €</b>+ Vitamin B</span></span><span class="evm-hbtk-st"><img src="https://echtvital.cstatic.com/media/e5/13/bd/1777176047/Omega-3%20Algenl.png?ts=1777176051&w=140" alt="" width="62" height="65" loading="lazy" decoding="async"><span><b>ab 300 €</b>+ Omega-3</span></span></span></a></span> 2638 <p class="evm-ss26mm-note"></p> 2639 <a href="/aktionen" class="evm-ss26mm-cta">Zur Aktionsseite →</a> 2640 </div> 2641 </div> 2642 2643 <div class="ev-mobile-panel is-active" id="m-bestseller"> 2644 <p class="evm-bsr-intro">Die meistgekauften Produkte der letzten 90 Tage – ausgezählt aus echten Bestellungen.</p> 2645 <div class="evm-bsr-list" id="evBsRankMobile" aria-busy="true"> 2646 <div class="evm-bsr-sk" aria-hidden="true"><i class="n"></i><i class="m"></i><i class="t"></i></div> 2647 <div class="evm-bsr-sk" aria-hidden="true"><i class="n"></i><i class="m"></i><i class="t"></i></div> 2648 <div class="evm-bsr-sk" aria-hidden="true"><i class="n"></i><i class="m"></i><i class="t"></i></div> 2649 <div class="evm-bsr-sk" aria-hidden="true"><i class="n"></i><i class="m"></i><i class="t"></i></div> 2650 <div class="evm-bsr-sk" aria-hidden="true"><i class="n"></i><i class="m"></i><i class="t"></i></div> 2651 </div> 2652 <div class="ev-mobile-links"> 2653 <a href="/mitdenker/themen/bestseller" class="ev-mobile-link">Alle 20 Bestseller <svg viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"/></svg></a> 2654 </div> 2655 </div> 2656 2657 <div class="ev-mobile-panel" id="m-produkte"> 2658 <div class="ev-mobile-links ev-mobile-links--top"> 2659 <a href="/mitdenker/produkte" class="ev-mobile-link">Alle Produkte & Sparsets <svg viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"/></svg></a> 2660 <a href="/mitdenker/produkte?f=set3" class="ev-mobile-link">Nur 3er-Sets <svg viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"/></svg></a> 2661 <a href="/mitdenker/produkte?f=set6" class="ev-mobile-link">Nur 6er-Sets <svg viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"/></svg></a> 2662 </div> 2663 </div> 2664 2665 <div class="ev-mobile-panel" id="m-themen"> 2666 <div class="evm-th-list"> 2667 <a href="/aktionen" class="evm-th evm-th--akt" style="--tc:var(--rl)"><span class="evm-th-img"><img src="https://echtvital.cstatic.com/media/2b/15/df/1777176031/Kollagen.png?ts=1777176034&w=160" alt="Haut & Haare" loading="lazy" width="80" height="80"></span><span class="evm-th-text"><strong>Haut & Haare</strong><span>Kollagen, Hyaluron & Co.</span></span><span class="evm-th-arrow"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg></span></a> 2668 <a href="/mitdenker/themen/vitamine" class="evm-th" style="--tc:var(--orl)"><span class="evm-th-img"><img src="https://echtvital.cstatic.com/media/cd/1c/ef/1777176074/Vitamin-D3-hochdosiert-Steinplatte.png?ts=1777176078&w=160" alt="Vitamine" loading="lazy" width="80" height="80"></span><span class="evm-th-text"><strong>Vitamine</strong><span>D3, K2, C und B-Komplex</span></span><span class="evm-th-arrow"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg></span></a> 2669 <a href="/mitdenker/themen/energie" class="evm-th" style="--tc:var(--orl)"><span class="evm-th-img"><img src="https://echtvital.cstatic.com/media/89/be/59/1777176249/Vitamin%20B12.png?ts=1777176253&w=160" alt="Energie" loading="lazy" width="80" height="80"></span><span class="evm-th-text"><strong>Energie</strong><span>B-Vitamine, Q10, Mitochondrien</span></span><span class="evm-th-arrow"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg></span></a> 2670 <a href="/mitdenker/themen/schlaf" class="evm-th" style="--tc:var(--ppl)"><span class="evm-th-img"><img src="https://echtvital.cstatic.com/media/46/3d/16/1777176739/Schlafspray%20mit%20Melatonin.png?ts=1777176742&w=160" alt="Schlaf" loading="lazy" width="80" height="80"></span><span class="evm-th-text"><strong>Schlaf</strong><span>Tief schlafen, früh wach</span></span><span class="evm-th-arrow"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg></span></a> 2671 <a href="/mitdenker/themen/immunsystem" class="evm-th" style="--tc:var(--pl)"><span class="evm-th-img"><img src="https://echtvital.cstatic.com/media/9f/df/af/1777176088/Vitamic%20C%20Acerola%20Kapseln.png?ts=1777176093&w=160" alt="Immunsystem" loading="lazy" width="80" height="80"></span><span class="evm-th-text"><strong>Immunsystem</strong><span>Robust durch jede Jahreszeit</span></span><span class="evm-th-arrow"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg></span></a> 2672 <a href="/mitdenker/themen/verdauung" class="evm-th" style="--tc:var(--al)"><span class="evm-th-img"><img src="https://echtvital.cstatic.com/media/ba/eb/d9/1777176542/Bitterstoffe.png?ts=1777176545&w=160" alt="Verdauung" loading="lazy" width="80" height="80"></span><span class="evm-th-text"><strong>Verdauung</strong><span>Bitterstoffe, Schwarzkümmel & Co.</span></span><span class="evm-th-arrow"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg></span></a> 2673 <a href="/mitdenker/themen/fokus" class="evm-th" style="--tc:var(--bll)"><span class="evm-th-img"><img src="https://echtvital.cstatic.com/media/cf/41/d6/1777176336/Lwenmhne%20Steinplatte.png?ts=1777176340&w=160" alt="Fokus" loading="lazy" width="80" height="80"></span><span class="evm-th-text"><strong>Fokus</strong><span>Löwenmähne, Omega-3, B-Vitamine</span></span><span class="evm-th-arrow"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg></span></a> 2674 <a href="/mitdenker/themen/longevity" class="evm-th" style="--tc:var(--teall)"><span class="evm-th-img"><img src="https://echtvital.cstatic.com/media/17/8d/14/1777176383/Spermidin%20Steinplatte.png?ts=1777176388&w=160" alt="Longevity" loading="lazy" width="80" height="80"></span><span class="evm-th-text"><strong>Longevity</strong><span>Vital alt werden, nicht nur älter</span></span><span class="evm-th-arrow"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg></span></a> 2675 <a href="/mitdenker/themen/kontrovers" class="evm-th" style="--tc:var(--rosel)"><span class="evm-th-img"><img src="https://echtvital.cstatic.com/media/f4/61/b1/1777780891/Premium%20Methylenblau.png?ts=1777780894&w=160" alt="Drogerie" loading="lazy" width="80" height="80"></span><span class="evm-th-text"><strong>Drogerie</strong><span>Methylenblau, DMSO & Co.</span></span><span class="evm-th-arrow"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg></span></a> 2676 <a href="/mitdenker/themen/gelenke" class="evm-th" style="--tc:var(--bll)"><span class="evm-th-img"><img src="https://echtvital.cstatic.com/media/7f/cc/f2/1777176508/MSM%20Kapseln.png?ts=1777176512&w=160" alt="Gelenke" loading="lazy" width="80" height="80"></span><span class="evm-th-text"><strong>Gelenke</strong><span>MSM, Kollagen, Magnesium</span></span><span class="evm-th-arrow"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg></span></a> 2677 <a href="/mitdenker/themen/hormone" class="evm-th" style="--tc:var(--ppl)"><span class="evm-th-img"><img src="https://echtvital.cstatic.com/media/e3/c5/dd/1777176235/Jod.png?ts=1777176238&w=160" alt="Hormone" loading="lazy" width="80" height="80"></span><span class="evm-th-text"><strong>Hormone</strong><span>Jod, Zink, Mönchspfeffer</span></span><span class="evm-th-arrow"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg></span></a> 2678 <a href="/mitdenker/themen/frauengesundheit" class="evm-th" style="--tc:var(--rosel)"><span class="evm-th-img"><img src="https://echtvital.cstatic.com/media/g0/0c/06/1777176146/Mnchspfeffer.png?ts=1777176149&w=160" alt="Frauengesundheit" loading="lazy" width="80" height="80"></span><span class="evm-th-text"><strong>Frauengesundheit</strong><span>Mönchspfeffer, Eisen, Wild Yam</span></span><span class="evm-th-arrow"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg></span></a> 2679 </div> 2680 <div class="ev-mobile-links"> 2681 <a href="/mitdenker/themen" class="ev-mobile-link">Alle 21 Themen <svg viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"/></svg></a> 2682 </div> 2683 </div> 2684 2685 <div class="ev-mobile-panel" id="m-bibliothek"> 2686 <div class="ev-mobile-bib"> 2687 <a href="/mitdenker/bibliothek/ebooks" class="ev-mobile-bib-card"> 2688 <div class="ev-mobile-bib-icon" style="background:var(--al)"><svg viewBox="0 0 24 24" style="width:20px;height:20px;stroke:var(--a);fill:none;stroke-width:1.8"><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"/><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"/></svg></div> 2689 <div class="ev-mobile-bib-text"><h4>eBooks</h4><p>21 Ratgeber</p></div> 2690 </a> 2691 <a href="/blog" class="ev-mobile-bib-card"> 2692 <div class="ev-mobile-bib-icon" style="background:var(--ppl)"><svg viewBox="0 0 24 24" style="width:20px;height:20px;stroke:var(--pp);fill:none;stroke-width:1.8"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"/><polyline points="22,6 12,13 2,6"/></svg></div> 2693 <div class="ev-mobile-bib-text"><h4>Mitdenker-Brief</h4><p>Gedanken und Studien – per Mail</p></div> 2694 </a> 2695 </div> 2696 <div class="ev-mobile-links"> 2697 <a href="/mitdenker/bibliothek" class="ev-mobile-link">Zur Bibliothek <svg viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"/></svg></a> 2698 </div> 2699 </div> 2700 </div> 2701 2702 <button type="button" class="ev-mobile-scrollhint" id="evScrollHint" aria-label="Nach unten scrollen â es gibt mehr"> 2703 <svg viewBox="0 0 24 24"><polyline points="6 9 12 15 18 9"/></svg> 2704 </button> 2705 <div class="ev-mobile-bar"> 2706 <button id="btnMobileKonto"> 2707 <svg viewBox="0 0 24 24">
2707<path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg> 2708 Konto 2709 </button> 2710 <button id="btnMobileHilfe"> 2711 <svg viewBox="0 0 24 24"><circle cx="12" cy="12" r="10"/><circle cx="12" cy="12" r="4"/><line x1="14.83" y1="14.83" x2="17.66" y2="17.66"/><line x1="9.17" y1="9.17" x2="6.34" y2="6.34"/><line x1="14.83" y1="9.17" x2="17.66" y2="6.34"/><line x1="9.17" y1="14.83" x2="6.34" y2="17.66"/></svg> 2712 Hilfe 2713 </button> 2714 <a href="/mitdenker/bibliothek"> 2715 <svg viewBox="0 0 24 24"><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"/><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"/></svg> 2716 Bibliothek 2717 </a> 2718 </div> 2719 2720 <div class="ev-mobile-overlay" id="evMobileKontoOverlay"> 2721 <div class="ev-mobile-overlay-sheet" id="evMobileKontoSheet"> 2722 <div class="ev-mobile-overlay-handle"></div> 2723 <div class="ev-mobile-overlay-title"> 2724 Mein Konto 2725 <button class="ev-mobile-overlay-close" id="btnKontoClose"><svg viewBox="0 0 24 24"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg></button> 2726 </div> 2727 <div class="ev-mobile-nl" id="evMobileNlWrap"> 2728 <div class="ev-mobile-nl-label">Mitdenker-Wissens-Newsletter</div> 2729 <div class="ev-mobile-nl-sub">Kostenlos erhalten</div> 2730 <form class="ev-mobile-nl-form" id="evMobileNlForm"> 2731 <input type="email" placeholder="Deine E-Mail" required id="evMobileNlEmail" autocomplete="email"> 2732 <button type="submit" id="evMobileNlBtn">Anmelden</button> 2733 </form> 2734 <div class="ev-mobile-nl-hint">Wir schicken dir eine Bestätigung per E-Mail.</div> 2735 <div class="ev-mobile-nl-msg" id="evMobileNlMsg"></div> 2736 </div> 2737 <div class="ev-mobile-overlay-links" id="evKontoLinks"></div> 2738 </div> 2739 </div> 2740 2741 <div class="ev-mobile-overlay" id="evMobileHilfeOverlay"> 2742 <div class="ev-mobile-overlay-sheet"> 2743 <div class="ev-mobile-overlay-handle"></div> 2744 <div class="ev-mobile-overlay-title"> 2745 Hilfe 2746 <button class="ev-mobile-overlay-close" id="btnHilfeClose"><svg viewBox="0 0 24 24"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg></button> 2747 </div> 2748 <div class="ev-mobile-overlay-links"> 2749 <a href="/100-tage-garantie" class="ev-mobile-overlay-link">100 Tage Garantie <svg viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"/></svg></a> 2750 <a href="/zahlung-versand" class="ev-mobile-overlay-link">Zahlung & Versand <svg viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"/></svg></a> 2751 <a href="/mitdenker/themen/bestseller" class="ev-mobile-overlay-link">Bestseller <svg viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"/></svg></a> 2752 <a href="/mitdenker/manifest" class="ev-mobile-overlay-link">Manifest <svg viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"/></svg></a> 2753 </div> 2754 <div class="ev-mobile-hilfe-contact"> 2755 <p>Du hast Fragen?<br>Schreib uns gerne an</p> 2756 <a href="mailto:[email protected]" style="white-space:nowrap;display:inline-block">[email protected]</a> 2757 </div> 2758 </div> 2759 </div> 2760</div> 2761 2762</div> 2763
2764<script> 2765(function(){ 2766 var header = document.getElementById('evHeader'); 2767 var megaBackdrop = document.getElementById('megaBackdrop'); 2768 var activeMega = null; 2769 var activeNavItem = null; 2770 2771 window.addEventListener('scroll', function(){ 2772 header.classList.toggle('scrolled', window.scrollY > 5); 2773 }, {passive:true}); 2774 2775 var megaMap = { 2776 themen: document.getElementById('megaThemen'), 2777 bibliothek: document.getElementById('megaBibliothek') 2778 }; 2779 2780 function openMega(name, navLi){ 2781 if(activeMega === megaMap[name]) return; 2782 closeMega(); 2783 activeMega = megaMap[name]; 2784 activeNavItem = navLi; 2785 activeMega.classList.add('is-open'); 2786 megaBackdrop.classList.add('is-open'); 2787 navLi.classList.add('is-active'); 2788 2789 var items = activeMega.querySelectorAll('[data-stagger]'); 2790 var visibleItems = Array.from(items).filter(function(el){return el.style.display !== 'none'}); 2791 visibleItems.forEach(function(el, i){ 2792 el.style.animationDelay = (i * 30) + 'ms'; 2793 }); 2794 } 2795 2796 function closeMega(){ 2797 if(!activeMega) return; 2798 activeMega.classList.remove('is-open'); 2799 megaBackdrop.classList.remove('is-open'); 2800 if(activeNavItem) activeNavItem.classList.remove('is-active'); 2801 activeMega = null; 2802 activeNavItem = null; 2803 } 2804 2805 var megaCloseTimeout; 2806 2807 document.querySelectorAll('[data-mega]').forEach(function(btn){ 2808 btn.addEventListener('click', function(e){ 2809 e.stopPropagation(); 2810 var name = btn.getAttribute('data-mega'); 2811 var li = btn.closest('li'); 2812 if(activeMega === megaMap[name]){ 2813 closeMega(); 2814 } else { 2815 openMega(name, li); 2816 } 2817 }); 2818 2819 var li = btn.closest('li'); 2820 li.addEventListener('mouseenter', function(){ 2821 clearTimeout(megaCloseTimeout); 2822 var name = btn.getAttribute('data-mega'); 2823 openMega(name, li); 2824 }); 2825 li.addEventListener('mouseleave', function(){ 2826 megaCloseTimeout = setTimeout(function(){ 2827 if(activeMega && !activeMega.matches(':hover')){ 2828 closeMega(); 2829 } 2830 }, 300); 2831 }); 2832 }); 2833 2834 Object.values(megaMap).forEach(function(panel){ 2835 panel.addEventListener('mouseenter', function(){ 2836 clearTimeout(megaCloseTimeout); 2837 }); 2838 panel.addEventListener('mouseleave', function(){ 2839 megaCloseTimeout = setTimeout(function(){ 2840 var anyNavHovered = Array.from(document.querySelectorAll('[data-mega]')).some(function(b){ 2841 return b.closest('li').matches(':hover'); 2842 }); 2843 if(!anyNavHovered) closeMega(); 2844 }, 300); 2845 }); 2846 }); 2847 2848 megaBackdrop.addEventListener('click', closeMega); 2849 2850 document.querySelectorAll('.ev-mega-cat').forEach(function(btn){ 2851 btn.addEventListener('click', function(){ 2852 var cat = btn.getAttribute('data-cat'); 2853 document.querySelectorAll('.ev-mega-cat').forEach(function(b){b.classList.remove('is-active')}); 2854 btn.classList.add('is-active'); 2855 document.querySelectorAll('.ev-mega-product').forEach(function(p){ 2856 var group = p.getAttribute('data-group'); 2857 if(group === cat){ 2858 p.style.display = '';
2859 p.style.animation = 'none'; 2860 p.offsetHeight; 2861 p.style.animation = ''; 2862 } else { 2863 p.style.display = 'none'; 2864 } 2865 }); 2866 var visible = document.querySelectorAll('.ev-mega-product[data-group="'+cat+'"]'); 2867 visible.forEach(function(el, i){ 2868 el.style.animationDelay = (i * 40) + 'ms'; 2869 }); 2870 }); 2871 }); 2872 2873 var searchOverlay = document.getElementById('searchOverlay'); 2874 var searchInput = document.getElementById('searchInput'); 2875 var searchInspo = document.getElementById('searchInspo'); 2876 var searchTags = document.getElementById('searchTags'); 2877 var searchLive = document.getElementById('searchLive'); 2878 var searchLoader = document.getElementById('searchLoader'); 2879 var searchClear = document.getElementById('searchClear'); 2880 2881 var evThemen = [ 2882 {name:'Energie',sub:'Vitalität & Antrieb',url:'/mitdenker/themen/energie',keys:['energie','vital','muede','muedigkeit','antrieb','power','kraft'],color:'var(--or)',icon:'<polyline points="13 2 3 14 12 14 11 22 21 10 12 10"/>'}, 2883 {name:'Schlaf',sub:'Erholung & Regeneration',url:'/mitdenker/themen/schlaf',keys:['schlaf','schlafen','muede','erholung','regeneration','melatonin','einschlafen'],color:'var(--pp)',icon:'<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/>'}, 2884 {name:'Immunsystem',sub:'Abwehr & Schutz',url:'/mitdenker/themen/immunsystem',keys:['immun','abwehr','schutz','erkaeltung','grippe','immunsystem'],color:'var(--p)',icon:'<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>'}, 2885 {name:'Verdauung',sub:'Darm & Balance',url:'/mitdenker/themen/verdauung',keys:['verdauung','darm','magen','bauch','mikrobiom','probiotik','blaenung'],color:'var(--a)',icon:'<path d="M12 22c-4-3-8-6-8-10a4 4 0 0 1 8 0 4 4 0 0 1 8 0c0 4-4 7-8 10z"/>'}, 2886 {name:'Fokus',sub:'Klarheit & Konzentration',url:'/mitdenker/themen/fokus',keys:['fokus','konzentration','gehirn','brain','klarheit','geistig','kogniti'],color:'var(--bl)',icon:'<circle cx="12" cy="12" r="10"/><circle cx="12" cy="12" r="6"/><circle cx="12" cy="12" r="2"/>'}, 2887 {name:'Longevity',sub:'Langlebigkeit',url:'/mitdenker/themen/longevity',keys:['longevity','langlebigkeit','altern','anti-aging','jung','zellen','spermidin','nad+'],color:'var(--teal)',icon:'<path d="M18.18 8c5.1 0 5.1 8 0 8-5.1 0-7.13-8-12.74-8-4.58 0-4.58 8 0 8 5.6 0 7.64-8 12.74-8z"/>'}, 2888 {name:'Haut & Haare',sub:'Schönheit von innen',url:'/mitdenker/themen/haut-haare',keys:['haut','haare','haar','schoenheit','kollagen','falten','akne','nagel','biotin'],color:'var(--rose)',icon:'<polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/>'}, 2889 {name:'Gelenke',sub:'Beweglichkeit',url:'/mitdenker/themen/gelenke',keys:['gelenke','gelenk','knochen','knorpel','arthrose','beweglichkeit','msm','glucosamin'],color:'var(--bl)',icon:'<circle cx="17" cy="4" r="2"/><path d="M13 7l-4 4 2 2-3 5"/><path d="M17 7l-2 4h-4"/><path d="M7 18l3-5"/>'}, 2890 {name:'Hormone',sub:'Gleichgewicht',url:'/mitdenker/themen/hormone',keys:['hormone','hormon','schilddruese','testosteron','oestrogen','cortisol','gleichgewicht'],color:'var(--pp)',icon:'<path d="M10 2v6l-2 4v4a4 4 0 0 0 8 0v-4l-2-4V2"/><line x1="10" y1="2" x2="14" y2="2"/><line x1="9" y1="12" x2="15" y2="12"/>'}, 2891 {name:'Frauengesundheit',sub:'Weibliche Vitalität',url:'/mitdenker/themen/frauengesundheit',keys:['frau','frauen','weiblich','zyklus','wechseljahre','menopause','pms','schwanger'],color:'var(--rose)',icon:'<circle cx="12" cy="8" r="5"/><path d="M12 13v8"/><path d="M9 18h6"/>'}, 2892 {name:'Gewicht',sub:'Stoffwechsel',url:'/mitdenker/themen/gewicht',keys:['gewicht','abnehmen','stoffwechsel','diaet','kalorien','fettverbrennung','metabol'],color:'var(--or)',icon:'<path d="M16 3l5 5-5 5"/><path d="M21 8H9"/><path d="M8 21l-5-5 5-5"/><path d="M3 16h12"/>'}, 2893 {name:'Innere Werte',sub:'Was innen zählt',url:'/mitdenker/themen/blutwerte',keys:['innere werte','werte','blut','blutwerte','labor','diagnostik','mangel','ferritin'],color:'var(--rd)',icon:'<path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"/>'}, 2894 {name:'Vitamine',sub:'D3, K2, C und B-Komplex',url:'/mitdenker/themen/vitamine',keys:['vitamin','vitamine','vit'],color:'var(--or)',icon:'<circle cx="12" cy="12" r="5"/><path d="M12 1v3"/><path d="M12 20v3"/><path d="M4.22 4.22l2.12 2.12"/><path d="M17.66 17.66l2.12 2.12"/><path d="M1 12h3"/><path d="M20 12h3"/><path d="M4.22 19.78l2.12-2.12"/><path d="M17.66 6.34l2.12-2.12"/>'}, 2895 {name:'Mineralien',sub:'Essenzielle Mineralstoffe',url:'/mitdenker/themen/mineralien',keys:['mineral','mineralien','mineralstoffe','magnesium','zink','selen','calcium','kalium'],color:'var(--teal)',icon:'<path d="M18 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3H6a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3V6a3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3h12a3 3 0 0 0 3-3 3 3 0 0 0-3-3z"/>'}, 2896 {name:'Aminosaeuren',sub:'Proteinbausteine',url:'/mitdenker/themen/aminosaeuren',keys:['amino','aminosaeuren','protein','taurin','kreatin','l-carnitin','bcaa'],color:'var(--bl)',icon:'<path d="M12 2L2 7l10 5 10-5-10-5z"/><path d="M2 17l10 5 10-5"/><path d="M2 12l10 5 10-5"/>'}, 2897 {name:'Augen',sub:'Sehkraft & Schutz',url:'/mitdenker/themen/augen',keys:['augen','auge','sehkraft','sehen','lutein','blaulicht'],color:'var(--bl)',icon:'<path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/>'}, 2898 {name:'Familie',sub:'Fuer Gross & Klein',url:'/mitdenker/themen/familie',keys:['familie','kinder','kind','baby','schwanger','eltern'],color:'var(--rose)',icon:'<path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/>'}, 2899 {name:'Kolloide',sub:'Kolloidale Elemente',url:'/mitdenker/themen/kolloide',keys:['kolloid','kolloidal','silber','gold','lithium'],color:'var(--a)',icon:'<circle cx="12" cy="12" r="10"/><circle cx="12" cy="12" r="4"/><path d="M4.93 4.93l4.24 4.24"/><path d="M14.83 14.83l4.24 4.24"/>'}, 2900 {name:'Drogerie',sub:'Methylenblau, DMSO & Co.',url:'/mitdenker/themen/kontrovers',keys:['drogerie','kontrovers','dmso','mms','chlordioxid','alternativ','umstritten','methylenblau'],color:'var(--rd)',icon:'<path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><path d="M12 9v4"/><path d="M12 17h.01"/>'}, 2901 {name:'Bestseller',sub:'Am beliebtesten',url:'/mitdenker/themen/bestseller',keys:['bestseller','beliebt','meistverkauft'],color:'var(--a)',icon:'<polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/>'}, 2902 {name:'Vegan',sub:'Pflanzliche Ergaenzung',url:'/mitdenker/themen/vegan',keys:['vegan','pflanzlich','vegetarisch','plant-based'],color:'var(--p)',icon:'<path d="M2 22c1.25-1.25 2.5-2.5 4.5-3.5C2 12 4 4 14 4c0 10-8 12-14.5 16.5"/>
2902<path d="M14 4c2 2 4 6 4 12"/>'} 2903 ]; 2904 2905 function matchThemen(q){ 2906 var lq = q.toLowerCase().trim(); 2907 if(lq.length < 2) return []; 2908 return evThemen.filter(function(t){ 2909 if(t.name.toLowerCase().indexOf(lq) !== -1) return true; 2910 if(lq.length < 3) return false; 2911 return t.keys.some(function(k){ 2912 return k.length >= 3 && (k.indexOf(lq) !== -1 || lq.indexOf(k) !== -1); 2913 }); 2914 }).slice(0, 4); 2915 } 2916 2917 function renderSpotlight(themes){ 2918 if(!themes.length) return ''; 2919 var html = '<div class="ev-search-section"><div class="ev-search-section-label">Themen</div><div class="ev-search-themes">'; 2920 themes.forEach(function(t){ 2921 html += '<a href="'+t.url+'" class="ev-search-theme-card">' 2922 + '<div class="ev-search-theme-icon" style="background:'+t.color+'"><svg viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">' + t.icon + '</svg></div>' 2923 + '<span class="ev-search-theme-name">'+t.name+'</span>' 2924 + '<span class="ev-search-theme-sub">'+t.sub+'</span></a>'; 2925 }); 2926 html += '</div></div>'; 2927 return html; 2928 } 2929 2930 function openSearch(){ 2931 searchOverlay.classList.add('is-open'); 2932 closeMega(); 2933 closeMobile(); 2934 if(searchInspo) searchInspo.classList.remove('is-hidden'); 2935 if(searchTags) searchTags.classList.remove('is-hidden'); 2936 searchLive.innerHTML = ''; 2937 searchLive.classList.add('is-hidden'); 2938 searchClear.classList.remove('is-visible'); 2939 setTimeout(function(){ searchInput.focus(); }, 150); 2940 } 2941 function closeSearch(){ 2942 searchOverlay.classList.remove('is-open'); 2943 searchInput.value = ''; 2944 searchLive.innerHTML = ''; 2945 searchLive.classList.add('is-hidden'); 2946 if(searchInspo) searchInspo.classList.remove('is-hidden'); 2947 if(searchTags) searchTags.classList.remove('is-hidden'); 2948 searchClear.classList.remove('is-visible'); 2949 searchLoader.classList.remove('is-visible'); 2950 } 2951 2952 document.getElementById('btnSearchClose').addEventListener('click', closeSearch); 2953 document.getElementById('btnSearch').addEventListener('click', openSearch); 2954 searchOverlay.addEventListener('click', function(e){ 2955 var panel = searchOverlay.querySelector('.ev-search-panel'); 2956 if(!panel.contains(e.target)) closeSearch(); 2957 }); 2958 2959 document.addEventListener('keydown', function(e){ 2960 if((e.metaKey || e.ctrlKey) && e.key === 'k'){ 2961 e.preventDefault(); 2962 openSearch(); 2963 } 2964 if(e.key === 'Escape'){ 2965 closeSearch(); 2966 closeMega(); 2967 closeMobile(); 2968 closeAccountDropdown(); 2969 } 2970 }); 2971 2972 searchClear.addEventListener('click', function(){ 2973 searchInput.value = ''; 2974 searchInput.focus(); 2975 searchClear.classList.remove('is-visible'); 2976 searchLive.innerHTML = ''; 2977 searchLive.classList.add('is-hidden'); 2978 if(searchInspo) searchInspo.classList.remove('is-hidden'); 2979 if(searchTags) searchTags.classList.remove('is-hidden'); 2980 }); 2981 2982 document.querySelectorAll('.ev-search-tag').forEach(function(btn){ 2983 if(btn.tagName === 'A') return; 2984 btn.addEventListener('click', function(){ 2985 searchInput.value = btn.textContent; 2986 searchInput.focus(); 2987 searchClear.classList.add('is-visible'); 2988 searchInput.dispatchEvent(new Event('input', {bubbles:true})); 2989 }); 2990 }); 2991 2992 var mobileMenu = document.getElementById('mobileMenu'); 2993 2994 function openMobile(){ 2995 document.body.classList.add('ev-mobile-open'); 2996 mobileMenu.classList.add('is-open'); 2997 document.body.style.overflow = 'hidden'; 2998 closeMega(); 2999 if(typeof evUpdateScrollHint==='function') setTimeout(evUpdateScrollHint,60); 3000 } 3001 function closeMobile(){ 3002 mobileMenu.classList.remove('is-open'); 3003 document.body.classList.remove('ev-mobile-open'); 3004 document.body.style.overflow = ''; 3005 } 3006 3007 function killOffcanvasMenu(){ 3008 if(!window.PluginManager) return false; 3009 try{window.PluginManager.deregister('OffcanvasMenu')}catch(e){} 3010 try{window.PluginManager.deregister('OffCanvasMenu')}catch(e){} 3011 var orig = window.PluginManager.register; 3012 if(orig && !orig._evPatched){ 3013 window.PluginManager.register = function(name){ 3014 if(name && name.toLowerCase().indexOf('offcanvasmenu') !== -1) return; 3015 return orig.apply(this, arguments); 3016 }; 3017 window.PluginManager.register._evPatched = true; 3018 } 3019 return true; 3020 } 3021 if(!killOffcanvasMenu()){ 3022 var _killInterval = setInterval(function(){ 3023 if(killOffcanvasMenu()) clearInterval(_killInterval); 3024 }, 50); 3025 setTimeout(function(){ clearInterval(_killInterval) }, 10000); 3026 } 3027 document.addEventListener('DOMContentLoaded', killOffcanvasMenu); 3028 3029 document.getElementById('btnBurger').addEventListener('click', function(e){ 3030 e.stopPropagation();e.stopImmediatePropagation();e.preventDefault(); 3031 document.querySelectorAll('.offcanvas.show,.navigation-offcanvas').forEach(function(el){ 3032 el.classList.remove('show');el.style.display='none'; 3033 }); 3034 document.querySelectorAll('.offcanvas-backdrop').forEach(function(el){el.remove()}); 3035 /* B10 (28.08.): auch einen GESCHLOSSENEN Cart entfernen - er liegt nur per transform ausserhalb, 3036 und body.ev-mobile-open setzt transform:none auf alles (sonst lag er ueber dem Menue). */ 3037 document.querySelectorAll('.offcanvas.cart-offcanvas:not(.show)').forEach(function(el){el.remove()}); 3038 document.body.classList.remove('offcanvas-open'); 3039 document.body.style.overflow = ''; 3040 openMobile(); 3041 }, true); 3042 document.getElementById('btnMobileClose').addEventListener('click', closeMobile); 3043 3044 // Scroll-Hinweis: zeigt einen Pfeil nach unten wenn im offenen Menue noch Inhalt unterhalb liegt 3045 var evMobBody = document.querySelector('.ev-mobile-body'); 3046 var evScrollHint = document.getElementById('evScrollHint'); 3047 function evUpdateScrollHint(){ 3048 if(!evMobBody || !evScrollHint) return; 3049 var canScroll = (evMobBody.scrollHeight - evMobBody.clientHeight) > 28; 3050 var atBottom = (evMobBody.scrollTop + evMobBody.clientHeight) >= (evMobBody.scrollHeight - 44); 3051 var menuOpen = mobileMenu.classList.contains('is-open'); 3052 evScrollHint.classList.toggle('is-visible', !!(canScroll && !atBottom && menuOpen)); 3053 } 3054 if(evMobBody) evMobBody.addEventListener('scroll', evUpdateScrollHint, {passive:true}); 3055 if(evScrollHint) evScrollHint.addEventListener('click', function(){ if(evMobBody) evMobBody.scrollBy({top:Math.round(evMobBody.clientHeight*0.72), behavior:'smooth'}); }); 3056 window.addEventListener('resize', function(){ setTimeout(evUpdateScrollHint,60); }, {passive:true}); 3057 3058 document.querySelectorAll('.ev-mobile-tab').forEach(function(tab){ 3059 tab.addEventListener('click', function(){ 3060 var panel = tab.getAttribute('data-panel'); 3061 document.querySelectorAll('.ev-mobile-tab').forEach(function(t){t.classList.remove('is-active')}); 3062 tab.classList.add('is-active'); 3063 document.querySelectorAll('.ev-mobile-panel').forEach(function(p){p.classList.remove('is-active')}); 3064 document.getElementById(panel).classList.add('is-active'); 3065 if(typeof evUpdateScrollHint==='function') setTimeout(evUpdateScrollHint,30); 3066 }); 3067 }); 3068 3069 var startX = 0, startY = 0, swipeTarget = null, swipeLocked = false;
3070 function isHScrollArea(el){ 3071 return el && (el.closest('.ev-mobile-hscroll') || el.closest('.ev-mobile-tabs') || el.closest('.ev-mobile-search-inspo') || el.closest('.ev-mobile-themes')); 3072 } 3073 mobileMenu.addEventListener('touchstart', function(e){ 3074 startX = e.touches[0].clientX; 3075 startY = e.touches[0].clientY; 3076 swipeTarget = e.target; 3077 swipeLocked = false; 3078 }, {passive:true}); 3079 mobileMenu.addEventListener('touchmove', function(e){ 3080 if(swipeLocked) return; 3081 var dx = Math.abs(e.touches[0].clientX - startX); 3082 var dy = Math.abs(e.touches[0].clientY - startY); 3083 if(dx > 10 && dx > dy && isHScrollArea(swipeTarget)){ 3084 swipeLocked = true; 3085 } 3086 }, {passive:true}); 3087 mobileMenu.addEventListener('touchend', function(e){ 3088 if(swipeLocked) return; 3089 if(isHScrollArea(swipeTarget)) return; 3090 var diff = e.changedTouches[0].clientX - startX; 3091 if(diff > 100) closeMobile(); 3092 }, {passive:true}); 3093 3094 document.querySelectorAll('.ev-mobile a[href]').forEach(function(a){ 3095 a.addEventListener('click', function(){ 3096 setTimeout(closeMobile, 100); 3097 }); 3098 }); 3099 3100 var mobileSearchDrawer = document.getElementById('mobileSearchDrawer'); 3101 var mobileSearchInput = document.getElementById('mobileSearchInput'); 3102 var mobileSuggestions = document.getElementById('mobileSuggestions'); 3103 var mobileSearchIcon = document.getElementById('mobileSearchIcon'); 3104 var mobileSearchInspo = document.getElementById('mobileSearchInspo'); 3105 var mobileDebounce; 3106 3107 3108 if(mobileSearchInput) mobileSearchInput.addEventListener('input', function(){ 3109 var query=this.value.trim(); 3110 clearTimeout(mobileDebounce); 3111 if(query.length<2){ 3112 mobileSuggestions.innerHTML=''; 3113 mobileSearchIcon.classList.remove('is-loading'); 3114 if(mobileSearchInspo) mobileSearchInspo.classList.remove('is-hidden'); 3115 return; 3116 } 3117 if(mobileSearchInspo) mobileSearchInspo.classList.add('is-hidden'); 3118 mobileSearchIcon.classList.add('is-loading'); 3119 mobileDebounce=setTimeout(function(){ 3120 fetch('/suggest?search='+encodeURIComponent(query),{ 3121 headers:{'X-Requested-With':'XMLHttpRequest','Accept':'text/html'} 3122 }) 3123 .then(function(r){return r.text()}) 3124 .then(function(html){ 3125 mobileSearchIcon.classList.remove('is-loading'); 3126 if(html&&html.trim()&&html.includes('search-suggest')){ 3127 var footer=document.body.querySelector(':scope > .acris-search-suggest-total'); 3128 if(footer) footer.remove(); 3129 mobileSuggestions.innerHTML=html; 3130 } else { 3131 mobileSuggestions.innerHTML='<div style="text-align:center;padding:24px;color:var(--t3)">Keine Treffer gefunden</div>'; 3132 } 3133 }) 3134 .catch(function(){ 3135 mobileSearchIcon.classList.remove('is-loading'); 3136 mobileSuggestions.innerHTML=''; 3137 }); 3138 },300); 3139 }); 3140 3141 document.addEventListener('keydown', function(e){ 3142 if(e.key==='/'&&!['INPUT','TEXTAREA'].includes(document.activeElement.tagName)){ 3143 e.preventDefault(); 3144 if(window.innerWidth>=1024){ 3145 openSearch(); 3146 } else if(mobileMenu.classList.contains('is-open')){ 3147 mobileSearchDrawer.classList.add('is-open'); 3148 setTimeout(function(){mobileSearchInput.focus()},100); 3149 } 3150 } 3151 }); 3152 3153 (function(){ 3154 var CACHE_KEY = 'ev-aktion-status-v2'; 3155 var CACHE_TTL = 5 * 60 * 1000; 3156 var headerEl = document.getElementById('ev-immersive-header'); 3157 var body = document.body; 3158 3159 function apply(drog, neu){ 3160 var any = drog || neu; 3161 [headerEl, body].forEach(function(el){ 3162 if(!el) return; 3163 el.classList.toggle('ev-aktion-active', drog); 3164 el.classList.toggle('ev-neukunden-active', neu); 3165 el.classList.toggle('ev-any-aktion-active', any); 3166 }); 3167 if(any){ 3168 var aktTab = document.querySelector('.ev-mobile-tab.ev-tab-aktionen'); 3169 var aktPanel = document.getElementById('m-aktionen'); 3170 var prodTab = document.querySelector('.ev-mobile-tab[data-panel="m-bestseller"]'); 3171 var prodPanel = document.getElementById('m-bestseller'); 3172 if(aktTab && aktPanel && prodTab && prodTab.classList.contains('is-active') && 3173 prodPanel && prodPanel.classList.contains('is-active')){ 3174 prodTab.classList.remove('is-active'); prodPanel.classList.remove('is-active'); 3175 aktTab.classList.add('is-active'); aktPanel.classList.add('is-active'); 3176 } 3177 } 3178 } 3179 3180 try{ 3181 var cached = JSON.parse(sessionStorage.getItem(CACHE_KEY) || 'null'); 3182 if(cached && (Date.now() - cached.t) < CACHE_TTL){ 3183 apply(!!cached.drog, !!cached.neu); 3184 } 3185 }catch(e){} 3186 3187 function head(url){ 3188 return fetch(url, {method:'HEAD', credentials:'same-origin', cache:'no-store'}) 3189 .then(function(r){ return r.ok; }).catch(function(){ return false; }); 3190 } 3191 3192 Promise.all([head('/aktionen'), Promise.resolve(false)]).then(function(res){ 3193 var drog = res[0], neu = res[1]; 3194 apply(drog, neu);
3195 try{ sessionStorage.setItem(CACHE_KEY, JSON.stringify({drog:drog, neu:neu, t:Date.now()})); }catch(e){} 3196 }); 3197 })(); 3198 3199 // Topbar-Zeitrotation (2026-07-31): eingeloggt nur Monatsaktion; ausgeloggt 7s-Crossfade Neukunden/Monatsaktion. 3200 // Erstbesuch startet mit Neukunden. Hover/Fokus pausiert. prefers-reduced-motion: statisch, Wechsel pro Pageview. 3201 (function(){ 3202 var rot=document.getElementById('evTopbarRot'); 3203 if(!rot)return; 3204 var INTERVAL=7000,timer=null,paused=false,maShown=false,started=false; 3205 function decide(){ 3206 if(started)return; 3207 var drog=document.body.classList.contains('ev-aktion-active'); 3208 var neu=document.body.classList.contains('ev-neukunden-active'); 3209 var liRaw=null;try{liRaw=sessionStorage.getItem('evLoggedIn');}catch(e){} 3210 if(!drog&&!neu)return; 3211 if(!drog){started=true;return;} 3212 if(liRaw===null&&neu)return; 3213 started=true; 3214 var li=liRaw==='1'; 3215 if(li||!neu){rot.classList.add('rot-ma-only');return;} 3216 var reduced=window.matchMedia&&matchMedia('(prefers-reduced-motion: reduce)').matches; 3217 var first=false; 3218 try{first=!localStorage.getItem('evTopbarSeen');localStorage.setItem('evTopbarSeen','1');}catch(e){} 3219 if(reduced){ 3220 var flip=false; 3221 try{flip=sessionStorage.getItem('evTopbarFlip')==='1';sessionStorage.setItem('evTopbarFlip',flip?'0':'1');}catch(e){} 3222 if(!first&&flip)rot.classList.add('rot-ma'); 3223 return; 3224 } 3225 timer=setInterval(function(){ 3226 if(paused)return; 3227 maShown=!maShown; 3228 rot.classList.toggle('rot-ma',maShown); 3229 },INTERVAL); 3230 rot.addEventListener('mouseenter',function(){paused=true;}); 3231 rot.addEventListener('mouseleave',function(){paused=false;}); 3232 rot.addEventListener('focusin',function(){paused=true;}); 3233 rot.addEventListener('focusout',function(){paused=false;}); 3234 } 3235 decide(); 3236 var tries=0; 3237 var poll=setInterval(function(){decide();if(started||++tries>25)clearInterval(poll);},400); 3238 })(); 3239 3240 var evKontoOverlay = document.getElementById('evMobileKontoOverlay'); 3241 var evKontoLinks = document.getElementById('evKontoLinks'); 3242 function evBuildKontoLinks(){ 3243 var loggedIn = false; 3244 var evCached=null;try{evCached=sessionStorage.getItem('evLoggedIn');}catch(e){} 3245 if(typeof window.evCustomerLoggedIn==='boolean'){loggedIn=window.evCustomerLoggedIn;} 3246 else if(evCached!==null){loggedIn=(evCached==='1');} 3247 else{ 3248 if(document.body.classList.contains('is-customer-logged-in')) loggedIn=true; 3249 try{var c=JSON.parse(localStorage.getItem('sw-context')||'{}');if(c.customer&&c.customer.id)loggedIn=true}catch(e){} 3250 if(document.cookie.indexOf('sw-states')!==-1&&document.cookie.indexOf('logged-in')!==-1)loggedIn=true; 3251 var p=window.location.pathname; 3252 if(p.indexOf('/account')===0&&p.indexOf('/login')===-1&&p.indexOf('/register')===-1)loggedIn=true; 3253 } 3254 var arrowSvg='<svg viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"/></svg>'; 3255 if(loggedIn){ 3256 evKontoLinks.innerHTML= 3257 '<a href="/account" class="ev-mobile-overlay-link">Mein Konto '+arrowSvg+'</a>'+ 3258 '<a href="/account/order" class="ev-mobile-overlay-link">Meine Bestellungen '+arrowSvg+'</a>'+ 3259 '<a href="/account/logout" class="ev-mobile-overlay-link" style="color:var(--rd)">Abmelden '+arrowSvg+'</a>'; 3260 var fnM=window.evCustomerFirstName; 3261 if(typeof fnM==='string'&&fnM){ 3262 var gM=document.createElement('div'); 3263 gM.className='ev-mobile-overlay-greet'; 3264 gM.textContent='Hallo '+fnM; 3265 evKontoLinks.insertBefore(gM,evKontoLinks.firstChild); 3266 } 3267 } else { 3268 evKontoLinks.innerHTML= 3269 '<a href="/account/login" class="ev-mobile-overlay-link">Anmelden '+arrowSvg+'</a>'+ 3270 '<a href="/account/register" class="ev-mobile-overlay-link">
3270Registrieren '+arrowSvg+'</a>'; 3271 } 3272 } 3273 document.getElementById('btnMobileKonto').addEventListener('click',function(){ 3274 evBuildKontoLinks(); 3275 evKontoOverlay.style.display='flex';evKontoOverlay.classList.add('is-open'); 3276 }); 3277 var evNlForm=document.getElementById('evMobileNlForm'); 3278 var evNlMsg=document.getElementById('evMobileNlMsg'); 3279 if(evNlForm){evNlForm.addEventListener('submit',function(e){ 3280 e.preventDefault(); 3281 var email=document.getElementById('evMobileNlEmail').value.trim(); 3282 if(!email)return; 3283 evNlMsg.textContent='Wird gesendet\u2026';evNlMsg.className='ev-mobile-nl-msg'; 3284 fetch('https://e3ff7c56.sibforms.com/serve/MUIFAKiYjSKcx4ZLNOKSrJOtrRlkWlYOiga5aWqfDN70qaIpGhSUmTJWIFDrG9CBI5R9-Hsb66bxzeEUJhjyEfYZYPL7LYLeEQ7yP26DLq64f82ZLW00zDxcEd69geKpEIjK23zFAFzxYZk4hSNc30BnG8xIqTKQkeErRJag0k5ZwgpNyVFz_DXwhVR3xN9neVfUo2WBo6KwigqM',{ 3285 method:'POST',headers:{'Content-Type':'application/x-www-form-urlencoded'}, 3286 body:'EMAIL='+encodeURIComponent(email),mode:'no-cors' 3287 }).then(function(){ 3288 evNlMsg.textContent='Danke! Bitte best\u00e4tige deine E-Mail.';evNlMsg.className='ev-mobile-nl-msg ok'; 3289 document.getElementById('evMobileNlEmail').value=''; 3290 }).catch(function(){ 3291 evNlMsg.textContent='Fehler \u2013 bitte sp\u00e4ter nochmal versuchen.';evNlMsg.className='ev-mobile-nl-msg err'; 3292 }); 3293 })} 3294 document.getElementById('btnKontoClose').addEventListener('click',function(){ 3295 evKontoOverlay.style.display='';evKontoOverlay.classList.remove('is-open'); 3296 }); 3297 evKontoOverlay.addEventListener('click',function(e){ 3298 if(e.target===evKontoOverlay){evKontoOverlay.style.display='';evKontoOverlay.classList.remove('is-open');} 3299 }); 3300 3301 var evHilfeOverlay = document.getElementById('evMobileHilfeOverlay'); 3302 document.getElementById('btnMobileHilfe').addEventListener('click',function(){ 3303 evHilfeOverlay.style.display='flex';evHilfeOverlay.classList.add('is-open'); 3304 }); 3305 document.getElementById('btnHilfeClose').addEventListener('click',function(){ 3306 evHilfeOverlay.style.display='';evHilfeOverlay.classList.remove('is-open'); 3307 }); 3308 evHilfeOverlay.addEventListener('click',function(e){ 3309 if(e.target===evHilfeOverlay){evHilfeOverlay.style.display='';evHilfeOverlay.classList.remove('is-open');} 3310 }); 3311 3312 var desktopDebounce; 3313 3314 var searchForm = document.getElementById('searchForm'); 3315 if(searchForm){ 3316 searchForm.addEventListener('submit', function(e){ 3317 e.preventDefault(); 3318 var q = searchInput.value.trim(); 3319 if(q.length > 0){ 3320 closeSearch(); 3321 window.location.href = '/search?search=' + encodeURIComponent(q); 3322 } 3323 }); 3324 } 3325 3326 searchInput.addEventListener('input', function(){ 3327 var query = searchInput.value.trim(); 3328 clearTimeout(desktopDebounce); 3329 3330 if(query.length > 0){ 3331 searchClear.classList.add('is-visible'); 3332 if(searchInspo) searchInspo.classList.add('is-hidden'); 3333 if(searchTags) searchTags.classList.add('is-hidden'); 3334 } else { 3335 searchClear.classList.remove('is-visible'); 3336 searchLive.innerHTML = ''; 3337 searchLive.classList.add('is-hidden'); 3338 if(searchInspo) searchInspo.classList.remove('is-hidden'); 3339 if(searchTags) searchTags.classList.remove('is-hidden'); 3340 searchLoader.classList.remove('is-visible'); 3341 return; 3342 } 3343 3344 var themes = matchThemen(query); 3345 var spotlightHtml = renderSpotlight(themes); 3346 3347 if(query.length >= 2){ 3348 searchLoader.classList.add('is-visible'); 3349 searchLive.innerHTML = spotlightHtml + '<div class="ev-search-section" id="searchProductSection"><div class="ev-search-section-label">Produkte</div><div class="ev-search-products" id="searchProductResults"></div></div>'; 3350 searchLive.classList.remove('is-hidden'); 3351 3352 desktopDebounce = setTimeout(function(){ 3353 fetch('/store-api/search', { 3354 method: 'POST', 3355 headers: { 3356 'sw-access-key': 'SWSCA1RHA1LQCKPSCHZFQTE5CW', 3357 'Content-Type': 'application/json', 3358 'Accept': 'application/json' 3359 }, 3360 body: JSON.stringify({ 3361 search: query, 3362 limit: 8, 3363 query: [ 3364 { score: 5000, query: { type: 'contains', field: 'name', value: query } }, 3365 { score: 2000, query: { type: 'prefix', field: 'name', value: query } } 3366 ], 3367 includes: { 3368 product: ['id','name','calculatedPrice','cover','seoUrls','translated'], 3369 product_media: ['media'], 3370 media: ['url','thumbnails'] 3371 }, 3372 associations: { 3373 cover: { associations: { media: {} } }, 3374 seoUrls: {} 3375 } 3376 }) 3377 }) 3378 .then(function(r){ return r.json(); }) 3379 .then(function(data){ 3380 searchLoader.classList.remove('is-visible'); 3381 var prodContainer = document.getElementById('searchProductResults'); 3382 var prodSection = document.getElementById('searchProductSection'); 3383 if(!prodContainer) return; 3384 3385 var products = (data && data.elements) || []; 3386 if(products.length === 0){ 3387 if(themes.length){ 3388 if(prodSection) prodSection.remove(); 3389 } else { 3390 prodContainer.innerHTML = '<div class="ev-search-empty" style="grid-column:1/-1">Keine Treffer fuer „' + query.replace(/</g,'<') + '“</div>'; 3391 } 3392 return; 3393 } 3394 3395 var cardsHtml = '';
3396 products.forEach(function(p){ 3397 var imgUrl = ''; 3398 if(p.cover && p.cover.media){ 3399 var thumbs = p.cover.media.thumbnails || []; 3400 var t400 = thumbs.find(function(t){ return t.width >= 400; }); 3401 var rawUrl = t400 ? t400.url : p.cover.media.url; 3402 imgUrl = rawUrl + (rawUrl.indexOf('?') > -1 ? '&w=200' : '?w=200'); 3403 } 3404 var price = p.calculatedPrice; 3405 var priceStr = ''; 3406 var fromStr = ''; 3407 var oldStr = ''; 3408 var redCls = ''; 3409 if(price){ 3410 var unit = price.unitPrice || price.totalPrice || 0; 3411 priceStr = unit.toLocaleString('de-DE', {style:'currency',currency:'EUR'}); 3412 if(price.hasRange) fromStr = 'ab '; 3413 var lp = (price.listPrice && price.listPrice.price) || 0; 3414 if(lp > unit){ 3415 oldStr = '<span class="ev-search-prod-old">' + lp.toLocaleString('de-DE', {style:'currency',currency:'EUR'}) + '</span>'; 3416 redCls = ' is-red'; 3417 } 3418 } 3419 var url = '/detail/' + p.id; 3420 if(p.seoUrls && p.seoUrls.length){ 3421 var seo = p.seoUrls.find(function(s){ return s.isCanonical; }) || p.seoUrls[0]; 3422 if(seo && seo.seoPathInfo) url = '/' + seo.seoPathInfo; 3423 } 3424 var name = (p.translated && p.translated.name) || p.name || ''; 3425 3426 cardsHtml += '<a href="' + url + '" class="ev-search-prod">' 3427 + '<div class="ev-search-prod-img">' 3428 + (imgUrl ? '<img src="'+imgUrl+'" alt="'+name.replace(/"/g,'"')+'" loading="lazy">' : '') 3429 + '</div>' 3430 + '<div class="ev-search-prod-info">' 3431 + '<div class="ev-search-prod-name">'+name+'</div>' 3432 + '<div class="ev-search-prod-price'+redCls+'">'+fromStr+priceStr+oldStr+'</div>' 3433 + '</div></a>'; 3434 }); 3435 3436 var total = data.total || 0; 3437 if(total > 8){ 3438 cardsHtml += '<div class="ev-search-all"><a href="/search?search='+encodeURIComponent(query)+'">Alle '+total+' Ergebnisse anzeigen <svg viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"/></svg></a></div>'; 3439 } 3440 3441 prodContainer.innerHTML = cardsHtml; 3442 }) 3443 .catch(function(){ 3444 searchLoader.classList.remove('is-visible'); 3445 }); 3446 }, 200); 3447 } else { 3448 if(spotlightHtml){ 3449 searchLive.innerHTML = spotlightHtml; 3450 searchLive.classList.remove('is-hidden'); 3451 } else { 3452 searchLive.innerHTML = ''; 3453 searchLive.classList.add('is-hidden'); 3454 if(searchInspo) searchInspo.classList.remove('is-hidden'); 3455 if(searchTags) searchTags.classList.remove('is-hidden'); 3456 } 3457 } 3458 }); 3459 3460 var accountWrap = document.getElementById('accountWrap'); 3461 var accountDropdown = document.getElementById('accountDropdown'); 3462 var btnAccount = document.getElementById('btnAccount'); 3463 var accountCloseTimeout; 3464 3465 function openAccountDropdown(){ 3466 closeAccountDropdown(); 3467 accountDropdown.style.opacity='1'; 3468 accountDropdown.style.visibility='visible'; 3469 accountDropdown.style.transform='translateY(0)'; 3470 accountDropdown.classList.add('is-open'); 3471 btnAccount.setAttribute('aria-expanded','true'); 3472 closeMega(); 3473 } 3474 function closeAccountDropdown(){ 3475 accountDropdown.style.opacity=''; 3476 accountDropdown.style.visibility=''; 3477 accountDropdown.style.transform=''; 3478 accountDropdown.classList.remove('is-open'); 3479 btnAccount.setAttribute('aria-expanded','false'); 3480 } 3481 3482 btnAccount.addEventListener('click', function(e){ 3483 e.stopPropagation(); 3484 if(accountDropdown.classList.contains('is-open')){ 3485 closeAccountDropdown(); 3486 } else { 3487 openAccountDropdown(); 3488 } 3489 }); 3490 accountWrap.addEventListener('mouseenter', function(){ 3491 clearTimeout(accountCloseTimeout); 3492 if(window.innerWidth >= 1024) openAccountDropdown(); 3493 }); 3494 accountWrap.addEventListener('mouseleave', function(){ 3495 accountCloseTimeout = setTimeout(closeAccountDropdown, 250); 3496 }); 3497 document.addEventListener('click', function(e){ 3498 if(!accountWrap.contains(e.target)) closeAccountDropdown(); 3499 }); 3500 3501 // Aktionen-Dropdown (Desktop, isoliert vom Mega-System) 3502 var aktNav = document.getElementById('navAktionen'); 3503 var aktPill = document.getElementById('btnAktionen'); 3504 if(aktNav && aktPill){ 3505 var aktCloseTimeout; 3506 var openAkt = function(){ clearTimeout(aktCloseTimeout); aktNav.classList.add('is-open'); aktPill.setAttribute('aria-expanded','true'); }; 3507 var closeAkt = function(){ aktNav.classList.remove('is-open'); aktPill.setAttribute('aria-expanded','false'); }; 3508 aktPill.addEventListener('click', function(e){ e.stopPropagation(); if(aktNav.classList.contains('is-open')){ closeAkt(); } else { openAkt(); } }); 3509 aktNav.addEventListener('mouseenter', function(){ if(window.innerWidth >= 1024) openAkt(); }); 3510 aktNav.addEventListener('mouseleave', function(){ aktCloseTimeout = setTimeout(closeAkt, 220); }); 3511 document.addEventListener('click', function(e){ if(!aktNav.contains(e.target)) closeAkt(); }); 3512 document.addEventListener('keydown', function(e){ if(e.key === 'Escape') closeAkt(); }); 3513 } 3514 3515 var evHeaderEl = document.getElementById('ev-immersive-header'); 3516 function checkLogin(){ 3517 var evCached=null;try{evCached=sessionStorage.getItem('evLoggedIn');}catch(e){} 3518 var loggedIn = false;
3519 if(document.body.classList.contains('is-customer-logged-in')) loggedIn = true; 3520 var swLogout = document.querySelector('.header-main a[href*="/account/logout"]:not(.ev-account-logout-item)'); 3521 if(swLogout) loggedIn = true; 3522 if(document.cookie.indexOf('sw-states') !== -1 && document.cookie.indexOf('logged-in') !== -1) loggedIn = true; 3523 var p = window.location.pathname; 3524 if(p.indexOf('/account') === 0 && p.indexOf('/login') === -1 && p.indexOf('/register') === -1 && p.indexOf('/recover') === -1) loggedIn = true; 3525 var cn = document.querySelector('.account-menu-customer-name, .customer-name, [data-customer-name]'); 3526 if(cn && cn.textContent.trim()) loggedIn = true; 3527 try{var ctx=JSON.parse(localStorage.getItem('sw-context')||'{}');if(ctx.customer&&ctx.customer.id)loggedIn=true}catch(e){} 3528 var meta=document.querySelector('meta[name="sw-context"]'); 3529 if(meta){try{var mx=JSON.parse(meta.getAttribute('content')||'{}');if(mx.customer&&mx.customer.id)loggedIn=true}catch(e){}} 3530 3531 if(evCached!==null){loggedIn=(evCached==='1');} 3532 if(typeof window.evCustomerLoggedIn==='boolean'){loggedIn=window.evCustomerLoggedIn;} 3533 if(evHeaderEl){ 3534 evHeaderEl.classList.remove('show-login','show-logout'); 3535 evHeaderEl.classList.add(loggedIn ? 'show-logout' : 'show-login'); 3536 } 3537 var greet=document.getElementById('evAccountGreet'); 3538 if(greet){ 3539 var fn=window.evCustomerFirstName; 3540 if(loggedIn&&typeof fn==='string'&&fn){greet.textContent='Hallo '+fn;greet.hidden=false;} 3541 else{greet.hidden=true;} 3542 } 3543 } 3544 checkLogin(); 3545 setTimeout(checkLogin,100); 3546 setTimeout(checkLogin,500); 3547 setTimeout(checkLogin,1500); 3548 new MutationObserver(checkLogin).observe(document.body,{attributes:true,attributeFilter:['class']}); 3549 // Login-State v1 (2026-08-06): PRIMAER window.evCustomerLoggedIn (Server-Wahrheit aus Theme-Override 3550 // meta.html.twig, auf JEDER Seite frisch). Spiegel in sessionStorage haelt Alt-Konsumenten korrekt 3551 // (Topbar-Zeitrotation + Mobil-Konto-Overlay lesen evLoggedIn). fetch('/account') nur noch FALLBACK, 3552 // falls das Theme-Override fehlt (Verhalten = alter Stand: 1 Fetch pro Session, Re-Check /account*+/checkout*). 3553 (function(){ 3554 function evVerifyLogin(){ 3555 fetch('/account',{redirect:'follow',credentials:'same-origin'}).then(function(r){ 3556 var li=r.url.indexOf('/account/login')===-1&&r.url.indexOf('/account/recover')===-1; 3557 try{sessionStorage.setItem('evLoggedIn',li?'1':'0');}catch(e){} 3558 checkLogin(); 3559 }).catch(function(){}); 3560 } 3561 if(typeof window.evCustomerLoggedIn==='boolean'){ 3562 try{sessionStorage.setItem('evLoggedIn',window.evCustomerLoggedIn?'1':'0');}catch(e){} 3563 checkLogin(); 3564 } else { 3565 var cached=null;try{cached=sessionStorage.getItem('evLoggedIn');}catch(e){} 3566 var p=location.pathname; 3567 if(cached===null||p.indexOf('/account')===0||p.indexOf('/checkout')===0)evVerifyLogin(); 3568 } 3569 document.addEventListener('click',function(e){var t=e.target.closest&&e.target.closest('a[href*="/account/logout"]');if(t){try{sessionStorage.setItem('evLoggedIn','0');}catch(err){}}},true); 3570 })(); 3571 3572 document.getElementById('btnCart').addEventListener('click', function(e){ 3573 e.preventDefault(); 3574 e.stopPropagation(); 3575 fetch('/checkout/offcanvas',{headers:{'X-Requested-With':'XMLHttpRequest'},credentials:'same-origin'}) 3576 .then(function(r){return r.text()}) 3577 .then(function(html){ 3578 var existing = document.querySelector('.offcanvas.cart-offcanvas'); 3579 if(existing) existing.remove(); 3580 document.querySelectorAll('.offcanvas-backdrop').forEach(function(b){b.remove()}); 3581 var oc = document.createElement('div'); 3582 oc.className = 'offcanvas cart-offcanvas offcanvas-end'; 3583 oc.style.cssText = 'visibility:visible'; 3584 oc.innerHTML = '<div class="offcanvas-body">' + html + '</div>'; 3585 document.body.appendChild(oc); 3586 var bd = document.createElement('div'); 3587 bd.className = 'offcanvas-backdrop fade'; 3588 document.body.appendChild(bd); 3589 oc.offsetHeight; 3590 oc.classList.add('show'); 3591 bd.classList.add('show'); 3592 document.body.style.overflow = 'hidden'; 3593 }) 3594 .catch(function(){ 3595 window.location.href = '/checkout/cart'; 3596 }); 3597 }); 3598 3599 fetch('/store-api/context', {method:'GET',headers:{'sw-access-key':'SWSCA1RHA1LQCKPSCHZFQTE5CW','Accept':'application/json'}}) 3600 .then(function(r){return r.json()}).then(function(ctxData){ 3601 var cg = ctxData && ctxData.currentCustomerGroup; 3602 if(cg && cg.displayGross === false){ 3603 var tagsEl = document.getElementById('searchTags'); 3604 if(tagsEl){ 3605 var pill = document.createElement('button'); 3606 pill.type = 'button'; 3607 pill.className = 'ev-search-tag'; 3608 pill.textContent = 'Nature Active'; 3609 pill.style.cssText = 'background:var(--pl)!important;color:var(--p)!important;border-color:var(--p)!important;font-weight:600!important'; 3610 tagsEl.insertBefore(pill, tagsEl.firstChild); 3611 pill.addEventListener('click', function(){ 3612 searchInput.value = 'Nature Active'; 3613 searchInput.focus(); 3614 searchClear.classList.add('is-visible'); 3615 searchInput.dispatchEvent(new Event('input', {bubbles:true})); 3616 }); 3617 } 3618 } 3619 }).catch(function(){}); 3620 3621})(); 3622</script>
3622 3623
3624<script> 3625(function(){ 3626 var badge = document.querySelector('#btnCart .badge'); 3627 if(!badge) return; 3628 3629 function updateBadge(count){ 3630 badge.textContent = count; 3631 badge.style.display = count > 0 ? '' : 'none'; 3632 try{ sessionStorage.setItem('ev-cart-qty', String(count)); }catch(e){} 3633 } 3634 3635 try{ var c = parseInt(sessionStorage.getItem('ev-cart-qty')); if(c > 0) updateBadge(c); }catch(e){} 3636 3637 function fetchExactCount(){ 3638 fetch('/checkout/offcanvas',{ headers:{'X-Requested-With':'XMLHttpRequest'}, credentials:'same-origin' 3639 }).then(function(r){return r.text()}).then(function(html){ 3640 /* B11 (22.09.2026): Geschenk-Stand des Plugins an die Seite melden (Herbst-Trio). */ 3641 try{var gm=String(html||'').match(/
3641<script type="application\/json" class="ev-tiered-gift-progress-data">[\s\S]*?<\/script>/g),gp=null; 3642 if(gm){gp=JSON.parse(gm[gm.length-1].replace(/^
3642<script[^>]*>/,'').replace(/<\/script>$/,''));if(!gp||!gp.enabled)gp=null;} 3643 window.evGiftProgress=gp;document.dispatchEvent(new CustomEvent('ev:gift-progress',{detail:gp}));}catch(e){} 3644 if(!html || html.length < 50){ updateBadge(0); return; } 3645 var matches = html.match(/data-quantity="(\d+)"/g); 3646 if(!matches || !matches.length){ updateBadge(0); return; } 3647 var total = 0; 3648 matches.forEach(function(m){ var v = m.match(/"(\d+)"/); if(v) total += parseInt(v[1])||0; }); 3649 updateBadge(total); 3650 }).catch(function(){}); 3651 } 3652 3653 function openOffcanvasCart(){ 3654 fetch('/checkout/offcanvas',{headers:{'X-Requested-With':'XMLHttpRequest'},credentials:'same-origin'}) 3655 .then(function(r){return r.text()}) 3656 .then(function(html){ 3657 var existing = document.querySelector('.offcanvas.cart-offcanvas'); 3658 if(existing) existing.remove(); 3659 document.querySelectorAll('.offcanvas-backdrop').forEach(function(b){b.remove()}); 3660 var oc = document.createElement('div'); 3661 oc.className = 'offcanvas cart-offcanvas offcanvas-end'; 3662 oc.style.cssText = 'visibility:visible'; 3663 oc.innerHTML = '<div class="offcanvas-body">' + html + '</div>'; 3664 document.body.appendChild(oc); 3665 var bd = document.createElement('div'); 3666 bd.className = 'offcanvas-backdrop fade'; 3667 document.body.appendChild(bd); 3668 oc.offsetHeight; 3669 oc.classList.add('show'); 3670 bd.classList.add('show'); 3671 document.body.style.overflow = 'hidden'; 3672 }).catch(function(){}); 3673 } 3674 3675 fetchExactCount(); 3676 3677 var origFetch = window.fetch; 3678 window.fetch = function(){ 3679 var url = arguments[0]; 3680 var opts = arguments[1] || {}; 3681 var method = (opts.method || 'GET').toUpperCase(); 3682 var promise = origFetch.apply(this, arguments); 3683 3684 if(method === 'POST' && typeof url === 'string'){ 3685 var isAddToCart = url.indexOf('/checkout/line-item/add') !== -1; 3686 var isCartChange = url.indexOf('/line-item/change-quantity') !== -1 3687 || url.indexOf('/line-item/delete') !== -1 3688 || url.indexOf('/checkout/promotion/add') !== -1; 3689 3690 if(isAddToCart){ 3691 promise.then(function(res){ 3692 if(res.ok){ 3693 setTimeout(function(){ 3694 fetchExactCount(); 3695 /* B9 (28.08.): Cart schon offen (Add aus dem Bestseller-Widget) -> nicht erneut 3696 einfahren, der Off-Canvas-Cart laedt sich selbst neu. */ 3697 if(!document.querySelector('.offcanvas.cart-offcanvas.show')) openOffcanvasCart(); 3698 }, 300); 3699 } 3700 return res; 3701 }); 3702 } else if(isCartChange){ 3703 promise.then(function(res){ 3704 if(res.ok) setTimeout(fetchExactCount, 400); 3705 return res; 3706 }); 3707 } 3708 } 3709 return promise; 3710 }; 3711 3712 document.addEventListener('cart.changed', function(){ setTimeout(fetchExactCount, 600); }); 3713 new MutationObserver(function(muts){ 3714 muts.forEach(function(m){ 3715 m.removedNodes.forEach(function(n){ 3716 if(n.nodeType===1 && n.classList && n.classList.contains('offcanvas')){ setTimeout(fetchExactCount, 400); } 3717 }); 3718 }); 3719 }).observe(document.body, {childList:true}); 3720 3721 window.evFetchCartCount = fetchExactCount; 3722 window.evOpenCart = openOffcanvasCart; 3723})(); 3724</script>
3724 3725 3726 3727
3728<script> 3729(function(){ 3730'use strict'; 3731var KEY='SWSCA1RHA1LQCKPSCHZFQTE5CW',BASE='/store-api',CAT='019c8aea38067ed78aff31126bd5d88c'; 3732var COUNT=10; 3733var START=Date.parse('2026-08-21T15:00:00+02:00'),END=Date.parse('2026-09-13T23:59:59+02:00'); 3734function saleOn(){var n=Date.now();return n>=START&&n<=END;} 3735/* Rangfolge aus echten B2C-Bestellungen, 90 Tage, Stand 2026-08-25 08:56. 3736 Store-API kann das nicht liefern: order:'topseller' ist Shopwares LIFETIME- 3737 Zaehler. Quelle: tools/bestseller_report.py -> reference/bestseller-top20-shop.json, 3738 eingesetzt von tools/sommer-sale-2026/build_header.py. */ 3739var RANK={ 3740 '5fcc38c248bb42de8f9647298ef3e107':1 /* SW10445-main - Omega-3 Algenöl direkt aus der Quelle */, 3741 '0195ccc82bf775bd8d25811a8a176e64':2 /* SW10660-main - Vitamin D3 hochdosiert 10.000 i.E. und 4 */, 3742 '0195ccc96e2c749e844d48b87360ac40':3 /* SW10662-main - Magnesium Komplex */, 3743 '57f5ba3d66714e328d3f94c79bd92cbb':4 /* SW10507-main - Kollagen aus Weidehaltung */, 3744 '019811bcefc4711e9c14b8eb7cebb453':5 /* SW10670-main - Bio Rizinusöl Premium */, 3745 '01980767a0c7712081dbbfb03cb73ae5':6 /* SW10666-main - Kolloidales Lithium 100 ppm */, 3746 '0295b2262a2f4eaaa17ed4473e7a533d':7 /* SW10482-main - Astaxanthin vegan */, 3747 '75658221af8b4f7aa6ccc5ef22057ca9':8 /* SW10230-main - Vitamin B Komplex natürlich */, 3748 'af00a9f467ee4fb0955ef365594c071a':9 /* w1007opc-main - OPC Kapseln */, 3749 '25a21b18d6fb467596bb1c1f79ab37dc':10 /* SW10044-main - Vitamin C Kapseln aus Acerola */, 3750 '31ef9fca7c3e4f79b0415916eb204a65':11 /* SW10429-main - Tri-Magnesium Dicitrat Kapseln */, 3751 'bb27e1fc213948b7992b282d36199a40':12 /* SW10423-main - Vitamin D3 - K2 Tropfen natürlich */, 3752 '0195ccd91e3b7c55b345bf860983c2c5':13 /* SW10678-main - Premium Kreatin Monohydrat Pulver */, 3753 '20afdd7614474326a3fec83bf2c0a0f7':14 /* SW10528-main - Zink Tropfen */, 3754 '019836144e7772e5af64e52b9f337f56':15 /* SW10664-main - Premium Methylenblau 1% */, 3755 '36f362813d514093983091d15505630a':16 /* SW10237-main - Coenzym Q10 */, 3756 'b055dd19df4745a49816f6cd6c11ee19':17 /* SW10539-main - Leber Vital mit 9 Pflanzenstoffen */, 3757 '52f360fca0e347298af2019f03625c75':18 /* SW10114-main - MSM Pulver - organischer Schwefel */, 3758 '7fd8d6f6be974b26915131f3a11c848b':19 /* SW10595-main - Bio Schwarzkümmelöl - 1500 mg Thymochino */, 3759 'a10748cfbef54929ae434728b1b3a66f':20 /* SW10561-main - Eisen aus dem Curryblatt mit Acerola */ 3760}; 3761function esc(s){return String(s==null?'':s).replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"');} 3762function eur(n){if(n==null||isNaN(n))return '';return (Math.round(parseFloat(n)*100)/100).toFixed(2).replace('.',',')+' \u20ac';} 3763/* Medien-URLs enthalten Leerzeichen und Kommata ('Vitamic C Acerola Kapseln.png'). 3764 In srcset sind beide Trennzeichen -> ohne Kodierung verwirft der Browser den Eintrag 3765 (51 Konsolen-Warnungen am 25.08.). Deshalb kodieren wie auf der Aktionsseite. */ 3766function cdn(u,w){if(!u)return '';var m=String(u).split('www.echt-vital.de').join('echt-vital.de').split('://echt-vital.de/').join('://echtvital.cstatic.com/');var qi=m.indexOf('?'),base=qi===-1?m:m.slice(0,qi),ts='';if(qi!==-1){var mm=m.slice(qi+1).match(/ts=([^&]+)/);if(mm)ts='&ts='+mm[1];}base=base.split(' ').join('%20').split(',').join('%2C');return base+'?w='+w+ts;}
3767/* Abo-, Gratis- und Bundle-Varianten gehoeren nie ins Menue. */ 3768function schlecht(v){var os=v.options||[];for(var i=0;i<os.length;i++){var s=String((os[i].translated&&os[i].translated.name)||os[i].name||'').toLowerCase();if(s.indexOf('abo')!==-1||s.indexOf('gratis')!==-1||/(\d+)\s*\+\s*(\d+)/.test(s))return true;}return false;} 3769function ist1er(v){var os=v.options||[];for(var i=0;i<os.length;i++){if(String((os[i].translated&&os[i].translated.name)||os[i].name||'').toLowerCase().trim()==='1er')return true;}return false;} 3770function zeile(p,rang){ 3771 var a=cdn(p.img,120),b=cdn(p.img,240); 3772 return '<a class="evm-bsr'+(rang<=3?' is-top':'')+'" href="/detail/'+esc(p.id)+'" data-rang="'+rang+'" data-sku="'+esc(p.sku)+'">' 3773 +'<span class="evm-bsr-n" aria-label="Platz '+rang+'">'+rang+'</span>' 3774 +'<span class="evm-bsr-img">'+(p.img?'<img src="'+esc(a)+'" srcset="'+esc(a)+' 1x, '+esc(b)+' 2x" alt="" loading="lazy" decoding="async">':'')+'</span>' 3775 +'<span class="evm-bsr-body"><span class="evm-bsr-name">'+esc(p.name)+'</span>' 3776 +'<span class="evm-bsr-price">'+eur(p.preis)+'</span>' 3777 +(saleOn()?'<span class="evm-bsr-sale">mit SOMMER20: '+eur(p.preis*0.8)+'</span>':'') 3778 +'</span></a>'; 3779} 3780var geladen=false; 3781function load(){ 3782 var ziel=document.getElementById('evBsRankMobile'); 3783 if(geladen||!ziel)return;geladen=true; 3784 fetch(BASE+'/product-listing/'+CAT,{method:'POST', 3785 headers:{'Content-Type':'application/json','Accept':'application/json','sw-access-key':KEY}, 3786 body:JSON.stringify({limit:100, 3787 includes:{product:['id','parentId','productNumber','name','translated','calculatedPrice','cover','options'], 3788 product_media:['media'],media:['url'], 3789 property_group_option:['name','translated']}, 3790 associations:{cover:{associations:{media:{}}},options:{}}}), 3791 credentials:'same-origin'}) 3792 .then(function(r){return r.json();}).then(function(d){ 3793 var els=d.elements||[],gruppen={},reihen=[];
3794 els.forEach(function(p){var k=p.parentId||p.id;if(!gruppen[k]){gruppen[k]=[];reihen.push(k);}gruppen[k].push(p);}); 3795 var liste=reihen.map(function(k){ 3796 var g=gruppen[k].filter(function(v){return !schlecht(v);}); 3797 if(!g.length)return null; 3798 var eins=g.filter(ist1er)[0]; 3799 var v=eins||g.sort(function(a,b){return ((a.calculatedPrice||{}).unitPrice||0)-((b.calculatedPrice||{}).unitPrice||0);})[0]; 3800 var m=v.cover&&v.cover.media; 3801 return {id:v.id,rang:RANK[k]||999,sku:v.productNumber||'',name:(v.translated&&v.translated.name)||v.name||'',img:(m&&m.url)||'',preis:((v.calculatedPrice||{}).unitPrice)||0}; 3802 }).filter(Boolean); 3803 liste.sort(function(a,b){return a.rang-b.rang;}); 3804 liste=liste.slice(0,COUNT); 3805 ziel.removeAttribute('aria-busy'); 3806 if(!liste.length){ziel.innerHTML='<div class="evm-bsr-empty">Bestseller gerade nicht verf\u00fcgbar.</div>';return;} 3807 ziel.innerHTML=liste.map(function(p,i){return zeile(p,p.rang===999?i+1:p.rang);}).join(''); 3808 }).catch(function(e){ 3809 geladen=false;ziel.removeAttribute('aria-busy'); 3810 ziel.innerHTML='<div class="evm-bsr-empty">Bestseller gerade nicht verf\u00fcgbar.</div>'; 3811 }); 3812} 3813function wire(){ 3814 /* ð¨ NICHT an den Klick des Burgers haengen: dessen eigener Handler laeuft in der 3815 Capture-Phase und ruft stopImmediatePropagation() - jeder spaeter registrierte 3816 Click-Listener auf demselben Knopf wird verschluckt. Genau daran hing die alte 3817 Liste: sie lud erst, wenn man einen Reiter antippte (Befund 25.08.). 3818 Deshalb drei unabhaengige Ausloeser: */ 3819 var bg=document.getElementById('btnBurger'); 3820 /* 1. Beruehrung/Hover am Burger = Vorladen, bevor das Menue ueberhaupt aufgeht. */ 3821 if(bg){try{bg.addEventListener('touchstart',load,{passive:true});}catch(_){bg.addEventListener('touchstart',load);} 3822 bg.addEventListener('mouseenter',load);} 3823 /* 2. Das Menue setzt beim Oeffnen body.ev-mobile-open - daran haengt der sichere Weg, 3824 egal ueber welchen Pfad geoeffnet wird. */ 3825 try{ 3826 if(document.body.classList.contains('ev-mobile-open'))load(); 3827 new MutationObserver(function(){if(document.body.classList.contains('ev-mobile-open'))load();}).observe(document.body,{attributes:true,attributeFilter:['class']}); 3828 }catch(_){} 3829 /* 3. Reiter-Klick als letzte Rueckfallebene. */ 3830 [].forEach.call(document.querySelectorAll('[data-panel="m-bestseller"]'),function(b){b.addEventListener('click',load);}); 3831} 3832if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',wire);else wire(); 3833})(); 3834</script>
3834 3835 3836 3837 </div> 3838 </div> 3839 </div> 3840 3841 </div> 3842 </div> 3843 </section> 3844 3845 </div> 3846 3847 </div> 3848 3849 3850 3851 3852 3853 3854 </header> 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 <style> 3865 3866 .nav-item-85d03fd66f144308bab163588dd3a94f-link:first-of-type, 3867 .nav-item-85d03fd66f144308bab163588dd3a94f-link.root:first-of-type{ 3868 color: var(--rhweb-navigation-active-color); 3869 } 3870 </style> 3871 3872 <main class="content-main" id="content-main"> 3873 <div class="flashbags container"> 3874 </div> 3875 3876 <div class="container"> 3877 <div class="container-main"> 3878 3879 3880 3881 <div class="account-register"> 3882 <h1>Anmelden oder Konto erstellen</h1> 3883 3884 <div class="row"> 3885 <div class="col-lg-4"> 3886 <div class="card login-card mb-3"> 3887 <div class="card-body"> 3888 <h2 class="card-title"> 3889 Ich bin bereits Kunde 3890 </h2> 3891 3892 3893 <form class="login-form" 3894 action="/account/login" 3895 method="post" 3896 data-form-handler="true"> 3897 <input type="hidden" 3898 name="refererUrl" 3899 value="/account/login"> 3900 <input type="hidden" 3901 name="redirectTo" 3902 value="frontend.account.home.page"> 3903 3904 <input type="hidden" 3905 name="redirectParameters" 3906 value="[]"> 3907 3908 3909 <p class="login-form-description"> 3910 Einloggen mit E-Mail-Adresse und Passwort 3911 </p> 3912 3913 3914 3915 3916 3917 <div class="row g-2"> 3918 3919 3920 3921 3922 3923 3924 3925 <div class="form-group col-sm-6 col-lg-12"> 3926 <label class="form-label" for="loginMail"> 3927 Deine E-Mail-Adresse 3928 3929 <span class="form-required-label" aria-hidden="true">*</span> 3930 </label> 3931 3932 3933 3934 3935 <input type="email" 3936 class="form-control" 3937 id="loginMail" 3938 name="username" 3939 aria-describedby="loginMail-feedback" 3940 autocomplete="username webauthn" data-validation="required,email" aria-required="true" > 3941 3942 3943 3944 3945 <div id="loginMail-feedback" class="form-field-feedback"> 3946 </div> 3947 </div> 3948 3949 3950 3951 3952 3953 3954 3955 3956 <div class="form-group col-sm-6 col-lg-12"> 3957 <label class="form-label" for="loginPassword"> 3958 Dein Passwort 3959
3960 <span class="form-required-label" aria-hidden="true">*</span> 3961 </label> 3962 3963 3964 3965 3966 <input type="password" 3967 class="form-control" 3968 id="loginPassword" 3969 name="password" 3970 aria-describedby="loginPassword-feedback" 3971 autocomplete="current-password" data-validation="required" aria-required="true" > 3972 3973 3974 3975 3976 <div id="loginPassword-feedback" class="form-field-feedback"> 3977 </div> 3978 </div> 3979 </div> 3980 3981 3982 <div class="login-password-recover mb-3"> 3983 <a href="https://echt-vital.de/account/recover"> 3984 Ich habe mein Passwort vergessen. 3985 </a> 3986 </div> 3987 3988 3989 <div class="login-submit"> 3990 <button type="submit" 3991 class="btn btn-primary"> 3992 Anmelden 3993 </button> 3994 </div> 3995 </form> 3996 </div> 3997 </div> 3998 3999 4000 4001 <div class="login-advantages d-none d-lg-block"> 4002 <div class="h5 login-advantages-header"> 4003 Vorteile einer Registrierung: 4004 </div> 4005 4006 <ul> 4007 <li>Schnelles Einkaufen</li> 4008 4009 <li>Speichern Sie Ihre Daten und Einstellungen.</li> 4010 4011 <li>Bestellübersicht und Versandinformationen</li> 4012 4013 <li>Verwalten Sie Ihr Newsletter-Abonnement</li> 4014 </ul> 4015 </div> 4016 </div> 4017 4018 4019 <div class="col-lg-8"> 4020 <div class="card register-card"> 4021 <div class="card-body"> 4022 <h2 class="card-title"> 4023 Ich bin Neukunde! 4024 </h2> 4025 4026 <form action="/account/register" 4027 class="register-form" 4028 method="post" 4029 data-form-handler="true"> 4030 4031 <input type="hidden" 4032 name="redirectTo" 4033 value="frontend.account.home.page"> 4034 4035 <input type="hidden" 4036 name="redirectParameters" 4037 value="[]"> 4038 4039 4040 <input type="hidden" 4041 name="createCustomerAccount" 4042 value="1"> 4043 4044 <input type="hidden" 4045 name="errorRoute" 4046 value="frontend.account.login.page"> 4047 4048 <input type="hidden" 4049 name="errorParameters" 4050 value=""> 4051 4052 <fieldset class="register-personal mb-3"> 4053 <legend class="register-personal-title visually-hidden"> 4054 Persönliche Informationen 4055 </legend> 4056 4057 4058 <div class="row g-2"> 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 4069 4070 4071 <div class="form-group col-md-6 contact-type"> 4072 <label class="form-label" for="-accountType"> 4073 Kontotyp 4074
4075 <span class="form-required-label" aria-hidden="true">*</span> 4076 </label> 4077 4078 4079 4080 4081 <select class="form-select contact-select" 4082 id="-accountType" 4083 name="accountType" 4084 aria-describedby="-accountType-feedback" 4085 data-validation="required" aria-required="true" data-form-field-toggle=true data-form-field-toggle-target=.js-field-toggle-contact-type-company data-form-field-toggle-value=business data-form-field-toggle-scope=all > 4086 <option disabled="disabled" 4087 selected="selected" 4088 value=""> 4089 Auswählen ... 4090 </option> 4091 4092 <option value="private" 4093 > 4094 Privat 4095 </option> 4096 4097 <option value="business" 4098 > 4099 Gewerblich 4100 </option> 4101 4102 </select> 4103 4104 4105 4106 4107 <div id="-accountType-feedback" class="form-field-feedback"> 4108 </div> 4109 </div> 4110 4111 4112 </div> 4113 4114 <div class="row g-2"> 4115 4116 4117 4118 4119 4120 <div class="form-group col-md-3 col-sm-6"> 4121 <label class="form-label" for="personalSalutation"> 4122 Anrede 4123 4124 </label> 4125 4126 4127 4128 4129 <select class="form-select" 4130 id="personalSalutation" 4131 name="salutationId" 4132 aria-describedby="personalSalutation-feedback" 4133 autocomplete="section-personal honorific-prefix" > 4134 <option value="a20de613c2924cfab7d43cb084a3f3cf"> 4135 Keine Angabe 4136 </option> 4137 <option value="a2be61fe894e4d63a78a33504f2b50c9"> 4138 Frau 4139 </option> 4140 <option value="5a78f06b691947f3aefcac7054045d73"> 4141 Herr 4142 </option> 4143 <option value="ca62714c53564dc4ac388a571d5143fa"> 4144 Divers 4145 </option> 4146 4147 </select> 4148 4149 4150 4151 4152 <div id="personalSalutation-feedback" class="form-field-feedback"> 4153 </div> 4154 </div> 4155 4156 4157 4158 4159 </div> 4160 4161 <div class="row g-2"> 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 <div class="form-group col-sm-6"> 4173 <label class="form-label" for="billingAddress-personalFirstName"> 4174 Vorname 4175
4176 <span class="form-required-label" aria-hidden="true">*</span> 4177 </label> 4178 4179 4180 4181 4182 <input type="text" 4183 class="form-control" 4184 id="billingAddress-personalFirstName" 4185 name="billingAddress[firstName]" 4186 aria-describedby="billingAddress-personalFirstName-feedback" 4187 autocomplete="section-personal given-name" data-validation="required" aria-required="true" > 4188 4189 4190 4191 4192 <div id="billingAddress-personalFirstName-feedback" class="form-field-feedback"> 4193 </div> 4194 </div> 4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 <div class="form-group col-sm-6"> 4209 <label class="form-label" for="billingAddress-personalLastName"> 4210 Nachname 4211 4212 <span class="form-required-label" aria-hidden="true">*</span> 4213 </label> 4214 4215 4216 4217 4218 <input type="text" 4219 class="form-control" 4220 id="billingAddress-personalLastName" 4221 name="billingAddress[lastName]" 4222 aria-describedby="billingAddress-personalLastName-feedback" 4223 autocomplete="section-personal family-name" data-validation="required" aria-required="true" > 4224 4225 4226 4227 4228 <div id="billingAddress-personalLastName-feedback" class="form-field-feedback"> 4229 </div> 4230 </div> 4231 4232 4233 </div> 4234 4235 4236 4237 4238 4239 4240 4241 <div class="form-group col-sm-6"> 4242 <label class="form-label" for="-personalBirthday"> 4243 Geburtsdatum 4244 4245 </label> 4246 4247 <div class="row g-2"> 4248 <div class="col-4"> 4249 <select class="form-select" 4250 id="personalBirthday" 4251 name="birthdayDay" 4252 aria-describedby="-personalBirthday-feedback" 4253 > 4254 <option selected="selected" value=""> 4255 Tag 4256 </option> 4257 <option value="1" 4258 > 4259 1 4260 </option> 4261 <option value="2" 4262 > 4263 2 4264 </option> 4265 <option value="3" 4266 > 4267 3 4268 </option> 4269 <option value="4" 4270 > 4271 4 4272 </option> 4273 <option value="5" 4274 > 4275 5 4276 </option> 4277 <option value="6" 4278 > 4279 6 4280 </option> 4281 <option value="7" 4282 > 4283 7 4284 </option> 4285 <option value="8" 4286 > 4287 8 4288 </option> 4289 <option value="9" 4290 > 4291 9 4292 </option> 4293 <option value="10" 4294 > 4295 10 4296 </option> 4297 <option value="11" 4298 > 4299 11 4300 </option> 4301 <option value="12" 4302 > 4303 12 4304 </option> 4305 <option value="13" 4306 > 4307 13 4308 </option> 4309 <option value="14" 4310 > 4311 14 4312 </option> 4313 <option value="15" 4314 > 4315 15 4316 </option> 4317 <option value="16" 4318 > 4319 16 4320 </option> 4321 <option value="17" 4322 > 4323 17 4324 </option> 4325 <option value="18" 4326 > 4327 18 4328 </option> 4329 <option value="19" 4330 > 4331 19 4332 </option> 4333 <option value="20" 4334 > 4335 20 4336 </option> 4337 <option value="21" 4338 > 4339 21 4340 </option> 4341 <option value="22" 4342 > 4343 22 4344 </option> 4345 <option value="23" 4346 > 4347 23 4348 </option> 4349 <option value="24" 4350 > 4351 24 4352 </option> 4353 <option value="25" 4354 > 4355 25 4356 </option> 4357 <option value="26" 4358 > 4359 26 4360 </option> 4361 <option value="27" 4362 > 4363 27 4364 </option> 4365 <option value="28" 4366 > 4367 28 4368 </option> 4369 <option value="29" 4370 > 4371 29 4372 </option> 4373 <option value="30" 4374 > 4375 30 4376 </option> 4377 <option value="31" 4378 > 4379 31 4380 </option> 4381 </select> 4382 4383 <div id="personalBirthday-feedback" 4384 class="form-field-feedback"> 4385 </div> 4386 </div> 4387 4388 <div class="col-4"> 4389 <select class="form-select" 4390 id="personalBirthdayMonth" 4391 name="birthdayMonth" 4392 aria-describedby="-personalBirthdayMonth-feedback" 4393 > 4394 <option selected="selected" 4395 value=""> 4396 Monat 4397 </option> 4398 <option value="1" 4399 > 4400 1 4401 </option> 4402 <option value="2" 4403 > 4404 2 4405 </option> 4406 <option value="3" 4407 > 4408 3 4409 </option> 4410 <option value="4" 4411 > 4412 4 4413 </option> 4414 <option value="5" 4415 > 4416 5 4417 </option> 4418 <option value="6" 4419 > 4420 6 4421 </option> 4422 <option value="7" 4423 > 4424 7 4425 </option> 4426 <option value="8" 4427 > 4428 8 4429 </option> 4430 <option value="9" 4431 > 4432 9 4433 </option> 4434 <option value="10" 4435 > 4436 10 4437 </option> 4438 <option value="11" 4439 > 4440 11 4441 </option> 4442 <option value="12" 4443 > 4444 12 4445 </option> 4446 </select> 4447 4448 <div id="personalBirthdayMonth-feedback" 4449 class="form-field-feedback"> 4450 </div> 4451 </div> 4452 4453 <div class="col-4"> 4454 4455 <select class="form-select" 4456 id="personalBirthdayYear" 4457 name="birthdayYear" 4458 aria-describedby="-personalBirthdayYear-feedback" 4459 > 4460 <option selected="selected" 4461 value=""> 4462 Jahr 4463 </option> 4464 <option value="2026" 4465 > 4466 2026 4467 </option> 4468 <option value="2025" 4469 > 4470 2025 4471 </option> 4472 <option value="2024" 4473 > 4474 2024 4475 </option> 4476 <option value="2023" 4477 > 4478 2023 4479 </option> 4480 <option value="2022" 4481 > 4482 2022 4483 </option> 4484 <option value="2021" 4485 > 4486 2021 4487
4487 </option> 4488 <option value="2020" 4489 > 4490 2020 4491 </option> 4492 <option value="2019" 4493 > 4494 2019 4495 </option> 4496 <option value="2018" 4497 > 4498 2018 4499 </option> 4500 <option value="2017" 4501 > 4502 2017 4503 </option> 4504 <option value="2016" 4505 > 4506 2016 4507 </option> 4508 <option value="2015" 4509 > 4510 2015 4511 </option> 4512 <option value="2014" 4513 > 4514 2014 4515 </option> 4516 <option value="2013" 4517 > 4518 2013 4519 </option> 4520 <option value="2012" 4521 > 4522 2012 4523 </option> 4524 <option value="2011" 4525 > 4526 2011 4527 </option> 4528 <option value="2010" 4529 > 4530 2010 4531 </option> 4532 <option value="2009" 4533 > 4534 2009 4535 </option> 4536 <option value="2008" 4537 > 4538 2008 4539 </option> 4540 <option value="2007" 4541 > 4542 2007 4543 </option> 4544 <option value="2006" 4545 > 4546 2006 4547 </option> 4548 <option value="2005" 4549 > 4550 2005 4551 </option> 4552 <option value="2004" 4553 > 4554 2004 4555 </option> 4556 <option value="2003" 4557 > 4558 2003 4559 </option> 4560 <option value="2002" 4561 > 4562 2002 4563 </option> 4564 <option value="2001" 4565 > 4566 2001 4567 </option> 4568 <option value="2000" 4569 > 4570 2000 4571 </option> 4572 <option value="1999" 4573 > 4574 1999 4575 </option> 4576 <option value="1998" 4577 > 4578 1998 4579 </option> 4580 <option value="1997" 4581 > 4582 1997 4583 </option> 4584 <option value="1996" 4585 > 4586 1996 4587 </option> 4588 <option value="1995" 4589 > 4590 1995 4591 </option> 4592 <option value="1994" 4593 > 4594 1994 4595 </option> 4596 <option value="1993" 4597 > 4598 1993 4599 </option> 4600 <option value="1992" 4601 > 4602 1992 4603 </option> 4604 <option value="1991" 4605 > 4606 1991 4607 </option> 4608 <option value="1990" 4609 > 4610 1990 4611 </option> 4612 <option value="1989" 4613 > 4614 1989 4615 </option> 4616 <option value="1988" 4617 > 4618 1988 4619 </option> 4620 <option value="1987" 4621 > 4622 1987 4623 </option> 4624 <option value="1986" 4625 > 4626 1986 4627 </option> 4628 <option value="1985" 4629 > 4630 1985 4631 </option> 4632 <option value="1984" 4633 > 4634 1984 4635 </option> 4636 <option value="1983" 4637 > 4638 1983 4639 </option> 4640 <option value="1982" 4641 > 4642 1982 4643 </option> 4644 <option value="1981" 4645 > 4646 1981 4647 </option> 4648 <option value="1980" 4649 > 4650 1980 4651 </option> 4652 <option value="1979" 4653 > 4654 1979 4655 </option> 4656 <option value="1978" 4657 > 4658 1978 4659 </option> 4660 <option value="1977" 4661 > 4662 1977 4663 </option> 4664 <option value="1976" 4665 > 4666 1976 4667 </option> 4668 <option value="1975" 4669 > 4670 1975 4671 </option> 4672 <option value="1974" 4673 > 4674 1974 4675 </option> 4676 <option value="1973" 4677 > 4678 1973 4679 </option> 4680 <option value="1972" 4681 > 4682 1972 4683 </option> 4684 <option value="1971" 4685 > 4686 1971 4687 </option> 4688 <option value="1970" 4689 > 4690 1970 4691 </option> 4692 <option value="1969" 4693 > 4694 1969 4695 </option> 4696 <option value="1968" 4697 > 4698 1968 4699 </option> 4700 <option value="1967" 4701 > 4702 1967 4703 </option> 4704 <option value="1966" 4705 > 4706 1966 4707 </option> 4708 <option value="1965" 4709 > 4710 1965 4711 </option> 4712 <option value="1964" 4713 > 4714 1964 4715 </option> 4716 <option value="1963" 4717 > 4718 1963 4719 </option> 4720 <option value="1962" 4721 > 4722 1962 4723 </option> 4724 <option value="1961" 4725 > 4726 1961 4727 </option> 4728 <option value="1960" 4729 > 4730 1960 4731 </option> 4732 <option value="1959" 4733 > 4734 1959 4735 </option> 4736 <option value="1958" 4737 > 4738 1958 4739 </option> 4740 <option value="1957" 4741 > 4742 1957 4743 </option> 4744 <option value="1956" 4745 > 4746 1956 4747 </option> 4748 <option value="1955" 4749 > 4750 1955 4751 </option> 4752 <option value="1954" 4753 > 4754 1954 4755 </option> 4756 <option value="1953" 4757 > 4758 1953 4759 </option> 4760 <option value="1952" 4761 > 4762 1952 4763 </option> 4764 <option value="1951" 4765 > 4766 1951 4767 </option> 4768 <option value="1950" 4769 > 4770 1950 4771 </option> 4772 <option value="1949" 4773 > 4774 1949 4775 </option> 4776 <option value="1948" 4777 > 4778 1948 4779 </option> 4780 <option value="1947" 4781 > 4782
4782 1947 4783 </option> 4784 <option value="1946" 4785 > 4786 1946 4787 </option> 4788 <option value="1945" 4789 > 4790 1945 4791 </option> 4792 <option value="1944" 4793 > 4794 1944 4795 </option> 4796 <option value="1943" 4797 > 4798 1943 4799 </option> 4800 <option value="1942" 4801 > 4802 1942 4803 </option> 4804 <option value="1941" 4805 > 4806 1941 4807 </option> 4808 <option value="1940" 4809 > 4810 1940 4811 </option> 4812 <option value="1939" 4813 > 4814 1939 4815 </option> 4816 <option value="1938" 4817 > 4818 1938 4819 </option> 4820 <option value="1937" 4821 > 4822 1937 4823 </option> 4824 <option value="1936" 4825 > 4826 1936 4827 </option> 4828 <option value="1935" 4829 > 4830 1935 4831 </option> 4832 <option value="1934" 4833 > 4834 1934 4835 </option> 4836 <option value="1933" 4837 > 4838 1933 4839 </option> 4840 <option value="1932" 4841 > 4842 1932 4843 </option> 4844 <option value="1931" 4845 > 4846 1931 4847 </option> 4848 <option value="1930" 4849 > 4850 1930 4851 </option> 4852 <option value="1929" 4853 > 4854 1929 4855 </option> 4856 <option value="1928" 4857 > 4858 1928 4859 </option> 4860 <option value="1927" 4861 > 4862 1927 4863 </option> 4864 <option value="1926" 4865 > 4866 1926 4867 </option> 4868 <option value="1925" 4869 > 4870 1925 4871 </option> 4872 <option value="1924" 4873 > 4874 1924 4875 </option> 4876 <option value="1923" 4877 > 4878 1923 4879 </option> 4880 <option value="1922" 4881 > 4882 1922 4883 </option> 4884 <option value="1921" 4885 > 4886 1921 4887 </option> 4888 <option value="1920" 4889 > 4890 1920 4891 </option> 4892 <option value="1919" 4893 > 4894 1919 4895 </option> 4896 <option value="1918" 4897 > 4898 1918 4899 </option> 4900 <option value="1917" 4901 > 4902 1917 4903 </option> 4904 <option value="1916" 4905 > 4906 1916 4907 </option> 4908 <option value="1915" 4909 > 4910 1915 4911 </option> 4912 <option value="1914" 4913 > 4914 1914 4915 </option> 4916 <option value="1913" 4917 > 4918 1913 4919 </option> 4920 <option value="1912" 4921 > 4922 1912 4923 </option> 4924 <option value="1911" 4925 > 4926 1911 4927 </option> 4928 <option value="1910" 4929 > 4930 1910 4931 </option> 4932 <option value="1909" 4933 > 4934 1909 4935 </option> 4936 <option value="1908" 4937 > 4938 1908 4939 </option> 4940 <option value="1907" 4941 > 4942 1907 4943 </option> 4944 <option value="1906" 4945 > 4946 1906 4947 </option> 4948 </select> 4949 4950 <div id="personalBirthdayYear-feedback" 4951 class="form-field-feedback"> 4952 </div> 4953 </div> 4954 </div> 4955 </div> 4956 4957 4958 4959 <div class="js-field-toggle-contact-type-company d-none"> 4960 <div class="row g-2"> 4961 4962 4963 4964 4965 4966 4967 4968 4969 <div class="form-group col-12"> 4970 <label class="form-label" for="billingAddresscompany"> 4971 Firma 4972
4973 <span class="form-required-label" aria-hidden="true">*</span> 4974 </label> 4975 4976 4977 4978 4979 <input type="text" 4980 class="form-control" 4981 id="billingAddresscompany" 4982 name="billingAddress[company]" 4983 aria-describedby="billingAddresscompany-feedback" 4984 autocomplete="section-personal organization" data-validation="required" aria-required="true" > 4985 4986 4987 4988 4989 <div id="billingAddresscompany-feedback" class="form-field-feedback"> 4990 </div> 4991 </div> 4992 </div> 4993 <div class="row g-2"> 4994 4995 4996 4997 4998 4999 5000 5001 5002 <div class="form-group col-md-6"> 5003 <label class="form-label" for="billingAddressdepartment"> 5004 Abteilung 5005 5006 </label> 5007 5008 5009 5010 5011 <input type="text" 5012 class="form-control" 5013 id="billingAddressdepartment" 5014 name="billingAddress[department]" 5015 aria-describedby="billingAddressdepartment-feedback" 5016 > 5017 5018 5019 5020 5021 <div id="billingAddressdepartment-feedback" class="form-field-feedback"> 5022 </div> 5023 </div> 5024 5025 5026 <div class="form-group col-md-6"> 5027 <label class="form-label" 5028 for="billingAddressKlarnaEntityType"> 5029 Rechtsform 5030 </label> 5031 5032 <select class="custom-select form-select" 5033 id="billingAddressKlarnaEntityType" 5034 name="billingAddress[customFields][klarna_customer_entity_type]"> 5035 <option disabled hidden selected> 5036 Bitte wählen... 5037 </option> 5038 <option value="LIMITED_COMPANY" 5039 > 5040 Gesellschaft mit beschränkter Haftung (GmbH) 5041 </option> 5042 <option value="PUBLIC_LIMITED_COMPANY" 5043 > 5044 Aktiengesellschaft (AG) 5045 </option> 5046 <option value="ENTREPRENEURIAL_COMPANY" 5047 > 5048 UG (haftungsbeschränkt) 5049 </option> 5050 <option value="LIMITED_PARTNERSHIP_LIMITED_COMPANY" 5051 > 5052 Gesellschaft mit beschränkter Haftung und Kommanditgesellschaft (GmbH & KG) 5053 </option> 5054 <option value="LIMITED_PARTNERSHIP" 5055 > 5056 Kommanditgesellschaft (KG) 5057 </option> 5058 <option value="GENERAL_PARTNERSHIP" 5059 > 5060 Offene Handelsgesellschaft (OHG) 5061 </option> 5062 <option value="REGISTERED_SOLE_TRADER" 5063 > 5064 Eingetragener Kaufmann/Kauffrau 5065 </option> 5066 <option value="SOLE_TRADER" 5067 > 5068 Einzelunternehmen/Freiberuf 5069 </option> 5070 <option value="CIVIL_LAW_PARTNERSHIP" 5071 > 5072 Gesellschaft bürgerlichen Rechts (GbR) 5073 </option> 5074 <option value="PUBLIC_INSTITUTION" 5075 > 5076 Ãffentliche Einrichtung 5077 </option> 5078 <option value="OTHER" 5079 > 5080 Sonstige 5081 </option> 5082 </select> 5083 </div> 5084 5085 <div class="form-group col-md-6"> 5086 <label class="form-label" 5087 for="billingAddressKlarnaRegistrationId"> 5088 Handelsregisternummer 5089 </label> 5090 5091 <input type="text" 5092 class="form-control" 5093 id="billingAddressKlarnaRegistrationId" 5094 name="billingAddress[customFields][klarna_customer_registration_id]" 5095 placeholder="Handelsregisternummer eingeben..." 5096 value=""> 5097 </div> 5098 5099 5100 5101 5102 5103 5104 5105 5106 5107 5108 <div class="form-group col-md-6"> 5109 <label class="form-label" for="vatIds"> 5110 Umsatzsteuer-ID 5111 5112 </label> 5113 5114 5115 5116 5117 <input type="text" 5118 class="form-control" 5119 id="vatIds" 5120 name="vatIds[]" 5121 aria-describedby="vatIds-feedback" 5122 > 5123 5124 5125 5126 5127 <div id="vatIds-feedback" class="form-field-feedback"> 5128 </div> 5129 </div> 5130 </div> 5131 </div> 5132 5133 5134 5135 5136 5137 <div class="row g-2"> 5138 5139 5140 5141 5142 5143 5144 5145 <div class="form-group col-sm-6"> 5146 <label class="form-label" for="personalMail"> 5147 E-Mail-Adresse 5148
5149 <span class="form-required-label" aria-hidden="true">*</span> 5150 </label> 5151 5152 5153 5154 5155 <input type="email" 5156 class="form-control" 5157 id="personalMail" 5158 name="email" 5159 aria-describedby="personalMail-feedback" 5160 autocomplete="section-personal email" data-validation="required,email" aria-required="true" > 5161 5162 5163 5164 5165 <div id="personalMail-feedback" class="form-field-feedback"> 5166 </div> 5167 </div> 5168 5169 5170 5171 5172 5173 5174 5175 5176 5177 5178 5179 5180 <div class="form-group col-sm-6 js-form-field-toggle-guest-mode"> 5181 <label class="form-label" for="personalPassword"> 5182 Passwort 5183 5184 <span class="form-required-label" aria-hidden="true">*</span> 5185 </label> 5186 5187 5188 5189 5190 <input type="password" 5191 class="form-control" 5192 id="personalPassword" 5193 name="password" 5194 aria-describedby="personalPassword-description personalPassword-feedback" 5195 autocomplete="new-password" minlength="8" data-validation="required,minLength" aria-required="true" > 5196 5197 5198 5199 <small id="personalPassword-description" class="form-text">Das Passwort muss mindestens 8 Zeichen lang sein.</small> 5200 5201 <div id="personalPassword-feedback" class="form-field-feedback"> 5202 </div> 5203 </div> 5204 5205 5206 </div> 5207 </fieldset> 5208 5209 <div class="register-address mb-5"> 5210 <fieldset class="register-billing"> 5211 <legend class="card-title"> 5212 Ihre Adresse 5213 </legend> 5214 5215 <div class="pickware-dhl-component-address-form-container"> 5216 5217 5218 5219 5220 5221 5222 <div class="row g-2"> 5223 5224 5225 5226 5227 5228 <div class="col-12 qubix-street-house-col"> 5229 <div class="row gx-2 qubix-street-house-row"> 5230 5231 5232 5233 5234 5235 5236 5237 <div class="form-group col-8"> 5238 <label class="form-label" for="billingAddress-AddressStreet"> 5239 StraÃe 5240
5241 <span class="form-required-label" aria-hidden="true">*</span> 5242 </label> 5243 5244 5245 5246 5247 <input type="text" 5248 class="form-control" 5249 id="billingAddress-AddressStreet" 5250 name="billingAddress[street]" 5251 aria-describedby="billingAddress-AddressStreet-feedback" 5252 autocomplete="billing address-line1" data-validation="required" aria-required="true" > 5253 5254 5255 5256 5257 <div id="billingAddress-AddressStreet-feedback" class="form-field-feedback"> 5258 </div> 5259 </div> 5260 5261 5262 5263 5264 5265 5266 5267 5268 <div class="form-group col-4"> 5269 <label class="form-label" for="billingAddress-AddressHouseNumber"> 5270 Hausnummer 5271 5272 <span class="form-required-label" aria-hidden="true">*</span> 5273 </label> 5274 5275 5276 5277 5278 <input type="text" 5279 class="form-control" 5280 id="billingAddress-AddressHouseNumber" 5281 name="billingAddress[houseNumber]" 5282 aria-describedby="billingAddress-AddressHouseNumber-feedback" 5283 autocomplete="off" data-validation="required" aria-required="true" > 5284 5285 5286 5287 5288 <div id="billingAddress-AddressHouseNumber-feedback" class="form-field-feedback"> 5289 </div> 5290 </div> 5291 </div> 5292 </div> 5293 5294 5295 5296 5297 5298 5299 5300 5301 5302 5303 5304 5305 5306 5307 5308 5309 5310 5311 5312 5313 <div class="form-group col-md-3 col-4"> 5314 <label class="form-label" for="billingAddressAddressZipcode"> 5315 PLZ 5316 5317 </label> 5318 5319 5320 5321 5322 <input type="text" 5323 class="form-control" 5324 id="billingAddressAddressZipcode" 5325 name="billingAddress[zipcode]" 5326 aria-describedby="billingAddressAddressZipcode-feedback" 5327 autocomplete="billing postal-code" data-input-name="zipcodeInput" > 5328 5329 5330 5331 5332 <div id="billingAddressAddressZipcode-feedback" class="form-field-feedback"> 5333 </div> 5334 </div> 5335 5336 5337 5338 5339 5340 5341 5342 5343 5344 5345 5346 <div class="form-group col-md-3 col-8"> 5347 <label class="form-label" for="billingAddressAddressCity"> 5348 Ort 5349 5350 <span class="form-required-label" aria-hidden="true">*</span> 5351 </label> 5352 5353 5354 5355 5356 <input type="text" 5357 class="form-control" 5358 id="billingAddressAddressCity" 5359 name="billingAddress[city]" 5360 aria-describedby="billingAddressAddressCity-feedback" 5361 autocomplete="billing address-level2" data-validation="required" aria-required="true" > 5362 5363 5364 5365 5366 <div id="billingAddressAddressCity-feedback" class="form-field-feedback"> 5367 </div> 5368 </div> 5369 5370 5371 5372 5373 5374 5375 </div> 5376 5377 5378 <div 5379 class="row g-2 country-and-state-form-elements" 5380 data-country-state-select="true" 5381 data-country-state-select-options="{"scopeElementSelector":".register-billing","prefix":"billingAddress"}" 5382 > 5383 5384 5385 5386 5387 5388 5389 5390 5391 5392 5393 5394 <div class="form-group col-md-6"> 5395 <label class="form-label" for="billingAddressAddressCountry"> 5396 Land 5397
5398 <span class="form-required-label" aria-hidden="true">*</span> 5399 </label> 5400 5401 5402 5403 5404 <select class="form-select country-select" 5405 id="billingAddressAddressCountry" 5406 name="billingAddress[countryId]" 5407 aria-describedby="billingAddressAddressCountry-feedback" 5408 autocomplete="billing country-name" data-validation="required" aria-required="true" data-initial-country-id=72bfb449ab0040299ccc5b6eefd129f3 > 5409 <option value="72bfb449ab0040299ccc5b6eefd129f3" 5410 selected="selected" data-zipcode-required="1" 5411 data-vat-id-required="" 5412 data-state-required="" 5413 > 5414 5415 Deutschland 5416 5417 </option> 5418 <option value="d7f11893dbf04dfab5077ba37372bf9b" 5419 data-zipcode-required="" 5420 data-vat-id-required="" 5421 data-state-required="" 5422 > 5423 5424 Belgien 5425 5426 </option> 5427 <option value="cf71a64ab9dc46f99ce43ce7c39e6212" 5428 data-zipcode-required="" 5429 data-vat-id-required="" 5430 data-state-required="" 5431 > 5432 5433 Kroatien 5434 5435 </option> 5436 <option value="46b0f19244b34817ae2d53c270a2fd1d" 5437 data-zipcode-required="" 5438 data-vat-id-required="" 5439 data-state-required="" 5440 > 5441 5442 Dänemark 5443 5444 </option> 5445 <option value="c02be3c2bc5f44b69f593a3425607ec1" 5446 data-zipcode-required="" 5447 data-vat-id-required="" 5448 data-state-required="" 5449 > 5450 5451 Frankreich 5452 5453 </option> 5454 <option value="23d58066c66c4baa9360d0eebc3d80a8" 5455 data-zipcode-required="" 5456 data-vat-id-required="" 5457 data-state-required="" 5458 > 5459 5460 Griechenland 5461 5462 </option> 5463 <option value="86c7b16517e542189d0ffe3bbe45704a" 5464 data-zipcode-required="" 5465 data-vat-id-required="" 5466 data-state-required="" 5467 > 5468 5469 Irland 5470 5471 </option> 5472 <option value="61bb466b8d6242b38e37bea2f7ccd29c" 5473 data-zipcode-required="" 5474 data-vat-id-required="" 5475 data-state-required="" 5476 > 5477 5478 Italien 5479 5480 </option> 5481 <option value="6a9d58d7dc334389a5cf1c8d7c93d37a" 5482 data-zipcode-required="" 5483 data-vat-id-required="" 5484 data-state-required="" 5485 > 5486 5487 Luxemburg 5488 5489 </option> 5490 <option value="d88c313641d940b9b1de35e2a5cb7cc3" 5491 data-zipcode-required="" 5492 data-vat-id-required="" 5493 data-state-required="" 5494 > 5495 5496 Niederlande 5497 5498 </option> 5499 <option value="91735f460164480fbf281fa9690fcba3" 5500 data-zipcode-required="" 5501 data-vat-id-required="" 5502 data-state-required="" 5503 > 5504 5505 Ãsterreich 5506 5507 </option> 5508 <option value="a1fc18919bb04a58aa814e5ca6054196" 5509 data-zipcode-required="" 5510 data-vat-id-required="" 5511 data-state-required="" 5512 > 5513 5514 Polen 5515 5516 </option> 5517 <option value="5ec76ccacd3d4e3ab4b1bdc042f5ec28" 5518 data-zipcode-required="" 5519 data-vat-id-required="" 5520 data-state-required="" 5521 > 5522 5523 Schweden 5524 5525 </option> 5526 <option value="fe3311d8c50248f8a7d7076171527ce0" 5527 data-zipcode-required="" 5528 data-vat-id-required="" 5529 data-state-required="" 5530 > 5531 5532 Schweiz 5533 5534 </option> 5535 <option value="6d5aaf85527146c989f08e51e1470bc2" 5536 data-zipcode-required="" 5537 data-vat-id-required="" 5538 data-state-required="" 5539 > 5540 5541 Slowakische Republik 5542 5543 </option> 5544 <option value="f34ca5ca12624b89b238f08710060c27" 5545 data-zipcode-required="" 5546 data-vat-id-required="" 5547 data-state-required="" 5548 > 5549 5550 Spanien 5551 5552 </option> 5553 <option value="496911aae00043b0b43ade76ed027b1c" 5554 data-zipcode-required="" 5555 data-vat-id-required="" 5556 data-state-required="" 5557 > 5558 5559 Tschechien 5560 5561 </option> 5562 5563 </select> 5564 5565 5566 5567 5568 <div id="billingAddressAddressCountry-feedback" class="form-field-feedback"> 5569 </div> 5570 </div> 5571 5572 5573 5574 5575 5576 5577 5578 5579 5580 5581 5582 <div class="form-group col-md-6 d-none"> 5583 <label class="form-label" for="billingAddressAddressCountryState"> 5584 Bundesland 5585 5586 </label> 5587 5588 5589 5590 5591 <select class="form-select country-state-select" 5592 id="billingAddressAddressCountryState" 5593 name="billingAddress[countryStateId]" 5594 aria-describedby="billingAddressAddressCountryState-feedback" 5595 autocomplete="billing address-level1" > 5596 <option value="" 5597 selected="selected" 5598 data-placeholder-option="true"> 5599 Bundesland auswählen ... 5600 </option> 5601 5602 </select> 5603 5604 5605 5606 5607 <div id="billingAddressAddressCountryState-feedback" class="form-field-feedback"> 5608 </div> 5609 </div> 5610 5611 </div> 5612 5613 <div class="row g-2"> 5614 5615 5616 5617 5618 5619 5620 5621 5622 5623 5624 5625 <div class="form-group col-md-6"> 5626 <label class="form-label" for="billingAddressAddressPhoneNumber"> 5627 Telefonnummer 5628 5629 </label> 5630 5631 5632 5633 5634 <input type="text" 5635 class="form-control" 5636 id="billingAddressAddressPhoneNumber"
5637 name="billingAddress[phoneNumber]" 5638 aria-describedby="billingAddressAddressPhoneNumber-feedback" 5639 autocomplete="billing tel" > 5640 5641 5642 5643 5644 <div id="billingAddressAddressPhoneNumber-feedback" class="form-field-feedback"> 5645 </div> 5646 </div> 5647 5648 5649 </div> 5650 5651 5652 </div> 5653 </fieldset> 5654 5655 <div> 5656 <div class="form-check register-different-shipping mb-3"> 5657 <input type="checkbox" 5658 class="form-check-input js-different-shipping-checkbox" 5659 name="differentShippingAddress" 5660 value="1" 5661 id="differentShippingAddress" 5662 data-form-field-toggle="true" 5663 data-form-field-toggle-target=".js-form-field-toggle-shipping-address" 5664 data-form-field-toggle-value="true" 5665 data-form-field-toggle-trigger-nested="true"> 5666 5667 <label class="custom-control-label no-validation" 5668 for="differentShippingAddress"> 5669 Lieferadresse weicht von Rechnungsadresse ab. 5670 </label> 5671 </div> 5672 5673 <div class="pickware-dhl-location-finder-wrapper" data-behavior="modal"> 5674 <fieldset class="register-shipping js-form-field-toggle-shipping-address d-none mb-4"> 5675 <legend class="card-title"> 5676 Abweichende Lieferadresse 5677 </legend> 5678 5679 5680 <div class="row g-2"> 5681 5682 5683 5684 5685 5686 5687 5688 5689 5690 5691 5692 5693 <div class="form-group col-md-6 contact-type"> 5694 <label class="form-label" for="shippingAddress-accountType"> 5695 Kontotyp 5696 5697 <span class="form-required-label" aria-hidden="true">*</span> 5698 </label> 5699 5700 5701 5702 5703 <select class="form-select contact-select" 5704 id="shippingAddress-accountType" 5705 name="shippingAddress[accountType]" 5706 aria-describedby="shippingAddress-accountType-feedback" 5707 data-validation="required" aria-required="true" data-form-field-toggle=true data-form-field-toggle-target=.js-field-toggle-contact-type-company-shippingAddress data-form-field-toggle-value=business data-form-field-toggle-scope=all > 5708 <option disabled="disabled" 5709 selected="selected" 5710 value=""> 5711 Auswählen ... 5712 </option> 5713 5714 <option value="private" 5715 > 5716 Privat 5717 </option> 5718 5719 <option value="business" 5720 > 5721 Gewerblich 5722 </option> 5723 5724 </select> 5725 5726 5727 5728 5729 <div id="shippingAddress-accountType-feedback" class="form-field-feedback"> 5730 </div> 5731 </div> 5732 5733 5734 </div> 5735 5736 <div class="row g-2"> 5737 5738 5739 5740 5741 5742 <div class="form-group col-md-3 col-sm-6"> 5743 <label class="form-label" for="shippingAddresspers
5743onalSalutation"> 5744 Anrede 5745 5746 </label> 5747 5748 5749 5750 5751 <select class="form-select" 5752 id="shippingAddresspersonalSalutation" 5753 name="shippingAddress[salutationId]" 5754 aria-describedby="shippingAddresspersonalSalutation-feedback" 5755 autocomplete="section-personal honorific-prefix" > 5756 <option value="a20de613c2924cfab7d43cb084a3f3cf"> 5757 Keine Angabe 5758 </option> 5759 <option value="a2be61fe894e4d63a78a33504f2b50c9"> 5760 Frau 5761 </option> 5762 <option value="5a78f06b691947f3aefcac7054045d73"> 5763 Herr 5764 </option> 5765 <option value="ca62714c53564dc4ac388a571d5143fa"> 5766 Divers 5767 </option> 5768 5769 </select> 5770 5771 5772 5773 5774 <div id="shippingAddresspersonalSalutation-feedback" class="form-field-feedback"> 5775 </div> 5776 </div> 5777 5778 5779 5780 5781 </div> 5782 5783 <div class="row g-2"> 5784 5785 5786 5787 5788 5789 5790 5791 5792 5793 5794 <div class="form-group col-sm-6"> 5795 <label class="form-label" for="shippingAddress-personalFirstName"> 5796 Vorname 5797 5798 <span class="form-required-label" aria-hidden="true">*</span> 5799 </label> 5800 5801 5802 5803 5804 <input type="text" 5805 class="form-control" 5806 id="shippingAddress-personalFirstName" 5807 name="shippingAddress[firstName]" 5808 aria-describedby="shippingAddress-personalFirstName-feedback" 5809 autocomplete="section-personal given-name" data-validation="required" aria-required="true" > 5810 5811 5812 5813 5814 <div id="shippingAddress-personalFirstName-feedback" class="form-field-feedback"> 5815 </div> 5816 </div> 5817 5818 5819 5820 5821 5822 5823 5824 5825 5826 5827 5828 5829 5830 <div class="form-group col-sm-6"> 5831 <label class="form-label" for="shippingAddress-personalLastName"> 5832 Nachname 5833 5834 <span class="form-required-label" aria-hidden="true">*</span> 5835 </label> 5836 5837 5838 5839 5840 <input type="text" 5841 class="form-control" 5842 id="shippingAddress-personalLastName" 5843 name="shippingAddress[lastName]" 5844 aria-describedby="shippingAddress-personalLastName-feedback" 5845 autocomplete="section-personal family-name" data-validation="required" aria-required="true" > 5846 5847 5848 5849 5850 <div id="shippingAddress-personalLastName-feedback" class="form-field-feedback"> 5851 </div> 5852 </div> 5853 5854 5855 </div> 5856 5857 5858 5859 5860 5861 5862 5863 <div class="js-field-toggle-contact-type-company-shippingAddress d-none"> 5864 <div class="row g-2"> 5865 5866 5867 5868 5869 5870 5871 5872 5873 <div class="form-group col-12"> 5874 <label class="form-label" for="shippingAddresscompany"> 5875 Firma 5876
5877 <span class="form-required-label" aria-hidden="true">*</span> 5878 </label> 5879 5880 5881 5882 5883 <input type="text" 5884 class="form-control" 5885 id="shippingAddresscompany" 5886 name="shippingAddress[company]" 5887 aria-describedby="shippingAddresscompany-feedback" 5888 autocomplete="section-personal organization" data-validation="required" aria-required="true" > 5889 5890 5891 5892 5893 <div id="shippingAddresscompany-feedback" class="form-field-feedback"> 5894 </div> 5895 </div> 5896 </div> 5897 <div class="row g-2"> 5898 5899 5900 5901 5902 5903 5904 5905 5906 <div class="form-group col-md-6"> 5907 <label class="form-label" for="shippingAddressdepartment"> 5908 Abteilung 5909 5910 </label> 5911 5912 5913 5914 5915 <input type="text" 5916 class="form-control" 5917 id="shippingAddressdepartment" 5918 name="shippingAddress[department]" 5919 aria-describedby="shippingAddressdepartment-feedback" 5920 > 5921 5922 5923 5924 5925 <div id="shippingAddressdepartment-feedback" class="form-field-feedback"> 5926 </div> 5927 </div> 5928 5929 5930 <div class="form-group col-md-6"> 5931 <label class="form-label" 5932 for="shippingAddressKlarnaEntityType"> 5933 Rechtsform 5934 </label> 5935 5936 <select class="custom-select form-select" 5937 id="shippingAddressKlarnaEntityType" 5938 name="shippingAddress[customFields][klarna_customer_entity_type]"> 5939 <option disabled hidden selected> 5940 Bitte wählen... 5941 </option> 5942 <option value="LIMITED_COMPANY" 5943 > 5944 Gesellschaft mit beschränkter Haftung (GmbH) 5945 </option> 5946 <option value="PUBLIC_LIMITED_COMPANY" 5947 > 5948 Aktiengesellschaft (AG) 5949 </option> 5950 <option value="ENTREPRENEURIAL_COMPANY" 5951 > 5952 UG (haftungsbeschränkt) 5953 </option> 5954 <option value="LIMITED_PARTNERSHIP_LIMITED_COMPANY" 5955 > 5956 Gesellschaft mit beschränkter Haftung und Kommanditgesellschaft (GmbH & KG) 5957 </option> 5958 <option value="LIMITED_PARTNERSHIP" 5959 > 5960 Kommanditgesellschaft (KG) 5961 </option> 5962 <option value="GENERAL_PARTNERSHIP" 5963 > 5964 Offene Handelsgesellschaft (OHG) 5965 </option> 5966 <option value="REGISTERED_SOLE_TRADER" 5967 > 5968 Eingetragener Kaufmann/Kauffrau 5969 </option> 5970 <option value="SOLE_TRADER" 5971 > 5972 Einzelunternehmen/Freiberuf 5973 </option> 5974 <option value="CIVIL_LAW_PARTNERSHIP" 5975 > 5976 Gesellschaft bürgerlichen Rechts (GbR) 5977 </option> 5978 <option value="PUBLIC_INSTITUTION" 5979 > 5980 Ãffentliche Einrichtung 5981 </option> 5982 <option value="OTHER" 5983 > 5984 Sonstige 5985 </option> 5986 </select> 5987 </div> 5988 5989 <div class="form-group col-md-6"> 5990 <label class="form-label" 5991 for="shippingAddressKlarnaRegistrationId"> 5992 Handelsregisternummer 5993 </label> 5994 5995 <input type="text" 5996 class="form-control" 5997 id="shippingAddressKlarnaRegistrationId" 5998 name="shippingAddress[customFields][klarna_customer_registration_id]" 5999 placeholder="Handelsregisternummer eingeben..." 6000 value=""> 6001 </div> 6002 6003 </div> 6004 </div> 6005 6006 <div class="pickware-dhl-component-address-form-container"> 6007 6008 6009<div 6010 class="pickware-dhl-special-address-radio-group pickware-dhl-address-radio-group" 6011 pickware-dhl-address-form 6012> 6013 <div> 6014 <input 6015 type="radio" 6016 value="regular" 6017 name="pickwareDhlAddressRadioGroup" 6018 class="pickware-dhl-radio-button-regular" 6019 id="1974954814pickwareDhlAddressRadioButtonRegular" 6020 > 6021 6022 <label for="1974954814pickwareDhlAddressRadioButtonRegular"> 6023 Regulär 6024 </label> 6025 </div> 6026 6027 <div> 6028 <input 6029 type="radio" 6030 value="packstation" 6031 name="pickwareDhlAddressRadioGroup" 6032 class="pickware-dhl-radio-button-packstation" 6033 id="1974954814pickwareDhlAddressRadioButtonPackstation" 6034 > 6035 6036 <label for="1974954814pickwareDhlAddressRadioButtonPackstation"> 6037 DHL Packstation 6038 <img 6039 class="pickware-dhl-address-radio-logo" 6040 src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAN8AAAClCAIAAABTIr/cAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QAAAAAAAD5Q7t/AAAAB3RJTUUH5AsRCCQPsTBfUAAADQZJREFUeNrt22uQZGV9x/H//zmXPqdneu7Ty4bNxhhLQAOuFwxILKNSChKheBFCkVTCIhpYX6SSyhurNHmfW+UNsyAiKVDKGIMRjAHCzawlmCBQKlUq3iIblum590xPnz6X558X0zPTMzuz+/RMz/Kfyu/zYmtrdueZ032+c/rp5zzN8hwB6GRe7wMA2BbqBL1QJ+iFOkEv1Al6oU7QC3WCXqgT9EKdoBfqBL1QJ+iFOkEv1Al6oU7QC3WCXqgT9EKdoBfqBL1QJ+iFOkEv1Al6oU7QC3WCXqgT9EKdoBfqBL1QJ+iFOkEv1Al6oU7QC3WCXqgT9EKdoBfqBL1QJ+iFOkEv1Al6oU7QC3WCXqgT9EKdoBfqBL1QJ+iFOkEv1Al6oU7QC3WCXqgT9EKdoBfqBL1QJ+iFOkEv1Al6oU7QC3WCXqgT9EKdoBfqBL1QJ+iFOkEv1Al6oU7QC3WCXqgT9EKdoBfqBL1QJ+iFOkEv//U+AAd8Dn+JhMju5bFtOf7uB/H2+GG+TtTXaSg7ZRYeC22Lee2LvM1/5k1/l86vt79/059MzES+eH0UVG14qPCrlgO3k8eUz/HCI6Viifns/1nEcjBuBz+cmrKsHRox2QbPPxLmM+bsozCJJW/ADl2deoNCQsRkW1x/NExfc/j2lRGEvLIMXpX6o3b9MFTSXSeTXebaZ+O5h8NdjkPbJ93+N0McSjAq5SP50DWt8pGcPTrTyWOSjGbuj6a/GIlLykKmROf96bKJZMOwQrMPlmrHY5u5PRRD4x9LTN/6IAv/Hp76+7JdPvMj3GDsppbXL8rTJO11Cs3+S2nh0ZBNF0/9jn+WtDg9ya1XwsUTwcgNrbE/SDZc5E6z8Fhp9sESEbHLC6vQ8LWt4etSMh3RG1o8EUzfH0nhNoilwSvT0ZsS9omEyNDyC/7UPZEkxI5n0lLlimz8aJNL+6BOxe+KDC1+O5i+P5J879Ps+KHsUVHnqXuj6fsiybf9b8vf92t3R3aZXY5NLPW9Ix+7JeHOC6eh1s+82kRczLsOEl1YVP8k8SqykmZ2ykzeEaeTxvU0Wiq9wVaPNb3hfZAm6a3TUOvnXm0iLuaczlyPMVFBs18pLb8QbPEMGcomTW0iTl91y8JSeNBWjzWDql2fzjIVC1w7Hic/8ZwGEQpG5cCxZvhrBdn2nGfqc/Hy93x2PIdC3oBUb2tGby72xVsiUlrn2pl72e3M7c0x5AtcfzLYfCKZbMJTn48az7tlIWRiqd6alC/OO4eSgmYeiOonAsc0OaCxP0r6fytrDyI099XS/CPdTMc9Gr2xVfmddL+kSTrnnZLR9P1R/alALPX+BYjJ9WJDlPzcs03eNPucfyic/7eS+48bvj4dvKq14YuG6v8Rzny5tHIVdDF0VTp8fYu4Pd1c+nYwfV8kmfOcx9LgB9KRGxM2e/CU7hl9dRpKX/GyV03/5dlevKYXCyZ52dt2Qnm2Y2v8VzB1byQtt1cdof73ZGM3Nzmi9RANNX/g1+6K7RK7DCKW+t6Wj9/aNLGQJTKU/o83ORFns+z4ayaW4guK6m2JV5F9dOEkjXVaCg8X5/9VY8s0u3rzfvqllw01f+T/8i/68xmn6Wz0G4WJVy+chtKTZnIizqaN69XXIxPQ7D9Fm5pY+m8/fcV5znqePfDJZnDQrvRdLHLtzij5kec+3QxGOias+4q+OlcWaE5fXmGSlBeeCLKa27KzL/2X5qU3Fp3r3pLy/DfCfNYhTUvhQTv0kZ
6040RM+7JnG1z7bNx8yTkLIrJUfzqQp4LND8Xx5pCQiWX8Y0n5SHvOKpZmvxQtPB26TsfXJqyXZfsuTdJZ59aYFh4PTv1N2TacLp4ckP+ZRulNBRXrX5z/Rjj3ULhyi+VMhDii8aNJ/NbVtzKWZv+5VH/cOYs1ZhfTE6bh69Khq9O1oRafCGe+VKKiixeQDRPW/Waf1Gmo+X2/dndsG05zNbI08MG08t6OC4ah5Rf9qc9HkjiNMHxta+iajiy+GUx/8ZyuvIqlymX52M0Jh+3VzeTHXu3OuKi7PQOdE9byPpturlG5onTaMeY1MzkRp//rNFcTS9FFRfXjTbN2s44pe81MTsTpa2cfQSz1XZqP35y076YYav3UmzzuumbeG5ZKh231WLN9K5ypmOPaRJz8oouF9/BAx4R1f1J/7WSShKfujRrfdV1fDEbkwO3N8PCGszL/UKnxvE98lu0dYql02B441vTHV9+FzPHk8Tj5iXcu12JMRaqfaMYXrU43U5q+L1p8JmDnF+hNE9Z9Sn2dRHNfD+e+7rq+yOHGVetV/VdkpixnXSAUS+W3FvFbVk8qk21y5fKs/91uezR6Qsiv2soV2foxJFx6Y3Hwz5ddL95C/ohU3nsOj3lvsDzXm4GkIMp788onQhwIe0SGGs/5J/+yL59yXX+J3lQc/ruloGrltLWks59aIfI79j4yScokRMb1msnhaT+FSdLuNlNyQGSo/WaOSTKigsnr/rpddHc6hIiNcEDEJAVRtsOzyYH0asLYozoNzT8czj1c6mK1ZbvnSCg8YKu3N4NfsdlJ88qn+5Z/4HwrmciUJLqg8Aa6P5eWKu/Lhj/aWlszT37sTd0dFw236WZB5YvzsaPJ+voore4WuCsu6q6DRBcW1Vub7Q1yTPmMqd3pOuHe3fNO7MvYTa2+yzK7xFP3RMsvdfG0rzM0fkuz7129mVH07JXdtriou969OBOm8ofy4IC1Da7dHTe7SXPlMBovdP+gLJWP5H1H8vb2NqZ81kzeES9+K3CqylJQlfFbNqbJVNS5djxeeMJtECF/RMb+cH3v5sod3bmvhXIO5ruWhq5Oo7fkRLT8ot94MZDWjsYxJFnP3j72qE5LQx9JB96f7vKohJg9Mf1CRLNfKS08Fu7gcTptlOz8oZbKR/LzP7UcvqG9/Ucymr4vWno2cNo0KcQxVT/e7Ls063zL0t7n8Z/OgwQ0fjTpf0+2dmtq4fFw7l/DrjYG7IxYKl9SVG9veoNCOZUvyQ//7RLzjnbZMZkyda4x70aP6jS09ExQf9Jtx812LPW9Ix+6rsUBLZ4Ipr+w9+uLQkRUuTw778+apV9fv9G38Ghp7qsOi/arhq9tDf1uuuFLhuqP72KfB1Mxy7NfjooGd/vL1jVLwZg9cKwZHrbpz7zpB0qOm1a3xjT6e634YlWv7EzZKdP4brCTyfsKIX9YRm5ocUitn67u7NzLa4YU5PXL8EfTsT9O/LHV5SdDy99b3Vbstrba/+7VxdGOlf/kh17trtgu7mifB7WnFtkp5xv6O38WiEs0fjTpuzSTJs9+reQ6mdkGGxq8MlX2yl7Q8HWtgQ+mOx/BEpfIH7XFPNfu3MudnUJiiQPquzgfvalV+e10/TNuhrJJM3lHnDpmYal0qGNxdAVTPmMmJ+LWL10H2bDPY/Ug/VEbHiqyad/1Ixk7NXRNa+jalJjIl7Ebk9Ebkl0Nx+QNiLpX9uWX/KXv+E77M7b69sEr0+hQIRnNPBDVnw56f19YSISYyfRLfGEx+KG08r7UHxFa28fEZJs8dU+0/LzvtOgtZPqk+onm+r14ai9CTf9jtPSs28q5EG+5bC7kDUn1tuS1f4iTlz2xxNz7SY5Y6n9nvvJmbumZYOnZHb1J34Rp8MNpr7bf9+yVPfmhN/dgqesPVhORpfIl+ejvCxE1vhPMPxJ6FWmfiTOf3dP+df29raz+ycSGuCTegITn2/iivPz2PH5zYVY+mrPxGaw/GSx+K/AGxbGDketbA1du3mq+eCKoPxV4A26DCA1d07HPY+M/9b0rO/zXRf2bYeM5Pz1piiWWnHv2Syvkj9rqJ5vBQZv+wpv6XOT6GZIzjskexb9ZRBf05uLZo/VOpnzKZFM72pAjFIxbf9ySUHbK5PMbB5Gtv2WLv6+swkjHF4WIiAMyZfEGxKtYLlH7ZqZsMWZ60iuWXN8QsJHwV+3mD20Kpa+aou76PDBLcMie6cO7hohIWlzUuVhiaZHYHl1ChbyKhIeKlbu16SmvJ9dmJgnOt95Abz5V17N7RbSblx5Zf3l1HaSrnyUdP+IMur1ybDlmTwbZ8vHuxfLF6puwXg7u+Igc9G7K3ZNj6t0D24mebJjYo10Xe/rMvL5P+/b2ww46+P8KdYJeqBP0Qp2gF+oEvVAn6IU6QS/UCXqhTtALdYJeqBP0Qp2gF+oEvVAn6IU6QS/UCXqhTtALdYJeqBP0Qp2gF+oEvVAn6IU6QS/UCXqhTtALdYJeqBP0Qp2gF+oEvVAn6IU6QS/UCXqhTtALdYJeqBP0Qp2gF+oEvVAn6IU6QS/UCXqhTtALdYJeqBP0Qp2gF+oEvVAn6IU6QS/UCXqhTtALdYJeqBP0Qp2gF+oEvVAn6IU6QS/UCXqhTtALdYJeqBP0Qp2gF+oEvVAn6IU6QS/UCXqhTtALdYJeqBP0Qp2g1/8ByN/uJ+xC8uUAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjAtMTEtMTdUMDg6MzY6MTUtMDU6MDB1rBfnAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIwLTExLTE3VDA4OjM2OjE1LTA1OjAwBPGvWwAAAABJRU5ErkJggg==" 6041 alt="" 6042 role="presentation" 6043 /> 6044 6045 </label> 6046 </div> 6047 <div> 6048 <input 6049 type="radio" 6050 value="post-office" 6051 name="pickwareDhlAddressRadioGroup" 6052 class="pickware-dhl-radio-button-post-office" 6053 id="1974954814pickwareDhlAddressRadioButtonPostOffice" 6054 > 6055 6056 <label for="1974954814pickwareDhlAddressRadioButtonPostOffice"> 6057 Postfiliale 6058 <img 6059 class="pickware-dhl-address-radio-logo" 6060 src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAN8AAAClCAIAAABTIr/cAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QAAAAAAAD5Q7t/AAAAB3RJTUUH5AsRCCQPsTBfUAAADQZJREFUeNrt22uQZGV9x/H//zmXPqdneu7Ty4bNxhhLQAOuFwxILKNSChKheBFCkVTCIhpYX6SSyhurNHmfW+UNsyAiKVDKGIMRjAHCzawlmCBQKlUq3iIblum590xPnz6X558X0zPTMzuz+/RMz/Kfyu/zYmtrdueZ032+c/rp5zzN8hwB6GRe7wMA2BbqBL1QJ+iFOkEv1Al6oU7QC3WCXqgT9EKdoBfqBL1QJ+iFOkEv1Al6oU7QC3WCXqgT9EKdoBfqBL1QJ+iFOkEv1Al6oU7QC3WCXqgT9EKdoBfqBL1QJ+iFOkEv1Al6oU7QC3WCXqgT9EKdoBfqBL1QJ+iFOkEv1Al6oU7QC3WCXqgT9EKdoBfqBL1QJ+iFOkEv1Al6oU7QC3WCXqgT9EKdoBfqBL1QJ+iFOkEv1Al6oU7QC3WCXqgT9EKdoBfqBL1QJ+iFOkEv1Al6oU7QC3WCXqgT9EKdoBfqBL1QJ+iFOkEv//U+AAd8Dn+JhMju5bFtOf7uB/H2+GG+TtTXaSg7ZRYeC22Lee2LvM1/5k1/l86vt79/059MzES+eH0UVG14qPCrlgO3k8eUz/HCI6Viifns/1nEcjBuBz+cmrKsHRox2QbPPxLmM+bsozCJJW/ADl2deoNCQsRkW1x/NExfc/j2lRGEvLIMXpX6o3b9MFTSXSeTXebaZ+O5h8NdjkPbJ93+N0McSjAq5SP50DWt8pGcPTrTyWOSjGbuj6a/GIlLykKmROf96bKJZMOwQrMPlmrHY5u5PRRD4x9LTN/6IAv/Hp76+7JdPvMj3GDsppbXL8rTJO11Cs3+S2nh0ZBNF0/9jn+WtDg9ya1XwsUTwcgNrbE/SDZc5E6z8Fhp9sESEbHLC6vQ8LWt4etSMh3RG1o8EUzfH0nhNoilwSvT0ZsS9omEyNDyC/7UPZEkxI5n0lLlimz8aJNL+6BOxe+KDC1+O5i+P5J879Ps+KHsUVHnqXuj6fsiybf9b8vf92t3R3aZXY5NLPW9Ix+7JeHOC6eh1s+82kRczLsOEl1YVP8k8SqykmZ2ykzeEaeTxvU0Wiq9wVaPNb3hfZAm6a3TUOvnXm0iLuaczlyPMVFBs18pLb8QbPEMGcomTW0iTl91y8JSeNBWjzWDql2fzjIVC1w7Hic/8ZwGEQpG5cCxZvhrBdn2nGfqc/Hy93x2PIdC3oBUb2tGby72xVsiUlrn2pl72e3M7c0x5AtcfzLYfCKZbMJTn48az7tlIWRiqd6alC/OO4eSgmYeiOonAsc0OaCxP0r6fytrDyI099XS/CPdTMc9Gr2xVfmddL+kSTrnnZLR9P1R/alALPX+BYjJ9WJDlPzcs03eNPucfyic/7eS+48bvj4dvKq14YuG6v8Rzny5tHIVdDF0VTp8fYu4Pd1c+nYwfV8kmfOcx9LgB9KRGxM2e/CU7hl9dRpKX/GyV03/5dlevKYXCyZ52dt2Qnm2Y2v8VzB1byQtt1cdof73ZGM3Nzmi9RANNX/g1+6K7RK7DCKW+t6Wj9/aNLGQJTKU/o83ORFns+z4ayaW4guK6m2JV5F9dOEkjXVaCg8X5/9VY8s0u3rzfvqllw01f+T/8i/68xmn6Wz0G4WJVy+chtKTZnIizqaN69XXIxPQ7D9Fm5pY+m8/fcV5znqePfDJZnDQrvRdLHLtzij5kec+3QxGOias+4q+OlcWaE5fXmGSlBeeCLKa27KzL/2X5qU3Fp3r3pLy/DfCfNYhTUvhQTv0kZ
6060RM+7JnG1z7bNx8yTkLIrJUfzqQp4LND8Xx5pCQiWX8Y0n5SHvOKpZmvxQtPB26TsfXJqyXZfsuTdJZ59aYFh4PTv1N2TacLp4ckP+ZRulNBRXrX5z/Rjj3ULhyi+VMhDii8aNJ/NbVtzKWZv+5VH/cOYs1ZhfTE6bh69Khq9O1oRafCGe+VKKiixeQDRPW/Waf1Gmo+X2/dndsG05zNbI08MG08t6OC4ah5Rf9qc9HkjiNMHxta+iajiy+GUx/8ZyuvIqlymX52M0Jh+3VzeTHXu3OuKi7PQOdE9byPpturlG5onTaMeY1MzkRp//rNFcTS9FFRfXjTbN2s44pe81MTsTpa2cfQSz1XZqP35y076YYav3UmzzuumbeG5ZKh231WLN9K5ypmOPaRJz8oouF9/BAx4R1f1J/7WSShKfujRrfdV1fDEbkwO3N8PCGszL/UKnxvE98lu0dYql02B441vTHV9+FzPHk8Tj5iXcu12JMRaqfaMYXrU43U5q+L1p8JmDnF+hNE9Z9Sn2dRHNfD+e+7rq+yOHGVetV/VdkpixnXSAUS+W3FvFbVk8qk21y5fKs/91uezR6Qsiv2soV2foxJFx6Y3Hwz5ddL95C/ohU3nsOj3lvsDzXm4GkIMp788onQhwIe0SGGs/5J/+yL59yXX+J3lQc/ruloGrltLWks59aIfI79j4yScokRMb1msnhaT+FSdLuNlNyQGSo/WaOSTKigsnr/rpddHc6hIiNcEDEJAVRtsOzyYH0asLYozoNzT8czj1c6mK1ZbvnSCg8YKu3N4NfsdlJ88qn+5Z/4HwrmciUJLqg8Aa6P5eWKu/Lhj/aWlszT37sTd0dFw236WZB5YvzsaPJ+voore4WuCsu6q6DRBcW1Vub7Q1yTPmMqd3pOuHe3fNO7MvYTa2+yzK7xFP3RMsvdfG0rzM0fkuz7129mVH07JXdtriou969OBOm8ofy4IC1Da7dHTe7SXPlMBovdP+gLJWP5H1H8vb2NqZ81kzeES9+K3CqylJQlfFbNqbJVNS5djxeeMJtECF/RMb+cH3v5sod3bmvhXIO5ruWhq5Oo7fkRLT8ot94MZDWjsYxJFnP3j72qE5LQx9JB96f7vKohJg9Mf1CRLNfKS08Fu7gcTptlOz8oZbKR/LzP7UcvqG9/Ucymr4vWno2cNo0KcQxVT/e7Ls063zL0t7n8Z/OgwQ0fjTpf0+2dmtq4fFw7l/DrjYG7IxYKl9SVG9veoNCOZUvyQ//7RLzjnbZMZkyda4x70aP6jS09ExQf9Jtx812LPW9Ix+6rsUBLZ4Ipr+w9+uLQkRUuTw778+apV9fv9G38Ghp7qsOi/arhq9tDf1uuuFLhuqP72KfB1Mxy7NfjooGd/vL1jVLwZg9cKwZHrbpz7zpB0qOm1a3xjT6e634YlWv7EzZKdP4brCTyfsKIX9YRm5ocUitn67u7NzLa4YU5PXL8EfTsT9O/LHV5SdDy99b3Vbstrba/+7VxdGOlf/kh17trtgu7mifB7WnFtkp5xv6O38WiEs0fjTpuzSTJs9+reQ6mdkGGxq8MlX2yl7Q8HWtgQ+mOx/BEpfIH7XFPNfu3MudnUJiiQPquzgfvalV+e10/TNuhrJJM3lHnDpmYal0qGNxdAVTPmMmJ+LWL10H2bDPY/Ug/VEbHiqyad/1Ixk7NXRNa+jalJjIl7Ebk9Ebkl0Nx+QNiLpX9uWX/KXv+E77M7b69sEr0+hQIRnNPBDVnw56f19YSISYyfRLfGEx+KG08r7UHxFa28fEZJs8dU+0/LzvtOgtZPqk+onm+r14ai9CTf9jtPSs28q5EG+5bC7kDUn1tuS1f4iTlz2xxNz7SY5Y6n9nvvJmbumZYOnZHb1J34Rp8MNpr7bf9+yVPfmhN/dgqesPVhORpfIl+ejvCxE1vhPMPxJ6FWmfiTOf3dP+df29raz+ycSGuCTegITn2/iivPz2PH5zYVY+mrPxGaw/GSx+K/AGxbGDketbA1du3mq+eCKoPxV4A26DCA1d07HPY+M/9b0rO/zXRf2bYeM5Pz1piiWWnHv2Syvkj9rqJ5vBQZv+wpv6XOT6GZIzjskexb9ZRBf05uLZo/VOpnzKZFM72pAjFIxbf9ySUHbK5PMbB5Gtv2WLv6+swkjHF4WIiAMyZfEGxKtYLlH7ZqZsMWZ60iuWXN8QsJHwV+3mD20Kpa+aou76PDBLcMie6cO7hohIWlzUuVhiaZHYHl1ChbyKhIeKlbu16SmvJ9dmJgnOt95Abz5V17N7RbSblx5Zf3l1HaSrnyUdP+IMur1ybDlmTwbZ8vHuxfLF6puwXg7u+Igc9G7K3ZNj6t0D24mebJjYo10Xe/rMvL5P+/b2ww46+P8KdYJeqBP0Qp2gF+oEvVAn6IU6QS/UCXqhTtALdYJeqBP0Qp2gF+oEvVAn6IU6QS/UCXqhTtALdYJeqBP0Qp2gF+oEvVAn6IU6QS/UCXqhTtALdYJeqBP0Qp2gF+oEvVAn6IU6QS/UCXqhTtALdYJeqBP0Qp2gF+oEvVAn6IU6QS/UCXqhTtALdYJeqBP0Qp2gF+oEvVAn6IU6QS/UCXqhTtALdYJeqBP0Qp2gF+oEvVAn6IU6QS/UCXqhTtALdYJeqBP0Qp2gF+oEvVAn6IU6QS/UCXqhTtALdYJeqBP0Qp2g1/8ByN/uJ+xC8uUAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjAtMTEtMTdUMDg6MzY6MTUtMDU6MDB1rBfnAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIwLTExLTE3VDA4OjM2OjE1LTA1OjAwBPGvWwAAAABJRU5ErkJggg==" 6061 alt="" 6062 role="presentation" 6063 /> 6064 6065 </label> 6066 </div> 6067 <div> 6068 <input 6069 type="radio" 6070 value="paketshop" 6071 name="pickwareDhlAddressRadioGroup" 6072 class="pickware-dhl-radio-button-paketshop" 6073 id="1974954814pickwareDhlAddressRadioButtonPaketshop" 6074 > 6075 6076 <label for="1974954814pickwareDhlAddressRadioButtonPaketshop"> 6077 DHL Paketshop 6078 <img 6079 class="pickware-dhl-address-radio-logo" 6080 src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAN8AAAClCAIAAABTIr/cAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QAAAAAAAD5Q7t/AAAAB3RJTUUH5AsRCCQPsTBfUAAADQZJREFUeNrt22uQZGV9x/H//zmXPqdneu7Ty4bNxhhLQAOuFwxILKNSChKheBFCkVTCIhpYX6SSyhurNHmfW+UNsyAiKVDKGIMRjAHCzawlmCBQKlUq3iIblum590xPnz6X558X0zPTMzuz+/RMz/Kfyu/zYmtrdueZ032+c/rp5zzN8hwB6GRe7wMA2BbqBL1QJ+iFOkEv1Al6oU7QC3WCXqgT9EKdoBfqBL1QJ+iFOkEv1Al6oU7QC3WCXqgT9EKdoBfqBL1QJ+iFOkEv1Al6oU7QC3WCXqgT9EKdoBfqBL1QJ+iFOkEv1Al6oU7QC3WCXqgT9EKdoBfqBL1QJ+iFOkEv1Al6oU7QC3WCXqgT9EKdoBfqBL1QJ+iFOkEv1Al6oU7QC3WCXqgT9EKdoBfqBL1QJ+iFOkEv1Al6oU7QC3WCXqgT9EKdoBfqBL1QJ+iFOkEv1Al6oU7QC3WCXqgT9EKdoBfqBL1QJ+iFOkEv//U+AAd8Dn+JhMju5bFtOf7uB/H2+GG+TtTXaSg7ZRYeC22Lee2LvM1/5k1/l86vt79/059MzES+eH0UVG14qPCrlgO3k8eUz/HCI6Viifns/1nEcjBuBz+cmrKsHRox2QbPPxLmM+bsozCJJW/ADl2deoNCQsRkW1x/NExfc/j2lRGEvLIMXpX6o3b9MFTSXSeTXebaZ+O5h8NdjkPbJ93+N0McSjAq5SP50DWt8pGcPTrTyWOSjGbuj6a/GIlLykKmROf96bKJZMOwQrMPlmrHY5u5PRRD4x9LTN/6IAv/Hp76+7JdPvMj3GDsppbXL8rTJO11Cs3+S2nh0ZBNF0/9jn+WtDg9ya1XwsUTwcgNrbE/SDZc5E6z8Fhp9sESEbHLC6vQ8LWt4etSMh3RG1o8EUzfH0nhNoilwSvT0ZsS9omEyNDyC/7UPZEkxI5n0lLlimz8aJNL+6BOxe+KDC1+O5i+P5J879Ps+KHsUVHnqXuj6fsiybf9b8vf92t3R3aZXY5NLPW9Ix+7JeHOC6eh1s+82kRczLsOEl1YVP8k8SqykmZ2ykzeEaeTxvU0Wiq9wVaPNb3hfZAm6a3TUOvnXm0iLuaczlyPMVFBs18pLb8QbPEMGcomTW0iTl91y8JSeNBWjzWDql2fzjIVC1w7Hic/8ZwGEQpG5cCxZvhrBdn2nGfqc/Hy93x2PIdC3oBUb2tGby72xVsiUlrn2pl72e3M7c0x5AtcfzLYfCKZbMJTn48az7tlIWRiqd6alC/OO4eSgmYeiOonAsc0OaCxP0r6fytrDyI099XS/CPdTMc9Gr2xVfmddL+kSTrnnZLR9P1R/alALPX+BYjJ9WJDlPzcs03eNPucfyic/7eS+48bvj4dvKq14YuG6v8Rzny5tHIVdDF0VTp8fYu4Pd1c+nYwfV8kmfOcx9LgB9KRGxM2e/CU7hl9dRpKX/GyV03/5dlevKYXCyZ52dt2Qnm2Y2v8VzB1byQtt1cdof73ZGM3Nzmi9RANNX/g1+6K7RK7DCKW+t6Wj9/aNLGQJTKU/o83ORFns+z4ayaW4guK6m2JV5F9dOEkjXVaCg8X5/9VY8s0u3rzfvqllw01f+T/8i/68xmn6Wz0G4WJVy+chtKTZnIizqaN69XXIxPQ7D9Fm5pY+m8/fcV5znqePfDJZnDQrvRdLHLtzij5kec+3QxGOias+4q+OlcWaE5fXmGSlBeeCLKa27KzL/2X5qU3Fp3r3pLy/DfCfNYhTUvhQTv0kZ
6080RM+7JnG1z7bNx8yTkLIrJUfzqQp4LND8Xx5pCQiWX8Y0n5SHvOKpZmvxQtPB26TsfXJqyXZfsuTdJZ59aYFh4PTv1N2TacLp4ckP+ZRulNBRXrX5z/Rjj3ULhyi+VMhDii8aNJ/NbVtzKWZv+5VH/cOYs1ZhfTE6bh69Khq9O1oRafCGe+VKKiixeQDRPW/Waf1Gmo+X2/dndsG05zNbI08MG08t6OC4ah5Rf9qc9HkjiNMHxta+iajiy+GUx/8ZyuvIqlymX52M0Jh+3VzeTHXu3OuKi7PQOdE9byPpturlG5onTaMeY1MzkRp//rNFcTS9FFRfXjTbN2s44pe81MTsTpa2cfQSz1XZqP35y076YYav3UmzzuumbeG5ZKh231WLN9K5ypmOPaRJz8oouF9/BAx4R1f1J/7WSShKfujRrfdV1fDEbkwO3N8PCGszL/UKnxvE98lu0dYql02B441vTHV9+FzPHk8Tj5iXcu12JMRaqfaMYXrU43U5q+L1p8JmDnF+hNE9Z9Sn2dRHNfD+e+7rq+yOHGVetV/VdkpixnXSAUS+W3FvFbVk8qk21y5fKs/91uezR6Qsiv2soV2foxJFx6Y3Hwz5ddL95C/ohU3nsOj3lvsDzXm4GkIMp788onQhwIe0SGGs/5J/+yL59yXX+J3lQc/ruloGrltLWks59aIfI79j4yScokRMb1msnhaT+FSdLuNlNyQGSo/WaOSTKigsnr/rpddHc6hIiNcEDEJAVRtsOzyYH0asLYozoNzT8czj1c6mK1ZbvnSCg8YKu3N4NfsdlJ88qn+5Z/4HwrmciUJLqg8Aa6P5eWKu/Lhj/aWlszT37sTd0dFw236WZB5YvzsaPJ+voore4WuCsu6q6DRBcW1Vub7Q1yTPmMqd3pOuHe3fNO7MvYTa2+yzK7xFP3RMsvdfG0rzM0fkuz7129mVH07JXdtriou969OBOm8ofy4IC1Da7dHTe7SXPlMBovdP+gLJWP5H1H8vb2NqZ81kzeES9+K3CqylJQlfFbNqbJVNS5djxeeMJtECF/RMb+cH3v5sod3bmvhXIO5ruWhq5Oo7fkRLT8ot94MZDWjsYxJFnP3j72qE5LQx9JB96f7vKohJg9Mf1CRLNfKS08Fu7gcTptlOz8oZbKR/LzP7UcvqG9/Ucymr4vWno2cNo0KcQxVT/e7Ls063zL0t7n8Z/OgwQ0fjTpf0+2dmtq4fFw7l/DrjYG7IxYKl9SVG9veoNCOZUvyQ//7RLzjnbZMZkyda4x70aP6jS09ExQf9Jtx812LPW9Ix+6rsUBLZ4Ipr+w9+uLQkRUuTw778+apV9fv9G38Ghp7qsOi/arhq9tDf1uuuFLhuqP72KfB1Mxy7NfjooGd/vL1jVLwZg9cKwZHrbpz7zpB0qOm1a3xjT6e634YlWv7EzZKdP4brCTyfsKIX9YRm5ocUitn67u7NzLa4YU5PXL8EfTsT9O/LHV5SdDy99b3Vbstrba/+7VxdGOlf/kh17trtgu7mifB7WnFtkp5xv6O38WiEs0fjTpuzSTJs9+reQ6mdkGGxq8MlX2yl7Q8HWtgQ+mOx/BEpfIH7XFPNfu3MudnUJiiQPquzgfvalV+e10/TNuhrJJM3lHnDpmYal0qGNxdAVTPmMmJ+LWL10H2bDPY/Ug/VEbHiqyad/1Ixk7NXRNa+jalJjIl7Ebk9Ebkl0Nx+QNiLpX9uWX/KXv+E77M7b69sEr0+hQIRnNPBDVnw56f19YSISYyfRLfGEx+KG08r7UHxFa28fEZJs8dU+0/LzvtOgtZPqk+onm+r14ai9CTf9jtPSs28q5EG+5bC7kDUn1tuS1f4iTlz2xxNz7SY5Y6n9nvvJmbumZYOnZHb1J34Rp8MNpr7bf9+yVPfmhN/dgqesPVhORpfIl+ejvCxE1vhPMPxJ6FWmfiTOf3dP+df29raz+ycSGuCTegITn2/iivPz2PH5zYVY+mrPxGaw/GSx+K/AGxbGDketbA1du3mq+eCKoPxV4A26DCA1d07HPY+M/9b0rO/zXRf2bYeM5Pz1piiWWnHv2Syvkj9rqJ5vBQZv+wpv6XOT6GZIzjskexb9ZRBf05uLZo/VOpnzKZFM72pAjFIxbf9ySUHbK5PMbB5Gtv2WLv6+swkjHF4WIiAMyZfEGxKtYLlH7ZqZsMWZ60iuWXN8QsJHwV+3mD20Kpa+aou76PDBLcMie6cO7hohIWlzUuVhiaZHYHl1ChbyKhIeKlbu16SmvJ9dmJgnOt95Abz5V17N7RbSblx5Zf3l1HaSrnyUdP+IMur1ybDlmTwbZ8vHuxfLF6puwXg7u+Igc9G7K3ZNj6t0D24mebJjYo10Xe/rMvL5P+/b2ww46+P8KdYJeqBP0Qp2gF+oEvVAn6IU6QS/UCXqhTtALdYJeqBP0Qp2gF+oEvVAn6IU6QS/UCXqhTtALdYJeqBP0Qp2gF+oEvVAn6IU6QS/UCXqhTtALdYJeqBP0Qp2gF+oEvVAn6IU6QS/UCXqhTtALdYJeqBP0Qp2gF+oEvVAn6IU6QS/UCXqhTtALdYJeqBP0Qp2gF+oEvVAn6IU6QS/UCXqhTtALdYJeqBP0Qp2gF+oEvVAn6IU6QS/UCXqhTtALdYJeqBP0Qp2gF+oEvVAn6IU6QS/UCXqhTtALdYJeqBP0Qp2g1/8ByN/uJ+xC8uUAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjAtMTEtMTdUMDg6MzY6MTUtMDU6MDB1rBfnAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIwLTExLTE3VDA4OjM2OjE1LTA1OjAwBPGvWwAAAABJRU5ErkJggg==" 6081 alt="" 6082 role="presentation" 6083 /> 6084 6085 </label> 6086 </div> 6087 </div> 6088 6089 6090 6091 <div class="pickware-dhl-regular-address-form-container"> 6092 <div class="pickware-dhl-regular-address-form"> 6093 6094 6095 6096 <div class="row g-2"> 6097 6098 6099 6100 6101 6102 <div class="col-12 qubix-street-house-col"> 6103 <div class="row gx-2 qubix-street-house-row"> 6104 6105 6106 6107 6108 6109 6110 6111 <div class="form-group col-8"> 6112 <label class="form-label" for="shippingAddress-AddressStreet"> 6113 StraÃe 6114 6115 <span class="form-required-label" aria-hidden="true">*</span> 6116 </label> 6117 6118 6119 6120 6121 <input type="text" 6122 class="form-control" 6123 id="shippingAddress-AddressStreet" 6124 name="shippingAddress[street]" 6125 aria-describedby="shippingAddress-AddressStreet
6125-feedback" 6126 autocomplete="shipping address-line1" data-validation="required" aria-required="true" > 6127 6128 6129 6130 6131 <div id="shippingAddress-AddressStreet-feedback" class="form-field-feedback"> 6132 </div> 6133 </div> 6134 6135 6136 6137 6138 6139 6140 6141 6142 <div class="form-group col-4"> 6143 <label class="form-label" for="shippingAddress-AddressHouseNumber"> 6144 Hausnummer 6145 6146 <span class="form-required-label" aria-hidden="true">*</span> 6147 </label> 6148 6149 6150 6151 6152 <input type="text" 6153 class="form-control" 6154 id="shippingAddress-AddressHouseNumber" 6155 name="shippingAddress[houseNumber]" 6156 aria-describedby="shippingAddress-AddressHouseNumber-feedback" 6157 autocomplete="off" data-validation="required" aria-required="true" > 6158 6159 6160 6161 6162 <div id="shippingAddress-AddressHouseNumber-feedback" class="form-field-feedback"> 6163 </div> 6164 </div> 6165 </div> 6166 </div> 6167 6168 6169 6170 6171 6172 6173 6174 6175 6176 6177 6178 6179 6180 6181 6182 6183 6184 6185 6186 6187 <div class="form-group col-md-3 col-4"> 6188 <label class="form-label" for="shippingAddressAddressZipcode"> 6189 PLZ 6190 6191 </label> 6192 6193 6194 6195 6196 <input type="text" 6197 class="form-control" 6198 id="shippingAddressAddressZipcode" 6199 name="shippingAddress[zipcode]" 6200 aria-describedby="shippingAddressAddressZipcode-feedback" 6201 autocomplete="shipping postal-code" data-input-name="zipcodeInput" > 6202 6203 6204 6205 6206 <div id="shippingAddressAddressZipcode-feedback" class="form-field-feedback"> 6207 </div> 6208 </div> 6209 6210 6211 6212 6213 6214 6215 6216 6217 6218 6219 6220 <div class="form-group col-md-3 col-8"> 6221 <label class="form-label" for="shippingAddressAddressCity"> 6222 Ort 6223 6224 <span class="form-required-label" aria-hidden="true">*</span> 6225 </label> 6226 6227 6228 6229 6230 <input type="text" 6231 class="form-control" 6232 id="shippingAddressAddressCity" 6233 name="shippingAddress[city]" 6234 aria-describedby="shippingAddressAddressCity-feedback" 6235 autocomplete="shipping address-level2" data-validation="required" aria-required="true" > 6236 6237 6238 6239 6240 <div id="shippingAddressAddressCity-feedback" class="form-field-feedback"> 6241 </div> 6242 </div> 6243 6244 6245 6246 6247 6248 6249 </div> 6250 6251 6252 <div 6253 class="row g-2 country-and-state-form-elements" 6254 data-country-state-select="true" 6255 data-country-state-select-options="{"scopeElementSelector":".register-shipping","prefix":"shippingAddress"}" 6256 > 6257 6258 6259 6260 6261 6262 6263 6264 6265 6266 6267 6268 <div class="form-group col-md-6"> 6269 <label class="form-label" for="shippingAddressAddressCountry"> 6270 Land 6271
6272 <span class="form-required-label" aria-hidden="true">*</span> 6273 </label> 6274 6275 6276 6277 6278 <select class="form-select country-select" 6279 id="shippingAddressAddressCountry" 6280 name="shippingAddress[countryId]" 6281 aria-describedby="shippingAddressAddressCountry-feedback" 6282 autocomplete="shipping country-name" data-validation="required" aria-required="true" data-initial-country-id=72bfb449ab0040299ccc5b6eefd129f3 > 6283 <option value="72bfb449ab0040299ccc5b6eefd129f3" 6284 selected="selected" data-zipcode-required="1" 6285 data-vat-id-required="" 6286 data-state-required="" 6287 > 6288 6289 Deutschland 6290 6291 </option> 6292 <option value="d7f11893dbf04dfab5077ba37372bf9b" 6293 data-zipcode-required="" 6294 data-vat-id-required="" 6295 data-state-required="" 6296 > 6297 6298 Belgien 6299 6300 </option> 6301 <option value="cf71a64ab9dc46f99ce43ce7c39e6212" 6302 data-zipcode-required="" 6303 data-vat-id-required="" 6304 data-state-required="" 6305 > 6306 6307 Kroatien 6308 6309 </option> 6310 <option value="46b0f19244b34817ae2d53c270a2fd1d" 6311 data-zipcode-required="" 6312 data-vat-id-required="" 6313 data-state-required="" 6314 > 6315 6316 Dänemark 6317 6318 </option> 6319 <option value="c02be3c2bc5f44b69f593a3425607ec1" 6320 data-zipcode-required="" 6321 data-vat-id-required="" 6322 data-state-required="" 6323 > 6324 6325 Frankreich 6326 6327 </option> 6328 <option value="23d58066c66c4baa9360d0eebc3d80a8" 6329 data-zipcode-required="" 6330 data-vat-id-required="" 6331 data-state-required="" 6332 > 6333 6334 Griechenland 6335 6336 </option> 6337 <option value="86c7b16517e542189d0ffe3bbe45704a" 6338 data-zipcode-required="" 6339 data-vat-id-required="" 6340 data-state-required="" 6341 > 6342 6343 Irland 6344 6345 </option> 6346 <option value="61bb466b8d6242b38e37bea2f7ccd29c" 6347 data-zipcode-required="" 6348 data-vat-id-required="" 6349 data-state-required="" 6350 > 6351 6352 Italien 6353 6354 </option> 6355 <option value="6a9d58d7dc334389a5cf1c8d7c93d37a" 6356 data-zipcode-required="" 6357 data-vat-id-required="" 6358 data-state-required="" 6359 > 6360 6361 Luxemburg 6362 6363 </option> 6364 <option value="d88c313641d940b9b1de35e2a5cb7cc3" 6365 data-zipcode-required="" 6366 data-vat-id-required="" 6367 data-state-required="" 6368 > 6369 6370 Niederlande 6371 6372 </option> 6373 <option value="91735f460164480fbf281fa9690fcba3" 6374 data-zipcode-required="" 6375 data-vat-id-required="" 6376 data-state-required="" 6377 > 6378 6379 Ãsterreich 6380 6381 </option> 6382 <option value="a1fc18919bb04a58aa814e5ca6054196" 6383 data-zipcode-required="" 6384 data-vat-id-required="" 6385 data-state-required="" 6386 > 6387 6388 Polen 6389 6390 </option> 6391 <option value="5ec76ccacd3d4e3ab4b1bdc042f5ec28" 6392 data-zipcode-required="" 6393 data-vat-id-required="" 6394 data-state-required="" 6395 > 6396 6397 Schweden 6398 6399 </option> 6400 <option value="fe3311d8c50248f8a7d7076171527ce0" 6401 data-zipcode-required="" 6402 data-vat-id-required="" 6403 data-state-required="" 6404 > 6405 6406 Schweiz 6407 6408 </option> 6409 <option value="6d5aaf85527146c989f08e51e1470bc2" 6410 data-zipcode-required="" 6411 data-vat-id-required="" 6412 data-state-required="" 6413 > 6414 6415 Slowakische Republik 6416 6417 </option> 6418 <option value="f34ca5ca12624b89b238f08710060c27" 6419 data-zipcode-required="" 6420 data-vat-id-required="" 6421 data-state-required="" 6422 > 6423 6424 Spanien 6425 6426 </option> 6427 <option value="496911aae00043b0b43ade76ed027b1c" 6428 data-zipcode-required="" 6429 data-vat-id-required="" 6430 data-state-required="" 6431 > 6432 6433 Tschechien 6434 6435 </option> 6436 6437 </select> 6438 6439 6440 6441 6442 <div id="shippingAddressAddressCountry-feedback" class="form-field-feedback"> 6443 </div> 6444 </div> 6445 6446 6447 6448 6449 6450 6451 6452 6453 6454 6455 6456 <div class="form-group col-md-6 d-none"> 6457 <label class="form-label" for="shippingAddressAddressCountryState"> 6458 Bundesland 6459 6460 </label> 6461 6462 6463 6464 6465 <select class="form-select country-state-select" 6466 id="shippingAddressAddressCountryState" 6467 name="shippingAddress[countryStateId]" 6468 aria-describedby="shippingAddressAddressCountryState-feedback" 6469 autocomplete="shipping address-level1" > 6470 <option value="" 6471 selected="selected" 6472 data-placeholder-option="true"> 6473 Bundesland auswählen ... 6474 </option> 6475 6476 </select> 6477 6478 6479 6480 6481 <div id="shippingAddressAddressCountryState-feedback" class="form-field-feedback"> 6482 </div> 6483 </div> 6484 6485 </div> 6486 6487 <div class="row g-2"> 6488 6489 6490 6491 6492 6493 6494 6495 6496 6497 6498 6499 <div class="form-group col-md-6"> 6500 <label class="form-label" for="shippingAddressAddressPhoneNumber"> 6501 Telefonnummer 6502 6503 </label> 6504 6505 6506 6507 6508 <input type="text" 6509 class="form-control" 6510 id="shippingAddressAddressPhoneNumber"
6511 name="shippingAddress[phoneNumber]" 6512 aria-describedby="shippingAddressAddressPhoneNumber-feedback" 6513 autocomplete="shipping tel" > 6514 6515 6516 6517 6518 <div id="shippingAddressAddressPhoneNumber-feedback" class="form-field-feedback"> 6519 </div> 6520 </div> 6521 6522 6523 </div> 6524 6525 </div> 6526 </div> 6527 6528 <div class="pickware-dhl-packstation-address-form-container"> 6529 <div class="pickware-dhl-packstation-address-form"> 6530 6531 6532 6533 6534 6535 6536 6537<div class="row g-2"> 6538 <div class="form-group col-md-3 col-6"> 6539 <!-- Custom Field: Packstationsnummer/Postfilialnummer --> 6540 <label 6541 class="form-label" 6542 for="1521340882" 6543 > 6544 Packstationsnummer* 6545 </label> 6546 6547 <input 6548 type="text" 6549 id="1521340882" 6550 class="form-control pickware-dhl-packstation-number" 6551 placeholder="Packstationsnummer eingeben..." 6552 value="" 6553 required="required" 6554 > 6555 6556 </div> 6557 6558 <div class="form-group col-md-3 col-6"> 6559 <!-- AdditionalAddressLine1 = Postnummer --> 6560 <label 6561 class="form-label" 6562 for="shippingAddressAdditionalAddressLine1" 6563 > 6564 Postnummer * </label> 6565 6566 <input 6567 id="shippingAddressAdditionalAddressLine1" 6568 type="text" 6569 class="form-control" 6570 name="shippingAddress[additionalAddressLine1]" 6571 placeholder="Postnummer eingeben..." 6572 value="" 6573 required="required" > 6574 6575 </div> 6576 6577 <div class="form-group col-md-2 col-4"> 6578 6579 <label 6580 class="form-label" 6581 for="shippingAddressAddressZipcode" 6582 > 6583 PLZ* 6584 </label> 6585 6586 <input 6587 type="text" 6588 id="shippingAddressAddressZipcode" 6589 class="form-control pickware-dhl-packstation-zipcode" 6590 placeholder="PLZ eingeben ..." 6591 name="shippingAddress[zipcode]" 6592 value="" 6593 required="required" 6594 > 6595 6596 6597 </div> 6598 6599 <div class="form-group col-md-4 col-8"> 6600 6601 <label 6602 class="form-label" 6603 for="shippingAddressAddressCity" 6604 > 6605 Ort* 6606 </label> 6607 6608 <input 6609 type="text" 6610 id="shippingAddressAddressCity" 6611 class="form-control pickware-dhl-packstation-city " 6612 placeholder="Ort eingeben ..." 6613 name="shippingAddress[city]" 6614 value="" 6615 required="required" 6616 > 6617 6618 6619 </div> 6620</div> 6621 6622<div class="row g-2"> 6623 6624 6625 6626 6627 6628 6629 6630 6631 6632 6633 <div class="form-group col-md-6"> 6634 <label class="form-label" for="shippingAddressAddressPhoneNumber"> 6635 Telefonnummer 6636 6637 </label> 6638 6639 6640 6641 6642 <input type="text" 6643 class="form-control" 6644 id="shippingAddressAddressPhoneNumber" 6645 name="shippingAddress[phoneNumber]" 6646 aria-describedby="shippingAddressAddressPhoneNumber-feedback" 6647 autocomplete="shipping tel" > 6648 6649 6650 6651 6652 <div id="shippingAddressAddressPhoneNumber-feedback" class="form-field-feedback"> 6653 </div> 6654 </div> 6655 6656 6657 6658</div> 6659 6660<!-- Hidden form fields --> 6661<div class="d-none"> 6662 <select 6663 id="shippingAddressAddressCountry" 6664 class="pickware-dhl-packstation-country" 6665 name="shippingAddress[countryId]" 6666 required="required" 6667 > 6668 <option 6669 value="72bfb449ab0040299ccc5b6eefd129f3" 6670 iso="DE" 6671 > 6672 Deutschland 6673 </option> 6674 <option 6675 value="d7f11893dbf04dfab5077ba37372bf9b" 6676 iso="BE" 6677 > 6678 Belgien 6679 </option> 6680 <option 6681 value="cf71a64ab9dc46f99ce43ce7c39e6212" 6682 iso="HR" 6683 > 6684 Kroatien 6685 </option> 6686 <option 6687 value="46b0f19244b34817ae2d53c270a2fd1d" 6688 iso="DK" 6689 > 6690 Dänemark 6691 </option> 6692 <option 6693 value="c02be3c2bc5f44b69f593a3425607ec1" 6694 iso="FR" 6695 > 6696 Frankreich 6697 </option> 6698 <option 6699 value="23d58066c66c4baa9360d0eebc3d80a8" 6700 iso="GR" 6701 > 6702 Griechenland 6703 </option> 6704 <option 6705 value="86c7b16517e542189d0ffe3bbe45704a" 6706 iso="IE" 6707 > 6708 Irland 6709 </option> 6710 <option 6711 value="61bb466b8d6242b38e37bea2f7ccd29c" 6712 iso="IT" 6713 > 6714 Italien 6715 </option> 6716 <option 6717 value="6a9d58d7dc334389a5cf1c8d7c93d37a" 6718 iso="LU" 6719 > 6720 Luxemburg 6721 </option> 6722 <option 6723 value="d88c313641d940b9b1de35e2a5cb7cc3" 6724 iso="NL" 6725 > 6726 Niederlande 6727 </option> 6728 <option 6729 value="91735f460164480fbf281fa9690fcba3" 6730 iso="AT" 6731 > 6732 Ãsterreich 6733 </option> 6734 <option 6735 value="a1fc18919bb04a58aa814e5ca6054196" 6736 iso="PL" 6737 > 6738 Polen 6739 </option> 6740 <option 6741 value="5ec76ccacd3d4e3ab4b1bdc042f5ec28" 6742 iso="SE" 6743 > 6744 Schweden 6745 </option> 6746 <option 6747 value="fe3311d8c50248f8a7d7076171527ce0" 6748 iso="CH" 6749 > 6750 Schweiz 6751 </option> 6752 <option 6753 value="6d5aaf85527146c989f08e51e1470bc2" 6754 iso="SK" 6755 > 6756 Slowakische Republik 6757 </option> 6758 <option 6759 value="f34ca5ca12624b89b238f08710060c27" 6760 iso="ES" 6761 > 6762 Spanien 6763 </option> 6764 <option 6765 value="496911aae00043b0b43ade76ed027b1c" 6766 iso="CZ" 6767 > 6768 Tschechien 6769 </option> 6770 </select> 6771 6772 <input 6773 type="text" 6774 id="shippingAddressAddressStreet" 6775 class="pickware-dhl-packstation-street" 6776 name="shippingAddress[street]" 6777 value="" 6778 required="required" 6779 > 6780 6781</div> 6782 </div> 6783 </div> 6784 6785 <div class="pickware-dhl-post-office-address-form-container"> 6786 <div class="pickware-dhl-post-office-address-form"> 6787 6788 6789 6790 6791 6792 6793 6794<div class="row g-2"> 6795 <div class="form-group col-md-3 col-6"> 6796 <!-- Custom Field: Packstationsnummer/Postfilialnummer --> 6797 <label 6798 class="form-label" 6799 for="44887430" 6800 > 6801 Postfilialennummer* 6802 </label> 6803 6804 <input 6805 type="text" 6806 id="44887430" 6807 class="form-control pickware-dhl-post-office-number" 6808 placeholder="Postfilialennummer eingeben..." 6809 value="" 6810 required="required" 6811 > 6812 6813 </div> 6814 6815 <div class="form-group col-md-3 col-6"> 6816 <!-- AdditionalAddressLine1 = Postnummer --> 6817 <label 6818 class="form-label" 6819 for="shippingAddressAdditionalAddressLine1" 6820 > 6821 Postnummer * </label> 6822 6823 <input 6824 id="shippingAddressAdditionalAddressLine1" 6825 type="text" 6826 class="form-control" 6827 name="shippingAddress[additionalAddressLine1]" 6828 placeholder="Postnummer eingeben..." 6829 value="" 6830 required="required" > 6831 6832 </div> 6833 6834 <div class="form-group col-md-2 col-4"> 6835 6836 <label 6837 class="form-label" 6838 for="shippingAddressAddressZipcode" 6839 > 6840 PLZ* 6841 </label> 6842 6843 <input 6844 type="text" 6845 id="shippingAddressAddressZipcode" 6846 class="form-control pickware-dhl-post-office-zipcode" 6847 placeholder="PLZ eingeben ..." 6848 name="shippingAddress[zipcode]" 6849 value="" 6850 required="required" 6851 > 6852 6853 6854 </div> 6855 6856 <div class="form-group col-md-4 col-8"> 6857 6858 <label 6859 class="form-label" 6860 for="shippingAddressAddressCity" 6861 > 6862 Ort* 6863 </label> 6864 6865 <input 6866 type="text" 6867 id="shippingAddressAddressCity" 6868 class="form-control pickware-dhl-post-office-city " 6869 placeholder="Ort eingeben ..." 6870 name="shippingAddress[city]" 6871 value="" 6872 required="required" 6873 > 6874 6875 6876 </div> 6877</div> 6878 6879<div class="row g-2"> 6880 6881 6882 6883 6884 6885 6886 6887 6888 6889 6890 <div class="form-group col-md-6"> 6891 <label class="form-label" for="shippingAddressAddressPhoneNumber"> 6892 Telefonnummer 6893 6894 </label> 6895 6896 6897 6898 6899 <input type="text" 6900 class="form-control" 6901 id="shippingAddressAddressPhoneNumber"
6902 name="shippingAddress[phoneNumber]" 6903 aria-describedby="shippingAddressAddressPhoneNumber-feedback" 6904 autocomplete="shipping tel" > 6905 6906 6907 6908 6909 <div id="shippingAddressAddressPhoneNumber-feedback" class="form-field-feedback"> 6910 </div> 6911 </div> 6912 6913 6914 6915</div> 6916 6917<!-- Hidden form fields --> 6918<div class="d-none"> 6919 <select 6920 id="shippingAddressAddressCountry" 6921 class="pickware-dhl-post-office-country" 6922 name="shippingAddress[countryId]" 6923 required="required" 6924 > 6925 <option 6926 value="72bfb449ab0040299ccc5b6eefd129f3" 6927 iso="DE" 6928 > 6929 Deutschland 6930 </option> 6931 <option 6932 value="d7f11893dbf04dfab5077ba37372bf9b" 6933 iso="BE" 6934 > 6935 Belgien 6936 </option> 6937 <option 6938 value="cf71a64ab9dc46f99ce43ce7c39e6212" 6939 iso="HR" 6940 > 6941 Kroatien 6942 </option> 6943 <option 6944 value="46b0f19244b34817ae2d53c270a2fd1d" 6945 iso="DK" 6946 > 6947 Dänemark 6948 </option> 6949 <option 6950 value="c02be3c2bc5f44b69f593a3425607ec1" 6951 iso="FR" 6952 > 6953 Frankreich 6954 </option> 6955 <option 6956 value="23d58066c66c4baa9360d0eebc3d80a8" 6957 iso="GR" 6958 > 6959 Griechenland 6960 </option> 6961 <option 6962 value="86c7b16517e542189d0ffe3bbe45704a" 6963 iso="IE" 6964 > 6965 Irland 6966 </option> 6967 <option 6968 value="61bb466b8d6242b38e37bea2f7ccd29c" 6969 iso="IT" 6970 > 6971 Italien 6972 </option> 6973 <option 6974 value="6a9d58d7dc334389a5cf1c8d7c93d37a" 6975 iso="LU" 6976 > 6977 Luxemburg 6978 </option> 6979 <option 6980 value="d88c313641d940b9b1de35e2a5cb7cc3" 6981 iso="NL" 6982 > 6983 Niederlande 6984 </option> 6985 <option 6986 value="91735f460164480fbf281fa9690fcba3" 6987 iso="AT" 6988 > 6989 Ãsterreich 6990 </option> 6991 <option 6992 value="a1fc18919bb04a58aa814e5ca6054196" 6993 iso="PL" 6994 > 6995 Polen 6996 </option> 6997 <option 6998 value="5ec76ccacd3d4e3ab4b1bdc042f5ec28" 6999 iso="SE" 7000 > 7001 Schweden 7002 </option> 7003 <option 7004 value="fe3311d8c50248f8a7d7076171527ce0" 7005 iso="CH" 7006 > 7007 Schweiz 7008 </option> 7009 <option 7010 value="6d5aaf85527146c989f08e51e1470bc2" 7011 iso="SK" 7012 > 7013 Slowakische Republik 7014 </option> 7015 <option 7016 value="f34ca5ca12624b89b238f08710060c27" 7017 iso="ES" 7018 > 7019 Spanien 7020 </option> 7021 <option 7022 value="496911aae00043b0b43ade76ed027b1c" 7023 iso="CZ" 7024 > 7025 Tschechien 7026 </option> 7027 </select> 7028 7029 <input 7030 type="text" 7031 id="shippingAddressAddressStreet" 7032 class="pickware-dhl-post-office-street" 7033 name="shippingAddress[street]" 7034 value="" 7035 required="required" 7036 > 7037 7038</div> 7039 </div> 7040 </div> 7041 7042 <div class="pickware-dhl-paketshop-address-form-container"> 7043 <div class="pickware-dhl-paketshop-address-form"> 7044 7045 7046 7047 7048 7049 7050 7051<div class="row g-2"> 7052 <div class="form-group col-md-3 col-6"> 7053 <!-- Custom Field: Packstationsnummer/Postfilialnummer --> 7054 <label 7055 class="form-label" 7056 for="650735035" 7057 > 7058 Paketshopnummer* 7059 </label> 7060 7061 <input 7062 type="text" 7063 id="650735035" 7064 class="form-control pickware-dhl-paketshop-number" 7065 placeholder="Paketshopnummer eingeben..." 7066 value="" 7067 required="required" 7068 > 7069 7070 </div> 7071 7072 <div class="form-group col-md-3 col-6"> 7073 <!-- AdditionalAddressLine1 = Postnummer --> 7074 <label 7075 class="form-label" 7076 for="shippingAddressAdditionalAddressLine1" 7077 > 7078 Postnummer * </label> 7079 7080 <input 7081 id="shippingAddressAdditionalAddressLine1" 7082 type="text" 7083 class="form-control" 7084 name="shippingAddress[additionalAddressLine1]" 7085 placeholder="Postnummer eingeben..." 7086 value="" 7087 required="required" > 7088 7089 </div> 7090 7091 <div class="form-group col-md-2 col-4"> 7092 7093 <label 7094 class="form-label" 7095 for="shippingAddressAddressZipcode" 7096 > 7097 PLZ* 7098 </label> 7099 7100 <input 7101 type="text" 7102 id="shippingAddressAddressZipcode" 7103 class="form-control pickware-dhl-paketshop-zipcode" 7104 placeholder="PLZ eingeben ..." 7105 name="shippingAddress[zipcode]" 7106 value="" 7107 required="required" 7108 > 7109 7110 7111 </div> 7112 7113 <div class="form-group col-md-4 col-8"> 7114 7115 <label 7116 class="form-label" 7117 for="shippingAddressAddressCity" 7118 > 7119 Ort* 7120 </label> 7121 7122 <input 7123 type="text" 7124 id="shippingAddressAddressCity" 7125 class="form-control pickware-dhl-paketshop-city " 7126 placeholder="Ort eingeben ..." 7127 name="shippingAddress[city]" 7128 value="" 7129 required="required" 7130 > 7131 7132 7133 </div> 7134</div> 7135 7136<div class="row g-2"> 7137 7138 7139 7140 7141 7142 7143 7144 7145 7146 7147 <div class="form-group col-md-6"> 7148 <label class="form-label" for="shippingAddressAddressPhoneNumber"> 7149 Telefonnummer 7150 7151 </label> 7152 7153 7154 7155 7156 <input type="text" 7157 class="form-control" 7158 id="shippingAddressAddressPhoneNumber"
7159 name="shippingAddress[phoneNumber]" 7160 aria-describedby="shippingAddressAddressPhoneNumber-feedback" 7161 autocomplete="shipping tel" > 7162 7163 7164 7165 7166 <div id="shippingAddressAddressPhoneNumber-feedback" class="form-field-feedback"> 7167 </div> 7168 </div> 7169 7170 7171 7172</div> 7173 7174<!-- Hidden form fields --> 7175<div class="d-none"> 7176 <select 7177 id="shippingAddressAddressCountry" 7178 class="pickware-dhl-paketshop-country" 7179 name="shippingAddress[countryId]" 7180 required="required" 7181 > 7182 <option 7183 value="72bfb449ab0040299ccc5b6eefd129f3" 7184 iso="DE" 7185 > 7186 Deutschland 7187 </option> 7188 <option 7189 value="d7f11893dbf04dfab5077ba37372bf9b" 7190 iso="BE" 7191 > 7192 Belgien 7193 </option> 7194 <option 7195 value="cf71a64ab9dc46f99ce43ce7c39e6212" 7196 iso="HR" 7197 > 7198 Kroatien 7199 </option> 7200 <option 7201 value="46b0f19244b34817ae2d53c270a2fd1d" 7202 iso="DK" 7203 > 7204 Dänemark 7205 </option> 7206 <option 7207 value="c02be3c2bc5f44b69f593a3425607ec1" 7208 iso="FR" 7209 > 7210 Frankreich 7211 </option> 7212 <option 7213 value="23d58066c66c4baa9360d0eebc3d80a8" 7214 iso="GR" 7215 > 7216 Griechenland 7217 </option> 7218 <option 7219 value="86c7b16517e542189d0ffe3bbe45704a" 7220 iso="IE" 7221 > 7222 Irland 7223 </option> 7224 <option 7225 value="61bb466b8d6242b38e37bea2f7ccd29c" 7226 iso="IT" 7227 > 7228 Italien 7229 </option> 7230 <option 7231 value="6a9d58d7dc334389a5cf1c8d7c93d37a" 7232 iso="LU" 7233 > 7234 Luxemburg 7235 </option> 7236 <option 7237 value="d88c313641d940b9b1de35e2a5cb7cc3" 7238 iso="NL" 7239 > 7240 Niederlande 7241 </option> 7242 <option 7243 value="91735f460164480fbf281fa9690fcba3" 7244 iso="AT" 7245 > 7246 Ãsterreich 7247 </option> 7248 <option 7249 value="a1fc18919bb04a58aa814e5ca6054196" 7250 iso="PL" 7251 > 7252 Polen 7253 </option> 7254 <option 7255 value="5ec76ccacd3d4e3ab4b1bdc042f5ec28" 7256 iso="SE" 7257 > 7258 Schweden 7259 </option> 7260 <option 7261 value="fe3311d8c50248f8a7d7076171527ce0" 7262 iso="CH" 7263 > 7264 Schweiz 7265 </option> 7266 <option 7267 value="6d5aaf85527146c989f08e51e1470bc2" 7268 iso="SK" 7269 > 7270 Slowakische Republik 7271 </option> 7272 <option 7273 value="f34ca5ca12624b89b238f08710060c27" 7274 iso="ES" 7275 > 7276 Spanien 7277 </option> 7278 <option 7279 value="496911aae00043b0b43ade76ed027b1c" 7280 iso="CZ" 7281 > 7282 Tschechien 7283 </option> 7284 </select> 7285 7286 <input 7287 type="text" 7288 id="shippingAddressAddressStreet" 7289 class="pickware-dhl-paketshop-street" 7290 name="shippingAddress[street]" 7291 value="" 7292 required="required" 7293 > 7294 7295</div> 7296 </div> 7297 </div> 7298 7299 </div> 7300 </fieldset> 7301 7302 7303 <button type="button" 7304 class="pickware-dhl-location-finder__select-on-map-button btn btn-outline-secondary d-none" 7305 data-bs-toggle="modal" 7306 data-bs-target=".pickware-dhl-location-finder-modal" 7307 title="Auf Karte auswählen"> 7308 Auf Karte auswählen 7309 </button> 7310 7311 <div class="modal fade pickware-dhl-location-finder-modal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true"> 7312 <div class="modal-dialog modal-lg" role="document"> 7313 <div class="modal-content"> 7314 <div class="modal-header"> 7315 <h5 class="modal-title pickware-dhl-location-finder-modal__title"> 7316 Standortsuche 7317 </h5> 7318 <button type="button" class="btn-close close" data-bs-dismiss="modal" aria-label="Close"></button> 7319 </div> 7320 <div class="modal-body"> 7321 7322 7323 <div class="card pickware-dhl-dsgvo-confirmation-window d-none"> 7324 <img src="https://echt-vital.de/bundles/pickwaredhl/img/location-finder/dummy-map.png?1790936532" 7325 alt="a screenshot of google maps acting as a placeholder"/> 7326 <div class ="pickware-dhl-dsgvo-question-overlay"> 7327 <p> 7328 Mit Klick auf âKarte aktivierenâ stimmen Sie der Datenfreigabe an Google Maps zu. Weitere Informationen finden Sie in unserer 7329 <a 7330 data-toggle="modal" 7331 data-bs-toggle="modal" 7332 data-url="/widgets/cms/29fa963cc096457f9a5191aee1f87616" 7333 href="/widgets/cms/29fa963cc096457f9a5191aee1f87616" 7334 target="_blank" 7335 rel="noopener noreferrer" 7336 > 7337 Datenschutzerklärung 7338 </a>. 7339 </p> 7340 <button class ="d-flex btn btn-primary col pickware-dhl-dsgvo-confirmation-window__accept-button"> 7341 Karte aktivieren 7342 </button> 7343 </div> 7344 </div> 7345 <div 7346 class="pickware-dhl-location-finder d-none" 7347 data-google-maps-api-key="" 7348 data-google-maps-zoom-threshold="15" 7349 > 7350 <div class="card"> 7351 7352 <div class="card-body"> 7353 <div 7354 data-action="/pickware-dhl/location-finder/locations" 7355 class="pickware-dhl-location-finder-form" 7356 > 7357 <div class="pickware-dhl-location-finder-form__actions d-flex flex-row align-items-end"> 7358 <div> 7359 <label 7360 class="form-label" 7361 for="pickware-dhl-location-finder-form__zipcode-input" 7362 > 7363 PLZ* 7364 </label> 7365 7366 <input type="text" 7367 id="pickware-dhl-location-finder-form__zipcode-input" 7368 class="form-control pickware-dhl-location-finder-form__zipcode-input" 7369 placeholder="PLZ eingeben ..." 7370 > 7371 </div> 7372 7373 <div> 7374 <button type="button" 7375 class="d-flex pickware-dhl-location-finder-form__submit-button btn btn-primary col" 7376 title="Suchen">
7377 <span class="align-self-center spinner-border pickware-dhl-location-finder-form__loading-spinner d-none"></span> 7378 Suchen 7379 </button> 7380 </div> 7381 </div> 7382 </div> 7383 7384 <div class="pickware-dhl-location-finder__map"></div> 7385 7386 <button type="button" class="pickware-dhl-location-finder__pan-to-location-button"> 7387 Aktuellen Standort anzeigen 7388 </button> 7389 7390 <div class="pickware-dhl-location-finder-map-icons d-none" 7391 data-packstation="https://echt-vital.de/bundles/pickwaredhl/img/location-finder/icon-packstation.png?1790936532" 7392 data-post-office="https://echt-vital.de/bundles/pickwaredhl/img/location-finder/icon-post-office.png?1790936532" 7393 data-paketshop="https://echt-vital.de/bundles/pickwaredhl/img/location-finder/icon-paketshop.png?1790936532" 7394 data-packstation-selected="https://echt-vital.de/bundles/pickwaredhl/img/location-finder/icon-packstation-red.png?1790936532" 7395 data-post-office-selected="https://echt-vital.de/bundles/pickwaredhl/img/location-finder/icon-post-office-red.png?1790936532" 7396 data-paketshop-selected="https://echt-vital.de/bundles/pickwaredhl/img/location-finder/icon-paketshop-red.png?1790936532" 7397 > 7398 </div> 7399 7400 <div class="pickware-dhl-location-finder-map-errors d-none"> 7401 <span class="pickware-dhl-location-finder-map-errors__geolocation-failed">Der Service für die Standortsuche ist fehlgeschlagen!</span> 7402 <span class="pickware-dhl-location-finder-map-errors__no-browser-geolocation">Dieser Browser unterstützt die Standortsuche nicht!</span> 7403 </div> 7404 7405
7405<script class="pickware-dhl-location-finder-info-popup-template" type="text/template"> 7406 <div class="pickware-dhl-location-finder-info-popup" tabindex="0"> 7407 <h4 class="pickware-dhl-location-finder-info-popup__title">${title}</h4> 7408 7409 <address class="pickware-dhl-location-finder-info-popup__address" tabindex="0">${address}</address> 7410 7411 <div class="pickware-dhl-location-finder-info-popup-icons" tabindex="0"> 7412 <img class="icon pickware-dhl-location-finder-info-popup-icons__packstation" src="https://echt-vital.de/bundles/pickwaredhl/img/location-finder/icon-packstation-red.png?1790936532" title="" alt="DHL Packstation icon"/> 7413 <img class="icon pickware-dhl-location-finder-info-popup-icons__post-office" src="https://echt-vital.de/bundles/pickwaredhl/img/location-finder/icon-post-office-red.png?1790936532" title="" alt="DHL Post Office icon"/> 7414 <img class="icon pickware-dhl-location-finder-info-popup-icons__paketshop" src="https://echt-vital.de/bundles/pickwaredhl/img/location-finder/icon-paketshop-red.png?1790936532" title="" alt="DHL Paketshop icon"/> 7415 <img class="icon pickware-dhl-location-finder-info-popup-icons__wheelchair" src="https://echt-vital.de/bundles/pickwaredhl/img/location-finder/icon-wheelchair.png?1790936532" title="" alt="Wheelchair accessibility icon"/> 7416 <img class="icon pickware-dhl-location-finder-info-popup-icons__parking" src="https://echt-vital.de/bundles/pickwaredhl/img/location-finder/icon-parking.png?1790936532" title="" alt="Parking available icon"/> 7417 </div> 7418 7419 <h5 class="pickware-dhl-location-finder-info-popup-opening-hours__title" tabindex="0">Ãffnungszeiten</h5> 7420 <ul class="pickware-dhl-location-finder-info-popup-opening-hours__content" tabindex="0"> 7421 <li>Montag: <span class="pickware-dhl-location-finder-info-popup-opening-hours__day" data-value="monday">Geschlossen</span></li> 7422 <li>Dienstag: <span class="pickware-dhl-location-finder-info-popup-opening-hours__day" data-value="tuesday">Geschlossen</span></li> 7423 <li>Mittwoch: <span class="pickware-dhl-location-finder-info-popup-opening-hours__day" data-value="wednesday">Geschlossen</span></li> 7424 <li>Donnerstag: <span class="pickware-dhl-location-finder-info-popup-opening-hours__day" data-value="thursday">Geschlossen</span></li> 7425 <li>Freitag: <span class="pickware-dhl-location-finder-info-popup-opening-hours__day" data-value="friday">Geschlossen</span></li> 7426 <li>Samstag: <span class="pickware-dhl-location-finder-info-popup-opening-hours__day" data-value="saturday">Geschlossen</span></li> 7427 <li>Sonntag: <span class="pickware-dhl-location-finder-info-popup-opening-hours__day" data-value="sunday">Geschlossen</span></li> 7428 </ul> 7429 7430 <button type="button" class="pickware-dhl-location-finder-info-popup-submit-button btn btn-secondary"> 7431 <span class="pickware-dhl-location-finder-info-popup-submit-button__select-message">Auswählen</span> 7432 <span class="pickware-dhl-location-finder-info-popup-submit-button__selected-message">Ausgewählt</span> 7433 </button> 7434 </div> 7435 </script>
7435 7436 </div> 7437 </div> 7438 </div> 7439 </div> 7440 </div> 7441 </div> 7442 </div> 7443 </div> 7444 </div> 7445 </div> 7446 7447 7448 7449 <div class="shopware_surname_confirm"> 7450 <input type="text" 7451 name="shopware_surname_confirm" 7452 class="d-none" 7453 value="" 7454 tabindex="-1" 7455 autocapitalize="off" 7456 spellcheck="false" 7457 autocorrect="off" 7458 autocomplete="new-password" 7459 > 7460 </div> 7461 7462 <div class="captcha-google-re-captcha-v3" 7463 data-google-re-captcha-v3="true" 7464 data-google-re-captcha-v3-options="{"siteKey":"6Lc8vdgrAAAAAOYICxJR1cDWZnhzqvD3GzHG0JFK"}"> 7465 <input 7466 type="text" 7467 class="d-none grecaptcha_v3-input" 7468 name="_grecaptcha_v3" 7469 data-validation="grecaptcha,required" 7470 data-validate-hidden="true" 7471 aria-describedby="grecaptcha-feedback-container"> 7472 7473 <div class="data-protection-information grecaptcha-protection-information"> 7474 Diese Seite ist durch reCAPTCHA geschützt und es gelten die <a href="https://policies.google.com/privacy?hl=de">Datenschutzrichtlinie</a> und <a href="https://policies.google.com/terms?hl=de">Nutzungsbedingungen</a>. 7475 </div> 7476 7477 <div id="grecaptcha-feedback-container" class="form-field-feedback"></div> 7478 </div> 7479 7480 <fieldset class="form-text privacy-notice"> 7481 <legend class="form-text privacy-notice-title"> 7482 <strong>Datenschutz</strong> 7483 </legend> 7484 <br> 7485 7486 <div class="data-protection-information"> 7487 <div> 7488 Ich habe die <button type="button" class="btn btn-link-inline" data-ajax-modal="true" data-url="/widgets/cms/29fa963cc096457f9a5191aee1f87616">Datenschutzbestimmungen</button> zur Kenntnis genommen und die <button type="button" class="btn btn-link-inline" data-ajax-modal="true" data-url="/widgets/cms/ea940a703b95439e8514c99399c460ee">AGB</button> gelesen und bin mit ihnen einverstanden. 7489 </div> 7490 </div> 7491 </fieldset> 7492 7493 <p class="register-required-info"> 7494 Die mit einem Stern (*) markierten Felder sind Pflichtfelder. 7495 </p> 7496 7497 <div class="register-submit d-grid col-md-6 offset-md-6"> 7498 <button type="submit" 7499 class="btn btn-primary btn-lg"> 7500 Weiter 7501 </button> 7502 </div> 7503 7504 </form> 7505 7506 </div> 7507 </div> 7508 </div> 7509 7510 </div> 7511 7512 </div> 7513 7514 </div> 7515 </div> 7516 </main> 7517 7518 7519 7520 7521 7522 7523 7524 7525 7526 7527 7528 <div class="rhweb-newsletter footer-above"> 7529 <div class="container"> 7530 <div class="rhweb-newsletter-info"> 7531 <div class="h3 newsletter-headline">Newsletter</div> 7532 <p> Sparen Sie 10 % bei Ihrer Bestellung! Melden Sie sich für unseren Newsletter an, um keine Neuheiten und Angebote zu verpassen.</p> 7533 </div> 7534 <div class="cms-block cms-block-form"> 7535 <div class="cms-element-form"> 7536 <form action="/form/newsletter" 7537 method="post" 7538 data-form-handler="true" 7539 id="cms-form-newsletter" 7540 aria-label="Newsletter abonnieren"> 7541 7542 <div class="form-content"> 7543 <div class="row g-2"> 7544 </div> 7545 7546 <div class="row g-2"> 7547 <div class="rhweb-newsletter-input-container"> 7548 <div class="rhweb-newsletter-input-container-inner"> 7549 7550 7551 7552 7553 7554 7555 7556 7557 7558 7559 <div class="form-group col-12"> 7560 <label class="form-label" for="cms-form-newsletter-form-email"> 7561 E-Mail-Adresse 7562
7563 <span class="form-required-label" aria-hidden="true">*</span> 7564 </label> 7565 7566 7567 7568 7569 <input type="email" 7570 class="form-control" 7571 id="cms-form-newsletter-form-email" 7572 name="email" 7573 aria-describedby="cms-form-newsletter-form-email-feedback" 7574 placeholder="E-Mail-Adresse eingeben ..." autocomplete="email" data-validation="required,email" aria-required="true" > 7575 7576 7577 7578 7579 <div id="cms-form-newsletter-form-email-feedback" class="form-field-feedback"> 7580 </div> 7581 </div> 7582 7583 7584 <button type="submit" class="btn"> 7585 7586 7587 <span class="icon icon-arrow-right" aria-hidden="true"> 7588 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M 12.96875 4.28125 L 11.53125 5.71875 L 21.8125 16 L 11.53125 26.28125 L 12.96875 27.71875 L 23.96875 16.71875 L 24.65625 16 L 23.96875 15.28125 Z"/></svg> 7589 </span> 7590 </button> 7591 </div> 7592 </div> 7593 </div> 7594 7595 7596 <div class="rhweb-newsletter-captcha"> 7597 7598 7599 <div class="shopware_surname_confirm"> 7600 <input type="text" 7601 name="shopware_surname_confirm" 7602 class="d-none" 7603 value="" 7604 tabindex="-1" 7605 autocapitalize="off" 7606 spellcheck="false" 7607 autocorrect="off" 7608 autocomplete="new-password" 7609 > 7610 </div> 7611 7612 <div class="captcha-google-re-captcha-v3" 7613 data-google-re-captcha-v3="true" 7614 data-google-re-captcha-v3-options="{"siteKey":"6Lc8vdgrAAAAAOYICxJR1cDWZnhzqvD3GzHG0JFK"}"> 7615 <input 7616 type="text" 7617 class="d-none grecaptcha_v3-input" 7618 name="_grecaptcha_v3" 7619 data-validation="grecaptcha,required" 7620 data-validate-hidden="true" 7621 aria-describedby="grecaptcha-feedback-container"> 7622 7623 <div class="data-protection-information grecaptcha-protection-information"> 7624 Diese Seite ist durch reCAPTCHA geschützt und es gelten die <a href="https://policies.google.com/privacy?hl=de">Datenschutzrichtlinie</a> und <a href="https://policies.google.com/terms?hl=de">Nutzungsbedingungen</a>. 7625 </div> 7626 7627 <div id="grecaptcha-feedback-container" class="form-field-feedback"></div> 7628 </div> 7629 7630 </div> 7631 7632 <div class="rhweb-newsletter-privacy"> 7633 <fieldset class="form-text privacy-notice"> 7634 <legend class="form-text privacy-notice-title"> 7635 <strong>Datenschutz</strong> 7636 </legend> 7637 <br> 7638 7639 <div class="data-protection-information"> 7640 <div> 7641 Ich habe die <button type="button" class="btn btn-link-inline" data-ajax-modal="true" data-url="/widgets/cms/29fa963cc096457f9a5191aee1f87616">Datenschutzbestimmungen</button> zur Kenntnis genommen und die <button type="button" class="btn btn-link-inline" data-ajax-modal="true" data-url="/widgets/cms/ea940a703b95439e8514c99399c460ee">AGB</button> gelesen und bin mit ihnen einverstanden. 7642 </div> 7643 </div> 7644 </fieldset> 7645 7646 </div> 7647 7648 7649 </div> 7650 7651 <div class="form-hidden-fields"> 7652 <input type="submit" class="submit--hidden d-none"> 7653 </div> 7654 7655 7656 <div class="rhweb-form-hidden-fields-addition"> 7657 <input type="hidden" name="option" value="subscribe"> 7658 </div> 7659 </form> 7660 7661 </div> 7662 </div> 7663 </div> 7664 </div> 7665 7666 <footer class="footer-main"> 7667 <div class="container"> 7668 <div 7669 id="footerColumns" 7670 class="row footer-columns" 7671 data-collapse-footer-columns="true" 7672 role="list" 7673 > 7674 7675 <div class="col-12"> 7676 <div class="ev-footer-usp">
7677 <span> 7678 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="15" height="15" aria-hidden="true"><path d="M8 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13zm3.1 4.6-3.6 4.4a.75.75 0 0 1-1.14.03L4.9 8.9a.75.75 0 1 1 1.1-1.02l.9 1 3.05-3.73a.75.75 0 1 1 1.16.95z" fill="#3B6B4A"/></svg> 7679 Versandkostenfrei ab 75 € 7680 </span> 7681 <span> 7682 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="15" height="15" aria-hidden="true"><path d="M8 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13zm3.1 4.6-3.6 4.4a.75.75 0 0 1-1.14.03L4.9 8.9a.75.75 0 1 1 1.1-1.02l.9 1 3.05-3.73a.75.75 0 1 1 1.16.95z" fill="#3B6B4A"/></svg> 7683 100 Tage Geld-zurück-Garantie 7684 </span> 7685 <span> 7686 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="15" height="15" aria-hidden="true"><path d="M8 1.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13zm3.1 4.6-3.6 4.4a.75.75 0 0 1-1.14.03L4.9 8.9a.75.75 0 1 1 1.1-1.02l.9 1 3.05-3.73a.75.75 0 1 1 1.16.95z" fill="#3B6B4A"/></svg> 7687 Trusted Shops »Hervorragend« (4,9/5) 7688 </span> 7689 </div> 7690 </div> 7691 7692 <div class="col-md-3 footer-column js-footer-column"> 7693 <div class="footer-column-headline footer-headline js-footer-column-headline" id="collapseFooterEvTitle1" role="listitem"> 7694 Einkaufen 7695 <button class="footer-column-toggle btn btn-link btn-link-inline js-collapse-footer-column-trigger" 7696 data-bs-target="#collapseFooterEv1" data-bs-toggle="collapse" 7697 aria-controls="collapseFooterEv1" aria-labelledby="collapseFooterEvTitle1" aria-expanded="true"> 7698 7699 <span class="icon icon-plus icon-footer-plus" aria-hidden="true"> 7700 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><defs><path d="M11 11V3c0-.5523.4477-1 1-1s1 .4477 1 1v8h8c.5523 0 1 .4477 1 1s-.4477 1-1 1h-8v8c0 .5523-.4477 1-1 1s-1-.4477-1-1v-8H3c-.5523 0-1-.4477-1-1s.4477-1 1-1h8z" id="icons-default-plus" /></defs><use xlink:href="#icons-default-plus" fill="#758CA3" fill-rule="evenodd" /></svg> 7701 </span> 7702 7703 <span class="icon icon-minus icon-footer-minus" aria-hidden="true"> 7704 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><defs><path id="icons-default-minus" d="M3 13h18c.5523 0 1-.4477 1-1s-.4477-1-1-1H3c-.5523 0-1 .4477-1 1s.4477 1 1 1z" /></defs><use xlink:href="#icons-default-minus" fill="#758CA3" fill-rule="evenodd" /></svg> 7705 </span> 7706 </button> 7707 </div> 7708 <div id="collapseFooterEv1" class="footer-column-content collapse js-footer-column-content" aria-labelledby="collapseFooterEvTitle1" role="listitem"> 7709 <div class="footer-column-content-inner"> 7710 <ul class="list-unstyled"> 7711 <li class="footer-link-item"><a class="footer-link" href="/mitdenker/themen/bestseller" title="Bestseller">Bestseller</a></li> 7712 <li class="footer-link-item"><a class="footer-link" href="/aktionen" title="Aktuelle Aktion">Aktuelle Aktion</a></li> 7713 <li class="footer-link-item"><a class="footer-link" href="/mitdenker/produkte" title="Alle Produkte & Sparsets">Alle Produkte & Sparsets</a></li> 7714 <li class="footer-link-item"><a class="footer-link" href="/mitdenker/themen" title="Themenwelten">Themenwelten</a></li> 7715 </ul> 7716 </div> 7717 </div> 7718 </div> 7719 7720 <div class="col-md-3 footer-column js-footer-column"> 7721 <div class="footer-column-headline footer-headline js-footer-column-headline" id="collapseFooterEvTitle2" role="listitem"> 7722 Wissen & Mitdenken 7723 <button class="footer-column-toggle btn btn-link btn-link-inline js-collapse-footer-column-trigger" 7724 data-bs-target="#collapseFooterEv2" data-bs-toggle="collapse" 7725 aria-controls="collapseFooterEv2" aria-labelledby="collapseFooterEvTitle2" aria-expanded="true"> 7726
7727 <span class="icon icon-plus icon-footer-plus" aria-hidden="true"> 7728 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><use xlink:href="#icons-default-plus" fill="#758CA3" fill-rule="evenodd" /></svg> 7729 </span> 7730 7731 <span class="icon icon-minus icon-footer-minus" aria-hidden="true"> 7732 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><use xlink:href="#icons-default-minus" fill="#758CA3" fill-rule="evenodd" /></svg> 7733 </span> 7734 </button> 7735 </div> 7736 <div id="collapseFooterEv2" class="footer-column-content collapse js-footer-column-content" aria-labelledby="collapseFooterEvTitle2" role="listitem"> 7737 <div class="footer-column-content-inner"> 7738 <ul class="list-unstyled"> 7739 <li class="footer-link-item"><a class="footer-link" href="/blog" title="Mitdenker-Blog">Mitdenker-Blog</a></li> 7740 <li class="footer-link-item"><a class="footer-link" href="/mitdenker/bibliothek" title="eBook-Bibliothek">eBook-Bibliothek</a></li> 7741 <li class="footer-link-item"><a class="footer-link" href="/newsletter" title="Newsletter-Anmeldung - Der Mitdenker-Brief">Newsletter-Anmeldung</a></li> 7742 <li class="footer-link-item"><a class="footer-link" href="/informationen/mitdenker-werben-mitdenker/" title="Mitdenker werben Mitdenker">Mitdenker werben Mitdenker</a></li> 7743 </ul> 7744 </div> 7745 </div> 7746 </div> 7747 7748 <div class="col-md-3 footer-column js-footer-column"> 7749 <div class="footer-column-headline footer-headline js-footer-column-headline" id="collapseFooterEvTitle3" role="listitem"> 7750 Hilfe & Service 7751 <button class="footer-column-toggle btn btn-link btn-link-inline js-collapse-footer-column-trigger" 7752 data-bs-target="#collapseFooterEv3" data-bs-toggle="collapse" 7753 aria-controls="collapseFooterEv3" aria-labelledby="collapseFooterEvTitle3" aria-expanded="true"> 7754 7755 <span class="icon icon-plus icon-footer-plus" aria-hidden="true"> 7756 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><use xlink:href="#icons-default-plus" fill="#758CA3" fill-rule="evenodd" /></svg> 7757 </span> 7758 7759 <span class="icon icon-minus icon-footer-minus" aria-hidden="true"> 7760 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><use xlink:href="#icons-default-minus" fill="#758CA3" fill-rule="evenodd" /></svg> 7761 </span> 7762 </button> 7763 </div> 7764 <div id="collapseFooterEv3" class="footer-column-content collapse js-footer-column-content" aria-labelledby="collapseFooterEvTitle3" role="listitem"> 7765 <div class="footer-column-content-inner"> 7766 <ul class="list-unstyled"> 7767 <li class="footer-link-item"><a class="footer-link" href="/shop-service/kontaktformular/" title="Kontakt">Kontakt</a></li> 7768 <li class="footer-link-item"><a class="footer-link" href="/shop-service/zahlung-versand/" title="Zahlung & Versand">Zahlung & Versand</a></li> 7769 <li class="footer-link-item"><a class="footer-link" href="/100-tage-garantie" title="100 Tage Geld-zurück-Garantie">100 Tage Geld-zurück-Garantie</a></li> 7770 <li class="footer-link-item"><a class="footer-link" href="/shop-service/widerrufsrecht/" title="Widerrufsrecht">Widerrufsrecht</a></li> 7771 </ul> 7772 </div> 7773 </div> 7774 </div> 7775 7776 <div class="col-md-3 footer-column js-footer-column"> 7777 <div class="footer-column-headline footer-headline js-footer-column-headline" id="collapseFooterEvTitle4" role="listitem"> 7778 Echt Vital 7779 <button class="footer-column-toggle btn btn-link btn-link-inline js-collapse-footer-column-trigger" 7780 data-bs-target="#collapseFooterEv4" data-bs-toggle="collapse" 7781 aria-controls="collapseFooterEv4" aria-labelledby="collapseFooterEvTitle4" aria-expanded="true"> 7782
7783 <span class="icon icon-plus icon-footer-plus" aria-hidden="true"> 7784 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><use xlink:href="#icons-default-plus" fill="#758CA3" fill-rule="evenodd" /></svg> 7785 </span> 7786 7787 <span class="icon icon-minus icon-footer-minus" aria-hidden="true"> 7788 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><use xlink:href="#icons-default-minus" fill="#758CA3" fill-rule="evenodd" /></svg> 7789 </span> 7790 </button> 7791 </div> 7792 <div id="collapseFooterEv4" class="footer-column-content collapse js-footer-column-content" aria-labelledby="collapseFooterEvTitle4" role="listitem"> 7793 <div class="footer-column-content-inner"> 7794 <ul class="list-unstyled"> 7795 <li class="footer-link-item"><a class="footer-link" href="/ueber-uns" title="Unser Manifest">Unser Manifest</a></li> 7796 <li class="footer-link-item"><a class="footer-link" href="/bio-zertifizierung/" title="Bio-Zertifizierung">Bio-Zertifizierung</a></li> 7797 <li class="footer-link-item"><a class="footer-link" href="https://www.trustedshops.de/bewertung/info_XC7DD5FD247350BDB2715FB9DB269C030.html" target="_blank" rel="noopener" title="Kundenbewertungen bei Trusted Shops">Kundenbewertungen</a></li> 7798 <li class="footer-link-item"><a class="footer-link" href="/haendler-shop" title="Händler Shop">Händler Shop</a></li> 7799 <li class="footer-link-item"><a class="footer-link" href="/ratgeber/heilpraktiker-apotheken-aerzte/" title="Heilpraktiker, Apotheken & Ärzte">Heilpraktiker & Apotheken</a></li> 7800 <li class="footer-link-item"><a class="footer-link" href="/informationen/karriere/" title="Karriere">Karriere</a></li> 7801 </ul> 7802 </div> 7803 </div> 7804 </div> 7805 </div> 7806 7807 7808 7809 </div> 7810 7811 <div class="footer-bottom ev-footer-bottom"> 7812 7813 <div class="ev-footer-brand"> 7814 <div class="header-logo-main text-center"> 7815 <a class="header-logo-main-link" 7816 href="/" 7817 title="Zur Startseite gehen"> 7818 7819 7820 <picture class="header-logo-picture d-block m-auto"> 7821 7822 7823 <img src="https://echtvital.cstatic.com/media/7f/d3/88/1679934207/ev-logo.webp?ts=1679934207" 7824 alt="Zur Startseite gehen" 7825 class="img-fluid header-logo-main-img"> 7826 </picture> 7827 7828 </a> 7829 </div> 7830 </div> 7831 7832 <div class="ev-paybadges" role="group" aria-label="Akzeptierte Zahlungsarten"> 7833 <span class="ev-paybadge" role="img" aria-label="PayPal" title="PayPal"> 7834 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 34 24" width="34" height="24" aria-hidden="true" focusable="false"> 7835 <g transform="matrix(.28902 0 0 .28903 9.5087 4.8629)"> 7836 <path d="m38.914 13.35c0 5.574-5.144 12.15-12.927 12.15h-7.497l-0.368 2.322-1.749 11.178h-9.317l5.605-36h15.095c5.083 0 9.082 2.833 10.555 6.77a9.687 9.687 0 0 1 0.603 3.58z" fill="#002991"/> 7837 <path d="m44.284 23.7a12.894 12.894 0 0 1-12.754 10.8h-5.206l-2.167 13.5h-9.267l1.483-9 1.75-11.178 0.367-2.322h7.497c7.773 0 12.927-6.576 12.927-12.15 3.825 1.974 6.055 5.963 5.37 10.35z" fill="#60cdff"/> 7838 <path d="m38.914 13.35c-1.604-0.839-3.549-1.35-5.666-1.35h-12.64l-2.118 13.5h7.497c7.773 0 12.927-6.576 12.927-12.15z" fill="#008cff"/> 7839 </g> 7840 </svg> 7841 </span>
7842 <span class="ev-paybadge" role="img" aria-label="Visa" title="Visa"> 7843 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 34 24" width="39" height="27.5" aria-hidden="true" focusable="false"> 7844 <path d="m10.75 15.858h-2.0598l-1.5446-6.0658c-0.07331-0.27903-0.22897-0.52571-0.45794-0.64197-0.57143-0.29217-1.2011-0.5247-1.888-0.64197v-0.23354h3.3181c0.45794 0 0.8014 0.35081 0.85864 0.75823l0.8014 4.3755 2.0588-5.1337h2.0025zm4.2339 0h-1.9452l1.6018-7.5833h1.9452zm4.1185-5.4825c0.0572-0.40845 0.4007-0.64198 0.8014-0.64198 0.6297-0.05864 1.3156 0.05863 1.888 0.34978l0.3435-1.6327c-0.5725-0.23354-1.2021-0.35081-1.7735-0.35081-1.8881 0-3.2619 1.0504-3.2619 2.5082 0 1.1091 0.9731 1.6914 1.6601 2.0422 0.7431 0.3498 1.0293 0.5833 0.9721 0.9331 0 0.5247-0.5725 0.7583-1.1439 0.7583-0.6869 0-1.3738-0.1749-2.0025-0.4671l-0.3434 1.6337c0.6869 0.2912 1.43 0.4085 2.117 0.4085 2.1169 0.0576 3.4325-0.9918 3.4325-2.5669 0-1.9836-2.6894-2.0998-2.6894-2.9743zm9.4973 5.4825-1.5445-7.5833h-1.6591c-0.3434 0-0.6869 0.23354-0.8014 0.58334l-2.8601 7h2.0025l0.3997-1.108h2.4604l0.229 1.108zm-2.9174-5.5411 0.5715 2.858h-1.6018z" clip-rule="evenodd" fill="#172b85" fill-rule="evenodd"/> 7845 </svg> 7846 </span> 7847 <span class="ev-paybadge" role="img" aria-label="Mastercard" title="Mastercard"> 7848 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 34 24" width="34" height="24" aria-hidden="true" focusable="false"> 7849 <g clip-rule="evenodd" fill-rule="evenodd"> 7850 <path d="m17.179 16.829c-1.1841 0.9981-2.72 1.6006-4.3983 1.6006-3.7449 0-6.7807-2.9997-6.7807-6.7 0-3.7003 3.0358-6.7 6.7807-6.7 1.6783 0 3.2142 0.6025 4.3983 1.6005 1.184-0.99804 2.7199-1.6005 4.3983-1.6005 3.7448 0 6.7807 2.9997 6.7807 6.7 0 3.7003-3.0359 6.7-6.7807 6.7-1.6784 0-3.2143-0.6025-4.3983-1.6006z" fill="#ed0006"/> 7851 <path d="m17.179 16.829c1.4579-1.2289 2.3824-3.0575 2.3824-5.0994 0-2.042-0.9245-3.8706-2.3824-5.0995 1.1841-0.99804 2.72-1.6005 4.3983-1.6005 3.7449 0 6.7807 2.9997 6.7807 6.7 0 3.7003-3.0358 6.7-6.7807 6.7-1.6783 0-3.2142-0.6025-4.3983-1.6006z" fill="#f9a000"/> 7852 <path d="m17.179 16.829c1.4579-1.2289 2.3823-3.0575 2.3823-5.0994 0-2.042-0.9244-3.8705-2.3823-5.0994-1.458 1.2289-2.3824 3.0575-2.3824 5.0994 0 2.0419 0.9244 3.8705 2.3824 5.0994z" fill="#ff5e00"/> 7853 </g> 7854 </svg> 7855 </span> 7856 <span class="ev-paybadge" role="img" aria-label="Klarna" title="Klarna"> 7857 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64.92 36.19" width="48" height="26.8" aria-hidden="true" focusable="false"> 7858 <path fill="#0a0b09" fill-rule="evenodd" d="M54.47,20.56c-.72,0-1.3.59-1.3,1.31s.58,1.31,1.3,1.31,1.3-.59,1.3-1.31-.58-1.31-1.3-1.31h0ZM50.2,19.55c0-.99-.84-1.79-1.87-1.79s-1.87.8-1.87,1.79.84,1.79,1.87,1.79,1.87-.8,1.87-1.79ZM50.21,16.07h2.07v6.96h-2.07v-.45c-.58.4-1.29.64-2.05.64-2.01,0-3.64-1.65-3.64-3.67s1.63-3.67,3.64-3.67c.76,0,1.46.24,2.05.64v-.45h0ZM33.67,16.98v-.91h-2.12v6.96h2.12v-3.25c0-1.1,1.18-1.69,2-1.69,0,0,.02,0,.02,0v-2.03c-.84,0-1.61.36-2.02.91h0ZM28.4,19.55c0-.99-.84-1.79-1.87-1.79s-1.87.8-1.87,1.79.84,1.79,1.87,1.79,1.87-.8,1.87-1.79ZM28.41,16.07h2.07v6.96h-2.07v-.45c-.58.4-1.29.64-2.05.64-2.01,0-3.64-1.65-3.64-3.67s1.63-3.67,3.64-3.67c.76,0,1.46.24,2.05.64v-.45h0ZM40.85,15.88c-.83,0-1.61.26-2.13.97v-.78h-2.06v6.96h2.08v-3.66c0-1.06.7-1.58,1.55-1.58.91,0,1.43.55,1.43,1.56v3.67h2.06v-4.43c0-1.62-1.28-2.72-2.94-2.72h0ZM19.71,23.03h2.16v-10.07h-2.16v10.07ZM10.21,23.04h2.29v-10.07h-2.29v10.07ZM18.22,12.97c0,2.18-.84,4.21-2.34,5.72l3.17,4.36h-2.83l-3.44-4.73.89-.67c1.47-1.11,2.32-2.81,2.32-4.67h2.24,0Z"/> 7859 </svg> 7860 </span> 7861 <span class="ev-paybadge" role="img" aria-label="SEPA-Lastschrift" title="SEPA-Lastschrift"> 7862 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 34 24" width="40" height="28.2" aria-hidden="true" focusable="false"> 7863 <path fill-rule="evenodd" clip-rule="evenodd" d="M19.342 12.488H20.4552C20.8082 12.4749 21.0228 12.4469 21.1001 12.4031C21.2056 12.3432 21.2765 12.2235 21.3117 12.0438C21.3342 11.9242 21.3455 11.7464 21.3455 11.5102C21.3455 11.2209 21.3231 11.0064 21.2781 10.8663C21.2139 10.6701 21.0601 10.5506 20.8165 10.5072C20.7683 10.5006 20.653 10.4971 20.4703 10.4971H19.342V12.488ZM17.5564 15.8414V9H20.8831C21.3394 9 21.6876 9.03843 21.9268 9.1152C22.474 9.29199 22.8411 9.65395 23.0291 10.201C23.1262 10.4881 23.1747 10.9203 23.1747 11.4975C23.1747 12.1915 23.1209 12.6902 23.0144 12.9938C22.801 13.5942 22.3618 13.9401 21.6986 14.0297C21.6206 14.0432 21.2887 14.0552 20.703 14.0648L20.4065 14.075H19.342V15.8414H17.5564ZM10.2514 11.1824H8.59024C8.59024 10.9012 8.5582 10.7126 8.49445 10.6166C8.39561 10.4745 8.1227
78635 10.4033 7.67619 10.4033C7.24251 10.4033 6.955 10.4443 6.8147 10.5262C6.67449 10.6083 6.6043 10.787 6.6043 11.0622C6.6043 11.3113 6.66644 11.4753 6.79104 11.5539C6.8803 11.6096 6.99822 11.6424 7.14528 11.6522L7.48028 11.6766C8.19825 11.7258 8.64666 11.7604 8.82551 11.78C9.39329 11.839 9.80491 11.9948 10.0603 12.2471C10.2613 12.4439 10.3811 12.7012 10.4194 13.019C10.4418 13.209 10.4529 13.4241 10.4529 13.663C10.4529 14.2138 10.4019 14.6172 10.2998 14.8728C10.1149 15.3418 9.69939 15.6381 9.05289 15.7625C8.78205 15.8151 8.36768 15.8414 7.81037 15.8414C6.88006 15.8414 6.23171 15.7843 5.86564 15.6695C5.41635 15.5289 5.12014 15.2441 4.97679 14.8151C4.89694 14.5763 4.85742 14.1787 4.85742 13.622H6.51858L6.51874 13.7643C6.51874 14.0613 6.60156 14.2524 6.76681 14.3375C6.88135 14.3961 7.01963 14.4269 7.18222 14.4306H7.7929C8.10456 14.4306 8.30345 14.4142 8.38925 14.3811C8.54194 14.3192 8.64215 14.2195 8.69004 14.0816C8.71548 13.9967 8.72812 13.8868 8.72812 13.7523C8.72812 13.4511 8.62147 13.2679 8.40857 13.2021C8.32897 13.1762 7.95855 13.14 7.2974 13.0941C6.76649 13.055 6.39768 13.0174 6.19115 12.9809C5.64727 12.876 5.28482 12.6603 5.10396 12.3328C4.945 12.0545 4.86547 11.6335 4.86547 11.0702C4.86547 10.6413 4.90845 10.2973 4.99434 10.0386C5.0803 9.77985 5.21882 9.5834 5.40999 9.44902C5.69001 9.24277 6.04836 9.12167 6.48453 9.08549C6.84746 9.05287 7.25007 9.03619 7.69293 9.03619C8.39014 9.03619 8.887 9.07752 9.18321 9.15944C9.90609 9.35971 10.2675 9.9207 10.2675 10.8426C10.2675 10.9182 10.2621 11.0312 10.2514 11.1824ZM25.795 10.3606L26.6316 13.3262H24.9831L25.795 10.3606ZM24.5989 14.659H26.9863L27.3269 15.8414H29.1355L27.1176 9H24.4241L22.4307 15.8414H24.2781L24.5989 14.659Z" fill="#10298E"/> 7864 <path fill-rule="evenodd" clip-rule="evenodd" d="M15.0922 9.96253C15.8286 9.96253 16.4859 10.3124 16.918 10.8603L17.3029 10.0093C16.7009 9.42262 15.8816 9.06091 14.9779 9.06091C13.571 9.06091 12.3674 9.93713 11.8734 11.1775H11.1229L10.6797 12.1572H11.6452C11.638 12.2481 11.6333 12.339 11.6333 12.4318C11.6333 12.5441 11.639 12.6551 11.6498 12.7647H11.1645L10.7214 13.7448H11.8965C12.4045 14.9537 13.593 15.8025 14.9779 15.8025C15.6759 15.8025 16.3235 15.5868 16.8597 15.2185V14.0174C16.4279 14.5244 15.7963 14.8447 15.0922 14.8447C14.2691 14.8447 13.5451 14.4071 13.1235 13.7448H15.5841L16.0272 12.7647H12.7614C12.7446 12.6468 12.7356 12.5263 12.7356 12.4035C12.7356 12.3205 12.7398 12.2383 12.7475 12.1572H16.3018L16.7449 11.1775H13.0549C13.463 10.4512 14.2224 9.96253 15.0922 9.96253" fill="#FFBE00"/> 7865 </svg> 7866 </span> 7867 <span class="ev-paybadge ev-paybadge--text" title="Kauf auf Rechnung">Rechnung</span> 7868 <span class="ev-paybadge ev-paybadge--text" title="Zahlung per Vorkasse">Vorkasse</span> 7869 </div> 7870 7871 <hr class="ev-footer-divider"> 7872 <div class="ev-footer-certs"> 7873 <div class="d-flex justify-content-start align-items-center gap-3 footer"> 7874 <div class="qx-icon-footer"> 7875 <a href="https://www.trustedshops.de/bewertung/info_XC7DD5FD247350BDB2715FB9DB269C030.html"> 7876 <img src="https://echtvital.cstatic.com/media/99/9f/e8/1679933458/trusted-shops-logo.png?ts=1721293439" alt="Trusted Shops Icon" 7877 class="qx-trusted-shops-cert ml-2 qx-icon"> 7878 </a> 7879 </div> 7880 <div class="qx-icon-footer"> 7881 <a href="https://echt-vital.de/media/92/6a/ec/1782390725/DE-OEKO-007_276-0074984_2026_001.pdf"> 7882 <img src="https://echtvital.cstatic.com/media/e6/83/c7/1679933461/eko-echt-vital.png?ts=1721293448" alt="Eko Icon" class="qx-eko-cert qx-icon"> 7883 </a> 7884 </div> 7885 <div class="qx-icon-footer"> 7886 <a href="https://echt-vital.de/media/92/6a/ec/1782390725/DE-OEKO-007_276-0074984_2026_001.pdf"> 7887 <img src="https://echtvital.cstatic.com/media/df/dc/77/1679933464/bio-echt-vital.png?ts=1721293453" alt="Bio Icon" class="qx-bio-cert qx-icon"> 7888 </a> 7889 </div> 7890 </div> 7891 </div> 7892 7893 <div class="ev-footer-legal"> 7894 <span class="ev-footer-copyright">© 2026 Echt Vital GmbH</span> 7895 <a href="/informationen/impressum/" title="Impressum">Impressum</a> 7896 <a href="/informationen/datenschutz/" title="Datenschutz">Datenschutz</a> 7897 <a href="/informationen/agb/" title="AGB">AGB</a> 7898 <a href="/informationen/barrierefreiheit/" title="Barrierefreiheit">Barrierefreiheit</a> 7899 <a class="footer-link" href="/cookie/offcanvas" title="Cookie-Einstellungen">Cookie-Einstellungen</a> 7900 <a class="ev-widerruf-btn" href="/revocation" rel="nofollow" title="Widerruf einreichen">Bestellung widerrufen</a> 7901 </div> 7902 7903</div> 7904 7905
7906 <!-- Post Affiliate Pro integration snippet start --> 7907
7907<script type="text/javascript" id="pap_x2s6df8d" src="https://echtvital.postaffiliatepro.com/scripts/l57vjx"></script>
7907 7908
7908<script type="text/javascript"> 7909 PostAffTracker.setAccountId('default1'); 7910 try { 7911 PostAffTracker.track(); 7912 } catch (err) { } 7913 </script>
7913 7914 7915 7916 </footer> 7917 7918 7919 7920 7921 7922 7923 7924 7925 7926 7927 7928 <!-- ECHT VITAL Off-Canvas Cart · EVC31 · 2026-07-08 7929 Sauberer Refactor von EVC30-NOGIFT (Logik erhalten): kompaktere Mobile-UX. 7930 Free-Shipping ab 75 EUR (muss zur Shopware-Rule passen). --> 7931 7932<style> 7933/* ============================================= 7934 ECHT VITAL CART - v57 GIFT PROGRESS 7935 - Einklappbares Gutscheinfeld 7936 - Premium Apple-like UI/UX 7937 - Toast-Meldungen für Feedback 7938 - Geschenk-Fortschrittsbalken 7939============================================= */ 7940:root { 7941 --evc-bg: #ffffff; 7942 --evc-surface: #f8fafc; 7943 --evc-border: #e2e8f0; 7944 --evc-text: #0f172a; 7945 --evc-muted: #64748b; 7946 --evc-primary: #166534; 7947 --evc-primary-dark: #14532d; 7948 --evc-primary-light: #dcfce7; 7949 --evc-danger: #ef4444; 7950 --evc-gold: #d97706; 7951 --evc-gold-light: #fef3c7; 7952 --evc-radius: 14px; 7953 --evc-radius-sm: 10px; 7954} 7955/* Layout */ 7956html:not(.ev-no-evcart) .offcanvas.cart-offcanvas { 7957 width: 420px !important; 7958 max-width: calc(100vw - 40px) !important; 7959 background: var(--evc-bg) !important; 7960 border: none !important; 7961 box-shadow: -8px 0 40px rgba(0,0,0,0.12) !important; 7962 z-index: 1000001 !important; 7963} 7964html:not(.ev-no-evcart) .offcanvas-backdrop { 7965 z-index: 1000000 !important; 7966} 7967html:not(.ev-no-evcart) .offcanvas.cart-offcanvas .offcanvas-body { 7968 padding: 0 !important; 7969 overflow: hidden !important; 7970 height: 100vh; 7971 height: 100dvh; /* Dynamic viewport height für Mobile */ 7972} 7973/* SOFORT alle Standard-Elemente verstecken - verhindert Flicker */ 7974html:not(.ev-no-evcart) .offcanvas.cart-offcanvas .offcanvas-cart:not(.evc-active) { 7975 visibility: hidden !important; 7976 opacity: 0 !important; 7977} 7978/* Initial Loader - erscheint sofort beim Ãffnen */ 7979html:not(.ev-no-evcart) .offcanvas.cart-offcanvas .offcanvas-body::before { 7980 content: ''; 7981 position: absolute; 7982 top: 50%; 7983 left: 50%; 7984 width: 40px; 7985 height: 40px; 7986 margin: -20px 0 0 -20px; 7987 border: 3px solid var(--evc-border, #e2e8f0); 7988 border-top-color: var(--evc-primary, #166534); 7989 border-radius: 50%; 7990 animation: evc-spin 0.7s linear infinite; 7991 z-index: 50; 7992 opacity: 1; 7993 transition: opacity 0.2s ease; 7994 pointer-events: none !important; 7995} 7996html:not(.ev-no-evcart) .offcanvas.cart-offcanvas .offcanvas-body::after { 7997 content: 'Warenkorb lädt...'; 7998 position: absolute; 7999 top: calc(50% + 35px); 8000 left: 50%; 8001 transform: translateX(-50%); 8002 font-size: 14px; 8003 font-weight: 600; 8004 color: var(--evc-text, #0f172a); 8005 z-index: 50; 8006 opacity: 1; 8007 transition: opacity 0.2s ease; 8008 pointer-events: none !important; 8009} 8010/* Initial Loader verstecken wenn unser Design aktiv */ 8011html:not(.ev-no-evcart) .offcanvas.cart-offcanvas .offcanvas-body.evc-ready::before, 8012html:not(.ev-no-evcart) .offcanvas.cart-offcanvas .offcanvas-body.evc-ready::after, 8013html:not(.ev-no-evcart) .offcanvas.cart-offcanvas .offcanvas-body:has(#evc-container)::before, 8014html:not(.ev-no-evcart) .offcanvas.cart-offcanvas .offcanvas-body:has(#evc-container)::after { 8015 opacity: 0 !important; 8016 visibility: hidden !important; 8017 display: none !important; 8018} 8019/* Unser Design sichtbar machen wenn aktiv */ 8020html:not(.ev-no-evcart) .evc-active { 8021 visibility: visible !important; 8022 opacity: 1 !important; 8023} 8024html:not(.ev-no-evcart) .evc-active .offcanvas-cart-header, 8025html:not(.ev-no-evcart) .evc-active .offcanvas-header, 8026html:not(.ev-no-evcart) .evc-active .offcanvas-cart-items, 8027html:not(.ev-no-evcart) .evc-active .cart-item-row, 8028html:not(.ev-no-evcart) .evc-active .offcanvas-summary, 8029html:not(.ev-no-evcart) .evc-active .offcanvas-cart-promotion, 8030html:not(.ev-no-evcart) .evc-active .begin-checkout-btn, 8031html:not(.ev-no-evcart) .evc-active .offcanvas-cart-actions, 8032html:not(.ev-no-evcart) .evc-active .flashbags, 8033html:not(.ev-no-evcart) .evc-active .alert, 8034html:not(.ev-no-evcart) .evc-active .cart-live-update, 8035html:not(.ev-no-evcart) .evc-active .offcanvas-shipping-info, 8036html:not(.ev-no-evcart) .evc-active .offcanvas-shipping-preference, 8037html:not(.ev-no-evcart) .evc-active .offcanvas-cart-tax, 8038html:not(.ev-no-evcart) .evc-active .js-offcanvas-cart-promotion, 8039html:not(.ev-no-evcart) .evc-active .offcanvas-summary-list, 8040html:not(.ev-no-evcart) .evc-active .line-item, 8041html:not(.ev-no-evcart) .evc-active .line-item-promotion, 8042html:not(.ev-no-evcart) .evc-active > .row, 8043html:not(.ev-no-evcart) .evc-active > .container, 8044html:not(.ev-no-evcart) .evc-active > div:not(#evc-container) { 8045 display: none !important; 8046} 8047html:not(.ev-no-evcart) .cart-offcanvas > .offcanvas-header { 8048 display: none !important; 8049} 8050/* "Weiter einkaufen" Header IMMER verstecken - alle Varianten */ 8051html:not(.ev-no-evcart) .cart-offcanvas .offcanvas-body > a:first-child, 8052html:not(.ev-no-evcart) .cart-offcanvas .offcanvas-body > div:first-child:not(.offcanvas-cart):not(#evc-container), 8053html:not(.ev-no-evcart) .cart-offcanvas .offcanvas-body > .d-flex:first-child, 8054html:not(.ev-no-evcart) .cart-offcanvas .cart-offcanvas-close-wrapper, 8055html:not(.ev-no-evcart) .cart-offcanvas .offcanvas-cart-close-wrapper, 8056html:not(.ev-no-evcart) .cart-offcanvas .offcanvas-close, 8057html:not(.ev-no-evcart) .cart-offcanvas [class*="close-wrapper"], 8058html:not(.ev-no-evcart) .cart-offcanvas .offcanvas-body > [class*="bg-primary"]:first-child, 8059html:not(.ev-no-evcart) .cart-offcanvas .offcanvas-body > [style*="background"]:first-child:not(.offcanvas-cart) { 8060 display: none !important; 8061} 8062/* Wrapper */ 8063.evc-wrapper { 8064 display: flex; 8065 flex-direction: column; 8066 height: 100vh; 8067 height: 100dvh; /* Dynamic viewport height für Mobile */ 8068 overflow: hidden; 8069 position: relative; 8070 padding-bottom: env(safe-area-inset-bottom, 0); 8071} 8072/* Loader */ 8073.evc-loader-overlay { 8074 position: absolute; 8075 inset: 0; 8076 background: rgba(255,255,255,0.6); /* R13d: Korb bleibt unter dem Spinner sichtbar (More-Look), vorher 0.97 = "weiss" */ 8077 z-index: 100; 8078 display: flex; 8079 flex-direction: column; 8080 align-items: center; 8081 justify-content: center; 8082 gap: 16px; 8083 opacity: 0; 8084 visibility: hidden; 8085 pointer-events: none; 8086 transition: all 0.25s ease; 8087} 8088.evc-loader-overlay.show { 8089 opacity: 1; 8090 visibility: visible; 8091 pointer-events: auto; 8092} 8093.evc-loader-spinner { 8094 width: 40px; height: 40px; 8095 border: 3px solid var(--evc-border); 8096 border-top-color: var(--evc-primary); 8097 border-radius: 50%; 8098 animation: evc-spin 0.7s linear infinite; 8099} 8100@keyframes evc-spin { to { transform: rotate(360deg); } } 8101.evc-loader-text { 8102 font-size: 14px; 8103 color: var(--evc-text); 8104 font-weight: 600; 8105 text-align: center; 8106} 8107.evc-loader-subtext { 8108 font-size: 12px; 8109 color: var(--evc-muted); 8110 margin-top: -8px; 8111} 8112/* Header */ 8113.evc-header { 8114 display: flex; 8115 align-items: center; 8116 gap: 10px; 8117 padding: 14px 16px; 8118 background: var(--evc-bg); 8119 border-bottom: 1px solid var(--evc-border); 8120 flex-shrink: 0; 8121} 8122.evc-header-icon { 8123 width: 36px; height: 36px; 8124 background: linear-gradient(135deg, var(--evc-primary-light), #bbf7d0); 8125 border-radius: 10px; 8126 display: flex; align-items: center; justify-content: center; 8127 font-size: 18px; 8128} 8129.evc-header-title { flex: 1; font-size: 16px; font-weight: 700; color: var(--evc-text); } 8130/* Gift Progress Bar */ 8131/* Items */ 8132.evc-items { 8133 flex: 1; 8134 overflow-y: auto; 8135 padding: 16px; 8136 display: flex; 8137 flex-direction: column; 8138 gap: 12px; 8139} 8140.evc-empty { 8141 flex: 1; 8142 display: flex; 8143 flex-direction: column; 8144 align-items: center; 8145 justify-content: center; 8146 gap: 16px; 8147 color: var(--evc-muted); 8148 text-align: center; 8149 padding: 40px 20px; 8150} 8151/* 16.09.26 leerer Korb kompakt, Widget sichtbar. Doku: tools/warenkorb-bestseller/patch_cart_empty_kompakt.py */ 8152.evc-items-b2c .evc-empty { 8153 flex: 0 0 auto; 8154 height: auto; 8155 justify-content: flex-start; 8156 gap: 8px; 8157 padding: 20px 20px 16px; 8158} 8159.evc-items-b2c .evc-empty > * { margin: 0; } 8160.evc-items-b2c .evc-empty-icon { font-size: 32px; } 8161.evc-items-b2c .evc-empty-btn { margin-top: 2px; padding: 10px 22px; } 8162.evc-empty-icon { font-size: 48px; opacity: 0.5; } 8163.evc-empty-title { font-size: 18px; font-weight: 600; color: var(--evc-text); } 8164.evc-empty-text { font-size: 14px; } 8165.evc-empty-btn { 8166 margin-top: 8px; 8167 padding: 12px 24px; 8168 background: var(--evc-primary); 8169 color: #fff; 8170 border: none; border-radius: 10px; 8171 font-size: 14px; font-weight: 600; 8172 cursor: pointer; 8173} 8174.evc-empty-btn:hover { background: var(--evc-primary-dark); } 8175/* Item Card */ 8176.evc-item { 8177 display: flex; 8178 gap: 12px; 8179 padding: 12px; 8180 background: var(--evc-surface); 8181 border-radius: var(--evc-radius); 8182 position: relative; 8183} 8184.evc-item.is-book { 8185 background: linear-gradient(135deg, var(--evc-gold-light) 0%, #fffbeb 100%); 8186 border: 2px solid var(--evc-gold); 8187} 8188.evc-item-badge { 8189 position: absolute !important; 8190 display: inline-block !important; 8191 width: auto !important; 8192 top: -8px !important; left: 12px !important; 8193 background: var(--evc-primary) !important; 8194 color: #fff !important; 8195 font-size: 10px !important; font-weight: 700 !important; 8196 padding: 3px 10px !important; 8197 border-radius: 4px !important; 8198 text-transform: uppercase !important; 8199 line-height: 1.3 !important; 8200 z-index: 2; 8201} 8202.evc-item-badge.gold { 8203 background: var(--evc-gold); 8204} 8205.evc-item-img { 8206 width: 70px; height: 70px; 8207 background: #fff; 8208 border-radius: var(--evc-radius-sm); 8209 overflow: hidden; 8210 flex-shrink: 0; 8211 display: flex; align-items: center; justify-content: center; 8212} 8213.evc-item-img img { width: 100%; height: 100%; object-fit: contain; } 8214.evc-item-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; } 8215.evc-item-name { 8216 font-size: 13px; font-weight: 600; color: var(--evc-text); 8217 display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; 8218} 8219.evc-item-variant { font-size: 11px; color: var(--evc-muted); } 8220.evc-item-price { display: flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 700; color: var(--evc-text); margin-top: auto; } 8221.evc-item-price-old { font-size: 12px; color: var(--evc-muted); text-decoration: line-through; font-weight: 400; } 8222.evc-item-price-free { color: var(--evc-primary); font-weight: 700; }
8223.evc-item-controls { display: flex; align-items: center; gap: 8px; margin-top: 4px; } 8224/* Quantity */ 8225.evc-qty { 8226 display: flex; 8227 align-items: center; 8228 background: #fff; 8229 border: 1px solid var(--evc-border); 8230 border-radius: 8px; 8231 overflow: hidden; 8232} 8233.evc-qty-btn { 8234 width: 28px; height: 28px; 8235 border: none; background: transparent; 8236 font-size: 16px; color: var(--evc-text); 8237 cursor: pointer; 8238 display: flex; align-items: center; justify-content: center; 8239} 8240.evc-qty-btn:hover { background: var(--evc-surface); } 8241.evc-qty-input { 8242 width: 32px; height: 28px; 8243 border: none; background: transparent; 8244 text-align: center; 8245 font-size: 13px; font-weight: 600; 8246 -moz-appearance: textfield; 8247} 8248.evc-qty-input::-webkit-outer-spin-button, 8249.evc-qty-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; } 8250/* Remove Button */ 8251.evc-remove-btn { 8252 width: 28px; height: 28px; 8253 border: none; background: transparent; 8254 color: var(--evc-muted); 8255 cursor: pointer; 8256 display: flex; align-items: center; justify-content: center; 8257 border-radius: 6px; 8258 margin-left: auto; 8259} 8260.evc-remove-btn:hover { background: #fee2e2; color: var(--evc-danger); } 8261.evc-remove-btn svg { width: 16px; height: 16px; stroke: currentColor; stroke-width: 2; fill: none; } 8262/* Footer */ 8263.evc-footer { 8264 flex-shrink: 0; 8265 padding: 16px; 8266 background: #fff; 8267 border-top: 1px solid var(--evc-border); 8268 box-shadow: 0 -4px 20px rgba(0,0,0,0.05); 8269} 8270/* Coupon Toggle */ 8271.evc-coupon-toggle { 8272 display: flex; 8273 align-items: center; 8274 justify-content: space-between; 8275 padding: 10px 12px; 8276 background: var(--evc-surface); 8277 border-radius: 10px; 8278 cursor: pointer; 8279 margin-bottom: 12px; 8280 transition: background 0.15s ease; 8281} 8282.evc-coupon-toggle:hover { background: #f1f5f9; } 8283.evc-coupon-toggle-left { 8284 display: flex; 8285 align-items: center; 8286 gap: 8px; 8287 font-size: 13px; 8288 font-weight: 600; 8289 color: var(--evc-text); 8290} 8291.evc-coupon-toggle-icon { 8292 font-size: 14px; 8293} 8294.evc-coupon-toggle-arrow { 8295 font-size: 12px; 8296 color: var(--evc-muted); 8297 transition: transform 0.3s ease; 8298} 8299.evc-coupon-toggle.open .evc-coupon-toggle-arrow { 8300 transform: rotate(180deg); 8301} 8302/* Coupon Expandable */ 8303.evc-coupon-expand { 8304 display: grid; 8305 grid-template-rows: 0fr; 8306 transition: grid-template-rows 0.3s ease; 8307} 8308.evc-coupon-expand.open { 8309 grid-template-rows: 1fr; 8310} 8311.evc-coupon-expand-inner { 8312 overflow: hidden; 8313} 8314.evc-coupon-row { 8315 display: flex; 8316 gap: 8px; 8317 padding-bottom: 12px; 8318} 8319.evc-coupon-input { 8320 flex: 1; 8321 height: 40px; 8322 padding: 0 12px; 8323 border: 1px solid var(--evc-border); 8324 border-radius: 8px; 8325 font-size: 13px; 8326} 8327.evc-coupon-input:focus { outline: none; border-color: var(--evc-primary); } 8328.evc-coupon-submit { 8329 height: 40px; 8330 padding: 0 18px; 8331 border: none; 8332 background: var(--evc-text); 8333 color: #fff; 8334 border-radius: 8px; 8335 font-size: 13px; 8336 font-weight: 700; 8337 cursor: pointer; 8338} 8339.evc-coupon-submit:hover { background: #374151; } 8340/* Coupon Message */ 8341.evc-coupon-msg-wrap { 8342 display: grid; 8343 grid-template-rows: 0fr; 8344 transition: grid-template-rows 0.3s ease; 8345} 8346.evc-coupon-msg-wrap.show { grid-template-rows: 1fr; } 8347.evc-coupon-msg-inner { overflow: hidden; } 8348.evc-coupon-msg { 8349 padding: 10px 12px; 8350 border-radius: 8px; 8351 font-size: 13px; 8352 margin-bottom: 10px; 8353 line-height: 1.4; 8354 opacity: 0; 8355 transform: translateY(-5px); 8356 transition: opacity 0.3s ease, transform 0.3s ease; 8357} 8358.evc-coupon-msg-wrap.show .evc-coupon-msg { opacity: 1; transform: translateY(0); } 8359.evc-coupon-msg.success { background: var(--evc-primary-light); color: var(--evc-primary-dark); } 8360.evc-coupon-msg.error { background: #fef2f2; color: var(--evc-danger); } 8361/* Totals */ 8362.evc-totals { margin: 14px 0; } 8363.evc-row { 8364 display: flex; 8365 justify-content: space-between; 8366 align-items: center; 8367 font-size: 13px; 8368 margin-bottom: 6px; 8369} 8370.evc-row-label { color: var(--evc-muted); } 8371.evc-row-value { font-weight: 600; color: var(--evc-text); display: flex; align-items: center; gap: 8px; } 8372.evc-row-value.green { color: var(--evc-primary); } 8373.evc-row-value.red { color: var(--evc-danger); } 8374.evc-row-value-old { font-size: 11px; color: var(--evc-muted); text-decoration: line-through; font-weight: 400; } 8375.evc-row.total { 8376 font-size: 17px; 8377 padding-top: 12px; 8378 margin-top: 8px; 8379 border-top: 1px solid var(--evc-border); 8380} 8381.evc-row.total .evc-row-label { font-weight: 700; color: var(--evc-text); } 8382.evc-row.total .evc-row-value { font-weight: 800; } 8383.evc-total-original { font-size: 14px; color: var(--evc-muted); text-decoration: line-through; font-weight: 500; margin-right: 8px; } 8384/* Coupon Pill */ 8385.evc-coupon-pill { 8386 display: inline-flex; 8387 align-items: center; 8388 gap: 4px; 8389 background: var(--evc-primary-light); 8390 border: 1px solid var(--evc-primary); 8391 color: var(--evc-primary-dark); 8392 font-size: 10px; 8393 font-weight: 600; 8394 padding: 3px 6px 3px 8px; 8395 border-radius: 20px; 8396 text-transform: uppercase; 8397} 8398.evc-coupon-pill-x { 8399 width: 14px; height: 14px; 8400 background: var(--evc-primary); 8401 color: #fff; 8402 border: none; border-radius: 50%; 8403 font-size: 10px; 8404 cursor: pointer; 8405 display: flex; align-items: center; justify-content: center; 8406} 8407.evc-coupon-pill-x:hover { background: var(--evc-danger); } 8408/* Trust */ 8409.evc-trust { 8410 display: flex; 8411 align-items: center; 8412 justify-content: center; 8413 gap: 6px; 8414 font-size: 11px; 8415 color: #4b5563; 8416 margin-bottom: 10px; 8417} 8418.evc-trust-check { 8419 width: 14px; height: 14px; 8420 background: #374151; 8421 color: #fff; 8422 border-radius: 50%; 8423 display: flex; align-items: center; justify-content: center; 8424 font-size: 9px; 8425} 8426/* Checkout Button */ 8427.evc-checkout { 8428 width: 100%; 8429 height: 52px; 8430 border: none; 8431 border-radius: 12px; 8432 font-size: 15px; 8433 font-weight: 700; 8434 cursor: pointer; 8435 display: flex; 8436 align-items: center; 8437 justify-content: center; 8438 gap: 10px; 8439 background: var(--evc-primary); 8440 color: #fff; 8441 transition: all 0.2s; 8442} 8443.evc-checkout:hover { background: var(--evc-primary-dark); transform: translateY(-1px); } 8444/* Payments */ 8445.evc-payments { 8446 display: flex !important; 8447 justify-content: center; 8448 gap: 12px; 8449 margin-top: 14px; 8450 padding-top: 14px; 8451 border-top: 1px solid var(--evc-border); 8452} 8453.evc-payments img { height: 28px; opacity: 0.8; } 8454@media (max-width: 576px) { 8455 .offcanvas.cart-offcanvas { 8456 width: calc(100vw - 20px) !important; 8457 max-width: calc(100vw - 20px) !important; 8458 } 8459 /* Kompakterer Header */ 8460 .evc-header { 8461 padding: 10px 14px; 8462 gap: 8px; 8463 } 8464 .evc-header-icon { 8465 width: 28px; height: 28px; 8466 border-radius: 8px; 8467 font-size: 14px; 8468 } 8469 .evc-header-title { 8470 font-size: 14px; 8471 font-weight: 600; 8472 } 8473 /* Kompaktere Items */ 8474 .evc-items { 8475 padding: 10px; 8476 gap: 10px; 8477 } 8478 .evc-item { 8479 padding: 10px; 8480 border-radius: 10px; 8481 } 8482 .evc-item-img { 8483 width: 56px; height: 56px; 8484 } 8485 .evc-item-name { 8486 font-size: 13px; 8487 } 8488 .evc-item-variant, .evc-item-unit-price { 8489 font-size: 11px; 8490 } 8491 /* Kompakterer Footer */ 8492 .evc-footer { 8493 padding: 12px 14px; 8494 padding-bottom: calc(12px + env(safe-area-inset-bottom, 0)); 8495 } 8496 .evc-coupon-toggle { 8497 padding: 8px 10px; 8498 font-size: 12px; 8499 } 8500 /* B1 (EVC31): Fuà flacher auf Mobil - echte Klassen (vorher tote .evc-checkout-btn/.evc-total-row) */ 8501 .evc-checkout { 8502 height: 46px; 8503 font-size: 14px; 8504 } 8505 .evc-payments { 8506 margin-top: 10px; 8507 padding-top: 10px; 8508 } 8509 .evc-payments img { height: 24px; } 8510 .evc-trust { 8511 font-size: 10px; 8512 padding: 6px 0; 8513 margin-bottom: 6px; 8514 } 8515} 8516/* Händler: Shopware-Standard wiederherstellen */ 8517html.ev-no-evcart .offcanvas.cart-offcanvas .offcanvas-body { 8518 flex-grow: 1 !important; 8519 padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x) !important; 8520 overflow-y: auto !important; 8521 overflow-x: hidden !important; 8522} 8523/* Success Toast */ 8524.evc-toast { 8525 position: fixed; 8526 top: 20px; 8527 left: 50%; 8528 transform: translateX(-50%) translateY(-120%); 8529 background: var(--evc-primary); 8530 color: #fff; 8531 padding: 14px 24px; 8532 border-radius: 12px; 8533 font-size: 14px; 8534 font-weight: 600; 8535 display: flex; 8536 align-items: center; 8537 gap: 10px; 8538 box-shadow: 0 10px 40px rgba(22, 101, 52, 0.4); 8539 z-index: 9999999; 8540 transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1); 8541 pointer-events: none; 8542} 8543.evc-toast.show { 8544 transform: translateX(-50%) translateY(0); 8545} 8546.evc-toast-icon { 8547 font-size: 18px; 8548} 8549.evc-toast-info { 8550 background: #3b82f6; 8551 box-shadow: 0 10px 40px rgba(59, 130, 246, 0.4); 8552} 8553.evc-toast-warning { 8554 background: var(--evc-gold); 8555 box-shadow: 0 10px 40px rgba(217, 119, 6, 0.4); 8556} 8557@media (max-width: 576px) { 8558 .evc-toast { 8559 top: 80px; 8560 bottom: auto; 8561 left: 50%; 8562 right: auto; 8563 transform: translateX(-50%) translateY(-150%); 8564 max-width: calc(100% - 40px); 8565 } 8566 .evc-toast.show { 8567 transform: translateX(-50%) translateY(0); 8568 } 8569} 8570 8571/* === EVC31 Cart-Sizing + Supplement (aus v57-NOGIFT konsolidiert) === */ 8572/* ============================================================================= 8573 * EVC31 - CSS-Supplement zu v57-Cart-CSS 8574 * Stand: 2026-05-12 8575 * Nur Klassen die fuer den NOGIFT-Cart benoetigt werden. 8576 * Gift-Picker / Reward / Success / Konfetti / Product-Modal sind RAUS. 8577 * ============================================================================= */ 8578
8579/* -- Ship-Hint (schmale Versand-Hinweiszeile unter Header) -------------- */ 8580.evc-active .evc-ship-hint { 8581 display: flex; 8582 align-items: center; 8583 gap: 8px; 8584 margin: 0 0 10px; 8585 padding: 9px 12px; 8586 font-size: 13px; 8587 line-height: 1.3; 8588 color: #475569; 8589 background: #f8fafc; 8590 border: 1px solid #e5e7eb; 8591 border-radius: 10px; 8592} 8593.evc-active .evc-ship-hint.is-done { 8594 color: #16a34a; 8595 background: #f0fdf4; 8596} 8597.evc-active .evc-ship-hint-done { 8598 color: #16a34a; 8599 font-weight: 600; 8600} 8601.evc-active .evc-ship-hint-icon { font-size: 16px; flex-shrink: 0; } 8602.evc-active .evc-ship-hint-msg { flex: 1; } 8603 8604/* -- B2B (haendler.): Versandhinweis als zweite Trust-Zeile ueber dem Kauf-Knopf ---------- */ 8605.evc-active .evc-trust-ship { color: #475569; margin-top: -6px; padding-top: 0; } 8606.evc-active .evc-trust-ship .evc-ship-hint-icon { font-size: 13px; } 8607 8608/* -- B2B (haendler.): Trust-Zeile 10px, Icon-Leiste unter dem Knopf klein (18px) ------------ */ 8609/* ID + eine Klasse MEHR + !important: schlaegt das Recovery-"Sicherheitsnetz" (#evc-container .evc-trust / .evc-payments {...!important} bei <=576px Breite / <=760px Hoehe). Gleiche Spezifitaet verliert, weil dessen <style> spaeter im Dokument steht. */ 8610.offcanvas.cart-offcanvas #evc-container .evc-trust.evc-trust-compact { font-size: 11px !important; line-height: 1.3 !important; margin: 8px 0 0 !important; padding: 0 !important; color: #374151 !important; font-weight: 500; } 8611.offcanvas.cart-offcanvas #evc-container .evc-trust.evc-trust-ship { font-size: 12px !important; line-height: 1.3 !important; margin: 0 0 8px !important; padding: 0 !important; } 8612.offcanvas.cart-offcanvas #evc-container .evc-payments.evc-payments-compact { margin-top: 8px !important; padding-top: 8px !important; gap: 8px !important; flex-wrap: wrap !important; } 8613.offcanvas.cart-offcanvas #evc-container .evc-payments.evc-payments-compact img { height: 30px !important; width: 43px !important; object-fit: cover !important; } 8614 8615/* -- B2B (haendler.): Kopfzeile flacher (36px statt 64/49px) --------------------------------- */ 8616.offcanvas.cart-offcanvas #evc-container .evc-header.evc-header-compact { padding: 6px 12px; gap: 8px; } 8617.offcanvas.cart-offcanvas #evc-container .evc-header-compact .evc-header-icon { width: 24px; height: 24px; border-radius: 7px; font-size: 13px; } 8618.offcanvas.cart-offcanvas #evc-container .evc-header-compact .evc-header-title { font-size: 14px; font-weight: 600; } 8619.offcanvas.cart-offcanvas #evc-container .evc-header-compact .evc-header-close { width: 24px; height: 24px; font-size: 12px; } 8620 8621/* -- B2B (haendler.): Kachel kompakt (Prototyp v4): x oben rechts, Menge als Box auf der Preislinie -- */ 8622/* ID + !important neutralisiert die ALTE Cart-CSS aus all.css (.evc-item{margin-bottom:10px}, .evc-item-price{margin-bottom:8px}) */ 8623.offcanvas.cart-offcanvas #evc-container .evc-items.evc-items-b2b { gap: 8px !important; } 8624.offcanvas.cart-offcanvas #evc-container .evc-item.evc-item-b2b { position: relative; margin-bottom: 0 !important; align-items: stretch; } 8625.offcanvas.cart-offcanvas #evc-container .evc-item-b2b .evc-item-body { align-self: stretch; } 8626.offcanvas.cart-offcanvas #evc-container .evc-item-b2b .evc-item-name { padding-right: 20px; } 8627.offcanvas.cart-offcanvas #evc-container .evc-item-b2b .evc-item-price { margin-bottom: 0 !important; } 8628.offcanvas.cart-offcanvas #evc-container .evc-item-b2b .evc-item-x { position: absolute; top: 5px; right: 5px; width: 22px; height: 22px; border: 0; background: transparent; color: #374151; font-size: 11px; font-weight: 700; line-height: 1; display: flex; align-items: center; justify-content: center; cursor: pointer; border-radius: 6px; padding: 0; } 8629.offcanvas.cart-offcanvas #evc-container .evc-item-b2b .evc-item-x:hover { background: rgba(0,0,0,.06); } 8630.offcanvas.cart-offcanvas #evc-container .evc-item-b2b .evc-qty { margin-left: auto; height: 24px; border: 1px solid #e2e8f0; border-radius: 7px; flex-shrink: 0; } 8631.offcanvas.cart-offcanvas #evc-container .evc-item-b2b .evc-qty-btn { width: 22px; height: 24px; font-size: 14px; } 8632.offcanvas.cart-offcanvas #evc-container .evc-item-b2b .evc-qty-val { position: relative; display: flex; height: 24px; border-left: 1px solid #e2e8f0; border-right: 1px solid #e2e8f0; } 8633.offcanvas.cart-offcanvas #evc-container .evc-item-b2b .evc-qty-input { width: 22px; height: 24px; font-size: 12px; padding: 0; } 8634.offcanvas.cart-offcanvas #evc-container .evc-item-b2b .evc-qty-select { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; appearance: none; -webkit-appearance: none; margin: 0; } 8635/* Maus: tippbare Zahl, kein Spinner, Fokus dezent */ 8636.offcanvas.cart-offcanvas #evc-container .evc-item-b2b .evc-qty-input:not([readonly]) { cursor: text; border-left: 1px solid #e2e8f0; border-right: 1px solid #e2e8f0; } 8637.offcanvas.cart-offcanvas #evc-container .evc-item-b2b .evc-qty-input:not([readonly]):focus { outline: none; background: #f1f5f9; } 8638 8639/* -- COMPACT (beide Kanaele): Betrag im Kauf-Knopf (Pille, kein Glow), Rabatt-Tags, Gutschein-Pille -------- */ 8640.offcanvas.cart-offcanvas #evc-container .evc-footer .evc-checkout.evc-checkout-compact { border-radius: 999px !important; height: 44px !important; min-height: 0 !important; font-size: 17px !important; font-weight: 500 !important; letter-spacing: 0.1px; box-shadow: none !important; } 8641.offcanvas.cart-offcanvas #evc-container .evc-footer.evc-footer-compact .evc-row { font-size: 15px !important; } 8642.offcanvas.cart-offcanvas #evc-container .evc-footer.evc-footer-compact .evc-row-value-old { font-size: 13px !important; } 8643.offcanvas.cart-offcanvas #evc-container .evc-trust-lock { display: inline-flex; width: 14px; height: 14px; flex-shrink: 0; } 8644.offcanvas.cart-offcanvas #evc-container .evc-trust-lock svg { width: 14px; height: 14px; display: block; } 8645.offcanvas.cart-offcanvas #evc-container .evc-price-old { color: #6b7280; text-decoration: line-through; font-weight: 500; font-size: 13px; margin-left: 0; } 8646.offcanvas.cart-offcanvas #evc-container .evc-price-new { color: #dc2626; font-weight: 700; } 8647.offcanvas.cart-offcanvas #evc-container .evc-price-tag { display: inline-block; margin-left: 0; padding: 1px 6px; border-radius: 999px; background: #dc2626;
8647 color: #fff; font-size: 10px; font-weight: 700; line-height: 1.4; vertical-align: 1px; } 8648.offcanvas.cart-offcanvas #evc-container .evc-coupon-row-neu { display: flex; align-items: stretch; gap: 8px; margin: 0 0 10px; } 8649.offcanvas.cart-offcanvas #evc-container .evc-coupon-field { flex: 1; min-height: 40px; display: flex; align-items: center; padding: 4px 8px; border: 1px solid #e2e8f0; border-radius: 10px; background: #fff; } 8650.offcanvas.cart-offcanvas #evc-container .evc-code-pill { display: inline-flex; align-items: center; gap: 6px; background: #eceff1; color: #111827; border-radius: 999px; padding: 5px 8px 5px 10px; font-size: 13px; font-weight: 600; letter-spacing: 0.2px; text-transform: none; } 8651.offcanvas.cart-offcanvas #evc-container .evc-code-pill svg { width: 14px; height: 14px; stroke: currentColor; stroke-width: 2; fill: none; } 8652.offcanvas.cart-offcanvas #evc-container .evc-code-pill-x { border: 0; background: transparent; padding: 0 2px; font-size: 13px; font-weight: 700; color: #111827; cursor: pointer; line-height: 1; width: auto; height: auto; margin: 0; } 8653 8654/* -- Header-Close-Button (X) ------------------------------------------- */ 8655.evc-active .evc-header-close { 8656 background: rgba(0,0,0,.05); 8657 border: none; 8658 width: 28px; height: 28px; 8659 border-radius: 50%; 8660 cursor: pointer; 8661 margin-left: auto; 8662 color: #1e293b; 8663 font-size: 14px; 8664 display: flex; 8665 align-items: center; 8666 justify-content: center; 8667 flex-shrink: 0; 8668} 8669.evc-active .evc-header-close:hover { background: rgba(0,0,0,.1); } 8670 8671/* -- Row-Color-Modifier (green/red Coupon + Savings) -------------------- */ 8672.evc-active .evc-row-value.green { color: #16a34a; font-weight: 600; } 8673.evc-active .evc-row-value.red { color: #ef4444; font-weight: 600; } 8674 8675/* ============================================================================= 8676 * Cart Sizing - Codex-reviewed v57-Pattern (Desktop + Mobile gleich). 8677 * ----------------------------------------------------------------------------- 8678 * Lessons learned: 8679 * - @media-only-mobile macht Verhaltenssprung bei Rotation/iPad Split-View 8680 * - mehrere konkurrierende Hoehenquellen (flex+var+max+100dvh) erzeugen 8681 * Layout-Jitter auf iOS Safari (URL-Bar-Toggle, Keyboard, etc.) 8682 * - v57 war einfach und robust: EINE Quelle pro Container, kein @media, 8683 * `height: 100dvh` direkt 8684 * 8685 * Strategie: 8686 * 1) offcanvas-body bekommt direct `height: 100dvh` (eine Quelle). 8687 * 2) wrapper bekommt `height: 100%` (folgt der Body-Hoehe, nicht eigener). 8688 * 3) --evc-vh ist NUR Fallback fuer Browser ohne dvh-Support (@supports). 8689 * Heisst: auf modernen iOS Safari (15.4+) wird 100dvh genutzt, das JS- 8690 * gepushte --evc-vh ueberschreibt das nicht und erzeugt damit keinen 8691 * iOS-spezifischen Hohlraum mehr. 8692 * ============================================================================= */ 8693 8694/* Zwischen-Container muessen 100% durchreichen, sonst kollabiert wrapper */ 8695html:not(.ev-no-evcart) .offcanvas.cart-offcanvas .offcanvas-cart, 8696html:not(.ev-no-evcart) .offcanvas.cart-offcanvas #evc-container { 8697 height: 100%; 8698 max-height: 100%; 8699 display: flex; 8700 flex-direction: column; 8701 min-height: 0; 8702} 8703 8704/* Wrapper: folgt direct dem Parent (kein eigenes 100dvh mehr) */ 8705.evc-wrapper { 8706 display: flex; 8707 flex-direction: column; 8708 height: 100%; 8709 overflow: hidden; 8710 position: relative; 8711 padding-bottom: env(safe-area-inset-bottom); 8712 box-sizing: border-box; 8713} 8714.evc-items { 8715 flex: 1 1 auto; 8716 min-height: 0; 8717 overflow-y: auto; 8718 -webkit-overflow-scrolling: touch; 8719} 8720.evc-footer { 8721 flex-shrink: 0; 8722} 8723 8724/* Offcanvas-body als EINZIGE Hoehen-Quelle (auf jedem viewport gleich) */ 8725html:not(.ev-no-evcart) .offcanvas.cart-offcanvas .offcanvas-body { 8726 height: 100vh; 8727 height: 100dvh; 8728 padding: 0 !important; 8729 overflow: hidden !important; 8730} 8731 8732/* --evc-vh-Variable greift NUR wo dvh nicht unterstuetzt wird */ 8733@supports not (height: 100dvh) { 8734 html:not(.ev-no-evcart) .offcanvas.cart-offcanvas .offcanvas-body { 8735 height: var(--evc-vh, 100vh); 8736 } 8737} 8738 8739/* B3 (EVC31): Trusted-Shops-Badge ausblenden solange Off-Canvas-Cart offen. 8740 Body-Klasse statt :has() = robuster ueber Browser. Selektor live gegengeprueft. */ 8741body.evc-cart-open [id^="trustbadge"] { 8742 opacity: 0 !important; 8743 pointer-events: none !important; 8744 transition: opacity .15s ease; 8745} 8746</style> 8747
8748<script> 8749 8750/* EVC31 Off-Canvas-Cart (echt-vital.de B2C) - Nachfolger von EVC30-NOGIFT. 8751 * Bewaehrte Logik erhalten: iOS-Viewport, qty-Queue, 3-Layer-Close, 8752 * Loader-Safety-Net, Observer-Cleanup, Versand aus data-shipping. 8753 * freeShippingAt MUSS zur Shopware-Rule 'versandfrei ab 75' passen. */ 8754(function() { 8755 'use strict'; 8756 8757 if (window.__EVC31_INIT__) return; 8758 window.__EVC31_INIT__ = true; 8759 8760 const CONFIG = { 8761 freeShippingAt: 75, 8762 shippingCost: 4.95, 8763 bestsellerUrl: '/mitdenker/produkte' 8764 }; 8765 8766 /* B2B (haendler.echt-vital.de) 27.08. (Patrick): ein Cart-Code fuer beide Kanaele, weil 8767 EvTheme an B2B UND B2C haengt. Erkennung ueber die Sales-Channel-ID, die Shopware im 8768 <head> setzt; Hostname als Fallback. STAGING hat keine Haendler-Domain, darum dort 8769 Debug-Schalter ?evc_b2b=1 (ein, pro Tab gemerkt) / ?evc_b2b=0 (aus). Wirkung: kein 8770 Gutscheinfeld, Versandhinweis klein ueber dem Kauf-Knopf, Rabattzeile ohne Kreuz. 8771 B2C bleibt unveraendert. */ 8772 const IS_B2B = (function () { 8773 if (window.salesChannelId === '01924d9f52cd72bcad4db96bc32d9640') return true; 8774 if (/^(www\.)?haendler\./.test(location.hostname)) return true; 8775 if (location.hostname === 'staging.echt-vital.de') { 8776 try { 8777 const m = location.search.match(/[?&]evc_b2b=([01])/); 8778 if (m) sessionStorage.setItem('evc_b2b', m[1]); 8779 return sessionStorage.getItem('evc_b2b') === '1'; 8780 } catch (e) { return false; } 8781 } 8782 return false; 8783 })(); 8784 window.__EVC31_B2B__ = IS_B2B; 8785 /* Maus (hover + feiner Zeiger) = Zahl tippbar; Touch = natives Select (Rad/Liste). 8786 Staging-QA: ?evc_touch=1 erzwingt die Touch-Variante am Desktop. */ 8787 const IS_FINE_POINTER = !!(window.matchMedia && matchMedia('(hover: hover) and (pointer: fine)').matches) 8788 && !(location.hostname === 'staging.echt-vital.de' && /[?&]evc_touch=1/.test(location.search)); 8789 window.__EVC31_FINE_POINTER__ = IS_FINE_POINTER; 8790 /* COMPACT = neues Layout (Kacheln, Kopf, Footer mit Betrag im Knopf, Rabatt-Tags, Gutschein-Pille). 8791 Seit Runde 14 (28.08.2026) in beiden Kanaelen aktiv; davor B2C nur auf Staging (Sichtpruefung). */ 8792 const COMPACT = true; /* R14: B2C freigegeben (28.08.2026) */ 8793 window.__EVC31_COMPACT__ = COMPACT; 8794 window.__EVC31_REFRESH__ = refreshCart; /* R13c: fuer Widgets im Cart (Bestseller-Karussell) */ 8795 8796 const STATE = { 8797 shippingDone: false, 8798 isFirstLoad: true, 8799 activeCoupons: [], 8800 processing: false, 8801 totalSavings: 0, 8802 originalTotal: 0, 8803 hasInitializedSession: false 8804 }; 8805 8806 function formatPrice(val) { 8807 return val.toFixed(2).replace('.', ',') + ' â¬'; 8808 } 8809 8810 // ============ LOADER (mit Safety-Net) =================================== 8811 const LOADER_MAX_MS = 4000; 8812 let loaderHideTimer = null; 8813 let refreshPending = 0; 8814 8815 function showLoader(container, text = 'Wird aktualisiert...') { 8816 const loader = container?.querySelector('.evc-loader-overlay'); 8817 if (!loader) return; 8818 loader.querySelector('.evc-loader-text').textContent = text; 8819 loader.classList.add('show'); 8820 scheduleLoaderHide(loader, LOADER_MAX_MS); 8821 } 8822 8823 function scheduleLoaderHide(loader, delay) { 8824 if (loaderHideTimer) clearTimeout(loaderHideTimer); 8825 loaderHideTimer = setTimeout(() => { 8826 if (refreshPending > 0) { 8827 console.warn('[EVC31] Loader timeout, refresh still pending â keep visible'); 8828 scheduleLoaderHide(loader, 1500); 8829 return; 8830 } 8831 console.warn('[EVC31] Loader safety-net: force-hiding after ' + LOADER_MAX_MS + 'ms'); 8832 loader.classList.remove('show'); 8833 loaderHideTimer = null; 8834 }, delay); 8835 } 8836 8837 function hideLoader(container) { 8838 const loader = container?.querySelector('.evc-loader-overlay'); 8839 if (loader) loader.classList.remove('show'); 8840 if (loaderHideTimer) { clearTimeout(loaderHideTimer); loaderHideTimer = null; } 8841 } 8842 8843 // ============ CART CLOSE / OPEN HELPERS ================================= 8844 function waitUntil(predicate, timeout = 500, step = 50) { 8845 return new Promise(resolve => { 8846 if (predicate()) return resolve(true); 8847 const end = Date.now() + timeout; 8848 const iv = setInterval(() => { 8849 if (predicate()) { clearInterval(iv); resolve(true); } 8850 else if (Date.now() >= end) { clearInterval(iv); resolve(false); } 8851 }, step); 8852 }); 8853 } 8854 8855 // 3-Layer-Close: Bootstrap-API -> Click-Delegation -> Manual. 8856 // Cereal-Pro (RHWebOffcanvas) ignoriert die ersten beiden; nur manual wirkt. 8857 async function closeCart() { 8858 const oc = document.querySelector('.offcanvas.cart-offcanvas'); 8859 if (!oc || !oc.classList.contains('show')) return true; 8860 8861 try { 8862 const inst = window.bootstrap?.Offcanvas?.getInstance?.(oc); 8863 if (inst?.hide) { 8864 inst.hide(); 8865 if (await waitUntil(() => !oc.classList.contains('show'), 350)) return true; 8866 } 8867 } catch (e) {} 8868 8869 try { 8870 const btn = Array.from(oc.querySelectorAll('.js-offcanvas-close, .btn-close, [data-bs-dismiss="offcanvas"]')) 8871 .find(el => el.offsetParent !== null); 8872 if (btn) { 8873 btn.click(); 8874 if (await waitUntil(() => !oc.classList.contains('show'), 350)) return true; 8875 } 8876 } catch (e) {} 8877 8878 oc.classList.remove('show'); 8879 oc.setAttribute('aria-hidden', 'true'); 8880 if (!document.querySelector('.offcanvas.show, .modal.show')) { 8881 document.querySelectorAll('.offcanvas-backdrop').forEach(b => b.remove()); 8882 document.body.classList.remove('offcanvas-open', 'modal-open'); 8883 document.body.style.overflow = ''; 8884 document.body.style.paddingRight = ''; 8885 }
8886 /* R15 (28.08.): der geschlossene Cart blieb als per transform verschobenes Element im DOM, sein Inhalt 8887 ueber .evc-active sichtbar. Das Mobilmenue des Headers setzt body.ev-mobile-open -> transform:none auf 8888 alles -> der "geschlossene" Cart lag ueber dem Menue und blockierte es. Nach dem Ausfahren entfernen; 8889 der Header baut ihn beim naechsten Oeffnen neu. */ 8890 setTimeout(() => { if (oc.isConnected && !oc.classList.contains('show')) oc.remove(); }, 400); 8891 return true; 8892 } 8893 8894 function findCartTrigger() { 8895 return document.querySelector( 8896 'header .evp-cart-btn, .header-main .evp-cart-btn, ' + 8897 '[data-offcanvas-cart], [data-off-canvas-cart], ' + 8898 '.evp-cart-btn, [data-role="addcart"]' 8899 ); 8900 } 8901 8902 function waitForCartOpen(timeout = 2500) { 8903 return waitUntil(() => !!document.querySelector('.offcanvas.cart-offcanvas.show'), timeout, 80); 8904 } 8905 8906 function replaceOffcanvasContent(currentOc, html) { 8907 /* R13d (28.08., Patrick: "Cart blitzt kurz weiss"): unseren gerenderten Container ueber den Tausch retten. 8908 Vorher abhaengen, Shopware-Markup tauschen, danach im SELBEN Schritt als erstes Kind der neuen 8909 .offcanvas-cart wieder einhaengen -> kein Paint dazwischen, kein Blitz; der Loader auf dem Container bleibt. */ 8910 const keep = currentOc.querySelector('#evc-container'); 8911 /* R13e-2: ein abgehaengter Knoten verliert seine Scrollpositionen -> vorher merken (Liste, Karussell) */ 8912 const scrolled = []; 8913 if (keep) { 8914 keep.querySelectorAll('*').forEach(el => { if (el.scrollTop || el.scrollLeft) scrolled.push([el, el.scrollTop, el.scrollLeft]); }); 8915 keep.remove(); 8916 } 8917 try { 8918 const doc = new DOMParser().parseFromString(html, 'text/html'); 8919 const incomingBody = doc.querySelector('.offcanvas-body'); 8920 const currentBody = currentOc.querySelector('.offcanvas-body'); 8921 if (incomingBody && currentBody) { 8922 currentBody.innerHTML = incomingBody.innerHTML; 8923 } else { 8924 const incomingRoot = doc.querySelector('.offcanvas.cart-offcanvas'); 8925 currentOc.innerHTML = incomingRoot ? incomingRoot.innerHTML : html; 8926 } 8927 } catch (e) { 8928 currentOc.innerHTML = html; 8929 } 8930 if (keep) { 8931 const cart = currentOc.querySelector('.offcanvas-cart') || currentOc.querySelector('.offcanvas-body') || currentOc; 8932 cart.classList.add('evc-active'); 8933 cart.insertBefore(keep, cart.firstChild); 8934 scrolled.forEach(([el, top, left]) => { el.scrollTop = top; el.scrollLeft = left; }); 8935 } 8936 return currentOc; 8937 } 8938 8939 function reinitStorefrontPlugins(scopeEl) { 8940 try { 8941 const PM = window.PluginManager; 8942 if (!PM) return; 8943 if (typeof PM.initializePlugins === 'function') PM.initializePlugins(scopeEl || document); 8944 else if (typeof PM.bootstrap === 'function') PM.bootstrap(scopeEl || document); 8945 } catch (e) { 8946 console.warn('[EVC31] PluginManager reinit failed', e); 8947 } 8948 } 8949 8950 // refresh-in-place: Cart bleibt offen, /checkout/offcanvas-body wird ersetzt. 8951 // Wenn Cart geschlossen war: Standard-Trigger nutzen. 8952 async function _refreshCartInner(callback) { 8953 refreshPending++; 8954 try { 8955 const wasOpen = !!document.querySelector('.offcanvas.cart-offcanvas.show'); 8956 if (wasOpen) showLoader(document.querySelector('.offcanvas.cart-offcanvas.show #evc-container'), 'Wird aktualisiert...'); /* R13d: Spinner fuer jeden Refresh, auch Widget-Add */ 8957 if (!wasOpen) { 8958 const cartBtn = findCartTrigger(); 8959 if (cartBtn) { 8960 cartBtn.click(); 8961 await waitForCartOpen(); 8962 } 8963 return; 8964 } 8965 try { 8966 const res = await fetch('/checkout/offcanvas', { 8967 headers: { 'X-Requested-With': 'XMLHttpRequest' }, 8968 credentials: 'same-origin' 8969 }); 8970 if (!res.ok) { 8971 console.warn('[EVC31] offcanvas fetch HTTP', res.status); 8972 return; 8973 } 8974 const html = await res.text(); 8975 const oc = document.querySelector('.offcanvas.cart-offcanvas'); 8976 if (!oc) return; 8977 replaceOffcanvasContent(oc, html); 8978 reinitStorefrontPlugins(oc); 8979 /* R13d: sofort in place neu zeichnen (applyUI-Pfad "existing" = wrapper.replaceWith), statt auf 8980 Observer / 400-ms-Intervall zu warten. */ 8981 if (oc.querySelector('#evc-container') && oc.querySelector('.hidden-line-items-information')) applyUI(oc); 8982 } catch (e) { 8983 console.warn('[EVC31] refresh-in-place failed', e); 8984 } 8985 } finally { 8986 refreshPending = Math.max(0, refreshPending - 1); 8987 hideLoader(document.querySelector('.offcanvas.cart-offcanvas #evc-container')); /* R13d */ 8988 if (typeof callback === 'function') callback(); 8989 } 8990 } 8991 8992 let refreshInFlight = Promise.resolve(); 8993 function refreshCart(callback) { 8994 refreshInFlight = refreshInFlight.finally(() => _refreshCartInner(callback)); 8995 return refreshInFlight; 8996 } 8997 8998 // Qty-Update-Queue: serialisiert mehrere schnelle qty+/-Klicks, sonst 8999 // gehen die fetches parallel raus -> Shopware last-write-wins -> letzte 9000 // Klicks "verloren". Mit Queue wartet Klick N auf N-1. 9001 let qtyInFlight = Promise.resolve(); 9002 function enqueueQty(task) { 9003 qtyInFlight = qtyInFlight.finally(task).catch(e => console.warn('[EVC31] qty queue', e)); 9004 return qtyInFlight; 9005 } 9006 9007 // ============ FORM SUBMITS (qty change, line-item delete, coupon) ======= 9008 function triggerShopwareRemove(lineItemId, offcanvas, container, showLoaderFlag = true) { 9009 if (showLoaderFlag && container) showLoader(container, 'Wird entfernt...'); 9010 const form = offcanvas.querySelector(`form[action*="delete/${lineItemId}"]`); 9011 if (!form) { 9012 console.warn('[EVC31] No delete-form for lineItemId=' + lineItemId); 9013 hideLoader(container); 9014 return false;
9015 } 9016 submitOffcanvasForm(form, container); 9017 return true; 9018 } 9019 9020 async function submitOffcanvasForm(form, container) { 9021 let res = null; 9022 try { 9023 const fd = new FormData(form); 9024 fd.delete('redirectTo'); 9025 fd.delete('redirectParameters'); 9026 const body = new URLSearchParams(); 9027 for (const [k, v] of fd.entries()) body.append(k, v); 9028 res = await fetch(form.action, { 9029 method: form.method || 'POST', 9030 body, 9031 headers: { 9032 'Content-Type': 'application/x-www-form-urlencoded', 9033 'X-Requested-With': 'XMLHttpRequest' 9034 }, 9035 credentials: 'same-origin' 9036 }); 9037 if (!res.ok) console.warn('[EVC31] form submit non-OK', res.status, form.action); 9038 } catch (e) { 9039 console.warn('[EVC31] form submit failed', e); 9040 } 9041 refreshCart(); 9042 } 9043 9044 // ============ EXTRACT + BUILD UI ======================================= 9045 function extractData(offcanvas) { 9046 const hiddenInfo = offcanvas.querySelector('.hidden-line-items-information'); 9047 const hiddenItems = hiddenInfo?.querySelectorAll('.hidden-line-item') || []; 9048 9049 const items = []; 9050 let subtotal = 0; 9051 let discountTotal = 0; 9052 STATE.activeCoupons = []; 9053 STATE.totalSavings = 0; 9054 STATE.originalTotal = 0; 9055 9056 hiddenItems.forEach(hi => { 9057 const id = hi.dataset.id; 9058 const name = hi.dataset.name; 9059 const qty = parseInt(hi.dataset.quantity) || 1; 9060 const unitPrice = parseFloat(hi.dataset.price) || 0; 9061 const totalPrice = unitPrice * qty; 9062 9063 if (unitPrice < 0) { 9064 discountTotal += Math.abs(totalPrice); 9065 const codeMatch = name.match(/([A-Z0-9]+)$/i); 9066 const code = codeMatch ? codeMatch[1] : name; 9067 STATE.activeCoupons.push({ id, name, code, amount: Math.abs(totalPrice) }); 9068 STATE.totalSavings += Math.abs(totalPrice); 9069 return; 9070 } 9071 9072 subtotal += totalPrice; 9073 9074 const lineItem = offcanvas.querySelector(`.line-item form[action*="${id}"]`)?.closest('.line-item'); 9075 const imgEl = lineItem?.querySelector('.line-item-img'); 9076 const labelLink = lineItem?.querySelector('.line-item-label'); 9077 const variantEl = lineItem?.querySelector('.line-item-details-characteristics'); 9078 9079 let originalPrice = null; 9080 const discountBadge = lineItem?.querySelector('.ev-option-discount .ev-discount-amount'); 9081 if (discountBadge) { 9082 const match = discountBadge.textContent.match(/[\d,.]+/); 9083 if (match) { 9084 const savedAmount = parseFloat(match[0].replace('.', '').replace(',', '.')); 9085 if (savedAmount > 0) { 9086 originalPrice = totalPrice + savedAmount; 9087 STATE.totalSavings += savedAmount; 9088 } 9089 } 9090 } 9091 if (!originalPrice) { 9092 const listPriceEl = lineItem?.querySelector('.line-item-unit-price-list, .text-decoration-line-through'); 9093 if (listPriceEl) { 9094 const match = listPriceEl.textContent.match(/[\d,.]+/); 9095 if (match) { 9096 originalPrice = parseFloat(match[0].replace('.', '').replace(',', '.')) * qty; 9097 STATE.totalSavings += originalPrice - totalPrice; 9098 } 9099 } 9100 } 9101 9102 STATE.originalTotal += originalPrice || totalPrice; 9103 9104 items.push({ 9105 id, name, qty, unitPrice, totalPrice, originalPrice, 9106 url: labelLink?.href || '#', 9107 image: imgEl?.src || '', 9108 variant: variantEl?.textContent?.trim() || '', 9109 /* B2B: Obergrenze fuer das Mengen-Select aus Shopwares eigenem Feld (max=50), Fallback 50 */ 9110 maxQty: parseInt(offcanvas.querySelector(`form[action*="change-quantity/${id}"] input[name="quantity"]`)?.max) || 50 9111 }); 9112 }); 9113 9114 const discountedSubtotal = subtotal - discountTotal; 9115 9116 // Versand-Source-of-Truth: data-shipping vom hidden-line-items-information 9117 // ist der von Shopware bereits berechnete reale Versandwert. Bei eBook-only 9118 // Cart = 0, bei Free-Shipping-Rule = 0, sonst CONFIG.shippingCost. Damit 9119 // entfaellt die JS-Heuristik (freeShippingAt - shippingCost) komplett. 9120 const realShipping = parseFloat(hiddenInfo?.dataset.shipping) || 0; 9121 const shipping = realShipping; 9122 9123 // Versand-UI nur zeigen wenn Cart versand-relevant: entweder aktuell 9124 // Versand > 0, oder Warenwert >= Free-Shipping-Schwelle (Free-Shipping 9125 // greift). Bei eBook-only unter Schwelle: Versand-UI komplett ausblenden. 9126 const hasShippingDisplay = realShipping > 0 || discountedSubtotal >= CONFIG.freeShippingAt; 9127 9128 if (hasShippingDisplay && realShipping === 0) { 9129 STATE.totalSavings += CONFIG.shippingCost; 9130 STATE.originalTotal += CONFIG.shippingCost; 9131 } 9132 const total = subtotal - discountTotal + shipping; 9133
9134 STATE.shippingDone = hasShippingDisplay && realShipping === 0; 9135 STATE.hasShippingDisplay = hasShippingDisplay; 9136 if (STATE.isFirstLoad) STATE.isFirstLoad = false; 9137 9138 return { items, subtotal, discountTotal, shipping, total }; 9139 } 9140 9141 function buildHTML(data) { 9142 const itemCount = data.items.reduce((sum, i) => sum + i.qty, 0); 9143 9144 const discountedSubtotalForHint = Math.max(0, data.subtotal - data.discountTotal); 9145 const shipRemaining = Math.max(0, CONFIG.freeShippingAt - discountedSubtotalForHint); // Fix 04.08.: Schwelle gilt fuer den WARENWERT (Shopware-Rule cartPositionPrice >= 75), Versand zaehlt NICHT mit - vorher wurden 4,95 EUR zu wenig gemeldet. 9146 /* SS26 21.08. (Patrick): nur EIN kurzer Satz und nur solange der Gratisversand NICHT 9147 erreicht ist - ab der Schwelle verschwindet der Hinweis komplett. Platz: Footer, 9148 direkt ueber dem Gutschein-Feld (siehe unten), damit oben der Aktionsbanner steht. */ 9149 /* Rabatt-Tags je Artikel (COMPACT): Shopware haengt den Rabatt als eigene Zeile an den Korb, nicht an den 9150 Artikel. Prozent aus dem Promotion-Namen ("20 % Rabatt: SOMMER20", "Haendlerrabatt 10 %") und NUR wenn 9151 die Kontrollsumme aufgeht (Warenwert x % = Rabattbetrag, +-2 ct) -> sonst keine Tags (fail-closed, 9152 z.B. produktbeschraenkte Codes oder Absolut-Rabatte). */ 9153 const promoName = STATE.activeCoupons[0]?.name || ''; 9154 const promoPct = parseFloat((promoName.match(/(\d+(?:[.,]\d+)?)\s*%/) || [0, '0'])[1].replace(',', '.')) || 0; 9155 const promoUniform = COMPACT && promoPct > 0 && Math.abs(data.subtotal * promoPct / 100 - data.discountTotal) < 0.02; 9156 const promoPctLabel = String(promoPct).replace('.', ','); 9157 9158 const shipText = `Gratis Versand ab ${formatPrice(CONFIG.freeShippingAt)}`; 9159 9160 /* B2B: keine Chip-Box, sondern eine zweite kleine Trust-Zeile direkt ueber dem Kauf-Knopf. */ 9161 const shippingHintHTML = (!STATE.shippingDone && shipRemaining > 0) ? (COMPACT ? `<div class="evc-trust evc-trust-ship"> 9162 <span class="evc-ship-hint-icon">ð</span> 9163 <span>${shipText}</span> 9164 </div>` : `<div class="evc-ship-hint"> 9165 <span class="evc-ship-hint-icon">ð</span> 9166 <span class="evc-ship-hint-msg">${shipText}</span> 9167 </div>`) : ''; 9168 9169 let itemsHTML = ''; 9170 if (data.items.length === 0) { 9171 itemsHTML = `<div class="evc-empty"> 9172 <div class="evc-empty-icon">ð</div> 9173 <h4>Dein Warenkorb ist leer</h4> 9174 <p>Entdecke unsere Produkte!</p> 9175 <button class="evc-empty-btn" data-action="shop">Jetzt shoppen</button> 9176 </div>`; 9177 } else { 9178 data.items.forEach(item => { 9179 let priceHTML = `<span>${formatPrice(item.totalPrice)}</span>`; 9180 if (promoUniform && item.totalPrice > 0) { /* kein Tag an 0,00-â¬-Positionen (Gratis-eBook) */ 9181 const reduced = Math.round(item.totalPrice * (100 - promoPct)) / 100; 9182 priceHTML = `<span class="evc-price-new">${formatPrice(reduced)}</span><span class="evc-price-old">${formatPrice(item.totalPrice)}</span><span class="evc-price-tag">-${promoPctLabel} %</span>`; 9183 } else if (item.originalPrice && item.originalPrice > item.totalPrice) { 9184 priceHTML = `<span class="evc-item-price-old">${formatPrice(item.originalPrice)}</span><span>${formatPrice(item.totalPrice)}</span>`; 9185 } 9186 9187 /* B2B (Prototyp v4, 27.08.): dieselbe Box "- 1 +", aber 24px hoch auf der Preislinie; ueber der 9188 Zahl liegt ein unsichtbares <select> (1..maxQty) -> iPhone oeffnet das native Rad, Desktop 9189 ein Dropdown. Das Zahlenfeld bleibt die Quelle fuer +/- (bestehender Klick-Handler). */ 9190 const qtyOptions = COMPACT ? Array.from({ length: Math.max(item.qty, item.maxQty) }, (_, i) => `<option value="${i + 1}"${i + 1 === item.qty ? ' selected' : ''}>${i + 1}</option>`).join('') : '';
9191 const qtyField = COMPACT 9192 ? (IS_FINE_POINTER 9193 ? `<input type="number" class="evc-qty-input" value="${item.qty}" min="1" max="${item.maxQty}" inputmode="numeric" aria-label="Menge">` 9194 : `<span class="evc-qty-val"><input type="number" class="evc-qty-input" value="${item.qty}" min="1" tabindex="-1" readonly><select class="evc-qty-select" aria-label="Menge">${qtyOptions}</select></span>`) 9195 : `<input type="number" class="evc-qty-input" value="${item.qty}" min="1">`; 9196 const controls = `<div class="evc-qty" data-qty-id="${item.id}"> 9197 <button class="evc-qty-btn" data-dir="minus">â</button> 9198 ${qtyField} 9199 <button class="evc-qty-btn" data-dir="plus">+</button> 9200 </div>`; 9201 9202 itemsHTML += `<div class="evc-item${COMPACT ? ' evc-item-b2b' : ''}" data-item-id="${item.id}"> 9203 <div class="evc-item-img"> 9204 ${item.image ? `<img src="${item.image}" alt="">` : '<span style="font-size:28px">ð¦</span>'} 9205 </div> 9206 <div class="evc-item-body"> 9207 <div class="evc-item-name">${item.name}</div> 9208 ${(IS_B2B && /^\d+er$/i.test(item.variant)) ? '' : `<div class="evc-item-variant">${item.variant}</div>`} 9209 <div class="evc-item-price">${priceHTML}${COMPACT ? controls : ''}</div> 9210 ${COMPACT ? '' : `<div class="evc-item-controls"> 9211 ${controls} 9212 <button class="evc-remove-btn" data-action="remove" data-id="${item.id}"><svg viewBox="0 0 24 24"><path d="M3 6h18M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6M10 11v6M14 11v6"/></svg></button> 9213 </div>`} 9214 </div> 9215 ${COMPACT ? `<button class="evc-item-x" type="button" data-action="remove" data-id="${item.id}" aria-label="Artikel entfernen">â</button>` : ''} 9216 </div>`; 9217 }); 9218 } 9219 9220 let couponRow = ''; 9221 if ((IS_B2B || !COMPACT) && STATE.activeCoupons.length > 0) { /* B2C-COMPACT: keine Code-Zeile ("Du sparst" reicht); B2B: Haendlerrabatt-Zeile bleibt (Patrick 27.08.) */ 9222 const c = STATE.activeCoupons[0]; 9223 /* B2B: Promotion-Name als Label ("Haendlerrabatt 10 %"), kein Kreuz - das Kreuz 9224 loeschte das Promotion-Line-Item, der Haendler verlor seinen eigenen Rabatt. */ 9225 couponRow = IS_B2B ? `<div class="evc-row"> 9226 <span class="evc-row-label">${c.name}</span> 9227 <span class="evc-row-value green">-${formatPrice(c.amount)}</span> 9228 </div>` : `<div class="evc-row"> 9229 <span class="evc-row-label">Code</span> 9230 <span class="evc-row-value green"> 9231 <span class="evc-coupon-pill">${c.code}<button class="evc-coupon-pill-x" data-action="remove-coupon" data-id="${c.id}">â</button></span> 9232 -${formatPrice(c.amount)} 9233 </span> 9234 </div>`; 9235 } 9236 9237 const couponOpen = STATE.activeCoupons.length > 0 ? ' open' : ''; 9238 9239 let savingsRow = ''; 9240 if (STATE.totalSavings > 0) { 9241 savingsRow = `<div class="evc-row"> 9242 <span class="evc-row-label">Du sparst</span> 9243 <span class="evc-row-value red">-${formatPrice(STATE.totalSavings)}</span> 9244 </div>`; 9245 } 9246 9247 const shippingValue = data.shipping === 0 9248 ? `<span class="evc-row-value-old">${formatPrice(CONFIG.shippingCost)}</span><span>Gratis</span>` 9249 : formatPrice(data.shipping); 9250 const shippingClass = data.shipping === 0 ? 'green' : ''; 9251 9252 const shippingRow = STATE.hasShippingDisplay ? `<div class="evc-row"> 9253 <span class="evc-row-label">Versand in DE</span> 9254 <span class="evc-row-value ${shippingClass}">${shippingValue}</span> 9255 </div>` : ''; 9256 9257 const originalTotalWithShipping = STATE.originalTotal + (data.shipping === 0 ? 0 : CONFIG.shippingCost); 9258 const showOriginalTotal = originalTotalWithShipping > data.total + 0.01; 9259 const totalStrike = showOriginalTotal ? `<span class="evc-total-original">${formatPrice(originalTotalWithShipping)}</span>` : ''; 9260 9261 /* Zahlungsmittel-Icons: B2C als Leiste unter dem Kauf-Knopf (wie bisher), B2B klein rechts 9262 neben der Trust-Zeile (27.08., Patrick: untere Leiste faellt weg, mehr Platz). */ 9263 const paymentIconsHTML = `<img src="https://echt-vital.de/media/37/76/00/1754597203/Footer-Zahlungsmittel-PP.svg" alt="PayPal"><img src="https://echt-vital.de/media/a7/07/b5/1754597203/Footer-Zahlungsmittel-Klarna.svg" alt="Klarna"><img src="https://echt-vital.de/media/88/3c/a7/1754597203/Footer-Zahlungsmittel-Visa.svg" alt="Visa"><img src="https://echt-vital.de/media/60/75/4c/1754597203/Footer-Zahlungsmittel-MC.svg" alt="Mastercard"><img src="https://echt-vital.de/media/f6/df/2a/1754597203/Footer-Zahlungsmittel-Rechnung.svg" alt="Rechnung"><img src="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64.92 36.19'><text x='32.46' y='20.9' text-anchor='middle' font-family='Arial Black,Arial,Helvetica,sans-serif' font-weight='900' font-size='7.6' letter-spacing='0.2' fill='%23111'>VORKASSE</text></svg>" alt="Vorkasse">`; 9264 /* B2B: nur die im Haendler-Kanal freigeschalteten Zahlarten (27.08. ausgelesen): PayPal + Rechnung. 9265 Keine Vorkasse, kein Klarna, keine Karte im B2B-Kanal. */ 9266 const paymentIconsB2BHTML = `<img src="https://echt-vital.de/media/37/76/00/1754597203/Footer-Zahlungsmittel-PP.svg" alt="PayPal"><img src="https://echt-vital.de/media/f6/df/2a/1754597203/Footer-Zahlungsmittel-Rechnung.svg" alt="Rechnung">`; 9267 9268 /* B2B: kein Gutscheinfeld im Warenkorb. Haendlerrabatte sind automatische Promotions; 9269 Codes bleiben im Checkout eingebbar. */ 9270 /* COMPACT (B2C): kein Aufklapper, Feld + OK stehen immer da; aktiver Code als graue Pille IM Feld mit x 9271 (= remove-coupon), OK solange weg. Die Pille traegt auch .evc-coupon-pill, damit das Aktions-Bundle 9272 (codeInCartDom) den aktiven Code weiter erkennt. Code-Text: erstes Grossbuchstaben-Token des Namens. */ 9273 const activeCode = STATE.activeCoupons[0] ? ((STATE.activeCoupons[0].name.match(/\b[A-Z][A-Z0-9]{3,}\b/) || [STATE.activeCoupons[0].code])[0]) : ''; 9274 const couponBlockHTML = IS_B2B ? '' : (COMPACT ? `<div class="evc-coupon-msg-wrap" id="evc-coupon-msg-wrap"> 9275 <div class="evc-coupon-msg-inner"> 9276 <div class="evc-coupon-msg" id="evc-coupon-msg"></div> 9277 </div> 9278 </div> 9279 <div class="evc-coupon-row evc-coupon-row-neu">${STATE.activeCoupons[0] 9280 ? `<div class="evc-coupon-field"><span class="evc-coupon-pill evc-code-pill"><svg viewBox="0 0 24 24">
9280<path d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"/><circle cx="7" cy="7" r="1.2"/></svg>${activeCode}<button type="button" class="evc-code-pill-x" data-action="remove-coupon" data-id="${STATE.activeCoupons[0].id}" aria-label="Code entfernen">â</button></span></div>` 9281 : `<input type="text" class="evc-coupon-input" id="evc-coupon-input" placeholder="Gutscheincode eingeben..."><button class="evc-coupon-submit" data-action="submit-coupon">OK</button>`}</div>` : `<div class="evc-coupon-msg-wrap" id="evc-coupon-msg-wrap"> 9282 <div class="evc-coupon-msg-inner"> 9283 <div class="evc-coupon-msg" id="evc-coupon-msg"></div> 9284 </div> 9285 </div> 9286 9287 <div class="evc-coupon-toggle${couponOpen}" data-action="toggle-coupon"> 9288 <span class="evc-coupon-toggle-left"><span class="evc-coupon-toggle-icon">ð·ï¸</span>Gutscheincode?</span> 9289 <span class="evc-coupon-toggle-arrow">â¾</span> 9290 </div> 9291 <div class="evc-coupon-expand${couponOpen}" id="evc-coupon-expand"> 9292 <div class="evc-coupon-expand-inner"> 9293 <div class="evc-coupon-row"> 9294 <input type="text" class="evc-coupon-input" id="evc-coupon-input" placeholder="Gutscheincode eingeben..."> 9295 <button class="evc-coupon-submit" data-action="submit-coupon">OK</button> 9296 </div> 9297 </div> 9298 </div>`); 9299 9300 return `<div class="evc-wrapper"> 9301 <div class="evc-loader-overlay"> 9302 <div class="evc-loader-spinner"></div> 9303 <div class="evc-loader-text">Wird aktualisiert...</div> 9304 </div> 9305 9306 <div class="evc-header${COMPACT ? ' evc-header-compact' : ''}" data-action="close-header"> 9307 <div class="evc-header-icon">ð</div> 9308 <div class="evc-header-title">Warenkorb · ${itemCount} Artikel</div> 9309 <button class="evc-header-close">â</button> 9310 </div> 9311 9312 <div class="evc-items${COMPACT ? ' evc-items-b2b' : ''}${IS_B2B ? '' : ' evc-items-b2c'}">${itemsHTML}</div> 9313 9314 <div class="evc-footer${COMPACT ? ' evc-footer-compact' : ''}" data-subtotal="${data.subtotal}"> 9315 ${COMPACT ? '' : shippingHintHTML} 9316 9317 ${couponBlockHTML} 9318 9319 <div class="evc-totals"> 9320 ${shippingRow} 9321 ${couponRow} 9322 ${savingsRow} 9323 ${COMPACT ? '' : `<div class="evc-row total"> 9324 <span class="evc-row-label">Gesamt</span> 9325 <span class="evc-row-value">${totalStrike}${formatPrice(data.total)}</span> 9326 </div>`} 9327 </div> 9328 9329 ${COMPACT ? '' : `<div class="evc-trust"> 9330 <span class="evc-trust-check">â</span> 9331 <span>Sicher einkaufen mit 100 Tage Geld-Zurück-Garantie</span> 9332 </div>`} 9333 ${COMPACT ? shippingHintHTML : ''} 9334 9335 <button class="evc-checkout${COMPACT ? ' evc-checkout-compact' : ''}" data-action="checkout">${COMPACT ? 'Zur Kasse · ' + formatPrice(data.total) : 'Sicher zur Kasse'}</button> 9336 ${COMPACT ? `<div class="evc-trust evc-trust-compact"><span class="evc-trust-lock"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M7.5 10.5V8a4.5 4.5 0 0 1 9 0v2.5" fill="none" stroke="#6b7280" stroke-width="2.4" stroke-linecap="round"/><rect x="4" y="10.5" width="16" height="11" rx="2.6" fill="#E8B430"/><circle cx="12" cy="15.2" r="1.7" fill="#7a5a10"/><rect x="11.15" y="15.5" width="1.7" height="3.2" rx=".7" fill="#7a5a10"/></svg></span><span>100 Tage Geld-Zurück-Garantie</span></div>` : ''} 9337 9338 <div class="evc-payments${COMPACT ? ' evc-payments-compact' : ''}">${IS_B2B ? paymentIconsB2BHTML : paymentIconsHTML}</div> 9339 </div> 9340 </div>`; 9341 } 9342 9343 function attachEvents(offcanvas, container) { 9344 // Container-Click-Handler dedup: alten entfernen vor neuem. 9345 // Event-Delegation: qty-Buttons werden NICHT mehr direkt gebunden, 9346 // sondern ueber diesen einen Handler dispatched (kein Memory-Leak bei 9347 // wiederholten applyUI-Cycles). 9348 if (container.__evcClickHandler) { 9349 container.removeEventListener('click', container.__evcClickHandler); 9350 } 9351 const clickHandler = (e) => { 9352 // 1) qty +/- via Delegation
9353 const qtyBtn = e.target.closest('.evc-qty-btn'); 9354 if (qtyBtn && container.contains(qtyBtn)) { 9355 const qtyEl = qtyBtn.closest('.evc-qty'); 9356 const id = qtyEl?.dataset.qtyId; 9357 const input = qtyEl?.querySelector('.evc-qty-input'); 9358 if (!id || !input) return; 9359 showLoader(container, 'Wird aktualisiert...'); 9360 let val = parseInt(input.value) || 1; 9361 val = qtyBtn.dataset.dir === 'plus' ? val + 1 : Math.max(1, val - 1); 9362 input.value = val; 9363 const origForm = offcanvas.querySelector(`form[action*="change-quantity/${id}"]`); 9364 const origInput = origForm?.querySelector('input[name="quantity"]'); 9365 if (!origForm || !origInput) { 9366 console.warn('[EVC31] No change-quantity form for id=' + id); 9367 hideLoader(container); 9368 return; 9369 } 9370 origInput.value = val; 9371 // Queue: sequentielle Submits statt parallele 9372 enqueueQty(() => submitOffcanvasForm(origForm, container)); 9373 return; 9374 } 9375 // 2) Andere data-action 9376 const target = e.target.closest('[data-action]'); 9377 if (!target) return; 9378 const action = target.dataset.action; 9379 const id = target.dataset.id; 9380 switch (action) { 9381 case 'close-header': 9382 closeCart(); 9383 break; 9384 case 'shop': 9385 closeCart(); 9386 window.location.href = CONFIG.bestsellerUrl; 9387 break; 9388 case 'remove': 9389 triggerShopwareRemove(id, offcanvas, container); 9390 break; 9391 case 'toggle-coupon': { 9392 const tgl = container.querySelector('.evc-coupon-toggle'); 9393 const exp = container.querySelector('#evc-coupon-expand'); 9394 if (tgl && exp) { tgl.classList.toggle('open'); exp.classList.toggle('open'); } 9395 break; 9396 } 9397 case 'submit-coupon': 9398 submitCoupon(offcanvas, container); 9399 break; 9400 case 'remove-coupon': 9401 triggerShopwareRemove(id, offcanvas, container); 9402 break; 9403 case 'checkout': 9404 window.location.href = '/checkout/confirm'; 9405 break; 9406 } 9407 }; 9408 container.addEventListener('click', clickHandler); 9409 container.__evcClickHandler = clickHandler; 9410 9411 /* B2B: Menge per Select (iPhone-Rad / Dropdown). Gleicher Weg wie +/-: change-quantity-Form 9412 befuellen und ueber die Queue abschicken. Dedup wie beim Click-Handler. */ 9413 if (COMPACT) { 9414 if (container.__evcChangeHandler) { 9415 container.removeEventListener('change', container.__evcChangeHandler); 9416 } 9417 const changeHandler = (e) => { 9418 /* Quelle: Select (Touch) ODER direkt getippte Zahl (Maus). Clamp auf 1..max. */ 9419 const src = e.target.closest('.evc-qty-select, .evc-qty-input'); 9420 if (!src || !container.contains(src)) return; 9421 const qtyEl = src.closest('.evc-qty'); 9422 const id = qtyEl?.dataset.qtyId; 9423 const input = qtyEl?.querySelector('.evc-qty-input'); 9424 if (!id || !input) return; 9425 const max = parseInt(src.max || input.max) || 50; 9426 const val = Math.min(max, Math.max(1, parseInt(src.value) || 1)); 9427 input.value = val; 9428 if (val === parseInt(input.defaultValue)) return; /* nichts geaendert (z.B. auf 0 getippt -> 1) */ 9429 showLoader(container, 'Wird aktualisiert...'); 9430 const origForm = offcanvas.querySelector(`form[action*="change-quantity/${id}"]`); 9431 const origInput = origForm?.querySelector('input[name="quantity"]'); 9432 if (!origForm || !origInput) { 9433 console.warn('[EVC31] No change-quantity form for id=' + id); 9434 hideLoader(container); 9435 return; 9436 } 9437 origInput.value = val; 9438 enqueueQty(() => submitOffcanvasForm(origForm, container)); 9439 }; 9440 container.addEventListener('change', changeHandler); 9441 container.__evcChangeHandler = changeHandler; 9442 /* Enter im getippten Feld = uebernehmen (Blur loest das change-Event aus); Fokus = Zahl markiert */ 9443 if (container.__evcKeyHandler) container.removeEventListener('keydown', container.__evcKeyHandler);
9444 const keyHandler = (e) => { 9445 if (e.key === 'Enter' && e.target.closest('.evc-qty-input') && container.contains(e.target)) { e.preventDefault(); e.target.blur(); } 9446 }; 9447 container.addEventListener('keydown', keyHandler); 9448 container.__evcKeyHandler = keyHandler; 9449 if (container.__evcFocusHandler) container.removeEventListener('focusin', container.__evcFocusHandler); 9450 const focusHandler = (e) => { const inp = e.target.closest('.evc-qty-input'); if (inp && !inp.readOnly) inp.select(); }; 9451 container.addEventListener('focusin', focusHandler); 9452 container.__evcFocusHandler = focusHandler; 9453 } 9454 9455 // Coupon-Input Enter-Key: ein Listener pro Render, ID-Element ist 9456 // jedes Mal neu (replaceWith), daher kein Cleanup noetig. 9457 container.querySelector('#evc-coupon-input')?.addEventListener('keyup', e => { 9458 if (e.key === 'Enter') submitCoupon(offcanvas, container); 9459 }); 9460 } 9461 9462 function submitCoupon(offcanvas, container) { 9463 const input = container.querySelector('#evc-coupon-input'); 9464 const code = input?.value.trim(); 9465 if (!code) return; 9466 showLoader(container, 'Code wird geprüft...'); 9467 const origForm = offcanvas.querySelector('.offcanvas-cart-promotion-form'); 9468 const origInput = origForm?.querySelector('input[name="code"]'); 9469 if (origForm && origInput) { 9470 origInput.value = code; 9471 submitOffcanvasForm(origForm, container); 9472 input.value = ''; 9473 } else { 9474 console.warn('[EVC31] No promotion-form found'); 9475 hideLoader(container); 9476 } 9477 } 9478 9479 function showCouponMessage(container, message, isSuccess) { 9480 const wrap = container.querySelector('#evc-coupon-msg-wrap'); 9481 const msgEl = container.querySelector('#evc-coupon-msg'); 9482 if (!wrap || !msgEl) return; 9483 hideLoader(container); 9484 msgEl.textContent = message; 9485 msgEl.className = 'evc-coupon-msg ' + (isSuccess ? 'success' : 'error'); 9486 wrap.classList.add('show'); 9487 setTimeout(() => wrap.classList.remove('show'), 4000); 9488 } 9489 9490 // ============ APPLY UI + WATCH ========================================= 9491 function applyUI(offcanvas) { 9492 const cart = offcanvas.querySelector('.offcanvas-cart'); 9493 if (!cart) return; 9494 9495 const existing = cart.querySelector('#evc-container'); 9496 const data = extractData(offcanvas); 9497 const html = buildHTML(data); 9498 9499 if (!existing) { 9500 const container = document.createElement('div'); 9501 container.id = 'evc-container'; 9502 container.innerHTML = html; 9503 container.__evcLastHtml = html; /* R13d */ 9504 cart.classList.add('evc-active'); 9505 cart.insertBefore(container, cart.firstChild); 9506 attachEvents(offcanvas, container); 9507 watchCouponMessages(offcanvas, container); 9508 watchCartUpdates(offcanvas, container); 9509 setTimeout(() => hideLoader(container), 30); 9510 } else { 9511 /* R13d: identischer Stand (direkter Aufruf aus dem Refresh UND der Observer 30 ms spaeter) -> nicht erneut 9512 tauschen, sonst springt die Liste und das Bestseller-Widget haengt sich doppelt neu ein. */ 9513 if (existing.__evcLastHtml === html && existing.querySelector('.evc-wrapper')) { 9514 setTimeout(() => hideLoader(existing), 30); 9515 return; 9516 } 9517 const wrapper = existing.querySelector('.evc-wrapper'); 9518 const temp = document.createElement('div'); 9519 temp.innerHTML = html; 9520 const newWrapper = temp.querySelector('.evc-wrapper'); 9521 if (wrapper && newWrapper) { 9522 /* R13e: Scrollposition der Artikelliste und eingehaengte Widgets ([data-ev-widget], z.B. das 9523 Bestseller-Karussell) ueber den Tausch retten - sonst springt die Liste nach oben und das Widget blinkt. */ 9524 const oldItems = wrapper.querySelector('.evc-items'); 9525 const newItems = newWrapper.querySelector('.evc-items');
9526 const keepScroll = oldItems ? oldItems.scrollTop : 0; 9527 const keepWidgets = oldItems ? Array.from(oldItems.querySelectorAll('[data-ev-widget]')) : []; 9528 wrapper.replaceWith(newWrapper); 9529 if (newItems) { 9530 keepWidgets.forEach(w => newItems.appendChild(w)); 9531 if (keepScroll) newItems.scrollTop = keepScroll; 9532 } 9533 } else { 9534 existing.innerHTML = html; 9535 } 9536 existing.__evcLastHtml = html; 9537 attachEvents(offcanvas, existing); 9538 watchCouponMessages(offcanvas, existing); 9539 watchCartUpdates(offcanvas, existing); /* R13d: Observer hingen am ERSETZTEN hidden-line-items-Knoten -> neu binden */ 9540 setTimeout(() => hideLoader(existing), 30); 9541 } 9542 } 9543 9544 function watchCouponMessages(offcanvas, container) { 9545 // Alten Observer disconnecten, sonst Memory-Leak bei wiederholten applyUI. 9546 if (container.__evcCouponObserver) { 9547 try { container.__evcCouponObserver.disconnect(); } catch (e) {} 9548 } 9549 const processed = new WeakSet(); 9550 const check = () => { 9551 const alerts = offcanvas.querySelectorAll('.flashbags .alert, .alert'); 9552 alerts.forEach(alert => { 9553 if (processed.has(alert)) return; 9554 processed.add(alert); 9555 const isSuccess = alert.classList.contains('alert-success'); 9556 const content = alert.querySelector('.alert-content-container, .alert-content'); 9557 const message = content?.textContent?.trim() || alert.textContent.trim(); 9558 showCouponMessage(container, message, isSuccess); 9559 }); 9560 }; 9561 check(); 9562 const obs = new MutationObserver(check); 9563 obs.observe(offcanvas, { childList: true, subtree: true }); 9564 container.__evcCouponObserver = obs; 9565 } 9566 9567 function watchCartUpdates(offcanvas, container) { 9568 // Alte Observer disconnecten 9569 if (container.__evcInfoObserver) { 9570 try { container.__evcInfoObserver.disconnect(); } catch (e) {} 9571 } 9572 if (container.__evcAddedObserver) { 9573 try { container.__evcAddedObserver.disconnect(); } catch (e) {} 9574 } 9575 const hiddenInfo = offcanvas.querySelector('.hidden-line-items-information'); 9576 if (hiddenInfo) { 9577 let lastItemCount = hiddenInfo.querySelectorAll('.hidden-line-item').length; 9578 let lastTotal = hiddenInfo.dataset.value; 9579 const infoObs = new MutationObserver(() => { 9580 const newItemCount = hiddenInfo.querySelectorAll('.hidden-line-item').length; 9581 const newTotal = hiddenInfo.dataset.value; 9582 if (newItemCount !== lastItemCount || newTotal !== lastTotal) { 9583 lastItemCount = newItemCount; 9584 lastTotal = newTotal; 9585 showLoader(container, 'Wird aktualisiert...'); 9586 setTimeout(() => applyUI(offcanvas), 30); 9587 } 9588 }); 9589 infoObs.observe(hiddenInfo, { childList: true, subtree: true, attributes: true }); 9590 container.__evcInfoObserver = infoObs; 9591 } 9592 const addedObs = new MutationObserver(muts => { 9593 for (const m of muts) { 9594 if (m.target.closest('#evc-container')) continue; 9595 for (const n of m.addedNodes) { 9596 if (n.nodeType !== 1) continue; 9597 if (n.closest?.('#evc-container')) continue; 9598 if (n.classList?.contains('hidden-line-items-information') || 9599 n.querySelector?.('.hidden-line-items-information') || 9600 n.classList?.contains('offcanvas-cart-items')) { 9601 showLoader(container, 'Wird aktualisiert...'); 9602 setTimeout(() => applyUI(offcanvas), 30); 9603 return; 9604 } 9605 } 9606 } 9607 }); 9608 addedObs.observe(offcanvas, { childList: true, subtree: true }); 9609 container.__evcAddedObserver = addedObs; 9610 } 9611 9612 // ============ ENTRY POINT ============================================== 9613 let lastProcess = 0; 9614 let processInFlight = null; 9615 let pendingRetries = 0; 9616 let processScheduled = false;
9617 9618 // Single-flight Debouncer: Observer UND setInterval-Fallback koennen 9619 // gleichzeitig schedulen â wir lassen nur den ersten durch. 9620 function scheduleProcessCart(delay = 0) { 9621 if (processScheduled) return; 9622 processScheduled = true; 9623 setTimeout(() => { 9624 processScheduled = false; 9625 processCart(); 9626 }, delay); 9627 } 9628 9629 function processCart() { 9630 if (Date.now() - lastProcess < 100) return; 9631 lastProcess = Date.now(); 9632 if (processInFlight) return processInFlight; 9633 processInFlight = (async () => { 9634 try { await _processCartInner(); } 9635 finally { processInFlight = null; } 9636 })(); 9637 return processInFlight; 9638 } 9639 9640 async function _processCartInner() { 9641 if (STATE.processing) return; 9642 const offcanvas = document.querySelector('.offcanvas.cart-offcanvas.show'); 9643 if (!offcanvas) return; 9644 9645 if (!offcanvas.querySelector('.evc-wrapper')) { 9646 if (!STATE.hasInitializedSession) { 9647 STATE.hasInitializedSession = true; 9648 STATE.isFirstLoad = true; 9649 STATE.shippingDone = false; 9650 } 9651 } 9652 9653 if (offcanvas.querySelector('.evc-wrapper')) return; 9654 9655 const hiddenInfo = offcanvas.querySelector('.hidden-line-items-information'); 9656 if (!hiddenInfo) { 9657 if (pendingRetries < 8) { 9658 pendingRetries++; 9659 setTimeout(processCart, 80); 9660 } 9661 return; 9662 } 9663 pendingRetries = 0; 9664 applyUI(offcanvas); 9665 } 9666 9667 // Setzt CSS-Variable --evc-vh = aktuelle visual viewport height. iOS 9668 // Safari aktualisiert 100dvh nicht synchron mit URL-Bar-Kollaps; diese 9669 // JS-getriggerte Variable greift zuverlaessiger. Mit: 9670 // - RAF-Throttle gegen Layout-Thrashing bei scroll-events 9671 // - Pinch-Zoom-Guard (vv.scale != 1 -> nutze innerHeight) 9672 // - Math.max(innerHeight, vv.height) -> verhindert Schrumpfen bei Keyboard 9673 // - Delta-Guard: setProperty nur wenn change >= 1px 9674 let evcVhRaf = 0; 9675 let evcLastVh = 0; 9676 function computeEvcViewportHeight() { 9677 const vv = window.visualViewport; 9678 const ih = window.innerHeight || 0; 9679 if (!vv) return ih; 9680 // Bei Pinch-Zoom (scale != 1): Layout stabil halten -> innerHeight 9681 if (vv.scale && Math.abs(vv.scale - 1) > 0.01) return ih;
9682 // visualViewport.height direkt (Codex-Korrektur: NICHT Math.max, 9683 // sonst Hoehe-Ueberhang bei iOS-Chrome-Toggle = Hohlraum). 9684 return Math.round(vv.height || ih); 9685 } 9686 function syncViewportHeight() { 9687 if (evcVhRaf) return; 9688 evcVhRaf = window.requestAnimationFrame(() => { 9689 evcVhRaf = 0; 9690 const h = computeEvcViewportHeight(); 9691 if (!h || !Number.isFinite(h)) return; 9692 if (Math.abs(h - evcLastVh) < 1) return; 9693 evcLastVh = h; 9694 document.documentElement.style.setProperty('--evc-vh', h + 'px'); 9695 }); 9696 } 9697 function bindViewportSync() { 9698 if (window.__EVC31_VH_BOUND) return; 9699 window.__EVC31_VH_BOUND = true; 9700 syncViewportHeight(); 9701 const vv = window.visualViewport; 9702 if (vv) { 9703 vv.addEventListener('resize', syncViewportHeight, { passive: true }); 9704 vv.addEventListener('scroll', syncViewportHeight, { passive: true }); 9705 } 9706 window.addEventListener('resize', syncViewportHeight, { passive: true }); 9707 window.addEventListener('orientationchange', syncViewportHeight, { passive: true }); 9708 window.addEventListener('pageshow', syncViewportHeight, { passive: true }); 9709 } 9710 9711 // Bindet einmal global einen Backdrop-Klick-Handler. Cereal-Pro initiali- 9712 // siert Bootstrap-Offcanvas nicht, daher fehlt der eingebaute Backdrop- 9713 // Close. Wir liefern ihn manuell. Capture-Phase, damit kein anderer 9714 // Listener stopPropagation() machen kann. 9715 function bindBackdropClose() { 9716 if (window.__EVC31_BACKDROP_BOUND) return; 9717 window.__EVC31_BACKDROP_BOUND = true; 9718 document.addEventListener('click', (e) => { 9719 const t = e.target; 9720 if (!(t instanceof Element)) return; 9721 if (!t.classList.contains('offcanvas-backdrop')) return; 9722 // Nur reagieren wenn Cart offen + kein anderes Modal/Offcanvas oben drauf 9723 const cart = document.querySelector('.offcanvas.cart-offcanvas.show'); 9724 if (!cart) return; 9725 if (document.querySelector('.modal.show')) return; 9726 closeCart(); 9727 }, true); 9728 } 9729 9730 // Sobald Shopware das offcanvas einfuegt, warten wir die Slide-In-Animation 9731 // ab bevor unser Wrapper inserted wird. Reduziert Jank, weil Layout-Shifts 9732 // aus .evc-active erst NACH Abschluss des CSS-Transitions passieren. 9733 // Bevorzugt transitionend (echtes Signal), Fallback 380ms. 9734 function onCartInserted() { 9735 STATE.hasInitializedSession = false; 9736 document.body.classList.add('evc-cart-open'); // B3: Trusted-Badge ausblenden 9737 const oc = document.querySelector('.offcanvas.cart-offcanvas'); 9738 if (!oc) return scheduleProcessCart(50); 9739 9740 let done = false; 9741 const fire = () => { if (done) return; done = true; scheduleProcessCart(0); }; 9742 const cs = getComputedStyle(oc); 9743 const hasTransition = cs.transitionDuration && cs.transitionDuration !== '0s'; 9744 9745 if (hasTransition) { 9746 oc.addEventListener('transitionend', (ev) => { 9747 if (ev.target === oc) fire(); 9748 }, { once: true }); 9749 setTimeout(fire, 380); // Fallback knapp nach Slide-In-Dauer 9750 } else { 9751 // Kein Transition gesetzt -> nach 2 RAF rendern (naechster sauberer Paint) 9752 requestAnimationFrame(() => requestAnimationFrame(fire)); 9753 } 9754 } 9755 9756 function init() { 9757 bindViewportSync(); 9758 bindBackdropClose(); 9759 9760 new MutationObserver(muts => { 9761 for (const m of muts) { 9762 if (m.target.closest('#evc-container')) continue; 9763 for (const n of m.addedNodes) { 9764 if (n.nodeType !== 1) continue; 9765 if (n.closest?.('#evc-container')) continue; 9766 if (n.classList?.contains('cart-offcanvas') || 9767 n.classList?.contains('offcanvas-body') || 9768 n.querySelector?.('.offcanvas-cart')) { 9769 onCartInserted(); 9770 return; 9771 } 9772 } 9773 } 9774 }).observe(document.body, { childList: true, subtree: true }); 9775 9776 setInterval(() => { 9777 const cart = document.querySelector('.offcanvas.cart-offcanvas.show'); 9778 if (cart && !cart.querySelector('.evc-wrapper')) scheduleProcessCart(0); 9779 document.body.classList.toggle('evc-cart-open', !!cart); // B3: Badge-Sync (Safety) 9780 }, 400); 9781 9782 console.log('[EVC31] Ready! (freeShippingAt=' + CONFIG.freeShippingAt + 'â
9782¬' + (IS_B2B ? ', B2B' : '') + ')'); 9783 } 9784 9785 if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init); 9786 else init(); 9787})(); 9788 9789</script>
9789 9790 9791<!-- EV-CART-BESTSELLER-START v1 | "Entdecke unsere Bestseller" im Off-Canvas-Cart (nur B2C, auch im leeren Korb) 9792 Quelle: Bestseller-Kategorie 019c8aea38067ed78aff31126bd5d88c + RANK (90 Tage, Stand 2026-08-25 08:56). 9793 Messung: EvWidgetHub widget_id 'cart-bestseller', ctx 'cart' (Handbuch §7). 9794 Deploy: tools/warenkorb-bestseller/deploy_cart_bestseller.py | Doku: go-live/warenkorb-bestseller/README.md --> 9795<style> 9796/* Scope: nur innerhalb des EVC31-Cart-Containers; bewusst OHNE das Praefix .offcanvas.cart-offcanvas, 9797 das patch_cart_b2b.py als Zaehlwert prueft. Kein display am Block-Scope. */ 9798#evc-container .evc-bs{margin:14px 0 2px;font-family:inherit} 9799#evc-container .evc-bs-head{font-size:15px;font-weight:700;color:var(--evc-text,#0f172a);margin:0 0 10px;line-height:1.3} 9800#evc-container .evc-bs-track{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;-ms-overflow-style:none;padding:2px 2px 4px;margin:0 -2px;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain} 9801#evc-container .evc-bs-track::-webkit-scrollbar{display:none} 9802#evc-container .evc-bs-card{flex:0 0 86%;scroll-snap-align:start;position:relative;display:flex;gap:10px;padding:8px;background:#fff;border:1px solid var(--evc-border,#e2e8f0);border-radius:12px;min-height:100px;box-sizing:border-box} 9803#evc-container .evc-bs-img{flex:0 0 84px;width:84px;height:84px;border-radius:8px;background:#fff;display:flex;align-items:center;justify-content:center;overflow:hidden} 9804#evc-container .evc-bs-img img{width:100%;height:100%;object-fit:contain;display:block} 9805#evc-container .evc-bs-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;padding-right:44px;text-decoration:none;color:inherit} 9806#evc-container .evc-bs-body:hover{text-decoration:none;color:inherit} 9807#evc-container .evc-bs-name{font-size:13px;font-weight:600;color:var(--evc-text,#0f172a);line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden} 9808#evc-container .evc-bs-sub{font-size:12px;color:var(--evc-muted,#64748b)} 9809#evc-container .evc-bs-rate{display:flex;align-items:center;gap:4px;font-size:11px;line-height:1;color:var(--evc-muted,#64748b);min-height:0} 9810#evc-container .evc-bs-stars{font-size:12px;letter-spacing:1px;line-height:1;background:linear-gradient(90deg,#F5B400 0%,#F5B400 var(--f,0%),#DEDEDE var(--f,0%),#DEDEDE 100%);-webkit-background-clip:text;background-clip:text;color:transparent} 9811#evc-container .evc-bs-score{font-weight:700;color:var(--evc-text,#0f172a)} 9812#evc-container .evc-bs-price{font-size:15px;font-weight:700;color:var(--evc-text,#0f172a);margin-top:auto;display:flex;align-items:baseline;gap:6px;flex-wrap:wrap} 9813#evc-container .evc-bs-old{font-size:12px;font-weight:500;color:var(--evc-muted,#64748b);text-decoration:line-through} 9814#evc-container .evc-bs-new{color:#dc2626;font-weight:700} 9815#evc-container .evc-bs-tag{position:absolute;top:6px;left:6px;padding:1px 6px;border-radius:999px;background:#dc2626;color:#fff;font-size:10px;font-weight:700;line-height:1.4;z-index:1} 9816#evc-container .evc-bs-card{position:relative} 9817#evc-container .evc-bs-add{position:absolute;right:8px;bottom:8px;width:40px;height:40px;border:0;border-radius:10px;background:var(--evc-primary,#166534);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;margin:0;overflow:visible} 9818#evc-container .evc-bs-add svg{width:21px;height:21px;stroke:#fff;stroke-width:1.9;fill:none;stroke-linecap:round;stroke-linejoin:round;display:block} 9819#evc-container .evc-bs-add .evc-bs-plus{position:absolute;top:-5px;right:-5px;width:16px;height:16px;border-radius:50%;background:#fff;color:var(--evc-primary,#166534);border:1.5px solid var(--evc-primary,#166534);font-size:12px;font-weight:800;line-height:13px;text-align:center;box-sizing:border-box} 9820#evc-container .evc-bs-add:hover{background:var(--evc-primary-dark,#14532d)} 9821#evc-container .evc-bs-add[disabled]{opacity:.55;cursor:default} 9822#evc-container .evc-bs-nav{display:flex;align-items:center;justify-content:space-between;margin-top:8px;min-height:34px} 9823#evc-container .evc-bs-dots{display:flex;gap:6px;padding-left:2px} 9824#evc-container .evc-bs-dot{width:6px;height:6px;border-radius:50%;background:#d1d5db} 9825#evc-container .evc-bs-dot.is-on{background:#111827} 9826#evc-container .evc-bs-arrows{display:flex;gap:8px} 9827#evc-container .evc-bs-arr{width:34px;height:34px;border-radius:50%;border:1px solid var(--evc-border,#e2e8f0);background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;margin:0;color:#111827} 9828#evc-container .evc-bs-arr svg{width:16px;height:16px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round} 9829#evc-container .evc-bs-arr[disabled]{opacity:.35;cursor:default} 9830</style>
9831<script> 9832(function () { 9833 'use strict'; 9834 /* Entdecke unsere Bestseller - Warenkorb-Widget (B2C). EvWidgetHub-Anschluss nach Handbuch §7: 9835 widget_id 'cart-bestseller', ctx 'cart', Beacon /evwh/s (imp / click_item / click_cta), ATC + Umsatz zaehlt der 9836 Server ueber das evwh-Feld am Add-POST. slot = Position im Karussell 0-basiert (Schema erlaubt 0..9, es gibt 10 Karten). */ 9837 if (window.__EVC_BS_INIT__) { return; } 9838 window.__EVC_BS_INIT__ = true; 9839 var KEY = 'SWSCA1RHA1LQCKPSCHZFQTE5CW', BASE = '/store-api', CAT = '019c8aea38067ed78aff31126bd5d88c', COUNT = 10; 9840 var EVWH_W = 'cart-bestseller', EVWH_CTX = 'cart'; 9841 var B2B_ID = '01924d9f52cd72bcad4db96bc32d9640'; 9842/* RANK: Eltern-UUID -> Platz. Dieselbe Liste wie Bestseller-Seite + Mobilmenue: 90 Tage nach Stueckzahl, 9843 Stand 2026-08-25 08:56, Quelle tools/bestseller_report.py -> reference/bestseller-top20-shop.json. Wer die Liste erneuert, 9844 spielt dieses Widget mit tools/warenkorb-bestseller/deploy_cart_bestseller.py neu ein. */ 9845var RANK = { 9846 '5fcc38c248bb42de8f9647298ef3e107': 1 /* SW10445 Omega-3 Algenöl direkt aus der Quelle */, 9847 '0195ccc82bf775bd8d25811a8a176e64': 2 /* SW10660 Vitamin D3 hochdosiert 10.000 i.E. und 4 */, 9848 '0195ccc96e2c749e844d48b87360ac40': 3 /* SW10662 Magnesium Komplex */, 9849 '57f5ba3d66714e328d3f94c79bd92cbb': 4 /* SW10507 Kollagen aus Weidehaltung */, 9850 '019811bcefc4711e9c14b8eb7cebb453': 5 /* SW10670 Bio Rizinusöl Premium */, 9851 '01980767a0c7712081dbbfb03cb73ae5': 6 /* SW10666 Kolloidales Lithium 100 ppm */, 9852 '0295b2262a2f4eaaa17ed4473e7a533d': 7 /* SW10482 Astaxanthin vegan */, 9853 '75658221af8b4f7aa6ccc5ef22057ca9': 8 /* SW10230 Vitamin B Komplex natürlich */, 9854 'af00a9f467ee4fb0955ef365594c071a': 9 /* W1007OPC OPC Kapseln */, 9855 '25a21b18d6fb467596bb1c1f79ab37dc': 10 /* SW10044 Vitamin C Kapseln aus Acerola */, 9856 '31ef9fca7c3e4f79b0415916eb204a65': 11 /* SW10429 Tri-Magnesium Dicitrat Kapseln */, 9857 'bb27e1fc213948b7992b282d36199a40': 12 /* SW10423 Vitamin D3 - K2 Tropfen natürlich */, 9858 '0195ccd91e3b7c55b345bf860983c2c5': 13 /* SW10678 Premium Kreatin Monohydrat Pulver */, 9859 '20afdd7614474326a3fec83bf2c0a0f7': 14 /* SW10528 Zink Tropfen */, 9860 '019836144e7772e5af64e52b9f337f56': 15 /* SW10664 Premium Methylenblau 1% */, 9861 '36f362813d514093983091d15505630a': 16 /* SW10237 Coenzym Q10 */, 9862 'b055dd19df4745a49816f6cd6c11ee19': 17 /* SW10539 Leber Vital mit 9 Pflanzenstoffen */, 9863 '52f360fca0e347298af2019f03625c75': 18 /* SW10114 MSM Pulver - organischer Schwefel */, 9864 '7fd8d6f6be974b26915131f3a11c848b': 19 /* SW10595 Bio Schwarzkümmelöl - 1500 mg Thymochino */, 9865 'a10748cfbef54929ae434728b1b3a66f': 20 /* SW10561 Eisen aus dem Curryblatt mit Acerola */ 9866}; 9867/* PSKU: Eltern-UUID -> Parent-SKU ("-main"). Trusted-Shops-Produktbewertungen haengen an der PARENT-SKU, 9868 nicht an der kaufbaren Variante (Befund 22.07.2026). Fallback im Code: Varianten-SKU + '-main'. */ 9869var PSKU = { 9870 '5fcc38c248bb42de8f9647298ef3e107': 'SW10445-main', 9871 '0195ccc82bf775bd8d25811a8a176e64': 'SW10660-main', 9872 '0195ccc96e2c749e844d48b87360ac40': 'SW10662-main', 9873 '57f5ba3d66714e328d3f94c79bd92cbb': 'SW10507-main', 9874 '019811bcefc4711e9c14b8eb7cebb453': 'SW10670-main', 9875 '01980767a0c7712081dbbfb03cb73ae5': 'SW10666-main', 9876 '0295b2262a2f4eaaa17ed4473e7a533d': 'SW10482-main', 9877 '75658221af8b4f7aa6ccc5ef22057ca9': 'SW10230-main', 9878 'af00a9f467ee4fb0955ef365594c071a': 'w1007opc-main', 9879 '25a21b18d6fb467596bb1c1f79ab37dc': 'SW10044-main', 9880 '31ef9fca7c3e4f79b0415916eb204a65': 'SW10429-main', 9881 'bb27e1fc213948b7992b282d36199a40': 'SW10423-main', 9882 '0195ccd91e3b7c55b345bf860983c2c5': 'SW10678-main', 9883 '20afdd7614474326a3fec83bf2c0a0f7': 'SW10528-main', 9884 '019836144e7772e5af64e52b9f337f56': 'SW10664-main', 9885 '36f362813d514093983091d15505630a': 'SW10237-main', 9886 'b055dd19df4745a49816f6cd6c11ee19': 'SW10539-main', 9887 '52f360fca0e347298af2019f03625c75': 'SW10114-main', 9888 '7fd8d6f6be974b26915131f3a11c848b': 'SW10595-main', 9889 'a10748cfbef54929ae434728b1b3a66f': 'SW10561-main' 9890}; 9891 9892 /* -------- Gate: nur B2C. Haendler haben eigene Preise, KEY ist der B2C-Kanal. -------- */ 9893 function isB2B() { 9894 if (window.__EVC31_B2B__ === true) { return true; } 9895 if (window.salesChannelId === B2B_ID) { return true; } 9896 return /^(www\.)?haendler\./.test(location.hostname); 9897 } 9898 if (isB2B()) { return; } 9899 9900 /* -------- EvWidgetHub (Vorlage Handbuch §7 Schritt 3) -------- */ 9901 var EVWH_SID = (function () { try { 9902 var c = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'; 9903 return Array.prototype.map.call(crypto.getRandomValues(new Uint8Array(12)), function (b) { return c[b & 63]; }).join(''); 9904 } catch (e) { return String(Date.now() % 1e9) + String(Math.floor(Math.random() * 1e6)); } })(); 9905 var impSent = false; /* in-memory, KEIN Storage (TDDDG) */
9906 /* ctx-Design (Patrick 28.08.: "welche Produkte wurden geklickt?"): die Karussell-Position (slot) ist je Kunde ein 9907 anderes Produkt (Ausschluss!), deshalb tragen Klick, ATC und Umsatz das PRODUKT im ctx: 'cart:<SKU>'. 9908 Die Impression (Widget gesehen) bleibt auf ctx 'cart' - einmal je Seitenaufruf, damit die Widget-Ebene im 9909 Dashboard (Impressions, CTR) nicht durch Kartenzahlen aufgeblaeht wird. */ 9910 function ctxFor(p) { return EVWH_CTX + ':' + String(p && p.sku || '').replace(/[^A-Za-z0-9:._-]/g, '').slice(0, 58); } 9911 function evwhSend(events, ctx) { try { 9912 fetch('/evwh/s', { method: 'POST', credentials: 'omit', keepalive: true, 9913 headers: { 'Content-Type': 'application/json' }, 9914 body: JSON.stringify({ w: EVWH_W, ctx: ctx || EVWH_CTX, e: events }) }).catch(function () {}); 9915 } catch (e) {} } 9916 function observeImpression(el) { try { 9917 if (impSent || !el || !('IntersectionObserver' in window)) { return; } 9918 var start = function () { 9919 var timer = null; 9920 var obs = new IntersectionObserver(function (entries) { 9921 entries.forEach(function (en) { 9922 if (impSent) { obs.disconnect(); return; } 9923 if (en.isIntersecting && en.intersectionRatio >= 0.5) { 9924 if (!timer) { timer = setTimeout(function () { 9925 if (!impSent) { impSent = true; evwhSend([{ t: 'imp' }]); obs.disconnect(); } }, 1000); } 9926 } else if (timer) { clearTimeout(timer); timer = null; } 9927 }); 9928 }, { threshold: [0.5] }); 9929 obs.observe(el); 9930 }; 9931 if (document.prerendering) { document.addEventListener('prerenderingchange', start, { once: true }); } else { start(); } 9932 } catch (e) {} } 9933 9934 /* -------- Helfer -------- */ 9935 function esc(s) { return String(s == null ? '' : s).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"'); } 9936 function eur(n) { if (n == null || isNaN(n)) { return ''; } return (Math.round(parseFloat(n) * 100) / 100).toFixed(2).replace('.', ',') + ' â¬'; } 9937 /* Medien-URL -> CDN mit Breite; Leerzeichen/Kommata kodieren (sonst zerlegt srcset den Eintrag, Befund 25.08.). */ 9938 function cdn(u, w) { 9939 if (!u) { return ''; } 9940 var m = String(u).split('www.echt-vital.de').join('echt-vital.de').split('://echt-vital.de/').join('://echtvital.cstatic.com/'); 9941 var qi = m.indexOf('?'), base = qi === -1 ? m : m.slice(0, qi), ts = ''; 9942 if (qi !== -1) { var mm = m.slice(qi + 1).match(/ts=([^&]+)/); if (mm) { ts = '&ts=' + mm[1]; } } 9943 base = base.split(' ').join('%20').split(',').join('%2C'); 9944 return base + '?w=' + w + ts; 9945 } 9946 function storeApi(path, body) { 9947 return fetch(BASE + path, { method: 'POST', credentials: 'same-origin', 9948 headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'sw-access-key': KEY }, 9949 body: JSON.stringify(body) }).then(function (r) { if (!r.ok) { throw new Error('store-api ' + r.status); } return r.json(); }); 9950 } 9951 9952 /* -------- Daten: Bestseller-Listing (einmal je Seitenaufruf) -------- */ 9953 var listing = null, listingP = null; 9954 function loadListing() { 9955 if (listingP) { return listingP; } 9956 listingP = storeApi('/product-listing/' + CAT, { 9957 limit: 100, 9958 includes: { product: ['id', 'parentId', 'productNumber', 'name', 'translated', 'calculatedPrice', 'cover', 'available'], 9959 product_media: ['media'], media: ['url'] }, 9960 associations: { cover: { associations: { media: {} } } } 9961 }).then(function (d) { 9962 var byFam = {}; 9963 (d.elements || []).forEach(function (p) { 9964 if (p.available === false) { return; } 9965 var fam = p.parentId || p.id; 9966 var e = { id: p.id, fam: fam, sku: p.productNumber || '', name: (p.translated && p.translated.name) || p.name || '', 9967 psku: PSKU[fam] || ((p.productNumber || '') + '-main'), 9968 img: (p.cover && p.cover.media && p.cover.media.url) || '', 9969 price: (p.calculatedPrice || {}).unitPrice || 0, 9970 list: (p.calculatedPrice && p.calculatedPrice.listPrice && p.calculatedPrice.listPrice.price) || 0, 9971 rang: RANK[fam] || 999 }; 9972 /* je Familie EINE Karte: die guenstigste Variante (das Listing liefert die 1er-Variante, gemessen 27.08.: 20 = 20) */ 9973 if (!byFam[fam] || e.price < byFam[fam].price) { byFam[fam] = e; } 9974 }); 9975 listing = Object.keys(byFam).map(function (k) { return byFam[k]; }).sort(function (a, b) { return a.rang - b.rang; }); 9976 return listing; 9977 }).catch(function () { listingP = null; listing = null; return null; }); 9978 return listingP; 9979 } 9980 9981 /* -------- Ausschluss: Familie jeder Korb-Zeile (Variante -> parentId) -------- */ 9982 var famCache = {}; 9983 function cartIds() { 9984 return Array.prototype.map.call(document.querySelectorAll('.offcanvas.cart-offcanvas .hidden-line-item'), function (e) { 9985 return String(e.getAttribute('data-id') || '').toLowerCase(); }).filter(function (id) { return /^[a-f0-9]{32}$/.test(id); }); 9986 } 9987 function resolveFamilies(ids) { 9988 var missing = ids.filter(function (id) { return !(id in famCache); }); 9989 if (!missing.length) { return Promise.resolve(); } 9990 return storeApi('/product', { ids: missing, includes: { product: ['id', 'parentId'] } }).then(function (d) {
9991 (d.elements || []).forEach(function (p) { famCache[String(p.id).toLowerCase()] = String(p.parentId || p.id).toLowerCase(); }); 9992 missing.forEach(function (id) { if (!(id in famCache)) { famCache[id] = null; } }); /* z.B. Promotion-Zeilen */ 9993 }).catch(function () { 9994 /* Netzfehler: IDs als "ohne Familie" merken, sonst wuerde mount() endlos neu aufloesen. 9995 Folge: nur exakte Varianten-Treffer werden ausgeschlossen, bis zum naechsten Seitenaufruf. */ 9996 missing.forEach(function (id) { if (!(id in famCache)) { famCache[id] = null; } }); 9997 }); 9998 } 9999 function visibleList(ids) { 10000 var ex = {}; 10001 ids.forEach(function (id) { ex[id] = 1; if (famCache[id]) { ex[famCache[id]] = 1; } }); 10002 return listing.filter(function (p) { return !ex[p.fam] && !ex[p.id]; }).slice(0, COUNT); 10003 } 10004 10005 /* -------- Rendern -------- */ 10006 /* Patrick 28.08.: "Cart-Icon mit dem Plus sieht verkackt aus" -> klarer Korb (Lucide-Schnitt) + kleines weisses 10007 Plus-Medaillon in der Ecke statt Plus im Korb. */ 10008 var ICON_CART = '<svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="9" cy="20.5" r="1.3"/><circle cx="18" cy="20.5" r="1.3"/><path d="M2.5 3.5h2.3l2.3 11.6a1.3 1.3 0 0 0 1.3 1.1h9.4a1.3 1.3 0 0 0 1.3-1L21 8H6.1"/></svg><span class="evc-bs-plus" aria-hidden="true">+</span>'; 10009 /* Rabatt wie an den Korb-Kacheln: der Cart zeigt bei einem korbweiten Prozent-Code an jeder Kachel ein Tag 10010 ("-20 %"); denselben Prozentsatz nutzt das Karussell (rot reduziert -> Streichpreis -> Tag). Kein Tag = Normalpreis. 10011 Selektor bewusst zusammengesetzt: der Literal-Klassenname ist ein Zaehlwert von patch_cart_b2b.py. */ 10012 function cartPromoPct() { 10013 var tag = document.querySelector('#evc-container .evc-price-' + 'tag'); 10014 if (!tag) { return { pct: 0, label: '' }; } 10015 var m = String(tag.textContent || '').match(/(\d+(?:[.,]\d+)?)\s*%/); 10016 var pct = m ? parseFloat(m[1].replace(',', '.')) : 0; 10017 return { pct: pct > 0 && pct < 100 ? pct : 0, label: String(tag.textContent || '').trim() }; 10018 } 10019 /* -------- Bewertungen: Trusted Shops (eTrusted) je Parent-SKU, exakt wie die PDP (grades.overall) -------- 10020 Feed ist public + CORS "*". Geladen wird faul: erst wenn die Karte im Karussell sichtbar wird, einmal je SKU 10021 (Speicher fuer den Seitenaufruf). Unbekannte SKU / count 0 -> keine Zeile. */ 10022 var TS_CHANNEL = 'chl-34d654ed-442a-487d-80a3-f15f63d5595c'; 10023 var rateCache = {}; 10024 function hexSku(s) { return Array.prototype.map.call(String(s), function (c) { return c.charCodeAt(0).toString(16).padStart(2, '0'); }).join(''); } 10025 function loadRating(psku) { 10026 if (rateCache[psku]) { return rateCache[psku]; } 10027 rateCache[psku] = fetch('https://integrations.etrusted.com/feeds/grades/v1/channels/' + TS_CHANNEL + '/products/sku/' + hexSku(psku) + '/feed.json') 10028 .then(function (r) { return r.ok ? r.json() : null; }) 10029 .then(function (d) { 10030 var o = d && d.grades && d.grades.overall; 10031 var rating = o ? Number(o.rating) : NaN, count = o ? Number(o.count) : NaN; 10032 if (!o || !isFinite(rating) || !isFinite(count) || count <= 0) { return null; } 10033 return { rating: Math.max(0, Math.min(5, rating)), count: Math.floor(count) }; 10034 }).catch(function () { return null; }); 10035 return rateCache[psku]; 10036 } 10037 function ratingHtml(r) { 10038 var f = Math.round(r.rating / 5 * 1000) / 10; 10039 return '<span class="evc-bs-stars" style="--f:' + f + '%" aria-hidden="true">â â â â â </span>' 10040 + '<span class="evc-bs-score">' + String(Math.round(r.rating * 10) / 10).replace('.', ',') + '</span>' 10041 + '<span class="evc-bs-cnt">(' + r.count + ')</span>'; 10042 } 10043 function fillRating(cardEl, e) { 10044 var slot = cardEl.querySelector('.evc-bs-rate'); 10045 if (!slot) { return; } 10046 loadRating(e.p.psku).then(function (r) { 10047 if (r && slot.isConnected) { slot.innerHTML = ratingHtml(r); slot.setAttribute('aria-label', r.rating + ' von 5 Sternen, ' + r.count + ' Bewertungen'); } 10048 }); 10049 } 10050 /* Preiszeile: rot reduziert + Streichpreis; das Prozent-Tag sitzt als Marke oben links auf der Karte (Bildecke), 10051 damit die Zeile mobil (285 px Karte, 40 px Knopf) einzeilig bleibt. */ 10052 function priceHtml(p, promo) { 10053 if (promo.pct > 0 && p.price > 0) { 10054 var red = Math.round(p.price * (100 - promo.pct)) / 100; 10055 return '<span class="evc-bs-new">' + eur(red) + '</span><span class="evc-bs-old">' + eur(p.price) + '</span>'; 10056 } 10057 return eur(p.price) + (p.list > p.price ? '<span class="evc-bs-old">' + eur(p.list) + '</span>' : ''); 10058 } 10059 function tagHtml(p, promo) { 10060 return (promo.pct > 0 && p.price > 0) ? '<span class="evc-bs-tag">' + esc(promo.label) + '</span>' : ''; 10061 } 10062 var ICON_L = '<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M15 6l-6 6 6 6"/></svg>'; 10063 var ICON_R = '<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M9 6l6 6-6 6"/></svg>'; 10064 function card(p, i, promo) { 10065 var a = cdn(p.img, 168), b = cdn(p.img, 336), href = '/detail/' + esc(p.id); 10066 return '<div class="evc-bs-card" data-id="' + esc(p.id) + '" data-slot="' + i + '">' 10067 + tagHtml(p, promo) 10068 + '<a class="evc-bs-img" href="' + href + '" tabindex="-1" aria-hidden="true">' 10069 + (p.img ? '<img src="' + esc(a) + '" srcset="' + esc(a) + ' 1x, ' + esc(b) + ' 2x" alt="" loading="lazy" decoding="async">' : '') + '</a>' 10070 + '<a class="evc-bs-body" href="' + href + '">' 10071 + '<span class="evc-bs-name">' + esc(p.name) + '</span>' 10072 + '<span class="evc-bs-rate"></span>' 10073 + '<span class="evc-bs-price">' + priceHtml(p, promo) + '</span>' 10074 + '</a>' 10075 + '<button class="evc-bs-add" type="button" aria-label="' + esc(p.name) + ' in den Warenkorb">' + ICON_CART + '</button>' 10076 + '</div>'; 10077 } 10078 function innerHtml(list, promo) { 10079 return '<div class="evc-bs-head">Entdecke unsere Bestseller</div>' 10080 + '<div class="evc-bs-track" aria-label="Bestseller">' + list.map(function (p, i) { return card(p, i, promo); }).join('') + '</div>' 10081 + '<div class="evc-bs-nav"><div class="evc-bs-dots">' + list.map(function (_, i) { return '<span class="evc-bs-dot' + (i === 0 ? ' is-on' : '') + '"></span>'; }).join('') + '</div>' 10082 + '<div class="evc-bs-arrows"><button class="evc-bs-arr" type="button" data-dir="-1" aria-label="Vorheriger Bestseller" disabled>' + ICON_L + '</button>' 10083 + '<button class="evc-bs-arr" type="button" data-dir="1" aria-label="Nächster Bestseller">' + ICON_R + '</button></div></div>'; 10084 } 10085 /* Der Cart (R13e) rettet [data-ev-widget]-Knoten ueber seinen Wrapper-Tausch -> das Widget bleibt im DOM und 10086 aktualisiert nur seinen Inhalt in place (kein Blinken, kein Zuruecksetzen auf Karte 1 ohne Grund
10086). */ 10087 function render(host, list, key) { 10088 var root = document.createElement('div'); 10089 root.className = 'evc-bs'; 10090 root.setAttribute('data-ev-widget', EVWH_W); 10091 root.setAttribute('data-cart-key', key); 10092 root.innerHTML = innerHtml(list, cartPromoPct()); 10093 host.appendChild(root); 10094 wire(root, list); 10095 observeImpression(root); 10096 } 10097 function update(root, list, key) { 10098 root.setAttribute('data-cart-key', key); 10099 root.innerHTML = innerHtml(list, cartPromoPct()); 10100 wire(root, list); 10101 } 10102 function cartKey(ids) { return ids.slice().sort().join(',') + '|' + cartPromoPct().label; } 10103 function wire(root, list) { 10104 var track = root.querySelector('.evc-bs-track'); 10105 var dots = root.querySelectorAll('.evc-bs-dot'); 10106 var arrs = root.querySelectorAll('.evc-bs-arr'); 10107 var byId = {}; list.forEach(function (p, i) { byId[p.id] = { p: p, slot: i }; }); 10108 function step() { var c = track.querySelector('.evc-bs-card'); return c ? c.offsetWidth + 10 : 1; } 10109 function index() { return Math.round(track.scrollLeft / step()); } 10110 function sync() { 10111 var i = Math.max(0, Math.min(list.length - 1, index())); 10112 dots.forEach(function (d, k) { d.classList.toggle('is-on', k === i); }); 10113 arrs[0].disabled = i <= 0; 10114 arrs[1].disabled = i >= list.length - 1 || track.scrollLeft + track.clientWidth >= track.scrollWidth - 2; 10115 } 10116 var raf = null; 10117 track.addEventListener('scroll', function () { if (raf) { return; } raf = requestAnimationFrame(function () { raf = null; sync(); }); }, { passive: true }); 10118 arrs.forEach(function (b) { b.addEventListener('click', function () { 10119 var dir = parseInt(b.getAttribute('data-dir'), 10) || 1; 10120 track.scrollTo({ left: (index() + dir) * step(), behavior: 'smooth' }); 10121 }); }); 10122 root.addEventListener('click', function (ev) { 10123 var cardEl = ev.target.closest('.evc-bs-card'); if (!cardEl) { return; } 10124 var e = byId[cardEl.getAttribute('data-id')]; if (!e) { return; } 10125 if (ev.target.closest('.evc-bs-add')) { ev.preventDefault(); addToCart(ev.target.closest('.evc-bs-add'), e.p, e.slot); return; } 10126 if (ev.target.closest('a')) { evwhSend([{ t: 'click_item', slot: Math.min(9, e.slot) }], ctxFor(e.p)); } 10127 }); 10128 /* Bewertungen faul je sichtbarer Karte (Root = das Karussell selbst) */ 10129 var cards = Array.prototype.slice.call(track.querySelectorAll('.evc-bs-card')); 10130 var io = ('IntersectionObserver' in window) ? new IntersectionObserver(function (entries) { 10131 entries.forEach(function (en) { 10132 if (!en.isIntersecting) { return; } 10133 io.unobserve(en.target); 10134 var e = byId[en.target.getAttribute('data-id')]; if (e) { fillRating(en.target, e); } 10135 }); 10136 }, { root: track, threshold: 0.1 }) : null; 10137 cards.forEach(function (c) { if (io) { io.observe(c); } else { var e = byId[c.getAttribute('data-id')]; if (e) { fillRating(c, e); } } }); 10138 sync(); 10139 } 10140 10141 /* -------- In den Warenkorb: exakt das Theme-Formular (gegen die PDP geprueft 27.08.) + evwh-Feld -------- */ 10142 function addToCart(btn, p, slot) { 10143 if (btn.disabled) { return; } 10144 btn.disabled = true; 10145 var s = Math.min(9, slot); 10146 var body = new URLSearchParams(), k = 'lineItems[' + p.id + ']'; 10147 body.append(k + '[id]', p.id); body.append(k + '[referencedId]', p.id); body.append(k + '[type]', 'product'); 10148 body.append(k + '[quantity]', '1'); body.append(k + '[stackable]', '1'); body.append(k + '[removable]', '1'); 10149 var spec = {}; spec[p.id] = { w: EVWH_W, ctx: ctxFor(p), slot: s, sid: EVWH_SID }; 10150 body.append('evwh', JSON.stringify(spec)); 10151 evwhSend([{ t: 'click_cta', slot: s }], ctxFor(p)); 10152 fetch('/checkout/line-item/add', { method: 'POST', body: body, credentials: 'same-origin', 10153 headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'X-Requested-With': 'XMLHttpRequest' } }) 10154 .catch(function () {}) 10155 .then(function () { 10156 if (typeof window.__EVC31_REFRESH__ === 'function') { window.__EVC31_REFRESH__(); } 10157 else { location.reload(); } 10158 }); 10159 } 10160 10161 /* -------- Einhaengen: unten in der Artikel-Scrollflaeche, nach jedem Neu-Rendern des Carts erneut -------- */ 10162 var mounting = false;
10163 function mount() { 10164 var host = document.querySelector('#evc-container .evc-items'); 10165 if (!host || mounting) { return; } 10166 var root = host.querySelector('.evc-bs'); 10167 var ids = cartIds(); 10168 if (root && root.getAttribute('data-cart-key') === cartKey(ids)) { return; } /* Korb + Code unveraendert: nichts tun */ 10169 mounting = true; 10170 Promise.all([loadListing(), resolveFamilies(ids)]).then(function () { 10171 mounting = false; 10172 if (!listing) { return; } 10173 var host2 = document.querySelector('#evc-container .evc-items'); 10174 if (!host2) { return; } 10175 var now = cartIds(); 10176 if (now.some(function (id) { return !(id in famCache); })) { return mount(); } /* Korb hat sich inzwischen geaendert */ 10177 var key = cartKey(now); 10178 var root2 = host2.querySelector('.evc-bs'); 10179 if (root2 && root2.getAttribute('data-cart-key') === key) { return; } 10180 var list = visibleList(now); 10181 if (!list.length) { if (root2) { root2.remove(); } return; } 10182 if (root2) { update(root2, list, key); } else { render(host2, list, key); } 10183 }).catch(function () { mounting = false; }); 10184 } 10185 var timer = null; 10186 function schedule() { if (timer) { return; } timer = setTimeout(function () { timer = null; mount(); }, 60); } 10187 function boot() { 10188 new MutationObserver(schedule).observe(document.body, { childList: true, subtree: true }); 10189 schedule(); 10190 } 10191 if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', boot); } else { boot(); } 10192})(); 10193</script>
10193 10194<!-- EV-CART-BESTSELLER-END --> 10195 10196 10197 10198 10199 10200 10201 10202 <div data-adcell-bid data-adcell-bid-options='{"url":"\/adcell\/bid","viewUrl":"\/adcell\/view"}' hidden></div> 10203 10204 <div data-adcell-tracking hidden></div> 10205
10205<script> 10206 window.adcellConfig = { 10207 cookieName: 'ADCELL_Tracking', 10208 baseScripts: [], 10209 pageScripts: [], 10210 runTrackCall: false, 10211 success: null 10212 }; 10213 </script>
10213 10214 10215 10216 10217
10217<script> 10218 window.adcellConfig.baseScripts.push("https:\/\/t.adcell.com\/js\/trad.js?s2s=0&s=shopware6&sv=6.7.5.1&v=1.1.22"); 10219 window.adcellConfig.baseScripts.push("https:\/\/t.adcell.com\/js\/vcad.js?s2s=0&s=shopware6&sv=6.7.5.1&v=1.1.22&programId=15869"); 10220 window.adcellConfig.runTrackCall = true; 10221 </script>
10221 10222 10223 10224 10225 10226 10227 10228 10229 10230 10231 10232 10233 10234 10235 10236 <template id="shopware-payments-alert-template"> 10237 10238 <div role="alert" 10239 aria-live="polite" 10240 class="alert alert-danger d-flex align-items-center"> 10241 10242 10243 <span class="icon icon-blocked" aria-hidden="true"> 10244 <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" viewBox="0 0 24 24"><defs><path d="M12 24C5.3726 24 0 18.6274 0 12S5.3726 0 12 0s12 5.3726 12 12-5.3726 12-12 12zm0-2c5.5228 0 10-4.4772 10-10S17.5228 2 12 2 2 6.4772 2 12s4.4772 10 10 10zm4.2929-15.7071c.3905-.3905 1.0237-.3905 1.4142 0 .3905.3905.3905 1.0237 0 1.4142l-10 10c-.3905.3905-1.0237.3905-1.4142 0-.3905-.3905-.3905-1.0237 0-1.4142l10-10z" id="icons-default-blocked" /></defs><use xlink:href="#icons-default-blocked" fill="#758CA3" fill-rule="evenodd" /></svg> 10245 </span> 10246 10247 10248 <div class="alert-content-container"> 10249 10250 10251 10252 </div> 10253 </div> 10254 </template> 10255 10256 10257 10258 10259 10260 10261 10262 <div 10263 class="cookie-permission-container ev-cookie-permission-container" 10264 data-cookie-permission="true" 10265 data-cookie-permission-options='{"cookieExpiration": 365}' 10266 data-cookie-configuration-options='{"defaultCookieExpiration": 365}' 10267 role="region" 10268 aria-label="Cookie-Voreinstellungen"> 10269 10270 <div class="ev-zettel-wrap" id="evZettelCookieBanner"> 10271 <div class="ev-zettel"> 10272 10273 <div class="ev-zettel__brand"> 10274 <img class="ev-zettel__logo" 10275 src="https://echtvital.cstatic.com/media/7f/d3/88/1679934207/ev-logo.webp" 10276 alt="Echt Vital" height="42" loading="eager" decoding="async"> 10277 </div> 10278 10279 <p class="ev-zettel__text"> 10280 Wenn du auf âAlle Cookies akzeptieren" klickst, stimmst du der 10281 Speicherung von Cookies auf deinem Gerät zu, um die Website-Navigation zu verbessern, 10282 die Website-Nutzung zu analysieren und unsere Marketingbemühungen zu unterstützen. Danke! 10283 </p> 10284 10285 <div class="ev-zettel__aktionen"> 10286 <a class="ev-zettel__settings" data-ev-cookie-action="configure" href="#" role="button">Cookie Einstellungen</a> 10287 <button type="button" class="ev-zettel__okay" data-ev-cookie-action="accept">Alle Cookies akzeptieren</button> 10288 </div> 10289 10290 <button type="button" class="ev-zettel__deny" data-ev-cookie-action="deny">Nur notwendige Cookies</button> 10291 10292 </div> 10293 </div> 10294 10295 <div class="ev-native-cookie-buttons" aria-hidden="true"> 10296 <span class="cookie-permission-button js-cookie-permission-button"> 10297 <button type="submit" class="btn btn-primary" tabindex="-1">Nur technisch notwendige</button> 10298 </span> 10299 <span class="js-cookie-configuration-button"> 10300 <button type="submit" class="btn btn-primary" tabindex="-1">Konfigurieren</button> 10301 </span> 10302 <span class="js-cookie-accept-all-button"> 10303 <button type="submit" class="btn btn-primary" tabindex="-1">Alle Cookies akzeptieren</button> 10304 </span> 10305 </div> 10306 </div> 10307 10308 10309 <div class="js-pseudo-modal-template"> 10310 <div class="modal modal-lg fade" 10311 tabindex="-1" 10312 role="dialog" 10313 aria-modal="true" 10314 aria-hidden="true" 10315 aria-labelledby="pseudo-modal-title"> 10316 <div class="modal-dialog"> 10317 <div class="modal-content js-pseudo-modal-template-root-element"> 10318 <div class="modal-header only-close"> 10319 <div id="pseudo-modal-title" class="modal-title js-pseudo-modal-template-title-element h5"></div> 10320 10321 <button type="button" 10322 class="btn-close close" 10323 data-bs-dismiss="modal" 10324 aria-label="SchlieÃen"> 10325 </button> 10326 </div> 10327 10328 <div class="modal-body js-pseudo-modal-template-content-element"> 10329 </div> 10330 </div> 10331 </div> 10332 10333 <template class="js-pseudo-modal-back-btn-template"> 10334 10335 <button class="js-pseudo-modal-back-btn btn btn-outline-primary" data-ajax-modal="true" data-url="#" href="#"> 10336 10337
10338 <span class="icon icon-arrow-left icon-sm icon-me-1" aria-hidden="true"> 10339 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M 19.03125 4.28125 L 8.03125 15.28125 L 7.34375 16 L 8.03125 16.71875 L 19.03125 27.71875 L 20.46875 26.28125 L 10.1875 16 L 20.46875 5.71875 Z"/></svg> 10340 </span> 10341 Zurück 10342 </button> 10343 </template> 10344 </div> 10345 </div> 10346 10347 10348 10349 10350 10351 10352 10353 10354 10355 <div data-mediameets-facebook-pixel-options='{"config":{"pixelIds":"225798511292088","privacyMode":"integrate","autoConfig":false,"advancedMatching":true,"includeShippingCosts":true,"useConversionApi":false,"disablePushState":false,"conversionApiDeduplication":"eventid"},"shop":{"controller":"auth","action":"loginpage","currency":"EUR"},"routes":{"customer":"\/mm-fp\/customer","cart":"\/mm-fp\/cart","order":"\/mm-fp\/order","product":"\/mm-fp\/product"},"conversionApi":{"endpoint":"\/mmfbpcapi"}}'></div> 10356 10357 10358 10359 <div data-mediameets-tiktok-pixel-options='{"config":{"pixelIds":"D2TAO63C77U649U8SFNG","privacyMode":"integrate","advancedMatching":true,"includeShippingCosts":true,"useEventsApi":true},"shop":{"controller":"auth","action":"loginpage","currency":"EUR"},"routes":{"customer":"\/mm-tt\/customer","cart":"\/mm-tt\/cart","order":"\/mm-tt\/order"},"eventsApi":{"endpoint":"\/mmtteapi"}}'></div> 10360 10361 10362 10363 10364 10365 10366 10367 10368 <!-- added by Trusted Shops app: Start --> 10369
10369<script async data-desktop-y-offset="0" data-mobile-y-offset="0" data-desktop-disable-reviews="false" data-desktop-enable-custom="false" data-desktop-position="left" data-desktop-custom-width="156" data-desktop-enable-fadeout="false" data-disable-mobile="false" data-disable-trustbadge="false" data-mobile-custom-width="156" data-mobile-disable-reviews="false" data-mobile-enable-custom="false" data-mobile-position="left" data-color-scheme="os-default" charset="UTF-8" src="//widgets.trustedshops.com/js/XC7DD5FD247350BDB2715FB9DB269C030.js"></script>
10369 10370 <!-- End --> 10371 10372 10373 10374 <div data-swag-paypal-funding-eligibility="true" 10375 data-swag-paypal-funding-eligibility-options="{"extensions":[],"clientId":"ASJtxY5AgUtH289LNKTPtOHvFHMhD9TPpkmt_MlLGiQI9sOjENAtrXWxa2ufbTfj1RS4j03jr6YJzJel","merchantPayerId":"4A8WCPZNKS5XY","partnerAttributionId":"shopwareAG_Cart_Shopware6_PPCP","languageIso":"de_DE","currency":"EUR","intent":"capture","filteredPaymentMethods":[],"methodEligibilityUrl":"\/paypal\/payment-method-eligibility"}"> 10376 </div> 10377 10378 10379 10380 10381 <style> 10382 /* Sicherheitsnetz: Seit 1.3.2 wird im Offcanvas kein sichtbarer Standard-Balken mehr gerendert. 10383 Falls nach Cache/Theme-Resten doch noch einer vorhanden ist, bleibt nur der Forced-Balken sichtbar. */ 10384 .offcanvas.cart-offcanvas .ev-tiered-gift-progress:not(.ev-tiered-gift-progress-forced), 10385 .offcanvas.cart-offcanvas .ev-tiered-gift-new-customer-progress:not(.ev-tiered-gift-new-customer-progress-forced) { 10386 display: none !important; 10387 } 10388 @keyframes evTieredGiftFillPulse { 10389 0% { filter: brightness(1); } 10390 45% { filter: brightness(1.18); } 10391 100% { filter: brightness(1); } 10392 } 10393 10394 @media (max-width: 576px), (max-height: 760px) { 10395 .offcanvas.cart-offcanvas .ev-tiered-gift-progress-forced { 10396 padding: 9px 14px 8px 14px !important; 10397 } 10398 .offcanvas.cart-offcanvas .ev-tiered-gift-progress-forced > div:first-child { 10399 margin-bottom: 6px !important; 10400 } 10401 .offcanvas.cart-offcanvas .ev-tiered-gift-progress-forced > div:first-child > div:first-child { 10402 font-size: 12.5px !important; 10403 line-height: 1.25 !important; 10404 padding-right: 0 !important; 10405 } 10406 .offcanvas.cart-offcanvas .ev-tiered-gift-progress-forced > div:first-child > div:nth-child(2) { 10407 font-size: 11.5px !important; 10408 line-height: 1.35 !important; 10409 margin-top: 2px !important; 10410 } 10411 .offcanvas.cart-offcanvas .ev-tiered-gift-progress-forced .ev-tiered-gift-progress-status { 10412 display: none !important; 10413 } 10414 .offcanvas.cart-offcanvas .ev-tiered-gift-progress-forced > div:nth-child(2), 10415 .offcanvas.cart-offcanvas .ev-tiered-gift-progress-forced .ev-tiered-gift-progress-fill { 10416 height: 7px !important; 10417 } 10418 .offcanvas.cart-offcanvas .ev-tiered-gift-progress-forced > div:nth-child(3) { 10419 margin-top: 5px !important; 10420 font-size: 10px !important; 10421 gap: 5px !important; 10422 } 10423 .offcanvas.cart-offcanvas .ev-tiered-gift-new-customer-progress-forced { 10424 padding: 9px 14px 8px 14px !important; 10425 } 10426 .offcanvas.cart-offcanvas .ev-tiered-gift-new-customer-progress-forced > div:first-child { 10427 margin-bottom: 6px !important; 10428 } 10429 .offcanvas.cart-offcanvas .ev-tiered-gift-new-customer-progress-forced > div:first-child > div:first-child { 10430 font-size: 12.5px !important; 10431 line-height: 1.25 !important; 10432 } 10433 .offcanvas.cart-offcanvas .ev-tiered-gift-new-customer-progress-forced > div:first-child > div:nth-child(2) { 10434 font-size: 11.5px !important; 10435 line-height: 1.35 !important; 10436 margin-top: 2px !important; 10437 } 10438 .offcanvas.cart-offcanvas .ev-tiered-gift-new-customer-progress-forced > div:nth-child(2), 10439 .offcanvas.cart-offcanvas .ev-tiered-gift-new-customer-progress-forced .ev-tiered-gift-new-customer-progress-fill { 10440 height: 7px !important; 10441 } 10442 .offcanvas.cart-offcanvas .ev-tiered-gift-new-customer-progress-forced > div:nth-child(3) { 10443 margin-top: 5px !important; 10444 font-size: 10px !important; 10445 } 10446 } 10447 10448 10449 /* Mobile-Feinschliff fuer den Echt-Vital Custom-Offcanvas: 10450 bewusst nur moderat kompakter, damit Checkout/Trust weiterhin hochwertig wirken. */ 10451 @media (max-width: 576px), (max-height: 760px) { 10452 .offcanvas.cart-offcanvas #evc-container .evc-ship-hint { 10453 padding: 8px 14px !important; 10454 font-size: 12.5px !important; 10455 line-height: 1.25 !important; 10456 } 10457 .offcanvas.cart-offcanvas #evc-container .evc-ship-hint-icon { 10458 font-size: 14px !important; 10459 } 10460 .offcanvas.cart-offcanvas #evc-container .evc-footer { 10461 padding: 10px 14px !important; 10462 padding-bottom: calc(10px + env(safe-area-inset-bottom, 0)) !important; 10463 } 10464 .offcanvas.cart-offcanvas #evc-container .evc-coupon-row { 10465 gap: 7px !important; 10466 padding-bottom: 9px !important; 10467 } 10468 .offcanvas.cart-offcanvas #evc-container .evc-coupon-input, 10469 .offcanvas.cart-offcanvas #evc-container .evc-coupon-submit { 10470 height: 38px !important; 10471 font-size: 12.5px !important; 10472 } 10473 .offcanvas.cart-offcanvas #evc-container .evc-coupon-input { 10474 padding-left: 11px !important; 10475 padding-right: 11px !important; 10476 } 10477 .offcanvas.cart-offcanvas #evc-container .evc-coupon-submit { 10478 padding-left: 15px !important; 10479 padding-right: 15px !important; 10480 } 10481 .offcanvas.cart-offcanvas #evc-container .evc-totals { 10482 margin: 10px 0 !important; 10483 } 10484 .offcanvas.cart-offcanvas #evc-container .evc-row { 10485 margin-bottom: 4px !important; 10486 font-size: 12.5px !important; 10487 } 10488 .offcanvas.cart-offcanvas #evc-container .evc-row.total { 10489 padding-top: 9px !important; 10490 margin-top: 6px !important; 10491 font-size: 16px !important; 10492 } 10493 .offcanvas.cart-offcanvas #evc-container .evc-total-original { 10494 font-size: 13px !important; 10495 } 10496 .offcanvas.cart-offcanvas #evc-container .evc-trust { 10497 margin-bottom: 8px !important; 10498 font-size: 10.5px !important; 10499 line-height: 1.25 !important; 10500 } 10501 .offcanvas.cart-offcanvas #evc-container .evc-checkout { 10502 height: 50px !important; 10503 font-size: 14.5px !important; 10504 } 10505 .offcanvas.cart-offcanvas #evc-container .evc-payments { 10506 gap: 10px !important; 10507 margin-top: 10px !important; 10508 padding-top: 10px !important; 10509 } 10510 .offcanvas.cart-offcanvas #evc-container .evc-payments img { 10511 height: 24px !important; 10512 } 10513 } 10514 </style> 10515
10515<script> 10516 (function () { 10517 'use strict'; 10518 10519 if (window.__EV_TIERED_GIFT_PROGRESS_FORCE__) { 10520 return; 10521 } 10522 window.__EV_TIERED_GIFT_PROGRESS_FORCE__ = true; 10523 10524 function formatPrice(value) { 10525 var n = Number(value || 0); 10526 try { 10527 return new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(n); 10528 } catch (e) { 10529 return n.toFixed(2).replace('.', ',') + ' â¬'; 10530 } 10531 } 10532 10533 function formatScalePrice(value) { 10534 var n = Number(value || 0); 10535 try { 10536 return new Intl.NumberFormat('de-DE', { maximumFractionDigits: 0 }).format(n) + ' â¬'; 10537 } catch (e) { 10538 return Math.round(n).toString().replace(/\B(?=(\d{3})+(?!\d))/g, '.') + ' â¬'; 10539 } 10540 } 10541 10542 function readProgressData(scope) { 10543 var root = scope || document; 10544 var nodes = []; 10545
10546 // Wichtig: Bei Offcanvas-Refreshes können kurzzeitig alte und neue 10547 // JSON-Daten im DOM existieren. Deshalb immer die letzte verfügbare 10548 // Datenbasis im aktiven Offcanvas verwenden, nicht den ersten Treffer 10549 // im Dokument. So springt der Balken nicht auf alte Warenkorbwerte. 10550 if (root.querySelectorAll) { 10551 nodes = Array.prototype.slice.call(root.querySelectorAll('.ev-tiered-gift-progress-data')); 10552 } 10553 10554 if (!nodes.length) { 10555 var offcanvas = document.querySelector('.offcanvas.cart-offcanvas.show'); 10556 if (offcanvas) { 10557 nodes = Array.prototype.slice.call(offcanvas.querySelectorAll('.ev-tiered-gift-progress-data')); 10558 } 10559 } 10560 10561 if (!nodes.length) return null; 10562 var dataNode = nodes[nodes.length - 1]; 10563 10564 try { 10565 var data = JSON.parse(dataNode.textContent || '{}'); 10566 return data && data.enabled ? data : null; 10567 } catch (e) { 10568 return null; 10569 } 10570 } 10571 10572 function buildProgress(progress) { 10573 var allReached = !!progress.allReached; 10574 var percent = Math.max(0, Math.min(100, Number(progress.percent || 0))); 10575 var steps = Array.isArray(progress.steps) ? progress.steps : []; 10576 var textColor = String(progress.textColor || '#2a4d35'); 10577 var backgroundColor = String(progress.backgroundColor || '#fff3c4'); 10578 var accentColor = String(progress.accentColor || '#d8b64d'); 10579 var accentTrackColor = accentColor + '42'; 10580 var nextMessageTemplate = String(progress.nextMessage || 'Noch {amount} bis zur nächsten Prämie'); 10581 var amountHtml = '<strong>' + formatPrice(progress.missingAmount) + '</strong>'; 10582 var nextMessageHtml; 10583 if (nextMessageTemplate.indexOf('{amount}') !== -1) { 10584 var messageParts = nextMessageTemplate.split('{amount}'); 10585 nextMessageHtml = messageParts.map(escapeHtml).join(amountHtml); 10586 } else { 10587 nextMessageHtml = escapeHtml(nextMessageTemplate) + ' ' + amountHtml; 10588 } 10589 var message = allReached 10590 ? escapeHtml(String(progress.reachedMessage || 'â Alle verfügbaren Prämien freigeschaltet')) 10591 : nextMessageHtml + (progress.nextLabel ? ':<br><strong>' + escapeHtml(progress.nextLabel) + '</strong>' : '') + '.'; 10592 10593 var stepCount = Math.max(1, steps.length); 10594 var stepHtml = '<div style="position:absolute;left:0;top:0;text-align:left;white-space:nowrap;">0 â¬</div>' + steps.map(function (step, index) { 10595 var isLast = index === steps.length - 1; 10596 var pos = ((index + 1) / stepCount) * 100; 10597 var reachedStyle = step.reached ? 'font-weight:700;color:' + textColor + ';' : ''; 10598 var positionStyle = isLast 10599 ? 'position:absolute;right:0;top:0;text-align:right;white-space:nowrap;' 10600 : 'position:absolute;left:' + pos + '%;top:0;transform:translateX(-50%);text-align:center;white-space:nowrap;'; 10601 return '<div style="' + positionStyle + reachedStyle + '">' + 10602 '<span title="' + escapeHtml(step.label || '') + '">' + formatScalePrice(step.threshold) + '</span>' + 10603 '</div>'; 10604 }).join(''); 10605 10606 // EVC31: einspaltige Kopfzeile; Status-Badge bleibt erhalten, aber nicht mehr als Flex-Spalte. 10607 return '<div class="ev-tiered-gift-progress ev-tiered-gift-progress-forced" style="position:relative;margin:0;padding:10px 14px 9px 14px;background:' + backgroundColor + ';border-bottom:1px solid ' + accentColor + ';border-top:1px solid ' + accentColor + ';box-shadow:inset 4px 0 0 ' + accentColor + ';">' + 10608 '<div style="margin-bottom:8px;">' + 10609 '<div style="font-weight:700;color:' + textColor + ';font-size:13px;line-height:1.3;padding-right:88px;">' + escapeHtml(String(progress.headline || 'ð Gratis-Prämien sichern')) + '</div>' + 10610 '<div style="font-size:12px;line-height:1.35;color:' + textColor + ';margin-top:2px;">' + message + '</div>' + 10611 '</div>' + 10612 '<div class="ev-tiered-gift-progress-status" style="position:absolute;top:10px;right:14px;font-size:12px;font-weight:700;color:' + textColor + ';white-space:nowrap;background:' + backgroundColor + ';border:1px solid ' + accentColor + ';border-radius:999px;padding:3px 8px;line-height:1.2;">' + 10613 Number(progress.reachedCount || 0) + '/' + Number(progress.totalCount || steps.length || 0) + ' erreicht' + 10614 '</div>' + 10615 '<div style="position:relative;height:8px;border-radius:999px;background:' + accentTrackColor + ';overflow:hidden;">' + 10616 '<div class="ev-tiered-gift-progress-fill" data-target-percent="' + percent + '" style="height:8px;width:' + percent + '%;border-radius:999px;background:' + accentColor + ';transition:width .45s ease;animation:evTieredGiftFillPulse .7s ease-out;"></div>' + 10617 '</div>' + 10618 (stepHtml ? '<div style="position:relative;height:14px;margin-top:6px;font-size:10.5px;line-height:1.2;color:' + textColor + ';">' + stepHtml + '</div>' : '') + 10619 '</div>'; 10620 } 10621 10622 10623 function buildNewCustomerProgress(progress) { 10624 var newCustomer = progress && progress.newCustomer ? progress.newCustomer : null; 10625 if (!newCustomer || !newCustomer.enabled) return ''; 10626 10627 var percent = Math.max(0, Math.min(100, Number(newCustomer.percent || 0))); 10628 var reached = !!newCustomer.reached; 10629 var newCustomerTextColor = String(newCustomer.textColor || '#9a5a00');
10630 var newCustomerBackgroundColor = String(newCustomer.backgroundColor || '#fff3d6'); 10631 var newCustomerAccentColor = String(newCustomer.accentColor || '#d97706'); 10632 var newCustomerAccentTrackColor = newCustomerAccentColor + '42'; 10633 var label = newCustomer.label ? escapeHtml(newCustomer.label) : ''; 10634 var newCustomerHeadline = String(newCustomer.headline || 'ð Exklusiv für Neukunden: Geschenk sichern'); 10635 var newCustomerNextMessageTemplate = String(newCustomer.nextMessage || 'Noch {amount} bis zu Deinem Geschenk'); 10636 var newCustomerAmountHtml = '<strong>' + formatPrice(newCustomer.missingAmount) + '</strong>'; 10637 var newCustomerNextMessageHtml; 10638 if (newCustomerNextMessageTemplate.indexOf('{amount}') !== -1) { 10639 var newCustomerMessageParts = newCustomerNextMessageTemplate.split('{amount}'); 10640 newCustomerNextMessageHtml = newCustomerMessageParts.map(escapeHtml).join(newCustomerAmountHtml); 10641 } else { 10642 newCustomerNextMessageHtml = escapeHtml(newCustomerNextMessageTemplate) + ' ' + newCustomerAmountHtml; 10643 } 10644 var message = reached 10645 ? escapeHtml(String(newCustomer.reachedMessage || 'â Neukunden-Geschenk freigeschaltet')) 10646 : newCustomerNextMessageHtml + (label ? ':<br><strong>' + label + '</strong>' : '') + '.'; 10647 10648 // EVC31/Variante A: einspaltig, ohne Status-Pill, kompaktere Schrift. 10649 return '<div class="ev-tiered-gift-new-customer-progress ev-tiered-gift-new-customer-progress-forced" style="margin:0;padding:10px 14px 9px 14px;background:' + newCustomerBackgroundColor + ';border-bottom:1px solid ' + newCustomerAccentColor + ';border-top:1px solid ' + newCustomerAccentColor + ';box-shadow:inset 4px 0 0 ' + newCustomerAccentColor + ';">' + 10650 '<div style="margin-bottom:8px;">' + 10651 '<div style="font-weight:700;color:' + newCustomerTextColor + ';font-size:13px;line-height:1.3;">' + escapeHtml(newCustomerHeadline) + '</div>' + 10652 '<div style="font-size:12px;line-height:1.35;color:' + newCustomerTextColor + ';margin-top:2px;">' + message + '</div>' + 10653 '</div>' + 10654 '<div style="position:relative;height:8px;border-radius:999px;background:' + newCustomerAccentTrackColor + ';overflow:hidden;">' + 10655 '<div class="ev-tiered-gift-new-customer-progress-fill" style="height:8px;width:' + percent + '%;border-radius:999px;background:' + newCustomerAccentColor + ';transition:width .45s ease;animation:evTieredGiftFillPulse .7s ease-out;"></div>' + 10656 '</div>' + 10657 '<div style="display:flex;justify-content:space-between;align-items:flex-start;gap:8px;height:14px;margin-top:6px;font-size:10.5px;line-height:1.2;color:' + newCustomerTextColor + ';">' + 10658 '<div style="text-align:left;">0 â¬</div>' + 10659 '<div style="text-align:right;' + (reached ? 'font-weight:700;color:' + newCustomerTextColor + ';' : '') + '">' + formatScalePrice(newCustomer.threshold) + '</div>' + 10660 '</div>' + 10661 '</div>'; 10662 } 10663 10664 function escapeHtml(value) { 10665 return String(value || '').replace(/[&<>'"]/g, function (ch) { 10666 return ({ '&': '&', '<': '<', '>': '>', "'": ''', '"': '"' })[ch]; 10667 }); 10668 } 10669 10670 function injectForcedProgress(scope) { 10671 var offcanvas = (scope && scope.closest && scope.closest('.offcanvas.cart-offcanvas')) || document.querySelector('.offcanvas.cart-offcanvas.show'); 10672 if (!offcanvas) return; 10673 10674 var progress = readProgressData(offcanvas); 10675 if (!progress) return; 10676 10677 var evcContainer = offcanvas.querySelector('#evc-container'); 10678 var wrapper = evcContainer ? evcContainer.querySelector('.evc-wrapper') : null; 10679 var header = wrapper ? wrapper.querySelector('.evc-header') : null; 10680 if (!wrapper || !header) return; 10681 10682 // Im Echt-Vital Custom-Offcanvas darf nur der Forced-Balken sichtbar sein. 10683 Array.prototype.slice.call(offcanvas.querySelectorAll('.ev-tiered-gift-progress:not(.ev-tiered-gift-progress-forced), .ev-tiered-gift-new-customer-progress:not(.ev-tiered-gift-new-customer-progress-forced)')).forEac
10683h(function (node) { 10684 node.parentNode && node.parentNode.removeChild(node); 10685 }); 10686 10687 var html = (progress.normalEnabled ? buildProgress(progress) : '') + buildNewCustomerProgress(progress); 10688 10689 // Korrektheit vor Animation: vorhandene Forced-Bereiche werden komplett 10690 // ersetzt und direkt mit den aktuellen Daten neu eingesetzt. 10691 Array.prototype.slice.call(wrapper.querySelectorAll('.ev-tiered-gift-progress-forced, .ev-tiered-gift-new-customer-progress-forced')).forEach(function (node) { 10692 node.parentNode && node.parentNode.removeChild(node); 10693 }); 10694 header.insertAdjacentHTML('afterend', html); 10695 } 10696 10697 function run() { 10698 injectForcedProgress(document); 10699 } 10700 10701 var scheduled = false; 10702 function schedule() { 10703 if (scheduled) return; 10704 scheduled = true; 10705 window.requestAnimationFrame(function () { 10706 scheduled = false; 10707 run(); 10708 }); 10709 } 10710 10711 function isRelevantNode(node) { 10712 if (!node || node.nodeType !== 1) return false; 10713 if (node.matches && node.matches('.offcanvas.cart-offcanvas, .offcanvas-cart, #evc-container, .evc-wrapper, .ev-tiered-gift-progress-data, .hidden-line-items-information')) { 10714 return true; 10715 } 10716 if (node.querySelector && node.querySelector('.offcanvas.cart-offcanvas, .offcanvas-cart, #evc-container, .evc-wrapper, .ev-tiered-gift-progress-data, .hidden-line-items-information')) { 10717 return true; 10718 } 10719 return false; 10720 } 10721 10722 function shouldScheduleFromMutations(mutations) { 10723 for (var i = 0; i < mutations.length; i++) { 10724 var mutation = mutations[i]; 10725 var target = mutation.target; 10726 10727 if (target && target.closest && target.closest('.offcanvas.cart-offcanvas')) { 10728 return true; 10729 } 10730 10731 for (var a = 0; a < mutation.addedNodes.length; a++) { 10732 if (isRelevantNode(mutation.addedNodes[a])) return true; 10733 } 10734 10735 for (var r = 0; r < mutation.removedNodes.length; r++) { 10736 if (isRelevantNode(mutation.removedNodes[r])) return true; 10737 } 10738 } 10739 10740 return false; 10741 } 10742 10743 document.addEventListener('DOMContentLoaded', schedule); 10744 document.addEventListener('shown.bs.offcanvas', schedule); 10745 document.addEventListener('click', function (event) { 10746 var target = event.target; 10747 if (!(target instanceof Element)) return; 10748 if (!target.closest('.offcanvas.cart-offcanvas, [data-offcanvas-cart], [data-off-canvas-cart], .evp-cart-btn, [data-role="addcart"]')) return; 10749 setTimeout(schedule, 60); 10750 }, true); 10751 10752 new MutationObserver(function (mutations) { 10753 if (shouldScheduleFromMutations(mutations)) { 10754 schedule(); 10755 } 10756 }).observe(document.body || document.documentElement, { childList: true, subtree: true }); 10757 10758 // Schlanker Fallback fuer Theme-/Offcanvas-Sonderfaelle. Fuehrt nur aus, 10759 // wenn der Warenkorb wirklich offen ist. 10760 setInterval(function () { 10761 if (document.querySelector('.offcanvas.cart-offcanvas.show')) { 10762 schedule(); 10763 } 10764 }, 1500); 10765 })(); 10766 </script>
10766 10767 10768 10769 10770
10770<script> 10771 window.acrisSearchConfig = { 10772 suggestHighlight: 'yes', 10773 suggestHighlightColor: '#6fbf40' 10774 }; 10775 window.acrisSearchLastTermsTitle = 'Letzte\u0020Suchanfragen'; 10776 </script>
10776 10777 10778 10779 10780
10780<script> 10781 // Sticky Header Mobile 10782 (() => { 10783 const header = document.querySelector('header.header-main'); 10784 if (!header) return; 10785 10786 const mq = window.matchMedia('(max-width: 991.98px)'); 10787 const onScroll = () => { 10788 if (window.scrollY > 2) header.classList.add('is-stuck'); 10789 else header.classList.remove('is-stuck'); 10790 }; 10791 10792 let active = false; 10793 function enable() { 10794 if (active) return; 10795 active = true; 10796 onScroll(); 10797 window.addEventListener('scroll', onScroll, { passive: true }); 10798 document.body.classList.remove('rhweb-fixed-header-scroll-up'); 10799 } 10800 function disable() { 10801 if (!active) return; 10802 active = false; 10803 window.removeEventListener('scroll', onScroll); 10804 header.classList.remove('is-stuck'); 10805 } 10806 function check(e) { e.matches ? enable() : disable(); } 10807 10808 check(mq); 10809 if (mq.addEventListener) mq.addEventListener('change', check); 10810 else if (mq.addListener) mq.addListener(check); // Safari Fallback 10811 })(); 10812 </script>
10812 10813 10814 10815
10815<script> 10816 //Produktdetailseite mehr Anzeigen button siehe EV-134 10817 document.addEventListener('DOMContentLoaded', () => { 10818 const moreButtons = document.querySelectorAll('.buy-widget-show-more-btn'); 10819 10820 moreButtons.forEach((moreButton) => { 10821 const btnText = moreButton.querySelector('.btn-text'); 10822 const productDetailMore = moreButton.closest('.ev-buy-widget-show-more') 10823 .parentElement.querySelector('.buy-widget-description-wrapper'); 10824 10825 if (btnText && productDetailMore) { 10826 moreButton.addEventListener('click', (event) => { 10827 event.preventDefault(); 10828 10829 // Toggle nur für diesen Bereich 10830 productDetailMore.classList.toggle('expanded'); 10831 moreButton.classList.toggle('expanded'); 10832 10833 btnText.textContent = productDetailMore.classList.contains('expanded') 10834 ? 'weniger' 10835 : 'mehr'; 10836 }); 10837 } 10838 }); 10839 10840 10841 const storySliderMoreButtons = document.querySelectorAll('.ev-story-slider-show-more-btn'); 10842 10843 storySliderMoreButtons.forEach((moreButton) => { 10844 moreButton.addEventListener('click', (ev) => { 10845 ev.preventDefault(); 10846 10847 const item = moreButton.closest('.tns-item, .image-slider-item'); 10848 if (!item) return; 10849 10850 const infoBox = item.querySelector('.info-box'); 10851 if (!infoBox) return; 10852 10853 const btnTextEl = moreButton.querySelector('.btn-text'); 10854 const isMehr = btnTextEl?.textContent?.trim().toLowerCase() === 'mehr'; 10855 10856 // Ursprüngliche Höhen (computed) einmalig merken 10857 if (!infoBox.dataset.origHeight) { 10858 infoBox.dataset.origHeight = getComputedStyle(infoBox).height || ''; 10859 } 10860 if (!item.dataset.origHeight) { 10861 item.dataset.origHeight = getComputedStyle(item).height || ''; 10862 } 10863 10864 if (isMehr) { 10865 // EXPAND: height: fit-content auf Box + Item 10866 // (mit !important, falls CSS sonst blockt) 10867 infoBox.style.setProperty('height', 'fit-content', 'important'); 10868 infoBox.style.removeProperty('max-height'); 10869 infoBox.style.setProperty('overflow', 'visible', 'important'); 10870 10871 item.style.setProperty('max-height', 'fit-content', 'important'); 10872 item.style.setProperty('overflow', 'visible', 'important'); 10873 10874 if (btnTextEl) btnTextEl.textContent = 'weniger'; 10875 moreButton.classList.add('expanded'); 10876 infoBox.classList.add('expanded'); 10877 item.classList.add('expanded'); 10878 } else { 10879 // COLLAPSE: ursprüngliche Höhen zurück 10880 // Falls du wieder clampen willst, setze hier optional overflow:hidden 10881 const origInfo = infoBox.dataset.origHeight; 10882 const origItem = item.dataset.origHeight; 10883 10884 if (origInfo) { 10885 infoBox.style.setProperty('height', origInfo, 'important'); 10886 infoBox.style.setProperty('overflow', 'hidden', 'important'); 10887 } else { 10888 infoBox.style.removeProperty('height'); 10889 infoBox.style.setProperty('overflow', 'hidden', 'important'); 10890 } 10891 10892 if (origItem) { 10893 item.style.setProperty('max-height', origItem, 'important'); 10894 item.style.setProperty('overflow', 'hidden', 'important'); 10895 } else { 10896 item.style.removeProperty('max-height'); 10897 item.style.setProperty('overflow', 'hidden', 'important'); 10898 } 10899 10900 if (btnTextEl) btnTextEl.textContent = 'mehr'; 10901 moreButton.classList.remove('expanded'); 10902 infoBox.classList.remove('expanded'); 10903 item.classList.remove('expanded'); 10904 } 10905 }); 10906 }); 10907 10908 10909// ---- INHALTSSTOFFE ---- 10910 document.querySelector('#inhalt-tab')?.addEventListener('click', () => { 10911 const inhaltstoffeShowMoreBtn = document.querySelector('.inhaltstoffe-widget-show-more-btn'); 10912 const inhaltContainer = document.querySelector('#inhalt-container'); 10913 const inhaltPaneContainer = inhaltContainer?.querySelector('.tab-pane-container'); 10914 10915 if (inhaltstoffeShowMoreBtn && inhaltContainer && inhaltPaneContainer) { 10916 const btnText = inhaltstoffeShowMoreBtn.querySelector('.btn-text-inhaltstoffe'); 10917 10918 if (inhaltPaneContainer.scrollHeight > inhaltContainer.clientHeight) { 10919 inhaltstoffeShowMoreBtn.style.display = 'block'; 10920 10921 inhaltstoffeShowMoreBtn.addEventListener('click', (event) => { 10922 event.preventDefault(); 10923 10924 inhaltContainer.classList.toggle('expanded'); 10925 inhaltstoffeShowMoreBtn.classList.toggle('expanded'); 10926 10927 btnText.textContent = inhaltContainer.classList.contains('expanded') 10928 ? 'weniger' 10929 : 'mehr'; 10930 }); 10931 } else { 10932 inhaltstoffeShowMoreBtn.style.display = 'none'; 10933 } 10934 } 10935 }); 10936 10937 10938 10939 10940// ---- BESCHREIBUNG ---- 10941 const beschreibungShowMoreBtn = document.querySelector('.beschreibung-widget-show-more-btn'); 10942 const beschreibungContainer = document.querySelector('#descr-container'); 10943 10944 if (beschreibungShowMoreBtn && beschreibungContainer) { 10945 const btnText = beschreibungShowMoreBtn.querySelector('.btn-text-beschreibung'); 10946 10947 if (beschreibungContainer.scrollHeight <= beschreibungContainer.clientHeight) { 10948 beschreibungShowMoreBtn.style.display = 'none'; 10949 } else { 10950 beschreibungShowMoreBtn.addEventListener('click', (event) => { 10951 event.preventDefault(); 10952 10953 beschreibungContainer.classList.toggle('expanded'); 10954 beschreibungShowMoreBtn.classList.toggle('expanded'); 10955 10956 btnText.textContent = beschreibungContainer.classList.contains('expanded') 10957 ? 'weniger' 10958 : 'mehr'; 10959 }); 10960 } 10961 } 10962 10963 10964 10965 //Barrierefreiheitswidget toggle 10966 const hostname = window.location.hostname; 10967 const path = window.location.pathname; 10968 const toggleBarrierefreiheitEl = document.querySelector(".dvaccess-toggle"); 10969 10970 if (!toggleBarrierefreiheitEl) { 10971 return; 10972 } 10973 10974 toggleBarrierefreiheitEl.style.display = "none"; 10975 if ( 10976 hostname === "echt-vital.de" && 10977 (path === "/" || path === "/informationen/barrierefreiheit/") 10978 ) { 10979 toggleBarrierefreiheitEl.style.display = ""; 10980 } 10981 10982 10983 }); 10984 </script>
10984 10985 </body> 10986 10987 </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.