{"id":15076,"date":"2026-04-10T17:15:18","date_gmt":"2026-04-10T15:15:18","guid":{"rendered":"https:\/\/magon.es\/?page_id=15076"},"modified":"2026-04-14T10:40:10","modified_gmt":"2026-04-14T08:40:10","slug":"sandwich-panel-thermal-insulation-calculator","status":"publish","type":"page","link":"https:\/\/magon.es\/en\/sandwich-panel-thermal-insulation-calculator\/","title":{"rendered":"Sandwich panel thermal insulation calculator"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"15076\" class=\"elementor elementor-15076 elementor-14938\" 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\">\r\n<head>\r\n<meta charset=\"UTF-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n<title>Thermal Insulation Calculator for Sandwich Panels | Masterpanel Mag\u00f3n<\/title>\r\n<meta name=\"description\" content=\"Free thermal insulation calculator for sandwich panels. Get the right panel thickness for your project based on EN14509 certified data. Industrial buildings, cold rooms and Spanish CTE DB-HE1 standard. Manufactured by Masterpanel Mag\u00f3n.\">\r\n<meta name=\"keywords\" content=\"thermal insulation calculator, sandwich panel thickness, U-value panel, EN14509, cold room insulation, industrial building sandwich panel, masterpanel\">\r\n\r\n<meta http-equiv=\"Content-Security-Policy\" content=\"default-src 'self' https:\/\/magon.es; script-src 'self' 'unsafe-inline' https:\/\/cdnjs.cloudflare.com https:\/\/www.google.com https:\/\/www.gstatic.com https:\/\/fonts.googleapis.com; style-src 'self' 'unsafe-inline' https:\/\/fonts.googleapis.com; font-src 'self' https:\/\/fonts.gstatic.com; img-src 'self' https:\/\/magon.es data:; connect-src 'self' https:\/\/magon.es https:\/\/apidatos.ree.es; frame-src 'none'; object-src 'none';\">\r\n<meta name=\"robots\" content=\"index, follow\">\r\n<meta name=\"author\" content=\"Master Panel, S.L. \u2014 Mag\u00f3n\">\r\n<link rel=\"canonical\" href=\"https:\/\/www.magon.es\/en\/sandwich-panel-thermal-insulation-calculator\/\">\r\n\r\n<meta property=\"og:title\" content=\"Calculadora de Aislamiento T\u00e9rmico para Panel S\u00e1ndwich | Masterpanel\">\r\n<meta property=\"og:description\" content=\"Calculate the sandwich panel thickness needed for your project with EN14509 certified data.\">\r\n<meta property=\"og:type\" content=\"website\">\r\n<meta property=\"og:url\" content=\"https:\/\/www.magon.es\/en\/sandwich-panel-thermal-insulation-calculator\/\">\r\n\r\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js\"><\/script>\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Barlow:ital,wght@0,400;0,600;0,700;0,800;1,400&family=Barlow+Condensed:wght@700;800&display=swap\" rel=\"stylesheet\">\r\n\r\n<style>\r\n\/* \u2500\u2500 RESET & BASE \u2500\u2500 *\/\r\n*,*::before,*::after { box-sizing: border-box; }\r\n\r\n:root {\r\n  --or:    #e8a000;\r\n  --or2:   #f5b800;\r\n  --or-lt: #fff8e6;\r\n  --dk:    #1a1a1a;\r\n  --dk2:   #2a2a2a;\r\n  --gray:  #4a4a4a;\r\n  --mid:   #888;\r\n  --light: #f5f5f3;\r\n  --lighter:#fafaf8;\r\n  --white: #ffffff;\r\n  --bdr:   #e0ddd8;\r\n  --green: #2d6a27;\r\n  --gbg:   #edf5ec;\r\n  --gbrd:  #b8d9b5;\r\n  --red:   #a0341e;\r\n  --rbg:   #faecea;\r\n  --rbrd:  #e8b5aa;\r\n  --info:  #1a5fa0;\r\n  --ibg:   #e8f0fb;\r\n  --ibrd:  #b0cdf0;\r\n  --r:  4px;\r\n  --rl: 8px;\r\n  --max: 1100px;\r\n  font-family: 'Barlow', sans-serif;\r\n}\r\n\r\nhtml { scroll-behavior: smooth; }\r\nbody { margin: 0; background: var(--white); color: var(--dk); font-size: 14px; line-height: 1.5; -webkit-text-size-adjust: 100%; }\r\n.mp-land { width: 100%; }\r\n.mp-land-inner { max-width: var(--max); margin: 0 auto; padding: 0 1.5rem; }\r\n\r\n\/* \u2500\u2500 HERO \u2500\u2500 *\/\r\n.mp-hero {\r\n  background: linear-gradient(135deg, #ffffff 0%, #fdfcf8 40%, #fffbee 75%, #fff5cc 100%);\r\n  border-bottom: 3px solid var(--or);\r\n  position: relative;\r\n  overflow: hidden;\r\n}\r\n.mp-hero::before {\r\n  content: '';\r\n  position: absolute; inset: 0;\r\n  background-image: repeating-linear-gradient(45deg,transparent,transparent 40px,rgba(232,160,0,.06) 40px,rgba(232,160,0,.06) 41px);\r\n  pointer-events: none;\r\n}\r\n.mp-hero::after {\r\n  content: '';\r\n  position: absolute;\r\n  bottom: -40px; left: 50%; transform: translateX(-50%);\r\n  width: 60%; height: 100px;\r\n  background: radial-gradient(ellipse at center, rgba(232,160,0,.18) 0%, transparent 70%);\r\n  pointer-events: none;\r\n}\r\n\r\n.mp-hero-inner {\r\n  max-width: var(--max);\r\n  margin: 0 auto;\r\n  padding: 0 1.5rem;\r\n  display: flex;\r\n  flex-direction: column;\r\n  align-items: flex-start;\r\n  position: relative;\r\n  z-index: 1;\r\n}\r\n.mp-hero-content { padding: 34px 0 30px; max-width: 680px; width: 100%; }\r\n\r\n.mp-hero-eyebrow {\r\n  display: inline-flex; align-items: center; gap: 7px;\r\n  font-size: 10px; font-weight: 700; letter-spacing: .15em; text-transform: uppercase;\r\n  color: #7a4800; margin-bottom: 16px;\r\n  background: rgba(232,160,0,.13); border: 1px solid rgba(232,160,0,.35);\r\n  padding: 5px 12px; border-radius: 3px;\r\n}\r\n.mp-hero-eyebrow::before { content: ''; width: 5px; height: 5px; background: var(--or); border-radius: 50%; }\r\n\r\n.mp-hero h1 {\r\n  font-family: 'Barlow Condensed', sans-serif;\r\n  \/* Tama\u00f1o calculado para que Barlow Condensed quede en 2 l\u00edneas exactas\r\n     con el <br> expl\u00edcito en cualquier ancho >= 500px *\/\r\n  font-size: clamp(22px, 2.6vw, 38px);\r\n  font-weight: 800; color: var(--dk);\r\n  line-height: 1.1; letter-spacing: -.01em;\r\n  margin: 0 0 14px;\r\n  \/* Sin max-width restrictivo para que no comprima las l\u00edneas *\/\r\n  max-width: none;\r\n  \/* Evitar que el navegador rompa donde no queremos *\/\r\n  overflow-wrap: normal;\r\n  word-break: keep-all;\r\n}\r\n.mp-hero h1 em { color: var(--or); font-style: normal; }\r\n\r\n.mp-hero-desc { font-size: 14px; color: var(--gray); line-height: 1.75; margin-bottom: 28px; max-width: 520px; }\r\n\r\n.mp-hero-actions { display: flex; align-items: center; flex-wrap: wrap; }\r\n\r\n.mp-cta-hero {\r\n  display: inline-flex; align-items: center; gap: 8px;\r\n  background: var(--or); color: var(--dk);\r\n  font-weight: 800; font-size: 13px;\r\n  padding: 14px 28px; border-radius: var(--r);\r\n  text-decoration: none; letter-spacing: .05em; text-transform: uppercase;\r\n  transition: background .15s, transform .12s; border: none; cursor: pointer;\r\n  box-shadow: 0 4px 20px rgba(232,160,0,.3);\r\n}\r\n.mp-cta-hero:hover { background: var(--or2); transform: translateY(-2px); box-shadow: 0 8px 28px rgba(232,160,0,.4); }\r\n\r\n.mp-hero-deco { display: none !important; }\r\n\r\n\/* \u2500\u2500 BARRA FABRICANTE \u2500\u2500 *\/\r\n.mp-brand-strip { background: var(--dk); border-bottom: 1px solid #333; }\r\n.mp-brand-strip-inner {\r\n  max-width: var(--max); margin: 0 auto; padding: 14px 1.5rem;\r\n  display: flex; align-items: center; gap: 16px; flex-wrap: wrap;\r\n}\r\n.mp-brand-strip-txt { font-size: 11px; font-weight: 600; color: rgba(255,255,255,.45); text-transform: uppercase; letter-spacing: .1em; flex-shrink: 0; }\r\n.mp-brand-strip-sep { width: 1px; height: 18px; background: rgba(255,255,255,.12); flex-shrink: 0; }\r\n.mp-brand-strip img { height: 22px; width: auto; opacity: .85; }\r\n.mp-brand-strip-norms { margin-left: auto; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }\r\n.mp-norm-chip {\r\n  font-size: 9px; font-weight: 700; letter-spacing: .07em; text-transform: uppercase;\r\n  color: rgba(255,255,255,.4); background: rgba(255,255,255,.06);\r\n  border: 1px solid rgba(255,255,255,.1); padding: 3px 9px; border-radius: 3px;\r\n}\r\n\r\n\/* \u2500\u2500 CALCULADORA \u2500\u2500 *\/\r\n.mp-calc-section { background: var(--light); padding: 0 0 56px; border-bottom: 1px solid var(--bdr); }\r\n.mp-calc-anchor { display: block; position: relative; top: -80px; visibility: hidden; }\r\n.mp-calc-wrap { max-width: 980px; margin: 0 auto; padding: 0 1.5rem; }\r\n.mp-calc-label { text-align: center; padding: 36px 0 20px; }\r\n.mp-calc-label-tag {\r\n  display: inline-block; background: var(--or); color: var(--dk);\r\n  font-size: 10px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase;\r\n  padding: 4px 12px; border-radius: 3px; margin-bottom: 10px;\r\n}\r\n.mp-calc-label h2 { font-family: 'Barlow Condensed', sans-serif; font-size: clamp(20px, 3vw, 30px); font-weight: 800; color: var(--dk); letter-spacing: -.01em; margin: 0 0 6px; }\r\n.mp-calc-label p { font-size: 14px; color: var(--mid); }\r\n\r\n.slbl {\r\n  font-size: 10px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase;\r\n  color: var(--or); margin-bottom: 10px; display: flex; align-items: center; gap: 8px;\r\n}\r\n.slbl::after { content: ''; flex: 1; height: 1px; background: var(--bdr); }\r\n\r\n.card { background: var(--white); border-radius: var(--rl); border: 1px solid var(--bdr); padding: 1.4rem; margin-bottom: .75rem; }\r\n.card-dark { background: var(--dk2); border-radius: var(--rl); border: 1px solid #333; padding: 1.4rem; margin-bottom: .75rem; }\r\n\r\n\/* \u2500\u2500 GRIDS BOTONES \u2500\u2500 *\/\r\n.panel-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 8px; }\r\n.pbtn {\r\n  padding: 14px 6px 12px; border: 2px solid var(--bdr); border-radius: var(--r);\r\n  background: var(--lighter); cursor: pointer; text-align: center; transition: all .15s;\r\n  font-family: inherit; position: relative; min-width: 0;\r\n}\r\n.pbtn:hover { border-color: var(--or); background: var(--or-lt); }\r\n.pbtn.active { border-color: var(--or); background: #fff3cc; }\r\n.pbtn .pi { font-size: 18px; display: block; margin-bottom: 4px; }\r\n.pbtn .pn { font-size: 11px; font-weight: 700; color: var(--dk); display: block; line-height: 1.3; }\r\n.pbtn .ps { font-size: 10px; color: var(--mid); margin-top: 2px; display: block; }\r\n.pbtn .ptag {\r\n  position: absolute; top: 4px; right: 4px; font-size: 9px; font-weight: 700;\r\n  padding: 1px 4px; border-radius: 3px; background: var(--ibg); color: var(--info); border: .5px solid var(--ibrd);\r\n}\r\n.pbtn.active .pn { color: #6e4000; }\r\n\r\n.tipo-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 8px; }\r\n.tbtn {\r\n  padding: 14px 8px; border: 2px solid var(--bdr); border-radius: var(--r);\r\n  background: var(--lighter); cursor: pointer; text-align: center; transition: all .15s; font-family: inherit;\r\n}\r\n.tbtn:hover { border-color: var(--or); background: var(--or-lt); }\r\n.tbtn.active { border-color: var(--or); background: #fff3cc; }\r\n.tbtn .ti { font-size: 20px; display: block; margin-bottom: 5px; }\r\n.tbtn .tn { font-size: 13px; font-weight: 700; color: var(--dk); display: block; }\r\n.tbtn .ts { font-size: 11px; color: var(--mid); margin-top: 2px; display: block; }\r\n.tbtn.active .tn { color: #6e4000; }\r\n.tbtn.active .ts { color: #a06000; }\r\n.tbtn.disabled { opacity: .38; cursor: not-allowed; }\r\n\r\n.clim-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 8px; margin-top: 10px; }\r\n.climbtn { padding: 10px 8px; border: 1.5px solid var(--bdr); border-radius: var(--r); background: var(--lighter); cursor: pointer; text-align: center; font-family: inherit; transition: all .15s; }\r\n.climbtn:hover { border-color: var(--or); background: var(--or-lt); }\r\n.climbtn.active { border-color: var(--or); background: #fff3cc; }\r\n.climbtn .cn { font-size: 12px; font-weight: 700; color: var(--dk); display: block; }\r\n.climbtn .cs { font-size: 10px; color: var(--mid); margin-top: 2px; display: block; }\r\n.climbtn.active .cn { color: #6e4000; }\r\n\r\n.cam-btns { display: grid; grid-template-columns: repeat(3,1fr); gap: 8px; }\r\n.cbtn { padding: 12px 8px; border: 1.5px solid var(--bdr); border-radius: var(--r); background: var(--lighter); cursor: pointer; text-align: center; font-family: inherit; transition: all .15s; }\r\n.cbtn:hover { border-color: var(--or); background: var(--or-lt); }\r\n.cbtn.active { border-color: var(--or); background: #fff3cc; }\r\n.cbtn .cn { font-size: 12px; font-weight: 700; color: var(--dk); display: block; }\r\n.cbtn .cr { font-size: 10px; color: var(--mid); margin-top: 2px; display: block; }\r\n.cbtn.active .cn { color: #6e4000; }\r\n\r\n.row { display: grid; grid-template-columns: repeat(auto-fit,minmax(160px,1fr)); gap: 12px; }\r\n.row-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }\r\n.field { display: flex; flex-direction: column; gap: 5px; }\r\n.field label { font-size: 11px; font-weight: 700; color: var(--gray); text-transform: uppercase; letter-spacing: .05em; }\r\n.field .hint { font-size: 10px; color: var(--mid); }\r\ninput[type=number],input[type=text],input[type=email],input[type=tel],select {\r\n  height: 40px; padding: 0 12px; font-size: 14px; font-family: inherit; font-weight: 600;\r\n  border: 1.5px solid var(--bdr); border-radius: var(--r); background: var(--lighter);\r\n  color: var(--dk); transition: border-color .15s, box-shadow .15s; width: 100%;\r\n  -webkit-appearance: none; appearance: none;\r\n}\r\nselect {\r\n  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\");\r\n  background-repeat: no-repeat;\r\n  background-position: right 12px center;\r\n  padding-right: 36px;\r\n}\r\ninput:focus,select:focus { outline: none; border-color: var(--or); box-shadow: 0 0 0 3px rgba(232,160,0,.12); background: #fff; }\r\ninput.error { border-color: var(--red)!important; box-shadow: 0 0 0 3px rgba(160,52,30,.10)!important; }\r\n.field-error { font-size: 11px; color: var(--red); margin-top: 3px; display: none; }\r\n.field-error.show { display: block; }\r\n.hidden { display: none!important; }\r\n.elem-note { font-size: 11px; color: var(--info); font-weight: 600; margin-top: 4px; }\r\n\r\n.infobox {\r\n  background: var(--ibg); border: 1px solid var(--ibrd); border-radius: var(--r);\r\n  padding: 10px 14px; font-size: 12px; color: var(--info); margin-top: 8px; font-weight: 600;\r\n}\r\n\r\n\/* \u2500\u2500 PANEL CHIP \u2500\u2500 *\/\r\n.panel-chip {\r\n  background: var(--dk2); border-radius: var(--rl); border: 1px solid #333;\r\n  padding: 1.1rem 1.4rem; display: flex; align-items: center; justify-content: space-between;\r\n  gap: 1rem; flex-wrap: wrap; margin-bottom: .75rem;\r\n}\r\n.pc-tag { font-size: 9px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--or); margin-bottom: 3px; }\r\n.pc-name { font-size: 18px; font-weight: 700; color: #fff; font-family: 'Barlow Condensed', sans-serif; }\r\n.pc-desc { font-size: 12px; color: #d0d0d0; margin-top: 2px; }\r\n.pc-esps { font-size: 11px; color: #c0c0c0; margin-top: 5px; }\r\n.pc-esps span { display: inline-block; background: #444; padding: 2px 7px; border-radius: 3px; margin: 2px 2px 0 0; font-weight: 600; color: #ffffff; }\r\n.pc-lambda { background: var(--or); border-radius: var(--r); padding: 10px 18px; text-align: center; min-width: 120px; flex-shrink: 0; }\r\n.pc-lambda .lv { font-family: 'Barlow Condensed', sans-serif; font-size: 26px; font-weight: 800; color: var(--dk); display: block; }\r\n.pc-lambda .ll { font-size: 10px; font-weight: 700; color: rgba(0,0,0,.5); text-transform: uppercase; letter-spacing: .05em; }\r\n\r\n\/* \u2500\u2500 RESULTADO \u2500\u2500 *\/\r\n.res-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 10px; margin-bottom: 1.1rem; }\r\n.metric { background: #333; border-radius: var(--r); padding: 18px 12px; text-align: center; }\r\n.metric .ml { font-size: 9px; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; color: #bbbbbb; margin-bottom: 7px; }\r\n.metric .mv { font-family: 'Barlow Condensed', sans-serif; font-size: 34px; font-weight: 700; color: #fff; line-height: 1; }\r\n.metric .mu { font-size: 11px; color: #aaaaaa; margin-top: 4px; }\r\n.metric.hero { background: var(--or); }\r\n.metric.hero .ml { color: rgba(0,0,0,.45); }\r\n.metric.hero .mv { color: var(--dk); }\r\n.metric.hero .mu { color: rgba(0,0,0,.4); }\r\n\r\n.bar-wrap { margin-bottom: 1.1rem; }\r\n.bar-hd { display: flex; justify-content: space-between; align-items: center; margin-bottom: 5px; }\r\n.bar-hd .bl { font-size: 11px; color: #bbbbbb; }\r\n.bar-hd .bv { font-size: 11px; font-weight: 700; color: #fff; }\r\n.bar-track { height: 5px; background: #333; border-radius: 3px; overflow: hidden; }\r\n.bar-fill { height: 100%; background: var(--or); border-radius: 3px; transition: width .5s cubic-bezier(.4,0,.2,1); }\r\n\r\n.alert { border-radius: var(--r); padding: 13px 15px; font-size: 13px; line-height: 1.55; }\r\n.at { font-weight: 700; font-size: 13px; margin-bottom: 3px; }\r\n.a-ok { background: var(--gbg); border: 1px solid var(--gbrd); }\r\n.a-ok .at { color: var(--green); }\r\n.a-ok .ab { color: #2f5f2a; }\r\n.a-warn { background: var(--rbg); border: 1px solid var(--rbrd); }\r\n.a-warn .at { color: var(--red); }\r\n.a-warn .ab { color: #802a16; }\r\n\r\n.comp-table-wrap { margin-top: 1rem; overflow-x: auto; -webkit-overflow-scrolling: touch; }\r\n.comp-table { width: 100%; border-collapse: collapse; font-size: 12px; min-width: 340px; }\r\n.comp-table th { background: #333; color: #ffffff; padding: 7px 10px; text-align: center; font-weight: 700; font-size: 10px; letter-spacing: .06em; text-transform: uppercase; }\r\n.comp-table th:first-child { text-align: left; }\r\n.comp-table td { padding: 7px 10px; border-bottom: .5px solid #333; color: #e0e0e0; text-align: center; }\r\n.comp-table td:first-child { text-align: left; font-weight: 600; color: #ffffff; }\r\n.comp-table tr.hl td { background: rgba(232,160,0,.12); color: #f5b800; font-weight: 700; }\r\n.comp-table tr.hl td:first-child { color: var(--or); }\r\n\r\n.frow { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid #333; font-size: 11px; color: #bbbbbb; display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }\r\n.frow code { font-family: 'Courier New', monospace; font-size: 11px; background: #333; color: #f0b828; padding: 2px 6px; border-radius: 3px; }\r\n\r\n\/* \u2500\u2500 AHORRO \u2500\u2500 *\/\r\n.ahorro-card { background: var(--dk2); border-radius: var(--rl); border: 1px solid #333; padding: 1.2rem 1.4rem; margin-bottom: .75rem; }\r\n.ahorro-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 10px; margin-top: .8rem; }\r\n.ahorro-metric { background: #333; border-radius: var(--r); padding: 14px 10px; text-align: center; }\r\n.ahorro-metric .aml { font-size: 9px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: #bbbbbb; margin-bottom: 5px; }\r\n.ahorro-metric .amv { font-family: 'Barlow Condensed', sans-serif; font-size: 26px; font-weight: 700; color: var(--or); line-height: 1; }\r\n.ahorro-metric .amu { font-size: 11px; color: #aaaaaa; margin-top: 3px; }\r\n.ahorro-inputs { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 10px; }\r\n.ahorro-note { font-size: 10px; color: #aaaaaa; margin-top: 8px; line-height: 1.5; }\r\n\r\n.ahorro-card .field label,\r\n.card-dark .field label { color: #cccccc !important; }\r\n.ahorro-card .field .hint,\r\n.card-dark .field .hint { color: #aaaaaa !important; }\r\n\r\n.energia-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 8px; margin-bottom: 8px; }\r\n.ebtn { padding: 10px 6px; border: 1.5px solid var(--bdr); border-radius: var(--r); background: var(--lighter); cursor: pointer; text-align: center; font-family: inherit; transition: all .15s; }\r\n.ebtn:hover { border-color: var(--or); background: var(--or-lt); }\r\n.ebtn.active { border-color: var(--or); background: #fff3cc; }\r\n.ebtn .en { font-size: 12px; font-weight: 700; color: var(--dk); display: block; }\r\n.ebtn .ep { font-size: 11px; color: var(--mid); margin-top: 2px; display: block; font-family: 'Courier New', monospace; }\r\n.ebtn .es { font-size: 9px; color: var(--mid); margin-top: 1px; display: block; }\r\n.ebtn.active .en { color: #6e4000; }\r\n.ebtn.active .ep { color: #a06000; }\r\n.precio-status { font-size: 10px; color: #bbbbbb; display: flex; align-items: center; gap: 5px; margin-top: 4px; }\r\n.dot-live { width: 6px; height: 6px; border-radius: 50%; background: var(--green); display: inline-block; animation: blink 1.8s infinite; }\r\n.dot-fijo { width: 6px; height: 6px; border-radius: 50%; background: var(--or); display: inline-block; }\r\n@keyframes blink { 0%,100%{opacity:1}50%{opacity:.25} }\r\n\r\n.frigo-note { margin-bottom: .75rem; background: var(--ibg); border: 1px solid var(--ibrd); border-radius: var(--rl); padding: 1rem 1.2rem; }\r\n.frigo-note .fn-title { font-size: 11px; font-weight: 700; color: var(--info); text-transform: uppercase; letter-spacing: .07em; margin-bottom: 8px; }\r\n.frigo-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }\r\n.frigo-table { width: 100%; border-collapse: collapse; font-size: 11px; min-width: 420px; }\r\n.frigo-table th { background: var(--info); color: #fff; padding: 5px 8px; text-align: left; font-weight: 600; font-size: 10px; }\r\n.frigo-table td { padding: 5px 8px; border-bottom: .5px solid var(--ibrd); color: var(--dk); }\r\n.frigo-table tr:last-child td { border-bottom: none; }\r\n.frigo-table tr:nth-child(even) td { background: rgba(26,95,160,.04); }\r\n\r\n.compat-warn { background: #fff8e0; border: 1px solid #f0d070; border-radius: var(--r); padding: 10px 14px; font-size: 12px; color: #6e4000; margin-bottom: .75rem; display: flex; align-items: flex-start; gap: 8px; }\r\n.compat-warn .cw-icon { font-size: 16px; flex-shrink: 0; margin-top: 1px; }\r\n\r\n.reset-btn { display: inline-flex; align-items: center; gap: 6px; background: transparent; color: #777; font-family: inherit; font-size: 12px; font-weight: 600; padding: 7px 12px; border-radius: var(--r); border: 1px solid var(--bdr); cursor: pointer; transition: all .15s; margin-bottom: .75rem; }\r\n.reset-btn:hover { background: var(--rbg); color: var(--red); border-color: var(--rbrd); }\r\n\r\n.pdf-btn { display: inline-flex; align-items: center; gap: 8px; background: var(--dk); color: var(--white); font-family: inherit; font-size: 13px; font-weight: 700; padding: 14px 20px; border-radius: var(--r); border: none; cursor: pointer; letter-spacing: .04em; text-transform: uppercase; transition: all .15s; margin-top: 1rem; width: 100%; justify-content: center; min-height: 48px; }\r\n.pdf-btn:hover { background: var(--or); color: var(--dk); }\r\n\r\n.cta { background: var(--or); border-radius: var(--rl); padding: 1.4rem; display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; margin-top: 1.4rem; }\r\n.cta p { font-size: 12px; color: rgba(0,0,0,.52); margin-top: 3px; margin-bottom: 0; }\r\n.cta strong { font-size: 15px; font-weight: 700; color: var(--dk); display: block; }\r\n.cta-btn { display: inline-flex; align-items: center; gap: 6px; background: var(--dk); color: var(--white); font-family: inherit; font-size: 12px; font-weight: 700; padding: 12px 20px; border-radius: var(--r); border: 2px solid transparent; cursor: pointer; text-decoration: none; white-space: nowrap; letter-spacing: .04em; text-transform: uppercase; transition: background .15s, color .15s, border-color .15s; }\r\n.cta-btn:hover { background: var(--white); color: var(--or); border-color: var(--white); }\r\n\r\n.fnote { text-align: center; margin-top: 2rem; font-size: 11px; color: var(--mid); line-height: 1.65; padding-top: 1.4rem; border-top: 1px solid var(--bdr); }\r\n.fnote a { color: var(--or); text-decoration: none; }\r\n\r\n\/* \u2500\u2500 SECCIONES CONTENIDO \u2500\u2500 *\/\r\n.mp-content-section { padding: 60px 0; background: var(--white); }\r\n.mp-content-section.alt { background: var(--light); }\r\n.mp-section-tag { display: inline-block; background: rgba(232,160,0,.12); color: #7a4800; font-size: 10px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; padding: 4px 12px; border-radius: 3px; margin-bottom: 10px; border: .5px solid rgba(232,160,0,.3); }\r\n.mp-section-h2 { font-family: 'Barlow Condensed', sans-serif; font-size: clamp(20px, 3vw, 32px); font-weight: 800; color: var(--dk); letter-spacing: -.01em; margin: 0 0 10px; }\r\n.mp-section-h2 em { color: var(--or); font-style: normal; }\r\n.mp-section-lead { font-size: 15px; color: var(--gray); line-height: 1.7; margin-bottom: 32px; max-width: 680px; }\r\n.mp-body { font-size: 15px; color: var(--gray); line-height: 1.75; margin-bottom: 14px; }\r\n.mp-body strong { color: var(--dk); }\r\n.mp-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 3rem; align-items: start; }\r\n\r\n.mp-formula { background: var(--dk2); border-radius: var(--rl); padding: 18px 22px; margin: 18px 0; border-left: 4px solid var(--or); }\r\n.mp-formula code { display: block; font-size: 16px; font-weight: 700; color: var(--or); font-family: 'Courier New', monospace; margin-bottom: 12px; word-break: break-all; }\r\n.mp-formula ul { list-style: none; padding: 0; margin: 0; }\r\n.mp-formula ul li { font-size: 13px; color: #aaa; padding: 3px 0; display: flex; gap: 8px; }\r\n.mp-formula ul li::before { content: '\u2014'; color: var(--or); flex-shrink: 0; }\r\n\r\n\/* \u2500\u2500 ZONAS CTE \u2500\u2500 *\/\r\n.mp-zonas-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 12px; margin: 24px 0; }\r\n.mp-zona-card { background: var(--white); border: 1px solid var(--bdr); border-radius: var(--rl); padding: 16px; position: relative; overflow: hidden; }\r\n.mp-zona-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: var(--or); }\r\n.mp-zona-letter { font-family: 'Barlow Condensed', sans-serif; font-size: 30px; font-weight: 800; color: var(--or); line-height: 1; margin-bottom: 4px; }\r\n.mp-zona-name { font-size: 12px; color: var(--gray); margin-bottom: 8px; line-height: 1.4; }\r\n.mp-zona-vals { font-size: 11px; color: var(--mid); }\r\n.mp-zona-vals span { display: block; }\r\n\r\n\/* \u2500\u2500 TABLA CTE \u2500\u2500 *\/\r\n.cte-u-table { width: 100%!important; border-collapse: collapse!important; border-spacing: 0!important; font-size: 13px!important; table-layout: auto!important; }\r\n.cte-u-table .cte-th { background: #1a1a1a!important; color: #ffffff!important; padding: 11px 16px!important; font-size: 11px!important; font-weight: 700!important; letter-spacing: .06em!important; text-transform: uppercase!important; border: none!important; white-space: nowrap!important; }\r\n.cte-u-table .cte-th--left { text-align: left!important; }\r\n.cte-u-table .cte-th--center { text-align: center!important; }\r\n.cte-u-table .cte-tr--odd td { background: #fafaf8!important; }\r\n.cte-u-table .cte-tr--even td { background: #ffffff!important; }\r\n.cte-u-table .cte-tr--highlight td { background: #fffbee!important; }\r\n.cte-u-table .cte-tr--highlight td:first-child { box-shadow: inset 4px 0 0 #e8a000!important; }\r\n.cte-u-table .cte-td { padding: 10px 16px!important; border: none!important; border-bottom: 1px solid #e8e5e0!important; font-size: 13px!important; color: #1a1a1a!important; vertical-align: middle!important; }\r\n.cte-u-table .cte-tr--last td { border-bottom: none!important; }\r\n.cte-u-table .cte-td--zona { font-weight: 800!important; font-size: 18px!important; white-space: nowrap!important; color: #1a1a1a!important; }\r\n.cte-u-table .cte-td--or { color: #e8a000!important; }\r\n.cte-u-table .cte-td--center { text-align: center!important; white-space: nowrap!important; }\r\n.cte-u-table .cte-td--bold { font-weight: 700!important; }\r\n.cte-u-table .cte-td--prov { color: #666666!important; font-size: 12px!important; text-align: left!important; }\r\n\r\n\/* \u2500\u2500 FAQ \u2500\u2500 *\/\r\n.mp-faq-item { border-bottom: 1px solid var(--bdr); }\r\n.mp-faq-q { width: 100%; text-align: left; padding: 18px 0; background: none; border: none; font-size: 15px; font-weight: 700; color: var(--dk); cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 12px; font-family: inherit; }\r\n.mp-faq-q:hover { color: var(--or); }\r\n.mp-faq-icon { width: 22px; height: 22px; background: var(--or); border-radius: 50%; display: flex; align-items: center; justify-content: center; flex-shrink: 0; font-size: 14px; font-weight: 700; color: var(--dk); transition: transform .2s; }\r\n.mp-faq-item.open .mp-faq-icon { transform: rotate(45deg); }\r\n.mp-faq-a { max-height: 0; overflow: hidden; transition: max-height .3s ease, padding .3s ease; font-size: 14px; color: var(--gray); line-height: 1.75; }\r\n.mp-faq-item.open .mp-faq-a { max-height: 500px; padding-bottom: 18px; }\r\n\r\n\/* \u2500\u2500 ENLACES \u2500\u2500 *\/\r\n.mp-body a, .mp-section-lead a, .mp-faq-a a {\r\n  color: var(--or); text-decoration: underline; text-decoration-color: rgba(232,160,0,.4);\r\n  text-underline-offset: 2px; font-weight: 600; transition: color .15s;\r\n}\r\n.mp-body a:hover, .mp-section-lead a:hover, .mp-faq-a a:hover { color: var(--or2); text-decoration-color: var(--or2); }\r\n\r\n\/* \u2500\u2500 TABLA ESPESOR \u2500\u2500 *\/\r\n.mp-esp-table {\r\n  width: 100%; border-collapse: collapse; font-size: 13px;\r\n  margin: 20px 0;\r\n}\r\n.mp-esp-table th {\r\n  background: var(--dk); color: #fff; padding: 10px 14px;\r\n  font-size: 11px; font-weight: 700; letter-spacing: .06em;\r\n  text-transform: uppercase; text-align: left;\r\n}\r\n.mp-esp-table th:not(:first-child) { text-align: center; }\r\n.mp-esp-table td { padding: 9px 14px; border-bottom: 1px solid var(--bdr); color: var(--dk); vertical-align: middle; }\r\n.mp-esp-table td:not(:first-child) { text-align: center; font-weight: 700; }\r\n.mp-esp-table tr:last-child td { border-bottom: none; }\r\n.mp-esp-table tr:nth-child(even) td { background: var(--lighter); }\r\n.mp-esp-table .esp-rec { color: var(--or); font-weight: 800; }\r\n.mp-esp-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid var(--bdr); border-radius: var(--rl); overflow: hidden; }\r\n\/* \u2500\u2500 PIE DE P\u00c1GINA \u2500\u2500 *\/\r\n.mp-footer { background: #111111; border-top: 3px solid var(--or); padding: 28px 0 22px; }\r\n.mp-footer-inner { max-width: var(--max); margin: 0 auto; padding: 0 1.5rem; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px; }\r\n.mp-footer-copy { font-size: 12px; color: rgba(255,255,255,.45); font-weight: 600; }\r\n.mp-footer-links { display: flex; gap: 20px; flex-wrap: wrap; }\r\n.mp-footer-links a { font-size: 11px; color: rgba(255,255,255,.38); text-decoration: none; font-weight: 600; letter-spacing: .04em; transition: color .15s; }\r\n.mp-footer-links a:hover { color: var(--or); }\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\r\n   MODAL FORMULARIO\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 *\/\r\n.modal-bg {\r\n  position: fixed; inset: 0; background: rgba(0,0,0,.65); z-index: 1000;\r\n  display: flex; align-items: center; justify-content: center;\r\n  padding: 1rem;\r\n  backdrop-filter: blur(6px);\r\n  -webkit-backdrop-filter: blur(6px);\r\n  overflow-y: auto;\r\n  -webkit-overflow-scrolling: touch;\r\n}\r\n.modal {\r\n  background: var(--white);\r\n  border-radius: 14px;\r\n  padding: 0;\r\n  width: 100%;\r\n  max-width: 640px;\r\n  position: relative;\r\n  max-height: calc(100dvh - 2rem);\r\n  max-height: calc(100vh - 2rem);\r\n  overflow-y: auto;\r\n  -webkit-overflow-scrolling: touch;\r\n  box-shadow: 0 32px 100px rgba(0,0,0,.4);\r\n  margin: auto;\r\n}\r\n.modal-header {\r\n  background: var(--dk);\r\n  border-radius: 14px 14px 0 0;\r\n  padding: 22px 24px 18px;\r\n  position: sticky;\r\n  top: 0;\r\n  z-index: 10;\r\n}\r\n.modal-header::before {\r\n  content: '';\r\n  position: absolute;\r\n  top: 0; left: 0; right: 0; height: 3px;\r\n  background: linear-gradient(90deg, var(--or), var(--or2));\r\n  border-radius: 14px 14px 0 0;\r\n}\r\n.modal-header h2 {\r\n  font-family: 'Barlow Condensed', sans-serif;\r\n  font-size: 22px; font-weight: 800;\r\n  color: #fff; margin: 0 0 5px;\r\n  letter-spacing: -.01em;\r\n  padding-right: 44px;\r\n}\r\n.modal-header .modal-sub { font-size: 12px; color: rgba(255,255,255,.5); margin: 0; line-height: 1.5; }\r\n.modal-close {\r\n  position: absolute; top: 14px; right: 16px;\r\n  font-size: 16px; cursor: pointer; color: rgba(255,255,255,.65);\r\n  background: rgba(255,255,255,.1); border: none;\r\n  width: 32px; height: 32px; border-radius: 50%;\r\n  display: flex; align-items: center; justify-content: center;\r\n  transition: all .15s; touch-action: manipulation;\r\n}\r\n.modal-close:hover { background: rgba(255,255,255,.2); color: #fff; }\r\n.modal-body { padding: 24px 28px 22px; }\r\n\r\n\/* Campos *\/\r\n.mfield { display: flex; flex-direction: column; gap: 5px; margin-bottom: 15px; }\r\n.mfield label {\r\n  font-size: 10px; font-weight: 700; color: var(--gray);\r\n  text-transform: uppercase; letter-spacing: .07em;\r\n  display: flex; align-items: center; gap: 5px;\r\n}\r\n.mfield label .req { color: var(--or); font-size: 13px; line-height: 1; }\r\n.mfield label .opt-tag { font-size: 9px; color: var(--mid); font-weight: 400; text-transform: none; letter-spacing: 0; background: var(--light); padding: 1px 5px; border-radius: 3px; }\r\n\r\n\/* Dos columnas iguales: Pa\u00eds | Provincia *\/\r\n.modal-row-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; align-items: start; }\r\n\/* Provincia oculta hasta seleccionar Espa\u00f1a *\/\r\n.modal-prov-wrap { display: none; }\r\n.modal-prov-wrap.show { display: flex; flex-direction: column; gap: 5px; }\r\n\r\n\/* Inputs \u2014 font-size 16px evita zoom iOS *\/\r\n.mfield input,\r\n.mfield select {\r\n  height: 48px;\r\n  padding: 0 14px;\r\n  font-size: 16px;\r\n  font-family: inherit; font-weight: 500;\r\n  border: 1.5px solid var(--bdr); border-radius: 6px;\r\n  background: var(--lighter); color: var(--dk);\r\n  transition: border-color .15s, box-shadow .15s;\r\n  width: 100%; -webkit-appearance: none; appearance: none;\r\n}\r\n.mfield select {\r\n  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\");\r\n  background-repeat: no-repeat; background-position: right 14px center; padding-right: 40px;\r\n}\r\n.mfield input:focus, .mfield select:focus { outline: none; border-color: var(--or); box-shadow: 0 0 0 3px rgba(232,160,0,.12); background: #fff; }\r\n.mfield input.m-error, .mfield select.m-error { border-color: var(--red)!important; box-shadow: 0 0 0 3px rgba(160,52,30,.1)!important; }\r\n.mfield .m-err-txt { font-size: 11px; color: var(--red); margin-top: 3px; display: none; }\r\n.mfield .m-err-txt.show { display: block; }\r\n\r\n\/* Checkbox GDPR \u2014 nativo funcional *\/\r\n.gdpr-row {\r\n  display: flex; flex-direction: row; align-items: flex-start;\r\n  gap: 10px; margin-bottom: 4px;\r\n}\r\n.gdpr-row input[type=\"checkbox\"] {\r\n  -webkit-appearance: checkbox !important;\r\n  appearance: checkbox !important;\r\n  width: 18px; height: 18px; min-width: 18px;\r\n  flex-shrink: 0; margin-top: 2px;\r\n  cursor: pointer;\r\n  border: none; padding: 0; background: none; box-shadow: none;\r\n  accent-color: var(--or);\r\n}\r\n.gdpr-row label {\r\n  font-size: 12px; text-transform: none; letter-spacing: 0;\r\n  color: var(--gray); font-weight: 400; cursor: pointer;\r\n  line-height: 1.5; flex: 1; display: block;\r\n}\r\n.gdpr-row label a { color: var(--or); text-decoration: underline; }\r\n.gdpr-err { font-size: 11px; color: var(--red); display: none; margin-bottom: 10px; }\r\n.gdpr-err.show { display: block; }\r\n\r\n\/* Bot\u00f3n *\/\r\n.modal-submit {\r\n  width: 100%; height: 52px;\r\n  background: var(--or); color: var(--dk);\r\n  font-family: inherit; font-size: 15px; font-weight: 800;\r\n  border: none; border-radius: 6px; cursor: pointer;\r\n  letter-spacing: .05em; text-transform: uppercase;\r\n  transition: background .15s, transform .12s, box-shadow .15s;\r\n  margin-top: 6px;\r\n  display: flex; align-items: center; justify-content: center; gap: 8px;\r\n  touch-action: manipulation; -webkit-tap-highlight-color: transparent;\r\n  box-shadow: 0 4px 20px rgba(232,160,0,.3);\r\n}\r\n.modal-submit:hover { background: var(--or2); box-shadow: 0 6px 28px rgba(232,160,0,.4); }\r\n.modal-submit:active { transform: scale(0.98); }\r\n.modal-submit:disabled { background: #ccc; color: #999; cursor: not-allowed; transform: none; box-shadow: none; }\r\n.modal-legal { font-size: 11px; color: var(--mid); margin-top: 12px; line-height: 1.6; text-align: center; }\r\n.modal-legal a { color: var(--or); text-decoration: none; }\r\n\r\n\/* Success *\/\r\n.modal-ok { padding: 40px 28px; text-align: center; }\r\n.modal-ok .ok-icon { font-size: 56px; display: block; margin-bottom: 16px; }\r\n.modal-ok h3 { font-family: 'Barlow Condensed', sans-serif; font-size: 26px; font-weight: 800; color: var(--green); margin-bottom: 8px; }\r\n.modal-ok p { font-size: 13px; color: var(--mid); line-height: 1.6; }\r\n.modal-ok .ok-detail { background: var(--gbg); border: 1px solid var(--gbrd); border-radius: var(--rl); padding: 14px 16px; margin: 16px 0; font-size: 12px; color: var(--green); font-weight: 600; text-align: left; }\r\n.modal-ok .ok-close-btn { display: inline-flex; align-items: center; gap: 6px; background: var(--dk); color: #fff; font-family: inherit; font-size: 13px; font-weight: 700; padding: 12px 24px; border-radius: var(--r); border: none; cursor: pointer; margin-top: 16px; letter-spacing: .04em; text-transform: uppercase; transition: background .15s; }\r\n.modal-ok .ok-close-btn:hover { background: #333; }\r\n\r\n\/* Spinner *\/\r\n.modal-submit .spinner { width: 18px; height: 18px; border: 2px solid rgba(0,0,0,.25); border-top-color: var(--dk); border-radius: 50%; animation: spin .7s linear infinite; display: none; }\r\n.modal-submit.loading .spinner { display: block; }\r\n.modal-submit.loading .btn-txt { opacity: .5; }\r\n@keyframes spin { to { transform: rotate(360deg); } }\r\n\r\n\/* Ctx msg *\/\r\n#ctx-msg { position: fixed; z-index: 9999; background: var(--dk); color: #fff; font-family: 'Barlow', sans-serif; font-size: 13px; font-weight: 600; padding: 10px 16px; border-radius: 8px; border-left: 3px solid var(--or); box-shadow: 0 4px 20px rgba(0,0,0,.3); pointer-events: none; opacity: 0; transition: opacity .2s; white-space: nowrap; max-width: calc(100vw - 2rem); }\r\n#ctx-msg.show { opacity: 1; }\r\n\r\n.mp-calc-zone, .mp-calc-zone .card, .mp-calc-zone .card-dark,\r\n.mp-calc-zone .ahorro-card, .mp-calc-zone .panel-chip { user-select: none; -webkit-user-select: none; }\r\n.mp-calc-zone input, .mp-calc-zone select { user-select: text!important; -webkit-user-select: text!important; }\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\r\n   RESPONSIVE \u2014 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 *\/\r\n@media (max-width: 900px) {\r\n  .mp-hero-content { padding: 36px 0 30px; }\r\n  .mp-2col { grid-template-columns: 1fr; }\r\n  .mp-zonas-grid { grid-template-columns: repeat(2,1fr); }\r\n  .mp-brand-strip-norms { display: none; }\r\n  .mp-content-section { padding: 40px 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\r\n   RESPONSIVE \u2014 640px (tablet\/m\u00f3vil)\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 *\/\r\n@media (max-width: 640px) {\r\n  \/* Hero *\/\r\n  .mp-hero-content { padding: 28px 0 24px; }\r\n  .mp-hero-desc { font-size: 14px; margin-bottom: 20px; }\r\n  .mp-hero-actions { flex-direction: column; align-items: stretch; }\r\n  .mp-cta-hero { justify-content: center; padding: 16px 24px; font-size: 14px; }\r\n\r\n  \/* Brand strip *\/\r\n  .mp-brand-strip-inner { gap: 10px; flex-wrap: nowrap; }\r\n  .mp-brand-strip-txt { font-size: 10px; }\r\n\r\n  \/* Calculadora *\/\r\n  .mp-calc-label { padding: 24px 0 16px; }\r\n  .mp-calc-wrap { padding: 0 1rem; }\r\n  .mp-calc-label h2 { font-size: 18px; }\r\n  .mp-calc-label p { font-size: 13px; }\r\n  .card { padding: 1rem; }\r\n  .card-dark { padding: 1rem; }\r\n\r\n  \/* Panel grid: 2 columnas en m\u00f3vil *\/\r\n  .panel-grid { grid-template-columns: repeat(2,1fr); gap: 6px; }\r\n  .pbtn { padding: 12px 6px 10px; }\r\n  .pbtn .pi { font-size: 16px; }\r\n  .pbtn .pn { font-size: 10px; }\r\n\r\n  \/* Tipo\/c\u00e1mara\/climatizaci\u00f3n: 1 columna *\/\r\n  .tipo-grid { grid-template-columns: 1fr; gap: 6px; }\r\n  .tbtn { padding: 12px 10px; display: flex; align-items: center; gap: 10px; text-align: left; }\r\n  .tbtn .ti { font-size: 22px; flex-shrink: 0; margin-bottom: 0; }\r\n  .tbtn .tn { font-size: 14px; }\r\n  .tbtn .ts { font-size: 11px; }\r\n\r\n  .clim-grid { grid-template-columns: 1fr; gap: 6px; }\r\n  .climbtn { padding: 12px 10px; display: flex; align-items: center; gap: 10px; text-align: left; }\r\n  .climbtn .cn { font-size: 13px; }\r\n  .climbtn .cs { font-size: 11px; }\r\n\r\n  .cam-btns { grid-template-columns: 1fr; gap: 6px; }\r\n  .cbtn { padding: 12px 10px; }\r\n  .cbtn .cn { font-size: 13px; }\r\n\r\n  \/* Campos num\u00e9ricos nave *\/\r\n  .row { grid-template-columns: 1fr; }\r\n  .row-2 { grid-template-columns: 1fr; }\r\n\r\n  \/* Resultado *\/\r\n  .res-grid { grid-template-columns: 1fr 1fr; }\r\n  .res-grid .metric:last-child { grid-column: span 2; }\r\n  .metric .mv { font-size: 28px; }\r\n  .metric .ml { font-size: 8px; }\r\n\r\n  \/* Panel chip *\/\r\n  .panel-chip { flex-direction: column; align-items: flex-start; gap: .75rem; }\r\n  .pc-lambda { width: 100%; }\r\n  .pc-lambda .lv { font-size: 22px; }\r\n  .pc-esps span { font-size: 10px; }\r\n\r\n  \/* Ahorro *\/\r\n  .ahorro-card { padding: 1rem; }\r\n  .ahorro-grid { grid-template-columns: 1fr 1fr; }\r\n  .ahorro-grid .ahorro-metric:last-child { grid-column: span 2; }\r\n  .ahorro-metric .amv { font-size: 22px; }\r\n  .ahorro-inputs { grid-template-columns: 1fr; }\r\n  .energia-grid { grid-template-columns: 1fr; gap: 6px; }\r\n  .ebtn { display: flex; align-items: center; gap: 10px; text-align: left; }\r\n  .ebtn .en { font-size: 13px; flex: 1; }\r\n\r\n  \/* CTA *\/\r\n  .cta { flex-direction: column; align-items: stretch; }\r\n  .cta-btn { text-align: center; justify-content: center; }\r\n\r\n  \/* Zonas *\/\r\n  .mp-zonas-grid { grid-template-columns: 1fr 1fr; gap: 8px; }\r\n  .mp-zona-card { padding: 12px; }\r\n  .mp-zona-letter { font-size: 24px; }\r\n\r\n  \/* Tabla CTE *\/\r\n  .cte-u-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }\r\n  .cte-u-table { min-width: 480px; }\r\n\r\n  \/* FAQ *\/\r\n  .mp-faq-q { font-size: 13px; padding: 14px 0; }\r\n\r\n  \/* Footer *\/\r\n  .mp-footer-inner { flex-direction: column; align-items: flex-start; gap: 12px; }\r\n  .mp-footer-links { gap: 12px; }\r\n\r\n  \/* Contenido *\/\r\n  .mp-content-section { padding: 32px 0; }\r\n  .mp-land-inner { padding: 0 1rem; }\r\n  .mp-body { font-size: 14px; }\r\n  .mp-section-lead { font-size: 14px; }\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\r\n   RESPONSIVE MODAL \u2014 m\u00f3vil\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 *\/\r\n@media (max-width: 640px) {\r\n  .modal-bg { align-items: flex-end; padding: 0; }\r\n  .modal { border-radius: 18px 18px 0 0; max-width: 100%; max-height: 94vh; }\r\n  .modal-header { border-radius: 18px 18px 0 0; }\r\n  .modal-header::before { border-radius: 18px 18px 0 0; }\r\n  .modal-header h2 { font-size: 18px; }\r\n  .modal-body { padding: 16px 18px 20px; }\r\n  \/* En m\u00f3vil: pa\u00eds y provincia apilados *\/\r\n  .modal-row-2 { grid-template-columns: 1fr; gap: 0; }\r\n  .modal-prov-wrap.show { display: flex; }\r\n  .mfield input, .mfield select { height: 52px; font-size: 16px; }\r\n  .modal-submit { height: 56px; font-size: 15px; }\r\n  .modal-ok { padding: 28px 16px; }\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\r\n   MUY PEQUE\u00d1O \u2014 360px\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 *\/\r\n@media (max-width: 380px) {\r\n  .panel-grid { grid-template-columns: repeat(2,1fr); }\r\n  .pbtn .pn { font-size: 9px; }\r\n  .pbtn .ps { font-size: 9px; }\r\n  .res-grid { grid-template-columns: 1fr; }\r\n  .res-grid .metric:last-child { grid-column: 1; }\r\n  .ahorro-grid { grid-template-columns: 1fr; }\r\n  .ahorro-grid .ahorro-metric:last-child { grid-column: 1; }\r\n  .mp-zonas-grid { grid-template-columns: 1fr; }\r\n}\r\n<\/style>\r\n<\/head>\r\n<body>\r\n<div class=\"mp-land\">\r\n\r\n<!-- \u2550\u2550\u2550 HERO \u2550\u2550\u2550 -->\r\n<section class=\"mp-hero\" id=\"mp-hero-section\">\r\n  <div class=\"mp-hero-inner\">\r\n    <div class=\"mp-hero-content\">\r\n      <div class=\"mp-hero-eyebrow\">Free technical tool<\/div>\r\n      <!-- H1 siempre en 2 l\u00edneas:\r\n           L\u00ednea 1: \"Calculadora de aislamiento t\u00e9rmico\"\r\n           L\u00ednea 2: \"para panel s\u00e1ndwich\" -->\r\n      <h1>Thermal <em>insulation calculator<\/em><br>for sandwich panels<\/h1>\r\n      <p class=\"mp-hero-desc\">Find out exactly which sandwich panel thickness your project needs to comply with current regulations. Results based on EN14509 certified data.<\/p>\r\n      <div class=\"mp-hero-actions\">\r\n        <a href=\"#calculadora\" class=\"mp-cta-hero\">Use the calculator<\/a>\r\n      <\/div>\r\n    <\/div>\r\n    <div class=\"mp-hero-deco\" aria-hidden=\"true\">\r\n      <div class=\"mp-hero-deco-item\"><span class=\"mp-hero-deco-val\">\u03bb 0.021<\/span><span class=\"mp-hero-deco-lbl\">W\/mK \u2014 Conductividad PUR<\/span><\/div>\r\n      <div class=\"mp-hero-deco-item\"><span class=\"mp-hero-deco-val\">EN14509<\/span><span class=\"mp-hero-deco-lbl\">Norma certificaci\u00f3n EU<\/span><\/div>\r\n      <div class=\"mp-hero-deco-item\"><span class=\"mp-hero-deco-val\">CTE HE1<\/span><span class=\"mp-hero-deco-lbl\">Normativa espa\u00f1ola<\/span><\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- \u2550\u2550\u2550 BARRA FABRICANTE \u2550\u2550\u2550 -->\r\n<div class=\"mp-brand-strip\" role=\"complementary\" aria-label=\"Fabricante\">\r\n  <div class=\"mp-brand-strip-inner\">\r\n    <span class=\"mp-brand-strip-txt\">Manufactured by<\/span>\r\n    <div class=\"mp-brand-strip-sep\"><\/div>\r\n    <img decoding=\"async\" src=\"https:\/\/magon.es\/wp-content\/uploads\/2023\/01\/master-panel-calado-blanco-home-bg.webp\" alt=\"Master Panel\" loading=\"lazy\">\r\n  <\/div>\r\n<\/div>\r\n\r\n<!-- \u2550\u2550\u2550 CALCULADORA \u2550\u2550\u2550 -->\r\n<section class=\"mp-calc-section\" aria-labelledby=\"calc-heading\">\r\n  <span id=\"calculadora\" class=\"mp-calc-anchor\" aria-hidden=\"true\"><\/span>\r\n  <div class=\"mp-calc-wrap\">\r\n    <div class=\"mp-calc-label\">\r\n      <div class=\"mp-calc-label-tag\">Interactive tool<\/div>\r\n      <h2 id=\"calc-heading\">Calculate the sandwich panel thickness you need<\/h2>\r\n      <p>Select your panel, project type and conditions. Results are instant.<\/p>\r\n    <\/div>\r\n    <div class=\"mp-calc-zone\">\r\n      <button class=\"reset-btn\" onclick=\"resetCalc()\">\u21ba New calculation<\/button>\r\n\r\n      <!-- PASO 1 -->\r\n      <div class=\"card\">\r\n        <div class=\"slbl\">Step 1 \u2014 What type of construction is the panel for?<\/div>\r\n        <div class=\"panel-grid\">\r\n          <button class=\"pbtn\" onclick=\"setPanel('masterc')\" id=\"pbtn-masterc\"><span class=\"pi\">\ud83c\udfd7\ufe0f<\/span><span class=\"pn\">Master-C<\/span><span class=\"ps\">Roofing<\/span><span class=\"ptag\">7 esp.<\/span><\/button>\r\n          <button class=\"pbtn\" onclick=\"setPanel('masterf')\" id=\"pbtn-masterf\"><span class=\"pi\">\ud83e\uddf1<\/span><span class=\"pn\">Master-F<\/span><span class=\"ps\">Facade<\/span><span class=\"ptag\">6 esp.<\/span><\/button>\r\n          <button class=\"pbtn active\" onclick=\"setPanel('frigo')\" id=\"pbtn-frigo\"><span class=\"pi\">\ud83e\uddca<\/span><span class=\"pn\">Master-Frigo<\/span><span class=\"ps\">Cold room<\/span><span class=\"ptag\">5 esp.<\/span><\/button>\r\n          <button class=\"pbtn\" onclick=\"setPanel('modul')\" id=\"pbtn-modul\"><span class=\"pi\">\ud83c\udfe0<\/span><span class=\"pn\">Master-Modul<\/span><span class=\"ps\">Modular<\/span><span class=\"ptag\">3 esp.<\/span><\/button>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <!-- PASO 2 -->\r\n      <div class=\"card\">\r\n        <div class=\"slbl\">Step 2 \u2014 What is the space used for?<\/div>\r\n        <div class=\"tipo-grid\">\r\n          <button class=\"tbtn active\" onclick=\"setTipo('nave')\" id=\"tbtn-nave\"><span class=\"ti\">\ud83c\udfed<\/span><span class=\"tn\">Industrial \/ warehouse<\/span><span class=\"ts\">General industrial use<\/span><\/button>\r\n          <button class=\"tbtn\" onclick=\"setTipo('camara')\" id=\"tbtn-camara\"><span class=\"ti\">\u2744\ufe0f<\/span><span class=\"tn\">Cold room<\/span><span class=\"ts\">Industrial refrigeration<\/span><\/button>\r\n          <button class=\"tbtn\" onclick=\"setTipo('vivienda')\" id=\"tbtn-vivienda\"><span class=\"ti\">\ud83c\udfe0<\/span><span class=\"tn\">Residential \/ building<\/span><span class=\"ts\">CTE regulation<\/span><\/button>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"compat-warn hidden\" id=\"compat-warn\"><span class=\"cw-icon\">\u26a0\ufe0f<\/span><span id=\"compat-warn-text\"><\/span><\/div>\r\n\r\n      <!-- PASO 3: NAVE -->\r\n      <div class=\"card\" id=\"card-nave\">\r\n        <div class=\"slbl\">Step 3 \u2014 Project conditions<\/div>\r\n        <div class=\"row\" style=\"margin-bottom:12px\">\r\n          <div class=\"field\">\r\n            <label>Desired indoor temperature (\u00b0C)<\/label>\r\n            <input type=\"number\" id=\"nave-ti\" value=\"18\" min=\"-10\" max=\"40\" oninput=\"calcular()\">\r\n            <span class=\"hint\">Typical temperature inside the building<\/span>\r\n          <\/div>\r\n          <div class=\"field\">\r\n            <label>Minimum outdoor temperature (\u00b0C)<\/label>\r\n            <input type=\"number\" id=\"nave-te\" value=\"-5\" min=\"-20\" max=\"30\" oninput=\"calcular()\">\r\n            <span class=\"hint\">The coldest day of the year in your location<\/span>\r\n          <\/div>\r\n        <\/div>\r\n        <div class=\"field\" style=\"margin-bottom:8px\">\r\n          <label>Will the building have HVAC?<\/label>\r\n          <div class=\"clim-grid\">\r\n            <button class=\"climbtn\" onclick=\"setClim('si')\" id=\"climbtn-si\"><span class=\"cn\">Yes, fully conditioned<\/span><span class=\"cs\">Precise temperature control<\/span><\/button>\r\n            <button class=\"climbtn active\" onclick=\"setClim('parcial')\" id=\"climbtn-parcial\"><span class=\"cn\">Partially<\/span><span class=\"cs\">Basic heating only<\/span><\/button>\r\n            <button class=\"climbtn\" onclick=\"setClim('no')\" id=\"climbtn-no\"><span class=\"cn\">No, unconditioned<\/span><span class=\"cs\">Wind\/rain protection only<\/span><\/button>\r\n          <\/div>\r\n        <\/div>\r\n        <div id=\"nave-u-info\" class=\"infobox\"><\/div>\r\n      <\/div>\r\n\r\n      <!-- PASO 3: C\u00c1MARA -->\r\n      <div class=\"card hidden\" id=\"card-camara\">\r\n        <div class=\"slbl\">Step 3 \u2014 Type of cold room<\/div>\r\n        <div class=\"cam-btns\">\r\n          <button class=\"cbtn active\" onclick=\"setCamara('conservacion')\" id=\"cbtn-conservacion\"><span class=\"cn\">Chilled storage<\/span><span class=\"cr\">0\u00b0C to +8\u00b0C<\/span><\/button>\r\n          <button class=\"cbtn\" onclick=\"setCamara('congelacion')\" id=\"cbtn-congelacion\"><span class=\"cn\">Freezer<\/span><span class=\"cr\">-18\u00b0C to -25\u00b0C<\/span><\/button>\r\n          <button class=\"cbtn\" onclick=\"setCamara('ultracongelacion')\" id=\"cbtn-ultracongelacion\"><span class=\"cn\">Deep freeze<\/span><span class=\"cr\">-26\u00b0C to -46\u00b0C<\/span><\/button>\r\n        <\/div>\r\n        <div id=\"camara-info\" class=\"infobox\" style=\"margin-top:12px\"><\/div>\r\n      <\/div>\r\n\r\n      <!-- PASO 3: VIVIENDA -->\r\n      <div class=\"card hidden\" id=\"card-vivienda\">\r\n        <div class=\"slbl\">Step 3 \u2014 Project location<\/div>\r\n        <div class=\"row-2\">\r\n          <div class=\"field\">\r\n            <label>Province<\/label>\r\n            <select id=\"viv-prov\" onchange=\"onProvChange()\"><option value=\"\">\u2014 Select province \u2014<\/option><\/select>\r\n            <span class=\"hint\">The CTE climate zone is assigned automatically<\/span>\r\n          <\/div>\r\n          <div class=\"field\">\r\n            <label>Building element<\/label>\r\n            <select id=\"viv-elem\" onchange=\"calcular()\">\r\n              <option value=\"cubierta\">Roof \/ flat roof<\/option>\r\n              <option value=\"fachada\">Facade \/ external wall<\/option>\r\n              <option value=\"suelo\">Floor \/ ground slab<\/option>\r\n            <\/select>\r\n            <span class=\"elem-note hidden\" id=\"elem-note\"><\/span>\r\n          <\/div>\r\n        <\/div>\r\n        <div id=\"zona-info\" class=\"infobox hidden\" style=\"margin-top:10px\"><\/div>\r\n      <\/div>\r\n\r\n      <!-- PANEL CHIP -->\r\n      <div class=\"panel-chip\">\r\n        <div><div class=\"pc-tag\" id=\"pc-tag\"><\/div><div class=\"pc-name\" id=\"pc-name\"><\/div><div class=\"pc-desc\" id=\"pc-desc\"><\/div><div class=\"pc-esps\" id=\"pc-esps\"><\/div><\/div>\r\n        <div class=\"pc-lambda\"><span class=\"lv\">0.021<\/span><span class=\"ll\">W\/mK \u2014 \u03bb PUR<\/span><\/div>\r\n      <\/div>\r\n\r\n      <!-- TABLA FRIGO -->\r\n      <div class=\"frigo-note hidden\" id=\"frigo-recom\">\r\n        <div class=\"fn-title\">Minimum recommended thicknesses \u2014 Master-Frigo (official technical datasheet)<\/div>\r\n        <div class=\"frigo-table-wrap\">\r\n          <table class=\"frigo-table\">\r\n            <thead><tr><th>Type<\/th><th>Range (\u00b0C)<\/th><th>Int. Wall<\/th><th>Int. Ceiling<\/th><th>Ext. Wall<\/th><th>Ext. Ceiling<\/th><\/tr><\/thead>\r\n            <tbody>\r\n              <tr><td>Chilled<\/td><td>+15 a +4<\/td><td>60mm<\/td><td>60mm<\/td><td>60mm<\/td><td>60mm<\/td><\/tr>\r\n              <tr><td>Chilled<\/td><td>+4 a -4<\/td><td>60mm<\/td><td>60mm<\/td><td>80mm<\/td><td>80mm<\/td><\/tr>\r\n              <tr><td>Chilled<\/td><td>-4 a -10<\/td><td>80mm<\/td><td>80mm<\/td><td>80mm<\/td><td>100mm<\/td><\/tr>\r\n              <tr><td>Freezer<\/td><td>-10 a -18<\/td><td>100mm<\/td><td>100mm<\/td><td>100mm<\/td><td>100mm<\/td><\/tr>\r\n              <tr><td>Freezer<\/td><td>-18 a -26<\/td><td>100mm<\/td><td>100mm<\/td><td>120mm<\/td><td>120mm<\/td><\/tr>\r\n              <tr><td>Freezer<\/td><td>-26 a -40<\/td><td>120mm<\/td><td>120mm<\/td><td>150mm<\/td><td>150mm<\/td><\/tr>\r\n              <tr><td>Blast<\/td><td>-40 a -46<\/td><td>150mm<\/td><td>150mm<\/td><td>150mm<\/td><td>150mm<\/td><\/tr>\r\n            <\/tbody>\r\n          <\/table>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <!-- RESULTADO -->\r\n      <div class=\"card-dark\">\r\n        <div class=\"slbl\" style=\"color:var(--or)\">Calculation result<\/div>\r\n        <div class=\"res-grid\">\r\n          <div class=\"metric\"><div class=\"ml\">Minimum thickness<\/div><div class=\"mv\" id=\"res-esp\">\u2014<\/div><div class=\"mu\">mm theoretical<\/div><\/div>\r\n          <div class=\"metric hero\"><div class=\"ml\">Recommended thickness<\/div><div class=\"mv\" id=\"res-com\">\u2014<\/div><div class=\"mu\">mm catalogue<\/div><\/div>\r\n          <div class=\"metric\"><div class=\"ml\">Resulting U-value<\/div><div class=\"mv\" id=\"res-u\">\u2014<\/div><div class=\"mu\">W\/m\u00b2K certified<\/div><\/div>\r\n        <\/div>\r\n        <div class=\"bar-wrap\">\r\n          <div class=\"bar-hd\"><span class=\"bl\">Margin above required limit<\/span><span class=\"bv\" id=\"bar-pct\">\u2014<\/span><\/div>\r\n          <div class=\"bar-track\"><div class=\"bar-fill\" id=\"bar-fill\" style=\"width:0%\"><\/div><\/div>\r\n        <\/div>\r\n        <div id=\"alert-box\" class=\"alert a-ok\"><div class=\"at\" id=\"alert-title\">\u2014<\/div><div class=\"ab\" id=\"alert-body\">\u2014<\/div><\/div>\r\n        <div class=\"comp-table-wrap\"><table class=\"comp-table\" id=\"comp-table\"><\/table><\/div>\r\n        <div class=\"frow\"><span>EN ISO 6946 formula:<\/span><code>U = 1 \/ (Rsi + e\/\u03bb + Rse)<\/code><span>Rsi=0.13 \u00b7 Rse=0.04 m\u00b2K\/W \u00b7 \u03bb=0.021 W\/mK<\/span><\/div>\r\n      <\/div>\r\n\r\n      <!-- AHORRO ENERG\u00c9TICO -->\r\n      <div class=\"ahorro-card\">\r\n        <div class=\"slbl\" style=\"color:var(--or)\">Energy savings estimate<\/div>\r\n        <div class=\"energia-grid\">\r\n          <button class=\"ebtn active\" onclick=\"setEnergia('gas')\" id=\"ebtn-gas\"><span class=\"en\">Natural gas<\/span><span class=\"ep\" id=\"ep-gas\">0.043 \u20ac\/kWh<\/span><span class=\"es\">Regulated rate<\/span><\/button>\r\n          <button class=\"ebtn\" onclick=\"setEnergia('elec')\" id=\"ebtn-elec\"><span class=\"en\">Electricity<\/span><span class=\"ep\" id=\"ep-elec\">cargando...<\/span><span class=\"es\">Real-time price<\/span><\/button>\r\n          <button class=\"ebtn\" onclick=\"setEnergia('gasoil')\" id=\"ebtn-gasoil\"><span class=\"en\">Heating oil<\/span><span class=\"ep\" id=\"ep-gasoil\">0.095 \u20ac\/kWh<\/span><span class=\"es\">Indicative price<\/span><\/button>\r\n        <\/div>\r\n        <div class=\"precio-status\" id=\"precio-status\"><span class=\"dot-fijo\" id=\"precio-dot\"><\/span><span id=\"precio-status-txt\">Natural gas regulated rate Q1 2026<\/span><\/div>\r\n        <div class=\"ahorro-inputs\">\r\n          <div class=\"field\"><label>Surface area to cover (m\u00b2)<\/label><input type=\"number\" id=\"ah-sup\" value=\"1000\" step=\"100\" min=\"10\" max=\"100000\" oninput=\"calcular()\"><span class=\"hint\">Total square metres of the project<\/span><\/div>\r\n          <div class=\"field\"><label>System efficiency (%)<\/label><input type=\"number\" id=\"ah-rend\" value=\"90\" step=\"1\" min=\"50\" max=\"350\" oninput=\"calcular()\"><span class=\"hint\">Gas boiler \u224890% \u00b7 Heat pump \u2248300% \u00b7 Oil \u224885%<\/span><\/div>\r\n        <\/div>\r\n        <div class=\"ahorro-grid\">\r\n          <div class=\"ahorro-metric\"><div class=\"aml\">Heat loss (rec. panel)<\/div><div class=\"amv\" id=\"ah-perdida\">\u2014<\/div><div class=\"amu\">W\/m\u00b2 design conditions<\/div><\/div>\r\n          <div class=\"ahorro-metric\"><div class=\"aml\">Savings vs. no insulation<\/div><div class=\"amv\" id=\"ah-pct\">\u2014<\/div><div class=\"amu\">% heat retained<\/div><\/div>\r\n          <div class=\"ahorro-metric\"><div class=\"aml\">Estimated annual savings<\/div><div class=\"amv\" id=\"ah-euros\">\u2014<\/div><div class=\"amu\" id=\"ah-euros-sub\">\u20ac\/a\u00f1o \u00b7 3.000 h\/a\u00f1o<\/div><\/div>\r\n        <\/div>\r\n        <div class=\"ahorro-note\">* Indicative estimate based on 3,000 h\/year of operation.<\/div>\r\n      <\/div>\r\n\r\n      <!-- AVISO -->\r\n      <div style=\"background:#fff8e0;border:1px solid #f0d070;border-radius:var(--rl);padding:1.2rem 1.4rem;margin-bottom:.75rem\">\r\n        <div style=\"font-size:11px;font-weight:700;color:#6e4000;text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px\">\u26a0 Important notice \u2014 Please read before downloading<\/div>\r\n        <p style=\"font-size:12px;color:#7a4e00;line-height:1.65;margin-bottom:6px\">The results of this calculator are <strong>indicative and non-binding<\/strong>. U-value and R-value data comes from EN14509 certified technical datasheets.<\/p>\r\n        <p style=\"font-size:12px;color:#7a4e00;line-height:1.65;margin:0\">Before applying this data on a real project, it is <strong>essential to consult a qualified engineer or architect<\/strong>.<\/p>\r\n      <\/div>\r\n\r\n      <button class=\"pdf-btn\" onclick=\"abrirModal()\">\ud83d\udcc4 Download PDF report<\/button>\r\n\r\n      <div class=\"cta\">\r\n        <div><strong>Need a quote for your project?<\/strong><p>Our technical team will advise you with no obligation.<\/p><\/div>\r\n        <a class=\"cta-btn\" href=\"https:\/\/magon.es\" target=\"_blank\" rel=\"noopener\">Request a quote \u2192<\/a>\r\n      <\/div>\r\n\r\n      <div class=\"fnote\">\r\n        Herramienta orientativa. Valores U\/R certificados seg\u00fan EN14509. Consultar con t\u00e9cnico competente antes de aplicar en obra real.\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- \u2550\u2550\u2550 QU\u00c9 ESPESOR NECESITO SEG\u00daN EL USO \u2550\u2550\u2550 -->\r\n<section class=\"mp-content-section\" id=\"sandwich-panel-thickness-by-use\">\r\n  <div class=\"mp-land-inner\">\r\n    <div class=\"mp-section-tag\">Thickness guide<\/div>\r\n    <h2 class=\"mp-section-h2\">What sandwich panel thickness do I need <em>by application<\/em>?<\/h2>\r\n    <p class=\"mp-section-lead\">Sandwich panel thickness depends on the building's use, climate zone and thermal insulation requirements. An industrial warehouse is not the same as a cold room or a house. The values below are <strong>approximate and indicative<\/strong>: get the exact thickness for your project using the calculator above, which uses EN14509 certified U-values.<\/p>\r\n\r\n    <h3 style=\"font-family:'Barlow Condensed',sans-serif;font-size:22px;font-weight:800;color:var(--dk);margin:0 0 10px;letter-spacing:-.01em;\">\ud83c\udfed Industrial buildings and warehouses<\/h3>\r\n    <p class=\"mp-body\">The key factor in industrial buildings is the temperature difference between inside and outside and whether there will be HVAC or not. The greater the thermal differential and the more precise the temperature control required, the more insulation you will need to maintain energy efficiency and avoid condensation. See the <a href=\"https:\/\/magon.es\/productos\/panel-sandwich-cubierta\/\" target=\"_blank\" rel=\"noopener noreferrer\">Master-C roofing panel<\/a> and <a href=\"https:\/\/magon.es\/productos\/panel-sandwich-para-fachadas\/\" target=\"_blank\" rel=\"noopener noreferrer\">Master-F facade panel<\/a> datasheets for all available thicknesses.<\/p>\r\n    <div class=\"mp-esp-table-wrap\">\r\n      <table class=\"mp-esp-table\">\r\n        <thead><tr><th>Situation<\/th><th>Roof (approx.)<\/th><th>Facade (approx.)<\/th><\/tr><\/thead>\r\n        <tbody>\r\n          <tr><td>No HVAC \/ basic protection<\/td><td class=\"esp-rec\">\u2248 40 mm<\/td><td class=\"esp-rec\">\u2248 40 mm<\/td><\/tr>\r\n          <tr><td>Basic or partial heating<\/td><td class=\"esp-rec\">\u2248 60 mm<\/td><td class=\"esp-rec\">\u2248 50 mm<\/td><\/tr>\r\n          <tr><td>Full air conditioning<\/td><td class=\"esp-rec\">\u2248 80 mm<\/td><td class=\"esp-rec\">\u2248 80 mm<\/td><\/tr>\r\n          <tr><td>Industrial process \/ controlled temperature<\/td><td class=\"esp-rec\">\u2248 100 mm<\/td><td class=\"esp-rec\">\u2248 80\u2013100 mm<\/td><\/tr>\r\n        <\/tbody>\r\n      <\/table>\r\n    <\/div>\r\n    <p class=\"mp-body\" style=\"font-size:12px;color:var(--mid);\">* Approximate values. Use the calculator with your actual project temperatures to get the exact thickness and certified U-value.<\/p>\r\n\r\n    <h3 style=\"font-family:'Barlow Condensed',sans-serif;font-size:22px;font-weight:800;color:var(--dk);margin:32px 0 10px;letter-spacing:-.01em;\">\ud83c\udfe0 Residential buildings \u2014 Spanish CTE DB-HE1 standard<\/h3>\r\n    <p class=\"mp-body\">In residential and non-residential buildings in Spain, the <a href=\"https:\/\/www.codigotecnico.org\/pdf\/Documentos\/HE\/DBHE.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">CTE DB-HE1 (Royal Decree 450\/2022)<\/a> sets maximum U-values by climate zone. As a guide, southern and eastern coastal areas require less insulation, while the inland peninsula, north and mountain areas need greater thickness for both roof and facade. The calculator automatically assigns the climate zone when you select the province. For modular construction see the <a href=\"https:\/\/magon.es\/productos\/panel-sandwich-modular\/\" target=\"_blank\" rel=\"noopener noreferrer\">Master-Modul modular panel<\/a>.<\/p>\r\n    <div class=\"mp-esp-table-wrap\">\r\n      <table class=\"mp-esp-table\">\r\n        <thead><tr><th>CTE Zone<\/th><th>Roof (approx.)<\/th><th>Facade (approx.)<\/th><th>U max. reference<\/th><\/tr><\/thead>\r\n        <tbody>\r\n          <tr><td>Zone \u03b1 \/ A \u2014 Canary Islands, Andalusia<\/td><td class=\"esp-rec\">\u2248 40\u201350 mm<\/td><td class=\"esp-rec\">\u2248 40 mm<\/td><td style=\"color:var(--mid);font-size:12px\">0.73 \/ 0.62 W\/m\u00b2K<\/td><\/tr>\r\n          <tr><td>Zone B \u2014 Levante, Balearic Islands<\/td><td class=\"esp-rec\">\u2248 50\u201360 mm<\/td><td class=\"esp-rec\">\u2248 50 mm<\/td><td style=\"color:var(--mid);font-size:12px\">0.52 \/ 0.44 W\/m\u00b2K<\/td><\/tr>\r\n          <tr><td>Zone C \u2014 Madrid, Barcelona, Toledo<\/td><td class=\"esp-rec\">\u2248 60\u201380 mm<\/td><td class=\"esp-rec\">\u2248 60 mm<\/td><td style=\"color:var(--mid);font-size:12px\">0.41 \/ 0.35 W\/m\u00b2K<\/td><\/tr>\r\n          <tr><td>Zone D \u2014 Castile, Navarre, La Rioja<\/td><td class=\"esp-rec\">\u2248 80 mm<\/td><td class=\"esp-rec\">\u2248 80 mm<\/td><td style=\"color:var(--mid);font-size:12px\">0.38 \/ 0.32 W\/m\u00b2K<\/td><\/tr>\r\n          <tr><td>Zone E \u2014 \u00c1vila, Soria, mountain areas<\/td><td class=\"esp-rec\">\u2248 80\u2013100 mm<\/td><td class=\"esp-rec\">\u2248 80 mm<\/td><td style=\"color:var(--mid);font-size:12px\">0.35 \/ 0.29 W\/m\u00b2K<\/td><\/tr>\r\n        <\/tbody>\r\n      <\/table>\r\n    <\/div>\r\n    <p class=\"mp-body\" style=\"font-size:12px;color:var(--mid);margin-top:8px;\">* Approximate values based on available catalogue thicknesses. Actual thickness depends on the chosen panel and its EN14509 certified characteristics.<\/p>\r\n\r\n    <h3 style=\"font-family:'Barlow Condensed',sans-serif;font-size:22px;font-weight:800;color:var(--dk);margin:32px 0 10px;letter-spacing:-.01em;\">\u2744\ufe0f Cold rooms and refrigerated spaces<\/h3>\r\n    <p class=\"mp-body\">Cold rooms are not governed by the CTE but by the temperature gradient between inside and outside: the greater the thermal differential, the greater the thickness required. The <a href=\"https:\/\/magon.es\/productos\/panel-sandwich-frigorifico\/\" target=\"_blank\" rel=\"noopener noreferrer\">Master-Frigo cold room panel<\/a> is specifically certified for this use with high-density foam and hermetic joints that prevent thermal bridges. Always confirm the final thickness with our technical team.<\/p>\r\n    <div class=\"mp-esp-table-wrap\">\r\n      <table class=\"mp-esp-table\">\r\n        <thead><tr><th>Room type<\/th><th>Approx. interior temp.<\/th><th>Wall (approx.)<\/th><th>Ceiling (approx.)<\/th><\/tr><\/thead>\r\n        <tbody>\r\n          <tr><td>Positive chilled storage<\/td><td>0\u00b0C to +8\u00b0C<\/td><td class=\"esp-rec\">\u2248 60 mm<\/td><td class=\"esp-rec\">\u2248 60 mm<\/td><\/tr>\r\n          <tr><td>Negative chilled storage<\/td><td>\u22124\u00b0C to \u221210\u00b0C<\/td><td class=\"esp-rec\">\u2248 80 mm<\/td><td class=\"esp-rec\">\u2248 100 mm<\/td><\/tr>\r\n          <tr><td>Freezing<\/td><td>\u221210\u00b0C to \u221225\u00b0C<\/td><td class=\"esp-rec\">\u2248 100\u2013120 mm<\/td><td class=\"esp-rec\">\u2248 100\u2013120 mm<\/td><\/tr>\r\n          <tr><td>Deep freeze \/ blast<\/td><td>\u221226\u00b0C to \u221246\u00b0C<\/td><td class=\"esp-rec\">\u2248 150 mm<\/td><td class=\"esp-rec\">\u2248 150 mm<\/td><\/tr>\r\n        <\/tbody>\r\n      <\/table>\r\n    <\/div>\r\n    <p class=\"mp-body\" style=\"font-size:12px;color:var(--mid);margin-top:8px;\">* Approximate values from Master-Frigo technical datasheet. Always consult a specialist engineer to confirm the final thickness for your project.<\/p>\r\n    <p class=\"mp-body\" style=\"margin-top:14px;\">Not sure which panel best suits your project? Browse the <a href=\"https:\/\/magon.es\/masterpanel-fabricantes-panel-sandwich\/\" target=\"_blank\" rel=\"noopener noreferrer\">full Masterpanel panel catalogue<\/a> or use the calculator above to get the exact thickness with a certified U-value.<\/p>\r\n  <\/div>\r\n<\/section>\r\n<!-- \u2550\u2550\u2550 QU\u00c9 ES LA TRANSMITANCIA U \u2550\u2550\u2550 -->\r\n<section class=\"mp-content-section\" id=\"que-es-transmitancia-termica\">\r\n  <div class=\"mp-land-inner\">\r\n    <div>\r\n      <div class=\"mp-section-tag\">Technical concepts<\/div>\r\n      <h2 class=\"mp-section-h2\">What is <em>U-value (thermal transmittance)<\/em> and why does it determine panel thickness?<\/h2>\r\n      <p class=\"mp-body\">The <strong>U-value (thermal transmittance)<\/strong> measures how much heat passes through a sandwich panel per square metre for each degree of temperature difference between inside and outside, expressed in <strong>W\/m\u00b2K<\/strong>. The lower the U-value, the better the panel's thermal insulation.<\/p>\r\n      <p class=\"mp-body\">La <a href=\"https:\/\/www.codigotecnico.org\/pdf\/Documentos\/HE\/DBHE.pdf\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Spanish standard CTE DB-HE1<\/strong><\/a> sets maximum U-values by climate zone and building element. El c\u00e1lculo sigue la norma <a href=\"https:\/\/www.une.org\/encuentra-tu-norma\/busca-tu-norma\/norma\/?c=N0050491\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>EN ISO 6946<\/strong><\/a> con datos certificados <a href=\"https:\/\/www.une.org\/encuentra-tu-norma\/busca-tu-norma\/norma\/?c=N0051040\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>EN14509<\/strong><\/a>:<\/p>\r\n      <div class=\"mp-formula\">\r\n        <code>U = 1 \/ (Rsi + e\/\u03bb + Rse)<\/code>\r\n        <ul>\r\n          <li><strong>Rsi = 0.13 m\u00b2K\/W<\/strong> \u2014 interior surface resistance<\/li>\r\n          <li><strong>Rse = 0.04 m\u00b2K\/W<\/strong> \u2014 exterior surface resistance<\/li>\r\n          <li><strong>e<\/strong> \u2014 core thickness in metres<\/li>\r\n          <li><strong>\u03bb = 0.021 W\/mK<\/strong> \u2014 thermal conductivity of Masterpanel PUR polyurethane<\/li>\r\n        <\/ul>\r\n      <\/div>\r\n      <p class=\"mp-body\">Using this formula, an <strong>80 mm panel<\/strong> achieves U = 0.26 W\/m\u00b2K, sufficient to comply with the CTE standard in all Spanish climate zones for roof elements.<\/p>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- \u2550\u2550\u2550 ZONAS CTE \u2550\u2550\u2550 -->\r\n<section class=\"mp-content-section alt\" id=\"zonas-climaticas-cte-espana\">\r\n  <div class=\"mp-land-inner\">\r\n    <div class=\"mp-section-tag\">CTE DB-HE1 2022 Standard<\/div>\r\n    <h2 class=\"mp-section-h2\">CTE climate zones in Spain: <em>maximum U-values by province<\/em><\/h2>\r\n    <p class=\"mp-section-lead\">The CTE DB-HE1 (Royal Decree 450\/2022) classifies Spain into 6 climate zones. The calculator automatically assigns the zone when you select the province.<\/p>\r\n    <div class=\"mp-zonas-grid\">\r\n      <div class=\"mp-zona-card\"><div class=\"mp-zona-letter\">\u03b1<\/div><div class=\"mp-zona-name\">Canary Islands, south coast<\/div><div class=\"mp-zona-vals\"><span>Cubierta: U \u2264 0,94 W\/m\u00b2K<\/span><span>Fachada: U \u2264 0,80 W\/m\u00b2K<\/span><\/div><\/div>\r\n      <div class=\"mp-zona-card\"><div class=\"mp-zona-letter\">A<\/div><div class=\"mp-zona-name\">Almer\u00eda, C\u00e1diz, M\u00e1laga, Sevilla<\/div><div class=\"mp-zona-vals\"><span>Cubierta: U \u2264 0,73 W\/m\u00b2K<\/span><span>Fachada: U \u2264 0,62 W\/m\u00b2K<\/span><\/div><\/div>\r\n      <div class=\"mp-zona-card\"><div class=\"mp-zona-letter\">B<\/div><div class=\"mp-zona-name\">Alicante, Murcia, Valencia, Balearic Islands<\/div><div class=\"mp-zona-vals\"><span>Cubierta: U \u2264 0,52 W\/m\u00b2K<\/span><span>Fachada: U \u2264 0,44 W\/m\u00b2K<\/span><\/div><\/div>\r\n      <div class=\"mp-zona-card\" style=\"border-top-color:var(--or);background:#fffcf0;\"><div class=\"mp-zona-letter\">C<\/div><div class=\"mp-zona-name\">Barcelona, Madrid, Toledo, Badajoz<\/div><div class=\"mp-zona-vals\"><span>Cubierta: U \u2264 0,41 W\/m\u00b2K<\/span><span>Fachada: U \u2264 0,35 W\/m\u00b2K<\/span><\/div><\/div>\r\n      <div class=\"mp-zona-card\"><div class=\"mp-zona-letter\">D<\/div><div class=\"mp-zona-name\">Burgos, Salamanca, Valladolid, Navarre<\/div><div class=\"mp-zona-vals\"><span>Cubierta: U \u2264 0,38 W\/m\u00b2K<\/span><span>Fachada: U \u2264 0,32 W\/m\u00b2K<\/span><\/div><\/div>\r\n      <div class=\"mp-zona-card\"><div class=\"mp-zona-letter\">E<\/div><div class=\"mp-zona-name\">\u00c1vila, Segovia, Soria, mountain areas<\/div><div class=\"mp-zona-vals\"><span>Cubierta: U \u2264 0,35 W\/m\u00b2K<\/span><span>Fachada: U \u2264 0,29 W\/m\u00b2K<\/span><\/div><\/div>\r\n    <\/div>\r\n    <p style=\"font-size:12px;color:var(--mid);margin-top:16px;\">Source: <a href=\"https:\/\/www.codigotecnico.org\/pdf\/Documentos\/HE\/DBHE.pdf\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color:var(--or);font-weight:600;\">CTE DB-HE1 (Royal Decree 450\/2022)<\/a>. Maximum admissible U-values for roofs and facades in new construction. <a href=\"https:\/\/www.codigotecnico.org\/Programas\/AplicacionZonasClimaticas.html\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color:var(--or);font-weight:600;\">Check your municipality's climate zone \u2192<\/a><\/p>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- \u2550\u2550\u2550 TABLA CTE \u2550\u2550\u2550 -->\r\n<section class=\"mp-content-section\" id=\"transmitancia-u-cte-cubiertas-fachadas\">\r\n  <div class=\"mp-land-inner\">\r\n    <div>\r\n      <div class=\"mp-section-tag\">Current regulations<\/div>\r\n      <h2 class=\"mp-section-h2\">What <em>U-value<\/em> does the CTE require for roofs and facades?<\/h2>\r\n      <p class=\"mp-body\">The <strong>Spanish Technical Building Code (CTE) \u2014 Basic Document HE1<\/strong>, as revised by <a href=\"https:\/\/www.codigotecnico.org\/pdf\/Documentos\/HE\/DBHE.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">Royal Decree 450\/2022<\/a>, sets the maximum U-values for building envelope elements in new construction and major renovations.<\/p>\r\n      <div style=\"overflow-x:auto;margin:18px 0;-webkit-overflow-scrolling:touch;\">\r\n        <table class=\"cte-u-table\">\r\n          <thead>\r\n            <tr>\r\n              <th class=\"cte-th cte-th--left\">CTE Zone<\/th>\r\n              <th class=\"cte-th cte-th--center\">Roof U max.<\/th>\r\n              <th class=\"cte-th cte-th--center\">Facade U max.<\/th>\r\n              <th class=\"cte-th cte-th--left\">Representative provinces<\/th>\r\n            <\/tr>\r\n          <\/thead>\r\n          <tbody>\r\n            <tr class=\"cte-tr cte-tr--odd\"><td class=\"cte-td cte-td--zona cte-td--or\">\u03b1<\/td><td class=\"cte-td cte-td--center\">0,94 W\/m\u00b2K<\/td><td class=\"cte-td cte-td--center\">0,80 W\/m\u00b2K<\/td><td class=\"cte-td cte-td--prov\">Canary Islands, south coast<\/td><\/tr>\r\n            <tr class=\"cte-tr cte-tr--even\"><td class=\"cte-td cte-td--zona\">A<\/td><td class=\"cte-td cte-td--center\">0,73 W\/m\u00b2K<\/td><td class=\"cte-td cte-td--center\">0,62 W\/m\u00b2K<\/td><td class=\"cte-td cte-td--prov\">Almer\u00eda, C\u00e1diz, M\u00e1laga, Sevilla<\/td><\/tr>\r\n            <tr class=\"cte-tr cte-tr--odd\"><td class=\"cte-td cte-td--zona\">B<\/td><td class=\"cte-td cte-td--center\">0,52 W\/m\u00b2K<\/td><td class=\"cte-td cte-td--center\">0,44 W\/m\u00b2K<\/td><td class=\"cte-td cte-td--prov\">Alicante, Murcia, Valencia, Balearic Islands<\/td><\/tr>\r\n            <tr class=\"cte-tr cte-tr--highlight\"><td class=\"cte-td cte-td--zona cte-td--or\">C<\/td><td class=\"cte-td cte-td--center cte-td--bold\">0,41 W\/m\u00b2K<\/td><td class=\"cte-td cte-td--center cte-td--bold\">0,35 W\/m\u00b2K<\/td><td class=\"cte-td cte-td--prov\">Barcelona, Madrid, Toledo, Badajoz<\/td><\/tr>\r\n            <tr class=\"cte-tr cte-tr--odd\"><td class=\"cte-td cte-td--zona\">D<\/td><td class=\"cte-td cte-td--center\">0,38 W\/m\u00b2K<\/td><td class=\"cte-td cte-td--center\">0,32 W\/m\u00b2K<\/td><td class=\"cte-td cte-td--prov\">Burgos, Salamanca, Valladolid, Navarre<\/td><\/tr>\r\n            <tr class=\"cte-tr cte-tr--even cte-tr--last\"><td class=\"cte-td cte-td--zona\">E<\/td><td class=\"cte-td cte-td--center\">0,35 W\/m\u00b2K<\/td><td class=\"cte-td cte-td--center\">0,29 W\/m\u00b2K<\/td><td class=\"cte-td cte-td--prov\">\u00c1vila, Segovia, Soria, mountain areas<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n      <\/div>\r\n      <p class=\"mp-body\"><strong>How to find the climate zone for your municipality?<\/strong> The <a href=\"https:\/\/www.codigotecnico.org\/Programas\/AplicacionZonasClimaticas.html\" target=\"_blank\" rel=\"noopener noreferrer\">CTE climate zone finder<\/a> lets you check the zone assigned to any municipality in Spain.<\/p>\r\n      <div style=\"background:var(--ibg);border:1px solid var(--ibrd);border-radius:var(--rl);padding:1rem 1.4rem;margin-top:18px;\">\r\n        <p style=\"font-size:12px;color:var(--info);margin:0;font-weight:600;\">\ud83d\udccc Note: Table values correspond to the current CTE DB-HE1 (Royal Decree 450\/2022). Always check the official consolidated text at <a href=\"https:\/\/www.codigotecnico.org\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color:var(--info);\">codigotecnico.org<\/a> before drafting any technical project.<\/p>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- \u2550\u2550\u2550 FAQ \u2550\u2550\u2550 -->\r\n<section class=\"mp-content-section\" id=\"preguntas-frecuentes-aislamiento-panel-sandwich\">\r\n  <div class=\"mp-land-inner\">\r\n    <div>\r\n      <div class=\"mp-section-tag\">Frequently asked questions<\/div>\r\n      <h2 class=\"mp-section-h2\">Frequently asked questions about <em>thermal insulation with sandwich panels<\/em><\/h2>\r\n      <div style=\"margin-top:28px;\">\r\n        <div class=\"mp-faq-item\">\r\n          <button class=\"mp-faq-q\" onclick=\"mpFaq(this)\" aria-expanded=\"false\">What sandwich panel thickness do I need for my industrial building?<span class=\"mp-faq-icon\">+<\/span><\/button>\r\n          <div class=\"mp-faq-a\">It depends on the temperature difference and the type of HVAC system. Para naves sin climatizaci\u00f3n con \u0394T de 20\u00b0C se a panel of 40-50 mm with U \u2264 0.55 W\/m\u00b2K is recommended. Para naves climatizadas con control preciso de temperatura 60-80 mm with U \u2264 0.35 W\/m\u00b2K is recommended. Use the calculator to get the exact thickness.<\/div>\r\n        <\/div>\r\n        <div class=\"mp-faq-item\">\r\n          <button class=\"mp-faq-q\" onclick=\"mpFaq(this)\" aria-expanded=\"false\">What is the minimum panel thickness for a cold room?<span class=\"mp-faq-icon\">+<\/span><\/button>\r\n          <div class=\"mp-faq-a\">Thickness varies by temperature: chilled storage (0\u00b0C to +8\u00b0C) \u2192 60 mm; freezing (-18\u00b0C to -25\u00b0C) \u2192 100 mm; deep freeze (-26\u00b0C to -46\u00b0C) \u2192 120-150 mm. Valores para Master-Frigo con \u03bb = 0,021 W\/mK seg\u00fan ficha t\u00e9cnica oficial.<\/div>\r\n        <\/div>\r\n        <div class=\"mp-faq-item\">\r\n          <button class=\"mp-faq-q\" onclick=\"mpFaq(this)\" aria-expanded=\"false\">How is the U-value of a sandwich panel calculated?<span class=\"mp-faq-icon\">+<\/span><\/button>\r\n          <div class=\"mp-faq-a\">According to EN ISO 6946: U = 1 \/ (Rsi + e\/\u03bb + Rse). With Rsi = 0.13 m\u00b2K\/W, Rse = 0.04 m\u00b2K\/W, e in metres and \u03bb = 0.021 W\/mK (Masterpanel PUR). EN14509 certified values are used by this calculator.<\/div>\r\n        <\/div>\r\n        <div class=\"mp-faq-item\">\r\n          <button class=\"mp-faq-q\" onclick=\"mpFaq(this)\" aria-expanded=\"false\">What is the maximum U-value required by the CTE for roofs and facades?<span class=\"mp-faq-icon\">+<\/span><\/button>\r\n          <div class=\"mp-faq-a\">According to CTE DB-HE1 (2022 version): Zone \u03b1 \u2192 0.94\/0.80; Zone A \u2192 0.73\/0.62; Zone B \u2192 0.52\/0.44; Zone C (Madrid, Toledo) \u2192 0.41\/0.35; Zone D \u2192 0.38\/0.32; Zone E \u2192 0.35\/0.29 W\/m\u00b2K (roof\/facade). The calculator assigns your zone when you select the province.<\/div>\r\n        <\/div>\r\n        <div class=\"mp-faq-item\">\r\n          <button class=\"mp-faq-q\" onclick=\"mpFaq(this)\" aria-expanded=\"false\">Does the calculator's PDF report have official technical validity?<span class=\"mp-faq-icon\">+<\/span><\/button>\r\n          <div class=\"mp-faq-a\">The report is indicative and non-binding. Calculations are based on EN ISO 6946 and EN14509 certified values, but do not replace a technical project signed by a qualified professional (architect or engineer).<\/div>\r\n        <\/div>\r\n        <div class=\"mp-faq-item\">\r\n          <button class=\"mp-faq-q\" onclick=\"mpFaq(this)\" aria-expanded=\"false\">Do sandwich panels have fire resistance?<span class=\"mp-faq-icon\">+<\/span><\/button>\r\n          <div class=\"mp-faq-a\">Yes. Masterpanel sandwich panels with PUR\/PIR core can achieve REI-30 and REI-60 fire resistance classifications depending on thickness and sheet configuration. The applicable standard is <strong>EN 13501-1<\/strong> and the <strong>CTE DB-SI<\/strong>.<\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- \u2550\u2550\u2550 PIE DE P\u00c1GINA \u2550\u2550\u2550 -->\r\n<footer class=\"mp-footer\" role=\"contentinfo\">\r\n  <div class=\"mp-footer-inner\">\r\n    <span class=\"mp-footer-copy\">\u00a9 2026 Mag\u00f3n Empresas. All rights reserved.<\/span>\r\n    <nav class=\"mp-footer-links\" aria-label=\"Legal\">\r\n      <a href=\"https:\/\/magon.es\/aviso-legal\/\" target=\"_blank\" rel=\"noopener\">Legal notice<\/a>\r\n      <a href=\"https:\/\/magon.es\/politica-privacidad\/\" target=\"_blank\" rel=\"noopener\">Privacy policy<\/a>\r\n      <a href=\"https:\/\/magon.es\/politica-cookies\/\" target=\"_blank\" rel=\"noopener\">Cookie policy<\/a>\r\n    <\/nav>\r\n  <\/div>\r\n<\/footer>\r\n\r\n<\/div><!-- \/.mp-land -->\r\n\r\n<div id=\"ctx-msg\">\ud83d\ude04 Nice try \u2014 \u00a9 Master Panel, S.L. All rights reserved<\/div>\r\n\r\n<!-- \u2550\u2550\u2550 MODAL FORMULARIO \u2550\u2550\u2550 -->\r\n<div class=\"modal-bg hidden\" id=\"modal\">\r\n  <div class=\"modal\">\r\n    <div class=\"modal-header\">\r\n      <button class=\"modal-close\" onclick=\"cerrarModal()\" aria-label=\"Cerrar\">\u2715<\/button>\r\n      <h2>\ud83d\udcc4 Download your PDF report<\/h2>\r\n      <p class=\"modal-sub\">Fill in your details and you will receive the thermal calculation report. The download starts automatically on submission.<\/p>\r\n    <\/div>\r\n    <div id=\"modal-form-wrap\">\r\n      <div class=\"modal-body\">\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=\"m-err-txt\" id=\"err-nombre\">Please enter your name.<\/span>\r\n        <\/div>\r\n\r\n        <div class=\"mfield\">\r\n          <label>Phone <span class=\"opt-tag\">Optional<\/span><\/label>\r\n          <input type=\"tel\" id=\"m-telefono\" placeholder=\"+44 7000 000000\" maxlength=\"20\" autocomplete=\"tel\">\r\n          <span class=\"m-err-txt\" id=\"err-telefono\">Invalid format.<\/span>\r\n        <\/div>\r\n\r\n        <div class=\"mfield\">\r\n          <label>Email address <span class=\"req\">*<\/span><\/label>\r\n          <input type=\"email\" id=\"m-email\" placeholder=\"you@email.com\" maxlength=\"150\" autocomplete=\"email\">\r\n          <span class=\"m-err-txt\" id=\"err-email\">Please enter a valid email.<\/span>\r\n        <\/div>\r\n\r\n        <div class=\"mfield\">\r\n          <label>Company <span class=\"opt-tag\">Optional<\/span><\/label>\r\n          <input type=\"text\" id=\"m-empresa\" placeholder=\"Your company name\" maxlength=\"120\" autocomplete=\"organization\">\r\n        <\/div>\r\n\r\n        <!-- Pa\u00eds: obligatorio, todos los pa\u00edses del shortcode CF7 -->\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=\"\">\u2014 Select your country \u2014<\/option>\r\n            <optgroup label=\"Espa\u00f1a\"><option value=\"Espa\u00f1a\">Espa\u00f1a<\/option><\/optgroup>\r\n            <optgroup label=\"Europa\">\r\n              <option>Alemania<\/option><option>Andorra<\/option><option>Austria<\/option>\r\n              <option>B\u00e9lgica<\/option><option>Bulgaria<\/option><option>Chipre<\/option>\r\n              <option>Croacia<\/option><option>Dinamarca<\/option><option>Eslovaquia<\/option>\r\n              <option>Eslovenia<\/option><option>Estonia<\/option><option>Finlandia<\/option>\r\n              <option>Francia<\/option><option>Grecia<\/option><option>Hungr\u00eda<\/option>\r\n              <option>Irlanda<\/option><option>Islandia<\/option><option>Italia<\/option>\r\n              <option>Letonia<\/option><option>Liechtenstein<\/option><option>Lituania<\/option>\r\n              <option>Luxemburgo<\/option><option>Malta<\/option><option>M\u00f3naco<\/option>\r\n              <option>Noruega<\/option><option>Pa\u00edses Bajos<\/option><option>Polonia<\/option>\r\n              <option>Portugal<\/option><option>Reino Unido<\/option><option>Rep\u00fablica Checa<\/option>\r\n              <option>Ruman\u00eda<\/option><option>Suecia<\/option><option>Suiza<\/option>\r\n              <option>Turqu\u00eda<\/option><option>Ucrania<\/option>\r\n            <\/optgroup>\r\n            <optgroup label=\"Am\u00e9rica Latina\">\r\n              <option>Argentina<\/option><option>Bolivia<\/option><option>Brasil<\/option>\r\n              <option>Chile<\/option><option>Colombia<\/option><option>Costa Rica<\/option>\r\n              <option>Cuba<\/option><option>Ecuador<\/option><option>El Salvador<\/option>\r\n              <option>Guatemala<\/option><option>Honduras<\/option><option>M\u00e9xico<\/option>\r\n              <option>Nicaragua<\/option><option>Panam\u00e1<\/option><option>Paraguay<\/option>\r\n              <option>Per\u00fa<\/option><option>Puerto Rico<\/option><option>Rep\u00fablica Dominicana<\/option>\r\n              <option>Uruguay<\/option><option>Venezuela<\/option>\r\n            <\/optgroup>\r\n            <optgroup label=\"\u00c1frica\">\r\n              <option>Angola<\/option><option>Argelia<\/option><option>Cabo Verde<\/option>\r\n              <option>Camer\u00fan<\/option><option>Costa de Marfil<\/option><option>Egipto<\/option>\r\n              <option>Ghana<\/option><option>Guinea Ecuatorial<\/option><option>Kenia<\/option>\r\n              <option>Libia<\/option><option>Marruecos<\/option><option>Mozambique<\/option>\r\n              <option>Nigeria<\/option><option>Senegal<\/option><option>Sud\u00e1frica<\/option>\r\n              <option>T\u00fanez<\/option>\r\n            <\/optgroup>\r\n            <optgroup label=\"Am\u00e9rica del Norte\">\r\n              <option>Canad\u00e1<\/option><option>Estados Unidos<\/option>\r\n            <\/optgroup>\r\n            <optgroup label=\"Oriente Medio\">\r\n              <option>Arabia Saud\u00ed<\/option><option>Catar<\/option>\r\n              <option>Emiratos \u00c1rabes Unidos<\/option><option>Israel<\/option>\r\n              <option>Jordania<\/option><option>Kuwait<\/option><option>L\u00edbano<\/option>\r\n              <option>Om\u00e1n<\/option>\r\n            <\/optgroup>\r\n            <optgroup label=\"Asia y Ocean\u00eda\">\r\n              <option>Australia<\/option><option>China<\/option><option>Filipinas<\/option>\r\n              <option>India<\/option><option>Indonesia<\/option><option>Jap\u00f3n<\/option>\r\n              <option>Malasia<\/option><option>Nueva Zelanda<\/option><option>Singapur<\/option>\r\n              <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=\"m-err-txt\" id=\"err-pais\">Please select your country.<\/span>\r\n        <\/div>\r\n\r\n        <!-- Provincia: solo aparece si elige Espa\u00f1a -->\r\n        <div class=\"mfield modal-prov-wrap\" id=\"m-prov-wrap\">\r\n          <label>Province<\/label>\r\n          <select id=\"m-provincia\">\r\n            <option value=\"\">\u2014 Select province \u2014<\/option>\r\n            <option>\u00c1lava<\/option><option>Albacete<\/option><option>Alicante<\/option>\r\n            <option>Almer\u00eda<\/option><option>Asturias<\/option><option>\u00c1vila<\/option>\r\n            <option>Badajoz<\/option><option>Baleares<\/option><option>Barcelona<\/option>\r\n            <option>Burgos<\/option><option>C\u00e1ceres<\/option><option>C\u00e1diz<\/option>\r\n            <option>Cantabria<\/option><option>Castell\u00f3n<\/option><option>Ceuta<\/option>\r\n            <option>Ciudad Real<\/option><option>C\u00f3rdoba<\/option><option>A Coru\u00f1a<\/option>\r\n            <option>Cuenca<\/option><option>Girona<\/option><option>Granada<\/option>\r\n            <option>Guadalajara<\/option><option>Guip\u00fazcoa<\/option><option>Huelva<\/option>\r\n            <option>Huesca<\/option><option>Ja\u00e9n<\/option><option>La Rioja<\/option>\r\n            <option>Las Palmas<\/option><option>Le\u00f3n<\/option><option>Lleida<\/option>\r\n            <option>Lugo<\/option><option>Madrid<\/option><option>M\u00e1laga<\/option>\r\n            <option>Melilla<\/option><option>Murcia<\/option><option>Navarra<\/option>\r\n            <option>Ourense<\/option><option>Palencia<\/option><option>Pontevedra<\/option>\r\n            <option>Salamanca<\/option><option>Santa Cruz de Tenerife<\/option>\r\n            <option>Segovia<\/option><option>Sevilla<\/option><option>Soria<\/option>\r\n            <option>Tarragona<\/option><option>Teruel<\/option><option>Toledo<\/option>\r\n            <option>Valencia<\/option><option>Valladolid<\/option><option>Vizcaya<\/option>\r\n            <option>Zamora<\/option><option>Zaragoza<\/option>\r\n          <\/select>\r\n        <\/div>\r\n\r\n        <div class=\"gdpr-row\">\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\">privacy policy<\/a> <span style=\"color:var(--or);font-weight:700\">*<\/span><\/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\" id=\"modal-submit-btn\" onclick=\"enviarFormulario()\">\r\n          <span class=\"btn-txt\">Download PDF now<\/span>\r\n          <div class=\"spinner\"><\/div>\r\n        <\/button>\r\n\r\n        <p class=\"modal-legal\">Protected data \u00b7 We do not share your information \u00b7 <a href=\"https:\/\/magon.es\/politica-privacidad\/\" target=\"_blank\">Privacy policy<\/a>.<\/p>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"modal-ok hidden\" id=\"modal-ok\">\r\n      <span class=\"ok-icon\">\u2705<\/span>\r\n      <h3>PDF downloaded successfully!<\/h3>\r\n      <div class=\"ok-detail\" id=\"modal-ok-detail\"><\/div>\r\n      <p>Our technical team may contact you to advise you with no obligation.<\/p>\r\n      <button class=\"ok-close-btn\" onclick=\"cerrarModal()\">Close<\/button>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\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\u2550\u2550\u2550\u2550\u2550\u2550\r\n  SHORTCODE CF7 PARA WORDPRESS\r\n  [contact-form-7 id=\"6380ecc\" title=\"Formulario calculadora aislamiento\"]\r\n  ID formulario: 14949 \u00b7 ID p\u00e1gina: 14938\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\u2550\u2550\u2550\u2550\u2550\u2550\r\n\r\n  PLANTILLA CF7 (campo \"Formulario\"):\r\n  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n  [text* nombre placeholder \"Tu nombre y apellidos\"]\r\n  [tel* telefono placeholder \"+34 600 000 000\"]\r\n  [email* email placeholder \"tu@correo.com\"]\r\n  [text empresa placeholder \"Nombre de empresa (opcional)\"]\r\n  [text pais placeholder \"Pa\u00eds\"]\r\n  [text provincia placeholder \"Provincia\"]\r\n  [text tipo_panel placeholder \"Panel seleccionado\"]\r\n  [text espesor placeholder \"Espesor recomendado\"]\r\n  [text m2 placeholder \"Superficie en m\u00b2\"]\r\n  [textarea datos_calculo placeholder \"Datos del c\u00e1lculo\"]\r\n  [acceptance* gdpr-14949] He le\u00eddo y acepto la pol\u00edtica de privacidad\r\n  [submit \"Enviar\"]\r\n\r\n  NOTA SOBRE EL CAMPO GDPR:\r\n  El nombre del campo acceptance debe ser \"gdpr-{ID}\" donde {ID} es el ID del\r\n  formulario (14949). Por eso en el fetch enviamos 'gdpr-14949': 'on'.\r\n  \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n-->\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 DATOS \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\nconst PANELES = {\r\n  masterc:{name:'Master-C',tag:'Roofing panel',desc:'Industrial, modular and commercial roofing.',\r\n    datos:[[30,9.61,0.67,1.50],[40,10.00,0.51,1.95],[50,10.39,0.41,2.42],\r\n           [60,10.78,0.35,2.90],[80,11.56,0.26,3.85],[100,12.34,0.21,4.80],[120,13.12,0.17,5.74]]},\r\n  masterf:{name:'Master-F',tag:'Facade panel',desc:'Industrial, commercial and residential facades.',\r\n    datos:[[35,9.08,0.62,1.62],[40,9.28,0.54,1.86],[50,9.67,0.43,2.34],\r\n           [60,10.06,0.35,2.85],[80,10.84,0.26,3.80],[100,11.62,0.21,4.76]]},\r\n  frigo:{name:'Master-Frigo',tag:'Cold room panel',desc:'Cold rooms, food industry.',\r\n    datos:[[60,9.94,0.36,2.76],[80,10.72,0.27,3.75],[100,11.50,0.21,4.71],\r\n           [120,12.28,0.18,5.67],[150,13.45,0.14,7.09]]},\r\n  modul:{name:'Master-Modul',tag:'Modular panel',desc:'Modular and prefabricated construction. Walls only.',\r\n    datos:[[35,8.96,0.66,1.53],[40,9.16,0.57,1.76],[50,9.55,0.45,2.24]]}\r\n};\r\nconst PROVINCIAS_CTE = {\r\n  'Almer\u00eda':'A','C\u00e1diz':'A','Huelva':'A','M\u00e1laga':'A','Sevilla':'A','Ceuta':'A','Melilla':'A',\r\n  'Alicante':'B','Baleares':'B','Murcia':'B','Valencia':'B','Castell\u00f3n':'B','Tarragona':'B',\r\n  'Barcelona':'C','Girona':'C','A Coru\u00f1a':'C','Asturias':'C','Cantabria':'C','Ourense':'C',\r\n  'Pontevedra':'C','Vizcaya':'C','Toledo':'C','Badajoz':'C','C\u00e1ceres':'C','C\u00f3rdoba':'C','Granada':'C','Ja\u00e9n':'C',\r\n  'Lugo':'D','\u00c1lava':'D','Guip\u00fazcoa':'D','La Rioja':'D','Navarra':'D','Albacete':'D',\r\n  'Ciudad Real':'D','Cuenca':'D','Guadalajara':'D','Palencia':'D','Salamanca':'D',\r\n  'Valladolid':'D','Zamora':'D','Madrid':'D','Lleida':'D','Huesca':'D','Teruel':'D','Zaragoza':'D',\r\n  '\u00c1vila':'E','Burgos':'E','Le\u00f3n':'E','Segovia':'E','Soria':'E',\r\n  'Las Palmas':'\u03b1','Santa Cruz de Tenerife':'\u03b1'\r\n};\r\nconst CTE_U = {\r\n  '\u03b1':{cubierta:0.94,fachada:0.80,suelo:0.90},'A':{cubierta:0.73,fachada:0.62,suelo:0.68},\r\n  'B':{cubierta:0.52,fachada:0.44,suelo:0.50},'C':{cubierta:0.41,fachada:0.35,suelo:0.37},\r\n  'D':{cubierta:0.38,fachada:0.32,suelo:0.34},'E':{cubierta:0.35,fachada:0.29,suelo:0.31}\r\n};\r\nconst CAMARA_U={conservacion:0.25,congelacion:0.20,ultracongelacion:0.15};\r\nconst CAMARA_LABEL={conservacion:'Chilled storage (0\u00b0C to +8\u00b0C)',congelacion:'Freezing (-18\u00b0C to -25\u00b0C)',ultracongelacion:'Deep freeze (-26\u00b0C to -46\u00b0C)'};\r\nconst CLIM_FACTOR={si:1.0,parcial:0.80,no:0.55};\r\nconst CLIM_LABEL={si:'conditioned building (precise control)',parcial:'basic heating',no:'no HVAC'};\r\n\r\nlet panelKey='frigo',tipo='nave',tipoCamera='conservacion',climNav='parcial';\r\nlet resultadoActual={};\r\n\r\nconst PRECIOS_BASE={\r\n  gas:{precio:0.043,label:'Natural gas regulated rate Q1 2026',rend_default:90,live:false},\r\n  elec:{precio:0.18,label:'Electricity PVPC \u00b7 loading...',rend_default:100,live:true},\r\n  gasoil:{precio:0.095,label:'Heating oil \u00b7 indicative price',rend_default:85,live:false}\r\n};\r\nlet energiaKey='gas';\r\nlet preciosEnergia={...PRECIOS_BASE};\r\n\r\nasync function cargarPrecioElec(){\r\n  try{\r\n    const hoy=new Date().toISOString().split('T')[0];\r\n    const url=`https:\/\/apidatos.ree.es\/es\/datos\/mercados\/precios-mercados-tiempo-real?start_date=${hoy}T00:00&end_date=${hoy}T23:59&time_trunc=hour`;\r\n    const res=await fetch(url,{signal:AbortSignal.timeout(5000)});\r\n    if(!res.ok) throw new Error();\r\n    const data=await res.json();\r\n    const pvpc=data?.included?.find(i=>i.id==='600');\r\n    if(pvpc&&pvpc.attributes?.values?.length){\r\n      const vals=pvpc.attributes.values;\r\n      const media=vals.reduce((s,v)=>s+v.value,0)\/vals.length\/1000;\r\n      const pf=parseFloat((media*1.215).toFixed(4));\r\n      preciosEnergia.elec.precio=pf;\r\n      preciosEnergia.elec.label=`Electricidad PVPC hoy \u00b7 ${pf.toFixed(3)} \u20ac\/kWh \u00b7 REE`;\r\n      preciosEnergia.elec.live=true;\r\n      document.getElementById('ep-elec').textContent=pf.toFixed(3)+' \u20ac\/kWh';\r\n      if(energiaKey==='elec') actualizarStatusEnergia();\r\n      calcular(); return;\r\n    }throw new Error();\r\n  }catch{\r\n    preciosEnergia.elec.precio=0.175;\r\n    preciosEnergia.elec.label='Electricity \u00b7 indicative price';\r\n    preciosEnergia.elec.live=false;\r\n    document.getElementById('ep-elec').textContent='~0.175 \u20ac\/kWh';\r\n    if(energiaKey==='elec') actualizarStatusEnergia();\r\n    calcular();\r\n  }\r\n}\r\n\r\nfunction setEnergia(e){energiaKey=e;['gas','elec','gasoil'].forEach(x=>document.getElementById('ebtn-'+x).classList.toggle('active',x===e));document.getElementById('ah-rend').value=preciosEnergia[e].rend_default;actualizarStatusEnergia();calcular();}\r\nfunction actualizarStatusEnergia(){const p=preciosEnergia[energiaKey];document.getElementById('precio-dot').className=p.live?'dot-live':'dot-fijo';document.getElementById('precio-status-txt').textContent=p.label;}\r\nfunction getPrecioEnergia(){return preciosEnergia[energiaKey].precio;}\r\n\r\nfunction poblarProvincias(){\r\n  const provs=Object.keys(PROVINCIAS_CTE).sort();\r\n  const sel=document.getElementById('viv-prov');\r\n  if(sel) provs.forEach(p=>{const o=document.createElement('option');o.value=p;o.textContent=p;sel.appendChild(o);});\r\n}\r\n\r\nfunction onPaisChange(){\r\n  const pais=document.getElementById('m-pais').value;\r\n  const provWrap=document.getElementById('m-prov-wrap');\r\n  provWrap.classList.toggle('show', pais==='Espa\u00f1a');\r\n}\r\n\r\nconst COMPAT={\r\n  masterc:{usos:['nave','vivienda'],default:'nave',warn:{camara:'Master-C is a roofing panel. Use Master-Frigo for cold rooms.'},elemViv:['cubierta'],elemNote:'\u2b06 Master-C is a roofing panel. Only applies to the \"Roof\" element.'},\r\n  masterf:{usos:['nave','vivienda'],default:'nave',warn:{camara:'Master-F is a facade panel. Use Master-Frigo for cold rooms.'},elemViv:['fachada','suelo'],elemNote:'\u2b05 Master-F is a facade panel. For roofing use Master-C.'},\r\n  frigo:{usos:['camara'],default:'camara',warn:{nave:'Master-Frigo is a cold room panel. For industrial buildings use Master-C or Master-F.',vivienda:'Master-Frigo is not used in residential buildings. Use Master-F or Master-Modul.'},elemViv:[],elemNote:''},\r\n  modul:{usos:['vivienda','nave'],default:'vivienda',warn:{camara:'Master-Modul is for modular construction. Use Master-Frigo for cold rooms.'},elemViv:['fachada','suelo'],elemNote:'\u2b05 Master-Modul is a wall panel. For roofing use Master-C.'}\r\n};\r\n\r\nfunction aplicarCompatibilidad(){\r\n  const c=COMPAT[panelKey];\r\n  const warnBox=document.getElementById('compat-warn');\r\n  const elemNote=document.getElementById('elem-note');\r\n  const elemSel=document.getElementById('viv-elem');\r\n  ['nave','camara','vivienda'].forEach(t=>document.getElementById('tbtn-'+t).classList.toggle('disabled',!c.usos.includes(t)));\r\n  if(!c.usos.includes(tipo)){\r\n    const warn=c.warn[tipo];tipo=c.default;\r\n    ['nave','camara','vivienda'].forEach(x=>{document.getElementById('card-'+x).classList.toggle('hidden',x!==tipo);document.getElementById('tbtn-'+x).classList.toggle('active',x===tipo);});\r\n    document.getElementById('frigo-recom').classList.toggle('hidden',tipo!=='camara');\r\n    if(warn){warnBox.classList.remove('hidden');document.getElementById('compat-warn-text').textContent=warn;}\r\n  }else{warnBox.classList.add('hidden');}\r\n  if(tipo==='vivienda'&&c.elemViv.length>0){\r\n    Array.from(elemSel.options).forEach(opt=>{opt.disabled=!c.elemViv.includes(opt.value);});\r\n    if(!c.elemViv.includes(elemSel.value))elemSel.value=c.elemViv[0];\r\n    if(c.elemNote){elemNote.textContent=c.elemNote;elemNote.classList.remove('hidden');}else elemNote.classList.add('hidden');\r\n  }else{Array.from(elemSel.options).forEach(opt=>{opt.disabled=false;});elemNote.classList.add('hidden');}\r\n}\r\n\r\nfunction setPanel(p){panelKey=p;Object.keys(PANELES).forEach(k=>document.getElementById('pbtn-'+k).classList.toggle('active',k===p));aplicarCompatibilidad();renderChip();calcular();}\r\nfunction setTipo(t){if(!COMPAT[panelKey].usos.includes(t))return;tipo=t;['nave','camara','vivienda'].forEach(x=>{document.getElementById('card-'+x).classList.toggle('hidden',x!==t);document.getElementById('tbtn-'+x).classList.toggle('active',x===t);});document.getElementById('frigo-recom').classList.toggle('hidden',t!=='camara');document.getElementById('compat-warn').classList.add('hidden');aplicarCompatibilidad();calcular();}\r\nfunction setClim(c){climNav=c;['si','parcial','no'].forEach(x=>document.getElementById('climbtn-'+x).classList.toggle('active',x===c));calcular();}\r\nfunction setCamara(c){tipoCamera=c;['conservacion','congelacion','ultracongelacion'].forEach(x=>document.getElementById('cbtn-'+x).classList.toggle('active',x===c));calcular();}\r\nfunction onProvChange(){const prov=document.getElementById('viv-prov').value;const zona=PROVINCIAS_CTE[prov];const zi=document.getElementById('zona-info');if(zona){zi.classList.remove('hidden');zi.textContent='Province: '+prov+' \u2192 CTE Zone: '+zona;}else zi.classList.add('hidden');calcular();}\r\n\r\nfunction resetCalc(){\r\n  panelKey='frigo';Object.keys(PANELES).forEach(k=>document.getElementById('pbtn-'+k).classList.toggle('active',k==='frigo'));\r\n  tipo='camara';setClim('parcial');setCamara('conservacion');\r\n  document.getElementById('nave-ti').value=18;document.getElementById('nave-te').value=-5;\r\n  document.getElementById('viv-prov').value='';document.getElementById('zona-info').classList.add('hidden');\r\n  document.getElementById('ah-sup').value=1000;document.getElementById('compat-warn').classList.add('hidden');\r\n  aplicarCompatibilidad();renderChip();calcular();window.scrollTo({top:0,behavior:'smooth'});\r\n}\r\n\r\nfunction getUobjetivo(){\r\n  if(tipo==='nave'){\r\n    const ti=parseFloat(document.getElementById('nave-ti').value)||18;\r\n    const te=parseFloat(document.getElementById('nave-te').value)||-5;\r\n    const dT=Math.abs(ti-te);\r\n    let uBase=dT<10?0.90:dT<15?0.70:dT<20?0.55:dT<25?0.45:dT<35?0.38:0.30;\r\n    const u=parseFloat((uBase*CLIM_FACTOR[climNav]).toFixed(2));\r\n    document.getElementById('nave-u-info').textContent='With \u0394T='+dT+'\u00b0C and '+CLIM_LABEL[climNav]+', recommended U is \u2264 '+u+' W\/m\u00b2K.';\r\n    return u;\r\n  }\r\n  if(tipo==='camara'){const u=CAMARA_U[tipoCamera];document.getElementById('camara-info').textContent=CAMARA_LABEL[tipoCamera]+' \u2014 Target U \u2264 '+u+' W\/m\u00b2K.';return u;}\r\n  const prov=document.getElementById('viv-prov').value;const zona=PROVINCIAS_CTE[prov];\r\n  if(!zona)return 0.41;return CTE_U[zona][document.getElementById('viv-elem').value];\r\n}\r\n\r\nfunction renderChip(){\r\n  const p=PANELES[panelKey];\r\n  document.getElementById('pc-tag').textContent=p.tag;document.getElementById('pc-name').textContent=p.name;\r\n  document.getElementById('pc-desc').textContent=p.desc;\r\n  document.getElementById('pc-esps').innerHTML='Thicknesses: '+p.datos.map(d=>'<span>'+d[0]+'mm<\/span>').join('');\r\n}\r\n\r\nfunction calcular(){\r\n  const Uo=getUobjetivo();const p=PANELES[panelKey];\r\n  const candidato=p.datos.find(d=>d[2]<=Uo);const row=candidato||p.datos[p.datos.length-1];\r\n  const ecom=row[0],Uc=row[2],Rc=row[3];\r\n  const Rmin=1\/Uo-0.13-0.04;const emin=Math.max(1,Math.ceil(Rmin*0.021*1000));\r\n  document.getElementById('res-esp').textContent=emin;document.getElementById('res-com').textContent=ecom;document.getElementById('res-u').textContent=Uc.toFixed(2);\r\n  const margen=(Uo-Uc)\/Uo*100;\r\n  document.getElementById('bar-fill').style.width=Math.min(100,Math.max(0,margen)).toFixed(1)+'%';\r\n  document.getElementById('bar-pct').textContent=margen>0?'+'+margen.toFixed(1)+'% better than the limit':'Does not meet the target';\r\n  const box=document.getElementById('alert-box'),tit=document.getElementById('alert-title'),bod=document.getElementById('alert-body');\r\n  if(!candidato){box.className='alert a-warn';tit.textContent='Target not met with available thicknesses of '+p.name;bod.textContent='Maximum thickness ('+ecom+' mm) gives U='+Uc.toFixed(2)+' W\/m\u00b2K. Contact our team.';}\r\n  else{box.className='alert a-ok';tit.textContent='\u2713 Complies \u2014 Recommended thickness: '+ecom+' mm of '+p.name;bod.textContent='U='+Uc.toFixed(2)+' W\/m\u00b2K \u00b7 R='+Rc.toFixed(2)+' m\u00b2K\/W \u00b7 '+Math.abs(margen).toFixed(1)+'% below the limit of '+Uo.toFixed(3)+' W\/m\u00b2K.';}\r\n  let html='<thead><tr><th style=\"text-align:left\">Espesor<\/th><th>U (W\/m\u00b2K)<\/th><th>R (m\u00b2K\/W)<\/th><th>Peso (kg\/m\u00b2)<\/th><th>\u00bfCumple?<\/th><\/tr><\/thead><tbody>';\r\n  p.datos.forEach(d=>{const ok=d[2]<=Uo,isRec=d[0]===ecom&&ok;html+=`<tr class=\"${isRec?'hl':''}\"><td>${d[0]} mm${isRec?' \u25c0 rec.':''}<\/td><td>${d[2].toFixed(2)}<\/td><td>${d[3].toFixed(2)}<\/td><td>${d[1].toFixed(2)}<\/td><td style=\"color:${ok?'#3a7035':'#a0341e'};font-weight:700\">${ok?'\u2713':'\u2717'}<\/td><\/tr>`;});\r\n  document.getElementById('comp-table').innerHTML=html+'<\/tbody>';\r\n  const precio=getPrecioEnergia();const sup=parseFloat(document.getElementById('ah-sup').value)||1000;\r\n  const rend=(parseFloat(document.getElementById('ah-rend').value)||90)\/100;\r\n  const ti2=tipo==='nave'?(parseFloat(document.getElementById('nave-ti').value)||18):(tipo==='camara'?-20:20);\r\n  const te2=tipo==='nave'?(parseFloat(document.getElementById('nave-te').value)||-5):(tipo==='camara'?25:0);\r\n  const dT2=Math.abs(ti2-te2);const perdida=Uc*dT2;const sinAis=6.0*dT2;\r\n  const pctAh=Math.min(99,((sinAis-perdida)\/sinAis*100));\r\n  const kWhAn=(sinAis-perdida)*sup*3000\/1000;const eurosAn=kWhAn*precio\/rend;\r\n  const energiaLabels={gas:'natural gas',elec:'electricity',gasoil:'heating oil'};\r\n  document.getElementById('ah-perdida').textContent=perdida.toFixed(1);\r\n  document.getElementById('ah-pct').textContent=pctAh.toFixed(0)+'%';\r\n  document.getElementById('ah-euros').textContent=Math.round(eurosAn).toLocaleString('es-ES')+'\u20ac';\r\n  document.getElementById('ah-euros-sub').textContent='\u20ac\/yr \u00b7 '+energiaLabels[energiaKey]+' \u00b7 3,000 h';\r\n  resultadoActual={panel:p.name,panelTag:p.tag,emin,ecom,Uc,Rc,Uo,margen:margen.toFixed(1),cumple:!!candidato,\r\n    perdida:perdida.toFixed(1),pctAhorro:pctAh.toFixed(0),eurosAnual:Math.round(eurosAn),dT:dT2,\r\n    tipo,tipoCamera:tipo==='camara'?CAMARA_LABEL[tipoCamera]:'',climNav:tipo==='nave'?CLIM_LABEL[climNav]:'',\r\n    precio,precioLabel:preciosEnergia[energiaKey].label,energiaKey,energiaNombre:energiaLabels[energiaKey],\r\n    rend:Math.round(rend*100),sup,fecha:new Date().toLocaleDateString('es-ES')};\r\n}\r\n\r\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 PDF \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\nfunction sp(t){\r\n  if(typeof t!=='string')return String(t);\r\n  return t.replace(\/\u00e1\/g,'a').replace(\/\u00e9\/g,'e').replace(\/\u00ed\/g,'i').replace(\/\u00f3\/g,'o').replace(\/\u00fa\/g,'u')\r\n    .replace(\/\u00c1\/g,'A').replace(\/\u00c9\/g,'E').replace(\/\u00cd\/g,'I').replace(\/\u00d3\/g,'O').replace(\/\u00da\/g,'U')\r\n    .replace(\/\u00f1\/g,'n').replace(\/\u00d1\/g,'N').replace(\/\u03bb\/g,'lambda').replace(\/\u00b2\/g,'2')\r\n    .replace(\/\u00b0\/g,'o').replace(\/\u00b7\/g,' - ').replace(\/\u2014\/g,'-').replace(\/\u20ac\/g,'EUR')\r\n    .replace(\/a\u00f1o\/g,'ano').replace(\/[^\\x00-\\xFF]\/g,'?');\r\n}\r\n\r\nfunction generarPDF(){\r\n  if(!window.jspdf||!resultadoActual.panel) return false;\r\n  const {jsPDF}=window.jspdf;\r\n  const doc=new jsPDF({unit:'mm',format:'a4'});\r\n  const W=210,M=18;\r\n  doc.setFillColor(26,26,26);doc.rect(0,0,W,42,'F');\r\n  doc.setFillColor(232,160,0);doc.rect(M-4,0,4,42,'F');\r\n  doc.setTextColor(255,255,255);doc.setFontSize(18);doc.setFont('helvetica','bold');\r\n  doc.text(sp('Thermal Insulation Report'),M+2,16);\r\n  doc.setFontSize(11);doc.setFont('helvetica','normal');doc.setTextColor(170,170,170);\r\n  doc.text(sp('Masterpanel Sandwich Panel - Technical Calculation'),M+2,24);\r\n  doc.setTextColor(232,160,0);doc.setFontSize(9);\r\n  doc.text(sp('magon.es  -  +34 925 519 926  -  masterpanel@magon.es'),M+2,33);\r\n  let y=50;\r\n  doc.setFillColor(232,160,0);doc.rect(M,y,W-2*M,10,'F');\r\n  doc.setFontSize(9);doc.setFont('helvetica','bold');doc.setTextColor(26,26,26);\r\n  doc.text(sp('PANEL: '+resultadoActual.panel.toUpperCase()+' - '+resultadoActual.panelTag.toUpperCase()),M+4,y+7);\r\n  y+=16;\r\n  const bw=(W-2*M-8)\/3;\r\n  [{label:'Min. thickness',val:resultadoActual.emin+' mm',sub:'calculated',hero:false},\r\n   {label:'Recommended thickness',val:resultadoActual.ecom+' mm',sub:'EN14509 catalogue',hero:true},\r\n   {label:'U-value',val:resultadoActual.Uc.toFixed(2)+' W\/m2K',sub:'EN14509 certified',hero:false}\r\n  ].forEach((b,i)=>{\r\n    const bx=M+i*(bw+4);\r\n    doc.setFillColor(b.hero?232:38,b.hero?160:38,b.hero?0:38);doc.rect(bx,y,bw,22,'F');\r\n    doc.setFontSize(7);doc.setFont('helvetica','normal');doc.setTextColor(b.hero?80:150,b.hero?60:150,b.hero?0:150);\r\n    doc.text(sp(b.label.toUpperCase()),bx+3,y+6);\r\n    doc.setFontSize(15);doc.setFont('helvetica','bold');doc.setTextColor(b.hero?26:255,b.hero?26:255,b.hero?26:255);\r\n    doc.text(sp(b.val),bx+3,y+16);\r\n    doc.setFontSize(7);doc.setFont('helvetica','normal');doc.setTextColor(b.hero?80:150,b.hero?60:150,b.hero?0:150);\r\n    doc.text(sp(b.sub),bx+3,y+21);\r\n  });\r\n  y+=30;\r\n  const c=resultadoActual.cumple;\r\n  doc.setFillColor(c?237:250,c?245:236,c?237:234);doc.rect(M,y,W-2*M,14,'F');\r\n  doc.setFontSize(9);doc.setFont('helvetica','bold');doc.setTextColor(c?58:160,c?112:52,c?53:30);\r\n  doc.text(sp(c?'COMPLIES - Margin '+Math.abs(resultadoActual.margen)+'% below the limit of '+resultadoActual.Uo.toFixed(3)+' W\/m2K':'DOES NOT COMPLY - Consult specialist'),M+4,y+9);\r\n  y+=20;\r\n  doc.setFontSize(8);doc.setFont('helvetica','bold');doc.setTextColor(100,100,100);doc.text(sp('TECHNICAL PARAMETERS'),M,y);y+=6;\r\n  const params=[\r\n    ['Thermal conductivity (lambda)','0.021 W\/mK (PUR Polyurethane)'],\r\n    ['Thermal resistance (R)',resultadoActual.Rc.toFixed(2)+' m2K\/W'],\r\n    ['Target maximum U-value',resultadoActual.Uo.toFixed(3)+' W\/m2K'],\r\n    ['Project type',resultadoActual.tipo==='nave'?'Industrial\/warehouse ('+resultadoActual.climNav+')':resultadoActual.tipo==='camara'?'Cold room - '+resultadoActual.tipoCamera:'Residential\/building CTE DB-HE1'],\r\n    ['Calculation standard','EN ISO 6946 - EN14509 - CTE DB-HE1'],\r\n  ];\r\n  params.forEach((p,i)=>{\r\n    doc.setFillColor(i%2===0?250:255,i%2===0?248:255,i%2===0?244:255);doc.rect(M,y,W-2*M,7,'F');\r\n    doc.setFont('helvetica','bold');doc.setFontSize(9);doc.setTextColor(60,60,60);doc.text(sp(p[0]),M+3,y+5);\r\n    doc.setFont('helvetica','normal');doc.setTextColor(26,26,26);doc.text(sp(p[1]),M+80,y+5);y+=7;\r\n  });\r\n  y+=8;\r\n  doc.setFillColor(232,160,0);doc.rect(M,y,W-2*M,8,'F');\r\n  doc.setFontSize(8);doc.setFont('helvetica','bold');doc.setTextColor(26,26,26);\r\n  doc.text(sp('SAVINGS - '+resultadoActual.energiaNombre.toUpperCase()+' - '+resultadoActual.sup.toLocaleString('es-ES')+' m\u00b2 - 3,000 h\/yr'),M+4,y+5);y+=12;\r\n  [['Energy',resultadoActual.energiaNombre+' - '+resultadoActual.precio.toFixed(3)+' EUR\/kWh'],\r\n   ['Efficiency',resultadoActual.rend+'%'],\r\n   ['Heat loss',resultadoActual.perdida+' W\/m2'],\r\n   ['Savings vs. no insulation',resultadoActual.pctAhorro+'%'],\r\n   ['Estimated annual savings',resultadoActual.eurosAnual.toLocaleString('es-ES')+' EUR\/yr']\r\n  ].forEach((a,i)=>{\r\n    doc.setFillColor(i%2===0?250:255,i%2===0?248:255,i%2===0?244:255);doc.rect(M,y,W-2*M,7,'F');\r\n    doc.setFont('helvetica','bold');doc.setFontSize(9);doc.setTextColor(60,60,60);doc.text(sp(a[0]),M+3,y+5);\r\n    doc.setFont('helvetica','normal');doc.setTextColor(26,26,26);doc.text(sp(a[1]),M+85,y+5);y+=7;\r\n  });\r\n  y+=8;\r\n  doc.setFontSize(7);doc.setTextColor(150,150,150);doc.setFont('helvetica','italic');\r\n  doc.text(sp('Indicative report. EN ISO 6946 \/ EN14509. Consult a qualified professional before applying to a real project.'),M,y,{maxWidth:W-2*M});\r\n  doc.setFillColor(26,26,26);doc.rect(0,282,W,15,'F');\r\n  doc.setFontSize(8);doc.setFont('helvetica','normal');doc.setTextColor(170,170,170);\r\n  doc.text('Master Panel S.L. - Esquivias (Toledo) - +34 925 519 926 - www.magon.es',M,291);\r\n  doc.setTextColor(232,160,0);doc.text('magon.es',W-M-15,291);\r\n  doc.save('masterpanel-report-'+resultadoActual.ecom+'mm.pdf');\r\n  return true;\r\n}\r\n\r\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 MODAL \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\r\nfunction onModalPaisChange(){\r\n  const pais = document.getElementById('m-pais').value;\r\n  document.getElementById('m-prov-wrap').classList.toggle('show', pais === 'Espa\u00f1a');\r\n  if(pais !== 'Espa\u00f1a') document.getElementById('m-provincia').value = '';\r\n}\r\n\r\nfunction abrirModal(){\r\n  document.getElementById('modal').classList.remove('hidden');\r\n  document.getElementById('modal-form-wrap').classList.remove('hidden');\r\n  document.getElementById('modal-ok').classList.add('hidden');\r\n  ['nombre','email','telefono','pais'].forEach(f=>{\r\n    const el=document.getElementById('m-'+f);\r\n    const err=document.getElementById('err-'+f);\r\n    if(el) el.classList.remove('m-error');\r\n    if(err) err.classList.remove('show');\r\n  });\r\n  document.getElementById('err-gdpr').classList.remove('show');\r\n  document.getElementById('m-prov-wrap').classList.remove('show');\r\n  const modal=document.querySelector('.modal');\r\n  if(modal) modal.scrollTop=0;\r\n  document.body.style.overflow='hidden';\r\n}\r\n\r\nfunction cerrarModal(){\r\n  document.getElementById('modal').classList.add('hidden');\r\n  document.body.style.overflow='';\r\n}\r\n\r\ndocument.getElementById('modal').addEventListener('click',function(e){\r\n  if(e.target===this) cerrarModal();\r\n});\r\ndocument.addEventListener('keydown',function(e){\r\n  if(e.key==='Escape'&&!document.getElementById('modal').classList.contains('hidden')) cerrarModal();\r\n});\r\n\r\nfunction validarFormulario(){\r\n  let ok = true;\r\n  const setErr = (field, show) => {\r\n    const el  = document.getElementById('m-' + field);\r\n    const err = document.getElementById('err-' + field);\r\n    if(el)  el.classList.toggle('m-error', show);\r\n    if(err) err.classList.toggle('show', show);\r\n  };\r\n  const nombre = document.getElementById('m-nombre').value.trim();\r\n  const email  = document.getElementById('m-email').value.trim();\r\n  const tel    = document.getElementById('m-telefono').value.trim();\r\n  const pais   = document.getElementById('m-pais').value;\r\n  const gdpr   = document.getElementById('m-gdpr').checked;\r\n\r\n  if(nombre.length < 2)                           { setErr('nombre',true); ok=false; } else setErr('nombre',false);\r\n  if(!\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email))  { setErr('email',true);  ok=false; } else setErr('email',false);\r\n  if(tel && tel.replace(\/\\D\/g,'').length < 6)     { setErr('telefono',true); ok=false; } else setErr('telefono',false);\r\n  if(!pais)                                       { setErr('pais',true);   ok=false; } else setErr('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(!validarFormulario()) return;\r\n  const btn = document.getElementById('modal-submit-btn');\r\n  btn.classList.add('loading'); btn.disabled = true;\r\n\r\n  const SITE_KEY      = '6Lfi1o0nAAAAAKef__HF07S9Y26C8xyCNYh5IjlG';\r\n  const CF7_FORM_ID   = '14949';\r\n  const CF7_CONTAINER = '14938';\r\n  const CF7_ENDPOINT  = `\/wp-json\/contact-form-7\/v1\/contact-forms\/${CF7_FORM_ID}\/feedback`;\r\n\r\n  const panelMap = {\r\n    'Master-C':'Master-C (Cubierta)', 'Master-F':'Master-F (Fachada)',\r\n    'Master-Frigo':'Master-Frigo (Frigor\u00edfico)', 'Master-Modul':'Master-Modul (Modular)'\r\n  };\r\n\r\n  const datos = {\r\n    nombre:    document.getElementById('m-nombre').value.trim(),\r\n    email:     document.getElementById('m-email').value.trim(),\r\n    telefono:  document.getElementById('m-telefono').value.trim(),\r\n    empresa:   document.getElementById('m-empresa').value.trim(),\r\n    pais:      document.getElementById('m-pais').value,\r\n    provincia: document.getElementById('m-provincia').value,\r\n    tipopanel: panelMap[resultadoActual.panel] || '',\r\n    espesor:   (resultadoActual.ecom || '') + 'mm',\r\n    m2:        String(resultadoActual.sup || ''),\r\n    calculo:   JSON.stringify({\r\n      panel: resultadoActual.panel, espesor: (resultadoActual.ecom||'')+'mm',\r\n      U: resultadoActual.Uc, R: resultadoActual.Rc,\r\n      tipo: resultadoActual.tipo, fecha: resultadoActual.fecha\r\n    })\r\n  };\r\n\r\n  function doSubmit(token){\r\n    const fd = new FormData();\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',       `wpcf7-f${CF7_FORM_ID}-p${CF7_CONTAINER}-o1`);\r\n    fd.set('_wpcf7_container_post', CF7_CONTAINER);\r\n    if(token) fd.set('_wpcf7_recaptcha_response', token);\r\n\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.tipopanel);\r\n    fd.set('espesor',         datos.espesor);\r\n    fd.set('m2',              datos.m2);\r\n    fd.set('datos_calculo',   datos.calculo);\r\n    fd.set('gdpr',            document.getElementById('m-gdpr').checked ? 'acepto' : '');\r\n\r\n    fetch(CF7_ENDPOINT, { method:'POST', body:fd, signal:AbortSignal.timeout(15000) })\r\n      .then(r => r.json())\r\n      .then(json => {\r\n        btn.classList.remove('loading'); btn.disabled = false;\r\n        if(json.status === 'mail_sent'){\r\n          generarPDF();\r\n          document.getElementById('modal-form-wrap').classList.add('hidden');\r\n          document.getElementById('modal-ok').classList.remove('hidden');\r\n          (function(){\r\n            const d = document.getElementById('modal-ok-detail');\r\n            d.innerHTML = '';\r\n            const p1 = document.createElement('span');\r\n            p1.innerHTML = `<strong>Panel:<\/strong> ${resultadoActual.panel||'\u2014'} \u00b7 <strong>Espesor:<\/strong> ${resultadoActual.ecom||'\u2014'} mm \u00b7 <strong>U:<\/strong> ${resultadoActual.Uc?resultadoActual.Uc.toFixed(2):'\u2014'} W\/m\u00b2K<br>`;\r\n            const p2 = document.createElement('span');\r\n            p2.textContent = ''; const lbl = document.createElement('strong');\r\n            lbl.textContent = 'Enviado para: '; const em = document.createElement('span');\r\n            em.textContent = datos.email; p2.appendChild(lbl); p2.appendChild(em);\r\n            d.appendChild(p1); d.appendChild(p2);\r\n          })();\r\n        } else {\r\n          const det = json.invalid_fields\r\n            ? '\\n\\nCampos con error:\\n' + json.invalid_fields.map(f=>'\u2022 '+f.field+': '+f.message).join('\\n')\r\n            : '';\r\n          alert((json.message||'Error al enviar.') + det);\r\n        }\r\n      })\r\n      .catch(err => {\r\n        btn.classList.remove('loading'); btn.disabled = false;\r\n        generarPDF();\r\n        document.getElementById('modal-form-wrap').classList.add('hidden');\r\n        document.getElementById('modal-ok').classList.remove('hidden');\r\n        (function(){\r\n            const d = document.getElementById('modal-ok-detail');\r\n            d.innerHTML = '';\r\n            const p1 = document.createElement('span');\r\n            p1.innerHTML = `<strong>Panel:<\/strong> ${resultadoActual.panel||'\u2014'} \u00b7 <strong>Espesor:<\/strong> ${resultadoActual.ecom||'\u2014'} mm<br>`;\r\n            const lbl = document.createElement('strong'); lbl.textContent = 'Enviado para: ';\r\n            const em = document.createElement('span'); em.textContent = datos.email;\r\n            d.appendChild(p1); d.appendChild(lbl); d.appendChild(em);\r\n          })();\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(token => doSubmit(token))\r\n        .catch(()   => doSubmit(''));\r\n    });\r\n  } else {\r\n    doSubmit('');\r\n  }\r\n}\r\n\r\n\/* \u2500\u2500 Scroll suave \u2500\u2500 *\/\r\ndocument.querySelectorAll('a[href=\"#calculadora\"]').forEach(a=>{\r\n  a.addEventListener('click',e=>{e.preventDefault();document.getElementById('calculadora').scrollIntoView({behavior:'smooth'});});\r\n});\r\n\r\n\/* \u2500\u2500 FAQ \u2500\u2500 *\/\r\nfunction mpFaq(btn){\r\n  const item=btn.closest('.mp-faq-item');\r\n  const isOpen=item.classList.contains('open');\r\n  document.querySelectorAll('.mp-faq-item.open').forEach(el=>{el.classList.remove('open');el.querySelector('.mp-faq-q').setAttribute('aria-expanded','false');});\r\n  if(!isOpen){item.classList.add('open');btn.setAttribute('aria-expanded','true');}\r\n}\r\n\r\n\/* \u2500\u2500 Clic derecho \/ devtools \u2500\u2500 *\/\r\nconst ctxMsg=document.getElementById('ctx-msg');let ctxT=null;\r\ndocument.addEventListener('contextmenu',function(e){\r\n  e.preventDefault();\r\n  ctxMsg.style.top=Math.min(e.clientY,window.innerHeight-80)+'px';\r\n  ctxMsg.style.left=Math.min(e.clientX,window.innerWidth-300)+'px';\r\n  ctxMsg.style.transform='';\r\n  ctxMsg.classList.add('show');clearTimeout(ctxT);ctxT=setTimeout(()=>ctxMsg.classList.remove('show'),4000);\r\n});\r\ndocument.addEventListener('click',function(){if(ctxMsg.classList.contains('show')){ctxMsg.classList.remove('show');clearTimeout(ctxT);}});\r\ndocument.addEventListener('keydown',function(e){\r\n  if(e.key==='F12'||(e.ctrlKey&&e.key==='u')||(e.ctrlKey&&e.shiftKey&&['i','I','j','J','c','C'].includes(e.key))){\r\n    e.preventDefault();ctxMsg.style.top='20px';ctxMsg.style.left='50%';ctxMsg.style.transform='translateX(-50%)';\r\n    ctxMsg.classList.add('show');clearTimeout(ctxT);ctxT=setTimeout(()=>{ctxMsg.classList.remove('show');ctxMsg.style.transform='';},4000);\r\n  }\r\n});\r\n\r\n\/* \u2500\u2500 ARRANQUE \u2500\u2500 *\/\r\npoblarProvincias();aplicarCompatibilidad();renderChip();calcular();cargarPrecioElec();\r\n<\/script>\r\n\r\n<script src=\"https:\/\/www.google.com\/recaptcha\/api.js?render=6Lfi1o0nAAAAAKef__HF07S9Y26C8xyCNYh5IjlG\"><\/script>\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\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n  INSTRUCCIONES WORDPRESS \u2014 CONTACT FORM 7\r\n  Shortcode: [contact-form-7 id=\"6380ecc\" title=\"Formulario calculadora aislamiento\"]\r\n  Form ID: 14949  |  Page ID: 14938\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\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n\r\n\u26a0\ufe0f MUY IMPORTANTE \u2014 El contenedor del shortcode en la p\u00e1gina WP\r\nDEBE usar visibility:hidden + height:0, NO display:none.\r\nCon display:none WordPress\/CF7 no renderiza el nonce y el env\u00edo\r\nfalla con \"Ha ocurrido un error\". Usa exactamente esto:\r\n\r\n<div style=\"visibility:hidden;height:0;overflow:hidden;position:absolute;\">\r\n[contact-form-7 id=\"6380ecc\" title=\"Formulario calculadora aislamiento\"]\r\n<\/div>\r\n\r\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 PLANTILLA CF7 (pesta\u00f1a \"Formulario\") \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n\r\n[text* nombre placeholder \"Tu nombre y apellidos\"]\r\n[tel telefono placeholder \"+34 600 000 000\"]\r\n[email* email placeholder \"tu@correo.com\"]\r\n[text empresa placeholder \"Nombre de empresa (opcional)\"]\r\n[select* pais include_blank \"Espa\u00f1a\" \"Alemania\" \"Andorra\" \"Austria\" \"B\u00e9lgica\" \"Bulgaria\" \"Chipre\" \"Croacia\" \"Dinamarca\" \"Eslovaquia\" \"Eslovenia\" \"Estonia\" \"Finlandia\" \"Francia\" \"Grecia\" \"Hungr\u00eda\" \"Irlanda\" \"Islandia\" \"Italia\" \"Letonia\" \"Liechtenstein\" \"Lituania\" \"Luxemburgo\" \"Malta\" \"M\u00f3naco\" \"Noruega\" \"Pa\u00edses Bajos\" \"Polonia\" \"Portugal\" \"Reino Unido\" \"Rep\u00fablica Checa\" \"Ruman\u00eda\" \"Suecia\" \"Suiza\" \"Turqu\u00eda\" \"Ucrania\" \"Argentina\" \"Bolivia\" \"Brasil\" \"Chile\" \"Colombia\" \"Costa Rica\" \"Cuba\" \"Ecuador\" \"El Salvador\" \"Guatemala\" \"Honduras\" \"M\u00e9xico\" \"Nicaragua\" \"Panam\u00e1\" \"Paraguay\" \"Per\u00fa\" \"Puerto Rico\" \"Rep\u00fablica Dominicana\" \"Uruguay\" \"Venezuela\" \"Angola\" \"Argelia\" \"Cabo Verde\" \"Camer\u00fan\" \"Costa de Marfil\" \"Egipto\" \"Ghana\" \"Guinea Ecuatorial\" \"Kenia\" \"Libia\" \"Marruecos\" \"Mozambique\" \"Nigeria\" \"Senegal\" \"Sud\u00e1frica\" \"T\u00fanez\" \"Canad\u00e1\" \"Estados Unidos\" \"Arabia Saud\u00ed\" \"Catar\" \"Emiratos \u00c1rabes Unidos\" \"Israel\" \"Jordania\" \"Kuwait\" \"L\u00edbano\" \"Om\u00e1n\" \"Australia\" \"China\" \"Filipinas\" \"India\" \"Indonesia\" \"Jap\u00f3n\" \"Malasia\" \"Nueva Zelanda\" \"Singapur\" \"Corea del Sur\" \"Tailandia\" \"Vietnam\" \"Otro\"]\r\n[select provincia include_blank \"\u00c1lava\" \"Albacete\" \"Alicante\" \"Almer\u00eda\" \"Asturias\" \"\u00c1vila\" \"Badajoz\" \"Baleares\" \"Barcelona\" \"Burgos\" \"C\u00e1ceres\" \"C\u00e1diz\" \"Cantabria\" \"Castell\u00f3n\" \"Ceuta\" \"Ciudad Real\" \"C\u00f3rdoba\" \"Cuenca\" \"Girona\" \"Granada\" \"Guadalajara\" \"Guip\u00fazcoa\" \"Huelva\" \"Huesca\" \"Ja\u00e9n\" \"A Coru\u00f1a\" \"La Rioja\" \"Las Palmas\" \"Le\u00f3n\" \"Lleida\" \"Lugo\" \"Madrid\" \"M\u00e1laga\" \"Melilla\" \"Murcia\" \"Navarra\" \"Ourense\" \"Palencia\" \"Pontevedra\" \"Salamanca\" \"Santa Cruz de Tenerife\" \"Segovia\" \"Sevilla\" \"Soria\" \"Tarragona\" \"Teruel\" \"Toledo\" \"Valencia\" \"Valladolid\" \"Vizcaya\" \"Zamora\" \"Zaragoza\"]\r\n[select* tipo_panel \"Master-C (Cubierta)\" \"Master-F (Fachada)\" \"Master-Frigo (Frigor\u00edfico)\" \"Master-Modul (Modular)\"]\r\n[text espesor placeholder \"Ej: 80mm\"]\r\n[text m2 placeholder \"Ej: 1000\"]\r\n[hidden datos_calculo \"\"]\r\n[acceptance* gdpr] He le\u00eddo y acepto la pol\u00edtica de privacidad\r\n[submit \"Descargar PDF\"]\r\n\r\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 CORREO CF7 (pesta\u00f1a \"Correo\") \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n\r\nPara: frojas@magon.es\r\nDe: wordpress@magon.es\r\nAsunto: Nueva consulta calculadora \u2014 [tipo_panel] [espesor]\r\n\r\nCuerpo:\r\nNueva consulta desde la calculadora de aislamiento t\u00e9rmico.\r\n\r\nNombre: [nombre]\r\nTel\u00e9fono: [telefono]\r\nEmail: [email]\r\nEmpresa: [empresa]\r\nPa\u00eds: [pais]\r\nProvincia: [provincia]\r\n\r\nPanel seleccionado: [tipo_panel]\r\nEspesor recomendado: [espesor]\r\nSuperficie: [m2] m\u00b2\r\n\r\nDatos t\u00e9cnicos del c\u00e1lculo:\r\n[datos_calculo]\r\n\r\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\nCHECKLIST ANTES DE PROBAR:\r\n1. El shortcode en la p\u00e1gina usa visibility:hidden, NO display:none\r\n2. El campo \"pais\" en CF7 es [select* pais include_blank \"Espa\u00f1a\" ...]\r\n   con TODOS los pa\u00edses listados arriba\r\n3. La pesta\u00f1a Correo tiene: Para: frojas@magon.es \/ De: wordpress@magon.es\r\n4. Instala Flamingo para guardar env\u00edos en BD\r\n5. Comprueba en Ajustes \u2192 CF7 que el correo de admin es correcto\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\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n-->\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>Thermal Insulation Calculator for Sandwich Panels | Masterpanel Mag\u00f3n Free technical tool Thermal insulation calculatorfor sandwich panels Find out exactly which sandwich panel thickness your project needs to comply with&#8230;<\/p>\n","protected":false},"author":10,"featured_media":15075,"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-15076","page","type-page","status-publish","has-post-thumbnail"],"_links":{"self":[{"href":"https:\/\/magon.es\/en\/wp-json\/wp\/v2\/pages\/15076","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=15076"}],"version-history":[{"count":12,"href":"https:\/\/magon.es\/en\/wp-json\/wp\/v2\/pages\/15076\/revisions"}],"predecessor-version":[{"id":15123,"href":"https:\/\/magon.es\/en\/wp-json\/wp\/v2\/pages\/15076\/revisions\/15123"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/magon.es\/en\/wp-json\/wp\/v2\/media\/15075"}],"wp:attachment":[{"href":"https:\/\/magon.es\/en\/wp-json\/wp\/v2\/media?parent=15076"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}