{"id":6736,"date":"2025-11-04T10:50:51","date_gmt":"2025-11-04T09:50:51","guid":{"rendered":"https:\/\/mero.de\/?page_id=6736"},"modified":"2026-08-17T12:30:26","modified_gmt":"2026-08-17T10:30:26","slug":"contacts","status":"publish","type":"page","link":"https:\/\/mero.de\/en\/floor-systems\/contacts\/","title":{"rendered":"Contacts"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"6736\" class=\"elementor elementor-6736 elementor-6371\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f7a0cf6 e-flex e-con-boxed e-con e-child\" data-id=\"f7a0cf6\" 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\t\t<div class=\"elementor-element elementor-element-aafe8e6 elementor-widget elementor-widget-heading\" data-id=\"aafe8e6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Floor systems<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-28381bd elementor-fixed e-transform elementor-hidden-tablet elementor-hidden-mobile elementor-widget elementor-widget-jet-button\" data-id=\"28381bd\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_position&quot;:&quot;fixed&quot;,&quot;_transform_rotateZ_effect&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:-90,&quot;sizes&quot;:[]},&quot;_transform_rotateZ_effect_tablet&quot;:{&quot;unit&quot;:&quot;deg&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_rotateZ_effect_mobile&quot;:{&quot;unit&quot;:&quot;deg&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"jet-button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-jet-button jet-elements\"><div class=\"jet-button__container\">\n\t<a class=\"jet-button__instance jet-button__instance--icon-right hover-effect-0\" href=\"#kontakt\">\n\t\t<div class=\"jet-button__plane jet-button__plane-normal\"><\/div>\n\t\t<div class=\"jet-button__plane jet-button__plane-hover\"><\/div>\n\t\t<div class=\"jet-button__state jet-button__state-normal\">\n\t\t\t<span class=\"jet-button__icon jet-elements-icon\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"18.148\" height=\"9.774\" viewBox=\"0 0 18.148 9.774\"><path id=\"Path_1\" data-name=\"Path 1\" d=\"M-11.3,15.584H3.957L1.423,18.627a.7.7,0,1,0,1.075.893l3.49-4.188a.831.831,0,0,0,.063-.1c0-.035.035-.056.049-.091a.685.685,0,0,0,.049-.251h0a.685.685,0,0,0-.049-.251c0-.035-.035-.056-.049-.091a.831.831,0,0,0-.063-.1L2.5,10.251a.7.7,0,0,0-1.235.384.71.71,0,0,0,.161.51l2.534,3.043H-11.3s-.7.314-.7.7A.7.7,0,0,0-11.3,15.584Z\" transform=\"translate(12 -10)\" fill=\"#fff\"><\/path><\/svg><\/span><span class=\"jet-button__label\">Request now<\/span>\t\t<\/div>\n\t\t<div class=\"jet-button__state jet-button__state-hover\">\n\t\t\t<span class=\"jet-button__icon jet-elements-icon\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"18.148\" height=\"9.774\" viewBox=\"0 0 18.148 9.774\"><path id=\"Path_1\" data-name=\"Path 1\" d=\"M-11.3,15.584H3.957L1.423,18.627a.7.7,0,1,0,1.075.893l3.49-4.188a.831.831,0,0,0,.063-.1c0-.035.035-.056.049-.091a.685.685,0,0,0,.049-.251h0a.685.685,0,0,0-.049-.251c0-.035-.035-.056-.049-.091a.831.831,0,0,0-.063-.1L2.5,10.251a.7.7,0,0,0-1.235.384.71.71,0,0,0,.161.51l2.534,3.043H-11.3s-.7.314-.7.7A.7.7,0,0,0-11.3,15.584Z\" transform=\"translate(6.148 19.774) rotate(180)\" fill=\"#262626\"><\/path><\/svg><\/span><span class=\"jet-button__label\">Request now<\/span>\t\t<\/div>\n\t<\/a>\n<\/div>\n<\/div>\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<div class=\"elementor-element elementor-element-486c629 e-flex e-con-boxed e-con e-parent\" data-id=\"486c629\" 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-b03c87d elementor-widget elementor-widget-heading\" data-id=\"b03c87d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Contacts - Germany<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-479fcf4 elementor-widget elementor-widget-jet-listing-grid\" data-id=\"479fcf4\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"ansprechpartner-grid\" data-settings=\"{&quot;columns&quot;:&quot;4&quot;,&quot;columns_mobile&quot;:&quot;1&quot;}\" data-widget_type=\"jet-listing-grid.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"jet-listing-grid jet-listing-grid--lazy-load jet-listing jet-listing-grid-loading\" data-lazy-load=\"{&quot;offset&quot;:&quot;0px&quot;,&quot;post_id&quot;:6736,&quot;settings_signature&quot;:&quot;53ebbed2abac69e3d7606492f46a4fec1810330c1dce911d315ca776f7b5ad72&quot;,&quot;queried_id&quot;:&quot;6736|WP_Post&quot;}\"><div class=\"jet-listing-grid__loader\"><div class=\"jet-listing-grid__loader-spinner\"><\/div><\/div><\/div>\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<div class=\"elementor-element elementor-element-0118b0a e-flex e-con-boxed e-con e-parent\" data-id=\"0118b0a\" 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-6bdf0c6 elementor-widget elementor-widget-heading\" data-id=\"6bdf0c6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Premium partners - Germany<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dced2a4 elementor-widget elementor-widget-jet-listing-grid\" data-id=\"dced2a4\" data-element_type=\"widget\" data-e-type=\"widget\" id=\"deutschland-grid\" data-settings=\"{&quot;columns&quot;:&quot;3&quot;,&quot;columns_mobile&quot;:&quot;1&quot;}\" data-widget_type=\"jet-listing-grid.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"jet-listing-grid jet-listing-grid--lazy-load jet-listing jet-listing-grid-loading\" data-lazy-load=\"{&quot;offset&quot;:&quot;0px&quot;,&quot;post_id&quot;:6736,&quot;query&quot;:{&quot;query_id&quot;:16,&quot;custom_query_id&quot;:16,&quot;signature&quot;:&quot;58c511edc4ce1dec0591e96f82762dd89eafb3edb5c8d36aaeb58c6c9bea62ab&quot;},&quot;settings_signature&quot;:&quot;af37baa940e694f2482581109b247ac609efb43b1b73ad8900df7f08636b4cbf&quot;,&quot;queried_id&quot;:&quot;6736|WP_Post&quot;}\"><div class=\"jet-listing-grid__loader\"><div class=\"jet-listing-grid__loader-spinner\"><\/div><\/div><\/div>\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<div class=\"elementor-element elementor-element-db8ba72 e-flex e-con-boxed e-con e-parent\" data-id=\"db8ba72\" 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-c67bf37 elementor-widget elementor-widget-html\" data-id=\"c67bf37\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script>\r\n(function () {\r\n  \/\/ Only work inside the Premium partners grid\r\n  var grid = document.getElementById('deutschland-grid');\r\n  if (!grid) return;\r\n\r\n  \/\/ Remove the country H6 (\"Germany\"; fallback \"Deutschland\") without leaving a gap\r\n  function stripCountryHeading(root) {\r\n    if (!root || root.nodeType !== 1) return;\r\n\r\n    root.querySelectorAll('h6.elementor-heading-title.elementor-size-default').forEach(function (h) {\r\n      var text = (h.textContent || '').trim().toLowerCase();\r\n\r\n      if (text === 'germany' || text === 'deutschland') {\r\n        var widget = h.closest('.elementor-widget-heading') || h;\r\n        widget.remove();\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Initial DOM\r\n  stripCountryHeading(grid);\r\n\r\n  \/\/ JetEngine may lazy-load cards later\r\n  var mo = new MutationObserver(function (mutations) {\r\n    mutations.forEach(function (m) {\r\n      m.addedNodes.forEach(function (n) {\r\n        if (n.nodeType === 1) stripCountryHeading(n);\r\n      });\r\n    });\r\n  });\r\n\r\n  mo.observe(grid, { childList: true, subtree: true });\r\n})();\r\n<\/script>\r\n\r\n<style>\r\n\/* global (Theme\/Customizer oder WPCode) *\/\r\n.plz-source{display:none!important;}\r\n<\/style>\r\n\r\n<script>\r\n(function(){\r\n  function getLangLabel(){\r\n    const lang=(document.documentElement.getAttribute('lang')||'').toLowerCase();\r\n    \/\/ English page \u2192 \"Postal code areas\"; German fallback retained for safety\r\n    return lang.startsWith('de') ? 'Postleitzahlenbereiche' : 'Postal code areas';\r\n  }\r\n\r\n  function parsePlz(raw){\r\n    if(!raw)return[];\r\n    return raw.split(',')\r\n      .map(s=>s.trim().replace(\/x\/gi,''))   \/\/ entfernt alle XXX\r\n      .filter(Boolean)\r\n      .map(t=>{\r\n        const m=t.match(\/(\\d{2})\/);\r\n        return m?m[1]:null;\r\n      })\r\n      .filter(Boolean)\r\n      .filter((v,i,a)=>a.indexOf(v)===i)\r\n      .sort((a,b)=>parseInt(a)-parseInt(b));\r\n  }\r\n\r\n  function makeBlock(codes){\r\n    const wrap=document.createElement('div');\r\n    wrap.className='plz-badge';\r\n    const label=document.createElement('div');\r\n    label.className='plz-badge__label';\r\n    label.textContent=getLangLabel()+':';\r\n    const group=document.createElement('div');\r\n    group.className='plz-chip-group';\r\n    codes.forEach(c=>{\r\n      const chip=document.createElement('span');\r\n      chip.className='plz-chip';\r\n      chip.textContent=c;\r\n      group.appendChild(chip);\r\n    });\r\n    wrap.append(label,group);\r\n    return wrap;\r\n  }\r\n\r\n  \/\/ >>>>> ERSETZT: robustere Insert-Logik\r\n  function insert(card){\r\n    if(!card||card.dataset.plzDone==='1')return;\r\n    const src=card.querySelector('.plz-source');\r\n    if(!src)return;\r\n    const codes=parsePlz(src.textContent);\r\n    if(!codes.length)return;\r\n\r\n    \/\/ Einf\u00fcge-Ziel suchen: Tel, sonst Mail, sonst letztes Heading\/Widget, sonst Karte\r\n    function findAnchor(){\r\n      let a = card.querySelector('a[href^=\"tel:\"]');\r\n      if(a) return a.closest('.elementor-widget') || a.closest('.elementor-widget-container') || a;\r\n\r\n      a = card.querySelector('a[href^=\"mailto:\"]');\r\n      if(a) return a.closest('.elementor-widget') || a.closest('.elementor-widget-container') || a;\r\n\r\n      const heads = card.querySelectorAll('.elementor-widget-heading');\r\n      if(heads.length) return heads[heads.length-1];\r\n\r\n      const widgets = card.querySelectorAll('.elementor-widget');\r\n      if(widgets.length) return widgets[widgets.length-1];\r\n\r\n      return card;\r\n    }\r\n\r\n    const target = findAnchor();\r\n    const block=makeBlock(codes);\r\n\r\n    if(target && target.parentNode){\r\n      target.parentNode.appendChild(block);\r\n    }else{\r\n      card.appendChild(block);\r\n    }\r\n    card.dataset.plzDone='1';\r\n  }\r\n  \/\/ <<<<< ERSETZT\r\n\r\n  function run(scope){\r\n    (scope||document).querySelectorAll('.plz-source').forEach(src=>{\r\n      const card=src.closest('.jet-listing-grid__item, .elementor-column, .elementor-widget-container')||src.parentElement;\r\n      insert(card);\r\n    });\r\n  }\r\n\r\n  document.addEventListener('DOMContentLoaded',()=>{\r\n    run(document);\r\n    new MutationObserver(muts=>{\r\n      muts.forEach(m=>{\r\n        m.addedNodes.forEach(n=>{\r\n          if(n.nodeType===1)run(n);\r\n        });\r\n      });\r\n    }).observe(document.body,{childList:true,subtree:true});\r\n  });\r\n})();\r\n<\/script>\r\n\r\n<!-- Andreas H\u00f6rning above the Contacts grid (\"Hero\") -->\r\n<script>\r\n(function () {\r\n  var GRID_SELECTOR = '#ansprechpartner-grid';\r\n  var NEEDLE = \/andreas h\u00f6rning|andreas\\.hoerning@mero\\.de\/i; \/\/ eindeutige Erkennung\r\n  var HERO_ID = 'vertriebsleiter-lead';\r\n\r\n  function promoteLeader(grid){\r\n    if (!grid) return false;\r\n\r\n    var itemsWrap = grid.querySelector('.jet-listing-grid__items') || grid;\r\n    var cards = itemsWrap.querySelectorAll('.jet-listing-grid__item');\r\n    if (!cards.length) return false;\r\n\r\n    var leader = null;\r\n    cards.forEach(function(card){\r\n      if (!leader && NEEDLE.test(card.textContent || '')) leader = card;\r\n    });\r\n    if (!leader) return false;\r\n\r\n    var host = document.getElementById(HERO_ID);\r\n    if (!host) {\r\n      host = document.createElement('div');\r\n      host.id = HERO_ID;\r\n      grid.parentNode.insertBefore(host, grid); \/\/ vor das Grid setzen\r\n    }\r\n\r\n    host.appendChild(leader); \/\/ verschieben (kein Klon)\r\n    return true;\r\n  }\r\n\r\n  function init(){\r\n    var grid = document.querySelector(GRID_SELECTOR);\r\n    if (!grid) return;\r\n\r\n    if (promoteLeader(grid)) return;\r\n\r\n    var mo = new MutationObserver(function(){\r\n      if (promoteLeader(grid)) mo.disconnect();\r\n    });\r\n    mo.observe(grid, {childList:true,subtree:true});\r\n  }\r\n\r\n  document.addEventListener('DOMContentLoaded', init);\r\n})();\r\n<\/script>\r\n\r\n<style>\r\n\/* ===========================================\r\n   Einheitlich f\u00fcr Ansprechpartner + Premiumpartner\r\n   (IDs: #ansprechpartner-grid, #deutschland-grid)\r\n   =========================================== *\/\r\n\r\n\/* Alles in den Karten zentrieren *\/\r\n#ansprechpartner-grid .elementor-widget-heading,\r\n#ansprechpartner-grid .elementor-widget-text-editor,\r\n#deutschland-grid .elementor-widget-heading,\r\n#deutschland-grid .elementor-widget-text-editor {\r\n  text-align: center;\r\n}\r\n\r\n\/* Namen halbfett *\/\r\n#ansprechpartner-grid .elementor-heading-title,\r\n#deutschland-grid .elementor-heading-title {\r\n  font-weight: 600 !important;\r\n}\r\n\r\n\/* Unterzeilen (z. B. B\u00fcro \u2026) sauberer Abstand *\/\r\n#ansprechpartner-grid .elementor-widget-text-editor p,\r\n#deutschland-grid .elementor-widget-text-editor p {\r\n  margin: .25em 0;\r\n  white-space: normal;\r\n}\r\n\r\n\/* ===========================================\r\n   PLZ-Badge an h6 (Tel.\/E-Mail) angleichen\r\n   =========================================== *\/\r\n#ansprechpartner-grid .plz-badge,\r\n#deutschland-grid .plz-badge {\r\n  font-size: var(--e-global-typography-h6-font-size, 18px);\r\n  line-height: var(--e-global-typography-h6-line-height, 1.4);\r\n  color: inherit;\r\n  text-align: center;\r\n  margin: 10px 0 6px;\r\n}\r\n\r\n\/* Label \u201ePostleitzahlenbereiche:\u201c \u2192 fett & gleiche Gr\u00f6\u00dfe wie h6 *\/\r\n#ansprechpartner-grid .plz-badge__label,\r\n#deutschland-grid .plz-badge__label {\r\n  display: block;\r\n  margin-bottom: 6px;\r\n  font-weight: 600 !important;\r\n  font-size: inherit;\r\n  line-height: inherit;\r\n  letter-spacing: .02em;\r\n}\r\n\r\n\/* Chip-Gruppe: zentriert *\/\r\n#ansprechpartner-grid .plz-chip-group,\r\n#deutschland-grid .plz-chip-group {\r\n  display: flex;\r\n  flex-wrap: wrap;\r\n  justify-content: center;\r\n  gap: 8px 10px;\r\n}\r\n\r\n\/* Einzelne Chips: gleich gro\u00df, fett *\/\r\n#ansprechpartner-grid .plz-chip,\r\n#deutschland-grid .plz-chip {\r\n  font-size: .95em;\r\n  font-weight: 600 !important;\r\n  line-height: 1.2;\r\n  padding: 6px 10px;\r\n  border: 1px solid currentColor;\r\n  border-radius: 999px;\r\n}\r\n\r\n\/* Optional: wenn Links standardm\u00e4\u00dfig unterstrichen sind, in Tel.\/E-Mail entfernen *\/\r\n#ansprechpartner-grid a[href^=\"tel:\"],\r\n#ansprechpartner-grid a[href^=\"mailto:\"],\r\n#deutschland-grid a[href^=\"tel:\"],\r\n#deutschland-grid a[href^=\"mailto:\"] {\r\n  text-decoration: none;\r\n}\r\n\r\n\/* Premium partners: same chip spacing as Contacts *\/\r\n#deutschland-grid .plz-badge {\r\n  max-width: 440px;\r\n  margin-left: auto;\r\n  margin-right: auto;\r\n}\r\n#deutschland-grid .plz-chip-group {\r\n  display: flex;\r\n  flex-wrap: wrap;\r\n  justify-content: center;\r\n  gap: 6px;\r\n}\r\n\r\n\/* ===========================================\r\n   NEU: Tel \/ E-Mail \/ B\u00fcro-Zeilen semibold (600)\r\n   =========================================== *\/\r\n\r\n\/* Tel: & E-Mail (Headings) *\/\r\n#ansprechpartner-grid .elementor-widget-heading .elementor-heading-title,\r\n#ansprechpartner-grid .elementor-widget-heading a[href^=\"tel:\"],\r\n#ansprechpartner-grid .elementor-widget-heading a[href^=\"mailto:\"],\r\n#deutschland-grid .elementor-widget-heading .elementor-heading-title,\r\n#deutschland-grid .elementor-widget-heading a[href^=\"tel:\"],\r\n#deutschland-grid .elementor-widget-heading a[href^=\"mailto:\"] {\r\n  font-weight: 600 !important;\r\n}\r\n\r\n\/* B\u00fcro \/ Unterzeilen (Text-Editor-Widgets) *\/\r\n#ansprechpartner-grid .elementor-widget-text-editor p,\r\n#deutschland-grid .elementor-widget-text-editor p {\r\n  font-weight: 600 !important;\r\n}\r\n\r\n\/* PLZ-Chips bleiben normal *\/\r\n#ansprechpartner-grid .plz-chip,\r\n#deutschland-grid .plz-chip {\r\n  font-weight: 600 !important;\r\n}\r\n\r\n\/* Contacts & Premium partners \u2013 all h6 titles semibold *\/\r\n#ansprechpartner-grid h6.elementor-heading-title.elementor-size-default,\r\n#deutschland-grid h6.elementor-heading-title.elementor-size-default {\r\n  font-weight: 600 !important;\r\n}\r\n\r\n\/* ===========================================\r\n   HERO-Container f\u00fcr Vertriebsleiter (zentriert)\r\n   =========================================== *\/\r\n#vertriebsleiter-lead{\r\n  display:flex;\r\n  justify-content:center;\r\n  margin: 10px 0 24px;\r\n  text-align:center;\r\n}\r\n#vertriebsleiter-lead .jet-listing-grid__item{\r\n  display:block;\r\n  width:auto !important;\r\n  max-width: 420px;\r\n  margin: 0 auto;\r\n}\r\n<\/style>\r\n\r\n<script>\r\n(function () {\r\n  \/\/ --- Konfiguration pro Grid ---\r\n  var GRIDS = [\r\n    {\r\n      selector: '#ansprechpartner-grid',\r\n      pinNeedle: null \/\/ Andreas is shown above the grid \u2013 no pin needed inside the grid\r\n    },\r\n    {\r\n      selector: '#deutschland-grid',\r\n      pinNeedle: null\r\n    }\r\n  ];\r\n\r\n  \/\/ PLZ-Pr\u00e4fix aus Chips oder .plz-source extrahieren (zweistellig)\r\n  function getPlzPrefix(card) {\r\n    \/\/ 1) aus bereits gerenderten Chips nehmen\r\n    var chip = card.querySelector('.plz-chip');\r\n    if (chip) {\r\n      var t = (chip.textContent || '').trim().match(\/^(\\d{2})\/);\r\n      if (t) return parseInt(t[1], 10);\r\n    }\r\n    \/\/ 2) Fallback: aus .plz-source wie im bestehenden Badge-Script\r\n    var src = card.querySelector('.plz-source');\r\n    if (src) {\r\n      var raw = (src.textContent || '')\r\n        .split(',')\r\n        .map(function (s) { return s.trim().replace(\/x\/gi, ''); })\r\n        .filter(Boolean);\r\n      for (var i = 0; i < raw.length; i++) {\r\n        var m = raw[i].match(\/(\\d{2})\/);\r\n        if (m) return parseInt(m[1], 10);\r\n      }\r\n    }\r\n    return Number.POSITIVE_INFINITY; \/\/ Karten ohne PLZ ans Ende\r\n  }\r\n\r\n  \/\/ Namen f\u00fcr Tie-Breaker (alphabetisch) holen\r\n  function getName(card) {\r\n    var h = card.querySelector('.elementor-heading-title');\r\n    return (h && h.textContent ? h.textContent : '').trim().toLowerCase();\r\n  }\r\n\r\n  \/\/ Sortierung anwenden (fix: keine Iteration \u00fcber live NodeLists)\r\n  function sortGrid(gridEl, pinNeedle) {\r\n    if (!gridEl) return;\r\n\r\n    \/\/ JetEngine Wrapper finden\r\n    var itemsWrap = gridEl.querySelector('.jet-listing-grid__items') || gridEl;\r\n    var items = Array.prototype.slice.call(itemsWrap.querySelectorAll('.jet-listing-grid__item'));\r\n    if (!items.length) return;\r\n\r\n    \/\/ ggf. den zu pinnenden Ansprechpartner merken\r\n    var pinned = null;\r\n    if (pinNeedle) {\r\n      for (var i = 0; i < items.length; i++) {\r\n        if (pinNeedle.test(items[i].textContent || '')) {\r\n          pinned = items[i];\r\n          break;\r\n        }\r\n      }\r\n    }\r\n\r\n    \/\/ Sortierschl\u00fcssel vorbereiten\r\n    var keyed = items.map(function (el, idx) {\r\n      return {\r\n        el: el,\r\n        plz: getPlzPrefix(el),\r\n        name: getName(el),\r\n        idx: idx \/\/ Stabilit\u00e4t\r\n      };\r\n    });\r\n\r\n    \/\/ Sortieren: erst PLZ, dann Name, dann Originalindex\r\n    keyed.sort(function (a, b) {\r\n      if (a.plz !== b.plz) return a.plz - b.plz;\r\n      if (a.name !== b.name) return a.name < b.name ? -1 : 1;\r\n      return a.idx - b.idx;\r\n    });\r\n\r\n    \/\/ Geordnete statische Liste der Elemente\r\n    var ordered = keyed.map(function (k) { return k.el; });\r\n\r\n    \/\/ Falls pin definiert & vorhanden \u2192 ganz nach vorne setzen (ohne Duplikat)\r\n    if (pinned) {\r\n      ordered = ordered.filter(function (el) { return el !== pinned; });\r\n      ordered.unshift(pinned);\r\n    }\r\n\r\n    \/\/ Nur dann neu einh\u00e4ngen, wenn sich die Reihenfolge tats\u00e4chlich \u00e4ndert.\r\n    \/\/ Sonst erzeugt der MutationObserver eine Endlosschleife und verschiebt\r\n    \/\/ die Karten fortlaufend neu \u2013 dadurch k\u00f6nnen Klicks verloren gehen.\r\n    var orderChanged = ordered.length !== items.length;\r\n    if (!orderChanged) {\r\n      for (var j = 0; j < ordered.length; j++) {\r\n        if (ordered[j] !== items[j]) {\r\n          orderChanged = true;\r\n          break;\r\n        }\r\n      }\r\n    }\r\n\r\n    if (!orderChanged) return;\r\n\r\n    var frag = document.createDocumentFragment();\r\n    for (var k = 0; k < ordered.length; k++) {\r\n      frag.appendChild(ordered[k]);\r\n    }\r\n    itemsWrap.appendChild(frag);\r\n  }\r\n\r\n  \/\/ Initialisierung + Beobachtung (f\u00fcr Lazy\/Nachladen)\r\n  function initFor(selector, pinNeedle) {\r\n    var grid = document.querySelector(selector);\r\n    if (!grid) return;\r\n\r\n    var schedule = function () {\r\n      \/\/ warten bis die .plz-chip\/.plz-source vorhanden sind\r\n      sortGrid(grid, pinNeedle);\r\n    };\r\n\r\n    \/\/ initial nach DOM ready + kleiner Delay (Elementor\/JetEngine)\r\n    setTimeout(schedule, 0);\r\n    setTimeout(schedule, 200);\r\n\r\n    \/\/ bei sp\u00e4teren DOM-\u00c4nderungen erneut sortieren\r\n    var mo = new MutationObserver(function (muts) {\r\n      var relevant = muts.some(function (m) {\r\n        return Array.prototype.some.call(m.addedNodes, function (n) {\r\n          return n.nodeType === 1;\r\n        });\r\n      });\r\n      if (relevant) setTimeout(schedule, 50);\r\n    });\r\n    mo.observe(grid, { childList: true, subtree: true });\r\n  }\r\n\r\n  document.addEventListener('DOMContentLoaded', function () {\r\n    GRIDS.forEach(function (cfg) {\r\n      initFor(cfg.selector, cfg.pinNeedle);\r\n    });\r\n  });\r\n})();\r\n<\/script>\r\n\r\n<!-- Clickable contacts \u2013 email is decoded only on click -->\r\n<style>\r\n#ansprechpartner-grid a[href^=\"tel:\"],\r\n#deutschland-grid a[href^=\"tel:\"],\r\n#vertriebsleiter-lead a[href^=\"tel:\"],\r\n#ansprechpartner-grid a[data-enc-email],\r\n#deutschland-grid a[data-enc-email],\r\n#vertriebsleiter-lead a[data-enc-email],\r\n#ansprechpartner-grid .contact-clickable,\r\n#deutschland-grid .contact-clickable,\r\n#vertriebsleiter-lead .contact-clickable {\r\n  pointer-events: auto !important;\r\n  cursor: pointer !important;\r\n  position: relative;\r\n  z-index: 5;\r\n}\r\n<\/style>\r\n\r\n<script>\r\n(function () {\r\n  'use strict';\r\n\r\n  var ROOT_SELECTOR = '#ansprechpartner-grid, #deutschland-grid, #vertriebsleiter-lead';\r\n  var EMAIL_RE = \/[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}\/i;\r\n  var PHONE_RE = \/(?:\\+\\s*\\d{1,3}(?:\\s*\\(0\\))?|0)\\s*[\\d\\s().\\\/\\-]{5,}\\d\/;\r\n\r\n  function rot13(value) {\r\n    return String(value || '').replace(\/[a-zA-Z]\/g, function (char) {\r\n      var code = char.charCodeAt(0);\r\n      var base = code <= 90 ? 65 : 97;\r\n      return String.fromCharCode((code - base + 13) % 26 + base);\r\n    });\r\n  }\r\n\r\n  \/* Die Klartextadresse existiert nur kurzzeitig im Klick-Handler. *\/\r\n  function decodeEncodedEmail(link) {\r\n    var encoded = link && link.getAttribute('data-enc-email');\r\n    if (!encoded) return '';\r\n\r\n    var decoded = rot13(encoded)\r\n      .replace(\/\\s*\\[at\\]\\s*\/gi, '@')\r\n      .replace(\/\\s*\\[dot\\]\\s*\/gi, '.')\r\n      .replace(\/\\s*\\(at\\)\\s*\/gi, '@')\r\n      .replace(\/\\s*\\(dot\\)\\s*\/gi, '.');\r\n\r\n    var match = decoded.match(EMAIL_RE);\r\n    return match ? match[0] : '';\r\n  }\r\n\r\n  function telephoneHref(value) {\r\n    var clean = String(value || '').trim().replace(\/\\(0\\)\/g, '');\r\n    var international = \/^\\s*\\+\/.test(clean);\r\n    var digits = clean.replace(\/\\D\/g, '');\r\n    return digits.length >= 6 ? 'tel:' + (international ? '+' : '') + digits : '';\r\n  }\r\n\r\n  function findPhone(element) {\r\n    var text = (element && element.textContent || '').replace(\/\\s+\/g, ' ').trim();\r\n    var match = text.match(PHONE_RE);\r\n    return match ? telephoneHref(match[0]) : '';\r\n  }\r\n\r\n  function prepare(root) {\r\n    if (!root || root.nodeType !== 1) return;\r\n\r\n    \/* E-Mail: niemals entschl\u00fcsselt in href, data-* oder Text schreiben. *\/\r\n    root.querySelectorAll('a[data-enc-email]').forEach(function (link) {\r\n      link.setAttribute('href', 'javascript:;');\r\n      link.removeAttribute('data-contact-target');\r\n      link.classList.add('contact-clickable');\r\n    });\r\n\r\n    \/* Telefon darf als tel:-Link im DOM stehen. *\/\r\n    root.querySelectorAll('.elementor-widget-heading, .elementor-widget-text-editor').forEach(function (widget) {\r\n      if (widget.querySelector('a[data-enc-email]')) {\r\n        widget.classList.add('contact-clickable');\r\n        return;\r\n      }\r\n\r\n      var tel = findPhone(widget);\r\n      if (!tel) return;\r\n\r\n      widget.classList.add('contact-clickable');\r\n      widget.setAttribute('data-tel-target', tel);\r\n    });\r\n  }\r\n\r\n  function run() {\r\n    document.querySelectorAll(ROOT_SELECTOR).forEach(prepare);\r\n  }\r\n\r\n  \/* L\u00e4uft vor Elementor, JetEngine und dem Email Encoder. *\/\r\n  document.addEventListener('click', function (event) {\r\n    var root = event.target.closest && event.target.closest(ROOT_SELECTOR);\r\n    if (!root) return;\r\n\r\n    var encodedLink = event.target.closest('a[data-enc-email]');\r\n    if (!encodedLink) {\r\n      var emailWidget = event.target.closest('.elementor-widget-heading, .elementor-widget-text-editor');\r\n      if (emailWidget) encodedLink = emailWidget.querySelector('a[data-enc-email]');\r\n    }\r\n\r\n    if (encodedLink) {\r\n      var email = decodeEncodedEmail(encodedLink);\r\n      if (!email) return;\r\n\r\n      event.preventDefault();\r\n      event.stopImmediatePropagation();\r\n\r\n      \/* Erst jetzt entsteht mailto: \u2013 nur im JavaScript-Speicher, nicht im DOM. *\/\r\n      window.location.assign('mailto:' + email);\r\n      return;\r\n    }\r\n\r\n    \/* Falls das Encoder-Plugin den Link bereits selbst entschl\u00fcsselt hat,\r\n       den vorhandenen mailto:-Link zuverl\u00e4ssig ausl\u00f6sen. *\/\r\n    var mailLink = event.target.closest('a[href^=\"mailto:\"]');\r\n    if (mailLink) {\r\n      var mailHref = mailLink.getAttribute('href');\r\n      if (mailHref) {\r\n        event.preventDefault();\r\n        event.stopImmediatePropagation();\r\n        window.location.assign(mailHref);\r\n      }\r\n      return;\r\n    }\r\n\r\n    var clicked = event.target.closest('[data-tel-target], a[href^=\"tel:\"]');\r\n    if (!clicked) return;\r\n\r\n    var tel = clicked.getAttribute('data-tel-target') || clicked.getAttribute('href');\r\n    if (!tel || !\/^tel:\/i.test(tel)) return;\r\n\r\n    event.preventDefault();\r\n    event.stopImmediatePropagation();\r\n    window.location.assign(tel);\r\n  }, true);\r\n\r\n  function init() {\r\n    run();\r\n\r\n    var queued = false;\r\n    new MutationObserver(function () {\r\n      if (queued) return;\r\n      queued = true;\r\n      setTimeout(function () {\r\n        queued = false;\r\n        run();\r\n      }, 50);\r\n    }).observe(document.body, {\r\n      childList: true,\r\n      subtree: true,\r\n      attributes: true,\r\n      attributeFilter: ['href', 'data-enc-email']\r\n    });\r\n\r\n    setTimeout(run, 250);\r\n    setTimeout(run, 1000);\r\n    setTimeout(run, 2500);\r\n  }\r\n\r\n  if (document.readyState === 'loading') {\r\n    document.addEventListener('DOMContentLoaded', init);\r\n  } else {\r\n    init();\r\n  }\r\n})();\r\n<\/script>\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>Floor systems Request now Request now Contacts &#8211; Germany Premium partners &#8211; Germany<\/p>\n","protected":false},"author":20,"featured_media":0,"parent":3669,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-6736","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/mero.de\/en\/wp-json\/wp\/v2\/pages\/6736","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mero.de\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mero.de\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mero.de\/en\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/mero.de\/en\/wp-json\/wp\/v2\/comments?post=6736"}],"version-history":[{"count":0,"href":"https:\/\/mero.de\/en\/wp-json\/wp\/v2\/pages\/6736\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/mero.de\/en\/wp-json\/wp\/v2\/pages\/3669"}],"wp:attachment":[{"href":"https:\/\/mero.de\/en\/wp-json\/wp\/v2\/media?parent=6736"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}