{"id":12140,"date":"2026-07-12T15:15:17","date_gmt":"2026-07-12T12:15:17","guid":{"rendered":"https:\/\/altal.md\/?page_id=12140"},"modified":"2026-07-30T18:56:08","modified_gmt":"2026-07-30T15:56:08","slug":"calcul-necesar-termic","status":"publish","type":"page","link":"https:\/\/altal.md\/ru\/instrumente-hvac\/calcul-necesar-termic\/","title":{"rendered":"\u041a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440 \u0442\u0435\u043f\u043b\u043e\u043f\u043e\u0442\u0435\u0440\u044c \u0437\u0434\u0430\u043d\u0438\u0439"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"12140\" class=\"elementor elementor-12140\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4d713d74 e-flex e-con-boxed e-con e-parent\" data-id=\"4d713d74\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-cc42fba elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"cc42fba\" 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-1f42a28 elementor-widget elementor-widget-html\" data-id=\"1f42a28\" 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<!-- ================================================================ -->\r\n<!--  ALTAL Engineering Platform - HEAT LOSS CALCULATOR v4.1          -->\r\n<!--  \u041e\u0420\u0418\u0413\u0418\u041d\u0410\u041b - \u0420\u0430\u0431\u043e\u0447\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f                                       -->\r\n<!-- ================================================================ -->\r\n\r\n<style>\r\n    .altal-hl-wrapper {\r\n        max-width: 960px;\r\n        margin: 0 auto;\r\n        padding: 30px 24px;\r\n        background: #ffffff;\r\n        border-radius: 20px;\r\n        box-shadow: 0 10px 40px rgba(0,0,0,0.08);\r\n        font-family: Arial, sans-serif;\r\n        color: #1a2332;\r\n    }\r\n    .altal-hl-wrapper .step { display: none; }\r\n    .altal-hl-wrapper .step.active { display: block; }\r\n    .altal-hl-wrapper .step-dot { display: inline-block; width: 30px; height: 4px; background: #ddd; margin: 0 2px; border-radius: 4px; }\r\n    .altal-hl-wrapper .step-dot.active { background: #0057a8; }\r\n    .altal-hl-wrapper .step-dot.done { background: #34a853; }\r\n    .altal-hl-wrapper input, .altal-hl-wrapper select { width: 100%; padding: 10px 14px; border: 1px solid #ddd; border-radius: 8px; font-size: 14px; margin-top: 4px; }\r\n    .altal-hl-wrapper .row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 14px; }\r\n    .altal-hl-wrapper .field { margin-bottom: 14px; }\r\n    .altal-hl-wrapper label { font-weight: 600; font-size: 13px; display: block; margin-bottom: 3px; }\r\n    .altal-hl-wrapper .hint { font-weight: 400; color: #888; font-size: 12px; }\r\n    .altal-hl-wrapper .btn { padding: 12px 30px; border: none; border-radius: 8px; font-weight: 600; cursor: pointer; font-size: 15px; }\r\n    .altal-hl-wrapper .btn-primary { background: #0057a8; color: #fff; }\r\n    .altal-hl-wrapper .btn-primary:hover { background: #004a8f; }\r\n    .altal-hl-wrapper .btn-secondary { background: #eee; color: #333; }\r\n    .altal-hl-wrapper .btn-secondary:hover { background: #ddd; }\r\n    .altal-hl-wrapper .btn-success { background: #34a853; color: #fff; }\r\n    .altal-hl-wrapper .btn-success:hover { background: #2d9348; }\r\n    .altal-hl-wrapper .btn-success:disabled { opacity: 0.6; cursor: not-allowed; }\r\n    .altal-hl-wrapper .buttons { display: flex; justify-content: space-between; margin-top: 20px; padding-top: 16px; border-top: 1px solid #eee; }\r\n    .altal-hl-wrapper .checkbox-group { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 6px; }\r\n    .altal-hl-wrapper .checkbox-item { display: flex; align-items: center; gap: 8px; cursor: pointer; padding: 8px 18px; border: 2px solid #dce0e6; border-radius: 10px; transition: all 0.2s; background: #fafbfc; font-size: 14px; user-select: none; }\r\n    .altal-hl-wrapper .checkbox-item:hover { border-color: #0057a8; }\r\n    .altal-hl-wrapper .checkbox-item.checked { border-color: #0057a8; background: #eef4fc; }\r\n    .altal-hl-wrapper .checkbox-item input[type=\"checkbox\"] { width: 18px; height: 18px; margin: 0; accent-color: #0057a8; cursor: pointer; flex-shrink: 0; }\r\n    .altal-hl-wrapper .results-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 14px; margin: 16px 0; }\r\n    .altal-hl-wrapper .result-card { padding: 16px 20px; border-radius: 12px; border: 1px solid #e4ecf7; background: #f8faff; }\r\n    .altal-hl-wrapper .result-card .label { font-size: 11px; text-transform: uppercase; color: #888; }\r\n    .altal-hl-wrapper .result-card .value { font-size: 28px; font-weight: 700; color: #0057a8; }\r\n    .altal-hl-wrapper .result-card .value .unit { font-size: 14px; color: #888; font-weight: 400; }\r\n    .altal-hl-wrapper .result-card.highlight { background: #0057a8; border-color: #0057a8; }\r\n    .altal-hl-wrapper .result-card.highlight .label { color: rgba(255,255,255,0.7); }\r\n    .altal-hl-wrapper .result-card.highlight .value { color: #fff; }\r\n    .altal-hl-wrapper .result-card.highlight .value .unit { color: rgba(255,255,255,0.6); }\r\n    .altal-hl-wrapper .result-card.green { background: #ebf7ee; border-color: #34a853; }\r\n    .altal-hl-wrapper .result-card.green .value { color: #1e7e34; }\r\n    .altal-hl-wrapper .result-card.warning-card { background: #fff3e0; border-color: #ff9800; }\r\n    .altal-hl-wrapper .result-card.warning-card .value { color: #e65100; }\r\n    .altal-hl-wrapper .recommendations { background: #fef9f0; border: 1px solid #fde6c2; border-radius: 12px; padding: 16px 20px; margin: 16px 0; }\r\n    .altal-hl-wrapper .recommendations h4 { margin: 0 0 8px 0; color: #b45f06; }\r\n    .altal-hl-wrapper .recommendations ul { margin: 0; padding-left: 20px; }\r\n    .altal-hl-wrapper .recommendations ul li { list-style-type: \"\u2705 \"; padding-left: 6px; }\r\n    .altal-hl-wrapper .recommendations ul li.warning { list-style-type: \"\u26a0\ufe0f \"; color: #a0522d; }\r\n    .altal-hl-wrapper .result-summary { background: #f0f5ff; border-radius: 12px; padding: 16px 20px; margin: 16px 0; border: 1px solid #d4e0f0; }\r\n    .altal-hl-wrapper .result-summary table { width: 100%; border-collapse: collapse; font-size: 13px; }\r\n    .altal-hl-wrapper .result-summary td { padding: 4px 8px; border-bottom: 1px solid #e4ecf7; }\r\n    .altal-hl-wrapper .result-summary td:first-child { font-weight: 600; color: #1a2332; width: 40%; }\r\n    .altal-hl-wrapper .result-summary td:last-child { color: #555; }\r\n    .altal-hl-wrapper .field-disabled { opacity: 0.5; pointer-events: none; }\r\n    .altal-hl-wrapper .spinner { display: inline-block; width: 18px; height: 18px; border: 2px solid rgba(255,255,255,0.3); border-top-color: #fff; border-radius: 50%; animation: spin 0.6s linear infinite; vertical-align: middle; margin-right: 6px; }\r\n    @keyframes spin { to { transform: rotate(360deg); } }\r\n    .altal-hl-wrapper .note-box { background: #fff8e1; border-left: 4px solid #ff9800; padding: 10px 16px; border-radius: 4px; margin-top: 8px; font-size: 13px; color: #6d5a1a; }\r\n    .altal-hl-wrapper .alert-box { background: #ffebee; border: 2px solid #c62828; padding: 16px 20px; border-radius: 10px; margin: 12px 0; font-size: 14px; color: #b71c1c; }\r\n    .altal-hl-wrapper .alert-box strong { font-size: 16px; }\r\n    .altal-hl-wrapper .stats-grid { display: grid; grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr; gap: 12px; margin: 12px 0; }\r\n    .altal-hl-wrapper .climate-selector { background: #e8f0fe; border-radius: 12px; padding: 16px 20px; margin: 12px 0; border: 1px solid #0057a8; }\r\n    .altal-hl-wrapper .gas-month-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 8px; margin-bottom: 12px; }\r\n    .altal-hl-wrapper .gas-month-grid .month-input { width: 100%; padding: 6px; border: 1px solid #ddd; border-radius: 6px; font-size: 13px; text-align: center; }\r\n    .altal-hl-wrapper .gas-month-grid label { font-size: 11px; color: #555; text-align: center; display: block; margin-bottom: 2px; }\r\n    .altal-hl-wrapper .process-grid { display: grid; grid-template-columns: 1fr 1fr 1fr 1fr; gap: 12px; }\r\n    @media (max-width: 768px) {\r\n        .altal-hl-wrapper .results-grid { grid-template-columns: 1fr; }\r\n        .altal-hl-wrapper .stats-grid { grid-template-columns: 1fr 1fr; }\r\n        .altal-hl-wrapper .row { grid-template-columns: 1fr; }\r\n        .altal-hl-wrapper { padding: 16px 12px; margin: 20px 10px; }\r\n        .altal-hl-wrapper .gas-month-grid { grid-template-columns: repeat(4, 1fr); }\r\n        .altal-hl-wrapper .process-grid { grid-template-columns: 1fr 1fr; }\r\n    }\r\n    \r\n    \/* ===== \u041c\u041e\u0411\u0418\u041b\u042c\u041d\u0410\u042f \u0410\u0414\u0410\u041f\u0422\u0410\u0426\u0418\u042f \u0414\u041b\u042f \u0412\u042b\u0411\u041e\u0420\u0410 \u041f\u0420\u0418\u041c\u0415\u041d\u0415\u041d\u0418\u042f ===== *\/\r\n\/* ===== FIX MOBIL ===== *\/\r\n@media (max-width: 700px) {\r\n    .altal-hl-wrapper {\r\n        padding: 16px 12px !important;\r\n    }\r\n    .altal-hl-wrapper .row {\r\n        grid-template-columns: 1fr !important;\r\n        gap: 10px !important;\r\n    }\r\n    .altal-hl-wrapper .project-purpose-grid {\r\n        grid-template-columns: 1fr 1fr !important;\r\n        gap: 6px !important;\r\n    }\r\n    .altal-hl-wrapper .project-purpose-grid label {\r\n        padding: 6px 8px !important;\r\n        font-size: 11px !important;\r\n    }\r\n    .altal-hl-wrapper .project-purpose-grid label strong {\r\n        font-size: 12px !important;\r\n    }\r\n    .altal-hl-wrapper .project-purpose-grid label span {\r\n        font-size: 9px !important;\r\n    }\r\n    .altal-hl-wrapper input,\r\n    .altal-hl-wrapper select {\r\n        font-size: 13px !important;\r\n        padding: 8px 10px !important;\r\n    }\r\n    .altal-hl-wrapper .buttons {\r\n        flex-direction: column !important;\r\n        align-items: stretch !important;\r\n    }\r\n    .altal-hl-wrapper .buttons .btn {\r\n        width: 100% !important;\r\n        text-align: center !important;\r\n        margin-bottom: 6px !important;\r\n    }\r\n    .altal-hl-wrapper .field {\r\n        margin-bottom: 6px !important;\r\n    }\r\n    .altal-hl-wrapper .note-box {\r\n        font-size: 11px !important;\r\n        padding: 6px 10px !important;\r\n        margin-top: 4px !important;\r\n    }\r\n}\r\n<\/style>\r\n\r\n<div class=\"altal-hl-wrapper\">\r\n\r\n    <!-- HEADER -->\r\n    <div style=\"display:flex;align-items:center;gap:14px;padding-bottom:20px;border-bottom:2px solid #f0f2f5;margin-bottom:24px;\">\r\n        <div style=\"width:44px;height:44px;background:#0057a8;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:22px;font-weight:700;\">A<\/div>\r\n        <div>\r\n            <h2 style=\"margin:0;color:#0057a8;font-size:22px;\">ALTAL Heat Loss Calculator v4.1<\/h2>\r\n            <p style=\"margin:2px 0 0;color:#888;font-size:13px;\">Calcul termic profesional cu date climatice istorice (2016-2026)<\/p>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- PROGRESS -->\r\n    <div id=\"hlProgress\" style=\"display:flex;gap:4px;margin-bottom:24px;flex-wrap:wrap;\">\r\n        <div class=\"step-dot active\" data-step=\"1\"><\/div>\r\n        <div class=\"step-dot\" data-step=\"2\"><\/div>\r\n        <div class=\"step-dot\" data-step=\"3\"><\/div>\r\n        <div class=\"step-dot\" data-step=\"4\"><\/div>\r\n    <\/div>\r\n\r\n<!-- STEP 1 -->\r\n<div class=\"step active\" data-step=\"1\">\r\n    <h3 style=\"font-size:18px; margin-bottom:16px;\">\ud83d\udccd Loca\u021bie, clim\u0103 \u0219i confort interior<\/h3>\r\n\r\n    <!-- ===== \u0412\u042b\u0411\u041e\u0420 \u041f\u0420\u0418\u041c\u0415\u041d\u0415\u041d\u0418\u042f ===== -->\r\n    <div style=\"background: #e8f0fe; border-radius: 10px; padding: 14px 16px; margin-bottom: 16px; border: 2px solid #0057a8;\">\r\n        <label style=\"font-weight: 600; font-size: 14px; color: #0057a8; display: block; margin-bottom: 8px;\">\ud83c\udfaf Selecta\u021bi scopul proiectului:<\/label>\r\n        <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 6px;\">\r\n            <label style=\"display: flex; align-items: center; gap: 6px; padding: 6px 10px; background: #fff; border-radius: 6px; border: 2px solid #dce0e6; cursor: pointer; font-size:12px;\">\r\n                <input type=\"radio\" name=\"project_purpose\" value=\"private\" checked style=\"width:14px; height:14px; margin:0; flex-shrink:0;\"> \r\n                <span><strong style=\"font-size:12px;\">Reziden\u021bial privat<\/strong><br><span style=\"font-size:10px;color:#888;\">Case, vile<\/span><\/span>\r\n            <\/label>\r\n            <label style=\"display: flex; align-items: center; gap: 6px; padding: 6px 10px; background: #fff; border-radius: 6px; border: 2px solid #dce0e6; cursor: pointer; font-size:12px;\">\r\n                <input type=\"radio\" name=\"project_purpose\" value=\"multi\" style=\"width:14px; height:14px; margin:0; flex-shrink:0;\"> \r\n                <span><strong style=\"font-size:12px;\">Reziden\u021bial multietajat<\/strong><br><span style=\"font-size:10px;color:#888;\">Blocuri<\/span><\/span>\r\n            <\/label>\r\n            <label style=\"display: flex; align-items: center; gap: 6px; padding: 6px 10px; background: #fff; border-radius: 6px; border: 2px solid #dce0e6; cursor: pointer; font-size:12px;\">\r\n                <input type=\"radio\" name=\"project_purpose\" value=\"industrial\" style=\"width:14px; height:14px; margin:0; flex-shrink:0;\"> \r\n                <span><strong style=\"font-size:12px;\">Industrial \/ Comercial<\/strong><br><span style=\"font-size:10px;color:#888;\">Fabrici, depozite<\/span><\/span>\r\n            <\/label>\r\n            <label style=\"display: flex; align-items: center; gap: 6px; padding: 6px 10px; background: #fff; border-radius: 6px; border: 2px solid #dce0e6; cursor: pointer; font-size:12px;\">\r\n                <input type=\"radio\" name=\"project_purpose\" value=\"process\" style=\"width:14px; height:14px; margin:0; flex-shrink:0;\"> \r\n                <span><strong style=\"font-size:12px;\">Apa tehnologic\u0103<\/strong><br><span style=\"font-size:10px;color:#888;\">Produc\u021bie<\/span><\/span>\r\n            <\/label>\r\n        <\/div>\r\n        <div id=\"processWarning\" style=\"display:none; margin-top:8px; padding:8px 12px; background:#fff3cd; border:1px solid #ffc107; border-radius:6px; font-size:12px; color:#856404;\">\r\n            \u26a0\ufe0f Pentru <strong>Apa tehnologic\u0103 \/ Abur<\/strong>, ve\u021bi putea introduce parametrii specifici pe ultimul pas.\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- ===== \u0421\u0422\u0420\u0410\u041d\u0410 \u0418 \u0413\u041e\u0420\u041e\u0414 \u0412 \u041e\u0414\u041d\u0423 \u0421\u0422\u0420\u041e\u041a\u0423 ===== -->\r\n    <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom:12px;\">\r\n        <div class=\"field\">\r\n            <label style=\"font-weight:600; font-size:12px; display:block; margin-bottom:2px;\">\u021aara *<\/label>\r\n            <select id=\"hlCountry\" onchange=\"hlUpdateCities()\" style=\"width:100%; padding:8px 10px; border:1px solid #ddd; border-radius:6px; font-size:13px;\">\r\n                <option value=\"MD\">Moldova<\/option>\r\n                <option value=\"RO\">Rom\u00e2nia<\/option>\r\n                <option value=\"UA\">Ucraina<\/option>\r\n            <\/select>\r\n        <\/div>\r\n        <div class=\"field\">\r\n            <label style=\"font-weight:600; font-size:12px; display:block; margin-bottom:2px;\">Ora\u0219ul *<\/label>\r\n            <select id=\"hlCity\" onchange=\"hlUpdateTemperatures()\" style=\"width:100%; padding:8px 10px; border:1px solid #ddd; border-radius:6px; font-size:13px;\"><\/select>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- ===== \u0422\u0415\u041c\u041f\u0415\u0420\u0410\u0422\u0423\u0420\u042b ===== -->\r\n    <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom:12px;\">\r\n        <div class=\"field\">\r\n            <label style=\"font-weight:600; font-size:12px; display:block; margin-bottom:2px;\">Temperatur\u0103 exterioar\u0103 iarn\u0103 * <span style=\"color:#888;font-weight:400;\">\u00b0C<\/span><\/label>\r\n            <input type=\"number\" id=\"hlWinterTemp\" value=\"-15\" min=\"-35\" max=\"10\" step=\"0.5\" style=\"width:100%; padding:8px 10px; border:1px solid #ddd; border-radius:6px; font-size:13px;\">\r\n        <\/div>\r\n        <div class=\"field\">\r\n            <label style=\"font-weight:600; font-size:12px; display:block; margin-bottom:2px;\">Temperatur\u0103 exterioar\u0103 var\u0103 * <span style=\"color:#888;font-weight:400;\">\u00b0C<\/span><\/label>\r\n            <input type=\"number\" id=\"hlSummerTemp\" value=\"32\" min=\"20\" max=\"45\" step=\"0.5\" style=\"width:100%; padding:8px 10px; border:1px solid #ddd; border-radius:6px; font-size:13px;\">\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- ===== \u0422\u0415\u041c\u041f\u0415\u0420\u0410\u0422\u0423\u0420\u042b \u0412\u041d\u0423\u0422\u0420\u0418 ===== -->\r\n    <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom:12px;\">\r\n        <div class=\"field\">\r\n            <label style=\"font-weight:600; font-size:12px; display:block; margin-bottom:2px;\">Temperatur\u0103 interioar\u0103 iarn\u0103 * <span style=\"color:#888;font-weight:400;\">\u00b0C<\/span><\/label>\r\n            <input type=\"number\" id=\"hlInteriorWinter\" value=\"22\" min=\"8\" max=\"35\" step=\"0.5\" style=\"width:100%; padding:8px 10px; border:1px solid #ddd; border-radius:6px; font-size:13px;\">\r\n            <div style=\"font-size:10px;color:#888;margin-top:2px;\">\ud83d\udca1 Recomandat: 20-22\u00b0C<\/div>\r\n        <\/div>\r\n        <div class=\"field\">\r\n            <label style=\"font-weight:600; font-size:12px; display:block; margin-bottom:2px;\">Temperatur\u0103 interioar\u0103 var\u0103 * <span style=\"color:#888;font-weight:400;\">\u00b0C<\/span><\/label>\r\n            <input type=\"number\" id=\"hlInteriorSummer\" value=\"24\" min=\"16\" max=\"38\" step=\"0.5\" style=\"width:100%; padding:8px 10px; border:1px solid #ddd; border-radius:6px; font-size:13px;\">\r\n            <div style=\"font-size:10px;color:#888;margin-top:2px;\">\ud83d\udca1 Recomandat: 24-26\u00b0C<\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"buttons\" style=\"display:flex; justify-content:flex-end; margin-top:16px; padding-top:12px; border-top:1px solid #eee;\">\r\n        <button class=\"btn btn-primary\" onclick=\"hlNextStep(2)\" style=\"padding:10px 28px; border:none; border-radius:6px; font-weight:600; cursor:pointer; font-size:14px; background:#0057a8; color:#fff;\">Pasul 2 \u2192<\/button>\r\n    <\/div>\r\n<\/div>\r\n\r\n    <!-- STEP 2 -->\r\n    <div class=\"step\" data-step=\"2\">\r\n        <h3>\ud83c\udfd7\ufe0f Tipul \u0219i destina\u021bia cl\u0103dirii<\/h3>\r\n        <div class=\"row\">\r\n            <div class=\"field\"><label>Categoria cl\u0103dirii *<\/label>\r\n<select id=\"hlBuildingType\">\r\n    <option value=\"Vil\u0103\">Vil\u0103<\/option>\r\n    <option value=\"Cas\u0103 privat\u0103\">Cas\u0103 privat\u0103<\/option>\r\n    <option value=\"Bloc locuin\u021be\">Bloc locuin\u021be<\/option>\r\n    <option value=\"Hotel\">Hotel<\/option>\r\n    <option value=\"Pensiune\">Pensiune<\/option>\r\n    <option value=\"Oficiu\">Oficiu \/ Cl\u0103dire administrativ\u0103<\/option>\r\n    <option value=\"Industrial\u0103 tehnic\u0103\">Industrial\u0103 tehnic\u0103<\/option>\r\n    <option value=\"Industrie alimentar\u0103\">Industrie alimentar\u0103<\/option>\r\n    <option value=\"Industrie chimic\u0103\">Industrie chimic\u0103<\/option>\r\n    <option value=\"Depozit\">Depozit \/ Logistic\u0103<\/option>\r\n    <option value=\"Seral\u0103\">Seral\u0103 \/ Complex agricol<\/option>\r\n    <option value=\"Festivit\u0103\u021bi\">Festivit\u0103\u021bi (sal\u0103 evenimente)<\/option>\r\n    <option value=\"Piscina\">Piscina<\/option>\r\n    <option value=\"Ferm\u0103 agricol\u0103\">Ferm\u0103 agricol\u0103<\/option>\r\n    <option value=\"Altele\">Altele<\/option>\r\n<\/select>\r\n            <\/div>\r\n            <div class=\"field\"><label>Num\u0103r de persoane <span class=\"hint\">(1-3000)<\/span><\/label>\r\n                <input type=\"number\" id=\"hlResidentsCount\" value=\"4\" min=\"1\" max=\"3000\" step=\"1\">\r\n            <\/div>\r\n        <\/div>\r\n        <div class=\"buttons\"><button class=\"btn btn-secondary\" onclick=\"hlPrevStep(1)\">\u2190 \u00cenapoi<\/button><button class=\"btn btn-primary\" onclick=\"hlNextStep(3)\">Pasul 3 \u2192<\/button><\/div>\r\n    <\/div>\r\n\r\n    <!-- STEP 3 -->\r\n    <div class=\"step\" data-step=\"3\">\r\n        <h3>\ud83d\udcd0 Datele constructive ale cl\u0103dirii<\/h3>\r\n        <div class=\"row\">\r\n            <div class=\"field\"><label>Suprafa\u021ba util\u0103 * <span class=\"hint\">m\u00b2<\/span><\/label>\r\n                <input type=\"number\" id=\"hlArea\" value=\"150\" min=\"10\" max=\"100000\">\r\n            <\/div>\r\n            <div class=\"field\"><label>\u00cen\u0103l\u021bimea medie * <span class=\"hint\">m<\/span><\/label>\r\n                <input type=\"number\" id=\"hlHeight\" value=\"2.75\" min=\"2.4\" max=\"12\" step=\"0.05\">\r\n            <\/div>\r\n        <\/div>\r\n        <div class=\"row\">\r\n            <div class=\"field\"><label>Volum <span class=\"hint\">m\u00b3 (automat)<\/span><\/label>\r\n                <input type=\"number\" id=\"hlVolume\" readonly style=\"background:#f0f2f5;cursor:not-allowed;\">\r\n            <\/div>\r\n            <div class=\"field\"><label>Num\u0103r de etaje *<\/label>\r\n                <select id=\"hlFloors\">\r\n                    <option value=\"1\">1<\/option><option value=\"2\" selected>2<\/option><option value=\"3\">3<\/option>\r\n                    <option value=\"4\">4<\/option><option value=\"5\">5<\/option><option value=\"6\">6<\/option>\r\n                    <option value=\"7\">7<\/option><option value=\"8\">8<\/option><option value=\"9\">9<\/option>\r\n                    <option value=\"10\">10<\/option><option value=\"11\">11<\/option><option value=\"12\">12<\/option>\r\n                    <option value=\"13\">13<\/option><option value=\"14\">14<\/option><option value=\"15\">15<\/option>\r\n                    <option value=\"16\">16<\/option><option value=\"17\">17<\/option><option value=\"18\">18<\/option>\r\n                    <option value=\"19\">19<\/option><option value=\"20\">20<\/option><option value=\"21\">21<\/option>\r\n                <\/select>\r\n            <\/div>\r\n        <\/div>\r\n        <div class=\"row\">\r\n            <div class=\"field\"><label>Material pere\u021bi exteriori *<\/label>\r\n                <select id=\"hlWallMaterial\">\r\n                    <option value=\"C\u0103r\u0103mid\u0103\">C\u0103r\u0103mid\u0103 plin\u0103 (\u03bb=0.5)<\/option>\r\n                    <option value=\"BCA\" selected>BCA (\u03bb=0.3)<\/option>\r\n                    <option value=\"Lemn\">Lemn (\u03bb=0.6)<\/option>\r\n                    <option value=\"P+\">P+ (\u03bb=0.15)<\/option>\r\n                    <option value=\"Cotile\u021b\">Cotile\u021b \/ Calcar (\u03bb=0.6)<\/option>\r\n                    <option value=\"Sandwich\">Sandwich panel (\u03bb=0.04)<\/option>\r\n                    <option value=\"Gazobeton\">Gazobeton (\u03bb=0.2)<\/option>\r\n                    <option value=\"Silicat\">C\u0103r\u0103mid\u0103 silicat\u0103 (\u03bb=0.6)<\/option>\r\n                    <option value=\"Beton\">Beton armat (\u03bb=1.5)<\/option>\r\n                <\/select>\r\n            <\/div>\r\n            <div class=\"field\"><label>Grosime pere\u021bi exteriori * <span class=\"hint\">mm<\/span><\/label>\r\n                <input type=\"number\" id=\"hlWallThickness\" value=\"400\" min=\"50\" max=\"2000\" step=\"10\">\r\n            <\/div>\r\n        <\/div>\r\n        <div class=\"row\">\r\n            <div class=\"field\"><label>Izola\u021bie termic\u0103 pere\u021bi *<\/label>\r\n                <select id=\"hlWallInsulation\">\r\n                    <option value=\"F\u0103r\u0103\">F\u0103r\u0103 izola\u021bie<\/option>\r\n                    <option value=\"Spum\u0103 5cm\">Spum\u0103 polistiren 5cm<\/option>\r\n                    <option value=\"Spum\u0103 10cm\" selected>Spum\u0103 polistiren 10cm<\/option>\r\n                    <option value=\"Spum\u0103 15cm\">Spum\u0103 polistiren 15cm<\/option>\r\n                    <option value=\"Spum\u0103 20cm\">Spum\u0103 polistiren 20cm<\/option>\r\n                    <option value=\"Spum\u0103 30cm\">Spum\u0103 polistiren 30cm<\/option>\r\n                    <option value=\"Vat\u0103 5cm\">Vat\u0103 mineral\u0103 5cm<\/option>\r\n                    <option value=\"Vat\u0103 10cm\">Vat\u0103 mineral\u0103 10cm<\/option>\r\n                    <option value=\"Vat\u0103 15cm\">Vat\u0103 mineral\u0103 15cm<\/option>\r\n                    <option value=\"Vat\u0103 20cm\">Vat\u0103 mineral\u0103 20cm<\/option>\r\n                    <option value=\"Vat\u0103 30cm\">Vat\u0103 mineral\u0103 30cm<\/option>\r\n                    <option value=\"Poliuretan 5cm\">Poliuretan 5cm<\/option>\r\n                    <option value=\"Poliuretan 10cm\">Poliuretan 10cm<\/option>\r\n                    <option value=\"Poliuretan 15cm\">Poliuretan 15cm<\/option>\r\n                    <option value=\"Ventilat 5cm\">Fa\u021bad\u0103 ventilat\u0103 5cm<\/option>\r\n                    <option value=\"Ventilat 10cm\">Fa\u021bad\u0103 ventilat\u0103 10cm<\/option>\r\n                    <option value=\"Ventilat 15cm\">Fa\u021bad\u0103 ventilat\u0103 15cm<\/option>\r\n                    <option value=\"Ventilat 20cm\">Fa\u021bad\u0103 ventilat\u0103 20cm<\/option>\r\n                <\/select>\r\n            <\/div>\r\n            <div class=\"field\"><label>Tip ferestre *<\/label>\r\n                <select id=\"hlWindowType\">\r\n                    <option value=\"Sticl\u0103 simpl\u0103\">Sticl\u0103 simpl\u0103 (U=5.0)<\/option>\r\n                    <option value=\"Termopan 2cam\" selected>Termopan 2 camere (U=1.6)<\/option>\r\n                    <option value=\"Termopan 3cam\">Termopan 3 camere (U=0.9)<\/option>\r\n                    <option value=\"Termopan 3cam Low-E\">Termopan 3 camere Low-E (U=0.6)<\/option>\r\n                <\/select>\r\n            <\/div>\r\n        <\/div>\r\n        <div class=\"row\">\r\n            <div class=\"field\"><label>Aria total\u0103 a ferestrelor * <span class=\"hint\">m\u00b2<\/span><\/label>\r\n                <input type=\"number\" id=\"hlWindowArea\" value=\"22.5\" min=\"0\" max=\"5000\" step=\"0.5\">\r\n            <\/div>\r\n            <div class=\"field\"><label>Izola\u021bia acoperi\u0219ului *<\/label>\r\n                <select id=\"hlRoofInsulation\">\r\n                    <option value=\"F\u0103r\u0103\">F\u0103r\u0103 izola\u021bie (U=2.0)<\/option>\r\n                    <option value=\"Spum\u0103 10cm\" selected>Spum\u0103 10cm (U=0.4)<\/option>\r\n                    <option value=\"Spum\u0103 20cm\">Spum\u0103 20cm (U=0.2)<\/option>\r\n                    <option value=\"Spum\u0103 30cm\">Spum\u0103 30cm (U=0.13)<\/option>\r\n                    <option value=\"Vat\u0103 10cm\">Vat\u0103 mineral\u0103 10cm (U=0.35)<\/option>\r\n                    <option value=\"Vat\u0103 20cm\">Vat\u0103 mineral\u0103 20cm (U=0.18)<\/option>\r\n                    <option value=\"Vat\u0103 30cm\">Vat\u0103 mineral\u0103 30cm (U=0.12)<\/option>\r\n                    <option value=\"Poliuretan 5cm\">Poliuretan 5cm (U=0.3)<\/option>\r\n                    <option value=\"Poliuretan 10cm\">Poliuretan 10cm (U=0.15)<\/option>\r\n                    <option value=\"Poliuretan 15cm\">Poliuretan 15cm (U=0.1)<\/option>\r\n                    <option value=\"L\u00e2n\u0103 15cm\">L\u00e2n\u0103 de oaie 15cm (U=0.25)<\/option>\r\n                <\/select>\r\n            <\/div>\r\n        <\/div>\r\n        <div class=\"buttons\"><button class=\"btn btn-secondary\" onclick=\"hlPrevStep(2)\">\u2190 \u00cenapoi<\/button><button class=\"btn btn-primary\" onclick=\"hlNextStep(4)\">Pasul 4 \u2192<\/button><\/div>\r\n    <\/div>\r\n\r\n    <!-- STEP 4: Rezultate -->\r\n    <div class=\"step\" data-step=\"4\">\r\n\r\n        <!-- ===== \u0412\u0418\u0414 \u0414\u041b\u042f \u0422\u0415\u0425\u041d\u041e\u041b\u041e\u0413\u0418\u0427\u0415\u0421\u041a\u041e\u0419 \u0412\u041e\u0414\u042b ===== -->\r\n        <div id=\"processView\" style=\"display:none;\">\r\n            <h3>\ud83d\udca7 Calcul pentru ap\u0103 tehnologic\u0103 \/ abur<\/h3>\r\n\r\n            <div style=\"background: #f0f7ff; border: 2px solid #0057a8; border-radius: 12px; padding: 16px 20px; margin: 16px 0;\">\r\n                <div class=\"process-grid\">\r\n                    <div>\r\n                        <label style=\"font-size: 13px; font-weight: 500;\">Tip mediu<\/label>\r\n                        <select id=\"hlProcessType\" style=\"width:100%; padding:8px 12px; border:1px solid #ddd; border-radius:8px;\">\r\n                            <option value=\"water\">Ap\u0103 tehnologic\u0103<\/option>\r\n                            <option value=\"steam\">Abur tehnologic<\/option>\r\n                        <\/select>\r\n                    <\/div>\r\n                    <div>\r\n                        <label style=\"font-size: 13px; font-weight: 500;\">Temperatura la intrare<\/label>\r\n                        <input type=\"number\" id=\"hlProcessInlet\" value=\"20\" step=\"1\" style=\"width:100%; padding:8px 12px; border:1px solid #ddd; border-radius:8px;\">\r\n                        <div style=\"font-size:11px; color:#888;\">\u00b0C<\/div>\r\n                    <\/div>\r\n                    <div>\r\n                        <label style=\"font-size: 13px; font-weight: 500;\">Temperatura necesar\u0103 la ie\u0219ire<\/label>\r\n                        <select id=\"hlProcessOutlet\" style=\"width:100%; padding:8px 12px; border:1px solid #ddd; border-radius:8px;\">\r\n                            <option value=\"95\">95\u00b0C (ap\u0103)<\/option>\r\n                            <option value=\"120\">120\u00b0C (ap\u0103 \/ abur la 2 bar)<\/option>\r\n                            <option value=\"135\">135\u00b0C (abur la 2 bar)<\/option>\r\n                        <\/select>\r\n                        <div style=\"font-size:11px; color:#c62828; font-weight:500;\" id=\"hlProcessOutletNote\">\u26a0\ufe0f Pentru abur, utiliza\u021bi 135\u00b0C<\/div>\r\n                    <\/div>\r\n                    <div>\r\n                        <label style=\"font-size: 13px; font-weight: 500;\">Debit<\/label>\r\n                        <input type=\"number\" id=\"hlProcessFlow\" value=\"5000\" step=\"1\" style=\"width:100%; padding:8px 12px; border:1px solid #ddd; border-radius:8px;\">\r\n                        <div style=\"font-size:11px; color:#888;\" id=\"hlProcessUnit\">l\/h<\/div>\r\n                    <\/div>\r\n                <\/div>\r\n                <button class=\"btn btn-primary\" onclick=\"hlCalculateProcess()\" style=\"margin-top:12px;\">Calculeaz\u0103<\/button>\r\n            <\/div>\r\n\r\n            <div class=\"results-grid\">\r\n                <div class=\"result-card highlight\" style=\"grid-column: span 3;\">\r\n                    <div class=\"label\">\u26a1 Puterea necesar\u0103<\/div>\r\n                    <div class=\"value\" id=\"hlProcessResult\">0 <span class=\"unit\">kW<\/span><\/div>\r\n                    <div style=\"font-size:11px;color:#888;margin-top:4px;\">Pentru \u00eenc\u0103lzirea apei tehnologice<\/div>\r\n                    <div id=\"hlProcessCascadeNote\" style=\"margin-top:8px;font-size:13px;color:#c62828;font-weight:500;display:none;\"><\/div>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <div style=\"text-align:center;margin:24px 0 12px;padding:20px;background:#eef4fc;border-radius:12px;border:1px solid #0057a8;\">\r\n                <p style=\"font-size:15px;color:#1a2332;margin-bottom:12px;\">\ud83d\udd27 <strong>Rezultatul poate fi folosit \u00een Configuratorul ALTAL<\/strong> pentru a selecta pompa de c\u0103ldur\u0103 industrial\u0103.<\/p>\r\n                <button class=\"btn btn-success\" onclick=\"hlOpenConfigurator()\" style=\"padding:14px 40px;font-size:16px;\">\r\n                    \u27a1\ufe0f Deschide Configuratorul\r\n                <\/button>\r\n            <\/div>\r\n\r\n            <div class=\"buttons\">\r\n                <button class=\"btn btn-secondary\" onclick=\"location.reload()\">\ud83d\udd04 Reset calculator<\/button>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <!-- ===== \u0412\u0418\u0414 \u0414\u041b\u042f \u0417\u0414\u0410\u041d\u0418\u0419 ===== -->\r\n        <div id=\"buildingView\">\r\n\r\n            <h3>\ud83d\udcca Rezultatele calculului termic<\/h3>\r\n\r\n            <div class=\"alert-box\">\r\n                <strong>\u26a0\ufe0f ATEN\u021aIE!<\/strong><br>\r\n                Acest calcul reprezint\u0103 <strong>necesarul termic teoretic pentru func\u021bionare continu\u0103 24\/7<\/strong> la temperatura exterioar\u0103 de dimensionare.<br><br>\r\n                <span style=\"font-size:15px;\">Pentru dimensionarea real\u0103 a echipamentului, aplica\u021bi un <strong>factor de corec\u021bie<\/strong> conform recomand\u0103rilor de mai jos.<\/span>\r\n            <\/div>\r\n\r\n            <!-- SELECTOR CLIMATIC -->\r\n            <div class=\"climate-selector\">\r\n                <div style=\"display:flex;align-items:center;gap:16px;flex-wrap:wrap;\">\r\n                    <label style=\"font-weight:600;color:#1a2332;font-size:14px;\">\ud83d\udcca Date climatice:<\/label>\r\n                    <select id=\"hlClimateSource\" style=\"padding:8px 16px;border:2px solid #0057a8;border-radius:8px;font-size:14px;background:#fff;\">\r\n                        <option value=\"tmy\">TMY (implicit) - recomandat<\/option>\r\n                        <option value=\"2026\">2026<\/option>\r\n                        <option value=\"2025\">2025<\/option>\r\n                        <option value=\"2024\">2024<\/option>\r\n                        <option value=\"2023\">2023<\/option>\r\n                        <option value=\"2022\">2022<\/option>\r\n                        <option value=\"2021\">2021<\/option>\r\n                        <option value=\"2020\">2020<\/option>\r\n                        <option value=\"2019\">2019<\/option>\r\n                        <option value=\"2018\">2018<\/option>\r\n                        <option value=\"2017\">2017<\/option>\r\n                        <option value=\"2016\">2016<\/option>\r\n                    <\/select>\r\n                    <span style=\"font-size:12px;color:#888;\">\u26a0\ufe0f Selectarea unui an specific transfer\u0103 responsabilitatea utilizatorului.<\/span>\r\n                <\/div>\r\n                <div style=\"margin-top:8px;font-size:12px;color:#555;\" id=\"hlClimateInfo\">\ud83d\udccc Date TMY (Typical Meteorological Year) - medii climatice pe 20 de ani<\/div>\r\n            <\/div>\r\n\r\n            <!-- REZUMAT -->\r\n            <div class=\"result-summary\" id=\"hlSummary\">\r\n                <h4 style=\"margin:0 0 10px 0;color:#0057a8;\">\ud83d\udccb Rezumatul condi\u021biilor introduse<\/h4>\r\n                <table id=\"hlSummaryTable\">\r\n                    <tr><td>\ud83c\udf0d \u021aar\u0103 \/ Ora\u0219<\/td><td id=\"hlS_location\">-<\/td><\/tr>\r\n                    <tr><td>\ud83d\udcc5 Date climatice<\/td><td id=\"hlS_climate\">-<\/td><\/tr>\r\n                    <tr><td>\ud83c\udfd7\ufe0f Tip cl\u0103dire<\/td><td id=\"hlS_building\">-<\/td><\/tr>\r\n                    <tr><td>\ud83d\udcd0 Suprafa\u021b\u0103 \/ Volum<\/td><td id=\"hlS_area\">-<\/td><\/tr>\r\n                    <tr><td>\ud83e\uddf1 Pere\u021bi<\/td><td id=\"hlS_walls\">-<\/td><\/tr>\r\n                    <tr><td>\ud83e\ude9f Ferestre<\/td><td id=\"hlS_windows\">-<\/td><\/tr>\r\n                    <tr><td>\ud83c\udfe0 Acoperi\u0219<\/td><td id=\"hlS_roof\">-<\/td><\/tr>\r\n                    <tr><td>\ud83c\udf21\ufe0f Temperaturi exterioare<\/td><td id=\"hlS_temps\">-<\/td><\/tr>\r\n                    <tr><td>\ud83c\udf21\ufe0f Temperaturi interioare<\/td><td id=\"hlS_interior\">-<\/td><\/tr>\r\n                    <tr><td>\ud83d\udc65 Ocupan\u021bi<\/td><td id=\"hlS_people\">-<\/td><\/tr>\r\n                <\/table>\r\n            <\/div>\r\n\r\n            <!-- ===== \u041f\u041e\u0422\u0420\u0415\u0411\u041b\u0415\u041d\u0418\u0415 \u0413\u0410\u0417\u0410 \u041f\u041e \u041c\u0415\u0421\u042f\u0426\u0410\u041c ===== -->\r\n            <div style=\"background: #f8fafc; border: 2px solid #0057a8; border-radius: 12px; padding: 16px 20px; margin: 16px 0;\">\r\n                <h4 style=\"margin: 0 0 10px 0; font-size: 15px; color: #0057a8;\">\ud83d\udcca Introduce\u021bi consumul de gaz (m\u00b3) pe lun\u0103<\/h4>\r\n                <div class=\"gas-month-grid\">\r\n                    <div><label>Ianuarie<\/label><input type=\"number\" id=\"gas_1\" value=\"0\" step=\"1\" class=\"month-input\"><\/div>\r\n                    <div><label>Februarie<\/label><input type=\"number\" id=\"gas_2\" value=\"0\" step=\"1\" class=\"month-input\"><\/div>\r\n                    <div><label>Martie<\/label><input type=\"number\" id=\"gas_3\" value=\"0\" step=\"1\" class=\"month-input\"><\/div>\r\n                    <div><label>Aprilie<\/label><input type=\"number\" id=\"gas_4\" value=\"0\" step=\"1\" class=\"month-input\"><\/div>\r\n                    <div><label>Mai<\/label><input type=\"number\" id=\"gas_5\" value=\"0\" step=\"1\" class=\"month-input\"><\/div>\r\n                    <div><label>Iunie<\/label><input type=\"number\" id=\"gas_6\" value=\"0\" step=\"1\" class=\"month-input\"><\/div>\r\n                    <div><label>Iulie<\/label><input type=\"number\" id=\"gas_7\" value=\"0\" step=\"1\" class=\"month-input\"><\/div>\r\n                    <div><label>August<\/label><input type=\"number\" id=\"gas_8\" value=\"0\" step=\"1\" class=\"month-input\"><\/div>\r\n                    <div><label>Septembrie<\/label><input type=\"number\" id=\"gas_9\" value=\"0\" step=\"1\" class=\"month-input\"><\/div>\r\n                    <div><label>Octombrie<\/label><input type=\"number\" id=\"gas_10\" value=\"0\" step=\"1\" class=\"month-input\"><\/div>\r\n                    <div><label>Noiembrie<\/label><input type=\"number\" id=\"gas_11\" value=\"0\" step=\"1\" class=\"month-input\"><\/div>\r\n                    <div><label>Decembrie<\/label><input type=\"number\" id=\"gas_12\" value=\"0\" step=\"1\" class=\"month-input\"><\/div>\r\n                <\/div>\r\n                <div style=\"display:grid; grid-template-columns: 1fr 1fr 1fr 1fr; gap:12px; margin-top:8px;\">\r\n                    <div><strong>Total gaz (anual):<\/strong> <span id=\"gasTotalAnnual\" style=\"color:#0057a8;font-weight:700;\">0<\/span> m\u00b3<\/div>\r\n                    <div><strong>Total gaz (iarn\u0103):<\/strong> <span id=\"gasTotalWinter\" style=\"color:#0057a8;font-weight:700;\">0<\/span> m\u00b3<\/div>\r\n                    <div>\r\n                        <label style=\"font-size:12px;\">Perioada de iarn\u0103:<\/label>\r\n                        <select id=\"heatingSeasonStart\" style=\"padding:4px 8px; border:1px solid #ddd; border-radius:6px; font-size:12px;\">\r\n                            <option value=\"10\">Octombrie<\/option>\r\n                            <option value=\"11\" selected>Noiembrie<\/option>\r\n                            <option value=\"12\">Decembrie<\/option>\r\n                        <\/select>\r\n                        <span style=\"font-size:12px;\">\u2014<\/span>\r\n                        <select id=\"heatingSeasonEnd\" style=\"padding:4px 8px; border:1px solid #ddd; border-radius:6px; font-size:12px;\">\r\n                            <option value=\"3\">Martie<\/option>\r\n                            <option value=\"4\" selected>Aprilie<\/option>\r\n                            <option value=\"5\">Mai<\/option>\r\n                        <\/select>\r\n                    <\/div>\r\n                    <div>\r\n                        <label style=\"font-size:12px;\">SCOP (pompa c\u0103ldur\u0103):<\/label>\r\n                        <input type=\"number\" id=\"scopInput\" value=\"4.0\" step=\"0.1\" min=\"2.0\" max=\"6.0\" style=\"width:70px; padding:4px 8px; border:1px solid #ddd; border-radius:6px; font-size:13px;\">\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <!-- ===== \u0426\u0415\u041d\u042b ===== -->\r\n            <div style=\"background: #f0f7ff; border: 2px solid #0057a8; border-radius: 12px; padding: 16px 20px; margin: 16px 0;\">\r\n                <h4 style=\"margin: 0 0 10px 0; font-size: 15px; color: #0057a8;\">\ud83d\udcb0 Pre\u021buri pentru calcul economic<\/h4>\r\n                <div style=\"display: grid; grid-template-columns: 1fr 1fr 1fr 1fr; gap: 12px;\">\r\n                    <div>\r\n                        <label style=\"font-size: 13px; font-weight: 500;\">Pre\u021b gaz (1 m\u00b3)<\/label>\r\n                        <input type=\"number\" id=\"hlGasPrice\" value=\"14.42\" step=\"0.01\" style=\"width:100%; padding:8px 12px; border:1px solid #ddd; border-radius:8px;\">\r\n                        <div style=\"font-size:11px; color:#888;\">Moldova: 14.42 lei<\/div>\r\n                    <\/div>\r\n                    <div>\r\n                        <label style=\"font-size: 13px; font-weight: 500;\">Pre\u021b electricitate (1 kWh)<\/label>\r\n                        <input type=\"number\" id=\"hlElecPrice\" value=\"3.56\" step=\"0.01\" style=\"width:100%; padding:8px 12px; border:1px solid #ddd; border-radius:8px;\">\r\n                        <div style=\"font-size:11px; color:#888;\">Moldova: 3.56 lei<\/div>\r\n                    <\/div>\r\n                    <div>\r\n                        <label style=\"font-size: 13px; font-weight: 500;\">Putere calorific\u0103 gaz<\/label>\r\n                        <input type=\"number\" id=\"hlGasHeatValue\" value=\"9.0\" step=\"0.1\" style=\"width:100%; padding:8px 12px; border:1px solid #ddd; border-radius:8px;\">\r\n                        <div style=\"font-size:11px; color:#888;\">kWh\/m\u00b3 (implicit 9.0)<\/div>\r\n                    <\/div>\r\n                    <div>\r\n                        <label style=\"font-size: 13px; font-weight: 500;\">Randament cazan gaz<\/label>\r\n                        <input type=\"number\" id=\"hlBoilerEfficiency\" value=\"0.92\" step=\"0.01\" min=\"0.7\" max=\"0.98\" style=\"width:100%; padding:8px 12px; border:1px solid #ddd; border-radius:8px;\">\r\n                        <div style=\"font-size:11px; color:#888;\">92% (0.92)<\/div>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <!-- ===== \u0420\u0415\u0417\u0423\u041b\u042c\u0422\u0410\u0422\u042b \u0420\u0410\u0421\u0427\u0415\u0422\u0410 ===== -->\r\n            <div class=\"results-grid\">\r\n                <div class=\"result-card highlight\">\r\n                    <div class=\"label\">\u26a1 Necesar termic (Q_teoretic)<\/div>\r\n                    <div class=\"value\" id=\"hlResultQpeak\">0 <span class=\"unit\">kW<\/span><\/div>\r\n                    <div style=\"font-size:11px;color:#888;margin-top:4px;\">24\/7 la temperatura de dimensionare<\/div>\r\n                <\/div>\r\n                <div class=\"result-card green\">\r\n                    <div class=\"label\">\ud83d\udcc8 Necesar specific<\/div>\r\n                    <div class=\"value\" id=\"hlResultSpecific\">0 <span class=\"unit\">W\/m\u00b2<\/span><\/div>\r\n                <\/div>\r\n                <div class=\"result-card\">\r\n                    <div class=\"label\">\ud83d\udcd0 Clas\u0103 energetic\u0103 estimat\u0103<\/div>\r\n                    <div class=\"value\" id=\"hlResultClass\" style=\"font-size:22px;\">A<\/div>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <div class=\"stats-grid\">\r\n                <div style=\"background:#f8faff;border-radius:10px;padding:12px 16px;border:1px solid #e4ecf7;text-align:center;\">\r\n                    <div style=\"font-size:11px;text-transform:uppercase;color:#888;\">\u0394T iarn\u0103<\/div>\r\n                    <div style=\"font-size:20px;font-weight:700;color:#0057a8;\" id=\"hlResultDeltaWinter\">0 <span style=\"font-size:14px;color:#888;\">\u00b0C<\/span><\/div>\r\n                <\/div>\r\n                <div style=\"background:#f8faff;border-radius:10px;padding:12px 16px;border:1px solid #e4ecf7;text-align:center;\">\r\n                    <div style=\"font-size:11px;text-transform:uppercase;color:#888;\">\u0394T var\u0103<\/div>\r\n                    <div style=\"font-size:20px;font-weight:700;color:#0057a8;\" id=\"hlResultDeltaSummer\">0 <span style=\"font-size:14px;color:#888;\">\u00b0C<\/span><\/div>\r\n                <\/div>\r\n                <div style=\"background:#f8faff;border-radius:10px;padding:12px 16px;border:1px solid #e4ecf7;text-align:center;\">\r\n                    <div style=\"font-size:11px;text-transform:uppercase;color:#888;\">\u00cenc\u0103lzire<\/div>\r\n                    <div style=\"font-size:18px;font-weight:700;color:#0057a8;\" id=\"hlResultConsumptionHeat\">0 <span style=\"font-size:14px;color:#888;\">kWh\/an<\/span><\/div>\r\n                    <div style=\"font-size:10px;color:#888;\">(1500 ore echiv.)<\/div>\r\n                <\/div>\r\n                <div style=\"background:#f8faff;border-radius:10px;padding:12px 16px;border:1px solid #e4ecf7;text-align:center;\">\r\n                    <div style=\"font-size:11px;text-transform:uppercase;color:#888;\">R\u0103cire<\/div>\r\n                    <div style=\"font-size:18px;font-weight:700;color:#0057a8;\" id=\"hlResultConsumptionCool\">0 <span style=\"font-size:14px;color:#888;\">kWh\/an<\/span><\/div>\r\n                    <div style=\"font-size:10px;color:#888;\">(450 ore echiv.)<\/div>\r\n                <\/div>\r\n                <div style=\"background:#f8faff;border-radius:10px;padding:12px 16px;border:1px solid #e4ecf7;text-align:center;\">\r\n                    <div style=\"font-size:11px;text-transform:uppercase;color:#888;\">ACM<\/div>\r\n                    <div style=\"font-size:18px;font-weight:700;color:#0057a8;\" id=\"hlResultAcm\">0 <span style=\"font-size:14px;color:#888;\">kWh\/an<\/span><\/div>\r\n                    <div style=\"font-size:10px;color:#888;\">(ap\u0103 cald\u0103 menajer\u0103)<\/div>\r\n                <\/div>\r\n                <div style=\"background:#f8faff;border-radius:10px;padding:12px 16px;border:1px solid #e4ecf7;text-align:center;\">\r\n                    <div style=\"font-size:11px;text-transform:uppercase;color:#888;\">Total<\/div>\r\n                    <div style=\"font-size:18px;font-weight:700;color:#0057a8;\" id=\"hlResultConsumptionTotal\">0 <span style=\"font-size:14px;color:#888;\">kWh\/an<\/span><\/div>\r\n                    <div style=\"font-size:10px;color:#888;\">(\u00eenc\u0103lzire+r\u0103cire+ACM)<\/div>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <!-- FACTOR DE COREC\u021aIE -->\r\n            <div style=\"background:#f0f5ff;border-radius:12px;padding:16px 20px;border:1px solid #0057a8;margin:12px 0;\">\r\n                <div style=\"display:flex;align-items:center;gap:16px;flex-wrap:wrap;\">\r\n                    <label style=\"font-weight:600;color:#1a2332;font-size:14px;\">\ud83d\udcca Factor de corec\u021bie pentru dimensionare:<\/label>\r\n                    <select id=\"hlCorrectionFactor\" style=\"padding:8px 16px;border:2px solid #0057a8;border-radius:8px;font-size:14px;font-weight:600;background:#fff;\">\r\n                        <option value=\"1.0\">1.0 - Teoretic (24\/7)<\/option>\r\n                        <option value=\"1.5\">1.5 - Termostat programabil<\/option>\r\n                        <option value=\"2.0\" selected>2.0 - Recomandat general<\/option>\r\n                        <option value=\"2.5\">2.5 - Cas\u0103 slab izolat\u0103 \/ zile reci<\/option>\r\n                        <option value=\"3.0\">3.0 - Sistem cu acumulare \/ \u00eenc\u0103lzire rapid\u0103<\/option>\r\n                    <\/select>\r\n                    <button class=\"btn btn-primary\" onclick=\"hlApplyCorrection()\" style=\"padding:8px 24px;\">Aplic\u0103 factor<\/button>\r\n                <\/div>\r\n                <div style=\"margin-top:10px;font-size:13px;color:#555;\">\r\n                    <strong>Q_echipament recomandat:<\/strong> <span id=\"hlCorrectedPower\" style=\"font-size:20px;font-weight:700;color:#c62828;\">0<\/span> kW\r\n                    <span style=\"font-size:12px;color:#888;margin-left:10px;\">(Q_teoretic \u00d7 factor)<\/span>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <!-- RECOMAND\u0102RI -->\r\n            <div class=\"recommendations\">\r\n                <h4>\ud83d\udca1 Recomand\u0103ri pentru sistemul de \u00eenc\u0103lzire<\/h4>\r\n                <ul id=\"hlRecList\">\r\n                    <li>Rezultate estimative. Pentru un proiect detaliat, consulta\u021bi un inginer specialist.<\/li>\r\n                <\/ul>\r\n            <\/div>\r\n\r\n            <!-- BUTON CONFIGURATOR -->\r\n            <div style=\"text-align:center;margin:24px 0 12px;padding:20px;background:#eef4fc;border-radius:12px;border:1px solid #0057a8;\">\r\n                <p style=\"font-size:15px;color:#1a2332;margin-bottom:12px;\">\ud83d\udd27 <strong>Acest rezultat poate fi folosit \u00een Configuratorul ALTAL<\/strong> pentru a selecta pompa de c\u0103ldur\u0103 \u0219i componentele sistemului.<\/p>\r\n                <button class=\"btn btn-success\" onclick=\"hlOpenConfigurator()\" style=\"padding:14px 40px;font-size:16px;\">\r\n                    \u27a1\ufe0f Deschide Configuratorul\r\n                <\/button>\r\n            <\/div>\r\n\r\n            <div class=\"buttons\">\r\n                <button class=\"btn btn-secondary\" onclick=\"hlPrevStep(3)\">\u2190 Modific\u0103 date<\/button>\r\n                <button class=\"btn btn-secondary\" onclick=\"location.reload()\">\ud83d\udd04 Reset calculator<\/button>\r\n            <\/div>\r\n\r\n        <\/div>\r\n        <!-- ===== \u041a\u041e\u041d\u0415\u0426 buildingView ===== -->\r\n\r\n    <\/div>\r\n    <!-- ===== \u041a\u041e\u041d\u0415\u0426 STEP 4 ===== -->\r\n\r\n<\/div>\r\n<!-- ===== \u041a\u041e\u041d\u0415\u0426 altal-hl-wrapper ===== -->\r\n\r\n<script>\r\n\/\/ ============================================================\r\n\/\/ \u0411\u0410\u0417\u0410 \u0414\u0410\u041d\u041d\u042b\u0425 \u041a\u041b\u0418\u041c\u0410\u0422\u0418\u0427\u0415\u0421\u041a\u0418\u0425 \u0414\u0410\u041d\u041d\u042b\u0425\r\n\/\/ ============================================================\r\nconst HL_CLIMATE_DATA = {\r\n    'Chi\u0219in\u0103u': {\r\n        tmy: { winter: { temp_min: -15, temp_avg: -2, humidity: 82, wind: 4.2 }, summer: { temp_max: 32, temp_avg: 22, humidity: 60, wind: 3.1 } },\r\n        history: {\r\n            '2016': { winter: { temp_min: -18, humidity: 85, wind: 4.8 }, summer: { temp_max: 34, humidity: 62, wind: 3.4 } },\r\n            '2017': { winter: { temp_min: -16, humidity: 83, wind: 4.5 }, summer: { temp_max: 33, humidity: 61, wind: 3.2 } },\r\n            '2018': { winter: { temp_min: -17, humidity: 84, wind: 4.6 }, summer: { temp_max: 35, humidity: 63, wind: 3.5 } },\r\n            '2019': { winter: { temp_min: -14, humidity: 81, wind: 4.0 }, summer: { temp_max: 33, humidity: 59, wind: 3.0 } },\r\n            '2020': { winter: { temp_min: -16, humidity: 82, wind: 4.3 }, summer: { temp_max: 34, humidity: 61, wind: 3.3 } },\r\n            '2021': { winter: { temp_min: -19, humidity: 86, wind: 5.0 }, summer: { temp_max: 32, humidity: 60, wind: 3.1 } },\r\n            '2022': { winter: { temp_min: -20, humidity: 87, wind: 5.2 }, summer: { temp_max: 36, humidity: 64, wind: 3.6 } },\r\n            '2023': { winter: { temp_min: -18, humidity: 85, wind: 4.9 }, summer: { temp_max: 35, humidity: 63, wind: 3.4 } },\r\n            '2024': { winter: { temp_min: -15, humidity: 82, wind: 4.4 }, summer: { temp_max: 33, humidity: 60, wind: 3.2 } },\r\n            '2025': { winter: { temp_min: -17, humidity: 84, wind: 4.7 }, summer: { temp_max: 34, humidity: 62, wind: 3.3 } },\r\n            '2026': { winter: { temp_min: -16, humidity: 83, wind: 4.5 }, summer: { temp_max: 33, humidity: 61, wind: 3.2 } }\r\n        }\r\n    },\r\n    'B\u0103l\u021bi': {\r\n        tmy: { winter: { temp_min: -18, temp_avg: -3, humidity: 84, wind: 4.5 }, summer: { temp_max: 31, temp_avg: 21, humidity: 62, wind: 3.2 } },\r\n        history: {\r\n            '2016': { winter: { temp_min: -21, humidity: 87, wind: 5.1 }, summer: { temp_max: 33, humidity: 64, wind: 3.5 } },\r\n            '2017': { winter: { temp_min: -19, humidity: 85, wind: 4.8 }, summer: { temp_max: 32, humidity: 63, wind: 3.3 } },\r\n            '2018': { winter: { temp_min: -20, humidity: 86, wind: 4.9 }, summer: { temp_max: 34, humidity: 65, wind: 3.6 } },\r\n            '2019': { winter: { temp_min: -17, humidity: 83, wind: 4.3 }, summer: { temp_max: 32, humidity: 61, wind: 3.1 } },\r\n            '2020': { winter: { temp_min: -19, humidity: 84, wind: 4.6 }, summer: { temp_max: 33, humidity: 63, wind: 3.4 } },\r\n            '2021': { winter: { temp_min: -22, humidity: 88, wind: 5.3 }, summer: { temp_max: 31, humidity: 62, wind: 3.2 } },\r\n            '2022': { winter: { temp_min: -23, humidity: 89, wind: 5.5 }, summer: { temp_max: 35, humidity: 66, wind: 3.7 } },\r\n            '2023': { winter: { temp_min: -21, humidity: 87, wind: 5.2 }, summer: { temp_max: 34, humidity: 65, wind: 3.5 } },\r\n            '2024': { winter: { temp_min: -18, humidity: 84, wind: 4.7 }, summer: { temp_max: 32, humidity: 62, wind: 3.3 } },\r\n            '2025': { winter: { temp_min: -20, humidity: 86, wind: 5.0 }, summer: { temp_max: 33, humidity: 64, wind: 3.4 } },\r\n            '2026': { winter: { temp_min: -19, humidity: 85, wind: 4.9 }, summer: { temp_max: 32, humidity: 63, wind: 3.3 } }\r\n        }\r\n    },\r\n    'Bucure\u0219ti': {\r\n        tmy: { winter: { temp_min: -12, temp_avg: -1, humidity: 78, wind: 3.5 }, summer: { temp_max: 35, temp_avg: 24, humidity: 55, wind: 2.7 } },\r\n        history: {\r\n            '2016': { winter: { temp_min: -15, humidity: 81, wind: 3.9 }, summer: { temp_max: 37, humidity: 57, wind: 2.9 } },\r\n            '2017': { winter: { temp_min: -13, humidity: 79, wind: 3.7 }, summer: { temp_max: 36, humidity: 56, wind: 2.8 } },\r\n            '2018': { winter: { temp_min: -14, humidity: 80, wind: 3.8 }, summer: { temp_max: 38, humidity: 58, wind: 3.0 } },\r\n            '2019': { winter: { temp_min: -11, humidity: 77, wind: 3.3 }, summer: { temp_max: 36, humidity: 54, wind: 2.6 } },\r\n            '2020': { winter: { temp_min: -13, humidity: 78, wind: 3.6 }, summer: { temp_max: 37, humidity: 56, wind: 2.8 } },\r\n            '2021': { winter: { temp_min: -16, humidity: 82, wind: 4.0 }, summer: { temp_max: 35, humidity: 55, wind: 2.7 } },\r\n            '2022': { winter: { temp_min: -17, humidity: 83, wind: 4.2 }, summer: { temp_max: 39, humidity: 59, wind: 3.1 } },\r\n            '2023': { winter: { temp_min: -15, humidity: 81, wind: 3.9 }, summer: { temp_max: 38, humidity: 58, wind: 2.9 } },\r\n            '2024': { winter: { temp_min: -12, humidity: 78, wind: 3.6 }, summer: { temp_max: 36, humidity: 55, wind: 2.7 } },\r\n            '2025': { winter: { temp_min: -14, humidity: 80, wind: 3.8 }, summer: { temp_max: 37, humidity: 57, wind: 2.8 } },\r\n            '2026': { winter: { temp_min: -13, humidity: 79, wind: 3.7 }, summer: { temp_max: 36, humidity: 56, wind: 2.8 } }\r\n        }\r\n    },\r\n    'Kyiv': {\r\n        tmy: { winter: { temp_min: -18, temp_avg: -4, humidity: 84, wind: 4.5 }, summer: { temp_max: 31, temp_avg: 21, humidity: 62, wind: 3.3 } },\r\n        history: {\r\n            '2016': { winter: { temp_min: -21, humidity: 87, wind: 4.9 }, summer: { temp_max: 33, humidity: 64, wind: 3.5 } },\r\n            '2017': { winter: { temp_min: -19, humidity: 85, wind: 4.7 }, summer: { temp_max: 32, humidity: 63, wind: 3.4 } },\r\n            '2018': { winter: { temp_min: -20, humidity: 86, wind: 4.8 }, summer: { temp_max: 34, humidity: 65, wind: 3.6 } },\r\n            '2019': { winter: { temp_min: -17, humidity: 83, wind: 4.3 }, summer: { temp_max: 32, humidity: 61, wind: 3.2 } },\r\n            '2020': { winter: { temp_min: -19, humidity: 84, wind: 4.6 }, summer: { temp_max: 33, humidity: 63, wind: 3.4 } },\r\n            '2021': { winter: { temp_min: -22, humidity: 88, wind: 5.1 }, summer: { temp_max: 31, humidity: 62, wind: 3.3 } },\r\n            '2022': { winter: { temp_min: -23, humidity: 89, wind: 5.3 }, summer: { temp_max: 35, humidity: 66, wind: 3.7 } },\r\n            '2023': { winter: { temp_min: -21, humidity: 87, wind: 5.0 }, summer: { temp_max: 34, humidity: 65, wind: 3.5 } },\r\n            '2024': { winter: { temp_min: -18, humidity: 84, wind: 4.7 }, summer: { temp_max: 32, humidity: 62, wind: 3.3 } },\r\n            '2025': { winter: { temp_min: -20, humidity: 86, wind: 4.9 }, summer: { temp_max: 33, humidity: 64, wind: 3.4 } },\r\n            '2026': { winter: { temp_min: -19, humidity: 85, wind: 4.8 }, summer: { temp_max: 32, humidity: 63, wind: 3.4 } }\r\n        }\r\n    }\r\n};\r\n\r\n\/\/ ============================================================\r\n\/\/ FUNC\u021aII PRINCIPALE\r\n\/\/ ============================================================\r\nfunction hlUpdateCities() {\r\n    const country = document.getElementById('hlCountry').value;\r\n    const citySelect = document.getElementById('hlCity');\r\n    const countryMap = {\r\n        'MD': ['Chi\u0219in\u0103u','B\u0103l\u021bi','Cahul','Orhei','Soroca','Comrat','Ungheni','C\u0103u\u0219eni','Edine\u021b','H\u00eence\u0219ti','Str\u0103\u0219eni','Flore\u0219ti'],\r\n        'RO': ['Bucure\u0219ti','Cluj-Napoca','Timi\u0219oara','Ia\u0219i','Constan\u021ba','Craiova','Bra\u0219ov'],\r\n        'UA': ['Kyiv','Odesa','Lviv','Kharkiv','Dnipro']\r\n    };\r\n    const cities = countryMap[country] || [];\r\n    citySelect.innerHTML = '';\r\n    cities.forEach(city => {\r\n        const opt = document.createElement('option');\r\n        opt.value = city;\r\n        opt.textContent = city;\r\n        citySelect.appendChild(opt);\r\n    });\r\n    hlUpdateTemperatures();\r\n}\r\n\r\nfunction hlUpdateTemperatures() {\r\n    const city = document.getElementById('hlCity').value;\r\n    const data = HL_CLIMATE_DATA[city];\r\n    if (!data || !data.tmy) return;\r\n    document.getElementById('hlWinterTemp').value = data.tmy.winter.temp_min;\r\n    document.getElementById('hlSummerTemp').value = data.tmy.summer.temp_max;\r\n}\r\n\r\nfunction hlUpdateClimateData() {\r\n    const source = document.getElementById('hlClimateSource').value;\r\n    const city = document.getElementById('hlCity').value;\r\n    const data = HL_CLIMATE_DATA[city];\r\n    const info = document.getElementById('hlClimateInfo');\r\n    const isResultStep = document.querySelector('.step.active[data-step=\"4\"]') !== null;\r\n    \r\n    if (source === 'tmy') {\r\n        if (data && data.tmy) {\r\n            document.getElementById('hlWinterTemp').value = data.tmy.winter.temp_min;\r\n            document.getElementById('hlSummerTemp').value = data.tmy.summer.temp_max;\r\n            info.innerHTML = '\ud83d\udccc Date TMY (Typical Meteorological Year) - medii climatice pe 20 de ani';\r\n        }\r\n    } else {\r\n        if (data && data.history && data.history[source]) {\r\n            const h = data.history[source];\r\n            document.getElementById('hlWinterTemp').value = h.winter.temp_min;\r\n            document.getElementById('hlSummerTemp').value = h.summer.temp_max;\r\n            info.innerHTML = '\ud83d\udccc Date istorice pentru anul ' + source + ' - responsabilitatea utilizatorului.';\r\n        }\r\n    }\r\n    \r\n    if (isResultStep && typeof hlCalculate === 'function') {\r\n        hlCalculate();\r\n    }\r\n}\r\n\r\n\/\/ ============================================================\r\n\/\/ STEP NAVIGATION\r\n\/\/ ============================================================\r\nlet hlCurrentStep = 1;\r\n\r\nfunction hlUpdateProgress(step) {\r\n    document.querySelectorAll('#hlProgress .step-dot').forEach((dot, i) => {\r\n        const num = i + 1;\r\n        dot.className = 'step-dot';\r\n        if (num === step) dot.classList.add('active');\r\n        else if (num < step) dot.classList.add('done');\r\n    });\r\n}\r\n\r\nfunction hlShowStep(step) {\r\n    document.querySelectorAll('.altal-hl-wrapper .step').forEach(el => el.classList.remove('active'));\r\n    const target = document.querySelector('.altal-hl-wrapper .step[data-step=\"' + step + '\"]');\r\n    if (target) target.classList.add('active');\r\n    hlUpdateProgress(step);\r\n    const el = document.querySelector('.altal-hl-wrapper');\r\n    window.scrollTo({ top: el.offsetTop - 20, behavior: 'smooth' });\r\n}\r\n\r\nfunction hlNextStep(step) {\r\n    if (step === 4) { \r\n        hlCalculate(); \r\n        return; \r\n    }\r\n    hlCurrentStep = step;\r\n    if (step === 3) hlUpdateVolume();\r\n    hlShowStep(step);\r\n}\r\n\r\nfunction hlPrevStep(step) {\r\n    hlCurrentStep = step;\r\n    hlShowStep(step);\r\n}\r\n\r\nfunction hlUpdateVolume() {\r\n    const area = parseFloat(document.getElementById('hlArea').value) || 0;\r\n    const height = parseFloat(document.getElementById('hlHeight').value) || 2.75;\r\n    document.getElementById('hlVolume').value = Math.round(area * height);\r\n}\r\n\r\n\/\/ ============================================================\r\n\/\/ DATE DE BAZ\u0102\r\n\/\/ ============================================================\r\nconst HL_BUILDING_FACTORS = {\r\n    'Vil\u0103': 1.0, 'Reziden\u021bial': 1.1, 'Oficiu': 1.2, 'Recrea\u021bie': 1.3,\r\n    'Festivit\u0103\u021bi': 1.4, 'Industrial\u0103 tehnic\u0103': 1.5, 'Industrie alimentar\u0103': 1.6,\r\n    'Industrie chimic\u0103': 1.7, 'Spital': 1.3, 'Depozit': 0.9, 'Seral\u0103': 1.1\r\n};\r\n\r\nconst HL_U_WINDOW = {\r\n    'Sticl\u0103 simpl\u0103': 5.0, 'Termopan 2cam': 1.6,\r\n    'Termopan 3cam': 0.9, 'Termopan 3cam Low-E': 0.6\r\n};\r\n\r\nconst HL_U_ROOF = {\r\n    'F\u0103r\u0103': 2.0, 'Spum\u0103 10cm': 0.4, 'Spum\u0103 20cm': 0.2, 'Spum\u0103 30cm': 0.13,\r\n    'Vat\u0103 10cm': 0.35, 'Vat\u0103 20cm': 0.18, 'Vat\u0103 30cm': 0.12,\r\n    'Poliuretan 5cm': 0.3, 'Poliuretan 10cm': 0.15, 'Poliuretan 15cm': 0.1,\r\n    'L\u00e2n\u0103 15cm': 0.25\r\n};\r\n\r\nconst HL_U_WALL_INSULATION = {\r\n    'F\u0103r\u0103': 0,\r\n    'Spum\u0103 5cm': 0.8, 'Spum\u0103 10cm': 0.4, 'Spum\u0103 15cm': 0.27, 'Spum\u0103 20cm': 0.2, 'Spum\u0103 30cm': 0.13,\r\n    'Vat\u0103 5cm': 0.9, 'Vat\u0103 10cm': 0.45, 'Vat\u0103 15cm': 0.3, 'Vat\u0103 20cm': 0.22, 'Vat\u0103 30cm': 0.15,\r\n    'Poliuretan 5cm': 0.6, 'Poliuretan 10cm': 0.3, 'Poliuretan 15cm': 0.2,\r\n    'Ventilat 5cm': 0.7, 'Ventilat 10cm': 0.35, 'Ventilat 15cm': 0.25, 'Ventilat 20cm': 0.18\r\n};\r\n\r\nconst HL_LAMBDA = {\r\n    'C\u0103r\u0103mid\u0103': 0.5, 'BCA': 0.3, 'Lemn': 0.6, 'P+': 0.15,\r\n    'Cotile\u021b': 0.6, 'Sandwich': 0.04, 'Gazobeton': 0.2, 'Silicat': 0.6, 'Beton': 1.5\r\n};\r\n\r\n\/\/ ============================================================\r\n\/\/ CALCUL ENGINE\r\n\/\/ ============================================================\r\nlet _lastQpeak = 0;\r\n\r\nfunction hlGetData() {\r\n    const purpose = document.querySelector('input[name=\"project_purpose\"]:checked')?.value || 'private';\r\n    \r\n    let process_inlet = 0;\r\n    let process_outlet = 0;\r\n    let process_flow = 0;\r\n    \r\n    if (purpose === 'process') {\r\n        process_inlet = parseFloat(document.getElementById('hlProcessInlet').value) || 20;\r\n        process_outlet = parseFloat(document.getElementById('hlProcessOutlet').value) || 95;\r\n        process_flow = parseFloat(document.getElementById('hlProcessFlow').value) || 5000;\r\n    }\r\n\r\n    return {\r\n        country: document.getElementById('hlCountry').value,\r\n        city: document.getElementById('hlCity').value,\r\n        climate_source: document.getElementById('hlClimateSource').value,\r\n        t_ext_winter: parseFloat(document.getElementById('hlWinterTemp').value) || -15,\r\n        t_ext_summer: parseFloat(document.getElementById('hlSummerTemp').value) || 32,\r\n        t_int_winter: parseFloat(document.getElementById('hlInteriorWinter').value) || 22,\r\n        t_int_summer: parseFloat(document.getElementById('hlInteriorSummer').value) || 24,\r\n        building_type: document.getElementById('hlBuildingType').value,\r\n        area: parseFloat(document.getElementById('hlArea').value) || 150,\r\n        height: parseFloat(document.getElementById('hlHeight').value) || 2.75,\r\n        volume: parseFloat(document.getElementById('hlVolume').value) || 412,\r\n        floors: parseInt(document.getElementById('hlFloors').value) || 1,\r\n        wall_material: document.getElementById('hlWallMaterial').value,\r\n        wall_thickness: parseFloat(document.getElementById('hlWallThickness').value) || 400,\r\n        wall_insulation: document.getElementById('hlWallInsulation').value,\r\n        window_type: document.getElementById('hlWindowType').value,\r\n        window_area: parseFloat(document.getElementById('hlWindowArea').value) || 22.5,\r\n        roof_insulation: document.getElementById('hlRoofInsulation').value,\r\n        residents_count: parseInt(document.getElementById('hlResidentsCount').value) || 1,\r\n        purpose: purpose,\r\n        process_inlet: process_inlet,\r\n        process_outlet: process_outlet,\r\n        process_flow: process_flow\r\n    };\r\n}\r\n\r\nfunction hlCalculate() {\r\n    const d = hlGetData();\r\n    const deltaT_winter = d.t_int_winter - d.t_ext_winter;\r\n    const deltaT_summer = d.t_ext_summer - d.t_int_summer;\r\n\r\n    const bf = HL_BUILDING_FACTORS[d.building_type] || 1.0;\r\n    const K_floor = d.floors === 1 ? 0.7 : 1.0;\r\n    const R_wall = (d.wall_thickness \/ 1000) \/ (HL_LAMBDA[d.wall_material] || 0.3);\r\n\r\n    const specific_loss = 70;\r\n    let Q_simple = (d.area * specific_loss \/ 1000) * (deltaT_winter \/ 30) * K_floor * bf;\r\n\r\n    const insulationU = HL_U_WALL_INSULATION[d.wall_insulation] || 0;\r\n    const R_total = R_wall + (insulationU > 0 ? 1 \/ insulationU : 0);\r\n    const U_total = 1 \/ R_total;\r\n\r\n    const Q_walls = (d.area * 0.5 * U_total * deltaT_winter) \/ 1000;\r\n    const Q_windows = (d.window_area * (HL_U_WINDOW[d.window_type] || 1.6) * deltaT_winter) \/ 1000;\r\n    const Q_roof = (d.area * 0.2 * (HL_U_ROOF[d.roof_insulation] || 0.4) * deltaT_winter) \/ 1000;\r\n    const Q_vent = (d.volume * 0.15 * deltaT_winter) \/ 1000;\r\n\r\n    let Q_detailed = Q_walls + Q_windows + Q_roof + Q_vent;\r\n    let Q = Q_simple * 0.4 + Q_detailed * 0.6;\r\n\r\n    const Q_people = Math.min(d.residents_count * 0.1, Q * 0.3);\r\n    Q = Math.max(2, Q - Q_people * 0.3);\r\n\r\n    let q_peak = Math.round(Q * 10) \/ 10;\r\n    \r\n    \/\/ ===== \u0415\u0421\u041b\u0418 \u0412\u042b\u0411\u0420\u0410\u041d\u041e \u041f\u0420\u041e\u0418\u0417\u0412\u041e\u0414\u0421\u0422\u0412\u041e, \u0421\u0427\u0418\u0422\u0410\u0415\u041c \u0422\u041e\u041b\u042c\u041a\u041e \u041c\u041e\u0429\u041d\u041e\u0421\u0422\u042c =====\r\n    const purpose = document.querySelector('input[name=\"project_purpose\"]:checked')?.value || 'private';\r\n    if (purpose === 'process') {\r\n        \/\/ \u0414\u043b\u044f process \u0440\u0430\u0441\u0447\u0435\u0442 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0432 hlCalculateProcess\r\n        \/\/ \u0417\u0434\u0435\u0441\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\r\n        const power = parseFloat(localStorage.getItem('altal_process_power')) || 0;\r\n        if (power > 0) {\r\n            q_peak = power;\r\n        }\r\n    }\r\n    \r\n    _lastQpeak = q_peak;\r\n\r\n    let specific_power = Math.round((q_peak \/ d.area) * 1000);\r\n\r\n    let energyClass = 'A';\r\n    if (specific_power > 120) energyClass = 'G';\r\n    else if (specific_power > 100) energyClass = 'F';\r\n    else if (specific_power > 80) energyClass = 'E';\r\n    else if (specific_power > 60) energyClass = 'D';\r\n    else if (specific_power > 45) energyClass = 'C';\r\n    else if (specific_power > 30) energyClass = 'B';\r\n    else energyClass = 'A';\r\n\r\n    \/\/ ===== ACM =====\r\n    const SCOP_ACM = 2.5;\r\n    const DHW_CONSUMPTION_PER_PERSON = 50;\r\n    const daily_liters = d.residents_count * DHW_CONSUMPTION_PER_PERSON;\r\n    const energy_per_day = daily_liters * 0.035;\r\n    const acm_thermal = energy_per_day * 365;\r\n    const acm_electric = Math.round(acm_thermal \/ SCOP_ACM);\r\n\r\n    \/\/ ===== CONSUM =====\r\n    const heating_hours = 1500;\r\n    const cooling_hours = 450;\r\n    const SCOP_heating = 3.5;\r\n    const SEER_estimat = 4.0;\r\n\r\n    const consumption_heat = Math.round((q_peak * heating_hours) \/ SCOP_heating);\r\n\r\n    let consumption_cool = 0;\r\n    if (deltaT_summer > 5) {\r\n        const q_cool = q_peak * 0.65;\r\n        consumption_cool = Math.round((q_cool * cooling_hours) \/ SEER_estimat);\r\n    }\r\n\r\n    const system_loss_factor = 1.18;\r\n    let consumption_total_raw = consumption_heat + acm_electric + consumption_cool;\r\n    let consumption_total = Math.round(consumption_total_raw * system_loss_factor);\r\n\r\n    const thermal_energy_heating = q_peak * heating_hours;\r\n    const thermal_energy_acm = acm_thermal;\r\n    const thermal_energy_total = Math.round((thermal_energy_heating + thermal_energy_acm) * system_loss_factor);\r\n\r\n    \/\/ ===== AFI\u0218ARE =====\r\n    const climateLabel = d.climate_source === 'tmy' ? 'TMY (implicit)' : d.climate_source;\r\n\r\n    document.getElementById('hlS_location').textContent = d.country + ' \/ ' + d.city;\r\n    document.getElementById('hlS_climate').textContent = climateLabel;\r\n    document.getElementById('hlS_building').textContent = d.building_type + ' | Etaje: ' + d.floors;\r\n    document.getElementById('hlS_area').textContent = d.area + ' m\u00b2 | ' + d.volume + ' m\u00b3';\r\n    document.getElementById('hlS_walls').textContent = d.wall_material + ' | ' + d.wall_thickness + ' mm | Izola\u021bie: ' + d.wall_insulation;\r\n    document.getElementById('hlS_windows').textContent = d.window_type + ' | ' + d.window_area + ' m\u00b2';\r\n    document.getElementById('hlS_roof').textContent = d.roof_insulation;\r\n    document.getElementById('hlS_temps').textContent = 'Iarn\u0103 ' + d.t_ext_winter + '\u00b0C \/ Var\u0103 ' + d.t_ext_summer + '\u00b0C';\r\n    document.getElementById('hlS_interior').textContent = 'Iarn\u0103 ' + d.t_int_winter + '\u00b0C \/ Var\u0103 ' + d.t_int_summer + '\u00b0C';\r\n    document.getElementById('hlS_people').textContent = d.residents_count + ' persoane';\r\n\r\n    document.getElementById('hlResultQpeak').innerHTML = q_peak + ' <span class=\"unit\">kW<\/span>';\r\n    document.getElementById('hlResultSpecific').innerHTML = specific_power + ' <span class=\"unit\">W\/m\u00b2<\/span>';\r\n\r\n    const classColors = {\r\n        'A': '#34a853', 'B': '#4caf50', 'C': '#8bc34a',\r\n        'D': '#ffeb3b', 'E': '#ff9800', 'F': '#f44336', 'G': '#d32f2f'\r\n    };\r\n    const classEl = document.getElementById('hlResultClass');\r\n    classEl.textContent = energyClass;\r\n    classEl.style.color = classColors[energyClass] || '#0057a8';\r\n\r\n    document.getElementById('hlResultDeltaWinter').innerHTML = deltaT_winter + ' <span style=\"font-size:14px;color:#888;\">\u00b0C<\/span>';\r\n    document.getElementById('hlResultDeltaSummer').innerHTML = deltaT_summer + ' <span style=\"font-size:14px;color:#888;\">\u00b0C<\/span>';\r\n\r\n    document.getElementById('hlResultConsumptionHeat').innerHTML = consumption_heat + ' <span style=\"font-size:14px;color:#888;\">kWh\/an<\/span>';\r\n    document.getElementById('hlResultConsumptionCool').innerHTML = consumption_cool + ' <span style=\"font-size:14px;color:#888;\">kWh\/an<\/span>';\r\n    \r\n    const acmEl = document.getElementById('hlResultAcm');\r\n    if (acmEl) {\r\n        acmEl.innerHTML = acm_electric + ' <span style=\"font-size:14px;color:#888;\">kWh\/an<\/span>';\r\n    }\r\n    \r\n    document.getElementById('hlResultConsumptionTotal').innerHTML = consumption_total + ' <span style=\"font-size:14px;color:#888;\">kWh\/an<\/span>';\r\n\r\n    hlApplyCorrection();\r\n    hlCalculateGasEconomics();\r\n\r\n    \/\/ ===== RECOMAND\u0102RI =====\r\n    let recs = [];\r\n    if (specific_power <= 30) {\r\n        recs.push('\ud83c\udfc6 Cl\u0103dire cu consum foarte sc\u0103zut - recomand\u0103m pomp\u0103 de c\u0103ldur\u0103 aer-ap\u0103 de mic\u0103 putere');\r\n    } else if (specific_power <= 45) {\r\n        recs.push('\u2705 Cl\u0103dire eficient\u0103 - pomp\u0103 de c\u0103ldur\u0103 aer-ap\u0103 sau ap\u0103-ap\u0103');\r\n    } else if (specific_power <= 60) {\r\n        recs.push('\ud83d\udcca Cl\u0103dire cu consum mediu - recomand\u0103m pomp\u0103 de c\u0103ldur\u0103 cu EVI');\r\n    } else if (specific_power <= 80) {\r\n        recs.push('\u26a0\ufe0f Cl\u0103dire cu consum ridicat - recomand\u0103m pomp\u0103 de c\u0103ldur\u0103 ap\u0103-ap\u0103 sau sistem bivalent');\r\n    } else {\r\n        recs.push('\ud83d\udd27 Cl\u0103dire cu consum foarte ridicat - se recomand\u0103 studiu termic detaliat \u0219i sistem industrial');\r\n    }\r\n\r\n    recs.push('\ud83d\udebf ACM inclus: consum estimativ ' + acm_electric + ' kWh\/an');\r\n    recs.push('\ud83d\udccc Factor de corec\u021bie recomandat: ' + (specific_power > 60 ? 2.5 : 2.0));\r\n    recs.push('\ud83d\udccb Pentru o ofert\u0103 complet\u0103, merge\u021bi la Configuratorul ALTAL');\r\n\r\n    const recList = document.getElementById('hlRecList');\r\n    recList.innerHTML = '';\r\n    recs.forEach(r => {\r\n        const li = document.createElement('li');\r\n        li.textContent = r;\r\n        if (r.includes('\u26a0\ufe0f') || r.includes('\ud83d\udd27')) li.className = 'warning';\r\n        recList.appendChild(li);\r\n    });\r\n\r\n    window._hlResult = { \r\n        q_peak: q_peak, \r\n        specific_power: specific_power, \r\n        energyClass: energyClass,\r\n        consumption_heat: consumption_heat,\r\n        consumption_cool: consumption_cool,\r\n        consumption_total: consumption_total,\r\n        acm_electric: acm_electric,\r\n        thermal_energy_total: thermal_energy_total\r\n    };\r\n    hlShowStep(4);\r\n}\r\n\r\n\r\n\/\/ ===== \u0420\u0410\u0421\u0427\u0415\u0422 \u0422\u0415\u0425\u041d\u041e\u041b\u041e\u0413\u0418\u0427\u0415\u0421\u041a\u041e\u0419 \u0412\u041e\u0414\u042b =====\r\nfunction hlCalculateProcess() {\r\n    const type = document.getElementById('hlProcessType').value;\r\n    const inlet = parseFloat(document.getElementById('hlProcessInlet').value) || 20;\r\n    const outlet = parseFloat(document.getElementById('hlProcessOutlet').value) || 95;\r\n    const flow = parseFloat(document.getElementById('hlProcessFlow').value) || 0;\r\n    \r\n    \/\/ ===== \u041f\u0420\u041e\u0412\u0415\u0420\u041a\u0410 \u0414\u041b\u042f \u041f\u0410\u0420\u0410 =====\r\n    if (type === 'steam' && outlet < 135) {\r\n        document.getElementById('hlProcessResult').innerHTML = '\u26a0\ufe0f <span style=\"font-size:16px;\">Pentru abur, temperatura trebuie s\u0103 fie 135\u00b0C<\/span>';\r\n        document.getElementById('hlProcessCascadeNote').textContent = '';\r\n        document.getElementById('hlProcessCascadeNote').style.display = 'none';\r\n        return;\r\n    }\r\n    \r\n    const deltaT = outlet - inlet;\r\n    \r\n    let power = 0;\r\n    let unit = '';\r\n    let attrName = '';\r\n    \r\n    if (type === 'water') {\r\n        \/\/ \u0414\u043b\u044f \u0432\u043e\u0434\u044b: Q = \u0440\u0430\u0441\u0445\u043e\u0434 (\u043b\/\u0447) \u00d7 1.16 \u00d7 \u0394T \/ 1000\r\n        power = (flow * 1.16 * deltaT) \/ 1000;\r\n        unit = 'l\/h';\r\n        attrName = 'Ap\u0103 tehnologic\u0103, l\/h ' + outlet + '\u00b0C';\r\n    } else {\r\n        \/\/ \u0414\u043b\u044f \u043f\u0430\u0440\u0430: Q = \u0440\u0430\u0441\u0445\u043e\u0434 (\u043a\u0433\/\u0447) \u00d7 2.6 \/ 1000 (\u0434\u043b\u044f 135\u00b0C)\r\n        power = (flow * 2.6) \/ 1000;\r\n        unit = 'kg\/h';\r\n        attrName = 'Abur tehnologic, kg\/h 135 \u00b0C';\r\n    }\r\n    \r\n    \/\/ \u041e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435 \u0434\u043e \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0439 \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438 \u0438\u0437 \u0440\u044f\u0434\u0430\r\n    const powerRange = [200, 400, 600, 800, 1000, 1400];\r\n    let selectedPower = powerRange.find(p => p >= power) || powerRange[powerRange.length - 1];\r\n    \r\n    \/\/ \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u043e \u043a\u0430\u0441\u043a\u0430\u0434\u0435\r\n    let cascade = '';\r\n    if (selectedPower >= 1400 && power > 1400) {\r\n        cascade = '\ud83d\udca1 Pentru puteri mai mari de 1400 kW, se recomand\u0103 sistem \u00een cascad\u0103 (ex: 800+800 kW)';\r\n    } else if (selectedPower >= 1400) {\r\n        cascade = '\ud83d\udca1 Se recomand\u0103 sistem \u00een cascad\u0103 pentru puteri peste 1400 kW';\r\n    }\r\n    \r\n    \/\/ \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0432 localStorage \u0434\u043b\u044f \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0442\u043e\u0440\u0430\r\n    localStorage.setItem('altal_process_type', type);\r\n    localStorage.setItem('altal_process_inlet', inlet);\r\n    localStorage.setItem('altal_process_outlet', outlet);\r\n    localStorage.setItem('altal_process_flow', flow);\r\n    localStorage.setItem('altal_process_power', selectedPower);\r\n    localStorage.setItem('altal_process_unit', unit);\r\n    localStorage.setItem('altal_process_attr', attrName);\r\n    localStorage.setItem('altal_process_cascade', cascade);\r\n    \r\n    \/\/ \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\r\n    document.getElementById('hlProcessResult').innerHTML = selectedPower + ' <span class=\"unit\">kW<\/span>';\r\n    \r\n    \/\/ \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435 \u043e \u043a\u0430\u0441\u043a\u0430\u0434\u0435\r\n    const cascadeNote = document.getElementById('hlProcessCascadeNote');\r\n    if (cascadeNote) {\r\n        cascadeNote.textContent = cascade;\r\n        cascadeNote.style.display = cascade ? 'block' : 'none';\r\n    }\r\n    \r\n    \/\/ \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0442\u0435\u043f\u043b\u043e\u043f\u043e\u0442\u0435\u0440\u0438 \u0434\u043b\u044f \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0442\u043e\u0440\u0430\r\n    localStorage.setItem('altal_heat_loss', selectedPower.toString());\r\n    \r\n    console.log('\ud83d\udca7 Ap\u0103 tehnologic\u0103:', { type, inlet, outlet, deltaT, flow, power, selectedPower, unit, attrName });\r\n}\r\n\r\n\r\n\/\/ ===== \u0420\u0410\u0421\u0427\u0415\u0422 \u042d\u041a\u041e\u041d\u041e\u041c\u0418\u041a\u0418 =====\r\nfunction hlCalculateGasEconomics() {\r\n    const gasPrice = parseFloat(document.getElementById('hlGasPrice')?.value) || 14.42;\r\n    const elecPrice = parseFloat(document.getElementById('hlElecPrice')?.value) || 3.56;\r\n    const gasHeatValue = parseFloat(document.getElementById('hlGasHeatValue')?.value) || 9.0;\r\n    const boilerEfficiency = parseFloat(document.getElementById('hlBoilerEfficiency')?.value) || 0.92;\r\n    const scop = parseFloat(document.getElementById('scopInput')?.value) || 4.0;\r\n    \r\n    const seasonStart = parseInt(document.getElementById('heatingSeasonStart')?.value) || 11;\r\n    const seasonEnd = parseInt(document.getElementById('heatingSeasonEnd')?.value) || 4;\r\n    \r\n    let totalAnnualGas = 0;\r\n    let totalWinterGas = 0;\r\n    \r\n    for (let i = 1; i <= 12; i++) {\r\n        const el = document.getElementById('gas_' + i);\r\n        const val = parseFloat(el?.value) || 0;\r\n        totalAnnualGas += val;\r\n        \r\n        let isWinter = false;\r\n        if (seasonStart <= seasonEnd) {\r\n            isWinter = (i >= seasonStart && i <= seasonEnd);\r\n        } else {\r\n            isWinter = (i >= seasonStart || i <= seasonEnd);\r\n        }\r\n        if (isWinter) {\r\n            totalWinterGas += val;\r\n        }\r\n    }\r\n    \r\n    \/\/ \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u043b\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043f\u0435\u0440\u0435\u0434 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435\u043c\r\n    const annualEl = document.getElementById('gasTotalAnnual');\r\n    const winterEl = document.getElementById('gasTotalWinter');\r\n    const gasCostEl = document.getElementById('hlGasCost');\r\n    const hpCostEl = document.getElementById('hlHpCost');\r\n    const savingsEl = document.getElementById('hlSavings');\r\n    const totalHeatEl = document.getElementById('hlTotalHeat');\r\n    \r\n    if (annualEl) annualEl.textContent = totalAnnualGas;\r\n    if (winterEl) winterEl.textContent = totalWinterGas;\r\n    \r\n    if (totalAnnualGas <= 0) {\r\n        if (gasCostEl) gasCostEl.textContent = '\u2014';\r\n        if (hpCostEl) hpCostEl.textContent = '\u2014';\r\n        if (savingsEl) savingsEl.textContent = '\u2014';\r\n        if (totalHeatEl) totalHeatEl.textContent = '\u2014';\r\n        return;\r\n    }\r\n    \r\n    const thermalEnergy = totalAnnualGas * gasHeatValue * boilerEfficiency;\r\n    const gasCost = totalAnnualGas * gasPrice;\r\n    const hpCost = (thermalEnergy \/ scop) * elecPrice;\r\n    const savings = gasCost - hpCost;\r\n    \r\n    if (gasCostEl) gasCostEl.textContent = Math.round(gasCost);\r\n    if (hpCostEl) hpCostEl.textContent = Math.round(hpCost);\r\n    if (savingsEl) savingsEl.textContent = Math.round(savings);\r\n    if (totalHeatEl) totalHeatEl.textContent = Math.round(thermalEnergy);\r\n    \r\n    const ecoData = {\r\n        gasCost: Math.round(gasCost),\r\n        hpCost: Math.round(hpCost),\r\n        savings: Math.round(savings),\r\n        thermalEnergy: Math.round(thermalEnergy),\r\n        totalAnnualGas: totalAnnualGas,\r\n        totalWinterGas: totalWinterGas\r\n    };\r\n    localStorage.setItem('altal_economics', JSON.stringify(ecoData));\r\n}\r\n\r\nfunction hlApplyCorrection() {\r\n    const q_peak = _lastQpeak || parseFloat(document.getElementById('hlResultQpeak').innerHTML) || 0;\r\n    const factor = parseFloat(document.getElementById('hlCorrectionFactor').value) || 2.0;\r\n    const corrected = Math.round(q_peak * factor * 10) \/ 10;\r\n    document.getElementById('hlCorrectedPower').textContent = corrected + ' kW';\r\n}\r\n\r\n\/\/ ============================================================\r\n\/\/ \u041e\u0422\u041a\u0420\u042b\u0422\u0418\u0415 \u041a\u041e\u041d\u0424\u0418\u0413\u0423\u0420\u0410\u0422\u041e\u0420\u0410\r\n\/\/ ============================================================\r\nfunction hlOpenConfigurator() {\r\n    const q_peak = _lastQpeak || parseFloat(document.getElementById('hlResultQpeak').innerHTML) || 12.5;\r\n    const building_type = document.getElementById('hlBuildingType').value;\r\n    const city = document.getElementById('hlCity').value;\r\n    const system = document.querySelector('.altal-hl-wrapper .step.active[data-step=\"4\"]') ? \r\n        (document.getElementById('hlCorrectionFactor')?.value >= 2.0 ? 'floor' : 'radiator') : \r\n        'floor';\r\n    \r\n    const correctedPower = parseFloat(document.getElementById('hlCorrectedPower').innerHTML) || q_peak * 2.0;\r\n    \r\n    localStorage.setItem('altal_heat_loss', q_peak.toString());\r\n    localStorage.setItem('altal_building_type', building_type);\r\n    localStorage.setItem('altal_region', city);\r\n    localStorage.setItem('altal_system', system);\r\n    localStorage.setItem('altal_recommended_power', correctedPower.toString());\r\n    localStorage.setItem('altal_area', document.getElementById('hlArea').value);\r\n    localStorage.setItem('altal_floors', document.getElementById('hlFloors').value);\r\n    localStorage.setItem('altal_windows', document.getElementById('hlWindowArea').value);\r\n    \r\n    const purpose = document.querySelector('input[name=\"project_purpose\"]:checked')?.value || 'private';\r\n    localStorage.setItem('altal_purpose', purpose);\r\n    \r\n    if (purpose === 'process') {\r\n        localStorage.setItem('altal_process_type', document.getElementById('hlProcessType').value);\r\n        localStorage.setItem('altal_process_inlet', document.getElementById('hlProcessInlet').value);\r\n        localStorage.setItem('altal_process_outlet', document.getElementById('hlProcessOutlet').value);\r\n        localStorage.setItem('altal_process_flow', document.getElementById('hlProcessFlow').value);\r\n        localStorage.setItem('altal_process_power', localStorage.getItem('altal_process_power') || '0');\r\n        localStorage.setItem('altal_process_attr', localStorage.getItem('altal_process_attr') || '');\r\n        localStorage.setItem('altal_process_cascade', localStorage.getItem('altal_process_cascade') || '');\r\n    }\r\n    \r\n    console.log('\ud83d\udce4 \u0414\u0430\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u044b \u0432 Configurator');\r\n    window.location.href = '\/configurator\/';\r\n}\r\n\r\n\/\/ ============================================================\r\n\/\/ \u041f\u0415\u0420\u0415\u041a\u041b\u042e\u0427\u0415\u041d\u0418\u0415 \u041c\u0415\u0416\u0414\u0423 \u0420\u0415\u0416\u0418\u041c\u0410\u041c\u0418\r\n\/\/ ============================================================\r\ndocument.addEventListener('change', function(e) {\r\n    if (e.target && e.target.name === 'project_purpose') {\r\n        const isProcess = e.target.value === 'process';\r\n        const processView = document.getElementById('processView');\r\n        const buildingView = document.getElementById('buildingView');\r\n        const steps = document.querySelectorAll('.altal-hl-wrapper .step');\r\n        const warning = document.getElementById('processWarning');\r\n        const purpose = e.target.value; \/\/ \u2190 \u041f\u041e\u041b\u0423\u0427\u0410\u0415\u041c \u0422\u0418\u041f\r\n        \r\n        if (processView) processView.style.display = isProcess ? 'block' : 'none';\r\n        if (buildingView) buildingView.style.display = isProcess ? 'none' : 'block';\r\n        if (warning) warning.style.display = isProcess ? 'block' : 'none';\r\n        \r\n        steps.forEach(step => {\r\n            const stepNum = parseInt(step.dataset.step);\r\n            if (stepNum && stepNum < 4) {\r\n                step.style.display = isProcess ? 'none' : '';\r\n            }\r\n        });\r\n        \r\n        \/\/ ===== \u0412\u042b\u0417\u042b\u0412\u0410\u0415\u041c \u0424\u0418\u041b\u042c\u0422\u0420\u0410\u0426\u0418\u042e =====\r\n        setDefaultValues(purpose);\r\n        \r\n        if (isProcess) {\r\n            const step4 = document.querySelector('.altal-hl-wrapper .step[data-step=\"4\"]');\r\n            if (step4) {\r\n                step4.style.display = 'block';\r\n                step4.classList.add('active');\r\n            }\r\n            hlUpdateProgress(4);\r\n            setTimeout(hlCalculateProcess, 100);\r\n        } else {\r\n            hlShowStep(1);\r\n        }\r\n    }\r\n});\r\n\r\n\r\n\/\/ ===== \u0424\u0423\u041d\u041a\u0426\u0418\u042f \u0423\u0421\u0422\u0410\u041d\u041e\u0412\u041a\u0418 \u0417\u041d\u0410\u0427\u0415\u041d\u0418\u0419 \u041f\u041e \u0423\u041c\u041e\u041b\u0427\u0410\u041d\u0418\u042e =====\r\nfunction setDefaultValues(purpose) {\r\n    \/\/ \u0421\u043f\u0438\u0441\u043e\u043a \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043d\u044b\u0445 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0438\u043f\u0430\r\n    const allowed = {\r\n        'private': ['Vil\u0103', 'Cas\u0103 privat\u0103'],\r\n        'multi': ['Bloc locuin\u021be', 'Hotel', 'Pensiune'],\r\n        'industrial': ['Oficiu \/ Cl\u0103dire administrativ\u0103', 'Industrial\u0103 tehnic\u0103', 'Industrie alimentar\u0103', 'Industrie chimic\u0103', 'Depozit \/ Logistic\u0103', 'Seral\u0103 \/ Complex agricol', 'Festivit\u0103\u021bi (sal\u0103 evenimente)', 'Piscina', 'Ferm\u0103 agricol\u0103'],\r\n        'process': ['Industrial\u0103 tehnic\u0103', 'Industrie alimentar\u0103', 'Industrie chimic\u0103']\r\n    };\r\n    \r\n    \/\/ \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u043f\u043e\u043b\u0435\u0439\r\n    const defaults = {\r\n        'private': {\r\n            buildingType: 'Vil\u0103',\r\n            area: 150,\r\n            height: 2.75,\r\n            floors: 2,\r\n            wallMaterial: 'BCA',\r\n            wallThickness: 400,\r\n            wallInsulation: 'Spum\u0103 10cm',\r\n            windowType: 'Termopan 2cam',\r\n            windowArea: 22.5,\r\n            roofInsulation: 'Spum\u0103 10cm',\r\n            residents: 4,\r\n            winterTemp: -15,\r\n            summerTemp: 32,\r\n            interiorWinter: 22,\r\n            interiorSummer: 24\r\n        },\r\n        'multi': {\r\n            buildingType: 'Bloc locuin\u021be',\r\n            area: 800,\r\n            height: 2.8,\r\n            floors: 10,\r\n            wallMaterial: 'Beton',\r\n            wallThickness: 500,\r\n            wallInsulation: 'Vat\u0103 10cm',\r\n            windowType: 'Termopan 3cam',\r\n            windowArea: 120,\r\n            roofInsulation: 'Vat\u0103 20cm',\r\n            residents: 80,\r\n            winterTemp: -18,\r\n            summerTemp: 30,\r\n            interiorWinter: 20,\r\n            interiorSummer: 26\r\n        },\r\n        'industrial': {\r\n            buildingType: 'Industrial\u0103 tehnic\u0103',\r\n            area: 2000,\r\n            height: 6.0,\r\n            floors: 1,\r\n            wallMaterial: 'Sandwich',\r\n            wallThickness: 150,\r\n            wallInsulation: 'Spum\u0103 15cm',\r\n            windowType: 'Termopan 2cam',\r\n            windowArea: 100,\r\n            roofInsulation: 'Spum\u0103 20cm',\r\n            residents: 20,\r\n            winterTemp: -20,\r\n            summerTemp: 35,\r\n            interiorWinter: 16,\r\n            interiorSummer: 28\r\n        },\r\n        'process': {\r\n            buildingType: 'Industrial\u0103 tehnic\u0103',\r\n            area: 0,\r\n            height: 0,\r\n            floors: 1,\r\n            wallMaterial: 'Sandwich',\r\n            wallThickness: 150,\r\n            wallInsulation: 'Spum\u0103 15cm',\r\n            windowType: 'Termopan 2cam',\r\n            windowArea: 0,\r\n            roofInsulation: 'Spum\u0103 20cm',\r\n            residents: 0,\r\n            winterTemp: -20,\r\n            summerTemp: 35,\r\n            interiorWinter: 16,\r\n            interiorSummer: 28\r\n        }\r\n    };\r\n    \r\n    const d = defaults[purpose] || defaults['private'];\r\n    const allowedList = allowed[purpose] || allowed['private'];\r\n    \r\n    \/\/ ===== \u0424\u0418\u041b\u042c\u0422\u0420\u0423\u0415\u041c \u0421\u041f\u0418\u0421\u041e\u041a \u041a\u0410\u0422\u0415\u0413\u041e\u0420\u0418\u0419 =====\r\n    const select = document.getElementById('hlBuildingType');\r\n    if (select) {\r\n        const options = select.querySelectorAll('option');\r\n        options.forEach(opt => {\r\n            const text = opt.textContent.trim();\r\n            opt.style.display = (allowedList.includes(text) || text === 'Altele') ? '' : 'none';\r\n        });\r\n        \r\n        \/\/ \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e\r\n        options.forEach(opt => {\r\n            if (opt.textContent.trim() === d.buildingType) {\r\n                select.value = opt.value;\r\n            }\r\n        });\r\n    }\r\n    \r\n    \/\/ ===== \u0423\u0421\u0422\u0410\u041d\u0410\u0412\u041b\u0418\u0412\u0410\u0415\u041c \u041e\u0421\u0422\u0410\u041b\u042c\u041d\u042b\u0415 \u041f\u041e\u041b\u042f =====\r\n    const setValue = (id, value) => {\r\n        const el = document.getElementById(id);\r\n        if (el && (el.type === 'number' || el.type === 'text')) {\r\n            el.value = value;\r\n        }\r\n    };\r\n    \r\n    setValue('hlArea', d.area);\r\n    setValue('hlHeight', d.height);\r\n    setValue('hlFloors', d.floors);\r\n    setValue('hlWallMaterial', d.wallMaterial);\r\n    setValue('hlWallThickness', d.wallThickness);\r\n    setValue('hlWallInsulation', d.wallInsulation);\r\n    setValue('hlWindowType', d.windowType);\r\n    setValue('hlWindowArea', d.windowArea);\r\n    setValue('hlRoofInsulation', d.roofInsulation);\r\n    setValue('hlResidentsCount', d.residents);\r\n    setValue('hlWinterTemp', d.winterTemp);\r\n    setValue('hlSummerTemp', d.summerTemp);\r\n    setValue('hlInteriorWinter', d.interiorWinter);\r\n    setValue('hlInteriorSummer', d.interiorSummer);\r\n}\r\n\r\n\r\n\/\/ ============================================================\r\n\/\/ \u0410\u0412\u0422\u041e\u041c\u0410\u0422\u0418\u0427\u0415\u0421\u041a\u0418\u0419 \u041f\u0415\u0420\u0415\u0421\u0427\u0415\u0422\r\n\/\/ ============================================================\r\ndocument.addEventListener('DOMContentLoaded', function() {\r\n    \/\/ ===== \u0423\u0421\u0422\u0410\u041d\u041e\u0412\u041a\u0410 \u0417\u041d\u0410\u0427\u0415\u041d\u0418\u0419 \u041f\u041e \u0423\u041c\u041e\u041b\u0427\u0410\u041d\u0418\u042e =====\r\n    setDefaultValues('private');\r\n    \r\n    hlUpdateCities();\r\n    \r\n    document.querySelectorAll('.altal-hl-wrapper .checkbox-item input[type=\"checkbox\"]').forEach(cb => {\r\n        cb.addEventListener('change', function() {\r\n            this.closest('.checkbox-item').classList.toggle('checked', this.checked);\r\n        });\r\n    });\r\n    \r\n    document.getElementById('hlArea').addEventListener('input', hlUpdateVolume);\r\n    document.getElementById('hlHeight').addEventListener('input', hlUpdateVolume);\r\n    hlUpdateVolume();\r\n    \r\n    document.getElementById('hlCorrectionFactor').addEventListener('change', hlApplyCorrection);\r\n    \r\n    document.getElementById('hlClimateSource').addEventListener('change', function() {\r\n        hlUpdateClimateData();\r\n    });\r\n    \r\n    setTimeout(hlUpdateClimateData, 100);\r\n    \r\n    \/\/ ===== \u0410\u0412\u0422\u041e\u041c\u0410\u0422\u0418\u0427\u0415\u0421\u041a\u0418\u0419 \u041f\u0415\u0420\u0415\u0421\u0427\u0415\u0422 \u041f\u041e \u041c\u0415\u0421\u042f\u0426\u0410\u041c =====\r\n    for (let i = 1; i <= 12; i++) {\r\n        const el = document.getElementById('gas_' + i);\r\n        if (el) {\r\n            el.addEventListener('input', hlCalculateGasEconomics);\r\n            el.addEventListener('change', hlCalculateGasEconomics);\r\n        }\r\n    }\r\n    \r\n    ['hlGasPrice', 'hlElecPrice', 'hlGasHeatValue', 'hlBoilerEfficiency', 'scopInput'].forEach(id => {\r\n        const el = document.getElementById(id);\r\n        if (el) {\r\n            el.addEventListener('input', hlCalculateGasEconomics);\r\n            el.addEventListener('change', hlCalculateGasEconomics);\r\n        }\r\n    });\r\n    \r\n    ['heatingSeasonStart', 'heatingSeasonEnd'].forEach(id => {\r\n        const el = document.getElementById(id);\r\n        if (el) {\r\n            el.addEventListener('change', hlCalculateGasEconomics);\r\n        }\r\n    });\r\n    \r\n    setTimeout(hlCalculateGasEconomics, 500);\r\n});\r\n\r\nconsole.log('\u2705 ALTAL Heat Loss Calculator v4.1 - FINAL');\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-79952b8 elementor-widget elementor-widget-text-editor\" data-id=\"79952b8\" 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<p>Calculul necesarului termic este primul pas pentru dimensionarea corect\u0103 a unui sistem de \u00eenc\u0103lzire.<br \/>Un calcul corect permite alegerea unei pompe de c\u0103ldur\u0103 cu puterea potrivit\u0103, evit\u00e2nd at\u00e2t supradimensionarea, c\u00e2t \u0219i func\u021bionarea insuficient\u0103 a echipamentului.<br \/>ALTAL ofer\u0103 instrumente inteligente pentru estimarea necesarului de c\u0103ldur\u0103 al locuin\u021belor \u0219i configurarea sistemelor HVAC eficiente.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d8166ea elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"d8166ea\" 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-08aa1f3 elementor-widget elementor-widget-heading\" data-id=\"08aa1f3\" 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\">Calcul necesar termic pentru alegerea unei pompe de c\u0103ldur\u0103\n\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-37937251 elementor-widget elementor-widget-text-editor\" data-id=\"37937251\" 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<h2>\u00a0<\/h2><h2><span style=\"color: #333399;\">Ce este necesarul termic al unei cl\u0103diri?<\/span><\/h2><p>Necesarul termic reprezint\u0103 cantitatea de energie necesar\u0103 pentru men\u021binerea temperaturii dorite \u00eentr-o cl\u0103dire \u00een condi\u021bii de temperatur\u0103 exterioar\u0103 specifice.<br \/>Calcul necesar termic ia \u00een considerare pierderile de c\u0103ldur\u0103 prin pere\u021bi, ferestre, acoperi\u0219, podea \u0219i ventila\u021bie.<\/p><h2><span style=\"color: #333399;\">De ce este important calculul necesarului termic?<\/span><\/h2><h3>\ud83d\udd25 Alegerea corect\u0103 a pompei de c\u0103ldur\u0103<\/h3><p>O pomp\u0103 de c\u0103ldur\u0103 prea mic\u0103 nu poate asigura confortul necesar, iar una prea mare poate cre\u0219te costurile \u0219i reduce eficien\u021ba.<\/p><h3>\u26a1 Consum energetic optim<\/h3><p>Dimensionarea corect\u0103 contribuie la un <a href=\"https:\/\/en.wikipedia.org\/wiki\/Coefficient_of_performance\" target=\"_blank\" rel=\"noopener\">COP<\/a> \u0219i <a href=\"https:\/\/en.wikipedia.org\/wiki\/Seasonal_energy_efficiency_ratio\" target=\"_blank\" rel=\"noopener\">SCOP<\/a> mai bune \u0219i la reducerea consumului electric.<\/p><h3>\ud83c\udfe0 Confort constant<\/h3><p>Sistemul func\u021bioneaz\u0103 stabil \u0219i men\u021bine temperatura dorit\u0103 \u00een locuin\u021b\u0103.<\/p><h2><span style=\"color: #333399;\">Ce date sunt necesare pentru calcul?<\/span><\/h2><p>\u2713 Suprafa\u021ba locuin\u021bei<br \/>\u2713 Volumul \u00eenc\u0103perilor<br \/>\u2713 Zona climatic\u0103<br \/>\u2713 Izola\u021bia pere\u021bilor<br \/>\u2713 Tipul ferestrelor<br \/>\u2713 Temperatura interioar\u0103 dorit\u0103<br \/>\u2713 Sistemul de \u00eenc\u0103lzire utilizat<br \/>\u2713 Temperatura agentului termic<\/p><h3>Cum calculeaz\u0103 ALTAL AI necesarul termic?<\/h3><p><a href=\"https:\/\/altal.md\/ro\/altal-ai-asistent-inteligent\/\" target=\"_blank\" rel=\"noopener\">ALTAL AI<\/a> va putea analiza automat caracteristicile cl\u0103dirii \u0219i va recomanda puterea optim\u0103 a pompei de c\u0103ldur\u0103, calcul necesar termic, configura\u021bia sistemului \u0219i componentele necesare.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0790466 elementor-widget elementor-widget-text-editor\" data-id=\"0790466\" 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<p>Calculul necesarului termic este primul pas pentru dimensionarea corect\u0103 a unui sistem de \u00eenc\u0103lzire.<br \/>Un calcul corect permite alegerea unei pompe de c\u0103ldur\u0103 cu puterea potrivit\u0103, evit\u00e2nd at\u00e2t supradimensionarea, c\u00e2t \u0219i func\u021bionarea insuficient\u0103 a echipamentului.<br \/>ALTAL ofer\u0103 instrumente inteligente pentru estimarea necesarului de c\u0103ldur\u0103 al locuin\u021belor \u0219i configurarea sistemelor HVAC eficiente.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5d92026 elementor-widget elementor-widget-text-editor\" data-id=\"5d92026\" 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<p>Calculul necesarului termic este primul pas pentru dimensionarea corect\u0103 a unui sistem de \u00eenc\u0103lzire.<br \/>Un calcul corect permite alegerea unei pompe de c\u0103ldur\u0103 cu puterea potrivit\u0103, evit\u00e2nd at\u00e2t supradimensionarea, c\u00e2t \u0219i func\u021bionarea insuficient\u0103 a echipamentului.<br \/>ALTAL ofer\u0103 instrumente inteligente pentru estimarea necesarului de c\u0103ldur\u0103 al locuin\u021belor \u0219i configurarea sistemelor HVAC eficiente.<\/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\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>A ALTAL Heat Loss Calculator v4.1 Calcul termic profesional cu date climatice istorice (2016-2026) \ud83d\udccd Loca\u021bie, clim\u0103 \u0219i confort interior \ud83c\udfaf Selecta\u021bi scopul proiectului: Reziden\u021bial privatCase, vile Reziden\u021bial multietajatBlocuri Industrial \/ ComercialFabrici, depozite Apa tehnologic\u0103Produc\u021bie \u26a0\ufe0f Pentru Apa tehnologic\u0103 \/ Abur, ve\u021bi putea introduce parametrii specifici pe ultimul pas. \u021aara * MoldovaRom\u00e2niaUcraina Ora\u0219ul * Temperatur\u0103&#8230;<\/p>","protected":false},"author":1,"featured_media":12191,"parent":12154,"menu_order":1,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kad_post_transparent":"default","_kad_post_title":"default","_kad_post_layout":"default","_kad_post_sidebar_id":"","_kad_post_content_style":"default","_kad_post_vertical_padding":"default","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"footnotes":""},"class_list":["post-12140","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/altal.md\/ru\/wp-json\/wp\/v2\/pages\/12140","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/altal.md\/ru\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/altal.md\/ru\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/altal.md\/ru\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/altal.md\/ru\/wp-json\/wp\/v2\/comments?post=12140"}],"version-history":[{"count":343,"href":"https:\/\/altal.md\/ru\/wp-json\/wp\/v2\/pages\/12140\/revisions"}],"predecessor-version":[{"id":12913,"href":"https:\/\/altal.md\/ru\/wp-json\/wp\/v2\/pages\/12140\/revisions\/12913"}],"up":[{"embeddable":true,"href":"https:\/\/altal.md\/ru\/wp-json\/wp\/v2\/pages\/12154"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/altal.md\/ru\/wp-json\/wp\/v2\/media\/12191"}],"wp:attachment":[{"href":"https:\/\/altal.md\/ru\/wp-json\/wp\/v2\/media?parent=12140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}