<style id="elementor-post-31459">.elementor-31459 .elementor-element.elementor-element-09a47f1 .trx_addons_bg_text{z-index:0;}.elementor-31459 .elementor-element.elementor-element-09a47f1 .trx_addons_bg_text.trx_addons_marquee_wrap:not(.trx_addons_marquee_reverse) .trx_addons_marquee_element{padding-right:50px;}.elementor-31459 .elementor-element.elementor-element-09a47f1 .trx_addons_bg_text.trx_addons_marquee_wrap.trx_addons_marquee_reverse .trx_addons_marquee_element{padding-left:50px;}</style>{"id":31459,"date":"2026-07-21T11:36:35","date_gmt":"2026-07-21T09:36:35","guid":{"rendered":"https:\/\/pleion.it\/pleihome-konfigurator\/"},"modified":"2026-07-22T12:09:21","modified_gmt":"2026-07-22T10:09:21","slug":"pleihome-konfigurator","status":"publish","type":"page","link":"https:\/\/pleion.it\/de\/pleihome-konfigurator\/","title":{"rendered":"PleiHome-Konfigurator"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"31459\" class=\"elementor elementor-31459 elementor-31365\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-09a47f1 elementor-section-full_width elementor-section-height-default elementor-section-height-default sc_fly_static\" data-id=\"09a47f1\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-extended\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-e6212b4 sc_content_align_inherit sc_layouts_column_icons_position_left sc_fly_static\" data-id=\"e6212b4\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d2fa670 sc_fly_static elementor-widget elementor-widget-html\" data-id=\"d2fa670\" 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<style>\n#pleihome-cfg *, #pleihome-cfg *::before, #pleihome-cfg *::after { margin: 0; padding: 0; box-sizing: border-box; }\n#pleihome-cfg {\n  font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n  background: linear-gradient(135deg, #eb3349 0%, #f45c43 100%);\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  padding: 20px;\n}\n#pleihome-cfg .logo-header { color: white; text-align: center; margin-bottom: 24px; padding-top: 10px; }\n#pleihome-cfg .logo-header h1 { font-size: 28px; font-weight: 700; letter-spacing: -0.5px; }\n#pleihome-cfg .logo-header p { opacity: 0.85; margin-top: 4px; font-size: 15px; }\n#pleihome-cfg .progress-wrap {\n  width: 100%; max-width: 820px;\n  background: rgba(255,255,255,0.15);\n  border-radius: 50px; height: 8px;\n  margin-bottom: 20px; overflow: hidden;\n}\n#pleihome-cfg .progress-bar { height: 100%; background: white; border-radius: 50px; transition: width 0.4s ease; }\n#pleihome-cfg .step-counter { color: rgba(255,255,255,0.9); font-size: 13px; text-align: center; margin-bottom: 16px; font-weight: 500; }\n#pleihome-cfg .container {\n  background: white; border-radius: 20px;\n  box-shadow: 0 20px 60px rgba(0,0,0,0.25);\n  max-width: 820px; width: 100%; padding: 40px;\n  animation: fadeIn 0.4s ease-in;\n}\n@keyframes fadeIn { from { opacity:0; transform:translateY(16px); } to { opacity:1; transform:translateY(0); } }\n#pleihome-cfg h2 { color: #222; font-size: 22px; margin-bottom: 6px; }\n#pleihome-cfg .step-subtitle { color: #666; font-size: 15px; margin-bottom: 20px; line-height: 1.5; }\n#pleihome-cfg \/* Info banner *\/\n.info-banner {\n  background: #f0f7ff; border: 1.5px solid #90caf9;\n  border-radius: 12px; padding: 14px 18px;\n  font-size: 13px; color: #1a5276;\n  margin-bottom: 20px;\n  display: flex; align-items: flex-start; gap: 10px;\n  line-height: 1.6;\n}\n#pleihome-cfg .info-banner-icon { font-size: 22px; flex-shrink: 0; margin-top: 1px; }\n#pleihome-cfg .info-banner strong { color: #1a5276; }\n#pleihome-cfg \/* System flow diagram *\/\n.system-flow {\n  display: flex; align-items: center; justify-content: center;\n  gap: 6px; margin-bottom: 24px; flex-wrap: wrap;\n}\n#pleihome-cfg .flow-step {\n  display: flex; flex-direction: column; align-items: center;\n  background: #f8f9ff; border: 2px solid #e0e0e0;\n  border-radius: 12px; padding: 10px 14px; min-width: 80px;\n  text-align: center; font-size: 11px; color: #555;\n  font-weight: 600; transition: border-color 0.3s;\n}\n#pleihome-cfg .flow-step .flow-icon { font-size: 26px; margin-bottom: 4px; }\n#pleihome-cfg .flow-step.active-flow { border-color: #eb3349; background: rgba(235,51,73,0.05); color: #eb3349; }\n#pleihome-cfg .flow-arrow { font-size: 20px; color: #ccc; }\n#pleihome-cfg \/* Cards *\/\n.cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 14px; margin-bottom: 10px; }\n#pleihome-cfg .cards.cols-2 { grid-template-columns: repeat(2, 1fr); }\n#pleihome-cfg .cards.cols-3 { grid-template-columns: repeat(3, 1fr); }\n#pleihome-cfg .cards.cols-4 { grid-template-columns: repeat(4, 1fr); }\n#pleihome-cfg .card {\n  border: 2px solid #e0e0e0; border-radius: 14px;\n  padding: 18px 14px; cursor: pointer; text-align: center;\n  transition: all 0.25s; background: #fafafa;\n  position: relative; user-select: none;\n}\n#pleihome-cfg .card:hover { border-color: #eb3349; background: white; box-shadow: 0 4px 16px rgba(235,51,73,0.15); transform: translateY(-2px); }\n#pleihome-cfg .card.selected {\n  background: linear-gradient(135deg, rgba(235,51,73,0.08), rgba(244,92,67,0.08));\n  border-color: #eb3349; border-width: 2.5px;\n  box-shadow: 0 4px 16px rgba(235,51,73,0.25);\n}\n#pleihome-cfg .card.selected::after {\n  content: '\u2713'; position: absolute; top: 8px; right: 10px;\n  width: 22px; height: 22px; background: #eb3349; color: white;\n  border-radius: 50%; font-size: 12px; font-weight: 700;\n  display: flex; align-items: center; justify-content: center; line-height: 22px;\n}\n#pleihome-cfg .card-icon { font-size: 38px; margin-bottom: 10px; display: block; }\n#pleihome-cfg .card-title { font-size: 14px; font-weight: 700; color: #222; margin-bottom: 4px; }\n#pleihome-cfg .card-desc { font-size: 12px; color: #777; line-height: 1.4; }\n#pleihome-cfg .card-device-badge {\n  display: inline-block; margin-top: 8px;\n  font-size: 10px; background: #f0f7ff;\n  border: 1px solid #90caf9; border-radius: 20px;\n  padding: 2px 8px; color: #1565c0; font-weight: 600;\n  line-height: 1.6;\n}\n#pleihome-cfg \/* Image card *\/\n.card-img-wrap {\n  width: 80px; height: 80px; margin: 0 auto 12px;\n  border-radius: 12px; overflow: hidden;\n  background: #f5f5f5; border: 1px solid #e0e0e0;\n  display: flex; align-items: center; justify-content: center;\n}\n#pleihome-cfg .card-img-wrap img { width: 100%; height: 100%; object-fit: contain; padding: 6px; }\n#pleihome-cfg \/* Generator icon circle *\/\n.gen-icon-wrap {\n  width: 72px; height: 72px; margin: 0 auto 12px;\n  border-radius: 50%; display: flex; align-items: center; justify-content: center;\n  font-size: 34px;\n}\n#pleihome-cfg .gen-icon-wrap.pdc { background: #fce4ec; }\n#pleihome-cfg .gen-icon-wrap.caldaia { background: #fff3e0; }\n#pleihome-cfg .gen-icon-wrap.biomassa { background: #f1f8e9; }\n#pleihome-cfg .gen-icon-wrap.solare { background: #fffde7; }\n#pleihome-cfg \/* Fields *\/\n.field-group { margin-bottom: 20px; }\n#pleihome-cfg .field-label { font-size: 14px; font-weight: 600; color: #333; margin-bottom: 6px; display: block; }\n#pleihome-cfg .field-input {\n  width: 100%; padding: 12px 14px; border: 2px solid #e0e0e0; border-radius: 10px;\n  font-size: 15px; transition: all 0.3s; font-family: inherit; background: #fafafa;\n}\n#pleihome-cfg .field-input:focus { outline: none; border-color: #eb3349; background: white; box-shadow: 0 0 0 3px rgba(235,51,73,0.08); }\n#pleihome-cfg \/* Qty rows *\/\n.qty-row {\n  display: flex; align-items: center; justify-content: space-between;\n  padding: 14px 18px; background: #f8f9ff;\n  border: 2px solid #e0e0e0; border-radius: 12px; margin-bottom: 12px;\n  transition: border-color 0.2s;\n}\n#pleihome-cfg .qty-row.highlight { border-color: #eb3349; background: rgba(235,51,73,0.04); }\n#pleihome-cfg .qty-label { font-size: 15px; font-weight: 600; color: #333; }\n#pleihome-cfg .qty-sublabel { font-size: 12px; color: #888; margin-top: 2px; }\n#pleihome-cfg .qty-controls { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }\n#pleihome-cfg .qty-btn {\n  width: 34px; height: 34px; border-radius: 50%;\n  border: 2px solid #eb3349; background: white; color: #eb3349;\n  font-size: 20px; font-weight: 700; cursor: pointer;\n  transition: all 0.2s; display: flex; align-items: center; justify-content: center;\n}\n#pleihome-cfg .qty-btn:hover { background: #eb3349; color: white; }\n#pleihome-cfg .qty-value { font-size: 20px; font-weight: 700; color: #222; min-width: 28px; text-align: center; }\n#pleihome-cfg \/* Toggle *\/\n.toggle-row {\n  display: flex; align-items: center; justify-content: space-between;\n  padding: 16px 18px; background: #f8f9ff;\n  border: 2px solid #e0e0e0; border-radius: 12px; margin-bottom: 12px;\n  cursor: pointer; transition: all 0.3s;\n}\n#pleihome-cfg .toggle-row.active-toggle { border-color: #eb3349; background: rgba(235,51,73,0.05); }\n#pleihome-cfg .toggle-info .toggle-title { font-size: 15px; font-weight: 600; color: #333; }\n#pleihome-cfg .toggle-info .toggle-desc { font-size: 12px; color: #888; margin-top: 2px; }\n#pleihome-cfg .toggle {\n  width: 48px; height: 26px; border-radius: 13px;\n  background: #ccc; cursor: pointer; position: relative;\n  transition: all 0.3s; flex-shrink: 0;\n}\n#pleihome-cfg .toggle.on { background: #eb3349; }\n#pleihome-cfg .toggle::after {\n  content: ''; position: absolute; top: 3px; left: 3px;\n  width: 20px; height: 20px; border-radius: 50%;\n  background: white; box-shadow: 0 2px 4px rgba(0,0,0,0.2);\n  transition: transform 0.3s;\n}\n#pleihome-cfg .toggle.on::after { transform: translateX(22px); }\n#pleihome-cfg \/* Section divider *\/\n.section-label {\n  font-size: 12px; font-weight: 700; letter-spacing: 0.8px;\n  text-transform: uppercase; color: #eb3349;\n  margin: 20px 0 10px; padding-bottom: 6px;\n  border-bottom: 2px solid rgba(235,51,73,0.2);\n}\n#pleihome-cfg \/* Remaining rooms badge *\/\n.rooms-remaining {\n  text-align: center; padding: 12px;\n  background: #f8f9ff; border-radius: 10px;\n  margin-bottom: 16px; font-size: 15px; color: #555;\n  border: 2px solid #e0e0e0; transition: all 0.3s;\n}\n#pleihome-cfg .rooms-remaining .num { font-size: 28px; font-weight: 700; color: #eb3349; display: block; }\n#pleihome-cfg .rooms-remaining.ok { border-color: #4caf50; background: #f1f8f1; }\n#pleihome-cfg .rooms-remaining.ok .num { color: #2e7d32; }\n#pleihome-cfg .rooms-remaining.over { border-color: #f44336; background: #fef5f5; }\n#pleihome-cfg .rooms-remaining.over .num { color: #c62828; }\n#pleihome-cfg \/* Help expandable box *\/\n.help-expandable {\n  border: 2px solid #e0e0e0; border-radius: 12px;\n  margin-bottom: 20px; overflow: hidden;\n}\n#pleihome-cfg .help-expandable-header {\n  display: flex; align-items: center; justify-content: space-between;\n  padding: 12px 16px; cursor: pointer;\n  background: #f8f9ff; font-size: 13px; font-weight: 600; color: #555;\n  transition: background 0.2s;\n}\n#pleihome-cfg .help-expandable-header:hover { background: #eef3ff; color: #333; }\n#pleihome-cfg .help-toggle { font-size: 12px; transition: transform 0.3s; }\n#pleihome-cfg .help-toggle.open { transform: rotate(180deg); }\n#pleihome-cfg .help-expandable-body {\n  display: none; padding: 16px; font-size: 13px;\n  color: #555; line-height: 1.6; border-top: 1px solid #e0e0e0;\n  background: white;\n}\n#pleihome-cfg .help-expandable-body.open { display: block; }\n#pleihome-cfg .help-types-grid {\n  display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));\n  gap: 10px; margin-top: 12px;\n}\n#pleihome-cfg .help-type {\n  background: #f8f9ff; border-radius: 10px; padding: 12px;\n  font-size: 12px; color: #444; line-height: 1.5;\n  border: 1px solid #e0e0e0;\n}\n#pleihome-cfg .help-type-icon { display: block; font-size: 22px; margin-bottom: 6px; }\n#pleihome-cfg .help-type strong { color: #222; display: block; margin-bottom: 4px; }\n#pleihome-cfg \/* Accumuli visual *\/\n.acc-visual-grid {\n  display: grid; grid-template-columns: repeat(3, 1fr);\n  gap: 10px; margin-bottom: 16px;\n}\n#pleihome-cfg .acc-visual-card {\n  border: 2px solid #e0e0e0; border-radius: 12px;\n  padding: 12px 10px; text-align: center;\n  background: #fafafa; font-size: 11px; color: #666; line-height: 1.5;\n}\n#pleihome-cfg .acc-visual-card .av-icon { font-size: 30px; margin-bottom: 6px; display: block; }\n#pleihome-cfg .acc-visual-card strong { display: block; color: #333; font-size: 12px; margin-bottom: 3px; }\n#pleihome-cfg \/* Buttons *\/\n.btn-row { display: flex; gap: 12px; margin-top: 28px; }\n#pleihome-cfg .btn {\n  flex: 1; padding: 14px 24px; border: none; border-radius: 50px;\n  font-size: 16px; font-weight: 600; cursor: pointer; transition: all 0.25s;\n}\n#pleihome-cfg .btn-primary { background: linear-gradient(135deg, #eb3349, #f45c43); color: white; box-shadow: 0 4px 14px rgba(235,51,73,0.35); }\n#pleihome-cfg .btn-primary:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(235,51,73,0.5); }\n#pleihome-cfg .btn-primary:disabled { opacity: 0.4; cursor: not-allowed; transform: none; }\n#pleihome-cfg .btn-secondary { background: white; color: #eb3349; border: 2px solid #eb3349; box-shadow: none; flex: 0 0 auto; padding: 14px 28px; }\n#pleihome-cfg .btn-secondary:hover { background: #fef5f6; }\n#pleihome-cfg \/* \u2500\u2500 Result \u2500\u2500 *\/\n.result-header { text-align: center; margin-bottom: 32px; }\n#pleihome-cfg .result-header .check { font-size: 64px; margin-bottom: 12px; display: block; }\n#pleihome-cfg .result-section { margin-bottom: 28px; }\n#pleihome-cfg .result-section-title {\n  font-size: 12px; font-weight: 700; letter-spacing: 0.8px;\n  text-transform: uppercase; color: #eb3349;\n  margin-bottom: 12px; padding-bottom: 6px;\n  border-bottom: 2px solid rgba(235,51,73,0.2);\n}\n#pleihome-cfg .component-table { width: 100%; border-collapse: collapse; }\n#pleihome-cfg .component-table th { text-align: left; font-size: 12px; font-weight: 700; color: #888; padding: 8px 10px; border-bottom: 1px solid #f0f0f0; }\n#pleihome-cfg .component-table td { padding: 10px; font-size: 14px; border-bottom: 1px solid #f7f7f7; vertical-align: middle; }\n#pleihome-cfg .component-table tr:last-child td { border-bottom: none; }\n#pleihome-cfg .td-qty { font-weight: 700; color: #eb3349; width: 48px; text-align: center; vertical-align: top; padding-top: 14px; }\n#pleihome-cfg .td-item { color: #222; display: flex; align-items: flex-start; gap: 10px; }\n#pleihome-cfg .td-item-info { flex: 1; }\n#pleihome-cfg .td-item-name { font-weight: 700; color: #222; font-size: 14px; line-height: 1.3; }\n#pleihome-cfg .td-item-code { font-size: 11px; color: #b0b0b0; font-family: 'Courier New', monospace; margin-top: 2px; letter-spacing: 0.3px; }\n#pleihome-cfg .td-item-desc { font-size: 12px; color: #666; line-height: 1.5; margin-top: 5px; padding-top: 5px; border-top: 1px solid #f0f0f0; }\n#pleihome-cfg .td-note { color: #888; font-size: 12px; vertical-align: top; padding-top: 14px; }\n#pleihome-cfg \/* Device thumbnail in result *\/\n.device-thumb {\n  width: 48px; height: 48px; border-radius: 10px;\n  object-fit: contain; background: #f5f5f5;\n  border: 1px solid #e0e0e0; padding: 4px;\n  flex-shrink: 0; margin-top: 2px;\n}\n#pleihome-cfg .device-thumb-placeholder {\n  width: 48px; height: 48px; border-radius: 10px;\n  background: #f5f5f5; border: 1px solid #e0e0e0;\n  display: flex; align-items: center; justify-content: center;\n  font-size: 22px; flex-shrink: 0; margin-top: 2px;\n}\n#pleihome-cfg \/* Device gallery in result *\/\n.device-gallery {\n  display: flex; flex-wrap: wrap; gap: 10px;\n  padding: 16px; background: #f8f9ff;\n  border-radius: 14px; margin-bottom: 8px;\n  border: 1.5px solid #e0e0e0;\n}\n#pleihome-cfg .gallery-item {\n  display: flex; flex-direction: column; align-items: center;\n  gap: 4px; text-align: center; min-width: 70px;\n}\n#pleihome-cfg .gallery-img-wrap {\n  width: 56px; height: 56px; border-radius: 10px;\n  background: white; border: 1.5px solid #e0e0e0;\n  display: flex; align-items: center; justify-content: center;\n  overflow: hidden;\n}\n#pleihome-cfg .gallery-img-wrap img { width: 100%; height: 100%; object-fit: contain; padding: 4px; }\n#pleihome-cfg .gallery-img-wrap .gallery-emoji { font-size: 26px; }\n#pleihome-cfg .gallery-label { font-size: 10px; color: #666; line-height: 1.3; max-width: 70px; }\n#pleihome-cfg .badge-addon { display: inline-block; padding: 4px 10px; background: #f0f7ff; border: 1px solid #90caf9; border-radius: 20px; font-size: 13px; color: #1565c0; font-weight: 600; margin: 3px 4px 3px 0; }\n#pleihome-cfg .note-item { display: flex; gap: 8px; align-items: flex-start; padding: 8px 0; font-size: 13px; color: #555; border-bottom: 1px solid #f7f7f7; }\n#pleihome-cfg .note-item:last-child { border-bottom: none; }\n#pleihome-cfg .note-item::before { content: '\u2192'; color: #eb3349; font-weight: 700; flex-shrink: 0; }\n#pleihome-cfg .result-summary-box {\n  background: linear-gradient(135deg, rgba(235,51,73,0.06), rgba(244,92,67,0.06));\n  border: 2px solid rgba(235,51,73,0.25);\n  border-radius: 16px; padding: 20px 24px;\n  display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n  gap: 16px; margin-bottom: 28px;\n}\n#pleihome-cfg .summary-stat { text-align: center; }\n#pleihome-cfg .summary-stat .num { font-size: 32px; font-weight: 700; color: #eb3349; }\n#pleihome-cfg .summary-stat .label { font-size: 11px; color: #888; margin-top: 2px; }\n#pleihome-cfg .result-actions { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; margin-top: 32px; }\n#pleihome-cfg .print-btn { background: white; border: 2px solid #4caf50; color: #2e7d32; padding: 12px 28px; border-radius: 50px; font-size: 15px; font-weight: 600; cursor: pointer; transition: all 0.25s; }\n#pleihome-cfg .print-btn:hover { background: #e8f5e9; }\n#pleihome-cfg .restart-btn { background: white; border: 2px solid #eb3349; color: #eb3349; padding: 12px 28px; border-radius: 50px; font-size: 15px; font-weight: 600; cursor: pointer; transition: all 0.25s; }\n#pleihome-cfg .restart-btn:hover { background: #fef5f6; }\n#pleihome-cfg \/* \u2500\u2500 Kit cards \u2500\u2500 *\/\n.kit-card {\n  border: 2.5px solid #eb3349; border-radius: 16px;\n  margin-bottom: 16px; overflow: hidden;\n  box-shadow: 0 2px 12px rgba(235,51,73,0.10);\n}\n#pleihome-cfg \/* Colori per tipo di kit *\/\n.kit-card-base { border-color: #eb3349; box-shadow: 0 2px 14px rgba(235,51,73,0.15); }\n#pleihome-cfg .kit-card-ext-radiatori { border-color: #ff7043; box-shadow: 0 2px 12px rgba(255,112,67,0.13); }\n#pleihome-cfg .kit-card-ext-radiante { border-color: #66bb6a; box-shadow: 0 2px 12px rgba(102,187,106,0.13); }\n#pleihome-cfg .kit-card-ext-fancoil { border-color: #42a5f5; box-shadow: 0 2px 12px rgba(66,165,245,0.13); }\n#pleihome-cfg .kit-card-header {\n  display: flex; align-items: flex-start; gap: 16px;\n  padding: 18px 20px; border-bottom: 1.5px solid rgba(235,51,73,0.18);\n  background: linear-gradient(135deg, rgba(235,51,73,0.06), rgba(244,92,67,0.04));\n}\n#pleihome-cfg .kit-card-ext-radiatori .kit-card-header { background: linear-gradient(135deg,rgba(255,112,67,0.08),rgba(255,87,34,0.04)); border-bottom-color: rgba(255,112,67,0.25); }\n#pleihome-cfg .kit-card-ext-radiante  .kit-card-header { background: linear-gradient(135deg,rgba(102,187,106,0.09),rgba(76,175,80,0.04)); border-bottom-color: rgba(102,187,106,0.3); }\n#pleihome-cfg .kit-card-ext-fancoil   .kit-card-header { background: linear-gradient(135deg,rgba(66,165,245,0.10),rgba(33,150,243,0.05)); border-bottom-color: rgba(66,165,245,0.3); }\n#pleihome-cfg .kit-qty-badge {\n  font-size: 30px; font-weight: 800; color: #eb3349;\n  min-width: 52px; text-align: center; padding-top: 6px; line-height: 1;\n}\n#pleihome-cfg .kit-card-ext-radiatori .kit-qty-badge { color: #bf360c; }\n#pleihome-cfg .kit-card-ext-radiante  .kit-qty-badge { color: #2e7d32; }\n#pleihome-cfg .kit-card-ext-fancoil   .kit-qty-badge { color: #0d47a1; }\n#pleihome-cfg .kit-header-info { flex: 1; }\n#pleihome-cfg .kit-cod { font-size: 11px; font-family: 'Courier New', monospace; color: #aaa; margin-bottom: 3px; letter-spacing: 0.5px; }\n#pleihome-cfg .kit-name { font-size: 17px; font-weight: 800; color: #222; margin-bottom: 4px; }\n#pleihome-cfg .kit-desc { font-size: 13px; color: #666; line-height: 1.4; }\n#pleihome-cfg .kit-contents { padding: 14px 20px 18px; background: white; }\n#pleihome-cfg .kit-includes-title {\n  font-size: 11px; font-weight: 700; color: #eb3349;\n  letter-spacing: 0.8px; text-transform: uppercase;\n  margin-bottom: 10px; padding-bottom: 4px;\n  border-bottom: 1px solid rgba(235,51,73,0.15);\n}\n#pleihome-cfg .kit-card-ext-radiatori .kit-includes-title { color: #bf360c; border-bottom-color: rgba(255,112,67,0.3); }\n#pleihome-cfg .kit-card-ext-radiante  .kit-includes-title { color: #2e7d32; border-bottom-color: rgba(102,187,106,0.4); }\n#pleihome-cfg .kit-card-ext-fancoil   .kit-includes-title { color: #0d47a1; border-bottom-color: rgba(66,165,245,0.4); }\n#pleihome-cfg .kit-items-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 4px 16px; }\n#pleihome-cfg .kit-item { display: flex; align-items: flex-start; gap: 8px; padding: 8px 0; font-size: 13px; color: #333; border-bottom: 1px solid #f7f7f7; }\n#pleihome-cfg .kit-item:last-child { border-bottom: none; }\n#pleihome-cfg .kit-item-qty { font-weight: 700; color: #eb3349; min-width: 26px; font-size: 13px; flex-shrink: 0; padding-top: 10px; }\n#pleihome-cfg .kit-item-thumb { width: 40px; height: 40px; object-fit: contain; border-radius: 6px; background: #f5f5f5; padding: 3px; flex-shrink: 0; }\n#pleihome-cfg .kit-item-thumb-ph { width: 40px; height: 40px; flex-shrink: 0; display: flex; align-items: center; justify-content: center; font-size: 20px; background: #f5f5f5; border-radius: 6px; }\n#pleihome-cfg .kit-card-ext-radiatori .kit-item-qty { color: #bf360c; }\n#pleihome-cfg .kit-card-ext-radiante  .kit-item-qty { color: #2e7d32; }\n#pleihome-cfg .kit-card-ext-fancoil   .kit-item-qty { color: #0d47a1; }\n#pleihome-cfg .kit-item-body { display: flex; flex-direction: column; gap: 2px; flex: 1; }\n#pleihome-cfg .kit-item-name { font-weight: 500; }\n#pleihome-cfg .kit-item-cod { font-size: 10px; color: #aaa; font-family: 'Courier New', monospace; }\n#pleihome-cfg .kit-item-desc { font-size: 11px; color: #888; line-height: 1.4; margin-top: 2px; }\n#pleihome-cfg \/* BOM table *\/\n.bom-table { width: 100%; border-collapse: collapse; font-size: 13px; }\n#pleihome-cfg .bom-table th { text-align: left; padding: 7px 10px; background: #f8f8f8; border-bottom: 2px solid #e0e0e0; font-size: 12px; color: #888; text-transform: uppercase; letter-spacing: 0.04em; }\n#pleihome-cfg .bom-table td { padding: 8px 10px; border-bottom: 1px solid #f3f3f3; }\n#pleihome-cfg .bom-table tr.bom-kit-row { background: #fff9f9; font-weight: 600; }\n#pleihome-cfg .bom-table tr.bom-kit-row td { border-bottom: 1px solid #fce4e4; }\n#pleihome-cfg .bom-qty { font-weight: 700; width: 50px; white-space: nowrap; }\n#pleihome-cfg .bom-cod { font-family: 'Courier New', monospace; font-size: 12px; color: #666; width: 130px; white-space: nowrap; }\n#pleihome-cfg .hidden { display: none !important; }\n#pleihome-cfg .step-block { display: none; }\n#pleihome-cfg .step-block.active { display: block; animation: fadeIn 0.35s ease-in; }\n\n@media (max-width: 520px) {\n#pleihome-cfg .acc-visual-grid { grid-template-columns: 1fr; }\n#pleihome-cfg .cards.cols-4 { grid-template-columns: repeat(2, 1fr); }\n#pleihome-cfg .help-types-grid { grid-template-columns: 1fr; }\n#pleihome-cfg .container { padding: 24px 18px; }\n}\n\n@media print {\n#pleihome-cfg body { background: white; padding: 0; }\n#pleihome-cfg .logo-header, #pleihome-cfg .progress-wrap, #pleihome-cfg .step-counter, #pleihome-cfg .btn-row, #pleihome-cfg .result-actions { display: none !important; }\n#pleihome-cfg .container { box-shadow: none; max-width: 100%; padding: 24px; }\n#pleihome-cfg .step-block { display: none !important; }\n#pleihome-cfg #result-page { display: block !important; }\n#pleihome-cfg .device-gallery { break-inside: avoid; }\n#pleihome-cfg .component-table tr { break-inside: avoid; }\n#pleihome-cfg .td-item-desc { color: #444; }\n#pleihome-cfg .td-item-code { color: #888; }\n}\n  <\/style>\n\n<div id=\"pleihome-cfg\">\n<div class=\"logo-header\">\n  <h1>PleIHome<\/h1>\n  <p>Konfigurator f\u00fcr Kundenpakete<\/p>\n<\/div>\n<div class=\"progress-wrap\"><div class=\"progress-bar\" id=\"progress-bar\" style=\"width:14%\"><\/div><\/div>\n<div class=\"step-counter\" id=\"step-counter\">Schritt 1 von 7<\/div>\n\n<div class=\"container\" id=\"wizard-container\">\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550 STEP 1 \u2014 Cliente \u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <div class=\"step-block active\" id=\"step-1\">\n    <h2>\ud83d\udc64 Kundendaten<\/h2>\n    <p class=\"step-subtitle\">Geben Sie die Kundendaten ein, um den Abschlussbericht individuell anzupassen.<\/p>\n\n    <div class=\"info-banner\">\n      <span class=\"info-banner-icon\">\u2139\ufe0f<\/span>\n      <div>Dieser Konfigurator f\u00fchrt Sie Schritt f\u00fcr Schritt durch die Auswahl der f\u00fcr Ihre Anlage erforderlichen Smart-Komponenten. Am Ende erhalten Sie eine <strong>genaue Liste der<\/strong> zu installierenden <strong>Ger\u00e4te<\/strong>. <\/div>\n    <\/div>\n\n    <!-- Diagramma sistema -->\n    <div class=\"system-flow\">\n      <div class=\"flow-step\">\n        <span class=\"flow-icon\">\ud83d\udd25<\/span>\n Generatoren\n      <\/div>\n      <span class=\"flow-arrow\">\u2192<\/span>\n      <div class=\"flow-step\">\n        <span class=\"flow-icon\">\ud83d\udee2\ufe0f<\/span>\n Stauseen\n      <\/div>\n      <span class=\"flow-arrow\">\u2192<\/span>\n      <div class=\"flow-step\">\n        <span class=\"flow-icon\">\ud83d\udd04<\/span>\n Vertrieb\n      <\/div>\n      <span class=\"flow-arrow\">\u2192<\/span>\n      <div class=\"flow-step\">\n        <span class=\"flow-icon\">\ud83c\udfe0<\/span> \u201e\n \u201c \u2013 Zimmer\n      <\/div>\n    <\/div>\n\n    <div class=\"field-group\">\n      <label class=\"field-label\">Vor- und Nachname \/ Firmenname<\/label>\n      <input class=\"field-input\" id=\"f-nome\" type=\"text\" placeholder=\"Beispiel: Mario Rossi\" autocomplete=\"off\">\n    <\/div>\n    <div class=\"field-group\">\n      <label class=\"field-label\">E-Mail<\/label>\n      <input class=\"field-input\" id=\"f-email\" type=\"email\" placeholder=\"Beispiel: mario.rossi@email.com\" autocomplete=\"off\">\n    <\/div>\n    <div class=\"field-group\">\n      <label class=\"field-label\">Adresse \/ Stadt<\/label>\n      <input class=\"field-input\" id=\"f-citta\" type=\"text\" placeholder=\"Beispiel: Via Roma 1, Turin\" autocomplete=\"off\">\n    <\/div>\n\n    <div class=\"btn-row\">\n      <button class=\"btn btn-primary\" onclick=\"goTo(2)\">Weiter \u2192<\/button>\n    <\/div>\n  <\/div>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550 STEP 2 \u2014 Generatori \u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <div class=\"step-block\" id=\"step-2\">\n    <h2>\ud83d\udd25 W\u00e4rmeerzeuger<\/h2>\n    <p class=\"step-subtitle\">W\u00e4hlen Sie alle in der Anlage vorhandenen Generatoren aus. (Mehrfachauswahl) <\/p>\n\n    <div class=\"info-banner\">\n      <span class=\"info-banner-icon\">\ud83d\udca1<\/span>\n      <div><strong>Heizger\u00e4te<\/strong> sind Vorrichtungen, die W\u00e4rme zur Beheizung des Hauses und zur Warmwasserbereitung erzeugen. W\u00e4hlen Sie alle installierten Ger\u00e4te aus, auch wenn diese nicht das ganze Jahr \u00fcber genutzt werden. <\/div>\n    <\/div>\n\n    <div class=\"cards cols-2\">\n      <div class=\"card multi-card\" data-val=\"pdc\" onclick=\"toggleMultiCard(this, 'gen')\">\n        <div class=\"gen-icon-wrap pdc\">\u2668\ufe0f<\/div>\n        <div class=\"card-title\">W\u00e4rmepumpe<\/div>\n        <div class=\"card-desc\">Es erzeugt W\u00e4rme (und K\u00e4lte) unter Nutzung der Energie aus der Luft oder dem Erdreich. Sehr effizient. <\/div>\n      <\/div>\n      <div class=\"card multi-card\" data-val=\"caldaia\" onclick=\"toggleMultiCard(this, 'gen')\">\n        <div class=\"gen-icon-wrap caldaia\">\ud83d\udd25<\/div>\n        <div class=\"card-title\">Heizkessel<\/div>\n        <div class=\"card-desc\">Es verbrennt Erdgas, Heiz\u00f6l oder Fl\u00fcssiggas, um Warmwasser f\u00fcr Heizung und Sanit\u00e4rzwecke zu erzeugen.<\/div>\n      <\/div>\n      <div class=\"card multi-card\" data-val=\"biomassa\" onclick=\"toggleMultiCard(this, 'gen')\">\n        <div class=\"gen-icon-wrap biomassa\">\ud83e\udeb5<\/div>\n        <div class=\"card-title\">Biomasse<\/div>\n        <div class=\"card-desc\">Heizkessel, Ofen oder Kaminofen mit Pellet-, Holz- oder Hackschnitzelbetrieb.<\/div>\n      <\/div>\n      <div class=\"card multi-card\" data-val=\"solare_termico\" onclick=\"toggleMultiCard(this, 'gen')\">\n        <div class=\"gen-icon-wrap solare\">\u2600\ufe0f<\/div>\n        <div class=\"card-title\">Solarthermie<\/div>\n        <div class=\"card-desc\">Sonnenkollektoren zur Erw\u00e4rmung des Brauchwassers, mit Resol-Regler.<\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"btn-row\">\n      <button class=\"btn btn-secondary\" onclick=\"goTo(1)\">\u2190 Zur\u00fcck<\/button>\n      <button class=\"btn btn-primary\" id=\"btn-2\" onclick=\"goTo(3)\" disabled=\"disabled\">Weiter \u2192<\/button>\n    <\/div>\n  <\/div>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550 STEP 3 \u2014 ACS e Accumuli \u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <div class=\"step-block\" id=\"step-3\">\n    <h2>\ud83d\udebf Speicher und Tanks<\/h2>\n    <p class=\"step-subtitle\">Sind Warmwasserspeicher oder Warmwasserbereiter f\u00fcr das Brauchwasser vorhanden?<\/p>\n\n    <div class=\"info-banner\">\n      <span class=\"info-banner-icon\">\ud83d\udca1<\/span>\n      <div>Ein <strong>Speicher<\/strong> ist ein isolierter Beh\u00e4lter, in dem Warmwasser gespeichert wird. Er dient dazu, den Erzeuger vom Verbrauch zu entkoppeln: Der Erzeuger erw\u00e4rmt den Speicher, wenn es sinnvoll ist, und der Speicher gibt die W\u00e4rme ab, wenn sie ben\u00f6tigt wird. <\/div>\n    <\/div>\n\n    <div class=\"acc-visual-grid\">\n      <div class=\"acc-visual-card\">\n        <span class=\"av-icon\">\ud83d\udee2\ufe0f<\/span>\n <strong>       Nur f\u00fcr technische Zwecke<\/strong>\n Pufferspeicher f\u00fcr die Heizung. Enth\u00e4lt kein Trinkwasser. \n      <\/div>\n      <div class=\"acc-visual-card\">\n        <span class=\"av-icon\">\ud83d\udebf<\/span>\n <strong>       Nur ACS<\/strong>\n Warmwasserbereiter f\u00fcr Brauchwasser (Dusche, Wasserh\u00e4hne).\n      <\/div>\n      <div class=\"acc-visual-card\">\n        <span class=\"av-icon\">\u267b\ufe0f<\/span>\n <strong>       Kombiger\u00e4t<\/strong> \u201e\n \u201c \u2013 Ein einziger Speicher mit zwei Funktionen: Heizung + Brauchwasser.\n      <\/div>\n    <\/div>\n\n    <div class=\"toggle-row\" id=\"toggle-accumuli\" onclick=\"toggleSwitch('accumuli')\">\n      <div class=\"toggle-info\">\n        <div class=\"toggle-title\">\ud83d\udee2\ufe0f Es gibt Warmwasserspeicher \/ Boiler<\/div>\n        <div class=\"toggle-desc\">Technische Speichertanks oder Warmwasserspeicher<\/div>\n      <\/div>\n      <div class=\"toggle\" id=\"sw-accumuli\"><\/div>\n    <\/div>\n\n    <div id=\"accumuli-detail\" class=\"hidden\" style=\"margin-top:20px;\">\n      <div class=\"section-label\">Wie viele Best\u00e4nde pro Typ?<\/div>\n\n      <div class=\"qty-row\">\n        <div>\n          <div class=\"qty-label\">\ud83d\udee2\ufe0f Nur f\u00fcr Fachpersonal<\/div>\n          <div class=\"qty-sublabel\">Hydraulischer Puffer \u2013 nur Heizung<\/div>\n        <\/div>\n        <div class=\"qty-controls\">\n          <button class=\"qty-btn\" onclick=\"changeQty('q-acc-tecnico', -1)\">\u2212<\/button>\n          <div class=\"qty-value\" id=\"q-acc-tecnico\">0<\/div>\n          <button class=\"qty-btn\" onclick=\"changeQty('q-acc-tecnico', 1)\">+<\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"qty-row\">\n        <div>\n          <div class=\"qty-label\">\ud83d\udebf Nur ACS<\/div>\n          <div class=\"qty-sublabel\">Spezieller Warmwasserbereiter<\/div>\n        <\/div>\n        <div class=\"qty-controls\">\n          <button class=\"qty-btn\" onclick=\"changeQty('q-acc-acs', -1)\">\u2212<\/button>\n          <div class=\"qty-value\" id=\"q-acc-acs\">0<\/div>\n          <button class=\"qty-btn\" onclick=\"changeQty('q-acc-acs', 1)\">+<\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"qty-row\">\n        <div>\n          <div class=\"qty-label\">\u267b\ufe0f ACS + Techniker (gemischt)<\/div>\n          <div class=\"qty-sublabel\">Kombinierter Speicher f\u00fcr Heizung und Warmwasserbereitung<\/div>\n        <\/div>\n        <div class=\"qty-controls\">\n          <button class=\"qty-btn\" onclick=\"changeQty('q-acc-misto', -1)\">\u2212<\/button>\n          <div class=\"qty-value\" id=\"q-acc-misto\">0<\/div>\n          <button class=\"qty-btn\" onclick=\"changeQty('q-acc-misto', 1)\">+<\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"btn-row\">\n      <button class=\"btn btn-secondary\" onclick=\"goTo(2)\">\u2190 Zur\u00fcck<\/button>\n      <button class=\"btn btn-primary\" onclick=\"goTo(4)\">Weiter \u2192<\/button>\n    <\/div>\n  <\/div>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550 STEP 4 \u2014 Emissione \u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <div class=\"step-block\" id=\"step-4\">\n    <h2>\ud83c\udfe0 Wie wird die W\u00e4rme verteilt?<\/h2>\n    <p class=\"step-subtitle\">W\u00e4hlen Sie alle im Haus vorhandenen Systeme aus. (Mehrfachauswahl) <\/p>\n\n    <div class=\"info-banner\">\n      <span class=\"info-banner-icon\">\ud83d\udca1<\/span>\n      <div>Dies sind die <strong>Heizk\u00f6rper,<\/strong> die die W\u00e4rme in den R\u00e4umen verteilen. F\u00fcr jeden Typ sind unterschiedliche intelligente Ger\u00e4te erforderlich \u2013 die Abbildungen auf den Karten zeigen die Komponente, die installiert wird. <\/div>\n    <\/div>\n\n    <div class=\"cards cols-2\">\n      <div class=\"card multi-card\" data-val=\"radiatori\" onclick=\"toggleMultiCard(this, 'emissione')\">\n        <div class=\"card-img-wrap\">\n          <img decoding=\"async\" src=\"https:\/\/pleion.it\/wp-content\/uploads\/2026\/07\/trv_main.png\" alt=\"TRV-Ventil f\u00fcr Heizk\u00f6rper\">\n        <\/div>\n        <div class=\"card-title\">Heizk\u00f6rper<\/div>\n        <div class=\"card-desc\">Herk\u00f6mmliche Heizk\u00f6rper in jedem Zimmer<\/div>\n        <div class=\"card-device-badge\">Zigbee-TRV-Ventil<\/div>\n      <\/div>\n      <div class=\"card multi-card\" data-val=\"pannelli_radianti\" onclick=\"toggleMultiCard(this, 'emissione')\">\n        <div class=\"card-img-wrap\">\n          <img decoding=\"async\" src=\"https:\/\/pleion.it\/wp-content\/uploads\/2026\/07\/switch.jpg\" alt=\"Zonenschalter f\u00fcr Strahlungsheizungen\">\n        <\/div>\n        <div class=\"card-title\">Strahlungsheizpaneele<\/div>\n        <div class=\"card-desc\">Zonenweise Fu\u00dfboden- oder Deckenheizung<\/div>\n        <div class=\"card-device-badge\">Zigbee-Zonen-Aktuator<\/div>\n      <\/div>\n      <div class=\"card multi-card\" data-val=\"fancoil\" onclick=\"toggleMultiCard(this, 'emissione')\">\n        <div class=\"card-img-wrap\">\n          <img decoding=\"async\" src=\"https:\/\/pleion.it\/wp-content\/uploads\/2026\/07\/l1wz.jpg\" alt=\"0\u201310-V-Regler f\u00fcr Gebl\u00e4sekonvektoren\">\n        <\/div>\n        <div class=\"card-title\">Gebl\u00e4sekonvektor<\/div>\n        <div class=\"card-desc\">Gebl\u00e4sekonvektoren: W\u00e4rme im Winter, K\u00fchle im Sommer<\/div>\n        <div class=\"card-device-badge\">Thermostat + 0\u201310-V-Regler<\/div>\n      <\/div>\n      <div class=\"card multi-card\" data-val=\"split_ir\" onclick=\"toggleMultiCard(this, 'emissione')\">\n        <div class=\"card-img-wrap\">\n          <img decoding=\"async\" src=\"https:\/\/pleion.it\/wp-content\/uploads\/2026\/07\/ir_blaster_moes1.jpg\" alt=\"IR-Blaster f\u00fcr Split-Systeme\">\n        <\/div>\n        <div class=\"card-title\">Split-Klimaanlagen<\/div>\n        <div class=\"card-desc\">Per Infrarot gesteuerte Klimaanlagen<\/div>\n        <div class=\"card-device-badge\">IR-Blaster Zigbee<\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"btn-row\">\n      <button class=\"btn btn-secondary\" onclick=\"goTo(3)\">\u2190 Zur\u00fcck<\/button>\n      <button class=\"btn btn-primary\" id=\"btn-4\" onclick=\"goTo(5)\" disabled=\"disabled\">Weiter \u2192<\/button>\n    <\/div>\n  <\/div>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550 STEP 5 \u2014 Gruppi di Spinta \u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <div class=\"step-block\" id=\"step-5\">\n    <h2>\ud83d\udd04 Antriebsgruppen<\/h2>\n    <p class=\"step-subtitle\">Wie viele Hydraulikumw\u00e4lzpumpen verf\u00fcgt die Anlage und um welchen Typ handelt es sich? Geben Sie bitte \u201e0\u201c an, falls keine vorhanden sind oder Ihnen diese nicht bekannt sind. <\/p>\n\n    <div class=\"help-expandable\">\n      <div class=\"help-expandable-header\" onclick=\"toggleHelp(this)\">\n        <span>\u2753 Was ist eine \u201eSpearhead-Gruppe\u201c?<\/span>\n        <span class=\"help-toggle\">\u25bc<\/span>\n      <\/div>\n      <div class=\"help-expandable-body\">\n        <p>Eine <strong>F\u00f6rdergruppe<\/strong> besteht <strong>aus<\/strong> der Pumpe und den Ventilen, die das Warmwasser vom W\u00e4rmeerzeuger zu den Heizk\u00f6rpern (Heizk\u00f6rper, Gebl\u00e4sekonvektoren, Heizpaneele) bef\u00f6rdern. Jeder einzelne Kreislauf verf\u00fcgt \u00fcber eine eigene F\u00f6rdergruppe. <\/p>\n        <div class=\"help-types-grid\">\n          <div class=\"help-type\">\n            <span class=\"help-type-icon\">\u26a1<\/span>\n <strong>           Direktbetrieb<\/strong>: Die Pumpe schaltet sich einfach ein. Die Temperatur wird nicht geregelt. Typisch f\u00fcr eine ganze Etage oder einen einzelnen Bereich.  \n          <\/div>\n          <div class=\"help-type\">\n            <span class=\"help-type-icon\">\ud83c\udf21\ufe0f<\/span>\n <strong>           Thermostatventil<\/strong>: Es verf\u00fcgt \u00fcber ein Zonenventil, sodass Wasser nur dann durchflie\u00dft, wenn es ben\u00f6tigt wird. \u00dcblich bei Mehrzonen-Verteilern (z. B. Fu\u00dfbodenheizung pro Raum). \n          <\/div>\n          <div class=\"help-type\">\n            <span class=\"help-type-icon\">\ud83d\udd04<\/span>\n <strong>           3-Wege-Klimatisierung: Mischt<\/strong>warmes und kaltes Wasser mithilfe eines motorisierten 3-Wege-Ventils, um die Vorlauftemperatur zu regeln.\n          <\/div>\n          <div class=\"help-type\">\n            <span class=\"help-type-icon\">\ud83d\udcca<\/span>\n <strong>           Klimasteuerung 0\u201310 V \u2013 \u00c4hnlich wie<\/strong>die 3-Wege-Steuerung, jedoch mit einem elektronischen 0\u201310-V-Signal. Hierf\u00fcr ist ein spezieller Regler erforderlich. \n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"qty-row\">\n      <div>\n        <div class=\"qty-label\">\u26a1 Live-\u00dcbertragungen<\/div>\n        <div class=\"qty-sublabel\">Pumpe EIN\/AUS ohne Temperaturregelung<\/div>\n      <\/div>\n      <div class=\"qty-controls\">\n        <button class=\"qty-btn\" onclick=\"changeQty('q-diretto', -1)\">\u2212<\/button>\n        <div class=\"qty-value\" id=\"q-diretto\">0<\/div>\n        <button class=\"qty-btn\" onclick=\"changeQty('q-diretto', 1)\">+<\/button>\n      <\/div>\n    <\/div>\n\n    <div class=\"qty-row\">\n      <div>\n        <div class=\"qty-label\">\ud83c\udf21\ufe0f Thermostatventile<\/div>\n        <div class=\"qty-sublabel\">Mit Zonenventil oder Zonenverteiler<\/div>\n      <\/div>\n      <div class=\"qty-controls\">\n        <button class=\"qty-btn\" onclick=\"changeQty('q-termostatic', -1)\">\u2212<\/button>\n        <div class=\"qty-value\" id=\"q-termostatic\">0<\/div>\n        <button class=\"qty-btn\" onclick=\"changeQty('q-termostatic', 1)\">+<\/button>\n      <\/div>\n    <\/div>\n\n    <div class=\"qty-row\">\n      <div>\n        <div class=\"qty-label\">\ud83d\udd04 Klimaanlagen \u2013 3-Wege-Ventil<\/div>\n        <div class=\"qty-sublabel\">Mischung mit motorbetriebenem 3-Wege-Ventil<\/div>\n      <\/div>\n      <div class=\"qty-controls\">\n        <button class=\"qty-btn\" onclick=\"changeQty('q-3vie', -1)\">\u2212<\/button>\n        <div class=\"qty-value\" id=\"q-3vie\">0<\/div>\n        <button class=\"qty-btn\" onclick=\"changeQty('q-3vie', 1)\">+<\/button>\n      <\/div>\n    <\/div>\n\n    <div class=\"qty-row\">\n      <div>\n        <div class=\"qty-label\">\ud83d\udcca Klimasteuerung \u2014 0\u201310 V<\/div>\n        <div class=\"qty-sublabel\">Stufenlose Regelung \u00fcber ein 0\u201310-V-Signal<\/div>\n      <\/div>\n      <div class=\"qty-controls\">\n        <button class=\"qty-btn\" onclick=\"changeQty('q-0-10v', -1)\">\u2212<\/button>\n        <div class=\"qty-value\" id=\"q-0-10v\">0<\/div>\n        <button class=\"qty-btn\" onclick=\"changeQty('q-0-10v', 1)\">+<\/button>\n      <\/div>\n    <\/div>\n\n    <div class=\"btn-row\">\n      <button class=\"btn btn-secondary\" onclick=\"goTo(4)\">\u2190 Zur\u00fcck<\/button>\n      <button class=\"btn btn-primary\" onclick=\"goTo(6)\">Weiter \u2192<\/button>\n    <\/div>\n  <\/div>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550 STEP 6 \u2014 Raffreddamento \u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <div class=\"step-block\" id=\"step-6\">\n    <h2>\u2744\ufe0f K\u00fchlung und Luftfeuchtigkeit<\/h2>\n    <p class=\"step-subtitle\">Soll das System auch die K\u00fchlung im Sommer oder die Entfeuchtung \u00fcbernehmen?<\/p>\n\n    <div class=\"info-banner\">\n      <span class=\"info-banner-icon\">\ud83d\udca1<\/span>\n      <div>Wenn Sie eine <strong>W\u00e4rmepumpe<\/strong> besitzen, kann diese im Sommer h\u00e4ufig im Umkehrbetrieb laufen und mit derselben Hydraulikanlage K\u00e4lte erzeugen. Aktivieren Sie diese Option nur, wenn Sie die Steuerung \u00fcber PleIHome vornehmen m\u00f6chten. <\/div>\n    <\/div>\n\n    <div class=\"toggle-row\" id=\"toggle-cooling\" onclick=\"toggleSwitch('cooling')\">\n      <div class=\"toggle-info\">\n        <div class=\"toggle-title\">\u2744\ufe0f K\u00fchlung im Sommer<\/div>\n        <div class=\"toggle-desc\">Betrieb der Anlage im K\u00fchlmodus w\u00e4hrend des Sommers<\/div>\n      <\/div>\n      <div class=\"toggle\" id=\"sw-cooling\"><\/div>\n    <\/div>\n\n    <div id=\"cooling-method-section\" class=\"hidden\" style=\"margin-top:4px; margin-bottom:16px;\">\n      <div class=\"section-label\">Wie wird K\u00e4lte erzeugt?<\/div>\n      <div class=\"cards cols-2\">\n        <div class=\"card multi-card\" data-val=\"pdc_inversione\" onclick=\"toggleMultiCard(this, 'cooling')\">\n          <span class=\"card-icon\">\u2668\ufe0f<\/span>\n          <div class=\"card-title\">PDC-Umkehrung<\/div>\n          <div class=\"card-desc\">Die W\u00e4rmepumpe wechselt den Betriebsmodus \u2013 dieselbe Anlage, entgegengesetzte Jahreszeit<\/div>\n        <\/div>\n        <div class=\"card multi-card\" data-val=\"fancoil_freddo\" onclick=\"toggleMultiCard(this, 'cooling')\">\n          <span class=\"card-icon\">\ud83d\udca8<\/span>\n          <div class=\"card-title\">K\u00fchl-Gebl\u00e4sekonvektor<\/div>\n          <div class=\"card-desc\">Die Gebl\u00e4sekonvektoren blasen kalte Luft aus<\/div>\n        <\/div>\n        <div class=\"card multi-card\" data-val=\"radiante_freddo\" onclick=\"toggleMultiCard(this, 'cooling')\">\n          <span class=\"card-icon\">\ud83c\udf21\ufe0f<\/span>\n          <div class=\"card-title\">Strahlende K\u00e4lte<\/div>\n          <div class=\"card-desc\">K\u00fchler Boden oder k\u00fchle Decke \u2013 Entfeuchtung erforderlich<\/div>\n        <\/div>\n        <div class=\"card multi-card\" data-val=\"split_freddo\" onclick=\"toggleMultiCard(this, 'cooling')\">\n          <span class=\"card-icon\">\ud83c\udf00<\/span>\n          <div class=\"card-title\">Autonome Split-Systeme<\/div>\n          <div class=\"card-desc\">Vom Wasserversorgungssystem unabh\u00e4ngige Klimaanlagen<\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"toggle-row\" id=\"toggle-deum\" onclick=\"toggleSwitch('deum')\">\n      <div class=\"toggle-info\">\n        <div class=\"toggle-title\">\ud83d\udca7 Luftentfeuchter<\/div>\n        <div class=\"toggle-desc\">Automatische Steuerung eines eigenst\u00e4ndigen Luftentfeuchters<\/div>\n      <\/div>\n      <div class=\"toggle\" id=\"sw-deum\"><\/div>\n    <\/div>\n\n    <div id=\"deum-conn-section\" class=\"hidden\" style=\"margin-top:4px;\">\n      <div class=\"qty-row\" style=\"margin-bottom:12px;\">\n        <div>\n          <div class=\"qty-label\">Wie viele Luftentfeuchter?<\/div>\n        <\/div>\n        <div class=\"qty-controls\">\n          <button class=\"qty-btn\" onclick=\"changeQty('q-deum', -1)\">\u2212<\/button>\n          <div class=\"qty-value\" id=\"q-deum\">1<\/div>\n          <button class=\"qty-btn\" onclick=\"changeQty('q-deum', 1)\">+<\/button>\n        <\/div>\n      <\/div>\n      <div class=\"section-label\">Wie ist der Luftentfeuchter hydraulisch angeschlossen?<\/div>\n      <div class=\"cards\">\n        <div class=\"card multi-card single-in-group\" data-val=\"indipendente\" onclick=\"selectSingle(this, 'deum-conn')\">\n          <span class=\"card-icon\">\ud83d\udd0c<\/span>\n          <div class=\"card-title\">Spezielle Gruppe<\/div>\n          <div class=\"card-desc\">Es verf\u00fcgt \u00fcber eine eigene Pumpe<\/div>\n        <\/div>\n        <div class=\"card multi-card single-in-group\" data-val=\"condiviso\" onclick=\"selectSingle(this, 'deum-conn')\">\n          <span class=\"card-icon\">\ud83d\udd17<\/span>\n          <div class=\"card-title\">Geteilt<\/div>\n          <div class=\"card-desc\">Verwenden Sie dieselbe Umw\u00e4lzpumpe wie f\u00fcr die Fu\u00dfbodenheizung<\/div>\n        <\/div>\n        <div class=\"card multi-card single-in-group\" data-val=\"pdc_diretta\" onclick=\"selectSingle(this, 'deum-conn')\">\n          <span class=\"card-icon\">\u26a1<\/span>\n          <div class=\"card-title\">PDC live<\/div>\n          <div class=\"card-desc\">Direkt an die W\u00e4rmepumpe angeschlossen<\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"btn-row\">\n      <button class=\"btn btn-secondary\" onclick=\"goTo(5)\">\u2190 Zur\u00fcck<\/button>\n      <button class=\"btn btn-primary\" onclick=\"goTo(7)\">Weiter \u2192<\/button>\n    <\/div>\n  <\/div>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550 STEP 7 \u2014 Stanze \u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <div class=\"step-block\" id=\"step-7\">\n    <h2>\ud83d\udecf\ufe0f Zu kontrollierende R\u00e4ume<\/h2>\n    <p class=\"step-subtitle\">Wie viele R\u00e4ume m\u00f6chten Sie mit PleIHome \u00fcberwachen und steuern?<\/p>\n\n    <div class=\"info-banner\">\n      <span class=\"info-banner-icon\">\ud83d\udca1<\/span>\n      <div>In jedem Raum wird mindestens ein <strong>Temperatur- und Feuchtigkeitssensor<\/strong> <img decoding=\"async\" src=\"https:\/\/pleion.it\/wp-content\/uploads\/2026\/07\/snzb02p_SNZB-02P.png\" alt=\"\" style=\"width:24px;height:24px;vertical-align:middle;border-radius:4px;margin:0 2px;object-fit:contain;background:#f5f5f5;padding:2px;\"\/> installiert, um die Umgebungsbedingungen zu messen und die Heizung automatisch zu regeln.<\/div>\n    <\/div>\n\n    <div class=\"qty-row highlight\">\n      <div>\n        <div class=\"qty-label\">Gesamtzahl der Zimmer<\/div>\n        <div class=\"qty-sublabel\">Zu regelnde Bereiche (Thermostate, Sensoren)<\/div>\n      <\/div>\n      <div class=\"qty-controls\">\n        <button class=\"qty-btn\" onclick=\"changeRooms(-1)\">\u2212<\/button>\n        <div class=\"qty-value\" id=\"q-stanze-total\">0<\/div>\n        <button class=\"qty-btn\" onclick=\"changeRooms(1)\">+<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- Shown only if multiple emission systems (split escluso dal conteggio) -->\n    <div id=\"rooms-distribution\" class=\"hidden\">\n      <div class=\"section-label\">Wie verteilen sich die Emissionssysteme?<\/div>\n\n      <div id=\"rooms-remaining-box\" class=\"rooms-remaining\">\n        <span class=\"num\" id=\"rooms-remaining-num\">0<\/span>\n Zimmer sind noch zu vergeben\n      <\/div>\n\n      <div id=\"rooms-dist-rows\"><\/div>\n    <\/div>\n\n    <!-- Contatore split separato (nessun kit, solo IR Blaster) -->\n    <div id=\"split-counter-section\" class=\"hidden\" style=\"margin-top:14px;\">\n      <div class=\"info-banner\" style=\"margin-bottom:10px;\">\n        <span class=\"info-banner-icon\">\ud83c\udf00<\/span>\n        <div><strong>Split-Klimaanlagen<\/strong> sind nicht im Lieferumfang enthalten: Sie werden als separate IR-Blaster hinzugef\u00fcgt, jeweils einer pro Ger\u00e4t.<\/div>\n      <\/div>\n      <div class=\"qty-row\">\n        <div>\n          <div class=\"qty-label\">\ud83c\udf00 Split-Klimaanlagen \/ Klimaanlagen<\/div>\n          <div class=\"qty-sublabel\">1 Zigbee-IR-Blaster f\u00fcr Klimaanlagen<\/div>\n        <\/div>\n        <div class=\"qty-controls\">\n          <button class=\"qty-btn\" onclick=\"changeSplit(-1)\">\u2212<\/button>\n          <div class=\"qty-value\" id=\"q-split\">0<\/div>\n          <button class=\"qty-btn\" onclick=\"changeSplit(1)\">+<\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"btn-row\">\n      <button class=\"btn btn-secondary\" onclick=\"goTo(6)\">\u2190 Zur\u00fcck<\/button>\n      <button class=\"btn btn-primary\" id=\"btn-7\" onclick=\"generateAndShow()\" disabled=\"disabled\">Paket erstellen \u2192<\/button>\n    <\/div>\n  <\/div>\n\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550 RESULT PAGE \u2550\u2550\u2550\u2550\u2550\u2550 -->\n  <div class=\"step-block\" id=\"result-page\">\n    <div class=\"result-header\">\n      <span class=\"check\">\u2705<\/span>\n      <h2 id=\"res-title\">PleIHome-Paket<\/h2>\n      <p id=\"res-subtitle\" style=\"color:#666; margin-top:6px; font-size:15px;\"><\/p>\n    <\/div>\n\n    <div class=\"result-summary-box\" id=\"res-summary-box\"><\/div>\n\n    <!-- SEZIONE 1: Kit preconfigurati -->\n    <div class=\"result-section\" id=\"res-sec-kits\">\n      <div class=\"result-section-title\">\ud83d\udce6 Vorkonfigurierte Sets zum Bestellen<\/div>\n      <div id=\"res-kits\"><\/div>\n    <\/div>\n\n    <!-- SEZIONE 2: Componenti aggiuntivi (non inclusi nei kit) -->\n    <div class=\"result-section\" id=\"res-sec-addons\">\n      <div class=\"result-section-title\">\u2795 Zus\u00e4tzliche Komponenten<\/div>\n      <div class=\"info-banner\" style=\"margin-bottom:14px;\">\n        <span class=\"info-banner-icon\">\ud83d\udca1<\/span>\n        <div>Diese Komponenten sind f\u00fcr die spezifische Konfiguration dieser Anlage erforderlich und <strong>sind nicht in den vorkonfigurierten Baus\u00e4tzen enthalten<\/strong>. Sie m\u00fcssen separat bestellt werden. <\/div>\n      <\/div>\n      <div id=\"res-addons\"><\/div>\n    <\/div>\n\n    <!-- SEZIONE 3: Note -->\n    <div class=\"result-section\" id=\"res-sec-note\">\n      <div class=\"result-section-title\">\ud83d\udcdd Hinweise zur Konfiguration<\/div>\n      <div id=\"res-note\"><\/div>\n    <\/div>\n\n    <!-- SEZIONE 4: BOM riepilogo ordine -->\n    <div class=\"result-section\" id=\"res-sec-bom\">\n      <div class=\"result-section-title\">\ud83d\uded2 Bestell\u00fcbersicht nach Artikelnummer<\/div>\n      <div id=\"res-bom\"><\/div>\n    <\/div>\n\n    <div class=\"result-actions\">\n      <button class=\"print-btn\" onclick=\"window.print()\">\ud83d\udda8\ufe0f Drucken \/ Als PDF speichern<\/button>\n      <button class=\"restart-btn\" onclick=\"location.reload()\">\u21ba Neue Konfiguration<\/button>\n    <\/div>\n  <\/div>\n\n<\/div><!-- \/container -->\n<\/div>\n\n<script>\nfunction _s(v) {\n  if (v == null) return '';\n  return String(v).replace(\/&\/g,'&amp;').replace(\/<\/g,'&lt;').replace(\/>\/g,'&gt;')\n                  .replace(\/\"\/g,'&quot;').replace(\/'\/g,'&#39;');\n}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   DEVICE IMAGE MAP \u2014 con codici PLEION e descrizioni d'uso\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\nconst DEVICE_IMAGES = {\n  'Valvola TRV Zigbee': {\n    img: 'https:\/\/pleion.it\/wp-content\/uploads\/2026\/07\/trv_main.png', label: 'Valvola TRV',\n    codice: '7083571301',\n    desc: 'Si monta su ogni radiatore al posto della vecchia valvola manuale. Regola automaticamente il flusso d'acqua calda per mantenere la temperatura desiderata stanza per stanza, evitando sprechi.'\n  },\n  'Sensore temperatura sonda NTC Zigbee': {\n    img: 'https:\/\/pleion.it\/wp-content\/uploads\/2026\/07\/snzb02ld_main.png', label: 'Sonda NTC',\n    codice: '7083371201',\n    desc: 'Si fissa con fascette metalliche sul tubo di mandata del gruppo di spinta o sul serbatoio di accumulo. Misura la temperatura dell'acqua nell'impianto \u2014 dato fondamentale per la logica di controllo della centrale termica.'\n  },\n  'Sensore di temperatura Zigbee': {\n    img: 'https:\/\/pleion.it\/wp-content\/uploads\/2026\/07\/snzb02p_SNZB-02P.png', label: 'Sensore T+U',\n    codice: '7083371101',\n    desc: 'Si posiziona a parete in ogni stanza, lontano da finestre e fonti di calore dirette, ad almeno 1,5 m dal pavimento. Misura temperatura e umidit\u00e0 ambientali per alimentare l'algoritmo di termoregolazione di PleIHome.'\n  },\n  'Rel\u00e8 Zigbee a contatto pulito': {\n    img: 'https:\/\/pleion.it\/wp-content\/uploads\/2026\/07\/dry_contact_clean.jpg', label: 'Contatto pulito',\n    codice: '7083573202',\n    desc: 'Si collega al morsetto di abilitazione del generatore (caldaia, PDC, biomassa). Quando PleIHome decide di avviare il generatore, chiude il contatto esattamente come farebbe un vecchio termostato a muro. Richiede alimentazione 220V.'\n  },\n  'Sezionatore Zigbee': {\n    img: 'https:\/\/pleion.it\/wp-content\/uploads\/2026\/07\/repeater_correct.png', label: 'Sezionatore',\n    codice: '7083572101',\n    desc: 'Si installa sul cavo di alimentazione del circolatore (pompa del gruppo di spinta). Permette a PleIHome di accendere e spegnere ogni circolatore in base alle reali necessit\u00e0 delle zone, ottimizzando i consumi.'\n  },\n  'Attuatore zona + rel\u00e8 Zigbee': {\n    img: 'https:\/\/pleion.it\/wp-content\/uploads\/2026\/07\/switch.jpg', label: 'Attuatore zona',\n    codice: '7083572101',\n    desc: 'Si installa in serie al cavo della valvola di zona del pavimento o soffitto radiante. Apre e chiude il circuito idraulico di ogni stanza seguendo la programmazione, consentendo un controllo zona per zona.'\n  },\n  'Dispositivo 0-10V Zigbee': {\n    img: 'https:\/\/pleion.it\/wp-content\/uploads\/2026\/07\/l1wz.jpg', label: 'Reg. 0-10V',\n    codice: '7083573201',\n    desc: 'Si collega al segnale di controllo 0-10V del fancoil o della valvola miscelatrice del gruppo di spinta. Permette di regolare la velocit\u00e0 o la posizione in modo continuo e preciso \u2014 non semplice ON\/OFF ma una scala di valori.'\n  },\n  'Termostato Zigbee': {\n    img: 'https:\/\/pleion.it\/wp-content\/uploads\/2026\/07\/snzb02p_SNZB-02P.png', label: 'Termostato',\n    codice: '7083371101',\n    desc: 'Si posiziona a parete nella stanza dove \u00e8 presente il fancoil. Misura la temperatura locale e consente all'utente di impostare il setpoint direttamente dall'ambiente. Alimenta anche PleIHome con la lettura in tempo reale.'\n  },\n  'Rel\u00e8 Zigbee multi-canale': {\n    img: 'https:\/\/pleion.it\/wp-content\/uploads\/2026\/07\/try_dc7.jpg', label: 'Rel\u00e8 multi-canale',\n    codice: '7083573202',\n    desc: 'Si collega ai cavi delle diverse velocit\u00e0 del fancoil (1\u00aa, 2\u00aa, 3\u00aa velocit\u00e0). Permette a PleIHome di selezionare automaticamente la velocit\u00e0 della ventola in base alla richiesta termica della zona.'\n  },\n  'Rel\u00e8 Zigbee ON\/OFF': {\n    img: 'https:\/\/pleion.it\/wp-content\/uploads\/2026\/07\/try_ZBMINIL2.png', label: 'Mini rel\u00e8',\n    codice: '7083573202',\n    desc: 'Si installa sul cavo di alimentazione del circolatore del deumidificatore. Permette a PleIHome di avviare e fermare la pompa in risposta ai livelli di umidit\u00e0 rilevati, in modo completamente automatico.'\n  },\n  'Sensore Temperatura + Umidit\u00e0 Zigbee': {\n    img: 'https:\/\/pleion.it\/wp-content\/uploads\/2026\/07\/snzb02p_SNZB-02P.png', label: 'Sensore T+U',\n    codice: '7083371101',\n    desc: 'Si posiziona nella zona servita dal deumidificatore. Misura sia la temperatura che l'umidit\u00e0 relativa: quando l'umidit\u00e0 supera la soglia impostata, PleIHome avvia automaticamente il deumidificatore.'\n  },\n  'IR Blaster Zigbee': {\n    img: 'https:\/\/pleion.it\/wp-content\/uploads\/2026\/07\/ir_blaster_moes1.jpg', label: 'IR Blaster',\n    codice: '7083573301',\n    desc: 'Si posiziona vicino al condizionatore split, in vista del ricevitore IR. Trasmette i comandi a infrarossi di PleIHome al climatizzatore, integrando qualsiasi split nel sistema smart tramite i codici del telecomando.'\n  },\n};\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   KIT CATALOG PLEION\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\nconst KITS = {\n  radiante: {\n    base: {\n      cod: '7083999101', nome: 'KIT PLEIHOME RADIANTE',\n      desc: 'Per impianti a pannelli radianti a pavimento\/soffitto \u2014 fino a 4 zone',\n      maxZone: 4, contattiPuliti: 1,\n      contenuto: [\n        { qty:1, nome:'Unit\u00e0 centrale PLEIHOME',       cod:'7083169101' },\n        { qty:4, nome:'Sensore di temperatura',        cod:'7083371101' },\n        { qty:4, nome:'Switch radiante (attuatore zona)', cod:'7083572101' },\n        { qty:1, nome:'Switch Zigbee (quadro elettrico)',  cod:'7083572101', descOverride:'Si installa nel quadro elettrico del cliente per monitorare i consumi della linea. Permette a PleIHome di misurare i consumi elettrici in tempo reale.' },\n        { qty:1, nome:'Contatto pulito NO\/NC Zigbee',  cod:'7083573202' },\n        { qty:1, nome:'Chiavetta Zigbee',              cod:'7083471102' },\n        { qty:1, nome:'Presa Zigbee',                  cod:'7083571302' },\n      ],\n    },\n    ext: {\n      cod: '7083999102', nome: 'KIT ESTENSIONE RADIANTE',\n      desc: 'Estensione per 2 zone aggiuntive', zonePerKit: 2,\n      contenuto: [\n        { qty:2, nome:'Sensore di temperatura', cod:'7083371101' },\n        { qty:2, nome:'Switch radiante',         cod:'7083572101' },\n        { qty:1, nome:'Ripetitore Zigbee',       cod:'7083471101' },\n        { qty:1, nome:'Presa Zigbee',            cod:'7083571302' },\n      ],\n    }\n  },\n  radiatori: {\n    base: {\n      cod: '7083999201', nome: 'KIT PLEIHOME RADIATORI',\n      desc: 'Per impianti a radiatori\/termosifoni \u2014 fino a 4 zone',\n      maxZone: 4, contattiPuliti: 1,\n      contenuto: [\n        { qty:1, nome:'Unit\u00e0 centrale PLEIHOME',      cod:'7083169101' },\n        { qty:4, nome:'Sensore di temperatura',       cod:'7083371101' },\n        { qty:4, nome:'Valvola radiatore (TRV)',      cod:'7083571301' },\n        { qty:1, nome:'Contatto pulito NO\/NC Zigbee', cod:'7083573202' },\n        { qty:1, nome:'Chiavetta Zigbee',             cod:'7083471102' },\n        { qty:1, nome:'Presa Zigbee',                 cod:'7083571302' },\n        { qty:1, nome:'Switch Zigbee (quadro elettrico)', cod:'7083572101', descOverride:'Si installa nel quadro elettrico del cliente per monitorare i consumi della linea. Permette a PleIHome di misurare i consumi elettrici in tempo reale.' },\n      ],\n    },\n    ext: {\n      cod: '7083999202', nome: 'KIT ESTENSIONE RADIATORI',\n      desc: 'Estensione per 2 zone aggiuntive', zonePerKit: 2,\n      contenuto: [\n        { qty:2, nome:'Sensore di temperatura',  cod:'7083371101' },\n        { qty:2, nome:'Valvola radiatore (TRV)', cod:'7083571301' },\n        { qty:1, nome:'Ripetitore Zigbee',       cod:'7083471101' },\n        { qty:1, nome:'Presa Zigbee',            cod:'7083571302' },\n      ],\n    }\n  },\n  fancoil: {\n    base: {\n      cod: '7083999301', nome: 'KIT PLEIHOME FAN COIL',\n      desc: 'Per impianti a fancoil\/ventilconvettori \u2014 fino a 4 zone',\n      maxZone: 4, contattiPuliti: 1,\n      contenuto: [\n        { qty:1, nome:'Unit\u00e0 centrale PLEIHOME',      cod:'7083169101' },\n        { qty:4, nome:'Sensore di temperatura',       cod:'7083371101' },\n        { qty:4, nome:'Sonda di temperatura (NTC)',   cod:'7083371201' },\n        { qty:5, nome:'Contatto pulito NO\/NC Zigbee', cod:'7083573202' },\n        { qty:4, nome:'Regolatore 0-10V Zigbee',      cod:'7083573201' },\n        { qty:1, nome:'Chiavetta Zigbee',             cod:'7083471102' },\n        { qty:1, nome:'Presa Zigbee',                 cod:'7083571302' },\n        { qty:1, nome:'Switch Zigbee (quadro elettrico)', cod:'7083572101', descOverride:'Si installa nel quadro elettrico del cliente per monitorare i consumi della linea. Permette a PleIHome di misurare i consumi elettrici in tempo reale.' },\n      ],\n    },\n    ext: {\n      cod: '7083999302', nome: 'KIT ESTENSIONE FAN COIL',\n      desc: 'Estensione per 2 zone aggiuntive', zonePerKit: 2,\n      contenuto: [\n        { qty:2, nome:'Sensore di temperatura',     cod:'7083371101' },\n        { qty:2, nome:'Sonda di temperatura (NTC)', cod:'7083371201' },\n        { qty:3, nome:'Ripetitore Zigbee',          cod:'7083471101' },\n        { qty:2, nome:'Regolatore 0-10V Zigbee',    cod:'7083573201' },\n        { qty:1, nome:'Presa Zigbee',               cod:'7083571302' },\n      ],\n    }\n  }\n};\n\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   DEVICE DESC \u2014 descrizioni d'uso per ogni prodotto (key = codice)\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\nconst DEVICE_DESC = {\n  '7083169101': 'Hub e gateway del sistema PleIHome \u2014 gestisce la rete Zigbee e ospita tutte le automazioni climatiche della casa.',\n  '7083371101': 'Si posiziona a parete nella stanza da controllare. Misura temperatura e umidit\u00e0 in tempo reale per regolare automaticamente la zona.',\n  '7083371201': 'Si fissa sul tubo di mandata o sul serbatoio di accumulo. Misura la temperatura dell'acqua nell'impianto \u2014 dato fondamentale per la logica di controllo.',\n  '7083471101': 'Estende la copertura radio Zigbee nelle zone lontane dalla centrale. Garantisce comunicazione affidabile con tutti i dispositivi periferici.',\n  '7083471102': 'Coordinatore Zigbee USB: si collega alla centrale PleIHome e gestisce la rete radio di tutti i dispositivi smart dell'impianto.',\n  '7083571301': 'Si avvita al radiatore al posto della vecchia valvola manuale. Apre e chiude il flusso d'acqua calda in modo proporzionale per mantenere la temperatura stanza per stanza.',\n  '7083571302': 'Presa smart Zigbee che funge anche da ripetitore radio. Alimenta eventuali accessori e rafforza il segnale nella zona.',\n  '7083572101': 'Attuatore di zona: intercetta il circuito idraulico o il circolatore della zona. Apre e chiude il flusso su comando di PleIHome.',\n  '7083573201': 'Invia il segnale 0-10V al fancoil per regolare in modo continuo la velocit\u00e0 del ventilatore in base alla richiesta termica della stanza.',\n  '7083573202': 'Contatto pulito NO\/NC: chiude il circuito di abilitazione del generatore (caldaia, PDC) o di qualsiasi attuatore a bassa tensione.',\n};\n\n\/* Immagini per codice prodotto (usate nei kit card) *\/\nconst DEVICE_IMG_BY_CODE = {\n  '7083169101': 'https:\/\/pleion.it\/wp-content\/uploads\/2026\/07\/pleihome_logo.png',\n  '7083371101': 'https:\/\/pleion.it\/wp-content\/uploads\/2026\/07\/snzb02p_SNZB-02P.png',\n  '7083371201': 'https:\/\/pleion.it\/wp-content\/uploads\/2026\/07\/snzb02ld_main.png',\n  '7083471101': 'https:\/\/pleion.it\/wp-content\/uploads\/2026\/07\/repeater_correct.png',\n  '7083471102': 'https:\/\/pleion.it\/wp-content\/uploads\/2026\/07\/chiavetta_zigbee.jpg',\n  '7083571301': 'https:\/\/pleion.it\/wp-content\/uploads\/2026\/07\/trv_main.png',\n  '7083571302': 'https:\/\/pleion.it\/wp-content\/uploads\/2026\/07\/plug_correct.png',\n  '7083572101': 'https:\/\/pleion.it\/wp-content\/uploads\/2026\/07\/switch.jpg',\n  '7083573201': 'https:\/\/pleion.it\/wp-content\/uploads\/2026\/07\/l1wz.jpg',\n  '7083573202': 'https:\/\/pleion.it\/wp-content\/uploads\/2026\/07\/dry_contact_clean.jpg',\n};\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   STATE\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\nconst TOTAL_STEPS = 7;\n\nconst state = {\n  nome: '', email: '', citta: '',\n  generatori: [],\n  accumuli_presenti: false,\n  acc_tecnico: 0, acc_acs: 0, acc_misto: 0,\n  emissione: [],\n  q_diretto: 0, q_termostatico: 0, q_3vie: 0, q_0_10v: 0,\n  cooling: false, cooling_metodi: [],\n  deum: false, deum_conn: null, n_deum: 1,\n  n_stanze: 0,\n  stanze_dist: {}\n};\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   NAVIGATION\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\nfunction goTo(n) {\n  if (n === 2) {\n    state.nome  = document.getElementById('f-nome').value.trim();\n    state.email = document.getElementById('f-email').value.trim();\n    state.citta = document.getElementById('f-citta').value.trim();\n  }\n  document.querySelectorAll('.step-block').forEach(el => el.classList.remove('active'));\n  const id = (n === 'result') ? 'result-page' : `step-${n}`;\n  document.getElementById(id).classList.add('active');\n  window.scrollTo({ top: 0, behavior: 'smooth' });\n  if (n === 7) {\n    const splitSec = document.getElementById('split-counter-section');\n    if (splitSec) splitSec.classList.toggle('hidden', !state.emissione.includes('split_ir'));\n  }\n  if (n !== 'result') {\n    const pct = Math.round((n - 1) \/ TOTAL_STEPS * 100) + 14;\n    document.getElementById('progress-bar').style.width = Math.min(pct, 95) + '%';\n    document.getElementById('step-counter').textContent = `Passo ${n} di ${TOTAL_STEPS}`;\n  } else {\n    document.getElementById('progress-bar').style.width = '100%';\n    document.getElementById('step-counter').textContent = 'Configurazione completata \u2713';\n  }\n}\n\nfunction changeSplit(delta) {\n  const cur = state.stanze_dist['split_ir'] || 0;\n  const newVal = Math.max(0, cur + delta);\n  state.stanze_dist['split_ir'] = newVal;\n  document.getElementById('q-split').textContent = newVal;\n}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   HELP EXPANDABLE\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\nfunction toggleHelp(header) {\n  const body = header.nextElementSibling;\n  const toggle = header.querySelector('.help-toggle');\n  const isOpen = body.classList.contains('open');\n  body.classList.toggle('open', !isOpen);\n  toggle.classList.toggle('open', !isOpen);\n}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   MULTI-SELECT CARDS\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\nfunction toggleMultiCard(el, group) {\n  el.classList.toggle('selected');\n  const val = el.dataset.val;\n  const key = group === 'gen' ? 'generatori' : group === 'emissione' ? 'emissione' : 'cooling_metodi';\n  if (el.classList.contains('selected')) {\n    if (!state[key].includes(val)) state[key].push(val);\n  } else {\n    state[key] = state[key].filter(v => v !== val);\n  }\n  if (group === 'gen')      document.getElementById('btn-2').disabled = state.generatori.length === 0;\n  if (group === 'emissione') {\n    document.getElementById('btn-4').disabled = state.emissione.length === 0;\n    rebuildRoomsDistribution();\n  }\n}\n\n\/* Single-select within a group *\/\nfunction selectSingle(el, group) {\n  document.querySelectorAll(`[onclick=\"selectSingle(this, '${group}')\"]`).forEach(c => c.classList.remove('selected'));\n  el.classList.add('selected');\n  if (group === 'deum-conn') state.deum_conn = el.dataset.val;\n}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   TOGGLES\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\nfunction toggleSwitch(name) {\n  const sw = document.getElementById(`sw-${name}`);\n  const row = document.getElementById(`toggle-${name}`);\n  const isOn = !sw.classList.contains('on');\n  sw.classList.toggle('on', isOn);\n  row.classList.toggle('active-toggle', isOn);\n\n  if (name === 'accumuli') {\n    state.accumuli_presenti = isOn;\n    document.getElementById('accumuli-detail').classList.toggle('hidden', !isOn);\n  }\n  if (name === 'cooling') {\n    state.cooling = isOn;\n    document.getElementById('cooling-method-section').classList.toggle('hidden', !isOn);\n    if (!isOn) { state.cooling_metodi = []; document.querySelectorAll('[onclick*=\"cooling\"]').forEach(c => c.classList.remove('selected')); }\n  }\n  if (name === 'deum') {\n    state.deum = isOn;\n    document.getElementById('deum-conn-section').classList.toggle('hidden', !isOn);\n    if (!isOn) { state.deum_conn = null; document.querySelectorAll('[onclick*=\"deum-conn\"]').forEach(c => c.classList.remove('selected')); }\n  }\n}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   QTY CONTROLS\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\nconst qtyMap = {\n  'q-acc-tecnico': 'acc_tecnico', 'q-acc-acs': 'acc_acs', 'q-acc-misto': 'acc_misto',\n  'q-diretto': 'q_diretto', 'q-termostatic': 'q_termostatico',\n  'q-3vie': 'q_3vie', 'q-0-10v': 'q_0_10v', 'q-deum': 'n_deum'\n};\n\nfunction changeQty(id, delta) {\n  const el = document.getElementById(id);\n  const val = Math.max(0, parseInt(el.textContent) + delta);\n  el.textContent = val;\n  if (qtyMap[id]) state[qtyMap[id]] = val;\n}\n\nfunction getQty(id) { return parseInt(document.getElementById(id)?.textContent || '0'); }\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   ROOMS STEP\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\nfunction changeRooms(delta) {\n  state.n_stanze = Math.max(0, state.n_stanze + delta);\n  document.getElementById('q-stanze-total').textContent = state.n_stanze;\n  document.getElementById('btn-7').disabled = state.n_stanze === 0;\n\n  const distDiv = document.getElementById('rooms-distribution');\n  if (state.emissione.length > 1 && state.n_stanze > 0) {\n    distDiv.classList.remove('hidden');\n    rebuildRoomsDistribution();\n    updateRoomsRemaining();\n  } else {\n    distDiv.classList.add('hidden');\n  }\n}\n\nfunction rebuildRoomsDistribution() {\n  const container = document.getElementById('rooms-dist-rows');\n  const labels = {\n    radiatori: ['\ud83d\udd29', 'Radiatori'],\n    pannelli_radianti: ['\ud83c\udf21\ufe0f', 'Pannelli Radianti'],\n    fancoil: ['\ud83d\udca8', 'Fancoil'],\n    split_ir: ['\ud83c\udf00', 'Split IR']\n  };\n  container.innerHTML = '';\n  state.emissione.filter(em => em !== 'split_ir').forEach(em => {\n    const [icon, name] = labels[em] || ['\u2022', em];\n    const cur = state.stanze_dist[em] || 0;\n    container.innerHTML += `\n      <div class=\"qty-row\">\n        <div>\n          <div class=\"qty-label\">${icon} ${name}<\/div>\n          <div class=\"qty-sublabel\">Stanze con questo sistema<\/div>\n        <\/div>\n        <div class=\"qty-controls\">\n          <button class=\"qty-btn\" onclick=\"changeDistRoom('${em}', -1)\">\u2212<\/button>\n          <div class=\"qty-value\" id=\"dist-${em}\">${cur}<\/div>\n          <button class=\"qty-btn\" onclick=\"changeDistRoom('${em}', 1)\">+<\/button>\n        <\/div>\n      <\/div>`;\n  });\n  updateRoomsRemaining();\n}\n\nfunction changeDistRoom(em, delta) {\n  const cur = state.stanze_dist[em] || 0;\n  const newVal = Math.max(0, cur + delta);\n  state.stanze_dist[em] = newVal;\n  document.getElementById(`dist-${em}`).textContent = newVal;\n  updateRoomsRemaining();\n}\n\nfunction updateRoomsRemaining() {\n  const assigned = Object.entries(state.stanze_dist)\n    .filter(([em]) => em !== 'split_ir')\n    .reduce((s, [, v]) => s + v, 0);\n  const rem = state.n_stanze - assigned;\n  const box = document.getElementById('rooms-remaining-box');\n  const numEl = document.getElementById('rooms-remaining-num');\n  numEl.textContent = Math.abs(rem);\n  box.className = 'rooms-remaining' + (rem === 0 ? ' ok' : rem < 0 ? ' over' : '');\n  box.querySelector('span').nextSibling.textContent = rem < 0\n    ? ' stanze assegnate in eccesso'\n    : rem === 0 ? ' \u2014 distribuzione completata \u2713' : ' stanze ancora da assegnare';\n}\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   GENERATE RESULT \u2014 logica kit multipli misti\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n\n\/* Mappa tipo emissione \u2192 tipo kit *\/\nconst EM_TO_KIT = {\n  'radiatori':       'radiatori',\n  'pannelli_radianti': 'radiante',\n  'fancoil':         'fancoil',\n  'split_ir':        null,\n};\n\n\/* Classe CSS per ogni tipo di kit estensione *\/\nconst KIT_CSS = {\n  'radiatori': 'kit-card-ext-radiatori',\n  'radiante':  'kit-card-ext-radiante',\n  'fancoil':   'kit-card-ext-fancoil',\n};\n\nfunction generateAndShow() {\n  state.q_diretto      = getQty('q-diretto');\n  state.q_termostatico = getQty('q-termostatic');\n  state.q_3vie         = getQty('q-3vie');\n  state.q_0_10v        = getQty('q-0-10v');\n  state.acc_tecnico    = getQty('q-acc-tecnico');\n  state.acc_acs        = getQty('q-acc-acs');\n  state.acc_misto      = getQty('q-acc-misto');\n  if (state.deum) state.n_deum = getQty('q-deum') || 1;\n\n  const notes  = [];\n  const addons = [];\n  const kits   = []; \/\/ { kitObj, qty, cardClass, label }\n\n  const getStanze = (em) => state.emissione.length === 1\n    ? state.n_stanze : (state.stanze_dist[em] || 0);\n\n  \/\/ \u2500\u2500 1. Kit base: sistema con pi\u00f9 zone (tiebreak: fancoil > radiatori > radiante) \u2500\u2500\n  const EM_PRIORITY = ['fancoil', 'radiatori', 'pannelli_radianti'];\n  const emWithKits  = state.emissione.filter(em => EM_TO_KIT[em] !== null);\n  const primaryEm   = emWithKits.length === 0 ? null\n    : emWithKits.reduce((best, em) => {\n        const z1 = getStanze(em), z2 = getStanze(best);\n        if (z1 !== z2) return z1 > z2 ? em : best;\n        return EM_PRIORITY.indexOf(em) <= EM_PRIORITY.indexOf(best) ? em : best;\n      });\n  const primaryType = primaryEm ? EM_TO_KIT[primaryEm] : null;\n\n  if (primaryType) {\n    kits.push({\n      kitObj:    KITS[primaryType].base,\n      qty:       1,\n      cardClass: 'kit-card-base',\n      label:     'Kit Base \u2014 include unit\u00e0 centrale PleIHome',\n    });\n\n    \/\/ Estensioni dello stesso tipo (zone primarie oltre le prime 4)\n    const zonePrimarie = getStanze(primaryEm);\n    const extSamePrimary = zonePrimarie > 4\n      ? Math.ceil((zonePrimarie - 4) \/ KITS[primaryType].ext.zonePerKit) : 0;\n    if (extSamePrimary > 0) {\n      kits.push({\n        kitObj:    KITS[primaryType].ext,\n        qty:       extSamePrimary,\n        cardClass: KIT_CSS[primaryType],\n        label:     `Estensione ${KITS[primaryType].base.nome.replace('KIT PLEIHOME ', '')} \u2014 zone aggiuntive`,\n      });\n    }\n  }\n\n  \/\/ \u2500\u2500 2. Kit estensione per OGNI sistema di emissione secondario \u2500\u2500\n  \/\/ Ogni tipo secondario \u2192 solo kit estensione (il PleIHome \u00e8 gi\u00e0 nel kit base)\n  state.emissione.forEach(em => {\n    const kitType = EM_TO_KIT[em];\n    if (!kitType) return;           \/\/ split_ir: nessun kit\n    if (kitType === primaryType) return; \/\/ gi\u00e0 gestito sopra\n    const nZone = getStanze(em);\n    if (nZone <= 0) return;\n    const extQty = Math.ceil(nZone \/ KITS[kitType].ext.zonePerKit);\n    kits.push({\n      kitObj:    KITS[kitType].ext,\n      qty:       extQty,\n      cardClass: KIT_CSS[kitType],\n      label:     `Estensione ${KITS[kitType].base.nome.replace('KIT PLEIHOME ', '')} \u2014 sistema aggiuntivo`,\n    });\n  });\n\n  \/\/ \u2500\u2500 3. Split IR \u2192 sempre componenti extra (nessun kit disponibile) \u2500\u2500\n  if (state.emissione.includes('split_ir')) {\n    const n = getStanze('split_ir');\n    if (n > 0) {\n      addons.push({ qty:n, item:'IR Blaster Zigbee', imgKey:'IR Blaster Zigbee',\n        cod:'7083573301', note:`${n} split \/ climatizzatori` });\n      notes.push('Split IR: acquisizione manuale dei codici IR per ogni modello di split installato');\n    }\n  }\n\n  \/\/ \u2500\u2500 4. Generatori \u2500\u2500\n  \/\/ Il kit base copre 1 generatore (1 contatto pulito incluso)\n  const genCoperto = primaryType ? 1 : 0;\n  const genNomi    = { pdc:'Pompa di Calore', caldaia:'Caldaia', biomassa:'Biomassa', solare_termico:'Solare Termico' };\n  state.generatori.forEach((g, idx) => {\n    if (g === 'pdc')     notes.push('PDC: verificare tipo segnale (contatto pulito, OpenTherm, RS485, CAN)');\n    if (g === 'caldaia') notes.push('Caldaia: verificare compatibilit\u00e0 (ON\/OFF, OpenTherm, ModBus)');\n    if (idx >= genCoperto)\n      addons.push({ qty:1, item:'Contatto pulito NO\/NC Zigbee', imgKey:'Rel\u00e8 Zigbee a contatto pulito',\n        cod:'7083573202', note:`Abilitazione ${genNomi[g] || g}` });\n  });\n\n  \/\/ \u2500\u2500 5. Accumuli \u2500\u2500 (sempre extra, non inclusi nei kit)\n  const totAcc = state.acc_tecnico + state.acc_acs + state.acc_misto;\n  if (totAcc > 0) {\n    addons.push({ qty:totAcc, item:'Sonda di temperatura (NTC)', imgKey:'Sensore temperatura sonda NTC Zigbee',\n      cod:'7083371201', note:`Temperatura serbatoi \u2014 ${totAcc} accumuli` });\n    if (state.acc_acs + state.acc_misto > 0)\n      notes.push('Anti-Legionella: automazione settimanale inclusa automaticamente per accumulo ACS\/misto');\n  }\n\n  \/\/ \u2500\u2500 6. Gruppi di spinta \u2500\u2500 componenti da verificare a parte (non sono dispositivi zona)\n  const nD = state.q_diretto, nT = state.q_termostatico, n3 = state.q_3vie, n0 = state.q_0_10v;\n  if (nD > 0) notes.push(`Gruppi diretti (${nD}): prevedere ${nD}\u00d7 rel\u00e8 ON\/OFF circolatore \u2014 Cod. 7083572101`);\n  if (nT > 0) notes.push(`Gruppi termostatici (${nT}): prevedere ${nT}\u00d7 rel\u00e8 ON\/OFF circolatore \u2014 Cod. 7083572101`);\n  if (n3 > 0) notes.push(`Gruppi 3 vie (${n3}): ${n3}\u00d7 rel\u00e8 pompa + ${n3*2}\u00d7 rel\u00e8 valvola + ${n3}\u00d7 sonda NTC mandata \u2014 Cod. 7083572101 \u00d7 ${n3+n3*2}, Cod. 7083371201 \u00d7 ${n3}`);\n  if (n0 > 0) {\n    notes.push(`Gruppi 0-10V (${n0}): ${n0}\u00d7 rel\u00e8 pompa + ${n0}\u00d7 regolatore 0-10V + ${n0}\u00d7 sonda NTC \u2014 Cod. 7083572101 \u00d7 ${n0}, Cod. 7083573201 \u00d7 ${n0}, Cod. 7083371201 \u00d7 ${n0}`);\n    notes.push('Circuiti 0-10V: verificare range (0-10V oppure 2-10V)');\n  }\n\n  \/\/ \u2500\u2500 7. Raffreddamento \u2500\u2500\n  if (state.cooling) {\n    const m = state.cooling_metodi;\n    if (m.includes('pdc_inversione'))  notes.push('Raffreddamento: inversione ciclo PDC \u2014 stagione gestita automaticamente');\n    if (m.includes('fancoil_freddo'))  notes.push('Raffreddamento fancoil: modalit\u00e0 caldo\/freddo configurata automaticamente');\n    if (m.includes('radiante_freddo')) notes.push('Raffreddamento radiante: richiede gestione punto di rugiada \u2014 deumidificazione consigliata');\n  }\n\n  \/\/ \u2500\u2500 8. Deumidificatore \u2500\u2500\n  if (state.deum) {\n    const nDeum = state.n_deum || 1;\n    if (state.deum_conn === 'indipendente')\n      addons.push({ qty:nDeum, item:'Switch radiante (sezionatore circolatore)', imgKey:'Sezionatore Zigbee',\n        cod:'7083572101', note:`Circolatore \u2014 ${nDeum} deumidificatori` });\n    addons.push({ qty:nDeum, item:'Contatto pulito NO\/NC Zigbee', imgKey:'Rel\u00e8 Zigbee a contatto pulito',\n      cod:'7083573202', note:`Abilitazione \u2014 ${nDeum} deumidificatori` });\n    notes.push('Deumidificatore: connessione idraulica \u2014 ' + (state.deum_conn || 'da definire'));\n  }\n\n  \/\/ \u2500\u2500 Render \u2500\u2500\n  \/\/ Aggrega addon per codice prodotto (una riga per tipo di componente)\n  const addonsAgg = aggregateAddons(addons);\n\n  const nome = state.nome || 'Cliente';\n  document.getElementById('res-title').textContent = `Pacchetto PleIHome \u2014 ${nome}`;\n  document.getElementById('res-subtitle').textContent = [state.email, state.citta].filter(Boolean).join(' \u00b7 ');\n\n  const totalKitPz  = kits.reduce((s, k) => s + k.qty, 0);\n  const totalAddon  = addons.reduce((s, x) => s + x.qty, 0);\n  \/\/ Zone controllate = solo sistemi con kit (esclude split IR)\n  const zoneKits    = emWithKits.reduce((sum, em) => sum + getStanze(em), 0);\n  document.getElementById('res-summary-box').innerHTML = `\n    <div class=\"summary-stat\"><div class=\"num\">${totalKitPz || '\u2014'}<\/div><div class=\"label\">Kit preconfigurati<\/div><\/div>\n    <div class=\"summary-stat\"><div class=\"num\">${totalAddon}<\/div><div class=\"label\">Comp. aggiuntivi<\/div><\/div>\n    <div class=\"summary-stat\"><div class=\"num\">${nD+nT+n3+n0}<\/div><div class=\"label\">Gruppi di spinta<\/div><\/div>\n    <div class=\"summary-stat\"><div class=\"num\">${zoneKits}<\/div><div class=\"label\">Zone controllate<\/div><\/div>\n  `;\n\n  \/\/ Kit section\n  const kitContainer = document.getElementById('res-kits');\n  if (kits.length === 0) {\n    kitContainer.innerHTML = `<div class=\"info-banner\"><span class=\"info-banner-icon\">\u2139\ufe0f<\/span><div>Nessun kit preconfigurato disponibile. Tutti i componenti sono nella sezione sottostante.<\/div><\/div>`;\n  } else {\n    kitContainer.innerHTML = kits.map(k => renderKitCard(k)).join('');\n  }\n\n  \/\/ Addons section\n  const addonsSec = document.getElementById('res-sec-addons');\n  const addonsEl  = document.getElementById('res-addons');\n  if (addons.length) {\n    addonsSec.classList.remove('hidden');\n    addonsEl.innerHTML = renderAddonTable(addonsAgg);\n  } else {\n    addonsSec.classList.add('hidden');\n  }\n\n  document.getElementById('res-note').innerHTML = notes.length\n    ? notes.map(n => `<div class=\"note-item\">${_s(n)}<\/div>`).join('')\n    : '<div class=\"note-item\">Nessuna nota aggiuntiva<\/div>';\n\n  document.getElementById('res-bom').innerHTML = renderBOM(kits, addonsAgg);\n\n  goTo('result');\n}\n\n\/* Aggrega addon per codice prodotto: 1 riga per tipo di componente *\/\nfunction aggregateAddons(addons) {\n  const map = {};\n  addons.forEach(r => {\n    const key = r.cod || r.item;\n    if (!map[key]) {\n      map[key] = { ...r, qty: r.qty, notes: [r.note] };\n    } else {\n      map[key].qty += r.qty;\n      map[key].notes.push(r.note);\n    }\n  });\n  return Object.values(map).map(r => ({ ...r, note: r.notes.join(' \u00b7 ') }));\n}\n\n\/* Render singola kit card *\/\nfunction renderKitCard({ kitObj, qty, cardClass, label }) {\n  const itemsHtml = kitObj.contenuto.map(c => {\n    const desc  = c.descOverride || (c.cod ? (DEVICE_DESC[c.cod] || '') : '');\n    const img   = c.cod ? (DEVICE_IMG_BY_CODE[c.cod] || null) : null;\n    const thumb = img\n      ? `<img decoding=\"async\" class=\"kit-item-thumb\" src=\"${_s(img)}\" alt=\"${_s(c.nome)}\">`\n      : `<div class=\"kit-item-thumb-ph\">\ud83d\udce6<\/div>`;\n    return `<div class=\"kit-item\">\n      <span class=\"kit-item-qty\">${c.qty}\u00d7<\/span>\n      ${thumb}\n      <div class=\"kit-item-body\">\n        <span class=\"kit-item-name\">${_s(c.nome)}<\/span>\n        ${c.cod ? `<span class=\"kit-item-cod\">Cod. ${_s(c.cod)}<\/span>` : ''}\n        ${desc ? `<div class=\"kit-item-desc\">${_s(desc)}<\/div>` : ''}\n      <\/div>\n    <\/div>`;\n  }).join('');\n  return `\n    <div class=\"kit-card ${_s(cardClass)}\">\n      <div class=\"kit-card-header\">\n        <div class=\"kit-qty-badge\">${qty}\u00d7<\/div>\n        <div class=\"kit-header-info\">\n          <div class=\"kit-cod\">Cod. ${_s(kitObj.cod)}<\/div>\n          <div class=\"kit-name\">${_s(kitObj.nome)}<\/div>\n          <div class=\"kit-desc\">${_s(kitObj.desc)}<\/div>\n        <\/div>\n      <\/div>\n      <div class=\"kit-contents\">\n        <div class=\"kit-includes-title\">${_s(label)}<\/div>\n        <div class=\"kit-items-grid\">${itemsHtml}<\/div>\n      <\/div>\n    <\/div>`;\n}\n\n\/* Render tabella componenti aggiuntivi *\/\nfunction renderAddonTable(addons) {\n  const rows = addons.map(r => {\n    const info      = DEVICE_IMAGES[r.imgKey] || null;\n    const thumbHtml = info\n      ? `<img decoding=\"async\" class=\"device-thumb\" src=\"${info.img}\" alt=\"${_s(r.item)}\">`\n      : `<div class=\"device-thumb-placeholder\">\ud83d\udce6<\/div>`;\n    const codeHtml = r.cod ? `<div class=\"td-item-code\">Cod. ${_s(r.cod)}<\/div>` : '';\n    const descHtml = info && info.desc ? `<div class=\"td-item-desc\">${_s(info.desc)}<\/div>` : '';\n    return `<tr>\n      <td class=\"td-qty\">${_s(r.qty)}\u00d7<\/td>\n      <td><div class=\"td-item\">${thumbHtml}<div class=\"td-item-info\">\n        <div class=\"td-item-name\">${_s(r.item)}<\/div>${codeHtml}${descHtml}\n      <\/div><\/div><\/td>\n      <td class=\"td-note\">${_s(r.note)}<\/td>\n    <\/tr>`;\n  }).join('');\n  return `<table class=\"component-table\">\n    <thead><tr><th>Qt\u00e0<\/th><th>Componente<\/th><th>Utilizzo nell'impianto<\/th><\/tr><\/thead>\n    <tbody>${rows}<\/tbody>\n  <\/table>`;\n}\n\n\/* BOM riepilogo ordine per codice (kit > componenti singoli) *\/\nfunction renderBOM(kits, addonsAgg) {\n  const kitRows = kits.map(k =>\n    `<tr class=\"bom-kit-row\">\n      <td class=\"bom-qty\">${k.qty}\u00d7<\/td>\n      <td class=\"bom-cod\">Cod. ${_s(k.kitObj.cod)}<\/td>\n      <td>${_s(k.kitObj.nome)}<\/td>\n    <\/tr>`\n  ).join('');\n  const addonRows = addonsAgg.filter(r => r.cod).map(r =>\n    `<tr>\n      <td class=\"bom-qty\">${r.qty}\u00d7<\/td>\n      <td class=\"bom-cod\">Cod. ${_s(r.cod)}<\/td>\n      <td>${_s(r.item)}<\/td>\n    <\/tr>`\n  ).join('');\n  return `<table class=\"bom-table\">\n    <thead><tr><th>Qt\u00e0<\/th><th>Codice<\/th><th>Descrizione<\/th><\/tr><\/thead>\n    <tbody>${kitRows}${addonRows}<\/tbody>\n  <\/table>`;\n}\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>#pleihome-cfg *, #pleihome-cfg *::before, #pleihome-cfg *::after { margin: 0; padding: 0; box-sizing: border-box; } #pleihome-cfg { font-family: &#8218;Segoe UI&#8216;, Tahoma, Geneva, Verdana, sans-serif; background: linear-gradient(135deg, #eb3349 0%, #f45c43 100%); display:&hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":"","_members_access_role":[],"_members_access_error":""},"class_list":["post-31459","page","type-page","status-publish","hentry"],"acf":[],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO Pro 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"PleIHome Konfigurator f\u00fcr Kundenpakete Schritt 1 von 7 \ud83d\udc64 Kundendaten Geben Sie die Kundendaten ein, um den Abschlussbericht individuell anzupassen. \u2139\ufe0f Dieser Konfigurator f\u00fchrt Sie Schritt f\u00fcr Schritt durch die Auswahl der f\u00fcr Ihre Anlage erforderlichen Smart-Komponenten. Am Ende erhalten Sie eine genaue Liste der zu installierenden Ger\u00e4te. \ud83d\udd25 Generatoren \u2192 \ud83d\udee2\ufe0f Stauseen \u2192 \ud83d\udd04\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/pleion.it\/de\/pleihome-konfigurator\/\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO Pro (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Pleion - Solare Termico per Produzione di Acqua Sanitaria\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"PleiHome-Konfigurator - Pleion\" \/>\n\t\t<meta property=\"og:description\" content=\"PleIHome Konfigurator f\u00fcr Kundenpakete Schritt 1 von 7 \ud83d\udc64 Kundendaten Geben Sie die Kundendaten ein, um den Abschlussbericht individuell anzupassen. \u2139\ufe0f Dieser Konfigurator f\u00fchrt Sie Schritt f\u00fcr Schritt durch die Auswahl der f\u00fcr Ihre Anlage erforderlichen Smart-Komponenten. Am Ende erhalten Sie eine genaue Liste der zu installierenden Ger\u00e4te. \ud83d\udd25 Generatoren \u2192 \ud83d\udee2\ufe0f Stauseen \u2192 \ud83d\udd04\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/pleion.it\/de\/pleihome-konfigurator\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/pleion.it\/wp-content\/uploads\/2026\/04\/cropped-logo-small-dark.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/pleion.it\/wp-content\/uploads\/2026\/04\/cropped-logo-small-dark.png\" \/>\n\t\t<meta property=\"og:image:width\" content=\"393\" \/>\n\t\t<meta property=\"og:image:height\" content=\"78\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-07-21T09:36:35+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-07-22T10:09:21+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/PleionItalia\/\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"PleiHome-Konfigurator - Pleion\" \/>\n\t\t<meta name=\"twitter:description\" content=\"PleIHome Konfigurator f\u00fcr Kundenpakete Schritt 1 von 7 \ud83d\udc64 Kundendaten Geben Sie die Kundendaten ein, um den Abschlussbericht individuell anzupassen. \u2139\ufe0f Dieser Konfigurator f\u00fchrt Sie Schritt f\u00fcr Schritt durch die Auswahl der f\u00fcr Ihre Anlage erforderlichen Smart-Komponenten. Am Ende erhalten Sie eine genaue Liste der zu installierenden Ger\u00e4te. \ud83d\udd25 Generatoren \u2192 \ud83d\udee2\ufe0f Stauseen \u2192 \ud83d\udd04\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/pleion.it\/wp-content\/uploads\/2026\/04\/cropped-logo-small-dark.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/pleion.it\\\/de\\\/pleihome-konfigurator\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/pleion.it\\\/de\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/pleion.it\\\/de\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/pleion.it\\\/de\\\/pleihome-konfigurator\\\/#listItem\",\"name\":\"PleiHome-Konfigurator\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/pleion.it\\\/de\\\/pleihome-konfigurator\\\/#listItem\",\"position\":2,\"name\":\"PleiHome-Konfigurator\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/pleion.it\\\/de\\\/#listItem\",\"name\":\"Home\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/pleion.it\\\/de\\\/#organization\",\"name\":\"Pleion\",\"description\":\"Solare Termico per Produzione di Acqua Sanitaria\",\"url\":\"https:\\\/\\\/pleion.it\\\/de\\\/\",\"email\":\"info@pleion.it\",\"telephone\":\"+390452375112\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/pleion.it\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/pleion-logo-dark-2.png\",\"@id\":\"https:\\\/\\\/pleion.it\\\/de\\\/pleihome-konfigurator\\\/#organizationLogo\",\"width\":873,\"height\":175,\"caption\":\"logo pleion\"},\"image\":{\"@id\":\"https:\\\/\\\/pleion.it\\\/de\\\/pleihome-konfigurator\\\/#organizationLogo\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/PleionItalia\\\/\",\"https:\\\/\\\/www.instagram.com\\\/pleion_italia\\\/\",\"https:\\\/\\\/www.youtube.com\\\/@PleionIt\"],\"address\":{\"@type\":\"PostalAddress\",\"streetAddress\":\"Via Broggio, 311\",\"addressLocality\":\"Isola Rizza\",\"addressRegion\":\"VR\",\"postalCode\":\"37050\",\"addressCountry\":\"IT\"},\"legalName\":\"Pleion S.p.A.\",\"vatID\":\"IT03820120230\",\"contactPoint\":[{\"@type\":\"ContactPoint\",\"contactType\":\"customer service\",\"telephone\":\"+390442320295\",\"email\":\"info@pleion.it\"}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/pleion.it\\\/de\\\/pleihome-konfigurator\\\/#webpage\",\"url\":\"https:\\\/\\\/pleion.it\\\/de\\\/pleihome-konfigurator\\\/\",\"name\":\"PleiHome-Konfigurator - Pleion\",\"description\":\"PleIHome Konfigurator f\\u00fcr Kundenpakete Schritt 1 von 7 \\ud83d\\udc64 Kundendaten Geben Sie die Kundendaten ein, um den Abschlussbericht individuell anzupassen. \\u2139\\ufe0f Dieser Konfigurator f\\u00fchrt Sie Schritt f\\u00fcr Schritt durch die Auswahl der f\\u00fcr Ihre Anlage erforderlichen Smart-Komponenten. Am Ende erhalten Sie eine genaue Liste der zu installierenden Ger\\u00e4te. \\ud83d\\udd25 Generatoren \\u2192 \\ud83d\\udee2\\ufe0f Stauseen \\u2192 \\ud83d\\udd04\",\"inLanguage\":\"de-DE\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/pleion.it\\\/de\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/pleion.it\\\/de\\\/pleihome-konfigurator\\\/#breadcrumblist\"},\"datePublished\":\"2026-07-21T11:36:35+02:00\",\"dateModified\":\"2026-07-22T12:09:21+02:00\",\"publisher\":{\"@id\":\"https:\\\/\\\/pleion.it\\\/de\\\/#organization\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/pleion.it\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/pleion.it\\\/de\\\/\",\"name\":\"Pleion\",\"description\":\"Solare Termico per Produzione di Acqua Sanitaria\",\"inLanguage\":\"de-DE\",\"publisher\":{\"@id\":\"https:\\\/\\\/pleion.it\\\/de\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO Pro -->\r\n\t\t<title>PleiHome-Konfigurator - Pleion<\/title>\n\n","aioseo_head_json":{"title":"PleiHome-Konfigurator - Pleion","description":"PleIHome Konfigurator f\u00fcr Kundenpakete Schritt 1 von 7 \ud83d\udc64 Kundendaten Geben Sie die Kundendaten ein, um den Abschlussbericht individuell anzupassen. \u2139\ufe0f Dieser Konfigurator f\u00fchrt Sie Schritt f\u00fcr Schritt durch die Auswahl der f\u00fcr Ihre Anlage erforderlichen Smart-Komponenten. Am Ende erhalten Sie eine genaue Liste der zu installierenden Ger\u00e4te. \ud83d\udd25 Generatoren \u2192 \ud83d\udee2\ufe0f Stauseen \u2192 \ud83d\udd04","canonical_url":"https:\/\/pleion.it\/de\/pleihome-konfigurator\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"https:\/\/pleion.it\/de\/pleihome-konfigurator\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/pleion.it\/de\/#listItem","position":1,"name":"Home","item":"https:\/\/pleion.it\/de\/","nextItem":{"@type":"ListItem","@id":"https:\/\/pleion.it\/de\/pleihome-konfigurator\/#listItem","name":"PleiHome-Konfigurator"}},{"@type":"ListItem","@id":"https:\/\/pleion.it\/de\/pleihome-konfigurator\/#listItem","position":2,"name":"PleiHome-Konfigurator","previousItem":{"@type":"ListItem","@id":"https:\/\/pleion.it\/de\/#listItem","name":"Home"}}]},{"@type":"Organization","@id":"https:\/\/pleion.it\/de\/#organization","name":"Pleion","description":"Solare Termico per Produzione di Acqua Sanitaria","url":"https:\/\/pleion.it\/de\/","email":"info@pleion.it","telephone":"+390452375112","logo":{"@type":"ImageObject","url":"https:\/\/pleion.it\/wp-content\/uploads\/2026\/04\/pleion-logo-dark-2.png","@id":"https:\/\/pleion.it\/de\/pleihome-konfigurator\/#organizationLogo","width":873,"height":175,"caption":"logo pleion"},"image":{"@id":"https:\/\/pleion.it\/de\/pleihome-konfigurator\/#organizationLogo"},"sameAs":["https:\/\/www.facebook.com\/PleionItalia\/","https:\/\/www.instagram.com\/pleion_italia\/","https:\/\/www.youtube.com\/@PleionIt"],"address":{"@type":"PostalAddress","streetAddress":"Via Broggio, 311","addressLocality":"Isola Rizza","addressRegion":"VR","postalCode":"37050","addressCountry":"IT"},"legalName":"Pleion S.p.A.","vatID":"IT03820120230","contactPoint":[{"@type":"ContactPoint","contactType":"customer service","telephone":"+390442320295","email":"info@pleion.it"}]},{"@type":"WebPage","@id":"https:\/\/pleion.it\/de\/pleihome-konfigurator\/#webpage","url":"https:\/\/pleion.it\/de\/pleihome-konfigurator\/","name":"PleiHome-Konfigurator - Pleion","description":"PleIHome Konfigurator f\u00fcr Kundenpakete Schritt 1 von 7 \ud83d\udc64 Kundendaten Geben Sie die Kundendaten ein, um den Abschlussbericht individuell anzupassen. \u2139\ufe0f Dieser Konfigurator f\u00fchrt Sie Schritt f\u00fcr Schritt durch die Auswahl der f\u00fcr Ihre Anlage erforderlichen Smart-Komponenten. Am Ende erhalten Sie eine genaue Liste der zu installierenden Ger\u00e4te. \ud83d\udd25 Generatoren \u2192 \ud83d\udee2\ufe0f Stauseen \u2192 \ud83d\udd04","inLanguage":"de-DE","isPartOf":{"@id":"https:\/\/pleion.it\/de\/#website"},"breadcrumb":{"@id":"https:\/\/pleion.it\/de\/pleihome-konfigurator\/#breadcrumblist"},"datePublished":"2026-07-21T11:36:35+02:00","dateModified":"2026-07-22T12:09:21+02:00","publisher":{"@id":"https:\/\/pleion.it\/de\/#organization"}},{"@type":"WebSite","@id":"https:\/\/pleion.it\/de\/#website","url":"https:\/\/pleion.it\/de\/","name":"Pleion","description":"Solare Termico per Produzione di Acqua Sanitaria","inLanguage":"de-DE","publisher":{"@id":"https:\/\/pleion.it\/de\/#organization"}}]},"og:locale":"de_DE","og:site_name":"Pleion - Solare Termico per Produzione di Acqua Sanitaria","og:type":"article","og:title":"PleiHome-Konfigurator - Pleion","og:description":"PleIHome Konfigurator f\u00fcr Kundenpakete Schritt 1 von 7 \ud83d\udc64 Kundendaten Geben Sie die Kundendaten ein, um den Abschlussbericht individuell anzupassen. \u2139\ufe0f Dieser Konfigurator f\u00fchrt Sie Schritt f\u00fcr Schritt durch die Auswahl der f\u00fcr Ihre Anlage erforderlichen Smart-Komponenten. Am Ende erhalten Sie eine genaue Liste der zu installierenden Ger\u00e4te. \ud83d\udd25 Generatoren \u2192 \ud83d\udee2\ufe0f Stauseen \u2192 \ud83d\udd04","og:url":"https:\/\/pleion.it\/de\/pleihome-konfigurator\/","og:image":"https:\/\/pleion.it\/wp-content\/uploads\/2026\/04\/cropped-logo-small-dark.png","og:image:secure_url":"https:\/\/pleion.it\/wp-content\/uploads\/2026\/04\/cropped-logo-small-dark.png","og:image:width":393,"og:image:height":78,"article:published_time":"2026-07-21T09:36:35+00:00","article:modified_time":"2026-07-22T10:09:21+00:00","article:publisher":"https:\/\/www.facebook.com\/PleionItalia\/","twitter:card":"summary_large_image","twitter:title":"PleiHome-Konfigurator - Pleion","twitter:description":"PleIHome Konfigurator f\u00fcr Kundenpakete Schritt 1 von 7 \ud83d\udc64 Kundendaten Geben Sie die Kundendaten ein, um den Abschlussbericht individuell anzupassen. \u2139\ufe0f Dieser Konfigurator f\u00fchrt Sie Schritt f\u00fcr Schritt durch die Auswahl der f\u00fcr Ihre Anlage erforderlichen Smart-Komponenten. Am Ende erhalten Sie eine genaue Liste der zu installierenden Ger\u00e4te. \ud83d\udd25 Generatoren \u2192 \ud83d\udee2\ufe0f Stauseen \u2192 \ud83d\udd04","twitter:image":"https:\/\/pleion.it\/wp-content\/uploads\/2026\/04\/cropped-logo-small-dark.png"},"aioseo_meta_data":{"post_id":"31459","title":"#post_title #separator_sa #site_title","description":"#post_content","keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_custom_url":null,"og_image_custom_fields":null,"og_image_url":null,"og_image_width":null,"og_image_height":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_image_url":null,"twitter_title":null,"twitter_description":null,"schema_type":"default","schema_type_options":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"WebPage","isEnabled":true},"graphs":[]},"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"breadcrumb_settings":null,"seo_analyzer_scan_date":"2026-07-22 10:23:08","created":"2026-07-22 10:09:19","updated":"2026-07-22 12:18:26","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t<a href=\"https:\/\/pleion.it\/de\/\" title=\"Home\">Home<\/a>\n<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\tPleiHome-Konfigurator\n<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/pleion.it\/de\/"},{"label":"PleiHome-Konfigurator","link":"https:\/\/pleion.it\/de\/pleihome-konfigurator\/"}],"_links":{"self":[{"href":"https:\/\/pleion.it\/de\/wp-json\/wp\/v2\/pages\/31459","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pleion.it\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/pleion.it\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/pleion.it\/de\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/pleion.it\/de\/wp-json\/wp\/v2\/comments?post=31459"}],"version-history":[{"count":2,"href":"https:\/\/pleion.it\/de\/wp-json\/wp\/v2\/pages\/31459\/revisions"}],"predecessor-version":[{"id":31470,"href":"https:\/\/pleion.it\/de\/wp-json\/wp\/v2\/pages\/31459\/revisions\/31470"}],"wp:attachment":[{"href":"https:\/\/pleion.it\/de\/wp-json\/wp\/v2\/media?parent=31459"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}