{"id":3743,"date":"2026-10-05T07:24:26","date_gmt":"2026-10-05T07:24:26","guid":{"rendered":"https:\/\/perdigoeng.com\/?page_id=3743"},"modified":"2026-10-20T09:51:44","modified_gmt":"2026-10-20T09:51:44","slug":"herramientas-gratuitas","status":"publish","type":"page","link":"https:\/\/perdigoeng.com\/es\/herramientas-gratuitas\/","title":{"rendered":"Herramientas Gratuitas"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3743\" class=\"elementor elementor-3743 elementor-3733\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-38dfca9 elementor-section-full_width elementor-section-height-min-height elementor-section-items-bottom elementor-section-height-default\" data-id=\"38dfca9\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;video&quot;,&quot;background_video_link&quot;:&quot;https:\\\/\\\/perdigoeng.com\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/Banner-copia3.mp4&quot;,&quot;background_play_on_mobile&quot;:&quot;yes&quot;}\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-background-video-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<video class=\"elementor-background-video-hosted\" role=\"presentation\" autoplay muted playsinline loop><\/video>\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-background-overlay\"><\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-17bc5b3\" data-id=\"17bc5b3\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-ec9a538 elementor-reverse-mobile elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"ec9a538\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-c934fa6\" data-id=\"c934fa6\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-552b8af elementor-widget elementor-widget-heading\" data-id=\"552b8af\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">HERRAMIENTAS GRATUITAS<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5cea1f0 elementor-widget elementor-widget-heading\" data-id=\"5cea1f0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">C\u00e1lculo expr\u00e9s,<br \/>sin salir del navegador<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1501d28 elementor-widget elementor-widget-spacer\" data-id=\"1501d28\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-678f4ed\" data-id=\"678f4ed\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b0a1831 elementor-widget elementor-widget-spacer\" data-id=\"b0a1831\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<div class=\"elementor-element elementor-element-194239f elementor-widget elementor-widget-spacer\" data-id=\"194239f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-c9c0e11 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"c9c0e11\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-31c747f\" data-id=\"31c747f\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-edfc8f0 elementor-widget elementor-widget-html\" data-id=\"edfc8f0\" 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<style>\r\n  @import url('https:\/\/fonts.googleapis.com\/css2?family=Work+Sans:wght@400;500;600;700;800&family=IBM+Plex+Mono:ital,wght@0,400;0,500;0,600;1,400&display=swap');\r\n\r\n  :root {\r\n    --navy: #1A3858;\r\n    --navy-deep: #0E2036;\r\n    --navy-mid: #26456B;\r\n    --orange: #F49C10;\r\n    --celeste: #38B6FF;\r\n    --paper: #F2F5F8;\r\n    --paper-card: #FFFFFF;\r\n    --ink: #111E2E;\r\n    --ink-soft: #4A5B6D;\r\n    --line: #CDD7E1;\r\n    --line-dark: rgba(255, 255, 255, 0.15);\r\n    --disp: 'Work Sans', system-ui, sans-serif;\r\n    --mono: 'IBM Plex Mono', monospace;\r\n    --maxw: 1180px;\r\n  }\r\n\r\n  .pdg-tools * { box-sizing: border-box; }\r\n  .pdg-tools {\r\n    font-family: var(--disp);\r\n    color: var(--ink);\r\n    background: transparent;\r\n    -webkit-font-smoothing: antialiased;\r\n  }\r\n\r\n  .pdg-tools img, .pdg-tools svg { display: block; max-width: 100%; }\r\n  .pdg-tools a { color: inherit; }\r\n  .pdg-tools .wrap { max-width: var(--maxw); margin: 0 auto; padding: 0 32px; }\r\n\r\n  .pdg-tools .eyebrow {\r\n    font-family: var(--mono);\r\n    font-size: 11px;\r\n    font-weight: 600;\r\n    letter-spacing: .14em;\r\n    text-transform: uppercase;\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 10px;\r\n  }\r\n  .pdg-tools .eyebrow::before {\r\n    content: \"\";\r\n    width: 16px;\r\n    height: 2px;\r\n    background: currentColor;\r\n  }\r\n\r\n  .pdg-tools h1, .pdg-tools h2, .pdg-tools h3 { font-family: var(--disp); font-weight: 800; letter-spacing: -0.02em; margin: 0; }\r\n  .pdg-tools p { line-height: 1.6; color: var(--ink-soft); }\r\n\r\n  .pdg-tools .btn {\r\n    display: inline-flex; align-items: center; gap: 10px;\r\n    font-family: var(--mono); font-weight: 600; font-size: 13.5px;\r\n    letter-spacing: 0.03em; text-transform: uppercase;\r\n    padding: 13px 24px; border-radius: 0;\r\n    border: none; cursor: pointer; text-decoration: none;\r\n    transition: background-color .15s ease, border-color .15s ease;\r\n  }\r\n  .pdg-tools .btn-primary { background: var(--orange); color: var(--navy-deep); }\r\n  .pdg-tools .btn-primary:hover { background: #e08e0b; }\r\n  .pdg-tools .btn-ghost { background: transparent; color: inherit; border: 1px solid currentColor; }\r\n  .pdg-tools .btn-ghost:hover { background: rgba(255,255,255,0.08); }\r\n\r\n  \/* ---------- SECTION SHELL ---------- *\/\r\n  .pdg-tools section.doc { padding: 80px 0; }\r\n  .pdg-tools section.doc.alt { background: #E6EBF0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }\r\n  .pdg-tools .doc-head { max-width: 760px; margin: 0 auto 48px; text-align: center; }\r\n  .pdg-tools .doc-head h2 { font-size: clamp(24px, 2.8vw, 34px); margin-bottom: 12px; color: var(--navy-deep); text-transform: uppercase; letter-spacing: -0.01em; }\r\n  .pdg-tools .doc-head p { max-width: 64ch; margin: 0 auto; font-size: 15px; }\r\n\r\n  \/* ---------- CARDS CATALOG ---------- *\/\r\n  .pdg-tools .cards3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }\r\n  .pdg-tools .icard {\r\n    background: var(--paper-card);\r\n    border: 1px solid var(--line);\r\n    border-top: 3px solid var(--navy-mid);\r\n    padding: 28px 24px;\r\n    display: flex; flex-direction: column; gap: 14px;\r\n    position: relative;\r\n    transition: border-color .15s ease;\r\n  }\r\n  .pdg-tools .icard:hover { border-top-color: var(--orange); border-color: #B5C4D3; }\r\n  .pdg-tools .icard .ictop { display: flex; align-items: center; justify-content: space-between; }\r\n  .pdg-tools .icard .ic { width: 32px; height: 32px; color: var(--orange); }\r\n  .pdg-tools .icard h3 { font-size: 17.5px; color: var(--navy-deep); margin: 0; }\r\n  .pdg-tools .icard p { font-size: 13.5px; margin: 0; line-height: 1.55; }\r\n\r\n  .pdg-tools .tool-soon {\r\n    font-family: var(--mono); font-size: 10px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase;\r\n    color: var(--ink-soft); background: var(--paper); border: 1px solid var(--line); padding: 3px 8px;\r\n  }\r\n  .pdg-tools .tool-live {\r\n    font-family: var(--mono); font-size: 10px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase;\r\n    color: var(--navy-deep); background: #D6EFFF; border: 1px solid #A2D5FF; padding: 3px 8px;\r\n  }\r\n  .pdg-tools .tool-cta {\r\n    margin-top: auto; padding-top: 10px; display: inline-flex; align-items: center; gap: 6px;\r\n    font-family: var(--mono); font-weight: 600; font-size: 12.5px; color: var(--navy); text-transform: uppercase;\r\n  }\r\n  .pdg-tools .tool-card-clickable { cursor: pointer; }\r\n\r\n  .pdg-tools .proj-reset {\r\n    font-family: var(--mono); font-size: 12px; font-weight: 600; text-transform: uppercase;\r\n    color: var(--navy-mid); text-decoration: none; border-bottom: 1px solid var(--navy-mid);\r\n    display: inline-block; margin-top: 14px;\r\n  }\r\n  .pdg-tools .proj-reset:hover { color: var(--orange); border-color: var(--orange); }\r\n\r\n  \/* ---------- CALCULATOR PANEL ---------- *\/\r\n  .pdg-tools .calc-panel { background: transparent; border: none; box-shadow: none; }\r\n  .pdg-tools .calc-panel-header {\r\n    background: transparent; color: var(--navy-deep);\r\n    padding: 0 0 12px 0; font-family: var(--mono); font-size: 13px; font-weight: 700;\r\n    letter-spacing: .08em; text-transform: uppercase;\r\n    display: flex; justify-content: space-between; align-items: center;\r\n    border-bottom: 2px solid var(--navy-mid);\r\n    margin-bottom: 28px;\r\n  }\r\n  .pdg-tools .calc-panel-header .tag { color: var(--orange); }\r\n\r\n  .pdg-tools .calc-grid { display: grid; grid-template-columns: 380px 1fr; gap: 32px; align-items: start; }\r\n\r\n  .pdg-tools .calc-inputs { background: #fff; border: 1px solid var(--line); padding: 24px; display: flex; flex-direction: column; gap: 14px; }\r\n  .pdg-tools .calc-inputs .field { display: flex; flex-direction: column; gap: 4px; }\r\n  .pdg-tools .calc-inputs .field label {\r\n    font-family: var(--mono); font-size: 11px; font-weight: 600;\r\n    color: var(--navy-mid); text-transform: uppercase; letter-spacing: .04em;\r\n    display: flex; justify-content: space-between;\r\n  }\r\n  .pdg-tools .input-wrapper { position: relative; display: flex; align-items: center; }\r\n  .pdg-tools .calc-inputs .field input, .pdg-tools .calc-inputs .field select {\r\n    width: 100%; background: #fff; border: 1px solid var(--line); border-radius: 0;\r\n    padding: 8px 10px; color: var(--ink); font-family: var(--mono); font-size: 13.5px;\r\n    font-weight: 500;\r\n  }\r\n  .pdg-tools .calc-inputs .field input:focus, .pdg-tools .calc-inputs .field select:focus {\r\n    outline: 1px solid var(--navy); border-color: var(--navy);\r\n  }\r\n  .pdg-tools .calc-inputs .field input[type=\"number\"] { -moz-appearance: textfield; }\r\n  .pdg-tools .calc-inputs .field input[type=\"number\"]::-webkit-inner-spin-button,\r\n  .pdg-tools .calc-inputs .field input[type=\"number\"]::-webkit-outer-spin-button {\r\n    -webkit-appearance: none; margin: 0;\r\n  }\r\n  .pdg-tools .unit-badge {\r\n    position: absolute; right: 10px; font-family: var(--mono); font-size: 11px;\r\n    color: var(--ink-soft); pointer-events: none; opacity: 0.7;\r\n  }\r\n\r\n  .pdg-tools .calc-results-wrap { padding: 0; background: transparent; border: none; }\r\n  .pdg-tools .calc-results { display: flex; flex-direction: column; gap: 14px; }\r\n\r\n  .pdg-tools .calc-card { border: 1px solid var(--line); border-left: 4px solid var(--navy-mid); padding: 18px 22px; background: #fff; position: relative; }\r\n  .pdg-tools .calc-card.calc-max { border-left-color: var(--orange); background: #FFFDF9; border-color: #EBD3AC; }\r\n  .pdg-tools .calc-badge {\r\n    position: absolute; top: 12px; right: 16px; background: var(--orange); color: var(--navy-deep);\r\n    font-family: var(--mono); font-size: 10px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase;\r\n    padding: 2px 8px;\r\n  }\r\n  .pdg-tools .calc-card h3 { font-size: 15.5px; color: var(--navy-deep); margin-bottom: 8px; font-family: var(--disp); }\r\n  .pdg-tools .calc-value { display: flex; align-items: baseline; gap: 6px; }\r\n  .pdg-tools .calc-num { font-family: var(--mono); font-weight: 600; font-size: 24px; color: var(--navy-deep); }\r\n  .pdg-tools .calc-unit { font-family: var(--mono); font-size: 12px; color: var(--ink-soft); }\r\n  .pdg-tools .calc-total { font-size: 13px; color: var(--ink-soft); margin-top: 4px; font-family: var(--mono); }\r\n  .pdg-tools .calc-total strong { color: var(--navy-deep); font-weight: 600; }\r\n  .pdg-tools .calc-error { font-size: 12.5px; color: #B00000; margin: 0; font-family: var(--mono); }\r\n\r\n  .pdg-tools .calc-disclaimer {\r\n    width: 100%; margin-top: 28px; font-size: 12px; color: var(--ink-soft);\r\n    line-height: 1.5; border-top: 1px dashed var(--line); padding-top: 16px; font-family: var(--mono);\r\n  }\r\n\r\n  \/* PED NAMEPLATE STYLE *\/\r\n  .pdg-tools .ped-card { background: var(--navy-deep); color: #fff; border: 1px solid var(--navy-mid); padding: 24px; }\r\n  .pdg-tools .ped-row { display: flex; gap: 20px; align-items: center; }\r\n  .pdg-tools .ped-cat {\r\n    display: flex; align-items: center; justify-content: center; flex: none;\r\n    width: 72px; height: 72px; border: 2px solid rgba(255,255,255,0.2);\r\n    font-family: var(--mono); font-weight: 700; font-size: 24px; color: #fff; background: var(--navy-mid);\r\n  }\r\n  .pdg-tools .ped-cat.cat-sep { background: #4A5B6D; }\r\n  .pdg-tools .ped-cat.cat-I { background: #1B659D; }\r\n  .pdg-tools .ped-cat.cat-II { background: #2372A3; }\r\n  .pdg-tools .ped-cat.cat-III { background: var(--orange); color: var(--navy-deep); border-color: var(--orange); }\r\n  .pdg-tools .ped-cat.cat-IV { background: #C02B2B; border-color: #FF6B6B; }\r\n  .pdg-tools .ped-details h3 { font-size: 18px; color: #fff; margin-bottom: 4px; font-family: var(--disp); }\r\n  .pdg-tools .ped-details p { font-size: 13.5px; color: rgba(255,255,255,0.8); margin: 0 0 4px; font-family: var(--mono); }\r\n  .pdg-tools .ped-modules { font-family: var(--mono); font-size: 12px; color: var(--celeste); margin-top: 8px; }\r\n\r\n  @media (max-width: 920px) {\r\n    .pdg-tools .cards3 { grid-template-columns: 1fr; gap: 24px; }\r\n    .pdg-tools .calc-grid { grid-template-columns: 1fr; gap: 24px; }\r\n  }\r\n<\/style>\r\n\r\n<div class=\"pdg-tools\">\r\n<main>\r\n\r\n  <!-- TOOLS CATALOG SECTION -->\r\n  <section class=\"doc\" id=\"herramientas\" aria-labelledby=\"tools-title\">\r\n    <div class=\"wrap\">\r\n      <div class=\"doc-head\">\r\n        <h2 id=\"tools-title\" data-i18n=\"tools_title\">M\u00f3dulos de comprobaci\u00f3n disponibles<\/h2>\r\n        <p data-i18n=\"tools_lead\">Herramientas de c\u00e1lculo r\u00e1pido para verificaciones preliminares sobre el tablero \u2014 obt\u00e9n una primera cifra contrastada en segundos.<\/p>\r\n      <\/div>\r\n\r\n      <div class=\"cards3\">\r\n        <!-- Virola Tool -->\r\n        <article class=\"icard tool-card-clickable\" data-calc-toggle=\"calc-virola\">\r\n          <div class=\"ictop\">\r\n            <svg class=\"ic\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\">\r\n              <ellipse cx=\"12\" cy=\"5\" rx=\"7\" ry=\"2.6\"\/>\r\n              <path d=\"M5 5v14a7 2.6 0 0 0 14 0V5\"\/>\r\n            <\/svg>\r\n          <\/div>\r\n          <h3 data-i18n=\"card1_title\">Espesor m\u00ednimo de virola<\/h3>\r\n          <p data-i18n=\"card1_desc\">Calcula y compara el espesor m\u00ednimo en cuerpo cil\u00edndrico bajo ASME VIII Div. 1 (UG-27), EN 13445-3 (cl\u00e1usula 7.4.2) y AD 2000 B1.<\/p>\r\n          <span class=\"tool-cta\" data-i18n=\"tool_run\">Ejecutar m\u00f3dulo \u2192<\/span>\r\n        <\/article>\r\n\r\n        <!-- Kl\u00f6pper Tool -->\r\n        <article class=\"icard tool-card-clickable\" data-calc-toggle=\"calc-klopper\">\r\n          <div class=\"ictop\">\r\n            <svg class=\"ic\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\">\r\n              <path d=\"M4 12a8 7 0 0 1 16 0\"\/>\r\n              <path d=\"M4 12h16\"\/>\r\n            <\/svg>\r\n          <\/div>\r\n          <h3 data-i18n=\"card2_title\">Fondos Kl\u00f6pper y Korbbogen<\/h3>\r\n          <p data-i18n=\"card2_desc\">Determinaci\u00f3n de espesor m\u00ednimo en fondos toriesf\u00e9ricos normalizados bajo ASME VIII Div. 1 (UG-32), EN 13445-3 (cl\u00e1usula 7.5.2) y AD 2000 B3.<\/p>\r\n          <span class=\"tool-cta\" data-i18n=\"tool_run\">Ejecutar m\u00f3dulo \u2192<\/span>\r\n        <\/article>\r\n\r\n        <!-- PED Tool -->\r\n        <article class=\"icard tool-card-clickable\" data-calc-toggle=\"calc-ped\">\r\n          <div class=\"ictop\">\r\n            <svg class=\"ic\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\">\r\n              <rect x=\"3\" y=\"16\" width=\"6\" height=\"5\"\/>\r\n              <rect x=\"9\" y=\"11\" width=\"6\" height=\"10\"\/>\r\n              <rect x=\"15\" y=\"5\" width=\"6\" height=\"16\"\/>\r\n            <\/svg>\r\n          <\/div>\r\n          <h3 data-i18n=\"card3_title\">Categor\u00eda del equipo (PED)<\/h3>\r\n          <p data-i18n=\"card3_desc\">Clasificaci\u00f3n de categor\u00eda de conformidad (SEP, I a IV) seg\u00fan fluidos, presi\u00f3n y volumen conforme a la Directiva 2014\/68\/UE.<\/p>\r\n          <span class=\"tool-cta\" data-i18n=\"tool_run\">Ejecutar m\u00f3dulo \u2192<\/span>\r\n        <\/article>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <!-- SECTION: CALCULADORA VIROLA -->\r\n  <section class=\"doc alt\" id=\"calc-virola\" style=\"display:none;\" aria-labelledby=\"calc-virola-title\">\r\n    <div class=\"wrap\">\r\n      <div class=\"doc-head\">\r\n        <h2 id=\"calc-virola-title\" data-i18n=\"calc1_title\">M\u00f3dulo 01: Espesor de virola cil\u00edndrica<\/h2>\r\n        <p data-i18n=\"calc1_subtitle\">C\u00e1lculo simult\u00e1neo de espesor requerido seg\u00fan c\u00f3digos internacionales de dise\u00f1o a presi\u00f3n.<\/p>\r\n        <a href=\"#herramientas\" class=\"proj-reset calc-close\" data-calc-close=\"calc-virola\" data-i18n=\"calc_close\">\u2715 Cerrar m\u00f3dulo de c\u00e1lculo<\/a>\r\n      <\/div>\r\n\r\n      <div class=\"calc-panel\">\r\n        <div class=\"calc-panel-header\">\r\n          <span data-i18n=\"calc1_header\">PAR\u00c1METROS DE DISE\u00d1O \u2014 CYLINDRICAL SHELL<\/span>\r\n          <span class=\"tag\">[ASME \/ EN \/ AD2000]<\/span>\r\n        <\/div>\r\n        <div class=\"calc-grid\">\r\n          <div class=\"calc-inputs\">\r\n            <div class=\"field\">\r\n              <label for=\"c-mat\"><span data-i18n=\"lbl_mat\">Material<\/span> <span>MAT-ID<\/span><\/label>\r\n              <input type=\"text\" id=\"c-mat\" value=\"P265GH\">\r\n            <\/div>\r\n            <div class=\"field\">\r\n              <label for=\"c-p\" data-i18n=\"lbl_p\">Presi\u00f3n de dise\u00f1o (P)<\/label>\r\n              <div class=\"input-wrapper\">\r\n                <input type=\"number\" id=\"c-p\" value=\"1.0\" step=\"0.01\" min=\"0\">\r\n                <span class=\"unit-badge\">MPa<\/span>\r\n              <\/div>\r\n            <\/div>\r\n            <div class=\"field\">\r\n              <label for=\"c-di\" data-i18n=\"lbl_di\">Di\u00e1metro interior (D\u1d62)<\/label>\r\n              <div class=\"input-wrapper\">\r\n                <input type=\"number\" id=\"c-di\" value=\"1000\" step=\"1\" min=\"0\">\r\n                <span class=\"unit-badge\">mm<\/span>\r\n              <\/div>\r\n            <\/div>\r\n            <div class=\"field\">\r\n              <label for=\"c-s\" data-i18n=\"lbl_s\">Tensi\u00f3n admisible (S \/ f)<\/label>\r\n              <div class=\"input-wrapper\">\r\n                <input type=\"number\" id=\"c-s\" value=\"137\" step=\"0.1\" min=\"0\">\r\n                <span class=\"unit-badge\">MPa<\/span>\r\n              <\/div>\r\n            <\/div>\r\n            <div class=\"field\">\r\n              <label for=\"c-ca\" data-i18n=\"lbl_ca\">Corrosi\u00f3n \/ tolerancia (c\u2090)<\/label>\r\n              <div class=\"input-wrapper\">\r\n                <input type=\"number\" id=\"c-ca\" value=\"1\" step=\"0.1\" min=\"0\">\r\n                <span class=\"unit-badge\">mm<\/span>\r\n              <\/div>\r\n            <\/div>\r\n            <div class=\"field\">\r\n              <label for=\"c-rad\" data-i18n=\"lbl_rad\">Nivel de inspecci\u00f3n radiogr\u00e1fica<\/label>\r\n              <select id=\"c-rad\">\r\n                <option value=\"1.0\" data-i18n=\"opt_rad_full\">Radiografiado total<\/option>\r\n                <option value=\"0.85\" data-i18n=\"opt_rad_spot\">Radiografiado por puntos<\/option>\r\n                <option value=\"0.7\" data-i18n=\"opt_rad_none\">Sin radiografiar<\/option>\r\n              <\/select>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <div class=\"calc-results-wrap\">\r\n            <div class=\"calc-results\" id=\"calc-results\"><\/div>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <p class=\"calc-disclaimer\" data-i18n=\"calc_disclaimer\">Este c\u00e1lculo no sustituye al c\u00e1lculo realizado por un ingeniero. Si necesita un c\u00e1lculo o una memoria t\u00e9cnica para su proyecto, no dude en contactar con el equipo de Perdig\u00f3 Engineering.<\/p>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <!-- SECTION: CALCULADORA FONDOS KL\u00d6PPER \/ KORBBOGEN -->\r\n  <section class=\"doc alt\" id=\"calc-klopper\" style=\"display:none;\" aria-labelledby=\"calc-klopper-title\">\r\n    <div class=\"wrap\">\r\n      <div class=\"doc-head\">\r\n        <h2 id=\"calc-klopper-title\" data-i18n=\"calc2_title\">M\u00f3dulo 02: Fondos toriesf\u00e9ricos (Kl\u00f6pper \/ Korbbogen)<\/h2>\r\n        <p data-i18n=\"calc2_subtitle\">Espesor m\u00ednimo de fondos toriesf\u00e9ricos normalizados seg\u00fan c\u00f3digo internacional de dise\u00f1o a presi\u00f3n.<\/p>\r\n        <a href=\"#herramientas\" class=\"proj-reset calc-close\" data-calc-close=\"calc-klopper\" data-i18n=\"calc_close\">\u2715 Cerrar m\u00f3dulo de c\u00e1lculo<\/a>\r\n      <\/div>\r\n\r\n      <div class=\"calc-panel\">\r\n        <div class=\"calc-panel-header\">\r\n          <span data-i18n=\"calc2_header\">PAR\u00c1METROS DE DISE\u00d1O \u2014 TORISPHERICAL HEAD<\/span>\r\n          <span class=\"tag\">[ASME \/ EN \/ AD2000]<\/span>\r\n        <\/div>\r\n        <div class=\"calc-grid\">\r\n          <div class=\"calc-inputs\">\r\n            <div class=\"field\">\r\n              <label for=\"k-type\" data-i18n=\"lbl_head_type\">Tipo de fondo<\/label>\r\n              <select id=\"k-type\">\r\n                <option value=\"klopper\">Kl\u00f6pper (L=Di, r=0.1&middot;Di) \u2014 DIN 28011<\/option>\r\n                <option value=\"korbbogen\">Korbbogen (L=0.8&middot;Di, r=0.154&middot;Di) \u2014 DIN 28013<\/option>\r\n              <\/select>\r\n            <\/div>\r\n            <div class=\"field\">\r\n              <label for=\"k-mat\"><span data-i18n=\"lbl_mat\">Material<\/span> <span>MAT-ID<\/span><\/label>\r\n              <input type=\"text\" id=\"k-mat\" value=\"P265GH\">\r\n            <\/div>\r\n            <div class=\"field\">\r\n              <label for=\"k-p\" data-i18n=\"lbl_p\">Presi\u00f3n de dise\u00f1o (P)<\/label>\r\n              <div class=\"input-wrapper\">\r\n                <input type=\"number\" id=\"k-p\" value=\"1.0\" step=\"0.01\" min=\"0\">\r\n                <span class=\"unit-badge\">MPa<\/span>\r\n              <\/div>\r\n            <\/div>\r\n            <div class=\"field\">\r\n              <label for=\"k-di\" data-i18n=\"lbl_di\">Di\u00e1metro interior (D\u1d62)<\/label>\r\n              <div class=\"input-wrapper\">\r\n                <input type=\"number\" id=\"k-di\" value=\"1000\" step=\"1\" min=\"0\">\r\n                <span class=\"unit-badge\">mm<\/span>\r\n              <\/div>\r\n            <\/div>\r\n            <div class=\"field\">\r\n              <label for=\"k-s\" data-i18n=\"lbl_s\">Tensi\u00f3n admisible (S \/ f)<\/label>\r\n              <div class=\"input-wrapper\">\r\n                <input type=\"number\" id=\"k-s\" value=\"137\" step=\"0.1\" min=\"0\">\r\n                <span class=\"unit-badge\">MPa<\/span>\r\n              <\/div>\r\n            <\/div>\r\n            <div class=\"field\">\r\n              <label for=\"k-ca\" data-i18n=\"lbl_ca\">Corrosi\u00f3n \/ tolerancia (c\u2090)<\/label>\r\n              <div class=\"input-wrapper\">\r\n                <input type=\"number\" id=\"k-ca\" value=\"1\" step=\"0.1\" min=\"0\">\r\n                <span class=\"unit-badge\">mm<\/span>\r\n              <\/div>\r\n            <\/div>\r\n            <div class=\"field\">\r\n              <label for=\"k-rad\" data-i18n=\"lbl_rad\">Nivel de inspecci\u00f3n radiogr\u00e1fica<\/label>\r\n              <select id=\"k-rad\">\r\n                <option value=\"1.0\" data-i18n=\"opt_rad_full\">Radiografiado total<\/option>\r\n                <option value=\"0.85\" data-i18n=\"opt_rad_spot\">Radiografiado por puntos<\/option>\r\n                <option value=\"0.7\" data-i18n=\"opt_rad_none\">Sin radiografiar<\/option>\r\n              <\/select>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <div class=\"calc-results-wrap\">\r\n            <div class=\"calc-results\" id=\"klopper-results\"><\/div>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <p class=\"calc-disclaimer\" style=\"border-top-color:var(--orange); color:#8a5a20;\" data-i18n=\"calc_disclaimer\">Este c\u00e1lculo no sustituye al c\u00e1lculo realizado por un ingeniero. Si necesita un c\u00e1lculo o una memoria t\u00e9cnica para su proyecto, no dude en contactar con el equipo de Perdig\u00f3 Engineering.<\/p>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <!-- SECTION: CALCULADORA PED -->\r\n  <section class=\"doc alt\" id=\"calc-ped\" style=\"display:none;\" aria-labelledby=\"calc-ped-title\">\r\n    <div class=\"wrap\">\r\n      <div class=\"doc-head\">\r\n        <h2 id=\"calc-ped-title\" data-i18n=\"calc3_title\">M\u00f3dulo 03: Clasificaci\u00f3n PED (2014\/68\/UE)<\/h2>\r\n        <p data-i18n=\"calc3_subtitle\">Evaluaci\u00f3n de categor\u00eda de conformidad del equipo a presi\u00f3n seg\u00fan Tablas del Anexo II.<\/p>\r\n        <a href=\"#herramientas\" class=\"proj-reset calc-close\" data-calc-close=\"calc-ped\" data-i18n=\"calc_close\">\u2715 Cerrar m\u00f3dulo de c\u00e1lculo<\/a>\r\n      <\/div>\r\n\r\n      <div class=\"calc-panel\">\r\n        <div class=\"calc-panel-header\">\r\n          <span data-i18n=\"calc3_header\">CLASIFICACI\u00d3N DE RIESGO \u2014 DIRECTIVA PED<\/span>\r\n          <span class=\"tag\">[ANEXO II]<\/span>\r\n        <\/div>\r\n        <div class=\"calc-grid\">\r\n          <div class=\"calc-inputs\">\r\n            <div class=\"field\">\r\n              <label for=\"p-type\" data-i18n=\"lbl_eq_type\">Tipo de equipo<\/label>\r\n              <select id=\"p-type\">\r\n                <option value=\"vessel\" data-i18n=\"opt_vessel\">Recipiente a presi\u00f3n<\/option>\r\n                <option value=\"piping\" data-i18n=\"opt_piping\">Tuber\u00eda \/ Piping<\/option>\r\n              <\/select>\r\n            <\/div>\r\n            <div class=\"field\">\r\n              <label for=\"p-state\" data-i18n=\"lbl_fluid_state\">Estado del fluido<\/label>\r\n              <select id=\"p-state\">\r\n                <option value=\"gas\" data-i18n=\"opt_gas\">Gas \/ vapor \/ liq. p.v. > 0,5 bar<\/option>\r\n                <option value=\"liquid\" data-i18n=\"opt_liquid\">L\u00edquido (p.v. \u2264 0,5 bar)<\/option>\r\n              <\/select>\r\n            <\/div>\r\n            <div class=\"field\">\r\n              <label for=\"p-group\" data-i18n=\"lbl_fluid_group\">Grupo del fluido<\/label>\r\n              <select id=\"p-group\">\r\n                <option value=\"1\" data-i18n=\"opt_group1\">Grupo 1 (Peligroso \/ Inflamable)<\/option>\r\n                <option value=\"2\" data-i18n=\"opt_group2\">Grupo 2 (Otros fluidos \/ Agua \/ Aire)<\/option>\r\n              <\/select>\r\n            <\/div>\r\n            <div class=\"field\">\r\n              <label for=\"p-ps\" data-i18n=\"lbl_ps\">Presi\u00f3n m\u00e1x. admisible (PS)<\/label>\r\n              <div class=\"input-wrapper\">\r\n                <input type=\"number\" id=\"p-ps\" value=\"10\" step=\"0.1\" min=\"0\">\r\n                <span class=\"unit-badge\">bar<\/span>\r\n              <\/div>\r\n            <\/div>\r\n            <div class=\"field\" id=\"p-vfield\">\r\n              <label for=\"p-v\" data-i18n=\"lbl_ped_volume\">Volumen (V)<\/label>\r\n              <div class=\"input-wrapper\">\r\n                <input type=\"number\" id=\"p-v\" value=\"500\" step=\"1\" min=\"0\">\r\n                <span class=\"unit-badge\">L<\/span>\r\n              <\/div>\r\n            <\/div>\r\n            <div class=\"field\" id=\"p-dnfield\" style=\"display:none;\">\r\n              <label for=\"p-dn\" data-i18n=\"lbl_dn\">Di\u00e1metro nominal (DN)<\/label>\r\n              <div class=\"input-wrapper\">\r\n                <input type=\"number\" id=\"p-dn\" value=\"80\" step=\"1\" min=\"0\">\r\n                <span class=\"unit-badge\">mm<\/span>\r\n              <\/div>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <div class=\"calc-results-wrap\">\r\n            <div class=\"calc-results\" id=\"ped-results\"><\/div>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <p class=\"calc-disclaimer\" data-i18n=\"ped_disclaimer\">Esta clasificaci\u00f3n no sustituye a la evaluaci\u00f3n realizada por un ingeniero. Si necesita un c\u00e1lculo o una memoria t\u00e9cnica para su proyecto, no dude en contactar con el equipo de Perdig\u00f3 Engineering.<\/p>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n<\/main>\r\n<\/div>\r\n\r\n<script>\r\n  \/* ---------- TRADUCCIONES Y DICCIONARIO ---------- *\/\r\n  const I18N = {\r\n    es: {\r\n      nav_tools: \"Herramientas\",\r\n      tools_title: \"M\u00f3dulos de comprobaci\u00f3n disponibles\",\r\n      tools_lead: \"Herramientas de c\u00e1lculo r\u00e1pido para verificaciones preliminares sobre el tablero \u2014 obt\u00e9n una primera cifra contrastada en segundos.\",\r\n      mod_01_tag: \"M\u00f3dulo 01\",\r\n      mod_02_tag: \"M\u00f3dulo 02\",\r\n      mod_03_tag: \"M\u00f3dulo 03\",\r\n      card1_title: \"Espesor m\u00ednimo de virola\",\r\n      card1_desc: \"Calcula y compara el espesor m\u00ednimo en cuerpo cil\u00edndrico bajo ASME VIII Div. 1 (UG-27), EN 13445-3 (cl\u00e1usula 7.4.2) y AD 2000 B1.\",\r\n      card2_title: \"Fondos Kl\u00f6pper y Korbbogen\",\r\n      card2_desc: \"Determinaci\u00f3n de espesor m\u00ednimo en fondos toriesf\u00e9ricos normalizados bajo ASME VIII Div. 1 (UG-32), EN 13445-3 (cl\u00e1usula 7.5.2) y AD 2000 B3.\",\r\n      card3_title: \"Categor\u00eda del equipo (PED)\",\r\n      card3_desc: \"Clasificaci\u00f3n de categor\u00eda de conformidad (SEP, I a IV) seg\u00fan fluidos, presi\u00f3n y volumen conforme a la Directiva 2014\/68\/UE.\",\r\n      tool_run: \"Ejecutar m\u00f3dulo \u2192\",\r\n      calc1_title: \"M\u00f3dulo 01: Espesor de virola cil\u00edndrica\",\r\n      calc1_subtitle: \"C\u00e1lculo simult\u00e1neo de espesor requerido seg\u00fan c\u00f3digos internacionales de dise\u00f1o a presi\u00f3n.\",\r\n      calc2_title: \"M\u00f3dulo 02: Fondos toriesf\u00e9ricos (Kl\u00f6pper \/ Korbbogen)\",\r\n      calc2_subtitle: \"Espesor m\u00ednimo de fondos toriesf\u00e9ricos normalizados seg\u00fan c\u00f3digo internacional de dise\u00f1o a presi\u00f3n.\",\r\n      calc3_title: \"M\u00f3dulo 03: Clasificaci\u00f3n PED (2014\/68\/UE)\",\r\n      calc3_subtitle: \"Evaluaci\u00f3n de categor\u00eda de conformidad del equipo a presi\u00f3n seg\u00fan Tablas del Anexo II.\",\r\n      calc_close: \"\u2715 Cerrar m\u00f3dulo de c\u00e1lculo\",\r\n      calc1_header: \"PAR\u00c1METROS DE DISE\u00d1O \u2014 CYLINDRICAL SHELL\",\r\n      calc2_header: \"PAR\u00c1METROS DE DISE\u00d1O \u2014 TORISPHERICAL HEAD\",\r\n      calc3_header: \"CLASIFICACI\u00d3N DE RIESGO \u2014 DIRECTIVA PED\",\r\n      lbl_mat: \"Material\",\r\n      lbl_p: \"Presi\u00f3n de dise\u00f1o (P)\",\r\n      lbl_di: \"Di\u00e1metro interior (D\u1d62)\",\r\n      lbl_s: \"Tensi\u00f3n admisible (S \/ f)\",\r\n      lbl_ca: \"Corrosi\u00f3n \/ tolerancia (c\u2090)\",\r\n      lbl_e: \"Eficiencia soldadura ASME (E)\",\r\n      lbl_z: \"Coef. soldadura EN 13445 (z)\",\r\n      lbl_v: \"Coef. junta AD MERKBLATT (V)\",\r\n      lbl_rad: \"Nivel de inspecci\u00f3n radiogr\u00e1fica\",\r\n      opt_rad_full: \"Radiografiado total\",\r\n      opt_rad_spot: \"Radiografiado por puntos\",\r\n      opt_rad_none: \"Sin radiografiar\",\r\n      lbl_ped_volume: \"Volumen (V)\",\r\n      note_en_ad_rad: \"No es habitual prescindir de radiograf\u00eda en EN 13445 \/ AD Merkblatt \u2014 se aplica el coeficiente de radiografiado por puntos (0,85) en su lugar.\",\r\n      lbl_head_type: \"Tipo de fondo\",\r\n      lbl_eq_type: \"Tipo de equipo\",\r\n      opt_vessel: \"Recipiente a presi\u00f3n\",\r\n      opt_piping: \"Tuber\u00eda \/ Piping\",\r\n      lbl_fluid_state: \"Estado del fluido\",\r\n      opt_gas: \"Gas \/ vapor \/ liq. p.v. > 0,5 bar\",\r\n      opt_liquid: \"L\u00edquido (p.v. \u2264 0,5 bar)\",\r\n      lbl_fluid_group: \"Grupo del fluido\",\r\n      opt_group1: \"Grupo 1 (Peligroso \/ Inflamable)\",\r\n      opt_group2: \"Grupo 2 (Otros fluidos \/ Agua \/ Aire)\",\r\n      lbl_ps: \"Presi\u00f3n m\u00e1x. admisible (PS)\",\r\n      lbl_dn: \"Di\u00e1metro nominal (DN)\",\r\n      chk_unstable: \"Fluido\/gas inestable\",\r\n      calc_disclaimer: \"Este c\u00e1lculo no sustituye al c\u00e1lculo realizado por un ingeniero. Si necesita un c\u00e1lculo o una memoria t\u00e9cnica para su proyecto, no dude en contactar con el equipo de Perdig\u00f3 Engineering.\",\r\n      ped_disclaimer: \"Esta clasificaci\u00f3n no sustituye a la evaluaci\u00f3n realizada por un ingeniero. Si necesita un c\u00e1lculo o una memoria t\u00e9cnica para su proyecto, no dude en contactar con el equipo de Perdig\u00f3 Engineering.\",\r\n      lead_title: \"\u00bfQuieres el procedimiento completo?\",\r\n      lead_text: \"Te enviamos el desarrollo del c\u00e1lculo paso a paso en PDF a tu correo.\",\r\n      ph_lead_email: \"tu@empresa.com\",\r\n      lead_button: \"Enviarme el PDF\",\r\n      lead_success: \"\u00a1Listo! Revisa tu correo en unos minutos.\",\r\n      lead_error: \"No se pudo enviar. Int\u00e9ntalo de nuevo o escr\u00edbenos directamente.\",\r\n      contact_eyebrow: \"PROYECTOS Y C\u00c1LCULOS OFICIALES\",\r\n      contact_title: \"\u00bfNecesitas el c\u00e1lculo justificado y firmado?\",\r\n      contact_lead: \"Las herramientas r\u00e1pidas son \u00fatiles para estimaciones iniciales. Para la memoria t\u00e9cnica completa, modelado 3D, an\u00e1lisis FEA por elementos finitos y certificaci\u00f3n legalizada, nuestro equipo se encarga de todo el proceso.\",\r\n      lbl_name: \"Nombre \/ Empresa\",\r\n      ph_name: \"Ej. PERDIG\u00d3 Engineering S.L.\",\r\n      lbl_email: \"Correo electr\u00f3nico profesional\",\r\n      ph_email: \"nombre@empresa.com\",\r\n      lbl_msg: \"Especificaciones del equipo\",\r\n      ph_msg: \"Describe la presi\u00f3n, temperatura, material o c\u00f3digo aplicable...\",\r\n      btn_submit: \"Solicitar propuesta de ingenier\u00eda\",\r\n      err_numeric: \"Revisa que los par\u00e1metros de entrada contengan valores num\u00e9ricos v\u00e1lidos.\",\r\n      err_no_phys: \"Sin soluci\u00f3n f\u00edsica positiva \u2014 verificar P vs S.\",\r\n      governing_crit: \"Criterio determinante\",\r\n      net_unit: \"mm (neto)\",\r\n      corr_text: \"+ {ca} mm corrosi\u00f3n y tolerancia = <strong>{total} mm nominal<\/strong>\",\r\n      err_press: \"Introduce un valor num\u00e9rico de presi\u00f3n v\u00e1lido.\",\r\n      err_size: \"Introduce un valor v\u00e1lido de volumen o DN.\",\r\n      ped_excl: \"Con PS \u2264 0,5 bar, el equipo se encuentra <strong>excluido del \u00e1mbito de aplicaci\u00f3n de la Directiva PED<\/strong> (Art\u00edculo 1).\",\r\n      sep_title: \"Art\u00edculo 4.3\",\r\n      cat_title: \"Categor\u00eda seg\u00fan PED \",\r\n      ped_mod_label: \"Procedimientos: \",\r\n      ped_mods: {\r\n        SEP: 'Art\u00edculo 4.3 \u2014 Pr\u00e1ctica Correcta de Ingenier\u00eda (Sin marcado CE)',\r\n        I:   'M\u00f3dulo A (Control interno de la producci\u00f3n)',\r\n        II:  'M\u00f3dulos A2, D1 o E1',\r\n        III: 'M\u00f3dulos B (dise\u00f1o) + D, B + F, B + E + C2, o H',\r\n        IV:  'M\u00f3dulos B (producci\u00f3n) + D, B + F, G, o H1',\r\n      },\r\n      ped_tables: {\r\n        t1: 'Cuadro 1 \u2014 Recipientes, Gas\/Vapor, Grupo 1',\r\n        t2: 'Cuadro 2 \u2014 Recipientes, Gas\/Vapor, Grupo 2',\r\n        t3: 'Cuadro 3 \u2014 Recipientes, L\u00edquido, Grupo 1',\r\n        t4: 'Cuadro 4 \u2014 Recipientes, L\u00edquido, Grupo 2',\r\n        t6: 'Cuadro 6 \u2014 Tuber\u00eda, Gas\/Vapor, Grupo 1',\r\n        t7: 'Cuadro 7 \u2014 Tuber\u00eda, Gas\/Vapor, Grupo 2',\r\n        t8: 'Cuadro 8 \u2014 Tuber\u00eda, L\u00edquido, Grupo 1',\r\n        t9: 'Cuadro 9 \u2014 Tuber\u00eda, L\u00edquido, Grupo 2'\r\n      }\r\n    },\r\n    ca: {\r\n      nav_tools: \"Eines\",\r\n      tools_title: \"M\u00f2duls de comprovaci\u00f3 disponibles\",\r\n      tools_lead: \"Eines de c\u00e0lcul r\u00e0pid per a verificacions preliminars sobre el tauler \u2014 obt\u00e9 una primera xifra contrastada en segons.\",\r\n      mod_01_tag: \"M\u00f2dul 01\",\r\n      mod_02_tag: \"M\u00f2dul 02\",\r\n      mod_03_tag: \"M\u00f2dul 03\",\r\n      card1_title: \"Gruix m\u00ednim de virola\",\r\n      card1_desc: \"Calcula i compara el gruix m\u00ednim en cos cil\u00edndric sota ASME VIII Div. 1 (UG-27), EN 13445-3 (cl\u00e0usula 7.4.2) i AD 2000 B1.\",\r\n      card2_title: \"Fons Kl\u00f6pper i Korbbogen\",\r\n      card2_desc: \"Determinaci\u00f3 del gruix m\u00ednim en fons torisf\u00e8rics normalitzats sota ASME VIII Div. 1 (UG-32), EN 13445-3 (cl\u00e0usula 7.5.2) i AD 2000 B3.\",\r\n      card3_title: \"Categoria de l'equip (PED)\",\r\n      card3_desc: \"Classificaci\u00f3 de categoria de conformitat (SEP, I a IV) segons fluids, pressi\u00f3 i volum conformed a la Directiva 2014\/68\/UE.\",\r\n      tool_run: \"Executar m\u00f2dul \u2192\",\r\n      calc1_title: \"M\u00f2dul 01: Gruix de virola cil\u00edndrica\",\r\n      calc1_subtitle: \"C\u00e0lcul simultani de gruix requerit segons codis internacionals de disseny a pressi\u00f3.\",\r\n      calc2_title: \"M\u00f2dul 02: Fons torisf\u00e8rics (Kl\u00f6pper \/ Korbbogen)\",\r\n      calc2_subtitle: \"Gruix m\u00ednim de fons torisf\u00e8rics normalitzats segons codis internacionals de disseny a pressi\u00f3.\",\r\n      calc3_title: \"M\u00f2dul 03: Classificaci\u00f3 PED (2014\/68\/UE)\",\r\n      calc3_subtitle: \"Avaluaci\u00f3 de categoria de conformitat de l'equip a pressi\u00f3 segons Taules de l'Annex II.\",\r\n      calc_close: \"\u2715 Tancar m\u00f2dul de c\u00e0lcul\",\r\n      calc1_header: \"PAR\u00c0METRES DE DISSENY \u2014 CYLINDRICAL SHELL\",\r\n      calc2_header: \"PAR\u00c0METRES DE DISSENY \u2014 TORISPHERICAL HEAD\",\r\n      calc3_header: \"CLASSIFICACI\u00d3 DE RISC \u2014 DIRECTIVA PED\",\r\n      lbl_mat: \"Material\",\r\n      lbl_p: \"Pressi\u00f3 de disseny (P)\",\r\n      lbl_di: \"Di\u00e0metre interior (D\u1d62)\",\r\n      lbl_s: \"Tensi\u00f3 admissible (S \/ f)\",\r\n      lbl_ca: \"Corrosi\u00f3 \/ toler\u00e0ncia (c\u2090)\",\r\n      lbl_e: \"Efici\u00e8ncia soldadura ASME (E)\",\r\n      lbl_z: \"Coef. soldadura EN 13445 (z)\",\r\n      lbl_v: \"Coef. junta AD MERKBLATT (V)\",\r\n      lbl_rad: \"Nivell d'inspecci\u00f3 radiogr\u00e0fica\",\r\n      opt_rad_full: \"Radiografiat total\",\r\n      opt_rad_spot: \"Radiografiat per punts\",\r\n      opt_rad_none: \"Sense radiografiar\",\r\n      lbl_ped_volume: \"Volum (V)\",\r\n      note_en_ad_rad: \"No \u00e9s habitual prescindir de radiografia en EN 13445 \/ AD Merkblatt \u2014 s'aplica el coeficient de radiografiat per punts (0,85) en el seu lloc.\",\r\n      lbl_head_type: \"Tipus de fons\",\r\n      lbl_eq_type: \"Tipus d'equip\",\r\n      opt_vessel: \"Recipient a pressi\u00f3\",\r\n      opt_piping: \"Canonada \/ Piping\",\r\n      lbl_fluid_state: \"Estat del fluid\",\r\n      opt_gas: \"Gas \/ vapor \/ l\u00edq. p.v. > 0,5 bar\",\r\n      opt_liquid: \"L\u00edquid (p.v. \u2264 0,5 bar)\",\r\n      lbl_fluid_group: \"Grup del fluid\",\r\n      opt_group1: \"Grup 1 (Perill\u00f3s \/ Inflamable)\",\r\n      opt_group2: \"Grup 2 (Altres fluids \/ Aigua \/ Aire)\",\r\n      lbl_ps: \"Pressi\u00f3 m\u00e0x. admissible (PS)\",\r\n      lbl_dn: \"Di\u00e0metre nominal (DN)\",\r\n      chk_unstable: \"Fluid\/gas inestable\",\r\n      calc_disclaimer: \"Aquest c\u00e0lcul no substitueix el c\u00e0lcul realitzat per un enginyer. Si necessita un c\u00e0lcul o una mem\u00f2ria t\u00e8cnica per al seu projecte, no dubti a contactar amb l'equip de Perdig\u00f3 Engineering.\",\r\n      ped_disclaimer: \"Aquesta classificaci\u00f3 no substitueix l'avaluaci\u00f3 realitzada per un enginyer. Si necessita un c\u00e0lcul o una mem\u00f2ria t\u00e8cnica per al seu projecte, no dubti a contactar amb l'equip de Perdig\u00f3 Engineering.\",\r\n      lead_title: \"Vols el procediment complet?\",\r\n      lead_text: \"T'enviem el desenvolupament del c\u00e0lcul pas a pas en PDF al teu correu.\",\r\n      ph_lead_email: \"tu@empresa.com\",\r\n      lead_button: \"Envia'm el PDF\",\r\n      lead_success: \"Fet! Revisa el teu correu en uns minuts.\",\r\n      lead_error: \"No s'ha pogut enviar. Torna-ho a provar o escriu-nos directament.\",\r\n      contact_eyebrow: \"PROJECTES I C\u00c0LCULS OFICIALS\",\r\n      contact_title: \"Necessites el c\u00e0lcul justificat i signat?\",\r\n      contact_lead: \"Les eines r\u00e0pides s\u00f3n \u00fatils per a estimacions inicials. Per a la mem\u00f2ria t\u00e8cnica completa, modelat 3D, an\u00e0lisi FEA per elements finits i certificaci\u00f3 legalitzada, el nostre equip s'encarrega de tot el proc\u00e9s.\",\r\n      lbl_name: \"Nom \/ Empresa\",\r\n      ph_name: \"Ex. PERDIG\u00d3 Engineering S.L.\",\r\n      lbl_email: \"Correu electr\u00f2nic professional\",\r\n      ph_email: \"nom@empresa.com\",\r\n      lbl_msg: \"Especificacions de l'equip\",\r\n      ph_msg: \"Descriu la pressi\u00f3, temperatura, material o codi aplicable...\",\r\n      btn_submit: \"Sol\u00b7licitar proposta d'enginyeria\",\r\n      err_numeric: \"Revisa que els par\u00e0metres d'entrada continguin valors num\u00e8rics v\u00e0lids.\",\r\n      err_no_phys: \"Sense soluci\u00f3 f\u00edsica positiva \u2014 verificar P vs S.\",\r\n      governing_crit: \"Criteri determinant\",\r\n      net_unit: \"mm (net)\",\r\n      corr_text: \"+ {ca} mm corrosi\u00f3 i toler\u00e0ncia = <strong>{total} mm nominal<\/strong>\",\r\n      err_press: \"Introdueix un valor num\u00e8ric de pressi\u00f3 v\u00e0lid.\",\r\n      err_size: \"Introdueix un valor v\u00e0lid de volum o DN.\",\r\n      ped_excl: \"Amb PS \u2264 0,5 bar, l'equip es troba <strong>excl\u00f2s de l'\u00e0mbit d'aplicaci\u00f3 de la Directiva PED<\/strong> (Article 1).\",\r\n      sep_title: \"Article 4.3\",\r\n      cat_title: \"Categoria segons la PED \",\r\n      ped_mod_label: \"Procediments: \",\r\n      ped_mods: {\r\n        SEP: \"Article 4.3 \u2014 Pr\u00e0ctica Correcta d'Enginyeria (Sense marcat CE)\",\r\n        I:   'M\u00f2dul A (Control intern de la producci\u00f3)',\r\n        II:  'M\u00f2duls A2, D1 o E1',\r\n        III: 'M\u00f2duls B (disseny) + D, B + F, B + E + C2, o H',\r\n        IV:  'M\u00f2duls B (producci\u00f3) + D, B + F, G, o H1',\r\n      },\r\n      ped_tables: {\r\n        t1: 'Quadre 1 \u2014 Recipients, Gas\/Vapor, Grup 1',\r\n        t2: 'Quadre 2 \u2014 Recipients, Gas\/Vapor, Grup 2',\r\n        t3: 'Quadre 3 \u2014 Recipients, L\u00edquid, Grup 1',\r\n        t4: 'Quadre 4 \u2014 Recipients, L\u00edquid, Grup 2',\r\n        t6: 'Quadre 6 \u2014 Canonada, Gas\/Vapor, Grup 1',\r\n        t7: 'Quadre 7 \u2014 Canonada, Gas\/Vapor, Grup 2',\r\n        t8: 'Quadre 8 \u2014 Canonada, L\u00edquid, Grup 1',\r\n        t9: 'Quadre 9 \u2014 Canonada, L\u00edquid, Grup 2'\r\n      }\r\n    },\r\n    en: {\r\n      nav_tools: \"Tools\",\r\n      tools_title: \"Available verification modules\",\r\n      tools_lead: \"Quick calculation tools for preliminary checks \u2014 get cross-checked figures in seconds.\",\r\n      mod_01_tag: \"Module 01\",\r\n      mod_02_tag: \"Module 02\",\r\n      mod_03_tag: \"Module 03\",\r\n      card1_title: \"Shell minimum thickness\",\r\n      card1_desc: \"Calculate and compare minimum cylindrical shell thickness under ASME VIII Div. 1 (UG-27), EN 13445-3 (clause 7.4.2) and AD 2000 B1.\",\r\n      card2_title: \"Kl\u00f6pper and Korbbogen heads\",\r\n      card2_desc: \"Determination of minimum thickness for standardized torispherical heads under ASME VIII Div. 1 (UG-32), EN 13445-3 (clause 7.5.2) and AD 2000 B3.\",\r\n      card3_title: \"PED Equipment Category\",\r\n      card3_desc: \"Conformity category classification (SEP, I to IV) according to fluids, pressure, and volume pursuant to Directive 2014\/68\/EU.\",\r\n      tool_run: \"Run module \u2192\",\r\n      calc1_title: \"Module 01: Cylindrical shell thickness\",\r\n      calc1_subtitle: \"Simultaneous thickness calculation according to international pressure vessel design codes.\",\r\n      calc2_title: \"Module 02: Torispherical heads (Kl\u00f6pper \/ Korbbogen)\",\r\n      calc2_subtitle: \"Minimum thickness of standardized torispherical heads according to international pressure design codes.\",\r\n      calc3_title: \"Module 03: PED Classification (2014\/68\/EU)\",\r\n      calc3_subtitle: \"Evaluation of pressure equipment conformity category according to Annex II Tables.\",\r\n      calc_close: \"\u2715 Close calculation module\",\r\n      calc1_header: \"DESIGN PARAMETERS \u2014 CYLINDRICAL SHELL\",\r\n      calc2_header: \"DESIGN PARAMETERS \u2014 TORISPHERICAL HEAD\",\r\n      calc3_header: \"RISK CLASSIFICATION \u2014 PED DIRECTIVE\",\r\n      lbl_mat: \"Material\",\r\n      lbl_p: \"Design pressure (P)\",\r\n      lbl_di: \"Internal diameter (D\u1d62)\",\r\n      lbl_s: \"Allowable stress (S \/ f)\",\r\n      lbl_ca: \"Corrosion allowance (c\u2090)\",\r\n      lbl_e: \"ASME Weld efficiency (E)\",\r\n      lbl_z: \"EN 13445 Weld coef. (z)\",\r\n      lbl_v: \"AD MERKBLATT Joint coef. (V)\",\r\n      lbl_rad: \"Radiographic inspection level\",\r\n      opt_rad_full: \"Full radiography\",\r\n      opt_rad_spot: \"Spot radiography\",\r\n      opt_rad_none: \"No radiography\",\r\n      lbl_ped_volume: \"Volume (V)\",\r\n      note_en_ad_rad: \"Omitting radiography is not standard practice under EN 13445 \/ AD Merkblatt \u2014 the spot radiography coefficient (0.85) is applied instead.\",\r\n      lbl_head_type: \"Head type\",\r\n      lbl_eq_type: \"Equipment type\",\r\n      opt_vessel: \"Pressure vessel\",\r\n      opt_piping: \"Piping\",\r\n      lbl_fluid_state: \"Fluid state\",\r\n      opt_gas: \"Gas \/ vapor \/ liq. v.p. > 0.5 bar\",\r\n      opt_liquid: \"Liquid (v.p. \u2264 0.5 bar)\",\r\n      lbl_fluid_group: \"Fluid group\",\r\n      opt_group1: \"Group 1 (Dangerous \/ Flammable)\",\r\n      opt_group2: \"Group 2 (Other fluids \/ Water \/ Air)\",\r\n      lbl_ps: \"Max allowable pressure (PS)\",\r\n      lbl_dn: \"Nominal diameter (DN)\",\r\n      chk_unstable: \"Unstable fluid\/gas\",\r\n      calc_disclaimer: \"This calculation does not replace an official calculation performed by an engineer. If you require a formal calculation or technical report for your project, feel free to contact the Perdig\u00f3 Engineering team.\",\r\n      ped_disclaimer: \"This classification does not replace an official evaluation performed by an engineer. If you require a formal calculation or technical report for your project, feel free to contact the Perdig\u00f3 Engineering team.\",\r\n      lead_title: \"Want the full procedure?\",\r\n      lead_text: \"We'll send you the complete step-by-step calculation as a PDF.\",\r\n      ph_lead_email: \"you@company.com\",\r\n      lead_button: \"Send me the PDF\",\r\n      lead_success: \"Done! Check your inbox in a few minutes.\",\r\n      lead_error: \"Something went wrong. Please try again or contact us directly.\",\r\n      contact_eyebrow: \"OFFICIAL CALCULATIONS & PROJECTS\",\r\n      contact_title: \"Need a signed, detailed engineering report?\",\r\n      contact_lead: \"Fast tools are useful for preliminary estimates. For a complete technical report, 3D modeling, FEA finite element analysis, and legalized certification, our engineering team manages the whole process.\",\r\n      lbl_name: \"Name \/ Company\",\r\n      ph_name: \"e.g., PERDIG\u00d3 Engineering S.L.\",\r\n      lbl_email: \"Professional email\",\r\n      ph_email: \"name@company.com\",\r\n      lbl_msg: \"Equipment specifications\",\r\n      ph_msg: \"Describe pressure, temperature, material or applicable design code...\",\r\n      btn_submit: \"Request engineering proposal\",\r\n      err_numeric: \"Please check that all input parameters contain valid numerical values.\",\r\n      err_no_phys: \"No positive physical solution \u2014 verify P vs S.\",\r\n      governing_crit: \"Governing criterion\",\r\n      net_unit: \"mm (net)\",\r\n      corr_text: \"+ {ca} mm corrosion and tolerance = <strong>{total} mm nominal<\/strong>\",\r\n      err_press: \"Enter a valid numerical pressure value.\",\r\n      err_size: \"Enter a valid volume or DN value.\",\r\n      ped_excl: \"With PS \u2264 0.5 bar, the equipment is <strong>excluded from the scope of the PED Directive<\/strong> (Article 1).\",\r\n      sep_title: \"Article 4.3\",\r\n      cat_title: \"Category under the PED \",\r\n      ped_mod_label: \"Procedures: \",\r\n      ped_mods: {\r\n        SEP: 'Article 4.3 \u2014 Sound Engineering Practice (No CE marking)',\r\n        I:   'Module A (Internal production control)',\r\n        II:  'Modules A2, D1 or E1',\r\n        III: 'Modules B (design) + D, B + F, B + E + C2, or H',\r\n        IV:  'Modules B (production) + D, B + F, G, or H1',\r\n      },\r\n      ped_tables: {\r\n        t1: 'Table 1 \u2014 Vessels, Gas\/Vapor, Group 1',\r\n        t2: 'Table 2 \u2014 Vessels, Gas\/Vapor, Group 2',\r\n        t3: 'Table 3 \u2014 Vessels, Liquid, Group 1',\r\n        t4: 'Table 4 \u2014 Vessels, Liquid, Group 2',\r\n        t6: 'Table 6 \u2014 Piping, Gas\/Vapor, Group 1',\r\n        t7: 'Table 7 \u2014 Piping, Gas\/Vapor, Group 2',\r\n        t8: 'Table 8 \u2014 Piping, Liquid, Group 1',\r\n        t9: 'Table 9 \u2014 Piping, Liquid, Group 2'\r\n      }\r\n    }\r\n  };\r\n\r\n  let currentLang = 'es';\r\n\r\n  function setLanguage(lang) {\r\n    if (!I18N[lang]) return;\r\n    currentLang = lang;\r\n\r\n    document.querySelectorAll('[data-i18n]').forEach(el => {\r\n      const key = el.dataset.i18n;\r\n      if (I18N[lang][key]) el.textContent = I18N[lang][key];\r\n    });\r\n\r\n    document.querySelectorAll('[data-i18n-html]').forEach(el => {\r\n      const key = el.dataset.i18nHtml;\r\n      if (I18N[lang][key]) el.innerHTML = I18N[lang][key];\r\n    });\r\n\r\n    document.querySelectorAll('[data-i18n-ph]').forEach(el => {\r\n      const key = el.dataset.i18nPh;\r\n      if (I18N[lang][key]) el.placeholder = I18N[lang][key];\r\n    });\r\n\r\n    calcVirola();\r\n    calcKlopper();\r\n    calcPed();\r\n  }\r\n\r\n  \/\/ Detecci\u00f3n autom\u00e1tica seg\u00fan HTML de WP o URL, igual que en la p\u00e1gina de Proyectos\r\n  function autoDetectLanguage() {\r\n    const htmlLang = document.documentElement.lang.toLowerCase();\r\n    const urlPath = window.location.pathname.toLowerCase();\r\n\r\n    let detectedLang = 'es';\r\n    if (htmlLang.includes('en') || urlPath.includes('\/en\/') || urlPath.endsWith('\/en')) {\r\n      detectedLang = 'en';\r\n    } else if (htmlLang.includes('ca') || urlPath.includes('\/ca\/') || urlPath.endsWith('\/ca')) {\r\n      detectedLang = 'ca';\r\n    }\r\n    setLanguage(detectedLang);\r\n  }\r\n\r\n  \/\/ Escuchadores de clics para los enlaces del men\u00fa superior del sitio (id\u00e9ntico a Proyectos)\r\n  document.querySelectorAll('.lang-trigger-es').forEach(btn => {\r\n    btn.addEventListener('click', (e) => { e.preventDefault(); setLanguage('es'); });\r\n  });\r\n  document.querySelectorAll('.lang-trigger-ca').forEach(btn => {\r\n    btn.addEventListener('click', (e) => { e.preventDefault(); setLanguage('ca'); });\r\n  });\r\n  document.querySelectorAll('.lang-trigger-en').forEach(btn => {\r\n    btn.addEventListener('click', (e) => { e.preventDefault(); setLanguage('en'); });\r\n  });\r\n\r\n  \/* ---------- Virola Calculator Logic ---------- *\/\r\n  const calcIds = ['c-p', 'c-di', 'c-s', 'c-ca', 'c-rad'];\r\n  const calcResultsEl = document.getElementById('calc-results');\r\n\r\n  function calcVirola() {\r\n    const P  = parseFloat(document.getElementById('c-p').value);\r\n    const Di = parseFloat(document.getElementById('c-di').value);\r\n    const S  = parseFloat(document.getElementById('c-s').value);\r\n    const Ca = parseFloat(document.getElementById('c-ca').value) || 0;\r\n    const rad = parseFloat(document.getElementById('c-rad').value);\r\n    \/\/ EN 13445 y AD Merkblatt no admiten en la pr\u00e1ctica \"sin radiografiar\":\r\n    \/\/ si se elige ese nivel, se aplica igualmente el coeficiente de radiografiado\r\n    \/\/ por puntos (0.85) para esas dos normas, con una nota explicativa.\r\n    const enAdRad = rad === 0.7 ? 0.85 : rad;\r\n    const E = rad, z = enAdRad, v = enAdRad;\r\n    const showRadNote = rad === 0.7;\r\n\r\n    if (!calcResultsEl) return;\r\n    const dict = I18N[currentLang];\r\n\r\n    if ([P, Di, S, rad].some(x => isNaN(x) || x < 0)) {\r\n      calcResultsEl.innerHTML = `<p class=\"calc-error\">${dict.err_numeric}<\/p>`;\r\n      return;\r\n    }\r\n\r\n    const R = Di \/ 2;\r\n\r\n    const results = [\r\n      { name: 'ASME VIII Div. 1 (UG-27)',  denom: (S*E - 0.6*P), calc: d => (P*R)\/d, note: false },\r\n      { name: 'EN 13445-3 (cl\u00e1usula 7.4.2)', denom: (2*S*z - P),   calc: d => (P*Di)\/d, note: showRadNote },\r\n      { name: 'AD 2000-Merkblatt B1',       denom: (2*S*v + P),   calc: d => (P*Di)\/d, note: showRadNote },\r\n    ];\r\n\r\n    const computed = results.map(r => {\r\n      const t = r.denom > 0 ? r.calc(r.denom) : NaN;\r\n      return { ...r, t, total: (isNaN(t) ? NaN : t + Ca) };\r\n    });\r\n\r\n    const validTotals = computed.map(r => r.total).filter(t => !isNaN(t));\r\n    const maxTotal = validTotals.length ? Math.max(...validTotals) : null;\r\n\r\n    calcResultsEl.innerHTML = computed.map(r => {\r\n      if (isNaN(r.t) || r.t < 0) {\r\n        return `<div class=\"calc-card\">\r\n          <h3>${r.name}<\/h3>\r\n          <p class=\"calc-error\">${dict.err_no_phys}<\/p>\r\n        <\/div>`;\r\n      }\r\n      const isMax = maxTotal !== null && Math.abs(r.total - maxTotal) < 0.001;\r\n      const corrStr = dict.corr_text.replace('{ca}', Ca.toFixed(1)).replace('{total}', r.total.toFixed(2));\r\n      const noteHtml = r.note ? `<p style=\"font-size:11.5px;color:var(--ink-soft);font-style:italic;margin-top:8px;\">${dict.note_en_ad_rad}<\/p>` : '';\r\n      return `<div class=\"calc-card ${isMax ? 'calc-max' : ''}\">\r\n        ${isMax ? `<span class=\"calc-badge\">${dict.governing_crit}<\/span>` : ''}\r\n        <h3>${r.name}<\/h3>\r\n        <div class=\"calc-value\"><span class=\"calc-num\">${r.t.toFixed(2)}<\/span><span class=\"calc-unit\">${dict.net_unit}<\/span><\/div>\r\n        <div class=\"calc-total\">${corrStr}<\/div>\r\n        ${noteHtml}\r\n      <\/div>`;\r\n    }).join('');\r\n  }\r\n\r\n  calcIds.forEach(id => {\r\n    document.getElementById(id)?.addEventListener('input', calcVirola);\r\n  });\r\n\r\n  \/* ---------- Fondos Kl\u00f6pper \/ Korbbogen Calculator Logic ---------- *\/\r\n  const klopperIds = ['k-type', 'k-p', 'k-di', 'k-s', 'k-ca', 'k-rad'];\r\n  const klopperResultsEl = document.getElementById('klopper-results');\r\n\r\n  const HEAD_GEOMETRY = {\r\n    klopper:   { L: (Di) => Di,      r: (Di) => 0.1   * Di, label: 'Kl\u00f6pper (L=D\u1d62, r=0.1\u00b7D\u1d62)' },\r\n    korbbogen: { L: (Di) => 0.8*Di,  r: (Di) => 0.154 * Di, label: 'Korbbogen (L=0.8\u00b7D\u1d62, r=0.154\u00b7D\u1d62)' },\r\n  };\r\n\r\n  function calcKlopper() {\r\n    const headType = document.getElementById('k-type').value;\r\n    const P  = parseFloat(document.getElementById('k-p').value);\r\n    const Di = parseFloat(document.getElementById('k-di').value);\r\n    const S  = parseFloat(document.getElementById('k-s').value);\r\n    const Ca = parseFloat(document.getElementById('k-ca').value) || 0;\r\n    const rad = parseFloat(document.getElementById('k-rad').value);\r\n    const enAdRad = rad === 0.7 ? 0.85 : rad;\r\n    const E = rad, z = enAdRad, v = enAdRad;\r\n    const showRadNote = rad === 0.7;\r\n\r\n    if (!klopperResultsEl) return;\r\n    const dict = I18N[currentLang];\r\n\r\n    if ([P, Di, S, rad].some(x => isNaN(x) || x < 0)) {\r\n      klopperResultsEl.innerHTML = `<p class=\"calc-error\">${dict.err_numeric}<\/p>`;\r\n      return;\r\n    }\r\n\r\n    const geo = HEAD_GEOMETRY[headType];\r\n    const L = geo.L(Di);\r\n    const r = geo.r(Di);\r\n    const M = 0.25 * (3 + Math.sqrt(L \/ r));\r\n\r\n    const results = [\r\n      { name: 'ASME VIII Div. 1 (UG-32)',  denom: (2*S*E - 0.2*P),        calc: d => (P*L*M)\/d, note: false },\r\n      { name: 'EN 13445-3 (cl\u00e1usula 7.5.2)', denom: (2*S*z - 0.2*P),        calc: d => (P*L*M)\/d, note: showRadNote },\r\n      { name: 'AD 2000-Merkblatt B3',      denom: (2*S*v + P*(M-0.2)),    calc: d => (P*L*M)\/d, note: showRadNote },\r\n    ];\r\n\r\n    const computed = results.map(r2 => {\r\n      const t = r2.denom > 0 ? r2.calc(r2.denom) : NaN;\r\n      return { ...r2, t, total: (isNaN(t) ? NaN : t + Ca) };\r\n    });\r\n\r\n    const validTotals = computed.map(r2 => r2.total).filter(t => !isNaN(t));\r\n    const maxTotal = validTotals.length ? Math.max(...validTotals) : null;\r\n\r\n    const geomNote = `<p style=\"font-family:var(--mono); font-size:12px; color:var(--ink-soft); margin:0 0 14px;\">${geo.label} \u00b7 L=${L.toFixed(0)} mm \u00b7 r=${r.toFixed(0)} mm \u00b7 M=${M.toFixed(3)}<\/p>`;\r\n\r\n    klopperResultsEl.innerHTML = geomNote + computed.map(r2 => {\r\n      if (isNaN(r2.t) || r2.t < 0) {\r\n        return `<div class=\"calc-card\">\r\n          <h3>${r2.name}<\/h3>\r\n          <p class=\"calc-error\">${dict.err_no_phys}<\/p>\r\n        <\/div>`;\r\n      }\r\n      const isMax = maxTotal !== null && Math.abs(r2.total - maxTotal) < 0.001;\r\n      const corrStr = dict.corr_text.replace('{ca}', Ca.toFixed(1)).replace('{total}', r2.total.toFixed(2));\r\n      const noteHtml = r2.note ? `<p style=\"font-size:11.5px;color:var(--ink-soft);font-style:italic;margin-top:8px;\">${dict.note_en_ad_rad}<\/p>` : '';\r\n      return `<div class=\"calc-card ${isMax ? 'calc-max' : ''}\">\r\n        ${isMax ? `<span class=\"calc-badge\">${dict.governing_crit}<\/span>` : ''}\r\n        <h3>${r2.name}<\/h3>\r\n        <div class=\"calc-value\"><span class=\"calc-num\">${r2.t.toFixed(2)}<\/span><span class=\"calc-unit\">${dict.net_unit}<\/span><\/div>\r\n        <div class=\"calc-total\">${corrStr}<\/div>\r\n        ${noteHtml}\r\n      <\/div>`;\r\n    }).join('');\r\n  }\r\n\r\n  klopperIds.forEach(id => {\r\n    document.getElementById(id)?.addEventListener('input', calcKlopper);\r\n  });\r\n\r\n  \/* ---------- PED Calculator Logic ---------- *\/\r\n  const PED_TABLES = {\r\n    vessel: {\r\n      gas: {\r\n        1: { table:'1', tKey:'t1', entry: (ps,v)=> v>1 && (ps*v>25 || ps>200), tiers:[50,200,1000], maxCat:'IV', unstableBump:true },\r\n        2: { table:'2', tKey:'t2', entry: (ps,v)=> v>1 && (ps*v>50 || ps>1000), tiers:[200,1000,10000], maxCat:'IV', unstableBump:false },\r\n      },\r\n      liquid: {\r\n        1: { table:'3', tKey:'t3', entry: (ps,v)=> v>1 && (ps*v>200 || ps>500), tiers:[1000,2000], maxCat:'III', unstableBump:false },\r\n        2: { table:'4', tKey:'t4', entry: (ps,v)=> ps>10 && (ps*v>10000 || ps>1000), tiers:[100000], maxCat:'III', unstableBump:false },\r\n      }\r\n    },\r\n    piping: {\r\n      gas: {\r\n        1: { table:'6', tKey:'t6', entry: (ps,dn)=> dn>25, tiers:[1000,3500], maxCat:'III', unstableBump:true },\r\n        2: { table:'7', tKey:'t7', entry: (ps,dn)=> dn>32 && ps*dn>1000, tiers:[3500,5000], maxCat:'III', unstableBump:false },\r\n      },\r\n      liquid: {\r\n        1: { table:'8', tKey:'t8', entry: (ps,dn)=> dn>25 && ps*dn>2000, tiers:[5000,10000], maxCat:'III', unstableBump:false },\r\n        2: { table:'9', tKey:'t9', entry: (ps,dn)=> ps>10 && dn>200 && ps*dn>5000, tiers:[50000], maxCat:'III', unstableBump:false },\r\n      }\r\n    }\r\n  };\r\n\r\n  const CAT_ORDER = ['SEP','I','II','III','IV'];\r\n\r\n  function categoryFromProduct(product, tiers, maxCat) {\r\n    const maxIdx = CAT_ORDER.indexOf(maxCat);\r\n    const usableTiers = tiers.slice(0, maxIdx);\r\n    for (let i = 0; i < usableTiers.length; i++) {\r\n      if (product <= usableTiers[i]) return CAT_ORDER[i+1];\r\n    }\r\n    return maxCat;\r\n  }\r\n\r\n  function calcPed() {\r\n    const type = document.getElementById('p-type').value;\r\n    const state = document.getElementById('p-state').value;\r\n    const group = parseInt(document.getElementById('p-group').value, 10);\r\n    const ps = parseFloat(document.getElementById('p-ps').value);\r\n    const v = parseFloat(document.getElementById('p-v').value);\r\n    const dn = parseFloat(document.getElementById('p-dn').value);\r\n    const pedResults = document.getElementById('ped-results');\r\n    if (!pedResults) return;\r\n\r\n    const dict = I18N[currentLang];\r\n\r\n    document.getElementById('p-vfield').style.display = type === 'vessel' ? 'flex' : 'none';\r\n    document.getElementById('p-dnfield').style.display = type === 'piping' ? 'flex' : 'none';\r\n\r\n    if (isNaN(ps) || ps < 0) {\r\n      pedResults.innerHTML = `<p class=\"calc-error\">${dict.err_press}<\/p>`;\r\n      return;\r\n    }\r\n\r\n    if (ps <= 0.5) {\r\n      pedResults.innerHTML = `<div class=\"ped-card\"><p style=\"margin:0;\">${dict.ped_excl}<\/p><\/div>`;\r\n      return;\r\n    }\r\n\r\n    const sizeVal = type === 'vessel' ? v : dn;\r\n    if (isNaN(sizeVal) || sizeVal < 0) {\r\n      pedResults.innerHTML = `<p class=\"calc-error\">${dict.err_size}<\/p>`;\r\n      return;\r\n    }\r\n\r\n    const def = PED_TABLES[type][state][group];\r\n    const withinTable = def.entry(ps, sizeVal);\r\n    const product = ps * sizeVal;\r\n\r\n    let category;\r\n\r\n    if (!withinTable) {\r\n      category = 'SEP';\r\n    } else {\r\n      category = categoryFromProduct(product, def.tiers, def.maxCat);\r\n    }\r\n\r\n    const catClass = category === 'SEP' ? 'cat-sep' : `cat-${category}`;\r\n    const catLabel = category === 'SEP' ? '4.3' : category;\r\n    const tableTitle = dict.ped_tables[def.tKey];\r\n    const catHeader = category === 'SEP' ? dict.sep_title : dict.cat_title + category;\r\n    const modProc = dict.ped_mods[category];\r\n\r\n    pedResults.innerHTML = `\r\n      <div class=\"ped-card\">\r\n        <div class=\"ped-row\">\r\n          <div class=\"ped-cat ${catClass}\">${catLabel}<\/div>\r\n          <div class=\"ped-details\">\r\n            <h3>${catHeader}<\/h3>\r\n            <p>${tableTitle}<\/p>\r\n            <div class=\"ped-modules\">${dict.ped_mod_label}${modProc}<\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>`;\r\n  }\r\n\r\n  ['p-type','p-state','p-group','p-ps','p-v','p-dn'].forEach(id => {\r\n    document.getElementById(id)?.addEventListener('input', calcPed);\r\n  });\r\n\r\n  \/* ---------- Section Toggle Script ---------- *\/\r\n  const reduceMotion = () => window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n\r\n  document.querySelectorAll('[data-calc-toggle]').forEach(link => {\r\n    link.addEventListener('click', (e) => {\r\n      e.preventDefault();\r\n      const id = link.dataset.calcToggle;\r\n      const section = document.getElementById(id);\r\n      if (!section) return;\r\n      section.style.display = 'block';\r\n      section.scrollIntoView({ behavior: reduceMotion() ? 'auto' : 'smooth', block: 'start' });\r\n    });\r\n  });\r\n\r\n  document.querySelectorAll('[data-calc-close]').forEach(link => {\r\n    link.addEventListener('click', (e) => {\r\n      e.preventDefault();\r\n      const id = link.dataset.calcClose;\r\n      const section = document.getElementById(id);\r\n      if (!section) return;\r\n      section.style.display = 'none';\r\n      document.getElementById('herramientas').scrollIntoView({ behavior: reduceMotion() ? 'auto' : 'smooth', block: 'start' });\r\n    });\r\n  });\r\n\r\n  \/* ---------- Inicializaci\u00f3n ---------- *\/\r\n  autoDetectLanguage();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-43eaa88 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"43eaa88\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-f456c3a\" data-id=\"f456c3a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-43fe83e elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"43fe83e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d7da5cc elementor-widget elementor-widget-heading\" data-id=\"d7da5cc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">OTROS PROYECTOS\n<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-17b8690 elementor-hidden-mobile\" data-id=\"17b8690\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-ad927ba elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"ad927ba\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4944471\" data-id=\"4944471\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-fe28c43 premium-blog-align-left elementor-widget elementor-widget-premium-addon-blog\" data-id=\"fe28c43\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;premium_blog_columns_number&quot;:&quot;33.33%&quot;,&quot;force_height&quot;:&quot;true&quot;,&quot;premium_blog_grid&quot;:&quot;yes&quot;,&quot;premium_blog_layout&quot;:&quot;even&quot;,&quot;premium_blog_columns_number_tablet&quot;:&quot;50%&quot;,&quot;premium_blog_columns_number_mobile&quot;:&quot;100%&quot;}\" data-widget_type=\"premium-addon-blog.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t\n\n\t\t\t\t<div class=\"premium-blog-wrap  premium-blog-even\" data-page=\"3743\">\n\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-post-outer-container\" data-total=\"1\">\n\t\t\t<div class=\"premium-blog-post-container premium-blog-skin-classic\">\n\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-thumb-effect-wrapper\">\n\t\t\t\t\t\t<div class=\"premium-blog-thumbnail-container premium-blog-bright-effect\">\n\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1627\" height=\"1053\" src=\"https:\/\/perdigoeng.com\/wp-content\/uploads\/2024\/03\/Sub-model-stress-II.png\" class=\"attachment-full size-full wp-image-2142\" alt=\"\" srcset=\"https:\/\/perdigoeng.com\/wp-content\/uploads\/2024\/03\/Sub-model-stress-II.png 1627w, https:\/\/perdigoeng.com\/wp-content\/uploads\/2024\/03\/Sub-model-stress-II-300x194.png 300w, https:\/\/perdigoeng.com\/wp-content\/uploads\/2024\/03\/Sub-model-stress-II-1024x663.png 1024w, https:\/\/perdigoeng.com\/wp-content\/uploads\/2024\/03\/Sub-model-stress-II-768x497.png 768w, https:\/\/perdigoeng.com\/wp-content\/uploads\/2024\/03\/Sub-model-stress-II-1536x994.png 1536w\" sizes=\"(max-width: 1627px) 100vw, 1627px\" \/>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-thumbnail-overlay\">\n\t\t\t\t\t\t\t\t<a class=\"elementor-icon\" href=\"https:\/\/perdigoeng.com\/es\/astra-portfolio\/verificacion-del-diseno-para-el-mercado-de-ee-uu-brida-para-autoclave\/\" target=\"_self\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-screen-only\">Dise\u00f1o de brida para tapa r\u00e1pida de autoclave<\/span>\n\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-content-wrapper \">\n\n\t\t\t\t\t<div class=\"premium-blog-inner-container\">\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h2 class=\"premium-blog-entry-title\">\n\t\t\t<a href=\"https:\/\/perdigoeng.com\/es\/astra-portfolio\/verificacion-del-diseno-para-el-mercado-de-ee-uu-brida-para-autoclave\/\" target=\"_self\">\n\t\t\t\tDise\u00f1o de brida para tapa r\u00e1pida de autoclave\t\t\t<\/a>\n\t\t<\/h2>\n\t\t\t\t<div class=\"premium-blog-entry-meta\">\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\t<\/div>\n\t\t\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\n\t\t\t\t<div class=\"premium-blog-post-outer-container\" data-total=\"1\">\n\t\t\t<div class=\"premium-blog-post-container premium-blog-skin-classic\">\n\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-thumb-effect-wrapper\">\n\t\t\t\t\t\t<div class=\"premium-blog-thumbnail-container premium-blog-bright-effect\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"602\" height=\"395\" src=\"https:\/\/perdigoeng.com\/wp-content\/uploads\/2024\/03\/Fondo-conico-1.png\" class=\"attachment-full size-full wp-image-2158\" alt=\"\" srcset=\"https:\/\/perdigoeng.com\/wp-content\/uploads\/2024\/03\/Fondo-conico-1.png 602w, https:\/\/perdigoeng.com\/wp-content\/uploads\/2024\/03\/Fondo-conico-1-300x197.png 300w\" sizes=\"(max-width: 602px) 100vw, 602px\" \/>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-thumbnail-overlay\">\n\t\t\t\t\t\t\t\t<a class=\"elementor-icon\" href=\"https:\/\/perdigoeng.com\/es\/astra-portfolio\/optimizacion-de-grosor-fondo-conico\/\" target=\"_self\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-screen-only\">Optimizaci\u00f3n de espesor: Fondo c\u00f3nico<\/span>\n\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"premium-blog-content-wrapper \">\n\n\t\t\t\t\t<div class=\"premium-blog-inner-container\">\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h2 class=\"premium-blog-entry-title\">\n\t\t\t<a href=\"https:\/\/perdigoeng.com\/es\/astra-portfolio\/optimizacion-de-grosor-fondo-conico\/\" target=\"_self\">\n\t\t\t\tOptimizaci\u00f3n de espesor: Fondo c\u00f3nico\t\t\t<\/a>\n\t\t<\/h2>\n\t\t\t\t<div class=\"premium-blog-entry-meta\">\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\t<\/div>\n\t\t\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\n\t\t\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9f20653 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"9f20653\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-67ad3cf\" data-id=\"67ad3cf\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-65f68a8 elementor-widget elementor-widget-spacer\" data-id=\"65f68a8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-5c08cbb6 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"5c08cbb6\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-75812fba\" data-id=\"75812fba\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-6dbc152c elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"6dbc152c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-485d0cda elementor-widget elementor-widget-heading\" data-id=\"485d0cda\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Contacta con nosotros para<br \/>Soluciones en ingenier\u00eda de equipos a presi\u00f3n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4f6b27b9 elementor-widget elementor-widget-text-editor\" data-id=\"4f6b27b9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3><strong>Env\u00edanos un correo electr\u00f3nico para consultas sobre ingenier\u00eda de equipos a presi\u00f3n<\/strong><\/h3>\n<p>To learn more about how we can assist you in your project, <strong>send us an email.<\/strong> We are here to provide you with the best&nbsp;<span style=\"color: var( --e-global-color-astglobalcolor5 );\">engineering<\/span><span style=\"font-style: inherit; font-weight: inherit; color: var( --e-global-color-astglobalcolor5 );\">&nbsp;advice and services.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-top-column elementor-element elementor-element-7f5e2076\" data-id=\"7f5e2076\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-b3c4427 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b3c4427\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-564119ce\" data-id=\"564119ce\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7e5e3beb elementor-button-align-end elementor-widget elementor-widget-form\" data-id=\"7e5e3beb\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;step_next_label&quot;:&quot;Siguiente&quot;,&quot;step_previous_label&quot;:&quot;Anterior&quot;,&quot;button_width&quot;:&quot;100&quot;,&quot;step_type&quot;:&quot;number_text&quot;,&quot;step_icon_shape&quot;:&quot;circle&quot;}\" data-widget_type=\"form.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<form class=\"elementor-form\" method=\"post\" name=\"Nuevo formulario\">\n\t\t\t<input type=\"hidden\" name=\"post_id\" value=\"3743\"\/>\n\t\t\t<input type=\"hidden\" name=\"form_id\" value=\"7e5e3beb\"\/>\n\t\t\t<input type=\"hidden\" name=\"referer_title\" value=\"Herramientas Gratuitas\" \/>\n\n\t\t\t\t\t\t\t<input type=\"hidden\" name=\"queried_id\" value=\"3743\"\/>\n\t\t\t\n\t\t\t<div class=\"elementor-form-fields-wrapper elementor-labels-\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-text elementor-field-group elementor-column elementor-field-group-name elementor-col-100 elementor-field-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-name\" class=\"elementor-field-label elementor-screen-only\">\n\t\t\t\t\t\t\t\tNombre\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"text\" name=\"form_fields[name]\" id=\"form-field-name\" class=\"elementor-field elementor-size-sm  elementor-field-textual\" placeholder=\"Nombre\" required=\"required\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-text elementor-field-group elementor-column elementor-field-group-field_ff6781c elementor-col-100 elementor-field-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-field_ff6781c\" class=\"elementor-field-label elementor-screen-only\">\n\t\t\t\t\t\t\t\tNombre\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"text\" name=\"form_fields[field_ff6781c]\" id=\"form-field-field_ff6781c\" class=\"elementor-field elementor-size-sm  elementor-field-textual\" placeholder=\"Empresa\" required=\"required\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-email elementor-field-group elementor-column elementor-field-group-email elementor-col-100 elementor-field-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-email\" class=\"elementor-field-label elementor-screen-only\">\n\t\t\t\t\t\t\t\tCorreo electr\u00f3nico\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"email\" name=\"form_fields[email]\" id=\"form-field-email\" class=\"elementor-field elementor-size-sm  elementor-field-textual\" placeholder=\"Correo electr\u00f3nico\" required=\"required\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-textarea elementor-field-group elementor-column elementor-field-group-message elementor-col-100 elementor-field-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-message\" class=\"elementor-field-label elementor-screen-only\">\n\t\t\t\t\t\t\t\tMensaje\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t<textarea class=\"elementor-field-textual elementor-field  elementor-size-sm\" name=\"form_fields[message]\" id=\"form-field-message\" rows=\"4\" placeholder=\"Mensaje\" required=\"required\"><\/textarea>\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-group elementor-column elementor-field-type-submit elementor-col-100 e-form__buttons\">\n\t\t\t\t\t<button class=\"elementor-button elementor-size-md\" type=\"submit\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">ENVIAR<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/button>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/form>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>HERRAMIENTAS GRATUITAS C\u00e1lculo expr\u00e9s,sin salir del navegador M\u00f3dulos de comprobaci\u00f3n disponibles Herramientas de c\u00e1lculo r\u00e1pido para verificaciones preliminares sobre el tablero \u2014 obt\u00e9n una primera cifra contrastada en segundos. Espesor m\u00ednimo de virola Calcula y compara el espesor m\u00ednimo en cuerpo cil\u00edndrico bajo ASME VIII Div. 1 (UG-27), EN 13445-3 (cl\u00e1usula 7.4.2) y AD 2000 [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"full-width-container","site-content-style":"unboxed","site-sidebar-style":"unboxed","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"enabled","adv-header-id-meta":"","stick-header-meta":"default","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-3743","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/perdigoeng.com\/es\/wp-json\/wp\/v2\/pages\/3743","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/perdigoeng.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/perdigoeng.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/perdigoeng.com\/es\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/perdigoeng.com\/es\/wp-json\/wp\/v2\/comments?post=3743"}],"version-history":[{"count":10,"href":"https:\/\/perdigoeng.com\/es\/wp-json\/wp\/v2\/pages\/3743\/revisions"}],"predecessor-version":[{"id":3820,"href":"https:\/\/perdigoeng.com\/es\/wp-json\/wp\/v2\/pages\/3743\/revisions\/3820"}],"wp:attachment":[{"href":"https:\/\/perdigoeng.com\/es\/wp-json\/wp\/v2\/media?parent=3743"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}