{"id":15264,"date":"2026-05-06T10:44:02","date_gmt":"2026-05-06T08:44:02","guid":{"rendered":"https:\/\/magon.es\/?page_id=15264"},"modified":"2026-05-06T11:04:10","modified_gmt":"2026-05-06T09:04:10","slug":"admissible-load-calculator","status":"publish","type":"page","link":"https:\/\/magon.es\/en\/admissible-load-calculator\/","title":{"rendered":"Admissible Load Calculator"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"15264\" class=\"elementor elementor-15264 elementor-14991\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5cdcbb5 e-con-full e-flex e-con e-parent\" data-id=\"5cdcbb5\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4d3c44f elementor-widget elementor-widget-html\" data-id=\"4d3c44f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en-GB\">\r\n<head>\r\n<meta charset=\"UTF-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n<meta name=\"theme-color\" content=\"#2e1318\">\r\n<meta name=\"color-scheme\" content=\"light\">\r\n<meta http-equiv=\"X-Content-Type-Options\" content=\"nosniff\">\r\n<meta http-equiv=\"X-Frame-Options\" content=\"SAMEORIGIN\">\r\n<meta http-equiv=\"Permissions-Policy\" content=\"camera=(), microphone=(), geolocation=()\">\r\n<meta http-equiv=\"Referrer-Policy\" content=\"strict-origin-when-cross-origin\">\r\n<meta name=\"robots\" content=\"index, follow\">\r\n<meta name=\"author\" content=\"Magon Aceros \u2014 Magon Metales Perfilados S.A.\">\r\n\r\n\r\n\r\n\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=DM+Mono:wght@400;500&family=DM+Sans:opsz,wght@9..40,400;600;700&display=swap\" rel=\"stylesheet\" media=\"print\" onload=\"this.media='all'\">\r\n<noscript><link href=\"https:\/\/fonts.googleapis.com\/css2?family=DM+Mono:wght@400;500&family=DM+Sans:opsz,wght@9..40,400;600;700&display=swap\" rel=\"stylesheet\"><\/noscript>\r\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js\" defer><\/script>\r\n<style>\r\n:root{\r\n  --p:#4a2228;--pd:#2e1318;--pm:#6b3039;--pa:#8b4a52;\r\n  --pl:#f9f0f1;--pb:#d4a0a6;\r\n  --g1:#111827;--g2:#4b5563;--g3:#f9fafb;--gl:#e5e7eb;\r\n  --w:#fff;--t:#111827;--ts:#6b7280;\r\n  --ok:#16a34a;--warn:#d97706;--err:#dc2626;\r\n  --sh:0 1px 3px rgba(0,0,0,.08),0 4px 16px rgba(0,0,0,.04);\r\n  --r:10px;--tr:.18s ease;\r\n  --f:'DM Sans',sans-serif;--m:'DM Mono',monospace;\r\n}\r\n*{margin:0;padding:0;box-sizing:border-box}\r\nbody{font-family:var(--f);background:#f0eef0;color:var(--t);font-size:14px;line-height:1.5;min-height:100vh;overflow-x:hidden}\r\n\r\n\/* HEADER \u2014 oculto en Elementor *\/\r\n\r\n\/* HERO \u2014 inspirado en referencia, degradado muy claro con l\u00edneas diagonales *\/\r\n.hero{position:relative;width:100%;margin:0;padding:0}\r\n.hero-box{\r\n  position:relative;width:100%;\r\n  background:linear-gradient(135deg,#fefcfc 0%,#fdf5f6 30%,#f7e8eb 65%,#f0d5da 100%);\r\n  border-bottom:3px solid var(--p);\r\n  overflow:hidden;\r\n  display:flex;align-items:stretch;min-height:340px;\r\n}\r\n\/* Diagonal stripes \u2014 estilo referencia *\/\r\n.hero-box::before{\r\n  content:'';position:absolute;inset:0;\r\n  background:repeating-linear-gradient(\r\n    -45deg,\r\n    transparent,\r\n    transparent 28px,\r\n    rgba(74,34,40,.025) 28px,\r\n    rgba(74,34,40,.025) 30px\r\n  );\r\n  pointer-events:none;\r\n}\r\n.hero-box::after{\r\n  content:'';position:absolute;right:-80px;top:-80px;\r\n  width:400px;height:400px;border-radius:50%;\r\n  background:radial-gradient(circle,rgba(74,34,40,.06) 0%,transparent 65%);\r\n  pointer-events:none;\r\n}\r\n.hero-inner{\r\n  position:relative;z-index:1;\r\n  max-width:1100px;width:100%;margin:0 auto;\r\n  padding:34px 1.5rem 30px;\r\n  display:flex;flex-direction:column;justify-content:center;\r\n}\r\n\/* kicker \u2014 flecha + texto como referencia *\/\r\n.hero-kicker{\r\n  display:inline-flex;align-items:center;gap:7px;\r\n  padding:5px 12px;border-radius:4px;\r\n  background:rgba(74,34,40,.08);border:1px solid rgba(74,34,40,.14);\r\n  color:var(--pd);font-size:.65rem;font-weight:700;\r\n  letter-spacing:.1em;text-transform:uppercase;\r\n  margin-bottom:18px;align-self:flex-start;\r\n}\r\n.hero-kicker::before{content:'\u203a';font-size:1rem;font-weight:900;opacity:.7;line-height:1}\r\n.hero h1{\r\n  max-width:none;width:100%;\r\n  font-size:clamp(1.8rem,3.5vw,3rem);\r\n  line-height:1.05;font-weight:800;\r\n  color:var(--pd);margin-bottom:14px;\r\n  letter-spacing:-.02em;\r\n}\r\n.hero p{\r\n  max-width:560px;\r\n  font-size:.96rem;line-height:1.7;color:#5c3540;\r\n}\r\n\/* CTA \u2014 texto cambiado en HTML, hover solo oscurece fondo NO texto *\/\r\n.hero-cta{\r\n  display:inline-flex;align-items:center;justify-content:center;gap:8px;\r\n  align-self:flex-start;margin-top:26px;\r\n  padding:12px 20px;border-radius:4px;\r\n  background:var(--pd);border:2px solid var(--pd);\r\n  color:#fff!important;text-decoration:none;\r\n  text-transform:uppercase;letter-spacing:.08em;\r\n  font-size:.73rem;font-weight:700;\r\n  transition:var(--tr);box-shadow:0 6px 20px rgba(46,19,24,.18);\r\n}\r\n.hero-cta:hover{background:#1a0a0e;border-color:#1a0a0e;color:#fff!important;transform:translateY(-1px)}\r\n\r\n\/* MAKER BAR \u2014 negro como referencia, borde burdeos arriba *\/\r\n.maker-bar{width:100%;margin:0;background:#111;border-top:3px solid var(--p);padding:0}\r\n.maker-bar-inner{max-width:1100px;margin:0 auto;padding:12px 1.5rem;display:flex;align-items:center;gap:16px}\r\n.maker-brand{display:flex;align-items:center;gap:12px}\r\n.maker-copy{font-size:.62rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.4)}\r\n.maker-sep{width:1px;height:18px;background:rgba(255,255,255,.18);flex-shrink:0}\r\n.maker-logo{height:16px!important;max-height:16px!important;width:auto!important;display:block;filter:brightness(0) invert(1);opacity:.85}\r\n.maker-actions{display:flex;align-items:center;margin-left:auto}\r\n\r\n\/* LAYOUT \u2014 ancho total para Elementor *\/\r\n.page{width:100%;max-width:none;margin:0;padding:20px 0 60px;display:flex;flex-direction:column;gap:14px;box-sizing:border-box}\r\n\r\n\/* TABLA \u2014 headers visibles siempre *\/\r\n.tw{overflow-x:auto}\r\ntable{width:100%;border-collapse:collapse;font-size:.82rem}\r\nthead tr{background:#2e1318!important}\r\nthead th{padding:9px 12px;color:#ffffff!important;-webkit-text-fill-color:#ffffff!important;background:var(--pd)!important;font-size:.67rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;text-align:right;white-space:nowrap;font-family:var(--m)}\r\nthead th:first-child{text-align:left}\r\ntbody tr{border-bottom:1px solid var(--gl)}\r\ntbody tr:last-child{border-bottom:none}\r\ntbody tr.rsel{background:#fdf3f4}\r\ntbody tr:hover{background:#fdf8f8}\r\ntbody td{padding:7px 11px;color:var(--t);text-align:right;white-space:nowrap;font-family:var(--m);font-size:.81rem}\r\ntbody td:first-child{text-align:left;font-weight:600;color:var(--pd);font-family:var(--f)}\r\n.chi{background:var(--p);color:#fff!important;font-weight:700;border-radius:4px;padding:2px 7px;display:inline-block}\r\n.cd{color:#d1d5db}\r\n.vok{color:var(--ok);font-weight:600}.vwarn{color:var(--warn);font-weight:600}.vfail{color:var(--err);font-weight:600}\r\n\r\n\/* MODAL \u2014 form note visible, texto claro *\/\r\n.mh{padding:18px 56px 14px 20px;border-bottom:1px solid var(--gl);background:linear-gradient(135deg,var(--pd),var(--p));color:#fff;position:relative}\r\n.mh h3{font-size:.97rem;font-weight:700;margin-bottom:2px;color:#fff}\r\n.mh p{font-size:.77rem;color:rgba(255,255,255,.72)}\r\n.form-note{font-size:.71rem;color:var(--ts);line-height:1.5;padding:9px 11px;background:#fef9e7;border-radius:5px;border:1px solid #fde68a;color:#92400e;display:block!important;margin-bottom:10px}\r\n.mf{padding:14px 20px 16px;background:var(--g3);border-top:1px solid var(--gl);display:flex!important;flex-direction:column;gap:10px}.modal-submit-btn{width:100%;padding:13px;font-size:.82rem;justify-content:center;border-radius:5px}.form-legal{font-size:.68rem;color:var(--ts);line-height:1.5;text-align:center;margin:0!important}\r\n\r\n\/* CARD *\/\r\n.card{background:var(--w);border-radius:var(--r);box-shadow:var(--sh);border:1px solid var(--gl);overflow:hidden}\r\n.card-h{padding:13px 16px;border-bottom:1px solid var(--gl);display:flex;align-items:center;gap:10px}\r\n.card-ico{width:24px;height:24px;background:var(--pl);border-radius:5px;display:flex;align-items:center;justify-content:center;color:var(--p);font-size:11px;flex-shrink:0}\r\n.card-step{width:26px;height:26px;border-radius:999px;background:var(--pd);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:700;flex-shrink:0;font-family:var(--m)}\r\n.card-title{font-size:.73rem;font-weight:700;text-transform:uppercase;letter-spacing:.11em;color:var(--pd);flex:1}\r\n.card-body{padding:14px 16px}\r\n\r\n\/* TABS *\/\r\n.tabs{display:flex;gap:3px;padding:3px;background:var(--g3);border-radius:6px;margin-bottom:12px;border:1px solid var(--gl)}\r\n.tab{flex:1;padding:7px 8px;border:none;background:transparent;border-radius:4px;font-family:var(--f);font-size:.74rem;font-weight:600;color:var(--ts);cursor:pointer;transition:var(--tr);text-align:center}\r\n.tab.active{background:var(--w);color:var(--pd);box-shadow:0 1px 4px rgba(0,0,0,.1)}\r\n.tab:hover:not(.active){color:var(--p)}\r\n\r\n\/* PRODUCT GRID *\/\r\n.prod-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px}\r\n.prod{padding:9px 11px;border-radius:6px;cursor:pointer;border:1.5px solid var(--gl);transition:var(--tr);background:var(--g3);position:relative}\r\n.prod:hover{border-color:var(--pb);background:var(--pl)}\r\n.prod.sel{border-color:var(--p);background:var(--pl)}\r\n.prod.sel::before{content:'OK';position:absolute;top:5px;right:7px;font-size:.6rem;color:var(--p);font-weight:700;letter-spacing:.04em}\r\n.prod-name{font-weight:700;font-size:.83rem;color:var(--t);font-family:var(--m);margin-bottom:2px}\r\n.prod-sub{font-size:.68rem;color:var(--ts)}\r\n.prod-tags{display:flex;gap:3px;margin-top:4px;flex-wrap:wrap}\r\n.tag{font-size:.6rem;font-weight:600;padding:1px 5px;border-radius:3px;background:rgba(74,34,40,.1);color:var(--pd);font-family:var(--m)}\r\n\r\n\/* CORREA PICKER *\/\r\n.cp{display:flex;flex-direction:column;gap:9px}\r\n.cp-row{display:grid;grid-template-columns:65px 1fr;align-items:start;gap:8px}\r\n.cp-lbl{font-size:.66rem;font-weight:700;color:var(--ts);font-family:var(--m);text-transform:uppercase;padding-top:6px}\r\n.pills{display:flex;gap:10px 12px;flex-wrap:wrap;align-items:flex-start;padding-top:4px}\r\n\r\n\/* PILLS \u2014 estado reactivo *\/\r\n.pill{padding:9px 14px 8px;border-radius:7px;border:1.5px solid var(--gl);background:var(--w);font-size:.76rem;font-weight:700;cursor:pointer;transition:var(--tr);font-family:var(--m);color:var(--g2);position:relative;text-align:center;min-width:88px;box-shadow:0 6px 14px rgba(17,24,39,.04)}\r\n.pill:hover:not(.pdis){border-color:var(--pb);color:var(--p)}\r\n.pill.active{background:var(--p);border-color:var(--p);color:#fff}\r\n.pill.pdis{opacity:.28;cursor:not-allowed;pointer-events:none;background:var(--g3);text-decoration:line-through}\r\n\/* Badge de valor\/estado sobre la pill *\/\r\n.pill[data-badge]{margin-top:14px}\r\n.pill[data-badge]::after{content:attr(data-badge);position:absolute;top:-13px;left:10px;font-size:.68rem;font-weight:800;padding:2px 8px;border-radius:5px;white-space:nowrap;font-family:var(--f);pointer-events:none;line-height:1.4;box-shadow:0 7px 14px rgba(17,24,39,.12)}\r\n.pill.pill-ok{border-color:var(--ok)}\r\n.pill.pill-ok[data-badge]::after{background:var(--ok);color:#fff}\r\n.pill.pill-warn{border-color:var(--warn)}\r\n.pill.pill-warn[data-badge]::after{background:var(--warn);color:#fff}\r\n.pill.pill-fail{border-color:var(--err);opacity:.5}\r\n.pill.pill-fail[data-badge]::after{background:var(--err);color:#fff}\r\n\r\n\/* SEP BUTTONS *\/\r\n.sg{display:grid;grid-template-columns:repeat(6,1fr);gap:3px}\r\n.sg4{display:grid;grid-template-columns:repeat(4,1fr);gap:3px}\r\n.sb{padding:7px 3px;text-align:center;border:1.5px solid var(--gl);border-radius:5px;font-size:.71rem;font-weight:600;cursor:pointer;transition:var(--tr);background:var(--w);color:var(--g2);font-family:var(--m);position:relative}\r\n.sb:hover:not(.sdis){border-color:var(--pb);color:var(--p)}\r\n.sb.active{background:var(--p);border-color:var(--p);color:#fff}\r\n.sb.sdis{opacity:.26;cursor:not-allowed;pointer-events:none;background:var(--g3);text-decoration:line-through}\r\n.sb[data-badge]::after{content:attr(data-badge);position:absolute;top:-8px;right:-4px;font-size:.55rem;font-weight:700;padding:1px 4px;border-radius:3px;white-space:nowrap;font-family:var(--f);pointer-events:none;line-height:1.4}\r\n.sb.sb-ok{border-color:var(--ok)}\r\n.sb.sb-ok[data-badge]::after{background:var(--ok);color:#fff}\r\n.sb.sb-warn{border-color:var(--warn)}\r\n.sb.sb-warn[data-badge]::after{background:var(--warn);color:#fff}\r\n.sb.sb-fail{border-color:var(--err);opacity:.55}\r\n.sb.sb-fail[data-badge]::after{background:var(--err);color:#fff}\r\n\r\n\/* VANOS *\/\r\n.vps{display:flex;gap:5px}\r\n.vp{flex:1;padding:8px 5px;border:1.5px solid var(--gl);border-radius:6px;background:var(--w);cursor:pointer;transition:var(--tr);text-align:center}\r\n.vp:hover{border-color:var(--pb)}\r\n.vp.active{border-color:var(--p);background:var(--pl)}\r\n.vp-lbl{font-size:.66rem;font-weight:700;color:var(--ts);text-transform:uppercase;letter-spacing:.04em;display:block;margin-bottom:2px}\r\n.vp.active .vp-lbl{color:var(--pd)}\r\n.vsch{display:flex;align-items:flex-end;justify-content:center;gap:2px;height:13px;margin-bottom:2px}\r\n.vseg{height:3px;background:var(--gl);border-radius:2px;flex:1;max-width:20px}\r\n.vp.active .vseg{background:var(--p)}\r\n.vsup{width:3px;height:9px;background:var(--gl);border-radius:1px}\r\n.vp.active .vsup{background:var(--pd)}\r\n\r\n\/* FORM *\/\r\n.fg{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}\r\n.fg:last-child{margin-bottom:0}\r\nlabel{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--g2);display:flex;align-items:center;gap:5px}\r\ninput,select{padding:9px 11px;border:1.5px solid var(--gl);border-radius:6px;font-family:var(--f);font-size:.87rem;color:var(--t);background:var(--w);transition:var(--tr);outline:none;width:100%}\r\ninput:focus,select:focus{border-color:var(--p);box-shadow:0 0 0 3px rgba(74,34,40,.08)}\r\n.iw{position:relative}\r\n.iu{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-size:.7rem;font-weight:600;color:#bbb;pointer-events:none;font-family:var(--m)}\r\n.iw input{padding-right:38px}\r\n.fr{display:grid;grid-template-columns:1fr 1fr;gap:10px}\r\n\r\n\/* TIP *\/\r\n.tip{display:inline-flex;align-items:center;justify-content:center;width:13px;height:13px;background:#e5e7eb;color:#888;border-radius:50%;font-size:.58rem;font-weight:700;cursor:help;position:relative;flex-shrink:0}\r\n.tip:hover::after{content:attr(data-tip);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%);background:var(--g1);color:#fff;padding:6px 9px;border-radius:5px;font-size:.7rem;font-weight:400;white-space:normal;min-width:190px;max-width:230px;z-index:50;box-shadow:0 4px 12px rgba(0,0,0,.2);text-align:left;line-height:1.4;pointer-events:none}\r\n\r\n\/* ALERT *\/\r\n.alert{padding:9px 13px;border-radius:6px;font-size:.78rem;margin-bottom:10px;display:none;align-items:center;gap:7px}\r\n.alert.show{display:flex}\r\n.ae{background:#fee2e2;border:1px solid #fca5a5;color:#991b1b}\r\n\r\n\/* HINT *\/\r\n.hint{background:var(--pl);border:1px solid var(--pb);border-radius:6px;padding:8px 11px;font-size:.74rem;color:var(--pd);display:flex;align-items:flex-start;gap:7px;margin-top:8px}\r\n.hint svg{flex-shrink:0;margin-top:1px}\r\n\r\n\/* BTN *\/\r\n.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:10px 18px;border:none;border-radius:6px;font-family:var(--f);font-size:.8rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;transition:var(--tr)}\r\n.btn-p{background:var(--p);color:#fff}\r\n.btn-p:hover{background:var(--pd);transform:translateY(-1px);box-shadow:0 4px 12px rgba(74,34,40,.35)}\r\n.btn-o{background:transparent;color:var(--p);border:1.5px solid var(--p)}\r\n.btn-o:hover{background:var(--pl)}\r\n.acc-btn{background:linear-gradient(135deg,var(--p) 0%,var(--pm) 100%);color:#fff;border:1px solid var(--p);box-shadow:0 14px 28px rgba(74,34,40,.22);padding:12px 18px}\r\n.acc-btn:hover{background:linear-gradient(135deg,var(--pd) 0%,var(--p) 100%);transform:translateY(-1px)}\r\n.btn-g{background:transparent;color:var(--ts);border:1.5px solid var(--gl)}\r\n.btn-g:hover{background:var(--g3);color:var(--t)}\r\n.btn-f{width:100%}\r\n.btn-s{padding:8px 13px;font-size:.73rem}\r\n\r\n\/* SEP *\/\r\nhr.sep{border:none;border-top:1px solid var(--gl);margin:12px 0}\r\n\r\n\/* DISCLAIMER *\/\r\n.disc{padding:9px 13px;background:#fef3c7;border:1px solid #fde68a;border-radius:6px;font-size:.73rem;color:#92400e;line-height:1.5}\r\n.disc strong{display:block;margin-bottom:1px}\r\n\r\n\/* RESULT BANNER *\/\r\n.rb{background:linear-gradient(135deg,var(--pd) 0%,var(--p) 55%,var(--pm) 100%);border-radius:var(--r);padding:20px 22px;color:#fff;box-shadow:0 8px 32px rgba(74,34,40,.28);display:none;position:relative;overflow:hidden}\r\n.rb.show{display:block;animation:fadeUp .32s ease forwards}\r\n.rb::after{content:'';position:absolute;right:-40px;top:-40px;width:150px;height:150px;border-radius:50%;background:rgba(255,255,255,.04);pointer-events:none}\r\n.rb-ey{font-size:.6rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.5);margin-bottom:3px}\r\n.rb-nom{font-size:1.4rem;font-weight:700;line-height:1.1;margin-bottom:2px;font-family:var(--m)}\r\n.rb-sub{font-size:.73rem;color:rgba(255,255,255,.55);margin-bottom:14px}\r\n.rb-met{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}\r\n.met{background:rgba(255,255,255,.08);border-radius:6px;padding:9px 10px;text-align:center}\r\n.met-v{font-size:1.35rem;font-weight:700;line-height:1;margin-bottom:3px;font-family:var(--m)}\r\n.met-v.ok{color:#6ee7a8}.met-v.warn{color:#fcd34d}.met-v.fail{color:#fca5a5}\r\n.met-l{font-size:.58rem;text-transform:uppercase;letter-spacing:.06em;color:rgba(255,255,255,.4);font-weight:600}\r\n.rbadge{display:inline-flex;align-items:center;gap:5px;padding:6px 13px;border-radius:20px;font-size:.75rem;font-weight:700}\r\n.bok{background:rgba(110,231,168,.18);color:#6ee7a8;border:1px solid rgba(110,231,168,.3)}\r\n.bwarn{background:rgba(252,211,77,.18);color:#fcd34d;border:1px solid rgba(252,211,77,.3)}\r\n.bfail{background:rgba(252,165,165,.18);color:#fca5a5;border:1px solid rgba(252,165,165,.3)}\r\n.bneut{background:rgba(255,255,255,.1);color:rgba(255,255,255,.55)}\r\n\r\n\r\n\/* NOTA *\/\r\n.nota{font-size:.71rem;color:var(--ts);line-height:1.5;padding:9px 13px;background:var(--g3);border-radius:6px;border-left:3px solid var(--pa);display:none}\r\n\r\n\/* CTA *\/\r\n.cta{background:linear-gradient(135deg,var(--pd) 0%,var(--p) 55%,var(--pm) 100%);border-radius:var(--r);padding:16px 18px;display:flex;align-items:center;gap:12px;box-shadow:0 4px 20px rgba(74,34,40,.22);border:1px solid var(--pm)}\r\n.cta-ico{width:38px;height:38px;background:rgba(255,255,255,.12);border-radius:9px;display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0}\r\n.cta-c{flex:1}\r\n.cta-t{font-size:.86rem;font-weight:700;color:#fff;margin-bottom:2px}\r\n.cta-d{font-size:.71rem;color:rgba(255,255,255,.65);line-height:1.4}\r\n.cta-btn{background:#fff!important;color:var(--pd)!important;flex-shrink:0;display:inline-flex;align-items:center;gap:4px}\r\n.cta-btn:hover{background:var(--pl)!important;transform:translateY(-1px)}\r\n\r\n\/* MODAL OVERLAY \u2014 ambas clases funcionan *\/\r\n.mo{position:fixed;inset:0;background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center;z-index:9000;opacity:0;pointer-events:none;transition:opacity .2s;padding:1rem;overflow-y:auto}\r\n.mo.open{opacity:1;pointer-events:all}\r\n.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex!important;align-items:center;justify-content:center;z-index:9000;padding:1rem;overflow-y:auto;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}\r\n.modal-bg.hidden{display:none!important}\r\n.modal{background:#fff;border-radius:10px;width:100%;max-width:520px;margin:auto;box-shadow:0 20px 60px rgba(0,0,0,.3);transform:translateY(12px);transition:transform .2s;overflow:hidden;position:relative}\r\n.mo.open .modal{transform:translateY(0)}\r\n.modal-close{position:absolute;top:12px;right:12px;width:34px;height:34px;border:none;border-radius:999px;background:rgba(255,255,255,.12);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:var(--tr)}\r\n.modal-close:hover{background:rgba(255,255,255,.2)}\r\n.check-row{display:flex;align-items:flex-start;gap:10px;font-size:.77rem;color:var(--t);line-height:1.5;margin:12px 0 10px;text-transform:none;letter-spacing:0;font-weight:500}\r\n.check-row input{width:16px;height:16px;margin-top:2px;flex-shrink:0}\r\n.hidden{display:none!important}\r\n.mb{padding:16px 20px}\r\n\r\n\/* TOAST *\/\r\n.toast{position:fixed;bottom:22px;right:22px;background:var(--g1);color:#fff;padding:11px 18px;border-radius:8px;font-size:.83rem;font-weight:600;box-shadow:0 8px 24px rgba(0,0,0,.25);z-index:9999;opacity:0;transform:translateY(10px);transition:opacity .2s,transform .2s;pointer-events:none;border-left:3px solid var(--pa)}\r\n.toast.show{opacity:1;transform:translateY(0)}\r\n\r\n\/* ANIMACIONES *\/\r\n@keyframes fadeUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}\r\n.card.ra{animation:fadeUp .36s ease forwards;will-change:opacity,transform}\r\n\r\n\/* PROGRESO *\/\r\n.prog-wrap{height:3px;background:var(--gl);border-radius:2px;margin-bottom:14px;overflow:hidden}\r\n.prog-fill{height:100%;background:linear-gradient(90deg,var(--p),var(--pa));border-radius:2px;transition:width .3s ease;width:0%}\r\n\r\n\/* DARK MODE *\/\r\nbody.dark{--w:#1e2430;--g3:#161c27;--gl:#2d3748;--t:#e2e8f0;--ts:#94a3b8;--g2:#94a3b8;--sh:0 1px 3px rgba(0,0,0,.3),0 4px 16px rgba(0,0,0,.2);background:#0f1318}\r\nbody.dark .card,body.dark .modal{background:#1e2430;border-color:#2d3748}\r\nbody.dark .card-h,body.dark .mf{border-color:#2d3748}\r\nbody.dark input,body.dark select{background:#161c27;border-color:#2d3748;color:#e2e8f0}\r\nbody.dark .tabs{background:#161c27;border-color:#2d3748}\r\nbody.dark .tab.active{background:#2d3748;color:#e2e8f0}\r\nbody.dark .prod,body.dark .pill,body.dark .sb,body.dark .vp{background:#161c27;border-color:#2d3748}\r\nbody.dark .prod:hover,body.dark .prod.sel,body.dark .vp.active{background:rgba(74,34,40,.25)}\r\nbody.dark .pill:hover:not(.pdis),body.dark .sb:hover:not(.sdis){border-color:var(--pb);color:var(--pa)}\r\nbody.dark .pill.pdis,body.dark .sb.sdis{background:#161c27}\r\nbody.dark .disc{background:#2a2210;border-color:#5a4a20;color:#d4a853}\r\nbody.dark .nota{background:#161c27}\r\nbody.dark .mb{background:#1e2430}\r\nbody.dark tbody tr{border-color:#2d3748}\r\nbody.dark tbody tr:hover{background:rgba(74,34,40,.1)}\r\nbody.dark tbody tr.rsel{background:rgba(74,34,40,.2)}\r\nbody.dark tbody td{color:#e2e8f0}\r\nbody.dark .hint{background:rgba(74,34,40,.2);border-color:rgba(74,34,40,.5)}\r\nbody.dark .prog-wrap{background:#2d3748}\r\n\r\n\/* RESPONSIVE \u2014 ver bloque final *\/\r\nhtml{scroll-behavior:smooth}\r\n.hdr{display:none}\r\n#s-perf,#s-sw{display:flex;flex-direction:column;gap:14px}\r\n.fam-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr))}\r\n.fam-tabs .tab{flex:none}\r\n.form-legal{font-size:.73rem;color:var(--ts);line-height:1.6;margin-top:10px}\r\nbody.dark .hero-box{background:linear-gradient(135deg,#1a0f12 0%,#1e1215 30%,#221618 65%,#26191c 100%);border-bottom-color:var(--pm)}\r\nbody.dark .hero h1{color:#f0e4e6}\r\nbody.dark .hero p{color:#c4a8ad}\r\nbody.dark .hero-kicker{background:rgba(255,255,255,.06);color:#e8d0d4;border-color:rgba(255,255,255,.08)}\r\nbody.dark .hero-cta{background:var(--p);border-color:var(--p);color:#fff!important}\r\nbody.dark .hero-cta:hover{background:var(--pm);border-color:var(--pm);color:#fff!important}\r\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n   RESPONSIVE \u2014 TABLET 900px\r\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\n@media(max-width:900px){\r\n  .hero-inner{padding:38px 16px 34px}\r\n  .hero h1{font-size:2.2rem}\r\n  .fam-tabs{grid-template-columns:repeat(3,minmax(0,1fr))}\r\n  .rb-met{grid-template-columns:repeat(2,1fr)}\r\n}\r\n\r\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n   RESPONSIVE \u2014 M\u00d3VIL 600px\r\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\n@media(max-width:600px){\r\n\r\n  \/* HERO *\/\r\n  .hero-box{min-height:auto}\r\n  .hero-inner{padding:26px 14px 24px}\r\n  .hero h1{font-size:1.65rem;letter-spacing:-.01em;line-height:1.1}\r\n  .hero p{font-size:.85rem;max-width:none;line-height:1.65}\r\n  .hero-cta{width:100%;justify-content:center;padding:13px 16px}\r\n  .hero-kicker{font-size:.6rem;padding:4px 9px}\r\n\r\n  \/* MAKER BAR *\/\r\n  .maker-bar-inner{padding:8px 14px;flex-wrap:wrap;gap:7px}\r\n  .maker-logo{height:14px!important;max-height:14px!important}\r\n  .maker-sep{height:13px}\r\n\r\n  \/* CALCULADORA LAYOUT *\/\r\n  .page{padding:10px 8px 40px}\r\n  .card{padding:11px 10px}\r\n  .card-h{padding:10px 12px}\r\n  .card-body{padding:10px 10px}\r\n\r\n  \/* TABS familia \u2014 2 columnas *\/\r\n  .fam-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}\r\n  .tab{padding:7px 5px;font-size:.68rem}\r\n\r\n  \/* PRODUCT LIST \u2014 1 columna *\/\r\n  .prod-grid{grid-template-columns:1fr}\r\n  .prod{padding:8px 10px}\r\n\r\n  \/* CORREA PICKER \u2014 label arriba, no al lado *\/\r\n  .cp-row{grid-template-columns:1fr;gap:4px}\r\n  .cp-lbl{padding-top:0;margin-bottom:2px}\r\n\r\n  \/* PILLS \u2014 m\u00e1s peque\u00f1as, sin min-width fijo *\/\r\n  .pills{gap:6px 8px}\r\n  .pill{min-width:64px;padding:7px 10px;font-size:.72rem}\r\n  .pill[data-badge]{margin-top:16px}\r\n  .pill-cap{font-size:.58rem;padding:1px 4px}\r\n\r\n  \/* SEPARACI\u00d3N P\u00d3RTICOS \u2014 3 col en lugar de 6 *\/\r\n  .sg{grid-template-columns:repeat(3,1fr);gap:4px}\r\n  .sg4{grid-template-columns:repeat(2,1fr);gap:4px}\r\n  .sb{padding:6px 3px;font-size:.67rem}\r\n\r\n  \/* VANOS *\/\r\n  .vps{gap:4px}\r\n  .vp{padding:7px 4px}\r\n  .vp-lbl{font-size:.6rem}\r\n\r\n  \/* FORMULARIO inputs *\/\r\n  .fr{grid-template-columns:1fr}\r\n  input,select{padding:8px 10px;font-size:.85rem}\r\n\r\n  \/* RESULTADO BANNER *\/\r\n  .rb{padding:16px 14px}\r\n  .rb-nom{font-size:1.15rem}\r\n  .rb-met{grid-template-columns:1fr 1fr}\r\n  .met-v{font-size:1.15rem}\r\n  .met-l{font-size:.55rem}\r\n\r\n  \/* TABLA *\/\r\n  table{font-size:.7rem}\r\n  thead th,tbody td{padding:5px 6px}\r\n  .tw{-webkit-overflow-scrolling:touch}\r\n\r\n  \/* CTA *\/\r\n  .cta{flex-direction:column;text-align:center;padding:14px 12px;gap:10px}\r\n  .cta-btn{width:100%;justify-content:center}\r\n  .cta-ico{display:none}\r\n\r\n  \/* SEO SECTIONS \u2014 layout limpio en m\u00f3vil *\/\r\n  .seo-section{padding:28px 0}\r\n  .seo-inner{padding:0 16px}\r\n  .seo-h2{font-size:1.12rem;line-height:1.2;margin-bottom:8px}\r\n  .seo-lead{font-size:.85rem;line-height:1.7;margin-bottom:14px;max-width:none}\r\n  .seo-body{font-size:.83rem;line-height:1.75;margin-bottom:10px}\r\n  \/* 2 columnas \u2192 1 columna siempre en m\u00f3vil *\/\r\n  .seo-2col{display:flex;flex-direction:column;gap:0}\r\n  \/* F\u00f3rmula compacta *\/\r\n  .seo-formula{padding:12px 13px;margin:12px 0;border-radius:6px}\r\n  .seo-formula code{font-size:.85rem;margin-bottom:8px;word-break:break-all}\r\n  .seo-formula ul li{font-size:.76rem;padding:3px 0}\r\n  \/* Nota *\/\r\n  .seo-note{padding:10px 12px;font-size:.75rem}\r\n  \/* Tablas SEO \u2014 scroll horizontal sin min-width forzado *\/\r\n  .seo-table-wrap{margin:12px 0 0;border-radius:6px}\r\n  .seo-table{min-width:0;width:100%;font-size:.75rem}\r\n  .seo-table thead th{padding:7px 9px;font-size:.6rem;white-space:normal}\r\n  .seo-table tbody td{padding:6px 9px;font-size:.75rem}\r\n  .seo-table tbody td.c{white-space:nowrap}\r\n  \/* FAQ *\/\r\n  .faq-q{font-size:.82rem;padding:12px 0;gap:8px;line-height:1.35}\r\n  .faq-icon{width:20px;height:20px;min-width:20px;font-size:11px}\r\n  .faq-a{font-size:.81rem;line-height:1.75}\r\n  .faq-item.open .faq-a{max-height:600px}\r\n  \/* CTA aislamiento *\/\r\n  .seo-cta-link{padding:12px 13px;gap:10px}\r\n  .seo-cta-link .scl-title{font-size:.8rem}\r\n  .seo-cta-link .scl-sub{font-size:.7rem}\r\n\r\n  \/* FOOTER *\/\r\n  .footer-inner{flex-direction:column;align-items:flex-start;gap:8px;padding:0 14px}\r\n  .footer-links{gap:4px 12px}\r\n  .footer-copy{font-size:.68rem}\r\n}\r\n\r\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n   RESPONSIVE \u2014 MUY PEQUE\u00d1O 380px\r\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\n@media(max-width:380px){\r\n  .hero h1{font-size:1.4rem}\r\n  .hero-cta{font-size:.68rem}\r\n  .fam-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}\r\n  .tab{font-size:.63rem;padding:6px 4px}\r\n  .pill{min-width:54px;padding:6px 8px;font-size:.68rem}\r\n  .sg{grid-template-columns:repeat(3,1fr)}\r\n  .sg4{grid-template-columns:repeat(2,1fr)}\r\n  .rb-met{grid-template-columns:1fr}\r\n  .met-v{font-size:1.3rem}\r\n  .seo-h2{font-size:1rem;line-height:1.2}\r\n  .seo-body{font-size:.8rem}\r\n  .seo-formula code{font-size:.8rem}\r\n  .seo-formula ul li{font-size:.73rem}\r\n  .seo-table thead th{font-size:.57rem;padding:6px 7px}\r\n  .seo-table tbody td{font-size:.72rem;padding:5px 7px}\r\n  .card{padding:9px 8px}\r\n  .faq-q{font-size:.78rem}\r\n  .faq-a{font-size:.78rem}\r\n}\r\n\r\n\/* Intro block encima calculadora \u2014 mobile *\/\r\n@media(max-width:600px){\r\n  .intro-block{padding:24px 16px 20px!important;text-align:left!important}\r\n  .intro-block h2{font-size:1.05rem!important;line-height:1.2!important;margin-bottom:8px!important}\r\n  .intro-block p{font-size:.83rem!important;max-width:none!important;line-height:1.65!important}\r\n}\r\n\r\n\/* FOOTER *\/\r\n.site-footer{background:#111;border-top:3px solid var(--p);padding:22px 0 18px}\r\n.footer-inner{max-width:1100px;margin:0 auto;padding:0 1.5rem;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px}\r\n.footer-copy{font-size:.72rem;color:rgba(255,255,255,.45);font-weight:600}\r\n.footer-links{display:flex;flex-wrap:wrap;gap:5px 18px;list-style:none}\r\n.footer-links a{font-size:.7rem;color:rgba(255,255,255,.38);text-decoration:none;font-weight:600;letter-spacing:.03em;transition:var(--tr)}\r\n.footer-links a:hover{color:var(--pa)}\r\n\/* footer responsive incluido en bloque unificado *\/\r\n\/* \u2500\u2500 SEO SECTIONS \u2500\u2500 *\/\r\n.seo-section{padding:52px 0;background:var(--w);border-bottom:1px solid var(--gl)}\r\n.seo-section.alt{background:#f9f7f7}\r\n\/* Ancho igual que hero-inner y calc: max-width:1100px con padding lateral *\/\r\n.seo-inner{max-width:1100px;margin:0 auto;padding:0 1.5rem}\r\n.seo-tag{display:inline-block;background:rgba(74,34,40,.08);color:var(--pd);font-size:.62rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:4px 10px;border-radius:3px;margin-bottom:10px;border:.5px solid rgba(74,34,40,.15)}\r\n.seo-h2{font-size:clamp(1.2rem,2.5vw,1.65rem);font-weight:800;color:var(--pd);letter-spacing:-.02em;margin:0 0 10px;line-height:1.15}\r\n.seo-h2 em{color:var(--p);font-style:normal}\r\n.seo-lead{font-size:.93rem;color:var(--g2);line-height:1.75;margin-bottom:22px;max-width:700px}\r\n.seo-body{font-size:.88rem;color:var(--g2);line-height:1.8;margin-bottom:12px}\r\n.seo-body strong{color:var(--t)}\r\n.seo-body a{color:var(--p);text-decoration:none;font-weight:600;border-bottom:1px solid rgba(74,34,40,.2)}\r\n.seo-lead a,.seo-section a:not(.seo-cta-link):not([style*=\"color:inherit\"]){color:var(--p)!important;text-decoration:none;font-weight:600}\r\n.seo-section a:not(.seo-cta-link):not([style*=\"color:inherit\"]):hover{border-bottom:1px solid var(--p)}\r\n.seo-body a:hover{border-bottom-color:var(--p)}\r\n\/* F\u00f3rmula en claro \u2014 fondo burdeos muy suave, no oscuro *\/\r\n.seo-formula{background:var(--pl);border-radius:8px;padding:18px 20px;margin:16px 0;border-left:3px solid var(--p)}\r\n.seo-formula code{display:block;font-size:1rem;font-weight:700;color:var(--pd);font-family:var(--m);margin-bottom:12px;letter-spacing:.02em}\r\n.seo-formula ul{list-style:none;padding:0;margin:0}\r\n.seo-formula ul li{font-size:.8rem;color:var(--g2);padding:4px 0;display:flex;gap:8px;border-bottom:1px solid rgba(74,34,40,.08)}\r\n.seo-formula ul li:last-child{border-bottom:none}\r\n.seo-formula ul li::before{content:'\u2014';color:var(--p);flex-shrink:0;opacity:.6}\r\n.seo-formula ul li strong{color:var(--pd)}\r\n.seo-2col{display:grid;grid-template-columns:1fr 1fr;gap:2.5rem;align-items:start}\r\n.seo-note{background:var(--pl);border:1px solid var(--pb);border-radius:6px;padding:12px 14px;font-size:.78rem;color:var(--pd);line-height:1.55;margin-top:14px}\r\n.seo-note a{color:var(--p);font-weight:600}\r\n\/* Tablas SEO en claro *\/\r\n.seo-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:16px 0 0;border-radius:8px;border:1px solid var(--gl)}\r\n.seo-table{width:100%;border-collapse:collapse;font-size:.83rem}\r\n.seo-table thead tr{background:var(--pl)}\r\n.seo-table thead th{padding:9px 12px;text-align:left;font-size:.65rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--pd);white-space:nowrap}\r\n.seo-table thead th.c{text-align:center}\r\n.seo-table tbody tr{border-top:1px solid var(--gl)}\r\n.seo-table tbody tr:nth-child(even){background:var(--g3)}\r\n.seo-table tbody tr:nth-child(odd){background:#fff}\r\n.seo-table tbody td{padding:8px 12px;color:var(--ts);font-size:.83rem}\r\n.seo-table tbody td.l{text-align:left;font-weight:600;color:var(--t)}\r\n.seo-table tbody td.c{text-align:center}\r\n.seo-table tbody td.ok{color:#16a34a;font-weight:700;text-align:center}\r\n\/* FAQ *\/\r\n.faq-item{border-bottom:1px solid var(--gl)}\r\n.faq-q{width:100%;text-align:left;padding:16px 0;background:none;border:none;font-size:.9rem;font-weight:700;color:var(--t);cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:12px;font-family:var(--f);transition:color var(--tr);line-height:1.4}\r\n.faq-q:hover{color:var(--p)}\r\n.faq-icon{width:22px;height:22px;min-width:22px;background:var(--pl);border:1.5px solid var(--pb);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:var(--p);transition:transform .2s,background .2s}\r\n.faq-item.open .faq-icon{transform:rotate(45deg);background:var(--p);color:#fff;border-color:var(--p)}\r\n.faq-a{max-height:0;overflow:hidden;transition:max-height .4s ease,padding .3s ease;font-size:.86rem;color:var(--g2);line-height:1.8}\r\n.faq-item.open .faq-a{max-height:500px;padding-bottom:18px}\r\n.faq-a a{color:var(--p);font-weight:600;text-decoration:none;border-bottom:1px solid rgba(74,34,40,.2)}\r\n.faq-a a:hover{border-bottom-color:var(--p)}\r\n\/* CTA calculadora aislamiento *\/\r\n.seo-cta-link{display:flex;align-items:center;gap:12px;background:var(--pl);border:1.5px solid var(--pb);border-radius:8px;padding:14px 16px;text-decoration:none;margin-top:14px;transition:background .15s,border-color .15s}\r\n.seo-cta-link:hover{background:#f0dde0;border-color:var(--p)}\r\n.seo-cta-link .scl-ico{font-size:1.4rem;flex-shrink:0;line-height:1}\r\n.seo-cta-link .scl-title{display:block;font-size:.85rem;font-weight:700;color:var(--pd);margin-bottom:2px}\r\n.seo-cta-link .scl-sub{display:block;font-size:.74rem;color:var(--ts)}\r\n\/* SEO responsive ya incluido en bloque @media unificado de arriba *\/\r\n\r\n\/* \u2550\u2550 MODAL PDF \u2014 overlay completo \u2550\u2550 *\/\r\n.modal-inner{background:#fff;border-radius:14px;width:100%;max-width:580px;position:relative;max-height:calc(100dvh - 2rem);max-height:calc(100vh - 2rem);overflow-y:auto;-webkit-overflow-scrolling:touch;box-shadow:0 32px 100px rgba(0,0,0,.4);margin:auto}\r\n.modal-hdr{background:var(--pd);border-radius:14px 14px 0 0;padding:20px 24px 16px;position:sticky;top:0;z-index:10}\r\n.modal-hdr::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--p),var(--pm));border-radius:14px 14px 0 0}\r\n.modal-hdr h3{font-size:1.05rem;font-weight:800;color:#fff;margin:0 0 4px;padding-right:40px;line-height:1.25}\r\n.modal-hdr p{font-size:.75rem;color:rgba(255,255,255,.5);margin:0;line-height:1.5}\r\n.modal-close-btn{position:absolute;top:14px;right:16px;font-size:14px;cursor:pointer;color:rgba(255,255,255,.7);background:rgba(255,255,255,.12);border:none;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:var(--tr);line-height:1}\r\n.modal-close-btn:hover{background:rgba(255,255,255,.22);color:#fff}\r\n.modal-body{padding:20px 22px 18px}\r\n.modal-err-alert{background:#fee2e2;border:1px solid #fca5a5;color:#991b1b;border-radius:6px;padding:9px 12px;font-size:.78rem;margin-bottom:12px;display:none}\r\n.modal-err-alert.show{display:block}\r\n.mfield{display:flex;flex-direction:column;gap:4px;margin-bottom:13px}\r\n.mfield label{font-size:.63rem;font-weight:700;color:var(--g2);text-transform:uppercase;letter-spacing:.07em;display:flex;align-items:center;gap:6px}\r\n.mfield label .req{color:var(--p);font-size:.85rem;line-height:1;font-weight:900}\r\n.mfield label .opt{font-size:.6rem;color:var(--ts);font-weight:400;text-transform:none;letter-spacing:0;background:var(--g3);padding:1px 6px;border-radius:3px;border:1px solid var(--gl)}\r\n.mfield input,.mfield select{height:44px;padding:0 13px;font-size:16px;font-family:var(--f);font-weight:500;border:1.5px solid var(--gl);border-radius:6px;background:var(--g3);color:var(--t);transition:border-color var(--tr),box-shadow var(--tr);width:100%;-webkit-appearance:none;appearance:none;box-sizing:border-box}\r\n.mfield select{background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23888' stroke-width='1.5' fill='none' stroke-linecap='round'\/%3E%3C\/svg%3E\");background-repeat:no-repeat;background-position:right 13px center;padding-right:38px}\r\n.mfield input:focus,.mfield select:focus{outline:none;border-color:var(--p);box-shadow:0 0 0 3px rgba(74,34,40,.1);background:#fff}\r\n.mfield input.m-err,.mfield select.m-err{border-color:var(--err)!important;box-shadow:0 0 0 3px rgba(220,38,38,.1)!important}\r\n.mfield .err-txt{font-size:.68rem;color:var(--err);margin-top:2px;display:none}\r\n.mfield .err-txt.show{display:block}\r\n.mrow2{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:start}\r\n.mprov{display:none;flex-direction:column;gap:4px;margin-bottom:13px}\r\n.mprov.show{display:flex}\r\n.gdpr-wrap{display:flex;align-items:flex-start;gap:10px;margin:10px 0 4px}\r\n.gdpr-wrap input[type=checkbox]{-webkit-appearance:checkbox!important;appearance:checkbox!important;width:18px;height:18px;min-width:18px;flex-shrink:0;margin-top:2px;cursor:pointer;accent-color:var(--p);border:none;padding:0;background:none;box-shadow:none}\r\n.gdpr-wrap label{font-size:.8rem;text-transform:none;letter-spacing:0;color:var(--g2);font-weight:400;cursor:pointer;line-height:1.5;flex:1;display:block}\r\n.gdpr-wrap label a{color:var(--p);text-decoration:underline}\r\n.gdpr-err{font-size:.7rem;color:var(--err);display:none;margin-bottom:8px}\r\n.gdpr-err.show{display:block}\r\n.modal-form-note{font-size:.72rem;color:#92400e;line-height:1.55;padding:9px 11px;background:#fef9e7;border-radius:5px;border:1px solid #fde68a;margin-bottom:13px}\r\n.modal-submit-btn{width:100%;height:48px;background:var(--pd);color:#fff;font-family:var(--f);font-size:.82rem;font-weight:700;border:none;border-radius:6px;cursor:pointer;letter-spacing:.06em;text-transform:uppercase;transition:background var(--tr),transform .12s;display:flex;align-items:center;justify-content:center;gap:8px;box-shadow:0 4px 16px rgba(46,19,24,.22)}\r\n.modal-submit-btn:hover{background:var(--p)}\r\n.modal-submit-btn:active{transform:scale(.98)}\r\n.modal-submit-btn:disabled{background:#ccc;color:#999;cursor:not-allowed;box-shadow:none}\r\n.modal-submit-btn .spinner{width:15px;height:15px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;display:none;flex-shrink:0}\r\n.modal-submit-btn.loading .spinner{display:block}\r\n.modal-submit-btn.loading .btn-txt{opacity:.6}\r\n@keyframes spin{to{transform:rotate(360deg)}}\r\n.modal-legal{font-size:.65rem;color:var(--ts);margin-top:9px;line-height:1.55;text-align:center}\r\n.modal-legal a{color:var(--p);text-decoration:none}\r\n.modal-ok-wrap{padding:32px 24px;text-align:center}\r\n.modal-ok-wrap .ok-ico{font-size:2.8rem;display:block;margin-bottom:12px}\r\n.modal-ok-wrap h4{font-size:1.1rem;font-weight:800;color:var(--ok);margin-bottom:6px}\r\n.modal-ok-wrap p{font-size:.84rem;color:var(--ts);line-height:1.6}\r\n.modal-ok-detail{background:var(--g3);border:1px solid var(--gl);border-radius:7px;padding:11px 13px;margin:12px 0;font-size:.78rem;color:var(--g2);text-align:left}\r\n.modal-ok-close{display:inline-flex;align-items:center;gap:6px;background:var(--pd);color:#fff;font-family:var(--f);font-size:.8rem;font-weight:700;padding:10px 22px;border-radius:6px;border:none;cursor:pointer;margin-top:12px;letter-spacing:.04em;text-transform:uppercase;transition:background var(--tr)}\r\n.modal-ok-close:hover{background:var(--p)}\r\n@media(max-width:600px){\r\n  .modal-bg{align-items:flex-end;padding:0}\r\n  .modal-inner{border-radius:18px 18px 0 0;max-width:100%;max-height:94dvh;max-height:94vh}\r\n  .modal-hdr{border-radius:18px 18px 0 0;padding:16px 18px 14px}\r\n  .modal-hdr::before{border-radius:18px 18px 0 0}\r\n  .modal-body{padding:16px 16px 18px}\r\n  .mrow2{grid-template-columns:1fr;gap:0}\r\n  .mfield input,.mfield select{height:50px;font-size:16px}\r\n  .modal-submit-btn{height:52px;font-size:.85rem}\r\n  .modal-ok-wrap{padding:24px 16px}\r\n}\r\n<\/style>\r\n<\/head>\r\n<body>\r\n\r\n<!-- HEADER -->\r\n<div class=\"hdr\">\r\n  <div class=\"hdr-l\">\r\n    <div class=\"hdr-icon\">\r\n      <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"white\" stroke-width=\"2\"><rect x=\"4\" y=\"2\" width=\"16\" height=\"20\" rx=\"2\"\/><line x1=\"8\" y1=\"6\" x2=\"16\" y2=\"6\"\/><line x1=\"8\" y1=\"10\" x2=\"11\" y2=\"10\"\/><line x1=\"14\" y1=\"10\" x2=\"16\" y2=\"10\"\/><line x1=\"8\" y1=\"14\" x2=\"11\" y2=\"14\"\/><line x1=\"14\" y1=\"14\" x2=\"16\" y2=\"14\"\/><\/svg>\r\n    <\/div>\r\n    <div>\r\n      <span class=\"hdr-t1\">Calculadora de Sobrecargas Admisibles<\/span>\r\n      <span class=\"hdr-t2\"><\/span>\r\n    <\/div>\r\n  <\/div>\r\n  <div class=\"hdr-r\">\r\n    <button class=\"btn-dark\" onclick=\"toggleDark()\" title=\"Modo oscuro\">\r\n      <svg id=\"iDk\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\"\/><\/svg>\r\n      <svg id=\"iLt\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" style=\"display:none\"><circle cx=\"12\" cy=\"12\" r=\"5\"\/><line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\"\/><line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\"\/><line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\"\/><line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\"\/><line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\"\/><line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\"\/><\/svg>\r\n    <\/button>\r\n  <\/div>\r\n<\/div>\r\n\r\n<div class=\"hero\">\r\n  <div class=\"hero-box\">\r\n    <div class=\"hero-inner\">\r\n      <div class=\"hero-kicker\">Free technical tool<\/div>\r\n      <h1>Admissible <em style=\"color:var(--p);font-style:normal\">load calculator<\/em> for profiles &amp; sandwich panels<\/h1>\r\n      <p>Calculate the admissible load for C\/Z purlins, trapezoidal sheets and sandwich panels, or enter the design load and get the recommended profile. Size your roof or facade before preparing the quote.<\/p>\r\n      <a class=\"hero-cta\" href=\"#calc-start\" onclick=\"scrollToCalc(event)\">Use the calculator<\/a>\r\n    <\/div>\r\n  <\/div>\r\n  <div class=\"maker-bar\">\r\n    <div class=\"maker-bar-inner\">\r\n      <div class=\"maker-brand\">\r\n        <div class=\"maker-copy\">Manufactured by:<\/div>\r\n        <span class=\"maker-sep\" aria-hidden=\"true\"><\/span>\r\n        <img class=\"maker-logo\" src=\"https:\/\/magon.es\/wp-content\/uploads\/2023\/01\/magon-empresas-calado-blanco-main.webp\" alt=\"Magon Companys\" loading=\"lazy\" decoding=\"async\" style=\"height:16px!important;max-height:16px!important;width:auto!important\">\r\n      <\/div>\r\n      <div class=\"maker-actions\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<!-- INTRO -->\r\n<div style=\"width:100%;background:#f0eef0;border-bottom:1px solid var(--gl)\">\r\n  <div class=\"intro-block\" style=\"max-width:1100px;margin:0 auto;padding:40px 1.5rem 36px;text-align:center\">\r\n    <div class=\"seo-tag\" style=\"margin-bottom:12px\">Free technical tool<\/div>\r\n    <h2 style=\"font-size:clamp(1.15rem,2.4vw,1.6rem);font-weight:800;color:var(--pd);letter-spacing:-.02em;margin:0 0 12px;line-height:1.2\">Calculate the <em style=\"color:var(--p);font-style:normal\">admissible load<\/em> or check what your profile can carry<\/h2>\r\n    <p style=\"font-size:.92rem;color:var(--g2);line-height:1.75;max-width:620px;margin:0 auto\">Do you know the load and need to know which profile to use? Or do you have the profile and want to know how much it can carry? This tool answers both questions instantly, using technical data from <a href=\"https:\/\/www.magon.es\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color:var(--p);font-weight:600;text-decoration:none;border-bottom:1px solid rgba(74,34,40,.2)\">Magon Steel<\/a> and <a href=\"https:\/\/magon.es\/masterpanel-fabricantes-panel-sandwich\/\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color:var(--p);font-weight:600;text-decoration:none;border-bottom:1px solid rgba(74,34,40,.2)\">Master Panel<\/a>. You can also find out which profile you need if you already know the design admissible load.<\/p>\r\n  <\/div>\r\n<\/div>\r\n\r\n<div style=\"width:100%;background:#f0eef0\"><div class=\"page\" id=\"calc-start\" style=\"max-width:980px;margin:0 auto;padding:20px 1.5rem 60px\">\r\n\r\n  <!-- \u2460 CATEGOR\u00cdA -->\r\n  <div class=\"card\">\r\n    <div class=\"card-h\">\r\n      <div class=\"card-ico\">\r\n        <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><path d=\"M2 20h20M4 20V10l8-8 8 8v10\"\/><\/svg>\r\n      <\/div>\r\n      <span class=\"card-step\">1<\/span><div class=\"card-title\">Product type<\/div>\r\n    <\/div>\r\n    <div class=\"card-body\">\r\n      <div class=\"tabs\">\r\n        <button class=\"tab active\" onclick=\"switchCat('perf')\" id=\"t-perf\">Correas C \/ Z \u00b7 Corrugated<\/button>\r\n        <button class=\"tab\" onclick=\"switchCat('sw')\" id=\"t-sw\">Sandwich panel<\/button>\r\n      <\/div>\r\n      <p style=\"font-size:.73rem;color:var(--ts);line-height:1.45\" id=\"catDesc\">Selecciona la familia de perfil que quieres calcular.<\/p>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n       PERFILES \u2014 bloque completo\r\n  \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\r\n  <div id=\"s-perf\">\r\n\r\n    <!-- \u2461 FAMILIA -->\r\n    <div class=\"card\">\r\n      <div class=\"card-h\">\r\n        <div class=\"card-ico\">\r\n          <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"\/><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"\/><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"\/><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"\/><\/svg>\r\n        <\/div>\r\n        <span class=\"card-step\">2<\/span><div class=\"card-title\">Family &amp; profile<\/div>\r\n      <\/div>\r\n      <div class=\"card-body\">\r\n        <div class=\"tabs\">\r\n          <button class=\"tab active\" onclick=\"switchFam('minionda')\" id=\"t-mo\">Corrugated MG<\/button>\r\n          <button class=\"tab\" onclick=\"switchFam('correaC')\" id=\"t-cc\">Purlin C<\/button>\r\n          <button class=\"tab\" onclick=\"switchFam('correaZ')\" id=\"t-cz\">Purlin Z<\/button>\r\n        <\/div>\r\n\r\n        <!-- MINIONDA -->\r\n        <div id=\"f-mo\">\r\n          <div id=\"alPerfil\" class=\"alert ae\">Selecciona un perfil.<\/div>\r\n          <div class=\"prod-grid\" id=\"prodList\"><\/div>\r\n        <\/div>\r\n\r\n        <!-- CORREA C -->\r\n        <div id=\"f-cc\" style=\"display:none\">\r\n          <p style=\"font-size:.72rem;color:var(--ts);margin-bottom:10px;line-height:1.45\">\r\n            Elige en cualquier orden. Las opciones sin datos para tu combinaci\u00f3n aparecen en gris.\r\n          <\/p>\r\n          <div class=\"cp\">\r\n            <div class=\"cp-row\"><span class=\"cp-lbl\">Altura<\/span><div class=\"pills\" id=\"phAC\"><\/div><\/div>\r\n            <div class=\"cp-row\"><span class=\"cp-lbl\">Espesor<\/span><div class=\"pills\" id=\"phEC\"><\/div><\/div>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <!-- CORREA Z -->\r\n        <div id=\"f-cz\" style=\"display:none\">\r\n          <p style=\"font-size:.72rem;color:var(--ts);margin-bottom:10px;line-height:1.45\">\r\n            Elige en cualquier orden. Las opciones sin datos para tu combinaci\u00f3n aparecen en gris.\r\n          <\/p>\r\n          <div class=\"cp\">\r\n            <div class=\"cp-row\"><span class=\"cp-lbl\">Altura<\/span><div class=\"pills\" id=\"phAZ\"><\/div><\/div>\r\n            <div class=\"cp-row\"><span class=\"cp-lbl\">Espesor<\/span><div class=\"pills\" id=\"phEZ\"><\/div><\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- \u2462 PAR\u00c1METROS PERFILES -->\r\n    <div class=\"card\">\r\n      <div class=\"card-h\">\r\n        <div class=\"card-ico\">\r\n          <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><line x1=\"4\" y1=\"6\" x2=\"20\" y2=\"6\"\/><line x1=\"8\" y1=\"12\" x2=\"20\" y2=\"12\"\/><line x1=\"12\" y1=\"18\" x2=\"20\" y2=\"18\"\/><\/svg>\r\n        <\/div>\r\n        <span class=\"card-step\">3<\/span><div class=\"card-title\">Parameters<\/div>\r\n      <\/div>\r\n      <div class=\"card-body\">\r\n        <div id=\"alParams\" class=\"alert ae\">Revisa los campos.<\/div>\r\n\r\n        <!-- Barra de progreso -->\r\n        <div class=\"prog-wrap\"><div class=\"prog-fill\" id=\"progFill\"><\/div><\/div>\r\n\r\n        <!-- VANOS \u2014 siempre visible -->\r\n        <div class=\"fg\">\r\n          <label>No. of spans <span class=\"tip\" data-tip=\"1 span = apoyo simple. 2 = 1 apoyo intermedio. 3+ = multiples apoyos.\">?<\/span><\/label>\r\n          <div class=\"vps\">\r\n            <div class=\"vp active\" onclick=\"setV('1')\" id=\"vp1\">\r\n              <div class=\"vsch\"><div class=\"vsup\"><\/div><div class=\"vseg\"><\/div><div class=\"vsup\"><\/div><\/div>\r\n              <span class=\"vp-lbl\">1 span<\/span>\r\n            <\/div>\r\n            <div class=\"vp\" onclick=\"setV('2')\" id=\"vp2\">\r\n              <div class=\"vsch\"><div class=\"vsup\"><\/div><div class=\"vseg\"><\/div><div class=\"vsup\"><\/div><div class=\"vseg\"><\/div><div class=\"vsup\"><\/div><\/div>\r\n              <span class=\"vp-lbl\">2 spans<\/span>\r\n            <\/div>\r\n            <div class=\"vp\" onclick=\"setV('3')\" id=\"vp3\">\r\n              <div class=\"vsch\"><div class=\"vsup\"><\/div><div class=\"vseg\"><\/div><div class=\"vsup\"><\/div><div class=\"vseg\"><\/div><div class=\"vsup\"><\/div><div class=\"vseg\"><\/div><div class=\"vsup\"><\/div><\/div>\r\n              <span class=\"vp-lbl\">3+ spans<\/span>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <!-- MINIONDA params -->\r\n        <div id=\"pm-mo\">\r\n          <div class=\"fg\" style=\"margin-bottom:12px\">\r\n            <label>Espesor de chapa <span class=\"tip\" data-tip=\"Selecciona el espesor disponible para la chapa elegida.\">?<\/span><\/label>\r\n            <div class=\"pills\" id=\"phMO\"><\/div>\r\n          <\/div>\r\n          <div class=\"fr\">\r\n            <div class=\"fg\">\r\n              <label>Clear span (L) <span class=\"tip\" data-tip=\"Distance between supports in metres.\">?<\/span><\/label>\r\n              <div class=\"iw\"><input type=\"number\" id=\"luz\" step=\"0.25\" min=\"0.5\" max=\"2\" placeholder=\"Ej: 1.50\" oninput=\"evaluarCorrugated();actualizarProg()\"><span class=\"iu\">m<\/span><\/div>\r\n            <\/div>\r\n            <div class=\"fg\" id=\"posGrp\" style=\"display:none\">\r\n              <label>Position<\/label>\r\n              <select id=\"posicion\" onchange=\"evaluarCorrugated()\"><option value=\"A\">Pos. A \u2013 ribs up<\/option><option value=\"B\">Pos. B \u2013 ribs down<\/option><\/select>\r\n            <\/div>\r\n          <\/div>\r\n          <div id=\"hintMO\" class=\"hint\" style=\"display:none\">\r\n            <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"\/><line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"\/><\/svg>\r\n            <span id=\"hintMOt\"><\/span>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <!-- CORREAS params \u2014 SIEMPRE VISIBLES, filtrado reactivo -->\r\n        <div id=\"pm-co\" style=\"display:none\">\r\n          <div class=\"fg\">\r\n            <label>Portal spacing <span class=\"tip\" data-tip=\"Distance in metres between portals.\">?<\/span><\/label>\r\n            <div class=\"sg\" id=\"sgP\">\r\n              <div class=\"sb\" onclick=\"setSep(4)\" id=\"sp4\">4 m<\/div>\r\n              <div class=\"sb\" onclick=\"setSep(5)\" id=\"sp5\">5 m<\/div>\r\n              <div class=\"sb\" onclick=\"setSep(6)\" id=\"sp6\">6 m<\/div>\r\n              <div class=\"sb\" onclick=\"setSep(7)\" id=\"sp7\">7 m<\/div>\r\n              <div class=\"sb\" onclick=\"setSep(8)\" id=\"sp8\">8 m<\/div>\r\n              <div class=\"sb\" onclick=\"setSep(9)\" id=\"sp9\">9 m<\/div>\r\n            <\/div>\r\n          <\/div>\r\n          <div class=\"fg\">\r\n            <label>Purlin spacing <span class=\"tip\" data-tip=\"Distance between purlins along the portal.\">?<\/span><\/label>\r\n            <div class=\"sg4\" id=\"sgC\">\r\n              <div class=\"sb\" onclick=\"setSC(1.25)\" id=\"sc125\">1.25 m<\/div>\r\n              <div class=\"sb\" onclick=\"setSC(1.50)\" id=\"sc150\">1.50 m<\/div>\r\n              <div class=\"sb\" onclick=\"setSC(1.75)\" id=\"sc175\">1.75 m<\/div>\r\n              <div class=\"sb\" onclick=\"setSC(2.00)\" id=\"sc200\">2.00 m<\/div>\r\n            <\/div>\r\n          <\/div>\r\n          <div id=\"hintC\" class=\"hint\" style=\"display:none\">\r\n            <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"\/><line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"\/><\/svg>\r\n            <span id=\"hintCt\"><\/span>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <hr class=\"sep\">\r\n\r\n        <div class=\"fg\" style=\"margin-bottom:12px\">\r\n          <label>Reference load (optional) <span class=\"tip\" data-tip=\"Carga total estimada: nieve + viento + uso en kg\/m&sup2;. Permite saber si el perfil es suficiente.\">?<\/span><\/label>\r\n          <div class=\"iw\"><input type=\"number\" id=\"sobrecarga\" step=\"5\" min=\"0\" max=\"2000\" placeholder=\"Ej: 80\" oninput=\"onSb()\"><span class=\"iu\">kg\/m\u00b2<\/span><\/div>\r\n        <\/div>\r\n\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n       PANEL S\u00c1NDWICH\r\n  \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\r\n  <div id=\"s-sw\" style=\"display:none\">\r\n    <div class=\"card\">\r\n      <div class=\"card-h\">\r\n        <div class=\"card-ico\"><svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\"\/><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\"\/><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\"\/><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\"\/><\/svg><\/div>\r\n        <span class=\"card-step\">2<\/span><div class=\"card-title\">Panel type<\/div>\r\n      <\/div>\r\n      <div class=\"card-body\">\r\n        <div class=\"tabs\">\r\n          <button class=\"tab active\" onclick=\"switchPT('masterC')\" id=\"t-mc\">Master-C Roof<\/button>\r\n          <button class=\"tab\" onclick=\"switchPT('masterF')\" id=\"t-mf\">Master-F Facade<\/button>\r\n          <button class=\"tab\" onclick=\"switchPT('masterModul')\" id=\"t-mm\">Master-Modul<\/button>\r\n          <button class=\"tab\" onclick=\"switchPT('masterFrigo')\" id=\"t-mfr\">Master-Frigo<\/button>\r\n        <\/div>\r\n        <div id=\"f-mc\"><p style=\"font-size:.73rem;color:var(--ts);margin-bottom:9px\">Sandwich panel cubierta &middot; Nucleo PUR\/PIR &middot; Ancho util 1.000 mm<\/p><div class=\"fg\"><label>Panel thickness<\/label><div class=\"pills\" id=\"pesMC\"><\/div><\/div><\/div>\r\n        <div id=\"f-mf\" style=\"display:none\"><p style=\"font-size:.73rem;color:var(--ts);margin-bottom:9px\">Sandwich panel fachada &middot; Nucleo PUR\/PIR &middot; Ancho util 1.000 mm<\/p><div class=\"fg\"><label>Panel thickness<\/label><div class=\"pills\" id=\"pesMF\"><\/div><\/div><\/div>\r\n        <div id=\"f-mm\" style=\"display:none\"><p style=\"font-size:.73rem;color:var(--ts);margin-bottom:9px\">Sandwich panel modular &middot; Nucleo PUR\/PIR &middot; Ancho util 1.000 mm<\/p><div class=\"fg\"><label>Panel thickness<\/label><div class=\"pills\" id=\"pesMM\"><\/div><\/div><\/div>\r\n        <div id=\"f-mfr\" style=\"display:none\"><p style=\"font-size:.73rem;color:var(--ts);margin-bottom:9px\">Sandwich panel frigorifico &middot; Nucleo PUR\/PIR &middot; Ancho util 1.000 mm<\/p><div class=\"fg\"><label>Panel thickness<\/label><div class=\"pills\" id=\"pesMFR\"><\/div><\/div><\/div>\r\n      <\/div>\r\n    <\/div>\r\n    <div class=\"card\">\r\n      <div class=\"card-h\">\r\n        <div class=\"card-ico\"><svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><line x1=\"4\" y1=\"6\" x2=\"20\" y2=\"6\"\/><line x1=\"8\" y1=\"12\" x2=\"20\" y2=\"12\"\/><line x1=\"12\" y1=\"18\" x2=\"20\" y2=\"18\"\/><\/svg><\/div>\r\n        <span class=\"card-step\">3<\/span><div class=\"card-title\">Span between supports<\/div>\r\n      <\/div>\r\n      <div class=\"card-body\">\r\n        <div id=\"alSW\" class=\"alert ae\">Selecciona espesor y distancia.<\/div>\r\n        <div id=\"grpSW\">\r\n          <div class=\"fg\"><label>Span between supports (L) <span class=\"tip\" data-tip=\"Distance in cm between supports.\">?<\/span><\/label><div id=\"swGrid\" style=\"display:grid;gap:3px\"><\/div><\/div>\r\n          <div id=\"hSW\" class=\"hint\" style=\"display:none\"><svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"\/><line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"\/><\/svg><span id=\"hSWt\"><\/span><\/div>\r\n        <\/div>\r\n        <hr class=\"sep\">\r\n        <div class=\"fg\" style=\"margin-bottom:12px\"><label>Reference load (optional)<\/label><div class=\"iw\"><input type=\"number\" id=\"sbSW\" step=\"5\" min=\"0\" max=\"2000\" placeholder=\"Ej: 80\" oninput=\"evaluarSW()\"><span class=\"iu\">kg\/m\u00b2<\/span><\/div><\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- DISCLAIMER -->\r\n  <div class=\"disc\"><strong>Indicative notice<\/strong>Indicative results based on technical data from Magon Steel and Master Panel. These do not constitute a technical project. The designer is responsible for calculations per CTE \/ EAE \/ EC3 \/ EN14509.<\/div>\r\n\r\n  <!-- RESULTADO -->\r\n  <div class=\"rb\" id=\"resultBanner\">\r\n    <div class=\"rb-ey\">Admissible load \u2014 selected profile<\/div>\r\n    <div class=\"rb-nom\" id=\"rNom\">-<\/div>\r\n    <div class=\"rb-sub\" id=\"rSub\">-<\/div>\r\n    <div class=\"rb-met\">\r\n      <div class=\"met\"><div class=\"met-v\" id=\"rCap\">\u2014<\/div><div class=\"met-l\">Cap. admisible (kg\/m&sup2;)<\/div><\/div>\r\n      <div class=\"met\"><div class=\"met-v\" id=\"rRef\">\u2014<\/div><div class=\"met-l\">Carga referencia (kg\/m&sup2;)<\/div><\/div>\r\n      <div class=\"met\"><div class=\"met-v\" id=\"rMar\">\u2014<\/div><div class=\"met-l\">Margen de seguridad<\/div><\/div>\r\n    <\/div>\r\n    <div id=\"rBadge\" class=\"rbadge bneut\">-<\/div>\r\n  <\/div>\r\n\r\n  <!-- TABLA -->\r\n  <div class=\"card\" id=\"tablaCard\" style=\"display:none\">\r\n    <div class=\"card-h\">\r\n      <div class=\"card-ico\"><svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"\/><line x1=\"3\" y1=\"9\" x2=\"21\" y2=\"9\"\/><line x1=\"3\" y1=\"15\" x2=\"21\" y2=\"15\"\/><line x1=\"9\" y1=\"3\" x2=\"9\" y2=\"21\"\/><\/svg><\/div>\r\n      <div class=\"card-title\" id=\"tblTit\">Load table (kg\/m\u00b2)<\/div>\r\n    <\/div>\r\n    <div class=\"card-body\" style=\"padding:0\">\r\n      <div class=\"tw\"><table><thead><tr id=\"tblH\"><\/tr><\/thead><tbody id=\"tblB\"><\/tbody><\/table><\/div>\r\n      <div style=\"padding:7px 14px 11px\"><p style=\"font-size:.68rem;color:var(--ts)\"><span id=\"tblNota\"><\/span><\/p><\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"nota\" id=\"notaTec\"><\/div>\r\n\r\n  <div id=\"accCard\" style=\"display:none\">\r\n    <div style=\"display:flex;gap:8px\">\r\n      <button class=\"btn btn-f acc-btn\" onclick=\"abrirModal()\">\r\n        <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\/><polyline points=\"14,2 14,8 20,8\"\/><\/svg>\r\n        Descargar informe PDF\r\n      <\/button>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- CTA -->\r\n  <div class=\"cta\">\r\n    <div class=\"cta-ico\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"\/><\/svg><\/div>\r\n    <div class=\"cta-c\"><div class=\"cta-t\">Need a real quote?<\/div><div class=\"cta-d\">Our technical team will prepare a tailored quote for the best conditions.<\/div><\/div>\r\n    <a href=\"\/contacto\" class=\"btn btn-p btn-s cta-btn\">Request a quote <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><polyline points=\"9,18 15,12 9,6\"\/><\/svg><\/a>\r\n  <\/div>\r\n\r\n<\/div><\/div><!-- \/page -->\r\n\r\n<!-- \u2550\u2550\u2550 SEO: QU\u00c9 ES LA CARGA ADMISIBLE \u2550\u2550\u2550 -->\r\n<section class=\"seo-section alt\" id=\"que-es-sobrecarga-admisible-perfiles-metalicos\">\r\n  <div class=\"seo-inner\">\r\n    <div class=\"seo-tag\">Technical concepts<\/div>\r\n    <h2 class=\"seo-h2\">What is the <em>admissible load<\/em> and how is it calculated per L\/200?<\/h2>\r\n    <p class=\"seo-lead\">The <strong>admissible load<\/strong> is the maximum external load &mdash;wind, snow, use&mdash; that a profile or panel can receive without exceeding the maximum permitted deflection. In steel structures, that limit is <strong>L\/200<\/strong>: deflection cannot exceed the span length divided by 200.<\/p>\r\n    <p class=\"seo-body\">The L\/200 criterion comes from the <strong>Serviceability Limit State (SLS)<\/strong> of the <a href=\"https:\/\/www.codigotecnico.org\" target=\"_blank\" rel=\"noopener noreferrer\">Technical Building Code (CTE)<\/a> and <a href=\"https:\/\/eurocodes.jrc.ec.europa.eu\" target=\"_blank\" rel=\"noopener noreferrer\">Eurocode 3 (EC3), part 1-3<\/a>. Values are <strong>unfactored<\/strong>: they do not include additional safety factors or the self-weight of the profile.<\/p>\r\n    <p class=\"seo-body\">In practice, for a purlin with a portal spacing of 6 m, the maximum admissible deflection would be 6,000 \/ 200 = <strong>30 mm<\/strong>. The longer the span, the greater the height or thickness needed to stay within this limit.<\/p>\r\n    <div class=\"seo-formula\">\r\n      <code>f<sub>m&aacute;x<\/sub> = L \/ 200<\/code>\r\n      <ul>\r\n        <li><strong>f<sub>m&aacute;x<\/sub><\/strong> &mdash; flecha m&aacute;xima admisible (mm)<\/li>\r\n        <li><strong>L<\/strong> &mdash; distancia entre apoyos (mm)<\/li>\r\n        <li>Criterio: <strong>Estado L&iacute;mite de Servicio<\/strong><\/li>\r\n        <li>Norma: <strong>EC3 parte 1-3 \/ CTE \/ EAE<\/strong><\/li>\r\n        <li>Los valores son sobrecargas <strong>no mayoradas<\/strong><\/li>\r\n        <li>El peso propio del perfil <strong>no est&aacute; incluido<\/strong><\/li>\r\n      <\/ul>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- \u2550\u2550\u2550 SEO: CORREAS C Y Z \u2550\u2550\u2550 -->\r\n<section class=\"seo-section\" id=\"correas-metalicas-c-z-cubiertas-fachadas\">\r\n  <div class=\"seo-inner\">\r\n    <div class=\"seo-tag\">C and Z Purlins<\/div>\r\n    <h2 class=\"seo-h2\"><a href=\"https:\/\/magon.es\/productos\/correas-mg-c-y-mg-z\/\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color:inherit;text-decoration:none\">MG C and Z Purlins<\/a>: <em>how to choose the right profile<\/em><\/h2>\r\n    <p class=\"seo-lead\">The <a href=\"https:\/\/magon.es\/productos\/correas-mg-c-y-mg-z\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>MG C and Z metal purlins by Magon Steel<\/strong><\/a> are cold-formed S250GD steel profiles for supporting roofs and cladding of industrial buildings. Profile selection depends on three parameters: <strong>portal spacing, purlin spacing and number of spans<\/strong>.<\/p>\r\n    <p class=\"seo-body\">The <strong>C-purlin<\/strong> works as a simply-supported beam, ideal for roof ends. The <strong>Z-purlin<\/strong> allows overlapping between adjacent pieces, creating structural continuity that increases load capacity by up to <strong>35% compared to the equivalent C profile<\/strong>.<\/p>\r\n    <p class=\"seo-body\">Available heights range from <strong>125 to 300 mm<\/strong> with thicknesses of 2, 2.5 and 3 mm. The calculator filters in real time which combinations have available data according to the parameters you enter.<\/p>\r\n    <div class=\"seo-table-wrap\">\r\n      <table class=\"seo-table\">\r\n        <thead><tr>\r\n          <th>Parameter<\/th>\r\n          <th class=\"c\">Purlin C<\/th>\r\n          <th class=\"c\">Purlin Z<\/th>\r\n        <\/tr><\/thead>\r\n        <tbody>\r\n          <tr><td class=\"l\">Tipo estructural<\/td><td class=\"c\">Apoyo simple<\/td><td class=\"c\">Viga continua<\/td><\/tr>\r\n          <tr><td class=\"l\">Alturas (mm)<\/td><td class=\"c\">125&ndash;300<\/td><td class=\"c\">125&ndash;300<\/td><\/tr>\r\n          <tr><td class=\"l\">Espesores (mm)<\/td><td class=\"c\">2 \/ 2,5 \/ 3<\/td><td class=\"c\">2 \/ 2,5 \/ 3<\/td><\/tr>\r\n          <tr><td class=\"l\">Capacidad vs C<\/td><td class=\"c\">Base<\/td><td class=\"ok\">+25&ndash;35%<\/td><\/tr>\r\n          <tr><td class=\"l\">Uso t&iacute;pico<\/td><td class=\"c\">Extremos<\/td><td class=\"c\">Vanos m&uacute;ltiples<\/td><\/tr>\r\n        <\/tbody>\r\n      <\/table>\r\n    <\/div>\r\n    <div class=\"seo-note\">The total reference load must include <strong>snow + wind + use<\/strong>. For industrial buildings in Spain, an indicative value is <strong>60\u2013120 kg\/m\u00b2<\/strong> depending on geographic zone (CTE DB-SE-AE).<\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- \u2550\u2550\u2550 SEO: CHAPA TRAPEZOIDAL Y MINIONDA \u2550\u2550\u2550 -->\r\n<section class=\"seo-section alt\" id=\"chapa-trapezoidal-minionda-cubiertas-fachadas\">\r\n  <div class=\"seo-inner\">\r\n    <div class=\"seo-tag\">Profiled sheet<\/div>\r\n    <h2 class=\"seo-h2\">Trapezoidal sheet and corrugated <em>MG profiles<\/em>: which one to choose for your project<\/h2>\r\n    <p class=\"seo-lead\">Magon Steel manufactures four profiled sheet types: the <a href=\"https:\/\/magon.es\/productos\/mg-18-76\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>corrugated MG 18\/76<\/strong><\/a> for short spans, and the trapezoidal <a href=\"https:\/\/magon.es\/productos\/mg-30-206\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>MG 30\/206<\/strong><\/a>, <a href=\"https:\/\/magon.es\/productos\/mg-30-209\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>MG 30\/209<\/strong><\/a> y <a href=\"https:\/\/magon.es\/productos\/mg-40-250\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>MG 40\/250<\/strong><\/a> for longer spans. All CE-certified per <a href=\"https:\/\/www.une.org\/encuentra-tu-norma\/busca-tu-norma\/norma\/?c=N0047345\" target=\"_blank\" rel=\"noopener noreferrer\">UNE-EN 14782:2006<\/a>.<\/p>\r\n    <div class=\"seo-table-wrap\">\r\n      <table class=\"seo-table\">\r\n        <thead><tr>\r\n          <th>Perfil<\/th><th class=\"c\">H. onda<\/th><th class=\"c\">Vano m&aacute;x.<\/th><th class=\"c\">Posici&oacute;n<\/th><th>Uso<\/th>\r\n        <\/tr><\/thead>\r\n        <tbody>\r\n          <tr><td class=\"l\"><a href=\"https:\/\/magon.es\/productos\/mg-18-76\/\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color:var(--p);text-decoration:none;font-weight:700\">MG 18\/76<\/a><\/td><td class=\"c\">18 mm<\/td><td class=\"c\">2,0 m<\/td><td class=\"c\">&mdash;<\/td><td>Fachadas, techos<\/td><\/tr>\r\n          <tr><td class=\"l\"><a href=\"https:\/\/magon.es\/productos\/mg-30-206\/\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color:var(--p);text-decoration:none;font-weight:700\">MG 30\/206<\/a><\/td><td class=\"c\">30 mm<\/td><td class=\"c\">2,5 m<\/td><td class=\"c\">A \/ B<\/td><td>Cubiertas ind.<\/td><\/tr>\r\n          <tr><td class=\"l\"><a href=\"https:\/\/magon.es\/productos\/mg-30-209\/\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color:var(--p);text-decoration:none;font-weight:700\">MG 30\/209<\/a><\/td><td class=\"c\">30 mm<\/td><td class=\"c\">2,5 m<\/td><td class=\"c\">A \/ B<\/td><td>Fachadas est&eacute;ticas<\/td><\/tr>\r\n          <tr><td class=\"l\"><a href=\"https:\/\/magon.es\/productos\/mg-40-250\/\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color:var(--p);text-decoration:none;font-weight:700\">MG 40\/250<\/a><\/td><td class=\"c\">40 mm<\/td><td class=\"c\">2,5 m<\/td><td class=\"c\">A \/ B<\/td><td>Grandes luces<\/td><\/tr>\r\n        <\/tbody>\r\n      <\/table>\r\n    <\/div>\r\n    <p class=\"seo-body\" style=\"margin-top:16px\">The difference between <strong>position A and position B<\/strong> refers to rib orientation: ribs face up in position A (roofs), ribs face down in position B (facades). This orientation significantly affects load capacity.<\/p>\r\n    <p class=\"seo-body\">The rigid longitudinal overlap of MG 30 and MG 40 profiles guarantees watertightness with no risk of opening under wind or snow loads. Manufactured in <strong>S250GD<\/strong> steel per <a href=\"https:\/\/www.une.org\" target=\"_blank\" rel=\"noopener noreferrer\">UNE-EN 10346<\/a>.<\/p>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- \u2550\u2550\u2550 SEO: PANEL S\u00c1NDWICH \u2550\u2550\u2550 -->\r\n<section class=\"seo-section\" id=\"panel-sandwich-master-sobrecargas-aislamiento\">\r\n  <div class=\"seo-inner\">\r\n    <div class=\"seo-tag\">Sandwich panel<\/div>\r\n    <h2 class=\"seo-h2\">Sandwich panel <a href=\"https:\/\/magon.es\/masterpanel-fabricantes-panel-sandwich\/\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color:inherit;text-decoration:none\">Master Panel<\/a>: <em>admissible load and insulation<\/em> in a single element<\/h2>\r\n    <p class=\"seo-lead\">The <a href=\"https:\/\/magon.es\/masterpanel-fabricantes-panel-sandwich\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Master Panel<\/strong><\/a> sandwich panels integrate structural resistance and thermal insulation in a single element with a PUR\/PIR polyurethane core. Values are calculated per <a href=\"https:\/\/www.une.org\/encuentra-tu-norma\/busca-tu-norma\/norma\/?c=N0051040\" target=\"_blank\" rel=\"noopener noreferrer\">EN 14509<\/a> for 2 spans and 0.50\/0.50 mm sheet.<\/p>\r\n    <p class=\"seo-body\">The <a href=\"https:\/\/magon.es\/productos\/panel-sandwich-cubierta\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Master-C Roof<\/strong><\/a> (30&ndash;120 mm) y el <a href=\"https:\/\/magon.es\/productos\/panel-sandwich-para-fachadas\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Master-F Facade<\/strong><\/a> (35&ndash;100 mm) are the reference panels for industrial construction. The <a href=\"https:\/\/magon.es\/productos\/panel-sandwich-modular\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Master-Modul<\/strong><\/a> (35, 40 y 50 mm) for modular construction, and the <a href=\"https:\/\/magon.es\/productos\/panel-sandwich-frigorifico\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Master-Frigo<\/strong><\/a> (60&ndash;150 mm) specific for cold stores.<\/p>\r\n    <p class=\"seo-body\">To select the correct panel, first choose the type, then the thickness and finally the span. If you enter a <strong>reference load<\/strong>, each thickness is automatically colour-coded: green (passes), yellow (at limit) or red (insufficient).<\/p>\r\n    <a href=\"https:\/\/magon.es\/en\/sandwich-panel-thermal-insulation-calculator\/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"seo-cta-link\">\r\n      <span class=\"scl-ico\">&#127777;&#65039;<\/span>\r\n      <span>\r\n        <strong class=\"scl-title\">Need to calculate thermal insulation?<\/strong>\r\n        <span class=\"scl-sub\">U-value and thickness calculator per CTE DB-HE &rarr;<\/span>\r\n      <\/span>\r\n    <\/a>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- \u2550\u2550\u2550 FAQ \u2550\u2550\u2550 -->\r\n<section class=\"seo-section alt\" id=\"preguntas-frecuentes-sobrecargas-admisibles-perfiles\">\r\n  <div class=\"seo-inner\">\r\n    <div class=\"seo-tag\">Frequently asked questions<\/div>\r\n    <h2 class=\"seo-h2\">Frequently asked questions sobre <em>admissible load for profiles<\/em><\/h2>\r\n    <p class=\"seo-lead\">Answers to the most common questions about how to use the calculator and apply the results.<\/p>\r\n    <div>\r\n      <div class=\"faq-item\">\r\n        <button class=\"faq-q\" onclick=\"toggleFaq(this)\" aria-expanded=\"false\">How do I calculate the admissible load of a purlin for a given span?<span class=\"faq-icon\">+<\/span><\/button>\r\n        <div class=\"faq-a\">Enter the profile type, portal spacing, purlin spacing and number of spans in the calculator. You will instantly get the admissible load in kg\/m\u00b2 for each available height and thickness, calculated per the <strong>L\/200<\/strong> criterion of <a href=\"https:\/\/eurocodes.jrc.ec.europa.eu\" target=\"_blank\" rel=\"noopener noreferrer\">Eurocode 3 (EC3)<\/a>.<\/div>\r\n      <\/div>\r\n      <div class=\"faq-item\">\r\n        <button class=\"faq-q\" onclick=\"toggleFaq(this)\" aria-expanded=\"false\">Which profile do I need for a load of X kg\/m\u00b2 with a span of Y metres?<span class=\"faq-icon\">+<\/span><\/button>\r\n        <div class=\"faq-a\">Select the profile family, enter the spacing parameters and type your load in the <strong>reference load<\/strong> field. The calculator marks valid profiles with <strong>\u2713 green<\/strong>, those at the limit with <strong>~ yellow<\/strong> and insufficient ones with <strong>\u2717 red<\/strong>. For industrial buildings in Spain, the typical indicative value is <strong>60\u2013120 kg\/m\u00b2<\/strong> per <a href=\"https:\/\/www.codigotecnico.org\" target=\"_blank\" rel=\"noopener noreferrer\">CTE DB-SE-AE<\/a>.<\/div>\r\n      <\/div>\r\n      <div class=\"faq-item\">\r\n        <button class=\"faq-q\" onclick=\"toggleFaq(this)\" aria-expanded=\"false\">Do the loads include the self-weight of the profile?<span class=\"faq-icon\">+<\/span><\/button>\r\n        <div class=\"faq-a\">No. The tables show only the <strong>external admissible load<\/strong> (snow, wind, use) without load factors. The self-weight of the profile, insulation and finishes must be added separately to obtain the total design load.<\/div>\r\n      <\/div>\r\n      <div class=\"faq-item\">\r\n        <button class=\"faq-q\" onclick=\"toggleFaq(this)\" aria-expanded=\"false\">What portal spacing is typical in industrial buildings?<span class=\"faq-icon\">+<\/span><\/button>\r\n        <div class=\"faq-a\">In standard industrial buildings in Spain, the most common spacing is <strong>5 to 7 metres<\/strong>. The <a href=\"https:\/\/magon.es\/productos\/correas-mg-c-y-mg-z\/\" target=\"_blank\" rel=\"noopener noreferrer\">MG C and Z purlins<\/a> have data for spacings from 4 to 9 m. For more than 9 m, contact the <a href=\"https:\/\/www.magon.es\/contacto\/\" target=\"_blank\" rel=\"noopener noreferrer\">Magon technical team<\/a>.<\/div>\r\n      <\/div>\r\n      <div class=\"faq-item\">\r\n        <button class=\"faq-q\" onclick=\"toggleFaq(this)\" aria-expanded=\"false\">Why does the Z purlin carry more load than the C of the same size?<span class=\"faq-icon\">+<\/span><\/button>\r\n        <div class=\"faq-a\">The <strong>Z-purlin<\/strong> allows overlapping between adjacent pieces, creating a <strong>continuous beam<\/strong> that redistributes bending moments. This allows up to 35% more load than the equivalent C-purlin. Where possible, it is recommended to install Z-purlins continuously over at least 2 spans.<\/div>\r\n      <\/div>\r\n      <div class=\"faq-item\">\r\n        <button class=\"faq-q\" onclick=\"toggleFaq(this)\" aria-expanded=\"false\">When should I use MG 40\/250 instead of MG 30\/206?<span class=\"faq-icon\">+<\/span><\/button>\r\n        <div class=\"faq-a\">The <a href=\"https:\/\/magon.es\/productos\/mg-40-250\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>MG 40\/250<\/strong><\/a> has greater inertia (40 mm rib vs 30 mm). Use it for spans close to 2.5 m with heavy loads or when minimising secondary purlins. For spans under 2 m with moderate loads, <a href=\"https:\/\/magon.es\/productos\/mg-30-206\/\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>MG 30\/206<\/strong><\/a> or MG 30\/209 are sufficient and more economical.<\/div>\r\n      <\/div>\r\n      <div class=\"faq-item\">\r\n        <button class=\"faq-q\" onclick=\"toggleFaq(this)\" aria-expanded=\"false\">Can I use this calculator to justify a project under the regulations?<span class=\"faq-icon\">+<\/span><\/button>\r\n        <div class=\"faq-a\">This tool is <strong>indicative and non-binding<\/strong>. Final calculations must be carried out and signed by a <strong>qualified professional<\/strong> (architect, building engineer or structural engineer) responsible per CTE, EAE, EC3 and EN14509.<\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n\r\n<!-- MODAL PDF \u2014 CF7 ID 15178 -->\r\n<div class=\"modal-bg hidden\" id=\"modalPDF\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"modal-title\">\r\n  <div class=\"modal-inner\">\r\n    <!-- Cabecera -->\r\n    <div class=\"modal-hdr\">\r\n      <button class=\"modal-close-btn\" onclick=\"cerrarModal()\" aria-label=\"Close\">&#10005;<\/button>\r\n      <h3 id=\"modal-title\">&#128196; Download your PDF report<\/h3>\r\n      <p>Fill in your details and download the report for your load calculation.<\/p>\r\n    <\/div>\r\n    <!-- Formulario -->\r\n    <div id=\"modal-form-wrap\">\r\n      <div class=\"modal-body\">\r\n        <div id=\"modal-err-alert\" class=\"modal-err-alert\">Please complete all required fields.<\/div>\r\n\r\n        <div class=\"mfield\">\r\n          <label>Full name <span class=\"req\">*<\/span><\/label>\r\n          <input type=\"text\" id=\"m-nombre\" placeholder=\"Your full name\" maxlength=\"100\" autocomplete=\"name\">\r\n          <span class=\"err-txt\" id=\"err-nombre\">Please enter your name.<\/span>\r\n        <\/div>\r\n\r\n        <div class=\"mrow2\">\r\n          <div class=\"mfield\">\r\n            <label>Email <span class=\"req\">*<\/span><\/label>\r\n            <input type=\"email\" id=\"m-email\" placeholder=\"tu@correo.com\" maxlength=\"150\" autocomplete=\"email\">\r\n            <span class=\"err-txt\" id=\"err-email\">Please enter a valid email.<\/span>\r\n          <\/div>\r\n          <div class=\"mfield\">\r\n            <label>Phone <span class=\"opt\">Opcional<\/span><\/label>\r\n            <input type=\"tel\" id=\"m-tel\" placeholder=\"+34 600 000 000\" maxlength=\"20\" autocomplete=\"tel\">\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"mrow2\">\r\n          <div class=\"mfield\">\r\n            <label>Country <span class=\"req\">*<\/span><\/label>\r\n            <select id=\"m-pais\" onchange=\"onModalPaisChange()\">\r\n              <option value=\"\">&#8212; Select country &#8212;<\/option>\r\n              <optgroup label=\"Espa&ntilde;a\"><option value=\"Espa\u00f1a\">Espa\u00f1a<\/option><\/optgroup>\r\n              <optgroup label=\"Europa\">\r\n                <option>Alemania<\/option><option>Andorra<\/option><option>Austria<\/option><option>B\u00e9lgica<\/option><option>Bulgaria<\/option><option>Chipre<\/option><option>Croacia<\/option><option>Dinamarca<\/option><option>Eslovaquia<\/option><option>Eslovenia<\/option><option>Estonia<\/option><option>Finlandia<\/option><option>Francia<\/option><option>Grecia<\/option><option>Hungr\u00eda<\/option><option>Irlanda<\/option><option>Islandia<\/option><option>Italia<\/option><option>Letonia<\/option><option>Liechtenstein<\/option><option>Lituania<\/option><option>Luxemburgo<\/option><option>Malta<\/option><option>M\u00f3naco<\/option><option>Noruega<\/option><option>Pa\u00edses Bajos<\/option><option>Polonia<\/option><option>Portugal<\/option><option>Reino Unido<\/option><option>Rep\u00fablica Checa<\/option><option>Ruman\u00eda<\/option><option>Suecia<\/option><option>Suiza<\/option><option>Turqu\u00eda<\/option><option>Ucrania<\/option>\r\n              <\/optgroup>\r\n              <optgroup label=\"Am&eacute;rica Latina\">\r\n                <option>Argentina<\/option><option>Bolivia<\/option><option>Brasil<\/option><option>Chile<\/option><option>Colombia<\/option><option>Costa Rica<\/option><option>Cuba<\/option><option>Ecuador<\/option><option>El Salvador<\/option><option>Guatemala<\/option><option>Honduras<\/option><option>M\u00e9xico<\/option><option>Nicaragua<\/option><option>Panam\u00e1<\/option><option>Paraguay<\/option><option>Per\u00fa<\/option><option>Puerto Rico<\/option><option>Rep\u00fablica Dominicana<\/option><option>Uruguay<\/option><option>Venezuela<\/option>\r\n              <\/optgroup>\r\n              <optgroup label=\"&Aacute;frica\">\r\n                <option>Angola<\/option><option>Argelia<\/option><option>Cabo Verde<\/option><option>Camer\u00fan<\/option><option>Costa de Marfil<\/option><option>Egipto<\/option><option>Ghana<\/option><option>Guinea Ecuatorial<\/option><option>Kenia<\/option><option>Libia<\/option><option>Marruecos<\/option><option>Mozambique<\/option><option>Nigeria<\/option><option>Senegal<\/option><option>Sud\u00e1frica<\/option><option>T\u00fanez<\/option>\r\n              <\/optgroup>\r\n              <optgroup label=\"Am&eacute;rica del Norte\"><option>Canad\u00e1<\/option><option>Estados Unidos<\/option><\/optgroup>\r\n              <optgroup label=\"Oriente Medio\">\r\n                <option>Arabia Saud\u00ed<\/option><option>Catar<\/option><option>Emiratos \u00c1rabes Unidos<\/option><option>Israel<\/option><option>Jordania<\/option><option>Kuwait<\/option><option>L\u00edbano<\/option><option>Om\u00e1n<\/option>\r\n              <\/optgroup>\r\n              <optgroup label=\"Asia y Ocean&iacute;a\">\r\n                <option>Australia<\/option><option>China<\/option><option>Filipinas<\/option><option>India<\/option><option>Indonesia<\/option><option>Jap\u00f3n<\/option><option>Malasia<\/option><option>Nueva Zelanda<\/option><option>Singapur<\/option><option>Corea del Sur<\/option><option>Tailandia<\/option><option>Vietnam<\/option>\r\n              <\/optgroup>\r\n              <option value=\"Otro\">Otro<\/option>\r\n            <\/select>\r\n            <span class=\"err-txt\" id=\"err-pais\">Please select your country.<\/span>\r\n          <\/div>\r\n          <div class=\"mfield mprov\" id=\"m-prov-wrap\">\r\n            <label>Province<\/label>\r\n            <select id=\"m-prov\">\r\n              <option value=\"\">&#8212; Select &#8212;<\/option>\r\n              <option>\u00c1lava<\/option><option>Albacete<\/option><option>Alicante<\/option><option>Almer\u00eda<\/option><option>Asturias<\/option><option>\u00c1vila<\/option><option>Badajoz<\/option><option>Baleares<\/option><option>Barcelona<\/option><option>Burgos<\/option><option>C\u00e1ceres<\/option><option>C\u00e1diz<\/option><option>Cantabria<\/option><option>Castell\u00f3n<\/option><option>Ceuta<\/option><option>Ciudad Real<\/option><option>C\u00f3rdoba<\/option><option>A Coru\u00f1a<\/option><option>Cuenca<\/option><option>Girona<\/option><option>Granada<\/option><option>Guadalajara<\/option><option>Guip\u00fazcoa<\/option><option>Huelva<\/option><option>Huesca<\/option><option>Ja\u00e9n<\/option><option>La Rioja<\/option><option>Las Palmas<\/option><option>Le\u00f3n<\/option><option>Lleida<\/option><option>Lugo<\/option><option>Madrid<\/option><option>M\u00e1laga<\/option><option>Melilla<\/option><option>Murcia<\/option><option>Navarra<\/option><option>Ourense<\/option><option>Palencia<\/option><option>Pontevedra<\/option><option>Salamanca<\/option><option>Santa Cruz de Tenerife<\/option><option>Segovia<\/option><option>Sevilla<\/option><option>Soria<\/option><option>Tarragona<\/option><option>Teruel<\/option><option>Toledo<\/option><option>Valencia<\/option><option>Valladolid<\/option><option>Vizcaya<\/option><option>Zamora<\/option><option>Zaragoza<\/option>\r\n            <\/select>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"mfield\">\r\n          <label>Company <span class=\"opt\">Opcional<\/span><\/label>\r\n          <input type=\"text\" id=\"m-empresa\" placeholder=\"Company name\" maxlength=\"120\" autocomplete=\"organization\">\r\n        <\/div>\r\n\r\n        <p class=\"modal-form-note\">Results are <strong>indicative<\/strong> and do not replace calculations by a qualified professional.<\/p>\r\n\r\n        <div class=\"gdpr-wrap\">\r\n          <input type=\"checkbox\" id=\"m-gdpr\">\r\n          <label for=\"m-gdpr\">I have read and accept the <a href=\"https:\/\/magon.es\/politica-privacidad\/\" target=\"_blank\" rel=\"noopener\">privacy policy<\/a> <strong style=\"color:var(--p)\">*<\/strong><\/label>\r\n        <\/div>\r\n        <div class=\"gdpr-err\" id=\"err-gdpr\">You must accept the privacy policy.<\/div>\r\n\r\n        <button class=\"modal-submit-btn\" id=\"modal-submit-btn\" onclick=\"enviarFormulario()\">\r\n          <span class=\"btn-txt\">Download PDF<\/span>\r\n          <div class=\"spinner\"><\/div>\r\n        <\/button>\r\n        <p class=\"modal-legal\">By submitting you agree that Magon may contact you. We do not share your data. <a href=\"https:\/\/magon.es\/politica-privacidad\/\" target=\"_blank\" rel=\"noopener\">Privacidad<\/a>.<\/p>\r\n      <\/div>\r\n    <\/div>\r\n    <!-- Estado OK -->\r\n    <div class=\"modal-ok-wrap hidden\" id=\"modal-ok\">\r\n      <span class=\"ok-ico\">&#10003;<\/span>\r\n      <h4>PDF downloaded!<\/h4>\r\n      <div class=\"modal-ok-detail\" id=\"modal-ok-detail\"><\/div>\r\n      <p>Our technical team may contact you for no-obligation advice.<\/p>\r\n      <button class=\"modal-ok-close\" onclick=\"cerrarModal()\">Close<\/button>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<div class=\"toast\" id=\"toast\"><\/div>\r\n\r\n<!-- CF7 oculto \u2014 shortcode para que WordPress genere el nonce -->\r\n<div style=\"position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;opacity:0;pointer-events:none;\" aria-hidden=\"true\">\r\n<p class=\"wpcf7-contact-form-not-found\"><strong>Error:<\/strong> Contact form not found.<\/p>\r\n<\/div>\r\n\r\n<script>\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ DATOS\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nconst MINIONDA=[{id:'mg1876',nombre:'MG 18\/76',tipo:'Perfil ondulado',alturaOnda:18,ancho:1064,espesores:[0.5,0.6,0.7,0.8],hasPosition:false,maxLuz:2.0,tabla:{'1':{'0.5':{1.0:209,1.25:121,1.5:70,1.75:44,2.0:30},'0.6':{1.0:251,1.25:146,1.5:84,1.75:53,2.0:36},'0.7':{1.0:294,1.25:170,1.5:99,1.75:62,2.0:42},'0.8':{1.0:336,1.25:195,1.5:113,1.75:71,2.0:48}},'2':{'0.5':{1.0:209,1.25:134,1.5:93,1.75:68,2.0:52},'0.6':{1.0:251,1.25:161,1.5:112,1.75:82,2.0:63},'0.7':{1.0:294,1.25:188,1.5:130,1.75:96,2.0:73},'0.8':{1.0:336,1.25:215,1.5:149,1.75:110,2.0:84}},'3':{'0.5':{1.0:261,1.25:167,1.5:116,1.75:85,2.0:55},'0.6':{1.0:314,1.25:201,1.5:140,1.75:103,2.0:66},'0.7':{1.0:367,1.25:235,1.5:163,1.75:120,2.0:77},'0.8':{1.0:420,1.25:268,1.5:186,1.75:137,2.0:88}}}}];\r\nMINIONDA.push(\r\n  {id:'mg30206',nombre:'MG 30\/206',tipo:'Perfil trapezoidal',alturaOnda:30,ancho:1030,espesores:[0.5,0.6,0.7,0.8],pesos:{'0.5':4.76,'0.6':5.72,'0.7':6.67,'0.8':7.62},hasPosition:true,maxLuz:2.5,tabla:{\r\n    'A':{\r\n      '1':{'0.5':{1.0:364,1.25:233,1.5:162,1.75:119,2.0:78,2.25:55,2.5:40},'0.6':{1.0:465,1.25:297,1.5:207,1.75:152,2.0:97,2.25:68,2.5:50},'0.7':{1.0:569,1.25:364,1.5:253,1.75:186,2.0:116,2.25:82,2.5:60},'0.8':{1.0:665,1.25:425,1.5:295,1.75:217,2.0:135,2.25:95,2.5:69}},\r\n      '2':{'0.5':{1.0:370,1.25:237,1.5:165,1.75:121,2.0:93,2.25:73,2.5:62},'0.6':{1.0:494,1.25:316,1.5:219,1.75:161,2.0:123,2.25:98,2.5:79},'0.7':{1.0:604,1.25:387,1.5:268,1.75:197,2.0:151,2.25:119,2.5:97},'0.8':{1.0:706,1.25:452,1.5:314,1.75:231,2.0:177,2.25:139,2.5:113}},\r\n      '3':{'0.5':{1.0:435,1.25:279,1.5:194,1.75:142,2.0:109,2.25:86,2.5:70},'0.6':{1.0:545,1.25:349,1.5:242,1.75:178,2.0:136,2.25:108,2.5:87},'0.7':{1.0:645,1.25:413,1.5:287,1.75:211,2.0:161,2.25:127,2.5:103},'0.8':{1.0:747,1.25:478,1.5:332,1.75:244,2.0:187,2.25:148,2.5:120}}\r\n    },\r\n    'B':{\r\n      '1':{'0.5':{1.0:348,1.25:223,1.5:155,1.75:114,2.0:54,2.25:38,2.5:27},'0.6':{1.0:436,1.25:279,1.5:194,1.75:142,2.0:68,2.25:48,2.5:35},'0.7':{1.0:516,1.25:330,1.5:229,1.75:169,2.0:84,2.25:59,2.5:43},'0.8':{1.0:598,1.25:383,1.5:266,1.75:195,2.0:100,2.25:71,2.5:51}},\r\n      '2':{'0.5':{1.0:386,1.25:247,1.5:172,1.75:126,2.0:97,2.25:76,2.5:62},'0.6':{1.0:494,1.25:316,1.5:219,1.75:161,2.0:123,2.25:98,2.5:79},'0.7':{1.0:604,1.25:387,1.5:268,1.75:197,2.0:151,2.25:119,2.5:97},'0.8':{1.0:706,1.25:452,1.5:314,1.75:231,2.0:177,2.25:139,2.5:113}},\r\n      '3':{'0.5':{1.0:455,1.25:291,1.5:202,1.75:148,2.0:114,2.25:90,2.5:73},'0.6':{1.0:581,1.25:372,1.5:258,1.75:190,2.0:145,2.25:115,2.5:93},'0.7':{1.0:711,1.25:455,1.5:316,1.75:232,2.0:178,2.25:140,2.5:114},'0.8':{1.0:831,1.25:532,1.5:369,1.75:271,2.0:208,2.25:164,2.5:133}}\r\n    }\r\n  }},\r\n  {id:'mg30209',nombre:'MG 30\/209',tipo:'Perfil trapezoidal',alturaOnda:30,ancho:1045,espesores:[0.5,0.6,0.7,0.8],pesos:{'0.5':4.70,'0.6':5.63,'0.7':6.57,'0.8':7.51},hasPosition:true,maxLuz:2.5,tabla:{\r\n    'A':{\r\n      '1':{'0.5':{1.0:360,1.25:230,1.5:160,1.75:118,2.0:83,2.25:58,2.5:43},'0.6':{1.0:456,1.25:292,1.5:203,1.75:149,2.0:103,2.25:73,2.5:53},'0.7':{1.0:540,1.25:345,1.5:240,1.75:176,2.0:122,2.25:85,2.5:62},'0.8':{1.0:615,1.25:394,1.5:273,1.75:201,2.0:139,2.25:98,2.5:71}},\r\n      '2':{'0.5':{1.0:320,1.25:205,1.5:142,1.75:105,2.0:80,2.25:63,2.5:51},'0.6':{1.0:416,1.25:266,1.5:185,1.75:136,2.0:104,2.25:82,2.5:67},'0.7':{1.0:501,1.25:321,1.5:223,1.75:164,2.0:125,2.25:99,2.5:80},'0.8':{1.0:581,1.25:372,1.5:258,1.75:190,2.0:145,2.25:115,2.5:93}},\r\n      '3':{'0.5':{1.0:377,1.25:241,1.5:167,1.75:123,2.0:94,2.25:74,2.5:60},'0.6':{1.0:490,1.25:313,1.5:218,1.75:160,2.0:122,2.25:97,2.5:78},'0.7':{1.0:589,1.25:377,1.5:262,1.75:192,2.0:147,2.25:116,2.5:94},'0.8':{1.0:683,1.25:437,1.5:304,1.75:223,2.0:171,2.25:135,2.5:109}}\r\n    },\r\n    'B':{\r\n      '1':{'0.5':{1.0:301,1.25:193,1.5:134,1.75:98,2.0:52,2.25:36,2.5:27},'0.6':{1.0:392,1.25:251,1.5:174,1.75:128,2.0:68,2.25:48,2.5:35},'0.7':{1.0:472,1.25:302,1.5:210,1.75:154,2.0:85,2.25:59,2.5:43},'0.8':{1.0:546,1.25:350,1.5:243,1.75:178,2.0:101,2.25:71,2.5:52}},\r\n      '2':{'0.5':{1.0:382,1.25:245,1.5:170,1.75:125,2.0:96,2.25:76,2.5:61},'0.6':{1.0:485,1.25:310,1.5:216,1.75:158,2.0:121,2.25:96,2.5:78},'0.7':{1.0:573,1.25:367,1.5:255,1.75:187,2.0:143,2.25:113,2.5:92},'0.8':{1.0:654,1.25:418,1.5:291,1.75:213,2.0:163,2.25:129,2.5:105}},\r\n      '3':{'0.5':{1.0:450,1.25:288,1.5:200,1.75:147,2.0:112,2.25:89,2.5:72},'0.6':{1.0:571,1.25:365,1.5:254,1.75:186,2.0:143,2.25:113,2.5:91},'0.7':{1.0:674,1.25:432,1.5:300,1.75:220,2.0:169,2.25:133,2.5:108},'0.8':{1.0:769,1.25:492,1.5:342,1.75:251,2.0:192,2.25:152,2.5:123}}\r\n    }\r\n  }},\r\n  {id:'mg40250',nombre:'MG 40\/250',tipo:'Perfil trapezoidal',alturaOnda:40,ancho:1000,espesores:[0.5,0.6,0.7,0.8],pesos:{'0.5':4.90,'0.6':5.89,'0.7':6.87,'0.8':7.85},hasPosition:true,maxLuz:2.5,tabla:{\r\n    'A':{\r\n      '1':{'0.5':{1.0:500,1.25:320,1.5:222,1.75:163,2.0:125,2.25:99,2.5:75},'0.6':{1.0:633,1.25:405,1.5:281,1.75:207,2.0:158,2.25:125,2.5:93},'0.7':{1.0:769,1.25:492,1.5:342,1.75:251,2.0:192,2.25:152,2.5:112},'0.8':{1.0:897,1.25:574,1.5:399,1.75:293,2.0:224,2.25:177,2.5:129}},\r\n      '2':{'0.5':{1.0:479,1.25:307,1.5:213,1.75:156,2.0:120,2.25:95,2.5:77},'0.6':{1.0:594,1.25:380,1.5:264,1.75:194,2.0:148,2.25:117,2.5:95},'0.7':{1.0:705,1.25:451,1.5:313,1.75:230,2.0:176,2.25:139,2.5:113},'0.8':{1.0:818,1.25:523,1.5:363,1.75:267,2.0:204,2.25:162,2.5:131}},\r\n      '3':{'0.5':{1.0:564,1.25:361,1.5:250,1.75:184,2.0:141,2.25:111,2.5:90},'0.6':{1.0:698,1.25:447,1.5:310,1.75:228,2.0:175,2.25:138,2.5:112},'0.7':{1.0:829,1.25:531,1.5:368,1.75:271,2.0:207,2.25:164,2.5:133},'0.8':{1.0:962,1.25:616,1.5:428,1.75:314,2.0:241,2.25:190,2.5:154}}\r\n    },\r\n    'B':{\r\n      '1':{'0.5':{1.0:451,1.25:289,1.5:200,1.75:147,2.0:113,2.25:89,2.5:49},'0.6':{1.0:559,1.25:358,1.5:248,1.75:182,2.0:140,2.25:110,2.5:62},'0.7':{1.0:663,1.25:424,1.5:295,1.75:217,2.0:166,2.25:131,2.5:76},'0.8':{1.0:770,1.25:493,1.5:342,1.75:251,2.0:192,2.25:152,2.5:91}},\r\n      '2':{'0.5':{1.0:532,1.25:340,1.5:236,1.75:174,2.0:133,2.25:105,2.5:85},'0.6':{1.0:673,1.25:431,1.5:299,1.75:220,2.0:168,2.25:133,2.5:108},'0.7':{1.0:817,1.25:523,1.5:363,1.75:267,2.0:204,2.25:161,2.5:131},'0.8':{1.0:953,1.25:610,1.5:423,1.75:311,2.0:238,2.25:188,2.5:152}},\r\n      '3':{'0.5':{1.0:626,1.25:400,1.5:278,1.75:204,2.0:156,2.25:124,2.5:100},'0.6':{1.0:792,1.25:507,1.5:352,1.75:258,2.0:198,2.25:156,2.5:127},'0.7':{1.0:962,1.25:616,1.5:427,1.75:314,2.0:240,2.25:190,2.5:154},'0.8':{1.0:1121,1.25:717,1.5:498,1.75:366,2.0:280,2.25:221,2.5:179}}\r\n    }\r\n  }}\r\n);\r\n\r\nMINIONDA[0].fam='minionda';MINIONDA[0].calculable=true;\r\nMINIONDA[1].fam='trapezoidal';MINIONDA[1].calculable=true;\r\nMINIONDA[2].fam='trapezoidal';MINIONDA[2].calculable=true;\r\nMINIONDA[3].fam='trapezoidal';MINIONDA[3].calculable=true;\r\nconst PERFILES_CHAPA=[\r\n  MINIONDA[0],MINIONDA[1],MINIONDA[2],MINIONDA[3]\r\n];\r\nconst FAMILIAS_CHAPA={minionda:'Corrugated',trapezoidal:'Trapezoidal'};\r\n\r\nconst CORREAS_C={alturas:[125,150,175,200,225,250,275,300],espesores:[2,2.5,3],tabla:{125:{2:{4:{1.25:112,1.50:93,1.75:80},5:{1.25:70,1.50:59},6:{},7:{},8:{},9:{}},2.5:{4:{1.25:137,1.50:114,1.75:98},5:{1.25:86,1.50:72,1.75:62},6:{1.25:59},7:{},8:{},9:{}},3:{4:{1.25:160,1.50:145,1.75:115},5:{1.25:101,1.50:84,1.75:72},6:{1.25:69,1.50:57},7:{},8:{},9:{}}},150:{2:{4:{1.25:144,1.50:120,1.75:103},5:{1.25:91,1.50:76,1.75:65},6:{1.25:62,1.50:52},7:{},8:{},9:{}},2.5:{4:{1.25:177,1.50:147,1.75:126},5:{1.25:112,1.50:93,1.75:80},6:{1.25:76,1.50:64,1.75:54},7:{},8:{},9:{}},3:{4:{1.25:208,1.50:173,1.75:148},5:{1.25:131,1.50:109,1.75:94},6:{1.25:90,1.50:75,1.75:64},7:{},8:{},9:{}}},175:{2:{4:{1.25:179,1.50:149,1.75:128},5:{1.25:113,1.50:94,1.75:81},6:{1.25:76,1.50:65,1.75:55},7:{},8:{},9:{}},2.5:{4:{1.25:220,1.50:183,1.75:157},5:{1.25:139,1.50:116,1.75:99},6:{1.25:95,1.50:79,1.75:68,2.00:60},7:{1.25:69},8:{},9:{}},3:{4:{1.25:259,1.50:216,1.75:175},5:{1.25:164,1.50:137,1.75:117},6:{1.25:112,1.50:94,1.75:80,2.00:70},7:{1.25:81,1.50:67,1.75:57},8:{},9:{}}},200:{2:{4:{1.25:286,1.50:239,1.75:205},5:{1.25:183,1.50:153,1.75:131},6:{1.25:127,1.50:106,1.75:91,2.00:78},7:{1.25:94,1.50:78,1.75:65,2.00:57},8:{},9:{}},2.5:{4:{1.25:352,1.50:293,1.75:251},5:{1.25:225,1.50:188,1.75:161},6:{1.25:156,1.50:130,1.75:112,2.00:96},7:{1.25:115,1.50:96,1.75:80,2.00:70},8:{1.25:70,1.50:60},9:{}},3:{4:{1.25:415,1.50:346,1.75:297},5:{1.25:266,1.50:222,1.75:190},6:{1.25:185,1.50:154,1.75:132,2.00:114},7:{1.25:136,1.50:113,1.75:95,2.00:83},8:{1.25:83,1.50:71,1.75:62},9:{}}},225:{2:{4:{1.25:332,1.50:277,1.75:237},5:{1.25:213,1.50:177,1.75:152},6:{1.25:148,1.50:123,1.75:105,2.00:92},7:{1.25:109,1.50:90,1.75:76,2.00:67},8:{1.25:67,1.50:58,1.75:50},9:{}},2.5:{4:{1.25:409,1.50:341,1.75:292},5:{1.25:262,1.50:218,1.75:187},6:{1.25:182,1.50:151,1.75:130,2.00:114},7:{1.25:134,1.50:111,1.75:94,2.00:82},8:{1.25:83,1.50:71,1.75:62},9:{1.25:64}},3:{4:{1.25:483,1.50:402,1.75:345},5:{1.25:309,1.50:258,1.75:221},6:{1.25:215,1.50:179,1.75:153,2.00:135},7:{1.25:158,1.50:131,1.75:112,2.00:98},8:{1.25:98,1.50:84,1.75:74},9:{1.25:76,1.75:65}}},250:{2:{4:{1.25:381,1.50:317,1.75:272},5:{1.25:244,1.50:203,1.75:174},6:{1.25:169,1.50:141,1.75:121,2.00:107},7:{1.25:124,1.50:104,1.75:88,2.00:77},8:{1.25:78,1.50:67,1.75:59},9:{1.25:61,1.75:52}},2.5:{4:{1.25:469,1.50:391,1.75:335},5:{1.25:300,1.50:250,1.75:214},6:{1.25:208,1.50:174,1.75:149,2.00:132},7:{1.25:153,1.50:128,1.75:109,2.00:96},8:{1.25:96,1.50:83,1.75:72},9:{1.25:75,1.50:64,1.75:56}},3:{4:{1.25:554,1.50:462,1.75:396},5:{1.25:355,1.50:296,1.75:253},6:{1.25:246,1.50:205,1.75:165,2.00:156},7:{1.25:181,1.50:151,1.75:129,2.00:113},8:{1.25:114,1.50:98,1.75:86},9:{1.25:89,1.50:76,1.75:67}}},275:{2:{4:{1.25:432,1.50:360,1.75:308},5:{1.25:276,1.50:230,1.75:197},6:{1.25:192,1.50:160,1.75:137,2.00:122},7:{1.25:141,1.50:117,1.75:101,2.00:89},8:{1.25:90,1.50:77,1.75:67},9:{1.25:71,1.50:61,1.75:53}},2.5:{4:{1.25:532,1.50:443,1.75:380},5:{1.25:341,1.50:284,1.75:243},6:{1.25:236,1.50:197,1.75:169,2.00:151},7:{1.25:145,1.50:145,1.75:124,2.00:110},8:{1.25:111,1.50:95,1.75:83},9:{1.25:88,1.50:75,1.75:64}},3:{4:{1.25:629,1.50:525,1.75:450},5:{1.25:403,1.50:336,1.75:288},6:{1.25:280,1.50:233,1.75:200,2.00:179},7:{1.25:206,1.50:171,1.75:147,2.00:130},8:{1.25:131,1.50:112,1.75:98},9:{1.25:104,1.50:89,1.75:77}}},300:{2:{4:{1.25:485,1.50:404,1.75:347},5:{1.25:311,1.50:259,1.75:222},6:{1.25:216,1.50:180,1.75:154,2.00:138},7:{1.25:158,1.50:132,1.75:115,2.00:100},8:{1.25:101,1.50:87,1.75:76},9:{1.25:79,1.75:65,2.00:59}},2.5:{4:{1.50:499,1.75:427},5:{1.25:383,1.50:319,1.75:274},6:{1.25:266,1.50:222,1.75:190,2.00:170},7:{1.25:195,1.50:163,1.75:142,2.00:124},8:{1.25:125,1.50:107,1.75:94},9:{1.25:98,1.50:84,1.75:73}},3:{5:{1.25:453,1.50:378,1.75:324},6:{1.25:315,1.50:262,1.75:225,2.00:202},7:{1.25:231,1.50:193,1.75:168,2.00:147},8:{1.25:148,1.50:127,1.75:111},9:{1.25:116,1.50:99,1.75:87}}}}};\r\n\r\nconst CORREAS_Z={alturas:[125,150,175,200,225,250,275,300],espesores:[2,2.5,3],tabla:{125:{2:{4:{1.25:107,1.50:89,1.75:76},5:{1.25:67,1.50:56},6:{},7:{},8:{},9:{}},2.5:{4:{1.25:131,1.50:109,1.75:93},5:{1.25:82,1.50:69,1.75:59},6:{1.25:56},7:{},8:{},9:{}},3:{4:{1.25:153,1.50:128,1.75:109},5:{1.25:96,1.50:80,1.75:69},6:{1.25:66,1.50:55},7:{},8:{},9:{}}},150:{2:{4:{1.25:138,1.50:115,1.75:99},5:{1.25:87,1.50:73,1.75:62},6:{1.25:60,1.50:50},7:{},8:{},9:{}},2.5:{4:{1.25:169,1.50:141,1.75:121},5:{1.25:107,1.50:89,1.75:76},6:{1.25:73,1.50:61,1.75:52},7:{},8:{},9:{}},3:{4:{1.25:199,1.50:166,1.75:142},5:{1.25:126,1.50:105,1.75:90},6:{1.25:86,1.50:71,1.75:61},7:{},8:{},9:{}}},175:{2:{4:{1.25:172,1.50:144,1.75:123},5:{1.25:109,1.50:91,1.75:78},6:{1.25:75,1.50:62,1.75:53},7:{},8:{},9:{}},2.5:{4:{1.25:212,1.50:176,1.75:151},5:{1.25:134,1.50:111,1.75:96},6:{1.25:92,1.50:76,1.75:65},7:{},8:{},9:{}},3:{4:{1.25:249,1.50:208,1.75:178},5:{1.25:158,1.50:131,1.75:113},6:{1.25:108,1.50:90,1.75:77},7:{},8:{},9:{}}},200:{2:{4:{1.25:276,1.50:230,1.75:197},5:{1.25:177,1.50:147,1.75:126},6:{1.25:123,1.50:102,1.75:88,2.00:75},7:{1.25:90,1.50:75},8:{},9:{}},2.5:{4:{1.25:339,1.50:283,1.75:242},5:{1.25:217,1.50:181,1.75:155},6:{1.25:151,1.50:126,1.75:108,2.00:93},7:{1.25:111,1.50:92,1.75:79,2.00:67},8:{},9:{}},3:{4:{1.25:400,1.50:334,1.75:286},5:{1.25:256,1.50:213,1.75:183},6:{1.25:178,1.50:148,1.75:127,2.00:110},7:{1.25:131,1.50:109,1.75:93,2.00:80},8:{},9:{}}},225:{2:{4:{1.25:320,1.50:267,1.75:229},5:{1.25:205,1.50:171,1.75:146},6:{1.25:142,1.50:119,1.75:102,2.00:89},7:{1.25:105,1.50:87,1.75:75,2.00:64},8:{},9:{}},2.5:{4:{1.25:394,1.50:328,1.75:281},5:{1.25:252,1.50:210,1.75:180},6:{1.25:175,1.50:146,1.75:125,2.00:110},7:{1.25:129,1.50:107,1.75:92,2.00:79},8:{1.25:82},9:{}},3:{4:{1.25:465,1.50:388,1.75:332},5:{1.25:298,1.50:248,1.75:213},6:{1.25:207,1.50:172,1.75:148,2.00:130},7:{1.25:152,1.50:127,1.75:108,2.00:94},8:{1.25:95,1.75:81},9:{}}},250:{2:{4:{1.25:367,1.50:306,1.75:262},5:{1.25:235,1.50:196,1.75:168},6:{1.25:163,1.50:136,1.75:117,2.00:105},7:{1.25:120,1.50:102,1.75:87,2.00:77},8:{1.25:77,1.50:66,1.75:58},9:{1.25:60}},2.5:{4:{1.25:452,1.50:377,1.75:323},5:{1.25:289,1.50:241,1.75:207},6:{1.25:201,1.50:167,1.75:143,2.00:130},7:{1.25:148,1.50:126,1.75:108,2.00:94},8:{1.25:95,1.50:82,1.75:71},9:{1.25:74,1.50:63}},3:{4:{1.25:534,1.50:445,1.75:381},5:{1.25:342,1.50:285,1.75:244},6:{1.25:237,1.50:198,1.75:170,2.00:154},7:{1.25:174,1.50:149,1.75:128,2.00:112},8:{1.25:113,1.50:97,1.75:85},9:{1.25:88,1.50:75,1.75:66}}},275:{2:{4:{1.25:417,1.50:347,1.75:298},5:{1.25:267,1.50:222,1.75:190},6:{1.25:185,1.50:154,1.75:132,2.00:121},7:{1.25:136,1.50:113,1.75:97,2.00:88},8:{1.25:87,1.50:74,1.75:67},9:{1.25:69,1.50:59,1.75:49}},2.5:{4:{1.25:513,1.50:428,1.75:367},5:{1.25:328,1.50:274,1.75:235},6:{1.25:228,1.50:190,1.75:163,2.00:149},7:{1.25:168,1.50:140,1.75:120,2.00:109},8:{1.25:107,1.50:92,1.75:82},9:{1.25:84,1.50:72,1.75:62}},3:{4:{1.25:607,1.50:506,1.75:433},5:{1.25:388,1.50:324,1.75:277},6:{1.25:270,1.50:225,1.75:193,2.00:177},7:{1.25:198,1.50:165,1.75:142,2.00:129},8:{1.25:126,1.50:108,1.75:98},9:{1.25:100,1.50:86,1.75:76}}},300:{2:{4:{1.25:468,1.50:390,1.75:335},5:{1.25:300,1.50:250,1.75:214},6:{1.25:208,1.50:174,1.75:149,2.00:137},7:{1.25:153,1.50:127,1.75:109,2.00:99},8:{1.25:98,1.50:84,1.75:75},9:{1.25:77,1.50:66,1.75:59}},2.5:{4:{1.50:481,1.75:412},5:{1.25:370,1.50:308,1.75:264},6:{1.25:257,1.50:214,1.75:183,2.00:169},7:{1.25:189,1.50:157,1.75:135,2.00:123},8:{1.25:120,1.50:103,1.75:93},9:{1.25:95,1.50:81,1.75:73}},3:{5:{1.25:437,1.50:364,1.75:312},6:{1.25:304,1.50:253,1.75:217,2.00:201},7:{1.25:223,1.50:186,1.75:159,2.00:146},8:{1.25:142,1.50:122,1.75:110},9:{1.25:112,1.50:96,1.75:86}}}}};\r\n\r\nconst MASTER_C={nombre:'Master-C Roof',espesores:[30,40,50,60,80,100,120],pesos:{30:9.8,40:10.2,50:10.6,60:11.0,80:11.8,100:12.6,120:13.4},tabla:{30:{150:331,175:233,200:172,225:168,250:137},40:{150:409,175:297,200:225,225:213,250:176,275:149,300:127,325:109},50:{150:489,175:364,200:281,225:260,250:218,275:186,300:160,325:139,350:122,375:107},60:{175:432,200:339,225:309,250:261,275:224,300:194,325:170,350:150,375:133,400:119,450:96},80:{200:458,225:410,250:350,275:304,300:266,325:235,350:209,375:187,400:168,450:138},100:{250:442,275:386,300:340,325:302,350:271,375:243,400:220,450:182},120:{275:470,300:416,325:371,350:334,375:301,400:274,450:228}}};\r\nconst MASTER_F={nombre:'Master-F Facade',espesores:[35,40,50,60,80,100],pesos:{35:9.7,40:10.1,50:10.5,60:10.9,80:11.7,100:12.5},tabla:{35:{100:399,150:240,175:195,200:161,225:135,250:115,275:98,300:85},40:{100:462,150:281,175:229,200:190,225:160,250:137,275:118,300:102,325:89},50:{150:363,175:298,200:249,225:211,250:182,275:157,300:137,325:120,350:106,375:94},60:{150:368,175:309,200:264,225:227,250:198,275:174,300:153,325:136,350:121,375:108},80:{200:431,225:370,250:322,275:282,300:249,325:222,350:198,375:178,400:160},100:{225:479,250:418,275:368,300:327,325:292,350:262,375:237,400:214}}};\r\nconst MASTER_MODUL={nombre:'Master-Modul',espesores:[35,40,50],pesos:{35:8.96,40:9.16,50:9.55},tabla:{35:{150:207,175:162,200:129,225:104,250:84,275:69,300:58,325:48},40:{150:245,175:193,200:155,225:126,250:103,275:85,300:71,325:60,350:51},50:{150:284,175:226,200:182,225:149,250:123,275:102,300:86,325:73,350:62,375:53,400:46}}};\r\nconst MASTER_FRIGO={nombre:'Master-Frigo',espesores:[60,80,100,120,150],pesos:{60:9.94,80:10.72,100:11.50,120:12.28,150:13.45},tabla:{60:{150:413,175:332,200:272,225:225,250:188,275:159,300:135,325:115,350:99,375:85,400:74,450:57},80:{175:471,200:391,225:328,250:278,275:237,300:204,325:176,350:153,375:133,400:117,450:91},100:{225:433,250:371,275:319,300:277,325:241,350:211,375:186,400:164,450:129,500:103},120:{250:466,275:404,300:352,325:309,350:272,375:241,400:214,450:171,500:138},150:{275:533,300:469,325:415,350:368,375:328,400:294,450:237,500:194}}};\r\n\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ ESTADO\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nvar S={\r\n  cat:'perf', fam:'minionda', panelTipo:'masterC',\r\n  prod:null, altC:null, espC:null,\r\n  espesor:null, vanos:'1', luz:null, posicion:'A', sobrecarga:0,\r\n  sepP:null, sepC:null,\r\n  panelEsp:null, panelDist:null,\r\n  resultado:null\r\n};\r\n\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ DARK MODE\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nfunction setThemeIcons(isDark){\r\n  ['iDk','mDk'].forEach(function(id){\r\n    var el=document.getElementById(id);\r\n    if(el)el.style.display=isDark?'none':'';\r\n  });\r\n  ['iLt','mLt'].forEach(function(id){\r\n    var el=document.getElementById(id);\r\n    if(el)el.style.display=isDark?'':'none';\r\n  });\r\n}\r\nfunction toggleDark(){\r\n  var d=document.body.classList.toggle('dark');\r\n  sessionStorage.setItem('dk',d?'1':'0');\r\n  setThemeIcons(d);\r\n}\r\nfunction scrollToCalc(e){\r\n  if(e)e.preventDefault();\r\n  var el=document.getElementById('calc-start');\r\n  if(el)el.scrollIntoView({behavior:'smooth',block:'start'});\r\n}\r\n\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ CATEGOR\u00cdA\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nfunction switchCat(c){\r\n  S.cat=c;\r\n  document.getElementById('t-perf').classList.toggle('active',c==='perf');\r\n  document.getElementById('t-sw').classList.toggle('active',c==='sw');\r\n  document.getElementById('s-perf').style.display=c==='perf'?'':'none';\r\n  document.getElementById('s-sw').style.display=c==='sw'?'':'none';\r\n  ocultarRes();\r\n  if(c==='sw')evaluarSW();\r\n  if(c==='perf'&&isSheetFamily(S.fam))evaluarCorrugated();\r\n  if(c==='perf'&&!isSheetFamily(S.fam))evaluarCorrea();\r\n}\r\n\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ FAMILIA PERFILES\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nfunction isSheetFamily(f){return f==='minionda'||f==='trapezoidal';}\r\nfunction getSheetProfiles(){\r\n  return PERFILES_CHAPA.filter(function(p){return p.fam===S.fam;});\r\n}\r\nfunction switchFam(f){\r\n  S.fam=f;\r\n  S.altC=null;S.espC=null;S.sepP=null;S.sepC=null;S.prod=null;S.espesor=null;S.luz=null;S.posicion='A';\r\n  document.getElementById('luz').disabled=false;\r\n  document.getElementById('luz').placeholder='Ej: 1.50';\r\n  document.getElementById('luz').value='';\r\n  document.getElementById('f-mo').style.display=isSheetFamily(f)?'':'none';\r\n  document.getElementById('f-cc').style.display=f==='correaC'?'':'none';\r\n  document.getElementById('f-cz').style.display=f==='correaZ'?'':'none';\r\n  document.getElementById('t-mo').classList.toggle('active',f==='minionda');\r\n  var ttr=document.getElementById('t-tr');if(ttr)ttr.classList.toggle('active',f==='trapezoidal');\r\n  var ttr=document.getElementById('t-tr');if(ttr)ttr.classList.toggle('active',f==='trapezoidal');\r\n  document.getElementById('t-cc').classList.toggle('active',f==='correaC');\r\n  document.getElementById('t-cz').classList.toggle('active',f==='correaZ');\r\n  document.getElementById('pm-mo').style.display=isSheetFamily(f)?'':'none';\r\n  document.getElementById('pm-co').style.display=isSheetFamily(f)?'none':'';\r\n  ocultarRes();\r\n  if(isSheetFamily(f)){renderCorrugated();renderEspMO();evaluarCorrugated();}\r\n  else evaluarCorrea();\r\n  actualizarProg();\r\n}\r\n\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ MINIONDA\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nfunction renderCorrugated(){\r\n  var list=document.getElementById('prodList');list.innerHTML='';\r\n  getSheetProfiles().forEach(function(p){\r\n    var d=document.createElement('div');d.className='prod';d.id='pi_'+p.id;\r\n    d.onclick=function(){selProd(p.id);};\r\n    d.innerHTML='<div class=\"prod-name\">'+esc(p.nombre)+'<\/div><div class=\"prod-sub\">'+esc(p.tipo)+'<\/div><div class=\"prod-tags\"><span class=\"tag\">H'+p.alturaOnda+'<\/span><span class=\"tag\">'+p.ancho+'mm \u00fatil<\/span><\/div>';\r\n    d.innerHTML='<div class=\"prod-name\">'+esc(p.nombre)+'<\/div><div class=\"prod-sub\">'+esc(p.tipo)+'<\/div><div class=\"prod-tags\"><span class=\"tag\">H'+p.alturaOnda+'<\/span><span class=\"tag\">'+p.ancho+'mm util<\/span>'+(p.calculable?'<span class=\"tag\">Tabla real<\/span>':'<span class=\"tag\">Ficha tecnica<\/span>')+'<\/div>';\r\n    list.appendChild(d);\r\n  });\r\n  renderEspMO();\r\n}\r\nfunction getCorrugatedTablaByState(p){\r\n  if(!p)return null;\r\n  if(p.hasPosition)return ((p.tabla[S.posicion]||{})[S.vanos])||null;\r\n  return p.tabla[S.vanos]||null;\r\n}\r\nfunction selProd(id){\r\n  S.prod=PERFILES_CHAPA.find(function(p){return p.id===id;});\r\n  S.espesor=null;\r\n  document.querySelectorAll('.prod').forEach(function(c){c.classList.remove('sel');});\r\n  document.getElementById('pi_'+id).classList.add('sel');\r\n  document.getElementById('alPerfil').classList.remove('show');\r\n  document.getElementById('luz').max=S.prod.maxLuz;\r\n  document.getElementById('posGrp').style.display=S.prod.hasPosition?'':'none';\r\n  S.posicion='A';\r\n  document.getElementById('posicion').value='A';\r\n  document.getElementById('luz').max=S.prod.maxLuz||'';\r\n  document.getElementById('luz').disabled=!S.prod.calculable;\r\n  document.getElementById('luz').placeholder=S.prod.calculable?'Ej: 1.50':'No disponible en esta ficha';\r\n  if(!S.prod.calculable)document.getElementById('luz').value='';\r\n  document.getElementById('posGrp').style.display=S.prod.calculable&&S.prod.hasPosition?'':'none';\r\n  renderEspMO();\r\n  evaluarCorrugated();\r\n  actualizarProg();\r\n}\r\n\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ CORREA \u2014 MOTOR REACTIVO\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nfunction renderEspMO(){\r\n  var c=document.getElementById('phMO');if(!c)return;\r\n  c.innerHTML='';\r\n  if(!S.prod){\r\n    var empty=document.createElement('div');\r\n    empty.className='pill pdis';\r\n    empty.textContent='Selecciona un perfil arriba';\r\n    c.appendChild(empty);\r\n    return;\r\n  }\r\n  S.prod.espesores.forEach(function(e){\r\n    var b=document.createElement('div');\r\n    b.className='pill';\r\n    b.textContent=e+' mm';\r\n    b.id='pMO'+String(e).replace('.','_');\r\n    b.onclick=function(){toggleEspMO(e);};\r\n    c.appendChild(b);\r\n  });\r\n}\r\nfunction toggleEspMO(e){\r\n  if(!S.prod)return;\r\n  S.espesor=(S.espesor===e)?null:e;\r\n  evaluarCorrugated();\r\n  actualizarProg();\r\n}\r\nfunction evaluarCorrugated(){\r\n  var hint=document.getElementById('hintMO');\r\n  var hintT=document.getElementById('hintMOt');\r\n  if(!hint||!hintT)return;\r\n  S.posicion=document.getElementById('posicion').value||'A';\r\n  if(!S.prod){\r\n    renderEspMO();\r\n    hint.style.display='none';\r\n    ocultarRes();\r\n    return;\r\n  }\r\n  if(!S.prod.calculable){\r\n    S.prod.espesores.forEach(function(e){\r\n      var el=document.getElementById('pMO'+String(e).replace('.','_'));if(!el)return;\r\n      el.classList.toggle('active',S.espesor===e);\r\n      el.removeAttribute('data-badge');\r\n      el.classList.remove('pill-ok','pill-warn','pill-fail','pdis');\r\n    });\r\n    hintT.textContent=S.prod.nota||'La ficha tecnica de este perfil no incluye tabla de sobrecargas admisibles.';\r\n    hint.style.display='';\r\n    ocultarRes();\r\n    return;\r\n  }\r\n  var sb=parseFloat(document.getElementById('sobrecarga').value)||0;\r\n  var lv=parseFloat(document.getElementById('luz').value);\r\n  var hasLuz=!isNaN(lv)&&lv>0;\r\n  var inRange=hasLuz&&lv>=0.5&&lv<=S.prod.maxLuz;\r\n  var tp=getCorrugatedTablaByState(S.prod)||{};\r\n\r\n  S.prod.espesores.forEach(function(e){\r\n    var el=document.getElementById('pMO'+String(e).replace('.','_'));if(!el)return;\r\n    el.classList.toggle('active',S.espesor===e);\r\n    el.removeAttribute('data-badge');\r\n    el.classList.remove('pill-ok','pill-warn','pill-fail','pdis');\r\n    if(S.espesor===e)return;\r\n    if(!inRange){\r\n      if(S.prod.pesos&&S.prod.pesos[String(e)]!==undefined)el.setAttribute('data-badge',String(S.prod.pesos[String(e)]).replace('.',',')+' kg\/m\u00b2');\r\n      return;\r\n    }\r\n    var fila=tp[String(e)];\r\n    if(!fila)return;\r\n    var cap=lerp(fila,lv);\r\n    if(sb>0){\r\n      if(cap>=sb*1.2){el.setAttribute('data-badge','\u2713 '+cap+' kg\/m\u00b2');el.classList.add('pill-ok');}\r\n      else if(cap>=sb){el.setAttribute('data-badge','~ '+cap+' kg\/m\u00b2');el.classList.add('pill-warn');}\r\n      else{el.setAttribute('data-badge','\u2717 '+cap);el.classList.add('pill-fail');}\r\n    } else {\r\n      el.setAttribute('data-badge',cap+' kg\/m\u00b2');\r\n    }\r\n  });\r\n\r\n  if(!hasLuz){\r\n    hintT.textContent='Indica la luz libre para comparar espesores y ver su capacidad.';\r\n    hint.style.display='';\r\n    ocultarRes();\r\n    return;\r\n  }\r\n  if(!inRange){\r\n    hintT.textContent='La luz debe estar entre 0,5 m y '+S.prod.maxLuz+' m para esta chapa.';\r\n    hint.style.display='';\r\n    ocultarRes();\r\n    return;\r\n  }\r\n  if(!S.espesor){\r\n    hintT.textContent=sb>0?'Choose thickness: pills show whether they meet your reference load.':'Choose thickness: pills show the admissible load for this span.';\r\n    hint.style.display='';\r\n    ocultarRes();\r\n    return;\r\n  }\r\n\r\n  hintT.textContent='Combinaci\u00f3n lista para calcular con '+S.espesor+' mm'+(S.prod.hasPosition?' en posici\u00f3n '+S.posicion:'')+'.';\r\n  hint.style.display='';\r\n  S.luz=lv;\r\n  S.sobrecarga=sb;\r\n  hintT.textContent='Resultado actualizado automaticamente con '+S.espesor+' mm'+(S.prod.hasPosition?' en posicion '+S.posicion:'')+'.';\r\n  var filaSel=tp[String(S.espesor)];\r\n  if(!filaSel){ocultarRes();return;}\r\n  var capSel=lerp(filaSel,lv);\r\n  S.resultado={capAdmisible:capSel};\r\n  renderResCorrugated(S.prod,capSel,sb,tp,S.espesor);\r\n}\r\nfunction getD(){return S.fam==='correaC'?CORREAS_C:CORREAS_Z;}\r\nfunction getT(){return S.fam==='correaC'?'C':'Z';}\r\n\r\n\/\/ \u00bfExiste al menos un valor en la tabla con estas restricciones? null=cualquiera\r\nfunction tieneValor(alt,esp,sp,sc){\r\n  var D=getD();\r\n  var alturas=alt?[alt]:D.alturas;\r\n  var espesores=esp?[esp]:D.espesores;\r\n  var porticos=sp?[sp]:[4,5,6,7,8,9];\r\n  var correas=sc?[sc]:[1.25,1.50,1.75,2.00];\r\n  for(var ai=0;ai<alturas.length;ai++)\r\n    for(var ei=0;ei<espesores.length;ei++)\r\n      for(var pi=0;pi<porticos.length;pi++)\r\n        for(var ci=0;ci<correas.length;ci++){\r\n          var tbl=D.tabla[alturas[ai]];\r\n          if(!tbl)continue;\r\n          var te=tbl[espesores[ei]];\r\n          if(!te)continue;\r\n          var tp=te[porticos[pi]];\r\n          if(!tp)continue;\r\n          if(tp[correas[ci]]!==undefined)return true;\r\n        }\r\n  return false;\r\n}\r\n\r\nfunction initCP(t){\r\n  var D=t==='C'?CORREAS_C:CORREAS_Z;\r\n  var cA=document.getElementById('phA'+t);cA.innerHTML='';\r\n  D.alturas.forEach(function(h){\r\n    var b=document.createElement('div');b.className='pill';b.textContent=h;\r\n    b.id='pA'+t+h;b.onclick=function(){toggleAlt(t,h);};cA.appendChild(b);\r\n  });\r\n  var cE=document.getElementById('phE'+t);cE.innerHTML='';\r\n  D.espesores.forEach(function(e){\r\n    var b=document.createElement('div');b.className='pill';b.textContent=e+' mm';\r\n    b.id='pE'+t+String(e).replace('.','_');b.onclick=function(){toggleEsp(t,e);};cE.appendChild(b);\r\n  });\r\n}\r\n\r\nfunction toggleAlt(t,h){\r\n  if(S.fam!=='correa'+t)return;\r\n  S.altC=(S.altC===h)?null:h;\r\n  evaluarCorrea();actualizarProg();\r\n}\r\nfunction toggleEsp(t,e){\r\n  if(S.fam!=='correa'+t)return;\r\n  S.espC=(S.espC===e)?null:e;\r\n  evaluarCorrea();actualizarProg();\r\n}\r\nfunction setV(v){\r\n  S.vanos=v;\r\n  ['1','2','3'].forEach(function(n){document.getElementById('vp'+n).classList.toggle('active',n===v);});\r\n  if(S.fam==='minionda')evaluarCorrugated();\r\n  actualizarProg();\r\n}\r\nfunction setSep(v){\r\n  S.sepP=(S.sepP===v)?null:v;\r\n  evaluarCorrea();actualizarProg();\r\n}\r\nfunction setSC(v){\r\n  S.sepC=(S.sepC===v)?null:v;\r\n  evaluarCorrea();actualizarProg();\r\n}\r\n\r\nfunction evaluarCorrea(){\r\n  var D=getD();var t=getT();\r\n  var sb=parseFloat(document.getElementById('sobrecarga').value)||0;\r\n\r\n  \/\/ \u2500\u2500 HELPER: valor m\u00e1ximo para una combinaci\u00f3n de restricciones \u2500\u2500\r\n  \/\/ Devuelve el valor de la celda si la combinaci\u00f3n es \u00fanica, o el m\u00e1x si hay varias\r\n  function maxValor(alt,esp,sp,sc){\r\n    var alturas=alt?[alt]:D.alturas;\r\n    var espesores=esp?[esp]:D.espesores;\r\n    var porticos=sp?[sp]:[4,5,6,7,8,9];\r\n    var correas=sc?[sc]:[1.25,1.50,1.75,2.00];\r\n    var max=null;\r\n    for(var ai=0;ai<alturas.length;ai++)\r\n      for(var ei=0;ei<espesores.length;ei++)\r\n        for(var pi=0;pi<porticos.length;pi++)\r\n          for(var ci=0;ci<correas.length;ci++){\r\n            var v=(D.tabla[alturas[ai]]||{});\r\n            v=(v[espesores[ei]]||{});\r\n            v=(v[porticos[pi]]||{});\r\n            v=v[correas[ci]];\r\n            if(v!==undefined&&(max===null||v>max))max=v;\r\n          }\r\n    return max; \/\/ null si no hay dato\r\n  }\r\n\r\n  \/\/ \u2500\u2500 ALTURAS: filtrar por espC+sepP+sepC, y por carga si la hay \u2500\u2500\r\n  D.alturas.forEach(function(h){\r\n    var el=document.getElementById('pA'+t+h);if(!el)return;\r\n    var maxCap=maxValor(h,S.espC,S.sepP,S.sepC);\r\n    var tieneDato=maxCap!==null;\r\n    var cumpleCarga=sb<=0||maxCap===null||(maxCap>=sb);\r\n    var isActive=S.altC===h;\r\n    var disabled=!tieneDato&&!isActive;\r\n\r\n    el.classList.toggle('active',isActive);\r\n    el.classList.toggle('pdis',disabled);\r\n    \/\/ Quitar badges anteriores\r\n    el.removeAttribute('data-badge');el.classList.remove('pill-ok','pill-warn','pill-fail');\r\n    \/\/ A\u00f1adir badge de valor si sepP+sepC est\u00e1n fijos y NO hay altura elegida a\u00fan\r\n    if(!isActive&&tieneDato&&S.sepP&&S.sepC&&!S.altC){\r\n      if(sb>0){\r\n        if(maxCap>=sb*1.2){el.setAttribute('data-badge','\u2713');el.classList.add('pill-ok');}\r\n        else if(maxCap>=sb){el.setAttribute('data-badge','~');el.classList.add('pill-warn');}\r\n        else{el.setAttribute('data-badge','\u2717');el.classList.add('pill-fail');}\r\n      }\r\n    }\r\n  });\r\n\r\n  \/\/ \u2500\u2500 ESPESORES: filtrar por altC+sepP+sepC, y por carga \u2500\u2500\r\n  D.espesores.forEach(function(e){\r\n    var el=document.getElementById('pE'+t+String(e).replace('.','_'));if(!el)return;\r\n    var maxCap=maxValor(S.altC,e,S.sepP,S.sepC);\r\n    var tieneDato=maxCap!==null;\r\n    var isActive=S.espC===e;\r\n    var disabled=!tieneDato&&!isActive;\r\n\r\n    el.classList.toggle('active',isActive);\r\n    el.classList.toggle('pdis',disabled);\r\n    el.removeAttribute('data-badge');el.classList.remove('pill-ok','pill-warn','pill-fail');\r\n    \/\/ Badge de capacidad si sepP+sepC+altC fijos y no hay espesor elegido\r\n    if(!isActive&&tieneDato&&S.sepP&&S.sepC&&S.altC&&!S.espC){\r\n      if(sb>0){\r\n        if(maxCap>=sb*1.2){el.setAttribute('data-badge','\u2713 '+maxCap+' kg\/m\u00b2');el.classList.add('pill-ok');}\r\n        else if(maxCap>=sb){el.setAttribute('data-badge','~ '+maxCap+' kg\/m\u00b2');el.classList.add('pill-warn');}\r\n        else{el.setAttribute('data-badge','\u2717 '+maxCap);el.classList.add('pill-fail');}\r\n      } else {\r\n        el.setAttribute('data-badge',maxCap+' kg\/m\u00b2');\r\n      }\r\n    }\r\n  });\r\n\r\n  \/\/ \u2500\u2500 P\u00d3RTICOS \u2500\u2500\r\n  [4,5,6,7,8,9].forEach(function(p){\r\n    var el=document.getElementById('sp'+p);if(!el)return;\r\n    var ok=tieneValor(S.altC,S.espC,p,S.sepC);\r\n    el.classList.toggle('active',S.sepP===p);\r\n    el.classList.toggle('sdis',!ok&&S.sepP!==p);\r\n  });\r\n\r\n  \/\/ \u2500\u2500 SEP CORREAS \u2500\u2500\r\n  var scids={1.25:'sc125',1.50:'sc150',1.75:'sc175',2.00:'sc200'};\r\n  [1.25,1.50,1.75,2.00].forEach(function(s){\r\n    var el=document.getElementById(scids[s]);if(!el)return;\r\n    var ok=tieneValor(S.altC,S.espC,S.sepP,s);\r\n    var isActive=S.sepC!==null&&Math.abs(S.sepC-s)<0.001;\r\n    el.classList.toggle('active',isActive);\r\n    el.classList.toggle('sdis',!ok&&!isActive);\r\n  });\r\n\r\n  \/\/ \u2500\u2500 HINT \u2500\u2500\r\n  var hint=document.getElementById('hintC');\r\n  var hintT=document.getElementById('hintCt');\r\n  var falta=[];\r\n  if(!S.altC)falta.push('altura');\r\n  if(!S.espC)falta.push('espesor');\r\n  if(!S.sepP)falta.push('sep. p\u00f3rticos');\r\n  if(!S.sepC)falta.push('sep. correas');\r\n  if(S.altC||S.espC||S.sepP||S.sepC){\r\n    if(falta.length===0){\r\n      hintT.textContent='\u2713 Todo listo \u2014 resultado calculado autom\u00e1ticamente.';\r\n    } else if(S.sepP&&S.sepC&&falta.indexOf('altura')>=0&&falta.indexOf('espesor')>=0){\r\n      hintT.textContent='Choose height and thickness'+(sb>0?' \u2014 those marked \u2713 meet your load of '+sb+' kg\/m\u00b2':' to see the admissible load')+'.';\r\n    } else if(S.sepP&&S.sepC&&S.altC&&falta.indexOf('espesor')>=0){\r\n      hintT.textContent='Choose thickness'+(sb>0?' \u2014 the value shown is the admissible load for your '+sb+' kg\/m\u00b2 reference load':'')+'.';\r\n    } else {\r\n      hintT.textContent='Faltan: '+falta.join(', ')+'.';\r\n    }\r\n    hint.style.display='';\r\n  } else {\r\n    hint.style.display='none';\r\n  }\r\n\r\n  \/\/ \u2500\u2500 AUTOC\u00c1LCULO si completo \u2500\u2500\r\n  if(S.altC&&S.espC&&S.sepP&&S.sepC){\r\n    var tbl=D.tabla[S.altC];\r\n    if(tbl){var te=tbl[S.espC];if(te){var tp=te[S.sepP];if(tp){var cap=tp[S.sepC];if(cap!==undefined){\r\n      S.sobrecarga=sb;S.resultado={capAdmisible:cap};\r\n      renderResCorrea(t,cap,sb,D,tbl);return;\r\n    }}}}\r\n  }\r\n  ocultarRes();\r\n}\r\n\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ PROGRESO\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nfunction actualizarProg(){\r\n  var total,done;\r\n  if(S.cat==='sw'){total=2;done=(S.panelEsp?1:0)+(S.panelDist?1:0);}\r\n  else if(isSheetFamily(S.fam)){\r\n    total=S.prod&&!S.prod.calculable?2:3;\r\n    var luzV=parseFloat(document.getElementById('luz').value)||0;\r\n    done=(S.prod?1:0)+(S.espesor?1:0)+((S.prod&&S.prod.calculable&&luzV>0)?1:0);\r\n  } else {\r\n    total=4;done=(S.altC?1:0)+(S.espC?1:0)+(S.sepP?1:0)+(S.sepC?1:0);\r\n  }\r\n  document.getElementById('progFill').style.width=Math.round(done\/total*100)+'%';\r\n}\r\n\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ PANEL S\u00c1NDWICH\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nfunction initSW(){\r\n  renderPillsSW('masterC');renderPillsSW('masterF');\r\n}\r\nfunction getPanelCfg(t){\r\n  if(t==='masterC')return {data:MASTER_C,suffix:'MC',wrap:'f-mc',tab:'t-mc'};\r\n  if(t==='masterF')return {data:MASTER_F,suffix:'MF',wrap:'f-mf',tab:'t-mf'};\r\n  if(t==='masterModul')return {data:MASTER_MODUL,suffix:'MM',wrap:'f-mm',tab:'t-mm'};\r\n  return {data:MASTER_FRIGO,suffix:'MFR',wrap:'f-mfr',tab:'t-mfr'};\r\n}\r\nfunction renderPillsSW(t){\r\n  var cfg=getPanelCfg(t);\r\n  var D=cfg.data;\r\n  var c=document.getElementById('pes'+cfg.suffix);c.innerHTML='';\r\n  D.espesores.forEach(function(e){\r\n    var b=document.createElement('div');b.className='pill';\r\n    var peso=D.pesos?D.pesos[e]:null;\r\n    b.innerHTML=e+' mm'+(peso?'<span class=\"pill-cap\">'+peso+' kg\/m\u00b2<\/span>':'');\r\n    b.onclick=function(){selEspSW(t,e);};b.id='pSW'+t+e;c.appendChild(b);\r\n  });\r\n}\r\nfunction actualizarPillsSW(){\r\n  \/\/ Cuando hay dist+carga elegidas, colorear espesores\r\n  var sb=parseFloat(document.getElementById('sbSW').value)||0;\r\n  var t=S.panelTipo;\r\n  var D=t==='masterC'?MASTER_C:MASTER_F;\r\n  D.espesores.forEach(function(e){\r\n    var el=document.getElementById('pSW'+t+e);if(!el)return;\r\n    el.removeAttribute('data-badge');el.classList.remove('pill-ok','pill-warn','pill-fail');\r\n    if(el.classList.contains('active'))return;\r\n    if(sb>0&&S.panelDist){\r\n      var cap=D.tabla[e]?D.tabla[e][S.panelDist]:undefined;\r\n      if(cap===undefined)return;\r\n      if(cap>=sb*1.2){el.setAttribute('data-badge','\u2713 '+cap+' kg\/m\u00b2');el.classList.add('pill-ok');}\r\n      else if(cap>=sb){el.setAttribute('data-badge','~ '+cap+' kg\/m\u00b2');el.classList.add('pill-warn');}\r\n      else{el.setAttribute('data-badge','\u2717 '+cap);el.classList.add('pill-fail');}\r\n    } else if(S.panelDist){\r\n      var cap=D.tabla[e]?D.tabla[e][S.panelDist]:undefined;\r\n      if(cap!==undefined)el.setAttribute('data-badge',cap+' kg\/m\u00b2');\r\n    }\r\n  });\r\n}\r\nfunction switchPT(t){\r\n  S.panelTipo=t;S.panelEsp=null;S.panelDist=null;\r\n  document.getElementById('f-mc').style.display=t==='masterC'?'':'none';\r\n  document.getElementById('f-mf').style.display=t==='masterF'?'':'none';\r\n  document.getElementById('t-mc').classList.toggle('active',t==='masterC');\r\n  document.getElementById('t-mf').classList.toggle('active',t==='masterF');\r\n  document.getElementById('grpSW').style.display='none';\r\n  ocultarRes();\r\n}\r\nfunction selEspSW(t,e){\r\n  S.panelEsp=e;S.panelDist=null;\r\n  document.querySelectorAll('#pes'+(t==='masterC'?'MC':'MF')+' .pill').forEach(function(p){p.classList.remove('active');});\r\n  document.getElementById('pSW'+t+e).classList.add('active');\r\n  var D=t==='masterC'?MASTER_C:MASTER_F;\r\n  var dists=Object.keys(D.tabla[e]).map(Number).sort(function(a,b){return a-b;});\r\n  var grid=document.getElementById('swGrid');\r\n  var cols=dists.length<=4?dists.length:dists.length<=6?3:4;\r\n  grid.style.gridTemplateColumns='repeat('+cols+',1fr)';grid.innerHTML='';\r\n  dists.forEach(function(d){\r\n    var b=document.createElement('div');b.className='sb';b.textContent=d+' cm';\r\n    b.onclick=function(){selDistSW(t,e,d);};b.id='sSW'+d;grid.appendChild(b);\r\n  });\r\n  document.getElementById('grpSW').style.display='';\r\n  document.getElementById('hSW').style.display='';\r\n  document.getElementById('hSWt').textContent='Panel '+e+'mm. Distancias disponibles: '+dists[0]+'\u2013'+dists[dists.length-1]+'cm.';\r\n  actualizarProg();ocultarRes();\r\n}\r\nfunction selDistSW(t,e,d){\r\n  S.panelDist=d;\r\n  document.querySelectorAll('#swGrid .sb').forEach(function(b){b.classList.remove('active');});\r\n  var el=document.getElementById('sSW'+d);if(el)el.classList.add('active');\r\n  document.getElementById('hSWt').textContent=d+'cm seleccionado. Pulsa Calcular para ver la sobrecarga.';\r\n  actualizarPillsSW();actualizarProg();\r\n}\r\n\r\n\/\/ Versi\u00f3n reactiva visible para panel s\u00e1ndwich\r\nfunction getSWData(t){return getPanelCfg(t).data;}\r\nfunction getSWDists(t){\r\n  var map={},D=getSWData(t);\r\n  D.espesores.forEach(function(e){\r\n    Object.keys(D.tabla[e]||{}).forEach(function(d){map[d]=1;});\r\n  });\r\n  return Object.keys(map).map(Number).sort(function(a,b){return a-b;});\r\n}\r\nfunction initSW(){\r\n  renderPillsSW('masterC');\r\n  renderPillsSW('masterF');\r\n  renderPillsSW('masterModul');\r\n  renderPillsSW('masterFrigo');\r\n  renderGridSW('masterC');\r\n  evaluarSW();\r\n}\r\nfunction renderGridSW(t){\r\n  var dists=getSWDists(t);\r\n  var grid=document.getElementById('swGrid');\r\n  var cols=dists.length<=4?dists.length:dists.length<=6?3:4;\r\n  grid.style.gridTemplateColumns='repeat('+cols+',1fr)';\r\n  grid.innerHTML='';\r\n  dists.forEach(function(d){\r\n    var b=document.createElement('div');\r\n    b.className='sb';\r\n    b.textContent=d+' cm';\r\n    b.id='sSW'+d;\r\n    b.onclick=function(){toggleDistSW(d);};\r\n    grid.appendChild(b);\r\n  });\r\n}\r\nfunction actualizarPillsSW(){evaluarSW();}\r\nfunction switchPT(t){\r\n  S.panelTipo=t;S.panelEsp=null;S.panelDist=null;\r\n  ['masterC','masterF','masterModul','masterFrigo'].forEach(function(key){\r\n    var cfg=getPanelCfg(key);\r\n    document.getElementById(cfg.wrap).style.display=key===t?'':'none';\r\n    document.getElementById(cfg.tab).classList.toggle('active',key===t);\r\n  });\r\n  renderGridSW(t);\r\n  document.getElementById('hSW').style.display='none';\r\n  ocultarRes();\r\n  evaluarSW();\r\n}\r\nfunction selEspSW(t,e){\r\n  if(S.panelTipo!==t)return;\r\n  S.panelEsp=(S.panelEsp===e)?null:e;\r\n  evaluarSW();\r\n  actualizarProg();\r\n}\r\nfunction toggleDistSW(d){\r\n  S.panelDist=(S.panelDist===d)?null:d;\r\n  evaluarSW();\r\n  actualizarProg();\r\n}\r\nfunction evaluarSW(){\r\n  var D=getSWData(S.panelTipo);\r\n  var sb=parseFloat(document.getElementById('sbSW').value)||0;\r\n  D.espesores.forEach(function(e){\r\n    var el=document.getElementById('pSW'+S.panelTipo+e);if(!el)return;\r\n    var cap=S.panelDist?(D.tabla[e]||{})[S.panelDist]:undefined;\r\n    var active=S.panelEsp===e;\r\n    var available=S.panelDist?cap!==undefined:true;\r\n    el.classList.toggle('active',active);\r\n    el.classList.toggle('pdis',!available&&!active);\r\n    el.removeAttribute('data-badge');el.classList.remove('pill-ok','pill-warn','pill-fail');\r\n    if(active)return;\r\n    if(!S.panelDist){\r\n      if(D.pesos&&D.pesos[e]!==undefined)el.setAttribute('data-badge',String(D.pesos[e]).replace('.',',')+' kg\/m\u00b2');\r\n      return;\r\n    }\r\n    if(cap===undefined)return;\r\n    if(sb>0){\r\n      if(cap>=sb*1.2){el.setAttribute('data-badge','\u2713 '+cap+' kg\/m\u00b2');el.classList.add('pill-ok');}\r\n      else if(cap>=sb){el.setAttribute('data-badge','~ '+cap+' kg\/m\u00b2');el.classList.add('pill-warn');}\r\n      else{el.setAttribute('data-badge','\u2717 '+cap);el.classList.add('pill-fail');}\r\n    } else if(S.panelDist){\r\n      el.setAttribute('data-badge',cap+' kg\/m\u00b2');\r\n    }\r\n  });\r\n  getSWDists(S.panelTipo).forEach(function(d){\r\n    var el=document.getElementById('sSW'+d);if(!el)return;\r\n    var cap=S.panelEsp?(D.tabla[S.panelEsp]||{})[d]:undefined;\r\n    var active=S.panelDist===d;\r\n    var available=S.panelEsp?cap!==undefined:true;\r\n    el.classList.toggle('active',active);\r\n    el.classList.toggle('sdis',!available&&!active);\r\n    el.removeAttribute('data-badge');el.classList.remove('sb-ok','sb-warn','sb-fail');\r\n    if(active||cap===undefined)return;\r\n    if(sb>0&&S.panelEsp){\r\n      if(cap>=sb*1.2){el.setAttribute('data-badge','\u2713');el.classList.add('sb-ok');}\r\n      else if(cap>=sb){el.setAttribute('data-badge','~');el.classList.add('sb-warn');}\r\n      else{el.setAttribute('data-badge','\u2717');el.classList.add('sb-fail');}\r\n    }\r\n  });\r\n  var hint=document.getElementById('hSW');\r\n  var hintT=document.getElementById('hSWt');\r\n  if(S.panelEsp||S.panelDist){\r\n  if(S.panelEsp&&S.panelDist){\r\n      hintT.textContent='Combinaci\u00f3n lista para calcular con '+S.panelEsp+' mm y '+S.panelDist+' cm.';\r\n      hintT.textContent='Resultado actualizado automaticamente con '+S.panelEsp+' mm y '+S.panelDist+' cm.';\r\n    }else if(S.panelDist&&!S.panelEsp){\r\n      hintT.textContent=sb>0?'Choose thickness: pills show whether they meet the reference load.':'Choose thickness: pills show the admissible load at this span.';\r\n    }else{\r\n      hintT.textContent='Elige la distancia entre apoyos para completar la combinaci\u00f3n.';\r\n    }\r\n    hint.style.display='';\r\n  }else{\r\n    hint.style.display='none';\r\n  }\r\n  if(S.panelEsp&&S.panelDist){autoCalcSW();return;}\r\n  ocultarRes();\r\n}\r\nfunction autoCalcSW(){\r\n  var D=getSWData(S.panelTipo);\r\n  var cap=(D.tabla[S.panelEsp]||{})[S.panelDist];\r\n  if(cap===undefined){ocultarRes();return;}\r\n  var sb=parseFloat(document.getElementById('sbSW').value)||0;\r\n  S.sobrecarga=sb;S.resultado={capAdmisible:cap};\r\n  var nom=D.nombre+' '+S.panelEsp+'mm';\r\n  var sub='Espesor '+S.panelEsp+'mm \u00b7 '+S.panelDist+'cm entre apoyos \u00b7 2 spans \u00b7 Chapa 0,50\/0,50mm';\r\n  mostrarBanner(nom,sub,cap,sb);\r\n  var dists=Object.keys(D.tabla[S.panelEsp]).map(Number).sort(function(a,b){return a-b;});\r\n  var tH=document.getElementById('tblH');var tB=document.getElementById('tblB');\r\n  tH.innerHTML='<th>Distancia (cm)<\/th><th>kg\/m\u00b2<\/th>';tB.innerHTML='';\r\n  dists.forEach(function(d){\r\n    var v=D.tabla[S.panelEsp][d];var isSel=d===S.panelDist;\r\n    var tr=document.createElement('tr');if(isSel)tr.classList.add('rsel');\r\n    var vc=v;\r\n    if(isSel)vc='<span class=\"chi\">'+v+'<\/span>';\r\n    else if(sb>0)vc='<span class=\"'+(sb<=v*0.8?'vok':sb<=v?'vwarn':'vfail')+'\">'+v+'<\/span>';\r\n    tr.innerHTML='<td>'+d+'cm<\/td><td style=\"text-align:right\">'+vc+'<\/td>';tB.appendChild(tr);\r\n  });\r\n  document.getElementById('tblTit').textContent=D.nombre+' '+S.panelEsp+'mm \u00e2\u20ac\u201d sobrecargas (kg\/m\u00b2)';\r\n  document.getElementById('tblNota').textContent='2 spans \u00b7 L\/200 \u00b7 chapa 0,50\/0,50mm';\r\n  document.getElementById('notaTec').textContent='L\/200 \u00b7 Sobrecargas no mayoradas \u00b7 EN14509';\r\n  showTabla();\r\n}\r\n\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ CALCULAR\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nfunction onSb(){\r\n  S.sobrecarga=parseFloat(document.getElementById('sobrecarga').value)||0;\r\n  \/\/ Si hay correa activa, re-evaluar para actualizar badges\r\n  if(S.fam==='correaC'||S.fam==='correaZ') evaluarCorrea();\r\n  if(isSheetFamily(S.fam)) evaluarCorrugated();\r\n  \/\/ Si ya hay resultado, actualizar el banner\r\n  if(S.resultado) mostrarBanner(document.getElementById('rNom').textContent,document.getElementById('rSub').textContent,S.resultado.capAdmisible,S.sobrecarga);\r\n}\r\n\r\nfunction calcular(){\r\n  var btn=document.querySelector('#s-perf .btn-p');\r\n  btn.disabled=true;document.getElementById('btnTxt').textContent='Calculando\u2026';btn.style.opacity='0.7';\r\n  setTimeout(function(){\r\n    btn.disabled=false;document.getElementById('btnTxt').textContent='Calculate admissible load';btn.style.opacity='';\r\n    var sb=parseFloat(document.getElementById('sobrecarga').value)||0;S.sobrecarga=sb;\r\n    var alPa=document.getElementById('alParams');var alPf=document.getElementById('alPerfil');\r\n    if(isSheetFamily(S.fam)){\r\n      if(!S.prod){alPf.classList.add('show');return;}alPf.classList.remove('show');\r\n      if(!S.prod.calculable){alPa.classList.add('show');alPa.textContent='La ficha tecnica de este perfil no incluye tabla de sobrecargas admisibles.';ocultarRes();return;}\r\n      S.posicion=document.getElementById('posicion').value||'A';\r\n      var esp=S.espesor;\r\n      var lv=parseFloat(document.getElementById('luz').value);\r\n      if(!esp||isNaN(lv)||lv<=0){alPa.classList.add('show');alPa.textContent='\u26a0 Selecciona espesor e introduce la luz libre.';return;}\r\n      alPa.classList.remove('show');\r\n      var p=S.prod;var tp=getCorrugatedTablaByState(p);\r\n      if(!tp||!tp[String(esp)]){alPa.classList.add('show');alPa.textContent='\u26a0 Sin datos para esa combinaci\u00f3n.';return;}\r\n      var fila=tp[String(esp)];\r\n      if(lv<0.5||lv>p.maxLuz){alPa.classList.add('show');alPa.textContent='\u26a0 Luz fuera de rango (0.5\u2013'+p.maxLuz+'m).';return;}\r\n      var cap=lerp(fila,lv);S.espesor=esp;S.luz=lv;S.resultado={capAdmisible:cap};\r\n      renderResCorrugated(p,cap,sb,tp,esp);\r\n    } else {\r\n      if(!S.altC||!S.espC){alPa.classList.add('show');alPa.textContent='\u26a0 Selecciona altura y espesor.';return;}\r\n      if(!S.sepP){alPa.classList.add('show');alPa.textContent='\u26a0 Selecciona sep. de p\u00f3rticos.';return;}\r\n      if(!S.sepC){alPa.classList.add('show');alPa.textContent='\u26a0 Selecciona sep. de correas.';return;}\r\n      alPa.classList.remove('show');\r\n      var D=getD();var L=getT();\r\n      var tA=D.tabla[S.altC];if(!tA){alPa.classList.add('show');alPa.textContent='\u26a0 Sin datos.';return;}\r\n      var tE=tA[S.espC];if(!tE){alPa.classList.add('show');alPa.textContent='\u26a0 Sin datos.';return;}\r\n      var tP=tE[S.sepP];if(!tP){alPa.classList.add('show');alPa.textContent='\u26a0 Sin datos para esa sep. p\u00f3rticos.';return;}\r\n      var cap=tP[S.sepC];if(cap===undefined){alPa.classList.add('show');alPa.textContent='\u26a0 Sin datos para esa combinaci\u00f3n exacta.';return;}\r\n      S.resultado={capAdmisible:cap};\r\n      renderResCorrea(L,cap,sb,D,tA);\r\n    }\r\n  },350);\r\n}\r\n\r\nfunction calcularSW(){\r\n  var al=document.getElementById('alSW');\r\n  if(!S.panelEsp){al.classList.add('show');al.textContent='\u26a0 Selecciona espesor del panel.';return;}\r\n  if(!S.panelDist){al.classList.add('show');al.textContent='\u26a0 Selecciona la distancia entre apoyos.';return;}\r\n  al.classList.remove('show');\r\n  autoCalcSW();\r\n}\r\n\r\nfunction lerp(datos,luz){\r\n  var keys=Object.keys(datos).map(Number).sort(function(a,b){return a-b;});\r\n  if(luz<=keys[0])return datos[keys[0]];\r\n  if(luz>=keys[keys.length-1])return datos[keys[keys.length-1]];\r\n  for(var i=0;i<keys.length-1;i++){\r\n    if(luz>=keys[i]&&luz<=keys[i+1]){\r\n      var t=(luz-keys[i])\/(keys[i+1]-keys[i]);\r\n      return Math.round(datos[keys[i]]+t*(datos[keys[i+1]]-datos[keys[i]]));\r\n    }\r\n  }\r\n  return datos[keys[0]];\r\n}\r\n\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ RENDER RESULTADOS\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nfunction ocultarRes(){\r\n  S.resultado=null;\r\n  document.getElementById('resultBanner').classList.remove('show');\r\n  document.getElementById('tablaCard').style.display='none';\r\n  document.getElementById('notaTec').style.display='none';\r\n  document.getElementById('accCard').style.display='none';\r\n}\r\nfunction mostrarBanner(nom,sub,cap,req){\r\n  var b=document.getElementById('resultBanner');b.classList.remove('show');void b.offsetWidth;b.classList.add('show');\r\n  document.getElementById('rNom').textContent=nom;document.getElementById('rSub').textContent=sub;\r\n  var mg=req>0?Math.round(((cap-req)\/req)*100):null;\r\n  var rC=document.getElementById('rCap');var rR=document.getElementById('rRef');\r\n  var rM=document.getElementById('rMar');var rB=document.getElementById('rBadge');\r\n  rC.textContent=cap;rR.textContent=req>0?req:'\u2014';\r\n  if(req<=0){rM.textContent='\u2014';rM.className='met-v';rC.className='met-v';rB.className='rbadge bneut';rB.textContent='Sin carga de referencia';}\r\n  else if(req<=cap*0.8){rM.textContent='+'+mg+'%';rM.className='met-v ok';rC.className='met-v ok';rR.className='met-v';rB.className='rbadge bok';rB.innerHTML='\u2713 &nbsp;Perfil ADECUADO \u2014 margen holgado';}\r\n  else if(req<=cap){rM.textContent='+'+mg+'%';rM.className='met-v warn';rC.className='met-v warn';rR.className='met-v';rB.className='rbadge bwarn';rB.innerHTML='\u26a0 &nbsp;Pr\u00f3ximo al l\u00edmite \u2014 consulta t\u00e9cnico';}\r\n  else{rM.textContent=mg+'%';rM.className='met-v fail';rC.className='met-v fail';rR.className='met-v';rB.className='rbadge bfail';rB.innerHTML='\u2717 &nbsp;Capacidad INSUFICIENTE';}\r\n  document.getElementById('notaTec').style.display='';document.getElementById('accCard').style.display='';\r\n}\r\nfunction showTabla(){\r\n  var tc=document.getElementById('tablaCard');tc.classList.remove('ra');void tc.offsetWidth;tc.style.display='';tc.classList.add('ra');\r\n}\r\nfunction renderResCorrugated(p,cap,req,tp,espSel){\r\n  var sub=p.tipo+' \u00b7 H'+p.alturaOnda+'mm \u00b7 e'+espSel+'mm'+(p.hasPosition?' \u00b7 Pos. '+S.posicion:'')+' \u00b7 '+S.vanos+' vano(s) \u00b7 L='+S.luz+'m';\r\n  mostrarBanner(p.nombre,sub,cap,req);\r\n  var luces=[];var seen={};p.espesores.forEach(function(e){\r\n    var f=tp[String(e)];if(!f)return;Object.keys(f).map(Number).forEach(function(l){if(!seen[l]){seen[l]=1;luces.push(l);}});\r\n  });luces.sort(function(a,b){return a-b;});\r\n  var tH=document.getElementById('tblH');var tB=document.getElementById('tblB');\r\n  tH.innerHTML='<th>Espesor<\/th>'+luces.map(function(l){return '<th>'+l+'m<\/th>';}).join('');tB.innerHTML='';\r\n  p.espesores.forEach(function(e){\r\n    var fila=tp[String(e)];if(!fila)return;var isSel=String(e)===String(espSel);\r\n    var tr=document.createElement('tr');if(isSel)tr.classList.add('rsel');\r\n    tr.innerHTML='<td>'+e+'mm<\/td>'+luces.map(function(l){\r\n      var v=fila[l];if(v===undefined)return'<td><span class=\"cd\">\u2014<\/span><\/td>';\r\n      if(isSel&&Math.abs(l-S.luz)<0.01)return'<td><span class=\"chi\">'+v+'<\/span><\/td>';\r\n      var c='';if(isSel&&req>0)c=req<=v*0.8?'vok':req<=v?'vwarn':'vfail';\r\n      return'<td class=\"'+c+'\">'+v+'<\/td>';\r\n    }).join('');tB.appendChild(tr);\r\n  });\r\n  document.getElementById('tblTit').textContent=p.nombre+' \u00b7 '+S.vanos+' vano(s) \u2014 sobrecargas (kg\/m\u00b2)';\r\n  document.getElementById('tblNota').textContent='Vano '+S.vanos+' \u00b7 L\/200 \u00b7 sobrecargas no mayoradas';\r\n  document.getElementById('notaTec').textContent='\ud83d\udccb L\/200 \u00b7 Sobrecargas no mayoradas \u00b7 Magon Aceros';\r\n  showTabla();S.resultado.tp=tp;S.prod=p;\r\n}\r\nfunction renderResCorrea(L,cap,req,D,tA){\r\n  var nom='Correa MG '+L+'-'+S.altC;\r\n  var sub=L+'-'+S.altC+' \u00b7 e'+S.espC+'mm \u00b7 P\u00f3rtico '+S.sepP+'m \u00b7 Correa c\/'+S.sepC+'m \u00b7 '+S.vanos+' vano(s)';\r\n  mostrarBanner(nom,sub,cap,req);\r\n  var tH=document.getElementById('tblH');var tB=document.getElementById('tblB');\r\n  tH.innerHTML='<th>Espesor<\/th>'+[1.25,1.50,1.75,2.00].map(function(sc){return'<th>'+sc+'m<\/th>';}).join('');tB.innerHTML='';\r\n  D.espesores.forEach(function(e){\r\n    var tE=tA[e];if(!tE)return;var tP=tE[S.sepP];var isSel=e===S.espC;\r\n    var tr=document.createElement('tr');if(isSel)tr.classList.add('rsel');\r\n    tr.innerHTML='<td>'+e+'mm<\/td>'+[1.25,1.50,1.75,2.00].map(function(sc){\r\n      if(!tP||tP[sc]===undefined)return'<td><span class=\"cd\">\u2014<\/span><\/td>';\r\n      var v=tP[sc];\r\n      if(isSel&&sc===S.sepC)return'<td><span class=\"chi\">'+v+'<\/span><\/td>';\r\n      var c='';if(isSel&&req>0)c=req<=v*0.8?'vok':req<=v?'vwarn':'vfail';\r\n      return'<td class=\"'+c+'\">'+v+'<\/td>';\r\n    }).join('');tB.appendChild(tr);\r\n  });\r\n  document.getElementById('tblTit').textContent='Correa '+L+'-'+S.altC+' \u00b7 P\u00f3rticos '+S.sepP+'m \u00b7 '+S.vanos+' vano(s) \u2014 sobrecargas (kg\/m\u00b2)';\r\n  document.getElementById('tblNota').textContent='Sep. p\u00f3rticos '+S.sepP+'m \u00b7 L\/200 \u00b7 no mayoradas';\r\n  document.getElementById('notaTec').textContent='\ud83d\udccb L\/200 \u00b7 Sobrecargas no mayoradas \u00b7 Magon Aceros';\r\n  showTabla();\r\n}\r\n\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ MODAL & PDF\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nconst COUNTRIES=['Espana','Afganistan','Albania','Alemania','Andorra','Angola','Antigua y Barbuda','Arabia Saudi','Argelia','Argentina','Armenia','Australia','Austria','Azerbaiyan','Bahamas','Bangladesh','Barbados','Barein','Belgica','Belice','Benin','Bielorrusia','Birmania','Bolivia','Bosnia y Herzegovina','Botsuana','Brasil','Brunei','Bulgaria','Burkina Faso','Burundi','Butan','Cabo Verde','Camboya','Camerun','Canada','Catar','Chad','Chile','China','Chipre','Colombia','Comoras','Corea del Norte','Corea del Sur','Costa de Marfil','Costa Rica','Croacia','Cuba','Dinamarca','Dominica','Ecuador','Egipto','El Salvador','Emiratos Arabes Unidos','Eritrea','Eslovaquia','Eslovenia','Estados Unidos','Estonia','Esuatini','Etiopia','Filipinas','Finlandia','Fiyi','Francia','Gabon','Gambia','Georgia','Ghana','Granada','Grecia','Guatemala','Guinea','Guinea-Bisau','Guinea Ecuatorial','Guyana','Haiti','Honduras','Hungria','India','Indonesia','Irak','Iran','Irlanda','Islandia','Israel','Italia','Jamaica','Japon','Jordania','Kazajistan','Kenia','Kirguistan','Kiribati','Kuwait','Laos','Lesoto','Letonia','Libano','Liberia','Libia','Liechtenstein','Lituania','Luxemburgo','Macedonia del Norte','Madagascar','Malasia','Malaui','Maldivas','Mali','Malta','Marruecos','Mauricio','Mauritania','Mexico','Micronesia','Moldavia','Monaco','Mongolia','Montenegro','Mozambique','Namibia','Nauru','Nepal','Nicaragua','Niger','Nigeria','Noruega','Nueva Zelanda','Oman','Paises Bajos','Pakistan','Palaos','Panama','Papua Nueva Guinea','Paraguay','Peru','Polonia','Portugal','Reino Unido','Republica Centroafricana','Republica Checa','Republica Democratica del Congo','Republica Dominicana','Republica del Congo','Rumania','Rusia','Ruanda','Samoa','San Cristobal y Nieves','San Marino','San Vicente y las Granadinas','Santa Lucia','Santo Tome y Principe','Senegal','Serbia','Seychelles','Sierra Leona','Singapur','Siria','Somalia','Sri Lanka','Sudafrica','Sudan','Sudan del Sur','Suecia','Suiza','Surinam','Tailandia','Tanzania','Tayikistan','Timor Oriental','Togo','Tonga','Trinidad y Tobago','Tunez','Turquia','Turkmenistan','Tuvalu','Ucrania','Uganda','Uruguay','Uzbekistan','Vanuatu','Vaticano','Venezuela','Vietnam','Yemen','Yibuti','Zambia','Zimbabue'];\r\nconst SPAIN_PROVINCES=['Alava','Albacete','Alicante','Almeria','Asturias','Avila','Badajoz','Baleares','Barcelona','Burgos','Caceres','Cadiz','Cantabria','Castellon','Ciudad Real','Cordoba','Cuenca','Girona','Granada','Guadalajara','Guipuzcoa','Huelva','Huesca','Jaen','La Coruna','La Rioja','Las Palmas','Leon','Lleida','Lugo','Madrid','Malaga','Murcia','Navarra','Ourense','Palencia','Pontevedra','Salamanca','Santa Cruz de Tenerife','Segovia','Sevilla','Soria','Tarragona','Teruel','Toledo','Valencia','Valladolid','Vizcaya','Zamora','Zaragoza'];\r\nfunction fillSelect(id,items,placeholder){\r\n  var el=document.getElementById(id);if(!el)return;\r\n  el.innerHTML='';\r\n  var first=document.createElement('option');first.value='';first.textContent=placeholder;el.appendChild(first);\r\n  items.forEach(function(item){var op=document.createElement('option');op.value=item;op.textContent=item;el.appendChild(op);});\r\n}\r\nfunction onCountryChange(){\r\n  var country=sanitize(document.getElementById('iPais').value);\r\n  var wrap=document.getElementById('provWrap');\r\n  var prov=document.getElementById('iProv');\r\n  if(country==='Espana'){\r\n    wrap.classList.remove('hidden');\r\n    prov.disabled=false;\r\n  }else{\r\n    wrap.classList.add('hidden');\r\n    prov.disabled=true;\r\n    prov.value='';\r\n  }\r\n}\r\nfunction initLeadForm(){\r\n  fillSelect('iPais',COUNTRIES,'Selecciona un pais');\r\n  fillSelect('iProv',SPAIN_PROVINCES,'Selecciona una provincia');\r\n  sanitize(document.getElementById('iPais').value)='Espana';\r\n  document.getElementById('iPais').addEventListener('change',onCountryChange);\r\n  onCountryChange();\r\n}\r\n\r\n\/* \u2500\u2500 MODAL \u2500\u2500 *\/\r\nfunction abrirModal(){\r\n  var m=document.getElementById('modalPDF');\r\n  m.classList.remove('hidden');\r\n  document.getElementById('modal-form-wrap').classList.remove('hidden');\r\n  document.getElementById('modal-ok').classList.add('hidden');\r\n  document.getElementById('modal-err-alert').classList.remove('show');\r\n  document.getElementById('err-gdpr').classList.remove('show');\r\n  ['m-nombre','m-email','m-pais'].forEach(function(id){\r\n    var el=document.getElementById(id);if(el)el.classList.remove('m-err');\r\n  });\r\n  var pv=document.getElementById('m-prov-wrap');if(pv)pv.classList.remove('show');\r\n  var mi=m.querySelector('.modal-inner');if(mi)mi.scrollTop=0;\r\n  document.body.style.overflow='hidden';\r\n}\r\nfunction cerrarModal(){\r\n  document.getElementById('modalPDF').classList.add('hidden');\r\n  document.body.style.overflow='';\r\n}\r\nfunction onModalPaisChange(){\r\n  var pais=document.getElementById('m-pais').value;\r\n  var pw=document.getElementById('m-prov-wrap');\r\n  if(pais==='Espa\u00f1a'){pw.classList.add('show');}else{pw.classList.remove('show');document.getElementById('m-prov').value='';}\r\n}\r\nfunction vEmail(e){return\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(e);}\r\n\r\nfunction validarModalForm(){\r\n  var ok=true;\r\n  function setE(id,show){\r\n    var el=document.getElementById(id);var er=document.getElementById('err-'+id.replace('m-',''));\r\n    if(el)el.classList.toggle('m-err',show);\r\n    if(er)er.classList.toggle('show',show);\r\n  }\r\n  var nom=document.getElementById('m-nombre').value.trim();\r\n  var em=document.getElementById('m-email').value.trim();\r\n  var pais=document.getElementById('m-pais').value;\r\n  var gdpr=document.getElementById('m-gdpr').checked;\r\n  if(nom.length<2){setE('m-nombre',true);ok=false;}else setE('m-nombre',false);\r\n  if(!vEmail(em)){setE('m-email',true);ok=false;}else setE('m-email',false);\r\n  if(!pais){setE('m-pais',true);ok=false;}else setE('m-pais',false);\r\n  if(!gdpr){document.getElementById('err-gdpr').classList.add('show');ok=false;}\r\n  else document.getElementById('err-gdpr').classList.remove('show');\r\n  return ok;\r\n}\r\n\r\nfunction enviarFormulario(){\r\n  if(!validarModalForm()){\r\n    document.getElementById('modal-err-alert').classList.add('show');\r\n    return;\r\n  }\r\n  document.getElementById('modal-err-alert').classList.remove('show');\r\n  var btn=document.getElementById('modal-submit-btn');\r\n  btn.classList.add('loading');btn.disabled=true;\r\n\r\n  var CF7_FORM_ID='15178';\r\n  var CF7_CONTAINER=''; \/\/ page ID \u2014 se detecta desde el nonce de WP\r\n  var CF7_ENDPOINT='\/wp-json\/contact-form-7\/v1\/contact-forms\/'+CF7_FORM_ID+'\/feedback';\r\n  var SITE_KEY='6Lfi1o0nAAAAAKef__HF07S9Y26C8xyCNYh5IjlG';\r\n\r\n  \/\/ Datos del perfil seleccionado\r\n  var perfilNombre=S.resultado?\r\n    (S.cat==='sw'?'Panel '+S.panelTipo:\r\n    S.fam==='minionda'?(S.prod?S.prod.nombre:'Corrugated'):\r\n    ('Correa '+(S.fam==='correaC'?'C':'Z')+' '+S.altC+'\/e'+S.espC)):\r\n    'Sin calcular';\r\n  var tipoPanel=S.cat==='sw'?\r\n    ({'masterC':'Master-C (Cubierta)','masterF':'Master-F (Fachada)','masterM':'Master-Modul (Modular)','masterFr':'Master-Frigo (Frigor\u00edfico)'}[S.panelTipo]||'Panel s\u00e1ndwich'):\r\n    (S.fam==='correaC'?'Purlin C':S.fam==='correaZ'?'Purlin Z':\r\n    S.fam==='minionda'?'Corrugated MG':\r\n    ['mg30206','mg30209','mg40250'].includes(S.fam)?'Chapa trapezoidal':'Perfil');\r\n  var capVal=S.resultado?S.resultado.capAdmisible+'':'-';\r\n  var datosCalculo=JSON.stringify({\r\n    familia:perfilNombre,\r\n    categoria:S.cat==='sw'?'Panel s\u00e1ndwich':'Perfil met\u00e1lico',\r\n    capacidad:capVal+' kg\/m\u00b2',\r\n    cargaRef:S.sobrecarga>0?S.sobrecarga+' kg\/m\u00b2':'no indicada',\r\n    fecha:new Date().toLocaleDateString('es-ES')\r\n  });\r\n\r\n  var datos={\r\n    nombre:sanitize(document.getElementById('m-nombre').value),\r\n    email:sanitize(document.getElementById('m-email').value),\r\n    telefono:sanitize(document.getElementById('m-tel').value),\r\n    empresa:sanitize(document.getElementById('m-empresa').value),\r\n    pais:sanitize(document.getElementById('m-pais').value),\r\n    provincia:sanitize(document.getElementById('m-prov').value),\r\n    tipo_panel:tipoPanel,\r\n    espesor:S.espesor?S.espesor+'mm':(S.panelEsp?S.panelEsp+'mm':'-'),\r\n    m2:'-',\r\n    datos_calculo:datosCalculo\r\n  };\r\n\r\n  function doSubmit(token){\r\n    var fd=new FormData();\r\n    \/\/ Obtener el nonce del shortcode CF7 oculto\r\n    var nonceEl=document.querySelector('input[name=\"_wpnonce\"]');\r\n    var unitEl=document.querySelector('input[name=\"_wpcf7_unit_tag\"]');\r\n    var containerEl=document.querySelector('input[name=\"_wpcf7_container_post\"]');\r\n    fd.set('_wpcf7',CF7_FORM_ID);\r\n    fd.set('_wpcf7_version','6.1.5');\r\n    fd.set('_wpcf7_locale','es_ES');\r\n    fd.set('_wpcf7_unit_tag',unitEl?unitEl.value:'wpcf7-f'+CF7_FORM_ID+'-o1');\r\n    fd.set('_wpcf7_container_post',containerEl?containerEl.value:'0');\r\n    if(nonceEl)fd.set('_wpnonce',nonceEl.value);\r\n    if(token)fd.set('_wpcf7_recaptcha_response',token);\r\n    fd.set('nombre',datos.nombre);\r\n    fd.set('telefono',datos.telefono);\r\n    fd.set('email',datos.email);\r\n    fd.set('empresa',datos.empresa);\r\n    fd.set('pais',datos.pais);\r\n    fd.set('provincia',datos.provincia);\r\n    fd.set('tipo_panel',datos.tipo_panel);\r\n    fd.set('espesor',datos.espesor);\r\n    fd.set('m2',datos.m2);\r\n    fd.set('datos_calculo',datos.datos_calculo);\r\n    fd.set('gdpr','acepto');\r\n\r\n    fetch(CF7_ENDPOINT,{method:'POST',body:fd,signal:AbortSignal.timeout(15000)})\r\n      .then(function(r){return r.json();})\r\n      .then(function(json){\r\n        btn.classList.remove('loading');btn.disabled=false;\r\n        if(json.status==='mail_sent'){\r\n          genPDF();\r\n          mostrarModalOk(datos.nombre,datos.email,perfilNombre,capVal);\r\n        } else {\r\n          genPDF();\r\n          mostrarModalOk(datos.nombre,datos.email,perfilNombre,capVal);\r\n        }\r\n      })\r\n      .catch(function(){\r\n        btn.classList.remove('loading');btn.disabled=false;\r\n        genPDF();\r\n        mostrarModalOk(datos.nombre,datos.email,perfilNombre,capVal);\r\n      });\r\n  }\r\n\r\n  if(typeof grecaptcha!=='undefined'){\r\n    grecaptcha.ready(function(){\r\n      grecaptcha.execute(SITE_KEY,{action:'submit'})\r\n        .then(function(token){doSubmit(token);})\r\n        .catch(function(){doSubmit('');});\r\n    });\r\n  } else {\r\n    doSubmit('');\r\n  }\r\n}\r\n\r\nfunction mostrarModalOk(nombre,email,perfil,capacidad){\r\n  document.getElementById('modal-form-wrap').classList.add('hidden');\r\n  var ok=document.getElementById('modal-ok');\r\n  ok.classList.remove('hidden');\r\n  var det=document.getElementById('modal-ok-detail');\r\n  det.innerHTML='';\r\n  var p=document.createElement('div');\r\n  var s=document.createElement('strong');s.textContent='Perfil: ';\r\n  p.appendChild(s);p.appendChild(document.createTextNode(perfil+' \u00b7 '+capacidad+' kg\/m\u00b2'));\r\n  det.appendChild(p);\r\n  var p2=document.createElement('div');p2.style.marginTop='4px';\r\n  var s2=document.createElement('strong');s2.textContent='Email: ';\r\n  p2.appendChild(s2);p2.appendChild(document.createTextNode(email));\r\n  det.appendChild(p2);\r\n  \/\/ Scroll al inicio del modal para que se vea el estado OK\r\n  var mi=document.querySelector('#modalPDF .modal-inner');\r\n  if(mi)mi.scrollTop=0;\r\n}\r\n\r\nfunction sanitize(str){\r\n  if(typeof str!=='string')return String(str||'');\r\n  return str.replace(\/[<>&\"'`]\/g,function(c){\r\n    var m={'<':'&lt;','>':'&gt;','&':'&amp;','\"':'&quot;',\"'\":'&#39;','`':'&#96;'};\r\n    return m[c]||c;\r\n  }).trim().substring(0,200);\r\n}\r\n\/* esc(): escapa texto para insertar en innerHTML de forma segura *\/\r\nfunction esc(s){\r\n  var d=document.createElement('div');\r\n  d.textContent=String(s==null?'':s);\r\n  return d.innerHTML;\r\n}\r\nfunction genPDF(){\r\n  \/* Lee los datos del formulario nuevo (m-nombre, m-email, etc.) *\/\r\n  var nom=sanitize(document.getElementById('m-nombre').value).trim();\r\n  var em=sanitize(document.getElementById('m-email').value).trim();\r\n  var tel=sanitize(document.getElementById('m-tel')?document.getElementById('m-tel').value:'').trim();\r\n  var pais=sanitize(document.getElementById('m-pais').value);\r\n  var prov=sanitize(document.getElementById('m-prov').value);\r\n  var emp=sanitize(document.getElementById('m-empresa')?document.getElementById('m-empresa').value:'').trim();\r\n\r\n  \/* Si jsPDF no est\u00e1 cargado a\u00fan, salir silenciosamente *\/\r\n  if(!window.jspdf||!window.jspdf.jsPDF)return;\r\n\r\n  var jsPDF=window.jspdf.jsPDF;\r\n  var doc=new jsPDF({orientation:'portrait',unit:'mm',format:'a4'});\r\n  var W=210,M=18,CW=W-M*2,y=0;\r\n  var burd=[74,34,40],bd=[46,19,24],go=[17,24,39],gm=[75,85,99],gc=[249,250,251],wh=[255,255,255],ao=[210,170,175];\r\n\r\n  \/\/ Header\r\n  doc.setFillColor(bd[0],bd[1],bd[2]);doc.rect(0,0,W,30,'F');\r\n  doc.setFillColor(burd[0],burd[1],burd[2]);doc.rect(0,27,W,3,'F');\r\n  doc.setFont('helvetica','bold');doc.setFontSize(11);doc.setTextColor(wh[0],wh[1],wh[2]);\r\n  doc.text('Calculadora de Sobrecargas',M,13);\r\n  doc.setFontSize(7);doc.setFont('helvetica','normal');doc.setTextColor(ao[0],ao[1],ao[2]);\r\n  doc.text('Informe de sobrecargas admisibles',M,19);\r\n  doc.setFontSize(7.5);doc.setFont('helvetica','bold');doc.setTextColor(wh[0],wh[1],wh[2]);\r\n  doc.text('SOBRECARGA ADMISIBLE',W-M,12,{align:'right'});\r\n  doc.setFont('helvetica','normal');doc.setFontSize(6.5);doc.setTextColor(ao[0],ao[1],ao[2]);\r\n  doc.text('www.magon.es \u00b7 '+new Date().toLocaleDateString('es-ES'),W-M,19,{align:'right'});\r\n  y=38;\r\n\r\n  \/\/ Aviso\r\n  doc.setFillColor(255,251,234);doc.roundedRect(M,y,CW,16,2,2,'F');\r\n  doc.setDrawColor(220,180,60);doc.roundedRect(M,y,CW,16,2,2,'S');\r\n  doc.setFillColor(200,160,20);doc.rect(M,y,3,16,'F');\r\n  doc.setFont('helvetica','bold');doc.setFontSize(6.2);doc.setTextColor(130,100,0);doc.text('AVISO \u2014 DATOS ORIENTATIVOS',M+6,y+5.5);\r\n  doc.setFont('helvetica','normal');doc.setFontSize(5.8);doc.setTextColor(110,85,0);\r\n  doc.text(doc.splitTextToSize('Resultados orientativos. No constituyen proyecto t\u00e9cnico. El proyectista es responsable de los c\u00e1lculos seg\u00fan CTE\/EAE\/EC3\/EN14509.',CW-12),M+6,y+10);\r\n  y+=22;\r\n\r\n  \/\/ Solicitante\r\n  doc.setFont('helvetica','bold');doc.setFontSize(8);doc.setTextColor(burd[0],burd[1],burd[2]);doc.text('DATOS DEL SOLICITANTE',M,y);\r\n  doc.setFillColor(burd[0],burd[1],burd[2]);doc.rect(M,y+2,CW,0.3,'F');y+=6;\r\n  [[nom,'Nombre',''],  [em,'Email',''],[tel||'\u2014','Tel\u00e9fono',prov||'\u2014'],[emp||'\u2014','Company','']].forEach(function(r,i){\r\n    if(i===0){doc.setFont('helvetica','bold');doc.setFontSize(6.5);doc.setTextColor(gm[0],gm[1],gm[2]);doc.text('Nombre:',M,y);doc.setFont('helvetica','normal');doc.setTextColor(go[0],go[1],go[2]);doc.text(r[0],M+22,y);y+=5.5;}\r\n    else if(i===1){doc.setFont('helvetica','bold');doc.setTextColor(gm[0],gm[1],gm[2]);doc.text('Email:',M,y);doc.setFont('helvetica','normal');doc.setTextColor(go[0],go[1],go[2]);doc.text(r[0],M+22,y);y+=5.5;}\r\n    else if(i===2){doc.setFont('helvetica','bold');doc.setTextColor(gm[0],gm[1],gm[2]);doc.text('Tel.:',M,y);doc.setFont('helvetica','normal');doc.setTextColor(go[0],go[1],go[2]);doc.text(r[0],M+22,y);if(r[2]){doc.setFont('helvetica','bold');doc.setTextColor(gm[0],gm[1],gm[2]);doc.text('Province:',M+CW\/2,y);doc.setFont('helvetica','normal');doc.setTextColor(go[0],go[1],go[2]);doc.text(r[2],M+CW\/2+22,y);}y+=5.5;}\r\n    else if(r[0]!=='\u2014'){doc.setFont('helvetica','bold');doc.setTextColor(gm[0],gm[1],gm[2]);doc.text('Company:',M,y);doc.setFont('helvetica','normal');doc.setTextColor(go[0],go[1],go[2]);doc.text(r[0],M+22,y);y+=5.5;}\r\n  });y+=4;\r\n\r\n  \/\/ Par\u00e1metros\r\n  doc.setFont('helvetica','bold');doc.setFontSize(8);doc.setTextColor(burd[0],burd[1],burd[2]);doc.text('PAR\u00c1METROS DE C\u00c1LCULO',M,y);\r\n  doc.setFillColor(burd[0],burd[1],burd[2]);doc.rect(M,y+2,CW,0.3,'F');y+=6;\r\n  var cap=S.resultado.capAdmisible;var req=S.sobrecarga;\r\n  var mg=req>0?Math.round(((cap-req)\/req)*100):null;var ok=req<=0||req<=cap;\r\n  var params=[];\r\n  if(S.cat==='sw'){\r\n    var D2=getSWData(S.panelTipo);\r\n    params=[['Tipo',D2.nombre],['Espesor',S.panelEsp+' mm'],['Dist. apoyos',S.panelDist+' cm']];\r\n  } else if(isSheetFamily(S.fam)){\r\n    params=[['Perfil',S.prod?S.prod.nombre:'\u2014'],['Espesor',(S.espesor||'\u2014')+' mm'],['Vanos',S.vanos+' vano(s)'],['Luz libre',(S.luz||'\u2014')+' m']];\r\n  } else {\r\n    var Lp=S.fam==='correaC'?'C':'Z';\r\n    params=[['Familia','Correa MG '+Lp],['Perfil',Lp+'-'+S.altC+' \u00b7 e'+S.espC+'mm'],['Vanos',S.vanos+' vano(s)'],['Sep. p\u00f3rticos',S.sepP+' m'],['Purlin spacing',S.sepC+' m']];\r\n  }\r\n  if(req>0)params.push(['Carga referencia',req+' kg\/m\u00b2']);\r\n  if(isSheetFamily(S.fam))params.unshift(['Familia',FAMILIAS_CHAPA[S.fam]||'Perfil']);\r\n  params.forEach(function(row,i){\r\n    if(i%2===0){doc.setFillColor(gc[0],gc[1],gc[2]);doc.rect(M,y-3,CW,6.5,'F');}\r\n    doc.setFont('helvetica','bold');doc.setFontSize(6.5);doc.setTextColor(gm[0],gm[1],gm[2]);doc.text(row[0]+':',M+2,y);\r\n    doc.setFont('helvetica','normal');doc.setTextColor(go[0],go[1],go[2]);doc.text(row[1],M+44,y);y+=6.5;\r\n  });y+=5;\r\n\r\n  \/\/ Resultado hero\r\n  if(ok){doc.setFillColor(burd[0],burd[1],burd[2]);}else{doc.setFillColor(180,30,30);}\r\n  doc.roundedRect(M,y,CW,26,3,3,'F');\r\n  var hNom=S.cat==='sw'?((S.panelTipo==='masterC'?MASTER_C:MASTER_F).nombre+' '+S.panelEsp+'mm'):S.fam==='minionda'?(S.prod?S.prod.nombre:'\u2014'):('Correa '+(S.fam==='correaC'?'C':'Z')+'-'+S.altC);\r\n  doc.setFont('helvetica','bold');doc.setFontSize(7);doc.setTextColor(ao[0],ao[1],ao[2]);doc.text('RESULTADO \u2014 '+hNom,M+4,y+6);\r\n  doc.setFont('helvetica','bold');doc.setFontSize(17);doc.setTextColor(wh[0],wh[1],wh[2]);doc.text(cap+' kg\/m\u00b2',M+4,y+19);\r\n  doc.setFont('helvetica','normal');doc.setFontSize(6.5);doc.setTextColor(ao[0],ao[1],ao[2]);doc.text('Sobrecarga admisible (L\/200)',M+4,y+24.5);\r\n  var st=req<=0?'Sin ref.':(req<=cap*0.8?'ADECUADO':req<=cap?'L\u00cdMITE':'INSUFICIENTE');\r\n  doc.setFillColor(0,0,0);doc.roundedRect(W-M-42,y+6,36,12,2,2,'F');\r\n  doc.setFont('helvetica','bold');doc.setFontSize(6.5);doc.setTextColor(wh[0],wh[1],wh[2]);doc.text(st,W-M-24,y+13,{align:'center'});\r\n  y+=32;\r\n\r\n  \/\/ M\u00e9tricas\r\n  var mets=[['Cap. admisible',cap+' kg\/m\u00b2'],['Carga requerida',req>0?req+' kg\/m\u00b2':'\u2014'],['Margen',mg!==null?(mg>0?'+':'')+mg+'%':'\u2014']];\r\n  var mW=(CW-4)\/3;\r\n  mets.forEach(function(m,i){\r\n    var mx=M+i*(mW+2);\r\n    doc.setFillColor(gc[0],gc[1],gc[2]);doc.roundedRect(mx,y,mW,14,2,2,'F');\r\n    doc.setFont('helvetica','bold');doc.setFontSize(9);doc.setTextColor(burd[0],burd[1],burd[2]);doc.text(m[1],mx+mW\/2,y+8,{align:'center'});\r\n    doc.setFont('helvetica','normal');doc.setFontSize(5.2);doc.setTextColor(gm[0],gm[1],gm[2]);doc.text(m[0],mx+mW\/2,y+12,{align:'center'});\r\n  });y+=20;\r\n\r\n  \/\/ Legal\r\n  if(y<220){\r\n    doc.setFont('helvetica','bold');doc.setFontSize(7.5);doc.setTextColor(burd[0],burd[1],burd[2]);doc.text('AVISO LEGAL',M,y);\r\n    doc.setFillColor(burd[0],burd[1],burd[2]);doc.rect(M,y+2,CW,0.3,'F');y+=6;\r\n    var legal='Este informe ha sido generado mediante la herramienta de c\u00e1lculo orientativo de Magon Metales Perfilados S.A. Los resultados tienen car\u00e1cter meramente indicativo basados en datos t\u00e9cnicos de Magon Aceros y Master Panel. El t\u00e9cnico responsable deber\u00e1 verificar y firmar los c\u00e1lculos conforme a CTE, EAE, EC3, EN14509 y normativa de aplicaci\u00f3n.';\r\n    doc.setFont('helvetica','normal');doc.setFontSize(5.8);doc.setTextColor(go[0],go[1],go[2]);\r\n    doc.text(doc.splitTextToSize(legal,CW),M,y);\r\n  }\r\n\r\n  \/\/ Footer\r\n  var fY=284;doc.setFillColor(245,245,245);doc.rect(0,fY-2,W,14,'F');\r\n  doc.setFillColor(burd[0],burd[1],burd[2]);doc.rect(0,fY-2,W,1.2,'F');\r\n  doc.setFont('helvetica','normal');doc.setFontSize(5.8);doc.setTextColor(gm[0],gm[1],gm[2]);\r\n  doc.text('MAGON METALES PERFILADOS S.A. \u00b7 Pol\u00edgono La C\u00e1rdena \u00b7 45221 Esquivias (Toledo) \u00b7 +34 925 519 926 \u00b7 www.magon.es',W\/2,fY+4,{align:'center'});\r\n  doc.setTextColor(180,180,180);doc.text('Documento generado el '+new Date().toLocaleDateString('es-ES')+' \u00b7 Datos orientativos, no sustituyen c\u00e1lculos t\u00e9cnicos.',W\/2,fY+9,{align:'center'});\r\n\r\n  var fn='MAGON_Sobrecargas_'+hNom.replace(\/\\s|\\\/\/g,'_')+'_'+new Date().toISOString().slice(0,10)+'.pdf';\r\n  doc.save(fn);\r\n}\r\n\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ EASTER EGG\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n(function(){\r\n  var t=document.getElementById('toast');var ti;\r\n  document.addEventListener('contextmenu',function(e){\r\n    var tag=e.target.tagName.toLowerCase();\r\n    if(['input','select','textarea'].includes(tag))return;\r\n    e.preventDefault();clearTimeout(ti);\r\n    t.textContent='\ud83d\ude04 Buen intento :)';t.classList.add('show');\r\n    ti=setTimeout(function(){t.classList.remove('show');},2200);\r\n  });\r\n})();\r\n\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\/\/ INIT\r\n\/\/ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\nfunction ajustarInterfazInicial(){\r\n  var perfTab=document.getElementById('t-perf');\r\n  if(perfTab)perfTab.textContent='Purlins &amp; profiled sheet';\r\n  var catDesc=document.getElementById('catDesc');\r\n  if(catDesc)catDesc.textContent='Select the product family you want to check.';\r\n  var famTabs=document.querySelector('#s-perf .card .tabs');\r\n  var tMo=document.getElementById('t-mo');\r\n  if(famTabs&&tMo){\r\n    famTabs.classList.add('fam-tabs');\r\n    tMo.textContent='Corrugated';\r\n    if(!document.getElementById('t-tr')){\r\n      var tTr=document.createElement('button');\r\n      tTr.className='tab';\r\n      tTr.id='t-tr';\r\n      tTr.textContent='Trapezoidal';\r\n      tTr.onclick=function(){switchFam('trapezoidal');};\r\n      tMo.insertAdjacentElement('afterend',tTr);\r\n    }\r\n  }\r\n  var moLabel=document.querySelector('#pm-mo label');\r\n  if(moLabel)moLabel.innerHTML='Profile thickness <span class=\"tip\" data-tip=\"Select the available thickness for the chosen profile.\">?<\/span>';\r\n}\r\ndocument.addEventListener('DOMContentLoaded',function(){\r\n  ajustarInterfazInicial();\r\n  renderCorrugated();initCP('C');initCP('Z');initSW();initLeadForm();setV('1');\r\n  document.getElementById('modalPDF').addEventListener('click',function(e){\r\n    if(e.target===document.getElementById('modalPDF'))cerrarModal();\r\n  });\r\n  document.addEventListener('keydown',function(e){\r\n    if(e.key==='Escape'&&!document.getElementById('modalPDF').classList.contains('hidden'))cerrarModal();\r\n  });\r\n  sessionStorage.removeItem('dk');\r\n  document.body.classList.remove('dark');\r\n  setThemeIcons(false);\r\n});\r\n\r\n\/* \u2500\u2500 FAQ toggle \u2500\u2500 *\/\r\nfunction toggleFaq(btn){\r\n  var item=btn.closest('.faq-item');\r\n  var isOpen=item.classList.contains('open');\r\n  document.querySelectorAll('.faq-item.open').forEach(function(el){el.classList.remove('open');el.querySelector('.faq-q').setAttribute('aria-expanded','false');});\r\n  if(!isOpen){item.classList.add('open');btn.setAttribute('aria-expanded','true');}\r\n}\r\n<\/script>\r\n<script src=\"https:\/\/www.google.com\/recaptcha\/api.js?render=6Lfi1o0nAAAAAKef__HF07S9Y26C8xyCNYh5IjlG\" async defer><\/script>\r\n<!-- FOOTER -->\r\n<footer class=\"site-footer\" role=\"contentinfo\">\r\n  <div class=\"footer-inner\">\r\n    <span class=\"footer-copy\">&copy; 2026 Mag&oacute;n Companys. All rights reserved.<\/span>\r\n    <nav>\r\n      <ul class=\"footer-links\">\r\n        <li><a href=\"https:\/\/www.magon.es\/aviso-legal\/\" target=\"_blank\" rel=\"noopener\">Legal notice<\/a><\/li>\r\n        <li><a href=\"https:\/\/magon.es\/politica-privacidad\/\" target=\"_blank\" rel=\"noopener\">Privacy policy<\/a><\/li>\r\n        <li><a href=\"https:\/\/www.magon.es\/politica-cookies\/\" target=\"_blank\" rel=\"noopener\">Cookie policy<\/a><\/li>\r\n      <\/ul>\r\n    <\/nav>\r\n  <\/div>\r\n<\/footer>\r\n\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Calculadora de Sobrecargas Admisibles Free technical tool Admissible load calculator for profiles &amp; sandwich panels Calculate the admissible load for C\/Z purlins, trapezoidal sheets and sandwich panels, or enter the&#8230;<\/p>\n","protected":false},"author":10,"featured_media":15261,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"content-type":"","rs_blank_template":"","rs_page_bg_color":"","slide_template_v7":"","footnotes":""},"class_list":["post-15264","page","type-page","status-publish","has-post-thumbnail"],"_links":{"self":[{"href":"https:\/\/magon.es\/en\/wp-json\/wp\/v2\/pages\/15264","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/magon.es\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/magon.es\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/magon.es\/en\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/magon.es\/en\/wp-json\/wp\/v2\/comments?post=15264"}],"version-history":[{"count":7,"href":"https:\/\/magon.es\/en\/wp-json\/wp\/v2\/pages\/15264\/revisions"}],"predecessor-version":[{"id":15298,"href":"https:\/\/magon.es\/en\/wp-json\/wp\/v2\/pages\/15264\/revisions\/15298"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/magon.es\/en\/wp-json\/wp\/v2\/media\/15261"}],"wp:attachment":[{"href":"https:\/\/magon.es\/en\/wp-json\/wp\/v2\/media?parent=15264"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}