{"id":1885,"date":"2025-02-06T09:36:31","date_gmt":"2025-02-06T09:36:31","guid":{"rendered":"https:\/\/gebe.net\/?page_id=1885"},"modified":"2026-09-29T19:18:35","modified_gmt":"2026-09-29T17:18:35","slug":"products","status":"publish","type":"page","link":"https:\/\/gebe.net\/en\/produkte\/","title":{"rendered":"Products"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1885\" class=\"elementor elementor-1885\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-gkf1885a e-con-full e-flex e-con e-parent\" data-id=\"gkf1885a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-gkf1885b elementor-widget elementor-widget-html\" data-id=\"gkf1885b\" 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<h1 class=\"elementor-screen-only\">Thermodrucker von GeBE \u2013 alle Drucksysteme im \u00dcberblick<\/h1><style>\n  .gkf, .gkf * { box-sizing: border-box; margin: 0; }\n  .gkf {\n    font-family: 'Roboto Condensed', sans-serif; font-weight: 300; color: #FFFFFF;\n    line-height: 1.5; max-width: 1280px; margin: 0 auto; padding: 24px 20px 40px;\n    background: transparent;\n  }\n  \/* Layout: Filter links, Drucker rechts *\/\n  .gkf .gkf-layout { display: grid; grid-template-columns: 262px minmax(0, 1fr); gap: 28px; align-items: start; }\n  .gkf .gkf-filter {\n    background: rgba(93,101,111,0.32); border: 1px solid rgba(186,186,186,0.24);\n    border-radius:var(--gebe-r-md); padding: 20px 18px 16px; backdrop-filter: blur(14px);\n    position: sticky; top: 16px; max-height: calc(100vh - 32px); overflow-y: auto;\n    scrollbar-width: thin; scrollbar-color: rgba(138,145,155,0.6) transparent; \/* Firefox *\/\n  }\n  \/* Graue, dezente Scrollleiste (Chrome\/Edge\/Safari) *\/\n  .gkf .gkf-filter::-webkit-scrollbar { width: 8px; }\n  .gkf .gkf-filter::-webkit-scrollbar-track { background: transparent; }\n  .gkf .gkf-filter::-webkit-scrollbar-thumb {\n    background: rgba(138,145,155,0.6); border-radius:var(--gebe-r-md);\n    border: 2px solid transparent; background-clip: padding-box;\n  }\n  .gkf .gkf-filter::-webkit-scrollbar-thumb:hover { background: rgba(170,176,184,0.8); background-clip: padding-box; }\n  .gkf .gkf-group { margin-bottom: 18px; }\n  .gkf .gkf-group:last-of-type { margin-bottom: 8px; }\n  .gkf .gkf-label {\n    font-size: 11px; text-transform: uppercase; letter-spacing: 2px;\n    color: #FFFFFF; margin-bottom: 9px;\n  }\n  .gkf .gkf-chips { display: flex; flex-wrap: wrap; gap: 7px; }\n  .gkf .gkf-chip {\n    display: inline-flex; align-items: center; gap: 6px; border: 1px solid rgba(186,186,186,0.24);\n    border-radius:var(--gebe-r-pill); background: rgba(93,101,111,0.32); color: #FFFFFF; padding: 6px 13px;\n    font-size: 12.5px; cursor: pointer; transition: border-color 0.2s, color 0.2s, background 0.2s;\n    font-family: inherit; font-weight: 300; text-align: left;\n  }\n  .gkf .gkf-chip:hover { border-color: rgba(255,255,255,0.7); color: #FFFFFF; }\n  .gkf .gkf-chip.sel { border-color: rgba(255,255,255,0.85); color: #fff; background: rgba(255,255,255,0.08); }\n  .gkf .gkf-chip.sel::before { content: \"\u2713\"; font-size: 10px; }\n  .gkf .gkf-bar {\n    border-top: 1px solid rgba(186,186,186,0.18); margin-top: 6px; padding-top: 12px;\n    display: flex; flex-direction: column; gap: 8px;\n  }\n  .gkf .gkf-count { font-size: 12.5px; color: #FFFFFF; letter-spacing: 0.4px; }\n  .gkf .gkf-reset {\n    background: none; border: none; color: #FFFFFF; font-family: inherit; font-size: 13px;\n    cursor: pointer; text-decoration: underline; text-underline-offset: 3px; transition: color 0.2s;\n    padding: 0; align-self: flex-start;\n  }\n  .gkf .gkf-reset:hover { color: #fff; }\n  .gkf .gkf-grid {\n    display: grid; grid-template-columns: repeat(auto-fill, minmax(205px, 1fr));\n    gap: 34px 18px; align-items: end;\n  }\n  \/* Freigestellte Drucker: kein Kasten, nur Bild + Text *\/\n  .gkf .gkf-item {\n    display: block; text-decoration: none; color: inherit; text-align: center; cursor: pointer;\n    transition: transform 0.25s ease; background: none; border: none; padding: 0; font-family: inherit;\n  }\n  .gkf .gkf-item:hover { transform: translateY(-5px); }\n  .gkf .gkf-img {\n    width: 100%; height: 165px; background-size: contain; background-position: center bottom;\n    background-repeat: no-repeat; \n    transition: filter 0.25s ease;\n  }\n  .gkf .gkf-item:hover .gkf-img {  }\n  .gkf .gkf-name { font-size: 16px; font-weight: 400; color: #FFFFFF; margin-top: 14px; letter-spacing: 0.2px; }\n  .gkf .gkf-code { font-size: 11.5px; color: #FFFFFF; letter-spacing: 0.4px; margin-top: 2px; }\n  .gkf .gkf-spec { font-size: 12.5px; color: #FFFFFF; margin-top: 5px; line-height: 1.4; }\n  .gkf .gkf-hint { font-size: 11.5px; color: #FFFFFF; margin-top: 5px; line-height: 1.4; }\n  .gkf .gkf-empty {\n    grid-column: 1 \/ -1; text-align: center; color: #FFFFFF; font-size: 14.5px; padding: 40px 20px;\n  }\n  .gkf .gkf-btn { display: inline-flex; align-items: center; gap: 8px; line-height: 1; }\/* Optik: Elementor Site Settings -> Buttons *\/\n  \n  .gkf .gkf-form {\n    display: grid; grid-template-columns: 1fr 1fr; gap: 11px; max-width: 560px; margin: 0 auto; text-align: left;\n  }\n  .gkf .gkf-form .gkf-full { grid-column: 1 \/ -1; }\n  .gkf .gkf-form input[type=text], .gkf .gkf-form input[type=email], .gkf .gkf-form textarea {\n    background: rgba(93,101,111,0.63); border: 1px solid rgba(186,186,186,0.24); border-radius:var(--gebe-r-md);\n    color: #FFFFFF; padding: 10px 14px; font-family: inherit; font-weight: 300; font-size: 14px;\n    width: 100%; transition: border-color 0.25s; resize: vertical;\n  }\n  .gkf .gkf-form input::placeholder, .gkf .gkf-form textarea::placeholder { color: rgba(223,223,223,0.5); }\n  .gkf .gkf-form input:focus, .gkf .gkf-form textarea:focus { outline: none; border-color: rgba(255,255,255,0.55); }\n  @media (max-width: 560px) { .gkf .gkf-form { grid-template-columns: 1fr; } }\n  .gkf .gkf-toast {\n    position: fixed; left: 50%; bottom: 26px; transform: translateX(-50%); z-index: 999;\n    background: rgba(40,45,52,0.92); border: 1px solid rgba(186,186,186,0.35); border-radius:var(--gebe-r-pill);\n    color: #FFFFFF; font-size: 13px; padding: 10px 22px; opacity: 0; pointer-events: none;\n    transition: opacity 0.3s; max-width: 90vw; text-align: center;\n  }\n  .gkf .gkf-toast.show { opacity: 1; }\n  @media (max-width: 860px) {\n    .gkf .gkf-layout { grid-template-columns: 1fr; }\n    .gkf .gkf-filter { position: static; max-height: none; }\n    .gkf .gkf-grid { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 26px 14px; }\n    .gkf .gkf-img { height: 130px; }\n  }\n  .gkf input::placeholder, .gkf textarea::placeholder { color: rgba(255,255,255,0.62) !important; }\n<\/style>\n\n<div class=\"gkf\" id=\"gkf-root\"><\/div>\n\n<script>\n(function () {\n\"use strict\";\n\n\/* ============================================================\n   PRODUKT-LINKS \u2014 HIER die Links zu den Produktseiten eintragen!\n   Einfach die Adresse zwischen die Anf\u00fchrungszeichen kopieren,\n   z. B. compact_plus: \"https:\/\/www.gebe.net\/...\".\n   Solange ein Link leer ist, zeigt der Klick einen Hinweis.\n   ============================================================ *\/\nvar LINKS = {\n  compact_plus:    \"\/?page_id=895\",\n  compact_plus_ll: \"\/?page_id=1943\",\n  vario_plus_ll:   \"\/?page_id=5527\",\n  vario_box_ll:    \"\/?page_id=722\",\n  mulde_medi_cut:  \"\/?page_id=1930\",\n  mulde_medi_box:  \"\/?page_id=5504\",\n  mulde_mini:      \"\/?page_id=1994\",\n  mulde_mini_60:   \"\/?page_id=2004\",\n  mulde_maxi:      \"\/?page_id=2014\",\n  kassette:        \"\/?page_id=2031\",\n  piano:           \"\/?page_id=1963\",\n  piano_box:       \"\/?page_id=5556\",\n  flash:           \"\/?page_id=5563\"\n};\n\n\/* ============================================================\n   KONTAKT \u2014 Empf\u00e4nger f\u00fcr Anfragen aus dem Formular, das erscheint,\n   wenn eine Filterkombination kein Standard-Modell trifft.\n   E-Mail-Adresse eintragen (z. B. \"vertrieb@gebe.net\"): Beim Absenden\n   \u00f6ffnet sich eine fertige E-Mail mit Auswahl + Formulardaten.\n   Solange leer, wird die Anfrage nur best\u00e4tigt (Demo-Modus) und ein\n   Hinweis gezeigt. Beim WordPress-Einbau kann das Formular alternativ\n   an ein Formular-Plugin angebunden werden \u2014 die Auswahl steckt im\n   Feld mit der ID \"gkf-f-auswahl\".\n   ============================================================ *\/\nvar KONTAKT_MAIL = \"\";\n\n\/* ---------- Daten (aus den Datenbl\u00e4ttern, Stand printers_data_v4) ----------\n   Eigenschaftswerte: true = ja \u00b7 false = nein \u00b7 \"Text\" = ja, mit Einschr\u00e4nkung\n   (der Text erscheint als Hinweis unter dem Drucker, sobald der Filter aktiv ist) *\/\nvar IMG = \"https:\/\/gebe.net\/wp-content\/uploads\/\";\nvar MODELS = [\n  { id:\"compact_plus\", name:\"COMPACT Plus\", codes:\"GPT-4672 | GPT-4673\",\n    form:\"einbau\", widths:[\"2\",\"3\"], if_std:[\"usb\",\"rs232\"], if_opt:[\"ethernet\"], if_note:{ ethernet:\"Ethernet per Adapter auf Anfrage\" },\n    os:[\"windows\",\"linux_cups\",\"android_sdk\",\"sdk\"],\n    p:{ speed200:true, dpi300:\"300 dpi als 3-Zoll-Variante\", thick:\"bis 190 \u00b5m (3-Zoll-Presenter bis 135 \u00b5m)\", blackmark:true,\n        lowv:false, kfz:true, netz230:false,\n        linerless:false, cutter:true, presenter:\"Presenter-Varianten (-P)\", aufwickler:false,\n        outdoor:true, din:false, manip:false, akku:false },\n    spec:\"54\u201386 mm \u00b7 Einbau \u00b7 \u221220 bis +70 \u00b0C\",\n    img: \"https:\/\/gebe.net\/wp-content\/uploads\/2026\/07\/Compact-Plus-mit-Schatten-scaled-scaled-1-400x400.png\" },\n  { id:\"compact_plus_ll\", name:\"COMPACT Plus Linerless\", codes:\"GPT-467x-P-LL\",\n    form:\"einbau\", widths:[\"2\",\"3\"], if_std:[\"usb\",\"rs232\"], if_opt:[], if_note:{ rs232:\"RS232 bei 2-Zoll-Variante\" },\n    os:[\"windows\",\"linux_cups\",\"android_sdk\",\"sdk\"],\n    p:{ speed200:true, dpi300:false, thick:false, blackmark:false,\n        lowv:false, kfz:false, netz230:false,\n        linerless:true, cutter:true, presenter:true, aufwickler:false,\n        outdoor:true, din:false, manip:false, akku:false },\n    spec:\"Linerless 42\u201382,5 mm \u00b7 Einbau \u00b7 Outdoor\",\n    img: \"https:\/\/gebe.net\/wp-content\/uploads\/2026\/07\/Compact-Plus-Linerless-Presenter-Easyload-Tischgeraet-mit-Schatten-scaled-1-400x400.png\" },\n  { id:\"vario_plus_ll\", name:\"VARIO Plus Linerless\", codes:\"GPT-18740-LL | GPT-18760-LL\",\n    form:\"einbau\", widths:[\"3\",\"4\"], if_std:[\"usb\",\"ethernet\"], if_opt:[],\n    os:[\"windows\",\"linux_cups\",\"android_sdk\",\"sdk\"],\n    p:{ speed200:true, dpi300:\"300 dpi als 4-Zoll-Variante\", thick:false, blackmark:true,\n        lowv:false, kfz:true, netz230:false,\n        linerless:true, cutter:true, presenter:\"Presenter optional\", aufwickler:false,\n        outdoor:true, din:false, manip:false, akku:false },\n    spec:\"Linerless 78\u2013152 mm \u00b7 USB + Ethernet\",\n    img: \"https:\/\/gebe.net\/wp-content\/uploads\/2026\/07\/VARIO-Plus-Linerless-mit-Schatten-scaled-1-400x400.png\" },\n  { id:\"vario_box_ll\", name:\"VARIO Box Linerless\", codes:\"GPT-18765-LL | GPT-18745-LL\",\n    form:\"alleinstehend\", widths:[\"3\",\"4\"], if_std:[\"usb\",\"ethernet\"], if_opt:[],\n    os:[\"windows\",\"linux_cups\",\"android_sdk\",\"sdk\"],\n    p:{ speed200:true, dpi300:\"300 dpi bei GPT-18745-LL\", thick:false, blackmark:true,\n        lowv:false, kfz:false, netz230:true,\n        linerless:true, cutter:true, presenter:true, aufwickler:false,\n        outdoor:false, din:false, manip:false, akku:false },\n    spec:\"Linerless 80\u2013152 mm \u00b7 Tischger\u00e4t\",\n    img: \"https:\/\/gebe.net\/wp-content\/uploads\/2026\/07\/VARIO-Box-Linerless-mit-Schatten-scaled-scaled-scaled-scaled-400x400.png\" },\n  { id:\"mulde_medi_cut\", name:\"MULDE Medi Cut\", codes:\"GPT-88530\",\n    form:\"einbau\", widths:[\"2\",\"3\"], if_std:[\"usb\",\"rs232\"], if_opt:[\"ttl\"],\n    os:[\"windows\",\"linux_cups\",\"android_sdk\",\"sdk\"],\n    p:{ speed200:true, dpi300:false, thick:false, blackmark:true,\n        lowv:false, kfz:true, netz230:false,\n        linerless:false, cutter:true, presenter:false, aufwickler:false,\n        outdoor:true, din:false, manip:false, akku:false },\n    spec:\"45\u201386 mm \u00b7 Einbautiefe 87 mm \u00b7 Cutter\",\n    img: \"https:\/\/gebe.net\/wp-content\/uploads\/2026\/07\/Mulde-Medi-Cut-mit-Schatten-scaled-1-400x400.png\" },\n  { id:\"mulde_medi_box\", name:\"MULDE Medi Box\", codes:\"GPT-88535\",\n    form:\"alleinstehend\", widths:[\"2\",\"3\"], if_std:[\"usb\",\"rs232\",\"ethernet\"], if_opt:[],\n    os:[\"windows\",\"linux_cups\",\"android_sdk\",\"sdk\"],\n    p:{ speed200:true, dpi300:false, thick:false, blackmark:true,\n        lowv:false, kfz:true, netz230:false,\n        linerless:false, cutter:true, presenter:false, aufwickler:false,\n        outdoor:true, din:false, manip:false, akku:false },\n    spec:\"45\u201386 mm \u00b7 Tischger\u00e4t \u00b7 Ethernet\",\n    img: \"https:\/\/gebe.net\/wp-content\/uploads\/2026\/07\/SchellPrinter-Tischgehaeuse-mit-Schatten-scaled-1-400x400.png\" },\n  { id:\"mulde_mini\", name:\"MULDE Mini\", codes:\"GPT-4352-31\",\n    form:\"einbau\", widths:[\"2\"], if_std:[\"usb\",\"rs232\",\"ttl\"], if_opt:[],\n    os:[\"windows\",\"linux_cups\",\"android_sdk\",\"sdk\"],\n    p:{ speed200:false, dpi300:false, thick:false, blackmark:false,\n        lowv:true, kfz:\"10\u201336 V mit DC\/DC-Wandler\", netz230:false,\n        linerless:false, cutter:false, presenter:false, aufwickler:false,\n        outdoor:false, din:true, manip:false, akku:false },\n    spec:\"56,5 mm \u00b7 DIN-Front-Einbau \u00b7 4,5\u20138,5 V\",\n    img: \"https:\/\/gebe.net\/wp-content\/uploads\/2026\/07\/GPT-4352-Mulde-Mini-mit-Schatten-scaled-scaled-1-400x400.png?ver=1785339176\" },\n  { id:\"mulde_mini_60\", name:\"MULDE Mini-60\", codes:\"GPT-4352-60\",\n    form:\"einbau\", widths:[\"2\"], if_std:[\"usb\",\"rs232\",\"ttl\"], if_opt:[],\n    os:[\"windows\",\"linux_cups\",\"android_sdk\",\"sdk\"],\n    p:{ speed200:false, dpi300:false, thick:false, blackmark:false,\n        lowv:true, kfz:\"10\u201336 V mit DC\/DC-Wandler\", netz230:false,\n        linerless:false, cutter:false, presenter:false, aufwickler:false,\n        outdoor:false, din:true, manip:false, akku:false },\n    spec:\"56,5 mm \u00b7 43 m Papiervorrat \u00b7 DIN-Einbau\",\n    img: \"https:\/\/gebe.net\/wp-content\/uploads\/2026\/07\/GPT-4352-60-GeBE-MULDE-Mini-60-mit-Schatten-scaled-scaled-400x400.png?ver=1785339200\" },\n  { id:\"mulde_maxi\", name:\"MULDE Maxi\", codes:\"GPT-4454-C32\",\n    form:\"einbau\", widths:[\"4\"], if_std:[\"usb\",\"rs232\"], if_opt:[],\n    os:[\"windows\",\"linux_cups\",\"android_sdk\",\"sdk\"],\n    p:{ speed200:false, dpi300:false, thick:false, blackmark:false,\n        lowv:true, kfz:true, netz230:false,\n        linerless:false, cutter:false, presenter:false, aufwickler:false,\n        outdoor:false, din:true, manip:false, akku:false },\n    spec:\"113,5 mm \u00b7 Einbautiefe 47 mm \u00b7 DIN\",\n    img: \"https:\/\/gebe.net\/wp-content\/uploads\/2026\/07\/GPT-4454-GeBE-MULDE-Maxi-mit-Schatten-scaled-400x400.png\" },\n  { id:\"kassette\", name:\"KASSETTE\", codes:\"GPT-4443\",\n    form:\"einbau\", widths:[\"3\"], if_std:[\"usb\",\"rs232\"], if_opt:[],\n    os:[\"windows\",\"linux_cups\",\"android_sdk\",\"sdk\"],\n    p:{ speed200:false, dpi300:false, thick:false, blackmark:false,\n        lowv:false, kfz:true, netz230:false,\n        linerless:false, cutter:false, presenter:false, aufwickler:true,\n        outdoor:false, din:false, manip:false, akku:false },\n    spec:\"80 mm \u00b7 Aufwickler \u00b7 isolierte Schnittstellen\",\n    img: \"https:\/\/gebe.net\/wp-content\/uploads\/2026\/07\/GPT-4443-GeBE-KASSETTE-mit-Schatten-scaled-400x400.png\" },\n  { id:\"piano\", name:\"GeBE-PIANO\u00ae\", codes:\"GPT-4633\",\n    form:\"alleinstehend\", widths:[\"2\",\"3\"], if_std:[\"usb\"], if_opt:[\"rs232\",\"ethernet\"], if_note:{ rs232:\"RS232 auf Anfrage (A8-Variante)\", ethernet:\"Ethernet per Adapter auf Anfrage\" },\n    os:[\"windows\",\"linux_cups\",\"macos\"],\n    p:{ speed200:true, dpi300:\"300 dpi bei C32-Variante\", thick:true, blackmark:true,\n        lowv:false, kfz:false, netz230:false,\n        linerless:false, cutter:true, presenter:false, aufwickler:false,\n        outdoor:false, din:false, manip:false, akku:\"Akku-Pack optional (>3.500 Tickets)\" },\n    spec:\"54\u201382,5 mm \u00b7 bis 250 mm\/s \u00b7 Papier bis 220 \u00b5m\",\n    img: \"https:\/\/gebe.net\/wp-content\/uploads\/2026\/07\/GPT-4633-Drucker-komplett-86mm-mit-Schatten-scaled-1-400x400.png\" },\n  { id:\"piano_box\", name:\"PIANO Box\", codes:\"GPT-4643\",\n    form:\"alleinstehend\", widths:[\"2\",\"3\"], if_std:[\"usb\",\"ethernet\"], if_opt:[],\n    os:[\"windows\",\"linux_cups\"],\n    p:{ speed200:true, dpi300:true, thick:true, blackmark:true,\n        lowv:false, kfz:true, netz230:false,\n        linerless:false, cutter:true, presenter:false, aufwickler:false,\n        outdoor:true, din:false, manip:true, akku:false },\n    spec:\"45\u201386 mm \u00b7 verschlossenes Geh\u00e4use \u00b7 300 dpi\",\n    img: \"https:\/\/gebe.net\/wp-content\/uploads\/2026\/07\/Piano-Box-mit-Schlo-Vollausbau-mit-Schatten-scaled-1-400x400.png\" },\n  { id:\"flash\", name:\"GeBE-FLASH\u00ae\", codes:\"GPT-437x-C32\",\n    form:\"batterie\", widths:[\"2\"], if_std:[\"bluetooth\",\"usb\",\"rs232\",\"irda\"], if_opt:[],\n    os:[],\n    p:{ speed200:false, dpi300:false, thick:false, blackmark:false,\n        lowv:false, kfz:\"Akku-Ladung \u00fcber 12-V-Ladenetzteil\", netz230:false,\n        linerless:false, cutter:false, presenter:false, aufwickler:false,\n        outdoor:false, din:false, manip:false, akku:true },\n    spec:\"57,5 mm \u00b7 Akku, 350 g \u00b7 BT | IrDA\",\n    img: \"https:\/\/gebe.net\/wp-content\/uploads\/2026\/07\/GPT-4379-GeBE-FLASH-mit-Schatten-scaled-400x400.png\" }\n];\n\nvar IFACE = { usb:\"USB\", rs232:\"RS232\", ttl:\"TTL\", ethernet:\"Ethernet\", bluetooth:\"Bluetooth\", irda:\"Infrarot\" };\nvar OS = { windows:\"Windows\", linux_cups:\"Linux (CUPS)\", android_sdk:\"Android\", macos:\"Mac OS\", sdk:\"SDK | eigene Integration\" };\n\n\/* ---------- Filtergruppen ----------\n   mode \"or\"  = eine der gew\u00e4hlten Optionen gen\u00fcgt (Bauform, Breite, Spannung)\n   mode \"and\" = alle gew\u00e4hlten Optionen m\u00fcssen erf\u00fcllt sein *\/\nvar GROUPS = [\n  { key:\"form\", label:\"Bauform\", mode:\"or\",\n    opts:{ einbau:\"Einbau\", alleinstehend:\"Tischger\u00e4t\", batterie:\"Mobil | Akku\" },\n    test:function (m, k) { return m.form === k; } },\n  { key:\"widths\", label:\"Papierbreite\", mode:\"or\",\n    opts:{ \"2\":\"2 Zoll (~58 mm)\", \"3\":\"3 Zoll (~80 mm)\", \"4\":\"4 Zoll+ (100\u2013152 mm)\" },\n    test:function (m, k) { return m.widths.indexOf(k) >= 0; } },\n  { key:\"ifaces\", label:\"Schnittstelle\", mode:\"and\",\n    opts: IFACE,\n    test:function (m, k) {\n      var n = m.if_note && m.if_note[k];\n      if (m.if_std.indexOf(k) >= 0) return n || true;\n    if (m.if_opt.indexOf(k) >= 0) return n || (IFACE[k] + \" auf Anfrage\");\n      return false;\n    } },\n  { key:\"os\", label:\"Treiber | System\", mode:\"and\",\n    opts: OS,\n    test:function (m, k) { return m.os.indexOf(k) >= 0; } },\n  { key:\"druck\", label:\"Druck\", mode:\"and\",\n    opts:{ speed200:\"Schnell (ab 200 mm\/s)\", dpi300:\"300 dpi Aufl\u00f6sung\", thick:\"Dickes Papier | Karten (ab 190 \u00b5m)\", blackmark:\"Blackmark | vorbedrucktes Papier\" },\n    test:function (m, k) { return m.p[k]; } },\n  { key:\"volt\", label:\"Spannungsversorgung\", mode:\"or\",\n    opts:{ lowv:\"4,5\u20138,5 V (Logikspannung)\", kfz:\"12 | 24 V Bordnetz & Industrie\", netz230:\"230 V (Netzteil integriert)\" },\n    test:function (m, k) { return m.p[k]; } },\n  { key:\"ausst\", label:\"Ausstattung & Bauart\", mode:\"and\",\n    opts:{ linerless:\"Linerless\", cutter:\"Cutter integriert\", presenter:\"Presenter\", aufwickler:\"Papieraufwickler\",\n           outdoor:\"Outdoor (\u221220 \u00b0C u. m.)\", din:\"DIN-Einbau\", manip:\"Manipulationssicher | verschlossen\", akku:\"Akkubetrieb m\u00f6glich\" },\n    test:function (m, k) { return m.p[k]; } }\n];\n\nvar F = {};\nGROUPS.forEach(function (g) { F[g.key] = []; });\n\n\/* true\/\u201eHinweistext\" z\u00e4hlt als Treffer; false f\u00e4llt raus *\/\nfunction matches(m) {\n  return GROUPS.every(function (g) {\n    var sel = F[g.key];\n    if (!sel.length) return true;\n    var fn = function (k) { return !!g.test(m, k); };\n    return g.mode === \"or\" ? sel.some(fn) : sel.every(fn);\n  });\n}\n\n\/* Einschr\u00e4nkungs-Hinweise (\u201eauf Anfrage\", Varianten) f\u00fcr aktive Filter *\/\nfunction hints(m) {\n  var out = [];\n  GROUPS.forEach(function (g) {\n    F[g.key].forEach(function (k) {\n      var v = g.test(m, k);\n      if (typeof v === \"string\" && out.indexOf(v) < 0) out.push(v);\n    });\n  });\n  return out;\n}\n\nfunction toggle(group, key) {\n  var arr = F[group], i = arr.indexOf(key);\n  if (i >= 0) arr.splice(i, 1); else arr.push(key);\n  submitted = false; \/\/ neue Kombination -> Formular ggf. wieder anzeigen\n  render();\n  trefferZeigen();\n}\n\nfunction reset() {\n  GROUPS.forEach(function (g) { F[g.key] = []; });\n  render();\n  trefferZeigen();\n}\n\nfunction showToast(msg) {\n  var t = document.getElementById(\"gkf-toast\");\n  t.textContent = msg;\n  t.classList.add(\"show\");\n  clearTimeout(showToast._t);\n  showToast._t = setTimeout(function () { t.classList.remove(\"show\"); }, 2800);\n}\n\nfunction openModel(id) {\n  var url = LINKS[id];\n  if (url) { window.location.href = url; return; }\n  showToast(\"Produktseiten-Link noch nicht eingetragen \u2014 oben in der Datei unter PRODUKT-LINKS erg\u00e4nzen.\");\n}\n\n\/* Aktuelle Auswahl als lesbarer Text (geht mit der Projektanfrage mit) *\/\nfunction auswahlText() {\n  var lines = [];\n  GROUPS.forEach(function (g) {\n    if (F[g.key].length) lines.push(g.label + \": \" + F[g.key].map(function (k) { return g.opts[k]; }).join(\", \"));\n  });\n  return lines.join(\" | \");\n}\n\n\/* Formulardaten \u00fcberleben Re-Renders; submitted steuert die Danke-Ansicht *\/\nvar FD = { name: \"\", firma: \"\", email: \"\", tel: \"\", msg: \"\" };\nvar submitted = false;\n\nfunction submitAnfrage(e) {\n  e.preventDefault();\n  var text = auswahlText() || \"keine Vorauswahl\";\n  if (KONTAKT_MAIL) {\n    var body = \"Anfrage \u00fcber den Drucker-Filter (keine Standard-Konfiguration gefunden)\\n\\n\" +\n      \"Gew\u00e4hlte Kriterien:\\n\" + text.split(\" | \").join(\"\\n\") + \"\\n\\n\" +\n      \"Name: \" + FD.name + \"\\nFirma: \" + FD.firma + \"\\nE-Mail: \" + FD.email + \"\\nTelefon: \" + FD.tel + \"\\n\\n\" +\n      \"Nachricht:\\n\" + FD.msg;\n    window.location.href = \"mailto:\" + KONTAKT_MAIL +\n      \"?subject=\" + encodeURIComponent(\"Projektanfrage Thermodrucker (kundenspezifisch)\") +\n      \"&body=\" + encodeURIComponent(body);\n  }\n  submitted = true;\n  render();\n  if (!KONTAKT_MAIL) showToast(\"Demo-Modus: Oben in der Datei unter KONTAKT die Empf\u00e4nger-Adresse eintragen.\");\n  return false;\n}\n\nvar TOTAL = MODELS.length;\nvar gebaut = false;\n\n\/* Unterkante des festen Headers (f\u00fcr Scroll-Ziel) *\/\nfunction kopfUnten() {\n  var m = 0;\n  document.querySelectorAll('header[data-elementor-type=\"header\"] > .e-con').forEach(function (e) {\n    var p = getComputedStyle(e).position;\n    if (p === 'fixed' || p === 'sticky') { var r = e.getBoundingClientRect(); if (r.top <= 1 && r.bottom > m) m = r.bottom; }\n  });\n  return Math.round(m);\n}\n\n\/* 29.09.2026: Grundger\u00fcst wird nur EINMAL gebaut. Danach aktualisiert render() nur Chips,\n   Trefferzahl und Drucker. Vorher wurde bei jedem Klick alles neu geschrieben, dadurch\n   sprang die Filterspalte immer wieder nach oben. Trefferzahl + Zur\u00fccksetzen stehen jetzt\n   \u00fcber den Druckern (.gkf-main > .gkf-bar). *\/\nfunction geruest() {\n  var root = document.getElementById(\"gkf-root\");\n  var html = '<div class=\"gkf-layout\"><div class=\"gkf-filter\">';\n  GROUPS.forEach(function (g) {\n    html += '<div class=\"gkf-group\"><div class=\"gkf-label\">' + g.label + '<\/div><div class=\"gkf-chips\">';\n    Object.keys(g.opts).forEach(function (k) {\n      html += '<button type=\"button\" class=\"gkf-chip\" aria-pressed=\"false\" data-g=\"' + g.key + '\" data-k=\"' + k + '\">' + g.opts[k] + '<\/button>';\n    });\n    html += '<\/div><\/div>';\n  });\n  html += '<\/div><div class=\"gkf-main\">' +\n    '<div class=\"gkf-bar\"><div class=\"gkf-count\" aria-live=\"polite\"><\/div>' +\n    '<button type=\"button\" class=\"gkf-reset\" id=\"gkf-reset\" hidden>Alle Filter zur\u00fccksetzen<\/button><\/div>' +\n    '<div class=\"gkf-grid\"><\/div><\/div><\/div><div class=\"gkf-toast\" id=\"gkf-toast\"><\/div>';\n  root.innerHTML = html;\n  root.querySelectorAll(\".gkf-chip\").forEach(function (b) {\n    b.addEventListener(\"click\", function () { toggle(b.getAttribute(\"data-g\"), b.getAttribute(\"data-k\")); });\n  });\n  document.getElementById(\"gkf-reset\").addEventListener(\"click\", reset);\n  gebaut = true;\n}\n\nfunction gridHtml(list) {\n  var html = '';\n\n  if (!list.length) {\n    var selChips = [];\n    GROUPS.forEach(function (g) {\n      F[g.key].forEach(function (k) { selChips.push(g.opts[k]); });\n    });\n    html += '<div class=\"gkf-empty\">' +\n      '<div style=\"font-size:17.5px; color:#FFFFFF; margin-bottom:8px;\">Kein Standard-Modell erf\u00fcllt genau diese Kombination.<\/div>' +\n      '<p style=\"max-width:540px; margin:0 auto 18px;\">Aber kundenspezifische L\u00f6sungen sind unser Metier \u2014 auch in kleinen St\u00fcckzahlen. Senden Sie uns Ihre Anfrage: Ihre gew\u00e4hlten Kriterien gehen automatisch mit, unser Technik-Vertrieb meldet sich mit einem passenden Vorschlag.<\/p>';\n    if (submitted) {\n      html += '<div style=\"max-width:540px; margin:0 auto; padding:26px; border:1px solid rgba(186,186,186,0.24); border-radius:var(--gebe-r-md); background:rgba(255,255,255,0.04);\">' +\n        '<div style=\"font-size:16px; color:#FFFFFF;\">Danke f\u00fcr Ihre Anfrage.<\/div>' +\n        '<p style=\"margin:6px 0 0;\">Unser Vertriebsteam meldet sich bei Ihnen.<\/p><\/div>';\n    } else {\n      html += (selChips.length ? '<div style=\"display:flex; flex-wrap:wrap; gap:7px; justify-content:center; max-width:560px; margin:0 auto 18px;\">' +\n        selChips.map(function (c) { return '<span style=\"font-size:12px; color:#FFFFFF; background:rgba(255,255,255,0.06); border:1px solid rgba(186,186,186,0.24); border-radius:var(--gebe-r-pill); padding:4px 12px;\">' + c + '<\/span>'; }).join(\"\") +\n        '<\/div>' : '') +\n      '<form class=\"gkf-form\" id=\"gkf-form\">' +\n        '<input type=\"hidden\" id=\"gkf-f-auswahl\" name=\"auswahl\" value=\"' + auswahlText().replace(\/\"\/g, \"&quot;\") + '\">' +\n        '<input type=\"text\" required placeholder=\"Name*\" value=\"' + FD.name.replace(\/\"\/g, \"&quot;\") + '\" data-fd=\"name\">' +\n        '<input type=\"text\" placeholder=\"Firma\" value=\"' + FD.firma.replace(\/\"\/g, \"&quot;\") + '\" data-fd=\"firma\">' +\n        '<input type=\"email\" required placeholder=\"E-Mail*\" value=\"' + FD.email.replace(\/\"\/g, \"&quot;\") + '\" data-fd=\"email\">' +\n        '<input type=\"text\" placeholder=\"Telefon\" value=\"' + FD.tel.replace(\/\"\/g, \"&quot;\") + '\" data-fd=\"tel\">' +\n        '<textarea class=\"gkf-full\" rows=\"3\" placeholder=\"Kurz zu Ihrem Projekt: St\u00fcckzahl, Einsatzort, Besonderheiten \u2026\" data-fd=\"msg\">' + FD.msg.replace(\/<\/g, \"&lt;\") + '<\/textarea>' +\n        '<div class=\"gkf-full\" style=\"display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap;\">' +\n          '<div style=\"font-size:10.5px; color:#FFFFFF; max-width:240px; text-align:left;\">Unverbindlich. Mit Absenden stimmen Sie der Datenschutzerkl\u00e4rung zu.<\/div>' +\n          '<button type=\"submit\" class=\"elementor-button gkf-btn\">Anfrage senden &#8594;<\/button>' +\n        '<\/div>' +\n      '<\/form>';\n    }\n    html += '<\/div>';\n  }\n  list.forEach(function (m) {\n    var h = hints(m);\n    html += '<a class=\"gkf-item\" href=\"' + (LINKS[m.id] || '#') + '\" data-id=\"' + m.id + '\">' +\n      '<div class=\"gkf-img\" style=\"background-image:url(\\'' + m.img + '\\')\" role=\"img\" aria-label=\"' + m.name + '\"><\/div>' +\n      '<div class=\"gkf-name\">' + m.name + '<\/div>' +\n      '<div class=\"gkf-code\">' + m.codes + '<\/div>' +\n      (h.length ? '<div class=\"gkf-hint\">' + h.join(\" \u00b7 \") + '<\/div>' : '') +\n      '<\/a>';\n  });\n    return html;\n}\n\nfunction render() {\n  if (!gebaut) geruest();\n  var root = document.getElementById(\"gkf-root\");\n  var list = MODELS.filter(matches);\n  var anyFilter = GROUPS.some(function (g) { return F[g.key].length > 0; });\n\n  root.querySelectorAll(\".gkf-chip\").forEach(function (b) {\n    var on = F[b.getAttribute(\"data-g\")].indexOf(b.getAttribute(\"data-k\")) >= 0;\n    b.classList.toggle(\"sel\", on);\n    b.setAttribute(\"aria-pressed\", on ? \"true\" : \"false\");\n  });\n  root.classList.toggle(\"gkf-aktiv\", anyFilter);\n\n  var c = root.querySelector(\".gkf-count\");\n  c.textContent = anyFilter ? (list.length + \" von \" + TOTAL + \" Modellen gefunden\") : (TOTAL + \" Modelle\");\n  c.setAttribute(\"data-n\", list.length);\n  c.setAttribute(\"data-t\", TOTAL);\n  document.getElementById(\"gkf-reset\").hidden = !anyFilter;\n\n  root.querySelector(\".gkf-grid\").innerHTML = gridHtml(list);\n\n  var frm = document.getElementById(\"gkf-form\");\n  if (frm) {\n    frm.addEventListener(\"submit\", submitAnfrage);\n    frm.querySelectorAll(\"[data-fd]\").forEach(function (el) {\n      el.addEventListener(\"input\", function () { FD[el.getAttribute(\"data-fd\")] = el.value; });\n    });\n  }\n  root.querySelectorAll(\".gkf-item\").forEach(function (a) {\n    a.addEventListener(\"click\", function (e) {\n      if (!LINKS[a.getAttribute(\"data-id\")]) { e.preventDefault(); openModel(a.getAttribute(\"data-id\")); }\n    });\n  });\n  root.dispatchEvent(new CustomEvent(\"gkf:render\"));\n}\n\n\/* Seite bleibt beim Filtern stehen. Nur wenn nach dem Filtern kein einziger Treffer mehr\n   im Bild ist (man war weit unten), sanft an den Anfang der Treffer. *\/\nfunction trefferZeigen() {\n  var main = document.querySelector(\"#gkf-root .gkf-main\");\n  if (!main) return;\n  var oben = kopfUnten(), r = main.getBoundingClientRect();\n  if (r.bottom < oben + 80) {\n    window.scrollTo({ top: Math.max(0, window.pageYOffset + r.top - oben - 16), behavior: \"smooth\" });\n  }\n}\n\nrender();\n\/* kleines Debug-\/Konfigurations-Handle (z. B. zum Testen in der Browser-Konsole) *\/\nwindow.__gkf = { F: F, FD: FD, render: render, auswahlText: auswahlText, LINKS: LINKS };\n})();\n<\/script>\n<style id=\"gkf-mobil-css\">\n\/* Mobil-Layout Produktfilter (24.09.2026): Filter eingeklappt, Leiste mit Filter-Button + Trefferzahl *\/\n.gkf .gkf-mbar,.gkf .gkf-mdone{display:none;}\n@media (max-width:860px){\n  .gkf .gkf-mbar{display:flex;align-items:center;justify-content:space-between;gap:12px;position:sticky;top:var(--gkf-top,0px);z-index:20;margin:-10px -20px 0;padding:10px 20px;background:rgba(103,112,123,.9);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);}\n  .gkf .gkf-mcount{color:#fff;font-size:15px;line-height:1.3;}\n  .gkf .gkf-mtoggle{flex:0 0 auto;white-space:nowrap;}\n  .gkf:not(.gkf-open) .gkf-filter{display:none!important;}\n  .gkf .gkf-filter .gkf-count{display:none;}\n  .gkf .gkf-mdone{display:flex;justify-content:center;width:100%;margin-top:16px;}\n  .gkf .gkf-layout{gap:20px;}\n  .gkf.gkf .gkf-grid{align-items:start;}\n  .gkf.gkf .gkf-img{height:150px;}\n}\n@media (max-width:560px){\n  \/* immer 2 Spalten auf dem Handy, dicht nebeneinander *\/\n  .gkf.gkf .gkf-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 10px;}\n  .gkf.gkf .gkf-item{min-width:0;}\n  .gkf.gkf .gkf-img{height:clamp(110px,38vw,150px);}\n  .gkf.gkf .gkf-name,.gkf.gkf .gkf-code{overflow-wrap:anywhere;}\n}\n<\/style><style id=\"gkf-bar-css\">\n\/* 29.09.2026: Trefferzahl + Zur\u00fccksetzen \u00fcber den Druckern statt unten in der Filterspalte *\/\n.gkf .gkf-main{min-width:0;}\n.gkf .gkf-main > .gkf-bar{display:flex;flex-direction:row;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px 16px;border:0;margin:0 0 26px;padding:0;min-height:36px;}\n.gkf .gkf-main .gkf-count{font-size:16px;font-weight:400;letter-spacing:.2px;color:#FFFFFF;}\n.gkf .gkf-main .gkf-reset{display:inline-flex;align-items:center;align-self:auto;border:1px solid rgba(186,186,186,0.35);border-radius:var(--gebe-r-pill);background:rgba(93,101,111,0.32);color:#FFFFFF;padding:7px 16px;font-family:inherit;font-weight:400;font-size:14px;line-height:1.3;text-decoration:none;cursor:pointer;transition:border-color .2s,background .2s;}\n.gkf .gkf-main .gkf-reset:hover{border-color:rgba(255,255,255,0.7);background:rgba(255,255,255,0.08);}\n.gkf .gkf-reset[hidden]{display:none!important;}\n.gkf .gkf-grid{overflow-anchor:none;}\n@media (max-width:860px){\n.gkf .gkf-main > .gkf-bar{justify-content:flex-end;margin-bottom:18px;min-height:0;}\n.gkf .gkf-main .gkf-count{display:none;}\n.gkf:not(.gkf-aktiv) .gkf-main > .gkf-bar{display:none;}\n}\n<\/style>\n<script id=\"gkf-mobil-js\">\n\/* Mobil-Layout Produktfilter (24.09.2026; 29.09.2026: Update \u00fcber Event gkf:render, Z\u00e4hler \"x von y\") *\/\n(function(){\nvar root=document.getElementById('gkf-root'); if(!root) return;\nvar offen=false;\nfunction kopfUnten(){ var m=0; document.querySelectorAll('header[data-elementor-type=\"header\"] > .e-con').forEach(function(e){ var p=getComputedStyle(e).position; if(p==='fixed'||p==='sticky'){ var r=e.getBoundingClientRect(); if(r.top<=1&&r.bottom>m) m=r.bottom; } }); return Math.round(m); }\nfunction setTop(){ root.style.setProperty('--gkf-top', kopfUnten()+'px'); }\nfunction zahl(a){ var c=root.querySelector('.gkf-count'); return c?(parseInt(c.getAttribute(a),10)||0):0; }\nfunction zu(){ var y=root.getBoundingClientRect().top+window.pageYOffset-kopfUnten(); if(window.pageYOffset>y+4) window.scrollTo(0,Math.max(0,y)); }\nfunction bauen(){\nvar lay=root.querySelector('.gkf-layout'), fil=root.querySelector('.gkf-filter'); if(!lay||!fil) return;\nroot.classList.toggle('gkf-open',offen);\nvar n=root.querySelectorAll('.gkf-chip.sel').length, t=zahl('data-n'), g=zahl('data-t');\nvar mb=lay.querySelector(':scope > .gkf-mbar');\nif(!mb){\nmb=document.createElement('div'); mb.className='gkf-mbar';\nmb.innerHTML='<span class=\"gkf-mcount\"><\/span><button type=\"button\" class=\"elementor-button gkf-mtoggle\" aria-controls=\"gkf-root\"><\/button>';\nlay.insertBefore(mb,lay.firstChild);\nmb.querySelector('.gkf-mtoggle').addEventListener('click',function(){ offen=!offen; bauen(); zu(); });\n}\nmb.querySelector('.gkf-mcount').textContent=n?(t+' von '+g+' Modellen'):(g+' Modelle');\nvar b=mb.querySelector('.gkf-mtoggle'); b.textContent=offen?'Filter schlie\u00dfen':(n?'Filter ('+n+')':'Filter'); b.setAttribute('aria-expanded',offen?'true':'false');\nvar d=fil.querySelector('.gkf-mdone');\nif(!d){\nd=document.createElement('button'); d.type='button'; d.className='elementor-button gkf-mdone';\nd.addEventListener('click',function(){ offen=false; bauen(); zu(); });\nfil.appendChild(d);\n}\nd.textContent=(t===1?'1 Modell':t+' Modelle')+' anzeigen';\nsetTop();\n}\nroot.addEventListener('gkf:render',bauen);\nwindow.addEventListener('resize',setTop);\nwindow.addEventListener('scroll',function(){ if(!setTop._t){ setTop._t=setTimeout(function(){setTop._t=0; setTop();},150);} },{passive:true});\nbauen();\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"product_video_url":"","product_video_button_label":"","gebe_tile_text":"","footnotes":""},"folder":[],"class_list":["post-1885","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/gebe.net\/en\/wp-json\/wp\/v2\/pages\/1885","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gebe.net\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/gebe.net\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/gebe.net\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gebe.net\/en\/wp-json\/wp\/v2\/comments?post=1885"}],"version-history":[{"count":10,"href":"https:\/\/gebe.net\/en\/wp-json\/wp\/v2\/pages\/1885\/revisions"}],"predecessor-version":[{"id":11180,"href":"https:\/\/gebe.net\/en\/wp-json\/wp\/v2\/pages\/1885\/revisions\/11180"}],"wp:attachment":[{"href":"https:\/\/gebe.net\/en\/wp-json\/wp\/v2\/media?parent=1885"}],"wp:term":[{"taxonomy":"folder","embeddable":true,"href":"https:\/\/gebe.net\/en\/wp-json\/wp\/v2\/folder?post=1885"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}