{"id":10056,"date":"2026-07-08T08:27:44","date_gmt":"2026-07-08T14:27:44","guid":{"rendered":"https:\/\/kaffee.com.sv\/elementor-10051\/"},"modified":"2026-09-28T07:43:09","modified_gmt":"2026-09-28T13:43:09","slug":"elementor-10051","status":"publish","type":"page","link":"https:\/\/kaffee.com.sv\/en\/elementor-10051\/","title":{"rendered":"Elementor #10051"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"10056\" class=\"elementor elementor-10056 elementor-10051\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e30e86c e-con e-atomic-element e-flexbox-base e-default-div e-54ad3d0 \" data-id=\"e30e86c\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"e30e86c\" data-e-type=\"e-flexbox\" data-id=\"e30e86c\">\n    \t\t<div class=\"elementor-element elementor-element-f7ff6fa elementor-widget__width-initial elementor-widget-mobile__width-initial elementor-widget elementor-widget-theme-site-logo elementor-widget-image\" data-id=\"f7ff6fa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"theme-site-logo.default\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/kaffee.com.sv\/en\/\">\n\t\t\t<img decoding=\"async\" src=\"https:\/\/kaffee.com.sv\/wp-content\/themes\/woodmart\/images\/lazy.svg\" data-src=\"https:\/\/media.kaffee.com.sv\/2024\/02\/Logo-H-Kaffee-Full-Color-Fondo-claro.svg\" class=\" wd-lazy-fade attachment-full size-full wp-image-1349\" alt=\"\" \/>\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-702f5e7 elementor-widget elementor-widget-html\" data-id=\"702f5e7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div id=\"kaffee-quiz-container\">\r\n  <style>\r\n    \/* Contenedor Principal Adaptable *\/\r\n    #kaffee-quiz-container {\r\n      max-width: 800px;\r\n      width: 100%;\r\n      margin: 20px auto;\r\n      font-family: var(--wd-text-font, Arial, sans-serif);\r\n      font-weight: var(--wd-text-font-weight, 400);\r\n      font-size: var(--wd-text-font-size, 16px);\r\n      background: #fdfbf7;\r\n      border: var(--wd-otl-width, 2px) var(--wd-otl-style, solid) #e8e2dc;\r\n      border-radius: var(--wd-brd-radius, 10px);\r\n      padding: 35px;\r\n      box-shadow: 0 10px 30px rgba(56, 31, 16, 0.05);\r\n      color: var(--wd-text-color, #381F10);\r\n      box-sizing: border-box;\r\n    }\r\n    \r\n    \/* Barra de Progreso *\/\r\n    .kaffee-progress-wrapper { background: #ebe5df; height: 6px; border-radius: 3px; margin-bottom: 30px; overflow: hidden; }\r\n    .kaffee-progress-bar { height: 100%; background: var(--wd-primary-color, rgb(186, 105, 52)); width: 20%; transition: width 0.3s ease; }\r\n\r\n    \/* Estructura de Pasos *\/\r\n    .kaffee-step { display: none; }\r\n    .kaffee-step.active { display: block; animation: kaffeeFade 0.4s ease forwards; }\r\n    @keyframes kaffeeFade { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }\r\n    \r\n    \/* T\u00edtulos *\/\r\n    .kaffee-question { \r\n      font-family: var(--wd-title-font, Arial, sans-serif); \r\n      font-weight: var(--wd-title-font-weight, 700); \r\n      font-size: 1.4rem; \r\n      margin-bottom: 25px; \r\n      color: var(--wd-title-color, rgb(112, 63, 31)); \r\n      line-height: 1.3; \r\n    }\r\n    \r\n    \/* Opciones y Contenedores *\/\r\n    .kaffee-options { display: flex; flex-direction: column; gap: 14px; }\r\n    .kaffee-options label {\r\n      display: flex; align-items: flex-start;\r\n      background: #ffffff; border: 2px solid #e8e2dc; border-radius: var(--wd-brd-radius, 10px);\r\n      padding: 16px 20px; cursor: pointer; transition: all 0.25s ease;\r\n      color: var(--wd-text-color, #381F10); box-sizing: border-box; width: 100%;\r\n    }\r\n    .kaffee-options label:hover { border-color: var(--wd-primary-color, rgb(186, 105, 52)); background: #fffcf9; }\r\n    \r\n    \/* Inputs *\/\r\n    .kaffee-options input[type=\"radio\"], \r\n    .kaffee-options input[type=\"checkbox\"] { \r\n      margin-top: 4px; margin-right: 14px; flex-shrink: 0; \r\n      accent-color: var(--wd-primary-color, rgb(186, 105, 52)); transform: scale(1.2); \r\n    }\r\n    \r\n    .kaffee-text-block { flex: 1; line-height: 1.4; }\r\n    .kaffee-opt-title { font-size: 1rem; font-weight: 600; color: var(--wd-text-color, #381F10); }\r\n    \r\n    \/* Expansi\u00f3n Din\u00e1mica Animada *\/\r\n    .kaffee-opt-desc { \r\n      font-size: 0.88rem; color: #666; margin-top: 0;\r\n      max-height: 0; overflow: hidden; opacity: 0; \r\n      transition: max-height 0.3s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.25s ease, margin 0.2s ease;\r\n    }\r\n    .kaffee-options input[type=\"radio\"]:checked ~ .kaffee-text-block .kaffee-opt-desc,\r\n    .kaffee-options input[type=\"checkbox\"]:checked ~ .kaffee-text-block .kaffee-opt-desc { \r\n      max-height: 100px; opacity: 1; margin-top: 8px; margin-bottom: 2px;\r\n    }\r\n\r\n    \/* Botones seg\u00fan Variables Globales *\/\r\n    .kaffee-btn { \r\n      font-family: var(--btn-font-family, Arial); \r\n      font-weight: var(--btn-font-weight, 500);\r\n      text-transform: var(--btn-transform, none);\r\n      color: #ffffff; border: none; padding: 0 24px; font-size: 1rem; \r\n      border-radius: var(--wd-brd-radius, 10px); cursor: pointer; width: 100%; \r\n      margin-top: 25px; transition: all 0.2s ease; text-align: center; \r\n      display: inline-flex; align-items: center; justify-content: center;\r\n      height: 52px; line-height: 1; box-sizing: border-box; text-decoration: none;\r\n    }\r\n    .kaffee-btn-next { \r\n      background: var(--btn-accented-bgcolor, rgb(186, 105, 52)); \r\n    }\r\n    .kaffee-btn-next:hover { \r\n      background: var(--btn-accented-bgcolor-hover, rgb(150, 80, 35)); \r\n    }\r\n    .kaffee-btn-wsp { \r\n      background: #25D366; \r\n      font-weight: 700; \r\n      margin-top: 15px; \r\n      display: inline-flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      gap: 10px;\r\n    }\r\n    .kaffee-btn-wsp:hover { background: #1ebd5c; }\r\n    .kaffee-btn-wsp.kaffee-btn-disabled {\r\n      background: #d1c8be;\r\n      color: #7d7268;\r\n      cursor: not-allowed;\r\n      box-shadow: none;\r\n      transform: none;\r\n    }\r\n    .kaffee-btn-wsp.kaffee-btn-disabled:hover {\r\n      background: #d1c8be;\r\n    }\r\n    .kaffee-btn-wsp.kaffee-btn-disabled .kaffee-wsp-icon {\r\n      fill: #7d7268;\r\n    }\r\n    .kaffee-wsp-icon {\r\n      width: 22px;\r\n      height: 22px;\r\n      fill: #ffffff;\r\n      flex-shrink: 0;\r\n      transition: fill 0.2s ease;\r\n    }\r\n    \r\n    \/* Iconos SVG estilo Lucide *\/\r\n    .lucide-icon {\r\n      width: 16px;\r\n      height: 16px;\r\n      stroke: currentColor;\r\n      stroke-width: 2.2;\r\n      stroke-linecap: round;\r\n      stroke-linejoin: round;\r\n      fill: none;\r\n      display: inline-block;\r\n      vertical-align: middle;\r\n      flex-shrink: 0;\r\n    }\r\n    .lucide-icon-sm {\r\n      width: 14px;\r\n      height: 14px;\r\n    }\r\n    .kaffee-card { \r\n      background: #ffffff; \r\n      border-radius: 14px; \r\n      padding: 26px 26px 22px 26px; \r\n      margin-bottom: 22px; \r\n      border: 2px solid #e5ded6; \r\n      text-align: left; \r\n      transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1); \r\n      position: relative;\r\n      cursor: pointer;\r\n      user-select: none;\r\n    }\r\n    .kaffee-card:hover {\r\n      border-color: #d48b38;\r\n      transform: translateY(-2px);\r\n    }\r\n    \r\n    \/* Header de selecci\u00f3n dentro de cada tarjeta *\/\r\n    .kaffee-card-topbar {\r\n      display: flex;\r\n      justify-content: space-between;\r\n      align-items: center;\r\n      gap: 12px;\r\n      margin-bottom: 12px;\r\n      flex-wrap: wrap;\r\n    }\r\n    .kaffee-card-selector {\r\n      display: inline-flex;\r\n      align-items: center;\r\n      gap: 8px;\r\n      font-size: 0.85rem;\r\n      font-weight: 700;\r\n      color: #5f5247;\r\n      background: #f3ece4;\r\n      border: 1.5px solid #dcd4cb;\r\n      padding: 6px 14px;\r\n      border-radius: 6px;\r\n      transition: all 0.2s ease;\r\n      cursor: pointer;\r\n      user-select: none;\r\n    }\r\n    .kaffee-selector-icon {\r\n      width: 17px;\r\n      height: 17px;\r\n      border-radius: 4px;\r\n      border: 1.5px solid #a89a8c;\r\n      background: #ffffff;\r\n      display: inline-flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      transition: all 0.2s ease;\r\n      flex-shrink: 0;\r\n    }\r\n    \r\n    \/* Estado Seleccionado *\/\r\n    .kaffee-card.is-selected {\r\n      border-color: #ba6934;\r\n      background: #fffdfa;\r\n      box-shadow: 0 10px 30px rgba(186, 105, 52, 0.14);\r\n    }\r\n    .kaffee-card.is-selected .kaffee-card-selector {\r\n      background: #ba6934;\r\n      border-color: #ba6934;\r\n      color: #ffffff;\r\n      box-shadow: 0 2px 6px rgba(186, 105, 52, 0.25);\r\n    }\r\n    .kaffee-card.is-selected .kaffee-selector-icon {\r\n      background: #ffffff;\r\n      border-color: #ffffff;\r\n      color: #ba6934;\r\n    }\r\n\r\n    \/* Banner de Alerta El\u00e9ctrica 220V Visible *\/\r\n    .kaffee-voltage-alert-banner {\r\n      display: flex;\r\n      align-items: center;\r\n      gap: 8px;\r\n      background: #fff8eb;\r\n      border: 1.5px solid #e0b252;\r\n      color: #8c5b08;\r\n      font-size: 0.82rem;\r\n      font-weight: 700;\r\n      padding: 6px 12px;\r\n      border-radius: 6px;\r\n      margin: 8px 0;\r\n    }\r\n    .kaffee-voltage-alert-banner .lucide-icon {\r\n      color: #d48b38;\r\n      flex-shrink: 0;\r\n    }\r\n\r\n    \/* Banner de Asesor\u00eda cuando una opci\u00f3n supera el presupuesto inicial *\/\r\n    .kaffee-budget-advisory-banner {\r\n      display: flex;\r\n      align-items: center;\r\n      gap: 8px;\r\n      background: #fdf6ec;\r\n      border: 1.5px solid #e6a23c;\r\n      color: #7b4b08;\r\n      font-size: 0.82rem;\r\n      font-weight: 600;\r\n      padding: 6px 12px;\r\n      border-radius: 6px;\r\n      margin: 6px 0;\r\n      line-height: 1.35;\r\n    }\r\n    .kaffee-budget-advisory-banner .lucide-icon {\r\n      color: #c97818;\r\n      flex-shrink: 0;\r\n    }\r\n\r\n    \/* Lista T\u00e9cnica Inline en Acorde\u00f3n Colapsado *\/\r\n    .kaffee-inline-checklist {\r\n      display: flex;\r\n      flex-wrap: wrap;\r\n      align-items: center;\r\n      gap: 6px 8px;\r\n      font-size: 0.82rem;\r\n      color: #55473d;\r\n      margin: 10px 0 6px 0;\r\n      line-height: 1.4;\r\n    }\r\n    .kaffee-inline-item {\r\n      display: inline-flex;\r\n      align-items: center;\r\n      gap: 4px;\r\n      font-weight: 600;\r\n    }\r\n    .kaffee-inline-item.icon-yes { color: #2e7d32; }\r\n    .kaffee-inline-item.icon-warn { color: #b7791f; }\r\n    .kaffee-inline-sep {\r\n      color: #cbbfae;\r\n      font-weight: bold;\r\n    }\r\n\r\n    \/* Bot\u00f3n de Acorde\u00f3n con Zona T\u00e1ctil Amplia *\/\r\n    .kaffee-accordion-toggle {\r\n      width: 100%;\r\n      padding: 11px 16px;\r\n      box-sizing: border-box;\r\n      background: #f8f4ef;\r\n      border-top: 1px dashed #ded5cb;\r\n      margin-top: 12px;\r\n      border-radius: 0 0 8px 8px;\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      gap: 8px;\r\n      color: #ba6934;\r\n      font-weight: 700;\r\n      font-size: 0.86rem;\r\n      cursor: pointer;\r\n      transition: background-color 0.2s ease, color 0.2s ease;\r\n      user-select: none;\r\n    }\r\n    .kaffee-accordion-toggle:hover {\r\n      background: #eee5dc;\r\n      color: #8f4616;\r\n    }\r\n    .kaffee-toggle-collapse {\r\n      border-top: 1px dashed #ded5cb;\r\n      margin-top: 16px;\r\n      border-radius: 6px;\r\n    }\r\n    .kaffee-card-body {\r\n      display: none;\r\n      margin-top: 14px;\r\n      padding-top: 14px;\r\n      border-top: 1px solid #eee8e0;\r\n    }\r\n    .kaffee-card-body.is-open {\r\n      display: block;\r\n    }\r\n    \r\n    \/* Tarjeta Recomendaci\u00f3n Ideal (Destacada) *\/\r\n    .kaffee-card-primary { \r\n      border-top: 8px solid #d48b38; \r\n    }\r\n    .kaffee-card-primary.is-selected {\r\n      border-color: #d48b38;\r\n      border-top-width: 8px;\r\n      box-shadow: 0 14px 38px rgba(212, 139, 56, 0.22);\r\n    }\r\n    .kaffee-card-primary .kaffee-machine-name { \r\n      font-size: 1.5rem; \r\n      color: #703f1f; \r\n      letter-spacing: -0.3px; \r\n    }\r\n    .kaffee-card-primary .kaffee-machine-desc { \r\n      font-size: 0.96rem; \r\n      line-height: 1.55; \r\n      color: #4a3b32; \r\n    }\r\n    \r\n    \/* Tarjeta Secundaria \/ Presupuesto *\/\r\n    .kaffee-card-secondary { \r\n      border-top: 5px solid #ad9f92; \r\n      background: #fbf9f6; \r\n      padding: 22px 24px 18px 24px; \r\n    }\r\n    .kaffee-card-secondary.is-selected {\r\n      border-color: #ba6934;\r\n      border-top: 5px solid #ba6934;\r\n      background: #fffefb;\r\n    }\r\n    .kaffee-card-secondary .kaffee-machine-name { font-size: 1.25rem; color: #5c4738; }\r\n    .kaffee-card-secondary .kaffee-machine-desc { font-size: 0.88rem; color: #6e655f; margin-bottom: 12px; }\r\n    \r\n    .kaffee-tag { \r\n      font-size: 0.72rem; \r\n      text-transform: uppercase; \r\n      letter-spacing: 0.7px; \r\n      font-weight: 800; \r\n      padding: 4px 11px; \r\n      border-radius: 20px; \r\n      display: inline-block; \r\n      line-height: 1.25;\r\n    }\r\n    .tag-ideal { \r\n      background: linear-gradient(135deg, #d48b38 0%, #b86b24 100%); \r\n      color: #ffffff; \r\n      box-shadow: 0 2px 8px rgba(212, 139, 56, 0.35); \r\n    }\r\n    .tag-alt { \r\n      background: #eae3da; \r\n      color: #6b6055; \r\n    }\r\n    \r\n    .kaffee-machine-name { font-family: var(--wd-title-font, Arial); font-size: 1.4rem; font-weight: 700; color: var(--wd-title-color, rgb(112, 63, 31)); margin-bottom: 10px; }\r\n    .kaffee-machine-desc { font-size: 0.95rem; line-height: 1.5; margin-bottom: 18px; color: #555; }\r\n    \r\n    \/* Alertas Globales *\/\r\n    .kaffee-alert { background: #fffcf4; border-left: 4px solid var(--notices-warning-bg, #E0B252); padding: 13px 16px; font-size: 0.88rem; margin-bottom: 20px; border-radius: 0 6px 6px 0; color: #66501c; line-height: 1.45; }\r\n    \r\n    \/* Secci\u00f3n de Recomendaciones \/ Notas Compactas por M\u00e1quina (al pie del card) *\/\r\n    .kaffee-card-notes {\r\n      margin-top: 16px;\r\n      padding-top: 14px;\r\n      border-top: 1px dashed #e3dbd1;\r\n      display: flex;\r\n      flex-direction: column;\r\n      gap: 8px;\r\n    }\r\n    .kaffee-note-item {\r\n      display: flex;\r\n      align-items: flex-start;\r\n      gap: 8px;\r\n      font-size: 0.82rem;\r\n      line-height: 1.4;\r\n      padding: 8px 12px;\r\n      border-radius: 6px;\r\n    }\r\n    .kaffee-note-consultive {\r\n      background: #fdf8f2;\r\n      border-left: 3px solid #d48b38;\r\n      color: #633c1f;\r\n    }\r\n    .kaffee-note-water {\r\n      background: #f1f8fc;\r\n      border-left: 3px solid #25759f;\r\n      color: #174f6e;\r\n    }\r\n    .kaffee-note-electric {\r\n      background: #fef9ed;\r\n      border-left: 3px solid #e0b252;\r\n      color: #6a5316;\r\n    }\r\n    .kaffee-note-icon {\r\n      font-size: 0.95rem;\r\n      flex-shrink: 0;\r\n      margin-top: 1px;\r\n    }\r\n    \r\n    \/* Checklist T\u00e9cnico Compacto en Grid Responsivo *\/\r\n    .kaffee-checklist { \r\n      margin-top: 18px; \r\n      padding-top: 18px; \r\n      border-top: 1px dashed #e3dbd1; \r\n    }\r\n    .kaffee-checklist-title { \r\n      font-weight: 700; \r\n      font-size: 0.86rem; \r\n      text-transform: uppercase; \r\n      letter-spacing: 0.6px; \r\n      margin-bottom: 12px; \r\n      color: #6d5849; \r\n      display: block; \r\n    }\r\n    .kaffee-check-grid {\r\n      display: grid;\r\n      grid-template-columns: repeat(3, 1fr);\r\n      gap: 10px;\r\n    }\r\n    .kaffee-check-card {\r\n      background: #ffffff;\r\n      border: 1px solid #ebe5df;\r\n      border-radius: 8px;\r\n      padding: 9px 11px;\r\n      display: flex;\r\n      flex-direction: column;\r\n      gap: 3px;\r\n      font-size: 0.82rem;\r\n      line-height: 1.35;\r\n      transition: background-color 0.2s ease;\r\n    }\r\n    .kaffee-card-secondary .kaffee-check-card {\r\n      background: #f7f3ee;\r\n      border-color: #e5ded6;\r\n      font-size: 0.79rem;\r\n      padding: 7px 9px;\r\n    }\r\n    .kaffee-check-header {\r\n      display: flex;\r\n      align-items: center;\r\n      gap: 6px;\r\n      font-weight: 700;\r\n      color: #381F10;\r\n      font-size: 0.82rem;\r\n    }\r\n    .kaffee-check-icon { font-size: 0.95rem; font-weight: bold; }\r\n    .icon-yes { color: var(--notices-success-bg, #459647); }\r\n    .icon-warn { color: var(--notices-warning-bg, #E0B252); }\r\n    .kaffee-check-desc {\r\n      color: #635850;\r\n      font-size: 0.78rem;\r\n    }\r\n\r\n    .kaffee-restart { background: transparent; color: #777; border: none; font-size: 0.88rem; margin-top: 20px; cursor: pointer; text-decoration: underline; display: block; width: 100%; text-align: center; }\r\n\r\n    \/* Navegaci\u00f3n entre pasos (Atr\u00e1s \/ Siguiente) *\/\r\n    .kaffee-step-nav {\r\n      display: flex;\r\n      justify-content: space-between;\r\n      align-items: stretch;\r\n      gap: 12px;\r\n      margin-top: 25px;\r\n      width: 100%;\r\n    }\r\n    .kaffee-btn-prev {\r\n      background: #f4ede5;\r\n      color: #635850;\r\n      border: 1.5px solid #d5cbbf;\r\n      width: auto;\r\n      min-width: 110px;\r\n      padding: 0 20px;\r\n      font-size: 0.95rem;\r\n      font-weight: 700;\r\n      border-radius: var(--wd-brd-radius, 10px);\r\n      cursor: pointer;\r\n      display: inline-flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      height: 52px;\r\n      line-height: 1;\r\n      margin: 0;\r\n      box-sizing: border-box;\r\n      transition: all 0.2s ease;\r\n      box-shadow: 0 2px 4px rgba(0,0,0,0.03);\r\n    }\r\n    .kaffee-btn-prev:hover {\r\n      background: #eae1d7;\r\n      color: #381F10;\r\n      border-color: #ba6934;\r\n    }\r\n    .kaffee-step-nav .kaffee-btn-next {\r\n      margin-top: 0;\r\n      flex: 1 1 auto;\r\n      width: 100%;\r\n      max-width: none;\r\n      height: 52px;\r\n      box-sizing: border-box;\r\n    }\r\n\r\n    \/* Optimizaciones Responsivas: de 3 a 2 columnas en tablets, 1 en m\u00f3viles *\/\r\n    @media (max-width: 768px) {\r\n      .kaffee-check-grid { grid-template-columns: repeat(2, 1fr); gap: 8px; }\r\n    }\r\n    @media (max-width: 600px) {\r\n      #kaffee-quiz-container { padding: 20px 16px; margin: 10px auto; }\r\n      .kaffee-card-primary { transform: none; padding: 20px 16px; }\r\n      .kaffee-btn, .kaffee-btn-prev, .kaffee-step-nav .kaffee-btn-next { height: 48px; }\r\n      .kaffee-btn-prev { min-width: 85px; padding: 0 14px; font-size: 0.88rem; }\r\n      .kaffee-card-secondary { padding: 18px 16px; }\r\n      .kaffee-card-topbar {\r\n        flex-direction: column;\r\n        align-items: flex-start;\r\n        gap: 8px;\r\n        margin-bottom: 12px;\r\n      }\r\n      .kaffee-tag {\r\n        font-size: 0.68rem;\r\n        letter-spacing: 0.5px;\r\n        padding: 4px 9px;\r\n      }\r\n      .kaffee-card-selector {\r\n        width: 100%;\r\n        box-sizing: border-box;\r\n        justify-content: center;\r\n        padding: 8px 12px;\r\n        font-size: 0.85rem;\r\n      }\r\n      .kaffee-step-nav {\r\n        gap: 8px;\r\n      }\r\n      .kaffee-btn-prev {\r\n        min-width: 85px;\r\n        padding: 12px 14px;\r\n        font-size: 0.9rem;\r\n      }\r\n      .kaffee-card-primary .kaffee-machine-name { font-size: 1.3rem; }\r\n      .kaffee-question { font-size: 1.15rem; margin-bottom: 18px; }\r\n      .kaffee-options label { padding: 12px 14px; gap: 4px; }\r\n      .kaffee-options input[type=\"radio\"], .kaffee-options input[type=\"checkbox\"] { margin-right: 10px; transform: scale(1.1); }\r\n      .kaffee-opt-title { font-size: 0.92rem; line-height: 1.3; }\r\n      .kaffee-opt-desc { font-size: 0.82rem; }\r\n      .kaffee-btn { padding: 14px 20px; font-size: 0.95rem; margin-top: 18px; }\r\n      .kaffee-check-grid { grid-template-columns: 1fr; gap: 7px; }\r\n    }\r\n  <\/style>\r\n\r\n  <div class=\"kaffee-progress-wrapper\" id=\"progress-wrapper\">\r\n    <div class=\"kaffee-progress-bar\" id=\"progress-bar\"><\/div>\r\n  <\/div>\r\n\r\n  <!-- Paso 1: Entorno (De menor a mayor intensidad operativa) -->\r\n  <div class=\"kaffee-step active\" id=\"step-1\">\r\n    <div class=\"kaffee-question\">1. Where will the coffee machine be installed?<\/div>\r\n    <div class=\"kaffee-options\">\r\n      <label><input type=\"radio\" name=\"q1\" value=\"Hogar\" data-label=\"Hogar \/ Despacho u oficina peque\u00f1a\"> <div class=\"kaffee-text-block\"><div class=\"kaffee-opt-title\">Home \/ Home Office or Small Office<\/div><div class=\"kaffee-opt-desc\">Space-efficient venues that prioritize gourmet quality in a compact setting.<\/div><\/div><\/label>\r\n      <label><input type=\"radio\" name=\"q1\" value=\"Airbnb\/Oficina\" data-label=\"Airbnb \/ Oficinas\"> <div class=\"kaffee-text-block\"><div class=\"kaffee-opt-title\">Airbnb \/ Offices<\/div><div class=\"kaffee-opt-desc\">Environments where users prepare their own drinks on their own.<\/div><\/div><\/label>\r\n      <label><input type=\"radio\" name=\"q1\" value=\"Restaurante\" data-label=\"Restaurante \/ Cafeter\u00eda \/ Hotel\"> <div class=\"kaffee-text-block\"><div class=\"kaffee-opt-title\">Restaurant \/ Caf\u00e9 \/ Hotel<\/div><div class=\"kaffee-opt-desc\">Focus on high-quality brews, operational consistency, and prompt customer service.<\/div><\/div><\/label>\r\n      <label><input type=\"radio\" name=\"q1\" value=\"Conveniencia\" data-label=\"Tienda de conveniencia \/ Gasolinera\"> <div class=\"kaffee-text-block\"><div class=\"kaffee-opt-title\">Convenience Store \/ Gas Station<\/div><div class=\"kaffee-opt-desc\">High volume of continuous self-service traffic requiring maximum durability and speed.<\/div><\/div><\/label>\r\n    <\/div>\r\n    <button class=\"kaffee-btn kaffee-btn-next\" onclick=\"nextStep(2)\">Next  <svg class=\"lucide-icon lucide-icon-sm\" style=\"margin-left:6px;\" viewbox=\"0 0 24 24\"><path d=\"M5 12h14\"><\/path><path d=\"m12 5 7 7-7 7\"><\/path><\/svg><\/button>\r\n  <\/div>\r\n\r\n  <!-- Paso 2: Volumen (rangos actualizados) -->\r\n  <div class=\"kaffee-step\" id=\"step-2\">\r\n    <div class=\"kaffee-question\">2. How many cups of coffee do you estimate you'll make each day?<\/div>\r\n    <div class=\"kaffee-options\">\r\n      <label><input type=\"radio\" name=\"q2\" value=\"menos40\" data-label=\"Menos de 40 tazas\"> <div class=\"kaffee-text-block\"><div class=\"kaffee-opt-title\">Fewer than 40 cups<\/div><\/div><\/label>\r\n      <label><input type=\"radio\" name=\"q2\" value=\"40-80\" data-label=\"Entre 40 a 80 tazas\"> <div class=\"kaffee-text-block\"><div class=\"kaffee-opt-title\">Between 40 and 80 cups<\/div><\/div><\/label>\r\n      <label><input type=\"radio\" name=\"q2\" value=\"80-130\" data-label=\"Entre 80 a 130 tazas\"> <div class=\"kaffee-text-block\"><div class=\"kaffee-opt-title\">Between 80 and 130 cups<\/div><\/div><\/label>\r\n      <label><input type=\"radio\" name=\"q2\" value=\"130-150\" data-label=\"Entre 130 a 150 tazas\"> <div class=\"kaffee-text-block\"><div class=\"kaffee-opt-title\">Between 130 and 150 cups<\/div><\/div><\/label>\r\n      <label><input type=\"radio\" name=\"q2\" value=\"mas150\" data-label=\"M\u00e1s de 150 tazas\"> <div class=\"kaffee-text-block\"><div class=\"kaffee-opt-title\">More than 150 cups<\/div><\/div><\/label>\r\n    <\/div>\r\n    <div class=\"kaffee-step-nav\">\r\n      <button type=\"button\" class=\"kaffee-btn kaffee-btn-prev\" onclick=\"prevStep(2)\"><svg class=\"lucide-icon lucide-icon-sm\" style=\"margin-right:6px;\" viewbox=\"0 0 24 24\"><path d=\"m12 19-7-7 7-7\"><\/path><path d=\"M19 12H5\"><\/path><\/svg>Back<\/button>\r\n      <button type=\"button\" class=\"kaffee-btn kaffee-btn-next\" onclick=\"nextStep(3)\">Next <svg class=\"lucide-icon lucide-icon-sm\" style=\"margin-left:6px;\" viewbox=\"0 0 24 24\"><path d=\"M5 12h14\"><\/path><path d=\"m12 5 7 7-7 7\"><\/path><\/svg><\/button> \r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- Paso 3: Caracter\u00edsticas Requeridas (Selecci\u00f3n M\u00faltiple) -->\r\n  <div class=\"kaffee-step\" id=\"step-3\">\r\n    <div class=\"kaffee-question\">3. Select the features that are essential for your operation:<\/div>\r\n    <div class=\"kaffee-options\">\r\n      <label><input type=\"checkbox\" name=\"q3\" value=\"velocidad\"> <div class=\"kaffee-text-block\"><div class=\"kaffee-opt-title\">High preparation speed<\/div><div class=\"kaffee-opt-desc\">Brews coffee and froths milk simultaneously (dual thermoblock) for quick service during peak hours.<\/div><\/div><\/label>\r\n      <label><input type=\"checkbox\" name=\"q3\" value=\"autonomia_agua\"> <div class=\"kaffee-text-block\"><div class=\"kaffee-opt-title\">Large water capacity<\/div><div class=\"kaffee-opt-desc\">Large-capacity tank, connection to the water supply system (filtered water) or connection to a water jug.<\/div><\/div><\/label>\r\n      <label><input type=\"checkbox\" name=\"q3\" value=\"recetas\"> <div class=\"kaffee-text-block\"><div class=\"kaffee-opt-title\">Multiple sizes of the same drink<\/div><div class=\"kaffee-opt-desc\">Customize and calibrate recipes for different glass sizes.<\/div><\/div><\/label>\r\n      <label><input type=\"checkbox\" name=\"q3\" value=\"usuarios\"> <div class=\"kaffee-text-block\"><div class=\"kaffee-opt-title\">Custom User Profiles<\/div><div class=\"kaffee-opt-desc\">It lets you save favorite drinks and recipes for different members or collaborators.<\/div><\/div><\/label>\r\n      <label><input type=\"checkbox\" name=\"q3\" value=\"contador\"> <div class=\"kaffee-text-block\"><div class=\"kaffee-opt-title\">Tracking and Counting Served Cups<\/div><div class=\"kaffee-opt-desc\">Digital consumption log for internal control, inventory, or auditing purposes.<\/div><\/div><\/label>\r\n      <label><input type=\"checkbox\" name=\"q3\" value=\"multigrano\"> <div class=\"kaffee-text-block\"><div class=\"kaffee-opt-title\">Handling more than one type of coffee bean<\/div><div class=\"kaffee-opt-desc\">Separate hoppers for offering different varieties of coffee, as well as containers for instant ingredients (powdered milk, chocolate, etc.).<\/div><\/div><\/label>\r\n      <label><input type=\"checkbox\" name=\"q3\" value=\"software\"> <div class=\"kaffee-text-block\"><div class=\"kaffee-opt-title\">Remote Software Management and Control<\/div><div class=\"kaffee-opt-desc\">Operational monitoring and digital management of machine status in real time.<\/div><\/div><\/label>\r\n    <\/div>\r\n    <div class=\"kaffee-step-nav\">\r\n      <button type=\"button\" class=\"kaffee-btn kaffee-btn-prev\" onclick=\"prevStep(3)\"><svg class=\"lucide-icon lucide-icon-sm\" style=\"margin-right:6px;\" viewbox=\"0 0 24 24\"><path d=\"m12 19-7-7 7-7\"><\/path><path d=\"M19 12H5\"><\/path><\/svg>Back<\/button>\r\n      <button type=\"button\" class=\"kaffee-btn kaffee-btn-next\" onclick=\"nextStep(4)\">Next <svg class=\"lucide-icon lucide-icon-sm\" style=\"margin-left:6px;\" viewbox=\"0 0 24 24\"><path d=\"M5 12h14\"><\/path><path d=\"m12 5 7 7-7 7\"><\/path><\/svg><\/button> \r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- Paso 4: Voltaje -->\r\n  <div class=\"kaffee-step\" id=\"step-4\">\r\n    <div class=\"kaffee-question\">4. What voltage is available at the installation site?<\/div>\r\n    <div class=\"kaffee-options\">\r\n      <label><input type=\"radio\" name=\"q8\" value=\"110v\" data-label=\"110V\"> <div class=\"kaffee-text-block\"><div class=\"kaffee-opt-title\">110V<\/div><div class=\"kaffee-opt-desc\">A standard, conventional electrical outlet found in typical homes and offices.<\/div><\/div><\/label>\r\n      <label><input type=\"radio\" name=\"q8\" value=\"220v\" data-label=\"220V\"> <div class=\"kaffee-text-block\"><div class=\"kaffee-opt-title\">220V<\/div><div class=\"kaffee-opt-desc\">Special electrical installations for heavy machinery or industrial systems.<\/div><\/div><\/label>\r\n      <label><input type=\"radio\" name=\"q8\" value=\"indiferente\" data-label=\"Indiferente\"> <div class=\"kaffee-text-block\"><div class=\"kaffee-opt-title\">It doesn't matter \/ I can adjust it<\/div><div class=\"kaffee-opt-desc\">I have both connections available, or I can perform the necessary electrical installation.<\/div><\/div><\/label>\r\n    <\/div>\r\n    <div class=\"kaffee-step-nav\">\r\n      <button type=\"button\" class=\"kaffee-btn kaffee-btn-prev\" onclick=\"prevStep(4)\"><svg class=\"lucide-icon lucide-icon-sm\" style=\"margin-right:6px;\" viewbox=\"0 0 24 24\"><path d=\"m12 19-7-7 7-7\"><\/path><path d=\"M19 12H5\"><\/path><\/svg>Back<\/button>\r\n      <button type=\"button\" class=\"kaffee-btn kaffee-btn-next\" onclick=\"nextStep(5)\">Next <svg class=\"lucide-icon lucide-icon-sm\" style=\"margin-left:6px;\" viewbox=\"0 0 24 24\"><path d=\"M5 12h14\"><\/path><path d=\"m12 5 7 7-7 7\"><\/path><\/svg><\/button> \r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- Paso 5: Presupuesto -->\r\n  <div class=\"kaffee-step\" id=\"step-5\">\r\n    <div class=\"kaffee-question\">5. What is your estimated budget range?<\/div>\r\n    <div class=\"kaffee-options\">\r\n      <label><input type=\"radio\" name=\"q10\" value=\"100-300\" data-label=\"$100 - $300\"> <div class=\"kaffee-text-block\"><div class=\"kaffee-opt-title\">$100\u2013$300 (Beginner \/ Capsules)<\/div><\/div><\/label>\r\n      <label><input type=\"radio\" name=\"q10\" value=\"300-600\" data-label=\"$300 - $600\"> <div class=\"kaffee-text-block\"><div class=\"kaffee-opt-title\">$300 - $600 (Compact Super-Automatic)<\/div><\/div><\/label>\r\n      <label><input type=\"radio\" name=\"q10\" value=\"600-1200\" data-label=\"$600 - $1200\"> <div class=\"kaffee-text-block\"><div class=\"kaffee-opt-title\">$600 - $1,200 (Intermediate Professional)<\/div><\/div><\/label>\r\n      <label><input type=\"radio\" name=\"q10\" value=\"1200-2000\" data-label=\"$1200 - $2000\"> <div class=\"kaffee-text-block\"><div class=\"kaffee-opt-title\">$1,200 - $2,000 (High Commercial Capacity)<\/div><\/div><\/label>\r\n      <label><input type=\"radio\" name=\"q10\" value=\"mas2000\" data-label=\"M\u00e1s de $2000\"> <div class=\"kaffee-text-block\"><div class=\"kaffee-opt-title\">More than $2,000 (High-End Industrial Line)<\/div><\/div><\/label>\r\n    <\/div>\r\n    <div class=\"kaffee-step-nav\">\r\n      <button type=\"button\" class=\"kaffee-btn kaffee-btn-prev\" onclick=\"prevStep(5)\"><svg class=\"lucide-icon lucide-icon-sm\" style=\"margin-right:6px;\" viewbox=\"0 0 24 24\"><path d=\"m12 19-7-7 7-7\"><\/path><path d=\"M19 12H5\"><\/path><\/svg>Back<\/button>\r\n      <button type=\"button\" class=\"kaffee-btn kaffee-btn-next\" onclick=\"calculateResult()\">\r\n View Consultative Diagnosis \r\n        <svg class=\"lucide-icon\" style=\"margin-left:6px;\" viewbox=\"0 0 24 24\"><path d=\"M10 2v2\"><\/path><path d=\"M14 2v2\"><\/path><path d=\"M16 8a1 1 0 0 1 1 1v8a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1h12Z\"><\/path><path d=\"M6 2v2\"><\/path><path d=\"M17 10h1a3 3 0 0 1 3 3v1a3 3 0 0 1-3 3h-1\"><\/path><\/svg>\r\n     <\/button> \r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- Diagn\u00f3stico y Resultados -->\r\n  <div class=\"kaffee-step\" id=\"step-result\">\r\n    <div id=\"kaffee-result-content\"><\/div>\r\n    <button class=\"kaffee-restart\" onclick=\"restartQuiz()\">\r\n      <svg class=\"lucide-icon lucide-icon-sm\" style=\"margin-right:6px;\" viewbox=\"0 0 24 24\"><path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\"><\/path><path d=\"M3 3v5h5\"><\/path><\/svg>\r\n  Run the diagnostic test again\r\n    <\/button>\r\n  <\/div>\r\n\r\n  <script>\r\n    const MACHINES = {\r\n      keurig: { name: 'L\u00ednea Keurig', desc: 'Soluci\u00f3n ultra pr\u00e1ctica y econ\u00f3mica. Brinda inmediatez para flujos bajos mediante un sistema de c\u00e1psulas con una inversi\u00f3n inicial muy accesible.' },\r\n      m7tb:   { name: 'Colet M7TB', desc: 'Excelente cafetera s\u00faper autom\u00e1tica de un termobloque. Muele el grano al instante y prepara especialidades One-Touch secuencialmente. Cuenta con contador global de tazas y tanque de agua integrado.' },\r\n      m8:     { name: 'Colet M8', desc: 'S\u00faper autom\u00e1tica avanzada a 110V. Equipada con pantalla t\u00e1ctil interactiva, sistema exclusivo de gesti\u00f3n de usuarios independientes para recordar gustos y tanque de agua integrado.' },\r\n      k95lt:  { name: 'Kalerm K95LT', desc: 'Aut\u00e9ntico equipo de alto rendimiento comercial. Doble termobloque para caf\u00e9 y leche simult\u00e1neos, tanque de agua de gran capacidad, compatibilidad nativa con red hidr\u00e1ulica y garraf\u00f3n, contador global y creaci\u00f3n de m\u00faltiples recetas a medida.' },\r\n      x460:   { name: 'Kalerm X460', desc: 'Cafetera de alto rendimiento con pantalla t\u00e1ctil avanzada, dos tolvas de grano independientes, dos dep\u00f3sitos de polvo (leche, chocolate, etc.), control remoto por software y capacidad para entornos de autoservicio masivo. La soluci\u00f3n definitiva para operaciones de alta complejidad.' }\r\n    };\r\n\r\n    \/\/ Entornos donde la X460 NO aplica\r\n    const X460_BLOCKED_ENVS = ['Airbnb\/Oficina', 'Hogar'];\r\n\r\n    let userAnswers = {};\r\n    let selectedFeatures = [];\r\n    let finalWspText = \"\";\r\n\r\n    function updateProgress(step) {\r\n      document.getElementById('progress-bar').style.width = ((step \/ 5) * 100) + '%';\r\n    }\r\n\r\n    function prevStep(currentStep) {\r\n      const prev = currentStep - 1;\r\n      if (prev < 1) return;\r\n      document.querySelectorAll('.kaffee-step').forEach(el => el.classList.remove('active'));\r\n      document.getElementById(`step-${prev}`).classList.add('active');\r\n      updateProgress(prev);\r\n    }\r\n\r\n    function nextStep(stepNumber) {\r\n      const currentStep = stepNumber - 1;\r\n      \r\n      if (currentStep === 3) {\r\n        \/\/ Almacenar Casillas M\u00faltiples de Caracter\u00edsticas\r\n        selectedFeatures = [];\r\n        document.querySelectorAll('input[name=\"q3\"]:checked').forEach(cb => {\r\n          selectedFeatures.push(cb.value);\r\n        });\r\n      } else {\r\n        \/\/ Validar e inyectar Inputs normales\r\n        const inputName = currentStep === 4 ? 'q8' : `q${currentStep}`;\r\n        const checkedInput = document.querySelector(`input[name=\"${inputName}\"]:checked`);\r\n        if (!checkedInput) { alert(\"Por favor, selecciona una opci\u00f3n para continuar.\"); return; }\r\n        \r\n        userAnswers[inputName] = checkedInput.value;\r\n        userAnswers[inputName + '_label'] = checkedInput.getAttribute('data-label');\r\n      }\r\n\r\n      document.querySelectorAll('.kaffee-step').forEach(el => el.classList.remove('active'));\r\n      document.getElementById(`step-${stepNumber}`).classList.add('active');\r\n      updateProgress(stepNumber);\r\n    }\r\n\r\n    function calculateResult() {\r\n      const q10 = document.querySelector('input[name=\"q10\"]:checked');\r\n      if (!q10) { alert(\"Por favor selecciona una opci\u00f3n.\"); return; }\r\n      userAnswers['q10'] = q10.value;\r\n      userAnswers['q10_label'] = q10.getAttribute('data-label');\r\n\r\n      const MACHINE_HIERARCHY = ['keurig', 'm7tb', 'm8', 'k95lt', 'x460'];\r\n\r\n      \/\/ M\u00e1quina base seg\u00fan Presupuesto Directo (Q10)\r\n      let budgetId = 'm7tb';\r\n      if (userAnswers.q10 === '100-300')   budgetId = 'keurig';\r\n      if (userAnswers.q10 === '300-600')   budgetId = 'm7tb';\r\n      if (userAnswers.q10 === '600-1200')  budgetId = 'm8';\r\n      if (userAnswers.q10 === '1200-2000') budgetId = 'k95lt';\r\n      if (userAnswers.q10 === 'mas2000')   budgetId = 'x460';\r\n\r\n      const budgetTierIdx = MACHINE_HIERARCHY.indexOf(budgetId);\r\n      const userVoltage = userAnswers.q8; \/\/ '110v', '220v', 'indiferente'\r\n      const vol = userAnswers.q2;\r\n\r\n      \/\/ --- SCORING OPERATIVO PURO (Necesidades de Volumen + Funciones) ---\r\n      let operationalScores = { keurig: 0, m7tb: 0, m8: 0, k95lt: 0, x460: 0 };\r\n\r\n      \/\/ 1. VOLUMEN DIARIO DE TAZAS (25 Puntos M\u00e1x)\r\n      if (vol === 'menos40') {\r\n        operationalScores.keurig += 20; operationalScores.m7tb += 25; operationalScores.m8 += 22; operationalScores.k95lt += 5; operationalScores.x460 -= 20;\r\n      } else if (vol === '40-80') {\r\n        operationalScores.m7tb += 20; operationalScores.m8 += 25; operationalScores.k95lt += 15; operationalScores.keurig -= 10; operationalScores.x460 -= 10;\r\n      } else if (vol === '80-130') {\r\n        operationalScores.m8 += 10; operationalScores.k95lt += 25; operationalScores.x460 += 15; operationalScores.m7tb -= 15; operationalScores.keurig -= 30;\r\n      } else if (vol === '130-150') {\r\n        operationalScores.k95lt += 25; operationalScores.x460 += 25; operationalScores.m8 -= 10; operationalScores.m7tb -= 25; operationalScores.keurig -= 40;\r\n      } else if (vol === 'mas150') {\r\n        operationalScores.x460 += 30; operationalScores.k95lt += 15; operationalScores.m8 -= 30; operationalScores.m7tb -= 40; operationalScores.keurig -= 50;\r\n      }\r\n\r\n      \/\/ 2. CARACTER\u00cdSTICAS Y REQUERIMIENTOS T\u00c9CNICOS\r\n      selectedFeatures.forEach(f => {\r\n        \/\/ Gran Autonom\u00eda de agua (+12)\r\n        if (f === 'autonomia_agua' || f === 'tanque6l' || f === 'red' || f === 'garrafon') {\r\n          operationalScores.k95lt += 12; operationalScores.x460 += 12;\r\n        }\r\n        \/\/ Doble grano y solubles (+10)\r\n        if (f === 'multigrano') {\r\n          operationalScores.x460 += 10;\r\n        }\r\n        \/\/ Alta velocidad doble termobloque (+5)\r\n        if (f === 'velocidad') {\r\n          operationalScores.k95lt += 5; operationalScores.x460 += 5;\r\n        }\r\n        \/\/ M\u00faltiples tama\u00f1os de bebida (+5)\r\n        if (f === 'recetas') {\r\n          operationalScores.k95lt += 5; operationalScores.x460 += 5;\r\n        }\r\n        \/\/ Perfiles de usuario (+6)\r\n        if (f === 'usuarios') {\r\n          operationalScores.m8 += 6;\r\n        }\r\n        \/\/ Conteo de tazas (+3 Colet, +5 K95LT, +8 X460)\r\n        if (f === 'contador') {\r\n          operationalScores.m7tb += 3; operationalScores.m8 += 3; operationalScores.k95lt += 5; operationalScores.x460 += 8;\r\n        }\r\n        \/\/ Software remoto (+6)\r\n        if (f === 'software') {\r\n          operationalScores.x460 += 6;\r\n        }\r\n      });\r\n\r\n      \/\/ Penalizaci\u00f3n estricta de entorno\r\n      if (X460_BLOCKED_ENVS.includes(userAnswers.q1)) {\r\n        operationalScores.x460 -= 40;\r\n      }\r\n\r\n      \/\/ Determinar la M\u00e1quina Ganadora Operativa Pura (la que mejor cumple t\u00e9cnicamente)\r\n      let pureIdealId = budgetId;\r\n      let maxPureScore = -999;\r\n      for (let key in operationalScores) {\r\n        if (operationalScores[key] > maxPureScore) {\r\n          maxPureScore = operationalScores[key];\r\n          pureIdealId = key;\r\n        }\r\n      }\r\n\r\n      \/\/ --- SCORING GLOBAL PONDERADO (Combina Operaci\u00f3n + Presupuesto + Voltaje) ---\r\n      let scores = { ...operationalScores };\r\n\r\n      \/\/ Afinidad de Presupuesto (35 Puntos M\u00e1x)\r\n      MACHINE_HIERARCHY.forEach((mId, idx) => {\r\n        const diff = Math.abs(idx - budgetTierIdx);\r\n        if (diff === 0) scores[mId] += 35;\r\n        else if (diff === 1) scores[mId] += 18;\r\n        else if (diff === 2) scores[mId] += 5;\r\n        else scores[mId] -= 40; \/\/ Descalificaci\u00f3n para > 2 tiers\r\n      });\r\n\r\n      \/\/ Afinidad de Voltaje\r\n      if (userVoltage === '110v') {\r\n        scores.k95lt -= 15;\r\n        scores.x460 -= 15;\r\n      } else if (userVoltage === '220v') {\r\n        scores.k95lt += 15;\r\n        scores.x460 += 15;\r\n      }\r\n\r\n      \/\/ REGLAS DE CONTENCI\u00d3N DE PRESUPUESTO (TOPE PARA OPCI\u00d3N 2 CERCANA)\r\n      const heavyDemand = (vol === 'mas150' || vol === '130-150');\r\n      const requiresCommercial = selectedFeatures.includes('autonomia_agua') || selectedFeatures.includes('multigrano');\r\n\r\n      let constrainedScores = { ...scores };\r\n      MACHINE_HIERARCHY.forEach((mId, idx) => {\r\n        const tierDistance = idx - budgetTierIdx;\r\n        if (tierDistance > 2) {\r\n          constrainedScores[mId] -= 100;\r\n        } else if (tierDistance === 2 && !heavyDemand && !requiresCommercial) {\r\n          constrainedScores[mId] -= 40;\r\n        }\r\n      });\r\n\r\n      let budgetIdealId = budgetId;\r\n      let maxConstrainedScore = -999;\r\n      for (let key in constrainedScores) {\r\n        if (constrainedScores[key] > maxConstrainedScore) {\r\n          maxConstrainedScore = constrainedScores[key];\r\n          budgetIdealId = key;\r\n        }\r\n      }\r\n\r\n      renderResults(budgetIdealId, budgetId, scores, pureIdealId, operationalScores);\r\n    }\r\n\r\n    \/\/ Iconos SVG Lucide reutilizables\r\n    const LUCIDE = {\r\n      check: '<svg class=\"lucide-icon lucide-icon-sm\" viewBox=\"0 0 24 24\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg>',\r\n      alert: '<svg class=\"lucide-icon lucide-icon-sm\" viewBox=\"0 0 24 24\"><path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z\"\/><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"\/><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"\/><\/svg>',\r\n      coffee: '<svg class=\"lucide-icon\" viewBox=\"0 0 24 24\"><path d=\"M10 2v2\"\/><path d=\"M14 2v2\"\/><path d=\"M16 8a1 1 0 0 1 1 1v8a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1h12Z\"\/><path d=\"M6 2v2\"\/><path d=\"M17 10h1a3 3 0 0 1 3 3v1a3 3 0 0 1-3 3h-1\"\/><\/svg>',\r\n      droplet: '<svg class=\"lucide-icon\" viewBox=\"0 0 24 24\"><path d=\"M12 22a7 7 0 0 0 7-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5 2.5-2 4.9-4 6.5C6 11.1 5 13 5 15a7 7 0 0 0 7 7z\"\/><\/svg>',\r\n      zap: '<svg class=\"lucide-icon\" viewBox=\"0 0 24 24\"><polygon points=\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\"\/><\/svg>',\r\n      lightbulb: '<svg class=\"lucide-icon\" viewBox=\"0 0 24 24\"><path d=\"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5\"\/><path d=\"M9 18h6\"\/><path d=\"M10 22h4\"\/><\/svg>',\r\n      rotate: '<svg class=\"lucide-icon lucide-icon-sm\" viewBox=\"0 0 24 24\"><path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\"\/><path d=\"M3 3v5h5\"\/><\/svg>',\r\n      chevronDown: '<svg class=\"lucide-icon lucide-icon-sm\" viewBox=\"0 0 24 24\"><path d=\"m6 9 6 6 6-6\"\/><\/svg>',\r\n      chevronUp: '<svg class=\"lucide-icon lucide-icon-sm\" viewBox=\"0 0 24 24\"><path d=\"m18 15-6-6-6 6\"\/><\/svg>'\r\n    };\r\n\r\n    function buildExhaustiveChecklist(mId) {\r\n      let html = '<div class=\"kaffee-checklist\"><span class=\"kaffee-checklist-title\">Compatibilidad T\u00e9cnica:<\/span><div class=\"kaffee-check-grid\">';\r\n      \r\n      \/\/ Control 1: Volumen de tazas\r\n      let vol = userAnswers.q2;\r\n      if (vol === 'mas150' || vol === '130-150' || vol === '80-130') {\r\n        if (mId === 'k95lt') {\r\n          html += `<div class=\"kaffee-check-card\"><div class=\"kaffee-check-header\"><span class=\"kaffee-check-icon icon-yes\">${LUCIDE.check}<\/span> Rendimiento<\/div><div class=\"kaffee-check-desc\">Soporta altos vol\u00famenes continuos.<\/div><\/div>`;\r\n        } else if (mId === 'x460') {\r\n          html += `<div class=\"kaffee-check-card\"><div class=\"kaffee-check-header\"><span class=\"kaffee-check-icon icon-yes\">${LUCIDE.check}<\/span> Rendimiento<\/div><div class=\"kaffee-check-desc\">Capacidad industrial para flujo masivo.<\/div><\/div>`;\r\n        } else {\r\n          html += `<div class=\"kaffee-check-card\"><div class=\"kaffee-check-header\"><span class=\"kaffee-check-icon icon-warn\">${LUCIDE.alert}<\/span> Rendimiento<\/div><div class=\"kaffee-check-desc\">Volumen alto puede saturar este equipo.<\/div><\/div>`;\r\n        }\r\n      } else {\r\n        if (mId === 'keurig' && vol === '40-80') {\r\n          html += `<div class=\"kaffee-check-card\"><div class=\"kaffee-check-header\"><span class=\"kaffee-check-icon icon-warn\">${LUCIDE.alert}<\/span> Rendimiento<\/div><div class=\"kaffee-check-desc\">Costo por c\u00e1psula alto para este flujo.<\/div><\/div>`;\r\n        } else {\r\n          html += `<div class=\"kaffee-check-card\"><div class=\"kaffee-check-header\"><span class=\"kaffee-check-icon icon-yes\">${LUCIDE.check}<\/span> Rendimiento<\/div><div class=\"kaffee-check-desc\">Id\u00f3neo para tu volumen estimado.<\/div><\/div>`;\r\n        }\r\n      }\r\n\r\n      \/\/ Control 2: Velocidad Comercial \/ Simultaneidad\r\n      if (selectedFeatures.includes('velocidad')) {\r\n        if (mId === 'k95lt' || mId === 'x460') {\r\n          html += `<div class=\"kaffee-check-card\"><div class=\"kaffee-check-header\"><span class=\"kaffee-check-icon icon-yes\">${LUCIDE.check}<\/span> Velocidad<\/div><div class=\"kaffee-check-desc\">Doble termobloque (bebidas simult\u00e1neas).<\/div><\/div>`;\r\n        } else {\r\n          html += `<div class=\"kaffee-check-card\"><div class=\"kaffee-check-header\"><span class=\"kaffee-check-icon icon-warn\">${LUCIDE.alert}<\/span> Velocidad<\/div><div class=\"kaffee-check-desc\">Preparaci\u00f3n One-Touch secuencial.<\/div><\/div>`;\r\n        }\r\n      }\r\n\r\n      \/\/ Control 3: Capacidades de agua (Tanque de alta capacidad \/ Red \/ Garraf\u00f3n)\r\n      if (selectedFeatures.includes('autonomia_agua') || selectedFeatures.includes('tanque6l') || selectedFeatures.includes('red') || selectedFeatures.includes('garrafon')) {\r\n        if (mId === 'k95lt' || mId === 'x460') {\r\n          html += `<div class=\"kaffee-check-card\"><div class=\"kaffee-check-header\"><span class=\"kaffee-check-icon icon-yes\">${LUCIDE.check}<\/span> Suministro de Agua<\/div><div class=\"kaffee-check-desc\">Cuenta con las 3 modalidades: tanque de gran capacidad, conexi\u00f3n a red hidr\u00e1ulica (agua filtrada) y toma desde garraf\u00f3n.<\/div><\/div>`;\r\n        } else {\r\n          html += `<div class=\"kaffee-check-card\"><div class=\"kaffee-check-header\"><span class=\"kaffee-check-icon icon-warn\">${LUCIDE.alert}<\/span> Suministro de Agua<\/div><div class=\"kaffee-check-desc\">Limitada a tanque de agua manual integrado (requiere recargas manuales; no compatible con red ni garraf\u00f3n).<\/div><\/div>`;\r\n        }\r\n      }\r\n\r\n      \/\/ Control 4: M\u00faltiples recetas\r\n      if (selectedFeatures.includes('recetas')) {\r\n        if (mId === 'k95lt' || mId === 'x460') {\r\n          html += `<div class=\"kaffee-check-card\"><div class=\"kaffee-check-header\"><span class=\"kaffee-check-icon icon-yes\">${LUCIDE.check}<\/span> Variedad Recetas<\/div><div class=\"kaffee-check-desc\">Personaliza y duplica medidas de vaso.<\/div><\/div>`;\r\n        } else {\r\n          html += `<div class=\"kaffee-check-card\"><div class=\"kaffee-check-header\"><span class=\"kaffee-check-icon icon-warn\">${LUCIDE.alert}<\/span> Variedad Recetas<\/div><div class=\"kaffee-check-desc\">Men\u00fa de recetas est\u00e1ndar de f\u00e1brica.<\/div><\/div>`;\r\n        }\r\n      }\r\n\r\n      \/\/ Control 5: Perfiles de Usuario\r\n      if (selectedFeatures.includes('usuarios')) {\r\n        if (mId === 'm8') {\r\n          html += `<div class=\"kaffee-check-card\"><div class=\"kaffee-check-header\"><span class=\"kaffee-check-icon icon-yes\">${LUCIDE.check}<\/span> Perfiles Usuario<\/div><div class=\"kaffee-check-desc\">Memoria digital para preferencias.<\/div><\/div>`;\r\n        } else {\r\n          html += `<div class=\"kaffee-check-card\"><div class=\"kaffee-check-header\"><span class=\"kaffee-check-icon icon-warn\">${LUCIDE.alert}<\/span> Perfiles Usuario<\/div><div class=\"kaffee-check-desc\">Sin perfiles individuales independientes.<\/div><\/div>`;\r\n        }\r\n      }\r\n\r\n      \/\/ Control 6: Contador global\r\n      if (selectedFeatures.includes('contador')) {\r\n        if (mId === 'm7tb' || mId === 'k95lt' || mId === 'x460') {\r\n          html += `<div class=\"kaffee-check-card\"><div class=\"kaffee-check-header\"><span class=\"kaffee-check-icon icon-yes\">${LUCIDE.check}<\/span> Conteo de Tazas<\/div><div class=\"kaffee-check-desc\">Auditor\u00eda digital por tipo de bebida.<\/div><\/div>`;\r\n        } else {\r\n          html += `<div class=\"kaffee-check-card\"><div class=\"kaffee-check-header\"><span class=\"kaffee-check-icon icon-warn\">${LUCIDE.alert}<\/span> Conteo de Tazas<\/div><div class=\"kaffee-check-desc\">Sin contador digital integrado.<\/div><\/div>`;\r\n        }\r\n      }\r\n\r\n      \/\/ Control 7: Multi-grano (Tolvas dobles)\r\n      if (selectedFeatures.includes('multigrano')) {\r\n        if (mId === 'x460') {\r\n          html += `<div class=\"kaffee-check-card\"><div class=\"kaffee-check-header\"><span class=\"kaffee-check-icon icon-yes\">${LUCIDE.check}<\/span> Multi-Grano<\/div><div class=\"kaffee-check-desc\">2 tolvas de grano + 2 de solubles.<\/div><\/div>`;\r\n        } else {\r\n          html += `<div class=\"kaffee-check-card\"><div class=\"kaffee-check-header\"><span class=\"kaffee-check-icon icon-warn\">${LUCIDE.alert}<\/span> Multi-Grano<\/div><div class=\"kaffee-check-desc\">Opera con una sola tolva de caf\u00e9.<\/div><\/div>`;\r\n        }\r\n      }\r\n\r\n      \/\/ Control 8: Software remoto\r\n      if (selectedFeatures.includes('software')) {\r\n        if (mId === 'x460') {\r\n          html += `<div class=\"kaffee-check-card\"><div class=\"kaffee-check-header\"><span class=\"kaffee-check-icon icon-yes\">${LUCIDE.check}<\/span> Software Remoto<\/div><div class=\"kaffee-check-desc\">Monitoreo y gesti\u00f3n en plataforma digital.<\/div><\/div>`;\r\n        } else {\r\n          html += `<div class=\"kaffee-check-card\"><div class=\"kaffee-check-header\"><span class=\"kaffee-check-icon icon-warn\">${LUCIDE.alert}<\/span> Software Remoto<\/div><div class=\"kaffee-check-desc\">Sin conectividad de software centralizado.<\/div><\/div>`;\r\n        }\r\n      }\r\n\r\n      \/\/ Control 9: Voltaje\r\n      if (userAnswers.q8 === '110v') {\r\n        if (mId === 'k95lt' || mId === 'x460') {\r\n          html += `<div class=\"kaffee-check-card\"><div class=\"kaffee-check-header\"><span class=\"kaffee-check-icon icon-warn\">${LUCIDE.alert}<\/span> Voltaje (220V)<\/div><div class=\"kaffee-check-desc\">Requiere adecuar toma a 220V.<\/div><\/div>`;\r\n        } else {\r\n          html += `<div class=\"kaffee-check-card\"><div class=\"kaffee-check-header\"><span class=\"kaffee-check-icon icon-yes\">${LUCIDE.check}<\/span> Voltaje (110V)<\/div><div class=\"kaffee-check-desc\">Conexi\u00f3n directa est\u00e1ndar 110V.<\/div><\/div>`;\r\n        }\r\n      } else if (userAnswers.q8 === '220v') {\r\n        if (mId === 'k95lt' || mId === 'x460') {\r\n          html += `<div class=\"kaffee-check-card\"><div class=\"kaffee-check-header\"><span class=\"kaffee-check-icon icon-yes\">${LUCIDE.check}<\/span> Voltaje (220V)<\/div><div class=\"kaffee-check-desc\">Compatibilidad nativa con l\u00ednea 220V.<\/div><\/div>`;\r\n        } else {\r\n          html += `<div class=\"kaffee-check-card\"><div class=\"kaffee-check-header\"><span class=\"kaffee-check-icon icon-yes\">${LUCIDE.check}<\/span> Voltaje<\/div><div class=\"kaffee-check-desc\">Compatible con una fase de tu red.<\/div><\/div>`;\r\n        }\r\n      }\r\n\r\n      html += '<\/div><\/div>';\r\n      return html;\r\n    }\r\n\r\n    function buildCardNotes(mId, isIdeal) {\r\n      let notes = [];\r\n\r\n      \/\/ Requisito de conexi\u00f3n a red de agua (solo si el usuario eligi\u00f3 red y la m\u00e1quina lo soporta)\r\n      if (selectedFeatures.includes('red') && (mId === 'k95lt' || mId === 'x460')) {\r\n        notes.push(`<div class=\"kaffee-note-item kaffee-note-water\"><span class=\"kaffee-note-icon\">${LUCIDE.droplet}<\/span><div><strong>Instalaci\u00f3n hidr\u00e1ulica:<\/strong> Requiere toma directa de agua filtrada y purificada para proteger calderas y componentes.<\/div><\/div>`);\r\n      }\r\n\r\n      \/\/ Adecuaci\u00f3n el\u00e9ctrica 220V si el cliente tiene 110V\r\n      if (userAnswers.q8 === '110v' && (mId === 'k95lt' || mId === 'x460')) {\r\n        notes.push(`<div class=\"kaffee-note-item kaffee-note-electric\"><span class=\"kaffee-note-icon\">${LUCIDE.zap}<\/span><div><strong>Instalaci\u00f3n el\u00e9ctrica:<\/strong> Este equipo opera a 220V, por lo que requiere adecuar un tomacorriente bif\u00e1sico en el punto de instalaci\u00f3n.<\/div><\/div>`);\r\n      }\r\n\r\n      if (notes.length === 0) return '';\r\n      return `<div class=\"kaffee-card-notes\">${notes.join('')}<\/div>`;\r\n    }\r\n\r\n    function buildInlineChecklist(mId) {\r\n      let items = [];\r\n      const vol = userAnswers.q2;\r\n\r\n      \/\/ 1. Rendimiento\r\n      if (vol === 'mas150' || vol === '130-150' || vol === '80-130') {\r\n        if (mId === 'k95lt' || mId === 'x460') {\r\n          items.push(`<span class=\"kaffee-inline-item icon-yes\">${LUCIDE.check} Alto Rendimiento<\/span>`);\r\n        } else {\r\n          items.push(`<span class=\"kaffee-inline-item icon-warn\">${LUCIDE.alert} Rendimiento Limitado<\/span>`);\r\n        }\r\n      } else {\r\n        items.push(`<span class=\"kaffee-inline-item icon-yes\">${LUCIDE.check} Rendimiento \u00d3ptimo<\/span>`);\r\n      }\r\n\r\n      \/\/ 2. Velocidad\r\n      if (selectedFeatures.includes('velocidad')) {\r\n        if (mId === 'k95lt' || mId === 'x460') {\r\n          items.push(`<span class=\"kaffee-inline-item icon-yes\">${LUCIDE.check} Doble Termobloque<\/span>`);\r\n        } else {\r\n          items.push(`<span class=\"kaffee-inline-item icon-warn\">${LUCIDE.alert} Secuencial One-Touch<\/span>`);\r\n        }\r\n      }\r\n\r\n      \/\/ 3. Agua (Ambas Kalerm aplican a tanque amplio, red y garraf\u00f3n)\r\n      if (selectedFeatures.includes('autonomia_agua') || selectedFeatures.includes('tanque6l') || selectedFeatures.includes('red') || selectedFeatures.includes('garrafon')) {\r\n        if (mId === 'k95lt' || mId === 'x460') {\r\n          items.push(`<span class=\"kaffee-inline-item icon-yes\">${LUCIDE.check} Tanque Amplio \/ Red \/ Garraf\u00f3n<\/span>`);\r\n        } else {\r\n          items.push(`<span class=\"kaffee-inline-item icon-warn\">${LUCIDE.alert} Tanque Manual<\/span>`);\r\n        }\r\n      }\r\n\r\n      \/\/ 4. Recetas\r\n      if (selectedFeatures.includes('recetas')) {\r\n        if (mId === 'k95lt' || mId === 'x460') {\r\n          items.push(`<span class=\"kaffee-inline-item icon-yes\">${LUCIDE.check} Recetas Personalizables<\/span>`);\r\n        } else {\r\n          items.push(`<span class=\"kaffee-inline-item icon-warn\">${LUCIDE.alert} Recetas Est\u00e1ndar<\/span>`);\r\n        }\r\n      }\r\n\r\n      \/\/ 5. Perfiles de usuario\r\n      if (selectedFeatures.includes('usuarios')) {\r\n        if (mId === 'm8') {\r\n          items.push(`<span class=\"kaffee-inline-item icon-yes\">${LUCIDE.check} Perfiles de Usuario<\/span>`);\r\n        } else {\r\n          items.push(`<span class=\"kaffee-inline-item icon-warn\">${LUCIDE.alert} Sin Perfiles<\/span>`);\r\n        }\r\n      }\r\n\r\n      \/\/ 6. Contador\r\n      if (selectedFeatures.includes('contador')) {\r\n        if (mId !== 'keurig') {\r\n          items.push(`<span class=\"kaffee-inline-item icon-yes\">${LUCIDE.check} Contador Digital<\/span>`);\r\n        } else {\r\n          items.push(`<span class=\"kaffee-inline-item icon-warn\">${LUCIDE.alert} Sin Contador<\/span>`);\r\n        }\r\n      }\r\n\r\n      \/\/ 7. Multi-grano\r\n      if (selectedFeatures.includes('multigrano')) {\r\n        if (mId === 'x460') {\r\n          items.push(`<span class=\"kaffee-inline-item icon-yes\">${LUCIDE.check} Tolva Doble + Solubles<\/span>`);\r\n        } else {\r\n          items.push(`<span class=\"kaffee-inline-item icon-warn\">${LUCIDE.alert} Tolva \u00danica<\/span>`);\r\n        }\r\n      }\r\n\r\n      \/\/ 8. Software\r\n      if (selectedFeatures.includes('software')) {\r\n        if (mId === 'x460') {\r\n          items.push(`<span class=\"kaffee-inline-item icon-yes\">${LUCIDE.check} Control Remoto<\/span>`);\r\n        } else {\r\n          items.push(`<span class=\"kaffee-inline-item icon-warn\">${LUCIDE.alert} Sin Software<\/span>`);\r\n        }\r\n      }\r\n\r\n      \/\/ 9. Voltaje\r\n      if (userAnswers.q8 === '110v') {\r\n        if (mId === 'k95lt' || mId === 'x460') {\r\n          items.push(`<span class=\"kaffee-inline-item icon-warn\">${LUCIDE.alert} Requiere 220V<\/span>`);\r\n        } else {\r\n          items.push(`<span class=\"kaffee-inline-item icon-yes\">${LUCIDE.check} Conexi\u00f3n 110V<\/span>`);\r\n        }\r\n      }\r\n\r\n      return `<div class=\"kaffee-inline-checklist\">${items.join('<span class=\"kaffee-inline-sep\">\u00b7<\/span>')}<\/div>`;\r\n    }\r\n\r\n    function toggleAccordion(machineId, event) {\r\n      if (event) event.stopPropagation();\r\n      const card = document.querySelector(`.kaffee-card[data-machine-id=\"${machineId}\"]`);\r\n      if (!card) return;\r\n      const body = card.querySelector('.kaffee-card-body');\r\n      const toggleBtnTop = card.querySelector('.kaffee-toggle-top');\r\n      if (!body) return;\r\n\r\n      const isOpen = body.classList.contains('is-open');\r\n      if (isOpen) {\r\n        body.classList.remove('is-open');\r\n        if (toggleBtnTop) toggleBtnTop.style.display = 'flex';\r\n      } else {\r\n        body.classList.add('is-open');\r\n        if (toggleBtnTop) toggleBtnTop.style.display = 'none';\r\n      }\r\n    }\r\n\r\n    let selectedMachinesForQuote = [];\r\n\r\n    function toggleMachineSelection(machineId) {\r\n      const idx = selectedMachinesForQuote.indexOf(machineId);\r\n      if (idx > -1) {\r\n        selectedMachinesForQuote.splice(idx, 1);\r\n      } else {\r\n        selectedMachinesForQuote.push(machineId);\r\n      }\r\n      updateCardsSelectionUI();\r\n    }\r\n\r\n    function updateCardsSelectionUI() {\r\n      document.querySelectorAll('.kaffee-card').forEach(card => {\r\n        const mId = card.getAttribute('data-machine-id');\r\n        const isSelected = selectedMachinesForQuote.includes(mId);\r\n        const selectorIcon = card.querySelector('.kaffee-selector-icon');\r\n\r\n        if (isSelected) {\r\n          card.classList.add('is-selected');\r\n          if (selectorIcon) selectorIcon.innerHTML = LUCIDE.check;\r\n        } else {\r\n          card.classList.remove('is-selected');\r\n          if (selectorIcon) selectorIcon.innerHTML = '';\r\n        }\r\n      });\r\n\r\n      const wspBtn = document.getElementById('kaffee-btn-wsp-main');\r\n      if (wspBtn) {\r\n        const wspSvg = `<svg class=\"kaffee-wsp-icon\" viewBox=\"0 0 24 24\"><path d=\"M19.05 4.91A9.816 9.816 0 0 0 12.04 2c-5.46 0-9.91 4.45-9.91 9.91c0 1.75.46 3.45 1.32 4.95L2.05 22l5.25-1.38c1.45.79 3.08 1.21 4.74 1.21c5.46 0 9.91-4.45 9.91-9.91c0-2.65-1.03-5.14-2.9-7.01zm-7.01 15.24c-1.48 0-2.93-.4-4.2-1.15l-.3-.18l-3.12.82l.83-3.04l-.2-.31a8.19 8.19 0 0 1-1.26-4.38c0-4.54 3.7-8.24 8.24-8.24c2.2 0 4.27.86 5.82 2.42a8.18 8.18 0 0 1 2.41 5.83c.02 4.54-3.68 8.23-8.22 8.23zm4.52-6.16c-.25-.12-1.47-.72-1.69-.81c-.23-.08-.39-.12-.56.12c-.17.25-.64.81-.78.97c-.14.17-.29.19-.54.06c-.25-.12-1.05-.39-1.99-1.23c-.74-.66-1.23-1.47-1.38-1.72c-.14-.25-.02-.38.11-.51c.11-.11.25-.29.37-.43s.17-.25.25-.41c.08-.17.04-.31-.02-.43s-.56-1.34-.76-1.84c-.2-.48-.41-.42-.56-.43h-.48c-.17 0-.43.06-.66.31c-.22.25-.86.84-.86 2.07c0 1.22.89 2.4 1.01 2.56c.12.17 1.75 2.67 4.23 3.74c.59.26 1.05.41 1.41.53c.59.19 1.13.16 1.56.1c.48-.07 1.47-.6 1.67-1.18c.2-.58.2-1.07.14-1.18s-.22-.16-.47-.28z\"\/><\/svg>`;\r\n        if (selectedMachinesForQuote.length === 0) {\r\n          wspBtn.classList.add('kaffee-btn-disabled');\r\n          wspBtn.innerHTML = wspSvg + ' Selecciona una cafetera a cotizar';\r\n        } else {\r\n          wspBtn.classList.remove('kaffee-btn-disabled');\r\n          wspBtn.innerHTML = wspSvg + ' Solicitar Cotizaci\u00f3n por WhatsApp';\r\n        }\r\n      }\r\n    }\r\n\r\n    function renderResults(idealId, budgetId, scores, pureIdealId, operationalScores) {\r\n      operationalScores = operationalScores || scores;\r\n      document.getElementById('progress-wrapper').style.display = 'none';\r\n      let container = document.getElementById('kaffee-result-content');\r\n      container.innerHTML = `\r\n        <h3 style=\"text-align:center; font-family:var(--wd-title-font); margin-bottom:6px; color:var(--wd-title-color);\">Tu Diagn\u00f3stico a Medida<\/h3>\r\n        <p style=\"text-align:center; font-size:0.9rem; color:#6d5849; margin-bottom:22px;\">Haz clic sobre la(s) cafetera(s) que deseas incluir en tu cotizaci\u00f3n:<\/p>\r\n      `;\r\n\r\n      const MACHINE_HIERARCHY = ['keurig', 'm7tb', 'm8', 'k95lt', 'x460'];\r\n      const userVoltage = userAnswers.q8; \/\/ '110v', '220v', 'indiferente'\r\n\r\n      \/\/ 1. DETERMINAR OPCI\u00d3N 1 (Opci\u00f3n Inicial: Presupuesto + Voltaje 100% compatible)\r\n      let opt1Id = budgetId;\r\n      \/\/ Si el cliente tiene 110V y su presupuesto apuntaba a 220V (K95LT o X460),\r\n      \/\/ forzamos que la Opci\u00f3n Inicial sea la mejor m\u00e1quina 110V (Colet M8)\r\n      if (userVoltage === '110v' && (opt1Id === 'k95lt' || opt1Id === 'x460')) {\r\n        opt1Id = 'm8';\r\n      }\r\n\r\n      const rank1 = MACHINE_HIERARCHY.indexOf(opt1Id);\r\n      const pureRank = pureIdealId ? MACHINE_HIERARCHY.indexOf(pureIdealId) : rank1;\r\n      const hasBudgetGap = pureRank > rank1;\r\n\r\n      let machinesToShow = [];\r\n\r\n      if (hasBudgetGap) {\r\n        \/\/ Opci\u00f3n 1: Siempre es el punto de partida acorde al presupuesto\r\n        machinesToShow.push({\r\n          id: opt1Id,\r\n          tag: 'Opci\u00f3n Inicial',\r\n          isIdeal: false,\r\n          advisory: null\r\n        });\r\n\r\n        if (pureRank - rank1 >= 2) {\r\n          const midId = MACHINE_HIERARCHY[rank1 + 1];\r\n          const scoreDiff = Math.abs((operationalScores[pureIdealId] || 0) - (operationalScores[midId] || 0));\r\n\r\n          \/\/ CONDICIONES PARA MOSTRAR 3 OPCIONES:\r\n          \/\/ 1. midId debe tener score operativo viable (no saturado, >= 15 pts)\r\n          \/\/ 2. Si las dos opciones superiores son cercanas en puntaje (scoreDiff <= 12) o si ambas son\r\n          \/\/    equipos comerciales (K95LT y X460) sin un diferencial abrumador, SOLO DEJAR 2 OPCIONES.\r\n          const isBothCommercial = (midId === 'k95lt' && pureIdealId === 'x460');\r\n          const isScoresClose = (scoreDiff <= 12);\r\n          const isMidViable = ((operationalScores[midId] || 0) >= 15);\r\n\r\n          if (isMidViable && !isBothCommercial && !isScoresClose && scoreDiff > 10) {\r\n            \/\/ Mostrar 3 opciones con escal\u00f3n intermedio\r\n            machinesToShow.push({\r\n              id: midId,\r\n              tag: 'Mayor Capacidad',\r\n              isIdeal: false,\r\n              advisory: 'Cercana a tu presupuesto con mayor capacidad y rendimiento.'\r\n            });\r\n            machinesToShow.push({\r\n              id: pureIdealId,\r\n              tag: 'M\u00e1ximo Rendimiento',\r\n              isIdeal: true,\r\n              advisory: 'Cumple al 100% tus requerimientos t\u00e9cnicos. Aunque supera el presupuesto establecido, podemos asesorarte para evaluar la mejor alternativa de adquisici\u00f3n.'\r\n            });\r\n          } else {\r\n            \/\/ SOLO 2 OPCIONES: Opci\u00f3n Inicial + la que cumple al 100% tus requerimientos t\u00e9cnicos\r\n            machinesToShow.push({\r\n              id: pureIdealId,\r\n              tag: 'Inversi\u00f3n Recomendada',\r\n              isIdeal: true,\r\n              advisory: 'Cumple al 100% tus requerimientos t\u00e9cnicos. Aunque supera el presupuesto establecido, podemos asesorarte para evaluar la mejor alternativa de adquisici\u00f3n.'\r\n            });\r\n          }\r\n        } else {\r\n          \/\/ pureRank - rank1 === 1 (Solo 1 salto de nivel)\r\n          machinesToShow.push({\r\n            id: pureIdealId,\r\n            tag: 'Inversi\u00f3n Recomendada',\r\n            isIdeal: true,\r\n            advisory: 'Cumple al 100% tus requerimientos t\u00e9cnicos. Aunque supera el presupuesto establecido, podemos asesorarte para evaluar la mejor alternativa de adquisici\u00f3n.'\r\n          });\r\n        }\r\n      } else {\r\n        \/\/ No hay desfase de presupuesto: el presupuesto cubre o supera la necesidad operativa\r\n        machinesToShow.push({\r\n          id: pureIdealId,\r\n          tag: 'Inversi\u00f3n Recomendada',\r\n          isIdeal: true,\r\n          advisory: null\r\n        });\r\n\r\n        \/\/ Buscar una alternativa secundaria (ej. alternativa econ\u00f3mica si aplica)\r\n        let candidatePool = Object.keys(operationalScores).filter(id => {\r\n          if (id === pureIdealId || operationalScores[id] < 10) return false;\r\n          if (userVoltage === '110v' && (id === 'k95lt' || id === 'x460')) return false;\r\n          return true;\r\n        }).sort((a, b) => scores[b] - scores[a]);\r\n\r\n        if (candidatePool.length > 0) {\r\n          let altId = candidatePool[0];\r\n          let altRank = MACHINE_HIERARCHY.indexOf(altId);\r\n          let altTag = altRank < pureRank ? 'Alternativa Econ\u00f3mica' : 'Mayor Capacidad';\r\n          machinesToShow.push({\r\n            id: altId,\r\n            tag: altTag,\r\n            isIdeal: false,\r\n            advisory: null\r\n          });\r\n        }\r\n      }\r\n\r\n      \/\/ Filtrar Duplicados si los hubiese\r\n      machinesToShow = machinesToShow.filter((v, i, a) => a.findIndex(t => (t.id === v.id)) === i);\r\n\r\n      \/\/ Inicializar seleccionadas: por defecto NINGUNA marcada\r\n      selectedMachinesForQuote = [];\r\n\r\n      \/\/ Renderizaci\u00f3n de Tarjetas (Acorde\u00f3n colapsado por defecto)\r\n      machinesToShow.forEach(m => {\r\n        let cardClass = m.isIdeal ? 'kaffee-card-primary' : 'kaffee-card-secondary';\r\n        let tagClass = m.isIdeal ? 'tag-ideal' : 'tag-alt';\r\n        \r\n        let voltageBanner = '';\r\n        if (userVoltage === '110v' && (m.id === 'k95lt' || m.id === 'x460')) {\r\n          voltageBanner = `\r\n            <div class=\"kaffee-voltage-alert-banner\">\r\n              ${LUCIDE.alert}\r\n              <span>Requiere instalaci\u00f3n el\u00e9ctrica 220V<\/span>\r\n            <\/div>\r\n          `;\r\n        }\r\n\r\n        let advisoryBanner = '';\r\n        if (m.advisory) {\r\n          advisoryBanner = `\r\n            <div class=\"kaffee-budget-advisory-banner\">\r\n              ${LUCIDE.lightbulb}\r\n              <span>${m.advisory}<\/span>\r\n            <\/div>\r\n          `;\r\n        }\r\n\r\n        container.innerHTML += `\r\n          <div class=\"kaffee-card ${cardClass}\" data-machine-id=\"${m.id}\" onclick=\"toggleMachineSelection('${m.id}')\">\r\n            <!-- Encabezado Visible Siempre (Colapsado) -->\r\n            <div class=\"kaffee-card-topbar\">\r\n              <span class=\"kaffee-tag ${tagClass}\">${m.tag}<\/span>\r\n              <div class=\"kaffee-card-selector\">\r\n                <span>Cotizar<\/span>\r\n                <span class=\"kaffee-selector-icon\"><\/span>\r\n              <\/div>\r\n            <\/div>\r\n            <div class=\"kaffee-machine-name\">${MACHINES[m.id].name}<\/div>\r\n            ${voltageBanner}\r\n            ${advisoryBanner}\r\n            ${buildInlineChecklist(m.id)}\r\n\r\n            <!-- Bot\u00f3n de Expandir Acorde\u00f3n (\u00c1rea T\u00e1ctil Amplia) -->\r\n            <div class=\"kaffee-accordion-toggle kaffee-toggle-top\" onclick=\"toggleAccordion('${m.id}', event)\">\r\n              <span>Ver detalles completos<\/span>\r\n              ${LUCIDE.chevronDown}\r\n            <\/div>\r\n\r\n            <!-- Cuerpo Expandible (Acorde\u00f3n) -->\r\n            <div class=\"kaffee-card-body\">\r\n              <div class=\"kaffee-machine-desc\">${MACHINES[m.id].desc}<\/div>\r\n              ${buildExhaustiveChecklist(m.id)}\r\n              ${buildCardNotes(m.id, m.isIdeal)}\r\n              <div class=\"kaffee-accordion-toggle kaffee-toggle-collapse\" onclick=\"toggleAccordion('${m.id}', event)\">\r\n                <span>Ocultar detalles<\/span>\r\n                ${LUCIDE.chevronUp}\r\n              <\/div>\r\n            <\/div>\r\n          <\/div>\r\n        `;\r\n      });\r\n\r\n      \/\/ Bot\u00f3n inicialmente deshabilitado (ninguna cafetera seleccionada por defecto)\r\n      container.innerHTML += `\r\n        <button id=\"kaffee-btn-wsp-main\" onclick=\"enviarWhatsApp()\" class=\"kaffee-btn kaffee-btn-wsp kaffee-btn-disabled\">\r\n          <svg class=\"kaffee-wsp-icon\" viewBox=\"0 0 24 24\"><path d=\"M19.05 4.91A9.816 9.816 0 0 0 12.04 2c-5.46 0-9.91 4.45-9.91 9.91c0 1.75.46 3.45 1.32 4.95L2.05 22l5.25-1.38c1.45.79 3.08 1.21 4.74 1.21c5.46 0 9.91-4.45 9.91-9.91c0-2.65-1.03-5.14-2.9-7.01zm-7.01 15.24c-1.48 0-2.93-.4-4.2-1.15l-.3-.18l-3.12.82l.83-3.04l-.2-.31a8.19 8.19 0 0 1-1.26-4.38c0-4.54 3.7-8.24 8.24-8.24c2.2 0 4.27.86 5.82 2.42a8.18 8.18 0 0 1 2.41 5.83c.02 4.54-3.68 8.23-8.22 8.23zm4.52-6.16c-.25-.12-1.47-.72-1.69-.81c-.23-.08-.39-.12-.56.12c-.17.25-.64.81-.78.97c-.14.17-.29.19-.54.06c-.25-.12-1.05-.39-1.99-1.23c-.74-.66-1.23-1.47-1.38-1.72c-.14-.25-.02-.38.11-.51c.11-.11.25-.29.37-.43s.17-.25.25-.41c.08-.17.04-.31-.02-.43s-.56-1.34-.76-1.84c-.2-.48-.41-.42-.56-.43h-.48c-.17 0-.43.06-.66.31c-.22.25-.86.84-.86 2.07c0 1.22.89 2.4 1.01 2.56c.12.17 1.75 2.67 4.23 3.74c.59.26 1.05.41 1.41.53c.59.19 1.13.16 1.56.1c.48-.07 1.47-.6 1.67-1.18c.2-.58.2-1.07.14-1.18s-.22-.16-.47-.28z\"\/><\/svg>\r\n          Selecciona una cafetera a cotizar\r\n        <\/button>\r\n      `;\r\n\r\n      document.querySelectorAll('.kaffee-step').forEach(el => el.classList.remove('active'));\r\n      document.getElementById('step-result').classList.add('active');\r\n    }\r\n\r\n    function enviarWhatsApp() {\r\n      \/\/ Si no ha seleccionado ninguna, no hace nada (bot\u00f3n deshabilitado)\r\n      if (selectedMachinesForQuote.length === 0) {\r\n        return;\r\n      }\r\n\r\n      let machinesToQuote = selectedMachinesForQuote;\r\n\r\n      let featureLabels = selectedFeatures.map(f => {\r\n        if(f==='velocidad')      return 'Velocidad Simult\u00e1nea';\r\n        if(f==='autonomia_agua') return 'Gran Autonom\u00eda de Agua';\r\n        if(f==='tanque6l')       return 'Tanque de Gran Capacidad';\r\n        if(f==='red')            return 'Conexi\u00f3n a Red';\r\n        if(f==='garrafon')       return 'Conexi\u00f3n a Garraf\u00f3n';\r\n        if(f==='recetas')        return 'M\u00faltiples Tama\u00f1os de Bebida';\r\n        if(f==='usuarios')       return 'Perfiles de Usuario';\r\n        if(f==='contador')       return 'Contador Global';\r\n        if(f==='multigrano')     return 'Multi-Grano (Tolva Doble)';\r\n        if(f==='software')       return 'Control por Software Remoto';\r\n        return f;\r\n      }).join(', ') || 'Funciones Est\u00e1ndar';\r\n\r\n      let recommendedText = machinesToQuote.map(id => MACHINES[id].name).join(\" y \");\r\n\r\n      let wspExtra = '';\r\n      if (machinesToQuote.includes('x460')) {\r\n        let exclusiveSelected = [];\r\n        if (selectedFeatures.includes('multigrano')) exclusiveSelected.push('manejo de m\u00faltiples tipos de grano (tolva doble)');\r\n        if (selectedFeatures.includes('software'))   exclusiveSelected.push('control remoto por software');\r\n        if (exclusiveSelected.length > 0) {\r\n          wspExtra = '\\n- Capacidades clave de inter\u00e9s: ' + exclusiveSelected.join(' y ');\r\n        }\r\n      }\r\n\r\n      finalWspText = \"\u00a1Hola! Complet\u00e9 el diagn\u00f3stico consultivo de caf\u00e9 en su sitio web.\\n\\n\" +\r\n                     \"*Detalles de mi Configuraci\u00f3n:*\\n\" +\r\n                     \"- Destino: \" + userAnswers.q1_label + \"\\n\" +\r\n                     \"- Volumen diario: \" + userAnswers.q2_label + \"\\n\" +\r\n                     \"- Requerimientos: \" + featureLabels + \"\\n\" +\r\n                     \"- Energ\u00eda disponible: \" + userAnswers.q8_label + \"\\n\" +\r\n                     \"- Presupuesto: \" + userAnswers.q10_label +\r\n                     wspExtra + \"\\n\\n\" +\r\n                     \"*Equipo(s) que deseo cotizar:* \" + recommendedText + \".\\n\\n\" +\r\n                     \"Deseo recibir cotizaci\u00f3n formal y asesor\u00eda comercial.\";\r\n\r\n      let encoded = encodeURIComponent(finalWspText);\r\n      window.open('https:\/\/wa.me\/50378535450?text=' + encoded, '_blank');\r\n    }\r\n\r\n    function restartQuiz() {\r\n      document.querySelectorAll('input[type=\"radio\"], input[type=\"checkbox\"]').forEach(el => el.checked = false);\r\n      document.querySelectorAll('.kaffee-step').forEach(el => el.classList.remove('active'));\r\n      document.getElementById('progress-wrapper').style.display = 'block';\r\n      userAnswers = {};\r\n      selectedFeatures = [];\r\n      selectedMachinesForQuote = [];\r\n      finalWspText = \"\";\r\n      updateProgress(1);\r\n      document.getElementById('step-1').classList.add('active');\r\n    }\r\n  <\/script>\r\n<\/div>\r\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>1. Where will the coffee machine be installed? Home \/ Home Office or Small OfficeSpace-efficient venues that prioritize gourmet quality<\/p>\n","protected":false},"author":26,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-10056","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/kaffee.com.sv\/en\/wp-json\/wp\/v2\/pages\/10056","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kaffee.com.sv\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/kaffee.com.sv\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/kaffee.com.sv\/en\/wp-json\/wp\/v2\/users\/26"}],"replies":[{"embeddable":true,"href":"https:\/\/kaffee.com.sv\/en\/wp-json\/wp\/v2\/comments?post=10056"}],"version-history":[{"count":10,"href":"https:\/\/kaffee.com.sv\/en\/wp-json\/wp\/v2\/pages\/10056\/revisions"}],"predecessor-version":[{"id":10175,"href":"https:\/\/kaffee.com.sv\/en\/wp-json\/wp\/v2\/pages\/10056\/revisions\/10175"}],"wp:attachment":[{"href":"https:\/\/kaffee.com.sv\/en\/wp-json\/wp\/v2\/media?parent=10056"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}