{
  "version": 3,
  "sources": ["/cdn/shop/t/48/assets/isodash-loader.js?dashV=2026081816"],
  "sourcesContent": ["/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   ISODASH LOADER  (v10.6.57-dev)\n   \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n   Die GemPages-Seite enth\u00E4lt nur noch einen 10-Zeilen-Stub, der\n   diese Datei l\u00E4dt. Sie \u00FCbernimmt:\n     1) HTML-Markup ins #isodash-mount injizieren\n     2) Google-Fonts laden\n     3) Asset-Base ermitteln (Theme-CDN-Pfad)\n     4) Alle CSS-Files (?v=ISODASH_VERSION) laden\n     5) isodash-shell.js laden, dann Shell initialisieren\n     6) Cart-/A2C-Logik + Topbar-Updates verkabeln\n     7) Side-Module bei Bedarf nachladen (share, contact, print, mini-cart)\n\n   Bei Code-\u00C4nderungen \u2192 einfach diese Datei (+ ggf. CSS/Modul-JS)\n   in Shopify-Assets neu hochladen, ISODASH_VERSION bumpen.\n   Die GemPages-Seite muss nie wieder angefasst werden.\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 */\n(function () {\n  'use strict';\n\n  /* \u2500\u2500 1) Zentrale Konstanten (Single Source of Truth) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n     Alle Magic Strings/Numbers an einer Stelle. Module greifen via\n     window.IsoDash.constants.X darauf zu. Bei \u00C4nderung einer Variant-ID\n     oder Storage-Key-Migration: NUR HIER \u00E4ndern. */\n  window.IsoDash = window.IsoDash || {};\n  window.IsoDash.constants = {\n    /* Version (Cache-Bust f\u00FCr nachgeladene Assets) */\n    VERSION: '10.6.141-bohrtiefe-2-3',\n\n    /* Shopify Add-to-Cart */\n    A2C_VARIANT_ID: '55049427616117',\n    SHOPIFY_CART_ADD:    '/cart/add.js',\n    SHOPIFY_CART_GET:    '/cart.js',\n    SHOPIFY_CART_CHANGE: '/cart/change.js',\n    SHOPIFY_CART_UPDATE: '/cart/update.js',\n    SHOPIFY_CHECKOUT:    '/checkout',\n\n    /* localStorage / sessionStorage Keys */\n    KEYS: {\n      /* Aktiv */\n      PROJECT:           'isodash_project_v8',\n      ANALYSIS:          'isodash-wiz:analysis',\n      CALC_STATE:        'isodash-wiz:calcState',\n      A2C_DONE:          'isodash_a2c_done',\n      TRANSITION_SHOWN:  'isodash_transition_shown',\n      NAV_UNLOCK_SHOWN:  'isodash_nav_unlock_shown',\n      THEME:             'ih_theme',\n      VISITED:           'ih_visited',\n      FONT_SIZE:         'ih_fs',\n      FLOW_PHASE:        'isodash_flow_phase',\n      ENTRY_MODE:        'isodash_entry_mode',\n      ANALYSIS_SOURCE:   'isodash_analysis_source',\n      MASONRY_TYPE:      'isodash_masonry_type',\n      /* Legacy (nur lesen, f\u00FCr Migration) */\n      LEGACY_ANALYSIS:   'isofinAnalysis',\n      LEGACY_CALC_STATE: 'isofinCalcState',\n      LEGACY_HERO_STATE: 'isofinHeroState',\n      LEGACY_WIZ_STATE:  '__ISOWIZ_state__',\n      LEGACY_WIZ_ANALYSIS: '__ISOWIZ_analysis'\n    },\n\n    /* Externe URLs (CDN) */\n    URL_LOGO:        'https://isofin.de/cdn/shop/files/isofin-logo-rot-500px_5bce6429-95c3-4d98-b3fb-3c03ae1178ed_120x.png?v=1739268281',\n    URL_PRODUCT_IMG: 'https://cdn.shopify.com/s/files/1/0846/5550/5691/files/sanierungspaket-isofin-500px-1x1.jpg?v=1768280218',\n    URL_HENDRIK_AVA: 'https://cdn.shopify.com/s/files/1/0846/5550/5691/files/2026-hendrik-fluegge-blau-avatar-mittel-300px.jpg?v=1790351554',\n\n    /* CSS-Files (Reihenfolge z\u00E4hlt!) */\n    CSS_FILES: [\n      'isodash-design-system.css',\n      'isodash-core.css',\n      'isodash-modules.css',\n      'isodash-analyse.css',\n      'isodash-wirkung.css',\n      'isodash-bohrplan.css',\n      'isodash-wizard.css',\n      'isodash-readability.css'\n    ],\n\n    /* Routing-Konstanten (siehe shell.js NAV/MODULE_ORDER) */\n    ROUTE_DEFAULT: 'analyse',\n    ROUTE_RESULT:  'uebersicht'\n  };\n\n  /* Backward-compat Aliase: bestehende Module nutzen weiterhin window.ISODASH_VERSION */\n  window.ISODASH_VERSION = window.IsoDash.constants.VERSION;\n  var C        = window.IsoDash.constants;\n  var VERSION  = C.VERSION;\n  var CSS_FILES      = C.CSS_FILES;\n  var A2C_VARIANT_ID = C.A2C_VARIANT_ID;\n  var A2C_KEY        = C.KEYS.A2C_DONE;\n\n  /* \u2500\u2500 Internal-Namespace f\u00FCr Runtime-State \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n     Konsolidiert vorher freie globale Flags (window._isodashSaveAvailable,\n     window.IsoDashRoute, window.__isodashResolvedBase usw.) unter einem\n     einzigen Namespace. Backward-Compat-Aliase via Object.defineProperty,\n     damit bestehende Module nicht angefasst werden m\u00FCssen.\n\n     Neue Module sollten direkt window.IsoDash._internal.* nutzen. */\n  window.IsoDash._internal = window.IsoDash._internal || {\n    saveAvailable:      false,    /* war: window._isodashSaveAvailable */\n    wizardMode:         null,     /* war: window._isodashWizardMode (nicht mehr verwendet) */\n    currentRoute:       null,     /* war: window.IsoDashRoute */\n    resolvedBase:       null,     /* war: window.__isodashResolvedBase */\n    resolveBasePromise: null,     /* war: window.__isodashResolveAssetBasePromise */\n    shellLoaded:        false,    /* war: window.__isodashShellLoaded */\n    cartCache:          null      /* Letzter Shopify-Cart-State (f\u00FCr Topbar-Anzeige) */\n  };\n  var INT = window.IsoDash._internal;\n\n  /* Backward-Compat-Aliase (Read+Write transparent durchgereicht) */\n  function _proxyGlobal(globalName, internalKey) {\n    try {\n      Object.defineProperty(window, globalName, {\n        configurable: true,\n        get: function () { return INT[internalKey]; },\n        set: function (v) { INT[internalKey] = v; }\n      });\n    } catch (_) {\n      /* Fallback: direkt auf window setzen, wenn defineProperty schon existiert */\n      window[globalName] = INT[internalKey];\n    }\n  }\n  _proxyGlobal('_isodashSaveAvailable',           'saveAvailable');\n  _proxyGlobal('_isodashWizardMode',              'wizardMode');\n  _proxyGlobal('IsoDashRoute',                    'currentRoute');\n  _proxyGlobal('__isodashResolvedBase',           'resolvedBase');\n  _proxyGlobal('__isodashResolveAssetBasePromise','resolveBasePromise');\n  _proxyGlobal('__isodashShellLoaded',            'shellLoaded');\n\n  /* \u2500\u2500 Storage-Layer (IsoDash.Store) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n     Zentraler Wrapper \u00FCber localStorage. Gibt dem Code:\n       1. Einheitliches API:  Store.get(K.PROJECT) statt JSON.parse(...)\n       2. Auto-JSON f\u00FCr Objekte\n       3. Try/Catch built-in (kein Crash bei deaktivierten Cookies/Storage)\n       4. Migrations-Hook: liest Legacy-Keys mit, schreibt nur in neue\n       5. Bulk-Operations f\u00FCr Reset (l\u00F6scht alle bekannten Keys)\n     Bestehende Module k\u00F6nnen weiterhin localStorage direkt verwenden \u2014 der\n     Store ist Opt-in f\u00FCr neuen Code und f\u00FCr die Reset-Logik. */\n  window.IsoDash.Store = window.IsoDash.Store || (function () {\n    var LS = (typeof localStorage !== 'undefined') ? localStorage : null;\n    var SS = (typeof sessionStorage !== 'undefined') ? sessionStorage : null;\n\n    function _safeRead(store, key) {\n      if (!store) return null;\n      try { return store.getItem(key); } catch (_) { return null; }\n    }\n    function _safeWrite(store, key, value) {\n      if (!store) return false;\n      try { store.setItem(key, value); return true; } catch (_) { return false; }\n    }\n    function _safeRemove(store, key) {\n      if (!store) return;\n      try { store.removeItem(key); } catch (_) {}\n    }\n\n    return {\n      /* Lese-Migration: erst neuen Key probieren, dann Legacy-Keys (read-only) */\n      get: function (key, opts) {\n        opts = opts || {};\n        var raw = _safeRead(LS, key);\n        /* Legacy-Fallback (z.B. ANALYSIS \u2192 liest auch LEGACY_ANALYSIS) */\n        if (!raw && opts.legacy && opts.legacy.length) {\n          for (var i = 0; i < opts.legacy.length; i++) {\n            raw = _safeRead(LS, opts.legacy[i]);\n            if (raw) break;\n          }\n        }\n        if (raw == null) return opts.fallback != null ? opts.fallback : null;\n        if (opts.json) {\n          try { return JSON.parse(raw); } catch (_) { return opts.fallback != null ? opts.fallback : null; }\n        }\n        return raw;\n      },\n\n      set: function (key, value) {\n        if (value == null) return this.remove(key);\n        var raw = (typeof value === 'object') ? JSON.stringify(value) : String(value);\n        return _safeWrite(LS, key, raw);\n      },\n\n      remove: function (key) {\n        _safeRemove(LS, key);\n        _safeRemove(SS, key);\n      },\n\n      /* Reset: alle bekannten Keys l\u00F6schen (LS + SS), inkl. Legacy-Migrationen */\n      clearAll: function () {\n        var allKeys = [];\n        var KEYS = C.KEYS;\n        for (var k in KEYS) if (Object.prototype.hasOwnProperty.call(KEYS, k)) allKeys.push(KEYS[k]);\n        for (var i = 0; i < allKeys.length; i++) {\n          _safeRemove(LS, allKeys[i]);\n          _safeRemove(SS, allKeys[i]);\n        }\n      },\n\n      /* Praktischer Shortcut: hat irgendein Analysis-Key Daten? */\n      hasAnalysis: function () {\n        var keys = [C.KEYS.ANALYSIS, C.KEYS.LEGACY_ANALYSIS, C.KEYS.LEGACY_WIZ_ANALYSIS];\n        for (var i = 0; i < keys.length; i++) {\n          if (_safeRead(LS, keys[i])) return true;\n        }\n        return false;\n      },\n\n      /* Liefert Roh-Storage f\u00FCr edge-cases (debugging, manual access) */\n      _localStorage: LS,\n      _sessionStorage: SS\n    };\n  }());\n\n  /* \u2500\u2500 2) HTML-Markup f\u00FCr #isodash \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n  var HTML_MARKUP = [\n    '<div id=\"isodash-loader\">' +\n      '<div class=\"ld-brand\">' +\n        '<img src=\"' + C.URL_LOGO + '\" alt=\"ISOFIN&reg;\" onerror=\"this.style.display=\\'none\\';var f=this.nextElementSibling;if(f)f.style.display=\\'inline\\'\">' +\n        '<span class=\"ld-brand-fallback\">ISOFIN&reg;</span>' +\n      '</div>' +\n      '<div class=\"ld-spinner\"></div>' +\n      '<div class=\"ld-text\">Ihr Sanierungsplan wird geladen</div>' +\n      '<div class=\"ld-sub\">Einen Moment bitte &hellip;</div>' +\n    '</div>',\n    '<div id=\"isodash\" data-theme=\"__INITIAL_THEME__\" lang=\"de\" style=\"visibility:hidden !important\">',\n      /* TOPBAR */\n      '<div class=\"tb\">',\n        '<div class=\"tb-l\">',\n          '<button class=\"tb-burger\" onclick=\"ID.menu()\">\u2630</button>',\n          '<a href=\"https://www.isofin.de\" target=\"_top\" aria-label=\"Zur Isofin Hauptseite\" style=\"display:inline-flex !important;align-items:center !important;text-decoration:none !important;flex-shrink:0 !important;cursor:pointer !important\">',\n            '<img src=\"' + C.URL_LOGO + '\" alt=\"Isofin\u00AE\" style=\"height:26px !important;width:auto !important;flex-shrink:0 !important;object-fit:contain !important\">',\n          '</a>',\n          '<span class=\"tb-label\">Sanierungsplan</span>',\n          '<div class=\"tb-proj\" id=\"tb-proj\" role=\"button\" tabindex=\"0\" aria-label=\"Projekt bearbeiten \u2014 zur Analyse\" title=\"Projekt bearbeiten\" onclick=\"ID.go(\\'analyse\\')\" onkeydown=\"if(event.key===\\'Enter\\'||event.key===\\' \\'){event.preventDefault();ID.go(\\'analyse\\');}\" style=\"display:none !important;cursor:pointer !important\">',\n            '<span style=\"color:var(--ds-text-muted) !important\">Projekt:</span>',\n            '<span id=\"tb-proj-sum\" style=\"font-weight:500 !important\">\u2014</span>',\n            '<span class=\"tb-dot\"></span>',\n          '</div>',\n        '</div>',\n        '<div class=\"tb-fs tb-fs-mid\" id=\"tb-fs\" title=\"Schriftgr\u00F6\u00DFe anpassen\" aria-label=\"Schriftgr\u00F6\u00DFe anpassen\">',\n          '<button class=\"tb-fs-btn\" id=\"tb-fs-minus\" onclick=\"ID.fontSize(-1)\" title=\"Schrift kleiner\" aria-label=\"Schrift kleiner\">A-</button>',\n          '<div class=\"tb-fs-sep\"></div>',\n          '<span class=\"tb-fs-lbl\" id=\"tb-fs-lbl\">100%</span>',\n          '<div class=\"tb-fs-sep\"></div>',\n          '<button class=\"tb-fs-btn\" id=\"tb-fs-plus\" onclick=\"ID.fontSize(1)\" title=\"Schrift gr\u00F6\u00DFer\" aria-label=\"Schrift gr\u00F6\u00DFer\">A+</button>',\n          '<div class=\"tb-fs-sep\"></div>',\n          '<button class=\"tb-fs-btn\" id=\"tb-theme-btn\" onclick=\"ID.toggleTheme()\" title=\"Theme umschalten\" aria-label=\"Theme umschalten\" style=\"font-size:15px !important\">\u2600\uFE0F</button>',\n        '</div>',\n        '<div class=\"tb-r\">',\n          '<button class=\"tb-hendrik\" id=\"tb-hendrik\" type=\"button\" aria-label=\"Hendrik kontaktieren\" title=\"Hendrik kontaktieren\" onclick=\"if(window.IsoDash&&IsoDash.Contact){IsoDash.Contact.openExpert();}\">',\n            '<span class=\"hk-ava-wrap\" style=\"display:block !important;position:relative !important;width:34px !important;height:34px !important\">',\n              '<img class=\"hk-ava\" src=\"' + C.URL_HENDRIK_AVA + '\" alt=\"Hendrik Fl\u00FCgge\" style=\"width:34px !important;height:34px !important;border-radius:50% !important;object-fit:cover !important;border:1.5px solid rgba(45,212,160,.25) !important;display:block !important\">',\n              '<span class=\"hk-dot offline\" id=\"tb-hk-dot\" style=\"position:absolute !important;bottom:-1px !important;right:-1px !important;width:11px !important;height:11px !important;border-radius:50% !important;border:2px solid var(--ds-surface) !important;background:var(--ds-text-muted)\"></span>',\n            '</span>',\n          '</button>',\n          '<button class=\"tb-cart-icon\" id=\"tb-cart-icon\" type=\"button\" aria-label=\"Warenkorb \u00F6ffnen\" title=\"Warenkorb \u00F6ffnen\" onclick=\"if(window.IsoDashMiniCart){IsoDashMiniCart.open();}\">',\n            '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.9\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"9\" cy=\"21\" r=\"1\"/><circle cx=\"20\" cy=\"21\" r=\"1\"/><path d=\"M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6\"/></svg>',\n            '<span class=\"tb-cart-badge\" id=\"tb-cart-badge\" hidden>0</span>',\n          '</button>',\n          '<img class=\"tb-prod-img\" id=\"tb-prod-img\" src=\"' + C.URL_PRODUCT_IMG + '\" alt=\"\" style=\"display:none !important;width:34px !important;height:34px !important;border-radius:6px !important;object-fit:cover !important;border:1px solid var(--ds-border) !important;flex-shrink:0 !important\">',\n          '<div class=\"tb-mprice\" id=\"tb-mprice\" style=\"display:none !important;text-align:right !important;line-height:1.1 !important\">',\n            '<span id=\"tb-mprice-name\" style=\"display:block !important;font-size:11px !important;font-weight:600 !important;color:var(--ds-text) !important\">\u2014</span>',\n            '<span id=\"tb-mprice-val\" style=\"display:block !important;font-size:12px !important;font-weight:700 !important;color:var(--ds-green) !important;font-family:\\'DM Sans\\',sans-serif !important\">\u2014</span>',\n          '</div>',\n          '<div class=\"tb-sys\" id=\"tb-sys-wrap\" style=\"display:none !important\">',\n            '<span class=\"tb-sys-b\"><span id=\"tb-sys-sum\" style=\"color:var(--ds-text) !important;font-weight:600 !important\">\u2014</span></span>',\n            '<span class=\"tb-sys-b\"><span class=\"tb-price\" id=\"tb-price\" style=\"color:var(--ds-green) !important;font-weight:700 !important\">\u2014</span></span>',\n          '</div>',\n          '<div class=\"tb-fs-mob\" id=\"tb-fs-mob\" style=\"align-items:center !important;gap:0 !important;border-radius:7px !important;border:1px solid var(--ds-border) !important;overflow:hidden !important;flex-shrink:0 !important\">',\n            '<button onclick=\"ID.fontSize(-1)\" style=\"padding:5px 8px !important;border:none !important;background:transparent !important;color:var(--ds-text-dim) !important;font-size:12px !important;cursor:pointer !important;font-family:inherit !important;font-weight:600 !important;line-height:1 !important\">A-</button>',\n            '<span style=\"padding:4px 6px !important;font-size:10px !important;color:var(--ds-text-muted) !important;border-left:1px solid var(--ds-border) !important;border-right:1px solid var(--ds-border) !important;font-family:JetBrains Mono,monospace !important\" id=\"tb-fs-lbl-mob\">100%</span>',\n            '<button onclick=\"ID.fontSize(1)\" style=\"padding:5px 8px !important;border:none !important;background:transparent !important;color:var(--ds-text-dim) !important;font-size:12px !important;cursor:pointer !important;font-family:inherit !important;font-weight:600 !important;line-height:1 !important\">A+</button>',\n          '</div>',\n          '<button class=\"cta cta-s cta-desk\" id=\"tb-cta-desk\" onclick=\"ID.cart(\\'isodash-checkout-header\\')\" style=\"display:none !important\">Zum Checkout <span class=\"ihub-entry-cta-arrow cta-arrow\">\u2192</span></button>',\n        '</div>',\n      '</div>',\n      /* MOBILE MENU */\n      '<div class=\"mm\" id=\"mm\">',\n        '<div class=\"mm-p\" id=\"mm-nav\"></div>',\n        '<div class=\"mm-bg\" onclick=\"ID.menu(false)\"></div>',\n      '</div>',\n      /* BODY */\n      '<div class=\"body\">',\n        '<div class=\"sb\" id=\"sb\">',\n          '<button class=\"sb-toggle\" id=\"sb-toggle\" onclick=\"ID.collapse()\" aria-label=\"Men\u00FC ein- oder ausklappen\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\"><line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\"/><line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\"/><line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\"/></svg> Module</button>',\n          '<div class=\"sb-nav\" id=\"sb-nav\"></div>',\n          /* SHARE / SPEICHERN */\n          '<div class=\"sh\" id=\"sh-panel\">',\n            '<div style=\"display:flex !important;gap:6px !important\">',\n              '<button class=\"sh-btn\" id=\"sh-btn\" style=\"flex:3 !important\">\uD83D\uDCBE Speichern</button>',\n              '<button id=\"sh-reset\" class=\"sh-reset-btn\" title=\"Neustart Sanierungsplan \u2014 alle Eingaben l\u00F6schen und von vorne beginnen\" style=\"flex:1 !important;background:var(--ds-surface-el) !important;border:1px solid var(--ds-border) !important;border-radius:9px !important;color:var(--ds-text-muted) !important;font-size:16px !important;cursor:pointer !important;display:flex !important;align-items:center !important;justify-content:center !important;transition:all .15s !important;font-family:inherit !important;padding:0 !important;min-width:38px !important;position:relative !important\">\u21BB</button>',\n            '</div>',\n            '<div class=\"sh-drop\" id=\"sh-drop\" style=\"display:none\">',\n              '<div class=\"sh-title\">Berechnung speichern</div>',\n              '<div class=\"sh-sub\">Senden Sie sich den Link zu Ihrer Berechnung, um sp\u00E4ter ohne erneute Eingabe weiterzumachen.</div>',\n              '<button class=\"sh-opt\" id=\"sh-wa\">\uD83D\uDCAC Per WhatsApp</button>',\n              '<button class=\"sh-opt\" id=\"sh-email\">\uD83D\uDCE7 Per E-Mail</button>',\n              '<button class=\"sh-opt\" id=\"sh-copy\">\uD83D\uDD17 Link kopieren</button>',\n            '</div>',\n          '</div>',\n          '<div class=\"hk\" id=\"hk-panel\">',\n            '<div class=\"hk-card\">',\n              '<div class=\"hk-row\">',\n                '<div class=\"hk-ava-wrap\">',\n                  '<img class=\"hk-ava\" src=\"' + C.URL_HENDRIK_AVA + '\" alt=\"Hendrik Fl\u00FCgge\">',\n                  '<span class=\"hk-dot\" id=\"hk-dot\"></span>',\n                '</div>',\n                '<div class=\"hk-info\"><span class=\"hk-name\">Hendrik Fl\u00FCgge</span><span class=\"hk-sub\">Experte f\u00FCr Bautenschutz</span></div>',\n              '</div>',\n              '<button class=\"hk-cta\" data-contact=\"expert\">Kontaktieren</button>',\n            '</div>',\n          '</div>',\n          '<div class=\"sb-drag\" id=\"sb-drag\"><div class=\"sb-drag-bar\"></div></div>',\n        '</div>',\n        '<div class=\"ct\" id=\"ct\">',\n          '<div id=\"iso-breadcrumb\" class=\"is-hidden\">',\n            '<span class=\"iso-bc-pos\" id=\"iso-bc-pos\">\u2014</span>',\n            '<span class=\"iso-bc-module\" id=\"iso-bc-module\">\u2014</span>',\n            '<span class=\"iso-bc-sep\">\u203A</span>',\n            '<span class=\"iso-bc-section\" id=\"iso-bc-section\">\u2014</span>',\n          '</div>',\n          '<div id=\"pg\"></div>',\n          '<div id=\"hdr\"></div>',\n          '<div id=\"mod\"></div>',\n        '</div>',\n      '</div>',\n      /* MOBILE BOTTOM NAV */\n      '<div class=\"bn\" id=\"bn\"></div>',\n    '</div>'\n  ].join('');\n\n  /* \u2500\u2500 3a) Defensive Viewport-Meta (falls GemPages-Theme keinen liefert) \u2500\u2500\n     Ohne <meta name=\"viewport\"> rendern Mobile-Browser im Default-Desktop-\n     Mode (980px) \u2192 Mobile-Layout greift nicht. Belt-and-Suspenders zum\n     Stub: hier sicherstellen, dass das Tag existiert. */\n  function ensureViewportMeta() {\n    if (document.querySelector('meta[name=\"viewport\"]')) return;\n    var head = document.head || document.documentElement;\n    var m = document.createElement('meta');\n    m.name = 'viewport';\n    m.content = 'width=device-width, initial-scale=1.0';\n    head.insertBefore(m, head.firstChild);\n  }\n\n  /* \u2500\u2500 3a-bis) Loader-Styles defensive injizieren \u2500\u2500\n     Falls der GemPages-Stub das Inline-CSS f\u00FCr #isodash-loader nicht hat\n     (z.B. \u00E4ltere Version), holen wir das hier nach. So sieht der Loading-\n     Screen IMMER sch\u00F6n aus, egal welche Stub-Variante deployed ist. */\n  function ensureLoaderStyles() {\n    if (document.getElementById('isodash-loader-style')) return;\n    var st = document.createElement('style');\n    st.id = 'isodash-loader-style';\n    st.textContent = [\n      '#isodash-loader{position:fixed;inset:0;z-index:999999;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;background:#fff;color:#1a1a1a;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,sans-serif;transition:opacity .4s ease}',\n      '#isodash-loader.fade-out{opacity:0;pointer-events:none}',\n      '#isodash-loader .ld-spinner{position:relative;width:64px;height:64px}',\n      '#isodash-loader .ld-spinner::before,#isodash-loader .ld-spinner::after{content:\"\";position:absolute;inset:0;border-radius:50%;border:4px solid transparent}',\n      '#isodash-loader .ld-spinner::before{border-top-color:#D6001C;border-right-color:#D6001C;animation:isod-spin 1s cubic-bezier(.5,.15,.5,.85) infinite}',\n      '#isodash-loader .ld-spinner::after{border:4px solid rgba(214,0,28,.10)}',\n      '@keyframes isod-spin{to{transform:rotate(360deg)}}',\n      '#isodash-loader .ld-brand{height:32px;display:flex;align-items:center;justify-content:center;margin-bottom:-12px}',\n      '#isodash-loader .ld-brand img{height:28px;width:auto;max-width:200px;display:block;object-fit:contain}',\n      '#isodash-loader .ld-brand-fallback{display:none;font-size:13px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:#D6001C}',\n      '#isodash-loader .ld-text{font-size:15px;font-weight:500;color:#444;letter-spacing:-.005em;text-align:center;animation:isod-pulse 1.6s ease-in-out infinite}',\n      '#isodash-loader .ld-sub{font-size:12px;color:#888;font-weight:400;text-align:center;margin-top:-12px;letter-spacing:.01em}',\n      '@keyframes isod-pulse{0%,100%{opacity:.55}50%{opacity:1}}',\n      /* System-Dark + User-Override (data-isodash-theme auf <html>) */\n      '@media (prefers-color-scheme:dark){#isodash-loader{background:#0A0A0B;color:#F0EDE8}#isodash-loader .ld-text{color:#bbb}#isodash-loader .ld-sub{color:#777}}',\n      'html[data-isodash-theme=\"light\"] #isodash-loader{background:#fff!important;color:#1a1a1a!important}',\n      'html[data-isodash-theme=\"light\"] #isodash-loader .ld-text{color:#444!important}',\n      'html[data-isodash-theme=\"light\"] #isodash-loader .ld-sub{color:#888!important}',\n      'html[data-isodash-theme=\"dark\"] #isodash-loader{background:#0A0A0B!important;color:#F0EDE8!important}',\n      'html[data-isodash-theme=\"dark\"] #isodash-loader .ld-text{color:#bbb!important}',\n      'html[data-isodash-theme=\"dark\"] #isodash-loader .ld-sub{color:#777!important}'\n    ].join('');\n    (document.head || document.documentElement).appendChild(st);\n  }\n\n  /* \u2500\u2500 3b) Google Fonts injizieren \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n  function injectFonts() {\n    if (document.querySelector('link[data-isodash-font]')) return;\n    var head = document.head || document.documentElement;\n    var pre1 = document.createElement('link');\n    pre1.rel = 'preconnect';\n    pre1.href = 'https://fonts.googleapis.com';\n    pre1.setAttribute('data-isodash-font', '1');\n    head.appendChild(pre1);\n    var pre2 = document.createElement('link');\n    pre2.rel = 'preconnect';\n    pre2.href = 'https://fonts.gstatic.com';\n    pre2.crossOrigin = '';\n    pre2.setAttribute('data-isodash-font', '1');\n    head.appendChild(pre2);\n    var fonts = document.createElement('link');\n    fonts.rel = 'stylesheet';\n    fonts.href = 'https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700&family=JetBrains+Mono:wght@400;500&family=Rubik:wght@400;500;600;700;800&display=swap';\n    fonts.setAttribute('data-isodash-font', '1');\n    head.appendChild(fonts);\n  }\n\n  /* \u2500\u2500 Initial-Theme ermitteln (User-Override > System-Pref > light) \u2500\u2500 */\n  function detectInitialTheme() {\n    if (window.__isodashInitialTheme === 'dark' || window.__isodashInitialTheme === 'light') {\n      return window.__isodashInitialTheme;\n    }\n    try {\n      var s = localStorage.getItem('ih_theme');\n      if (s === 'dark' || s === 'light') return s;\n    } catch (_) {}\n    try {\n      if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) return 'dark';\n    } catch (_) {}\n    return 'light';\n  }\n\n  /* \u2500\u2500 4) HTML-Markup ins DOM einf\u00FCgen \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n  function injectMarkup() {\n    /* Mount-Container suchen (Stub legt #isodash-mount an); Fallback: body. */\n    var mount = document.getElementById('isodash-mount') || document.body;\n    if (!mount) return false;\n    /* Wenn #isodash bereits existiert (Reload, Doppelt-Inject), nicht erneut injizieren */\n    if (document.getElementById('isodash')) return true;\n    /* Initial-Theme ins Markup einsetzen + auf html-Element f\u00FCr Loader-CSS */\n    var theme = detectInitialTheme();\n    try { document.documentElement.setAttribute('data-isodash-theme', theme); } catch (_) {}\n    var wrap = document.createElement('div');\n    wrap.innerHTML = HTML_MARKUP.replace('__INITIAL_THEME__', theme);\n    while (wrap.firstChild) mount.appendChild(wrap.firstChild);\n    return true;\n  }\n\n  /* \u2500\u2500 5) Asset-Base-Detection (Shopify-Theme-CDN bevorzugt) \u2500\u2500\u2500 */\n  function normalizeBase(base) {\n    if (!base) return '';\n    if (base === './' || base === '/assets/') return base;\n    return String(base).replace(/\\/+$/, '') + '/';\n  }\n  function isLocalRuntime() {\n    try {\n      var h = location.hostname || '';\n      return location.protocol === 'file:' ||\n             h === 'localhost' || h === '127.0.0.1' || h.indexOf('.local') !== -1;\n    } catch (_) { return false; }\n  }\n  function pickThemeBaseFromRaw(raw) {\n    if (!raw) return '';\n    var s = String(raw);\n    var m = s.match(/^(https?:\\/\\/[^/]+\\/cdn\\/shop\\/t\\/\\d+\\/assets\\/)/i);\n    if (m) return normalizeBase(m[1]);\n    m = s.match(/^(https?:\\/\\/[^/]+\\/s\\/files\\/\\d+\\/\\d+\\/t\\/\\d+\\/assets\\/)/i);\n    if (m) return normalizeBase(m[1]);\n    return '';\n  }\n  function collectCandidates() {\n    var out = [], seen = {};\n    function add(v) {\n      v = normalizeBase(v);\n      if (!v || seen[v]) return;\n      seen[v] = 1;\n      out.push(v);\n    }\n    add(window.ISODASH_ASSET_BASE);\n    add(window.ISODASH_ASSETS_BASE);\n    try {\n      var els = document.querySelectorAll('link[href],script[src]');\n      for (var i = 0; i < els.length; i++) {\n        add(pickThemeBaseFromRaw(els[i].href || els[i].src || ''));\n      }\n    } catch (_) {}\n    try {\n      if (window.Shopify && window.Shopify.theme && window.Shopify.theme.id) {\n        add(location.origin + '/cdn/shop/t/' + window.Shopify.theme.id + '/assets/');\n      }\n    } catch (_) {}\n    add('/assets/');\n    if (isLocalRuntime()) add('./');\n    return out;\n  }\n  function looksLikeJsContentType(ct) {\n    if (!ct) return true;\n    ct = String(ct).toLowerCase();\n    return ct.indexOf('javascript') !== -1 || ct.indexOf('ecmascript') !== -1 || ct.indexOf('x-javascript') !== -1;\n  }\n  function probeBase(base) {\n    if (typeof fetch !== 'function') return Promise.resolve(true);\n    var b = normalizeBase(base);\n    if (!b) return Promise.resolve(false);\n    var shellUrl = b + 'isodash-shell.js?v=' + encodeURIComponent(VERSION);\n    return fetch(shellUrl, { method: 'GET', credentials: 'same-origin', cache: 'no-store' })\n      .then(function (r) {\n        if (!r || !r.ok) return false;\n        var ct = (r.headers && typeof r.headers.get === 'function' ? r.headers.get('content-type') : '') || '';\n        ct = String(ct).toLowerCase();\n        if (!ct) return true;\n        if (ct.indexOf('text/html') !== -1) return false;\n        if (ct.indexOf('text/plain') !== -1) return false;\n        return looksLikeJsContentType(ct);\n      })\n      .catch(function () { return false; });\n  }\n  function resolveAssetBase() {\n    if (window.__isodashResolvedBase) return Promise.resolve(window.__isodashResolvedBase);\n    var candidates = collectCandidates();\n    var idx = 0;\n    function next() {\n      if (idx >= candidates.length) {\n        var fallback = isLocalRuntime() ? './' : '/assets/';\n        var finalBase = normalizeBase(fallback);\n        window.__isodashResolvedBase = finalBase;\n        window.ISODASH_ASSET_BASE = finalBase;\n        return Promise.resolve(finalBase);\n      }\n      var candidate = normalizeBase(candidates[idx++]);\n      if (!candidate) return next();\n      return probeBase(candidate).then(function (ok) {\n        if (ok) {\n          window.__isodashResolvedBase = candidate;\n          window.ISODASH_ASSET_BASE = candidate;\n          return candidate;\n        }\n        return next();\n      });\n    }\n    return next();\n  }\n\n  /* \u2500\u2500 6) CSS laden \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n  function ensureCssLoaded(base) {\n    var head = document.head || document.documentElement;\n    var prefix = normalizeBase(base || '');\n    for (var i = 0; i < CSS_FILES.length; i++) {\n      var file = CSS_FILES[i];\n      if (document.querySelector('link[data-isodash-css=\"' + file + '\"]')) continue;\n      var l = document.createElement('link');\n      l.rel = 'stylesheet';\n      l.setAttribute('data-isodash-css', file);\n      l.href = (prefix ? prefix : '') + file + '?v=' + encodeURIComponent(VERSION);\n      head.appendChild(l);\n    }\n  }\n\n  /* \u2500\u2500 7) Shell laden + Bootstrap \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n  function loadShell(base) {\n    if (window.__isodashShellLoaded) return;\n    window.__isodashShellLoaded = true;\n    var safeBase = normalizeBase(base || window.ISODASH_ASSET_BASE || './');\n    window.ISODASH_ASSET_BASE = safeBase;\n    var s = document.createElement('script');\n    s.src = safeBase + 'isodash-shell.js?v=' + encodeURIComponent(VERSION);\n    s.onload = function () { _isodashBootstrap(); };\n    s.onerror = function () { console.error('[IsoDash Loader] Failed to load isodash-shell.js from ' + s.src); };\n    document.head.appendChild(s);\n  }\n\n  /* \u2500\u2500 8) Bootstrap (cart, A2C, share, hendrik, init) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n  function _isodashBootstrap() {\n    var shell = window.IsoDashShell;\n    if (!shell) { console.error('[IsoDash Loader] IsoDashShell not found'); return; }\n\n    var a2cInFlight = null;\n    var a2cTriedThisLoad = false;\n    var checkoutInFlight = false;\n\n    function isA2CDone() { try { return !!localStorage.getItem(A2C_KEY); } catch (e) { return false; } }\n    function setA2CDone() { try { localStorage.setItem(A2C_KEY, '1'); } catch (e) {} }\n    function clearA2CDone() { try { localStorage.removeItem(A2C_KEY); } catch (e) {} }\n\n    function shopifyPath(path) {\n      var root = '/';\n      try {\n        if (window.Shopify && window.Shopify.routes && window.Shopify.routes.root) {\n          root = window.Shopify.routes.root;\n        }\n      } catch (_) {}\n      if (root.charAt(0) !== '/') root = '/';\n      if (root.slice(-1) !== '/') root += '/';\n      return root + String(path || '').replace(/^\\/+/, '');\n    }\n\n    function checkoutUrl() {\n      return shopifyPath('checkout');\n    }\n\n    function cartPermalink(qty) {\n      return shopifyPath('cart/' + encodeURIComponent(A2C_VARIANT_ID) + ':' + encodeURIComponent(qty) + '?checkout');\n    }\n\n    function readCart() {\n      return fetch(shopifyPath('cart.js'), {\n        method: 'GET',\n        credentials: 'same-origin',\n        headers: { 'Accept': 'application/json' }\n      }).then(function (r) {\n        if (!r || !r.ok) throw new Error('cart-read-failed');\n        return r.json();\n      });\n    }\n\n    function cartQtyForVariant(cart) {\n      var total = 0;\n      try {\n        var items = (cart && cart.items) ? cart.items : [];\n        for (var i = 0; i < items.length; i++) {\n          if (String(items[i].variant_id) === String(A2C_VARIANT_ID)) {\n            total += Math.max(0, parseInt(items[i].quantity, 10) || 0);\n          }\n        }\n      } catch (_) {}\n      return total;\n    }\n\n    function setCartVariantQty(qty) {\n      var updates = {};\n      updates[A2C_VARIANT_ID] = qty;\n      return fetch(shopifyPath('cart/update.js'), {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },\n        credentials: 'same-origin',\n        body: JSON.stringify({ updates: updates })\n      }).then(function (r) {\n        if (!r || !r.ok) throw new Error('cart-update-failed');\n        return r.json();\n      }).then(function (cart) {\n        return cartQtyForVariant(cart) === qty;\n      });\n    }\n\n    function autoAddToCart(bottles, opts) {\n      var force = !!(opts && opts.force);\n      if (isA2CDone() && !force) return Promise.resolve(false);\n      if (a2cInFlight) return a2cInFlight;\n      if (a2cTriedThisLoad && !force) return Promise.resolve(false);\n      if (!A2C_VARIANT_ID || A2C_VARIANT_ID === '0') return Promise.resolve(false);\n      if (!bottles || bottles < 1) return Promise.resolve(false);\n      var qty = Math.max(1, Math.round(bottles));\n      a2cTriedThisLoad = true;\n      a2cInFlight = setCartVariantQty(qty).then(function (ok) {\n        if (ok) {\n          setA2CDone();\n          updateCartUI(true);\n          return true;\n        }\n        clearA2CDone();\n        return false;\n      }).catch(function () {\n        clearA2CDone();\n        return false;\n      }).finally(function () { a2cInFlight = null; });\n      return a2cInFlight;\n    }\n\n    function updateCartUI(/* a2cDone */) {\n      var projWrap  = document.querySelector('#tb-proj');\n      var sysWrap   = document.querySelector('#tb-sys-wrap');\n      var mPriceEl  = document.querySelector('#tb-mprice');\n      var ctaDesk   = document.querySelector('#tb-cta-desk');\n      var cartIcon  = document.querySelector('#tb-cart-icon');\n      var cartBadge = document.querySelector('#tb-cart-badge');\n      var p = (shell.moduleStore && typeof shell.moduleStore.get === 'function') ? shell.moduleStore.get() : {};\n      var d = shell.tbDerived(p);\n      if (projWrap) projWrap.style.setProperty('display', d.hasAnalysis ? '' : 'none', 'important');\n      if (!d.hasAnalysis) {\n        if (ctaDesk)   ctaDesk.style.setProperty('display', 'none', 'important');\n        if (sysWrap)   sysWrap.style.setProperty('display', 'none', 'important');\n        if (mPriceEl)  mPriceEl.style.setProperty('display', 'none', 'important');\n        if (cartIcon)  cartIcon.classList.remove('tb-cart-show');\n        return;\n      }\n      var _mobInit    = window.innerWidth < 768;\n      var _routeW     = (window.IsoDashRoute || '').toString();\n      var _onAnalyseW = (_routeW === 'analyse');\n      var _saveAvailW = (window._isodashSaveAvailable === true);\n      /* Cart-Block-Sichtbarkeit:\n         IMMER versteckt auf der Analyse-Route (egal ob Entry, Wizard oder Return-Screen).\n         Sichtbar nur auf allen anderen Routen (uebersicht, kosten, bohrplan ...). */\n      var _wizActiveW = _onAnalyseW;\n\n      /* Sticky-Buy-Widget rechts aktiv? Dann komplette Cart-Anzeige in Topbar\n         ausblenden \u2014 Widget \u00FCbernimmt. Cart-Icon bleibt aber sichtbar. */\n      var _hasBwW = document.getElementById('isodash') && document.getElementById('isodash').classList.contains('isodash-has-bw');\n\n      if (_mobInit) {\n        if (sysWrap)  sysWrap.style.setProperty('display', 'none', 'important');\n        if (mPriceEl) mPriceEl.style.setProperty('display', 'none', 'important');\n        var prodImgM = document.querySelector('#tb-prod-img'); if (prodImgM) prodImgM.style.setProperty('display', 'none', 'important');\n        /* Mobile: Cart-Icon oben rechts ANZEIGEN (User-Wunsch) \u2014 neben Speichern + Font-Tool */\n        if (cartIcon) cartIcon.classList.add('tb-cart-show');\n        if (cartBadge) {\n          var _countM = Math.max(0, Math.round(Number(d.bottles) || 0));\n          if (_countM > 0) { cartBadge.textContent = _countM > 99 ? '99+' : String(_countM); cartBadge.removeAttribute('hidden'); }\n          else { cartBadge.setAttribute('hidden', ''); }\n        }\n      } else if (_wizActiveW || _hasBwW) {\n        if (sysWrap)  sysWrap.style.setProperty('display', 'none', 'important');\n        if (mPriceEl) mPriceEl.style.setProperty('display', 'none', 'important');\n        var prodImgW = document.querySelector('#tb-prod-img'); if (prodImgW) prodImgW.style.setProperty('display', 'none', 'important');\n        if (ctaDesk)  ctaDesk.style.setProperty('display', 'none', 'important');\n        if (cartIcon) cartIcon.classList.add('tb-cart-show');\n      } else {\n        if (sysWrap)  sysWrap.style.removeProperty('display');\n        if (mPriceEl) { mPriceEl.style.removeProperty('display'); mPriceEl.classList.remove('tb-analyse-hint'); }\n        var prodImgD = document.querySelector('#tb-prod-img'); if (prodImgD) prodImgD.style.removeProperty('display');\n        if (cartIcon) cartIcon.classList.add('tb-cart-show');\n        if (cartBadge) {\n          var _count = Math.max(0, Math.round(Number(d.bottles) || 0));\n          if (_count > 0) { cartBadge.textContent = _count > 99 ? '99+' : String(_count); cartBadge.removeAttribute('hidden'); }\n          else { cartBadge.setAttribute('hidden', ''); }\n        }\n      }\n\n      var _fsMob2 = document.querySelector('#tb-fs-mob');\n      if (_fsMob2) {\n        if (_mobInit) _fsMob2.style.setProperty('display', 'inline-flex', 'important');\n        else          _fsMob2.style.setProperty('display', 'none', 'important');\n      }\n\n      if (ctaDesk) {\n        var _curHash = ''; try { _curHash = (location.hash || '').replace(/^#\\/?/, ''); } catch (_) {}\n        var _onAnalyseInit = (_curHash === 'analyse');\n        var _hasCalcInit   = (d.bottles > 0 && d.total > 0 && !_onAnalyseInit);\n        if (_mobInit) {\n          if (_hasCalcInit) {\n            ctaDesk.style.removeProperty('display');\n            ctaDesk.style.setProperty('display', 'inline-flex', 'important');\n            ctaDesk.style.setProperty('align-items', 'center', 'important');\n            ctaDesk.style.setProperty('gap', '6px', 'important');\n            if (_fsMob2) _fsMob2.classList.add('tb-fs-mob-show');\n            /* Mobile: nur Icon, kein Text \u2014 User-Wunsch (Platz f\u00FCr Cart-Icon ganz rechts) */\n            ctaDesk.innerHTML = '\uD83D\uDCBE';\n            ctaDesk.setAttribute('aria-label', 'Berechnung speichern');\n            ctaDesk.setAttribute('title', 'Berechnung speichern');\n            ctaDesk.style.setProperty('background', 'rgba(45,212,160,.12)', 'important');\n            ctaDesk.style.setProperty('color', 'var(--ds-green)', 'important');\n            ctaDesk.style.setProperty('box-shadow', 'none', 'important');\n            ctaDesk.onclick = function () {\n              var ovSave = document.querySelector('#ov-save-btn');\n              if (ovSave) { ovSave.click(); }\n              else if (window.IsoDash && window.IsoDash.Share) { IsoDash.Share.openWhatsApp(); }\n            };\n          } else {\n            ctaDesk.style.setProperty('display', 'none', 'important');\n          }\n        } else if (_wizActiveW || _hasBwW) {\n          /* Buy-Widget rechts ist aktiv \u2192 \"Letzte Angaben\"-CTA im Header weg.\n             Conversion l\u00E4uft komplett \u00FCber die Sticky-Sidebar rechts. */\n          ctaDesk.style.setProperty('display', 'none', 'important');\n        } else {\n          ctaDesk.style.removeProperty('display');\n          ctaDesk.style.setProperty('display', 'inline-flex', 'important');\n          ctaDesk.style.setProperty('align-items', 'center', 'important');\n          ctaDesk.style.setProperty('gap', '6px', 'important');\n          ctaDesk.innerHTML = '<span class=\"cta-long\">Weiter: </span>Letzte Angaben <span class=\"ihub-entry-cta-arrow cta-arrow\">\u2192</span>';\n        }\n      }\n    }\n\n    function cartWithA2C() {\n      try { if (typeof window.logr3Track === 'function') window.logr3Track('kalkulator_checkout_click', { step: true, source: 'dashboard_cta' }); } catch (_) {}\n      if (checkoutInFlight) return;\n      checkoutInFlight = true;\n      var goCheckout = function () { window.location.href = checkoutUrl(); };\n      var goCartPermalink = function (qty) { window.location.href = cartPermalink(qty); };\n      var bottles = 0;\n      try {\n        if (window.IsoDash && window.IsoDash.Calculations && typeof window.IsoDash.Calculations.getFinalAnalysis === 'function') {\n          var a = window.IsoDash.Calculations.getFinalAnalysis();\n          bottles = Math.max(0, Math.round(Number((a && a.calculatedBottles) || 0)));\n        }\n      } catch (_) {}\n      if (bottles > 0 && A2C_VARIANT_ID && A2C_VARIANT_ID !== '0') {\n        var qty = Math.max(1, Math.round(bottles));\n        readCart().then(function (cart) {\n          if (cartQtyForVariant(cart) === qty) {\n            setA2CDone();\n            updateCartUI(true);\n            goCheckout();\n            return;\n          }\n          return autoAddToCart(qty, { force: true }).then(function (ok) {\n            if (ok) goCheckout();\n            else goCartPermalink(qty);\n          });\n        }).catch(function () {\n          return autoAddToCart(qty, { force: true }).then(function (ok) {\n            if (ok) goCheckout();\n            else goCartPermalink(qty);\n          });\n        });\n        return;\n      }\n      readCart().then(function (cart) {\n        if (cart && cart.item_count > 0) goCheckout();\n        else window.location.href = shopifyPath('cart');\n      }).catch(function () {\n        goCheckout();\n      });\n    }\n\n    /* Side-Module: Lazy-Load */\n    var shareLoaded = false;\n    function ensureShareLoaded() {\n      if (shareLoaded) return;\n      if (!window.IsoDash || !window.IsoDash.Calculations) return;\n      shareLoaded = true;\n      var sbase = shell.getAssetBase() || '/assets/';\n      shell.loadScript(sbase + 'isodash-share.js', function () {\n        if (window.IsoDash && window.IsoDash.Share && typeof window.IsoDash.Share.restoreFromURL === 'function') {\n          window.IsoDash.Share.restoreFromURL();\n        }\n      });\n      shell.loadScript(sbase + 'isodash-contact.js');\n      if (window.ISODASH_ENABLE_DEBUG_UNLOCK === true) {\n        shell.loadScript(sbase + 'isodash-debug-unlock.js');\n      }\n    }\n\n    var printLoaded = false;\n    function ensureSideCssLoaded(file) {\n      if (!file) return;\n      if (document.querySelector('link[data-isodash-css=\"' + file + '\"]')) return;\n      var sbase = shell.getAssetBase() || '/assets/';\n      var head = document.head || document.documentElement;\n      var l = document.createElement('link');\n      l.rel = 'stylesheet';\n      l.setAttribute('data-isodash-css', file);\n      l.href = sbase + file + '?v=' + encodeURIComponent(VERSION);\n      head.appendChild(l);\n    }\n\n    function ensurePrintLoaded() {\n      if (printLoaded) return;\n      printLoaded = true;\n      var sbase = shell.getAssetBase() || '/assets/';\n      ensureSideCssLoaded('isodash-print.css');\n      shell.loadScript(sbase + 'isodash-print.js');\n    }\n\n    function runWhenIdle(fn, timeout) {\n      if (typeof fn !== 'function') return;\n      if ('requestIdleCallback' in window) {\n        window.requestIdleCallback(fn, { timeout: timeout || 3000 });\n      } else {\n        window.setTimeout(fn, timeout || 1500);\n      }\n    }\n\n    var miniCartLoaded = false;\n    function ensureMiniCartLoaded() {\n      if (miniCartLoaded) return;\n      miniCartLoaded = true;\n      var sbase = shell.getAssetBase() || '/assets/';\n      shell.loadScript(sbase + 'iso-cart-drawer.js');\n    }\n\n    /* P3: Exit-Intent \u2014 wird parallel zu Share geladen, sobald Berechnung\n       vorhanden ist. Auf Mobile NICHT laden (Trigger nur Desktop). */\n    var exitIntentLoaded = false;\n    function ensureExitIntentLoaded() {\n      if (exitIntentLoaded) return;\n      if (window.innerWidth < 768) return; // Desktop only\n      exitIntentLoaded = true;\n      var sbase = shell.getAssetBase() || '/assets/';\n      shell.loadScript(sbase + 'isodash-exit-intent.js');\n    }\n\n    /* Globaler Buy-Widget \u2014 auf JEDER Viewport laden:\n       - Desktop \u22651100px: full-height Sticky-Sidebar rechts\n       - Mobile <1100px: Bottom-Sheet (Peek-Bar default, hochziehbar) */\n    var buyWidgetLoaded = false;\n    function ensureBuyWidgetLoaded() {\n      if (buyWidgetLoaded) return;\n      buyWidgetLoaded = true;\n      var sbase = shell.getAssetBase() || '/assets/';\n      shell.loadScript(sbase + 'isodash-buywidget.js');\n    }\n\n    function setupSharePanel() {\n      var btn   = document.querySelector('#sh-btn');\n      var drop  = document.querySelector('#sh-drop');\n      var panel = document.querySelector('#sh-panel');\n      if (!btn || !drop) return;\n      btn.addEventListener('click', function () {\n        var open = drop.style.display !== 'none';\n        drop.style.display = open ? 'none' : 'block';\n        btn.textContent = open ? '\uD83D\uDCBE Speichern' : '\u2715 Schlie\u00DFen';\n      });\n      var resetBtn = document.querySelector('#sh-reset');\n      if (resetBtn) resetBtn.addEventListener('click', function () {\n        if (window.ID && typeof ID.resetAll === 'function') { ID.resetAll(); }\n      });\n      var waBtn = document.querySelector('#sh-wa');\n      var emBtn = document.querySelector('#sh-email');\n      var cpBtn = document.querySelector('#sh-copy');\n      if (waBtn) waBtn.addEventListener('click', function () {\n        if (window.IsoDash && window.IsoDash.Share) IsoDash.Share.openWhatsApp();\n      });\n      if (emBtn) emBtn.addEventListener('click', function () {\n        if (window.IsoDash && window.IsoDash.Share) IsoDash.Share.openEmail();\n      });\n      if (cpBtn) cpBtn.addEventListener('click', function () {\n        if (window.IsoDash && window.IsoDash.Share) {\n          IsoDash.Share.copyLink(function (ok) {\n            if (ok) {\n              cpBtn.textContent = '\u2713 Link kopiert!';\n              cpBtn.classList.add('copied');\n              setTimeout(function () { cpBtn.textContent = '\uD83D\uDD17 Link kopieren'; cpBtn.classList.remove('copied'); }, 2500);\n            }\n          });\n        }\n      });\n      function hasCalc() {\n        try {\n          var c = window.IsoDash && window.IsoDash.Calculations;\n          if (c && typeof c.getFinalAnalysis === 'function') {\n            var a = c.getFinalAnalysis();\n            if (a && a.calculatedBottles > 0) return true;\n          }\n          var s = localStorage.getItem('isofinCalcState') || localStorage.getItem('isofinAnalysis');\n          if (s) { var pp = JSON.parse(s); if (pp && (pp.calculatedBottles > 0 || pp.bottles > 0)) return true; }\n        } catch (_) {}\n        return false;\n      }\n      function syncShareVis() {\n        /* Save-Panel IMMER zeigen (auch wenn Sidebar collapsed) \u2014 User-Wunsch:\n           im collapsed Modus werden Buttons via CSS zu Icon-only.\n           Save-Button ist nur disabled, wenn keine Berechnung vorhanden. */\n        if (panel) panel.style.display = hasCalc() ? 'block' : 'none';\n        if (btn) { btn.disabled = !hasCalc(); btn.style.opacity = hasCalc() ? '1' : '0.35'; btn.style.pointerEvents = hasCalc() ? 'auto' : 'none'; }\n      }\n      syncShareVis();\n      shell.moduleStore.subscribe(function () { syncShareVis(); });\n      window.addEventListener('isodash-wiz:analysis-updated', syncShareVis);\n      var _shareCheck = setInterval(function () {\n        if (hasCalc()) { syncShareVis(); clearInterval(_shareCheck); }\n      }, 2000);\n    }\n\n    function setupHendrikAvailability() {\n      function hkAvail() {\n        var dots = document.querySelectorAll('.hk-dot');\n        if (!dots.length) return;\n        try {\n          var now = new Date();\n          var de  = new Date(now.toLocaleString('en-US', { timeZone: 'Europe/Berlin' }));\n          var d   = de.getDay(), h = de.getHours();\n          var open = (d >= 1 && d <= 5 && h >= 9 && h < 20) || (d === 6 && h >= 10 && h < 15);\n          var cls  = 'hk-dot ' + (open ? 'online' : 'offline');\n          for (var i = 0; i < dots.length; i++) dots[i].className = cls;\n        } catch (_) {\n          for (var j = 0; j < dots.length; j++) dots[j].className = 'hk-dot offline';\n        }\n      }\n      hkAvail();\n      setInterval(hkAvail, 60000);\n    }\n\n    /* Shell initialisieren */\n    shell.initShell({\n      version: VERSION,\n      ctaLabel: 'Zum Checkout',\n      ctaSubline: 'Sie zahlen jetzt noch nichts. Adresse und Zahlungsart im n\u00E4chsten Schritt.',\n      bottomNavCheckoutLabel: 'Weiter',\n      moduleGating: true,\n      variantId: A2C_VARIANT_ID,\n      onCartClick: function () { cartWithA2C(); },\n      onRenderTopbar: function (d) {\n        ensureShareLoaded();\n        var a2cDone = isA2CDone();\n        if (d.hasAnalysis && !a2cDone) autoAddToCart(d.bottles);\n        updateCartUI(a2cDone || (d.hasAnalysis && isA2CDone()));\n      },\n      extraInit: function () {\n        ensureMiniCartLoaded();\n        ensureBuyWidgetLoaded();\n        runWhenIdle(ensureExitIntentLoaded, 2500);\n        setupSharePanel();\n        setupHendrikAvailability();\n      },\n      onModuleLoaded: function (routeId) {\n        if (routeId === 'bohrplan') ensurePrintLoaded();\n      }\n    });\n\n    window.ID.cart = cartWithA2C;\n\n    /* Sanfter \u00DCbergang: Loader fade-out, Dashboard fade-in */\n    var _loader = document.getElementById('isodash-loader');\n    var _dash   = document.getElementById('isodash');\n    setTimeout(function () {\n      if (_dash) { _dash.classList.add('ready'); _dash.style.removeProperty('visibility'); }\n      if (_loader) {\n        _loader.classList.add('fade-out');\n        setTimeout(function () { try { _loader.style.display = 'none'; } catch (_) {} }, 400);\n      }\n    }, 250);\n  }\n\n  /* \u2500\u2500 9) Start-Sequenz \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n  function start() {\n    ensureViewportMeta();\n    ensureLoaderStyles();\n    injectFonts();\n    if (!injectMarkup()) {\n      console.warn('[IsoDash Loader] Kein Mount-Container gefunden (#isodash-mount oder body)');\n      return;\n    }\n    var p = resolveAssetBase();\n    p.then(function (base) {\n      ensureCssLoaded(base);\n      loadShell(base);\n    }).catch(function () {\n      var fb = window.ISODASH_ASSET_BASE || './';\n      ensureCssLoaded(fb);\n      loadShell(fb);\n    });\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', start);\n  } else {\n    start();\n  }\n})();\n"],
  "mappings": "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",
  "names": ["qty"]
}
