{"id":769,"date":"2026-05-07T15:24:42","date_gmt":"2026-05-07T15:24:42","guid":{"rendered":"https:\/\/amcprincipal.com\/?page_id=769"},"modified":"2026-05-11T23:57:11","modified_gmt":"2026-05-11T23:57:11","slug":"clasificador-regulatorio","status":"publish","type":"page","link":"https:\/\/amcprincipal.com\/en\/clasificador-regulatorio\/","title":{"rendered":"Clasificador Regulatorio"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"769\" class=\"elementor elementor-769\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a41ed3e e-flex e-con-boxed e-con e-parent\" data-id=\"a41ed3e\" 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-51e8155 e-con-full e-flex e-con e-child\" data-id=\"51e8155\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a962025 elementor-widget elementor-widget-image\" data-id=\"a962025\" 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-9977773 e-flex e-con-boxed e-con e-parent\" data-id=\"9977773\" 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-c0cb41d elementor-widget elementor-widget-html\" data-id=\"c0cb41d\" 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<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; --bg2: #EDEAE0; --card: #FFFFFF;\r\n  --t1: #18171A; --t2: #5F5C56; --t3: #A09C94;\r\n  --bdr: #D8D5CA; --bdr2: #E6E3D8;\r\n  --acc: #4A41B2; --acc-bg: #ECEAFB; --acc-t: #1E1860;\r\n  --grn: #15926A; --grn-bg: #DCF2EA; --grn-bdr: #50C49C;\r\n  --grn-t: #03302B; --grn-t2: #065042;\r\n  --amb-bg: #FEF2D6; --amb-bdr: #E89B1C;\r\n  --amb-t: #3A2000; --amb-t2: #5A3300;\r\n  --red-bg: #FDEAEA; --red-bdr: #E59898;\r\n  --red-t: #5A1E1E; --red-t2: #8C2C2C;\r\n  --r1:6px; --r2:12px; --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); --tr:.18s ease;\r\n}\r\n*,*::before,*::after{box-sizing:border-box;}\r\nbody{margin:0;}\r\n#amc-app{font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",system-ui,sans-serif;background:var(--bg);color:var(--t1);line-height:1.55;padding:28px 16px 64px;-webkit-font-smoothing:antialiased;user-select:none;-webkit-user-select:none;}\r\n\/* Neutralizar tipograf\u00eda global de Elementor \/ WordPress *\/\r\n#amc-app p,#amc-app span,#amc-app h1,#amc-app h2,#amc-app h3,#amc-app h4,#amc-app h5,#amc-app h6,\r\n#amc-app button,#amc-app input,#amc-app textarea,#amc-app label,#amc-app li,#amc-app a,#amc-app strong,#amc-app em{\r\n  font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",system-ui,sans-serif!important;\r\n}\r\n#amc-app p{margin:0;}\r\n#amc-app a{color:inherit;text-decoration:none;}\r\n\/* Prevenir desbordamiento de texto en cajas *\/\r\n#amc-app .q-text,#amc-app .q-hint,#amc-app .answer-btn,#amc-app .result-name,#amc-app .result-desc,\r\n#amc-app .brand-subtitle,#amc-app .brand-title,#amc-app .summary-value,#amc-app .info-content p,\r\n#amc-app .info-content li,#amc-app .comparison-cell .value,#amc-app .scheme-pill,#amc-app .field-error{\r\n  overflow-wrap:break-word;word-break:break-word;min-width:0;\r\n}\r\ninput,textarea,[contenteditable]{user-select:text;-webkit-user-select:text;}\r\n.container{max-width:740px;margin:0 auto;width:100%;}\r\n.brand{display:flex;justify-content:center;align-items:center;margin-bottom:28px;padding-bottom:20px;border-bottom:1px solid var(--bdr2);position:relative;}\r\n.brand::after{content:'';position:absolute;bottom:-1px;left:50%;transform:translateX(-50%);width:56px;height:2px;background:var(--acc);border-radius:2px;}\r\n.brand-text{text-align:center;}\r\n.brand-name{font-size:10px;color:var(--t3);text-transform:uppercase;letter-spacing:.12em;margin:0 0 3px;font-weight:700;}\r\n.brand-title{font-size:21px;font-weight:700;margin:0 0 4px;letter-spacing:-.025em;color:var(--t1);}\r\n.brand-by{font-size:13px;font-weight:400;color:var(--t2);letter-spacing:0;white-space:nowrap;}\r\n.brand-subtitle{font-size:12.5px;color:var(--t2);margin:0;line-height:1.4;font-weight:400;}\r\n.info-block{background:var(--card);border:1px solid var(--bdr2);border-radius:var(--r2);margin-bottom:18px;overflow:hidden;box-shadow:var(--sh2);}\r\n.info-block summary{list-style:none;cursor:pointer;padding:12px 18px;display:flex;align-items:center;justify-content:space-between;user-select:none;-webkit-user-select:none;transition:background var(--tr);}\r\n.info-block summary::-webkit-details-marker{display:none;}\r\n.info-block summary:hover{background:var(--bg);}\r\n.info-block summary>span:first-child{font-size:11.5px;color:var(--t2);text-transform:uppercase;letter-spacing:.06em;font-weight:600;}\r\n.info-block .chevron{font-size:11px;color:var(--t3);transition:transform .2s;}\r\n.info-block[open] .chevron{transform:rotate(180deg);}\r\n.info-content{padding:4px 20px 20px;border-top:1px solid var(--bdr2);}\r\n.info-content h4{font-size:11px;color:var(--t2);text-transform:uppercase;letter-spacing:.06em;margin:18px 0 10px;font-weight:700;}\r\n.info-content h4:first-child{margin-top:16px;}\r\n.info-content p,.info-content li{font-size:13px;line-height:1.65;color:var(--t1);margin:0 0 8px;}\r\n.info-content ul{margin:0 0 10px;padding-left:18px;}\r\n.info-content li{margin-bottom:6px;}\r\n.info-content .legal{font-size:12px;color:var(--t2);line-height:1.55;margin:0 0 7px;}\r\n.info-content .legal:last-child{margin-bottom:0;}\r\n.schemes-panel{background:var(--bg2);border:1px solid var(--bdr2);border-radius:var(--r2);padding:13px 16px;margin-bottom:16px;}\r\n.schemes-label{font-size:10.5px;color:var(--t3);text-transform:uppercase;letter-spacing:.07em;margin:0 0 10px;font-weight:700;}\r\n.schemes-list{display:flex;flex-wrap:wrap;gap:6px;}\r\n.scheme-pill{font-size:11.5px;padding:4px 12px;border-radius:999px;border:1px solid var(--bdr);background:var(--card);color:var(--t1);font-weight:500;transition:all .25s;}\r\n.scheme-pill.discarded{color:var(--t1);border-color:var(--bdr2);background:transparent;}\r\n.scheme-pill.confirmed{background:var(--grn-bg);color:var(--grn-t2);border-color:var(--grn-bdr);font-weight:700;}\r\n.progress-bar{display:flex;gap:5px;margin-bottom:20px;}\r\n.progress-step{flex:1;height:5px;border-radius:3px;background:var(--bdr);transition:background .4s;position:relative;overflow:hidden;}\r\n.progress-step::after{content:'';position:absolute;inset:0;background:var(--acc);transform:scaleX(0);transform-origin:left;transition:transform .35s ease;}\r\n.progress-step.active::after{transform:scaleX(1);}\r\n.progress-step.done{background:var(--grn);}\r\n.progress-step.done::after{display:none;}\r\n.question-card{background:var(--card);border:1px solid var(--bdr2);border-radius:var(--r3);padding:28px 26px 24px;box-shadow:var(--sh);animation:qIn .22s ease both;}\r\n@keyframes qIn{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}\r\n.q-label{font-size:10px;color:var(--acc);text-transform:uppercase;letter-spacing:.1em;margin:0 0 8px;font-weight:800;}\r\n.q-text{font-size:16.5px;font-weight:700;margin:0 0 12px;line-height:1.45;letter-spacing:-.015em;color:var(--t1);}\r\n.q-hint{font-size:12.5px;color:var(--t2);margin:0 0 18px;line-height:1.65;padding:10px 14px;background:var(--bg);border-left:3px solid var(--bdr);border-radius:0 var(--r1) var(--r1) 0;font-style:italic;}\r\n.answer-btn{width:100%;text-align:left;padding:14px 16px 14px 20px;margin-bottom:8px;border-radius:var(--r2);border:1.5px solid var(--bdr);background:var(--card);font-size:14px;cursor:pointer;color:var(--t1);line-height:1.45;font-family:inherit;transition:all var(--tr);position:relative;white-space:normal;word-break:break-word;overflow-wrap:break-word;}\r\n.answer-btn::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;border-radius:3px 0 0 3px;background:transparent;transition:background var(--tr);}\r\n.answer-btn:hover{background:var(--bg);border-color:var(--t3);color:var(--t1)!important;}\r\n.answer-btn:hover::before{background:var(--bdr);}\r\n.answer-btn:hover .opt-desc{color:var(--t2)!important;}\r\n.answer-btn.selected{background:var(--acc-bg);border-color:var(--acc);color:var(--acc-t);font-weight:500;}\r\n.answer-btn.selected::before{background:var(--acc);}\r\n.answer-btn strong{font-weight:700;}.answer-btn em{font-style:italic;}\r\n.answer-btn .opt-desc{display:block;font-size:12px;color:var(--t2);font-weight:400;margin-top:4px;line-height:1.5;}\r\n.answer-btn.selected .opt-desc{color:var(--acc-t);opacity:.8;}\r\n\r\n\/* === Upload Zone mejorada === *\/\r\n.upload-zone{margin-top:18px;padding:20px 18px;border:2px dashed var(--t3);border-radius:var(--r2);background:var(--bg);transition:all var(--tr);cursor:pointer;text-align:center;}\r\n.upload-zone.drag-over{border-color:var(--acc);background:var(--acc-bg);transform:scale(1.01);}\r\n.upload-zone.has-file{border-style:solid;border-color:var(--grn-bdr);background:var(--grn-bg);text-align:left;}\r\n.upload-icon{font-size:26px;margin-bottom:6px;display:block;}\r\n.upload-zone.has-file .upload-icon{display:none;}\r\n.upload-label{font-size:13px;font-weight:600;margin:0 0 4px;color:var(--t2);}\r\n.upload-sub{font-size:11.5px;color:var(--t3);margin:0 0 12px;}\r\n.upload-zone.has-file .upload-sub{display:none;}\r\n.upload-btn-label{display:inline-block;padding:7px 16px;background:var(--card);border:1.5px solid var(--bdr);border-radius:var(--r1);font-size:12.5px;font-weight:600;color:var(--t1);cursor:pointer;transition:all var(--tr);margin-top:4px;}\r\n.upload-btn-label:hover{background:var(--bg2);border-color:var(--t3);}\r\n.upload-zone.has-file .upload-btn-label{display:none;}\r\n.file-input{display:none;}\r\n.file-meta{font-size:12.5px;color:var(--grn-t2);margin:0;font-weight:600;display:flex;align-items:center;gap:8px;}\r\n.file-meta-name{word-break:break-all;}\r\n.file-meta-size{color:var(--grn-t);opacity:.7;font-weight:400;}\r\n.file-remove{margin-left:auto;background:none;border:none;cursor:pointer;color:var(--red-t2);font-size:13px;padding:2px 4px;border-radius:4px;transition:background var(--tr);}\r\n.file-remove:hover{background:var(--red-bg);}\r\n.file-error{font-size:12px;color:var(--red-t2);margin:8px 0 0;padding:8px 12px;background:var(--red-bg);border-radius:var(--r1);border:1px solid var(--red-bdr);}\r\n\r\n\/* === Toast de notificaci\u00f3n === *\/\r\n.toast-container{position:fixed;bottom:24px;right:24px;z-index:9000;display:flex;flex-direction:column;gap:10px;pointer-events:none;}\r\n.toast{padding:12px 18px;border-radius:var(--r2);font-size:13.5px;font-weight:500;box-shadow:0 4px 20px rgba(0,0,0,.15);animation:toastIn .25s ease;pointer-events:auto;display:flex;align-items:center;gap:10px;min-width:240px;max-width:340px;}\r\n.toast.success{background:var(--grn-bg);color:var(--grn-t);border:1px solid var(--grn-bdr);}\r\n.toast.error{background:var(--red-bg);color:var(--red-t);border:1px solid var(--red-bdr);}\r\n.toast.loading{background:var(--acc-bg);color:var(--acc-t);border:1px solid var(--acc);}\r\n.toast.info{background:var(--bg2);color:var(--t1);border:1px solid var(--bdr);}\r\n@keyframes toastIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}\r\n\r\n\/* === Bot\u00f3n Enviar con estado de carga === *\/\r\n.action-btn.loading{opacity:.7;cursor:not-allowed;pointer-events:none;}\r\n.spinner{display:inline-block;width:14px;height:14px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;vertical-align:middle;margin-right:6px;}\r\n@keyframes spin{to{transform:rotate(360deg)}}\r\n\r\n.text-input{width:100%;margin-top:6px;padding:12px 14px;border:1.5px solid var(--bdr);border-radius:var(--r2);font-size:15px;font-family:inherit;resize:vertical;min-height:48px;color:var(--t1);background:var(--card);user-select:text;-webkit-user-select:text;transition:border-color var(--tr),box-shadow var(--tr);}\r\n.text-input:focus{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px rgba(74,65,178,.12);}\r\n.text-input.input-error{border-color:var(--red-bdr);}\r\n.text-input.input-error:focus{box-shadow:0 0 0 3px rgba(229,152,152,.2);}\r\n.field-label{font-size:11.5px;color:var(--t2);font-weight:700;text-transform:uppercase;letter-spacing:.07em;margin:20px 0 0;display:block;}\r\n.field-label:first-of-type{margin-top:0;}\r\n.field-error{font-size:12px;color:var(--red-t2);margin:5px 0 0;padding:7px 11px;background:var(--red-bg);border-radius:var(--r1);border:1px solid var(--red-bdr);display:none;}\r\n.field-error.visible{display:block;}\r\n.continue-btn{display:block;width:100%;margin-top:20px;padding:14px 24px;background:var(--acc);color:#fff;border:none;border-radius:var(--r2);font-size:15px;font-weight:700;cursor:pointer;font-family:inherit;letter-spacing:.01em;transition:all var(--tr);}\r\n.continue-btn:hover:not(:disabled){background:#3D35A0;transform:translateY(-1px);box-shadow:0 4px 14px rgba(74,65,178,.3);}\r\n.continue-btn:active:not(:disabled){transform:translateY(0);}\r\n.continue-btn:disabled{background:var(--bdr);color:var(--t3);cursor:not-allowed;transform:none;box-shadow:none;}\r\n.nav-row{display:flex;justify-content:space-between;align-items:center;margin-top:18px;}\r\n.nav-btn{background:transparent;border:1px solid var(--bdr);color:var(--t2);font-size:13px;cursor:pointer;padding:7px 14px;font-family:inherit;border-radius:var(--r1);transition:all var(--tr);}\r\n.nav-btn:hover{background:var(--bg2);border-color:var(--t3);color:var(--t1);}\r\n.result-card{border-radius:var(--r2);padding:24px 26px;position:relative;overflow:hidden;}\r\n.result-card::before{content:'';position:absolute;top:0;left:0;right:0;height:4px;}\r\n.result-card.match{background:var(--grn-bg);border:1.5px solid var(--grn-bdr);}\r\n.result-card.match::before{background:var(--grn);}\r\n.result-card.no-match{background:var(--amb-bg);border:1.5px solid var(--amb-bdr);}\r\n.result-card.no-match::before{background:var(--amb-bdr);}\r\n.result-card.stop{background:var(--red-bg);border:1.5px solid var(--red-bdr);}\r\n.result-card.stop::before{background:var(--red-bdr);}\r\n.result-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;margin:0 0 8px;font-weight:700;}\r\n.result-card.match .result-label{color:var(--grn-t2);}\r\n.result-card.no-match .result-label{color:var(--amb-t2);}\r\n.result-card.stop .result-label{color:var(--red-t2);}\r\n.result-name{font-size:24px;font-weight:700;margin:0 0 12px;line-height:1.25;letter-spacing:-.02em;}\r\n.result-card.match .result-name{color:var(--grn-t);}\r\n.result-card.no-match .result-name{color:var(--amb-t);}\r\n.result-card.stop .result-name{color:var(--red-t);}\r\n.result-desc{font-size:14px;line-height:1.65;margin:0;}\r\n.result-card.no-match .result-desc{color:var(--amb-t2);}\r\n.result-card.stop .result-desc{color:var(--red-t2);}\r\n.normative-block{background:rgba(255,255,255,.75);border-radius:var(--r1);padding:16px;margin-top:16px;border:1px solid var(--grn-bdr);}\r\n.normative-label{font-size:11px;color:var(--t2);text-transform:uppercase;letter-spacing:.06em;margin:0 0 10px;font-weight:700;}\r\n.normative-textarea{width:100%;min-height:110px;padding:12px 14px;border:1.5px solid var(--bdr);border-radius:var(--r1);font-size:13px;font-family:inherit;resize:vertical;line-height:1.55;color:var(--t1);background:var(--card);user-select:text;-webkit-user-select:text;transition:border-color var(--tr),box-shadow var(--tr);}\r\n.normative-textarea:focus{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px rgba(74,65,178,.12);}\r\n.normative-helper{font-size:11.5px;color:var(--t3);margin:8px 0 0;}\r\n.summary-block{background:var(--card);border:1px solid var(--bdr2);border-radius:var(--r2);padding:20px 24px;margin-top:16px;box-shadow:var(--sh2);}\r\n.summary-row{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--bdr2);font-size:13.5px;gap:16px;align-items:flex-start;}\r\n.summary-row:last-child{border-bottom:none;}\r\n.summary-label{color:var(--t2);flex-shrink:0;font-size:13px;}\r\n.summary-value{text-align:right;color:var(--t1);word-break:break-word;font-weight:500;}\r\n.actions-row{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap;}\r\n.action-btn{flex:1;min-width:140px;padding:12px 18px;border-radius:var(--r1);font-size:13.5px;font-weight:600;cursor:pointer;font-family:inherit;transition:all var(--tr);border:1.5px solid transparent;}\r\n.action-btn.primary{background:var(--acc);color:#fff;border-color:var(--acc);}\r\n.action-btn.primary:hover{background:#3D35A0;box-shadow:0 4px 14px rgba(74,65,178,.25);}\r\n.action-btn.secondary{background:var(--card);color:var(--t1);border-color:var(--bdr);}\r\n.action-btn.secondary:hover{background:var(--bg2);border-color:var(--t3);color:var(--t1)!important;}\r\n.footer{text-align:center;margin-top:40px;padding-top:18px;border-top:1px solid var(--bdr2);font-size:11px;color:var(--t3);letter-spacing:.04em;}\r\n.comparison-block{background:var(--card);border:1px solid var(--bdr2);border-radius:var(--r2);padding:20px 24px;margin-top:16px;box-shadow:var(--sh2);}\r\n.comparison-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px;}\r\n.comparison-cell{padding:14px 16px;border-radius:var(--r1);background:var(--bg);border:1px solid var(--bdr2);}\r\n.comparison-cell.match{background:var(--grn-bg);border-color:var(--grn-bdr);}\r\n.comparison-cell.match .label{color:var(--grn-t2);}.comparison-cell.match .value{color:var(--grn-t);}\r\n.comparison-cell.no-match{background:var(--amb-bg);border-color:var(--amb-bdr);}\r\n.comparison-cell.no-match .label{color:var(--amb-t2);}.comparison-cell.no-match .value{color:var(--amb-t);}\r\n.comparison-cell.stop{background:var(--red-bg);border-color:var(--red-bdr);}\r\n.comparison-cell.stop .label{color:var(--red-t2);}.comparison-cell.stop .value{color:var(--red-t);}\r\n.comparison-cell .label{font-size:10.5px;color:var(--t2);text-transform:uppercase;letter-spacing:.06em;margin:0 0 6px;font-weight:700;}\r\n.comparison-cell .value{font-size:14px;color:var(--t1);font-weight:600;margin:0;}\r\n.comparison-banner{margin-top:12px;padding:11px 16px;border-radius:var(--r1);font-size:13px;font-weight:500;line-height:1.5;}\r\n.comparison-banner.match{background:var(--grn-bg);border:1px solid var(--grn-bdr);color:var(--grn-t2);}\r\n.comparison-banner.mismatch{background:var(--amb-bg);border:1px solid var(--amb-bdr);color:var(--amb-t2);}\r\n.comparison-banner.neutral{background:var(--bg2);border:1px solid var(--bdr);color:var(--t2);}\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{padding:20px 14px 52px;}\r\n  .brand{margin-bottom:22px;padding-bottom:16px;}\r\n  .brand-title{font-size:20px;}\r\n  .brand-subtitle{font-size:12.5px;}\r\n  .schemes-panel{padding:11px 14px;margin-bottom:14px;}\r\n  .progress-bar{gap:4px;margin-bottom:16px;}\r\n  .question-card{padding:22px 20px 20px;}\r\n  .q-text{font-size:16px;}\r\n  .answer-btn{padding:13px 14px 13px 18px;font-size:13.5px;}\r\n  .continue-btn{margin-top:16px;padding:13px 20px;font-size:14.5px;}\r\n  .result-name{font-size:22px;}\r\n  .summary-block,.comparison-block{padding:16px 18px;}\r\n  .actions-row{gap:8px;}\r\n  .action-btn{font-size:13px;padding:11px 14px;}\r\n}\r\n\r\n@media(max-width:480px){\r\n  #amc-app{padding:16px 12px 48px;}\r\n\r\n  .brand{margin-bottom:18px;padding-bottom:14px;}\r\n  .brand::after{width:40px;}\r\n  .brand-name{font-size:10px;letter-spacing:.08em;}\r\n  .brand-title{font-size:18px;letter-spacing:-.015em;}\r\n  .brand-subtitle{font-size:12px;line-height:1.4;}\r\n\r\n  .info-block summary{padding:10px 14px;}\r\n  .info-content{padding:4px 14px 16px;}\r\n  .info-content h4{margin:14px 0 8px;}\r\n  .info-content p,.info-content li{font-size:12.5px;}\r\n\r\n  .schemes-panel{padding:10px 12px;border-radius:var(--r1);}\r\n  .schemes-list{gap:5px;}\r\n  .scheme-pill{font-size:11px;padding:3px 10px;}\r\n\r\n  .progress-bar{gap:3px;margin-bottom:14px;}\r\n  .progress-step{height:4px;}\r\n\r\n  .question-card{padding:18px 14px 16px;border-radius:var(--r2);box-shadow:var(--sh2);}\r\n  .q-label{font-size:10px;margin:0 0 6px;}\r\n  .q-text{font-size:15px;margin:0 0 8px;}\r\n  .q-hint{font-size:12.5px;padding:9px 12px;margin:0 0 16px;}\r\n\r\n  .answer-btn{padding:12px 12px 12px 16px;font-size:13px;margin-bottom:6px;border-radius:var(--r1);}\r\n  .answer-btn .opt-desc{font-size:11.5px;margin-top:3px;}\r\n  .answer-btn::before{width:2.5px;}\r\n\r\n  .upload-zone{padding:13px 14px;margin-top:14px;}\r\n  .upload-label{font-size:12.5px;}\r\n  .text-input{padding:11px 12px;font-size:14px;}\r\n\r\n  .continue-btn{margin-top:16px;padding:14px 18px;font-size:14px;min-height:48px;}\r\n  .nav-btn{padding:10px 16px;font-size:12.5px;min-height:44px;min-width:80px;border-radius:var(--r2);}\r\n\r\n  .result-card{padding:18px 16px;}\r\n  .result-name{font-size:20px;letter-spacing:-.015em;}\r\n  .result-desc{font-size:13.5px;}\r\n  .normative-block{padding:13px;margin-top:13px;}\r\n  .normative-textarea{min-height:90px;}\r\n\r\n  .comparison-grid{grid-template-columns:1fr;}\r\n  .comparison-block{padding:14px 16px;margin-top:12px;}\r\n  .comparison-banner{padding:10px 12px;font-size:12.5px;}\r\n\r\n  .summary-block{padding:14px 16px;margin-top:12px;}\r\n  .summary-row{font-size:12.5px;gap:8px;padding:8px 0;flex-wrap:wrap;}\r\n  .summary-label{font-size:12px;min-width:0;}\r\n  .summary-value{text-align:left;width:100%;margin-top:2px;}\r\n\r\n  .actions-row{flex-direction:column;gap:8px;margin-top:16px;}\r\n  .action-btn{min-width:0;width:100%;padding:13px 16px;min-height:48px;font-size:13.5px;text-align:center;}\r\n\r\n  .footer{margin-top:28px;font-size:10.5px;line-height:1.6;}\r\n\r\n  .toast-container{bottom:16px;right:12px;left:12px;}\r\n  .toast{min-width:0;width:100%;}\r\n}\r\n\r\n@media(max-width:360px){\r\n  #amc-app{padding:12px 10px 40px;}\r\n  .brand{margin-bottom:14px;}\r\n  .brand-title{font-size:16px;}\r\n  .brand-subtitle{font-size:11.5px;}\r\n  .question-card{padding:14px 12px;}\r\n  .q-text{font-size:14.5px;}\r\n  .answer-btn{padding:11px 10px 11px 14px;font-size:12.5px;}\r\n  .continue-btn{font-size:13.5px;}\r\n  .result-name{font-size:18px;}\r\n  .summary-row{font-size:12px;}\r\n  .action-btn{font-size:13px;}\r\n}\r\n\r\n@media print{\r\n  .nav-row,.actions-row,.info-block,.schemes-panel{display:none!important;}\r\n  #amc-app{background:#fff!important;padding:0;}\r\n  .question-card{box-shadow:none;border:1px solid #ccc;}\r\n  body::before{\r\n    content:'CONFIDENCIAL \u00b7 AMC PRINCIPAL \u00b7 ' attr(data-session);\r\n    position:fixed;top:50%;left:50%;\r\n    transform:translate(-50%,-50%) rotate(-35deg);\r\n    font-size:42px;font-weight:900;\r\n    color:rgba(74,65,178,.08);letter-spacing:.08em;\r\n    text-transform:uppercase;z-index:9999;\r\n    pointer-events:none;white-space:nowrap;\r\n    font-family:system-ui,sans-serif;\r\n  }\r\n}\r\n<\/style>\r\n<\/head>\r\n<body>\r\n<!-- Overlay de protecci\u00f3n al perder foco -->\r\n<div id=\"_amc_blur\" 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 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 cual opera.<\/li>\r\n        <li>Comprar o producir energ\u00eda son negocios jur\u00eddicos diferentes y mutuamente excluyentes. Establecer cu\u00e1l es el aplicable depende de la realidad de las relaciones jur\u00eddicas, econ\u00f3micas y operativas existentes, lo 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 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 <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 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, 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) =====\r\n  const WEB3FORMS_ACCESS_KEY = 'd21a544d-23b8-45be-b890-a26697219e57';\r\n  const RECIPIENT_EMAIL      = 'ops@amcprincipal.com';\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  };\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  \/\/ ===== 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 = () => {\r\n      if (continueBtn.disabled) return;\r\n      state.answers.companyName  = inputName.value.trim();\r\n      state.answers.contactEmail = inputEmail.value.trim();\r\n      pushHistory();\r\n      state.current = 'q0';\r\n      renderQ0();\r\n    };\r\n\r\n    setTimeout(() => inputName.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><div class=\"normative-block\"><p class=\"normative-label\">Base normativa<\/p><textarea class=\"normative-textarea\" id=\"normativa-textarea\" placeholder=\"Ingrese aqu\u00ed la base normativa espec\u00edfica que respalda la calificaci\u00f3n de este esquema (resoluciones, decretos, leyes, jurisprudencia, etc.).\">' + (state.normativaUserText || '') + '<\/textarea><p class=\"normative-helper\">Este campo se diligencia caso a caso por el equipo de AMC Principal.<\/p><\/div>';\r\n    }\r\n    root.appendChild(card);\r\n\r\n    if (!stopA3 && scheme !== 'SINSOP') {\r\n      const ta = document.getElementById('normativa-textarea');\r\n      if (ta) ta.oninput = (e) => { state.normativaUserText = e.target.value; };\r\n    }\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    \/\/ 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: '' };\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: '' };\r\n    routeToCurrent();\r\n  };\r\n\r\n  function routeToCurrent() {\r\n    const r = {\r\n      qName: renderQName,\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<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>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-769","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\/769","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=769"}],"version-history":[{"count":28,"href":"https:\/\/amcprincipal.com\/en\/wp-json\/wp\/v2\/pages\/769\/revisions"}],"predecessor-version":[{"id":801,"href":"https:\/\/amcprincipal.com\/en\/wp-json\/wp\/v2\/pages\/769\/revisions\/801"}],"wp:attachment":[{"href":"https:\/\/amcprincipal.com\/en\/wp-json\/wp\/v2\/media?parent=769"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}