{"id":6576,"date":"2026-07-29T10:34:16","date_gmt":"2026-07-29T08:34:16","guid":{"rendered":"https:\/\/www.henze-bnp.de\/productfinder\/"},"modified":"2026-07-30T09:48:58","modified_gmt":"2026-07-30T07:48:58","slug":"productfinder","status":"publish","type":"page","link":"https:\/\/www.henze-bnp.de\/en\/productfinder\/","title":{"rendered":"Product Finder"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"6576\" class=\"elementor elementor-6576 elementor-6565\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1c286e9 e-flex e-con-boxed e-con e-parent\" data-id=\"1c286e9\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-fe51ba3 elementor-widget elementor-widget-heading\" data-id=\"fe51ba3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Product Finder<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e85cf80 elementor-widget elementor-widget-text-editor\" data-id=\"e85cf80\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\"><strong>Find the ideal material for your application<\/strong><\/p><p class=\"font-claude-response-body break-words whitespace-normal\" dir=\"ltr\">Use the sliders to select the properties that are critical for your application, from wear resistance to flexural strength.<br\/>The product advisor automatically calculates which of our boron nitride ceramic materials best match your requirements and clearly displays the property profile in a diagram. Have you found your material? Click \u201cReview results with no obligation\u201d to forward your selection directly to our team of experts. After a brief review of your request, a personal advisor will contact you shortly.<br\/>   <\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1f14211 elementor-widget elementor-widget-html\" data-id=\"1f14211\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div id=\"produktberater\">\r\n  <h4 class=\"pb-headline\" id=\"pb-headline\"><\/h4>\r\n  <p class=\"pb-subline\" id=\"pb-subline\"><\/p>\r\n\r\n  <div class=\"pb-grid\">\r\n\r\n    <!-- \u2550\u2550\u2550\u2550 LINKE SPALTE: Filter \u2550\u2550\u2550\u2550 -->\r\n    <aside class=\"pb-panel pb-filter-col\">\r\n      <div class=\"pb-panel-title\" id=\"pb-title-filter\"><\/div>\r\n\r\n      <label class=\"pb-label\" for=\"filter-anwendung\" id=\"pb-label-anwendung\"><\/label>\r\n      <select id=\"filter-anwendung\">\r\n        <option value=\"\" id=\"pb-option-alle\"><\/option>\r\n        <!-- wird per JS bef\u00fcllt -->\r\n      <\/select>\r\n\r\n      <div class=\"pb-label\" id=\"pb-label-wichtigkeit\" style=\"margin-bottom:12px;\"><\/div>\r\n      <div class=\"pb-sliders\" id=\"pb-sliders\">\r\n        <!-- wird per JS generiert -->\r\n      <\/div>\r\n\r\n      <button class=\"pb-reset\" id=\"pb-reset\"><\/button>\r\n    <\/aside>\r\n\r\n    <!-- \u2550\u2550\u2550\u2550 MITTLERE SPALTE: Ergebnisse \u2550\u2550\u2550\u2550 -->\r\n    <main class=\"pb-panel pb-results-col\">\r\n      <div class=\"pb-panel-title\">\r\n        <div class=\"pb-results-header\">\r\n          <span id=\"pb-title-ergebnisse\"><\/span>\r\n          <span class=\"pb-count\" id=\"pb-count\"><\/span>\r\n        <\/div>\r\n      <\/div>\r\n      <div id=\"pb-product-list\" class=\"pb-product-list\">\r\n        <div class=\"pb-loading\">\r\n          <div class=\"pb-spinner\"><\/div>\r\n          <span id=\"pb-loading-text\"><\/span>\r\n        <\/div>\r\n      <\/div>\r\n    <\/main>\r\n\r\n    <!-- \u2550\u2550\u2550\u2550 RECHTE SPALTE: Radar-Chart \u2550\u2550\u2550\u2550 -->\r\n    <aside class=\"pb-chart-col\">\r\n      <div class=\"pb-panel\">\r\n        <div class=\"pb-panel-title\" id=\"pb-title-chart\"><\/div>\r\n        <div id=\"chart-product-name\" class=\"pb-chart-name\" style=\"display:none;\"><\/div>\r\n        <div id=\"chart-product-hint\" class=\"pb-chart-hint\" style=\"display:none;\"><\/div>\r\n        <div id=\"chart-placeholder\" class=\"pb-chart-placeholder\">\r\n          <div class=\"pb-chart-placeholder-icon\">\u25ce<\/div>\r\n          <span id=\"pb-chart-placeholder-text\"><\/span>\r\n        <\/div>\r\n        <canvas id=\"radarChart\" style=\"display:none;\"><\/canvas>\r\n        <div class=\"pb-legend\" id=\"pb-legend\" style=\"display:none;\"><\/div>\r\n\r\n        <!-- \u2550\u2550\u2550\u2550 AKKORDEON: Unverbindliche Anfrage \u2550\u2550\u2550\u2550 -->\r\n        <div class=\"pb-accordion\" id=\"pb-accordion\" style=\"display:none;\">\r\n          <button class=\"pb-accordion-trigger\" id=\"pb-accordion-trigger\">\r\n            <span id=\"pb-accordion-label\"><\/span>\r\n          <\/button>\r\n\r\n          <div class=\"pb-accordion-panel\">\r\n            <div class=\"pb-accordion-inner\">\r\n              <div class=\"pb-accordion-summary\" id=\"pb-accordion-summary\">\r\n                <!-- wird per JS bef\u00fcllt -->\r\n              <\/div>\r\n              \n<div class=\"wpcf7 no-js\" id=\"wpcf7-f6526-o1\" lang=\"en-US\" dir=\"ltr\" data-wpcf7-id=\"6526\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/en\/wp-json\/wp\/v2\/pages\/6576#wpcf7-f6526-o1\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Contact form\" novalidate=\"novalidate\" data-status=\"init\">\n<fieldset class=\"hidden-fields-container\"><input type=\"hidden\" name=\"_wpcf7\" value=\"6526\" \/><input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.1.6\" \/><input type=\"hidden\" name=\"_wpcf7_locale\" value=\"en_US\" \/><input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f6526-o1\" \/><input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/><input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/>\n<\/fieldset>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"produkt_name\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"produkt_score\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"anwendung\" \/>\n<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"eigenschaften_profil\" \/>\n<p><span class=\"wpcf7-form-control-wrap\" data-name=\"your-name\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" autocomplete=\"your-name\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Last Name, First Name*\" value=\"\" type=\"text\" name=\"your-name\" \/><\/span><span class=\"wpcf7-form-control-wrap\" data-name=\"your-email\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email\" autocomplete=\"your-email\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"E-Mail *\" value=\"\" type=\"email\" name=\"your-email\" \/><\/span><span class=\"wpcf7-form-control-wrap\" data-name=\"telefon\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-tel wpcf7-text wpcf7-validates-as-tel\" autocomplete=\"phone\" aria-invalid=\"false\" placeholder=\"Phone\" value=\"\" type=\"tel\" name=\"telefon\" \/><\/span><span class=\"wpcf7-form-control-wrap\" data-name=\"your-company\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" autocomplete=\"company\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Comapny*\" value=\"\" type=\"text\" name=\"your-company\" \/><\/span><span class=\"wpcf7-form-control-wrap\" data-name=\"your-city\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" autocomplete=\"city\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"ZIP Code City *\" value=\"\" type=\"text\" name=\"your-city\" \/><\/span><span class=\"wpcf7-form-control-wrap\" data-name=\"nachricht\"><textarea cols=\"40\" rows=\"10\" maxlength=\"2000\" class=\"wpcf7-form-control wpcf7-textarea\" aria-invalid=\"false\" placeholder=\"Message\" name=\"nachricht\"><\/textarea><\/span>\n<\/p>\n<p><input class=\"wpcf7-form-control wpcf7-submit has-spinner\" type=\"submit\" value=\"Send\" \/>\n<\/p><input type=\"hidden\" id=\"ct_checkjs_cf7_49ae49a23f67c759bf4fc791ba842aa2\" name=\"ct_checkjs_cf7\" value=\"0\" \/><script data-cookieconsent=\"ignore\">setTimeout(function(){var ct_input_name = \"ct_checkjs_cf7_49ae49a23f67c759bf4fc791ba842aa2\";if (document.getElementById(ct_input_name) !== null) {var ct_input_value = document.getElementById(ct_input_name).value;document.getElementById(ct_input_name).value = document.getElementById(ct_input_name).value.replace(ct_input_value, '753aa04bbb785288dc186e627a2c7c8fad96cd0f8242b4899130fe4561718431');}}, 1000);<\/script><input\n                    class=\"apbct_special_field apbct_email_id__wp_contact_form_7\"\n                    name=\"apbct__email_id__wp_contact_form_7\"\n                    aria-label=\"apbct__label_id__wp_contact_form_7\"\n                    type=\"text\" size=\"30\" maxlength=\"200\" autocomplete=\"off\"\n                    value=\"\"\n                \/><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<input\n                    class=\"apbct_special_field apbct_email_id__elementor_form\"\n                    name=\"apbct__email_id__elementor_form\"\n                    aria-label=\"apbct__label_id__elementor_form\"\n                    type=\"text\" size=\"30\" maxlength=\"200\" autocomplete=\"off\"\n                    value=\"\"\n                \/><\/form>\n<\/div>\n\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n\r\n      <\/div>\r\n    <\/aside>\r\n\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n\/* ============================================================\r\n   SPRACHERKENNUNG\r\n   Erkennt DE\/EN automatisch \u00fcber die URL (WPML-Pr\u00e4fix \/en\/).\r\n   Alle UI-Texte kommen aus dieser Tabelle \u2013 kein doppeltes HTML n\u00f6tig.\r\n   ============================================================ *\/\r\nconst PB_LANG = window.location.pathname.startsWith('\/en\/') ? 'en' : 'de';\r\n\r\nconst PB_I18N = {\r\n  de: {\r\n    headline:           'Bitte ausw\u00e4hlen',\r\n    subline:            'W\u00e4hlen Sie Ihre Anwendung und gewichten Sie die wichtigsten Eigenschaften \u2013 passende Produkte werden live ermittelt.',\r\n    filterTitel:        'Filter & Gewichtung',\r\n    labelAnwendung:     'Anwendungsbereich',\r\n    alleAnwendungen:    'Alle Anwendungen',\r\n    labelWichtigkeit:   'Eigenschafts-Wichtigkeit',\r\n    reset:              '\u21ba Zur\u00fccksetzen',\r\n    ergebnisTitel:      'Passende Produkte',\r\n    laden:              'Produkte werden geladen\u2026',\r\n    ladeError:          'Produkte konnten nicht geladen werden.',\r\n    keineProdukte:      'Keine Produkte f\u00fcr diese Auswahl gefunden.',\r\n    keineProdukteTipp:  'Passen Sie den Anwendungsfilter an.',\r\n    chartTitel:         'Eigenschaftsprofil',\r\n    chartHint:          'Klicken Sie ein Produkt an, um es hier anzuzeigen.',\r\n    chartPlaceholder:   'Produkt ausw\u00e4hlen um das Eigenschaftsprofil anzuzeigen',\r\n    akkordeonBtn:       'Ergebnis unverbindlich pr\u00fcfen lassen',\r\n    summaryProdukt:     'Produkt',\r\n    summaryAnwendung:   'Anwendung',\r\n    summaryScore:       '\u00dcbereinstimmung',\r\n    summaryTop3:        'Top-3-Priorit\u00e4ten',\r\n    keineAnwendung:     '(keine Anwendung gew\u00e4hlt)',\r\n    keineTop3:          '(keine Top-3-Auswahl getroffen)',\r\n    produktLabel:       'Produkt',    \/\/ in Score-Badge-Zeile\r\n    produktCount:       n => `${n} Produkt${n !== 1 ? 'e' : ''}`,\r\n    top3Titel:          'Als Top-3-Priorit\u00e4t markieren',\r\n    chartLegende: {\r\n      produktwert:      'Produktwert',\r\n      wichtigkeit:      'Ihre Wichtigkeit',\r\n    },\r\n    eigenschaften: [\r\n      'Verschlei\u00dfbest\u00e4ndigkeit',\r\n      'Reinheit',\r\n      'Geringe Gasdurchl\u00e4ssigkeit',\r\n      'Elektr. Widerstand',\r\n      'W\u00e4rmeleitf\u00e4higkeit',\r\n      'Thermoschockbest.',\r\n      'Geringe W\u00e4rmeausdehnung',\r\n      'Nichtbenetzungsverhalten',\r\n      'Biegefestigkeit',\r\n    ],\r\n  },\r\n  en: {\r\n    headline:           'Please select',\r\n    subline:            'Select your application and rate the most important properties \u2013 matching products are determined in real time.',\r\n    filterTitel:        'Filter & Weighting',\r\n    labelAnwendung:     'Application Area',\r\n    alleAnwendungen:    'All Applications',\r\n    labelWichtigkeit:   'Property Importance',\r\n    reset:              '\u21ba Reset',\r\n    ergebnisTitel:      'Matching Products',\r\n    laden:              'Loading products\u2026',\r\n    ladeError:          'Products could not be loaded.',\r\n    keineProdukte:      'No products found for this selection.',\r\n    keineProdukteTipp:  'Try adjusting the application filter.',\r\n    chartTitel:         'Property Profile',\r\n    chartHint:          'Click a product to display its property profile.',\r\n    chartPlaceholder:   'Select a product to display its property profile',\r\n    akkordeonBtn:       'Request a non-binding review',\r\n    summaryProdukt:     'Product',\r\n    summaryAnwendung:   'Application',\r\n    summaryScore:       'Match',\r\n    summaryTop3:        'Top-3 Priorities',\r\n    keineAnwendung:     '(no application selected)',\r\n    keineTop3:          '(no top-3 selection made)',\r\n    produktLabel:       'Product',\r\n    produktCount:       n => `${n} Product${n !== 1 ? 's' : ''}`,\r\n    top3Titel:          'Mark as top-3 priority',\r\n    chartLegende: {\r\n      produktwert:      'Product value',\r\n      wichtigkeit:      'Your importance',\r\n    },\r\n    eigenschaften: [\r\n      'Wear Resistance',\r\n      'Purity',\r\n      'Low Gas Permeability',\r\n      'Electrical Resistance',\r\n      'Thermal Conductivity',\r\n      'Thermal Shock Resistance',\r\n      'Low Thermal Expansion',\r\n      'Non-Wetting Behaviour',\r\n      'Flexural Strength',\r\n    ],\r\n  },\r\n};\r\n\r\n\/\/ Aktive \u00dcbersetzung \u2013 ab hier immer T.xxx verwenden statt Hardcode\r\nconst T = PB_I18N[PB_LANG];\r\n\r\n\/* ============================================================\r\n   KONFIGURATION\r\n   \u2192 In WordPress: diese Werte per wp_localize_script \u00fcbergeben\r\n   ============================================================ *\/\r\nconst PB_CONFIG = {\r\n  \/\/ REST API Basis-URL \u2013 in WP ersetzt durch: \r\n  apiBase: '\/wp-json\/wp\/v2\/',\r\n\r\n  \/\/ Dein Custom Post Type Slug (wie in register_post_type angegeben)\r\n  postType: 'produkte',\r\n\r\n  \/\/ ACF-Feldname f\u00fcr die Anwendungen entf\u00e4llt \u2013 Anwendungen sind jetzt eine\r\n  \/\/ WordPress-Taxonomie (angelegt \u00fcber ACF -> Taxonomien), keine ACF-Relationship.\r\n  \/\/ Im REST-Output liegen die Klartext-Namen daher NICHT unter \"acf\",\r\n  \/\/ sondern im eigenen Feld \"anwendung_namen\" (siehe Code-Snippet f\u00fcr functions.php).\r\n  anwendungenFeld: 'anwendung_namen', \/\/ Top-Level-Feld, nicht innerhalb von acf{}\r\n\r\n  \/\/ Die 9 Eigenschaften: key = ACF-Feldname, label = Anzeigename\r\n  \/\/ werteTabelle = Mapping Punktestufe (0-8) -> tats\u00e4chlicher technischer Wert.\r\n  \/\/ Bei Eigenschaften ohne eigene Werteskala (reine \"Punkte\") ist werteTabelle = null,\r\n  \/\/ dann wird einfach die Punktzahl selbst angezeigt.\r\n  eigenschaften: [\r\n    {\r\n      key: 'verschleisbestandigkeit', label: T.eigenschaften[0],\r\n      werteTabelle: null, einheit: ''\r\n    },\r\n    {\r\n      key: 'reinheit', label: T.eigenschaften[1],\r\n      werteTabelle: [0, 40, 60, 80, 95, 98.5, 99, 99.5, 99.5], einheit: '%'\r\n    },\r\n    {\r\n      key: 'geringe_gasdurchlassigkeit', label: T.eigenschaften[2],\r\n      werteTabelle: null, einheit: ''\r\n    },\r\n    {\r\n      key: 'elektrischer_widerstand', label: T.eigenschaften[3],\r\n      werteTabelle: [0, 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15, 1e15], einheit: ' \u03a9\u00b7cm'\r\n    },\r\n    {\r\n      key: 'warmeleitfahigkeit', label: T.eigenschaften[4],\r\n      werteTabelle: [0, 15, 20, 30, 40, 60, 90, 100, 100], einheit: ' W\/m\u00b7K'\r\n    },\r\n    {\r\n      key: 'thermoschockbestandigkeit', label: T.eigenschaften[5],\r\n      werteTabelle: null, einheit: ''\r\n    },\r\n    {\r\n      key: 'geringe_warmeausdehnung', label: T.eigenschaften[6],\r\n      werteTabelle: [0, 6, 4, 3, 2, 1.5, 1, 0.5, 0.5], einheit: ' \u00d710\u207b\u2076\/K'\r\n    },\r\n    {\r\n      key: 'nichtbenetzungsverhalten', label: T.eigenschaften[7],\r\n      werteTabelle: null, einheit: ''\r\n    },\r\n    {\r\n      key: 'biegefestigkeit', label: T.eigenschaften[8],\r\n      werteTabelle: [0, 5, 10, 20, 35, 60, 120, 160, 200], einheit: ' MPa'\r\n    },\r\n  ]\r\n};\r\n\r\n\/* ============================================================\r\n   HILFSFUNKTION: Anzeige-Wert f\u00fcr eine Wichtigkeits-Stufe ermitteln\r\n   Stufe 0-8 -> entweder die reine Punktzahl oder der gemappte\r\n   technische Wert, inkl. lesbarer Formatierung (z. B. wissenschaftliche\r\n   Notation f\u00fcr den elektrischen Widerstand).\r\n   ============================================================ *\/\r\nfunction formatiereAnzeigeWert(eigenschaft, stufe) {\r\n  if (!eigenschaft.werteTabelle) {\r\n    return String(stufe); \/\/ reine Punkteanzeige, keine Umrechnung\r\n  }\r\n  const wert = eigenschaft.werteTabelle[stufe];\r\n\r\n  \/\/ Gro\u00dfe Zahlen (elektrischer Widerstand) lesbar in wissenschaftlicher Notation\r\n  if (wert >= 1e6) {\r\n    const exponent = Math.round(Math.log10(wert));\r\n    return `1E+${exponent}${eigenschaft.einheit}`;\r\n  }\r\n  return `${wert}${eigenschaft.einheit}`;\r\n}\r\n\r\n\/* ============================================================\r\n   ZUSTAND\r\n   ============================================================ *\/\r\nlet alleProdukte = [];\r\nlet wichtigkeit = {};        \/\/ { key: 0-8, \u2026 }\r\nlet top3Auswahl = new Set(); \/\/ Set der bis zu 3 als \"Top-Priorit\u00e4t\" markierten Eigenschafts-Keys\r\nlet aktiverFilter = '';      \/\/ Anwendung\r\nlet aktivesProduktId = null;\r\nlet radarChart = null;\r\n\r\n\/* ============================================================\r\n   INIT\r\n   ============================================================ *\/\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n  \/\/ \u2500\u2500 UI-Texte aus \u00dcbersetzungstabelle setzen \u2500\u2500\r\n  document.getElementById('pb-headline').textContent        = T.headline;\r\n  document.getElementById('pb-subline').textContent         = T.subline;\r\n  document.getElementById('pb-title-filter').textContent    = T.filterTitel;\r\n  document.getElementById('pb-label-anwendung').textContent = T.labelAnwendung;\r\n  document.getElementById('pb-option-alle').textContent     = T.alleAnwendungen;\r\n  document.getElementById('pb-label-wichtigkeit').textContent = T.labelWichtigkeit;\r\n  document.getElementById('pb-reset').textContent           = T.reset;\r\n  document.getElementById('pb-title-ergebnisse').textContent = T.ergebnisTitel;\r\n  document.getElementById('pb-loading-text').textContent    = T.laden;\r\n  document.getElementById('pb-title-chart').textContent     = T.chartTitel;\r\n  document.getElementById('chart-product-hint').textContent = T.chartHint;\r\n  document.getElementById('pb-chart-placeholder-text').textContent = T.chartPlaceholder;\r\n  document.getElementById('pb-accordion-label').textContent = T.akkordeonBtn;\r\n\r\n  \/\/ Wichtigkeit initial alle auf 0\r\n  PB_CONFIG.eigenschaften.forEach(e => wichtigkeit[e.key] = 0);\r\n\r\n  baueSliders();\r\n  ladeProdukte();\r\n\r\n  document.getElementById('filter-anwendung').addEventListener('change', e => {\r\n    aktiverFilter = e.target.value;\r\n    aktualisiereErgebnisse();\r\n  });\r\n\r\n  document.getElementById('pb-reset').addEventListener('click', resetFilter);\r\n});\r\n\r\n\/* ============================================================\r\n   PRODUKTE LADEN\r\n   ============================================================ *\/\r\nasync function ladeProdukte() {\r\n  try {\r\n    \/\/ \u2500\u2500 WORDPRESS PRODUKTIV-CODE (auskommentiert f\u00fcr Demo) \u2500\u2500\u2500\u2500\u2500\u2500\r\n     const res = await fetch(\r\n       `${PB_CONFIG.apiBase}${PB_CONFIG.postType}?per_page=100&_fields=id,title,acf,anwendung_namen&lang=${PB_LANG}`\r\n     );\r\n     if (!res.ok) throw new Error('API-Fehler ' + res.status);\r\n     alleProdukte = await res.json();\r\n    \r\n    befuelleAnwendungsDropdown();\r\n    aktualisiereErgebnisse();\r\n  } catch (err) {\r\n    document.getElementById('pb-product-list').innerHTML =\r\n      `<div class=\"pb-empty\"><div class=\"pb-empty-icon\">\u26a0<\/div>${T.ladeError}<br><small>${err.message}<\/small><\/div>`;\r\n  }\r\n}\r\n\r\n\/* ============================================================\r\n   ANWENDUNGS-DROPDOWN BEF\u00dcLLEN\r\n   ============================================================ *\/\r\nfunction befuelleAnwendungsDropdown() {\r\n  const alleAnwendungen = new Set();\r\n  alleProdukte.forEach(p => {\r\n    \/\/ anwendung_namen liegt auf Top-Level (Taxonomie), NICHT unter acf{}.\r\n    \/\/ Das Feld liefert bereits ein Array von Klartext-Namen (Strings),\r\n    \/\/ siehe register_rest_field()-Snippet in functions.php.\r\n    const anw = p[PB_CONFIG.anwendungenFeld] || [];\r\n    anw.forEach(a => alleAnwendungen.add(a));\r\n  });\r\n\r\n  const sel = document.getElementById('filter-anwendung');\r\n  [...alleAnwendungen].sort().forEach(a => {\r\n    const opt = document.createElement('option');\r\n    opt.value = a;\r\n    opt.textContent = a;\r\n    sel.appendChild(opt);\r\n  });\r\n}\r\n\r\n\/* ============================================================\r\n   SLIDER BAUEN (inkl. Top-3-Checkbox)\r\n   ============================================================ *\/\r\nfunction baueSliders() {\r\n  const container = document.getElementById('pb-sliders');\r\n  container.innerHTML = '';\r\n\r\n  PB_CONFIG.eigenschaften.forEach((eigenschaft) => {\r\n    const { key, label } = eigenschaft;\r\n    const row = document.createElement('div');\r\n    row.className = 'pb-slider-row';\r\n\r\n    const istTop3 = top3Auswahl.has(key);\r\n\r\n    row.innerHTML = `\r\n      <div class=\"pb-slider-header\">\r\n        <label class=\"pb-top3-checkbox\">\r\n          <input type=\"checkbox\"\r\n                 id=\"top3-${key}\"\r\n                 ${istTop3 ? 'checked' : ''}\r\n                 aria-label=\"${label} \u2013 ${T.top3Titel}\">\r\n          <span class=\"pb-top3-mark\" title=\"${T.top3Titel}\">\u2605<\/span>\r\n        <\/label>\r\n        <span class=\"pb-slider-label\">${label}<\/span>\r\n        <span class=\"pb-slider-value\" id=\"val-${key}\">${formatiereAnzeigeWert(eigenschaft, wichtigkeit[key])}<\/span>\r\n      <\/div>\r\n      <input type=\"range\"\r\n             id=\"slider-${key}\"\r\n             min=\"0\" max=\"8\" step=\"1\"\r\n             value=\"${wichtigkeit[key]}\"\r\n             aria-label=\"${label}: ${T.labelWichtigkeit}\"\r\n      >\r\n    `;\r\n\r\n    const input = row.querySelector('input[type=\"range\"]');\r\n    input.addEventListener('input', () => {\r\n      wichtigkeit[key] = parseInt(input.value);\r\n      document.getElementById(`val-${key}`).textContent = formatiereAnzeigeWert(eigenschaft, wichtigkeit[key]);\r\n      aktualisiereErgebnisse();\r\n    });\r\n\r\n    const checkbox = row.querySelector(`#top3-${key}`);\r\n    checkbox.addEventListener('change', () => toggleTop3(key, checkbox));\r\n\r\n    container.appendChild(row);\r\n    if (istTop3) row.classList.add('is-top3');\r\n  });\r\n\r\n  aktualisiereTop3Sperre();\r\n}\r\n\r\n\/* ============================================================\r\n   TOP-3-AUSWAHL: AN\/ABW\u00c4HLEN UND SPERRE BEI 3 ERREICHT\r\n   ============================================================ *\/\r\nfunction toggleTop3(key, checkboxEl) {\r\n  if (checkboxEl.checked) {\r\n    if (top3Auswahl.size >= 3) {\r\n      \/\/ Sicherheitsnetz: sollte durch die Sperre eigentlich nie eintreten\r\n      checkboxEl.checked = false;\r\n      return;\r\n    }\r\n    top3Auswahl.add(key);\r\n  } else {\r\n    top3Auswahl.delete(key);\r\n  }\r\n\r\n  \/\/ Visuelle Hervorhebung der zugeh\u00f6rigen Slider-Zeile\r\n  const row = checkboxEl.closest('.pb-slider-row');\r\n  row.classList.toggle('is-top3', checkboxEl.checked);\r\n\r\n  aktualisiereTop3Sperre();\r\n}\r\n\r\nfunction aktualisiereTop3Sperre() {\r\n  const maxErreicht = top3Auswahl.size >= 3;\r\n  PB_CONFIG.eigenschaften.forEach(({ key }) => {\r\n    const checkbox = document.getElementById(`top3-${key}`);\r\n    if (!checkbox) return;\r\n    \/\/ Nicht ausgew\u00e4hlte Checkboxen deaktivieren, sobald 3 erreicht sind\r\n    checkbox.disabled = maxErreicht && !checkbox.checked;\r\n  });\r\n  \r\n  aktualisiereErgebnisse();\r\n}\r\n\r\n\/* ============================================================\r\n   FILTER ZUR\u00dcCKSETZEN\r\n   ============================================================ *\/\r\nfunction resetFilter() {\r\n  PB_CONFIG.eigenschaften.forEach((eigenschaft) => {\r\n    const { key } = eigenschaft;\r\n    wichtigkeit[key] = 0;\r\n    const slider = document.getElementById(`slider-${key}`);\r\n    if (slider) slider.value = 0;\r\n    const val = document.getElementById(`val-${key}`);\r\n    if (val) val.textContent = formatiereAnzeigeWert(eigenschaft, 0);\r\n\r\n    const checkbox = document.getElementById(`top3-${key}`);\r\n    if (checkbox) checkbox.checked = false;\r\n    const row = checkbox?.closest('.pb-slider-row');\r\n    if (row) row.classList.remove('is-top3');\r\n  });\r\n  top3Auswahl.clear();\r\n  aktualisiereTop3Sperre();\r\n\r\n  aktiverFilter = '';\r\n  document.getElementById('filter-anwendung').value = '';\r\n  aktualisiereErgebnisse();\r\n}\r\n\r\n\/* ============================================================\r\n   SCORING-ALGORITHMUS (Abstandsmodell, alle 9 Eigenschaften)\r\n   Score = 100 - \u00d8 normalisierter Abstand (Slider-Zielwert vs. Produktwert)\r\n   \u2192 Slider 0 = Zielwert 0, flie\u00dft wie alle anderen ein\r\n   \u2192 Alle 9 Eigenschaften werden immer ber\u00fccksichtigt\r\n   \u2192 Exakte \u00dcbereinstimmung aller 9 = 100%, maximaler Abstand = 0%\r\n   ============================================================ *\/\r\n\/* ============================================================\r\n   SCORING-ALGORITHMUS (Abstandsmodell mit Vollst\u00e4ndigkeits-Gewichtung)\r\n   - Slider 0 = \"nicht bewertet\", flie\u00dft NICHT ins Scoring ein\r\n   - Sind ALLE Slider auf 0 \u2192 Score 0% f\u00fcr alle Produkte\r\n   - Score = \u00dcbereinstimmung \u00d7 (aktive Slider \/ 9)\r\n     \u2192 1 aktiver Slider mit perfekter \u00dcbereinstimmung = max. 11%\r\n     \u2192 Alle 9 aktiv mit perfekter \u00dcbereinstimmung = 100%\r\n     \u2192 Mehr Angaben = aussagekr\u00e4ftigerer Score\r\n   ============================================================ *\/\r\nfunction berechneScore(produkt) {\r\n  const aktive = PB_CONFIG.eigenschaften.filter(({ key }) => wichtigkeit[key] > 0);\r\n\r\n  \/\/ Keine Pr\u00e4ferenz angegeben \u2192 Score 0% f\u00fcr alle\r\n  if (aktive.length === 0) return 0;\r\n\r\n  const abstandSumme = aktive.reduce((sum, { key }) => {\r\n    const ziel = wichtigkeit[key];\r\n    const ist  = parseFloat(produkt.acf?.[key] ?? 0);\r\n    return sum + Math.abs(ziel - ist) \/ 8;\r\n  }, 0);\r\n\r\n  const uebereinstimmung = 1 - (abstandSumme \/ aktive.length);\r\n  const gewichtung = aktive.length \/ PB_CONFIG.eigenschaften.length;\r\n\r\n  return Math.max(0, Math.round(uebereinstimmung * gewichtung * 100));\r\n}\r\n\r\n\/* ============================================================\r\n   ANWENDUNGSFILTER\r\n   ============================================================ *\/\r\nfunction matchAnwendung(produkt) {\r\n  if (!aktiverFilter) return true;\r\n  const anw = produkt[PB_CONFIG.anwendungenFeld] || [];\r\n  return anw.includes(aktiverFilter);\r\n}\r\n\r\n\/* ============================================================\r\n   ERGEBNISSE AKTUALISIEREN\r\n   ============================================================ *\/\r\nfunction aktualisiereErgebnisse() {\r\n  const gefiltert = alleProdukte\r\n    .filter(matchAnwendung)\r\n    .map(p => ({ ...p, score: berechneScore(p) }))\r\n    .sort((a, b) => b.score - a.score);\r\n\r\n  const list = document.getElementById('pb-product-list');\r\n  const count = document.getElementById('pb-count');\r\n\r\n  count.textContent = T.produktCount(gefiltert.length);\r\n\r\n  if (gefiltert.length === 0) {\r\n    list.innerHTML = `\r\n      <div class=\"pb-empty\">\r\n        <div class=\"pb-empty-icon\">\u25ce<\/div>\r\n        ${T.keineProdukte}<br>\r\n        <small>${T.keineProdukteTipp}<\/small>\r\n      <\/div>`;\r\n    return;\r\n  }\r\n\r\n  list.innerHTML = '';\r\n  gefiltert.forEach((p, i) => {\r\n    const card = document.createElement('div');\r\n    card.className = 'pb-product-card' + (p.id === aktivesProduktId ? ' is-active' : '');\r\n    card.style.animationDelay = `${i * 40}ms`;\r\n    card.setAttribute('role', 'button');\r\n    card.setAttribute('tabindex', '0');\r\n    card.setAttribute('aria-pressed', p.id === aktivesProduktId ? 'true' : 'false');\r\n\r\n    const anw = (p[PB_CONFIG.anwendungenFeld] || []).slice(0, 3);\r\n\r\n    const tagsHtml = anw.map(a => `<span class=\"pb-tag\">${a}<\/span>`).join('');\r\n\r\n    card.innerHTML = `\r\n      <div class=\"pb-card-top\">\r\n        <span class=\"pb-card-name\">${p.title.rendered}<\/span>\r\n        <span class=\"pb-score-badge\">${p.score}%<\/span>\r\n      <\/div>\r\n      <p class=\"pb-card-desc\">${p.acf?.produktbeschreibung || ''}<\/p>\r\n      <div class=\"pb-card-tags\">${tagsHtml}<\/div>\r\n    `;\r\n\r\n    card.addEventListener('click', () => waehleProdukt(p));\r\n    card.addEventListener('keydown', e => { if (e.key === 'Enter' || e.key === ' ') waehleProdukt(p); });\r\n\r\n    list.appendChild(card);\r\n  });\r\n\r\n\/\/ Chart aktualisieren wenn aktives Produkt noch sichtbar\r\n  if (aktivesProduktId !== null) {\r\n    const nochVorhanden = gefiltert.find(p => p.id === aktivesProduktId);\r\n    if (nochVorhanden) {\r\n      \/\/ HIER GE\u00c4NDERT: Wir \u00fcbergeben den fest berechneten Score direkt\r\n      aktualisiereChart(nochVorhanden, nochVorhanden.score);\r\n    } else {\r\n      \/\/ aktives Produkt durch Filter entfernt \u2192 erstes anzeigen\r\n      if (gefiltert.length > 0) waehleProdukt(gefiltert[0]);\r\n    }\r\n  } else if (gefiltert.length > 0) {\r\n    \/\/ Automatisch erstes Produkt vorausw\u00e4hlen\r\n    waehleProdukt(gefiltert[0]);\r\n  }\r\n}\r\n\r\n\/* ============================================================\r\n   PRODUKT AUSW\u00c4HLEN \u2192 Chart updaten\r\n   ============================================================ *\/\r\nfunction waehleProdukt(produkt) {\r\n  \/\/ HIER GE\u00c4NDERT: Wir greifen einfach auf den bereits berechneten Wert zu!\r\n  const score = produkt.score;\r\n  aktivesProduktId = produkt.id;\r\n\r\n  \/\/ Alle Karten: active-Klasse aktualisieren\r\n  document.querySelectorAll('.pb-product-card').forEach(card => {\r\n    card.classList.remove('is-active');\r\n    card.setAttribute('aria-pressed', 'false');\r\n  });\r\n  const cards = document.querySelectorAll('.pb-product-card');\r\n  const scoreGefiltert = alleProdukte\r\n    .filter(matchAnwendung)\r\n    .map(p => ({ ...p, score: berechneScore(p) }))\r\n    .sort((a, b) => b.score - a.score);\r\n  const idx = scoreGefiltert.findIndex(p => p.id === produkt.id);\r\n  if (idx !== -1 && cards[idx]) {\r\n    cards[idx].classList.add('is-active');\r\n    cards[idx].setAttribute('aria-pressed', 'true');\r\n  }\r\n\r\n  aktualisiereChart(produkt, score);\r\n}\r\n\r\n\/* ============================================================\r\n   RADAR-CHART RENDERN \/ UPDATEN\r\n   ============================================================ *\/\r\nfunction aktualisiereChart(produkt, score) {\r\n  \/\/ score wird von waehleProdukt \u00fcbergeben \u2013 wenn nicht vorhanden (z.B. bei\r\n  \/\/ direktem Aufruf nach Slider-\u00c4nderung), einmalig neu berechnen\r\n  if (score === undefined) score = berechneScore(produkt);\r\n  const labels  = PB_CONFIG.eigenschaften.map(e => e.label);\r\n  const werte   = PB_CONFIG.eigenschaften.map(e => produkt.acf?.[e.key] ?? 0);\r\n  const wichtig = PB_CONFIG.eigenschaften.map(e => wichtigkeit[e.key]);\r\n\r\n  \/\/ Placeholder ausblenden\r\n  document.getElementById('chart-placeholder').style.display  = 'none';\r\n  document.getElementById('chart-product-name').style.display = 'block';\r\n  document.getElementById('chart-product-name').textContent   = produkt.title.rendered;\r\n  document.getElementById('chart-product-hint').style.display = 'none';\r\n  document.getElementById('radarChart').style.display         = 'block';\r\n\r\n  const ctx = document.getElementById('radarChart').getContext('2d');\r\n\r\n  const amber   = 'rgba(21,145,201,';\r\n  const blueGrey = 'rgba(0,219,181,';\r\n\r\n  if (radarChart) {\r\n    \/\/ Chart existiert \u2192 nur Daten updaten (fl\u00fcssige Animation)\r\n    radarChart.data.labels = labels;\r\n    radarChart.data.datasets[0].data = werte;\r\n    radarChart.data.datasets[1].data = wichtig;\r\n    radarChart.update();\r\n  } else {\r\n    radarChart = new Chart(ctx, {\r\n      type: 'radar',\r\n      data: {\r\n        labels,\r\n        datasets: [\r\n          {\r\n            label: T.chartLegende.produktwert,\r\n            data: werte,\r\n            backgroundColor: amber + '0.15)',\r\n            borderColor:     amber + '1)',\r\n            pointBackgroundColor: amber + '1)',\r\n            pointBorderColor: '#fff',\r\n            pointHoverBackgroundColor: '#fff',\r\n            pointHoverBorderColor: amber + '1)',\r\n            borderWidth: 2,\r\n            pointRadius: 4,\r\n          },\r\n          {\r\n            label: T.chartLegende.wichtigkeit,\r\n            data: wichtig,\r\n            backgroundColor: blueGrey + '0.08)',\r\n            borderColor:     blueGrey + '0.6)',\r\n            pointBackgroundColor: blueGrey + '0.8)',\r\n            pointBorderColor: '#fff',\r\n            borderWidth: 1.5,\r\n            pointRadius: 3,\r\n            borderDash: [4, 3],\r\n          }\r\n        ]\r\n      },\r\n      options: {\r\n        responsive: true,\r\n        animation: { duration: 300 },\r\n        scales: {\r\n          r: {\r\n            min: 0,\r\n            max: 8,\r\n            ticks: {\r\n              stepSize: 2,\r\n              display: false,\r\n            },\r\n            grid: {\r\n              color: 'rgba(0,0,0,.07)',\r\n            },\r\n            angleLines: {\r\n              color: 'rgba(0,0,0,.07)',\r\n            },\r\n            pointLabels: {\r\n              font: { size: 10, family: 'system-ui, sans-serif' },\r\n              color: '#5a5a5a',\r\n            }\r\n          }\r\n        },\r\n        plugins: {\r\n          legend: {\r\n            position: 'bottom',\r\n            labels: {\r\n              font: { size: 10 },\r\n              color: '#5a5a5a',\r\n              boxWidth: 12,\r\n              padding: 12,\r\n            }\r\n          },\r\n          tooltip: {\r\n            callbacks: {\r\n              label: ctx => ` ${ctx.dataset.label}: ${ctx.raw}\/8`\r\n            }\r\n          }\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Legende mit Einzelwerten aktualisieren\r\n  aktualisiereLegendTabelle(produkt);\r\n\r\n  \/\/ Anfrage-Akkordeon einblenden und mit aktuellen Daten bef\u00fcllen\r\n  document.getElementById('pb-accordion').style.display = 'block';\r\n  befuelleAnfrageFelder(produkt, score);\r\n}\r\n\r\n\/* ============================================================\r\n   WERTE-TABELLE UNTER CHART\r\n   ============================================================ *\/\r\nfunction aktualisiereLegendTabelle(produkt) {\r\n  const legend = document.getElementById('pb-legend');\r\n  legend.style.display = 'grid';\r\n  legend.innerHTML = PB_CONFIG.eigenschaften.map(({ key, label }) => `\r\n    <div class=\"pb-legend-item\">\r\n      <span>${label.length > 20 ? label.substring(0,18) + '\u2026' : label}<\/span>\r\n      <span class=\"pb-legend-val\">${produkt.acf?.[key] ?? '\u2014'}<\/span>\r\n    <\/div>\r\n  `).join('');\r\n}\r\n\r\n\/* ============================================================\r\n   ANFRAGE-AKKORDEON: AUFKLAPPEN, BEF\u00dcLLEN, SENDEN\r\n   ============================================================ *\/\r\n\r\ndocument.getElementById('pb-accordion-trigger').addEventListener('click', toggleAkkordeon);\r\n\r\nfunction toggleAkkordeon() {\r\n  document.getElementById('pb-accordion').classList.toggle('is-open');\r\n}\r\n\r\nfunction formatiereEigenschaftenProfil() {\r\n  \/\/ Lesbarer Text f\u00fcrs Mail-Template: \"\u2605 W\u00e4rmeleitf\u00e4higkeit: 6 (90 W\/m\u00b7K), Reinheit: 4 (95%), \u2026\"\r\n  \/\/ Sortiert nach Wichtigkeit absteigend, damit das Vertriebsteam sofort die\r\n  \/\/ Top-Priorit\u00e4ten des Kunden sieht. Als Top-3 markierte Eigenschaften\r\n  \/\/ bekommen zus\u00e4tzlich einen Stern voran gestellt.\r\n  return PB_CONFIG.eigenschaften\r\n    .map(e => ({\r\n      label: e.label,\r\n      wert: wichtigkeit[e.key],\r\n      anzeige: formatiereAnzeigeWert(e, wichtigkeit[e.key]),\r\n      istTop3: top3Auswahl.has(e.key),\r\n    }))\r\n    .sort((a, b) => b.wert - a.wert)\r\n    .map(e => `${e.istTop3 ? '\u2605 ' : ''}${e.label}: ${e.wert}\/8 (${e.anzeige})`)\r\n    .join('\\n');\r\n}\r\n\r\nfunction formatiereTop3Liste() {\r\n  \/\/ Eigene, \u00fcbersichtliche Liste nur der 3 Top-Priorit\u00e4ten f\u00fcrs Mail-Template \u2013\r\n  \/\/ damit das Vertriebsteam diese nicht erst aus dem Gesamtprofil heraussuchen muss.\r\n  if (top3Auswahl.size === 0) return T.keineTop3;\r\n\r\n  return PB_CONFIG.eigenschaften\r\n    .filter(e => top3Auswahl.has(e.key))\r\n    .map(e => e.label)\r\n    .join(', ');\r\n}\r\n\r\n\/* Wird bei jeder Produktauswahl \/ Slider-\u00c4nderung neu aufgerufen,\r\n   damit die Hidden Fields immer den aktuellen Stand tragen \u2013\r\n   auch wenn der Kunde das Akkordeon noch gar nicht ge\u00f6ffnet hat. *\/\r\nfunction befuelleAnfrageFelder(produkt, score) {\r\n  \/\/ score wird direkt \u00fcbergeben \u2013 kein erneutes berechneScore() hier,\r\n  \/\/ damit Karten-Badge und Zusammenfassung garantiert denselben Wert zeigen\r\n  const eigenschaftenProfil = formatiereEigenschaftenProfil();\r\n  const top3Text = formatiereTop3Liste();\r\n  const anwendungText = aktiverFilter || T.keineAnwendung;\r\n\r\n  \/\/ \u2500\u2500 Sichtbare Zusammenfassung im Akkordeon f\u00fcr den Kunden \u2500\u2500\r\n  document.getElementById('pb-accordion-summary').innerHTML = `\r\n    <div class=\"pb-accordion-summary-row\">\r\n      <span class=\"pb-accordion-summary-label\">${T.summaryProdukt}<\/span>\r\n      <span class=\"pb-accordion-summary-val\">${produkt.title.rendered}<\/span>\r\n    <\/div>\r\n    <div class=\"pb-accordion-summary-row\">\r\n      <span class=\"pb-accordion-summary-label\">${T.summaryAnwendung}<\/span>\r\n      <span class=\"pb-accordion-summary-val\">${anwendungText}<\/span>\r\n    <\/div>\r\n    <div class=\"pb-accordion-summary-row\">\r\n      <span class=\"pb-accordion-summary-label\">${T.summaryScore}<\/span>\r\n      <span class=\"pb-accordion-summary-val\">${score}%<\/span>\r\n    <\/div>\r\n    <div class=\"pb-accordion-summary-row\">\r\n      <span class=\"pb-accordion-summary-label\">${T.summaryTop3}<\/span>\r\n      <span class=\"pb-accordion-summary-val\">${top3Text}<\/span>\r\n    <\/div>\r\n  `;\r\n\r\n  \/\/ \u2500\u2500 Hidden Fields f\u00fcrs Formular bef\u00fcllen \u2500\u2500\r\n  \/\/ WICHTIG: CF7 rendert [hidden produkt_name] als <input type=\"hidden\" name=\"produkt_name\">\r\n  \/\/ OHNE eigene id \u2013 deshalb hier per name-Attribut zugreifen, nicht per ID.\r\n  \/\/ Die querySelector-Aufrufe finden NICHTS, solange das CF7-Formular noch nicht\r\n  \/\/ eingebunden ist (z. B. w\u00e4hrend der reinen HTML-Vorschau) \u2013 das ist unkritisch,\r\n  \/\/ die optionalen Verkettungen (?.) fangen das einfach ab.\r\n  const elProdukt       = document.querySelector('input[name=\"produkt_name\"]');\r\n  const elScore         = document.querySelector('input[name=\"produkt_score\"]');\r\n  const elAnwendung     = document.querySelector('input[name=\"anwendung\"]');\r\n  const elEigenschaften = document.querySelector('input[name=\"eigenschaften_profil\"]');\r\n  const elTop3          = document.querySelector('input[name=\"top3_eigenschaften\"]');\r\n\r\n  if (elProdukt)       elProdukt.value = produkt.title.rendered;\r\n  if (elScore)         elScore.value = score + '%';\r\n  if (elAnwendung)     elAnwendung.value = anwendungText;\r\n  if (elEigenschaften) elEigenschaften.value = eigenschaftenProfil;\r\n  if (elTop3)          elTop3.value = top3Text;\r\n}\r\n\r\n\/* \u2500\u2500 DEMO: Formular-Submit simulieren \u2500\u2500\r\n   In WordPress \u00fcbernimmt CF7 selbst das Absenden (AJAX, eigene Hooks).\r\n   Dieser Handler ist NUR f\u00fcr die Demo-Vorschau hier. *\/\r\ndocument.getElementById('demo-cf7-form').addEventListener('submit', function (e) {\r\n  e.preventDefault();\r\n  const responseBox = document.getElementById('demo-response');\r\n  responseBox.style.display = 'block';\r\n  responseBox.style.background = '#e8f5ee';\r\n  responseBox.style.color = '#2e7d52';\r\n  responseBox.textContent = 'Vielen Dank! Ihre Anfrage wurde \u00fcbermittelt (Demo \u2013 kein echter Versand).';\r\n\r\n  console.log('\u2500\u2500 W\u00fcrde an CF7 \/ Vertrieb gesendet werden: \u2500\u2500');\r\n  console.log('Produkt:', document.querySelector('input[name=\"produkt_name\"]').value);\r\n  console.log('Score:', document.querySelector('input[name=\"produkt_score\"]').value);\r\n  console.log('Anwendung:', document.querySelector('input[name=\"anwendung\"]').value);\r\n  console.log('Top-3-Priorit\u00e4ten:', document.querySelector('input[name=\"top3_eigenschaften\"]').value);\r\n  console.log('Eigenschaften-Profil:\\n' + document.querySelector('input[name=\"eigenschaften_profil\"]').value);\r\n});\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6dab442 e-flex e-con-boxed e-con e-parent\" data-id=\"6dab442\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-5165a08 e-con-full e-flex e-con e-child\" data-id=\"5165a08\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;}\">\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9350c87 e-flex e-con-boxed e-con e-parent\" data-id=\"9350c87\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-a09de2b e-con-full e-flex e-con e-child\" data-id=\"a09de2b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4cc847e elementor-widget elementor-widget-heading\" data-id=\"4cc847e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Do you have any questions about our products?\n <br>Our team is here to help. <\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c94656e e-con-full e-flex e-con e-child\" data-id=\"c94656e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-f1f6b49 e-flex e-con-boxed e-con e-parent\" data-id=\"f1f6b49\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-6f9e31a e-con-full e-flex e-con e-child\" data-id=\"6f9e31a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-cd90aaa elementor-widget elementor-widget-shortcode\" data-id=\"cd90aaa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\t\t<div data-elementor-type=\"container\" data-elementor-id=\"2859\" class=\"elementor elementor-2859 elementor-953 elementor-953\" data-elementor-post-type=\"elementor_library\">\n\t\t\t\t<div class=\"elementor-element elementor-element-236a29aa e-flex e-con-boxed e-con e-parent\" data-id=\"236a29aa\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-6139fa0c e-con-full e-flex e-con e-child\" data-id=\"6139fa0c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6a9c4e66 elementor-widget elementor-widget-shortcode\" data-id=\"6a9c4e66\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\n<div class=\"wpcf7 no-js\" id=\"wpcf7-f2907-o2\" lang=\"en-US\" dir=\"ltr\" data-wpcf7-id=\"2907\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/en\/wp-json\/wp\/v2\/pages\/6576#wpcf7-f2907-o2\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Contact form\" novalidate=\"novalidate\" data-status=\"init\">\n<fieldset class=\"hidden-fields-container\"><input type=\"hidden\" name=\"_wpcf7\" value=\"2907\" \/><input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.1.6\" \/><input type=\"hidden\" name=\"_wpcf7_locale\" value=\"en_US\" \/><input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f2907-o2\" \/><input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/><input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/>\n<\/fieldset>\n<div class=\"wps-form\">\n\t<div class=\"wps-form-row\">\n\t\t<div class=\"wps-form-column\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"your-name\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" autocomplete=\"name\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Last name, First name*\" value=\"\" type=\"text\" name=\"your-name\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t\t<div class=\"wps-form-column\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"your-company\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" autocomplete=\"company\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Company*\" value=\"\" type=\"text\" name=\"your-company\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"wps-form-row\">\n\t\t<div class=\"wps-form-column\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"your-tel\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-tel wpcf7-text wpcf7-validates-as-tel\" autocomplete=\"phone\" aria-invalid=\"false\" placeholder=\"Phone\" value=\"\" type=\"tel\" name=\"your-tel\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t\t<div class=\"wps-form-column\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"your-email\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email\" autocomplete=\"email\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"EMail *\" value=\"\" type=\"email\" name=\"your-email\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"wps-form-row\">\n\t\t<div class=\"wps-form-column\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"your-city\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" autocomplete=\"city\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"PLZ Ort *\" value=\"\" type=\"text\" name=\"your-city\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t\t<div class=\"wps-form-column\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"your-country\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" autocomplete=\"email\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Country *\" value=\"\" type=\"text\" name=\"your-country\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"wps-form-row\">\n\t\t<div class=\"wps-form-column100\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"your-message\"><textarea cols=\"40\" rows=\"10\" maxlength=\"2000\" class=\"wpcf7-form-control wpcf7-textarea\" aria-invalid=\"false\" placeholder=\"Message\" name=\"your-message\"><\/textarea><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"wps-form-row\">\n\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"acceptance-256\"><span class=\"wpcf7-form-control wpcf7-acceptance optional\"><span class=\"wpcf7-list-item\"><label><input type=\"checkbox\" name=\"acceptance-256\" value=\"1\" aria-invalid=\"false\" \/><span class=\"wpcf7-list-item-label\">I have read the privacy policy and consent to the processing of my personal data*<\/span><\/label><\/span><\/span><\/span>\n\t\t<\/p>\n\t<\/div>\n\t<div class=\"wps-form-row\">\n\t\t<p><input class=\"wpcf7-form-control wpcf7-submit has-spinner\" type=\"submit\" value=\"Send\" \/>\n\t\t<\/p>\n\t<\/div>\n<\/div><input type=\"hidden\" id=\"ct_checkjs_cf7_a8e864d04c95572d1aece099af852d0a\" name=\"ct_checkjs_cf7\" value=\"0\" \/><script data-cookieconsent=\"ignore\">setTimeout(function(){var ct_input_name = \"ct_checkjs_cf7_a8e864d04c95572d1aece099af852d0a\";if (document.getElementById(ct_input_name) !== null) {var ct_input_value = document.getElementById(ct_input_name).value;document.getElementById(ct_input_name).value = document.getElementById(ct_input_name).value.replace(ct_input_value, '753aa04bbb785288dc186e627a2c7c8fad96cd0f8242b4899130fe4561718431');}}, 1000);<\/script><input\n                    class=\"apbct_special_field apbct_email_id__wp_contact_form_7\"\n                    name=\"apbct__email_id__wp_contact_form_7\"\n                    aria-label=\"apbct__label_id__wp_contact_form_7\"\n                    type=\"text\" size=\"30\" maxlength=\"200\" autocomplete=\"off\"\n                    value=\"\"\n                \/><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<input\n                    class=\"apbct_special_field apbct_email_id__elementor_form\"\n                    name=\"apbct__email_id__elementor_form\"\n                    aria-label=\"apbct__label_id__elementor_form\"\n                    type=\"text\" size=\"30\" maxlength=\"200\" autocomplete=\"off\"\n                    value=\"\"\n                \/><input\n                    class=\"apbct_special_field apbct_email_id__elementor_form\"\n                    name=\"apbct__email_id__elementor_form\"\n                    aria-label=\"apbct__label_id__elementor_form\"\n                    type=\"text\" size=\"30\" maxlength=\"200\" autocomplete=\"off\"\n                    value=\"\"\n                \/><\/form>\n<\/div>\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4bd4f4d e-con-full person e-grid e-con e-child\" data-id=\"4bd4f4d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-42f925da e-con-full e-flex e-con e-child\" data-id=\"42f925da\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6c39251c elementor-widget__width-auto elementor-widget elementor-widget-image\" data-id=\"6c39251c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"225\" height=\"300\" src=\"https:\/\/www.henze-bnp.de\/wp-content\/uploads\/2026\/02\/andreas-225x300.jpg\" class=\"attachment-medium size-medium wp-image-2856\" alt=\"\" srcset=\"https:\/\/www.henze-bnp.de\/wp-content\/uploads\/2026\/02\/andreas-225x300.jpg 225w, https:\/\/www.henze-bnp.de\/wp-content\/uploads\/2026\/02\/andreas.avif 480w\" sizes=\"(max-width: 225px) 100vw, 225px\" title=\"\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5537793f elementor-widget__width-auto elementor-widget elementor-widget-text-editor\" data-id=\"5537793f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<pre><strong>Andreas Rettinger<\/strong><\/pre><p><strong>Technical Sales<\/strong><\/p><p>Phone <a href=\"tel:%20498374589970\">+49 8374 58997-0<\/a><br>Email <a href=\"mailto:in**@*******np.de\" data-original-string=\"4c4QzH7\/nu4zY9Um0cx1RQ==9fdgfbmU3LezmHFy7DsZ6EMUkx\/8a+JgZ1xkf98IZ3i3K4=\" title=\"This contact has been encoded by Anti-Spam by CleanTalk. Click to decode. To finish the decoding make sure that JavaScript is enabled in your browser.\"><span \n                data-original-string='eSVDVzkpQ6E\/4kw9Iz\/9Dg==9fdiQACoSrWsuN1iE\/+v2vYC2jqM4VzzZa6j2g8dale\/AI='\n                class='apbct-email-encoder'\n                title='This contact has been encoded by Anti-Spam by CleanTalk. Click to decode. To finish the decoding make sure that JavaScript is enabled in your browser.'>in**@*******np.de<\/span><\/a><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-43eecba e-con-full e-flex e-con e-child\" data-id=\"43eecba\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-25e410ea elementor-widget__width-auto elementor-widget elementor-widget-image\" data-id=\"25e410ea\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"225\" height=\"300\" src=\"https:\/\/www.henze-bnp.de\/wp-content\/uploads\/2026\/02\/fabio-225x300.jpg\" class=\"attachment-medium size-medium wp-image-2857\" alt=\"\" srcset=\"https:\/\/www.henze-bnp.de\/wp-content\/uploads\/2026\/02\/fabio-225x300.jpg 225w, https:\/\/www.henze-bnp.de\/wp-content\/uploads\/2026\/02\/fabio.avif 480w\" sizes=\"(max-width: 225px) 100vw, 225px\" title=\"\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b286635 elementor-widget__width-auto elementor-widget elementor-widget-text-editor\" data-id=\"b286635\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<pre><strong>Fabio Daidone<\/strong><\/pre><p><strong>Technical Sales<\/strong><\/p><p>Phone <a href=\"tel:%20498374589970\">+49 8374 58997-0<\/a><br>Email <a href=\"mailto:in**@*******np.de\" data-original-string=\"t9yLYsYRp6kDwiT1lcDdYA==9fdN\/mi7JdH7tB1wijxwceBY6M5X7XLJNrAqQNXz\/qPyyU=\" title=\"This contact has been encoded by Anti-Spam by CleanTalk. Click to decode. To finish the decoding make sure that JavaScript is enabled in your browser.\"><span \n                data-original-string='8T3fSgceoSMraJH4oGuMmg==9fdqP8Q5QRp+0Hep\/nE02VA1TYMxaEISRIaxLQTuu3Y5Ss='\n                class='apbct-email-encoder'\n                title='This contact has been encoded by Anti-Spam by CleanTalk. Click to decode. To finish the decoding make sure that JavaScript is enabled in your browser.'>in**@*******np.de<\/span><\/a><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4b8489eb e-con-full e-flex e-con e-child\" data-id=\"4b8489eb\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2f1de0d7 elementor-widget__width-auto elementor-widget elementor-widget-image\" data-id=\"2f1de0d7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"225\" height=\"300\" src=\"https:\/\/www.henze-bnp.de\/wp-content\/uploads\/2026\/02\/erwin-225x300.jpg\" class=\"attachment-medium size-medium wp-image-2858\" alt=\"\" srcset=\"https:\/\/www.henze-bnp.de\/wp-content\/uploads\/2026\/02\/erwin-225x300.jpg 225w, https:\/\/www.henze-bnp.de\/wp-content\/uploads\/2026\/02\/erwin.avif 480w\" sizes=\"(max-width: 225px) 100vw, 225px\" title=\"\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-37194e1c elementor-widget__width-auto elementor-widget elementor-widget-text-editor\" data-id=\"37194e1c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<pre><strong>Erwin Eurich<\/strong><\/pre><p><strong>Technical Sales<\/strong><\/p><p>Phone <a href=\"tel:%20498374589970\">+49 8374 58997-0<\/a><br>Email <a href=\"mailto:in**@*******np.de\" data-original-string=\"M0HL8HfJc98Le0pM1KPiXg==9fdQXkJPnPw+wvJsDRLyWHw9Md6EICK4rrDjJ66FwzBgJI=\" title=\"This contact has been encoded by Anti-Spam by CleanTalk. Click to decode. To finish the decoding make sure that JavaScript is enabled in your browser.\"><span \n                data-original-string='afSrG7AnS+7H0FdrNgrOiw==9fdhOSnP\/3PXtwXv7kPflIR\/1qlY\/jRB4YFveUantXO83M='\n                class='apbct-email-encoder'\n                title='This contact has been encoded by Anti-Spam by CleanTalk. Click to decode. To finish the decoding make sure that JavaScript is enabled in your browser.'>in**@*******np.de<\/span><\/a><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Product Finder Find the ideal material for your application Use the sliders to select the properties that are critical for your application, from wear resistance to flexural strength.The product advisor automatically calculates which of our boron nitride ceramic materials best match your requirements and clearly displays the property profile in a diagram. Have you found [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2803,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-6576","page","type-page","status-publish","has-post-thumbnail","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.henze-bnp.de\/en\/wp-json\/wp\/v2\/pages\/6576","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.henze-bnp.de\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.henze-bnp.de\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.henze-bnp.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.henze-bnp.de\/en\/wp-json\/wp\/v2\/comments?post=6576"}],"version-history":[{"count":0,"href":"https:\/\/www.henze-bnp.de\/en\/wp-json\/wp\/v2\/pages\/6576\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.henze-bnp.de\/en\/wp-json\/wp\/v2\/media\/2803"}],"wp:attachment":[{"href":"https:\/\/www.henze-bnp.de\/en\/wp-json\/wp\/v2\/media?parent=6576"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}