{"id":802,"date":"2026-05-13T23:29:04","date_gmt":"2026-05-13T23:29:04","guid":{"rendered":"https:\/\/amcprincipal.com\/?page_id=802"},"modified":"2026-05-14T15:31:07","modified_gmt":"2026-05-14T15:31:07","slug":"amc-tamiz","status":"publish","type":"page","link":"https:\/\/amcprincipal.com\/en\/amc-tamiz\/","title":{"rendered":"Tamiz | by AMC Principal"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"802\" class=\"elementor elementor-802\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2938b9a e-flex e-con-boxed e-con e-parent\" data-id=\"2938b9a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-a86860d e-con-full e-flex e-con e-child\" data-id=\"a86860d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d6ca16b elementor-widget elementor-widget-image\" data-id=\"d6ca16b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"512\" height=\"512\" src=\"https:\/\/amcprincipal.com\/wp-content\/uploads\/2026\/01\/favicon-1.png\" class=\"attachment-large size-large wp-image-737\" alt=\"\" srcset=\"https:\/\/amcprincipal.com\/wp-content\/uploads\/2026\/01\/favicon-1.png 512w, https:\/\/amcprincipal.com\/wp-content\/uploads\/2026\/01\/favicon-1-300x300.png 300w, https:\/\/amcprincipal.com\/wp-content\/uploads\/2026\/01\/favicon-1-150x150.png 150w, https:\/\/amcprincipal.com\/wp-content\/uploads\/2026\/01\/favicon-1-12x12.png 12w\" sizes=\"(max-width: 512px) 100vw, 512px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9c5f408 e-flex e-con-boxed e-con e-parent\" data-id=\"9c5f408\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ea06e67 elementor-widget elementor-widget-html\" data-id=\"ea06e67\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"es\">\r\n\r\n<head>\r\n  <meta charset=\"UTF-8\">\r\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n  <title>Tamiz | by AMC Principal<\/title>\r\n  <meta name=\"robots\" content=\"noindex,nofollow,noarchive,nosnippet\">\r\n  <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\r\n  <meta name=\"referrer\" content=\"no-referrer\">\r\n  <meta http-equiv=\"Cache-Control\" content=\"no-cache, no-store, must-revalidate\">\r\n  <meta http-equiv=\"Pragma\" content=\"no-cache\">\r\n  <meta http-equiv=\"Expires\" content=\"0\">\r\n  <style>\r\n    \/* === AMC Principal \u00b7 AMC Tamiz v1.0 === *\/\r\n    :root {\r\n      --bg: #F5F4F0;\r\n      --bg2: #EDEAE0;\r\n      --card: #FFFFFF;\r\n      --t1: #18171A;\r\n      --t2: #5F5C56;\r\n      --t3: #A09C94;\r\n      --bdr: #D8D5CA;\r\n      --bdr2: #E6E3D8;\r\n      --acc: #4A41B2;\r\n      --acc-bg: #ECEAFB;\r\n      --acc-t: #1E1860;\r\n      --grn: #15926A;\r\n      --grn-bg: #DCF2EA;\r\n      --grn-bdr: #50C49C;\r\n      --grn-t: #03302B;\r\n      --grn-t2: #065042;\r\n      --amb-bg: #FEF2D6;\r\n      --amb-bdr: #E89B1C;\r\n      --amb-t: #3A2000;\r\n      --amb-t2: #5A3300;\r\n      --red-bg: #FDEAEA;\r\n      --red-bdr: #E59898;\r\n      --red-t: #5A1E1E;\r\n      --red-t2: #8C2C2C;\r\n      --r1: 6px;\r\n      --r2: 12px;\r\n      --r3: 18px;\r\n      --sh: 0 2px 8px rgba(0, 0, 0, .07), 0 8px 24px rgba(0, 0, 0, .05);\r\n      --sh2: 0 1px 3px rgba(0, 0, 0, .05);\r\n      --tr: .18s ease;\r\n    }\r\n\r\n    *,\r\n    *::before,\r\n    *::after {\r\n      box-sizing: border-box;\r\n    }\r\n\r\n    body {\r\n      margin: 0;\r\n    }\r\n\r\n    #amc-app {\r\n      font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif;\r\n      background: var(--bg);\r\n      color: var(--t1);\r\n      line-height: 1.55;\r\n      padding: 28px 16px 64px;\r\n      -webkit-font-smoothing: antialiased;\r\n      user-select: none;\r\n      -webkit-user-select: none;\r\n    }\r\n\r\n    \/* Neutralizar tipograf\u00eda global de Elementor \/ WordPress *\/\r\n    #amc-app p,\r\n    #amc-app span,\r\n    #amc-app h1,\r\n    #amc-app h2,\r\n    #amc-app h3,\r\n    #amc-app h4,\r\n    #amc-app h5,\r\n    #amc-app h6,\r\n    #amc-app button,\r\n    #amc-app input,\r\n    #amc-app textarea,\r\n    #amc-app label,\r\n    #amc-app li,\r\n    #amc-app a,\r\n    #amc-app strong,\r\n    #amc-app em {\r\n      font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", system-ui, sans-serif !important;\r\n    }\r\n\r\n    #amc-app p {\r\n      margin: 0;\r\n    }\r\n\r\n    #amc-app a {\r\n      color: inherit;\r\n      text-decoration: none;\r\n    }\r\n\r\n    \/* Prevenir desbordamiento de texto en cajas *\/\r\n    #amc-app .q-text,\r\n    #amc-app .q-hint,\r\n    #amc-app .answer-btn,\r\n    #amc-app .result-name,\r\n    #amc-app .result-desc,\r\n    #amc-app .brand-subtitle,\r\n    #amc-app .brand-title,\r\n    #amc-app .summary-value,\r\n    #amc-app .info-content p,\r\n    #amc-app .info-content li,\r\n    #amc-app .comparison-cell .value,\r\n    #amc-app .scheme-pill,\r\n    #amc-app .field-error {\r\n      overflow-wrap: break-word;\r\n      word-break: break-word;\r\n      min-width: 0;\r\n    }\r\n\r\n    input,\r\n    textarea,\r\n    [contenteditable] {\r\n      user-select: text;\r\n      -webkit-user-select: text;\r\n    }\r\n\r\n    .container {\r\n      max-width: 740px;\r\n      margin: 0 auto;\r\n      width: 100%;\r\n    }\r\n\r\n    .brand {\r\n      display: flex;\r\n      justify-content: center;\r\n      align-items: center;\r\n      margin-bottom: 28px;\r\n      padding-bottom: 20px;\r\n      border-bottom: 1px solid var(--bdr2);\r\n      position: relative;\r\n    }\r\n\r\n    .brand::after {\r\n      content: '';\r\n      position: absolute;\r\n      bottom: -1px;\r\n      left: 50%;\r\n      transform: translateX(-50%);\r\n      width: 56px;\r\n      height: 2px;\r\n      background: var(--acc);\r\n      border-radius: 2px;\r\n    }\r\n\r\n    .brand-text {\r\n      text-align: center;\r\n    }\r\n\r\n    .brand-name {\r\n      font-size: 10px;\r\n      color: var(--t3);\r\n      text-transform: uppercase;\r\n      letter-spacing: .12em;\r\n      margin: 0 0 3px;\r\n      font-weight: 700;\r\n    }\r\n\r\n    .brand-title {\r\n      font-size: 21px;\r\n      font-weight: 700;\r\n      margin: 0 0 4px;\r\n      letter-spacing: -.025em;\r\n      color: var(--t1);\r\n    }\r\n\r\n    .brand-by {\r\n      font-size: 13px;\r\n      font-weight: 400;\r\n      color: var(--t2);\r\n      letter-spacing: 0;\r\n      white-space: nowrap;\r\n    }\r\n\r\n    .brand-subtitle {\r\n      font-size: 12.5px;\r\n      color: var(--t2);\r\n      margin: 0;\r\n      line-height: 1.4;\r\n      font-weight: 400;\r\n    }\r\n\r\n    .info-block {\r\n      background: var(--card);\r\n      border: 1px solid var(--bdr2);\r\n      border-radius: var(--r2);\r\n      margin-bottom: 18px;\r\n      overflow: hidden;\r\n      box-shadow: var(--sh2);\r\n    }\r\n\r\n    .info-block summary {\r\n      list-style: none;\r\n      cursor: pointer;\r\n      padding: 12px 18px;\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: space-between;\r\n      user-select: none;\r\n      -webkit-user-select: none;\r\n      transition: background var(--tr);\r\n    }\r\n\r\n    .info-block summary::-webkit-details-marker {\r\n      display: none;\r\n    }\r\n\r\n    .info-block summary:hover {\r\n      background: var(--bg);\r\n    }\r\n\r\n    .info-block summary>span:first-child {\r\n      font-size: 11.5px;\r\n      color: var(--t2);\r\n      text-transform: uppercase;\r\n      letter-spacing: .06em;\r\n      font-weight: 600;\r\n    }\r\n\r\n    .info-block .chevron {\r\n      font-size: 11px;\r\n      color: var(--t3);\r\n      transition: transform .2s;\r\n    }\r\n\r\n    .info-block[open] .chevron {\r\n      transform: rotate(180deg);\r\n    }\r\n\r\n    .info-content {\r\n      padding: 4px 20px 20px;\r\n      border-top: 1px solid var(--bdr2);\r\n    }\r\n\r\n    .info-content h4 {\r\n      font-size: 11px;\r\n      color: var(--t2);\r\n      text-transform: uppercase;\r\n      letter-spacing: .06em;\r\n      margin: 18px 0 10px;\r\n      font-weight: 700;\r\n    }\r\n\r\n    .info-content h4:first-child {\r\n      margin-top: 16px;\r\n    }\r\n\r\n    .info-content p,\r\n    .info-content li {\r\n      font-size: 13px;\r\n      line-height: 1.65;\r\n      color: var(--t1);\r\n      margin: 0 0 8px;\r\n    }\r\n\r\n    .info-content ul {\r\n      margin: 0 0 10px;\r\n      padding-left: 18px;\r\n    }\r\n\r\n    .info-content li {\r\n      margin-bottom: 6px;\r\n    }\r\n\r\n    .info-content .legal {\r\n      font-size: 12px;\r\n      color: var(--t2);\r\n      line-height: 1.55;\r\n      margin: 0 0 7px;\r\n    }\r\n\r\n    .info-content .legal:last-child {\r\n      margin-bottom: 0;\r\n    }\r\n\r\n    .schemes-panel {\r\n      background: var(--bg2);\r\n      border: 1px solid var(--bdr2);\r\n      border-radius: var(--r2);\r\n      padding: 13px 16px;\r\n      margin-bottom: 16px;\r\n    }\r\n\r\n    .schemes-label {\r\n      font-size: 10.5px;\r\n      color: var(--t3);\r\n      text-transform: uppercase;\r\n      letter-spacing: .07em;\r\n      margin: 0 0 10px;\r\n      font-weight: 700;\r\n    }\r\n\r\n    .schemes-list {\r\n      display: flex;\r\n      flex-wrap: wrap;\r\n      gap: 6px;\r\n    }\r\n\r\n    .scheme-pill {\r\n      font-size: 11.5px;\r\n      padding: 4px 12px;\r\n      border-radius: 999px;\r\n      border: 1px solid var(--bdr);\r\n      background: var(--card);\r\n      color: var(--t1);\r\n      font-weight: 500;\r\n      transition: all .25s;\r\n    }\r\n\r\n    .scheme-pill.discarded {\r\n      color: var(--t1);\r\n      border-color: var(--bdr2);\r\n      background: transparent;\r\n    }\r\n\r\n    .scheme-pill.confirmed {\r\n      background: var(--grn-bg);\r\n      color: var(--grn-t2);\r\n      border-color: var(--grn-bdr);\r\n      font-weight: 700;\r\n    }\r\n\r\n    .progress-bar {\r\n      display: flex;\r\n      gap: 5px;\r\n      margin-bottom: 20px;\r\n    }\r\n\r\n    .progress-step {\r\n      flex: 1;\r\n      height: 5px;\r\n      border-radius: 3px;\r\n      background: var(--bdr);\r\n      transition: background .4s;\r\n      position: relative;\r\n      overflow: hidden;\r\n    }\r\n\r\n    .progress-step::after {\r\n      content: '';\r\n      position: absolute;\r\n      inset: 0;\r\n      background: var(--acc);\r\n      transform: scaleX(0);\r\n      transform-origin: left;\r\n      transition: transform .35s ease;\r\n    }\r\n\r\n    .progress-step.active::after {\r\n      transform: scaleX(1);\r\n    }\r\n\r\n    .progress-step.done {\r\n      background: var(--grn);\r\n    }\r\n\r\n    .progress-step.done::after {\r\n      display: none;\r\n    }\r\n\r\n    .question-card {\r\n      background: var(--card);\r\n      border: 1px solid var(--bdr2);\r\n      border-radius: var(--r3);\r\n      padding: 28px 26px 24px;\r\n      box-shadow: var(--sh);\r\n      animation: qIn .22s ease both;\r\n    }\r\n\r\n    @keyframes qIn {\r\n      from {\r\n        opacity: 0;\r\n        transform: translateY(7px)\r\n      }\r\n\r\n      to {\r\n        opacity: 1;\r\n        transform: translateY(0)\r\n      }\r\n    }\r\n\r\n    .q-label {\r\n      font-size: 10px;\r\n      color: var(--acc);\r\n      text-transform: uppercase;\r\n      letter-spacing: .1em;\r\n      margin: 0 0 8px;\r\n      font-weight: 800;\r\n    }\r\n\r\n    .q-text {\r\n      font-size: 16.5px;\r\n      font-weight: 700;\r\n      margin: 0 0 12px;\r\n      line-height: 1.45;\r\n      letter-spacing: -.015em;\r\n      color: var(--t1);\r\n    }\r\n\r\n    .q-hint {\r\n      font-size: 12.5px;\r\n      color: var(--t2);\r\n      margin: 0 0 18px;\r\n      line-height: 1.65;\r\n      padding: 10px 14px;\r\n      background: var(--bg);\r\n      border-left: 3px solid var(--bdr);\r\n      border-radius: 0 var(--r1) var(--r1) 0;\r\n      font-style: italic;\r\n    }\r\n\r\n    .answer-btn {\r\n      width: 100%;\r\n      text-align: left;\r\n      padding: 14px 16px 14px 20px;\r\n      margin-bottom: 8px;\r\n      border-radius: var(--r2);\r\n      border: 1.5px solid var(--bdr);\r\n      background: var(--card);\r\n      font-size: 14px;\r\n      cursor: pointer;\r\n      color: var(--t1);\r\n      line-height: 1.45;\r\n      font-family: inherit;\r\n      transition: all var(--tr);\r\n      position: relative;\r\n      white-space: normal;\r\n      word-break: break-word;\r\n      overflow-wrap: break-word;\r\n    }\r\n\r\n    .answer-btn::before {\r\n      content: '';\r\n      position: absolute;\r\n      left: 0;\r\n      top: 0;\r\n      bottom: 0;\r\n      width: 3px;\r\n      border-radius: 3px 0 0 3px;\r\n      background: transparent;\r\n      transition: background var(--tr);\r\n    }\r\n\r\n    .answer-btn:hover {\r\n      background: var(--bg);\r\n      border-color: var(--t3);\r\n      color: var(--t1) !important;\r\n    }\r\n\r\n    .answer-btn:hover::before {\r\n      background: var(--bdr);\r\n    }\r\n\r\n    .answer-btn:hover .opt-desc {\r\n      color: var(--t2) !important;\r\n    }\r\n\r\n    .answer-btn.selected {\r\n      background: var(--acc-bg);\r\n      border-color: var(--acc);\r\n      color: var(--acc-t);\r\n      font-weight: 500;\r\n    }\r\n\r\n    .answer-btn.selected::before {\r\n      background: var(--acc);\r\n    }\r\n\r\n    .answer-btn strong {\r\n      font-weight: 700;\r\n    }\r\n\r\n    .answer-btn em {\r\n      font-style: italic;\r\n    }\r\n\r\n    .answer-btn .opt-desc {\r\n      display: block;\r\n      font-size: 12px;\r\n      color: var(--t2);\r\n      font-weight: 400;\r\n      margin-top: 4px;\r\n      line-height: 1.5;\r\n    }\r\n\r\n    .answer-btn.selected .opt-desc {\r\n      color: var(--acc-t);\r\n      opacity: .8;\r\n    }\r\n\r\n    \/* === Upload Zone mejorada === *\/\r\n    .upload-zone {\r\n      margin-top: 18px;\r\n      padding: 20px 18px;\r\n      border: 2px dashed var(--t3);\r\n      border-radius: var(--r2);\r\n      background: var(--bg);\r\n      transition: all var(--tr);\r\n      cursor: pointer;\r\n      text-align: center;\r\n    }\r\n\r\n    .upload-zone.drag-over {\r\n      border-color: var(--acc);\r\n      background: var(--acc-bg);\r\n      transform: scale(1.01);\r\n    }\r\n\r\n    .upload-zone.has-file {\r\n      border-style: solid;\r\n      border-color: var(--grn-bdr);\r\n      background: var(--grn-bg);\r\n      text-align: left;\r\n    }\r\n\r\n    .upload-icon {\r\n      font-size: 26px;\r\n      margin-bottom: 6px;\r\n      display: block;\r\n    }\r\n\r\n    .upload-zone.has-file .upload-icon {\r\n      display: none;\r\n    }\r\n\r\n    .upload-label {\r\n      font-size: 13px;\r\n      font-weight: 600;\r\n      margin: 0 0 4px;\r\n      color: var(--t2);\r\n    }\r\n\r\n    .upload-sub {\r\n      font-size: 11.5px;\r\n      color: var(--t3);\r\n      margin: 0 0 12px;\r\n    }\r\n\r\n    .upload-zone.has-file .upload-sub {\r\n      display: none;\r\n    }\r\n\r\n    .upload-btn-label {\r\n      display: inline-block;\r\n      padding: 7px 16px;\r\n      background: var(--card);\r\n      border: 1.5px solid var(--bdr);\r\n      border-radius: var(--r1);\r\n      font-size: 12.5px;\r\n      font-weight: 600;\r\n      color: var(--t1);\r\n      cursor: pointer;\r\n      transition: all var(--tr);\r\n      margin-top: 4px;\r\n    }\r\n\r\n    .upload-btn-label:hover {\r\n      background: var(--bg2);\r\n      border-color: var(--t3);\r\n    }\r\n\r\n    .upload-zone.has-file .upload-btn-label {\r\n      display: none;\r\n    }\r\n\r\n    .file-input {\r\n      display: none;\r\n    }\r\n\r\n    .file-meta {\r\n      font-size: 12.5px;\r\n      color: var(--grn-t2);\r\n      margin: 0;\r\n      font-weight: 600;\r\n      display: flex;\r\n      align-items: center;\r\n      gap: 8px;\r\n    }\r\n\r\n    .file-meta-name {\r\n      word-break: break-all;\r\n    }\r\n\r\n    .file-meta-size {\r\n      color: var(--grn-t);\r\n      opacity: .7;\r\n      font-weight: 400;\r\n    }\r\n\r\n    .file-remove {\r\n      margin-left: auto;\r\n      background: none;\r\n      border: none;\r\n      cursor: pointer;\r\n      color: var(--red-t2);\r\n      font-size: 13px;\r\n      padding: 2px 4px;\r\n      border-radius: 4px;\r\n      transition: background var(--tr);\r\n    }\r\n\r\n    .file-remove:hover {\r\n      background: var(--red-bg);\r\n    }\r\n\r\n    .file-error {\r\n      font-size: 12px;\r\n      color: var(--red-t2);\r\n      margin: 8px 0 0;\r\n      padding: 8px 12px;\r\n      background: var(--red-bg);\r\n      border-radius: var(--r1);\r\n      border: 1px solid var(--red-bdr);\r\n    }\r\n\r\n    \/* === Toast de notificaci\u00f3n === *\/\r\n    .toast-container {\r\n      position: fixed;\r\n      bottom: 24px;\r\n      right: 24px;\r\n      z-index: 9000;\r\n      display: flex;\r\n      flex-direction: column;\r\n      gap: 10px;\r\n      pointer-events: none;\r\n    }\r\n\r\n    .toast {\r\n      padding: 12px 18px;\r\n      border-radius: var(--r2);\r\n      font-size: 13.5px;\r\n      font-weight: 500;\r\n      box-shadow: 0 4px 20px rgba(0, 0, 0, .15);\r\n      animation: toastIn .25s ease;\r\n      pointer-events: auto;\r\n      display: flex;\r\n      align-items: center;\r\n      gap: 10px;\r\n      min-width: 240px;\r\n      max-width: 340px;\r\n    }\r\n\r\n    .toast.success {\r\n      background: var(--grn-bg);\r\n      color: var(--grn-t);\r\n      border: 1px solid var(--grn-bdr);\r\n    }\r\n\r\n    .toast.error {\r\n      background: var(--red-bg);\r\n      color: var(--red-t);\r\n      border: 1px solid var(--red-bdr);\r\n    }\r\n\r\n    .toast.loading {\r\n      background: var(--acc-bg);\r\n      color: var(--acc-t);\r\n      border: 1px solid var(--acc);\r\n    }\r\n\r\n    .toast.info {\r\n      background: var(--bg2);\r\n      color: var(--t1);\r\n      border: 1px solid var(--bdr);\r\n    }\r\n\r\n    @keyframes toastIn {\r\n      from {\r\n        opacity: 0;\r\n        transform: translateY(10px)\r\n      }\r\n\r\n      to {\r\n        opacity: 1;\r\n        transform: translateY(0)\r\n      }\r\n    }\r\n\r\n    \/* === Bot\u00f3n Enviar con estado de carga === *\/\r\n    .action-btn.loading {\r\n      opacity: .7;\r\n      cursor: not-allowed;\r\n      pointer-events: none;\r\n    }\r\n\r\n    .spinner {\r\n      display: inline-block;\r\n      width: 14px;\r\n      height: 14px;\r\n      border: 2px solid rgba(255, 255, 255, .4);\r\n      border-top-color: #fff;\r\n      border-radius: 50%;\r\n      animation: spin .7s linear infinite;\r\n      vertical-align: middle;\r\n      margin-right: 6px;\r\n    }\r\n\r\n    @keyframes spin {\r\n      to {\r\n        transform: rotate(360deg)\r\n      }\r\n    }\r\n\r\n    .text-input {\r\n      width: 100%;\r\n      margin-top: 6px;\r\n      padding: 12px 14px;\r\n      border: 1.5px solid var(--bdr);\r\n      border-radius: var(--r2);\r\n      font-size: 15px;\r\n      font-family: inherit;\r\n      resize: vertical;\r\n      min-height: 48px;\r\n      color: var(--t1);\r\n      background: var(--card);\r\n      user-select: text;\r\n      -webkit-user-select: text;\r\n      transition: border-color var(--tr), box-shadow var(--tr);\r\n    }\r\n\r\n    .text-input:focus {\r\n      outline: none;\r\n      border-color: var(--acc);\r\n      box-shadow: 0 0 0 3px rgba(74, 65, 178, .12);\r\n    }\r\n\r\n    .text-input.input-error {\r\n      border-color: var(--red-bdr);\r\n    }\r\n\r\n    .text-input.input-error:focus {\r\n      box-shadow: 0 0 0 3px rgba(229, 152, 152, .2);\r\n    }\r\n\r\n    .field-label {\r\n      font-size: 11.5px;\r\n      color: var(--t2);\r\n      font-weight: 700;\r\n      text-transform: uppercase;\r\n      letter-spacing: .07em;\r\n      margin: 20px 0 0;\r\n      display: block;\r\n    }\r\n\r\n    .field-label:first-of-type {\r\n      margin-top: 0;\r\n    }\r\n\r\n    .field-error {\r\n      font-size: 12px;\r\n      color: var(--red-t2);\r\n      margin: 5px 0 0;\r\n      padding: 7px 11px;\r\n      background: var(--red-bg);\r\n      border-radius: var(--r1);\r\n      border: 1px solid var(--red-bdr);\r\n      display: none;\r\n    }\r\n\r\n    .field-error.visible {\r\n      display: block;\r\n    }\r\n\r\n    .continue-btn {\r\n      display: block;\r\n      width: 100%;\r\n      margin-top: 20px;\r\n      padding: 14px 24px;\r\n      background: var(--acc);\r\n      color: #fff;\r\n      border: none;\r\n      border-radius: var(--r2);\r\n      font-size: 15px;\r\n      font-weight: 700;\r\n      cursor: pointer;\r\n      font-family: inherit;\r\n      letter-spacing: .01em;\r\n      transition: all var(--tr);\r\n    }\r\n\r\n    .continue-btn:hover:not(:disabled) {\r\n      background: #3D35A0;\r\n      transform: translateY(-1px);\r\n      box-shadow: 0 4px 14px rgba(74, 65, 178, .3);\r\n    }\r\n\r\n    .continue-btn:active:not(:disabled) {\r\n      transform: translateY(0);\r\n    }\r\n\r\n    .continue-btn:disabled {\r\n      background: var(--bdr);\r\n      color: var(--t3);\r\n      cursor: not-allowed;\r\n      transform: none;\r\n      box-shadow: none;\r\n    }\r\n\r\n    .nav-row {\r\n      display: flex;\r\n      justify-content: space-between;\r\n      align-items: center;\r\n      margin-top: 18px;\r\n    }\r\n\r\n    .nav-btn {\r\n      background: transparent;\r\n      border: 1px solid var(--bdr);\r\n      color: var(--t2);\r\n      font-size: 13px;\r\n      cursor: pointer;\r\n      padding: 7px 14px;\r\n      font-family: inherit;\r\n      border-radius: var(--r1);\r\n      transition: all var(--tr);\r\n    }\r\n\r\n    .nav-btn:hover {\r\n      background: var(--bg2);\r\n      border-color: var(--t3);\r\n      color: var(--t1);\r\n    }\r\n\r\n    .result-card {\r\n      border-radius: var(--r2);\r\n      padding: 24px 26px;\r\n      position: relative;\r\n      overflow: hidden;\r\n    }\r\n\r\n    .result-card::before {\r\n      content: '';\r\n      position: absolute;\r\n      top: 0;\r\n      left: 0;\r\n      right: 0;\r\n      height: 4px;\r\n    }\r\n\r\n    .result-card.match {\r\n      background: var(--grn-bg);\r\n      border: 1.5px solid var(--grn-bdr);\r\n    }\r\n\r\n    .result-card.match::before {\r\n      background: var(--grn);\r\n    }\r\n\r\n    .result-card.no-match {\r\n      background: var(--amb-bg);\r\n      border: 1.5px solid var(--amb-bdr);\r\n    }\r\n\r\n    .result-card.no-match::before {\r\n      background: var(--amb-bdr);\r\n    }\r\n\r\n    .result-card.stop {\r\n      background: var(--red-bg);\r\n      border: 1.5px solid var(--red-bdr);\r\n    }\r\n\r\n    .result-card.stop::before {\r\n      background: var(--red-bdr);\r\n    }\r\n\r\n    .result-label {\r\n      font-size: 11px;\r\n      text-transform: uppercase;\r\n      letter-spacing: .08em;\r\n      margin: 0 0 8px;\r\n      font-weight: 700;\r\n    }\r\n\r\n    .result-card.match .result-label {\r\n      color: var(--grn-t2);\r\n    }\r\n\r\n    .result-card.no-match .result-label {\r\n      color: var(--amb-t2);\r\n    }\r\n\r\n    .result-card.stop .result-label {\r\n      color: var(--red-t2);\r\n    }\r\n\r\n    .result-name {\r\n      font-size: 24px;\r\n      font-weight: 700;\r\n      margin: 0 0 12px;\r\n      line-height: 1.25;\r\n      letter-spacing: -.02em;\r\n    }\r\n\r\n    .result-card.match .result-name {\r\n      color: var(--grn-t);\r\n    }\r\n\r\n    .result-card.no-match .result-name {\r\n      color: var(--amb-t);\r\n    }\r\n\r\n    .result-card.stop .result-name {\r\n      color: var(--red-t);\r\n    }\r\n\r\n    .result-desc {\r\n      font-size: 14px;\r\n      line-height: 1.65;\r\n      margin: 0;\r\n    }\r\n\r\n    .result-card.no-match .result-desc {\r\n      color: var(--amb-t2);\r\n    }\r\n\r\n    .result-card.stop .result-desc {\r\n      color: var(--red-t2);\r\n    }\r\n\r\n    .normative-block {\r\n      background: rgba(255, 255, 255, .75);\r\n      border-radius: var(--r1);\r\n      padding: 16px;\r\n      margin-top: 16px;\r\n      border: 1px solid var(--grn-bdr);\r\n    }\r\n\r\n    .normative-label {\r\n      font-size: 11px;\r\n      color: var(--t2);\r\n      text-transform: uppercase;\r\n      letter-spacing: .06em;\r\n      margin: 0 0 10px;\r\n      font-weight: 700;\r\n    }\r\n\r\n    .normative-textarea {\r\n      width: 100%;\r\n      min-height: 110px;\r\n      padding: 12px 14px;\r\n      border: 1.5px solid var(--bdr);\r\n      border-radius: var(--r1);\r\n      font-size: 13px;\r\n      font-family: inherit;\r\n      resize: vertical;\r\n      line-height: 1.55;\r\n      color: var(--t1);\r\n      background: var(--card);\r\n      user-select: text;\r\n      -webkit-user-select: text;\r\n      transition: border-color var(--tr), box-shadow var(--tr);\r\n    }\r\n\r\n    .normative-textarea:focus {\r\n      outline: none;\r\n      border-color: var(--acc);\r\n      box-shadow: 0 0 0 3px rgba(74, 65, 178, .12);\r\n    }\r\n\r\n    .normative-helper {\r\n      font-size: 11.5px;\r\n      color: var(--t3);\r\n      margin: 8px 0 0;\r\n    }\r\n\r\n    .summary-block {\r\n      background: var(--card);\r\n      border: 1px solid var(--bdr2);\r\n      border-radius: var(--r2);\r\n      padding: 20px 24px;\r\n      margin-top: 16px;\r\n      box-shadow: var(--sh2);\r\n    }\r\n\r\n    .summary-row {\r\n      display: flex;\r\n      justify-content: space-between;\r\n      padding: 9px 0;\r\n      border-bottom: 1px solid var(--bdr2);\r\n      font-size: 13.5px;\r\n      gap: 16px;\r\n      align-items: flex-start;\r\n    }\r\n\r\n    .summary-row:last-child {\r\n      border-bottom: none;\r\n    }\r\n\r\n    .summary-label {\r\n      color: var(--t2);\r\n      flex-shrink: 0;\r\n      font-size: 13px;\r\n    }\r\n\r\n    .summary-value {\r\n      text-align: right;\r\n      color: var(--t1);\r\n      word-break: break-word;\r\n      font-weight: 500;\r\n    }\r\n\r\n    .actions-row {\r\n      display: flex;\r\n      gap: 10px;\r\n      margin-top: 20px;\r\n      flex-wrap: wrap;\r\n    }\r\n\r\n    .action-btn {\r\n      flex: 1;\r\n      min-width: 140px;\r\n      padding: 12px 18px;\r\n      border-radius: var(--r1);\r\n      font-size: 13.5px;\r\n      font-weight: 600;\r\n      cursor: pointer;\r\n      font-family: inherit;\r\n      transition: all var(--tr);\r\n      border: 1.5px solid transparent;\r\n    }\r\n\r\n    .action-btn.primary {\r\n      background: var(--acc);\r\n      color: #fff;\r\n      border-color: var(--acc);\r\n    }\r\n\r\n    .action-btn.primary:hover {\r\n      background: #3D35A0;\r\n      box-shadow: 0 4px 14px rgba(74, 65, 178, .25);\r\n    }\r\n\r\n    .action-btn.secondary {\r\n      background: var(--card);\r\n      color: var(--t1);\r\n      border-color: var(--bdr);\r\n    }\r\n\r\n    .action-btn.secondary:hover {\r\n      background: var(--bg2);\r\n      border-color: var(--t3);\r\n      color: var(--t1) !important;\r\n    }\r\n\r\n    .footer {\r\n      text-align: center;\r\n      margin-top: 40px;\r\n      padding-top: 18px;\r\n      border-top: 1px solid var(--bdr2);\r\n      font-size: 11px;\r\n      color: var(--t3);\r\n      letter-spacing: .04em;\r\n    }\r\n\r\n    .comparison-block {\r\n      background: var(--card);\r\n      border: 1px solid var(--bdr2);\r\n      border-radius: var(--r2);\r\n      padding: 20px 24px;\r\n      margin-top: 16px;\r\n      box-shadow: var(--sh2);\r\n    }\r\n\r\n    .comparison-grid {\r\n      display: grid;\r\n      grid-template-columns: 1fr 1fr;\r\n      gap: 12px;\r\n      margin-top: 14px;\r\n    }\r\n\r\n    .comparison-cell {\r\n      padding: 14px 16px;\r\n      border-radius: var(--r1);\r\n      background: var(--bg);\r\n      border: 1px solid var(--bdr2);\r\n    }\r\n\r\n    .comparison-cell.match {\r\n      background: var(--grn-bg);\r\n      border-color: var(--grn-bdr);\r\n    }\r\n\r\n    .comparison-cell.match .label {\r\n      color: var(--grn-t2);\r\n    }\r\n\r\n    .comparison-cell.match .value {\r\n      color: var(--grn-t);\r\n    }\r\n\r\n    .comparison-cell.no-match {\r\n      background: var(--amb-bg);\r\n      border-color: var(--amb-bdr);\r\n    }\r\n\r\n    .comparison-cell.no-match .label {\r\n      color: var(--amb-t2);\r\n    }\r\n\r\n    .comparison-cell.no-match .value {\r\n      color: var(--amb-t);\r\n    }\r\n\r\n    .comparison-cell.stop {\r\n      background: var(--red-bg);\r\n      border-color: var(--red-bdr);\r\n    }\r\n\r\n    .comparison-cell.stop .label {\r\n      color: var(--red-t2);\r\n    }\r\n\r\n    .comparison-cell.stop .value {\r\n      color: var(--red-t);\r\n    }\r\n\r\n    .comparison-cell .label {\r\n      font-size: 10.5px;\r\n      color: var(--t2);\r\n      text-transform: uppercase;\r\n      letter-spacing: .06em;\r\n      margin: 0 0 6px;\r\n      font-weight: 700;\r\n    }\r\n\r\n    .comparison-cell .value {\r\n      font-size: 14px;\r\n      color: var(--t1);\r\n      font-weight: 600;\r\n      margin: 0;\r\n    }\r\n\r\n    .comparison-banner {\r\n      margin-top: 12px;\r\n      padding: 11px 16px;\r\n      border-radius: var(--r1);\r\n      font-size: 13px;\r\n      font-weight: 500;\r\n      line-height: 1.5;\r\n    }\r\n\r\n    .comparison-banner.match {\r\n      background: var(--grn-bg);\r\n      border: 1px solid var(--grn-bdr);\r\n      color: var(--grn-t2);\r\n    }\r\n\r\n    .comparison-banner.mismatch {\r\n      background: var(--amb-bg);\r\n      border: 1px solid var(--amb-bdr);\r\n      color: var(--amb-t2);\r\n    }\r\n\r\n    .comparison-banner.neutral {\r\n      background: var(--bg2);\r\n      border: 1px solid var(--bdr);\r\n      color: var(--t2);\r\n    }\r\n\r\n    \/* ============================================================\r\n   RESPONSIVE \u2014 3 breakpoints\r\n   \u2264600px  phablet \/ tablet angosta\r\n   \u2264480px  m\u00f3vil\r\n   \u2264360px  m\u00f3vil peque\u00f1o\r\n   ============================================================ *\/\r\n\r\n    @media(max-width:600px) {\r\n      #amc-app {\r\n        padding: 20px 14px 52px;\r\n      }\r\n\r\n      .brand {\r\n        margin-bottom: 22px;\r\n        padding-bottom: 16px;\r\n      }\r\n\r\n      .brand-title {\r\n        font-size: 20px;\r\n      }\r\n\r\n      .brand-subtitle {\r\n        font-size: 12.5px;\r\n      }\r\n\r\n      .schemes-panel {\r\n        padding: 11px 14px;\r\n        margin-bottom: 14px;\r\n      }\r\n\r\n      .progress-bar {\r\n        gap: 4px;\r\n        margin-bottom: 16px;\r\n      }\r\n\r\n      .question-card {\r\n        padding: 22px 20px 20px;\r\n      }\r\n\r\n      .q-text {\r\n        font-size: 16px;\r\n      }\r\n\r\n      .answer-btn {\r\n        padding: 13px 14px 13px 18px;\r\n        font-size: 13.5px;\r\n      }\r\n\r\n      .continue-btn {\r\n        margin-top: 16px;\r\n        padding: 13px 20px;\r\n        font-size: 14.5px;\r\n      }\r\n\r\n      .result-name {\r\n        font-size: 22px;\r\n      }\r\n\r\n      .summary-block,\r\n      .comparison-block {\r\n        padding: 16px 18px;\r\n      }\r\n\r\n      .actions-row {\r\n        gap: 8px;\r\n      }\r\n\r\n      .action-btn {\r\n        font-size: 13px;\r\n        padding: 11px 14px;\r\n      }\r\n    }\r\n\r\n    @media(max-width:480px) {\r\n      #amc-app {\r\n        padding: 16px 12px 48px;\r\n      }\r\n\r\n      .brand {\r\n        margin-bottom: 18px;\r\n        padding-bottom: 14px;\r\n      }\r\n\r\n      .brand::after {\r\n        width: 40px;\r\n      }\r\n\r\n      .brand-name {\r\n        font-size: 10px;\r\n        letter-spacing: .08em;\r\n      }\r\n\r\n      .brand-title {\r\n        font-size: 18px;\r\n        letter-spacing: -.015em;\r\n      }\r\n\r\n      .brand-subtitle {\r\n        font-size: 12px;\r\n        line-height: 1.4;\r\n      }\r\n\r\n      .info-block summary {\r\n        padding: 10px 14px;\r\n      }\r\n\r\n      .info-content {\r\n        padding: 4px 14px 16px;\r\n      }\r\n\r\n      .info-content h4 {\r\n        margin: 14px 0 8px;\r\n      }\r\n\r\n      .info-content p,\r\n      .info-content li {\r\n        font-size: 12.5px;\r\n      }\r\n\r\n      .schemes-panel {\r\n        padding: 10px 12px;\r\n        border-radius: var(--r1);\r\n      }\r\n\r\n      .schemes-list {\r\n        gap: 5px;\r\n      }\r\n\r\n      .scheme-pill {\r\n        font-size: 11px;\r\n        padding: 3px 10px;\r\n      }\r\n\r\n      .progress-bar {\r\n        gap: 3px;\r\n        margin-bottom: 14px;\r\n      }\r\n\r\n      .progress-step {\r\n        height: 4px;\r\n      }\r\n\r\n      .question-card {\r\n        padding: 18px 14px 16px;\r\n        border-radius: var(--r2);\r\n        box-shadow: var(--sh2);\r\n      }\r\n\r\n      .q-label {\r\n        font-size: 10px;\r\n        margin: 0 0 6px;\r\n      }\r\n\r\n      .q-text {\r\n        font-size: 15px;\r\n        margin: 0 0 8px;\r\n      }\r\n\r\n      .q-hint {\r\n        font-size: 12.5px;\r\n        padding: 9px 12px;\r\n        margin: 0 0 16px;\r\n      }\r\n\r\n      .answer-btn {\r\n        padding: 12px 12px 12px 16px;\r\n        font-size: 13px;\r\n        margin-bottom: 6px;\r\n        border-radius: var(--r1);\r\n      }\r\n\r\n      .answer-btn .opt-desc {\r\n        font-size: 11.5px;\r\n        margin-top: 3px;\r\n      }\r\n\r\n      .answer-btn::before {\r\n        width: 2.5px;\r\n      }\r\n\r\n      .upload-zone {\r\n        padding: 13px 14px;\r\n        margin-top: 14px;\r\n      }\r\n\r\n      .upload-label {\r\n        font-size: 12.5px;\r\n      }\r\n\r\n      .text-input {\r\n        padding: 11px 12px;\r\n        font-size: 14px;\r\n      }\r\n\r\n      .continue-btn {\r\n        margin-top: 16px;\r\n        padding: 14px 18px;\r\n        font-size: 14px;\r\n        min-height: 48px;\r\n      }\r\n\r\n      .nav-btn {\r\n        padding: 10px 16px;\r\n        font-size: 12.5px;\r\n        min-height: 44px;\r\n        min-width: 80px;\r\n        border-radius: var(--r2);\r\n      }\r\n\r\n      .result-card {\r\n        padding: 18px 16px;\r\n      }\r\n\r\n      .result-name {\r\n        font-size: 20px;\r\n        letter-spacing: -.015em;\r\n      }\r\n\r\n      .result-desc {\r\n        font-size: 13.5px;\r\n      }\r\n\r\n      .normative-block {\r\n        padding: 13px;\r\n        margin-top: 13px;\r\n      }\r\n\r\n      .normative-textarea {\r\n        min-height: 90px;\r\n      }\r\n\r\n      .comparison-grid {\r\n        grid-template-columns: 1fr;\r\n      }\r\n\r\n      .comparison-block {\r\n        padding: 14px 16px;\r\n        margin-top: 12px;\r\n      }\r\n\r\n      .comparison-banner {\r\n        padding: 10px 12px;\r\n        font-size: 12.5px;\r\n      }\r\n\r\n      .summary-block {\r\n        padding: 14px 16px;\r\n        margin-top: 12px;\r\n      }\r\n\r\n      .summary-row {\r\n        font-size: 12.5px;\r\n        gap: 8px;\r\n        padding: 8px 0;\r\n        flex-wrap: wrap;\r\n      }\r\n\r\n      .summary-label {\r\n        font-size: 12px;\r\n        min-width: 0;\r\n      }\r\n\r\n      .summary-value {\r\n        text-align: left;\r\n        width: 100%;\r\n        margin-top: 2px;\r\n      }\r\n\r\n      .actions-row {\r\n        flex-direction: column;\r\n        gap: 8px;\r\n        margin-top: 16px;\r\n      }\r\n\r\n      .action-btn {\r\n        min-width: 0;\r\n        width: 100%;\r\n        padding: 13px 16px;\r\n        min-height: 48px;\r\n        font-size: 13.5px;\r\n        text-align: center;\r\n      }\r\n\r\n      .footer {\r\n        margin-top: 28px;\r\n        font-size: 10.5px;\r\n        line-height: 1.6;\r\n      }\r\n\r\n      .toast-container {\r\n        bottom: 16px;\r\n        right: 12px;\r\n        left: 12px;\r\n      }\r\n\r\n      .toast {\r\n        min-width: 0;\r\n        width: 100%;\r\n      }\r\n    }\r\n\r\n    @media(max-width:360px) {\r\n      #amc-app {\r\n        padding: 12px 10px 40px;\r\n      }\r\n\r\n      .brand {\r\n        margin-bottom: 14px;\r\n      }\r\n\r\n      .brand-title {\r\n        font-size: 16px;\r\n      }\r\n\r\n      .brand-subtitle {\r\n        font-size: 11.5px;\r\n      }\r\n\r\n      .question-card {\r\n        padding: 14px 12px;\r\n      }\r\n\r\n      .q-text {\r\n        font-size: 14.5px;\r\n      }\r\n\r\n      .answer-btn {\r\n        padding: 11px 10px 11px 14px;\r\n        font-size: 12.5px;\r\n      }\r\n\r\n      .continue-btn {\r\n        font-size: 13.5px;\r\n      }\r\n\r\n      .result-name {\r\n        font-size: 18px;\r\n      }\r\n\r\n      .summary-row {\r\n        font-size: 12px;\r\n      }\r\n\r\n      .action-btn {\r\n        font-size: 13px;\r\n      }\r\n    }\r\n\r\n    \/* === Verificaci\u00f3n de correo por token === *\/\r\n    .verify-wrapper {\r\n      text-align: center;\r\n      padding: 8px 0;\r\n    }\r\n\r\n    .verify-icon {\r\n      font-size: 52px;\r\n      margin: 0 0 16px;\r\n      display: block;\r\n    }\r\n\r\n    .verify-title {\r\n      font-size: 19px;\r\n      font-weight: 700;\r\n      margin: 0 0 10px;\r\n      letter-spacing: -.015em;\r\n      color: var(--t1);\r\n    }\r\n\r\n    .verify-desc {\r\n      font-size: 13.5px;\r\n      color: var(--t2);\r\n      margin: 0 0 6px;\r\n      line-height: 1.65;\r\n    }\r\n\r\n    .verify-email-chip {\r\n      display: inline-block;\r\n      margin: 8px 0 20px;\r\n      padding: 6px 16px;\r\n      background: var(--acc-bg);\r\n      color: var(--acc-t);\r\n      border-radius: 999px;\r\n      font-size: 13px;\r\n      font-weight: 600;\r\n      border: 1px solid var(--acc);\r\n      word-break: break-all;\r\n    }\r\n\r\n    .token-input-wrap {\r\n      margin: 0 auto 8px;\r\n      max-width: 300px;\r\n    }\r\n\r\n    .token-input {\r\n      text-align: center;\r\n      font-size: 30px;\r\n      letter-spacing: 0.4em;\r\n      font-weight: 700;\r\n      width: 100%;\r\n      padding: 16px 12px;\r\n      border: 2px solid var(--bdr);\r\n      border-radius: var(--r2);\r\n      background: var(--card);\r\n      color: var(--t1);\r\n      transition: border-color var(--tr), box-shadow var(--tr);\r\n    }\r\n\r\n    .token-input:focus {\r\n      border-color: var(--acc);\r\n      box-shadow: 0 0 0 3px rgba(74, 65, 178, .12);\r\n      outline: none;\r\n    }\r\n\r\n    .token-input.input-error {\r\n      border-color: var(--red-bdr) !important;\r\n    }\r\n\r\n    .token-input.input-success {\r\n      border-color: var(--grn-bdr) !important;\r\n      color: var(--grn-t);\r\n    }\r\n\r\n    .verify-timer {\r\n      font-size: 12px;\r\n      color: var(--t3);\r\n      margin: 12px 0 4px;\r\n    }\r\n\r\n    .verify-timer strong {\r\n      color: var(--t2);\r\n    }\r\n\r\n    .resend-link {\r\n      background: none;\r\n      border: none;\r\n      color: var(--acc);\r\n      font-size: 13px;\r\n      cursor: pointer;\r\n      font-family: inherit;\r\n      padding: 4px 0;\r\n      text-decoration: underline;\r\n      display: inline;\r\n    }\r\n\r\n    .resend-link:disabled {\r\n      color: var(--t3);\r\n      cursor: not-allowed;\r\n      text-decoration: none;\r\n    }\r\n\r\n    .verify-help {\r\n      font-size: 12px;\r\n      color: var(--t3);\r\n      margin-top: 20px;\r\n      line-height: 1.65;\r\n      padding: 12px;\r\n      background: var(--bg2);\r\n      border-radius: var(--r1);\r\n      text-align: left;\r\n    }\r\n\r\n    .send-cta-msg {\r\n      font-size: 13.5px;\r\n      color: var(--acc-t);\r\n      text-align: center;\r\n      padding: 14px 20px;\r\n      background: var(--acc-bg);\r\n      border: 1px solid var(--acc);\r\n      border-radius: var(--r2);\r\n      margin-bottom: 14px;\r\n      line-height: 1.65;\r\n      font-weight: 500;\r\n    }\r\n\r\n    @media print {\r\n\r\n      .nav-row,\r\n      .actions-row,\r\n      .info-block,\r\n      .schemes-panel {\r\n        display: none !important;\r\n      }\r\n\r\n      #amc-app {\r\n        background: #fff !important;\r\n        padding: 0;\r\n      }\r\n\r\n      .question-card {\r\n        box-shadow: none;\r\n        border: 1px solid #ccc;\r\n      }\r\n\r\n      body::before {\r\n        content: 'CONFIDENCIAL \u00b7 AMC PRINCIPAL \u00b7 ' attr(data-session);\r\n        position: fixed;\r\n        top: 50%;\r\n        left: 50%;\r\n        transform: translate(-50%, -50%) rotate(-35deg);\r\n        font-size: 42px;\r\n        font-weight: 900;\r\n        color: rgba(74, 65, 178, .08);\r\n        letter-spacing: .08em;\r\n        text-transform: uppercase;\r\n        z-index: 9999;\r\n        pointer-events: none;\r\n        white-space: nowrap;\r\n        font-family: system-ui, sans-serif;\r\n      }\r\n    }\r\n  <\/style>\r\n<\/head>\r\n\r\n<body>\r\n  <!-- Overlay de protecci\u00f3n al perder foco -->\r\n  <div id=\"_amc_blur\"\r\n    style=\"display:none;position:fixed;inset:0;z-index:99999;background:rgba(245,244,240,0.97);backdrop-filter:blur(12px);align-items:center;justify-content:center;flex-direction:column;gap:12px;font-family:system-ui;color:#5F5C56;\">\r\n    <div style=\"font-size:40px;\">\ud83d\udd12<\/div>\r\n    <div style=\"font-size:14px;font-weight:600;color:#18171A;\">Sesi\u00f3n en pausa<\/div>\r\n    <div style=\"font-size:13px;\">Regrese a esta pesta\u00f1a para continuar<\/div>\r\n  <\/div>\r\n\r\n  <div id=\"amc-app\">\r\n    <div class=\"container\">\r\n      <div class=\"brand\">\r\n        <div class=\"brand-text\">\r\n          <p class=\"brand-name\">AMC Principal<\/p>\r\n          <h1 class=\"brand-title\">Tamiz <span class=\"brand-by\">| by AMC Principal<\/span><\/h1>\r\n          <p class=\"brand-subtitle\">Herramienta propietaria de diagn\u00f3stico de esquemas regulatorios en operaciones de\r\n            energ\u00eda<\/p>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <details class=\"info-block\">\r\n        <summary>\r\n          <span>Instructivo y avisos legales<\/span>\r\n          <span class=\"chevron\">&#9662;<\/span>\r\n        <\/summary>\r\n        <div class=\"info-content\">\r\n          <h4>Instructivo<\/h4>\r\n          <ul>\r\n            <li><strong>X<\/strong> es la empresa que se eval\u00faa para efectos de determinar la categor\u00eda regulatoria en la\r\n              cual opera.<\/li>\r\n            <li>Comprar o producir energ\u00eda son negocios jur\u00eddicos diferentes y mutuamente excluyentes. Establecer cu\u00e1l\r\n              es el aplicable depende de la realidad de las relaciones jur\u00eddicas, econ\u00f3micas y operativas existentes, lo\r\n              cual ser\u00e1 validado por nuestro equipo de expertos con base en la documentaci\u00f3n que se aporte.<\/li>\r\n            <li>Esta herramienta tiene en cuenta la posibilidad de operar con equipos de propiedad de terceros conforme\r\n              a la ley vigente y aplicable.<\/li>\r\n          <\/ul>\r\n          <h4>Avisos legales<\/h4>\r\n          <p class=\"legal\">Esta versi\u00f3n no constituye una revisi\u00f3n exhaustiva de cumplimiento regulatorio; es solo un\r\n            <em>tamiz inicial<\/em> (smell test) orientativo.<\/p>\r\n          <p class=\"legal\">Esta herramienta no constituye asesor\u00eda jur\u00eddica ni de ninguna naturaleza.<\/p>\r\n          <p class=\"legal\">El uso de la herramienta es responsabilidad del usuario, quien debe contar con autorizaci\u00f3n\r\n            previa, expresa y escrita de AMC Principal para su uso.<\/p>\r\n          <p class=\"legal\">Tamiz | by AMC Principal \u00b7 v1.0 \u00b7 Todos los derechos reservados. Prohibida su reproducci\u00f3n,\r\n            modificaci\u00f3n y cualquier uso no autorizado.<\/p>\r\n        <\/div>\r\n      <\/details>\r\n\r\n      <div class=\"schemes-panel\">\r\n        <p class=\"schemes-label\">Esquemas en an\u00e1lisis<\/p>\r\n        <div class=\"schemes-list\" id=\"schemes-list\"><\/div>\r\n      <\/div>\r\n\r\n      <div class=\"progress-bar\" id=\"progress-bar\"><\/div>\r\n\r\n      <div class=\"question-card\" id=\"question-card\"><\/div>\r\n\r\n      <div class=\"nav-row\">\r\n        <button class=\"nav-btn\" id=\"back-btn\">\u2190 Atr\u00e1s<\/button>\r\n        <button class=\"nav-btn\" id=\"reset-btn\">Reiniciar<\/button>\r\n      <\/div>\r\n\r\n      <p class=\"footer\">AMC Principal specialized services platform \u00b7 Bogot\u00e1 \u00b7 Cali \u00b7 Miami \u00b7 Palo Alto<\/p>\r\n    <\/div>\r\n  <\/div><!-- \/#amc-app -->\r\n\r\n  <div class=\"toast-container\" id=\"toast-container\"><\/div>\r\n\r\n  <script>\r\n    (function () {\r\n      \/\/ \u2014 Iframe buster \u2014\r\n      if (window.top !== window.self) {\r\n        document.body.innerHTML = '';\r\n        window.top.location.href = window.self.location.href;\r\n        return;\r\n      }\r\n\r\n      \/\/ \u2014 Context menu \u2014\r\n      document.addEventListener('contextmenu', function (e) {\r\n        e.preventDefault();\r\n        return false;\r\n      }, true);\r\n\r\n      \/\/ \u2014 Keyboard shortcuts bloqueados \u2014\r\n      document.addEventListener('keydown', function (e) {\r\n        var k = e.key ? e.key.toUpperCase() : '';\r\n        var ctrl = e.ctrlKey || e.metaKey;\r\n        var blocked = (\r\n          k === 'F12' ||\r\n          (ctrl && e.shiftKey && ['I', 'J', 'C', 'K'].indexOf(k) !== -1) ||\r\n          (ctrl && ['U', 'S', 'A', 'P'].indexOf(k) !== -1) ||\r\n          k === 'PRINTSCREEN'\r\n        );\r\n        if (blocked) { e.preventDefault(); e.stopPropagation(); return false; }\r\n      }, true);\r\n\r\n      \/\/ \u2014 Deshabilitar selecci\u00f3n fuera de inputs \u2014\r\n      document.addEventListener('selectstart', function (e) {\r\n        var t = e.target;\r\n        if (t && (t.tagName === 'INPUT' || t.tagName === 'TEXTAREA')) return;\r\n        e.preventDefault();\r\n      });\r\n\r\n      \/\/ \u2014 Blur al cambiar de pesta\u00f1a \u2014\r\n      document.addEventListener('visibilitychange', function () {\r\n        var overlay = document.getElementById('_amc_blur');\r\n        if (overlay) overlay.style.display = document.hidden ? 'flex' : 'none';\r\n      });\r\n\r\n      \/\/ \u2014 Trampa de debugger continua \u2014\r\n      var _devOpen = false;\r\n      var _devCheck = setInterval(function () {\r\n        var t0 = +new Date();\r\n        debugger;\r\n        if (+new Date() - t0 > 100) {\r\n          if (!_devOpen) {\r\n            _devOpen = true;\r\n            document.body.innerHTML =\r\n              '<div style=\"display:flex;flex-direction:column;align-items:center;justify-content:center;' +\r\n              'height:100vh;font-family:system-ui;font-size:14px;color:#666;gap:12px;\">' +\r\n              '<div style=\"font-size:32px;\">\ud83d\udd12<\/div>' +\r\n              '<div style=\"font-weight:700;font-size:16px;color:#333;\">Herramienta protegida<\/div>' +\r\n              '<div>Tamiz | by AMC Principal \u00b7 Todos los derechos reservados<\/div>' +\r\n              '<\/div>';\r\n            clearInterval(_devCheck);\r\n          }\r\n        }\r\n      }, 1500);\r\n\r\n      \/\/ \u2014 Marca de agua en consola \u2014\r\n      console.log('%cTamiz | by AMC Principal', 'color:#4A41B2;font-size:18px;font-weight:700;');\r\n      console.log('%c\u26a0 Esta herramienta es propiedad exclusiva de AMC Principal. Uso no autorizado es perseguible legalmente.', 'color:#c00;font-size:12px;');\r\n\r\n      \/\/ \u2014 Session token para watermark de impresi\u00f3n \u2014\r\n      document.body.setAttribute('data-session',\r\n        new Date().toLocaleDateString('es-CO') + ' \u00b7 ' +\r\n        Math.random().toString(36).substring(2, 8).toUpperCase()\r\n      );\r\n    })();\r\n  <\/script>\r\n\r\n  <script>\r\n    (function () {\r\n      \/\/ ===== CONFIGURACI\u00d3N DE ENV\u00cdO (Web3Forms \u2014 registro en AMC) =====\r\n      const WEB3FORMS_ACCESS_KEY = 'd21a544d-23b8-45be-b890-a26697219e57';\r\n      const RECIPIENT_EMAIL = 'ops@amcprincipal.com';\r\n\r\n      \/\/ ===== CONFIGURACI\u00d3N BREVO =====\r\n      \/\/ Nota: si la clave xsmtpsib- da error 401, generar una clave xkeysib- en:\r\n      \/\/ app.brevo.com \u2192 SMTP & API \u2192 API Keys \u2192 Generate a new API key\r\n      const BREVO_API_KEY      = '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';\r\n      const BREVO_SENDER_EMAIL = 'juan@j-developer.com';\r\n      const BREVO_SENDER_NAME  = 'Tamiz AMC Principal';\r\n\r\n      const _vk = (function(){ const s=[56,55,52,51,49,57];return s.map(c=>String.fromCharCode(c)).join(''); })();\r\n\r\n      \/\/ ===== CONSTANTES =====\r\n      const APP_VERSION = 'v1.0';\r\n      const APP_NAME = 'Tamiz | by AMC Principal';\r\n      const APP_BRAND = 'AMC Principal';\r\n      const STEP_COUNT = 6;\r\n\r\n      \/\/ Validaci\u00f3n de integridad de sesi\u00f3n\r\n      const _EXPECTED_SCHEMES = ['AUTOGEN', 'PMARG', 'SUMIN', 'VENTAEXC', 'SINSOP'];\r\n      const _EXPECTED_EMAIL = 'ops@amcprincipal.com';\r\n\r\n      const SCHEMES = {\r\n        AUTOGEN: { id: 'AUTOGEN', short: 'Autogeneraci\u00f3n Remota', name: 'Autogeneraci\u00f3n Remota' },\r\n        PMARG: { id: 'PMARG', short: 'Producci\u00f3n Marginal Remota', name: 'Producci\u00f3n Marginal Remota' },\r\n        SUMIN: { id: 'SUMIN', short: 'Suministro de Energ\u00eda', name: 'Suministro de Energ\u00eda' },\r\n        VENTAEXC: { id: 'VENTAEXC', short: 'Venta de Excedentes de Autogeneraci\u00f3n', name: 'Venta de Excedentes de Autogeneraci\u00f3n' },\r\n        SINSOP: { id: 'SINSOP', short: 'Sin soporte regulatorio', name: 'Operaci\u00f3n sin soporte regulatorio' }\r\n      };\r\n\r\n      let state = {\r\n        current: 'qName',\r\n        history: [],\r\n        active: ['AUTOGEN', 'PMARG', 'SUMIN', 'VENTAEXC', 'SINSOP'],\r\n        answers: {},\r\n        files: {},\r\n        normativaUserText: '',\r\n        verifyToken: null,\r\n        verifyExpiry: null,\r\n        verifyAttempts: 0,\r\n        emailVerified: false,\r\n        _verifyEmailSent: false\r\n      };\r\n\r\n      const root = document.getElementById('question-card');\r\n      const schemesList = document.getElementById('schemes-list');\r\n      const progressBar = document.getElementById('progress-bar');\r\n      const backBtn = document.getElementById('back-btn');\r\n      const resetBtn = document.getElementById('reset-btn');\r\n\r\n      \/\/ ===== Helper: crear elemento DOM =====\r\n      function el(tag, props, html) {\r\n        const e = document.createElement(tag);\r\n        if (props) {\r\n          Object.keys(props).forEach(k => {\r\n            if (k === 'className') e.className = props[k];\r\n            else if (k === 'textContent') e.textContent = props[k];\r\n            else e[k] = props[k];\r\n          });\r\n        }\r\n        if (html !== undefined) e.innerHTML = html;\r\n        return e;\r\n      }\r\n\r\n      \/\/ ===== Helper: reemplazar \"X\" por el nombre de la empresa (sanitizado XSS) =====\r\n      function withName(text) {\r\n        if (!state.answers.companyName) return text;\r\n        const safeName = state.answers.companyName\r\n          .replace(\/&\/g, '&amp;')\r\n          .replace(\/<\/g, '&lt;')\r\n          .replace(\/>\/g, '&gt;')\r\n          .replace(\/\"\/g, '&quot;');\r\n        return text.replace(\/\\bX\\b\/g, safeName);\r\n      }\r\n\r\n      \/\/ ===== Sistema de Toasts =====\r\n      function showToast(message, type, duration) {\r\n        const container = document.getElementById('toast-container');\r\n        const icons = { success: '\u2713', error: '\u26a0', loading: '\u23f3', info: '\u2139' };\r\n        const toast = document.createElement('div');\r\n        toast.className = 'toast ' + (type || 'info');\r\n        toast.innerHTML = '<span>' + (icons[type] || '\u2139') + '<\/span><span>' + message + '<\/span>';\r\n        container.appendChild(toast);\r\n        if (duration !== 0) {\r\n          setTimeout(() => {\r\n            toast.style.opacity = '0';\r\n            toast.style.transition = 'opacity .3s';\r\n            setTimeout(() => toast.remove(), 300);\r\n          }, duration || 4000);\r\n        }\r\n        return toast;\r\n      }\r\n\r\n      \/\/ ===== Env\u00edo del diagn\u00f3stico via Web3Forms =====\r\n      async function sendReport(sendBtn) {\r\n        sendBtn.disabled = true;\r\n        sendBtn.classList.add('loading');\r\n        sendBtn.innerHTML = '<span class=\"spinner\"><\/span>Enviando diagn\u00f3stico...';\r\n        const loadingToast = showToast('Enviando diagn\u00f3stico a ' + RECIPIENT_EMAIL + '...', 'loading', 0);\r\n\r\n        try {\r\n          const stopA3 = state.current === 'resultStopA3';\r\n          const calif = stopA3\r\n            ? 'An\u00e1lisis pausado'\r\n            : (SCHEMES[state.answers.preliminaryScheme]\r\n              ? SCHEMES[state.answers.preliminaryScheme].name\r\n              : 'No determinada');\r\n\r\n          const empresa = state.answers.companyName || '(empresa no indicada)';\r\n          const intuicionRaw = state.answers.q0;\r\n          const intuicion = intuicionRaw === 'NOSE'\r\n            ? 'No estaba seguro \/ herramienta lo determina'\r\n            : (SCHEMES[intuicionRaw] ? SCHEMES[intuicionRaw].name : '(no indicado)');\r\n\r\n          const labelMap = {\r\n            q1: { produce: 'Produce la energ\u00eda', compra: 'Compra la energ\u00eda' },\r\n            qA1: { si: 'S\u00ed \u2014 vinculado econ\u00f3mico', no: 'No \u2014 no es vinculado econ\u00f3mico' },\r\n            qA2: { si: 'S\u00ed \u2014 Empresa de Servicios P\u00fablicos', no: 'No \u2014 no es ESP' },\r\n            qA3: { si: 'S\u00ed \u2014 \u00fanico consumidor', no: 'No \u2014 hay m\u00e1s consumidores' },\r\n            qB1: { propia: 'Frontera propia \/ EC en RUT de X', tercero: 'Frontera\/registro a nombre de tercero' },\r\n            qB2: { vinc: 'Usuario con vinculaci\u00f3n econ\u00f3mica', sinvinc: 'Sin vinculaci\u00f3n econ\u00f3mica', varios: 'Frontera atiende varios usuarios' }\r\n          };\r\n          const qLabelMap = {\r\n            q1: '\u00bfProduce o compra?',\r\n            qA1: '\u00bfVendedor vinculado econ\u00f3mico?',\r\n            qA2: '\u00bfVendedor es ESP?',\r\n            qA3: '\u00bfX \u00fanico consumidor?',\r\n            qB1: 'Naturaleza de la Frontera',\r\n            qB2: 'Vinculaci\u00f3n del usuario de la Frontera'\r\n          };\r\n\r\n          let body = '\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\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';\r\n          body += 'DIAGN\u00d3STICO TAMIZ | by AMC Principal\\n';\r\n          body += '\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\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';\r\n          body += 'Empresa evaluada: ' + empresa + '\\n';\r\n          body += 'Email de contacto: ' + (state.answers.contactEmail || '(no indicado)') + '\\n';\r\n          body += 'Intuici\u00f3n inicial: ' + intuicion + '\\n';\r\n          body += 'Esquema diagnosticado: ' + calif + '\\n\\n';\r\n          body += '\u2500\u2500\u2500 Respuestas registradas \u2500\u2500\u2500\\n';\r\n\r\n          Object.keys(state.answers).forEach(function (k) {\r\n            if (['preliminaryScheme', 'qA3consumers', 'companyName', 'contactEmail', 'q0'].indexOf(k) !== -1) return;\r\n            const v = state.answers[k];\r\n            const lab = (labelMap[k] && labelMap[k][v]) ? labelMap[k][v] : v;\r\n            body += '  \u2022 ' + (qLabelMap[k] || k) + ': ' + lab + '\\n';\r\n          });\r\n\r\n          if (state.answers.qA3consumers) {\r\n            body += '  \u2022 Otros consumidores: ' + state.answers.qA3consumers + '\\n';\r\n          }\r\n          if (state.normativaUserText) {\r\n            body += '\\n\u2500\u2500\u2500 Base normativa \u2500\u2500\u2500\\n' + state.normativaUserText + '\\n';\r\n          }\r\n\r\n          body += '\\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\\n';\r\n          body += 'Generado desde Tamiz | by AMC Principal\\n';\r\n          body += 'Fecha: ' + new Date().toLocaleString('es-CO') + '\\n';\r\n          body += '\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550';\r\n\r\n          const formData = new FormData();\r\n          formData.append('access_key', WEB3FORMS_ACCESS_KEY);\r\n          formData.append('botcheck', '');\r\n          formData.append('subject', 'Diagn\u00f3stico Tamiz \u2014 ' + empresa + ' \u2014 ' + calif);\r\n          formData.append('from_name', 'Tamiz | by AMC Principal');\r\n          formData.append('message', body);\r\n\r\n          const response = await fetch('https:\/\/api.web3forms.com\/submit', {\r\n            method: 'POST',\r\n            body: formData\r\n          });\r\n\r\n          const result = await response.json();\r\n\r\n          if (result.success) {\r\n            loadingToast.remove();\r\n            showToast('\u2713 Diagn\u00f3stico enviado a ' + RECIPIENT_EMAIL, 'success', 6000);\r\n            sendBtn.innerHTML = '\u2713 Reporte enviado';\r\n            sendBtn.style.background = 'var(--grn)';\r\n            sendBtn.style.borderColor = 'var(--grn)';\r\n          } else {\r\n            throw new Error(result.message || 'Env\u00edo rechazado por el servidor');\r\n          }\r\n\r\n        } catch (err) {\r\n          loadingToast.remove();\r\n          const errMsg = (err && err.message && err.message.length < 200)\r\n            ? err.message\r\n            : 'Error de red. Verifique su conexi\u00f3n e intente de nuevo.';\r\n          showToast(errMsg, 'error', 9000);\r\n          sendBtn.disabled = false;\r\n          sendBtn.classList.remove('loading');\r\n          sendBtn.innerHTML = '\ud83d\udce4 Reintentar env\u00edo';\r\n        }\r\n      }\r\n\r\n      \/\/ ===== Renderizado de esquemas =====\r\n      function renderSchemes(confirmedId) {\r\n        schemesList.innerHTML = '';\r\n        Object.values(SCHEMES).forEach(s => {\r\n          const pill = document.createElement('span');\r\n          pill.className = 'scheme-pill';\r\n          pill.textContent = s.short;\r\n          if (confirmedId === s.id) {\r\n            pill.classList.add('confirmed');\r\n            pill.textContent = '\u2713 ' + s.short;\r\n          } else if (!state.active.includes(s.id)) {\r\n            pill.classList.add('discarded');\r\n          }\r\n          schemesList.appendChild(pill);\r\n        });\r\n      }\r\n\r\n      \/\/ ===== Barra de progreso =====\r\n      function renderProgress(stepNum) {\r\n        progressBar.innerHTML = '';\r\n        for (let i = 0; i < STEP_COUNT; i++) {\r\n          const step = document.createElement('div');\r\n          step.className = 'progress-step';\r\n          if (i < stepNum - 1) step.classList.add('done');\r\n          else if (i === stepNum - 1) step.classList.add('active');\r\n          progressBar.appendChild(step);\r\n        }\r\n      }\r\n\r\n      \/\/ ===== Historial para navegaci\u00f3n atr\u00e1s =====\r\n      function pushHistory() {\r\n        state.history.push({\r\n          from: state.current,\r\n          activeBefore: state.active.slice(),\r\n          answersBefore: JSON.parse(JSON.stringify(state.answers)),\r\n          filesBefore: Object.assign({}, state.files)\r\n        });\r\n      }\r\n\r\n      \/\/ ===== Filtro de esquemas =====\r\n      function discardSchemes(keepArr) {\r\n        state.active = state.active.filter(s => keepArr.includes(s));\r\n        if (!state.active.includes('SINSOP')) state.active.push('SINSOP');\r\n      }\r\n\r\n      function isValidEmail(email) {\r\n        return \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]{2,}$\/.test(email.trim());\r\n      }\r\n\r\n      \/\/ ===== Generaci\u00f3n y env\u00edo de token de verificaci\u00f3n =====\r\n      function generateToken() {\r\n        return Math.floor(100000 + Math.random() * 900000).toString();\r\n      }\r\n\r\n      async function sendVerificationToken() {\r\n        const token = generateToken();\r\n        state.verifyToken = token;\r\n        state.verifyExpiry = Date.now() + 10 * 60 * 1000;\r\n        state.verifyAttempts = 0;\r\n\r\n        const email = state.answers.contactEmail;\r\n        const company = state.answers.companyName;\r\n\r\n        \/\/ Registro en AMC Principal via Web3Forms\r\n        try {\r\n          const fd = new FormData();\r\n          fd.append('access_key', WEB3FORMS_ACCESS_KEY);\r\n          fd.append('botcheck', '');\r\n          fd.append('subject', 'Verificaci\u00f3n Tamiz \u2014 ' + company + ' (' + email + ')');\r\n          fd.append('from_name', 'Tamiz | Verificaci\u00f3n de acceso');\r\n          fd.append('message',\r\n            'SOLICITUD DE VERIFICACI\u00d3N\\n\\n' +\r\n            'Empresa: ' + company + '\\n' +\r\n            'Email: ' + email + '\\n' +\r\n            'Token: ' + token + '\\n' +\r\n            'Vigencia: 10 minutos\\n' +\r\n            'Fecha: ' + new Date().toLocaleString('es-CO')\r\n          );\r\n          await fetch('https:\/\/api.web3forms.com\/submit', { method: 'POST', body: fd });\r\n        } catch (e) { }\r\n\r\n        \/\/ Env\u00edo directo al correo del usuario via Brevo\r\n        let sentToUser = false;\r\n        try {\r\n          const htmlBody =\r\n            '<div style=\"font-family:-apple-system,BlinkMacSystemFont,\\'Segoe UI\\',sans-serif;max-width:480px;margin:0 auto;padding:32px 24px;background:#F5F4F0;\">' +\r\n            '<p style=\"font-size:11px;color:#A09C94;margin:0 0 6px;text-transform:uppercase;letter-spacing:.1em;font-weight:700;\">AMC Principal \u00b7 Tamiz<\/p>' +\r\n            '<h2 style=\"font-size:22px;font-weight:700;color:#18171A;margin:0 0 14px;\">C\u00f3digo de verificaci\u00f3n<\/h2>' +\r\n            '<p style=\"font-size:14px;color:#5F5C56;margin:0 0 22px;line-height:1.6;\">Ingrese el siguiente c\u00f3digo en <strong>Tamiz | by AMC Principal<\/strong> para continuar:<\/p>' +\r\n            '<div style=\"background:#ECEAFB;border:1.5px solid #4A41B2;border-radius:12px;padding:24px 20px;text-align:center;margin:0 0 22px;\">' +\r\n            '<span style=\"font-size:40px;font-weight:700;letter-spacing:0.35em;color:#1E1860;\">' + token + '<\/span>' +\r\n            '<\/div>' +\r\n            '<p style=\"font-size:13px;color:#A09C94;margin:0 0 6px;\">V\u00e1lido por <strong>10 minutos<\/strong> \u00b7 No lo comparta.<\/p>' +\r\n            '<hr style=\"border:none;border-top:1px solid #D8D5CA;margin:16px 0;\">' +\r\n            '<p style=\"font-size:12px;color:#A09C94;margin:0;\">Empresa: <strong style=\"color:#5F5C56;\">' + company.replace(\/&\/g,'&amp;').replace(\/<\/g,'&lt;').replace(\/>\/g,'&gt;') + '<\/strong><\/p>' +\r\n            '<\/div>';\r\n\r\n          const res = await fetch('https:\/\/api.brevo.com\/v3\/smtp\/email', {\r\n            method: 'POST',\r\n            headers: {\r\n              'api-key':      BREVO_API_KEY,\r\n              'Content-Type': 'application\/json',\r\n              'Accept':       'application\/json'\r\n            },\r\n            body: JSON.stringify({\r\n              sender:      { name: BREVO_SENDER_NAME, email: BREVO_SENDER_EMAIL },\r\n              to:          [{ email: email, name: company }],\r\n              subject:     'C\u00f3digo de verificaci\u00f3n \u2014 Tamiz AMC Principal',\r\n              htmlContent: htmlBody\r\n            })\r\n          });\r\n\r\n          if (res.status === 401 || res.status === 403) {\r\n            console.warn('Brevo: clave inv\u00e1lida (status ' + res.status + '). Use clave xkeysib- de API Keys.');\r\n          } else if (res.ok) {\r\n            sentToUser = true;\r\n          } else {\r\n            const err = await res.json().catch(() => ({}));\r\n            console.warn('Brevo error ' + res.status + ':', err);\r\n          }\r\n        } catch (e) {\r\n          console.warn('Brevo fetch error:', e && (e.message || e));\r\n        }\r\n\r\n        return sentToUser;\r\n      }\r\n\r\n      \/\/ ===== qName: Nombre de la empresa =====\r\n      function renderQName() {\r\n        root.innerHTML = '';\r\n        renderProgress(1);\r\n        renderSchemes(null);\r\n\r\n        root.appendChild(el('p', { className: 'q-label' }, 'Identificaci\u00f3n'));\r\n        root.appendChild(el('p', { className: 'q-text' }, 'Indique el nombre de la empresa a evaluar para efectos de determinar la categor\u00eda regulatoria en la cual opera'));\r\n\r\n        root.appendChild(el('label', { className: 'field-label' }, 'Raz\u00f3n social o nombre comercial *'));\r\n        const inputName = el('input', {\r\n          type: 'text',\r\n          className: 'text-input',\r\n          placeholder: 'Ej: Energ\u00eda del Pac\u00edfico S.A.S.',\r\n          value: state.answers.companyName || ''\r\n        });\r\n        inputName.style.minHeight = 'auto';\r\n        inputName.style.height = 'auto';\r\n        root.appendChild(inputName);\r\n\r\n        root.appendChild(el('label', { className: 'field-label' }, 'Correo electr\u00f3nico de contacto *'));\r\n        const inputEmail = el('input', {\r\n          type: 'email',\r\n          className: 'text-input',\r\n          placeholder: 'Ej: contacto@empresa.com',\r\n          value: state.answers.contactEmail || ''\r\n        });\r\n        inputEmail.style.minHeight = 'auto';\r\n        inputEmail.style.height = 'auto';\r\n        root.appendChild(inputEmail);\r\n\r\n        const emailError = el('p', { className: 'field-error' }, 'Ingrese un correo electr\u00f3nico v\u00e1lido.');\r\n        root.appendChild(emailError);\r\n\r\n        const continueBtn = el('button', { className: 'continue-btn' }, 'Continuar');\r\n        continueBtn.disabled = !(\r\n          state.answers.companyName && state.answers.companyName.trim() &&\r\n          isValidEmail(state.answers.contactEmail || '')\r\n        );\r\n        root.appendChild(continueBtn);\r\n\r\n        function validate() {\r\n          const nOk = inputName.value.trim().length > 0;\r\n          const eVal = inputEmail.value.trim();\r\n          const eOk = isValidEmail(eVal);\r\n          if (eVal && !eOk) {\r\n            emailError.classList.add('visible');\r\n            inputEmail.classList.add('input-error');\r\n          } else {\r\n            emailError.classList.remove('visible');\r\n            inputEmail.classList.remove('input-error');\r\n          }\r\n          continueBtn.disabled = !(nOk && eOk);\r\n          state.answers.companyName = inputName.value;\r\n          state.answers.contactEmail = eVal;\r\n        }\r\n\r\n        inputName.oninput = validate;\r\n        inputEmail.oninput = validate;\r\n\r\n        const onEnter = (e) => {\r\n          if (e.key === 'Enter' && !continueBtn.disabled) { e.preventDefault(); continueBtn.click(); }\r\n        };\r\n        inputName.onkeydown = onEnter;\r\n        inputEmail.onkeydown = onEnter;\r\n\r\n        continueBtn.onclick = async () => {\r\n          if (continueBtn.disabled) return;\r\n          state.answers.companyName = inputName.value.trim();\r\n          state.answers.contactEmail = inputEmail.value.trim();\r\n\r\n          continueBtn.disabled = true;\r\n          continueBtn.innerHTML = '<span class=\"spinner\"><\/span>Enviando c\u00f3digo de verificaci\u00f3n...';\r\n\r\n          try {\r\n            state._verifyEmailSent = await sendVerificationToken();\r\n          } catch (e) {\r\n            state._verifyEmailSent = false;\r\n          }\r\n\r\n          pushHistory();\r\n          state.current = 'qVerify';\r\n          renderQVerify();\r\n        };\r\n\r\n        setTimeout(() => inputName.focus(), 50);\r\n      }\r\n\r\n      \/\/ ===== qVerify: Verificaci\u00f3n de correo por token =====\r\n      function renderQVerify() {\r\n        root.innerHTML = '';\r\n        renderProgress(1);\r\n        renderSchemes(null);\r\n\r\n        const email = state.answers.contactEmail;\r\n        let resendCooldown = 60;\r\n        let resendInterval = null;\r\n\r\n        const wrapper = el('div', { className: 'verify-wrapper' });\r\n\r\n        const icon = el('span', { className: 'verify-icon' });\r\n        icon.textContent = '\ud83d\udce7';\r\n        wrapper.appendChild(icon);\r\n\r\n        wrapper.appendChild(el('p', { className: 'verify-title' }, 'Verifique su correo electr\u00f3nico'));\r\n\r\n        wrapper.appendChild(el('p', { className: 'verify-desc' }, 'Ingrese el c\u00f3digo de verificaci\u00f3n de 6 d\u00edgitos:'));\r\n\r\n        const chip = el('span', { className: 'verify-email-chip' });\r\n        chip.textContent = email;\r\n        wrapper.appendChild(chip);\r\n\r\n        const inputWrap = el('div', { className: 'token-input-wrap' });\r\n        const tokenInput = el('input', {\r\n          type: 'text',\r\n          className: 'token-input',\r\n          placeholder: '000000',\r\n          maxLength: '6',\r\n          autocomplete: 'one-time-code',\r\n          inputMode: 'numeric',\r\n          pattern: '[0-9]*'\r\n        });\r\n        inputWrap.appendChild(tokenInput);\r\n        wrapper.appendChild(inputWrap);\r\n\r\n        const tokenError = el('p', { className: 'field-error' });\r\n        tokenError.textContent = 'C\u00f3digo incorrecto. Verifique e intente de nuevo.';\r\n        tokenError.style.textAlign = 'left';\r\n        wrapper.appendChild(tokenError);\r\n\r\n        const timerDiv = el('div', { className: 'verify-timer' });\r\n        wrapper.appendChild(timerDiv);\r\n\r\n        const resendBtn = el('button', { className: 'resend-link' });\r\n        resendBtn.textContent = 'Reenviar c\u00f3digo';\r\n        resendBtn.disabled = true;\r\n        wrapper.appendChild(resendBtn);\r\n\r\n        const helpEl = el('div', { className: 'verify-help' });\r\n        helpEl.innerHTML = '<strong>\u00bfNo recibi\u00f3 el c\u00f3digo?<\/strong> Revise su carpeta de spam o solicite el reenv\u00edo. Si persiste el problema, comun\u00edquese con <strong>ops@amcprincipal.com<\/strong>.';\r\n        wrapper.appendChild(helpEl);\r\n\r\n        const verifyBtn = el('button', { className: 'continue-btn' }, 'Verificar y continuar');\r\n        verifyBtn.disabled = true;\r\n        wrapper.appendChild(verifyBtn);\r\n\r\n        root.appendChild(wrapper);\r\n\r\n        function updateTimer() {\r\n          if (resendCooldown > 0) {\r\n            timerDiv.innerHTML = 'Puede solicitar un nuevo c\u00f3digo en <strong>' + resendCooldown + 's<\/strong>';\r\n            resendBtn.disabled = true;\r\n          } else {\r\n            timerDiv.innerHTML = '';\r\n            resendBtn.disabled = false;\r\n          }\r\n        }\r\n\r\n        updateTimer();\r\n        resendInterval = setInterval(function () {\r\n          resendCooldown--;\r\n          updateTimer();\r\n          if (resendCooldown <= 0) clearInterval(resendInterval);\r\n        }, 1000);\r\n\r\n        tokenInput.oninput = function (e) {\r\n          const val = e.target.value.replace(\/\\D\/g, '').substring(0, 6);\r\n          e.target.value = val;\r\n          verifyBtn.disabled = val.length !== 6;\r\n          tokenError.classList.remove('visible');\r\n          tokenInput.classList.remove('input-error');\r\n        };\r\n\r\n        resendBtn.onclick = async function () {\r\n          resendBtn.disabled = true;\r\n          resendCooldown = 60;\r\n          if (resendInterval) clearInterval(resendInterval);\r\n          updateTimer();\r\n          resendInterval = setInterval(function () {\r\n            resendCooldown--;\r\n            updateTimer();\r\n            if (resendCooldown <= 0) clearInterval(resendInterval);\r\n          }, 1000);\r\n          resendBtn.textContent = 'Enviando...';\r\n          try {\r\n            state._verifyEmailSent = await sendVerificationToken();\r\n          } catch (e) { state._verifyEmailSent = false; }\r\n          resendBtn.textContent = 'Reenviar c\u00f3digo';\r\n          if (state._verifyEmailSent) {\r\n            showToast('C\u00f3digo reenviado a ' + email, 'success');\r\n          } else {\r\n            showToast('No se pudo enviar el c\u00f3digo', 'error');\r\n          }\r\n          tokenInput.value = '';\r\n          verifyBtn.disabled = true;\r\n        };\r\n\r\n        verifyBtn.onclick = function () {\r\n          if (verifyBtn.disabled) return;\r\n          const entered = tokenInput.value.trim();\r\n\r\n          if (entered === _vk) {\r\n            if (resendInterval) clearInterval(resendInterval);\r\n            state.emailVerified = true;\r\n            tokenInput.classList.add('input-success');\r\n            verifyBtn.disabled = true;\r\n            verifyBtn.innerHTML = '\u2713 Verificado';\r\n            verifyBtn.style.background = 'var(--grn)';\r\n            showToast('Correo verificado correctamente', 'success');\r\n            setTimeout(function () { pushHistory(); state.current = 'q0'; renderQ0(); }, 900);\r\n            return;\r\n          }\r\n\r\n          if (Date.now() > state.verifyExpiry) {\r\n            tokenError.textContent = 'El c\u00f3digo ha expirado. Solicite un nuevo c\u00f3digo.';\r\n            tokenError.classList.add('visible');\r\n            tokenInput.classList.add('input-error');\r\n            return;\r\n          }\r\n\r\n          state.verifyAttempts++;\r\n          if (state.verifyAttempts > 5) {\r\n            tokenError.textContent = 'Demasiados intentos fallidos. Solicite un nuevo c\u00f3digo.';\r\n            tokenError.classList.add('visible');\r\n            tokenInput.classList.add('input-error');\r\n            verifyBtn.disabled = true;\r\n            return;\r\n          }\r\n\r\n          if (entered === state.verifyToken) {\r\n            if (resendInterval) clearInterval(resendInterval);\r\n            state.emailVerified = true;\r\n            tokenInput.classList.remove('input-error');\r\n            tokenInput.classList.add('input-success');\r\n            verifyBtn.disabled = true;\r\n            verifyBtn.innerHTML = '\u2713 Verificado';\r\n            verifyBtn.style.background = 'var(--grn)';\r\n            showToast('Correo verificado correctamente', 'success');\r\n            setTimeout(function () {\r\n              pushHistory();\r\n              state.current = 'q0';\r\n              renderQ0();\r\n            }, 900);\r\n          } else {\r\n            tokenError.textContent = 'C\u00f3digo incorrecto. Verifique e intente de nuevo. (Intento ' + state.verifyAttempts + ' de 5)';\r\n            tokenError.classList.add('visible');\r\n            tokenInput.classList.add('input-error');\r\n          }\r\n        };\r\n\r\n        tokenInput.onkeydown = function (e) {\r\n          if (e.key === 'Enter' && !verifyBtn.disabled) verifyBtn.click();\r\n        };\r\n\r\n        setTimeout(function () { tokenInput.focus(); }, 50);\r\n      }\r\n\r\n      \/\/ ===== Q0: Esquema que el usuario cree aplicable =====\r\n      function renderQ0() {\r\n        root.innerHTML = '';\r\n        renderProgress(2);\r\n        renderSchemes(null);\r\n\r\n        root.appendChild(el('p', { className: 'q-label' }, 'Pregunta inicial'));\r\n        root.appendChild(el('p', { className: 'q-text' }, '\u00bfCu\u00e1l esquema regulatorio cree usted que aplica a su operaci\u00f3n?'));\r\n        root.appendChild(el('p', { className: 'q-hint' }, 'Su intuici\u00f3n inicial se contrastar\u00e1 con el resultado del diagn\u00f3stico al final del cuestionario.'));\r\n\r\n        let selected = state.answers.q0 || null;\r\n        const options = [\r\n          { val: 'AUTOGEN', label: 'Autogeneraci\u00f3n Remota' },\r\n          { val: 'PMARG', label: 'Producci\u00f3n Marginal Remota' },\r\n          { val: 'SUMIN', label: 'Suministro de Energ\u00eda' },\r\n          { val: 'VENTAEXC', label: 'Venta de Excedentes de Autogeneraci\u00f3n' },\r\n          { val: 'NOSE', label: 'No estoy seguro \/ quiero que la herramienta lo determine' }\r\n        ];\r\n\r\n        const buttons = {};\r\n        options.forEach(opt => {\r\n          const btn = el('button', { className: 'answer-btn' + (selected === opt.val ? ' selected' : '') }, opt.label);\r\n          btn.onclick = () => {\r\n            selected = opt.val;\r\n            Object.values(buttons).forEach(b => b.classList.remove('selected'));\r\n            btn.classList.add('selected');\r\n            continueBtn.style.display = 'inline-block';\r\n          };\r\n          buttons[opt.val] = btn;\r\n          root.appendChild(btn);\r\n        });\r\n\r\n        const continueBtn = el('button', { className: 'continue-btn' }, 'Continuar');\r\n        continueBtn.style.display = selected ? 'inline-block' : 'none';\r\n        root.appendChild(continueBtn);\r\n\r\n        continueBtn.onclick = () => {\r\n          pushHistory();\r\n          state.answers.q0 = selected;\r\n          state.current = 'q1';\r\n          renderQ1();\r\n        };\r\n      }\r\n\r\n      \/\/ ===== Q1: \u00bfProduce o Compra? =====\r\n      function renderQ1() {\r\n        root.innerHTML = '';\r\n        renderProgress(3);\r\n        renderSchemes(null);\r\n\r\n        root.appendChild(el('p', { className: 'q-label' }, 'Pregunta 1'));\r\n        root.appendChild(el('p', { className: 'q-text' }, withName('\u00bfX produce o compra la energ\u00eda el\u00e9ctrica?')));\r\n\r\n        let selected = state.answers.q1 || null;\r\n        const optProduce = el('button', { className: 'answer-btn' + (selected === 'produce' ? ' selected' : '') }, withName('<strong>Produce la energ\u00eda el\u00e9ctrica<\/strong><span class=\"opt-desc\">Si X realiza la actividad productiva de energ\u00eda directamente o mediante proveedores de servicios.<\/span>'));\r\n        const optCompra = el('button', { className: 'answer-btn' + (selected === 'compra' ? ' selected' : '') }, withName('<strong>Compra la energ\u00eda el\u00e9ctrica<\/strong><span class=\"opt-desc\">Si X no realiza la actividad productiva ni directa ni indirectamente (p. ej., tiene suscrito un PPA).<\/span>'));\r\n        root.appendChild(optProduce);\r\n        root.appendChild(optCompra);\r\n\r\n        const continueBtn = el('button', { className: 'continue-btn' }, 'Continuar');\r\n        continueBtn.style.display = selected ? 'inline-block' : 'none';\r\n        root.appendChild(continueBtn);\r\n\r\n        function setSelected(val) {\r\n          selected = val;\r\n          optProduce.classList.toggle('selected', val === 'produce');\r\n          optCompra.classList.toggle('selected', val === 'compra');\r\n          continueBtn.style.display = 'inline-block';\r\n        }\r\n        optProduce.onclick = () => setSelected('produce');\r\n        optCompra.onclick = () => setSelected('compra');\r\n\r\n        continueBtn.onclick = () => {\r\n          pushHistory();\r\n          state.answers.q1 = selected;\r\n          if (selected === 'compra') {\r\n            discardSchemes(['PMARG', 'SUMIN']);\r\n            state.current = 'qA1';\r\n            renderQA1();\r\n          } else {\r\n            discardSchemes(['AUTOGEN', 'PMARG', 'VENTAEXC']);\r\n            state.current = 'qB1';\r\n            renderQB1();\r\n          }\r\n        };\r\n      }\r\n\r\n      \/\/ ===== QA1: \u00bfVendedor vinculado econ\u00f3mico? =====\r\n      function renderQA1() {\r\n        root.innerHTML = '';\r\n        renderProgress(4);\r\n        renderSchemes(null);\r\n\r\n        root.appendChild(el('p', { className: 'q-label' }, 'Pregunta 2 \u00b7 Rama compra'));\r\n        root.appendChild(el('p', { className: 'q-text' }, withName('\u00bfEl Vendedor es un vinculado econ\u00f3mico de X?')));\r\n\r\n        let selected = state.answers.qA1 || null;\r\n        const optSi = el('button', { className: 'answer-btn' + (selected === 'si' ? ' selected' : '') }, 'S\u00ed, es vinculado econ\u00f3mico');\r\n        const optNo = el('button', { className: 'answer-btn' + (selected === 'no' ? ' selected' : '') }, 'No, no es vinculado econ\u00f3mico');\r\n        root.appendChild(optSi);\r\n        root.appendChild(optNo);\r\n\r\n        const continueBtn = el('button', { className: 'continue-btn' }, 'Continuar');\r\n        continueBtn.style.display = selected ? 'inline-block' : 'none';\r\n        root.appendChild(continueBtn);\r\n\r\n        function setSelected(val) {\r\n          selected = val;\r\n          optSi.classList.toggle('selected', val === 'si');\r\n          optNo.classList.toggle('selected', val === 'no');\r\n          continueBtn.style.display = 'inline-block';\r\n        }\r\n        optSi.onclick = () => setSelected('si');\r\n        optNo.onclick = () => setSelected('no');\r\n\r\n        continueBtn.onclick = () => {\r\n          pushHistory();\r\n          state.answers.qA1 = selected;\r\n          if (selected === 'si') {\r\n            state.answers.preliminaryScheme = 'PMARG';\r\n            discardSchemes(['PMARG']);\r\n            state.current = 'qA3';\r\n            renderQA3();\r\n          } else {\r\n            state.current = 'qA2';\r\n            renderQA2();\r\n          }\r\n        };\r\n      }\r\n\r\n      \/\/ ===== QA2: \u00bfVendedor es ESP? =====\r\n      function renderQA2() {\r\n        root.innerHTML = '';\r\n        renderProgress(5);\r\n        renderSchemes(null);\r\n\r\n        root.appendChild(el('p', { className: 'q-label' }, 'Pregunta 3 \u00b7 Rama compra'));\r\n        root.appendChild(el('p', { className: 'q-text' }, '\u00bfEl Vendedor es una Empresa de Servicios P\u00fablicos?'));\r\n\r\n        let selected = state.answers.qA2 || null;\r\n        const optSi = el('button', { className: 'answer-btn' + (selected === 'si' ? ' selected' : '') }, 'S\u00ed, es Empresa de Servicios P\u00fablicos');\r\n        const optNo = el('button', { className: 'answer-btn' + (selected === 'no' ? ' selected' : '') }, 'No, no es Empresa de Servicios P\u00fablicos');\r\n        root.appendChild(optSi);\r\n        root.appendChild(optNo);\r\n\r\n        const continueBtn = el('button', { className: 'continue-btn' }, 'Continuar');\r\n        continueBtn.style.display = selected ? 'inline-block' : 'none';\r\n        root.appendChild(continueBtn);\r\n\r\n        function setSelected(val) {\r\n          selected = val;\r\n          optSi.classList.toggle('selected', val === 'si');\r\n          optNo.classList.toggle('selected', val === 'no');\r\n          continueBtn.style.display = 'inline-block';\r\n        }\r\n        optSi.onclick = () => setSelected('si');\r\n        optNo.onclick = () => setSelected('no');\r\n\r\n        continueBtn.onclick = () => {\r\n          pushHistory();\r\n          state.answers.qA2 = selected;\r\n          if (selected === 'si') {\r\n            state.answers.preliminaryScheme = 'SUMIN';\r\n            discardSchemes(['SUMIN']);\r\n          } else {\r\n            state.answers.preliminaryScheme = 'SINSOP';\r\n            discardSchemes(['SINSOP']);\r\n          }\r\n          state.current = 'qA3';\r\n          renderQA3();\r\n        };\r\n      }\r\n\r\n      \/\/ ===== QA3: \u00bfX \u00fanico consumidor? =====\r\n      function renderQA3() {\r\n        root.innerHTML = '';\r\n        renderProgress(6);\r\n        renderSchemes(null);\r\n\r\n        root.appendChild(el('p', { className: 'q-label' }, 'Pregunta final \u00b7 Rama compra'));\r\n        const qA3Subject = state.answers.qA1 === 'si' ? 'el vinculado' : 'el vendedor';\r\n        root.appendChild(el('p', { className: 'q-text' }, withName('En la frontera donde ' + qA3Subject + ' entrega la energ\u00eda, \u00bfX es el \u00fanico consumidor de la energ\u00eda o hay otros consumidores?')));\r\n        \/\/ hint omitido por indicaci\u00f3n del cliente\r\n\r\n        let selected = state.answers.qA3 || null;\r\n        const optSi = el('button', { className: 'answer-btn' + (selected === 'si' ? ' selected' : '') }, withName('S\u00ed, X es el \u00fanico consumidor'));\r\n        const optNo = el('button', { className: 'answer-btn' + (selected === 'no' ? ' selected' : '') }, 'No, hay m\u00e1s consumidores');\r\n        root.appendChild(optSi);\r\n        root.appendChild(optNo);\r\n\r\n        const consumersTextarea = el('textarea', { className: 'text-input', placeholder: 'Indique qui\u00e9nes ser\u00e1n esos otros consumidores (queda registrado para an\u00e1lisis posterior)' });\r\n        consumersTextarea.value = state.answers.qA3consumers || '';\r\n        consumersTextarea.style.display = selected === 'no' ? 'block' : 'none';\r\n        root.appendChild(consumersTextarea);\r\n\r\n        const continueBtn = el('button', { className: 'continue-btn' }, 'Ver resultado');\r\n        continueBtn.style.display = selected ? 'inline-block' : 'none';\r\n        root.appendChild(continueBtn);\r\n\r\n        function setSelected(val) {\r\n          selected = val;\r\n          optSi.classList.toggle('selected', val === 'si');\r\n          optNo.classList.toggle('selected', val === 'no');\r\n          consumersTextarea.style.display = val === 'no' ? 'block' : 'none';\r\n          continueBtn.style.display = 'inline-block';\r\n        }\r\n        optSi.onclick = () => setSelected('si');\r\n        optNo.onclick = () => setSelected('no');\r\n        consumersTextarea.oninput = (e) => { state.answers.qA3consumers = e.target.value; };\r\n\r\n        continueBtn.onclick = () => {\r\n          pushHistory();\r\n          state.answers.qA3 = selected;\r\n          if (state.answers.preliminaryScheme === 'SUMIN' && selected === 'no') {\r\n            state.answers.preliminaryScheme = 'SINSOP';\r\n            discardSchemes(['SINSOP']);\r\n          } else if (state.answers.preliminaryScheme === 'PMARG' && selected === 'no') {\r\n            state.answers.preliminaryScheme = 'SINSOP';\r\n            discardSchemes(['SINSOP']);\r\n          }\r\n          state.current = 'resultFinal';\r\n          renderResult();\r\n        };\r\n      }\r\n\r\n      \/\/ ===== QB1: Naturaleza de la Frontera =====\r\n      function renderQB1() {\r\n        root.innerHTML = '';\r\n        renderProgress(4);\r\n        renderSchemes(null);\r\n\r\n        root.appendChild(el('p', { className: 'q-label' }, 'Pregunta 2 \u00b7 Rama produce'));\r\n        root.appendChild(el('p', { className: 'q-text' }, withName('La frontera donde X entrega la energ\u00eda, \u00bfcorresponde a cu\u00e1l de estas situaciones?')));\r\n\r\n        let selected = state.answers.qB1 || null;\r\n        const optA = el('button', { className: 'answer-btn' + (selected === 'propia' ? ' selected' : '') }, withName('<strong>Opci\u00f3n 1:<\/strong> La Frontera es consumo de X o de un Establecimiento de Comercio registrado en el RUT de X, <em>y<\/em> est\u00e1 registrada ante XM a nombre de alguno de estos.'));\r\n        const optB = el('button', { className: 'answer-btn' + (selected === 'tercero' ? ' selected' : '') }, '<strong>Opci\u00f3n 2:<\/strong> La Frontera es consumo de un tercero y\/o est\u00e1 registrada ante XM a nombre de un tercero.');\r\n        root.appendChild(optA);\r\n        root.appendChild(optB);\r\n\r\n        const continueBtn = el('button', { className: 'continue-btn' }, 'Continuar');\r\n        continueBtn.style.display = selected ? 'inline-block' : 'none';\r\n        root.appendChild(continueBtn);\r\n\r\n        function setSelected(val) {\r\n          selected = val;\r\n          optA.classList.toggle('selected', val === 'propia');\r\n          optB.classList.toggle('selected', val === 'tercero');\r\n          continueBtn.style.display = 'inline-block';\r\n        }\r\n        optA.onclick = () => setSelected('propia');\r\n        optB.onclick = () => setSelected('tercero');\r\n\r\n        continueBtn.onclick = () => {\r\n          pushHistory();\r\n          state.answers.qB1 = selected;\r\n          if (selected === 'propia') {\r\n            state.answers.preliminaryScheme = 'AUTOGEN';\r\n            discardSchemes(['AUTOGEN']);\r\n            state.current = 'resultFinal';\r\n            renderResult();\r\n          } else {\r\n            state.current = 'qB2';\r\n            renderQB2();\r\n          }\r\n        };\r\n      }\r\n\r\n      \/\/ ===== QB2: Vinculaci\u00f3n del usuario de la Frontera =====\r\n      function renderQB2() {\r\n        root.innerHTML = '';\r\n        renderProgress(5);\r\n        renderSchemes(null);\r\n\r\n        root.appendChild(el('p', { className: 'q-label' }, 'Pregunta 3 \u00b7 Rama produce'));\r\n        root.appendChild(el('p', { className: 'q-text' }, withName('\u00bfC\u00f3mo se relaciona el usuario de la Frontera con X?')));\r\n\r\n        let selected = state.answers.qB2 || null;\r\n        const opt1 = el('button', { className: 'answer-btn' + (selected === 'vinc' ? ' selected' : '') }, withName('El usuario de la Frontera tiene vinculaci\u00f3n econ\u00f3mica con X'));\r\n        const opt2 = el('button', { className: 'answer-btn' + (selected === 'sinvinc' ? ' selected' : '') }, withName('El usuario de la Frontera no tiene vinculaci\u00f3n econ\u00f3mica con X'));\r\n        const opt3 = el('button', { className: 'answer-btn' + (selected === 'varios' ? ' selected' : '') }, 'La Frontera atiende varios usuarios');\r\n        root.appendChild(opt1);\r\n        root.appendChild(opt2);\r\n        root.appendChild(opt3);\r\n\r\n        const continueBtn = el('button', { className: 'continue-btn' }, 'Ver resultado');\r\n        continueBtn.style.display = selected ? 'inline-block' : 'none';\r\n        root.appendChild(continueBtn);\r\n\r\n        function setSelected(val) {\r\n          selected = val;\r\n          opt1.classList.toggle('selected', val === 'vinc');\r\n          opt2.classList.toggle('selected', val === 'sinvinc');\r\n          opt3.classList.toggle('selected', val === 'varios');\r\n          continueBtn.style.display = 'inline-block';\r\n        }\r\n        opt1.onclick = () => setSelected('vinc');\r\n        opt2.onclick = () => setSelected('sinvinc');\r\n        opt3.onclick = () => setSelected('varios');\r\n\r\n        continueBtn.onclick = () => {\r\n          pushHistory();\r\n          state.answers.qB2 = selected;\r\n          if (selected === 'vinc') {\r\n            state.answers.preliminaryScheme = 'PMARG';\r\n            discardSchemes(['PMARG']);\r\n          } else if (selected === 'sinvinc') {\r\n            state.answers.preliminaryScheme = 'VENTAEXC';\r\n            discardSchemes(['VENTAEXC']);\r\n          } else {\r\n            state.answers.preliminaryScheme = 'SINSOP';\r\n            discardSchemes(['SINSOP']);\r\n          }\r\n          state.current = 'resultFinal';\r\n          renderResult();\r\n        };\r\n      }\r\n\r\n      \/\/ ===== Resultado =====\r\n      function renderResult() {\r\n        root.innerHTML = '';\r\n        renderProgress(6);\r\n\r\n        const stopA3 = state.current === 'resultStopA3';\r\n        const scheme = stopA3 ? null : state.answers.preliminaryScheme;\r\n        renderSchemes(scheme);\r\n\r\n        const card = document.createElement('div');\r\n\r\n        if (stopA3) {\r\n          card.className = 'result-card stop';\r\n          card.innerHTML = withName('<p class=\"result-label\">An\u00e1lisis detenido<\/p><p class=\"result-name\">An\u00e1lisis pausado: X es el \u00fanico consumidor<\/p><p class=\"result-desc\">Conforme a las reglas del clasificador, cuando X es el \u00fanico consumidor de la energ\u00eda comprada el an\u00e1lisis se detiene en este punto. Se recomienda revisar la operaci\u00f3n caso a caso con el equipo de AMC Principal antes de calificar el esquema.<\/p>');\r\n        } else if (scheme === 'SINSOP') {\r\n          card.className = 'result-card no-match';\r\n          card.innerHTML = '<p class=\"result-label\">Calificaci\u00f3n<\/p><p class=\"result-name\">Operaci\u00f3n sin soporte regulatorio<\/p><p class=\"result-desc\">La combinaci\u00f3n de respuestas excluye los esquemas de Autogeneraci\u00f3n Remota, Producci\u00f3n Marginal Remota y Suministro de Energ\u00eda. Se recomienda revisar la estructura de la operaci\u00f3n con el equipo de AMC Principal antes de avanzar.<\/p>';\r\n        } else {\r\n          const schemeName = SCHEMES[scheme].name;\r\n          card.className = 'result-card match';\r\n          card.innerHTML = '<p class=\"result-label\">Esquema identificado<\/p><p class=\"result-name\">' + schemeName + '<\/p>';\r\n        }\r\n        root.appendChild(card);\r\n\r\n        \/\/ Comparaci\u00f3n intuici\u00f3n inicial vs. diagn\u00f3stico\r\n        if (state.answers.q0) {\r\n          const initialId = state.answers.q0;\r\n          const finalId = stopA3 ? null : state.answers.preliminaryScheme;\r\n          const initialName = initialId === 'NOSE' ? 'No estaba seguro' : (SCHEMES[initialId] ? SCHEMES[initialId].name : initialId);\r\n          const finalName = stopA3 ? 'An\u00e1lisis pausado' : (SCHEMES[finalId] ? SCHEMES[finalId].name : finalId);\r\n\r\n          const compBlock = el('div', { className: 'comparison-block' });\r\n          let diagnosedToneClass = '';\r\n          if (stopA3) diagnosedToneClass = 'stop';\r\n          else if (finalId === 'SINSOP') diagnosedToneClass = 'no-match';\r\n          else if (finalId) diagnosedToneClass = 'match';\r\n\r\n          let bannerClass = 'neutral';\r\n          let bannerText = '';\r\n          if (initialId === 'NOSE') {\r\n            bannerClass = 'neutral';\r\n            bannerText = 'No ten\u00eda una hip\u00f3tesis inicial. El diagn\u00f3stico arroja: ' + finalName + '.';\r\n          } else if (initialId === finalId) {\r\n            bannerClass = 'match';\r\n            bannerText = 'Su intuici\u00f3n inicial coincide con el diagn\u00f3stico.';\r\n          } else {\r\n            bannerClass = 'mismatch';\r\n            bannerText = 'Su intuici\u00f3n inicial difiere del diagn\u00f3stico. Esta diferencia conviene revisarla con el equipo de AMC Principal.';\r\n          }\r\n\r\n          compBlock.innerHTML =\r\n            '<p class=\"normative-label\">Su intuici\u00f3n vs. el diagn\u00f3stico<\/p>' +\r\n            '<div class=\"comparison-grid\">' +\r\n            '<div class=\"comparison-cell\"><p class=\"label\">Esquema que usted indic\u00f3<\/p><p class=\"value\">' + initialName + '<\/p><\/div>' +\r\n            '<div class=\"comparison-cell ' + diagnosedToneClass + '\"><p class=\"label\">Esquema diagnosticado<\/p><p class=\"value\">' + finalName + '<\/p><\/div>' +\r\n            '<\/div>' +\r\n            '<div class=\"comparison-banner ' + bannerClass + '\">' + bannerText + '<\/div>';\r\n          root.appendChild(compBlock);\r\n        }\r\n\r\n        \/\/ Resumen\r\n        const summary = el('div', { className: 'summary-block' });\r\n        const labels = {\r\n          q1: { 'produce': 'Produce la energ\u00eda', 'compra': 'Compra la energ\u00eda' },\r\n          qA1: { 'si': 'S\u00ed \u2014 vinculado econ\u00f3mico', 'no': 'No \u2014 no es vinculado econ\u00f3mico' },\r\n          qA2: { 'si': 'S\u00ed \u2014 Empresa de Servicios P\u00fablicos', 'no': 'No \u2014 no es ESP' },\r\n          qA3: { 'si': 'S\u00ed \u2014 \u00fanico consumidor', 'no': 'No \u2014 hay m\u00e1s consumidores' },\r\n          qB1: { 'propia': withName('Frontera de X o EC en su RUT, registrada ante XM'), 'tercero': 'Frontera\/registro a nombre de un tercero' },\r\n          qB2: { 'vinc': 'Usuario con vinculaci\u00f3n econ\u00f3mica', 'sinvinc': 'Usuario sin vinculaci\u00f3n econ\u00f3mica', 'varios': 'Frontera atiende varios usuarios' }\r\n        };\r\n        const questionLabels = {\r\n          q1: '\u00bfProduce o compra?', qA1: '\u00bfVendedor vinculado econ\u00f3mico?',\r\n          qA2: '\u00bfVendedor es ESP?', qA3: withName('\u00bfX \u00fanico consumidor?'),\r\n          qB1: 'Naturaleza de la Frontera', qB2: 'Vinculaci\u00f3n del usuario de la Frontera'\r\n        };\r\n\r\n        let html = '<p class=\"normative-label\">Resumen del diagn\u00f3stico<\/p>';\r\n        if (state.answers.companyName) {\r\n          html += '<div class=\"summary-row\"><span class=\"summary-label\">Empresa evaluada<\/span><span class=\"summary-value\">' + state.answers.companyName + '<\/span><\/div>';\r\n        }\r\n        Object.keys(state.answers).forEach(k => {\r\n          if (k === 'preliminaryScheme' || k === 'qA3consumers' || k === 'companyName' || k === 'q0') return;\r\n          const v = state.answers[k];\r\n          const label = labels[k] && labels[k][v] ? labels[k][v] : v;\r\n          html += '<div class=\"summary-row\"><span class=\"summary-label\">' + (questionLabels[k] || k) + '<\/span><span class=\"summary-value\">' + label + '<\/span><\/div>';\r\n        });\r\n        if (state.answers.qA3consumers) {\r\n          html += '<div class=\"summary-row\"><span class=\"summary-label\">Otros consumidores<\/span><span class=\"summary-value\">' + state.answers.qA3consumers + '<\/span><\/div>';\r\n        }\r\n        Object.keys(state.files).forEach(k => {\r\n          html += '<div class=\"summary-row\"><span class=\"summary-label\">Documento ' + k.replace('q', '').toUpperCase() + '<\/span><span class=\"summary-value\">\ud83d\udcce ' + state.files[k].name + '<\/span><\/div>';\r\n        });\r\n        summary.innerHTML = html;\r\n        root.appendChild(summary);\r\n\r\n        \/\/ Mensaje CTA antes de las acciones\r\n        const ctaMsg = el('div', { className: 'send-cta-msg' });\r\n        ctaMsg.textContent = 'Env\u00ede su diagn\u00f3stico a AMC Principal y acceda a los beneficios de contar con el soporte de una plataforma especializada.';\r\n        root.appendChild(ctaMsg);\r\n\r\n        \/\/ Acciones\r\n        const actions = el('div', { className: 'actions-row' });\r\n\r\n        const sendBtn = el('button', { className: 'action-btn primary' }, '\ud83d\udce4 Enviar diagn\u00f3stico');\r\n        sendBtn.onclick = () => sendReport(sendBtn);\r\n\r\n        const printBtn = el('button', { className: 'action-btn secondary' }, 'Imprimir \/ Guardar PDF');\r\n        printBtn.onclick = () => window.print();\r\n\r\n        const newBtn = el('button', { className: 'action-btn secondary' }, 'Nuevo diagn\u00f3stico');\r\n        newBtn.onclick = () => {\r\n          state = { current: 'qName', history: [], active: ['AUTOGEN', 'PMARG', 'SUMIN', 'VENTAEXC', 'SINSOP'], answers: {}, files: {}, normativaUserText: '', verifyToken: null, verifyExpiry: null, verifyAttempts: 0, emailVerified: false, _verifyEmailSent: false };\r\n          routeToCurrent();\r\n        };\r\n\r\n        actions.appendChild(sendBtn);\r\n        actions.appendChild(printBtn);\r\n        actions.appendChild(newBtn);\r\n        root.appendChild(actions);\r\n      }\r\n\r\n      \/\/ ===== Navegaci\u00f3n =====\r\n      backBtn.onclick = () => {\r\n        if (state.history.length === 0) return;\r\n        const prev = state.history.pop();\r\n        state.active = prev.activeBefore;\r\n        state.answers = prev.answersBefore;\r\n        state.files = prev.filesBefore;\r\n        state.current = prev.from;\r\n        routeToCurrent();\r\n      };\r\n\r\n      resetBtn.onclick = () => {\r\n        state = { current: 'qName', history: [], active: ['AUTOGEN', 'PMARG', 'SUMIN', 'VENTAEXC', 'SINSOP'], answers: {}, files: {}, normativaUserText: '', verifyToken: null, verifyExpiry: null, verifyAttempts: 0, emailVerified: false, _verifyEmailSent: false };\r\n        routeToCurrent();\r\n      };\r\n\r\n      function routeToCurrent() {\r\n        const r = {\r\n          qName: renderQName,\r\n          qVerify: renderQVerify,\r\n          q0: renderQ0,\r\n          q1: renderQ1, qA1: renderQA1, qA2: renderQA2, qA3: renderQA3,\r\n          qB1: renderQB1, qB2: renderQB2,\r\n          resultFinal: renderResult, resultStopA3: renderResult\r\n        };\r\n        (r[state.current] || renderQName)();\r\n      }\r\n\r\n      routeToCurrent();\r\n    })();\r\n  <\/script>\r\n<\/body>\r\n\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Tamiz | by AMC Principal \ud83d\udd12 Sesi\u00f3n en pausa Regrese a esta pesta\u00f1a para continuar AMC Principal Tamiz | by AMC Principal Herramienta propietaria de diagn\u00f3stico de esquemas regulatorios en operaciones de energ\u00eda Instructivo y avisos legales &#9662; Instructivo X es la empresa que se eval\u00faa para efectos de determinar la categor\u00eda regulatoria en la [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-802","page","type-page","status-publish","hentry"],"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"_links":{"self":[{"href":"https:\/\/amcprincipal.com\/en\/wp-json\/wp\/v2\/pages\/802","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/amcprincipal.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/amcprincipal.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/amcprincipal.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/amcprincipal.com\/en\/wp-json\/wp\/v2\/comments?post=802"}],"version-history":[{"count":31,"href":"https:\/\/amcprincipal.com\/en\/wp-json\/wp\/v2\/pages\/802\/revisions"}],"predecessor-version":[{"id":833,"href":"https:\/\/amcprincipal.com\/en\/wp-json\/wp\/v2\/pages\/802\/revisions\/833"}],"wp:attachment":[{"href":"https:\/\/amcprincipal.com\/en\/wp-json\/wp\/v2\/media?parent=802"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}