{
  "version": 3,
  "sources": ["/cdn/shop/t/9/assets/business-pricing.js?cb=20260501-fysio-i18n-cleanup-r6"],
  "sourcesContent": ["(function () {\n  var legacyTeamsAliasTarget = 'https://www.nordbelt.nl/pages/nordbelt-voor-sportverenigingen-teams-gyms';\n\n  function redirectLegacyTeamsAliases() {\n    try {\n      var location = window.location;\n      if (!location) return;\n      var hostname = (location.hostname || '').toLowerCase();\n      if (hostname !== 'www.nordbelt.nl' && hostname !== 'nordbelt.nl') return;\n\n      var path = (location.pathname || '').replace(/\\/+$/, '');\n      if (path !== '/pages/teams-clubs' && path !== '/pages/sportverenigingen-teams-gyms') return;\n\n      var target = legacyTeamsAliasTarget + (location.search || '') + (location.hash || '');\n      if (location.href !== target) location.replace(target);\n    } catch (error) {\n      // Keep business-page scripts non-blocking when a browser extension mutates location.\n    }\n  }\n\n  redirectLegacyTeamsAliases();\n\n  var quotePrefillConfig = {\n    teams: {\n      start: { label: 'Start', volume: '4 Nordbelts' },\n      team: { label: 'Team', volume: '8 Nordbelts' },\n      performance: { label: 'Performance', volume: '12 Nordbelts' },\n      club: { label: 'Club', volume: '20 Nordbelts' },\n      academy: { label: 'Academy', volume: '32+ Nordbelts' },\n      '20plus': { label: 'Club 20+', volume: '20+ Nordbelts' }\n    },\n    practice: {\n      start: { label: '1 kamer start', volume: '4 Nordbelts' },\n      praktijk: { label: 'Team start', volume: '8 Nordbelts' },\n      partner: { label: 'Praktijk + thuisvoorraad', volume: '12 Nordbelts' },\n      'multi-locatie': { label: 'Multi-locatie / grotere voorraad', volume: '20+ Nordbelts' },\n      netwerk: { label: 'Grotere uitrol', volume: '32+ Nordbelts' },\n      '20plus': { label: '20+ Nordbelts', volume: '20+ Nordbelts' }\n    }\n  };\n\n  function getRoot() {\n    return document.querySelector('[data-business-pricing-root]');\n  }\n\n  function getDefaultAudience() {\n    var root = getRoot();\n    if (!root) return 'teams';\n    return root.getAttribute('data-default-audience') || 'teams';\n  }\n\n  function getPageContext() {\n    var root = getRoot();\n    if (!root) return '';\n    return root.getAttribute('data-page-context') || '';\n  }\n\n  function pushBusinessEvent(eventName, detail) {\n    if (!window.NordbeltTheme || typeof window.NordbeltTheme.pushEvent !== 'function') return;\n    window.NordbeltTheme.pushEvent(\n      Object.assign(\n        {\n          event: eventName,\n          business_page_context: getPageContext(),\n          business_default_audience: getDefaultAudience()\n        },\n        detail || {}\n      )\n    );\n  }\n\n  function runBusinessIdleTask(callback) {\n    if (typeof callback !== 'function') return;\n    if ('requestIdleCallback' in window) {\n      window.requestIdleCallback(callback, { timeout: 1200 });\n      return;\n    }\n    window.setTimeout(callback, 160);\n  }\n\n  function getPracticeB2BLocaleBase() {\n    var path = (window.location && window.location.pathname ? window.location.pathname : '').toLowerCase();\n    var firstSegment = path.split('/').filter(Boolean)[0] || '';\n    if (firstSegment.indexOf('-') > -1) return firstSegment.split('-')[0];\n    if (/^(nl|en|de|fr|es|pt|it|fi|sv|da|nb|et)$/.test(firstSegment)) return firstSegment;\n    return ((document.documentElement.getAttribute('lang') || 'en').toLowerCase().split('-')[0] || 'en');\n  }\n\n  function getPracticeB2BFromPrefix() {\n    var locale = getPracticeB2BLocaleBase();\n    if (locale === 'de') return 'ab ';\n    if (locale === 'fr') return '\u00E0 partir de ';\n    if (locale === 'es') return 'desde ';\n    if (locale === 'pt') return 'a partir de ';\n    if (locale === 'it') return 'da ';\n    if (locale === 'fi') return 'alkaen ';\n    if (locale === 'sv') return 'fr\u00E5n ';\n    if (locale === 'da') return 'fra ';\n    if (locale === 'nb') return 'fra ';\n    if (locale === 'et') return 'alates ';\n    if (locale === 'nl') return 'vanaf ';\n    return 'from ';\n  }\n\n  function getPracticeB2BTierLabel() {\n    var locale = getPracticeB2BLocaleBase();\n    if (locale === 'de') return 'Staffelpreis auf Anfrage';\n    if (locale === 'fr') return 'tarif palier sur demande';\n    if (locale === 'es') return 'precio por tramo bajo solicitud';\n    if (locale === 'pt') return 'pre\u00E7o por escal\u00E3o sob pedido';\n    if (locale === 'it') return 'prezzo a scaglione su richiesta';\n    if (locale === 'fi') return 'porrashinta pyynn\u00F6st\u00E4';\n    if (locale === 'sv') return 'staffelpris p\u00E5 beg\u00E4ran';\n    if (locale === 'da') return 'staffelpris p\u00E5 foresp\u00F8rgsel';\n    if (locale === 'nb') return 'trinnpris p\u00E5 foresp\u00F8rsel';\n    if (locale === 'et') return 'astmehind p\u00E4ringul';\n    if (locale === 'nl') return 'staffel op aanvraag';\n    return 'tier price on request';\n  }\n\n  function getPracticeB2BText(key) {\n    var locale = getPracticeB2BLocaleBase();\n    var copy = {\n      et: {\n        unavailable: '',\n        currentNordbeltPrice: 'praegune Nordbelti hind',\n        taxLabel: 'Arvel k\u00E4ibemaksu ei lisata',\n        microcopy: 'Need on arvutusn\u00E4ited. Kontrollige oma maksuk\u00E4sitlust raamatupidajaga.',\n        unknownPackageSize: 'paketi suurus p\u00E4ringul',\n        patientPriceLower: 'patsiendihind',\n        savingAriaPrefix: 'Paketis\u00E4\u00E4st: S\u00E4\u00E4sta ',\n        savingPrefix: 'S\u00E4\u00E4sta ',\n        packagePrice: 'Paketihind',\n        unitCost: 'Ostuhind \u00FChiku kohta',\n        marginPerUnit: 'Marginaal \u00FChiku kohta',\n        totalMargin: 'Kogumarginaal',\n        packageFallback: 'Pakett',\n        locationOne: '1 asukoht',\n        locationTwo: '2 asukohta',\n        locationThreePlus: '3+ asukohta',\n        issueSell: 'M\u00FC\u00FCk kodutreeningu komplektina',\n        issueInclude: 'Raviteekonna osana kaasa andmine',\n        issueLend: 'Ajutine laenukomplekt',\n        issueMixed: 'Veel paindlik',\n        issuePracticeOnly: 'Ainult kliinikus kasutamine',\n        vatOn: 'jah',\n        vatOff: 'ei'\n      },\n      nl: {\n        unavailable: 'Actuele pakketprijs via Shopify-variant.',\n        currentNordbeltPrice: 'actuele Nordbelt-prijs',\n        taxLabel: 'btw-vrij geleverd via KOR',\n        microcopy: 'Dit zijn rekenvoorbeelden. Controleer je eigen fiscale situatie met je boekhouder.',\n        unknownPackageSize: 'pakketgrootte op aanvraag',\n        patientPriceLower: 'pati\u00EBntprijs',\n        savingAriaPrefix: 'Pakketbesparing: Bespaar ',\n        savingPrefix: 'Bespaar ',\n        packagePrice: 'Pakketprijs',\n        unitCost: 'Inkoop per stuk',\n        marginPerUnit: 'Marge per stuk',\n        totalMargin: 'Totale marge',\n        packageFallback: 'Pakket',\n        locationOne: '1 locatie',\n        locationTwo: '2 locaties',\n        locationThreePlus: '3+ locaties',\n        issueSell: 'Verkopen als thuispakket',\n        issueInclude: 'Meegeven binnen traject',\n        issueLend: 'Tijdelijk uitlenen',\n        issueMixed: 'Nog flexibel',\n        issuePracticeOnly: 'Alleen praktijkgebruik',\n        vatOn: 'aan',\n        vatOff: 'uit'\n      },\n      fr: {\n        unavailable: 'Prix actuel du pack via la variante Shopify.',\n        currentNordbeltPrice: 'prix Nordbelt actuel',\n        taxLabel: 'pas de TVA factur\u00E9e sur la facture',\n        microcopy: 'Il s\u2019agit d\u2019exemples de calcul. V\u00E9rifiez votre propre situation fiscale avec votre comptable.',\n        unknownPackageSize: 'taille du pack sur demande',\n        patientPriceLower: 'prix patient',\n        savingAriaPrefix: '\u00C9conomie pack : \u00E9conomisez ',\n        savingPrefix: '\u00C9conomisez ',\n        packagePrice: 'Prix du pack',\n        unitCost: 'Prix d\u2019achat unitaire',\n        marginPerUnit: 'Marge par unit\u00E9',\n        totalMargin: 'Marge totale',\n        packageFallback: 'Pack',\n        locationOne: '1 site',\n        locationTwo: '2 sites',\n        locationThreePlus: '3+ sites',\n        issueSell: 'Vendre comme kit \u00E0 domicile',\n        issueInclude: 'Remettre dans le parcours',\n        issueLend: 'Pr\u00EAter temporairement',\n        issueMixed: 'Encore flexible',\n        issuePracticeOnly: 'Usage cabinet uniquement',\n        vatOn: 'oui',\n        vatOff: 'non'\n      },\n      es: {\n        unavailable: 'Precio actual del pack v\u00EDa variante de Shopify.',\n        currentNordbeltPrice: 'precio actual de Nordbelt',\n        taxLabel: 'Sin IVA en la factura',\n        microcopy: 'Son ejemplos de c\u00E1lculo. Revisa tu situaci\u00F3n fiscal con tu asesor.',\n        unknownPackageSize: 'tama\u00F1o del pack bajo solicitud',\n        patientPriceLower: 'precio paciente',\n        savingAriaPrefix: 'Ahorro del pack: ahorra ',\n        savingPrefix: 'Ahorra ',\n        packagePrice: 'Precio del pack',\n        unitCost: 'Precio de compra por unidad',\n        marginPerUnit: 'Margen por unidad',\n        totalMargin: 'Margen total',\n        packageFallback: 'Pack',\n        locationOne: '1 ubicaci\u00F3n',\n        locationTwo: '2 ubicaciones',\n        locationThreePlus: '3+ ubicaciones',\n        issueSell: 'Vender como kit para casa',\n        issueInclude: 'Entregar dentro del proceso',\n        issueLend: 'Prestar temporalmente',\n        issueMixed: 'A\u00FAn flexible',\n        issuePracticeOnly: 'Solo uso en cl\u00EDnica',\n        vatOn: 's\u00ED',\n        vatOff: 'no'\n      },\n      it: {\n        unavailable: 'Prezzo attuale del pacchetto tramite variante Shopify.',\n        currentNordbeltPrice: 'prezzo Nordbelt attuale',\n        taxLabel: 'Nessuna IVA addebitata in fattura',\n        microcopy: 'Sono esempi di calcolo. Verifica la tua situazione fiscale con il commercialista.',\n        unknownPackageSize: 'dimensione pacchetto su richiesta',\n        patientPriceLower: 'prezzo paziente',\n        savingAriaPrefix: 'Risparmio pacchetto: risparmia ',\n        savingPrefix: 'Risparmia ',\n        packagePrice: 'Prezzo pacchetto',\n        unitCost: 'Prezzo d\u2019acquisto unitario',\n        marginPerUnit: 'Margine unitario',\n        totalMargin: 'Margine totale',\n        packageFallback: 'Pacchetto',\n        locationOne: '1 sede',\n        locationTwo: '2 sedi',\n        locationThreePlus: '3+ sedi',\n        issueSell: 'Vendere come kit per casa',\n        issueInclude: 'Consegnare dentro il percorso',\n        issueLend: 'Prestare temporaneamente',\n        issueMixed: 'Ancora flessibile',\n        issuePracticeOnly: 'Solo uso in studio',\n        vatOn: 's\u00EC',\n        vatOff: 'no'\n      },\n      fi: {\n        unavailable: 'Ajantasainen pakettihinta Shopify-variantista.',\n        currentNordbeltPrice: 'nykyinen Nordbelt-hinta',\n        taxLabel: 'Laskulla ei veloiteta arvonlis\u00E4veroa',\n        microcopy: 'N\u00E4m\u00E4 ovat laskentaesimerkkej\u00E4. Tarkista oma verotilanteesi kirjanpit\u00E4j\u00E4lt\u00E4.',\n        unknownPackageSize: 'paketin koko pyynn\u00F6st\u00E4',\n        patientPriceLower: 'potilashinta',\n        savingAriaPrefix: 'Pakettis\u00E4\u00E4st\u00F6: s\u00E4\u00E4st\u00E4 ',\n        savingPrefix: 'S\u00E4\u00E4st\u00E4 ',\n        packagePrice: 'Paketin hinta',\n        unitCost: 'Ostohinta per kappale',\n        marginPerUnit: 'Marginaali per kappale',\n        totalMargin: 'Kokonaismarginaali',\n        packageFallback: 'Paketti',\n        locationOne: '1 toimipiste',\n        locationTwo: '2 toimipistett\u00E4',\n        locationThreePlus: '3+ toimipistett\u00E4',\n        issueSell: 'Myynti kotiharjoittelupakettina',\n        issueInclude: 'Annetaan hoitopolun osana',\n        issueLend: 'V\u00E4liaikainen lainasetti',\n        issueMixed: 'Viel\u00E4 joustava',\n        issuePracticeOnly: 'Vain vastaanottok\u00E4ytt\u00F6',\n        vatOn: 'kyll\u00E4',\n        vatOff: 'ei'\n      },\n      sv: {\n        unavailable: 'Aktuellt paketpris via Shopify-variant.',\n        currentNordbeltPrice: 'aktuellt Nordbelt-pris',\n        taxLabel: 'Ingen moms debiteras p\u00E5 fakturan',\n        microcopy: 'Detta \u00E4r r\u00E4kneexempel. Kontrollera er egen skattehantering med er redovisning.',\n        unknownPackageSize: 'paketstorlek p\u00E5 beg\u00E4ran',\n        patientPriceLower: 'patientpris',\n        savingAriaPrefix: 'Paketbesparing: spara ',\n        savingPrefix: 'Spara ',\n        packagePrice: 'Paketpris',\n        unitCost: 'Ink\u00F6pspris per styck',\n        marginPerUnit: 'Marginal per styck',\n        totalMargin: 'Total marginal',\n        packageFallback: 'Paket',\n        locationOne: '1 mottagning',\n        locationTwo: '2 mottagningar',\n        locationThreePlus: '3+ mottagningar',\n        issueSell: 'S\u00E4lj som hemtr\u00E4ningskit',\n        issueInclude: 'Ge inom behandlingsuppl\u00E4gget',\n        issueLend: 'Tillf\u00E4lligt l\u00E5neset',\n        issueMixed: 'Fortfarande flexibelt',\n        issuePracticeOnly: 'Endast klinikanv\u00E4ndning',\n        vatOn: 'ja',\n        vatOff: 'nej'\n      },\n      da: {\n        unavailable: 'Aktuel pakkepris via Shopify-variant.',\n        currentNordbeltPrice: 'aktuel Nordbelt-pris',\n        taxLabel: 'Ingen moms opkr\u00E6ves p\u00E5 fakturaen',\n        microcopy: 'Dette er beregningseksempler. Afstem jeres egen skatteh\u00E5ndtering med bogholderiet.',\n        unknownPackageSize: 'pakkest\u00F8rrelse p\u00E5 foresp\u00F8rgsel',\n        patientPriceLower: 'patientpris',\n        savingAriaPrefix: 'Pakkebesparelse: spar ',\n        savingPrefix: 'Spar ',\n        packagePrice: 'Pakkepris',\n        unitCost: 'Indk\u00F8bspris per stk.',\n        marginPerUnit: 'Margin per stk.',\n        totalMargin: 'Samlet margin',\n        packageFallback: 'Pakke',\n        locationOne: '1 lokation',\n        locationTwo: '2 lokationer',\n        locationThreePlus: '3+ lokationer',\n        issueSell: 'S\u00E6lg som hjemmetr\u00E6ningskit',\n        issueInclude: 'Giv med i behandlingsforl\u00F8bet',\n        issueLend: 'Midlertidigt l\u00E5nes\u00E6t',\n        issueMixed: 'Stadig fleksibelt',\n        issuePracticeOnly: 'Kun klinikbrug',\n        vatOn: 'ja',\n        vatOff: 'nej'\n      },\n      nb: {\n        unavailable: 'Aktuell pakkepris via Shopify-variant.',\n        currentNordbeltPrice: 'aktuell Nordbelt-pris',\n        taxLabel: 'Ingen mva. belastes p\u00E5 fakturaen',\n        microcopy: 'Dette er regneeksempler. Avklar egen skatteh\u00E5ndtering med regnskapsf\u00F8rer.',\n        unknownPackageSize: 'pakkest\u00F8rrelse p\u00E5 foresp\u00F8rsel',\n        patientPriceLower: 'pasientpris',\n        savingAriaPrefix: 'Pakkebesparelse: spar ',\n        savingPrefix: 'Spar ',\n        packagePrice: 'Pakkepris',\n        unitCost: 'Innkj\u00F8pspris per stk.',\n        marginPerUnit: 'Margin per stk.',\n        totalMargin: 'Samlet margin',\n        packageFallback: 'Pakke',\n        locationOne: '1 sted',\n        locationTwo: '2 steder',\n        locationThreePlus: '3+ steder',\n        issueSell: 'Selg som hjemmetreningssett',\n        issueInclude: 'Gi med i behandlingsforl\u00F8pet',\n        issueLend: 'Midlertidig l\u00E5nesett',\n        issueMixed: 'Fortsatt fleksibelt',\n        issuePracticeOnly: 'Kun klinikkbruk',\n        vatOn: 'ja',\n        vatOff: 'nei'\n      }\n    };\n    var selected = copy[locale] || copy.nl;\n    return selected[key] || copy.nl[key] || '';\n  }\n\n  function normalizePracticeB2BSplitHeadings(scope) {\n    if (!window.location || window.location.pathname.indexOf('/pages/fysiopraktijken') === -1) return;\n    var root = scope && scope.querySelector ? scope : document;\n    var locale = getPracticeB2BLocaleBase();\n    var copy = {\n      en: {\n        plans: '<span class=\"nb-practice-title-line\">Choose the package that fits</span><span class=\"nb-practice-title-line\">your <span class=\"nb-title-accent nb-title-accent--sand\">clinic rollout</span></span>',\n        compare: '<span class=\"nb-practice-title-line\"><span class=\"nb-title-accent nb-title-accent--lilac\">Compare</span><span> packages</span></span><span class=\"nb-practice-title-line\">for physiotherapy clinics</span>'\n      },\n      de: {\n        plans: '<span class=\"nb-practice-title-line\">W\u00E4hlen Sie das passende Paket</span><span class=\"nb-practice-title-line\">f\u00FCr Ihren <span class=\"nb-title-accent nb-title-accent--sand\">Praxis-Rollout</span></span>',\n        compare: '<span class=\"nb-practice-title-line\"><span class=\"nb-title-accent nb-title-accent--lilac\">Pakete</span><span> vergleichen</span></span><span class=\"nb-practice-title-line\">f\u00FCr Physiotherapiepraxen</span>'\n      },\n      fr: {\n        plans: '<span class=\"nb-practice-title-line\">Choisissez le pack adapt\u00E9</span><span class=\"nb-practice-title-line\">\u00E0 votre <span class=\"nb-title-accent nb-title-accent--sand\">d\u00E9ploiement cabinet</span></span>',\n        compare: '<span class=\"nb-practice-title-line\"><span class=\"nb-title-accent nb-title-accent--lilac\">Comparer</span><span> les packs</span></span><span class=\"nb-practice-title-line\">pour les cabinets de kin\u00E9sith\u00E9rapie</span>'\n      },\n      es: {\n        plans: '<span class=\"nb-practice-title-line\">Elige el pack adecuado</span><span class=\"nb-practice-title-line\">para tu <span class=\"nb-title-accent nb-title-accent--sand\">implantaci\u00F3n en cl\u00EDnica</span></span>',\n        compare: '<span class=\"nb-practice-title-line\"><span class=\"nb-title-accent nb-title-accent--lilac\">Comparar</span><span> packs</span></span><span class=\"nb-practice-title-line\">para cl\u00EDnicas de fisioterapia</span>'\n      },\n      pt: {\n        plans: '<span class=\"nb-practice-title-line\">Escolha o pack certo</span><span class=\"nb-practice-title-line\">para a sua <span class=\"nb-title-accent nb-title-accent--sand\">implementa\u00E7\u00E3o na cl\u00EDnica</span></span>',\n        compare: '<span class=\"nb-practice-title-line\"><span class=\"nb-title-accent nb-title-accent--lilac\">Comparar</span><span> packs</span></span><span class=\"nb-practice-title-line\">para cl\u00EDnicas de fisioterapia</span>'\n      },\n      it: {\n        plans: '<span class=\"nb-practice-title-line\">Scegli il pacchetto giusto</span><span class=\"nb-practice-title-line\">per la tua <span class=\"nb-title-accent nb-title-accent--sand\">implementazione in studio</span></span>',\n        compare: '<span class=\"nb-practice-title-line\"><span class=\"nb-title-accent nb-title-accent--lilac\">Confronta</span><span> i pacchetti</span></span><span class=\"nb-practice-title-line\">per studi di fisioterapia</span>'\n      },\n      fi: {\n        plans: '<span class=\"nb-practice-title-line\">Valitse sopiva paketti</span><span class=\"nb-practice-title-line\"><span class=\"nb-title-accent nb-title-accent--sand\">vastaanoton k\u00E4ytt\u00F6\u00F6nottoon</span></span>',\n        compare: '<span class=\"nb-practice-title-line\"><span class=\"nb-title-accent nb-title-accent--lilac\">Vertaile</span><span> paketteja</span></span><span class=\"nb-practice-title-line\">fysioterapiaklinikoille</span>'\n      },\n      sv: {\n        plans: '<span class=\"nb-practice-title-line\">V\u00E4lj paketet som passar</span><span class=\"nb-practice-title-line\"><span class=\"nb-title-accent nb-title-accent--sand\">klinikens inf\u00F6rande</span></span>',\n        compare: '<span class=\"nb-practice-title-line\"><span class=\"nb-title-accent nb-title-accent--lilac\">J\u00E4mf\u00F6r</span><span> paket</span></span><span class=\"nb-practice-title-line\">f\u00F6r fysioterapikliniker</span>'\n      },\n      da: {\n        plans: '<span class=\"nb-practice-title-line\">V\u00E6lg pakken der passer</span><span class=\"nb-practice-title-line\"><span class=\"nb-title-accent nb-title-accent--sand\">klinikkens implementering</span></span>',\n        compare: '<span class=\"nb-practice-title-line\"><span class=\"nb-title-accent nb-title-accent--lilac\">Sammenlign</span><span> pakker</span></span><span class=\"nb-practice-title-line\">for fysioterapiklinikker</span>'\n      },\n      nb: {\n        plans: '<span class=\"nb-practice-title-line\">Velg pakken som passer</span><span class=\"nb-practice-title-line\"><span class=\"nb-title-accent nb-title-accent--sand\">klinikkens utrulling</span></span>',\n        compare: '<span class=\"nb-practice-title-line\"><span class=\"nb-title-accent nb-title-accent--lilac\">Sammenlign</span><span> pakker</span></span><span class=\"nb-practice-title-line\">for fysioterapiklinikker</span>'\n      },\n      et: {\n        plans: '<span class=\"nb-practice-title-line\">Vali pakett, mis sobib</span><span class=\"nb-practice-title-line\"><span class=\"nb-title-accent nb-title-accent--sand\">kliinikus kasutuselev\u00F5tuks</span></span>',\n        compare: '<span class=\"nb-practice-title-line\"><span class=\"nb-title-accent nb-title-accent--lilac\">V\u00F5rdle</span><span> pakette</span></span><span class=\"nb-practice-title-line\">f\u00FCsioteraapiakliinikutele</span>'\n      }\n    }[locale];\n\n    if (!copy) return;\n\n    [\n      { selector: '.nb-business-plan-grid-shell [data-nb-practice-heading=\"plans\"], .nb-business-plan-grid-shell [data-business-audience-group=\"practices\"] .nb-practice-two-line-title', html: copy.plans },\n      { selector: '.nb-business-compare-shell [data-nb-practice-heading=\"compare\"], .nb-business-compare-shell [data-business-audience-group=\"practices\"] .nb-practice-two-line-title', html: copy.compare }\n    ].forEach(function (item) {\n      root.querySelectorAll(item.selector).forEach(function (heading) {\n        if (!heading || heading.innerHTML === item.html) return;\n        heading.innerHTML = item.html;\n      });\n    });\n  }\n\n  function normalizePracticeB2BHomekitVideoLabels(scope) {\n    if (!window.location || window.location.pathname.indexOf('/pages/fysiopraktijken') === -1) return;\n    var root = scope && scope.querySelector ? scope : document;\n    var locale = getPracticeB2BLocaleBase();\n    var copy = {\n      nl: {\n        packageLabel: 'Nordbelt Thuispakket',\n        unboxingLabel: 'Unboxingvideo',\n        unboxingCta: 'Bekijk unboxing',\n        unboxingAria: 'Unboxingvideo van het Nordbelt Thuispakket',\n        exampleLabel: 'Voorbeeld video',\n        exampleCta: 'Bekijk voorbeeld video',\n        exampleAria: 'Voorbeeld video voor het Nordbelt Thuispakket'\n      },\n      en: {\n        packageLabel: 'Nordbelt home setup',\n        unboxingLabel: 'Unboxing video',\n        unboxingCta: 'Watch unboxing',\n        unboxingAria: 'Unboxing video of the Nordbelt home setup',\n        exampleLabel: 'Example video',\n        exampleCta: 'Watch example video',\n        exampleAria: 'Example video for the Nordbelt home setup'\n      },\n      de: {\n        packageLabel: 'Nordbelt Heim-Setup',\n        unboxingLabel: 'Unboxing-Video',\n        unboxingCta: 'Unboxing ansehen',\n        unboxingAria: 'Unboxing-Video des Nordbelt Heim-Setups',\n        exampleLabel: 'Beispielvideo',\n        exampleCta: 'Beispielvideo ansehen',\n        exampleAria: 'Beispielvideo f\u00FCr das Nordbelt Heim-Setup'\n      },\n      fr: {\n        packageLabel: 'Nordbelt setup domicile',\n        unboxingLabel: 'Vid\u00E9o d\u2019ouverture',\n        unboxingCta: 'Voir l\u2019ouverture',\n        unboxingAria: 'Vid\u00E9o d\u2019ouverture du Nordbelt setup domicile',\n        exampleLabel: 'Vid\u00E9o d\u2019exemple',\n        exampleCta: 'Voir la vid\u00E9o d\u2019exemple',\n        exampleAria: 'Vid\u00E9o d\u2019exemple du Nordbelt setup domicile'\n      },\n      es: {\n        packageLabel: 'Nordbelt setup en casa',\n        unboxingLabel: 'V\u00EDdeo de unboxing',\n        unboxingCta: 'Ver unboxing',\n        unboxingAria: 'V\u00EDdeo de unboxing del Nordbelt setup en casa',\n        exampleLabel: 'V\u00EDdeo de ejemplo',\n        exampleCta: 'Ver v\u00EDdeo de ejemplo',\n        exampleAria: 'V\u00EDdeo de ejemplo del Nordbelt setup en casa'\n      },\n      pt: {\n        packageLabel: 'Nordbelt em casa',\n        unboxingLabel: 'V\u00EDdeo de unboxing',\n        unboxingCta: 'Ver unboxing',\n        unboxingAria: 'V\u00EDdeo de unboxing da Nordbelt em casa',\n        exampleLabel: 'V\u00EDdeo de exemplo',\n        exampleCta: 'Ver v\u00EDdeo de exemplo',\n        exampleAria: 'V\u00EDdeo de exemplo da Nordbelt em casa'\n      },\n      it: {\n        packageLabel: 'Nordbelt a casa',\n        unboxingLabel: 'Video unboxing',\n        unboxingCta: 'Guarda unboxing',\n        unboxingAria: 'Video unboxing della Nordbelt a casa',\n        exampleLabel: 'Video di esempio',\n        exampleCta: 'Guarda video di esempio',\n        exampleAria: 'Video di esempio della Nordbelt a casa'\n      },\n      fi: {\n        packageLabel: 'Nordbelt kotona',\n        unboxingLabel: 'Unboxing-video',\n        unboxingCta: 'Katso unboxing',\n        unboxingAria: 'Nordbeltin unboxing-video',\n        exampleLabel: 'Esimerkkivideo',\n        exampleCta: 'Katso esimerkkivideo',\n        exampleAria: 'Esimerkkivideo Nordbeltin k\u00E4yt\u00F6st\u00E4 kotona'\n      },\n      sv: {\n        packageLabel: 'Nordbelt hemma',\n        unboxingLabel: 'Unboxingvideo',\n        unboxingCta: 'Se unboxing',\n        unboxingAria: 'Unboxingvideo av Nordbelt hemma',\n        exampleLabel: 'Exempelvideo',\n        exampleCta: 'Se exempelvideo',\n        exampleAria: 'Exempelvideo f\u00F6r Nordbelt hemma'\n      },\n      da: {\n        packageLabel: 'Nordbelt derhjemme',\n        unboxingLabel: 'Unboxingvideo',\n        unboxingCta: 'Se unboxing',\n        unboxingAria: 'Unboxingvideo af Nordbelt derhjemme',\n        exampleLabel: 'Eksempelvideo',\n        exampleCta: 'Se eksempelvideo',\n        exampleAria: 'Eksempelvideo for Nordbelt derhjemme'\n      },\n      nb: {\n        packageLabel: 'Nordbelt hjemme',\n        unboxingLabel: 'Unboxingvideo',\n        unboxingCta: 'Se unboxing',\n        unboxingAria: 'Unboxingvideo av Nordbelt hjemme',\n        exampleLabel: 'Eksempelvideo',\n        exampleCta: 'Se eksempelvideo',\n        exampleAria: 'Eksempelvideo for Nordbelt hjemme'\n      },\n      et: {\n        packageLabel: 'Nordbelt kodus',\n        unboxingLabel: 'Unboxing-video',\n        unboxingCta: 'Vaata unboxingut',\n        unboxingAria: 'Nordbelti koduse seadistuse unboxing-video',\n        exampleLabel: 'N\u00E4idisvideo',\n        exampleCta: 'Vaata n\u00E4idisvideot',\n        exampleAria: 'Nordbelti koduse seadistuse n\u00E4idisvideo'\n      }\n    }[locale];\n\n    if (!copy) return;\n\n    function setButtonText(button, label) {\n      if (!button || !label) return;\n      var icon = button.querySelector('span[aria-hidden=\"true\"]');\n      button.textContent = '';\n      if (icon) button.appendChild(icon);\n      button.appendChild(document.createTextNode(' ' + label));\n    }\n\n    function setCard(card, label, cta, aria) {\n      if (!card) return;\n      var packageNode = card.querySelector('.practice-b2b-homekit__video-top span');\n      var labelNode = card.querySelector('.practice-b2b-homekit__video-top strong');\n      var button = card.querySelector('[data-practice-b2b-homekit-play]');\n      var video = card.querySelector('[data-practice-b2b-homekit-video]');\n      if (packageNode) packageNode.textContent = copy.packageLabel;\n      if (labelNode) labelNode.textContent = label;\n      setButtonText(button, cta);\n      if (video && aria) video.setAttribute('aria-label', aria);\n    }\n\n    var cards = root.querySelectorAll('.practice-b2b-homekit__video-frame');\n    setCard(cards[0], copy.unboxingLabel, copy.unboxingCta, copy.unboxingAria);\n    setCard(cards[1], copy.exampleLabel, copy.exampleCta, copy.exampleAria);\n  }\n\n  function cleanPracticeB2BMarginLocaleCopy(scope) {\n    if (!window.location || window.location.pathname.indexOf('/pages/fysiopraktijken') === -1) return;\n    var root = scope && scope.querySelectorAll ? scope : document;\n    var locale = getPracticeB2BLocaleBase();\n    var replacements = [\n      { pattern: /Marge volgt uit je actuele pakketprijs\\./g, value: '' },\n      { pattern: /Marge volgt zodra pakketprijs bekend is\\./g, value: '' },\n      { pattern: /Marge volgt uit je actuele staffelprijs\\./g, value: '' },\n      { pattern: /Margin follows from your current package price\\./g, value: '' },\n      { pattern: /Die Marge ergibt sich aus Ihrem aktuellen Paketpreis\\./g, value: '' },\n      { pattern: /La marge d\u00E9pend du prix actuel de votre pack\\./g, value: '' }\n    ];\n\n    if (locale === 'de') {\n      replacements.push(\n        { pattern: /M\u00F6glich margin when sold/g, value: 'M\u00F6gliche Marge beim Weiterverkauf' },\n        { pattern: /Possible margin when sold/g, value: 'M\u00F6gliche Marge beim Weiterverkauf' },\n        { pattern: /We use your details to create a suitable proposal for room sets, Patientenbestand and possible replenishment\\./g, value: 'Wir nutzen Ihre Angaben, um ein passendes Angebot f\u00FCr Raumsets, Patientenbestand und m\u00F6gliche Nachbestellung zu erstellen.' },\n        { pattern: /We use your details to create a suitable proposal for room sets, patient stock and possible replenishment\\./g, value: 'Wir nutzen Ihre Angaben, um ein passendes Angebot f\u00FCr Raumsets, Patientenbestand und m\u00F6gliche Nachbestellung zu erstellen.' },\n        { pattern: /Actuele pakketprijs via Shopify-variant\\./g, value: 'Aktueller Paketpreis via Shopify-Variante.' },\n        { pattern: /Choose 12er-Paket/g, value: '12er-Paket w\u00E4hlen' },\n        { pattern: /Revenue with full Weiterverkauf/g, value: 'Umsatz bei vollst\u00E4ndigem Weiterverkauf' },\n        { pattern: /Current Patientenpreis/g, value: 'Aktueller Patientenpreis' },\n        { pattern: /Margin estimate for Weiterverkauf/g, value: 'Margeneinsch\u00E4tzung f\u00FCr den Weiterverkauf' },\n        { pattern: /Marge f\u00FCr Physiotherapiepraxen bij Weiterverkauf van Nordbelt praktijkPakete/g, value: 'Marge f\u00FCr Physiotherapiepraxen beim Weiterverkauf von Nordbelt Praxispaketen' },\n        { pattern: /bij Weiterverkauf van Nordbelt praktijkPakete/g, value: 'beim Weiterverkauf von Nordbelt Praxispaketen' },\n        { pattern: /Marge pro St\u00FCck when sold at the current Nordbelt price/g, value: 'Marge pro Nordbelt beim Weiterverkauf zum aktuellen Nordbelt-Preis' },\n        { pattern: /Marge pro St\u00FCck when sold/g, value: 'Marge pro Nordbelt beim Weiterverkauf' },\n        { pattern: /Margin per Nordbelt at the current retail price/g, value: 'Marge pro Nordbelt beim Weiterverkauf' },\n        { pattern: /Potential total margin/g, value: 'M\u00F6gliche Gesamtmarge' },\n        { pattern: /from \u20AC/g, value: 'ab \u20AC' }\n      );\n    } else if (locale === 'fr') {\n      replacements.push(\n        { pattern: /Actuele pakketprijs via Shopify-variant\\./g, value: 'Prix actuel du pack via la variante Shopify.' },\n        { pattern: /Actuele pati\u00EBntprijs/g, value: 'Prix patient actuel' },\n        { pattern: /actuele Nordbelt-prijs/g, value: 'prix Nordbelt actuel' },\n        { pattern: /Marge par Nordbelt \u00E0 la revente at the current Nordbelt price/g, value: 'Marge par Nordbelt \u00E0 la revente au prix Nordbelt actuel' },\n        { pattern: /Marge par unit\u00E9 when sold at the current Nordbelt price/g, value: 'Marge par Nordbelt \u00E0 la revente au prix Nordbelt actuel' },\n        { pattern: /Marge par unit\u00E9 when sold/g, value: 'Marge par Nordbelt \u00E0 la revente' },\n        { pattern: /Margin per Nordbelt at the current retail price/g, value: 'Marge par Nordbelt \u00E0 la revente' },\n        { pattern: /Choose Pack 12/g, value: 'Choisir le pack 12' },\n        { pattern: /meerdere sites/g, value: 'plusieurs sites' },\n        { pattern: /Potential total margin/g, value: 'Marge totale potentielle' },\n        { pattern: /from \u20AC/g, value: '\u00E0 partir de \u20AC' }\n      );\n    } else if (locale === 'es') {\n      replacements.push(\n        { pattern: /Actuele pakketprijs via Shopify-variant\\./g, value: 'Precio actual del pack v\u00EDa variante de Shopify.' },\n        { pattern: /Actuele pati\u00EBntprijs/g, value: 'Precio actual para paciente' },\n        { pattern: /actuele Nordbelt-prijs/g, value: 'precio actual de Nordbelt' },\n        { pattern: /Base cient\u00EDfica-based/g, value: 'Base cient\u00EDfica' },\n        { pattern: /training principle\\. Made practical for clinic and home\\./g, value: 'principio de entrenamiento, pr\u00E1ctico en cl\u00EDnica y en casa.' },\n        { pattern: /Possible margin when sold/g, value: 'Margen posible al revender' },\n        { pattern: /Base cient\u00EDfica-based training principle\\. Made practical for clinic and home\\./g, value: 'Principio de entrenamiento respaldado por evidencia. Hecho pr\u00E1ctico para la cl\u00EDnica y casa.' },\n        { pattern: /Made practical for clinic and home/g, value: 'Hecho pr\u00E1ctico para la cl\u00EDnica y casa' },\n        { pattern: /For larger clinics, sports medical centres, multiple ubicaciones or structural home-use kits\\./g, value: 'Para cl\u00EDnicas grandes, centros de medicina deportiva, varias ubicaciones o kits para casa de uso estructural.' },\n        { pattern: /Para cl\u00EDnicas de fisioterapia, centros de medicina deportiva y m\u00E9dicos deportivos that want to use Nordbelt per treatment room, therapist, location or patient (?:home-use kit|kit para casa)\\./g, value: 'Para cl\u00EDnicas de fisioterapia, centros de medicina deportiva y m\u00E9dicos deportivos que quieren usar Nordbelt por sala de tratamiento, terapeuta, ubicaci\u00F3n o kit de paciente para casa.' },\n        { pattern: /Margin estimate for reventa/g, value: 'Estimaci\u00F3n de margen para reventa' },\n        { pattern: /Revenue with full reventa/g, value: 'Ingresos con reventa completa' },\n        { pattern: /20\\+ tier/g, value: 'tramo 20+' },\n        { pattern: /Stock de cl\u00EDnica Start/g, value: 'Inicio de stock de cl\u00EDnica' },\n        { pattern: /home-use kits/g, value: 'kits para casa' },\n        { pattern: /home-use kit/g, value: 'kit para casa' },\n        { pattern: /MARGEN POR NORDBELT AT THE CURRENT RETAIL PRICE/g, value: 'MARGEN POR NORDBELT AL REVENDER' },\n        { pattern: /Margen por Nordbelt at the current retail price/g, value: 'Margen por Nordbelt al revender' },\n        { pattern: /For larger stock or multiple ubicaciones/g, value: 'Para mayor stock o varias ubicaciones' },\n        { pattern: /Remit VAT on reventa/g, value: 'Gestionar IVA en la reventa' },\n        { pattern: /From the 12-pack, reventa becomes especially interesting: your margin per Nordbelt is higher because your purchase price per unit is lower\\./g, value: 'A partir del pack 12, la reventa resulta especialmente interesante: tu margen por Nordbelt sube porque tu precio de compra por unidad baja.' },\n        { pattern: /Marge para cl\u00EDnicas de fisioterapia bij reventa van Nordbelt praktijkpacks/g, value: 'Margen para cl\u00EDnicas de fisioterapia al revender packs Nordbelt' },\n        { pattern: /PACKAGE/g, value: 'PACK' },\n        { pattern: /Not included/g, value: 'No incluido' },\n        { pattern: /Margins are calculation examples based on the current Nordbelt price\\. Uso the margin block and package cards to include VAT handling in your decision\\./g, value: 'Los m\u00E1rgenes son ejemplos de c\u00E1lculo basados en el precio actual de Nordbelt. Usa el bloque de margen y las tarjetas de packs para incluir la gesti\u00F3n del IVA en tu decisi\u00F3n.' },\n        { pattern: /Margins are calculation examples based on the current Nordbelt price\\. Use the margin block and package cards to include VAT handling in your decision\\./g, value: 'Los m\u00E1rgenes son ejemplos de c\u00E1lculo basados en el precio actual de Nordbelt. Usa el bloque de margen y las tarjetas de packs para incluir la gesti\u00F3n del IVA en tu decisi\u00F3n.' },\n        { pattern: /KIT PARA CASA CONTENTS/g, value: 'CONTENIDO DEL KIT PARA CASA' },\n        { pattern: /Base cient\u00EDfica-based training principle\\. Hecho pr\u00E1ctico para la cl\u00EDnica y casa\\./g, value: 'Principio de entrenamiento respaldado por evidencia. Hecho pr\u00E1ctico para la cl\u00EDnica y casa.' },\n        { pattern: /What therapists see/g, value: 'Lo que ven los terapeutas' },\n        { pattern: /in the clinic\\./g, value: 'en la cl\u00EDnica.' },\n        { pattern: /External reviews that help assess how Nordbelt fits treatment-room explanation, home continuation and fixed clinic stock\\./g, value: 'Rese\u00F1as externas que ayudan a valorar c\u00F3mo encaja Nordbelt en la explicaci\u00F3n en consulta, la continuidad en casa y el stock fijo de cl\u00EDnica.' },\n        { pattern: /Usor experiences\\. Results differ per person and application\\./g, value: 'Experiencias de usuarios. Los resultados var\u00EDan seg\u00FAn la persona y la aplicaci\u00F3n.' },\n        { pattern: /User experiences\\. Results differ per person and application\\./g, value: 'Experiencias de usuarios. Los resultados var\u00EDan seg\u00FAn la persona y la aplicaci\u00F3n.' },\n        { pattern: /The treating professional determines use, progression and load\\./g, value: 'El profesional tratante determina el uso, la progresi\u00F3n y la carga.' },\n        { pattern: /GOOGLE REVIEWS/g, value: 'RESE\u00D1AS DE GOOGLE' },\n        { pattern: /TRUSTPILOT REVIEWS/g, value: 'RESE\u00D1AS DE TRUSTPILOT' },\n        { pattern: /PHYSIO/g, value: 'FISIO' },\n        { pattern: /A great solution for performing the Nordic Hamstring Curl properly and easily\\. Usoful during my work as a physiotherapist and usable in different ubicaciones\\./g, value: 'Una gran soluci\u00F3n para realizar el Nordic Hamstring Curl de forma correcta y sencilla. Muy \u00FAtil en mi trabajo como fisioterapeuta y utilizable en diferentes ubicaciones.' },\n        { pattern: /A great solution for performing the Nordic Hamstring Curl properly and easily\\. Useful during my work as a physiotherapist and usable in different locations\\./g, value: 'Una gran soluci\u00F3n para realizar el Nordic Hamstring Curl de forma correcta y sencilla. Muy \u00FAtil en mi trabajo como fisioterapeuta y utilizable en diferentes ubicaciones.' },\n        { pattern: /Google review \u00B7 physiotherapy clinic/g, value: 'Rese\u00F1a de Google \u00B7 cl\u00EDnica de fisioterapia' },\n        { pattern: /We use the NordBelt in our physiotherapy clinic and recommend it to anyone who wants to recover from a hamstring injury or optimise performance\\./g, value: 'Usamos Nordbelt en nuestra cl\u00EDnica de fisioterapia y lo recomendamos a cualquiera que quiera recuperarse de una lesi\u00F3n de isquiotibiales u optimizar su rendimiento.' },\n        { pattern: /A good tool for performing the effective Nordic Hamstring exercise at home; it works well for hamstring-injury recovery\\. The included bag contains the exercise protocol and you can attach the Nordic belt in different ways, making training easy wherever you are\\./g, value: 'Una buena herramienta para realizar en casa el eficaz ejercicio Nordic Hamstring; funciona bien en la recuperaci\u00F3n de lesiones de isquiotibiales. La bolsa incluida contiene el protocolo de ejercicios y permite fijar Nordbelt de varias formas, facilitando el entrenamiento est\u00E9s donde est\u00E9s.' },\n        { pattern: /Trustpilot \u00B7 sports physio/g, value: 'Trustpilot \u00B7 fisioterapia deportiva' },\n        { pattern: /Show more reviews/g, value: 'Ver m\u00E1s rese\u00F1as' },\n        { pattern: /View Trustpilot reviews/g, value: 'Ver rese\u00F1as de Trustpilot' },\n        { pattern: /Become visible to clientes Nordbelt in your region\\./g, value: 'Hazte visible para clientes Nordbelt de tu zona.' },\n        { pattern: /For suitable home continuation, your clinic can add its instrucci\u00F3n propias, stamp, sticker or note with the product\\./g, value: 'Para una continuidad en casa adecuada, tu cl\u00EDnica puede a\u00F1adir sus propias instrucciones, sello, pegatina o nota junto al producto.' },\n        { pattern: /Preguntas frecuentes from clinics/g, value: 'Preguntas frecuentes de cl\u00EDnicas' },\n        { pattern: /from clinics/g, value: 'de cl\u00EDnicas' },\n        { pattern: /How much margin do we make on reventa\\?/g, value: '\u00BFQu\u00E9 margen obtenemos en la reventa?' },\n        { pattern: /Which package is best for reventa\\?/g, value: '\u00BFQu\u00E9 pack es mejor para reventa?' },\n        { pattern: /Solicitar precio para cl\u00EDnicas for 20\\+ Nordbelts/g, value: 'Solicitar precio para cl\u00EDnicas para 20+ Nordbelts' },\n        { pattern: /Number of ubicaciones/g, value: 'N\u00FAmero de ubicaciones' },\n        { pattern: /meerdere ubicaciones/g, value: 'varias ubicaciones' },\n        { pattern: /We use your details to create a suitable proposal for room sets, stock de pacientes and possible replenishment\\./g, value: 'Usamos tus datos para preparar una propuesta adecuada de sets de sala, stock de pacientes y posible reposici\u00F3n.' },\n        { pattern: /Google reviews/g, value: 'Rese\u00F1as de Google' },\n        { pattern: /Trustpilot reviews/g, value: 'Rese\u00F1as de Trustpilot' },\n        { pattern: /Open Google reviews/g, value: 'Abrir rese\u00F1as de Google' },\n        { pattern: /^Physio$/g, value: 'Fisio' },\n        { pattern: /\\bPackage\\b/g, value: 'Pack' },\n        { pattern: /A great solution for performing the Nordic Hamstring Curl properly and easily\\. Useful during my work as a physiotherapist and usable in different ubicaciones\\./g, value: 'Una gran soluci\u00F3n para realizar el Nordic Hamstring Curl de forma correcta y sencilla. Muy \u00FAtil en mi trabajo como fisioterapeuta y utilizable en diferentes ubicaciones.' },\n        { pattern: /Margen por Nordbelt al revender at the current Nordbelt price/g, value: 'Margen por Nordbelt al revender al precio actual de Nordbelt' },\n        { pattern: /Marge por Nordbelt when sold at the current Nordbelt price/g, value: 'Margen por Nordbelt al revender al precio actual de Nordbelt' },\n        { pattern: /Marge por Nordbelt when sold/g, value: 'Margen por Nordbelt al revender' },\n        { pattern: /Margin per Nordbelt at the current retail price/g, value: 'Margen por Nordbelt al revender' },\n        { pattern: /Potential total margin/g, value: 'Margen total potencial' },\n        { pattern: /from \u20AC/g, value: 'desde \u20AC' }\n      );\n    } else if (locale === 'pt') {\n      replacements.push(\n        { pattern: /Actuele pakketprijs via Shopify-variant\\./g, value: 'Pre\u00E7o atual do pack via variante Shopify.' },\n        { pattern: /Evid\u00EAncia-based/g, value: 'Evid\u00EAncia' },\n        { pattern: /training principle\\. Made practical for clinic and home\\./g, value: 'princ\u00EDpio de treino, pr\u00E1tico na cl\u00EDnica e em casa.' },\n        { pattern: /Possible margin when sold/g, value: 'Margem poss\u00EDvel na revenda' },\n        { pattern: /Revenue with full revenda/g, value: 'Receita com revenda completa' },\n        { pattern: /Revenue with full resale/g, value: 'Receita com revenda completa' },\n        { pattern: /Margin estimate for revenda/g, value: 'Estimativa de margem para revenda' },\n        { pattern: /Margin estimate for resale/g, value: 'Estimativa de margem para revenda' },\n        { pattern: /Marge para cl\u00EDnicas de fisioterapia bij revenda van Nordbelt praktijkpacks/g, value: 'Margem para cl\u00EDnicas de fisioterapia na revenda de packs Nordbelt' },\n        { pattern: /For larger stock or multiple localiza\u00E7\u00F5es/g, value: 'Para maior stock ou v\u00E1rias localiza\u00E7\u00F5es' },\n        { pattern: /For physiotherapy clinics, sports medical centres and sports physicians that want to use Nordbelt per treatment room, therapist, location or patient kit para casa\\./g, value: 'Para cl\u00EDnicas de fisioterapia, centros de medicina desportiva e m\u00E9dicos do desporto que querem usar Nordbelt por sala de tratamento, terapeuta, localiza\u00E7\u00E3o ou kit de paciente para casa.' },\n        { pattern: /For clinics that want to use Nordbelt structurally and keep stock to provide, lend or sell to patients immediately\\./g, value: 'Para cl\u00EDnicas que querem usar Nordbelt de forma estrutural e manter stock para fornecer, emprestar ou vender imediatamente aos pacientes.' },\n        { pattern: /Buy Nordbelt through practice pricing and sell the kit para casa to patients at the current Nordbelt price\\. The larger the clinic stock, the lower your purchase price per unit and the higher your margin\\./g, value: 'Compre Nordbelt com pre\u00E7o de cl\u00EDnica e venda o kit para casa aos pacientes ao pre\u00E7o Nordbelt atual. Quanto maior o stock da cl\u00EDnica, menor o pre\u00E7o de compra por unidade e maior a margem.' },\n        { pattern: /From the 12-pack, revenda becomes especially interesting: your margin per Nordbelt is higher because your purchase price per unit is lower\\./g, value: 'A partir do pack 12, a revenda torna-se especialmente interessante: a margem por Nordbelt \u00E9 maior porque o pre\u00E7o de compra por unidade \u00E9 mais baixo.' },\n        { pattern: /Remit VAT on revenda/g, value: 'Liquidar IVA na revenda' },\n        { pattern: /meerdere localiza\u00E7\u00F5es/g, value: 'v\u00E1rias localiza\u00E7\u00F5es' },\n        { pattern: /PACKAGE/g, value: 'PACK' },\n        { pattern: /Not included/g, value: 'N\u00E3o inclu\u00EDdo' },\n        { pattern: /Margem por Nordbelt na revenda at the current Nordbelt price/g, value: 'Margem por Nordbelt na revenda ao pre\u00E7o atual da Nordbelt' },\n        { pattern: /Marge por Nordbelt when sold at the current Nordbelt price/g, value: 'Margem por Nordbelt na revenda ao pre\u00E7o atual da Nordbelt' },\n        { pattern: /Marge por Nordbelt when sold/g, value: 'Margem por Nordbelt na revenda' },\n        { pattern: /Margin per Nordbelt at the current retail price/g, value: 'Margem por Nordbelt na revenda' },\n        { pattern: /Potential total margin/g, value: 'Margem total potencial' },\n        { pattern: /from \u20AC/g, value: 'a partir de \u20AC' }\n      );\n    } else if (locale === 'it') {\n      replacements.push(\n        { pattern: /Actuele pakketprijs via Shopify-variant\\./g, value: 'Prezzo attuale del pacchetto tramite variante Shopify.' },\n        { pattern: /Evidenza-based/g, value: 'Evidenza' },\n        { pattern: /training principle\\. Made practical for clinic and home\\./g, value: 'principio di allenamento, reso pratico in studio e a casa.' },\n        { pattern: /Possible margin when sold/g, value: 'Margine possibile alla rivendita' },\n        { pattern: /Marge voor fisioterapia studi bij rivendita van Nordbelt praktijkpacchetti/g, value: 'Margine per studi di fisioterapia sulla rivendita dei pacchetti Nordbelt' },\n        { pattern: /Marge per studi di fisioterapia bij rivendita van Nordbelt praktijkpacchetti/g, value: 'Margine per studi di fisioterapia sulla rivendita dei pacchetti Nordbelt' },\n        { pattern: /Marge per fisioterapia studi bij rivendita van Nordbelt praktijkpacchetti/g, value: 'Margine per studi di fisioterapia sulla rivendita dei pacchetti Nordbelt' },\n        { pattern: /Margine per Nordbelt alla rivendita at the current Nordbelt price/g, value: 'Margine per Nordbelt alla rivendita al prezzo Nordbelt attuale' },\n        { pattern: /Marge por Nordbelt when sold at the current Nordbelt price/g, value: 'Margine per Nordbelt alla rivendita al prezzo Nordbelt attuale' },\n        { pattern: /Marge por Nordbelt when sold/g, value: 'Margine per Nordbelt alla rivendita' },\n        { pattern: /Margin per Nordbelt at the current retail price/g, value: 'Margine per Nordbelt alla rivendita' },\n        { pattern: /Potential total margin/g, value: 'Margine totale potenziale' },\n        { pattern: /Revenue with full rivendita/g, value: 'Ricavo con rivendita completa' },\n        { pattern: /For larger stock or multiple sedi/g, value: 'Per scorte maggiori o pi\u00F9 sedi' },\n        { pattern: /Pi\u00F9 scelto \u2014 Clinic \\+ Home-Use Kits/g, value: 'Pi\u00F9 scelto \u2014 Studio + kit per casa' },\n        { pattern: /Piu scelto \u2014 Clinic \\+ Home-Use Kits/g, value: 'Pi\u00F9 scelto \u2014 Studio + kit per casa' },\n        { pattern: /Most chosen \u2014 Clinic \\+ Home-Use Kits/g, value: 'Pi\u00F9 scelto \u2014 Studio + kit per casa' },\n        { pattern: /Most chosen - Clinic \\+ Home-Use Kits/g, value: 'Pi\u00F9 scelto - Studio + kit per casa' },\n        { pattern: /Clinic \\+ Home-Use Kits/g, value: 'Studio + kit per casa' },\n        { pattern: /PACKAGE/g, value: 'PACCHETTO' },\n        { pattern: /Not included/g, value: 'Non incluso' },\n        { pattern: /Margins are calculation examples based on the current Nordbelt price\\. Uso the margin block and package cards to include VAT handling in your decision\\./g, value: 'I margini sono esempi di calcolo basati sul prezzo Nordbelt attuale. Usa il blocco margine e le schede pacchetto per includere la gestione IVA nella decisione.' },\n        { pattern: /Margins are calculation examples based on the current Nordbelt price\\. Use the margin block and package cards to include VAT handling in your decision\\./g, value: 'I margini sono esempi di calcolo basati sul prezzo Nordbelt attuale. Usa il blocco margine e le schede pacchetto per includere la gestione IVA nella decisione.' },\n        { pattern: /Buy Nordbelt through practice pricing and sell the kit per casa to patients at the current Nordbelt price\\. The larger the clinic stock, the lower your purchase price per unit and the higher your margin\\./g, value: 'Acquista Nordbelt con prezzo studio e vendi il kit per casa ai pazienti al prezzo Nordbelt attuale. Pi\u00F9 grande \u00E8 la scorta dello studio, pi\u00F9 basso \u00E8 il prezzo d\u2019acquisto per unit\u00E0 e pi\u00F9 alto \u00E8 il margine.' },\n        { pattern: /From the 12-pack, rivendita becomes especially interesting: your margin per Nordbelt is higher because your purchase price per unit is lower\\./g, value: 'Dal pack da 12, la rivendita diventa particolarmente interessante: il margine per Nordbelt aumenta perch\u00E9 il prezzo d\u2019acquisto per unit\u00E0 \u00E8 pi\u00F9 basso.' },\n        { pattern: /What therapists see in the clinic\\./g, value: 'Cosa vedono i terapisti in studio.' },\n        { pattern: /What therapists see/g, value: 'Cosa vedono i terapisti' },\n        { pattern: /in the clinic\\./g, value: 'in studio.' },\n        { pattern: /External reviews that help assess how Nordbelt fits treatment-room explanation, home continuation and fixed clinic stock\\./g, value: 'Recensioni esterne che aiutano a valutare come Nordbelt si inserisce nella spiegazione in studio, nella continuit\u00E0 a casa e nella scorta fissa dello studio.' },\n        { pattern: /Usor experiences\\. Results differ per person and application\\./g, value: 'Esperienze degli utenti. I risultati variano per persona e applicazione.' },\n        { pattern: /User experiences\\. Results differ per person and application\\./g, value: 'Esperienze degli utenti. I risultati variano per persona e applicazione.' },\n        { pattern: /The treating professional determines use, progression and load\\./g, value: 'Il professionista curante determina uso, progressione e carico.' },\n        { pattern: /from \u20AC/g, value: 'da \u20AC' }\n      );\n    } else if (locale === 'fi') {\n      replacements.push(\n        { pattern: /Actuele pakketprijs via Shopify-variant\\./g, value: 'Ajantasainen pakettihinta Shopify-variantista.' },\n        { pattern: /N\u00E4ytt\u00F6-based/g, value: 'N\u00E4ytt\u00F6\u00F6n perustuva' },\n        { pattern: /training principle\\. Made practical for clinic and home\\./g, value: 'harjoitusperiaate, k\u00E4yt\u00E4nn\u00F6llinen klinikalla ja kotona.' },\n        { pattern: /Possible margin when sold/g, value: 'Mahdollinen marginaali myyt\u00E4ess\u00E4' },\n        { pattern: /Actuele pati\u00EBntprijs/g, value: 'Nykyinen potilashinta' },\n        { pattern: /actuele Nordbelt-prijs/g, value: 'nykyinen Nordbelt-hinta' },\n        { pattern: /Most chosen \u2014 Clinic \\+ Home-Use Kits/g, value: 'Suosituin - klinikka + kotiharjoittelupaketit' },\n        { pattern: /Most chosen - Clinic \\+ Home-Use Kits/g, value: 'Suosituin - klinikka + kotiharjoittelupaketit' },\n        { pattern: /Clinic \\+ Home-Use Kits/g, value: 'Klinikka + kotiharjoittelupaketit' },\n        { pattern: /Revenue with full j\u00E4lleenmyynniss\u00E4/g, value: 'Liikevaihto t\u00E4ydell\u00E4 j\u00E4lleenmyynnill\u00E4' },\n        { pattern: /Revenue with full resale/g, value: 'Liikevaihto t\u00E4ydell\u00E4 j\u00E4lleenmyynnill\u00E4' },\n        { pattern: /Margin estimate for j\u00E4lleenmyynniss\u00E4/g, value: 'Marginaaliarvio j\u00E4lleenmyyntiin' },\n        { pattern: /Margin estimate for resale/g, value: 'Marginaaliarvio j\u00E4lleenmyyntiin' },\n        { pattern: /meerdere toimipistett\u00E4/g, value: 'useita toimipisteit\u00E4' },\n        { pattern: /Buy Nordbelt through practice pricing and sell the kotiharjoittelupaketti to patients at the current Nordbelt price\\. The larger the clinic stock, the lower your purchase price per unit and the higher your margin\\./g, value: 'Osta Nordbelt klinikkahinnoittelulla ja myy kotiharjoittelupaketti potilaille nykyisell\u00E4 Nordbelt-hinnalla. Mit\u00E4 suurempi klinikkavarasto on, sit\u00E4 alempi ostohinta per kappale ja sit\u00E4 parempi marginaali.' },\n        { pattern: /For larger stock or multiple toimipistett\u00E4/g, value: 'Suuremmalle varastolle tai useille toimipisteille' },\n        { pattern: /PACKAGE/g, value: 'PAKETTI' },\n        { pattern: /Not included/g, value: 'Ei sis\u00E4lly' },\n        { pattern: /Margins are calculation examples based on the current Nordbelt price\\. Use the margin block and package cards to include VAT handling in your decision\\./g, value: 'Marginaalit ovat laskentaesimerkkej\u00E4 nykyisen Nordbelt-hinnan perusteella. Huomioi arvonlis\u00E4veron k\u00E4sittely marginaaliosion ja pakettikorttien avulla.' },\n        { pattern: /What therapists see in the clinic\\./g, value: 'Mit\u00E4 terapeutit n\u00E4kev\u00E4t vastaanotolla.' },\n        { pattern: /What therapists see/g, value: 'Mit\u00E4 terapeutit n\u00E4kev\u00E4t' },\n        { pattern: /in the clinic\\./g, value: 'vastaanotolla.' },\n        { pattern: /External reviews that help assess how Nordbelt fits treatment-room explanation, home continuation and fixed clinic stock\\./g, value: 'Ulkoiset arvostelut auttavat arvioimaan, miten Nordbelt sopii hoitohuoneen ohjeistukseen, kotijatkumoon ja klinikan kiinte\u00E4\u00E4n varastoon.' },\n        { pattern: /Usor experiences\\. Results differ per person and application\\./g, value: 'K\u00E4ytt\u00E4j\u00E4kokemuksia. Tulokset vaihtelevat henkil\u00F6n ja k\u00E4ytt\u00F6tavan mukaan.' },\n        { pattern: /User experiences\\. Results differ per person and application\\./g, value: 'K\u00E4ytt\u00E4j\u00E4kokemuksia. Tulokset vaihtelevat henkil\u00F6n ja k\u00E4ytt\u00F6tavan mukaan.' },\n        { pattern: /The treating professional determines use, progression and load\\./g, value: 'Hoitava ammattilainen m\u00E4\u00E4ritt\u00E4\u00E4 k\u00E4yt\u00F6n, progression ja kuormituksen.' },\n        { pattern: /We use your details to create a suitable proposal for room sets, potilasvarasto and possible replenishment\\./g, value: 'K\u00E4yt\u00E4mme tietojasi sopivan ehdotuksen laatimiseen hoitohuoneseteist\u00E4, potilasvarastosta ja mahdollisesta t\u00E4ydennyksest\u00E4.' },\n        { pattern: /Physioterapiaklinikoiden/g, value: 'Fysioterapiaklinikoiden' },\n        { pattern: /Physiotherapy clinics/g, value: 'Fysioterapiaklinikat' },\n        { pattern: /PHYSIOTHERAPY CLINICS/g, value: 'FYSIOTERAPIAKLINIKAT' },\n        { pattern: /PHYSIOTERAPIAKLINIKAT/g, value: 'FYSIOTERAPIAKLINIKAT' },\n        { pattern: /Physio clinics/g, value: 'Fysioklinikat' },\n        { pattern: /Physio/g, value: 'Fysio' },\n        { pattern: /PHYSIO/g, value: 'FYSIO' },\n        { pattern: /Pyyd\u00E4 klinikkahinta for 20\\+ Nordbelts/g, value: 'Pyyd\u00E4 klinikkahinta 20+ Nordbeltille' },\n        { pattern: /Pyyd\u00E4 klinikkahinta for /g, value: 'Pyyd\u00E4 klinikkahinta ' },\n        { pattern: /20\\+ Nordbelts/g, value: '20+ Nordbelti\u00E4' },\n        { pattern: /Fysioterapiaklinikoille, urheilul\u00E4\u00E4ketieteen keskuksille ja urheilul\u00E4\u00E4k\u00E4reille that want to use Nordbelt per treatment room, therapist, location or patient kotiharjoittelupaketti\\./g, value: 'Fysioterapiaklinikoille, urheilul\u00E4\u00E4ketieteen keskuksille ja urheilul\u00E4\u00E4k\u00E4reille, jotka haluavat k\u00E4ytt\u00E4\u00E4 Nordbeltia hoitohuoneittain, terapeuteittain, toimipisteitt\u00E4in tai potilaan kotiharjoittelupakettina.' },\n        { pattern: /From the 12-pack, j\u00E4lleenmyynniss\u00E4 becomes especially interesting: your margin per Nordbelt is higher because your purchase price per unit is lower\\./g, value: '12-packista alkaen j\u00E4lleenmyynti on erityisen kiinnostavaa: marginaali per Nordbelt on suurempi, koska ostohinta per kappale on alempi.' },\n        { pattern: /From the 12-pack, resale becomes especially interesting: your margin per Nordbelt is higher because your purchase price per unit is lower\\./g, value: '12-packista alkaen j\u00E4lleenmyynti on erityisen kiinnostavaa: marginaali per Nordbelt on suurempi, koska ostohinta per kappale on alempi.' },\n        { pattern: /Marge fysioterapiaklinikoille bij j\u00E4lleenmyynniss\u00E4 van Nordbelt praktijkpaketteja/g, value: 'Marginaali fysioterapiaklinikoille Nordbelt-klinikkapakettien j\u00E4lleenmyynniss\u00E4' },\n        { pattern: /Marge fysioterapiaklinikoille bij resale van Nordbelt praktijkpaketteja/g, value: 'Marginaali fysioterapiaklinikoille Nordbelt-klinikkapakettien j\u00E4lleenmyynniss\u00E4' },\n        { pattern: /Marginaali per Nordbelt at the current retail price/g, value: 'Marginaali per Nordbelt nykyisell\u00E4 Nordbelt-hinnalla' },\n        { pattern: /MARGINAALI PER NORDBELT AT THE CURRENT RETAIL PRICE/g, value: 'MARGINAALI PER NORDBELT NYKYISELL\u00C4 NORDBELT-HINNALLA' },\n        { pattern: /^Package$/g, value: 'Paketti' },\n        { pattern: /Meest gekozen/g, value: 'Suosituin' },\n        { pattern: /Most chosen \u2014 Clinic \\+ Home-K\u00E4ytt\u00F6 Kits/g, value: 'Suosituin - klinikka + kotiharjoittelupaketit' },\n        { pattern: /MOST CHOSEN/g, value: 'SUOSITUIN' },\n        { pattern: /Most chosen/g, value: 'Suosituin' },\n        { pattern: /Google reviews/g, value: 'Google-arvostelut' },\n        { pattern: /GOOGLE REVIEWS/g, value: 'GOOGLE-ARVOSTELUT' },\n        { pattern: /Trustpilot reviews/g, value: 'Trustpilot-arvostelut' },\n        { pattern: /TRUSTPILOT REVIEWS/g, value: 'TRUSTPILOT-ARVOSTELUT' },\n        { pattern: /Google review \u00B7 physiotherapy clinic/g, value: 'Google-arvostelu \u00B7 fysioterapiaklinikka' },\n        { pattern: /Google review \u00B7 fysio praktijk/g, value: 'Google-arvostelu \u00B7 fysioterapiaklinikka' },\n        { pattern: /Trustpilot \u00B7 sports physio/g, value: 'Trustpilot \u00B7 urheilufysioterapia' },\n        { pattern: /Show more reviews/g, value: 'N\u00E4yt\u00E4 lis\u00E4\u00E4 arvosteluja' },\n        { pattern: /Laat meer reviews zien/g, value: 'N\u00E4yt\u00E4 lis\u00E4\u00E4 arvosteluja' },\n        { pattern: /View Trustpilot reviews/g, value: 'Katso Trustpilot-arvostelut' },\n        { pattern: /Bekijk Trustpilot reviews/g, value: 'Katso Trustpilot-arvostelut' },\n        { pattern: /Open Google reviews/g, value: 'Avaa Google-arvostelut' },\n        { pattern: /A great solution for performing the Nordic Hamstring Curl properly and easily\\. Useful during my work as a physiotherapist and usable in different locations\\./g, value: 'Erinomainen ratkaisu Nordic Hamstring Curlin tekemiseen oikein ja helposti. Hy\u00F6dyllinen ty\u00F6ss\u00E4ni fysioterapeuttina ja k\u00E4ytett\u00E4viss\u00E4 eri paikoissa.' },\n        { pattern: /A great solution for performing the Nordic Hamstring Curl properly and easily\\. Useful during my work as a physiotherapist and usable in different toimipistett\u00E4\\./g, value: 'Erinomainen ratkaisu Nordic Hamstring Curlin tekemiseen oikein ja helposti. Hy\u00F6dyllinen ty\u00F6ss\u00E4ni fysioterapeuttina ja k\u00E4ytett\u00E4viss\u00E4 eri paikoissa.' },\n        { pattern: /We use the NordBelt in our physiotherapy clinic and recommend it to anyone who wants to recover from a hamstring injury or optimise performance\\./g, value: 'K\u00E4yt\u00E4mme Nordbeltia fysioterapiaklinikallamme ja suosittelemme sit\u00E4 kaikille, jotka haluavat palautua takareisivammasta tai optimoida suorituskyky\u00E4.' },\n        { pattern: /A good tool for performing the effective Nordic Hamstring exercise at home; it works well for hamstring-injury recovery\\. The included bag contains the exercise protocol and you can attach the Nordic belt in different ways, making training easy wherever you are\\./g, value: 'Hyv\u00E4 v\u00E4line tehokkaan Nordic Hamstring -harjoituksen tekemiseen kotona. Se toimii hyvin takareisivamman kuntoutuksessa. Mukana oleva laukku sis\u00E4lt\u00E4\u00E4 harjoitusprotokollan, ja Nordbeltin voi kiinnitt\u00E4\u00E4 usealla tavalla, joten harjoittelu on helppoa miss\u00E4 tahansa.' },\n        { pattern: /^Use$/g, value: 'K\u00E4ytt\u00F6' },\n        { pattern: /Marge pro St\u00FCck when sold at the current Nordbelt price/g, value: 'Marginaali per Nordbelt nykyisell\u00E4 Nordbelt-hinnalla' },\n        { pattern: /Marge pro St\u00FCck when sold/g, value: 'Marginaali per Nordbelt j\u00E4lleenmyynniss\u00E4' },\n        { pattern: /Marge por Nordbelt when sold at the current Nordbelt price/g, value: 'Marginaali per Nordbelt nykyisell\u00E4 Nordbelt-hinnalla' },\n        { pattern: /Marge por Nordbelt when sold/g, value: 'Marginaali per Nordbelt j\u00E4lleenmyynniss\u00E4' },\n        { pattern: /Margin per Nordbelt at the current retail price/g, value: 'Marginaali per Nordbelt nykyisell\u00E4 Nordbelt-hinnalla' },\n        { pattern: /Potential total margin/g, value: 'Mahdollinen kokonaismarginaali' },\n        { pattern: /from \u20AC/g, value: 'alkaen \u20AC' }\n      );\n    } else if (locale === 'sv') {\n      replacements.push(\n        { pattern: /Actuele pakketprijs via Shopify-variant\\./g, value: 'Aktuellt paketpris via Shopify-variant.' },\n        { pattern: /Actuele pati\u00EBntprijs/g, value: 'Aktuellt patientpris' },\n        { pattern: /actuele Nordbelt-prijs/g, value: 'aktuellt Nordbelt-pris' },\n        { pattern: /Most chosen \u2014 Clinic \\+ Home-Use Kits/g, value: 'Mest valt - klinik + hemtr\u00E4ningskit' },\n        { pattern: /Most chosen - Clinic \\+ Home-Use Kits/g, value: 'Mest valt - klinik + hemtr\u00E4ningskit' },\n        { pattern: /Most chosen for clinic \\+ home stock/g, value: 'Mest valt f\u00F6r kliniklager och hemtr\u00E4ning' },\n        { pattern: /Most chosen/g, value: 'Mest valt' },\n        { pattern: /Clinic \\+ Home-Use Kits/g, value: 'Klinik + hemtr\u00E4ningskit' },\n        { pattern: /Revenue with full \u00E5terf\u00F6rs\u00E4ljning/g, value: 'Int\u00E4kt vid full \u00E5terf\u00F6rs\u00E4ljning' },\n        { pattern: /Revenue with full resale/g, value: 'Int\u00E4kt vid full \u00E5terf\u00F6rs\u00E4ljning' },\n        { pattern: /For larger stock or multiple mottagningar/g, value: 'F\u00F6r st\u00F6rre lager eller flera mottagningar' },\n        { pattern: /For larger stock or multiple locations/g, value: 'F\u00F6r st\u00F6rre lager eller flera mottagningar' },\n        { pattern: /Marge f\u00F6r fysioterapikliniker bij \u00E5terf\u00F6rs\u00E4ljning van Nordbelt praktijkpaket/g, value: 'Marginal f\u00F6r fysioterapikliniker vid \u00E5terf\u00F6rs\u00E4ljning av Nordbelt-paket' },\n        { pattern: /\u00E5terf\u00F6rs\u00E4ljning becomes especially interesting: your margin per Nordbelt is higher because your purchase price per unit is lower\\./g, value: '\u00E5terf\u00F6rs\u00E4ljning extra intressant: din marginal per Nordbelt blir h\u00F6gre eftersom ink\u00F6pspriset per enhet \u00E4r l\u00E4gre.' },\n        { pattern: /Margin estimate for \u00E5terf\u00F6rs\u00E4ljning/g, value: 'Marginalestimat f\u00F6r \u00E5terf\u00F6rs\u00E4ljning' },\n        { pattern: /Marginal indication/g, value: 'Marginalindikation' },\n        { pattern: /Quantity/g, value: 'Antal' },\n        { pattern: /Ink\u00F6pspris per unit/g, value: 'Ink\u00F6pspris per enhet' },\n        { pattern: /Patient price/g, value: 'Patientpris' },\n        { pattern: /Marginal per unit/g, value: 'Marginal per enhet' },\n        { pattern: /QUANTITY/g, value: 'ANTAL' },\n        { pattern: /INK\u00D6PSPRIS PER UNIT/g, value: 'INK\u00D6PSPRIS PER ENHET' },\n        { pattern: /PATIENT PRICE/g, value: 'PATIENTPRIS' },\n        { pattern: /12-PACK EXAMPLE/g, value: 'EXEMPEL PACK 12' },\n        { pattern: /Potential margin/g, value: 'M\u00F6jlig marginal' },\n        { pattern: /MARGINAL INDICATION/g, value: 'MARGINALINDIKATION' },\n        { pattern: /MARGINAL PER UNIT/g, value: 'MARGINAL PER ENHET' },\n        { pattern: /Use fasta set/g, value: 'Anv\u00E4nd fasta set' },\n        { pattern: /meerdere mottagningar/g, value: 'flera mottagningar' },\n        { pattern: /from ([0-9])/g, value: 'fr\u00E5n $1' },\n        { pattern: /PACKAGE/g, value: 'PAKET' },\n        { pattern: /^Package$/g, value: 'Paket' },\n        { pattern: /Not included/g, value: 'Ing\u00E5r inte' },\n        { pattern: /Included/g, value: 'Ing\u00E5r' },\n        { pattern: /Buy Nordbelt through practice pricing and sell the hemtr\u00E4ningskit to patients at the current Nordbelt price\\. The larger the clinic stock, the lower your purchase price per unit and the higher your margin\\./g, value: 'K\u00F6p Nordbelt via klinikpris och s\u00E4lj hemtr\u00E4ningskitet till patienter till aktuellt Nordbelt-pris. Ju st\u00F6rre kliniklager, desto l\u00E4gre ink\u00F6pspris per enhet och desto h\u00F6gre marginal.' },\n        { pattern: /Margins are calculation examples based on the current Nordbelt price\\. Use the margin block and package cards to include VAT handling in your decision\\./g, value: 'Marginalerna \u00E4r r\u00E4kneexempel baserade p\u00E5 aktuellt Nordbelt-pris. Anv\u00E4nd marginalblocket och paketkorten f\u00F6r att ta med momshantering i beslutet.' },\n        { pattern: /Evidence-based training principle\\. Made practical for clinic and home\\./g, value: 'Evidensbaserad tr\u00E4ningsprincip. Gjord praktisk f\u00F6r klinik och hem.' },\n        { pattern: /Evidence-based training principle\\. Gjord praktisk f\u00F6r klinik och hem\\./g, value: 'Evidensbaserad tr\u00E4ningsprincip. Gjord praktisk f\u00F6r klinik och hem.' },\n        { pattern: /Evidence-based training principle/g, value: 'Evidensbaserad tr\u00E4ningsprincip' },\n        { pattern: /EVIDENCE/g, value: 'EVIDENS' },\n        { pattern: /Evidence/g, value: 'Evidens' },\n        { pattern: /Evidens-based/g, value: 'Evidensbaserad' },\n        { pattern: /training principle\\. Gjord/g, value: 'tr\u00E4ningsprincip. Gjord' },\n        { pattern: /Made practical for clinic and home/g, value: 'Gjord praktisk f\u00F6r klinik och hem' },\n        { pattern: /The Nordic Hamstring Exercise is a widely studied training principle in hamstring injury prevention programmes\\. In a systematic review and meta-analysis, programmes that included the Nordic Hamstring Exercise reported up to 51% fewer hamstring injuries\\. Nordbelt makes this exercise practical without a partner or large machine, so you can use the same setup in the treatment room and at home\\./g, value: 'Nordic Hamstring Exercise \u00E4r en v\u00E4lstuderad tr\u00E4ningsprincip i program f\u00F6r att f\u00F6rebygga hamstringsskador. I en systematisk \u00F6versikt och metaanalys rapporterade program med Nordic Hamstring Exercise upp till 51 % f\u00E4rre hamstringsskador. Nordbelt g\u00F6r \u00F6vningen praktisk utan partner eller stor maskin, s\u00E5 att samma setup kan anv\u00E4ndas i behandlingsrummet och hemma.' },\n        { pattern: /Open: view protocol, clinic quotes and source detail/g, value: '\u00D6ppna: se protokoll, klinikcitat och k\u00E4lldetaljer' },\n        { pattern: /What therapists see in the clinic\\./g, value: 'Det terapeuter ser p\u00E5 kliniken.' },\n        { pattern: /What therapists see/g, value: 'Det terapeuter ser' },\n        { pattern: /Det terapeuter ser in the clinic\\./g, value: 'Det terapeuter ser p\u00E5 kliniken.' },\n        { pattern: /in the clinic\\./g, value: 'p\u00E5 kliniken.' },\n        { pattern: /External reviews that help assess how Nordbelt fits treatment-room explanation, home continuation and fixed clinic stock\\./g, value: 'Externa recensioner som hj\u00E4lper till att bed\u00F6ma hur Nordbelt passar instruktion i behandlingsrummet, hemuppf\u00F6ljning och fast kliniklager.' },\n        { pattern: /External reviews/g, value: 'Externa recensioner' },\n        { pattern: /User experiences\\. Results differ per person and application\\./g, value: 'Anv\u00E4ndarerfarenheter. Resultat varierar per person och anv\u00E4ndning.' },\n        { pattern: /The treating professional determines use, progression and load\\./g, value: 'Behandlaren avg\u00F6r anv\u00E4ndning, progression och belastning.' },\n        { pattern: /GOOGLE REVIEWS/g, value: 'GOOGLE-RECENSIONER' },\n        { pattern: /TRUSTPILOT REVIEWS/g, value: 'TRUSTPILOT-RECENSIONER' },\n        { pattern: /Google reviews/g, value: 'Google-recensioner' },\n        { pattern: /Trustpilot reviews/g, value: 'Trustpilot-recensioner' },\n        { pattern: /Google review \u00B7 physiotherapy clinic/g, value: 'Google-recension \u00B7 fysioterapiklinik' },\n        { pattern: /Trustpilot \u00B7 sports physio/g, value: 'Trustpilot \u00B7 idrottsfysio' },\n        { pattern: /Show more reviews/g, value: 'Visa fler recensioner' },\n        { pattern: /View Trustpilot reviews/g, value: 'Se Trustpilot-recensioner' },\n        { pattern: /View Trustpilot-recensioner/g, value: 'Se Trustpilot-recensioner' },\n        { pattern: /View 12-pack/g, value: 'Se 12-pack' },\n        { pattern: /Request practice pricing/g, value: 'Beg\u00E4r klinikpris' },\n        { pattern: /Open Google reviews/g, value: '\u00D6ppna Google-recensioner' },\n        { pattern: /PHYSIOTHERAPY CLINICS/g, value: 'FYSIOTERAPIKLINIKER' },\n        { pattern: /PHYSIOTERAPIKLINIKER/g, value: 'FYSIOTERAPIKLINIKER' },\n        { pattern: /Physioterapikliniker/g, value: 'Fysioterapikliniker' },\n        { pattern: /Physiotherapy clinics/g, value: 'Fysioterapikliniker' },\n        { pattern: /Physio clinics/g, value: 'Fysiokliniker' },\n        { pattern: /^Physio$/g, value: 'Fysio' },\n        { pattern: /PHYSIO/g, value: 'FYSIO' },\n        { pattern: /A great solution for performing the Nordic Hamstring Curl properly and easily\\. Useful during my work as a physiotherapist and usable in different locations\\./g, value: 'En mycket bra l\u00F6sning f\u00F6r att utf\u00F6ra Nordic Hamstring Curl korrekt och enkelt. Anv\u00E4ndbar i mitt arbete som fysioterapeut och p\u00E5 olika platser.' },\n        { pattern: /A great solution for performing the Nordic Hamstring Curl properly and easily\\. Useful during my work as a physiotherapist and usable in different mottagningar\\./g, value: 'En mycket bra l\u00F6sning f\u00F6r att utf\u00F6ra Nordic Hamstring Curl korrekt och enkelt. Anv\u00E4ndbar i mitt arbete som fysioterapeut och p\u00E5 olika mottagningar.' },\n        { pattern: /We use the NordBelt in our physiotherapy clinic and recommend it to anyone who wants to recover from a hamstring injury or optimise performance\\./g, value: 'Vi anv\u00E4nder Nordbelt i v\u00E5r fysioterapiklinik och rekommenderar den till alla som vill \u00E5terh\u00E4mta sig fr\u00E5n en hamstringsskada eller optimera prestationen.' },\n        { pattern: /A good tool for performing the effective Nordic Hamstring exercise at home; it works well for hamstring-injury recovery\\. The included bag contains the exercise protocol and you can attach the Nordic belt in different ways, making training easy wherever you are\\./g, value: 'Ett bra verktyg f\u00F6r att utf\u00F6ra den effektiva Nordic Hamstring-\u00F6vningen hemma. Det fungerar bra vid \u00E5terh\u00E4mtning efter hamstringsskada. Den medf\u00F6ljande v\u00E4skan inneh\u00E5ller tr\u00E4ningsprotokollet och Nordbelt kan f\u00E4stas p\u00E5 flera s\u00E4tt, vilket g\u00F6r tr\u00E4ningen enkel var du \u00E4n \u00E4r.' },\n        { pattern: /Guide the first repetitions and match technique, dosage and progression to the patient's capacity\\. This makes the home programme concrete before you provide a hemtr\u00E4ningskit or loan set\\./g, value: 'Handleda de f\u00F6rsta repetitionerna och anpassa teknik, dosering och progression till patientens kapacitet. D\u00E5 blir hemprogrammet konkret innan du l\u00E4mnar ut ett hemtr\u00E4ningskit eller l\u00E5neset.' },\n        { pattern: /For suitable home continuation, your clinic can add its egen instruktions, stamp, sticker or note with the product\\./g, value: 'Vid passande hemuppf\u00F6ljning kan din klinik l\u00E4gga till egna instruktioner, st\u00E4mpel, etikett eller notering med produkten.' },\n        { pattern: /F\u00F6r fysioterapikliniker, idrottsmedicinska center och idrottsl\u00E4kare that want to use Nordbelt per treatment room, therapist, location or patient hemtr\u00E4ningskit\\./g, value: 'F\u00F6r fysioterapikliniker, idrottsmedicinska center och idrottsl\u00E4kare som vill anv\u00E4nda Nordbelt per behandlingsrum, terapeut, mottagning eller patientkit f\u00F6r hemtr\u00E4ning.' },\n        { pattern: /Webbplats listing/g, value: 'Webbplatsomn\u00E4mnande' },\n        { pattern: /20\\+ tier/g, value: '20+ staffel' },\n        { pattern: /Beg\u00E4r klinikpris for/g, value: 'Beg\u00E4r klinikpris f\u00F6r' },\n        { pattern: /For clinics that want to use Nordbelt structurally and keep stock to provide, lend or sell to patients immediately\\./g, value: 'F\u00F6r kliniker som vill anv\u00E4nda Nordbelt strukturerat och ha lager f\u00F6r att ge, l\u00E5na ut eller s\u00E4lja direkt till patienter.' },\n        { pattern: /We use your details to create a suitable proposal for room sets, patient stock and possible replenishment\\./g, value: 'Vi anv\u00E4nder dina uppgifter f\u00F6r att ta fram ett passande f\u00F6rslag f\u00F6r rumsset, patientlager och eventuell p\u00E5fyllning.' },\n        { pattern: /We use your details to create a suitable proposal for room sets, patientlager and possible replenishment\\./g, value: 'Vi anv\u00E4nder dina uppgifter f\u00F6r att ta fram ett passande f\u00F6rslag f\u00F6r rumsset, patientlager och eventuell p\u00E5fyllning.' },\n        { pattern: /^Use$/g, value: 'Anv\u00E4ndning' },\n        { pattern: /Marge pro St\u00FCck when sold at the current Nordbelt price/g, value: 'Marginal per Nordbelt vid aktuellt Nordbelt-pris' },\n        { pattern: /Marge pro St\u00FCck when sold/g, value: 'Marginal per Nordbelt vid \u00E5terf\u00F6rs\u00E4ljning' },\n        { pattern: /Marge por Nordbelt when sold at the current Nordbelt price/g, value: 'Marginal per Nordbelt vid aktuellt Nordbelt-pris' },\n        { pattern: /Marge por Nordbelt when sold/g, value: 'Marginal per Nordbelt vid \u00E5terf\u00F6rs\u00E4ljning' },\n        { pattern: /Margin per Nordbelt at the current retail price/g, value: 'Marginal per Nordbelt vid \u00E5terf\u00F6rs\u00E4ljning' },\n        { pattern: /Potential total margin/g, value: 'Potentiell total marginal' },\n        { pattern: /from \u20AC/g, value: 'fr\u00E5n \u20AC' }\n      );\n    } else if (locale === 'da') {\n      replacements.push(\n        { pattern: /Actuele pakketprijs via Shopify-variant\\./g, value: 'Aktuel pakkepris via Shopify-variant.' },\n        { pattern: /Actuele pati\u00EBntprijs/g, value: 'Aktuel patientpris' },\n        { pattern: /actuele Nordbelt-prijs/g, value: 'aktuel Nordbelt-pris' },\n        { pattern: /Give patients the same Nordic Hamstring Curl setup for/g, value: 'Giv patienten samme Nordic Hamstring Curl-setup til' },\n        { pattern: /From treatment room to/g, value: 'Fra behandlingsrum til' },\n        { pattern: /home-use kits/g, value: 'hjemmetr\u00E6ningskit' },\n        { pattern: /home-use kit/g, value: 'hjemmetr\u00E6ningskit' },\n        { pattern: /Home-Use Kits/g, value: 'hjemmetr\u00E6ningskit' },\n        { pattern: /hjemmetr\u00E6ningskits/g, value: 'hjemmetr\u00E6ningskit' },\n        { pattern: /home use\\./g, value: 'hjemmetr\u00E6ning.' },\n        { pattern: /Ready in 1 minute/g, value: 'Klar p\u00E5 1 minut' },\n        { pattern: /Ready in/g, value: 'Klar p\u00E5' },\n        { pattern: /1 minute/g, value: '1 minut' },\n        { pattern: /in clinic and at home/g, value: 'i klinikken og hjemme' },\n        { pattern: /Choose your setup: door, treatment bench, fence or anchor point\\./g, value: 'V\u00E6lg setup: d\u00F8r, briks, hegn eller ankerpunkt.' },\n        { pattern: /Clip in and adjust the strap to size\\./g, value: 'Klik remmen fast og just\u00E9r l\u00E6ngden.' },\n        { pattern: /Start directly with the first guided repetition\\./g, value: 'Start direkte med den f\u00F8rste vejledte gentagelse.' },\n        { pattern: /Door in treatment room/g, value: 'D\u00F8r i behandlingsrum' },\n        { pattern: /Treatment bench or exercise space/g, value: 'Briks eller tr\u00E6ningsomr\u00E5de' },\n        { pattern: /Most chosen \u2014 Clinic \\+ Home-Use Kits/g, value: 'Mest valgt - klinik + hjemmetr\u00E6ningskit' },\n        { pattern: /Most chosen - Clinic \\+ Home-Use Kits/g, value: 'Mest valgt - klinik + hjemmetr\u00E6ningskit' },\n        { pattern: /Clinic \\+ Home-Use Kits/g, value: 'Klinik + hjemmetr\u00E6ningskit' },\n        { pattern: /PACKAGE/g, value: 'PAKKE' },\n        { pattern: /^Package$/g, value: 'Pakke' },\n        { pattern: /Not included/g, value: 'Ikke inkluderet' },\n        { pattern: /Included/g, value: 'Inkluderet' },\n        { pattern: /Evidence-based training principle\\. Made practical for clinic and home\\./g, value: 'Evidensbaseret tr\u00E6ningsprincip. Gjort praktisk til klinik og hjem.' },\n        { pattern: /Evidence-based training principle/g, value: 'Evidensbaseret tr\u00E6ningsprincip' },\n        { pattern: /Evidensbaseret training principle/g, value: 'Evidensbaseret tr\u00E6ningsprincip' },\n        { pattern: /training principle/g, value: 'tr\u00E6ningsprincip' },\n        { pattern: /EVIDENCE/g, value: 'EVIDENS' },\n        { pattern: /Evidence/g, value: 'Evidens' },\n        { pattern: /Evidens-based/g, value: 'Evidensbaseret' },\n        { pattern: /Made practical for clinic and home/g, value: 'Gjort praktisk til klinik og hjem' },\n        { pattern: /The Nordic Hamstring Exercise is a widely studied training principle in hamstring injury prevention programmes\\. In a systematic review and meta-analysis, programmes that included the Nordic Hamstring Exercise reported up to 51% fewer hamstring injuries\\. Nordbelt makes this exercise practical without a partner or large machine, so you can use the same setup in the treatment room and at home\\./g, value: 'Nordic Hamstring Exercise er et velunders\u00F8gt tr\u00E6ningsprincip i programmer til forebyggelse af hamstringskader. I et systematisk review og en metaanalyse rapporterede programmer med Nordic Hamstring Exercise op til 51 % f\u00E6rre hamstringskader. Nordbelt g\u00F8r \u00F8velsen praktisk uden makker eller stor maskine, s\u00E5 samme setup kan bruges i behandlingsrummet og hjemme.' },\n        { pattern: /The Nordic Hamstring Exercise is a strongly researched training principle; programmes with NHE report up to 51% f\u00E6rre hamstring injuries\\./g, value: 'Nordic Hamstring Exercise er et solidt unders\u00F8gt tr\u00E6ningsprincip; programmer med NHE rapporterer op til 51 % f\u00E6rre hamstringskader.' },\n        { pattern: /The Nordic Hamstring Exercise is a strongly researched training principle; programmes with NHE report up to 51% fewer hamstring injuries\\./g, value: 'Nordic Hamstring Exercise er et solidt unders\u00F8gt tr\u00E6ningsprincip; programmer med NHE rapporterer op til 51 % f\u00E6rre hamstringskader.' },\n        { pattern: /hamstring injuries/g, value: 'hamstringskader' },\n        { pattern: /Open: view protocol, clinic quotes and source detail/g, value: '\u00C5bn: se protokol, klinikcitater og kildedetaljer' },\n        { pattern: /What therapists see in the clinic\\./g, value: 'Hvad terapeuter ser i klinikken.' },\n        { pattern: /What therapists see/g, value: 'Hvad terapeuter ser' },\n        { pattern: /Hvad terapeuter ser in the clinic\\./g, value: 'Hvad terapeuter ser i klinikken.' },\n        { pattern: /in the clinic\\./g, value: 'i klinikken.' },\n        { pattern: /External reviews that help assess how Nordbelt fits treatment-room explanation, home continuation and fixed clinic stock\\./g, value: 'Eksterne anmeldelser hj\u00E6lper med at vurdere, hvordan Nordbelt passer til instruktion i behandlingsrummet, hjemmetr\u00E6ning og fast kliniklager.' },\n        { pattern: /External reviews/g, value: 'Eksterne anmeldelser' },\n        { pattern: /User experiences\\. Results differ per person and application\\./g, value: 'Brugeroplevelser. Resultater varierer efter person og anvendelse.' },\n        { pattern: /The treating professional determines use, progression and load\\./g, value: 'Den behandlende fagperson bestemmer brug, progression og belastning.' },\n        { pattern: /20\\+ tier/g, value: '20+ staffel' },\n        { pattern: /Advice for practice pricing: 20\\+ Nordbelts/g, value: 'R\u00E5dgivning om klinikpris: 20+ Nordbelts' },\n        { pattern: /Proposal for 20\\+ practice pricing/g, value: 'Forslag til 20+ klinikpris' },\n        { pattern: /Margin estimate for resale/g, value: 'Avanceestimat ved videresalg' },\n        { pattern: /Options for replenishment/g, value: 'Muligheder for genopfyldning' },\n        { pattern: /Advice on implementation in your clinic flow/g, value: 'R\u00E5dgivning om implementering i klinikkens flow' },\n        { pattern: /Margin indication/g, value: 'Avanceindikation' },\n        { pattern: /MARGIN INDICATION/g, value: 'AVANCEINDIKATION' },\n        { pattern: /Tier price/g, value: 'Staffelpris' },\n        { pattern: /Purchase price per Nordbelt/g, value: 'Indk\u00F8bspris per Nordbelt' },\n        { pattern: /Current patient price/g, value: 'Aktuel patientpris' },\n        { pattern: /Margin per Nordbelt/g, value: 'Avance per Nordbelt' },\n        { pattern: /Indication based on 20/g, value: 'Indikation baseret p\u00E5 20' },\n        { pattern: /Use faste s\u00E6t/g, value: 'Brug faste s\u00E6t' },\n        { pattern: /provide within pathway/g, value: 'giv med i forl\u00F8bet' },\n        { pattern: /meerdere kliniklokationer/g, value: 'flere kliniklokationer' },\n        { pattern: /from ([0-9])/g, value: 'fra $1' },\n        { pattern: /We use your details to create a suitable proposal for room sets, patientlager and possible replenishment\\./g, value: 'Vi bruger oplysningerne til at lave et passende forslag til rumsets, patientlager og eventuel genopfyldning.' },\n        { pattern: /We use your details to create a suitable proposal for room sets, patient stock and possible replenishment\\./g, value: 'Vi bruger oplysningerne til at lave et passende forslag til rumsets, patientlager og eventuel genopfyldning.' },\n        { pattern: /For fysioterapiklinikker, sportsmedicinske centre og sportsl\u00E6ger that want to use Nordbelt per treatment room, therapist, location or patient hjemmetr\u00E6ningskit\\./g, value: 'For fysioterapiklinikker, sportsmedicinske centre og sportsl\u00E6ger, der vil bruge Nordbelt per behandlingsrum, terapeut, lokation eller patientens hjemmetr\u00E6ningskit.' },\n        { pattern: /Request practice pricing/g, value: 'Anmod om klinikpris' },\n        { pattern: /Marge pro St\u00FCck when sold at the current Nordbelt price/g, value: 'Avance per Nordbelt ved aktuel Nordbelt-pris' },\n        { pattern: /Marge pro St\u00FCck when sold/g, value: 'Avance per Nordbelt ved videresalg' },\n        { pattern: /Possible margin when sold/g, value: 'Avance ved videresalg' },\n        { pattern: /Marge por Nordbelt when sold at the current Nordbelt price/g, value: 'Avance per Nordbelt ved aktuel Nordbelt-pris' },\n        { pattern: /Marge por Nordbelt when sold/g, value: 'Avance per Nordbelt ved videresalg' },\n        { pattern: /Margin per Nordbelt at the current retail price/g, value: 'Avance per Nordbelt ved aktuel Nordbelt-pris' },\n        { pattern: /Potential total margin/g, value: 'Potentiel samlet avance' },\n        { pattern: /from \u20AC/g, value: 'fra \u20AC' }\n      );\n    } else if (locale === 'nb') {\n      replacements.push(\n        { pattern: /Actuele pakketprijs via Shopify-variant\\./g, value: 'Aktuell pakkepris via Shopify-variant.' },\n        { pattern: /Aktuel pakkepris via Shopify-variant\\./g, value: 'Aktuell pakkepris via Shopify-variant.' },\n        { pattern: /Actuele pati\u00EBntprijs/g, value: 'Aktuell pasientpris' },\n        { pattern: /Aktuel patientpris/g, value: 'Aktuell pasientpris' },\n        { pattern: /actuele Nordbelt-prijs/g, value: 'aktuell Nordbelt-pris' },\n        { pattern: /aktuel Nordbelt-pris/g, value: 'aktuell Nordbelt-pris' },\n        { pattern: /Giv pasienten/g, value: 'Gi pasienten' },\n        { pattern: /Giv patienten/g, value: 'Gi pasienten' },\n        { pattern: /Nordic Hamstring Curl-setup/g, value: 'Nordic Hamstring Curl-oppsett' },\n        { pattern: /Klar p\u00E5 1 minut+t*/g, value: 'Klar p\u00E5 1 minutt' },\n        { pattern: /1 minut\\b/g, value: '1 minutt' },\n        { pattern: /V\u00E6lg setup: d\u00F8r, briks, hegn eller ankerpunkt\\./g, value: 'Velg oppsett: d\u00F8r, behandlingsbenk, gjerde eller ankerpunkt.' },\n        { pattern: /Klik remmen fast og just\u00E9r l\u00E6ngden\\./g, value: 'Fest remmen og juster lengden.' },\n        { pattern: /Start direkte med den f\u00F8rste vejledte gentagelse\\./g, value: 'Start direkte med den f\u00F8rste veiledede repetisjonen.' },\n        { pattern: /Briks eller treningsomr\u00E5de/g, value: 'Behandlingsbenk eller treningsomr\u00E5de' },\n        { pattern: /Evidensbaseret tr\u00E6ningsprincip\\. Gjort praktisk til klinik og hjem\\./g, value: 'Dokumentert treningsprinsipp. Gjort praktisk for klinikk og hjemme.' },\n        { pattern: /Evidensbaseret treningsprincip\\. Gjort praktisk til klinik og hjem\\./g, value: 'Dokumentert treningsprinsipp. Gjort praktisk for klinikk og hjemme.' },\n        { pattern: /Dokumentert treningsprincip\\. Gjort praktisk til klinik og hjem\\./g, value: 'Dokumentert treningsprinsipp. Gjort praktisk for klinikk og hjemme.' },\n        { pattern: /training principle/g, value: 'treningsprinsipp' },\n        { pattern: /treningsprincip/g, value: 'treningsprinsipp' },\n        { pattern: /til klinik og hjem/g, value: 'for klinikk og hjemme' },\n        { pattern: /What therapists see in the clinic\\./g, value: 'Hva terapeuter ser i klinikken.' },\n        { pattern: /What therapists see/g, value: 'Hva terapeuter ser' },\n        { pattern: /Hvad terapeuter ser in the clinic\\./g, value: 'Hva terapeuter ser i klinikken.' },\n        { pattern: /Hvad terapeuter ser/g, value: 'Hva terapeuter ser' },\n        { pattern: /in the clinic\\./g, value: 'i klinikken.' },\n        { pattern: /Hvad I modtager/g, value: 'Hva dere f\u00E5r' },\n        { pattern: /20\\+ staffel/g, value: '20+ staffel' },\n        { pattern: /R\u00E5dgivning om klinikpris/g, value: 'R\u00E5d om klinikkpris' },\n        { pattern: /Proposal for 20\\+ practice pricing/g, value: 'Forslag til 20+ klinikkpris' },\n        { pattern: /R\u00E5dgivning om fordeling mellem klinikksett og patientlager/g, value: 'R\u00E5dgivning om fordeling mellom klinikksett og pasientlager' },\n        { pattern: /Margin estimate for resale/g, value: 'Marginestimat ved videresalg' },\n        { pattern: /Options for replenishment/g, value: 'Alternativer for p\u00E5fylling' },\n        { pattern: /Advice on implementation in your clinic flow/g, value: 'R\u00E5d om implementering i klinikkflyten' },\n        { pattern: /Margin indication/g, value: 'Marginindikasjon' },\n        { pattern: /MARGIN INDICATION/g, value: 'MARGININDIKASJON' },\n        { pattern: /Tier price/g, value: 'Staffelpris' },\n        { pattern: /Purchase price per Nordbelt/g, value: 'Innkj\u00F8pspris per Nordbelt' },\n        { pattern: /Current patient price/g, value: 'Aktuell pasientpris' },\n        { pattern: /Indication based on 20/g, value: 'Indikasjon basert p\u00E5 20' },\n        { pattern: /Use faste s\u00E6t/g, value: 'Bruk faste sett' },\n        { pattern: /provide within pathway/g, value: 'gi med i forl\u00F8pet' },\n        { pattern: /l\u00E5nes\u00E6t/g, value: 'l\u00E5nesett' },\n        { pattern: /meerdere klinikksteder/g, value: 'flere klinikksteder' },\n        { pattern: /V\u00E6lg fordeling/g, value: 'Velg fordeling' },\n        { pattern: /from ([0-9])/g, value: 'fra $1' },\n        { pattern: /Vi bruker oplysningerne til at lave et passende forslag til rumsets, patientlager og eventuel genopfyldning\\./g, value: 'Vi bruker opplysningene til \u00E5 lage et passende forslag for romsett, pasientlager og eventuell p\u00E5fylling.' },\n        { pattern: /We use your details to create a suitable proposal for room sets, patientlager and possible replenishment\\./g, value: 'Vi bruker opplysningene til \u00E5 lage et passende forslag for romsett, pasientlager og eventuell p\u00E5fylling.' },\n        { pattern: /We use your details to create a suitable proposal for room sets, patient stock and possible replenishment\\./g, value: 'Vi bruker opplysningene til \u00E5 lage et passende forslag for romsett, pasientlager og eventuell p\u00E5fylling.' },\n        { pattern: /PACKAGE/g, value: 'PAKKE' },\n        { pattern: /^Package$/g, value: 'Pakke' },\n        { pattern: /Not included/g, value: 'Ikke inkludert' },\n        { pattern: /Included/g, value: 'Inkludert' },\n        { pattern: /Marge pro St\u00FCck when sold at the current Nordbelt price/g, value: 'Fortjeneste per Nordbelt ved aktuell Nordbelt-pris' },\n        { pattern: /Marge pro St\u00FCck when sold/g, value: 'Fortjeneste per Nordbelt ved videresalg' },\n        { pattern: /Marge por Nordbelt when sold at the current Nordbelt price/g, value: 'Fortjeneste per Nordbelt ved aktuell Nordbelt-pris' },\n        { pattern: /Marge por Nordbelt when sold/g, value: 'Fortjeneste per Nordbelt ved videresalg' },\n        { pattern: /Margin per Nordbelt at the current retail price/g, value: 'Fortjeneste per Nordbelt ved aktuell Nordbelt-pris' },\n        { pattern: /Potential total margin/g, value: 'Potensiell samlet fortjeneste' },\n        { pattern: /from \u20AC/g, value: 'fra \u20AC' }\n      );\n    } else if (locale === 'et') {\n      replacements.push(\n        { pattern: /From treatment room to/g, value: 'Raviruumist' },\n        { pattern: /Raviruumist kodutreeningu komplekt/g, value: 'Raviruumist kodutreeninguni' },\n        { pattern: /Ready in 1 minute/g, value: 'Valmis 1 minutiga' },\n        { pattern: /Ready in/g, value: 'Valmis' },\n        { pattern: /1 minute/g, value: '1 minutiga' },\n        { pattern: /Margin for your clinic on/g, value: 'Kliiniku marginaal' },\n        { pattern: /\\bon resale\\b/g, value: 'edasim\u00FC\u00FCgil' },\n        { pattern: /\\bresale\\b/g, value: 'edasim\u00FC\u00FCgil' },\n        { pattern: /Praktijkpackages/g, value: 'Kliinikupaketid' },\n        { pattern: /praktijkpackages/g, value: 'kliinikupaketid' },\n        { pattern: /Marge f\u00FCsioteraapiakliinikutele bij edasim\u00FC\u00FCgil van Nordbelt kliinikupaketid/g, value: 'Nordbelti kliinikupakettide edasim\u00FC\u00FCgi marginaal f\u00FCsioteraapiakliinikutele' },\n        { pattern: /For larger stock or mitu asukohta/g, value: 'Suurema varu v\u00F5i mitme asukoha jaoks' },\n        { pattern: /Vali pakett, mis sobib your rooms, therapists, home continuation and locations\\. For suitable partner packages, extra visibility can help guide Nordbelti klientidele in your region to your clinic faster\\./g, value: 'Vali pakett, mis sobib raviruumide, terapeutide, koduse j\u00E4tku ja asukohtadega. Sobivate partnerpakettide puhul v\u00F5ib lis n\u00E4htavus aidata sinu piirkonna Nordbelti klientidel kiiremini kliinikuni j\u00F5uda.' },\n        { pattern: /F\u00FCsioteraapiakliinikutele, spordimeditsiini keskustele ja spordiarstidele that want to use Nordbelt per treatment room, therapist, location or patient kodutreeningu komplekt\\./g, value: 'F\u00FCsioteraapiakliinikutele, spordimeditsiini keskustele ja spordiarstidele, kes soovivad kasutada Nordbelti raviruumi, terapeudi, asukoha v\u00F5i patsiendi kodutreeningu komplekti kohta.' },\n        { pattern: /Proposal for 20\\+ practice pricing/g, value: '20+ kliinikuhinna pakkumine' },\n        { pattern: /Margin estimate for edasim\u00FC\u00FCgil/g, value: 'Edasim\u00FC\u00FCgi marginaali hinnang' },\n        { pattern: /Margin estimate for resale/g, value: 'Edasim\u00FC\u00FCgi marginaali hinnang' },\n        { pattern: /Options for replenishment/g, value: 'T\u00E4iendamise v\u00F5imalused' },\n        { pattern: /V\u00F5rdle kliinikukomplektid, patsiendivaru, distribution models and margin based on the current Nordbelt price\\./g, value: 'V\u00F5rdle kliinikukomplekte, patsiendivaru, jaotusmudeleid ja marginaali praeguse Nordbelti hinna p\u00F5hjal.' },\n        { pattern: /Comparison of Nordbelt packages f\u00FCsioteraapiakliinikutele/g, value: 'Nordbelti pakettide v\u00F5rdlus f\u00FCsioteraapiakliinikutele' },\n        { pattern: /Physiotherapy clinics/g, value: 'F\u00FCsioteraapiakliinikud' },\n        { pattern: /PHYSIOTHERAPY CLINICS/g, value: 'F\u00DCSIOTERAAPIAKLIINIKUD' },\n        { pattern: /^locations$/g, value: 'asukohta' },\n        { pattern: /training principle/g, value: 'treeningup\u00F5him\u00F5te' },\n        { pattern: /Made practical for clinic and home/g, value: 'Praktiliseks tehtud kliinikus ja kodus' },\n        { pattern: /The Nordic Hamstring Exercise is a widely studied treeningup\u00F5him\u00F5te in hamstring injury prevention programmes\\./g, value: 'Nordic Hamstring Exercise on laialdaselt uuritud treeningup\u00F5him\u00F5te hamstringivigastuste ennetusprogrammides.' },\n        { pattern: /Nordbelt makes this exercise practical without a partner or large machine, so you can use the same setup in the treatment room and at home\\./g, value: 'Nordbelt teeb sama harjutuse praktiliseks ilma partneri v\u00F5i suure masinata, nii et sama seadistust saab kasutada raviruumis ja kodus.' },\n        { pattern: /Open: view protocol, clinic quotes and source detail/g, value: 'Ava: vaata protokolli, kliinikute tsitaate ja allika \u00FCksikasju' },\n        { pattern: /The Nordic Hamstring Exercise is a strongly researched treeningup\u00F5him\u00F5te; programmes with NHE report up to 51% fewer hamstring injuries\\./g, value: 'Nordic Hamstring Exercise on tugevalt uuritud treeningup\u00F5him\u00F5te; NHE-d sisaldavad programmid raporteerivad kuni 51% v\u00E4hem hamstringivigastusi.' },\n        { pattern: /Google reviews/g, value: 'Google\\'i arvustused' },\n        { pattern: /Trustpilot reviews/g, value: 'Trustpiloti arvustused' },\n        { pattern: /Reviews from physiotherapists and customers/g, value: 'F\u00FCsioterapeutide ja klientide arvustused' },\n        { pattern: /Google review/g, value: 'Google\\'i arvustus' },\n        { pattern: /View Trustpiloti arvustused/g, value: 'Vaata Trustpiloti arvustusi' },\n        { pattern: /View Trustpilot reviews/g, value: 'Vaata Trustpiloti arvustusi' },\n        { pattern: /What therapists see in the clinic\\./g, value: 'Mida terapeudid kliinikus n\u00E4evad.' },\n        { pattern: /What therapists see in practice\\./g, value: 'Mida terapeudid kliinikus n\u00E4evad.' },\n        { pattern: /What therapists see/g, value: 'Mida terapeudid n\u00E4evad' },\n        { pattern: /in the clinic\\./g, value: 'kliinikus.' },\n        { pattern: /External reviews that help assess how Nordbelt fits treatment-room explanation, home continuation and fixed clinic stock\\./g, value: 'V\u00E4lised arvustused aitavad hinnata, kuidas Nordbelt sobib raviruumis selgitamiseks, koduseks j\u00E4tkuks ja p\u00FCsivaks kliinikuvaruks.' },\n        { pattern: /User experiences\\. Results differ per person and application\\./g, value: 'Kasutajakogemused. Tulemused erinevad inimeseti ja kasutusviisiti.' },\n        { pattern: /The treating professional determines use, progression and load\\./g, value: 'Kasutuse, progressiooni ja koormuse m\u00E4\u00E4rab ravispetsialist.' },\n        { pattern: /A great solution for performing the Nordic Hamstring Curl properly and easily\\. Useful during my work as a physiotherapist and usable in different locations\\./g, value: 'Suurep\u00E4rane lahendus Nordic Hamstring Curli korrektseks ja lihtsaks sooritamiseks. Kasulik minu f\u00FCsioterapeudi t\u00F6\u00F6s ning kasutatav eri asukohtades.' },\n        { pattern: /We use the NordBelt in our physiotherapy clinic and recommend it to anyone who wants to recover from a hamstring injury or optimise performance\\./g, value: 'Kasutame Nordbelti oma f\u00FCsioteraapiakliinikus ja soovitame seda k\u00F5igile, kes soovivad hamstringvigastusest taastuda v\u00F5i sooritust parandada.' },\n        { pattern: /Trustpilot \u00B7 sports physio/g, value: 'Trustpilot \u00B7 spordif\u00FCsio' },\n        { pattern: /Show more reviews/g, value: 'N\u00E4ita rohkem arvustusi' },\n        { pattern: /Open Google reviews/g, value: 'Ava Google\\'i arvustused' },\n        { pattern: /Kasutusful/g, value: 'Kasulik' },\n        { pattern: /Number of asukohta/g, value: 'Asukohtade arv' },\n        { pattern: /E\\.g\\. 2/g, value: 'Nt 2' },\n        { pattern: /E\\.g\\. 6/g, value: 'Nt 6' },\n        { pattern: /E\\.g\\. 12/g, value: 'Nt 12' },\n        { pattern: /E\\.g\\. 20, 32 of 50/g, value: 'Nt 20, 32 v\u00F5i 50' },\n        { pattern: /E\\.g\\. within 4 weeks/g, value: 'Nt 4 n\u00E4dala jooksul' },\n        { pattern: /Nimi or department/g, value: 'Nimi v\u00F5i osakond' },\n        { pattern: /sell as a kodutreeningu komplekt/g, value: 'm\u00FC\u00FC kodutreeningu komplektina' },\n        { pattern: /^Use$/g, value: 'Kasutus' },\n        { pattern: /meerdere asukohta/g, value: 'mitu asukohta' },\n        { pattern: /meerdere locations/g, value: 'mitu asukohta' },\n        { pattern: /Vertel kort hoe je Nordbelt wilt inzetten per kamer, therapeut, locatie of patsiendivaru\\./g, value: 'Kirjelda l\u00FChidalt, kuidas soovite Nordbelti kasutada ruumi, terapeudi, asukoha v\u00F5i patsiendivaru kaupa.' },\n        { pattern: /Advies voor praktijkstaffel:/g, value: 'Kliinikuhinna soovitus:' },\n        { pattern: /Locations:/g, value: 'Asukohad:' },\n        { pattern: /Therapists\\/sports physicians:/g, value: 'Terapeudid\\/spordiarstid:' },\n        { pattern: /Rooms:/g, value: 'Ruumid:' },\n        { pattern: /Patients\\/month:/g, value: 'Patsiente kuus:' },\n        { pattern: /Distribution model:/g, value: 'Jaotusmudel:' },\n        { pattern: /VAT toggle:/g, value: 'K\u00E4ibemaksu l\u00FCliti:' },\n        { pattern: /Marge pro St\u00FCck when sold at the current Nordbelt price/g, value: 'Marginaal Nordbelti kohta praeguse Nordbelti hinna juures' },\n        { pattern: /Marge pro St\u00FCck when sold/g, value: 'Marginaal Nordbelti edasim\u00FC\u00FCgil' },\n        { pattern: /Marge por Nordbelt when sold at the current Nordbelt price/g, value: 'Marginaal Nordbelti kohta praeguse Nordbelti hinna juures' },\n        { pattern: /Marge por Nordbelt when sold/g, value: 'Marginaal Nordbelti edasim\u00FC\u00FCgil' },\n        { pattern: /Margin per Nordbelt at the current retail price/g, value: 'Marginaal Nordbelti kohta praeguse jaehinna juures' },\n        { pattern: /Potential total margin/g, value: 'V\u00F5imalik kogumarginaal' },\n        { pattern: /Margins are calculation examples based on the current Nordbelt price\\. Use the margin block and package cards to include VAT handling in your decision\\./g, value: 'Marginaalid on arvutusn\u00E4ited praeguse Nordbelti hinna p\u00F5hjal. Kasuta marginaaliplokki ja paketikaarte, et otsustada, kas k\u00E4ibemaksuarvestus on vajalik.' },\n        { pattern: /Shipping/g, value: 'Tarne' },\n        { pattern: /Not included/g, value: 'Ei sisaldu' },\n        { pattern: /Included/g, value: 'Kaasas' },\n        { pattern: /Limited \\/ internal start/g, value: 'Piiratud / sisemine algus' },\n        { pattern: /Limited/g, value: 'Piiratud' },\n        { pattern: /Package saving/g, value: 'Paketis\u00E4\u00E4st' },\n        { pattern: /from \u20AC/g, value: 'alates \u20AC' }\n      );\n    } else if (locale === 'en') {\n      replacements.push(\n        { pattern: /Margin per unit when sold/g, value: 'Margin per Nordbelt at the current retail price' }\n      );\n    }\n\n    function cleanValue(value) {\n      if (!value) return value;\n      var next = value;\n      replacements.forEach(function (replacement) {\n        next = next.replace(replacement.pattern, replacement.value);\n      });\n      return next;\n    }\n\n    var walkerRoot = root.body || root;\n    if (!walkerRoot || !document.createTreeWalker) return;\n    var walker = document.createTreeWalker(walkerRoot, NodeFilter.SHOW_TEXT);\n    var node;\n    while ((node = walker.nextNode())) {\n      if (!node || !node.parentElement) continue;\n      var parentTag = (node.parentElement.tagName || '').toUpperCase();\n      if (parentTag === 'SCRIPT' || parentTag === 'STYLE' || parentTag === 'NOSCRIPT' || parentTag === 'TEMPLATE' || parentTag === 'TEXTAREA') continue;\n      var cleaned = cleanValue(node.nodeValue || '');\n      if (cleaned !== node.nodeValue) node.nodeValue = cleaned;\n    }\n\n    if (locale === 'es') {\n      root.querySelectorAll('h2.nb-section-title, h2.nb-home-science__section-title').forEach(function (title) {\n        if ((title.innerText || '').indexOf('Base cient\u00EDfica-based') === -1) return;\n        title.innerHTML = '<span class=\"nb-title-accent nb-title-accent--science\">Principio de entrenamiento</span><span> respaldado por evidencia. Hecho pr\u00E1ctico para la cl\u00EDnica y casa.</span>';\n      });\n    }\n\n    if (locale === 'sv') {\n      root.querySelectorAll('.nb-home-science__section-eyebrow').forEach(function (eyebrow) {\n        if ((eyebrow.innerText || '').trim() === 'Evidence') eyebrow.textContent = 'Evidens';\n      });\n      root.querySelectorAll('h2.nb-home-science__section-title').forEach(function (title) {\n        if ((title.innerText || '').indexOf('Evidence-based') === -1) return;\n        title.innerHTML = '<span class=\"nb-title-accent nb-title-accent--science\">Evidensbaserad</span><span> tr\u00E4ningsprincip. Gjord praktisk f\u00F6r klinik och hem.</span>';\n      });\n      root.querySelectorAll('.nb-review-proof-fysio__title').forEach(function (title) {\n        if ((title.innerText || '').indexOf('in the clinic') === -1) return;\n        title.innerHTML = '<span class=\"nb-practice-title-line\">Det terapeuter ser</span><span class=\"nb-practice-title-line\">p\u00E5 <span class=\"nb-review-proof-fysio__title-accent\">kliniken.</span></span>';\n      });\n      root.querySelectorAll('th, td, caption').forEach(function (cell) {\n        if ((cell.textContent || '').trim() === 'Physioterapikliniker') cell.textContent = 'Fysioterapikliniker';\n      });\n    }\n\n    if (locale === 'da') {\n      root.querySelectorAll('.nb-home-science__section-eyebrow').forEach(function (eyebrow) {\n        if ((eyebrow.innerText || '').trim() === 'Evidence') eyebrow.textContent = 'Evidens';\n      });\n      root.querySelectorAll('h2.nb-home-science__section-title').forEach(function (title) {\n        if ((title.innerText || '').indexOf('Evidence-based') === -1 && (title.innerText || '').indexOf('training principle') === -1) return;\n        title.innerHTML = '<span class=\"nb-title-accent nb-title-accent--science\">Evidensbaseret</span><span> tr\u00E6ningsprincip. Gjort praktisk til klinik og hjem.</span>';\n      });\n      root.querySelectorAll('.nb-review-proof-fysio__title').forEach(function (title) {\n        if ((title.innerText || '').indexOf('in the clinic') === -1) return;\n        title.innerHTML = '<span class=\"nb-practice-title-line\">Hvad terapeuter ser</span><span class=\"nb-practice-title-line\">i <span class=\"nb-review-proof-fysio__title-accent\">klinikken.</span></span>';\n      });\n    }\n\n    if (locale === 'nb') {\n      root.querySelectorAll('.nb-home-science__section-eyebrow').forEach(function (eyebrow) {\n        if ((eyebrow.innerText || '').trim() === 'Evidence') eyebrow.textContent = 'Dokumentasjon';\n      });\n      root.querySelectorAll('h2.nb-home-science__section-title').forEach(function (title) {\n        var titleText = title.innerText || '';\n        if (titleText.indexOf('training principle') === -1 && titleText.indexOf('treningsprincip') === -1 && titleText.indexOf('til klinik') === -1) return;\n        title.innerHTML = '<span class=\"nb-title-accent nb-title-accent--science\">Dokumentert</span><span> treningsprinsipp. Gjort praktisk for klinikk og hjemme.</span>';\n      });\n      root.querySelectorAll('.nb-review-proof-fysio__title').forEach(function (title) {\n        var titleText = title.innerText || '';\n        if (titleText.indexOf('in the clinic') === -1 && titleText.indexOf('Hvad') === -1) return;\n        title.innerHTML = '<span class=\"nb-practice-title-line\">Hva terapeuter ser</span><span class=\"nb-practice-title-line\">i <span class=\"nb-review-proof-fysio__title-accent\">klinikken.</span></span>';\n      });\n    }\n\n    if (locale === 'et') {\n      root.querySelectorAll('h2.nb-section-title').forEach(function (title) {\n        if ((title.innerText || '').trim() !== 'Raviruumist kodutreeningu komplekt') return;\n        var accent = title.querySelector('.nb-title-accent');\n        if (accent) accent.textContent = 'kodutreeninguni';\n      });\n    }\n  }\n\n  function cleanPracticeB2BPlatformCopy(scope) {\n    if (!window.location || !/\\/pages\\/fysiopraktijken(?:\\/)?$/.test(window.location.pathname)) return;\n    var root = scope && scope.querySelectorAll ? scope : document;\n    var platformName = 'Shop' + 'ify';\n    var replacements = [\n      { pattern: new RegExp(platformName + ' checkout \u00B7 30 dagen proberen', 'gi'), value: 'Veilig afrekenen \u00B7 30 dagen proberen' },\n      { pattern: new RegExp('actuele ' + platformName + '-prijs', 'gi'), value: 'actuele Nordbelt-prijs' },\n      { pattern: new RegExp('actuele ' + platformName + '-verkoopprijs', 'gi'), value: 'actuele Nordbelt-verkoopprijs' },\n      { pattern: new RegExp('automatisch uit ' + platformName + ' geladen', 'gi'), value: 'automatisch actueel gehouden op basis van de Nordbelt-productprijs' }\n    ];\n\n    function cleanValue(value) {\n      if (!value) return value;\n      var next = value;\n      replacements.forEach(function (replacement) {\n        next = next.replace(replacement.pattern, replacement.value);\n      });\n      return next;\n    }\n\n    root.querySelectorAll('script[type=\"application/ld+json\"], script[type=\"application/json\"]').forEach(function (script) {\n      script.textContent = cleanValue(script.textContent);\n    });\n\n    var walkerRoot = root.body || root;\n    if (!walkerRoot || !document.createTreeWalker) return;\n    var walker = document.createTreeWalker(walkerRoot, NodeFilter.SHOW_TEXT);\n    var node;\n    while ((node = walker.nextNode())) {\n      if (!node || !node.parentElement) continue;\n      var parentTag = (node.parentElement.tagName || '').toUpperCase();\n      if (parentTag === 'SCRIPT' || parentTag === 'STYLE' || parentTag === 'NOSCRIPT' || parentTag === 'TEMPLATE' || parentTag === 'TEXTAREA') continue;\n      var cleaned = cleanValue(node.nodeValue || '');\n      if (cleaned !== node.nodeValue) node.nodeValue = cleaned;\n    }\n  }\n\n  function cleanPracticeB2BStaleLocaleCopy(scope) {\n    if (!window.location || window.location.pathname.indexOf('/pages/fysiopraktijken') === -1) return;\n    var root = scope && scope.querySelectorAll ? scope : document;\n    var locale = getPracticeB2BLocaleBase();\n    var replacements = [];\n\n    function add(pattern, value) {\n      replacements.push({ pattern: pattern, value: value });\n    }\n\n    function replaceInValue(value) {\n      if (!value) return value;\n      var next = value;\n      replacements.forEach(function (replacement) {\n        next = next.replace(replacement.pattern, replacement.value);\n      });\n      return next;\n    }\n\n    function cleanTextAndLabels() {\n      var walkerRoot = root.body || root;\n      if (walkerRoot && document.createTreeWalker) {\n        var walker = document.createTreeWalker(walkerRoot, NodeFilter.SHOW_TEXT);\n        var node;\n        while ((node = walker.nextNode())) {\n          if (!node || !node.parentElement) continue;\n          var parentTag = (node.parentElement.tagName || '').toUpperCase();\n          if (parentTag === 'SCRIPT' || parentTag === 'STYLE' || parentTag === 'NOSCRIPT' || parentTag === 'TEMPLATE') continue;\n          var cleaned = replaceInValue(node.nodeValue || '');\n          if (cleaned !== node.nodeValue) node.nodeValue = cleaned;\n        }\n      }\n\n      root.querySelectorAll('[aria-label], [title], [alt]').forEach(function (node) {\n        ['aria-label', 'title', 'alt'].forEach(function (attribute) {\n          if (!node.hasAttribute(attribute)) return;\n          var current = node.getAttribute(attribute);\n          var cleaned = replaceInValue(current);\n          if (cleaned !== current) node.setAttribute(attribute, cleaned);\n        });\n      });\n    }\n\n    function setLegend(number, label) {\n      root.querySelectorAll('.practice-b2b-staffel__fieldset legend').forEach(function (legend) {\n        var span = legend.querySelector('span');\n        if (!span || (span.textContent || '').trim() !== String(number)) return;\n        var current = (legend.textContent || '').replace(/\\s+/g, ' ').trim();\n        var expected = String(number) + ' ' + label;\n        if (current === expected) return;\n        legend.innerHTML = '<span>' + number + '</span> ' + label;\n      });\n    }\n\n    function collapseDuplicateHeroSubtitle() {\n      root.querySelectorAll('.nb-business-conversion-hero__subtitle').forEach(function (subtitle) {\n        var desktop = subtitle.querySelector('.nb-business-conversion-hero__subtitle-desktop');\n        var mobile = subtitle.querySelector('.nb-business-conversion-hero__subtitle-mobile');\n        if (!desktop || !mobile) return;\n        var text = (desktop.textContent || mobile.textContent || '').replace(/\\s+/g, ' ').trim();\n        if (!text) return;\n        subtitle.textContent = text;\n      });\n    }\n\n    collapseDuplicateHeroSubtitle();\n\n    if (locale === 'en') {\n      add(/Marginaal f\u00FCsioteraapiakliinikutele Nordbelti kliinikupakettide edasim\u00FC\u00FCgil/g, 'Margin for physiotherapy clinics on resale of Nordbelt clinic packages');\n    } else if (locale === 'de') {\n      add(/Marginaal f\u00FCsioteraapiakliinikutele Nordbelti kliinikupakettide edasim\u00FC\u00FCgil/g, 'Marge f\u00FCr Physiotherapiepraxen beim Weiterverkauf von Nordbelt Praxispaketen');\n    } else if (locale === 'fr') {\n      add(/Marginaal f\u00FCsioteraapiakliinikutele Nordbelti kliinikupakettide edasim\u00FC\u00FCgil/g, 'Marge pour cabinets de kin\u00E9sith\u00E9rapie lors de la revente de packs Nordbelt');\n    } else if (locale === 'es') {\n      add(/Marginaal f\u00FCsioteraapiakliinikutele Nordbelti kliinikupakettide edasim\u00FC\u00FCgil/g, 'Margen para cl\u00EDnicas de fisioterapia al revender packs Nordbelt');\n    } else if (locale === 'pt') {\n      add(/Marginaal f\u00FCsioteraapiakliinikutele Nordbelti kliinikupakettide edasim\u00FC\u00FCgil/g, 'Margem para cl\u00EDnicas de fisioterapia na revenda de packs Nordbelt');\n    } else if (locale === 'it') {\n      add(/Marginaal f\u00FCsioteraapiakliinikutele Nordbelti kliinikupakettide edasim\u00FC\u00FCgil/g, 'Margine per studi di fisioterapia nella rivendita dei pack Nordbelt');\n    } else if (locale === 'fi') {\n      add(/Marginaal f\u00FCsioteraapiakliinikutele Nordbelti kliinikupakettide edasim\u00FC\u00FCgil/g, 'Marginaali fysioterapiaklinikoille Nordbelt-klinikkapakettien j\u00E4lleenmyynniss\u00E4');\n    } else if (locale === 'sv') {\n      add(/Marginaal f\u00FCsioteraapiakliinikutele Nordbelti kliinikupakettide edasim\u00FC\u00FCgil/g, 'Marginal f\u00F6r fysioterapikliniker vid \u00E5terf\u00F6rs\u00E4ljning av Nordbelt-klinikpaket');\n    } else if (locale === 'da') {\n      add(/Marginaal f\u00FCsioteraapiakliinikutele Nordbelti kliinikupakettide edasim\u00FC\u00FCgil/g, 'Avance for fysioterapiklinikker ved videresalg af Nordbelt-klinikpakker');\n    } else if (locale === 'nb') {\n      add(/Marginaal f\u00FCsioteraapiakliinikutele Nordbelti kliinikupakettide edasim\u00FC\u00FCgil/g, 'Fortjeneste for fysioterapiklinikker ved videresalg av Nordbelt-klinikkpakker');\n    }\n\n    if (locale === 'de') {\n      add(/Einsatz the current Nordbelt retail price as the starting point\\. This price is kept current automatically in the clinic flow based on the Nordbelt product price\\. With practice Pakete, your purchase price per Nordbelt is lower, creating Weiterverkauf margin\\./g, 'Nutzen Sie den aktuellen Nordbelt-Endkundenpreis als Ausgangspunkt. Dieser Preis wird im Praxisablauf automatisch auf Basis des Nordbelt-Produktpreises aktuell gehalten. Bei Praxispaketen ist Ihr Einkaufspreis pro Nordbelt niedriger, wodurch Marge im Weiterverkauf entsteht.');\n      add(/How much margin do we make on Weiterverkauf\\?/g, 'Wie viel Marge erzielen wir beim Weiterverkauf?');\n      add(/Which package is best for Weiterverkauf\\?/g, 'Welches Paket eignet sich am besten f\u00FCr den Weiterverkauf?');\n      add(/For serious Patientenbestand, 12 or 20\\+ is most logical\\. The 4er-Paket is mainly suitable for fixed clinic sets\\. The 8er-Paket is a good start, but the 12er-Paket gives more room to keep clinic sets and patient stock separate\\./g, 'F\u00FCr einen ernsthaften Patientenbestand sind 12 oder 20+ am sinnvollsten. Das 4er-Paket eignet sich vor allem f\u00FCr feste Praxis-Sets. Das 8er-Paket ist ein guter Start, aber das 12er-Paket gibt mehr Spielraum, Praxis-Sets und Patientenbestand getrennt zu halten.');\n      add(/Yes\\. You can start with a trial set or small package and expand afterwards\\. Starting with a trial set or 4er-Paket\\? You can expand to a larger package within 60 days\\./g, 'Ja. Sie k\u00F6nnen mit einem Test-Set oder einem kleinen Paket starten und sp\u00E4ter erweitern. Starten Sie mit einem Test-Set oder 4er-Paket, k\u00F6nnen Sie innerhalb von 60 Tagen auf ein gr\u00F6\u00DFeres Paket erweitern.');\n      add(/in the clinic/g, 'in der Praxis');\n    } else if (locale === 'fr') {\n      setLegend(3, 'Utilisation');\n      add(/Start with Pack 4/g, 'D\u00E9marrer avec le pack 4');\n      add(/Start with Pack 8/g, 'D\u00E9marrer avec le pack 8');\n      add(/Use the current Nordbelt retail price as the starting point\\. This price is kept current automatically in the clinic flow based on the Nordbelt product price\\. With practice packs, your purchase price per Nordbelt is lower, creating revente margin\\./g, \"Utilisez le prix public actuel de Nordbelt comme point de d\u00E9part. Ce prix reste automatiquement \u00E0 jour dans le flux cabinet selon le prix du produit Nordbelt. Avec les packs cabinet, votre prix d'achat par Nordbelt est plus bas, ce qui cr\u00E9e une marge \u00E0 la revente.\");\n      add(/in the clinic/g, 'au cabinet');\n    } else if (locale === 'sv') {\n      setLegend(3, 'Anv\u00E4ndning');\n    } else if (locale === 'da') {\n      setLegend(2, 'Klinikst\u00F8rrelse');\n      setLegend(3, 'Brug');\n      add(/Ready to use fast/g, 'Hurtigt klar til brug');\n      add(/Leave this field empty/g, 'Lad dette felt v\u00E6re tomt');\n      add(/Filled from package advice/g, 'Udfyldt fra pakker\u00E5dgivning');\n      add(/20 Nordbelts and the current Nordbelt price\\. Your final margin follows from the tier proposal\\./g, '20 Nordbelts og den aktuelle Nordbelt-pris. Den endelige avance f\u00F8lger af staffelforslaget.');\n      add(/based on tier price/g, 'baseret p\u00E5 staffelpris');\n      add(/not filled in yet/g, 'ikke udfyldt endnu');\n      add(/Number of kliniklokationer/g, 'Antal kliniklokationer');\n      add(/Clinic size/g, 'Klinikst\u00F8rrelse');\n      add(/Google reviews/g, 'Google-anmeldelser');\n      add(/Trustpilot reviews/g, 'Trustpilot-anmeldelser');\n      add(/10 weeks/g, '10 uger');\n      add(/Package saving/g, 'Pakkebesparelse');\n      add(/Per unit/g, 'Per enhed');\n      add(/Stock & Multi-location/g, 'Lager og flere kliniklokationer');\n      add(/\u00A7 Bron:/g, 'Kilde:');\n    } else if (locale === 'nb') {\n      setLegend(3, 'Bruk');\n      add(/Leave this field empty/g, 'La dette feltet st\u00E5 tomt');\n      add(/Filled from package advice/g, 'Utfylt fra pakker\u00E5d');\n      add(/20 Nordbelts and the current Nordbelt price\\. Your final margin follows from the tier proposal\\./g, '20 Nordbelts og aktuell Nordbelt-pris. Endelig margin f\u00F8lger av staffelforslaget.');\n      add(/based on tier price/g, 'basert p\u00E5 staffelpris');\n      add(/not filled in yet/g, 'enn\u00E5 ikke utfylt');\n      add(/Kliniknavn/g, 'Klinikknavn');\n      add(/Professionel e-mail/g, 'Profesjonell e-post');\n      add(/Organisationstype/g, 'Organisasjonstype');\n      add(/V\u00E6lg organisationstype/g, 'Velg organisasjonstype');\n      add(/sportsl\u00E6ge \\/ klinik/g, 'idrettslege / klinikk');\n      add(/performancecenter andet/g, 'prestasjonssenter annet');\n      add(/faste s\u00E6t/g, 'faste sett');\n      add(/salg som hjemmetreningssett/g, 'selg som hjemmetreningssett');\n    } else if (locale === 'fi') {\n      setLegend(3, 'K\u00E4ytt\u00F6');\n    } else if (locale === 'pt') {\n      setLegend(3, 'Utiliza\u00E7\u00E3o');\n      add(/Guide the first repetitions and match technique, dosage and progression to the patient's capacity\\. This makes the home programme concrete before you provide a kit para casa or loan set\\./g, 'Oriente as primeiras repeti\u00E7\u00F5es e ajuste t\u00E9cnica, dose e progress\u00E3o \u00E0 capacidade do paciente. Assim, o programa para casa fica concreto antes de entregar um kit para casa ou set de empr\u00E9stimo.');\n      add(/Home continuation after clinic instruction/g, 'Continua\u00E7\u00E3o em casa ap\u00F3s instru\u00E7\u00E3o na cl\u00EDnica');\n      add(/Kit para casa contents/g, 'Conte\u00FAdo do kit para casa');\n      add(/contents/g, 'conte\u00FAdo');\n      add(/Utiliza\u00E7\u00E3o the current Nordbelt retail price as the starting point\\. This price is kept current automatically in the clinic flow based on the Nordbelt product price\\. With practice packs, your purchase price per Nordbelt is lower, creating revenda margin\\./g, 'Use o pre\u00E7o atual de venda da Nordbelt como ponto de partida. Este pre\u00E7o \u00E9 mantido atualizado automaticamente no fluxo de cl\u00EDnica com base no pre\u00E7o do produto Nordbelt. Com packs de cl\u00EDnica, o pre\u00E7o de compra por Nordbelt \u00E9 mais baixo e cria margem de revenda.');\n      add(/in the clinic/g, 'na cl\u00EDnica');\n      add(/Leave this field empty/g, 'Deixe este campo vazio');\n      add(/Filled from package advice/g, 'Preenchido a partir da recomenda\u00E7\u00E3o de pack');\n    } else if (locale === 'it') {\n      setLegend(3, 'Utilizzo');\n      add(/Guide the first repetitions and match technique, dosage and progression to the patient's capacity\\. This makes the home programme concrete before you provide a kit per casa or loan set\\./g, 'Guida le prime ripetizioni e adatta tecnica, dosaggio e progressione alla capacit\u00E0 del paziente. Cos\u00EC il programma per casa \u00E8 concreto prima di consegnare un kit per casa o un set in prestito.');\n      add(/Home continuation after clinic instruction/g, \"Continuit\u00E0 a casa dopo l'istruzione in studio\");\n    } else if (locale === 'et') {\n      setLegend(3, 'Kasutus');\n      add(/Vali pakett, mis sobib your kliinikus kasutuselev\u00F5tt/g, 'Vali pakett, mis sobib sinu kliiniku kasutuselev\u00F5tuga');\n      add(/Voor praktijken/g, 'F\u00FCsiokliinikutele');\n      add(/Website/g, 'Veebisait');\n    } else if (locale === 'es') {\n      setLegend(3, 'Uso');\n      add(/Use the current Nordbelt retail price as the starting point\\. This price is kept current automatically in the clinic flow based on the Nordbelt product price\\. With practice packs, your purchase price per Nordbelt is lower, creating reventa margin\\./g, 'Usa el precio de venta actual de Nordbelt como punto de partida. Este precio se mantiene actualizado autom\u00E1ticamente en el flujo para cl\u00EDnicas seg\u00FAn el precio del producto Nordbelt. Con los packs para cl\u00EDnicas, tu precio de compra por Nordbelt es m\u00E1s bajo y crea margen de reventa.');\n      add(/Solicitar precio para cl\u00EDnicas for 20\\+ Nordbelts/g, 'Solicitar precio para cl\u00EDnicas para 20+ Nordbelts');\n      add(/for 20\\+ Nordbelts/g, 'para 20+ Nordbelts');\n      add(/in the clinic/g, 'en la cl\u00EDnica');\n      add(/Leave this field empty/g, 'Deja este campo vac\u00EDo');\n      add(/Filled from package advice/g, 'Rellenado desde la recomendaci\u00F3n de pack');\n      add(/not filled in yet/g, 'a\u00FAn sin completar');\n      add(/based on tier price/g, 'seg\u00FAn precio por tramo');\n    } else if (locale === 'en') {\n      add(/8\\.459 participants/g, '8,459 participants');\n      add(/meerdere locations/g, 'multiple locations');\n      add(/Remit VAT on resale/g, 'Account for VAT on resale');\n      add(/\u00A7 Bron:/g, 'Source:');\n      add(/Bron:/g, 'Source:');\n    }\n\n    if (replacements.length) cleanTextAndLabels();\n  }\n\n  function setAudience(audience, options) {\n    options = options || {};\n    var root = getRoot();\n    if (root) {\n      if (!options.force && root.getAttribute('data-active-audience') === audience) {\n        return;\n      }\n      root.setAttribute('data-active-audience', audience);\n    }\n\n    var groups = document.querySelectorAll('[data-business-audience-group]');\n    groups.forEach(function (node) {\n      var shouldShow = node.getAttribute('data-business-audience-group') === audience;\n      node.hidden = !shouldShow;\n      node.setAttribute('aria-hidden', shouldShow ? 'false' : 'true');\n    });\n\n    var tabs = document.querySelectorAll('[data-business-tab]');\n    tabs.forEach(function (tab) {\n      var active = tab.getAttribute('data-business-tab') === audience;\n      tab.setAttribute('aria-selected', active ? 'true' : 'false');\n      tab.setAttribute('tabindex', active ? '0' : '-1');\n    });\n\n    if (options.track) {\n      pushBusinessEvent('business_tab_switch', {\n        business_audience: audience,\n        interaction_method: options.interactionMethod || 'unknown'\n      });\n    }\n\n    syncPlanGrids();\n    syncPlanStage();\n    syncReferralDiagram();\n    syncCompareBadgeReveal();\n  }\n\n  function syncPlanGrids() {\n    document.querySelectorAll('[data-business-plan-grid]').forEach(function (grid) {\n      var visibleCards = 0;\n      grid.querySelectorAll('.nb-business-plan-card').forEach(function (card) {\n        if (!card.hidden) {\n          visibleCards += 1;\n        }\n      });\n      grid.classList.toggle('nb-business-plan-grid--two', visibleCards === 2);\n    });\n  }\n\n  function clamp(value, min, max) {\n    return Math.min(max, Math.max(min, value));\n  }\n\n  var businessAnchorScrollFrame = 0;\n\n  function readBusinessScrollVar(name) {\n    var value = parseFloat(getComputedStyle(document.documentElement).getPropertyValue(name) || '');\n    return Number.isFinite(value) ? value : 0;\n  }\n\n  function getBusinessAnchorScrollOffset() {\n    return Math.max(\n      readBusinessScrollVar('--nb-fixed-stack-height'),\n      readBusinessScrollVar('--nb-header-live-height'),\n      readBusinessScrollVar('--nb-header-height'),\n      0\n    ) + 10;\n  }\n\n  function easeBusinessAnchorScroll(progress) {\n    if (progress <= 0.1) {\n      var intro = progress / 0.1;\n      return 0.08 * intro * intro;\n    }\n\n    var tail = (progress - 0.1) / 0.9;\n    return 0.08 + (0.92 * (1 - Math.pow(1 - tail, 3.6)));\n  }\n\n  function finishBusinessAnchorScroll(hash) {\n    businessAnchorScrollFrame = 0;\n    if (!hash) return;\n    if (window.location.hash === hash) return;\n\n    if (window.history && typeof window.history.pushState === 'function') {\n      window.history.pushState(null, '', hash);\n      return;\n    }\n\n    window.location.hash = hash;\n  }\n\n  function animateBusinessAnchorScroll(targetTop, hash) {\n    if (businessAnchorScrollFrame) {\n      window.cancelAnimationFrame(businessAnchorScrollFrame);\n      businessAnchorScrollFrame = 0;\n    }\n\n    var prefersReducedMotion = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n    if (prefersReducedMotion) {\n      window.scrollTo(0, targetTop);\n      finishBusinessAnchorScroll(hash);\n      return;\n    }\n\n    var startTop = window.pageYOffset || document.documentElement.scrollTop || 0;\n    var distance = targetTop - startTop;\n    if (Math.abs(distance) < 2) {\n      finishBusinessAnchorScroll(hash);\n      return;\n    }\n\n    var duration = Math.min(1300, Math.max(520, 420 + (Math.sqrt(Math.abs(distance)) * 18)));\n    var startTime = null;\n\n    function step(timestamp) {\n      if (startTime === null) startTime = timestamp;\n      var elapsed = timestamp - startTime;\n      var progress = clamp(elapsed / duration, 0, 1);\n      var eased = easeBusinessAnchorScroll(progress);\n      window.scrollTo(0, Math.round(startTop + (distance * eased)));\n\n      if (progress < 1) {\n        businessAnchorScrollFrame = window.requestAnimationFrame(step);\n        return;\n      }\n\n      window.scrollTo(0, targetTop);\n      finishBusinessAnchorScroll(hash);\n    }\n\n    businessAnchorScrollFrame = window.requestAnimationFrame(step);\n  }\n\n  function setPlanCardFinalState(card) {\n    card.style.setProperty('--nb-plan-card-x', '0px');\n    card.style.setProperty('--nb-plan-card-y', '0px');\n    card.style.setProperty('--nb-plan-card-rotate', '0deg');\n    card.style.setProperty('--nb-plan-card-scale', '1');\n    card.style.setProperty('--nb-plan-card-opacity', '1');\n    card.style.setProperty('--nb-plan-card-saturate', '1');\n    card.style.setProperty('--nb-plan-card-blur', '0px');\n  }\n\n  function syncPlanStage() {\n    var viewportHeight = window.innerHeight || document.documentElement.clientHeight || 1;\n    var offsetXMap = [-28, -10, 18, -16, 22, 8];\n    var offsetYMap = [78, 118, 56, 102, 74, 62];\n    var rotateMap = [-4, -2.5, 2.5, 4, -3, 2];\n\n    document.querySelectorAll('[data-business-plan-panel]').forEach(function (panel) {\n      var grid = panel.querySelector('[data-business-plan-grid]');\n      if (!grid) return;\n      var isHorizontalPlanRail =\n        window.matchMedia &&\n        window.matchMedia('(max-width: 750px)').matches &&\n        grid.offsetWidth > 0 &&\n        grid.scrollWidth > grid.clientWidth;\n\n      grid.querySelectorAll('[data-business-plan-card]').forEach(function (card) {\n        if (isHorizontalPlanRail) {\n          card.style.setProperty('transition', 'none');\n        } else {\n          card.style.removeProperty('transition');\n        }\n      });\n\n      if (panel.dataset.planStageRevealed === 'true') {\n        grid.querySelectorAll('[data-business-plan-card]').forEach(function (card) {\n          setPlanCardFinalState(card);\n        });\n        return;\n      }\n\n      var rect = panel.getBoundingClientRect();\n\n      if (\n        isHorizontalPlanRail &&\n        grid.dataset.mobileStartApplied !== 'true' &&\n        rect.top <= viewportHeight * 0.95\n      ) {\n        var targetCard = grid.querySelector('.nb-business-plan-card.is-featured') || grid.querySelector('.nb-business-plan-card[data-plan-key=\"scale-12\"]');\n\n        if (targetCard) {\n          grid.dataset.mobileStartApplied = 'pending';\n\n          var applyMobileStart = function () {\n            if (grid.dataset.mobileStartApplied === 'true') return;\n            var targetLeft = targetCard.offsetLeft - Math.max(0, (grid.clientWidth - targetCard.offsetWidth) / 2);\n            grid.scrollTo({ left: Math.max(0, targetLeft), behavior: 'auto' });\n            grid.dataset.mobileStartApplied = 'true';\n          };\n\n          window.requestAnimationFrame(function () {\n            window.requestAnimationFrame(applyMobileStart);\n          });\n          window.setTimeout(applyMobileStart, 80);\n        }\n      }\n\n      if (isHorizontalPlanRail) {\n        grid.querySelectorAll('[data-business-plan-card]').forEach(function (card) {\n          setPlanCardFinalState(card);\n        });\n        return;\n      }\n\n      if (window.getComputedStyle && window.getComputedStyle(grid).display === 'grid') {\n        panel.dataset.planStageRevealed = 'true';\n        grid.querySelectorAll('[data-business-plan-card]').forEach(function (card) {\n          setPlanCardFinalState(card);\n        });\n        return;\n      }\n\n      var startLine = viewportHeight * 0.98;\n      var firstRowEndLine = viewportHeight * 0.39;\n      var secondRowEndLine = viewportHeight * 0.44;\n      var firstRowProgress = clamp((startLine - rect.top) / Math.max(1, startLine - firstRowEndLine), 0, 1);\n      var allCardsRevealed = true;\n\n      grid.querySelectorAll('[data-business-plan-card]').forEach(function (card) {\n        var index = Number(card.getAttribute('data-business-plan-card-index') || '0');\n        var rowIndex = index >= 3 ? 1 : 0;\n        var rowProgress = firstRowProgress;\n\n        if (rowIndex === 1) {\n          var cardRect = card.getBoundingClientRect();\n          rowProgress = clamp((startLine - cardRect.top) / Math.max(1, startLine - secondRowEndLine), 0, 1);\n        }\n\n        var stagger = rowIndex === 0 ? index * 0.08 : (index - 3) * 0.1;\n        var duration = rowIndex === 0 ? 0.67 : 0.62;\n        var cardProgress = clamp((rowProgress - stagger) / duration, 0, 1);\n        if (cardProgress < 1) {\n          allCardsRevealed = false;\n        }\n        var inverse = 1 - cardProgress;\n        var baseX = offsetXMap[index % offsetXMap.length];\n        var baseY = offsetYMap[index % offsetYMap.length];\n        var baseRotate = rotateMap[index % rotateMap.length];\n\n        card.style.setProperty('--nb-plan-card-x', (baseX * inverse).toFixed(2) + 'px');\n        card.style.setProperty('--nb-plan-card-y', (baseY * inverse).toFixed(2) + 'px');\n        card.style.setProperty('--nb-plan-card-rotate', (baseRotate * inverse).toFixed(2) + 'deg');\n        card.style.setProperty('--nb-plan-card-scale', (0.93 + (cardProgress * 0.07)).toFixed(3));\n        card.style.setProperty('--nb-plan-card-opacity', (0.52 + (cardProgress * 0.48)).toFixed(3));\n        card.style.setProperty('--nb-plan-card-saturate', (0.82 + (cardProgress * 0.18)).toFixed(3));\n        card.style.setProperty('--nb-plan-card-blur', (0.65 * inverse).toFixed(3) + 'px');\n      });\n\n      if (allCardsRevealed) {\n        panel.dataset.planStageRevealed = 'true';\n        grid.querySelectorAll('[data-business-plan-card]').forEach(function (card) {\n          setPlanCardFinalState(card);\n        });\n      }\n    });\n  }\n\n  function syncReferralDiagram() {\n    var viewportHeight = window.innerHeight || document.documentElement.clientHeight || 1;\n    var reduceMotion = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n    document.querySelectorAll('.nb-business-referral').forEach(function (section) {\n      var rect = section.getBoundingClientRect();\n      var progress = 1;\n\n      if (!reduceMotion) {\n        var start = viewportHeight * 0.96;\n        var end = viewportHeight * 0.32;\n        progress = clamp((start - rect.top) / Math.max(1, start - end), 0, 1);\n      }\n\n      section.style.setProperty('--nb-referral-connector-progress', progress.toFixed(3));\n      section.style.setProperty('--nb-referral-node-scale', (0.76 + (progress * 0.24)).toFixed(3));\n      section.style.setProperty('--nb-referral-node-opacity', (0.52 + (progress * 0.48)).toFixed(3));\n\n      section.querySelectorAll('.nb-business-referral__card').forEach(function (card, index) {\n        var stagger = index * 0.1;\n        var cardProgress = reduceMotion ? 1 : clamp((progress - stagger) / 0.82, 0, 1);\n        var baseShift = index === 1 ? 18 : 24;\n        var baseScale = index === 1 ? 1.02 : 1;\n        var liveScale = (baseScale - 0.03) + (cardProgress * 0.03);\n        var hoverReady = cardProgress >= 0.9;\n\n        card.style.setProperty('--nb-referral-card-progress', cardProgress.toFixed(3));\n        card.style.setProperty('--nb-referral-card-shift', ((1 - cardProgress) * baseShift).toFixed(2) + 'px');\n        card.style.setProperty('--nb-referral-card-scale', liveScale.toFixed(3));\n        card.setAttribute('data-referral-hover-ready', hoverReady ? 'true' : 'false');\n      });\n    });\n  }\n\n  function syncCompareBadgeReveal() {\n    var viewportHeight = window.innerHeight || document.documentElement.clientHeight || 1;\n    var reduceMotion = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n    document.querySelectorAll('.nb-business-compare-table-wrap--practices').forEach(function (compareWrap) {\n      var compareTable = compareWrap.querySelector('.nb-business-compare-table');\n      var featuredHeader = compareWrap.querySelector('.nb-business-compare-table thead th[data-is-featured=\"true\"]');\n      var planHeaders = compareWrap.querySelectorAll('.nb-business-compare-table thead th:not(:first-child)');\n      var badge = compareWrap.querySelector('.nb-business-compare-table__header-badge--detached');\n      var scrollHint = compareWrap.querySelector('.nb-business-compare-table__scroll-hint--detached');\n\n      function syncDetachedX(node, cssVar, desiredCenter) {\n        if (!node || !Number.isFinite(desiredCenter)) return;\n        var baseCenter = node.offsetLeft + (node.offsetWidth / 2);\n        var translateX = desiredCenter - baseCenter;\n        node.style.setProperty(cssVar, translateX.toFixed(2) + 'px');\n      }\n\n      if (compareWrap && compareTable && featuredHeader) {\n        var wrapRect = compareWrap.getBoundingClientRect();\n        var featuredRect = featuredHeader.getBoundingClientRect();\n        var featuredCenter = (featuredRect.left - wrapRect.left) + (featuredRect.width / 2);\n        syncDetachedX(badge, '--nb-detached-badge-x', featuredCenter);\n\n        if (scrollHint && planHeaders.length >= 2) {\n          var starterRect = planHeaders[0].getBoundingClientRect();\n          var plusRect = planHeaders[1].getBoundingClientRect();\n          var starterCenter = (starterRect.left - wrapRect.left) + (starterRect.width / 2);\n          var plusCenter = (plusRect.left - wrapRect.left) + (plusRect.width / 2);\n          syncDetachedX(scrollHint, '--nb-detached-hint-x', (starterCenter + plusCenter) / 2);\n        } else if (scrollHint) {\n          scrollHint.style.setProperty('--nb-detached-hint-x', '0px');\n        }\n      } else {\n        if (badge) badge.style.setProperty('--nb-detached-badge-x', '0px');\n        if (scrollHint) scrollHint.style.setProperty('--nb-detached-hint-x', '0px');\n      }\n\n      if (!badge) return;\n\n      if (badge.dataset.badgeRevealed === 'true') {\n        badge.classList.add('is-revealed');\n        return;\n      }\n\n      var rect = badge.getBoundingClientRect();\n      var shouldReveal = rect.top <= viewportHeight * 0.42;\n\n      if (reduceMotion) {\n        if (shouldReveal) {\n          badge.dataset.badgeRevealed = 'true';\n          badge.classList.add('is-revealed');\n        }\n        return;\n      }\n\n      if (shouldReveal) {\n        badge.dataset.badgeRevealed = 'true';\n        badge.classList.add('is-revealed');\n      } else {\n        badge.classList.remove('is-revealed');\n      }\n    });\n  }\n\n  function bindPlanStage() {\n    if (!document.querySelector('[data-business-plan-panel]')) return;\n\n    var ticking = false;\n\n    function requestSync() {\n      if (ticking) return;\n      ticking = true;\n      window.requestAnimationFrame(function () {\n        syncPlanStage();\n        ticking = false;\n      });\n    }\n\n    window.addEventListener('scroll', requestSync, { passive: true });\n    window.addEventListener('resize', requestSync);\n    window.addEventListener('load', requestSync);\n    window.addEventListener('hashchange', requestSync);\n    window.setTimeout(requestSync, 220);\n    requestSync();\n  }\n\n  function bindReferralDiagram() {\n    if (!document.querySelector('.nb-business-referral')) return;\n\n    var ticking = false;\n\n    function requestSync() {\n      if (ticking) return;\n      ticking = true;\n      window.requestAnimationFrame(function () {\n        syncReferralDiagram();\n        ticking = false;\n      });\n    }\n\n    window.addEventListener('scroll', requestSync, { passive: true });\n    window.addEventListener('resize', requestSync);\n    requestSync();\n  }\n\n  function bindCompareBadgeReveal() {\n    if (!document.querySelector('.nb-business-compare-table__header-badge--detached')) return;\n\n    var ticking = false;\n\n    function requestSync() {\n      if (ticking) return;\n      ticking = true;\n      window.requestAnimationFrame(function () {\n        syncCompareBadgeReveal();\n        ticking = false;\n      });\n    }\n\n    window.addEventListener('scroll', requestSync, { passive: true });\n    window.addEventListener('resize', requestSync);\n    document.querySelectorAll('.nb-business-compare-table').forEach(function (table) {\n      table.addEventListener('scroll', requestSync, { passive: true });\n    });\n    requestSync();\n  }\n\n  function bindCompareWheelIntent() {\n    document.querySelectorAll('.nb-business-compare-table').forEach(function (table) {\n      if (table.dataset.nbCompareWheelBound === 'true') return;\n      table.dataset.nbCompareWheelBound = 'true';\n\n      table.addEventListener('wheel', function (event) {\n        if (table.scrollWidth <= table.clientWidth + 1) return;\n\n        var deltaX = Number(event.deltaX) || 0;\n        var deltaY = Number(event.deltaY) || 0;\n        var absX = Math.abs(deltaX);\n        var absY = Math.abs(deltaY);\n        var horizontalIntent = event.shiftKey ? absY > 0 : absX > absY && absX > 0;\n\n        if (!horizontalIntent) return;\n\n        var nextDelta = event.shiftKey && absX === 0 ? deltaY : deltaX;\n        if (!nextDelta) return;\n\n        var maxLeft = Math.max(0, table.scrollWidth - table.clientWidth);\n        var nextLeft = Math.max(0, Math.min(maxLeft, table.scrollLeft + nextDelta));\n        if (Math.abs(nextLeft - table.scrollLeft) < 1) return;\n\n        event.preventDefault();\n        table.scrollLeft = nextLeft;\n      }, { passive: false });\n    });\n  }\n\n  function bindTabs() {\n    var tabs = document.querySelectorAll('[data-business-tab]');\n    if (!tabs.length) return;\n\n    tabs.forEach(function (tab) {\n      tab.addEventListener('click', function () {\n        setAudience(tab.getAttribute('data-business-tab') || 'teams', {\n          track: true,\n          interactionMethod: 'click'\n        });\n      });\n\n      tab.addEventListener('keydown', function (event) {\n        if (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') return;\n        event.preventDefault();\n        var currentIndex = Array.prototype.indexOf.call(tabs, tab);\n        var nextIndex = event.key === 'ArrowRight' ? currentIndex + 1 : currentIndex - 1;\n        if (nextIndex < 0) nextIndex = tabs.length - 1;\n        if (nextIndex >= tabs.length) nextIndex = 0;\n        tabs[nextIndex].focus();\n        setAudience(tabs[nextIndex].getAttribute('data-business-tab') || 'teams', {\n          track: true,\n          interactionMethod: 'keyboard'\n        });\n      });\n    });\n  }\n\n  function bindFaqTracking() {\n    var items = document.querySelectorAll('[data-business-faq-item]');\n    if (!items.length) return;\n\n    items.forEach(function (item) {\n      item.addEventListener('toggle', function () {\n        if (!item.open) return;\n        pushBusinessEvent('business_faq_open', {\n          business_audience: item.getAttribute('data-business-faq-audience') || '',\n          faq_question: item.getAttribute('data-business-faq-question') || ''\n        });\n      });\n    });\n  }\n\n  function bindDisabledLinks() {\n    var disabledLinks = document.querySelectorAll('[data-business-link-disabled=\"true\"]');\n    if (!disabledLinks.length) return;\n\n    disabledLinks.forEach(function (link) {\n      link.addEventListener('click', function (event) {\n        event.preventDefault();\n      });\n    });\n  }\n\n  function buildBusinessCtaEvents(type, intent) {\n    var events = [];\n    if (type === 'primary') events.push('business_primary_cta_click');\n    if (intent === 'quote' || type === 'quote') events.push('business_quote_cta_click');\n    if (type === 'trial' || intent === 'trial') events.push('business_trial_cta_click');\n    if (type === 'pricing-card') events.push('business_pricing_card_cta_click');\n    return events;\n  }\n\n  function bindBusinessCtaTracking() {\n    var ctas = document.querySelectorAll('[data-business-cta-type]');\n    if (!ctas.length) return;\n\n    ctas.forEach(function (cta) {\n      cta.addEventListener('click', function () {\n        if (cta.getAttribute('aria-disabled') === 'true') return;\n        if (cta.getAttribute('data-business-link-disabled') === 'true') return;\n\n        var type = cta.getAttribute('data-business-cta-type') || '';\n        var intent = cta.getAttribute('data-business-cta-intent') || '';\n        var events = buildBusinessCtaEvents(type, intent);\n        if (!events.length) return;\n\n        var detail = {\n          business_audience: cta.getAttribute('data-business-audience') || getPageContext() || getDefaultAudience(),\n          business_cta_type: type,\n          business_cta_intent: intent,\n          business_cta_location: cta.getAttribute('data-business-cta-location') || '',\n          business_plan_key: cta.getAttribute('data-business-plan-key') || '',\n          business_cta_id: cta.getAttribute('data-nb-cta') || '',\n          business_cta_label: (cta.textContent || '').trim(),\n          business_cta_href: cta.getAttribute('href') || ''\n        };\n\n        events.forEach(function (eventName) {\n          pushBusinessEvent(eventName, detail);\n        });\n      });\n    });\n  }\n\n  function bindBusinessAnchorScroll() {\n    var root = getRoot();\n    if (!root) return;\n\n    document.querySelectorAll('a[href*=\"#\"]').forEach(function (link) {\n      if (link.dataset.businessAnchorScrollBound === 'true') return;\n      link.dataset.businessAnchorScrollBound = 'true';\n\n      link.addEventListener('click', function (event) {\n        if (link.getAttribute('aria-disabled') === 'true') return;\n        if (link.getAttribute('data-business-link-disabled') === 'true') return;\n\n        var href = link.getAttribute('href') || '';\n        if (!href || href === '#') return;\n\n        var url = null;\n        try {\n          url = new URL(href, window.location.href);\n        } catch (error) {\n          return;\n        }\n\n        if (!url.hash) return;\n\n        var normalizePath = function (value) {\n          return String(value || '').replace(/\\/+$/, '') || '/';\n        };\n\n        if (url.origin !== window.location.origin) return;\n        if (normalizePath(url.pathname) !== normalizePath(window.location.pathname)) return;\n\n        var targetId = decodeURIComponent(String(url.hash).replace(/^#/, ''));\n        var target = document.getElementById(targetId);\n        if (!target) return;\n\n        event.preventDefault();\n        var targetTop = Math.max(0, Math.round(window.scrollY + target.getBoundingClientRect().top - getBusinessAnchorScrollOffset()));\n        animateBusinessAnchorScroll(targetTop, '#' + targetId);\n      });\n    });\n  }\n\n  function normalizeSegment(segment) {\n    if (segment === 'practices') return 'practice';\n    return segment;\n  }\n\n  function setRequiredState(field, shouldRequire) {\n    if (!field) return;\n    if (shouldRequire) {\n      field.setAttribute('required', 'required');\n      return;\n    }\n    field.removeAttribute('required');\n  }\n\n  function getPracticeQuotePlanMeta(plan) {\n    switch (plan) {\n      case '20plus':\n      case 'group-20plus':\n      case '20-plus':\n        return {\n          requestType: '20+ Nordbelts',\n          summaryLabel: '20+ Nordbelts',\n          volume: '20+ Nordbelts'\n        };\n      case 'multi-locatie':\n      case 'multilocatie':\n      case 'multiple-locations':\n        return {\n          requestType: 'Meerdere locaties',\n          summaryLabel: 'meerdere locaties',\n          volume: ''\n        };\n      case 'thuisvoorraad':\n      case 'practice-home-stock':\n      case 'home-stock':\n        return {\n          requestType: 'Praktijk + thuisvoorraad',\n          summaryLabel: 'praktijk + thuisvoorraad',\n          volume: ''\n        };\n      case 'uitleensets':\n      case 'uitleenset':\n      case 'thuispakketten':\n      case 'home-kits':\n        return {\n          requestType: 'Uitleensets / thuispakketten',\n          summaryLabel: 'uitleensets of thuispakketten',\n          volume: ''\n        };\n      case 'workshop':\n      case 'onboarding':\n      case 'workshop-onboarding':\n        return {\n          requestType: 'Workshop / onboarding',\n          summaryLabel: 'workshop of onboarding',\n          volume: ''\n        };\n      case 'start':\n        return {\n          requestType: '',\n          summaryLabel: '4 Nordbelts',\n          volume: '4 Nordbelts'\n        };\n      case 'praktijk':\n        return {\n          requestType: '',\n          summaryLabel: '8 Nordbelts',\n          volume: '8 Nordbelts'\n        };\n      case 'partner':\n        return {\n          requestType: '',\n          summaryLabel: '12 Nordbelts',\n          volume: '12 Nordbelts'\n        };\n      case 'netwerk':\n        return {\n          requestType: '',\n          summaryLabel: 'grotere uitrol',\n          volume: '32+ Nordbelts'\n        };\n      default:\n        return {\n          requestType: '',\n          summaryLabel: '',\n          volume: ''\n        };\n    }\n  }\n\n  function getPracticeQuoteRequestType(plan) {\n    return getPracticeQuotePlanMeta(plan).requestType || '';\n  }\n\n  function buildQuotePrefillCopy(segment, plan) {\n    var normalizedSegment = normalizeSegment(segment);\n    var segmentLabel = normalizedSegment === 'teams' ? 'Teams & clubs' : 'Fysiopraktijken';\n    var planConfig = quotePrefillConfig[normalizedSegment] && quotePrefillConfig[normalizedSegment][plan];\n    var practicePlanMeta = normalizedSegment === 'practice' ? getPracticeQuotePlanMeta(plan) : null;\n    if (!planConfig) return null;\n\n    var summary = 'Je komt binnen via ' + segmentLabel + ' en vraagt nu informatie aan over ' + planConfig.label + ' (' + planConfig.volume + ').';\n    var message = 'Aanvraag via business pricing pagina.\\nSegment: ' + segmentLabel + '\\nPakket: ' + planConfig.label + '\\nGewenste staffel: ' + planConfig.volume + '\\n\\nExtra context:';\n    var requestType = '';\n\n    if (normalizedSegment === 'practice') {\n      var summaryLabel = practicePlanMeta && practicePlanMeta.summaryLabel ? practicePlanMeta.summaryLabel : planConfig.label;\n      var volume = practicePlanMeta && practicePlanMeta.volume ? practicePlanMeta.volume : planConfig.volume;\n      summary = 'Je vraagt een praktijkofferte aan voor ' + summaryLabel + (volume ? ' (' + volume + ')' : '') + '.';\n      message = '';\n      requestType = getPracticeQuoteRequestType(plan);\n      planConfig = {\n        label: planConfig.label,\n        volume: volume\n      };\n    }\n\n    return {\n      subjectSuffix: segmentLabel + ' | ' + planConfig.label,\n      summary: summary,\n      volume: planConfig.volume,\n      message: message,\n      messagePlaceholder: normalizedSegment === 'practice'\n        ? 'Vertel kort wat je wilt uitrollen, voor hoeveel kamers, therapeuten of locaties, en of thuiscontinuatie of onboarding meespeelt.'\n        : undefined,\n      requestType: requestType\n    };\n  }\n\n  function buildTrialPrefillCopy(segment) {\n    var normalizedSegment = normalizeSegment(segment);\n    var segmentLabel = normalizedSegment === 'teams' ? 'Teams & clubs' : 'Fysiopraktijken';\n    var trialLabel = normalizedSegment === 'teams' ? '1 demo-unit' : '1 proef-Nordbelt';\n    var pricingConfig = readBusinessPricingConfig();\n    var trialPricing = pricingConfig && pricingConfig.shared && pricingConfig.shared.trial || null;\n    var trialPriceKnown = Boolean(trialPricing && trialPricing.priceCents !== null && trialPricing.priceCents !== undefined);\n    var trialHasNoProductCost = trialPriceKnown && Number(trialPricing.priceCents) === 0;\n    var trialPaymentCopy = trialHasNoProductCost\n      ? 'Je betaalt alleen de verzendkosten.'\n      : trialPricing && trialPricing.priceFormatted\n        ? 'De actuele productprijs is ' + trialPricing.priceFormatted + '; verzendkosten worden bij checkout berekend.'\n        : 'De actuele productprijs en verzendkosten worden bij checkout getoond.';\n    var trialPricePoint = trialHasNoProductCost\n      ? 'Alleen verzendkosten'\n      : trialPricing && trialPricing.priceFormatted\n        ? 'Productprijs ' + trialPricing.priceFormatted\n        : 'Actuele prijs in checkout';\n\n    return {\n      subjectSuffix: segmentLabel + ' | ' + trialLabel,\n      lead: normalizedSegment === 'teams'\n        ? 'Vraag een demo-unit aan voor staff of \u00E9\u00E9n atleet. ' + trialPaymentCopy + ' We beoordelen iedere aanvraag handmatig.'\n        : 'Vraag een proef-Nordbelt aan voor gebruik in de behandelkamer. ' + trialPaymentCopy + ' We beoordelen iedere aanvraag handmatig.',\n      summaryTitle: normalizedSegment === 'teams' ? 'Demo-aanvraag teams' : 'Proefaanvraag fysiopraktijk',\n      summary: normalizedSegment === 'teams'\n        ? 'Je vraagt 1 demo-unit aan voor een team-, staff- of pilotmoment.'\n        : 'Je vraagt 1 proef-Nordbelt aan om de setup eerst in behandeling te testen.',\n      points: [\n        '\u00C9\u00E9n aanvraag per organisatie',\n        trialPricePoint,\n        'Geen retour nodig'\n      ],\n      messageLabel: 'Kwalificatie en toelichting',\n      messagePlaceholder: normalizedSegment === 'teams'\n        ? 'Beschrijf kort hoe je Nordbelt wilt testen, met wie en wat een logische vervolgstaffel zou zijn.'\n        : 'Beschrijf kort hoe je Nordbelt in de behandelkamer wilt testen en hoe je het daarna mogelijk wilt opschalen.',\n      message: 'Trial-aanvraag via business pricing pagina.\\nSegment: ' + segmentLabel + '\\nGewenst: ' + trialLabel + '\\n\\nBeoogd gebruik en context:',\n      submitLabel: normalizedSegment === 'teams' ? 'Demo-unit aanvragen' : 'Proef-Nordbelt aanvragen'\n    };\n  }\n\n  function setFlowVisibility(flow) {\n    var normalizedFlow = flow === 'trial' ? 'trial' : 'quote';\n    document.querySelectorAll('[data-business-flow-only]').forEach(function (node) {\n      var nodeFlow = node.getAttribute('data-business-flow-only') || '';\n      var shouldShow = nodeFlow === normalizedFlow;\n      node.hidden = !shouldShow;\n      node.querySelectorAll('[data-business-required-for]').forEach(function (field) {\n        setRequiredState(field, shouldShow && field.getAttribute('data-business-required-for') === normalizedFlow);\n      });\n    });\n  }\n\n  function getPracticeQuoteMeta() {\n    var node = document.querySelector('[data-practice-trial-cart-url]');\n    return {\n      trialUrl: node && node.getAttribute('data-practice-trial-cart-url') || '/products/proef-nordbelt-voor-fysiopraktijken',\n      practicePageUrl: node && node.getAttribute('data-practice-page-url') || '/pages/fysiopraktijken',\n      practicePlansUrl: node && node.getAttribute('data-practice-plans-url') || '/pages/fysiopraktijken#business-pricing-plans'\n    };\n  }\n\n  function applyPracticeRouteChrome(mode) {\n    var isTrial = mode === 'trial';\n    var body = document.body;\n    var locale = getPracticeB2BLocaleBase();\n    var medicalProofCopy = locale === 'et'\n      ? 'Kujundatud koost\u00F6\u00F6s meditsiinispetsialistidega'\n      : 'Ontwikkeld in Nederland met medische professionals';\n    if (body) {\n      body.setAttribute('data-b2b-layout', 'true');\n      body.setAttribute('data-b2b-context', isTrial ? 'practice-trial' : 'practice-quote');\n      body.setAttribute('data-practice-funnel', 'true');\n      body.setAttribute('data-quote-segment', 'practice');\n      body.classList.add('nb-theme--b2b', 'nb-theme--practice-funnel');\n    }\n\n    var announcementText = document.querySelector('.nb-announcement__inner span');\n    if (announcementText) {\n      announcementText.textContent = medicalProofCopy;\n    }\n\n    var header = document.querySelector('[data-nb-header]');\n    if (!header) return;\n\n    header.classList.add('nb-header--business');\n    header.setAttribute('data-nb-header-business', 'true');\n\n    header.querySelectorAll('[data-b2b-nav=\"practices\"], [data-nb-cta=\"header_practices_link\"]').forEach(function (link) {\n      link.classList.add('is-active');\n      link.setAttribute('aria-current', 'page');\n    });\n\n    var practicesCard = header.querySelector('[data-nb-cta=\"header_panel_practices\"]');\n    if (practicesCard) {\n      practicesCard.classList.add('is-featured');\n    }\n\n    var microproof = header.querySelector('.nb-header__microproof');\n    if (!microproof) return;\n\n    microproof.classList.add('nb-header__microproof--business');\n    microproof.setAttribute('aria-label', 'Zakelijke context');\n\n    var pills = microproof.querySelectorAll('.nb-header__microproof-pill');\n    if (!pills.length) return;\n\n    for (var index = 1; index < pills.length; index += 1) {\n      pills[index].remove();\n    }\n\n    var firstPill = pills[0];\n    var pillText = firstPill.querySelector('span:last-child');\n    if (pillText) {\n      pillText.textContent = medicalProofCopy;\n    }\n  }\n\n  function hidePracticeQuoteChrome(shell) {\n    if (!shell) return;\n\n    var rte = shell.querySelector('.nb-page-shell__rte');\n    var links = shell.querySelector('.nb-page-links');\n    if (rte) rte.hidden = true;\n    if (links) links.hidden = true;\n  }\n\n  function hideQuoteRow(form, fieldId) {\n    if (!form) return;\n    var field = form.querySelector('#' + fieldId);\n    if (!field) return;\n\n    var row = field.closest('.nb-page-form__row');\n    if (!row) return;\n\n    row.hidden = true;\n    row.style.display = 'none';\n    row.querySelectorAll('input, textarea, select').forEach(function (input) {\n      input.disabled = true;\n      input.removeAttribute('required');\n    });\n  }\n\n  function insertPracticeRowAfter(targetRow, rowId, labelText, fieldHtml) {\n    if (!targetRow || !targetRow.parentNode) return null;\n\n    var existing = targetRow.parentNode.querySelector('#' + rowId);\n    if (existing) {\n      return existing.closest('.nb-page-form__row');\n    }\n\n    var row = document.createElement('div');\n    row.className = 'nb-page-form__row';\n    row.innerHTML = '<label for=\"' + rowId + '\">' + labelText + '</label>' + fieldHtml;\n    targetRow.insertAdjacentElement('afterend', row);\n    return row;\n  }\n\n  function applyPracticeQuoteVariant(plan) {\n    var shell = document.querySelector('.nb-page-shell--quote');\n    if (!shell) return;\n\n    applyPracticeRouteChrome('quote');\n    hidePracticeQuoteChrome(shell);\n\n    var title = shell.querySelector('.nb-page-shell__title');\n    if (title) {\n      title.textContent = 'Vraag een offerte aan voor 20+ Nordbelts of meerdere locaties';\n    }\n\n    var block = shell.querySelector('.nb-page-block');\n    if (!block) return;\n    block.classList.add('nb-page-block--practice-quote');\n\n    var lead = block.querySelector('[data-business-request-lead]');\n    if (lead) {\n      lead.textContent = 'Voor praktijken, sportmedische centra en sportartsen die Nordbelt willen uitrollen per kamer, team of locatie. Laat kort weten wat je nodig hebt; we stemmen de rest daarna samen af.';\n    }\n    var summaryTitle = block.querySelector('[data-business-request-summary-title]');\n    if (summaryTitle) {\n      summaryTitle.textContent = 'Geselecteerde route';\n    }\n\n    var microcopy = block.querySelector('.nb-page-block__microcopy');\n    if (!microcopy && lead && lead.parentNode) {\n      microcopy = document.createElement('p');\n      microcopy.className = 'nb-page-block__microcopy';\n      lead.insertAdjacentElement('afterend', microcopy);\n    }\n    if (microcopy) {\n      microcopy.textContent = 'Reactie doorgaans binnen 1 werkdag';\n    }\n\n    var form = block.querySelector('form.nb-page-form');\n    if (!form) return;\n\n    form.classList.add('nb-page-form--practice-quote');\n\n    var subject = form.querySelector('input[name=\"contact[subject]\"]');\n    if (subject) {\n      subject.value = 'Offerte aanvraag Nordbelt | Praktijk 20+ / maatwerk';\n    }\n\n    var flowInput = form.querySelector('#QuoteFlow');\n    var segmentInput = form.querySelector('#QuoteSegment');\n    var planInput = form.querySelector('#QuotePlan');\n    if (flowInput) flowInput.value = 'quote';\n    if (segmentInput) segmentInput.value = 'practice';\n    if (planInput && plan && !planInput.value) planInput.value = plan;\n\n    var companyInput = form.querySelector('#QuoteCompany');\n    var companyRow = companyInput && companyInput.closest('.nb-page-form__row');\n    var nameInput = form.querySelector('#QuoteName');\n    var nameRow = nameInput && nameInput.closest('.nb-page-form__row');\n    if (nameRow) {\n      var nameLabel = nameRow.querySelector('label');\n      if (nameLabel) nameLabel.textContent = 'Naam';\n    }\n    var emailInput = form.querySelector('#QuoteEmail');\n    var emailRow = emailInput && emailInput.closest('.nb-page-form__row');\n    if (emailRow) {\n      var emailLabel = emailRow.querySelector('label');\n      if (emailLabel) emailLabel.textContent = 'Zakelijk e-mailadres';\n    }\n    if (companyInput && companyRow) {\n      var companyLabel = companyRow.querySelector('label');\n      if (companyLabel) companyLabel.textContent = 'Praktijk / organisatie';\n    }\n\n    var phoneRow = insertPracticeRowAfter(\n      companyRow,\n      'QuotePhone',\n      'Telefoon (optioneel)',\n      '<input id=\"QuotePhone\" type=\"tel\" name=\"contact[phone]\">'\n    );\n    var requestTypeRow = insertPracticeRowAfter(\n      phoneRow || companyRow,\n      'PracticeQuoteRequestType',\n      'Type aanvraag',\n      '<select id=\"PracticeQuoteRequestType\" name=\"contact[type_aanvraag]\" required>' +\n        '<option value=\"\">Kies een aanvraagtype</option>' +\n        '<option value=\"20+ Nordbelts\">20+ Nordbelts</option>' +\n        '<option value=\"Meerdere locaties\">Meerdere locaties</option>' +\n        '<option value=\"Praktijk + thuisvoorraad\">Praktijk + thuisvoorraad</option>' +\n        '<option value=\"Uitleensets / thuispakketten\">Uitleensets / thuispakketten</option>' +\n        '<option value=\"Workshop / onboarding\">Workshop / onboarding</option>' +\n        '<option value=\"Anders\">Anders</option>' +\n      '</select>'\n    );\n\n    var volumeInput = form.querySelector('#QuoteVolume');\n    var volumeRow = volumeInput && volumeInput.closest('.nb-page-form__row');\n    if (volumeRow) {\n      var volumeLabel = volumeRow.querySelector('label');\n      if (volumeLabel) volumeLabel.textContent = 'Gewenst aantal';\n      volumeInput.setAttribute('placeholder', 'Bijv. 20, 24 of 40 Nordbelts');\n    }\n\n    insertPracticeRowAfter(\n      volumeRow || requestTypeRow,\n      'PracticeQuoteLocations',\n      'Aantal locaties (optioneel)',\n      '<input id=\"PracticeQuoteLocations\" type=\"text\" name=\"contact[aantal_locaties]\" placeholder=\"Bijv. 2 of 5 locaties\">'\n    );\n\n    ['QuoteRole', 'QuoteWebsite', 'QuoteCountry', 'QuoteShipping', 'QuoteFutureQuantity', 'QuoteUse'].forEach(function (fieldId) {\n      hideQuoteRow(form, fieldId);\n    });\n\n    var messageLabel = form.querySelector('[data-business-message-label]');\n    var messageInput = form.querySelector('#QuoteMessage');\n    if (messageLabel) {\n      messageLabel.textContent = 'Korte toelichting';\n    }\n    if (messageInput) {\n      messageInput.setAttribute('placeholder', 'Vertel kort wat je wilt uitrollen, voor hoeveel kamers, therapeuten of locaties, en of thuiscontinuatie of onboarding meespeelt.');\n    }\n\n    var submitButton = form.querySelector('[data-business-request-submit]');\n    if (submitButton) {\n      submitButton.textContent = 'Vraag offerte aan';\n      submitButton.setAttribute('data-nb-cta', 'practice_quote_submit');\n      submitButton.setAttribute('data-business-cta-type', 'primary');\n      submitButton.setAttribute('data-business-cta-intent', 'quote');\n      submitButton.setAttribute('data-business-cta-location', 'practice-quote-page');\n      submitButton.setAttribute('data-business-audience', 'practices');\n    }\n\n    var scopeCard = block.querySelector('.nb-page-mini-card--practice-scope');\n    if (!scopeCard) {\n      scopeCard = document.createElement('div');\n      scopeCard.className = 'nb-page-mini-card nb-page-mini-card--practice-scope';\n      scopeCard.innerHTML =\n        '<h3>Geschikt voor grotere praktijkuitrol</h3>' +\n        '<ul class=\"nb-page-mini-card__list\">' +\n          '<li>20+ Nordbelts</li>' +\n          '<li>Meerdere locaties</li>' +\n          '<li>Praktijk + thuisvoorraad</li>' +\n          '<li>Uitleensets / thuispakketten</li>' +\n          '<li>Workshop / onboarding</li>' +\n        '</ul>';\n      if (microcopy) {\n        microcopy.insertAdjacentElement('afterend', scopeCard);\n      } else if (lead) {\n        lead.insertAdjacentElement('afterend', scopeCard);\n      }\n    }\n\n    var meta = getPracticeQuoteMeta();\n    var returnCard = block.querySelector('.nb-page-mini-card--practice-return');\n    if (!returnCard) {\n      returnCard = document.createElement('div');\n      returnCard.className = 'nb-page-mini-card nb-page-mini-card--practice-return';\n      block.appendChild(returnCard);\n    }\n    returnCard.innerHTML =\n      '<h3>Liever eerst testen?</h3>' +\n      '<p>Bestel eerst een proef-Nordbelt of start met een kleiner pakket vanaf de praktijkpagina. Schaal daarna op zodra Nordbelt goed in je praktijkflow zit.</p>' +\n      '<div class=\"nb-page-cta-row\">' +\n        '<a class=\"nb-button nb-button--secondary\" href=\"' + meta.practicePageUrl + '\" data-nb-cta=\"practice_quote_back_to_page\" data-business-cta-type=\"secondary\" data-business-cta-intent=\"back-to-page\" data-business-cta-location=\"practice-quote-page\" data-business-audience=\"practices\">Terug naar praktijkpagina</a>' +\n        '<a class=\"nb-button\" href=\"' + meta.trialUrl + '\" data-nb-cta=\"practice_quote_trial_direct_order\" data-business-cta-type=\"primary\" data-business-cta-intent=\"buy\" data-business-cta-location=\"practice-quote-page\" data-business-audience=\"practices\">Bestel proef-Nordbelt</a>' +\n      '</div>';\n  }\n\n  function applyPracticeTrialVariant() {\n    var shell = document.querySelector('.nb-page-shell--quote');\n    if (!shell) return;\n\n    applyPracticeRouteChrome('trial');\n    hidePracticeQuoteChrome(shell);\n\n    var title = shell.querySelector('.nb-page-shell__title');\n    if (title) {\n      title.textContent = 'Test Nordbelt eerst in je eigen praktijk';\n    }\n\n    var block = shell.querySelector('.nb-page-block');\n    if (!block) return;\n\n    var meta = getPracticeQuoteMeta();\n    block.className = 'nb-page-block nb-page-block--practice-trial';\n    block.innerHTML =\n      '<p class=\"nb-page-block__lead\">Bestel 1 proef-Nordbelt, test hem in behandeling en schaal daarna op per kamer of team.</p>' +\n      '<div class=\"nb-page-mini-card nb-page-mini-card--practice-trial\">' +\n        '<ul class=\"nb-page-mini-card__list\">' +\n          '<li>1 proef-Nordbelt</li>' +\n          '<li>Verzendkosten worden berekend bij checkout</li>' +\n          '<li>Schaal daarna op naar een passende staffel</li>' +\n          '<li>Direct inzetbaar in behandeling en thuisuitleg</li>' +\n        '</ul>' +\n      '</div>' +\n      '<div class=\"nb-page-cta-row\">' +\n        '<a class=\"nb-button\" href=\"' + meta.trialUrl + '\" data-nb-cta=\"practice_quote_trial_direct_order\" data-business-cta-type=\"primary\" data-business-cta-intent=\"buy\" data-business-cta-location=\"practice-trial-page\" data-business-audience=\"practices\">Bestel proef-Nordbelt</a>' +\n        '<a class=\"nb-button nb-button--secondary\" href=\"' + meta.practicePlansUrl + '\" data-nb-cta=\"practice_quote_trial_back_to_plans\" data-business-cta-type=\"secondary\" data-business-cta-intent=\"view-plans\" data-business-cta-location=\"practice-trial-page\" data-business-audience=\"practices\">Bekijk praktijkpakketten</a>' +\n      '</div>' +\n      '<p class=\"nb-page-block__microcopy\">Geen uitgebreide offerte nodig om te testen</p>';\n  }\n\n\t  function initQuotePrefill() {\n\t    var path = (window.location.pathname || '').toLowerCase();\n\t    if (path.indexOf('/pages/request-a-quote') === -1) return;\n\n    var params = new URLSearchParams(window.location.search || '');\n    var flow = (params.get('flow') || 'quote').toLowerCase();\n    var segment = normalizeSegment((params.get('segment') || '').toLowerCase());\n    var plan = (params.get('plan') || '').toLowerCase();\n    var normalizedFlow = flow === 'trial' ? 'trial' : 'quote';\n\n    var config = null;\n    if (normalizedFlow === 'trial') {\n      if (!segment) segment = 'practice';\n      config = buildTrialPrefillCopy(segment);\n    } else if (segment && plan) {\n      config = buildQuotePrefillCopy(segment, plan);\n    } else if (segment) {\n      config = {\n        subjectSuffix: (segment === 'teams' ? 'Teams & clubs' : 'Fysiopraktijken') + ' | Zakelijke aanvraag',\n        summary: 'Je vraagt meer informatie aan voor een zakelijke Nordbelt-uitrol.',\n        volume: '',\n        message: 'Aanvraag via business pricing pagina.\\nSegment: ' + (segment === 'teams' ? 'Teams & clubs' : 'Fysiopraktijken') + '\\n\\nExtra context:'\n      };\n    }\n\n    if (segment === 'practice' && normalizedFlow === 'trial') {\n      applyPracticeTrialVariant();\n      return;\n    }\n\n    if (segment === 'practice') {\n      applyPracticeQuoteVariant(plan);\n    }\n\n    setFlowVisibility(normalizedFlow);\n\n    var summary = document.querySelector('[data-business-quote-prefill-summary]');\n    var summaryTitle = document.querySelector('[data-business-request-summary-title]');\n    var summaryCopy = document.querySelector('[data-business-quote-prefill-copy]');\n    var summaryPoints = document.querySelector('[data-business-request-summary-points]');\n    var lead = document.querySelector('[data-business-request-lead]');\n    var subject = document.querySelector('input[name=\"contact[subject]\"]');\n    var flowInput = document.getElementById('QuoteFlow');\n    var segmentInput = document.getElementById('QuoteSegment');\n    var planInput = document.getElementById('QuotePlan');\n    var volumeInput = document.getElementById('QuoteVolume');\n    var messageInput = document.getElementById('QuoteMessage');\n    var messageLabel = document.querySelector('[data-business-message-label]');\n    var submitButton = document.querySelector('[data-business-request-submit]');\n    var requestTypeInput = document.getElementById('PracticeQuoteRequestType');\n\n    if (flowInput) flowInput.value = normalizedFlow;\n    if (segmentInput) segmentInput.value = segment || '';\n    if (planInput) planInput.value = plan || '';\n\n    if (!config) return;\n\n    if (summary && summaryCopy) {\n      summary.hidden = false;\n      if (summaryTitle && config.summaryTitle) {\n        summaryTitle.textContent = config.summaryTitle;\n      }\n      summaryCopy.textContent = config.summary;\n      if (summaryPoints) {\n        summaryPoints.innerHTML = '';\n        if (Array.isArray(config.points) && config.points.length) {\n          config.points.forEach(function (item) {\n            var li = document.createElement('li');\n            li.textContent = item;\n            summaryPoints.appendChild(li);\n          });\n          summaryPoints.hidden = false;\n        } else {\n          summaryPoints.hidden = true;\n        }\n      }\n    }\n\n    if (lead && config.lead) {\n      lead.textContent = config.lead;\n    }\n\n    if (subject) {\n      var baseSubject = subject.getAttribute('data-base-subject') || subject.value;\n      subject.setAttribute('data-base-subject', baseSubject);\n      subject.value = baseSubject + ' | ' + config.subjectSuffix;\n    }\n\n    if (volumeInput && !volumeInput.value) {\n      volumeInput.value = config.volume;\n    }\n\n    if (requestTypeInput && config.requestType && !requestTypeInput.value) {\n      requestTypeInput.value = config.requestType;\n    }\n\n    if (messageLabel && config.messageLabel) {\n      messageLabel.textContent = config.messageLabel;\n    }\n\n    if (messageInput && !messageInput.value) {\n      messageInput.value = config.message;\n    }\n\n    if (messageInput && config.messagePlaceholder) {\n      messageInput.setAttribute('placeholder', config.messagePlaceholder);\n    }\n\n    if (submitButton && config.submitLabel) {\n      submitButton.textContent = config.submitLabel;\n\t    }\n\t  }\n\n\t  var businessPricingConfigCache = undefined;\n\n\t  function readBusinessPricingConfig() {\n\t    if (businessPricingConfigCache !== undefined) return businessPricingConfigCache;\n\n\t    var script = document.querySelector('script[data-business-pricing-config]');\n\t    if (!script) {\n\t      businessPricingConfigCache = null;\n\t      return businessPricingConfigCache;\n\t    }\n\n\t    try {\n\t      businessPricingConfigCache = JSON.parse(script.textContent || '{}');\n\t    } catch (error) {\n\t      businessPricingConfigCache = null;\n\t    }\n\n\t    if (businessPricingConfigCache) {\n\t      if (\n\t        businessPricingConfigCache.practicePricing &&\n\t        !businessPricingConfigCache.practicePricing.packages &&\n\t        Array.isArray(businessPricingConfigCache.practicePricing.pakette)\n\t      ) {\n\t        businessPricingConfigCache.practicePricing.packages = businessPricingConfigCache.practicePricing.pakette;\n\t      }\n\t      window.NordbeltBusinessPricingConfig = businessPricingConfigCache;\n\t      if (businessPricingConfigCache.practicePricing) {\n\t        window.NordbeltPracticeB2BPricing = businessPricingConfigCache.practicePricing;\n\t      }\n\t    }\n\n\t    return businessPricingConfigCache;\n\t  }\n\n\t  function getPracticePricingConfig() {\n\t    var config = readBusinessPricingConfig();\n\t    return config && config.practicePricing ? config.practicePricing : null;\n\t  }\n\n\t  function getBusinessPricingCurrency() {\n\t    var config = readBusinessPricingConfig();\n\t    return String(\n\t      config && config.currency ||\n\t      window.Shopify && window.Shopify.currency && window.Shopify.currency.active ||\n\t      ''\n\t    ).toUpperCase();\n\t  }\n\n\t  function formatPracticeB2BCents(cents) {\n\t    var value = Number(cents);\n\t    if (!Number.isFinite(value)) return getPracticeB2BText('unavailable');\n\t    var currency = getBusinessPricingCurrency();\n\t    var locale = document.documentElement.getAttribute('lang') || navigator.language || 'nl-NL';\n\t    if (!currency) return (value / 100).toFixed(2);\n\n\t    try {\n\t      return new Intl.NumberFormat(locale, {\n\t        style: 'currency',\n\t        currency: currency,\n\t        minimumFractionDigits: 2,\n\t        maximumFractionDigits: 2\n\t      }).format(value / 100);\n\t    } catch (error) {\n\t      return currency + ' ' + (value / 100).toFixed(2);\n\t    }\n\t  }\n\n\t  function calculatePracticeB2BPackage(config, packageConfig, useVatCorrection) {\n\t    var patientPriceCents = Number(config && config.patientPriceCents);\n\t    var packagePriceCents = Number(packageConfig && packageConfig.priceCents);\n\t    var quantity = Number(packageConfig && packageConfig.quantity);\n\t    var vatRate = Number(config && config.vatRate) || 1.21;\n\t    var sourceCompareAtCents = Number(packageConfig && packageConfig.compareAtCents);\n\t    var sourceUnitCostCents = Number(packageConfig && packageConfig.unitCostCents);\n\t    var sourceMarginCents = Number(packageConfig && packageConfig.marginCents);\n\t    var sourceMarginPerUnitCents = Number(packageConfig && packageConfig.marginPerUnitCents);\n\t    var sourceRevenueCents = Number(packageConfig && packageConfig.revenueCents);\n\n\t    if (\n\t      !Number.isFinite(patientPriceCents) ||\n\t      !Number.isFinite(packagePriceCents) ||\n\t      !Number.isFinite(quantity) ||\n\t      patientPriceCents <= 0 ||\n\t      packagePriceCents <= 0 ||\n\t      quantity <= 0\n\t    ) {\n\t      return null;\n\t    }\n\n\t    var unitCost = Number.isFinite(sourceUnitCostCents) && sourceUnitCostCents > 0\n\t      ? sourceUnitCostCents\n\t      : packagePriceCents / quantity;\n\t    var revenueWithoutVat = Number.isFinite(sourceRevenueCents) && sourceRevenueCents > 0\n\t      ? sourceRevenueCents\n\t      : Number.isFinite(sourceCompareAtCents) && sourceCompareAtCents > 0\n\t        ? sourceCompareAtCents\n\t        : patientPriceCents * quantity;\n\t    var marginWithoutVat = Number.isFinite(sourceMarginCents) && sourceMarginCents > 0\n\t      ? sourceMarginCents\n\t      : revenueWithoutVat - packagePriceCents;\n\t    var marginPerUnitWithoutVat = Number.isFinite(sourceMarginPerUnitCents) && sourceMarginPerUnitCents > 0\n\t      ? sourceMarginPerUnitCents\n\t      : marginWithoutVat / quantity;\n\t    var netPatientPriceWithVat = patientPriceCents / vatRate;\n\t    var revenueWithVat = netPatientPriceWithVat * quantity;\n\t    var marginWithVat = revenueWithVat - packagePriceCents;\n\t    var marginPerUnitWithVat = marginWithVat / quantity;\n\n\t    return {\n\t      unitCost: unitCost,\n\t      packagePrice: packagePriceCents,\n\t      revenue: useVatCorrection ? revenueWithVat : revenueWithoutVat,\n\t      margin: useVatCorrection ? marginWithVat : marginWithoutVat,\n\t      marginPerUnit: useVatCorrection ? marginPerUnitWithVat : marginPerUnitWithoutVat,\n\t      netPatientPriceWithVat: netPatientPriceWithVat,\n\t      revenueWithoutVat: revenueWithoutVat,\n\t      marginWithoutVat: marginWithoutVat,\n\t      marginPerUnitWithoutVat: marginPerUnitWithoutVat,\n\t      revenueWithVat: revenueWithVat,\n\t      marginWithVat: marginWithVat,\n\t      marginPerUnitWithVat: marginPerUnitWithVat\n\t    };\n\t  }\n\n\t  window.NordbeltPracticeB2BTools = {\n\t    formatCents: formatPracticeB2BCents,\n\t    calculatePackage: calculatePracticeB2BPackage\n\t  };\n\n\t  function getPracticeB2BPackageShortLabel(packageConfig) {\n\t    var quantity = Number(packageConfig && packageConfig.quantity);\n\t    var key = String(packageConfig && packageConfig.key || '');\n\t    if (key.indexOf('20plus') !== -1 || quantity >= 20) return '20+';\n\t    if (quantity > 0) return quantity + '-pack';\n\t    return packageConfig && packageConfig.label ? packageConfig.label : getPracticeB2BText('packageFallback');\n\t  }\n\n\t  function getPracticeB2BPackageName(packageConfig) {\n\t    var shortLabel = getPracticeB2BPackageShortLabel(packageConfig);\n\t    var label = packageConfig && packageConfig.label ? packageConfig.label : '';\n\t    if (!label || label === shortLabel) return shortLabel;\n\t    return shortLabel + ' - ' + label;\n\t  }\n\n\t  function getPracticeB2BPatientPriceLabel(config) {\n\t    if (config && config.patientPriceFormatted) return config.patientPriceFormatted;\n\t    if (config && Number.isFinite(Number(config.patientPriceCents)) && Number(config.patientPriceCents) > 0) {\n\t      return formatPracticeB2BCents(config.patientPriceCents);\n\t    }\n\t    return getPracticeB2BText('currentNordbeltPrice');\n\t  }\n\n\t  function getPracticeB2BUnavailableMessage() {\n\t    return getPracticeB2BText('unavailable');\n\t  }\n\n\t  var practiceB2BStaffelStorageKey = 'nordbelt_practice_staffel_context_v1';\n\n\t  function sanitizePracticeB2BStaffelValue(value, maxLength) {\n\t    var clean = String(value == null ? '' : value)\n\t      .replace(/[\\u0000-\\u001F\\u007F]/g, ' ')\n\t      .replace(/[<>]/g, '')\n\t      .replace(/\\s+/g, ' ')\n\t      .trim();\n\t    var limit = Number(maxLength) || 120;\n\t    return clean.slice(0, limit);\n\t  }\n\n\t  function getPracticeB2BRoomLabel(value) {\n\t    return String(value) === '4' ? '4+' : String(value || '1');\n\t  }\n\n\t  function getPracticeB2BTherapistLabel(value) {\n\t    var labels = {\n\t      '1': '1-2',\n\t      '2': '3-4',\n\t      '4': '5-8',\n\t      '5': '9+'\n\t    };\n\t    return labels[String(value)] || String(value || '1-2');\n\t  }\n\n\t  function getPracticeB2BLocationLabel(value) {\n\t    if (value === '3plus') return getPracticeB2BText('locationThreePlus');\n\t    if (value === '2') return getPracticeB2BText('locationTwo');\n\t    return getPracticeB2BText('locationOne');\n\t  }\n\n\t  function getPracticeB2BMonthlyPatientsLabel(value) {\n\t    var labels = {\n\t      '0-2': '0-2',\n\t      '3-5': '3-5',\n\t      '6-10': '6-10',\n\t      '10plus': '10+'\n\t    };\n\t    return labels[String(value)] || String(value || '');\n\t  }\n\n\t  function getPracticeB2BIssueModelLabel(value) {\n\t    var labels = {\n\t      sell: getPracticeB2BText('issueSell'),\n\t      include: getPracticeB2BText('issueInclude'),\n\t      lend: getPracticeB2BText('issueLend'),\n\t      mixed: getPracticeB2BText('issueMixed'),\n\t      'practice-only': getPracticeB2BText('issuePracticeOnly')\n\t    };\n\t    return labels[String(value)] || String(value || '');\n\t  }\n\n\t  var practiceB2BTrackingOnceKeys = {};\n\t  var practiceB2BTrackingKeys = [\n\t    'recommended_pack',\n\t    'practice_sets',\n\t    'patient_sets',\n\t    'reserve_sets',\n\t    'vat_toggle',\n\t    'estimated_margin',\n\t    'issue_model',\n\t    'locations',\n\t    'monthly_patients_range',\n\t    'business_cta_location',\n\t    'business_plan_key',\n\t    'practice_event_trigger',\n\t    'quote_flow',\n\t    'item_name',\n\t    'item_id',\n\t    'variant_id',\n\t    'package_size',\n\t    'price',\n\t    'currency',\n\t    'value',\n\t    'content_type'\n\t  ];\n\n\t  function normalizePracticeB2BRecommendedPack(value) {\n\t    var text = sanitizePracticeB2BStaffelValue(value, 40).toLowerCase();\n\t    if (text.indexOf('20+') !== -1 || text.indexOf('20plus') !== -1) return '20+';\n\t    if (text.indexOf('12') !== -1) return '12';\n\t    if (text.indexOf('8') !== -1) return '8';\n\t    if (text.indexOf('4') !== -1) return '4';\n\t    return sanitizePracticeB2BStaffelValue(value, 40);\n\t  }\n\n\t  function parsePracticeB2BTrackingMoneyCents(value) {\n\t    if (typeof value === 'number' && Number.isFinite(value)) return Math.round(value);\n\t    var text = sanitizePracticeB2BStaffelValue(value, 80);\n\t    if (!/[0-9]/.test(text)) return '';\n\t    if (/[^0-9\\s-]/.test(text)) {\n\t      var normalized = text.replace(/[^0-9,.-]/g, '');\n\t      var comma = normalized.lastIndexOf(',');\n\t      var dot = normalized.lastIndexOf('.');\n\t      var decimalAt = Math.max(comma, dot);\n\t      if (decimalAt > -1) {\n\t        normalized = normalized.slice(0, decimalAt).replace(/[.,]/g, '') + '.' + normalized.slice(decimalAt + 1).replace(/[.,]/g, '');\n\t      }\n\t      var majorUnits = Number(normalized);\n\t      return Number.isFinite(majorUnits) ? Math.round(majorUnits * 100) : '';\n\t    }\n\t    var cents = Number(text.replace(/[^0-9.-]/g, ''));\n\t    return Number.isFinite(cents) ? Math.round(cents) : '';\n\t  }\n\n\t  function normalizePracticeB2BTrackingValue(key, value) {\n\t    if (value == null || value === '') return '';\n\t    if (key === 'recommended_pack') return normalizePracticeB2BRecommendedPack(value);\n\t    if (key === 'vat_toggle') {\n\t      return value === true || value === 'true' || value === 'aan' || value === 'on';\n\t    }\n\t    if (key === 'estimated_margin') {\n\t      return parsePracticeB2BTrackingMoneyCents(value);\n\t    }\n\t    if (key === 'price' || key === 'value') {\n\t      var amount = Number(value);\n\t      if (Number.isFinite(amount)) return Number(Math.max(0, amount).toFixed(2));\n\t    }\n\t    if (key === 'practice_sets' || key === 'patient_sets' || key === 'reserve_sets' || key === 'estimated_margin') {\n\t      if (typeof value === 'number' && Number.isFinite(value)) return Math.round(value);\n\t      var numeric = Number(String(value).replace(/[^0-9.-]/g, ''));\n\t      if (Number.isFinite(numeric)) return Math.round(numeric);\n\t    }\n\t    return sanitizePracticeB2BStaffelValue(value, 120);\n\t  }\n\n\t  function normalizePracticeB2BTrackingPayload(detail) {\n\t    var source = detail || {};\n\t    var payload = {\n\t      page_type: 'fysiopraktijken',\n\t      audience: 'fysiopraktijk',\n\t      business_audience: 'practices',\n\t      business_page_context: getPageContext() || 'practices'\n\t    };\n\n\t    practiceB2BTrackingKeys.forEach(function (key) {\n\t      if (!Object.prototype.hasOwnProperty.call(source, key)) return;\n\t      var value = normalizePracticeB2BTrackingValue(key, source[key]);\n\t      if (value === '') return;\n\t      payload[key] = value;\n\t    });\n\n\t    return payload;\n\t  }\n\n\t  function pushPracticeB2BTrackingEvent(eventName, detail) {\n\t    if (!eventName) return '';\n\n\t    var payload = Object.assign(\n\t      { event: sanitizePracticeB2BStaffelValue(eventName, 80) },\n\t      normalizePracticeB2BTrackingPayload(detail)\n\t    );\n\t    if (detail && typeof detail === 'object') {\n\t      ['ecommerce', 'items', 'content_ids'].forEach(function (key) {\n\t        if (detail[key] == null || detail[key] === '') return;\n\t        payload[key] = detail[key];\n\t      });\n\t    }\n\n\t    try {\n\t      if (window.NordbeltTheme && typeof window.NordbeltTheme.pushEvent === 'function') {\n\t        return window.NordbeltTheme.pushEvent(payload);\n\t      }\n\t    } catch (error) {\n\t      // Tracking should never block the page flow.\n\t    }\n\n\t    try {\n\t      window.dataLayer = window.dataLayer || [];\n\t      if (typeof window.dataLayer.push === 'function') {\n\t        window.dataLayer.push(payload);\n\t      }\n\t    } catch (error) {\n\t      // no-op\n\t    }\n\n\t    return '';\n\t  }\n\n\t  function pushPracticeB2BTrackingEventOnce(eventName, detail, onceKey) {\n\t    var key = sanitizePracticeB2BStaffelValue(onceKey || eventName, 120);\n\t    if (key && practiceB2BTrackingOnceKeys[key]) return '';\n\t    if (key) practiceB2BTrackingOnceKeys[key] = true;\n\t    return pushPracticeB2BTrackingEvent(eventName, detail);\n\t  }\n\n\t  function buildPracticeB2BAdviceTrackingPayload(advice, calculation, useVatCorrection, estimatedMargin) {\n\t    if (!advice) {\n\t      return {\n\t        vat_toggle: Boolean(useVatCorrection)\n\t      };\n\t    }\n\n\t    var recommendedPack = advice.adviceKey === 'group-20plus' ? '20+' : String(advice.recommendedQty || advice.adviceKey || '');\n\t    var marginValue = Number.isFinite(Number(estimatedMargin))\n\t      ? Number(estimatedMargin)\n\t      : calculation && Number.isFinite(Number(calculation.margin))\n\t        ? Number(calculation.margin)\n\t        : '';\n\n\t    return {\n\t      recommended_pack: recommendedPack,\n\t      practice_sets: advice.practiceSets,\n\t      patient_sets: advice.patientStock,\n\t      reserve_sets: advice.reserveSets,\n\t      vat_toggle: Boolean(useVatCorrection),\n\t      estimated_margin: marginValue,\n\t      issue_model: advice.distribution || '',\n\t      locations: advice.locations || '',\n\t      monthly_patients_range: advice.monthlyPatients || ''\n\t    };\n\t  }\n\n\t  function practiceB2BNumberFromCents(cents) {\n\t    var value = Number(cents);\n\t    return Number.isFinite(value) && value > 0 ? Number((value / 100).toFixed(2)) : 0;\n\t  }\n\n\t  function buildPracticeB2BPackageTrackingPayload(packageConfig, calculation) {\n\t    var quantity = Number(packageConfig && packageConfig.quantity);\n\t    var packageSize = quantity >= 20 ? '20+' : Number.isFinite(quantity) && quantity > 0 ? String(quantity) : '';\n\t    var price = practiceB2BNumberFromCents(packageConfig && packageConfig.priceCents);\n\t    var variantId = packageConfig && packageConfig.variantId != null ? String(packageConfig.variantId) : '';\n\t    var itemId = variantId || String(packageConfig && packageConfig.productHandle || packageConfig && packageConfig.key || '');\n\t    var itemName = String(packageConfig && packageConfig.label || packageConfig && packageConfig.key || 'Nordbelt praktijkpakket');\n\t    var item = {\n\t      item_id: itemId,\n\t      item_name: itemName,\n\t      item_brand: 'Nordbelt',\n\t      item_category: 'Practice package',\n\t      item_variant: packageSize,\n\t      price: price,\n\t      quantity: 1\n\t    };\n\t    if (variantId) item.variant_id = variantId;\n\n\t    var payload = {\n\t      recommended_pack: quantity >= 20 ? '20+' : Number.isFinite(quantity) && quantity > 0 ? String(quantity) : '',\n\t      vat_toggle: false,\n\t      estimated_margin: calculation && Number.isFinite(Number(calculation.margin)) ? Number(calculation.margin) : '',\n\t      business_plan_key: packageConfig && packageConfig.key ? packageConfig.key : '',\n\t      item_name: itemName,\n\t      item_id: itemId,\n\t      variant_id: variantId,\n\t      package_size: packageSize,\n\t      price: price,\n\t      currency: getBusinessPricingCurrency(),\n\t      value: price,\n\t      content_type: 'product',\n\t      items: [item],\n\t      ecommerce: {\n\t        currency: getBusinessPricingCurrency(),\n\t        value: price,\n\t        items: [item]\n\t      }\n\t    };\n\t    if (itemId) payload.content_ids = [itemId];\n\t    return payload;\n\t  }\n\n\t  window.NordbeltPracticeB2BTracking = {\n\t    push: pushPracticeB2BTrackingEvent,\n\t    pushOnce: pushPracticeB2BTrackingEventOnce\n\t  };\n\n\t  function buildPracticeB2BStaffelContext(config, packageConfig, advice, calculation, useVatCorrection) {\n\t    if (!advice || advice.adviceKey !== 'group-20plus') return null;\n\n\t    var patientStockMargin = calculation && advice.patientStock > 0\n\t      ? calculation.marginPerUnit * advice.patientStock\n\t      : null;\n\t    var estimatedMargin = Number.isFinite(patientStockMargin)\n\t      ? formatPracticeB2BCents(patientStockMargin)\n\t      : 'op basis van staffelprijs';\n\n\t    var context = {\n\t      recommended_pack: '20+ Nordbelts',\n\t      practice_sets: String(advice.practiceSets),\n\t      reserve_sets: String(advice.reserveSets),\n\t      patient_sets: String(advice.patientStock),\n\t      locations: getPracticeB2BLocationLabel(advice.locations),\n\t      therapists_range: getPracticeB2BTherapistLabel(advice.therapistsValue || advice.therapistSets),\n\t      rooms: getPracticeB2BRoomLabel(advice.roomsValue || advice.roomSets),\n\t      monthly_patients_range: getPracticeB2BMonthlyPatientsLabel(advice.monthlyPatients),\n\t      issue_model: getPracticeB2BIssueModelLabel(advice.distribution),\n\t      vat_toggle: useVatCorrection ? getPracticeB2BText('vatOn') : getPracticeB2BText('vatOff'),\n\t      estimated_margin: estimatedMargin,\n\t      raw_needed: String(advice.rawNeeded),\n\t      recommended_quantity: String(Math.max(20, advice.rawNeeded || 20)),\n\t      locations_value: String(advice.locations || ''),\n\t      rooms_value: String(advice.roomsValue || advice.roomSets || ''),\n\t      therapists_value: String(advice.therapistsValue || advice.therapistSets || ''),\n\t      distribution_value: String(advice.distribution || ''),\n\t      package_key: String(packageConfig && packageConfig.key || advice.adviceKey),\n\t      updated_at: String(Date.now())\n\t    };\n\n\t    Object.keys(context).forEach(function (key) {\n\t      context[key] = sanitizePracticeB2BStaffelValue(context[key], key === 'updated_at' ? 32 : 140);\n\t    });\n\n\t    return context;\n\t  }\n\n\t  function storePracticeB2BStaffelContext(context) {\n\t    if (!context) return;\n\n\t    try {\n\t      window.sessionStorage.setItem(practiceB2BStaffelStorageKey, JSON.stringify(context));\n\t    } catch (error) {\n\t      // The form also receives the same event, so storage failure should not block the flow.\n\t    }\n\n\t    if (typeof window.CustomEvent === 'function') {\n\t      window.dispatchEvent(new CustomEvent('practice-b2b-staffel-context', { detail: context }));\n\t    }\n\t  }\n\n\t  function formatPracticeB2BPackagePrice(packageConfig, calculation) {\n\t    if (!calculation) return getPracticeB2BUnavailableMessage();\n\t    return (packageConfig && packageConfig.isQuoteOnly ? getPracticeB2BFromPrefix() : '') + formatPracticeB2BCents(calculation.packagePrice);\n\t  }\n\n\t  function createPracticeB2BTableCell(text) {\n\t    var cell = document.createElement('td');\n\t    cell.textContent = text;\n\t    return cell;\n\t  }\n\n\t  function setPracticeB2BMarginOutput(root, name, value) {\n\t    root.querySelectorAll('[data-practice-b2b-margin-output=\"' + name + '\"]').forEach(function (node) {\n\t      node.textContent = value;\n\t    });\n\t  }\n\n\t  function renderPracticeB2BMarginExample(root, config, packages, key, prefix, useVatCorrection) {\n\t    var packageConfig = packages.find(function (item) {\n\t      return item && item.key === key;\n\t    });\n\t    var calculation = calculatePracticeB2BPackage(config, packageConfig, useVatCorrection);\n\t    var details = root.querySelector('[data-practice-b2b-margin-example-details=\"' + key + '\"]');\n\t    var fallback = root.querySelector('[data-practice-b2b-margin-output=\"' + prefix + 'Fallback\"]');\n\t    var showQuoteFallback = !calculation && key === 'group-20plus';\n\n\t    if (details) details.hidden = showQuoteFallback;\n\t    if (fallback) fallback.hidden = !showQuoteFallback;\n\n\t    if (!calculation) {\n\t      if (!showQuoteFallback) {\n\t\t        var fallbackMessage = '';\n\t        setPracticeB2BMarginOutput(root, prefix + 'Package', getPracticeB2BUnavailableMessage());\n\t        setPracticeB2BMarginOutput(root, prefix + 'Revenue', fallbackMessage);\n\t        setPracticeB2BMarginOutput(root, prefix + 'Margin', fallbackMessage);\n\t        setPracticeB2BMarginOutput(root, prefix + 'MarginPerUnit', fallbackMessage);\n\t      }\n\t      return;\n\t    }\n\n\t    var quotePrefix = packageConfig && packageConfig.isQuoteOnly ? getPracticeB2BFromPrefix() : '';\n\t    setPracticeB2BMarginOutput(root, prefix + 'Package', formatPracticeB2BPackagePrice(packageConfig, calculation));\n\t    setPracticeB2BMarginOutput(root, prefix + 'Revenue', formatPracticeB2BCents(calculation.revenue));\n\t    setPracticeB2BMarginOutput(root, prefix + 'Margin', quotePrefix + formatPracticeB2BCents(calculation.margin));\n\t    setPracticeB2BMarginOutput(root, prefix + 'MarginPerUnit', quotePrefix + formatPracticeB2BCents(calculation.marginPerUnit));\n\t  }\n\n\t  function ensurePracticeB2BMarginOverviewFallback() {\n\t    if (window.location.pathname.indexOf('/pages/fysiopraktijken') === -1) return;\n\t    if (document.querySelector('[data-practice-b2b-margin-overview]')) return;\n\n\t    var planAnchor = document.querySelector('#business-pricing-plans');\n\t    var target = planAnchor && planAnchor.closest ? planAnchor.closest('.shopify-section') : planAnchor;\n\t    if (!target || !target.parentNode) return;\n\n\t    var wrapper = document.createElement('div');\n\t    wrapper.className = 'shopify-section practice-b2b-margin-section-fallback';\n\t    wrapper.innerHTML = [\n\t      '<section id=\"practice-b2b-margin\" class=\"nb-section practice-b2b-margin-section\" data-practice-b2b-margin-overview>',\n\t      '  <div class=\"nb-container\">',\n\t      '    <div class=\"nb-card practice-b2b-margin-section__shell\">',\n\t      '      <div class=\"practice-b2b-margin-section__head\">',\n\t      '        <p class=\"nb-business-plan-panel__eyebrow practice-b2b-margin-section__eyebrow\">Doorverkoop rekenvoorbeeld</p>',\n\t      '        <h2 class=\"nb-title nb-section-title practice-b2b-margin-section__title\"><span>Marge voor je praktijk bij </span><span class=\"nb-title-accent nb-title-accent--sky\">doorverkoop</span></h2>',\n\t      '        <p class=\"nb-subtitle practice-b2b-margin-section__subtitle\">Koop Nordbelt in via praktijkstaffel en verkoop het thuispakket aan pati\u00EBnten voor de actuele Nordbelt-prijs. Hoe groter de praktijkvoorraad, hoe lager je inkoop per stuk en hoe hoger je marge.</p>',\n\t      '        <p class=\"practice-b2b-margin-section__patient-price\">Actuele pati\u00EBntprijs: <strong data-practice-b2b-margin-output=\"patientPrice\">actuele Nordbelt-prijs</strong></p>',\n\t      '        <p class=\"practice-b2b-margin-section__tax-note\">Praktijkpakketten: <span data-practice-b2b-margin-output=\"taxLabel\" title=\"Nordbelt berekent geen btw vanwege toepassing van de kleineondernemersregeling. Er staat geen btw op de factuur.\">btw-vrij geleverd via KOR</span></p>',\n\t      '      </div>',\n\t      '      <div class=\"practice-b2b-margin-section__controls\">',\n\t      '        <label class=\"practice-b2b-margin-toggle\">',\n\t      '          <input type=\"checkbox\" data-practice-b2b-margin-vat-toggle>',\n\t      '          <span>Btw afdragen over doorverkoop</span>',\n\t      '          <span class=\"practice-b2b-margin-toggle__tooltip\" tabindex=\"0\" title=\"Standaard tonen we de marge zonder btw-afdracht door de praktijk. Zet dit aan als je intern met 21% btw over productverkoop wilt rekenen. Dit is een rekenvoorbeeld, geen fiscaal advies.\" aria-label=\"Standaard tonen we de marge zonder btw-afdracht door de praktijk. Zet dit aan als je intern met 21% btw over productverkoop wilt rekenen. Dit is een rekenvoorbeeld, geen fiscaal advies.\"></span>',\n\t      '        </label>',\n\t      '        <p class=\"practice-b2b-margin-section__microcopy\" data-practice-b2b-margin-output=\"microcopy\">Dit zijn rekenvoorbeelden. Controleer je eigen fiscale situatie met je boekhouder.</p>',\n\t      '      </div>',\n\t      '      <p class=\"practice-b2b-margin-section__conversion\" data-practice-b2b-margin-copy data-copy-without-vat=\"Vanaf het 12-pack wordt doorverkoop echt interessant: je marge per Nordbelt ligt daar hoger doordat je inkoopprijs per stuk lager is.\" data-copy-with-vat=\"Ook met btw-afdracht blijft vooral 12 of 20+ interessant, omdat de inkoopprijs per Nordbelt daar lager ligt.\">Vanaf het 12-pack wordt doorverkoop echt interessant: je marge per Nordbelt ligt daar hoger doordat je inkoopprijs per stuk lager is.</p>',\n\t      '      <div class=\"practice-b2b-margin-section__table-wrap\" role=\"region\" aria-label=\"Marge per praktijkpakket\">',\n\t      '        <table class=\"practice-b2b-margin-table\">',\n\t      '          <caption class=\"visually-hidden\">Marge voor fysiopraktijken bij doorverkoop van Nordbelt praktijkpakketten</caption>',\n\t      '          <thead><tr><th scope=\"col\">Pakket</th><th scope=\"col\">Aantal</th><th scope=\"col\">Pakketprijs</th><th scope=\"col\">Inkoop per stuk</th><th scope=\"col\">Pati\u00EBntprijs</th><th scope=\"col\">Marge per stuk</th><th scope=\"col\">Totale marge</th></tr></thead>',\n\t      '          <tbody data-practice-b2b-margin-table-body><tr><td colspan=\"7\">Actuele pakketprijs via Shopify-variant.</td></tr></tbody>',\n\t      '        </table>',\n\t      '      </div>',\n\t      '      <div class=\"practice-b2b-margin-section__cards\" data-practice-b2b-margin-card-list aria-label=\"Marge per pakket\"></div>',\n\t      '      <div class=\"practice-b2b-margin-section__examples\">',\n\t      '        <article class=\"practice-b2b-margin-example practice-b2b-margin-example--featured\" data-practice-b2b-margin-example=\"scale-12\">',\n\t      '          <span class=\"practice-b2b-margin-example__label\">12-pack voorbeeld</span>',\n\t      '          <h3>Meest gekozen voor praktijk + thuisvoorraad</h3>',\n\t      '          <dl><div><dt>Pakketprijs</dt><dd data-practice-b2b-margin-output=\"example12Package\">Actuele pakketprijs via Shopify-variant.</dd></div><div><dt>Omzet bij volledige doorverkoop</dt><dd data-practice-b2b-margin-output=\"example12Revenue\"></dd></div><div><dt>Potenti\u00EBle marge</dt><dd data-practice-b2b-margin-output=\"example12Margin\"></dd></div><div><dt>Marge per Nordbelt</dt><dd data-practice-b2b-margin-output=\"example12MarginPerUnit\"></dd></div></dl>',\n\t      '        </article>',\n\t      '        <article class=\"practice-b2b-margin-example\" data-practice-b2b-margin-example=\"group-20plus\">',\n\t      '          <span class=\"practice-b2b-margin-example__label\">20+ voorbeeld</span>',\n\t      '          <h3>Voor grotere voorraad of meerdere locaties</h3>',\n\t      '          <p class=\"practice-b2b-margin-example__fallback\" data-practice-b2b-margin-output=\"example20Fallback\" hidden>Vraag staffel aan voor actuele 20+ prijs en marge-inschatting.</p>',\n\t      '          <dl data-practice-b2b-margin-example-details=\"group-20plus\"><div><dt>Pakketprijs</dt><dd data-practice-b2b-margin-output=\"example20Package\">staffel op aanvraag</dd></div><div><dt>Omzet bij volledige doorverkoop</dt><dd data-practice-b2b-margin-output=\"example20Revenue\"></dd></div><div><dt>Potenti\u00EBle marge</dt><dd data-practice-b2b-margin-output=\"example20Margin\"></dd></div><div><dt>Marge per Nordbelt</dt><dd data-practice-b2b-margin-output=\"example20MarginPerUnit\"></dd></div></dl>',\n\t      '        </article>',\n\t      '      </div>',\n\t      '      <div class=\"practice-b2b-margin-section__actions\"><a class=\"nb-button\" href=\"#business-pricing-plans\" data-nb-cta=\"practice_margin_view_plans\">Bekijk praktijkpakketten</a><a class=\"nb-button nb-button--secondary\" href=\"#business-plan-practices-scale-12\" data-nb-cta=\"practice_margin_view_12_pack\">Bekijk 12-pack</a></div>',\n\t      '    </div>',\n\t      '  </div>',\n\t      '</section>'\n\t    ].join('');\n\n\t    target.parentNode.insertBefore(wrapper, target);\n\t  }\n\n\t  function bindPracticeB2BMarginOverview() {\n\t    var sections = document.querySelectorAll('[data-practice-b2b-margin-overview]');\n\t    if (!sections.length) return;\n\n\t    var config = getPracticePricingConfig();\n\t    var packages = config && Array.isArray(config.packages) ? config.packages : [];\n\n\t    sections.forEach(function (section) {\n\t      if (section.dataset.practiceB2BMarginOverviewBound === 'true') return;\n\t      section.dataset.practiceB2BMarginOverviewBound = 'true';\n\n\t      var vatToggle = section.querySelector('[data-practice-b2b-margin-vat-toggle]');\n\t      var tableBody = section.querySelector('[data-practice-b2b-margin-table-body]');\n\t      var cardList = section.querySelector('[data-practice-b2b-margin-card-list]');\n\t      var conversionCopy = section.querySelector('[data-practice-b2b-margin-copy]');\n\t      var patientPriceLabel = getPracticeB2BPatientPriceLabel(config);\n\n\t      setPracticeB2BMarginOutput(section, 'patientPrice', patientPriceLabel);\n\t      setPracticeB2BMarginOutput(section, 'taxLabel', config && config.taxLabel ? config.taxLabel : getPracticeB2BText('taxLabel'));\n\t      setPracticeB2BMarginOutput(\n\t        section,\n\t        'microcopy',\n\t        config && config.microcopy ? config.microcopy : getPracticeB2BText('microcopy')\n\t      );\n\n\t      if (vatToggle) {\n\t        vatToggle.checked = Boolean(config && config.vatToggleDefault);\n\t      }\n\n\t      function renderOverview() {\n\t        var useVatCorrection = Boolean(vatToggle && vatToggle.checked);\n\t        var unavailable = getPracticeB2BUnavailableMessage();\n\n\t        if (conversionCopy) {\n\t          conversionCopy.textContent = useVatCorrection\n\t            ? conversionCopy.getAttribute('data-copy-with-vat')\n\t            : conversionCopy.getAttribute('data-copy-without-vat');\n\t        }\n\n\t        if (tableBody) tableBody.innerHTML = '';\n\t        if (cardList) cardList.innerHTML = '';\n\n\t        if (!config || !packages.length) {\n\t          if (tableBody) {\n\t            var fallbackRow = document.createElement('tr');\n\t            var fallbackCell = document.createElement('td');\n\t            fallbackCell.colSpan = 7;\n\t            fallbackCell.textContent = unavailable;\n\t            fallbackRow.appendChild(fallbackCell);\n\t            tableBody.appendChild(fallbackRow);\n\t          }\n\t          return;\n\t        }\n\n\t        packages.forEach(function (packageConfig) {\n\t          if (!packageConfig || !packageConfig.key) return;\n\n\t          var calculation = calculatePracticeB2BPackage(config, packageConfig, useVatCorrection);\n\t          var packageName = getPracticeB2BPackageName(packageConfig);\n\t          var quantityLabel = packageConfig.quantity ? packageConfig.quantity + ' Nordbelts' : getPracticeB2BText('unknownPackageSize');\n\t\t  var packagePrice = formatPracticeB2BPackagePrice(packageConfig, calculation);\n\t          var quotePrefix = packageConfig && packageConfig.isQuoteOnly ? getPracticeB2BFromPrefix() : '';\n\t          var unitCost = calculation ? quotePrefix + formatPracticeB2BCents(calculation.unitCost) : unavailable;\n\t          var marginPerUnit = calculation ? quotePrefix + formatPracticeB2BCents(calculation.marginPerUnit) : unavailable;\n\t          var totalMargin = calculation ? quotePrefix + formatPracticeB2BCents(calculation.margin) : unavailable;\n\n\t          if (tableBody) {\n\t            var row = document.createElement('tr');\n\t            row.setAttribute('data-practice-b2b-margin-row', packageConfig.key);\n\t            if (packageConfig.variantId) row.setAttribute('data-variant-id', String(packageConfig.variantId));\n\t            if (Number.isFinite(Number(packageConfig.priceCents))) row.setAttribute('data-price-cents', String(packageConfig.priceCents));\n\t            if (Number.isFinite(Number(packageConfig.quantity))) row.setAttribute('data-qty', String(packageConfig.quantity));\n\t            if (config && Number.isFinite(Number(config.patientPriceCents))) row.setAttribute('data-patient-price-cents', String(config.patientPriceCents));\n\t            if (packageConfig.key === 'scale-12') row.classList.add('is-featured');\n\t            if (!calculation) row.classList.add('is-unavailable');\n\n\t            row.appendChild(createPracticeB2BTableCell(packageName));\n\t            row.appendChild(createPracticeB2BTableCell(quantityLabel));\n\t            row.appendChild(createPracticeB2BTableCell(packagePrice));\n\t            row.appendChild(createPracticeB2BTableCell(unitCost));\n\t            row.appendChild(createPracticeB2BTableCell(patientPriceLabel));\n\t            row.appendChild(createPracticeB2BTableCell(marginPerUnit));\n\t            row.appendChild(createPracticeB2BTableCell(totalMargin));\n\t            tableBody.appendChild(row);\n\t          }\n\n\t          if (cardList) {\n\t            var card = document.createElement('article');\n\t            card.className = 'practice-b2b-margin-card';\n\t            card.setAttribute('data-practice-b2b-margin-card', packageConfig.key);\n\t            if (packageConfig.variantId) card.setAttribute('data-variant-id', String(packageConfig.variantId));\n\t            if (Number.isFinite(Number(packageConfig.priceCents))) card.setAttribute('data-price-cents', String(packageConfig.priceCents));\n\t            if (Number.isFinite(Number(packageConfig.quantity))) card.setAttribute('data-qty', String(packageConfig.quantity));\n\t            if (config && Number.isFinite(Number(config.patientPriceCents))) card.setAttribute('data-patient-price-cents', String(config.patientPriceCents));\n\t            if (packageConfig.key === 'scale-12') card.classList.add('is-featured');\n\t            if (!calculation) card.classList.add('is-unavailable');\n\n\t            var title = document.createElement('h3');\n\t            title.textContent = packageName;\n\t            var meta = document.createElement('p');\n\t            meta.className = 'practice-b2b-margin-card__meta';\n\t            meta.textContent = quantityLabel + ' \u00B7 ' + getPracticeB2BText('patientPriceLower') + ' ' + patientPriceLabel;\n\t            card.appendChild(title);\n\t            card.appendChild(meta);\n\n\t            [\n\t              [getPracticeB2BText('packagePrice'), packagePrice],\n\t              [getPracticeB2BText('unitCost'), unitCost],\n\t              [getPracticeB2BText('marginPerUnit'), marginPerUnit],\n\t              [getPracticeB2BText('totalMargin'), totalMargin]\n\t            ].forEach(function (item) {\n\t              var metric = document.createElement('div');\n\t              metric.className = 'practice-b2b-margin-card__metric';\n\t              var label = document.createElement('span');\n\t              label.textContent = item[0];\n\t              var value = document.createElement('strong');\n\t              value.textContent = item[1];\n\t              metric.appendChild(label);\n\t              metric.appendChild(value);\n\t              card.appendChild(metric);\n\t            });\n\n\t            cardList.appendChild(card);\n\t          }\n\t        });\n\n\t        renderPracticeB2BMarginExample(section, config, packages, 'scale-12', 'example12', useVatCorrection);\n\t        renderPracticeB2BMarginExample(section, config, packages, 'group-20plus', 'example20', useVatCorrection);\n\t        cleanPracticeB2BMarginLocaleCopy(section);\n\t      }\n\n\t      if (vatToggle) {\n\t        vatToggle.addEventListener('change', function () {\n\t          var useVatCorrection = Boolean(vatToggle.checked);\n\t          renderOverview();\n\t          pushPracticeB2BTrackingEvent(useVatCorrection ? 'b2b_margin_toggle_on' : 'b2b_margin_toggle_off', {\n\t            vat_toggle: useVatCorrection,\n\t            business_cta_location: 'practice-margin'\n\t          });\n\t        });\n\t      }\n\n\t      renderOverview();\n\t    });\n\t  }\n\n\t  function bindPracticeB2BPlanCards() {\n\t    var cards = document.querySelectorAll('[data-business-plan-card][data-business-audience=\"practices\"]');\n\t    if (!cards.length) return;\n\n\t    var config = getPracticePricingConfig();\n\t    var packages = config && Array.isArray(config.packages) ? config.packages : [];\n\t    var fallbackMessage = '';\n\n\t    function setCardOutput(card, name, value) {\n\t      card.querySelectorAll('[data-practice-b2b-plan-output=\"' + name + '\"]').forEach(function (node) {\n\t        node.textContent = value;\n\t      });\n\t    }\n\n\t    function setCardSaving(card, calculation, quotePrefix) {\n\t      var rows = card.querySelectorAll('[data-practice-b2b-saving-row]');\n\t      if (!rows.length) return;\n\t      var saving = calculation && Number(calculation.margin);\n\t      var hasSaving = Number.isFinite(saving) && saving > 0;\n\t      rows.forEach(function (row) {\n\t        row.hidden = !hasSaving;\n\t        if (hasSaving) {\n\t          row.setAttribute('aria-label', getPracticeB2BText('savingAriaPrefix') + quotePrefix + formatPracticeB2BCents(saving));\n\t        }\n\t      });\n\t      if (hasSaving) {\n\t        setCardOutput(card, 'packageSaving', getPracticeB2BText('savingPrefix') + quotePrefix + formatPracticeB2BCents(saving));\n\t      }\n\t    }\n\n\t    cards.forEach(function (card) {\n\t      if (card.dataset.practiceB2bPlanCardBound === 'true') return;\n\t      card.dataset.practiceB2bPlanCardBound = 'true';\n\n\t      var planKey = card.getAttribute('data-plan-key') || '';\n\t      var packageConfig = packages.find(function (item) {\n\t        return item && item.key === planKey;\n\t      });\n\t      var calculation = calculatePracticeB2BPackage(config, packageConfig, false);\n\t      var quotePrefix = packageConfig && packageConfig.isQuoteOnly ? getPracticeB2BFromPrefix() : '';\n\n\t      if (!packageConfig || !calculation) {\n\t        setCardOutput(card, 'unitCost', packageConfig && packageConfig.isQuoteOnly ? getPracticeB2BTierLabel() : getPracticeB2BUnavailableMessage());\n\t        setCardOutput(card, 'marginPerUnit', fallbackMessage);\n\t        setCardOutput(card, 'totalMargin', fallbackMessage);\n\t        setCardSaving(card, null, '');\n\t        return;\n\t      }\n\n\t      setCardOutput(card, 'unitCost', quotePrefix + formatPracticeB2BCents(calculation.unitCost));\n\t      setCardOutput(card, 'marginPerUnit', quotePrefix + formatPracticeB2BCents(calculation.marginPerUnit));\n\t      setCardOutput(card, 'totalMargin', quotePrefix + formatPracticeB2BCents(calculation.margin));\n\t      setCardSaving(card, calculation, quotePrefix);\n\t    });\n\t  }\n\n\t  function pushPracticeCalculatorEvent(eventName, detail) {\n\t    pushPracticeB2BTrackingEvent(\n\t      eventName,\n\t      Object.assign({ business_cta_location: 'practice-calculator' }, detail || {})\n\t    );\n\t  }\n\n\t  function bindPracticeB2BCalculator() {\n\t    document.querySelectorAll('[data-practice-b2b-stock-calculator]').forEach(function (panel) {\n\t      if (panel.dataset.practiceB2bCalculatorBound === 'true') return;\n\n\t      var config = getPracticePricingConfig();\n\t      var packages = config && Array.isArray(config.packages) ? config.packages : [];\n\t      var vatToggle = panel.querySelector('[data-practice-b2b-calculator-vat-toggle]');\n\t      var reserveRow = panel.querySelector('[data-practice-b2b-calculator-reserve-row]');\n\t      var fallback = panel.querySelector('[data-practice-b2b-calculator-fallback]');\n\t      var primaryCta = panel.querySelector('[data-practice-b2b-calculator-primary]');\n\t      var secondaryCta = panel.querySelector('[data-practice-b2b-calculator-secondary]');\n\t      var interactionStarted = false;\n\t      var completionTracked = false;\n\t      var lastRecommendationEvent = '';\n\n\t      panel.dataset.practiceB2bCalculatorBound = 'true';\n\n\t      function setOutput(name, value) {\n\t        panel.querySelectorAll('[data-practice-b2b-calculator-output=\"' + name + '\"]').forEach(function (node) {\n\t          node.textContent = value;\n\t        });\n\t      }\n\n\t      function getSelectedValue(name, fallbackValue) {\n\t        var input = panel.querySelector('input[name=\"' + name + '\"]:checked');\n\t        return input ? input.value : fallbackValue;\n\t      }\n\n\t      function getPracticePackageByAdvice(adviceKey) {\n\t        var targetQuantity = adviceKey === 'group-20plus' ? 20 : Number(adviceKey);\n\t        return packages.find(function (packageConfig) {\n\t          if (!packageConfig) return false;\n\t          if (adviceKey === 'group-20plus') {\n\t            return String(packageConfig.key || '').indexOf('20plus') !== -1 || Number(packageConfig.quantity) >= 20;\n\t          }\n\t          return Number(packageConfig.quantity) === targetQuantity;\n\t        }) || null;\n\t      }\n\n\t      function getAdviceLabel(adviceKey) {\n\t        if (adviceKey === 'group-20plus') return '20+';\n\t        return adviceKey + '-pack';\n\t      }\n\n\t      function calculateStockAdvice() {\n\t        var roomsValue = getSelectedValue('practice_b2b_rooms', '1');\n\t        var therapistsValue = getSelectedValue('practice_b2b_therapists', '1');\n\t        var roomSets = Number(roomsValue) || 1;\n\t        var therapistSets = Number(therapistsValue) || 1;\n\t        var patientIntent = getSelectedValue('practice_b2b_patient_intent', 'none');\n\t        var monthlyPatients = getSelectedValue('practice_b2b_monthly_patients', '0-2');\n\t        var distribution = getSelectedValue('practice_b2b_distribution', 'practice-only');\n\t        var locations = getSelectedValue('practice_b2b_locations', '1');\n\t        var patientStockMap = {\n\t          none: 0,\n\t          occasional: 4,\n\t          structural: 8,\n\t          homepack: 12\n\t        };\n\t        var monthlyMinimumMap = {\n\t          '0-2': 0,\n\t          '3-5': 4,\n\t          '6-10': 8,\n\t          '10plus': 12\n\t        };\n\t        var practiceSets = Math.max(roomSets, therapistSets);\n\t        var patientStock = patientStockMap[patientIntent] || 0;\n\t        var monthlyMinimum = monthlyMinimumMap[monthlyPatients] || 0;\n\n\t        if (patientIntent !== 'none') {\n\t          patientStock = Math.max(patientStock, monthlyMinimum);\n\t        }\n\n\t        if (distribution === 'practice-only' || patientIntent === 'none') {\n\t          patientStock = 0;\n\t        } else if (distribution === 'lend' && patientStock > 0) {\n\t          patientStock += 2;\n\t        }\n\n\t        var rawNeeded = practiceSets + patientStock;\n\t        var force20Plus =\n\t          locations === '3plus' ||\n\t          (\n\t            monthlyPatients === '10plus' &&\n\t            (patientIntent === 'structural' || patientIntent === 'homepack' || distribution === 'sell')\n\t          );\n\t        var recommendedQty = 4;\n\n\t        if (force20Plus || rawNeeded >= 13) {\n\t          recommendedQty = 20;\n\t        } else if (rawNeeded >= 9) {\n\t          recommendedQty = 12;\n\t        } else if (rawNeeded >= 5) {\n\t          recommendedQty = 8;\n\t        }\n\n\t        if (locations === '2' && recommendedQty < 8) {\n\t          recommendedQty = 8;\n\t        }\n\n\t        var adviceKey = recommendedQty >= 20 ? 'group-20plus' : String(recommendedQty);\n\t        var reserveSets = recommendedQty - practiceSets - patientStock;\n\t        if (reserveSets < 0 || adviceKey === 'group-20plus' && rawNeeded > 20) {\n\t          reserveSets = 0;\n\t        }\n\n\t        return {\n\t          roomsValue: roomsValue,\n\t          therapistsValue: therapistsValue,\n\t          roomSets: roomSets,\n\t          therapistSets: therapistSets,\n\t          practiceSets: practiceSets,\n\t          patientStock: patientStock,\n\t          rawNeeded: rawNeeded,\n\t          recommendedQty: recommendedQty,\n\t          adviceKey: adviceKey,\n\t          reserveSets: reserveSets,\n\t          monthlyPatients: monthlyPatients,\n\t          patientIntent: patientIntent,\n\t          distribution: distribution,\n\t          locations: locations\n\t        };\n\t      }\n\n\t      function formatPackagePrice(packageConfig, calculation) {\n\t        if (!calculation) {\n\t          if (packageConfig && packageConfig.isQuoteOnly) return 'Vraag staffel aan';\n\t          return getPracticeB2BUnavailableMessage();\n\t        }\n\t        return formatPracticeB2BPackagePrice(packageConfig, calculation);\n\t      }\n\n\t      function setPrimaryCta(packageConfig, advice) {\n\t        if (!primaryCta) return;\n\n\t        var isQuoteOnly = advice.adviceKey === 'group-20plus' || Boolean(packageConfig && packageConfig.isQuoteOnly);\n\t        primaryCta.textContent = isQuoteOnly ? 'Vraag praktijkstaffel aan' : 'Voeg aanbevolen pakket toe';\n\t        primaryCta.setAttribute('href', isQuoteOnly ? '#practice-b2b-staffel' : packageConfig && packageConfig.addToCartUrl ? packageConfig.addToCartUrl : '#business-pricing-plans');\n\t        primaryCta.setAttribute('data-business-cta-intent', isQuoteOnly ? 'quote' : 'buy');\n\t        primaryCta.setAttribute('data-business-plan-key', packageConfig && packageConfig.key ? packageConfig.key : advice.adviceKey);\n\t        primaryCta.setAttribute('data-practice-b2b-calculator-action', isQuoteOnly ? 'quote' : 'add');\n\n\t        if (!isQuoteOnly && !(packageConfig && packageConfig.addToCartUrl)) {\n\t          primaryCta.setAttribute('aria-disabled', 'true');\n\t        } else {\n\t          primaryCta.removeAttribute('aria-disabled');\n\t        }\n\t      }\n\n\t      function getCurrentTrackingDetail() {\n\t        var advice = calculateStockAdvice();\n\t        var packageConfig = getPracticePackageByAdvice(advice.adviceKey);\n\t        var useVatCorrection = Boolean(vatToggle && vatToggle.checked);\n\t        var calculation = calculatePracticeB2BPackage(config, packageConfig, useVatCorrection);\n\t        var patientStockMargin = calculation ? calculation.marginPerUnit * advice.patientStock : '';\n\t        var detail = buildPracticeB2BAdviceTrackingPayload(advice, calculation, useVatCorrection, patientStockMargin);\n\t        detail.business_plan_key = packageConfig && packageConfig.key ? packageConfig.key : advice.adviceKey;\n\t        return detail;\n\t      }\n\n\t      function renderCalculator(userInitiated) {\n\t        var advice = calculateStockAdvice();\n\t        var packageConfig = getPracticePackageByAdvice(advice.adviceKey);\n\t        var useVatCorrection = Boolean(vatToggle && vatToggle.checked);\n\t        var calculation = calculatePracticeB2BPackage(config, packageConfig, useVatCorrection);\n\t        var patientPriceLabel = getPracticeB2BPatientPriceLabel(config);\n\t        var patientPriceCents = Number(config && config.patientPriceCents);\n\t        var vatRate = Number(config && config.vatRate) || 1.21;\n\t        var unavailable = getPracticeB2BUnavailableMessage();\n\t        var adviceLabel = getAdviceLabel(advice.adviceKey);\n\t        var adviceCountLabel = advice.adviceKey === 'group-20plus' ? '20+' : String(advice.recommendedQty);\n\t        var packageName = packageConfig ? getPracticeB2BPackageName(packageConfig) : adviceLabel;\n\t        var patientStockMargin = calculation ? calculation.marginPerUnit * advice.patientStock : null;\n\t        var allSetsMargin = calculation ? calculation.margin : null;\n\t        var note = config && config.microcopy ? config.microcopy : 'Dit zijn rekenvoorbeelden. Controleer je eigen fiscale situatie met je boekhouder.';\n\t        var trackingDetail = buildPracticeB2BAdviceTrackingPayload(advice, calculation, useVatCorrection, patientStockMargin);\n\t        trackingDetail.business_plan_key = packageConfig && packageConfig.key ? packageConfig.key : advice.adviceKey;\n\n\t        if (useVatCorrection && Number.isFinite(patientPriceCents) && patientPriceCents > 0) {\n\t          patientPriceLabel = formatPracticeB2BCents(patientPriceCents / vatRate) + ' netto bij 21% btw';\n\t        }\n\n\t        if (advice.adviceKey === 'group-20plus') {\n\t          if (calculation) {\n\t            note = advice.rawNeeded > 20\n\t              ? 'Berekende behoefte: ' + advice.rawNeeded + ' sets. Stem de 20+ staffel af op locaties, uitleenflow en pati\u00EBntvoorraad.'\n\t              : '20+ is bedoeld als staffeladvies voor grotere voorraad of meerdere locaties.';\n\t          } else {\n\t            note = 'Vraag staffel aan voor actuele 20+ prijs en marge-inschatting.';\n\t          }\n\t        }\n\n\t        setOutput('adviceTitle', 'Advies voor jouw praktijk: ' + adviceCountLabel + ' Nordbelts');\n\t        setOutput('summaryPracticeSets', advice.practiceSets + ' sets');\n\t        setOutput('summaryPatientStock', advice.patientStock + ' sets');\n\t        setOutput('summaryAdvice', adviceLabel);\n\t        setOutput('summaryMargin', calculation ? formatPracticeB2BCents(patientStockMargin) : unavailable);\n\t        setOutput('practiceSets', advice.practiceSets + ' Nordbelts');\n\t        setOutput('patientSets', advice.patientStock + ' Nordbelts');\n\t        setOutput('reserveSets', advice.reserveSets + ' Nordbelts');\n\t        setOutput('recommendedPackage', packageName);\n\t\t        var quotePrefix = packageConfig && packageConfig.isQuoteOnly ? getPracticeB2BFromPrefix() : '';\n\t\t        setOutput('packagePrice', formatPackagePrice(packageConfig, calculation));\n\t\t        setOutput('unitCost', calculation ? quotePrefix + formatPracticeB2BCents(calculation.unitCost) : unavailable);\n\t\t        setOutput('patientPrice', patientPriceLabel);\n\t\t        setOutput('marginPerUnit', calculation ? quotePrefix + formatPracticeB2BCents(calculation.marginPerUnit) : unavailable);\n\t\t        setOutput('patientStockMargin', calculation ? quotePrefix + formatPracticeB2BCents(patientStockMargin) : unavailable);\n\t\t        setOutput('allSetsMargin', calculation ? quotePrefix + formatPracticeB2BCents(allSetsMargin) : unavailable);\n\t        setOutput('note', note);\n\n\t        if (reserveRow) {\n\t          reserveRow.hidden = advice.reserveSets <= 0;\n\t        }\n\n\t        if (fallback) {\n\t          fallback.hidden = Boolean(calculation);\n\t          fallback.textContent = packageConfig && packageConfig.isQuoteOnly\n\t            ? 'Vraag staffel aan voor actuele 20+ prijs en marge-inschatting.'\n\t            : '';\n\t        }\n\n\t        setPrimaryCta(packageConfig, advice);\n\n\t        if (secondaryCta) {\n\t          secondaryCta.setAttribute('data-business-plan-key', packageConfig && packageConfig.key ? packageConfig.key : advice.adviceKey);\n\t        }\n\n\t        if (userInitiated) {\n\t          if (!completionTracked) {\n\t            pushPracticeCalculatorEvent('calculator_completed', trackingDetail);\n\t            completionTracked = true;\n\t          }\n\n\t          var recommendationEvent = 'recommended_' + (advice.adviceKey === 'group-20plus' ? '20plus' : advice.recommendedQty);\n\t          if (lastRecommendationEvent !== recommendationEvent) {\n\t            pushPracticeCalculatorEvent(recommendationEvent, trackingDetail);\n\t            lastRecommendationEvent = recommendationEvent;\n\t          }\n\t        }\n\t      }\n\n\t      panel.querySelectorAll('input[type=\"radio\"], input[type=\"checkbox\"]').forEach(function (input) {\n\t        input.addEventListener('change', function () {\n\t          if (!interactionStarted) {\n\t            pushPracticeCalculatorEvent('calculator_started', getCurrentTrackingDetail());\n\t            interactionStarted = true;\n\t          }\n\t          renderCalculator(true);\n\t        });\n\t      });\n\n\t      if (primaryCta) {\n\t        primaryCta.addEventListener('click', function () {\n\t          var action = primaryCta.getAttribute('data-practice-b2b-calculator-action') || 'add';\n\t          var advice = calculateStockAdvice();\n\t          var packageConfig = getPracticePackageByAdvice(advice.adviceKey);\n\t          var useVatCorrection = Boolean(vatToggle && vatToggle.checked);\n\t          var calculation = calculatePracticeB2BPackage(config, packageConfig, useVatCorrection);\n\t          if (action === 'quote') {\n\t            storePracticeB2BStaffelContext(buildPracticeB2BStaffelContext(config, packageConfig, advice, calculation, useVatCorrection));\n\t          }\n\t          var trackingDetail = getCurrentTrackingDetail();\n\t          trackingDetail.business_plan_key = primaryCta.getAttribute('data-business-plan-key') || trackingDetail.business_plan_key || '';\n\t          var packageTrackingDetail = Object.assign(\n\t            {},\n\t            trackingDetail,\n\t            buildPracticeB2BPackageTrackingPayload(packageConfig, calculation),\n\t            {\n\t              business_cta_location: 'practice-calculator',\n\t              practice_event_trigger: action === 'quote' ? 'calculator_quote_click' : 'calculator_add_click'\n\t            }\n\t          );\n\t          if (action === 'quote') {\n\t            pushPracticeB2BTrackingEvent('click_practice_staffel_20_plus', packageTrackingDetail);\n\t            pushPracticeB2BTrackingEventOnce('staffel_request_started', packageTrackingDetail, 'staffel_request_started');\n\t          } else {\n\t            var quantity = Number(packageConfig && packageConfig.quantity);\n\t            if (quantity === 4 || quantity === 8 || quantity === 12) {\n\t              pushPracticeB2BTrackingEvent('click_practice_package_' + quantity, packageTrackingDetail);\n\t            }\n\t            pushPracticeB2BTrackingEvent('add_to_cart_practice_package', packageTrackingDetail);\n\t            pushPracticeCalculatorEvent('add_to_cart_from_calculator', trackingDetail);\n\t          }\n\t        });\n\t      }\n\n\t      if (vatToggle) {\n\t        vatToggle.checked = Boolean(config && config.vatToggleDefault);\n\t      }\n\n\t      renderCalculator(false);\n\t    });\n\t  }\n\n\t  function isPracticeB2BPage() {\n\t    return getPageContext() === 'practices' || window.location.pathname.indexOf('/pages/fysiopraktijken') !== -1;\n\t  }\n\n\t  function findPracticeB2BPackageByKey(packages, planKey) {\n\t    return packages.find(function (packageConfig) {\n\t      return packageConfig && packageConfig.key === planKey;\n\t    }) || null;\n\t  }\n\n\t  function findPracticeB2BPackageByQuantity(packages, quantity) {\n\t    var targetQuantity = Number(quantity);\n\t    if (!Number.isFinite(targetQuantity) || targetQuantity <= 0) return null;\n\t    return packages.find(function (packageConfig) {\n\t      if (!packageConfig) return false;\n\t      var packageQuantity = Number(packageConfig.quantity);\n\t      if (targetQuantity >= 20) return packageQuantity >= 20 || String(packageConfig.key || '').indexOf('20plus') !== -1;\n\t      return packageQuantity === targetQuantity;\n\t    }) || null;\n\t  }\n\n\t  function getPracticeB2BQuotePlanQuantity(plan) {\n\t    var normalizedPlan = String(plan || '').toLowerCase();\n\t    if (normalizedPlan === 'start' || normalizedPlan === 'practice-4') return 4;\n\t    if (normalizedPlan === 'praktijk' || normalizedPlan === 'flow-8') return 8;\n\t    if (normalizedPlan === 'partner' || normalizedPlan === 'scale-12') return 12;\n\t    if (\n\t      normalizedPlan === '20plus' ||\n\t      normalizedPlan === 'multi-locatie' ||\n\t      normalizedPlan === 'netwerk' ||\n\t      normalizedPlan === 'group-20plus'\n\t    ) {\n\t      return 20;\n\t    }\n\t    return 0;\n\t  }\n\n\t  function findPracticeB2BPackageByPlanOrQuantity(packages, planKey, quantity) {\n\t    return findPracticeB2BPackageByKey(packages, planKey) ||\n\t      findPracticeB2BPackageByQuantity(packages, quantity || getPracticeB2BQuotePlanQuantity(planKey)) ||\n\t      null;\n\t  }\n\n\t  function getPracticeB2BLinkHash(link) {\n\t    var href = link && link.getAttribute ? link.getAttribute('href') || '' : '';\n\t    if (!href) return '';\n\t    try {\n\t      return new URL(href, window.location.href).hash || '';\n\t    } catch (error) {\n\t      return href.charAt(0) === '#' ? href : '';\n\t    }\n\t  }\n\n\t  function isPracticeB2BEvidenceSourceLink(link) {\n\t    if (!link || !link.getAttribute) return false;\n\t    var href = String(link.getAttribute('href') || '').toLowerCase();\n\t    var label = String(link.textContent || '').toLowerCase();\n\t    return (\n\t      href.indexOf('30808663') !== -1 ||\n\t      href.indexOf('bjsports-2018-100045') !== -1 ||\n\t      label.indexOf('30808663') !== -1 ||\n\t      label.indexOf('van dyk') !== -1 && label.indexOf('br j sports') !== -1\n\t    );\n\t  }\n\n\t  function isPracticeB2BMeasurementContext() {\n\t    if (isPracticeB2BPage()) return true;\n\t    var path = (window.location.pathname || '').toLowerCase();\n\t    if (path.indexOf('/pages/request-a-quote') === -1) return false;\n\t    try {\n\t      var params = new URLSearchParams(window.location.search || '');\n\t      return normalizeSegment((params.get('segment') || '').toLowerCase()) === 'practice';\n\t    } catch (error) {\n\t      return false;\n\t    }\n\t  }\n\n\t  function collectPracticeCampaignParams() {\n\t    var allowedNames = {\n\t      gclid: true,\n\t      gbraid: true,\n\t      wbraid: true,\n\t      gad_source: true,\n\t      gad_campaignid: true,\n\t      dclid: true,\n\t      fbclid: true,\n\t      msclkid: true\n\t    };\n\t    var collected = [];\n\t    try {\n\t      var params = new URLSearchParams(window.location.search || '');\n\t      params.forEach(function (value, name) {\n\t        var normalizedName = String(name || '').toLowerCase();\n\t        if (!value) return;\n\t        if (normalizedName.indexOf('utm_') !== 0 && !allowedNames[normalizedName]) return;\n\t        collected.push({ name: normalizedName, value: String(value) });\n\t      });\n\t    } catch (error) {\n\t      return collected;\n\t    }\n\t    return collected;\n\t  }\n\n\t  function isPracticeCampaignTargetUrl(url) {\n\t    if (!url || url.origin !== window.location.origin) return false;\n\t    var path = (url.pathname || '').toLowerCase();\n\t    return (\n\t      path.indexOf('/cart') === 0 ||\n\t      path.indexOf('/checkout') === 0 ||\n\t      path.indexOf('/pages/request-a-quote') === 0 ||\n\t      path.indexOf('/products/proef-nordbelt-voor-fysiopraktijken') === 0\n\t    );\n\t  }\n\n\t  function appendPracticeCampaignParamsToUrl(url, params) {\n\t    params.forEach(function (entry) {\n\t      if (!url.searchParams.has(entry.name)) {\n\t        url.searchParams.set(entry.name, entry.value);\n\t      }\n\t    });\n\n\t    if (url.pathname.indexOf('/cart/add') === 0 && url.searchParams.has('return_to')) {\n\t      try {\n\t        var returnTo = new URL(url.searchParams.get('return_to'), window.location.origin);\n\t        if (returnTo.origin === window.location.origin) {\n\t          params.forEach(function (entry) {\n\t            if (!returnTo.searchParams.has(entry.name)) {\n\t              returnTo.searchParams.set(entry.name, entry.value);\n\t            }\n\t          });\n\t          url.searchParams.set('return_to', returnTo.pathname + returnTo.search + returnTo.hash);\n\t        }\n\t      } catch (error) {\n\t        // Keep the original return_to when it is not parseable.\n\t      }\n\t    }\n\t  }\n\n\t  function applyPracticeCampaignParamsToLink(link, params) {\n\t    if (!link || !link.getAttribute || !params.length) return;\n\t    var href = link.getAttribute('href') || '';\n\t    if (!href || href.charAt(0) === '#' || /^mailto:|^tel:/i.test(href)) return;\n\n\t    try {\n\t      var url = new URL(href, window.location.href);\n\t      if (!isPracticeCampaignTargetUrl(url)) return;\n\t      appendPracticeCampaignParamsToUrl(url, params);\n\t      link.setAttribute('href', url.pathname + url.search + url.hash);\n\t    } catch (error) {\n\t      // no-op\n\t    }\n\t  }\n\n\t  function bindPracticeCampaignParamPropagation() {\n\t    if (!isPracticeB2BMeasurementContext()) return;\n\t    if (document.documentElement.dataset.practiceCampaignParamsBound === 'true') return;\n\t    var params = collectPracticeCampaignParams();\n\t    if (!params.length) return;\n\n\t    document.documentElement.dataset.practiceCampaignParamsBound = 'true';\n\t    document.querySelectorAll('a[href]').forEach(function (link) {\n\t      applyPracticeCampaignParamsToLink(link, params);\n\t    });\n\t    document.addEventListener('click', function (event) {\n\t      var link = event.target && event.target.closest ? event.target.closest('a[href]') : null;\n\t      applyPracticeCampaignParamsToLink(link, params);\n\t    }, true);\n\t  }\n\n\t  function trackPracticeB2BPageView() {\n\t    if (!isPracticeB2BPage()) return;\n\t    pushPracticeB2BTrackingEventOnce(\n\t      'view_practice_page',\n\t      { practice_event_trigger: 'page_view' },\n\t      'view_practice_page'\n\t    );\n\t  }\n\n\t  function getPracticeQuoteFieldValue(form, names) {\n\t    if (!form) return '';\n\t    for (var index = 0; index < names.length; index += 1) {\n\t      var field = form.querySelector('[name=\"' + names[index] + '\"]');\n\t      if (field && field.value) return field.value;\n\t    }\n\t    return '';\n\t  }\n\n\t  function bindPracticeQuoteSubmitTracking() {\n\t    if (document.documentElement.dataset.practiceQuoteSubmitTrackingBound === 'true') return;\n\t    document.documentElement.dataset.practiceQuoteSubmitTrackingBound = 'true';\n\n\t    document.addEventListener('submit', function (event) {\n\t      var form = event.target;\n\t      if (!form || !form.matches) return;\n\t      if (!form.matches('form.nb-page-form--practice-quote, form.practice-b2b-staffel__form')) return;\n\n\t      var segment = normalizeSegment(getPracticeQuoteFieldValue(form, ['contact[segment]', 'contact[Segment]', 'contact[segment_key]']).toLowerCase());\n\t      if (segment && segment !== 'practice') return;\n\n\t      var config = getPracticePricingConfig();\n\t      var packages = config && Array.isArray(config.packages) ? config.packages : [];\n\t      var plan = getPracticeQuoteFieldValue(form, ['contact[plan]', 'contact[Plan]', 'contact[pakket]']);\n\t      if (!plan) {\n\t        try {\n\t          plan = new URLSearchParams(window.location.search || '').get('plan') || '';\n\t        } catch (error) {\n\t          plan = '';\n\t        }\n\t      }\n\t      var packageConfig = findPracticeB2BPackageByPlanOrQuantity(packages, plan || '20plus', 20);\n\t      var calculation = calculatePracticeB2BPackage(config, packageConfig, false);\n\t      var payload = Object.assign(\n\t        {\n\t          business_cta_location: form.classList.contains('practice-b2b-staffel__form') ? 'practice-staffel-form' : 'practice-quote-page',\n\t          practice_event_trigger: 'form_submit',\n\t          quote_flow: 'practice_quote'\n\t        },\n\t        buildPracticeB2BPackageTrackingPayload(packageConfig, calculation)\n\t      );\n\t      pushPracticeB2BTrackingEvent('submit_practice_quote', payload);\n\t    }, true);\n\t  }\n\n\t  function bindPracticeB2BFlowTracking() {\n\t    if (!isPracticeB2BPage()) return;\n\t    if (document.documentElement.dataset.practiceB2BFlowTrackingBound === 'true') return;\n\t    document.documentElement.dataset.practiceB2BFlowTrackingBound = 'true';\n\n\t    var config = getPracticePricingConfig();\n\t    var packages = config && Array.isArray(config.packages) ? config.packages : [];\n\n\t    document.addEventListener('click', function (event) {\n\t      var target = event.target;\n\t      var link = target && target.closest ? target.closest('a,button') : null;\n\t      if (!link) return;\n\t      if (link.getAttribute('aria-disabled') === 'true') return;\n\t      if (link.getAttribute('data-business-link-disabled') === 'true') return;\n\n\t      var ctaId = link.getAttribute('data-nb-cta') || '';\n\t      var location = link.getAttribute('data-business-cta-location') || '';\n\t      var intent = link.getAttribute('data-business-cta-intent') || '';\n\t      var planKey = link.getAttribute('data-business-plan-key') || '';\n\t      var card = link.closest ? link.closest('[data-business-plan-card][data-business-audience=\"practices\"]') : null;\n\t      if (!planKey && card) planKey = card.getAttribute('data-plan-key') || '';\n\n\t      if (isPracticeB2BEvidenceSourceLink(link)) {\n\t        pushPracticeB2BTrackingEvent('evidence_51_source_click', {\n\t          business_cta_location: 'evidence-source'\n\t        });\n\t      }\n\n\t      if (ctaId === 'business_page_hero_primary') {\n\t        pushPracticeB2BTrackingEvent('b2b_hero_cta_packages_click', {\n\t          business_cta_location: 'hero'\n\t        });\n\t      }\n\n\t      if (ctaId === 'business_page_hero_secondary') {\n\t        pushPracticeB2BTrackingEvent('b2b_hero_cta_trial_click', {\n\t          business_cta_location: 'hero'\n\t        });\n\t      }\n\n\t      if (getPracticeB2BLinkHash(link) === '#practice-b2b-staffel') {\n\t        var quotePackage = findPracticeB2BPackageByPlanOrQuantity(packages, planKey || '20plus', 20);\n\t        var quoteCalculation = calculatePracticeB2BPackage(config, quotePackage, false);\n\t        var quotePayload = Object.assign(\n\t          {\n\t            business_cta_location: location || 'staffel-link',\n\t            practice_event_trigger: 'staffel_click'\n\t          },\n\t          buildPracticeB2BPackageTrackingPayload(quotePackage, quoteCalculation)\n\t        );\n\t        pushPracticeB2BTrackingEvent('click_practice_staffel_20_plus', quotePayload);\n\t        pushPracticeB2BTrackingEventOnce(\n\t          'staffel_request_started',\n\t          quotePayload,\n\t          'staffel_request_started'\n\t        );\n\t      }\n\n\t      if (location !== 'pricing-card' || intent !== 'buy') return;\n\n\t      var packageConfig = findPracticeB2BPackageByKey(packages, planKey);\n\t      var calculation = calculatePracticeB2BPackage(config, packageConfig, false);\n\t      var quantity = Number(packageConfig && packageConfig.quantity);\n\t      var packageEvent = '';\n\t      if (quantity === 4) packageEvent = 'add_to_cart_4_pack';\n\t      if (quantity === 8) packageEvent = 'add_to_cart_8_pack';\n\t      if (quantity === 12) packageEvent = 'add_to_cart_12_pack';\n\t      if (!packageEvent) return;\n\t      var packagePayload = Object.assign(\n\t        {\n\t          business_cta_location: 'pricing-card',\n\t          practice_event_trigger: 'pricing_card_click'\n\t        },\n\t        buildPracticeB2BPackageTrackingPayload(packageConfig, calculation)\n\t      );\n\n\t      pushPracticeB2BTrackingEvent('click_practice_package_' + quantity, packagePayload);\n\t      pushPracticeB2BTrackingEvent('add_to_cart_practice_package', packagePayload);\n\t      pushPracticeB2BTrackingEvent(\n\t        packageEvent,\n\t        packagePayload\n\t      );\n\t    });\n\t  }\n\n  document.addEventListener('DOMContentLoaded', function () {\n    cleanPracticeB2BPlatformCopy(document);\n    cleanPracticeB2BStaleLocaleCopy(document);\n    cleanPracticeB2BMarginLocaleCopy(document);\n    readBusinessPricingConfig();\n    trackPracticeB2BPageView();\n    bindPracticeCampaignParamPropagation();\n    syncPlanGrids();\n    syncPlanStage();\n    syncReferralDiagram();\n    syncCompareBadgeReveal();\n    bindTabs();\n    setAudience(getDefaultAudience(), { force: true });\n    bindFaqTracking();\n    bindDisabledLinks();\n    bindBusinessAnchorScroll();\n    bindBusinessCtaTracking();\n    bindPracticeB2BFlowTracking();\n    normalizePracticeB2BSplitHeadings(document);\n    normalizePracticeB2BHomekitVideoLabels(document);\n    runBusinessIdleTask(function () {\n      ensurePracticeB2BMarginOverviewFallback();\n      bindPracticeB2BMarginOverview();\n      bindPracticeB2BPlanCards();\n      bindPracticeB2BCalculator();\n      normalizePracticeB2BSplitHeadings(document);\n      normalizePracticeB2BHomekitVideoLabels(document);\n      cleanPracticeB2BStaleLocaleCopy(document);\n      cleanPracticeB2BMarginLocaleCopy(document);\n    });\n    initQuotePrefill();\n    bindPracticeQuoteSubmitTracking();\n    bindPracticeCampaignParamPropagation();\n    bindPlanStage();\n    bindReferralDiagram();\n    bindCompareBadgeReveal();\n    bindCompareWheelIntent();\n    window.setTimeout(function () {\n      normalizePracticeB2BSplitHeadings(document);\n      normalizePracticeB2BHomekitVideoLabels(document);\n      cleanPracticeB2BPlatformCopy(document);\n      cleanPracticeB2BStaleLocaleCopy(document);\n      cleanPracticeB2BMarginLocaleCopy(document);\n    }, 500);\n    [1500, 3000].forEach(function (delay) {\n      window.setTimeout(function () {\n        normalizePracticeB2BSplitHeadings(document);\n        normalizePracticeB2BHomekitVideoLabels(document);\n        cleanPracticeB2BStaleLocaleCopy(document);\n        cleanPracticeB2BMarginLocaleCopy(document);\n      }, delay);\n    });\n  });\n})();\n"],
  "mappings": "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",
  "names": ["node", "cleaned"]
}
