<!DOCTYPE html>
<html lang="en">
<head>
    <title>Prosite - </title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content=" – Prosite">
<meta name="keywords" content="">
<meta name="author" content="Prosite">
<meta property="og:locale" content="en_US">
<meta property="og:locale:alternate" content="de_DE">
<meta property="og:type" content="website">
<meta property="og:title" content="Prosite - ">
<meta property="og:description" content=" – Prosite">
<meta property="og:url" content="https://prosite.de/en">
<meta property="og:site_name" content="Prosite">
<meta property="og:image" content="https://prosite.de/assets/media/logos/og-image.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Prosite - ">
<meta name="twitter:description" content=" – Prosite">
<meta name="twitter:image" content="https://prosite.de/assets/media/logos/og-image.png">
<link rel="canonical" href="https://prosite.de/en">
<link rel="alternate" hreflang="en" href="https://prosite.de/en">
<link rel="alternate" hreflang="de" href="https://prosite.de/de">
<link rel="shortcut icon" href="https://prosite.de/assets/media/logos/favicon.png">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Inter:300,400,500,600,700">
<link href="https://prosite.de/assets/plugins/global/plugins.bundle.css" rel="stylesheet">
<link href="https://prosite.de/assets/plugins/custom/fullcalendar/fullcalendar.bundle.css" rel="stylesheet">
<link href="https://prosite.de/assets/plugins/custom/datatables/datatables.bundle.css" rel="stylesheet">
<link href="https://prosite.de/assets/css/style.bundle.css" rel="stylesheet">
<link href="https://prosite.de/assets/css/custom.css" rel="stylesheet">
<link href="https://prosite.de/assets/css/aos.css" rel="stylesheet">
<link href="https://prosite.de/assets/css/font-awesome-animation.min.css" rel="stylesheet">
<link href="https://prosite.de/assets/css/hover/hover.css" rel="stylesheet">
<link href="https://prosite.de/assets/css/fancybox.css" rel="stylesheet">
<script>
    if(window.top!==window.self){
        window.top.location.replace(window.self.location.href);
    }
</script>
    <!-- Livewire Styles --><style >[wire\:loading][wire\:loading], [wire\:loading\.delay][wire\:loading\.delay], [wire\:loading\.inline-block][wire\:loading\.inline-block], [wire\:loading\.inline][wire\:loading\.inline], [wire\:loading\.block][wire\:loading\.block], [wire\:loading\.flex][wire\:loading\.flex], [wire\:loading\.table][wire\:loading\.table], [wire\:loading\.grid][wire\:loading\.grid], [wire\:loading\.inline-flex][wire\:loading\.inline-flex] {display: none;}[wire\:loading\.delay\.none][wire\:loading\.delay\.none], [wire\:loading\.delay\.shortest][wire\:loading\.delay\.shortest], [wire\:loading\.delay\.shorter][wire\:loading\.delay\.shorter], [wire\:loading\.delay\.short][wire\:loading\.delay\.short], [wire\:loading\.delay\.default][wire\:loading\.delay\.default], [wire\:loading\.delay\.long][wire\:loading\.delay\.long], [wire\:loading\.delay\.longer][wire\:loading\.delay\.longer], [wire\:loading\.delay\.longest][wire\:loading\.delay\.longest] {display: none;}[wire\:offline][wire\:offline] {display: none;}[wire\:dirty]:not(textarea):not(input):not(select) {display: none;}:root {--livewire-progress-bar-color: #2299dd;}[x-cloak] {display: none !important;}[wire\:cloak] {display: none !important;}</style>
    </head>
<body id="kt_body" class="header-fixed header-tablet-and-mobile-fixed toolbar-enabled">
<script>var defaultThemeMode = "light";
    var themeMode;
    if (document.documentElement) {
        if (document.documentElement.hasAttribute("data-bs-theme-mode")) {
            themeMode = document.documentElement.getAttribute("data-bs-theme-mode");
        } else {
            if (localStorage.getItem("data-bs-theme") !== null) {
                themeMode = localStorage.getItem("data-bs-theme");
            } else {
                themeMode = defaultThemeMode;
            }
        }
        if (themeMode === "system") {
            themeMode = window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
        }
        document.documentElement.setAttribute("data-bs-theme", themeMode);
    }</script>
<div class="d-flex flex-column flex-root">
    <div class="page d-flex flex-row flex-column-fluid">
                <div class="wrapper d-flex flex-column flex-row-fluid" id="kt_wrapper">
            <div id="kt_header" class="header align-items-stretch">
                <div class="container-xxl d-flex align-items-stretch justify-content-between">
                    <div class="d-none d-flex align-items-center d-lg-none ms-n4 me-1" title="Show aside menu">
                        <button id="kt_aside_mobile_toggle" class="btn btn-icon d-lg-none" type="button"
                                aria-controls="kt_aside">
                            <i class="ki-outline ki-burger-menu fs-1"></i>
                        </button>
                    </div>
                    <div class="d-flex align-items-center flex-grow-1 flex-lg-grow-0 me-lg-15">
                        <a wire:navigate href="https://prosite.de/en">
                            <img alt="Logo" src="https://prosite.de/assets/images/logo.png" class="h-30px">
                        </a>
                    </div>
                    <div class="d-flex align-items-stretch justify-content-between flex-lg-grow-1">
    <div class="d-flex align-items-stretch" id="kt_header_nav">
        <div class="header-menu align-items-stretch" data-kt-drawer="true" data-kt-drawer-name="header-menu"
             data-kt-drawer-activate="{default: true, lg: false}" data-kt-drawer-overlay="true"
             data-kt-drawer-width="{default:'200px', '300px': '250px'}" data-kt-drawer-direction="start"
             data-kt-drawer-toggle="#kt_header_menu_mobile_toggle" data-kt-swapper="true" data-kt-swapper-mode="prepend"
             data-kt-swapper-parent="{default: '#kt_body', lg: '#kt_header_nav'}">
            <div class="menu menu-rounded menu-column menu-lg-row menu-root-here-bg-desktop menu-active-bg menu-state-primary menu-title-gray-800 menu-arrow-gray-500 align-items-stretch my-5 my-lg-0 px-2 px-lg-0 fw-semibold fs-6" id="#kt_header_menu" data-kt-menu="true">
                <a href="https://prosite.de/en"
          target="_self" wire:navigate
      class="menu-item menu-here-bg menu-lg-down-accordion me-0 me-lg-2">
    <span class="menu-link active">
                <span class="menu-title">Home</span>
    </span>
</a>


                <a href="https://prosite.de/en/store"
          target="_self" wire:navigate
      class="menu-item menu-here-bg menu-lg-down-accordion me-0 me-lg-2">
    <span class="menu-link ">
                <span class="menu-title">Order Product</span>
    </span>
</a>


                <a href="https://prosite.de/en/domain"
          target="_self" wire:navigate
      class="menu-item menu-here-bg menu-lg-down-accordion me-0 me-lg-2">
    <span class="menu-link ">
                <span class="menu-title">Order Domain</span>
    </span>
</a>


                                    <a href="https://prosite.de/en/ticket"
          target="_self" wire:navigate
      class="menu-item menu-here-bg menu-lg-down-accordion me-0 me-lg-2">
    <span class="menu-link ">
                <span class="menu-title">Support</span>
    </span>
</a>


                                <a href="https://prositestatus.de/"
          target="_blank" rel="noopener noreferrer"
      class="menu-item menu-here-bg menu-lg-down-accordion me-0 me-lg-2">
    <span class="menu-link ">
                <span class="menu-title">Server Status</span>
    </span>
</a>


                <a href="https://prosite.de/en/modules/mailmaster/dashboard"
          target="_blank" rel="noopener noreferrer"
      class="menu-item menu-here-bg menu-lg-down-accordion me-0 me-lg-2">
    <span class="menu-link ">
                <span class="menu-title">Mail Admin</span>
    </span>
</a>


            </div>
        </div>
    </div>
    <div class="topbar d-flex align-items-stretch flex-shrink-0">
        <div class="d-flex align-items-center pb-1">
            <a wire:navigate href="https://prosite.de/de" class="topbar-item px-3">
                <span class="symbol symbol-20px">
                    <img class="rounded-1" src="https://prosite.de/assets/media/flags/short/en.svg" alt="">
                </span>
            </a>
        </div>
        <div wire:snapshot="{&quot;data&quot;:{&quot;count&quot;:0},&quot;memo&quot;:{&quot;id&quot;:&quot;nkrgvJN66QPcywov3NA6&quot;,&quot;name&quot;:&quot;common.components.cart-icon&quot;,&quot;path&quot;:&quot;en&quot;,&quot;method&quot;:&quot;GET&quot;,&quot;children&quot;:[],&quot;scripts&quot;:[],&quot;assets&quot;:[],&quot;errors&quot;:[],&quot;locale&quot;:&quot;en&quot;},&quot;checksum&quot;:&quot;d0dff1693e528a579684260422a1741a0b6d7d28750ec08b68d629343eeecb1d&quot;}" wire:effects="{&quot;listeners&quot;:[&quot;updateCartIcon&quot;]}" wire:id="nkrgvJN66QPcywov3NA6" class="d-flex align-items-stretch">
    <!--[if BLOCK]><![endif]--><!--[if ENDBLOCK]><![endif]-->
</div>

                <div class="d-flex align-items-center" data-kt-element="theme-mode-menu">
            <a href="#" class="topbar-item px-3 px-lg-4 theme-light-show"
               data-kt-element="mode" data-kt-value="dark" aria-label="Switch to dark">
                <i class="ki-outline ki-moon fs-1"></i>
            </a>
            <a href="#" class="topbar-item px-3 px-lg-4 theme-dark-show"
               data-kt-element="mode" data-kt-value="light" aria-label="Switch to light">
                <i class="ki-outline ki-night-day fs-1"></i>
            </a>
        </div>
        <div class="d-flex align-items-stretch" id="kt_header_user_menu_toggle">
                            <a href="https://prosite.de/en/login" class="topbar-item cursor-pointer symbol px-3 px-lg-5 me-n3 me-lg-n5 symbol-30px symbol-md-35px" wire:navigate>
                    <img src="https://prosite.de/assets/media/avatars/blank.jpg" alt="metronic"/>
                </a>
                    </div>
        <div class="d-flex align-items-stretch d-lg-none px-3 me-n3" title="Show header menu">
            <div class="topbar-item" id="kt_header_menu_mobile_toggle">
                <i class="ki-outline ki-burger-menu-2 fs-1"></i>
            </div>
        </div>
    </div>
</div>
                </div>
            </div>
            <div class="content d-flex flex-column flex-column-fluid pb-0" id="kt_content">
                <div class="toolbar h-100 pb-0">
        <div class="position-relative w-100 overflow-hidden h-100 pb-0">
            <video
                autoplay muted loop playsinline
                class="position-absolute top-0 start-0 w-100 h-100 object-fit-cover lazy-video"
                poster="https://prosite.de/assets/video/bg.jpg"
                data-src="https://prosite.de/assets/video/bg2.mp4">
            </video>
            <div class="overlay position-absolute top-0 start-0 w-100 h-100"></div>
            <div class="container-xxl position-relative d-flex flex-column justify-content-center align-items-center text-center h-100 text-white">
            <div class="d-flex flex-column">
                    <div class="wave-text fw-bolder fs-7tx">
                        <span>P</span><span>R</span><span>O</span><span>S</span><span>I</span><span>T</span><span>E</span>
                    </div>
                    <div class="fs-3x mt-10 fw-bolder mb-20 mb-lg-0">
                        Ihr zuverlässiger Partner<br>für Domains, Webhosting & mehr
                    </div>
                </div>
            </div>
        </div>
    </div>


                            </div>
                    </div>
    </div>
</div>
<div id="modal-outlet"></div>

<div id="kt_scrolltop" class="scrolltop" data-kt-scrolltop="true" aria-hidden="true">
    <i class="ki-duotone ki-arrow-up" aria-hidden="true">
        <span class="path1"></span><span class="path2"></span>
    </i>
</div>
<script>var hostUrl = "assets/";</script>
<script src="https://prosite.de/assets/plugins/global/plugins.bundle.js" data-navigate-once></script>
<script src="https://prosite.de/assets/js/scripts.bundle.js" data-navigate-once></script>
<script src="https://prosite.de/assets/js/aos.js" data-navigate-once></script>
<script src="https://prosite.de/assets/js/fancybox.umd.js" data-navigate-once></script>
<script src="https://prosite.de/assets/plugins/custom/datatables/datatables.bundle.js" data-navigate-once></script>
<script data-navigate-once>
    (() => {
        "use strict";

        // -----------------------------
        // Guards & Shortcuts
        // -----------------------------
        if (window.__appBooted) return;             // nur einmal binden (wegen data-navigate-once)
        window.__appBooted = true;

        const W  = window;
        const D  = document;
        const $q = (sel, root = D) => root.querySelector(sel);
        const $qa = (sel, root = D) => root.querySelectorAll(sel);
        const cssEscape = (s) => (W.CSS?.escape ? CSS.escape(s) : String(s).replace(/[^\w-]/g, '\\$&'));
        const hasBootstrap = () => !!(W.bootstrap?.Tooltip);
        const hasSwal = () => !!W.Swal;
        const hasDT = () => !!(W.jQuery && (W.jQuery.fn?.DataTable || W.jQuery.fn?.dataTable));

        // Perf: ein globaler RAF-Puffer für Micro-Tasks
        let rafScheduled = false;
        const batched = new Map(); // key -> Set(nodes)
        const schedule = (key, node) => {
            if (!batched.has(key)) batched.set(key, new Set());
            if (node) batched.get(key).add(node);
            if (rafScheduled) return;
            rafScheduled = true;
            requestAnimationFrame(() => {
                rafScheduled = false;
                // Flush
                const tips = batched.get('tips'); const dts = batched.get('dts');
                if (tips?.size) { tips.forEach(initTooltipOnEl); tips.clear(); }
                if (dts?.size)  { dts.forEach(initDataTableOn); dts.clear(); }
            });
        };

        // -----------------------------
        // Event-Helfer (einmalige Listener)
        // -----------------------------
        const onWin = (name, handler) => {
            const key = `__listener_${name}`;
            if (W[key]) return;
            const fn = (e) => handler(e?.detail || {}, e);
            W.addEventListener(name, fn, { passive: true });
            W[key] = fn;
        };

        // -----------------------------
        // Metronic / KT Init (nur wenn vorhanden)
        // -----------------------------
        function initKT() {
            try { W.KTApp?.init?.(); } catch {}
            try { W.KTComponents?.init?.(); } catch {}
            try { W.KTMenu?.createInstances?.(); } catch {}
            try { W.KTDrawer?.createInstances?.(); } catch {}
        }

        // -----------------------------
        // Toastr Defaults (einmalig)
        // -----------------------------
        if (W.toastr) {
            W.toastr.options = {
                closeButton: true,
                debug: false,
                newestOnTop: false,
                progressBar: true,
                positionClass: "toastr-bottom-right",
                preventDuplicates: true,
                onclick: null,
                showDuration: "300",
                hideDuration: "1000",
                timeOut: "5000",
                extendedTimeOut: "1000",
                showEasing: "swing",
                hideEasing: "linear",
                showMethod: "fadeIn",
                hideMethod: "fadeOut"
            };
        }

        // -----------------------------
        // Tooltips (Bootstrap) – WeakMap für Instanzen
        // -----------------------------
        const tipMap = new WeakMap();

        function initTooltipOnEl(el) {
            if (!hasBootstrap() || !el || tipMap.has(el)) return;
            const always = el.getAttribute('data-tooltip-always') === 'true';
            try {
                const inst = new bootstrap.Tooltip(el, {
                    trigger: always ? 'manual' : (el.getAttribute('data-bs-trigger') || 'hover focus'),
                    placement: el.getAttribute('data-bs-placement') || 'top',
                    customClass: el.getAttribute('data-bs-custom-class') || '',
                    container: 'body',
                    boundary: 'window',
                    html: el.getAttribute('data-bs-html') === 'true'
                });
                tipMap.set(el, inst);
                if (always) inst.show();
            } catch {}
        }

        function initTooltips(root = D) {
            if (!hasBootstrap()) return;
            $qa('[data-bs-toggle="tooltip"]', root).forEach(initTooltipOnEl);
        }

        // -----------------------------
        // Menü / Popper – gecachte Liste
        // -----------------------------
        const isMenu = (el) => el?.matches?.('.menu.menu-sub[data-kt-menu="true"]');
        let menuCache = [];

        function refreshMenuCache() {
            menuCache = Array.from($qa('.menu.menu-sub[data-kt-menu="true"]'));
        }

        function getMenuForTrigger(trigger) {
            if (!trigger) return null;
            let m = trigger.nextElementSibling;
            if (isMenu(m)) return m;
            if (!menuCache.length) refreshMenuCache();
            const tr = trigger.getBoundingClientRect();
            let nearest = null, best = 1e9;
            for (const el of menuCache) {
                const r = el.getBoundingClientRect();
                const d = Math.hypot((r.left + r.right)/2 - (tr.left + tr.right)/2, (r.top + r.bottom)/2 - (tr.top + tr.bottom)/2);
                if (d < best) { best = d; nearest = el; }
            }
            return nearest;
        }

        function anchorTriggerParent(trigger) {
            const p = trigger?.parentElement;
            if (!p) return;
            if (getComputedStyle(p).position === 'static') p.style.position = 'relative';
            trigger.setAttribute('data-kt-menu-attach', 'parent');
        }

        function closeAllMenus() {
            $qa('[data-kt-menu-trigger].show').forEach(t => t.classList.remove('show'));
            $qa('.menu.menu-sub[data-kt-menu="true"].show').forEach(m => {
                m.classList.remove('show');
                m.removeAttribute('data-popper-placement');
                try { m.__popper?.destroy?.(); } catch {}
                m.__popper = null;
                Object.assign(m.style, { left: '', top: '', right: '', bottom: '', transform: '' });
            });
        }

        function toggleMenu(trigger) {
            const menu = getMenuForTrigger(trigger);
            if (!menu) return;
            const willOpen = !menu.classList.contains('show');
            closeAllMenus();
            if (!willOpen) return;
            anchorTriggerParent(trigger);
            trigger.classList.add('show');

            const placement = trigger.getAttribute('data-kt-menu-placement') || 'bottom-end';
            const [ox, oy] = (trigger.getAttribute('data-kt-menu-offset') || '0,8')
                .split(',').map(v => parseInt(v.trim(), 10)).map(n => Number.isFinite(n) ? n : 0);

            if (W.Popper?.createPopper) {
                try {
                    menu.__popper = W.Popper.createPopper(trigger, menu, {
                        placement,
                        modifiers: [{ name: 'offset', options: { offset: [ox, oy] } }]
                    });
                    menu.setAttribute('data-popper-placement', placement);
                } catch {}
            } else {
                const r = trigger.getBoundingClientRect(), pr = trigger.parentElement.getBoundingClientRect();
                menu.style.left = (r.right - pr.left - menu.offsetWidth + ox) + 'px';
                menu.style.top  = (r.bottom - pr.top + oy) + 'px';
            }
            menu.classList.add('show');
        }

        D.addEventListener('click', (e) => {
            const trg = e.target.closest?.('[data-kt-menu-trigger]');
            const inMenu = e.target.closest?.('.menu.menu-sub[data-kt-menu="true"]');
            if (!trg && !inMenu) { closeAllMenus(); return; }
            if (trg) {
                if (trg.tagName === 'A') e.preventDefault();
                e.stopPropagation();
                toggleMenu(trg);
            }
        }, { capture: true });

        // -----------------------------
        // Modals (Bootstrap / jQuery / KTDrawer kompatibel)
        // -----------------------------
        function closeModalById(id) {
            if (!id) return;
            const el = D.getElementById(id) || D.querySelector('#' + cssEscape(id));
            if (!el) return;
            try { let inst = W.bootstrap?.Modal?.getInstance(el); if (!inst) inst = new W.bootstrap.Modal(el); inst.hide(); } catch {}
            try { W.jQuery?.fn?.modal && W.jQuery(el).modal('hide'); } catch {}
            if (W.KTDrawer && el.getAttribute('data-kt-drawer')) {
                try { (W.KTDrawer.getInstance(el) || new W.KTDrawer(el)).hide?.(); } catch {}
            }
            el.classList.remove('show');
            el.setAttribute('aria-hidden', 'true');
            el.style.display = 'none';
            D.body.classList.remove('modal-open');
            $qa('.modal-backdrop').forEach(b => b.remove());
        }

        function openModalById(id) {
            if (!id) return;
            const el = D.getElementById(id) || D.querySelector('#' + cssEscape(id));
            if (!el) return;

            if (W.KTDrawer && el.getAttribute('data-kt-drawer')) {
                try { (W.KTDrawer.getInstance(el) || new W.KTDrawer(el)).show?.(); return; } catch {}
            }
            try {
                const inst = W.bootstrap?.Modal?.getOrCreateInstance?.(el);
                if (inst) { inst.show(); return; }
            } catch {}

            el.style.display = 'block';
            el.removeAttribute('aria-hidden');
            el.classList.add('show');
            if (!$q('.modal-backdrop')) {
                const bd = D.createElement('div');
                bd.className = 'modal-backdrop fade show';
                D.body.appendChild(bd);
            }
            D.body.classList.add('modal-open');
        }

        // -----------------------------
        // Livewire-kompatible Window-Events
        // -----------------------------
        onWin('closeModal', ({ modal }) => { Array.isArray(modal) ? modal.forEach(closeModalById) : closeModalById(modal); });
        onWin('open-modal', ({ modal }) => { Array.isArray(modal) ? modal.forEach(openModalById)  : openModalById(modal); });
        onWin('openModal',  ({ modal }) => { Array.isArray(modal) ? modal.forEach(openModalById)  : openModalById(modal); });

        onWin('toastr', ({ status, message }) => { if (W.toastr && status && message) W.toastr[status]?.(message); });

        onWin('alert', ({ status, title, message, html, modal }) => {
            if (!hasSwal()) return;
            const fire = () => W.Swal.fire({
                icon: status || 'info',
                title: title || '',
                ...(html ? { html } : { text: message || '' })
            });
            if (modal) {
                (Array.isArray(modal) ? modal : [modal]).forEach(closeModalById);
                setTimeout(fire, 50);
            } else fire();
        });

        onWin('renewAlert', ({ status, title, message, emit_1, emit_2 }) => {
            if (!hasSwal() || !W.Livewire) return;
            W.Swal.fire({
                icon: status || 'question',
                title: title || '',
                text: message || '',
                showCancelButton: true,
                confirmButtonText: (W.__lang_yes || 'Ja'),
                cancelButtonText: (W.__lang_no || 'Nein'),
                customClass: { confirmButton: 'btn btn-success', cancelButton: 'btn btn-danger' },
                buttonsStyling: false
            }).then(r => W.Livewire.dispatch(r.isConfirmed ? emit_1 : emit_2));
        });

        onWin('deleteAlert', ({ status, title, message, confirm, cancel, emit }) => {
            if (!hasSwal() || !W.Livewire) return;
            W.Swal.fire({
                icon: status || 'warning',
                title: title || '',
                text: message || '',
                showCancelButton: true,
                confirmButtonText: confirm || (W.__lang_yes || 'Ja'),
                cancelButtonText: cancel || (W.__lang_no || 'Nein'),
                customClass: { confirmButton: 'btn btn-danger', cancelButton: 'btn btn-secondary' },
                buttonsStyling: false
            }).then(r => { if (r.isConfirmed && emit) W.Livewire.dispatch(emit); });
        });

        // NEU: Sicheres Open-New-Tab
        onWin('open-new-tab', ({ url }) => {
            if (!url) return;
            if (hasSwal()) {
                W.Swal.fire({
                    icon: 'question',
                    title: 'Link öffnen?',
                    text: 'Soll der Link im neuen Tab geöffnet werden?',
                    showCancelButton: true,
                    confirmButtonText: 'Ja, im neuen Tab',
                    cancelButtonText: 'Nein, weiterleiten',
                    customClass: { confirmButton: 'btn btn-primary', cancelButton: 'btn btn-secondary' },
                    buttonsStyling: false,
                    allowOutsideClick: false,
                    allowEscapeKey: false,
                    reverseButtons: true
                }).then(result => {
                    if (result.isConfirmed) W.open(url, '_blank');
                    else if (result.dismiss !== W.Swal.DismissReason.backdrop) W.location.href = url;
                });
                return;
            }
            const ask = confirm("Soll der Link im neuen Tab geöffnet werden?");
            if (ask) W.open(url, '_blank'); else W.location.href = url;
        });

        // Cart Alert
        W.addEventListener('cartAlert', (event) => {
            if (!hasSwal()) return;
            const d = event.detail || {};
            W.Swal.fire({
                icon: d.status,
                title: d.title,
                text: d.message,
                showCancelButton: true,
                confirmButtonText: (W.__confirm_shopping || 'Weiter einkaufen'),
                cancelButtonText: (W.__go_to_cart || 'Zum Warenkorb'),
                customClass: { confirmButton: 'btn btn-success', cancelButton: 'btn btn-secondary' },
                buttonsStyling: false
            }).then((r) => { if (!r.isConfirmed) W.location.href = (W.__route_checkout || '/checkout'); });
        }, { passive: true });

        // -----------------------------
        // Drawer Binding (idempotent)
        // -----------------------------
        function ensureDrawer(toggleSelector, panelSelector) {
            const toggle = $q(toggleSelector);
            const panel  = $q(panelSelector);
            if (!toggle || !panel) return;
            let inst = W.KTDrawer?.getInstance?.(panel);
            if (!inst) { try { inst = new W.KTDrawer(panel); } catch {} }
            if (!toggle.__drawerBound) {
                toggle.addEventListener('click', (e) => {
                    const activeAttr = panel.getAttribute('data-kt-drawer-activate');
                    const isActive = (!activeAttr) ? true : (() => {
                        try { return W.getComputedStyle(toggle).display !== 'none'; } catch { return true; }
                    })();
                    if (!isActive) return;
                    e.preventDefault(); e.stopPropagation();
                    const d = W.KTDrawer?.getInstance?.(panel) || inst;
                    try { d?.isShown() ? d.hide() : d?.show(); } catch {}
                }, { passive: false });
                toggle.__drawerBound = true;
            }
        }

        function bindDrawers() {
            ensureDrawer('#kt_aside_mobile_toggle', '#kt_aside');
            ensureDrawer('#kt_header_menu_mobile_toggle', '#kt_header_menu');
        }

        // -----------------------------
        // DataTables – idempotent init
        // -----------------------------
        const dtOptions = {
            language: { lengthMenu: "Show _MENU_" },
            dom:
                "<'row mb-2'<'col-sm-6 d-flex align-items-center justify-conten-start dt-toolbar'l>" +
                "<'col-sm-6 d-flex align-items-center justify-content-end dt-toolbar'f>>" +
                "<'table-responsive'tr>" +
                "<'row'<'col-sm-12 col-md-5 d-flex align-items-center justify-content-center justify-content-md-start'i>" +
                "<'col-sm-12 col-md-7 d-flex align-items-center justify-content-center justify-content-md-end'p>>",
            deferRender: true,
            processing: true,
            stateSave: true,
            pageLength: 25,
            responsive: true
        };

        function initDataTableOn(el) {
            if (!hasDT() || !el || el.dataset.dtInited === '1') return;
            try {
                if (W.jQuery.fn.DataTable.isDataTable(el)) {
                    W.jQuery(el).DataTable().destroy();
                }
            } catch {}
            try {
                W.jQuery(el).DataTable(dtOptions);
                el.dataset.dtInited = '1';
            } catch {}
        }

        function initDataTables(root = D) {
            if (!hasDT()) return;
            $qa('table[id^="kt_datatable_"]', root).forEach(initDataTableOn);
        }

        onWin('datatable:init', ({ scope }) => {
            const root = scope ? $q(scope) : D;
            initDataTables(root || D);
        });

        // -----------------------------
        // Lazy-Video Loader
        // -----------------------------
        function initLazyVideos(root = D) {
            const videos = root.querySelectorAll('video.lazy-video:not([data-loaded])');
            const loadVideo = (video) => {
                if (video.dataset.loaded === '1') return;
                const src = video.dataset.src;
                if (!src) return;
                const hasSource = [...video.querySelectorAll('source')].some(s => s.src);
                if (!hasSource) {
                    const source = D.createElement('source');
                    source.src = src; source.type = 'video/mp4';
                    video.appendChild(source);
                }
                try { video.load(); } catch {}
                video.setAttribute('data-loaded', '1');
            };

            if (!('IntersectionObserver' in W)) {
                videos.forEach(loadVideo);
                return;
            }

            const observer = new IntersectionObserver((entries, obs) => {
                entries.forEach(entry => {
                    if (entry.isIntersecting) {
                        loadVideo(entry.target);
                        obs.unobserve(entry.target);
                    }
                });
            });
            videos.forEach(video => observer.observe(video));
        }

        // -----------------------------
        // Fancybox (idempotent & Livewire-safe)
        // -----------------------------
        function initFancybox(root = D) {
            if (typeof Fancybox === "undefined") return;

            const els = root.querySelectorAll('[data-fancybox]');
            if (!els.length) return;

            try { Fancybox.destroy(); } catch {}

            Fancybox.bind('[data-fancybox]', {
                Thumbs: { autoStart: false },
                Toolbar: { display: ["close"] },
                dragToClose: true,
            });
        }

        // -----------------------------
        // Kleine Utilities
        // -----------------------------
        W.togglePassword = function(id, btn) {
            const input = D.getElementById(id);
            const icon  = btn?.querySelector?.('i');
            if (!input) return;
            const to = input.type === 'password' ? 'text' : 'password';
            input.type = to;
            if (icon) {
                icon.classList?.replace(
                    to === 'text' ? 'bi-eye-slash' : 'bi-eye',
                    to === 'text' ? 'bi-eye' : 'bi-eye-slash'
                );
            }
        };

        W.updatePasswordStrength = function(input, id) {
            const value = input?.value || '';
            const bar   = D.getElementById(id + '_strength_bar');
            const text  = D.getElementById(id + '_strength_text');
            if (!bar || !text) return;

            let score = 0;
            if (value.length >= 8) score += 1;
            const upperMatches   = value.match(/[A-Z]/g);        if (upperMatches)   score += upperMatches.length;
            const specialMatches = value.match(/[^A-Za-z0-9]/g); if (specialMatches) score += specialMatches.length;
            score = Math.min(score, 10);

            let strength = 'Sehr schwach', color = 'danger';
            if (score === 0) { strength = 'Sehr schwach'; color = 'danger'; }
            else if (score <= 3) { strength = 'Schwach'; color = 'warning'; }
            else if (score <= 6) { strength = 'Mittel'; color = 'info'; }
            else if (score <= 8) { strength = 'Stark'; color = 'primary'; }
            else { strength = 'Sicher'; color = 'success'; }

            bar.className = `progress-bar bg-${color}`;
            bar.style.width = ((score / 10) * 100) + '%';
            text.textContent = strength;
        };

        D.addEventListener('activate-cart-tab', () => {
            const el = D.getElementById('cart-tab');
            if (!el) return;
            if (W.bootstrap?.Tab) new W.bootstrap.Tab(el).show(); else el.click();
        }, { passive: true });

        // -----------------------------
        // Livewire Navigation Hooks + Enhancements
        // -----------------------------
        D.addEventListener('livewire:navigating', closeAllMenus, { passive: true });

        const runEnhancements = (root = D) => {
            refreshMenuCache();
            initKT();
            initLazyVideos(root);
            $qa('[data-kt-menu-trigger]', root).forEach(anchorTriggerParent);
            initTooltips(root);
            bindDrawers();
            initDataTables(root);
            initFancybox(root); // Fancybox hier integriert
        };

        D.addEventListener('livewire:navigated', () => {
            (W.requestIdleCallback || W.requestAnimationFrame)(() => runEnhancements(D));
        }, { passive: true });

        // -----------------------------
        // Erstinitialisierung
        // -----------------------------
        const firstRun = () => {
            refreshMenuCache();
            runEnhancements(D);
        };

        if (D.readyState === 'loading') {
            D.addEventListener('DOMContentLoaded', firstRun, { once: true, passive: true });
        } else {
            firstRun();
        }

        // Öffentliche Reinit-Funktionen
        W.reinitTooltips = initTooltips;
        W.reinitDataTables = initDataTables;
    })();
</script>
<script src="/livewire/livewire.min.js?id=df3a17f2"   data-csrf="Oi1ZpO8Sw0HemSm6CtUdyPGNdUE2UTMQ9MVFsoa3" data-update-uri="/livewire/update" data-navigate-once="true"></script>
</body>
</html>
