{"id":125168,"date":"2025-03-14T14:09:42","date_gmt":"2025-03-14T13:09:42","guid":{"rendered":"http:\/\/rointe.com\/?page_id=125168"},"modified":"2026-03-31T15:48:45","modified_gmt":"2026-03-31T13:48:45","slug":"verwarmingscalculator","status":"publish","type":"page","link":"https:\/\/rointe.com\/nl\/verwarmingscalculator\/","title":{"rendered":"Verwarmingscalculator"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"125168\" class=\"elementor elementor-125168 elementor-73761\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a1d0f57 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"a1d0f57\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0f6b7e0 elementor-widget elementor-widget-heading\" data-id=\"0f6b7e0\" 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\">Verwarmingscalculator<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-eeb9afe e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"eeb9afe\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9a44055 elementor-widget elementor-widget-text-editor\" data-id=\"9a44055\" 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<div class=\"flex-shrink-0 flex flex-col relative items-end\"><div class=\"pt-0\"><div class=\"gizmo-bot-avatar flex h-8 w-8 items-center justify-center overflow-hidden rounded-full\"><div class=\"relative p-1 rounded-sm flex items-center justify-center bg-token-main-surface-primary text-token-text-primary h-8 w-8\"><p>Onze verwarmingscalculator helpt je nauwkeurig te bepalen welk type apparaat je nodig hebt voor je ruimte. Door de energiebehoeften van je woning te berekenen, zorgen we ervoor dat de apparatuur die je kiest effici\u00ebnt, economisch en geschikt is voor je specifieke behoeften. Je optimaliseert niet alleen het energieverbruik, maar zorgt ook voor een comfortabele en warme omgeving, vermijdt onnodige kosten en beschermt het milieu.<\/p><\/div><\/div><\/div><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-341c6e2 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"341c6e2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-d0bbc1a e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"d0bbc1a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5811db7 elementor-widget elementor-widget-heading\" data-id=\"5811db7\" 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\">Klimaatzones<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c3b3689 elementor-widget elementor-widget-image\" data-id=\"c3b3689\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"515\" height=\"486\" src=\"https:\/\/rointe.com\/wp-content\/uploads\/2025\/11\/temp-nl.png\" class=\"attachment-full size-full wp-image-137473\" alt=\"\" srcset=\"https:\/\/rointe.com\/wp-content\/uploads\/2025\/11\/temp-nl.png 515w, https:\/\/rointe.com\/wp-content\/uploads\/2025\/11\/temp-nl-300x283.png 300w\" sizes=\"auto, (max-width: 515px) 100vw, 515px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-8444603 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"8444603\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-8d65139 e-grid e-con-full wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"8d65139\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-f629f5f e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"f629f5f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-c638237 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"c638237\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ddd31fd elementor-widget elementor-widget-heading\" data-id=\"ddd31fd\" 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\">A<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d180639 elementor-widget elementor-widget-heading\" data-id=\"d180639\" 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\">Warm<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-853ea11 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"853ea11\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-e4d14b6 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"e4d14b6\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7e6d643 elementor-widget elementor-widget-heading\" data-id=\"7e6d643\" 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\">B<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-95e1141 elementor-widget elementor-widget-heading\" data-id=\"95e1141\" 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\">Koud<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-522a9f7 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"522a9f7\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-b73cf0e e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"b73cf0e\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9b1a4cf elementor-widget elementor-widget-heading\" data-id=\"9b1a4cf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">C<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-21f9a01 elementor-widget elementor-widget-heading\" data-id=\"21f9a01\" 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\">Zeer koud<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-498af9e e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"498af9e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-efdcc50 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"efdcc50\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-733e29a elementor-widget elementor-widget-heading\" data-id=\"733e29a\" 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\">D<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-255c7b7 elementor-widget elementor-widget-heading\" data-id=\"255c7b7\" 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\">Extra koud<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dd14511 elementor-widget elementor-widget-html\" data-id=\"dd14511\" 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<div class=\"rointe-cart\">\r\n  <div class=\"cart-grid\">\r\n    <!-- IZQUIERDA -->\r\n    <div class=\"cart-left\">\r\n      <form id=\"rointeGlobal\">\r\n        <div class=\"form-row\">\r\n          <div class=\"form-group\">\r\n            <label for=\"zonaGlobal\">Klimaatzone<\/label>\r\n            <select id=\"zonaGlobal\" required>\r\n              <option value=\"\">Selecteer gebied<\/option>\r\n              <option value=\"mild\">A - Warm<\/option>\r\n              <option value=\"cold\">B - Koud<\/option>\r\n              <option value=\"verycold\">C - Heel koud<\/option>\r\n              <option value=\"extracold\">D - Extra koud<\/option>\r\n            <\/select>\r\n          <\/div>\r\n\r\n          <div class=\"form-group\">\r\n            <label for=\"tipoGlobal\">Type product<\/label>\r\n            <select id=\"tipoGlobal\" required>\r\n              <option value=\"\">Selecteer een optie<\/option>\r\n              <option value=\"radiador\">Radiator \/ Handdoekhouder<\/option>\r\n              <!--<option value=\"storage\">Warmteaccumulator<\/option>-->\r\n              <option value=\"suelo\">Vloerverwarming<\/option>\r\n            <\/select>\r\n          <\/div>\r\n\r\n          <button type=\"button\" id=\"addRoom\" class=\"btn-solid\" disabled>VERBLIJF TOEVOEGEN<\/button>\r\n        <\/div>\r\n\r\n        <!-- mocks iniciales (no se usan, los reemplazamos din\u00e1micamente) -->\r\n        <input type=\"hidden\" name=\"device_1\">\r\n        <input type=\"hidden\" name=\"device_2\">\r\n        <input type=\"hidden\" name=\"device_3\">\r\n      <\/form>\r\n\r\n      <div id=\"activeRoomWrap\"><\/div>\r\n\r\n      <!-- BLOQUE DE RECOMENDACIONES -->\r\n      <div id=\"recommendations\" class=\"recs hidden\"><\/div>\r\n\t  <!-- CACHE oculto: Elementor renderiza aqu\u00ed y encola estilos\/scripts correctamente -->\r\n<div id=\"recsCache\" class=\"hidden\" aria-hidden=\"true\" style=\"display:none!important\">\r\n  <div data-rec=\"radiator\">\t\t<div data-elementor-type=\"section\" data-elementor-id=\"137378\" class=\"elementor elementor-137378 elementor-135125\" data-elementor-post-type=\"elementor_library\">\n\t\t\t<div class=\"elementor-element elementor-element-0f279df e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"0f279df\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6100da9 elementor-widget elementor-widget-heading\" data-id=\"6100da9\" 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\">RADIATOREN<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e88bcc0 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"e88bcc0\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-7195535 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"7195535\" 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-1a5ce50 elementor-widget elementor-widget-heading\" data-id=\"1a5ce50\" 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\">Welke technologie moet je kiezen?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-23d4029 elementor-widget elementor-widget-text-editor\" data-id=\"23d4029\" 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>Afhankelijk van uw levensstijl en behoeften zal de ene of de andere technologie het beste bij u passen. U kunt echter beide soorten elektrische radiatortechnologie\u00ebn in uw woning combineren. Bijvoorbeeld een olieradiator in de woonkamer en een radiator met natuurstenen kern in de slaapkamer.<\/p><p>Rointe adviseert:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1703ebc e-grid e-con-full wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"1703ebc\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-d0e8bbf e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"d0e8bbf\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-495fb45 elementor-widget elementor-widget-image\" data-id=\"495fb45\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"666\" src=\"https:\/\/rointe.com\/wp-content\/uploads\/2024\/11\/Rointe-belize-installed-home.jpg\" class=\"attachment-full size-full wp-image-18661\" alt=\"\" srcset=\"https:\/\/rointe.com\/wp-content\/uploads\/2024\/11\/Rointe-belize-installed-home.jpg 1000w, https:\/\/rointe.com\/wp-content\/uploads\/2024\/11\/Rointe-belize-installed-home-600x400.jpg 600w, https:\/\/rointe.com\/wp-content\/uploads\/2024\/11\/Rointe-belize-installed-home-300x200.jpg 300w, https:\/\/rointe.com\/wp-content\/uploads\/2024\/11\/Rointe-belize-installed-home-768x511.jpg 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/>\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">WEG VAN HUIS<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\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-00aa20e elementor-widget elementor-widget-heading\" data-id=\"00aa20e\" 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\">Thermal Fluid Tech<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ad3342d elementor-widget elementor-widget-heading\" data-id=\"ad3342d\" 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\">Als u en uw gezin tijd buitenshuis doorbrengen en bij terugkomst sneller een aangename temperatuur willen.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6d0d476 elementor-align-center elementor-tablet-align-center elementor-widget elementor-widget-button\" data-id=\"6d0d476\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/rointe.com\/nl\/prod-tag-nl\/vloeistofradiatoren\/\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Bekijk thermische vloeistofradiatoren<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-350324f e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"350324f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d299f58 elementor-widget elementor-widget-image\" data-id=\"d299f58\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"682\" src=\"https:\/\/rointe.com\/wp-content\/uploads\/2024\/11\/Rointe-olympia-family.jpg\" class=\"attachment-full size-full wp-image-18695\" alt=\"\" srcset=\"https:\/\/rointe.com\/wp-content\/uploads\/2024\/11\/Rointe-olympia-family.jpg 1024w, https:\/\/rointe.com\/wp-content\/uploads\/2024\/11\/Rointe-olympia-family-600x400.jpg 600w, https:\/\/rointe.com\/wp-content\/uploads\/2024\/11\/Rointe-olympia-family-300x200.jpg 300w, https:\/\/rointe.com\/wp-content\/uploads\/2024\/11\/Rointe-olympia-family-768x512.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">THUIS<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\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-1ed9c7f elementor-widget elementor-widget-heading\" data-id=\"1ed9c7f\" 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\">Natur Stone Tech<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-37eac7f elementor-widget elementor-widget-heading\" data-id=\"37eac7f\" 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\">If you need your <strong>heating to last longer<\/strong>, taking advantage of the inertia of the stone to save money.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-43eb1ed elementor-align-center elementor-tablet-align-center elementor-widget elementor-widget-button\" data-id=\"43eb1ed\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/rointe.com\/nl\/prod-tag-nl\/natuursteen\/\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Bekijk natuurstenen radiatoren<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<\/div>\r\n  <div data-rec=\"towel\">\t\t<div data-elementor-type=\"section\" data-elementor-id=\"137372\" class=\"elementor elementor-137372 elementor-135165\" data-elementor-post-type=\"elementor_library\">\n\t\t\t<div class=\"elementor-element elementor-element-0f279df e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"0f279df\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6100da9 elementor-widget elementor-widget-heading\" data-id=\"6100da9\" 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\">HANDDOEKRELLEN<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-168eb14 elementor-widget elementor-widget-text-editor\" data-id=\"168eb14\" 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><span data-olk-copy-source=\"MessageBody\">Ontdek de collectie elektrische handdoekradiatoren van Rointe, ontworpen om <strong>comfort, effici\u00ebntie en elegante stijl<\/strong> te combineren in elke badkamer. Van slimme wifi-modellen met geavanceerde bediening via de Rointe NEXA-app tot eenvoudige plug-in-opties zonder connectiviteit: elke handdoekradiator biedt een optimale warmteverdeling en snelle droging.<\/span><\/p><p><strong>Rointe-handdoekradiatoren zijn verkrijgbaar in verschillende maten, kleuren en afwerkingen en bieden warmte, gemak en design voor elke ruimte.<\/strong><\/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-7dd2a9d elementor-widget elementor-widget-image\" data-id=\"7dd2a9d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1044\" height=\"1044\" src=\"https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/CONJUNTO-SECATOALLAS-dimensionamiento.jpg\" class=\"attachment-full size-full wp-image-137373\" alt=\"\" srcset=\"https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/CONJUNTO-SECATOALLAS-dimensionamiento.jpg 1044w, https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/CONJUNTO-SECATOALLAS-dimensionamiento-300x300.jpg 300w, https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/CONJUNTO-SECATOALLAS-dimensionamiento-1024x1024.jpg 1024w, https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/CONJUNTO-SECATOALLAS-dimensionamiento-150x150.jpg 150w, https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/CONJUNTO-SECATOALLAS-dimensionamiento-768x768.jpg 768w, https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/CONJUNTO-SECATOALLAS-dimensionamiento-350x350.jpg 350w, https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/CONJUNTO-SECATOALLAS-dimensionamiento-650x650.jpg 650w, https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/CONJUNTO-SECATOALLAS-dimensionamiento-100x100.jpg 100w, https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/CONJUNTO-SECATOALLAS-dimensionamiento-50x50.jpg 50w\" sizes=\"auto, (max-width: 1044px) 100vw, 1044px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1017369 elementor-align-center elementor-tablet-align-center elementor-widget elementor-widget-button\" data-id=\"1017369\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/rointe.com\/nl\/prod-tag-nl\/elektrische-handdoekdrogers\/\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Ontdek ons volledige assortiment<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<\/div>\r\n  <div data-rec=\"storage\">\t\t<div data-elementor-type=\"section\" data-elementor-id=\"137369\" class=\"elementor elementor-137369 elementor-135171\" data-elementor-post-type=\"elementor_library\">\n\t\t\t<div class=\"elementor-element elementor-element-0f279df e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"0f279df\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6100da9 elementor-widget elementor-widget-heading\" data-id=\"6100da9\" 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\">STORAGE HEATER<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-fb1c3b0 e-grid e-con-full wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"fb1c3b0\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"bapf_products_apply_filters woocommerce elementor-element elementor-element-58b2086 elementor-grid-mobile-1 elementor-widget-mobile__width-initial elementor-grid-1 elementor-grid-tablet-1 elementor-widget elementor-widget-loop-grid\" data-id=\"58b2086\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_skin&quot;:&quot;product&quot;,&quot;template_id&quot;:137244,&quot;columns_mobile&quot;:1,&quot;columns&quot;:1,&quot;columns_tablet&quot;:1,&quot;edit_handle_selector&quot;:&quot;[data-elementor-type=\\&quot;loop-item\\&quot;]&quot;,&quot;row_gap&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;row_gap_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;row_gap_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"loop-grid.product\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"e-loop-nothing-found-message\">\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-0fca219 eael-dt-th-align-center eael-table-align-center elementor-widget elementor-widget-eael-data-table\" data-id=\"0fca219\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"eael-data-table.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"eael-data-table-wrap\" data-table_id=\"0fca219\" id=\"eael-data-table-wrapper-0fca219\" data-custom_responsive=\"false\">\n\t\t\t<table class=\"tablesorter eael-data-table center\" id=\"eael-data-table-0fca219\">\n\t\t\t    <thead>\n\t\t\t        <tr class=\"table-header\">\n\t\t\t\t\t\t\t\t\t            <th class=\"\" id=\"\" colspan=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"data-table-header-text\">MODELS<\/span><\/th>\n\t\t\t        \t\t\t\t            <th class=\"\" id=\"\" colspan=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"data-table-header-text\">OUTPUT<\/span><\/th>\n\t\t\t        \t\t\t\t        <\/tr>\n\t\t\t    <\/thead>\n\t\t\t  \t<tbody>\n\t\t\t\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<b>SHOXI102\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t500 W\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<b>SHOXI156\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t700 W\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<b>SHOXI222\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t1,000 W\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<b>SHOXI276\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t1,250 W\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<b>SHOXI330\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   \t\t\t\t\t\t\t\t\t\t\t<td colspan=\"\" rowspan=\"\" class=\"\" id=\"\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"td-content-wrapper\"><div class=\"td-content\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t1,500 W\t\t\t\t\t\t\t\t\t\t\t\t<\/div><\/div>\n\t\t\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t        \t\t\t    <\/tbody>\n\t\t\t<\/table>\n\t\t<\/div>\n\t  \t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<\/div>\r\n  <div data-rec=\"milos\">\t\t<div data-elementor-type=\"section\" data-elementor-id=\"137366\" class=\"elementor elementor-137366 elementor-135528\" data-elementor-post-type=\"elementor_library\">\n\t\t\t<div class=\"elementor-element elementor-element-0f279df e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"0f279df\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6100da9 elementor-widget elementor-widget-heading\" data-id=\"6100da9\" 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\"><b>MILOS <\/b>Vloerverwarming<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9b01a71 elementor-widget elementor-widget-text-editor\" data-id=\"9b01a71\" 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>Kies het ideale vloerverwarmingssysteem voor uw woning. Elke technologie is ontworpen om zich aan te passen aan verschillende soorten oppervlakken, waardoor maximaal comfort en effici\u00ebntie worden gegarandeerd.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b39ecb5 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"b39ecb5\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b3048e2 elementor-widget elementor-widget-image\" data-id=\"b3048e2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"353\" src=\"https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/Product-isolated-Rointe-MILOS-1.png\" class=\"attachment-full size-full wp-image-136378\" alt=\"\" srcset=\"https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/Product-isolated-Rointe-MILOS-1.png 500w, https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/Product-isolated-Rointe-MILOS-1-300x212.png 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-891e78a elementor-widget elementor-widget-heading\" data-id=\"891e78a\" 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\">Het <strong>ideale<\/strong> vloerverwarmingssysteem <strong>voor keramische vloeren<\/strong>. Perfect voor badkamers, keukens of elke andere ruimte met keramische vloeren waar warmte en energie-effici\u00ebntie voorop staan.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c49ba6f elementor-align-center elementor-tablet-align-center elementor-widget elementor-widget-button\" data-id=\"c49ba6f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"\/nl\/product\/milos-elektrische-vloerverwarming-voor-keramische-vloeren\/\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Product bekijken<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<\/div>\r\n  <div data-rec=\"erko\">\t\t<div data-elementor-type=\"section\" data-elementor-id=\"137363\" class=\"elementor elementor-137363 elementor-135530\" data-elementor-post-type=\"elementor_library\">\n\t\t\t<div class=\"elementor-element elementor-element-0f279df e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"0f279df\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6100da9 elementor-widget elementor-widget-heading\" data-id=\"6100da9\" 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\"><b>ERKO<\/b> Vloerverwarming<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-19bb14a elementor-widget elementor-widget-text-editor\" data-id=\"19bb14a\" 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>Kies het ideale vloerverwarmingssysteem voor uw woning. Elke technologie is ontworpen om zich aan te passen aan verschillende soorten oppervlakken, waardoor maximaal comfort en effici\u00ebntie worden gegarandeerd.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4ae26d0 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"4ae26d0\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f3f352d elementor-widget elementor-widget-image\" data-id=\"f3f352d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"353\" src=\"https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/Product-isolated-Rointe-ERKO.png\" class=\"attachment-full size-full wp-image-137475\" alt=\"\" srcset=\"https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/Product-isolated-Rointe-ERKO.png 500w, https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/Product-isolated-Rointe-ERKO-300x212.png 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d213cbc elementor-widget elementor-widget-heading\" data-id=\"d213cbc\" 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\">Ontworpen voor materialen zoals <strong>tapijt, hout, laminaat, vinyl en linoleum<\/strong>. Ideaal voor woonkamers, slaapkamers of elke andere ruimte waar u comfort en stijl wilt combineren zonder in te boeten aan kwaliteit.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cc05d1b elementor-align-center elementor-tablet-align-center elementor-widget elementor-widget-button\" data-id=\"cc05d1b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/rointe.com\/nl\/product\/erko-elektrische-vloerverwarming-voor-laminaat-tapijt-vinyl-of-linoleum\/\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Product bekijken<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<\/div>\r\n<\/div>\r\n\r\n    <\/div>\r\n\r\n    <!-- DERECHA -->\r\n    <aside class=\"cart-right\">\r\n      <div class=\"sticky-box\">\r\n        <h3>Samenvatting<\/h3>\r\n\r\n        <div class=\"summary-section\">\r\n          <h4>Verblijven<\/h4>\r\n          <div id=\"sideSummary\" class=\"summary-list\">\r\n            <p class=\"muted\">Er zijn nog geen verblijven toegevoegd.<\/p>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"summary-section\">\r\n          <h4>Totaal aantal apparaten<\/h4>\r\n          <div id=\"sideTotals\" class=\"totals muted\">\u2014<\/div>\r\n        <\/div>\r\n\r\n        <div class=\"summary-section\">\r\n          <button type=\"button\" id=\"showRecs\" class=\"btn-solid full\">AANBEVELINGEN<\/button>\r\n          <button type=\"button\" id=\"clearAll\" class=\"btn-outline full\">ALLES WISSEN<\/button>\r\n        <\/div>\r\n\r\n        <div id=\"leadForm\" class=\"hidden\">\r\n          <h4>Download uw rapport<\/h4>\r\n          <p>Voer uw gegevens in om de PDF met uw aanbevelingen te ontvangen.<\/p>\r\n          \n<div class=\"wpcf7 no-js\" id=\"wpcf7-f137328-o1\" lang=\"nl-NL\" dir=\"ltr\" data-wpcf7-id=\"137328\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/nl\/wp-json\/wp\/v2\/pages\/125168#wpcf7-f137328-o1\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Contactformulier\" novalidate=\"novalidate\" data-status=\"init\">\n<fieldset class=\"hidden-fields-container\"><input type=\"hidden\" name=\"_wpcf7\" value=\"137328\" \/><input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.1.7\" \/><input type=\"hidden\" name=\"_wpcf7_locale\" value=\"nl_NL\" \/><input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f137328-o1\" \/><input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/><input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/><input type=\"hidden\" name=\"_wpcf7cf_hidden_group_fields\" value=\"[]\" \/><input type=\"hidden\" name=\"_wpcf7cf_hidden_groups\" value=\"[]\" \/><input type=\"hidden\" name=\"_wpcf7cf_visible_groups\" value=\"[]\" \/><input type=\"hidden\" name=\"_wpcf7cf_repeaters\" value=\"[]\" \/><input type=\"hidden\" name=\"_wpcf7cf_steps\" value=\"{}\" \/><input type=\"hidden\" name=\"_wpcf7cf_options\" value=\"{&quot;form_id&quot;:137328,&quot;conditions&quot;:[],&quot;settings&quot;:{&quot;animation&quot;:&quot;yes&quot;,&quot;animation_intime&quot;:&quot;200&quot;,&quot;animation_outtime&quot;:&quot;200&quot;,&quot;conditions_ui&quot;:&quot;normal&quot;,&quot;notice_dismissed&quot;:&quot;&quot;,&quot;repeater_remove_button&quot;:&quot;bottom&quot;,&quot;regex_numeric&quot;:&quot;^[0-9]+$&quot;,&quot;regex_alphabetic&quot;:&quot;^[a-zA-Z]+$&quot;,&quot;regex_alphanumeric&quot;:&quot;^[a-zA-Z0-9]+$&quot;,&quot;regex_date&quot;:&quot;^(0?[1-9]|1[012])[- .](0?[1-9]|[12][0-9]|3[01])[- \\\/.](19|20)?[0-9]{2}$&quot;,&quot;regex_email&quot;:&quot;^[a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$&quot;,&quot;regex_numeric_label&quot;:&quot;numeric&quot;,&quot;regex_alphabetic_label&quot;:&quot;alphabetic&quot;,&quot;regex_alphanumeric_label&quot;:&quot;alphanumeric&quot;,&quot;regex_date_label&quot;:&quot;date&quot;,&quot;regex_email_label&quot;:&quot;email&quot;,&quot;regex_custom_1&quot;:&quot;&quot;,&quot;regex_custom_2&quot;:&quot;&quot;,&quot;regex_custom_3&quot;:&quot;&quot;,&quot;regex_custom_4&quot;:&quot;&quot;,&quot;regex_custom_5&quot;:&quot;&quot;,&quot;regex_custom_1_label&quot;:&quot;custom 1&quot;,&quot;regex_custom_2_label&quot;:&quot;custom 2&quot;,&quot;regex_custom_3_label&quot;:&quot;custom 3&quot;,&quot;regex_custom_4_label&quot;:&quot;custom 4&quot;,&quot;regex_custom_5_label&quot;:&quot;custom 5&quot;,&quot;notice_dismissed_rollback-cf7-6.0.2&quot;:true,&quot;notice_dismissed_rollback-cf7-6.0.3&quot;:true,&quot;notice_dismissed_rollback-cf7-6.0.5&quot;:true,&quot;notice_dismissed_rollback-cf7-6.1.1&quot;:true,&quot;notice_dismissed_rollback-cf7-6.1.5&quot;:true}}\" \/>\n<\/fieldset>\n<p><span class=\"wpcf7-form-control-wrap\" data-name=\"your-name\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Voor- en achternaam\" value=\"\" type=\"text\" name=\"your-name\" \/><\/span><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-email\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"E-mail\" value=\"\" type=\"email\" name=\"your-email\" \/><\/span><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-phone\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-tel wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-tel\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Contactnummer\" value=\"\" type=\"tel\" name=\"your-phone\" \/><\/span><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-postal\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Postcode\" value=\"\" type=\"text\" name=\"your-postal\" \/><\/span>\n<\/p>\n<p><span class=\"hidden\"><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-subject\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" aria-invalid=\"false\" value=\"Calculadora NL\" type=\"text\" name=\"your-subject\" \/><\/span><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-summary\"><textarea cols=\"40\" rows=\"10\" maxlength=\"2000\" class=\"wpcf7-form-control wpcf7-textarea\" aria-invalid=\"false\" name=\"your-summary\">Resumen<\/textarea><\/span><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-devices\"><textarea cols=\"40\" rows=\"10\" maxlength=\"2000\" class=\"wpcf7-form-control wpcf7-textarea\" aria-invalid=\"false\" name=\"your-devices\">Dispositivos<\/textarea><\/span><br \/>\n\t<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"device_1\" \/><br \/>\n\t<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"device_2\" \/><br \/>\n\t<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"device_3\" \/><br \/>\n\t<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"device_4\" \/><br \/>\n\t<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"device_5\" \/><br \/>\n\t<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"device_6\" \/><br \/>\n\t<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"device_7\" \/><br \/>\n\t<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"device_8\" \/><br \/>\n\t<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"device_9\" \/><br \/>\n\t<input class=\"wpcf7-form-control wpcf7-hidden\" value=\"\" type=\"hidden\" name=\"device_10\" \/><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-materials\"><textarea cols=\"40\" rows=\"10\" maxlength=\"2000\" class=\"wpcf7-form-control wpcf7-textarea\" aria-invalid=\"false\" name=\"your-materials\"><\/textarea><\/span><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-thermostats\"><textarea cols=\"40\" rows=\"10\" maxlength=\"2000\" class=\"wpcf7-form-control wpcf7-textarea\" aria-invalid=\"false\" name=\"your-thermostats\"><\/textarea><\/span><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-totals\"><textarea cols=\"40\" rows=\"10\" maxlength=\"2000\" class=\"wpcf7-form-control wpcf7-textarea\" aria-invalid=\"false\" name=\"your-totals\">Totales<\/textarea><\/span><br \/>\n<\/span><br \/>\n<span class=\"wpcf7-form-control-wrap kc_captcha\" data-name=\"kc_captcha\"><span class=\"wpcf7-form-control wpcf7-radio\"><span class=\"captcha-image\" ><span class=\"cf7ic_instructions\">Toon a.u.b. dat u menselijk bent door de selectie van<span> de auto<\/span>.<\/span><label><input aria-label=\"1\" type=\"radio\" name=\"kc_captcha\" value=\"bot\" \/><svg aria-hidden=\"true\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 576 512\"><path fill=\"currentColor\" d=\"M415 24c-53 0-103 42-127 65-24-23-74-65-127-65C70 24 16 77 16 166c0 72 67 133 69 135l187 181c9 8 23 8 32 0l187-180c2-3 69-64 69-136 0-89-54-142-145-142z\"\/><\/svg><\/label><label><input aria-label=\"2\" type=\"radio\" name=\"kc_captcha\" value=\"kc_human\" \/><svg aria-hidden=\"true\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\"><path fill=\"currentColor\" d=\"M500 168h-55l-8-21a127 127 0 00-120-83H195a127 127 0 00-120 83l-8 21H12c-8 0-14 8-11 16l8 24a12 12 0 0011 8h29a64 64 0 00-33 56v48c0 16 6 31 16 42v62c0 13 11 24 24 24h48c13 0 24-11 24-24v-40h256v40c0 13 11 24 24 24h48c13 0 24-11 24-24v-62c10-11 16-26 16-42v-48c0-24-13-45-33-56h29a12 12 0 0011-8l8-24c3-8-3-16-11-16zm-365 2c9-25 33-42 60-42h122c27 0 51 17 60 42l15 38H120l15-38zM88 328a32 32 0 010-64c18 0 48 30 48 48s-30 16-48 16zm336 0c-18 0-48 2-48-16s30-48 48-48 32 14 32 32-14 32-32 32z\"\/><\/svg><\/label><label><input aria-label=\"3\" type=\"radio\" name=\"kc_captcha\" value=\"bot\" \/><svg aria-hidden=\"true\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 384 512\"><path fill=\"currentColor\" d=\"M377 375l-83-87h34c21 0 32-25 17-40l-82-88h33c21 0 32-25 18-40L210 8c-10-11-26-11-36 0L70 120c-14 15-3 40 18 40h33l-82 88c-15 15-4 40 17 40h34L7 375c-15 16-4 41 17 41h120c0 33-11 49-34 68-12 9-5 28 10 28h144c15 0 22-19 10-28-20-16-34-32-34-68h120c21 0 32-25 17-41z\"\/><\/svg><\/label>\r\n    <\/span>\r\n    <span style=\"display:none\">\r\n        <input type=\"text\" name=\"kc_honeypot\">\r\n    <\/span><\/span><\/span><br \/>\n<input class=\"wpcf7-form-control wpcf7-submit has-spinner btn-solid\" type=\"submit\" value=\"RAPPORT DOWNLOADEN\" \/><br \/>\n<span class=\"acepta-pdf\">Door de resultaten en aanbevelingen van het onderzoek te <b>downloaden<\/b>, <b>gaat de gebruiker ermee akkoord om per telefoon of e-mail te worden benaderd<\/b> om de verstrekte informatie nader toe te lichten, eventuele vragen te beantwoorden of een gepersonaliseerde follow-up te geven..<\/span>\n<\/p><input type=\"text\" class=\"wpcf7_hp_field\" name=\"wpcf7_hp_field\" value=\"\" tabindex=\"-1\" autocomplete=\"off\" \/><p style=\"display: none !important;\" class=\"akismet-fields-container\" data-prefix=\"_wpcf7_ak_\"><label>&#916;<textarea name=\"_wpcf7_ak_hp_textarea\" cols=\"45\" rows=\"8\" maxlength=\"100\"><\/textarea><\/label><input type=\"hidden\" id=\"ak_js_1\" name=\"_wpcf7_ak_js\" value=\"89\"\/><script>\ndocument.getElementById( \"ak_js_1\" ).setAttribute( \"value\", ( new Date() ).getTime() );\n<\/script>\n<\/p><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n\r\n        <\/div>\r\n      <\/div>\r\n    <\/aside>\r\n  <\/div>\r\n<\/div>\r\n\r\n<!-- Librer\u00edas PDF (obligatorias) -->\r\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js\"><\/script>\r\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf-autotable\/3.5.29\/jspdf.plugin.autotable.min.js\"><\/script>\r\n<script src=\"https:\/\/unpkg.com\/pdf-lib@1.17.1\/dist\/pdf-lib.min.js\"><\/script>\r\n\r\n<style>\r\n\/* Ocultar campos internos que viajan en el email *\/\r\n.wpcf7 textarea[name=\"your-summary\"],\r\n.wpcf7 textarea[name=\"your-devices\"],\r\n.wpcf7 textarea[name=\"your-totals\"],\r\n.wpcf7 textarea[name=\"your-materials\"],\r\n.wpcf7 textarea[name=\"your-thermostats\"] {\r\n  display: none !important;\r\n}\r\n\r\n.hidden { display: none !important; }\r\n\r\n.rond { border-radius: 20px; }\r\nh1 { font-size: 1em; font-family: 'Roboto'; text-align: center; }\r\n\r\ninput[type=text], input[type=number], input[type=email], input[type=tel], select {\r\n  border: 1px solid #ccc !important;\r\n  border-radius: 25px !important;\r\n  padding: .5rem 1rem;\r\n  transition: all .3s;\r\n  width: 100%;\r\n  margin: 5px 0px;\r\n}\r\n\r\n#leadForm {\r\n  margin-top: 1.5rem;\r\n  background: #fff;\r\n  border-radius: 12px;\r\n  box-shadow: 0 6px 20px rgba(0,0,0,0.08);\r\n  padding: 1.25rem;\r\n}\r\n#leadForm.hidden { display: none; }\r\n#leadForm p { font-size: .9rem; color: #555; margin-top: 0; }\r\n#leadForm h4 { margin-top: 0; }\r\n\r\n.project-warning { color:#b30000 !important; font-weight:500; font-size:0.95rem; }\r\n\r\n.rointe-cart{font-family:\"Poppins\",sans-serif;max-width:1200px;margin:0 auto;padding:1rem}\r\n.cart-grid{display:grid;grid-template-columns:60% auto;gap:1.5rem}\r\n.cart-left{background:#fff;border-radius:16px;padding:1.25rem;box-shadow:0 8px 24px rgba(0,0,0,.08);height:fit-content}\r\n.cart-right .sticky-box{position:sticky;top:16px;background:#fff;border-radius:16px;padding:1.25rem;box-shadow:0 8px 24px rgba(0,0,0,.1)}\r\nh3{margin:0 0 .75rem 0;font-size:1.2em}\r\nh4{margin:.75rem 0 .5rem 0;font-size:1.1em}\r\n.form-row{display:flex;gap:1rem;align-items:flex-end;flex-wrap:wrap;margin-bottom:.75rem}\r\n.form-group{flex:1;min-width:220px}\r\nlabel{display:block;font-weight:600;color:#333;margin-bottom:.4rem}\r\ninput,select{width:100%;padding:.6rem;border:1px solid #ccc;border-radius:8px;font-size:1rem;font-family:\"Poppins\",sans-serif}\r\ninput:focus,select:focus{outline:none;border-color:#42b029;box-shadow:0 0 0 2px rgba(66,176,41,.2)}\r\n.btn-solid:focus,.btn-solid:active{background:#42b029;color:#fff;border-color:#42b029}\r\n.btn-outline:focus,.btn-outline:active{background:#fff;color:#42b029;border-color:#42b029}\r\n.btn-solid,.btn-outline{font-weight:500;border-radius:25px !important;padding:.7rem 1rem;cursor:pointer;transition:.25s;width:100%}\r\n.btn-solid{background:#42b029;color:#fff;border:2px solid #42b029}\r\n.btn-solid:hover{background:#fff;color:#42b029}\r\n.btn-outline{background:#fff;color:#42b029;border:2px solid #42b029}\r\n.btn-outline:hover{background:#42b029;color:#fff}\r\n.full{width:100%;margin-top:.5rem}\r\n.room-card{border:1px solid #e6e6e6;border-radius:14px;padding:1rem;margin-top:1rem}\r\n.room-head{display:flex;gap:.75rem;align-items:center;justify-content:space-between;flex-wrap:wrap}\r\n.room-title{font-weight:700}\r\n.grid{display:flex;gap:1rem;margin-top:.75rem;flex-direction:row;flex-wrap:wrap}\r\n.inline-radios{display:inline-flex;gap:1rem;align-items:center}\r\n.muted{color:#6b7280}\r\n.summary-section{border-top:1px dashed #e5e7eb;padding-top:.75rem;margin-top:.75rem}\r\n.summary-item{border:1px solid #f0f0f0;border-radius:12px;padding:.6rem;margin-bottom:.5rem}\r\n.summary-title{font-weight:700;margin-bottom:.25rem}\r\n.summary-actions{display:flex;gap:.5rem;margin-top:.5rem}\r\n.totals .row{display:flex;justify-content:space-between;align-items:flex-start;margin:.35rem 0}\r\n.totals .label{color:#374151}\r\n.totals .val{font-weight:600;white-space:pre-line}\r\n.recs{margin-top:2rem;padding:1.5rem;border-radius:16px;opacity:0;transition:opacity .35s ease;display:flex;flex-wrap:nowrap;gap:1.5rem;justify-content:flex-start;flex-direction:column;align-items:center}\r\n.recs.visible{opacity:1}\r\n.shortcode-placeholder{border-radius:20px;background:#fafafa;padding:1rem}\r\n.hidden{display:none!important}\r\n@media (max-width:1024px){.cart-grid{grid-template-columns:1fr}}\r\n<\/style>\r\n\r\n<script>\r\n\/* === CONFIGURACI\u00d3N BASE === *\/\r\nconst BASE_W_M2_RADIATOR=74, BASE_W_M2_STORAGE=103.2;\r\nconst ZONES={mild:1.0,cold:1.05,verycold:1.1,extracold:1.15};\r\nconst WALLS={\"1\":1.0,\"2\":1.05,\"3\":1.093},INSUL={good:1.0,avg:1.1,poor:1.2},FLOOR={ground:1.0,middle:1.0,top:0.94};\r\nconst LIMITS={radiador:50,storage:30};\r\nconst RADS=[600,1200,1800];\r\nconst STORAGES = [500, 700, 1000, 1250, 1500];\r\nconst RAD_RANGES=[\r\n  {min:100,max:649,combo:[{p:600,c:1}]},\r\n  {min:650,max:1249,combo:[{p:1200,c:1}]},\r\n  {min:1250,max:1899,combo:[{p:1800,c:1}]},\r\n  {min:1900,max:2499,combo:[{p:1200,c:2}]},\r\n  {min:2500,max:3099,combo:[{p:1800,c:1},{p:1200,c:1}]},\r\n  {min:3100,max:3699,combo:[{p:1800,c:2}]},\r\n  {min:3700,max:4299,combo:[{p:1800,c:1},{p:1200,c:2}]},\r\n  {min:4300,max:4899,combo:[{p:1800,c:2},{p:1200,c:1}]},\r\n  {min:4900,max:5400,combo:[{p:1800,c:3}]}\r\n];\r\nconst STORAGE_RANGES = [\r\n  { min: 100,  max: 599,  combo: [{ p: 500,  c: 1 }] },\r\n  { min: 600,  max: 799,  combo: [{ p: 700,  c: 1 }] },\r\n  { min: 800,  max: 1099, combo: [{ p: 1000, c: 1 }] },\r\n  { min: 1100, max: 1349, combo: [{ p: 1250, c: 1 }] },\r\n  { min: 1350, max: 1599, combo: [{ p: 1500, c: 1 }] },\r\n  { min: 1600, max: 2099, combo: [{ p: 1000, c: 2 }] },\r\n  { min: 2100, max: 2599, combo: [{ p: 1250, c: 2 }] },\r\n  { min: 2600, max: 3099, combo: [{ p: 1500, c: 2 }] },\r\n  { min: 3100, max: 3599, combo: [{ p: 1250, c: 2 }, { p: 1000, c: 1 }] },\r\n  { min: 3600, max: 4099, combo: [{ p: 1500, c: 2 }, { p: 1000, c: 1 }] },\r\n  { min: 4100, max: 4499, combo: [{ p: 1500, c: 3 }] },\r\n  { min: 4500, max: 5000, combo: [{ p: 1500, c: 2 }, { p: 1000, c: 2 }] }\r\n];\r\n\r\n\/* === Vloerverwarming === *\/\r\nconst SR_POWER = { ceramico:150, vinilo:140, parquet:140 }; \/\/ W\/m\u00b2\r\n\/\/ ===== CONFIGURACI\u00d3N DEFINITIVA DE MALLAS =====\r\nconst MILOS_SIZES = [\r\n  {min:1,max:1.4,combo:[{p:1,c:1}]},\r\n  {min:1.5,max:1.9,combo:[{p:1.5,c:1}]},\r\n  {min:2,max:2.4,combo:[{p:2,c:1}]},\r\n  {min:2.5,max:2.9,combo:[{p:2.5,c:1}]},\r\n  {min:3,max:3.4,combo:[{p:3,c:1}]},\r\n  {min:3.5,max:3.9,combo:[{p:3.5,c:1}]},\r\n  {min:4,max:4.4,combo:[{p:4,c:1}]},\r\n  {min:4.5,max:4.9,combo:[{p:4.5,c:1}]},\r\n  {min:5,max:5.9,combo:[{p:5,c:1}]},\r\n  {min:6,max:6.9,combo:[{p:6,c:1}]},\r\n  {min:7,max:7.9,combo:[{p:7,c:1}]},\r\n  {min:8,max:8.9,combo:[{p:8,c:1}]},\r\n  {min:9,max:9.9,combo:[{p:9,c:1}]},\r\n  {min:10,max:10.9,combo:[{p:10,c:1}]},\r\n  {min:11,max:11.9,combo:[{p:10,c:1}]},\r\n  {min:12,max:12.9,combo:[{p:12,c:1}]},\r\n  {min:13,max:13.9,combo:[{p:12,c:1}]},\r\n  {min:14,max:14.9,combo:[{p:7,c:2}]},\r\n  {min:15,max:15.9,combo:[{p:7,c:2}]},\r\n  {min:16,max:16.9,combo:[{p:8,c:2}]},\r\n  {min:17,max:17.9,combo:[{p:8,c:2}]},\r\n  {min:18,max:18.9,combo:[{p:9,c:2}]},\r\n  {min:19,max:19.9,combo:[{p:9,c:2}]},\r\n  {min:20,max:20.9,combo:[{p:10,c:2}]},\r\n  {min:21,max:21.9,combo:[{p:10,c:2}]},\r\n  {min:22,max:22.9,combo:[{p:10,c:1},{p:12,c:1}]},\r\n  {min:23,max:23.9,combo:[{p:10,c:1},{p:12,c:1}]},\r\n  {min:24,max:24.9,combo:[{p:12,c:2}]},\r\n  {min:25,max:25.9,combo:[{p:9,c:2},{p:7,c:1}]},\r\n  {min:26,max:26.9,combo:[{p:9,c:2},{p:8,c:1}]},\r\n  {min:27,max:27.9,combo:[{p:9,c:3}]},\r\n  {min:28,max:28.9,combo:[{p:10,c:2},{p:8,c:1}]},\r\n  {min:29,max:29.9,combo:[{p:10,c:2},{p:9,c:1}]},\r\n  {min:30,max:30.9,combo:[{p:10,c:3}]},\r\n  {min:31,max:31.9,combo:[{p:10,c:2},{p:9,c:1}]},\r\n  {min:32,max:32.9,combo:[{p:12,c:1},{p:10,c:2}]},\r\n  {min:33,max:33.9,combo:[{p:12,c:1},{p:10,c:2}]},\r\n  {min:34,max:34.9,combo:[{p:12,c:2},{p:10,c:1}]},\r\n  {min:35,max:35.9,combo:[{p:12,c:2},{p:10,c:1}]},\r\n  {min:36,max:37,combo:[{p:12,c:3}]},\r\n  {min:37.1,max:38,combo:[{p:10,c:3},{p:8,c:1}]},\r\n  {min:38.1,max:39,combo:[{p:10,c:3},{p:9,c:1}]},\r\n  {min:39.1,max:40,combo:[{p:10,c:4}]},\r\n];\r\n\r\nconst ERKO_SIZES = [\r\n  {min:1,max:1.4,combo:[{p:1,c:1}]},\r\n  {min:1.5,max:1.9,combo:[{p:1.5,c:1}]},\r\n  {min:2,max:2.9,combo:[{p:2,c:1}]},\r\n  {min:3,max:3.9,combo:[{p:3,c:1}]},\r\n  {min:4,max:4.9,combo:[{p:4,c:1}]},\r\n  {min:5,max:5.9,combo:[{p:5,c:1}]},\r\n  {min:6,max:6.9,combo:[{p:6,c:1}]},\r\n  {min:7,max:7.9,combo:[{p:7,c:1}]},\r\n  {min:8,max:8.9,combo:[{p:8,c:1}]},\r\n  {min:9,max:9.9,combo:[{p:9,c:1}]},\r\n  {min:10,max:11.9,combo:[{p:10,c:1}]},\r\n  {min:12,max:13.9,combo:[{p:12,c:1}]},\r\n  {min:14,max:14.9,combo:[{p:7,c:2}]},\r\n  {min:15,max:15.9,combo:[{p:8,c:2}]},\r\n  {min:16,max:16.9,combo:[{p:8,c:2}]},\r\n  {min:17,max:17.9,combo:[{p:9,c:2}]},\r\n  {min:18,max:19.9,combo:[{p:9,c:2}]},\r\n  {min:20,max:21.9,combo:[{p:10,c:2}]},\r\n  {min:22,max:23.9,combo:[{p:10,c:1},{p:12,c:1}]},\r\n  {min:24,max:24.9,combo:[{p:12,c:2}]},\r\n  {min:25,max:25.9,combo:[{p:9,c:2},{p:7,c:1}]},\r\n  {min:26,max:26.9,combo:[{p:9,c:2},{p:8,c:1}]},\r\n  {min:27,max:27.9,combo:[{p:9,c:3}]},\r\n  {min:28,max:28.9,combo:[{p:10,c:2},{p:8,c:1}]},\r\n  {min:29,max:29.9,combo:[{p:10,c:2},{p:9,c:1}]},\r\n  {min:30,max:30.9,combo:[{p:10,c:2},{p:9,c:1}]},\r\n  {min:31,max:31.9,combo:[{p:10,c:2},{p:9,c:1}]},\r\n  {min:32,max:33.9,combo:[{p:12,c:1},{p:10,c:2}]},\r\n  {min:34,max:35.9,combo:[{p:12,c:2},{p:10,c:1}]},\r\n  {min:36,max:37.9,combo:[{p:12,c:3}]},\r\n  {min:38,max:38.9,combo:[{p:10,c:3},{p:8,c:1}]},\r\n  {min:39,max:39.9,combo:[{p:10,c:3},{p:9,c:1}]},\r\n  {min:40,max:40,combo:[{p:10,c:4}]},\r\n];\r\n\r\nconst ERKO_PROT_VINILO_PACK = 2.88; \/\/ m\u00b2 por pack (4 hojas 1,2x0,6)\r\nconst ERKO_PROT_PARQUET_ROLL = 7.5; \/\/ m\u00b2 por rol\r\nconst ERKO_TAPE_PER_ROLL = 20; \/\/ m\u00b2 por rol (regla pr\u00e1ctica)\r\nconst MILOS_BASE_ROLLS = [25,10]; \/\/ m\u00b2 por rol\r\nconst MILOS_PANEL_PACK = 3.6; \/\/ m\u00b2 por pack\r\nconst MILOS_TAPE_PER_ROLL = 30; \/\/ m\u00b2 por rol (regla pr\u00e1ctica)\r\nconst MILOS_BANDA_PER_ROLL = 25; \/\/ m\u00b2 por rol (regla pr\u00e1ctica)\r\n\r\n\/* === ESTADO === *\/\r\nlet rooms=[], current=null, editingIndex=null, recsOutdated=false;\r\n\r\n\/* === ELEMENTOS === *\/\r\nconst tipoGlobal=document.getElementById(\"tipoGlobal\"),\r\n      zonaGlobal=document.getElementById(\"zonaGlobal\"),\r\n      addRoomBtn=document.getElementById(\"addRoom\"),\r\n      activeRoomWrap=document.getElementById(\"activeRoomWrap\"),\r\n      sideSummary=document.getElementById(\"sideSummary\"),\r\n      sideTotals=document.getElementById(\"sideTotals\"),\r\n      showRecs=document.getElementById(\"showRecs\"),\r\n      recBox=document.getElementById(\"recommendations\"),\r\n      clearAll=document.getElementById(\"clearAll\");\r\n\r\n\/* === UTILIDADES === *\/\r\nconst el=(t,p={},c=[])=>{const n=document.createElement(t);Object.entries(p).forEach(([k,v])=>{k===\"class\"?n.className=v:k===\"html\"?n.innerHTML=v:n.setAttribute(k,v)});c.forEach(x=>n.appendChild(x));return n;}\r\nconst fmtW=n=>`${Math.round(n)} W`;\r\nconst labelKind=k=>k===\"bath\"?\"Badkamer\":\"Verblijf\";\r\nfunction checkGlobals(){ addRoomBtn.disabled=!(tipoGlobal.value&&zonaGlobal.value); }\r\n\r\n\/* === Recs: estados y helpers === *\/\r\nfunction markRecsOutdated(){\r\n  if(!rooms.length) return;\r\n  if(recsOutdated) return;\r\n  if(recBox.classList.contains(\"visible\")){\r\n    recBox.classList.add(\"pending\");\r\n    showRecs.textContent=\"UPDATE\";\r\n    recsOutdated=true;\r\n  }\r\n}\r\nfunction resetRecsButton(){\r\n  showRecs.textContent=\"AANBEVELINGEN\";\r\n  recBox.classList.remove(\"pending\");\r\n  recsOutdated=false;\r\n}\r\n\r\n\/* === EVENTOS GLOBALES === *\/\r\ntipoGlobal.addEventListener(\"change\",()=>{checkGlobals();renderActiveRoom(); if(rooms.length) markRecsOutdated();});\r\nzonaGlobal.addEventListener(\"change\",()=>{checkGlobals(); if(rooms.length) markRecsOutdated();});\r\naddRoomBtn.addEventListener(\"click\",()=>startNewRoom());\r\n\r\n\/* === FORMULARIO ESTANCIA (una a la vez) === *\/\r\nfunction startNewRoom(){\r\n  if (tipoGlobal.value === \"suelo\"){\r\n    current={srKind:\"ba\u00f1o\", srFloor:\"parquet\", srSbano:0, srSmueble:0, srStotal:0};\r\n  } else {\r\n    current={kind:\"normal\",towel:\"yes\",h:2.5};\r\n  }\r\n  editingIndex=null;\r\n  renderActiveRoom();\r\n}\r\n\r\nfunction renderActiveRoom(){\r\n  activeRoomWrap.innerHTML=\"\";\r\n  if(!current) return;\r\n\r\n  \/* === UI ESPEC\u00cdFICA: SUELO RADIANTE === *\/\r\n  if (tipoGlobal.value === \"suelo\") {\r\n    const card=el(\"div\",{class:\"room-card\"});\r\n    const head=el(\"div\",{class:\"room-head\"},[\r\n      el(\"div\",{class:\"room-title\",html: editingIndex!==null ? \"Verblijf bewerken (Vloerverwarming)\" : \"Nieuw verblijf (Vloerverwarming)\"})\r\n    ]);\r\n    const grid=el(\"div\",{class:\"grid\"});\r\n\r\n    const tipoVerblijf = el(\"select\",{},[\r\n      el(\"option\",{value:\"ba\u00f1o\",html:\"Badkamer\"}),\r\n      el(\"option\",{value:\"otras\",html:\"Andere verblijven\"})\r\n    ]);\r\n    tipoVerblijf.value=current.srKind;\r\n    tipoVerblijf.onchange=e=>{ current.srKind=e.target.value; renderActiveRoom(); };\r\n\r\n    const tipoSuelo = el(\"select\",{},[\r\n      el(\"option\",{value:\"parquet\",html:\"Parket \/ Laminaat (ERKO)\"}),\r\n      el(\"option\",{value:\"vinilo\",html:\"Vinyl \/ Tapijt (ERKO)\"}),\r\n      el(\"option\",{value:\"ceramico\",html:\"Keramiek (MILOS)\"})\r\n    ]);\r\n    tipoSuelo.value=current.srFloor;\r\n    tipoSuelo.onchange=e=>current.srFloor=e.target.value;\r\n\r\n    const nombre=el(\"input\",{type:\"text\",placeholder:\"Naam (optioneel)\"});\r\n    if(current.name) nombre.value=current.name;\r\n    nombre.oninput=e=> current.name=e.target.value;\r\n\r\n    const s1=el(\"input\",{type:\"number\",step:\"0.1\",placeholder:\"m\u00b2\"});\r\n    const s2=el(\"input\",{type:\"number\",step:\"0.1\",placeholder:\"m\u00b2\"});\r\n    const st=el(\"input\",{type:\"number\",step:\"0.1\",placeholder:\"m\u00b2\"});\r\n    if(current.srSbano) s1.value=current.srSbano;\r\n    if(current.srSmueble) s2.value=current.srSmueble;\r\n    if(current.srStotal) st.value=current.srStotal;\r\n    s1.oninput=e=> current.srSbano=parseFloat(e.target.value||0);\r\n    s2.oninput=e=> current.srSmueble=parseFloat(e.target.value||0);\r\n    st.oninput=e=> current.srStotal=parseFloat(e.target.value||0);\r\n\r\n    grid.append(\r\n      el(\"div\",{class:\"form-group\"},[el(\"label\",{html:\"Type verblijf\"}),tipoVerblijf]),\r\n      el(\"div\",{class:\"form-group\"},[el(\"label\",{html:\"Type bodem\"}),tipoSuelo]),\r\n      el(\"div\",{class:\"form-group\"},[el(\"label\",{html:\"Naam\"}),nombre]),\r\n      ...(current.srKind===\"ba\u00f1o\"?[\r\n        el(\"div\",{class:\"form-group\"},[el(\"label\",{html:\"Oppervlakte zonder bad\/douche (m\u00b2)\"}),s1]),\r\n        el(\"div\",{class:\"form-group\"},[el(\"label\",{html:\"Oppervlakte zonder meubilair (m\u00b2)\"}),s2])\r\n      ]:[\r\n        el(\"div\",{class:\"form-group\"},[el(\"label\",{html:\"Totale oppervlakte (m\u00b2)\"}),st])\r\n      ])\r\n    );\r\n\r\n    const btnRow=el(\"div\",{class:\"summary-actions\"},[\r\n      (()=>{const b=el(\"button\",{type:\"button\",class:\"btn-outline\",html: editingIndex!==null ? \"Bijwerken\" : \"Berekenen\"}); b.onclick=onCalculate; return b;})()\r\n    ]);\r\n\r\n    card.append(head,grid,btnRow);\r\n    activeRoomWrap.append(card);\r\n    return;\r\n  }\r\n\r\n  \/* === UI ORIGINAL: RADIADOR \/ STORAGE === *\/\r\n  const card=el(\"div\",{class:\"room-card\"});\r\n  const head=el(\"div\",{class:\"room-head\"},[\r\n    el(\"div\",{class:\"room-title\",html: editingIndex!==null ? \"Verblijf bewerken\" : \"Nieuw verblijf\"})\r\n  ]);\r\n  const grid=el(\"div\",{class:\"grid\"});\r\n\r\n  const kindSel=el(\"select\",{},[\r\n    el(\"option\",{value:\"normal\",html:\"Andere verblijven\"}),\r\n    el(\"option\",{value:\"bath\",html:\"Badkamer\"})\r\n  ]);\r\n  kindSel.value=current.kind;\r\n  kindSel.onchange=e=>{ current.kind=e.target.value; renderActiveRoom(); };\r\n\r\n  const name=el(\"input\",{type:\"text\",placeholder:\"Naam\"});\r\n  if(current.name) name.value=current.name;\r\n  name.oninput=e=> current.name=e.target.value;\r\n\r\n  const s=el(\"input\",{type:\"number\",placeholder:\"m\u00b2\"});\r\n  if(current.m2) s.value=current.m2;\r\n  s.oninput=e=> current.m2=e.target.value;\r\n\r\n  const h = el(\"input\",{type:\"text\",value:\"Kleiner dan of gelijk aan 3\",readonly:true,style:\"background:#f8f8f8;color:#666;cursor:not-allowed;\"});\r\n\r\n  grid.append(\r\n    el(\"div\",{class:\"form-group\"},[el(\"label\",{html:\"Type verblijf\"}),kindSel]),\r\n    el(\"div\",{class:\"form-group\"},[el(\"label\",{html:\"Naam\"}),name]),\r\n    el(\"div\",{class:\"form-group\"},[el(\"label\",{html:\"Oppervlakte (m\u00b2)\"}),s]),\r\n    el(\"div\",{class:\"form-group\"},[\r\n      el(\"label\",{html:\"Plafondhoogte (m)\"}), h,\r\n      el(\"small\",{class:\"muted\",html:\"Voor plafondhoogtes van meer dan 3 m kunt u contact opnemen met de projectafdeling van Rointe.\",style:\"display:block;margin-top:0.25rem;color:#6b7280;font-size:0.9rem;\"})\r\n    ])\r\n  );\r\n\r\n  const towelWrap=el(\"div\",{class: current.kind===\"bath\" ? \"form-group\" : \"form-group hidden\"},[\r\n    el(\"label\",{html:\"Wilt u handdoekrekken toevoegen?\"}),\r\n    el(\"div\",{class:\"inline-radios\"},[\r\n      (()=>{const i=el(\"input\",{type:\"radio\",name:\"twActive\",value:\"yes\"}); i.checked=(current.towel!==\"no\"); i.onchange=()=>current.towel=\"yes\"; return i;})(), el(\"label\",{html:\"Ja\"}),\r\n      (()=>{const i=el(\"input\",{type:\"radio\",name:\"twActive\",value:\"no\"});  i.checked=(current.towel===\"no\"); i.onchange=()=>current.towel=\"no\";  return i;})(), el(\"label\",{html:\"Nee\"})\r\n    ])\r\n  ]);\r\n  grid.append(towelWrap);\r\n\r\n  if(tipoGlobal.value===\"storage\"){\r\n    const ex=el(\"div\",{class:\"grid\"},[\r\n      (()=>{const f=el(\"div\",{class:\"form-group\"});const x=el(\"select\",{},[\r\n        el(\"option\",{value:\"\",html:\"Selecteer\"}),el(\"option\",{value:\"1\",html:\"1 buitenmuur\"}),\r\n        el(\"option\",{value:\"2\",html:\"2 buitenmuren\"}),el(\"option\",{value:\"3\",html:\"3 buitenmuren\"})\r\n      ]); if(current.walls) x.value=current.walls; x.onchange=e=>current.walls=e.target.value; f.append(el(\"label\",{html:\"Buitenmuren\"}),x); return f;})(),\r\n      (()=>{const f=el(\"div\",{class:\"form-group\"});const x=el(\"select\",{},[\r\n        el(\"option\",{value:\"\",html:\"Selecteer\"}),el(\"option\",{value:\"good\",html:\"Goed\"}),\r\n        el(\"option\",{value:\"avg\",html:\"Gemiddeld\"}),el(\"option\",{value:\"poor\",html:\"Slecht\"})\r\n      ]); if(current.insul) x.value=current.insul; x.onchange=e=>current.insul=e.target.value; f.append(el(\"label\",{html:\"Isolatie\"}),x); return f;})(),\r\n      (()=>{const f=el(\"div\",{class:\"form-group\"});const x=el(\"select\",{},[\r\n        el(\"option\",{value:\"\",html:\"Selecteer\"}),el(\"option\",{value:\"ground\",html:\"Begane grond\"}),\r\n        el(\"option\",{value:\"middle\",html:\"Tussenverdieping\"}),el(\"option\",{value:\"top\",html:\"Bovenverdieping\"})\r\n      ]); if(current.floor) x.value=current.floor; x.onchange=e=>current.floor=e.target.value; f.append(el(\"label\",{html:\"Begane\"}),x); return f;})()\r\n    ]);\r\n    grid.append(ex);\r\n  }\r\n\r\n  const btnRow=el(\"div\",{class:\"summary-actions\"},[\r\n    (()=>{const b=el(\"button\",{type:\"button\",class:\"btn-outline\",html: editingIndex!==null ? \"Bijwerken\" : \"Berekenen\"}); b.onclick=onCalculate; return b;})()\r\n  ]);\r\n\r\n  card.append(head,grid,btnRow);\r\n  activeRoomWrap.append(card);\r\n}\r\n\r\n\/* === C\u00c1LCULOS (radiador\/storage) === *\/\r\nfunction calcPower(r){\r\n  const tipo=tipoGlobal.value; if(!tipo||!zonaGlobal.value) return null;\r\n  const s=Math.round(r.m2||0), h=parseFloat(r.h||0), z=ZONES[zonaGlobal.value]||1;\r\n  if(!s||!h||h>=3) return null;\r\n\r\n  if ((tipo === \"radiador\" && s > LIMITS.radiador) || (tipo === \"storage\" && s > LIMITS.storage)) {\r\n    const max = tipo === \"radiador\" ? LIMITS.radiador : LIMITS.storage;\r\n    const msg = `De maximale oppervlakte is ${max} m\u00b2.<br>Neem contact op met de projectafdeling van Rointe voor een gepersonaliseerde studie.`;\r\n    const existing = document.querySelector(\".project-warning\");\r\n    if (!existing) activeRoomWrap.appendChild(el(\"p\",{class:\"muted project-warning\",html:msg,style:\"margin-top:10px;color:#b30000;font-weight:500;\"}));\r\n    return null;\r\n  } else {\r\n    const existing = document.querySelector(\".project-warning\");\r\n    if (existing) existing.remove();\r\n  }\r\n\r\n  let w=s*(tipo===\"radiador\"?BASE_W_M2_RADIATOR:BASE_W_M2_STORAGE)*z;\r\n  if(tipo===\"storage\"){\r\n    if(!r.walls||!r.insul||!r.floor) return null;\r\n    w*=WALLS[r.walls]*INSUL[r.insul]*FLOOR[r.floor];\r\n  }\r\n  return Math.round(w);\r\n}\r\n\r\nfunction recommend(r, w) {\r\n  const tipo = tipoGlobal.value;\r\n  const isBath = r.kind === \"bath\";\r\n  const wantsTowel = r.towel !== \"no\";\r\n  const res = [];\r\n\r\n  \/\/ \ud83d\udd39 Handdoekhouder si es ba\u00f1o\r\n  if (isBath && wantsTowel) {\r\n  let t = w <= 300 ? 300 : w <= 500 ? 500 : 750;\r\n  res.push({ t: \"towel\", p: t, c: 1 });\r\n\r\n  const remaining = w - t;\r\n\r\n  \/\/ \ud83d\udd39 Si a\u00fan falta potencia\r\n  if (remaining > 0) {\r\n    const comboSet = tipo === \"radiador\" ? RAD_RANGES : STORAGE_RANGES;\r\n\r\n    \/\/ 1\ufe0f\u20e3 Si el restante es bajo, usamos un solo radiador peque\u00f1o (600 W)\r\n    if (remaining <= 500) {\r\n      res.push({ t: tipo === \"radiador\" ? \"radiator\" : \"storage\", p: 600, c: 1 });\r\n    } \r\n    \/\/ 2\ufe0f\u20e3 Si es medio (501\u20131249 W), usamos uno de 1200 W\r\n    else if (remaining <= 1249) {\r\n      res.push({ t: tipo === \"radiador\" ? \"radiator\" : \"storage\", p: 1200, c: 1 });\r\n    } \r\n    \/\/ 3\ufe0f\u20e3 Si supera 1250 W, usamos los rangos completos\r\n    else {\r\n      const combos = comboSet.find(rg => remaining >= rg.min && remaining <= rg.max);\r\n      if (combos) {\r\n        combos.combo.forEach(d =>\r\n          res.push({ t: tipo === \"radiador\" ? \"radiator\" : \"storage\", p: d.p, c: d.c })\r\n        );\r\n      } else {\r\n        const base = tipo === \"radiador\" ? RADS : STORAGES;\r\n        const p = base.slice().reverse().find(x => x >= remaining) || base[base.length - 1];\r\n        res.push({ t: tipo === \"radiador\" ? \"radiator\" : \"storage\", p, c: 1 });\r\n      }\r\n    }\r\n  }\r\n\r\n  return res;\r\n}\r\n\r\n\r\n  \/\/ \ud83d\udd39 Radiatoren normales\r\n  if (tipo === \"radiador\") {\r\n    const rule = RAD_RANGES.find(rg => w >= rg.min && w <= rg.max);\r\n    if (rule) rule.combo.forEach(d => res.push({ t: \"radiator\", p: d.p, c: d.c }));\r\n    else {\r\n      const p = RADS.slice().reverse().find(x => x >= w) || RADS[RADS.length - 1];\r\n      res.push({ t: \"radiator\", p, c: 1 });\r\n    }\r\n    return res;\r\n  }\r\n\r\n  \/\/ \ud83d\udd39 Storage heaters normales\r\n  if (tipo === \"storage\") {\r\n    const rule = STORAGE_RANGES.find(rg => w >= rg.min && w <= rg.max);\r\n    if (rule) rule.combo.forEach(d => res.push({ t: \"storage\", p: d.p, c: d.c }));\r\n    else {\r\n      const p = STORAGES.slice().reverse().find(x => x >= w) || STORAGES[STORAGES.length - 1];\r\n      res.push({ t: \"storage\", p, c: 1 });\r\n    }\r\n    return res;\r\n  }\r\n\r\n  return res;\r\n}\r\n\r\n\r\n\/* === OPTIMIZACI\u00d3N MALLAS (suelo) === *\/\r\n\/\/ === FUNCI\u00d3N FINAL DEFINITIVA PARA SELECCI\u00d3N DE MALLAS ===\r\n\/\/ Aplica el l\u00edmite de 40 m\u00b2 en MILOS y ERKO (sin redondear ni c\u00e1lculos intermedios)\r\nfunction bestMatCombo(areaMalla, tipo) {\r\n  const t = (tipo || \"\").toString().toLowerCase();\r\n  const table = t === \"milos\" ? MILOS_SIZES : ERKO_SIZES;\r\n\r\n  \/\/ \u26a0\ufe0f Si la superficie efectiva supera 40 m\u00b2 \u2192 mostrar aviso y no calcular nada\r\n  if (areaMalla > 40) {\r\n    return [{\r\n      s: \"\u2014\",\r\n      c: 0,\r\n      note: \"De maximale oppervlakte is 40 m\u00b2.\\nNeem contact op met de projectafdeling van Rointe voor een gepersonaliseerde studie.\"\r\n    }];\r\n  }\r\n\r\n  \/\/ Redondeo interno solo si est\u00e1 dentro de rango\r\n  let superficie;\r\n  if (t === \"milos\") {\r\n    superficie = Math.floor(areaMalla * 2) \/ 2; \/\/ pasos de 0.5\r\n  } else {\r\n    superficie = areaMalla >= 1.5 && areaMalla < 2 ? 1.5 : Math.floor(areaMalla);\r\n  }\r\n\r\n  \/\/ Buscar rango correspondiente en la tabla\r\n  const item = table.find(r => superficie >= r.min && superficie <= r.max);\r\n  if (!item) return [];\r\n\r\n  \/\/ Si el rango tiene texto (mensaje)\r\n  if (typeof item.combo === \"string\") {\r\n    return [{ s: \"\u2014\", c: 0, note: item.combo }];\r\n  }\r\n\r\n  \/\/ Devolver las mallas recomendadas normalmente\r\n  return item.combo.map(x => ({ s: x.p, c: x.c }));\r\n}\r\n\r\n\r\n\/* === ACCIONES === *\/\r\nfunction onCalculate(){\r\n  if(!current) return;\r\n  \/\/ \ud83d\udd27 Correcci\u00f3n: asegurar que se guardan los valores visibles del formulario antes de calcular\r\n  if (tipoGlobal.value === \"suelo\") {\r\n    \/\/ Detecta autom\u00e1ticamente los tres inputs del formulario activo\r\n    const inputs = activeRoomWrap.querySelectorAll('input[type=\"number\"]');\r\n    let sb = 0, sm = 0, st = 0;\r\n\r\n    if (inputs.length) {\r\n      \/\/ Si es ba\u00f1o: primer input = sin ba\u00f1era, segundo = sin muebles\r\n      if (current.srKind === \"ba\u00f1o\") {\r\n        sb = parseFloat(inputs[0]?.value || 0);\r\n        sm = parseFloat(inputs[1]?.value || 0);\r\n      } else {\r\n        \/\/ Si no es ba\u00f1o: \u00fanico input = superficie total\r\n        st = parseFloat(inputs[0]?.value || 0);\r\n      }\r\n    }\r\n\r\n    if (current.srKind === \"ba\u00f1o\") {\r\n      current.srSbano = sb;\r\n      current.srSmueble = sm;\r\n    } else {\r\n      current.srStotal = st;\r\n    }\r\n  }\r\n\r\n\r\n  \/\/ === C\u00c1LCULO PARA SUELO RADIANTE ===\r\n  if (tipoGlobal.value === \"suelo\"){\r\n\t      \/\/ \u26a0\ufe0f LIMITE DE SUPERFICIE M\u00c1XIMA (40 m\u00b2)\r\n    const totalSuperficie =\r\n      current.srKind === \"ba\u00f1o\"\r\n        ? (parseFloat(current.srSmueble || 0) || 0)\r\n        : (parseFloat(current.srStotal || 0) || 0);\r\n\r\n    if (totalSuperficie > 44.7) {\r\n      const msg = `De maximale oppervlakte is 40 m\u00b2.<br>Neem contact op met de projectafdeling van Rointe voor een gepersonaliseerde studie.`;\r\n      const existing = document.querySelector(\".project-warning\");\r\n      if (!existing) {\r\n        activeRoomWrap.appendChild(\r\n          el(\"p\", {\r\n            class: \"muted project-warning\",\r\n            html: msg,\r\n            style: \"margin-top:10px;color:#b30000;font-weight:500;\"\r\n          })\r\n        );\r\n      }\r\n      return; \/\/ \u26a0\ufe0f Detiene el c\u00e1lculo, no sigue creando mallas ni potencias\r\n    } else {\r\n      const existing = document.querySelector(\".project-warning\");\r\n      if (existing) existing.remove();\r\n    }\r\n\r\n    const isBath = current.srKind === \"ba\u00f1o\";\r\n    const floor  = current.srFloor; \/\/ parquet | vinilo | ceramico\r\n\r\n    let superficieMalla = 0;\r\n    let superficieAisl = 0;\r\n\r\n    if (isBath) {\r\n      const sb = parseFloat(current.srSbano || 0) || 0;       \/\/ sin ba\u00f1era\r\n      const sm = parseFloat(current.srSmueble || 0) || 0;     \/\/ sin muebles\r\n      superficieAisl = sb;                                    \/\/ aislante sobre sin ba\u00f1era\r\n      superficieMalla = sm * 0.9;                             \/\/ malla sobre sin muebles -10%\r\n    } else {\r\n      const st = parseFloat(current.srStotal || 0) || 0;      \/\/ total\r\n      superficieAisl = st;                                    \/\/ aislante sobre total\r\n      superficieMalla = st * 0.9;                             \/\/ malla con descuento 10%\r\n    }\r\n\r\n    \/\/ \u00c1rea activa para mallas, redondeada SIEMPRE hacia abajo a entero (9.9 -> 9, 10.5 -> 10)\r\nconst superficie = +(Math.round(superficieMalla * 2) \/ 2).toFixed(1);\r\n\r\n    if (!superficie || superficie<=0){\r\n      alert(\"Voer een geldig oppervlak in.\");\r\n      return;\r\n    }\r\n\r\n    const density = SR_POWER[floor] || 140;\r\n    const potencia = Math.round(superficie * density);\r\n\r\n    \/\/ Sistema y mallas\r\n    const system = (floor===\"ceramico\") ? \"MILOS\" : \"ERKO\";\r\n    const sizes  = (system===\"MILOS\") ? MILOS_SIZES : ERKO_SIZES;\r\n    const matsCombo = bestMatCombo(superficie, sizes); \/\/ [{s:12,c:2},...]\r\n\r\n    \/\/ Materiales\r\nconst mats = [];\r\n\r\n\/\/ \u26a0\ufe0f MALLAS NO VAN EN \"materials\"\r\n\/\/    Las mallas se reportan por separado (matsCombo \/ dispositivos). \r\n\/\/    NO las metas en 'materials' para que PDF\/Email no las repitan.\r\n\r\n\/\/ ERKO: base 10\/25 m\u00b2 + protecci\u00f3n seg\u00fan suelo. SIN cinta.\r\n\/\/ === ERKO ===\r\n\r\nif (system === \"ERKO\") {\r\n  const areas = computeErkoMaterials(superficieAisl, superficie, floor);\r\n\r\n  if (areas.base10 > 0)\r\n    mats.push({ name: \"Isolerende basis ERKO 10 m\u00b2 (rol)\", qty: areas.base10, unit: \"u\" });\r\n  if (areas.base25 > 0)\r\n    mats.push({ name: \"Isolerende basis ERKO 25 m\u00b2 (rol)\", qty: areas.base25, unit: \"u\" });\r\n  if (areas.protRolls > 0)\r\n    mats.push({ name: \"Superieure bescherming ERKO (rol 7,5 m\u00b2)\", qty: areas.protRolls, unit: \"u\" });\r\n  if (areas.protPacks > 0)\r\n    mats.push({ name: \"Beveiligingssysteem ERKO (pack 2,88 m\u00b2)\", qty: areas.protPacks, unit: \"u\" });\r\n\/\/ MILOS: solo panel 3,6 m\u00b2 + 1 banda por estancia\r\n} else { \/\/ MILOS\r\n  mats.push({ name: \"Isolatiepaneel MILOS (pack 3,6 m\u00b2)\", qty: Math.ceil(superficieAisl \/ 3.6), unit: \"u\" });\r\n  mats.push({ name: \"Omtrekband MILOS (rol 25 m)\", qty: 1, unit: \"u\" });\r\n}\r\n    \/\/ Termostatos\r\n    const thermostatsQty = potencia>3600 ? 2 : 1;\r\n\r\n        const payload = {\r\n      \/\/ tipo base\r\n      tipo: \"suelo\",\r\n      name: current.name || (isBath ? \"Badkamer\" : \"Verblijf\"),\r\n\r\n      \/\/ \u26a0\ufe0f Conservamos tambi\u00e9n los campos de entrada (para CF7\/PDF)\r\n      srKind: current.srKind,                 \/\/ \"ba\u00f1o\" | \"otras\"\r\n      srFloor: current.srFloor,               \/\/ \"parquet\" | \"vinilo\" | \"ceramico\"\r\n      srSbano: current.srKind === \"ba\u00f1o\" ? (current.srSbano || 0) : 0,\r\n      srSmueble: current.srKind === \"ba\u00f1o\" ? (current.srSmueble || 0) : 0,\r\n      srStotal: current.srKind !== \"ba\u00f1o\" ? (current.srStotal || 0) : 0,\r\n\r\n      \/\/ sistema y resultados\r\n      suelo: floor,\r\n      system: system,                         \/\/ \"MILOS\" | \"ERKO\"\r\n      superficie: +superficie.toFixed(2),     \/\/ \u00e1rea de malla (activa)\r\n      potencia,\r\n      matsCombo,                              \/\/ [{s,c}]\r\n      materials: mats,                        \/\/ [{name,qty,unit}]\r\n      thermostats: thermostatsQty\r\n    };\r\n\r\n\r\n    if(editingIndex!==null){ rooms[editingIndex]=payload; }\r\n    else{ rooms.push(payload); }\r\n\r\n    current=null; editingIndex=null;\r\n    renderActiveRoom();\r\n    renderSide();\r\n    markRecsOutdated();\r\n    return;\r\n  }\r\n\r\n  \/\/ === C\u00c1LCULO PARA RADIADOR \/ STORAGE ===\r\n  const w=calcPower(current);\r\n  if(!w) return;\r\n  const devs=recommend(current,w);\r\n  const payload={...current,w,devs,tipo:tipoGlobal.value};\r\n\r\n  if(editingIndex!==null){ rooms[editingIndex]=payload; }\r\n  else{ rooms.push(payload); }\r\n\r\n  current=null; editingIndex=null;\r\n  renderActiveRoom();\r\n  renderSide();\r\n  markRecsOutdated();\r\n}\r\n\r\n\/* === RENDER LATERAL === *\/\r\nfunction renderSide(){\r\n  sideSummary.innerHTML=\"\";\r\n  if(!rooms.length){\r\n    sideSummary.innerHTML=`<p class=\"muted\">Er zijn nog geen verblijven toegevoegd.<\/p>`;\r\n    sideTotals.innerHTML=\"\u2014\";\r\n    return;\r\n  }\r\n\r\n  \/\/ Totales\r\n  let totals={towel:{},radiator:{},storage:{},suelo:{}};\r\n  \/\/ Para desglose de suelo por sistema\/tama\u00f1o\r\n  const sueloTotalsBySystem = { ERKO:{}, MILOS:{} };\r\n\r\n  rooms.forEach((r,i)=>{\r\n    const item=el(\"div\",{class:\"summary-item\"});\r\n\r\n    if (r.tipo===\"suelo\"){\r\n      const title=el(\"div\",{class:\"summary-title\",html:`${r.name||\"Verblijf\"} \u2014 ${r.system} \u2014 ${r.superficie} m\u00b2 \u2014 ${fmtW(r.potencia)}`});\r\n      const matsTxt = r.matsCombo.map(m=>`${m.s} m\u00b2 \u00d7 ${m.c}`).join(\", \") || \"\u2014\";\r\n      const list=el(\"p\",{html:`Mallas: ${matsTxt}<br>Thermostaten: ${r.thermostats} ud`});\r\n      const actions=el(\"div\",{class:\"summary-actions\"},[\r\n        (()=>{const b=el(\"button\",{type:\"button\",class:\"btn-outline\",html:\"Bewerken\"}); b.onclick=()=>editRoom(i); return b;})(),\r\n        (()=>{const b=el(\"button\",{type:\"button\",class:\"btn-outline\",html:\"Verwijderen\"}); b.onclick=()=>{ rooms.splice(i,1); renderSide(); markRecsOutdated(); }; return b;})()\r\n      ]);\r\n      item.append(title,list,actions);\r\n      sideSummary.append(item);\r\n\r\n      \/\/ Totales suelo\r\n      r.matsCombo.forEach(m=>{\r\n        const key = `${m.s}`; \/\/ tama\u00f1o\r\n        sueloTotalsBySystem[r.system][key] = (sueloTotalsBySystem[r.system][key]||0) + m.c;\r\n      });\r\n      return; \/\/ saltamos totales cl\u00e1sicos\r\n    }\r\n\r\n    \/\/ ORIGINAL\r\n    const title=el(\"div\",{class:\"summary-title\",html:`${labelKind(r.kind)}${r.name?` (${r.name})`:\"\"} \u2014 ${fmtW(r.w)}`});\r\n\tconst list=el(\"p\",{html:r.devs.map(d=>`${d.t===\"towel\"?\"Handdoekhouder\":d.t===\"radiator\"?\"Radiator\":\"Warmteaccumulator\"} ${d.c}x ${d.p}W`).join(\"<br>\")});\r\n    const actions=el(\"div\",{class:\"summary-actions\"},[\r\n      (()=>{const b=el(\"button\",{type:\"button\",class:\"btn-outline\",html:\"Bewerken\"}); b.onclick=()=>editRoom(i); return b;})(),\r\n      (()=>{const b=el(\"button\",{type:\"button\",class:\"btn-outline\",html:\"Verwijderen\"}); b.onclick=()=>{ rooms.splice(i,1); renderSide(); markRecsOutdated(); }; return b;})()\r\n    ]);\r\n    item.append(title,list,actions);\r\n    sideSummary.append(item);\r\n\r\n    r.devs.forEach(d=>{\r\n      if(!totals[d.t][d.p]) totals[d.t][d.p]=0;\r\n      totals[d.t][d.p]+=d.c;\r\n    });\r\n  });\r\n\r\n  \/\/ Pintar totales (incluye suelo por sistema y tama\u00f1o)\r\n  const map={radiator:\"Radiatoren\",towel:\"Handdoekhouder\",storage:\"Warmteaccumulator\"};\r\n  let html=\"\";\r\n\r\n  [\"radiator\",\"towel\",\"storage\"].forEach(cat=>{\r\n    const keys=Object.keys(totals[cat]);\r\n    if(keys.length){\r\n      const lines=keys.map(k=>`${totals[cat][k]}x ${k} W`).join(\"\\n\");\r\n      html+=`<div class='row'><div class='label'><strong>${map[cat]}:<\/strong><\/div><div class='val'>${lines}<\/div><\/div>`;\r\n    }\r\n  });\r\n\r\n  \/\/ Suelo\r\n  function sueloBlock(systemLabel, data){\r\n    const ks = Object.keys(data);\r\n    if (!ks.length) return \"\";\r\n    const lines = ks.sort((a,b)=>b-a).map(k=>`${data[k]}x ${k} m\u00b2`).join(\"\\n\");\r\n    return `<div class='row'><div class='label'><strong>Vloerverwarming (${systemLabel}):<\/strong><\/div><div class='val'>${lines}<\/div><\/div>`;\r\n  }\r\n  html += sueloBlock(\"ERKO\", sueloTotalsBySystem.ERKO);\r\n  html += sueloBlock(\"MILOS\", sueloTotalsBySystem.MILOS);\r\n\r\n  sideTotals.innerHTML = html || \"\u2014\";\r\n}\r\n\r\nfunction editRoom(i){\r\n  const r=rooms[i];\r\n  current= JSON.parse(JSON.stringify(r));\r\n  editingIndex=i;\r\n  tipoGlobal.value=r.tipo;\r\n  checkGlobals();\r\n  renderActiveRoom();\r\n}\r\n\r\n\/* === RECOMENDACIONES DIN\u00c1MICAS === *\/\r\nfunction renderRecommendations() {\r\n  let hasRadiator=false, hasStorage=false, hasTowel=false;\r\n  let hasSueloERKO=false, hasSueloMILOS=false;\r\n\r\n  rooms.forEach(r=>{\r\n    if (r.tipo===\"suelo\"){\r\n      if (r.system===\"ERKO\") hasSueloERKO=true;\r\n      if (r.system===\"MILOS\") hasSueloMILOS=true;\r\n      return;\r\n    }\r\n    r.devs.forEach(d=>{\r\n      if (d.t===\"radiator\") hasRadiator=true;\r\n      if (d.t===\"storage\")  hasStorage=true;\r\n      if (d.t===\"towel\")    hasTowel=true;\r\n    });\r\n  });\r\n\r\n  \/\/ Limpieza segura (sin innerHTML con shortcodes)\r\n  recBox.innerHTML = \"\";\r\n\r\n  const cache = document.getElementById(\"recsCache\");\r\n  if (!cache) {\r\n    recBox.innerHTML = \"<p class='muted'>No hay recomendaciones disponibles.<\/p>\";\r\n    return;\r\n  }\r\n\r\n  const addFromCache = (key) => {\r\n    const src = cache.querySelector(`[data-rec=\"${key}\"]`);\r\n    if (!src) return;\r\n    const wrapper = document.createElement(\"div\");\r\n    wrapper.className = \"shortcode-placeholder\";\r\n    wrapper.appendChild(src.cloneNode(true)); \/\/ clona el HTML ya renderizado\r\n    recBox.appendChild(wrapper);\r\n  };\r\n\r\n  \/\/ Orden de salida\r\n  if (hasRadiator)   addFromCache(\"radiator\");\r\n  if (hasTowel)      addFromCache(\"towel\");\r\n  if (hasStorage)    addFromCache(\"storage\");\r\n  if (hasSueloMILOS) addFromCache(\"milos\");\r\n  if (hasSueloERKO)  addFromCache(\"erko\");\r\n\r\n  \/\/ Caso: solo toallero\r\n  if (!hasRadiator && !hasStorage && !hasSueloERKO && !hasSueloMILOS && hasTowel) {\r\n    recBox.innerHTML = \"\";\r\n    addFromCache(\"towel\");\r\n  }\r\n\r\n  \/\/ Si no hay nada\r\n  if (!recBox.children.length) {\r\n    recBox.innerHTML = \"<p class='muted'>No hay recomendaciones disponibles.<\/p>\";\r\n  }\r\n\r\n  \/\/ Opcional: forzar re-init de Elementor si hubiese widgets que lo necesiten\r\n  \/\/ (normalmente con clonaci\u00f3n ya no hace falta, pero lo dejo protegido)\r\n  try {\r\n    if (window.elementorFrontend && typeof window.elementorFrontend.init === \"function\") {\r\n      window.elementorFrontend.init();\r\n    }\r\n  } catch(e) {}\r\n}\r\n\r\n\r\n\/* === BOTONES: Recomendaciones y Limpiar === *\/\r\nshowRecs.onclick = () => {\r\n  if (!rooms.length) return;\r\n\r\n  \/\/ Mostrar recomendaciones si no est\u00e1n visibles\r\n  if (!recBox.classList.contains(\"visible\")) {\r\n    renderRecommendations();\r\n    recBox.classList.remove(\"hidden\");\r\n    requestAnimationFrame(() => recBox.classList.add(\"visible\"));\r\n    resetRecsButton();\r\n  } else if (recsOutdated) {\r\n    renderRecommendations();\r\n    resetRecsButton();\r\n  }\r\n\r\n  \/\/ Mostrar formulario de descarga\r\n  const leadForm = document.getElementById(\"leadForm\");\r\n  if (leadForm) {\r\n    leadForm.classList.remove(\"hidden\");\r\n    leadForm.style.display = \"block\";\r\n    leadForm.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\r\n  }\r\n};\r\n\r\nclearAll.onclick = () => {\r\n  \/\/ \ud83e\uddf9 Vaciar todas las estancias y resetear variables\r\n  rooms = [];\r\n  current = null;\r\n  editingIndex = null;\r\n\r\n  \/\/ \ud83d\udd04 Volver a renderizar interfaz limpia\r\n  renderActiveRoom();\r\n  renderSide();\r\n\r\n  \/\/ \u274c Ocultar recomendaciones y restablecer bot\u00f3n\r\n  recBox.classList.remove(\"visible\", \"pending\");\r\n  recBox.classList.add(\"hidden\");\r\n  resetRecsButton();\r\n\r\n  \/\/ \ud83e\udde9 Ocultar formulario CF7 si estaba visible\r\n  const leadForm = document.getElementById(\"leadForm\");\r\n  if (leadForm) {\r\n    leadForm.classList.add(\"hidden\");\r\n    leadForm.style.display = \"none\";\r\n  }\r\n\r\n  console.log(\"\ud83d\udd04 Calculadora reiniciada (sin recargar la p\u00e1gina).\");\r\n};\r\n\r\n\/* === INIT === *\/\r\n(function init(){ checkGlobals(); })();\r\n\r\n\/* ===========================\r\n   SUELO RADIANTE: UTILIDADES\r\n   =========================== *\/\r\n\r\n\/* MALLAS DISPONIBLES *\/\r\n\/\/const ERKO_SIZES = [12,10,9,8,7,6,5,4,3,2,1.5,1].sort((a,b)=>b-a);\r\n\/\/const MILOS_SIZES = [12,10,9,8,7,6,5,4.5,4,3.5,3,2.5,2,1.5,1].sort((a,b)=>b-a);\r\n\r\n\/* POTENCIA W\/m\u00b2 *\/\r\nconst WPM2 = {\r\n  erko: 140,\r\n  milos: 150\r\n};\r\n\r\n\/* Coberturas materiales *\/\r\nconst COVERS = {\r\n  erko: {\r\n    base10: 10,        \/\/ rol 8.33 m -> 10 m\u00b2 cobertura nominal\r\n    base25: 25,        \/\/ rol 20 m -> 25 m\u00b2 cobertura nominal\r\n    protectRoll: 7.5,  \/\/ protecci\u00f3n superior parquet\/laminado\r\n    protectPack: 2.88, \/\/ sistema protecci\u00f3n vinilo\/moqueta (4 piezas 1.2x0.6)\r\n    tapePerRollM2: 20  \/\/ 1 rol cinta por cada 20 m\u00b2 de malla\r\n  },\r\n  milos: {\r\n    panelPack: 3.6,    \/\/ panel aislante pack 5 uds => 3.6 m\u00b2\r\n    bandaPerimetral: 1 \/\/ 1 rol por estancia\r\n  }\r\n};\r\n\r\n\/* ===========================\r\n   Superficies (ba\u00f1o \/ no ba\u00f1o)\r\n   - malla\/protecci\u00f3n: \u00e1rea activa\r\n   - aislantes: \u00e1rea soporte\r\n   =========================== *\/\r\nfunction getSueloAreas(room) {\r\n  const isBath = room.srKind === 'ba\u00f1o';\r\n  if (isBath) {\r\n    const areaAisl = parseFloat(room.srSbano || 0) || 0;         \/\/ sin ba\u00f1era\r\n    const areaMalla = (parseFloat(room.srSmueble || 0) || 0) * 0.9; \/\/ sin muebles -10%\r\n    return { areaAisl, areaMalla };\r\n  }\r\n  \/\/ No ba\u00f1o\r\n  const total = parseFloat(room.srStotal || 0) || 0;\r\n  return {\r\n    areaAisl: total,       \/\/ sin descuento\r\n    areaMalla: total * 0.9 \/\/ -10% siempre\r\n  };\r\n}\r\n\r\n\/* ===========================\r\n   Combinaci\u00f3n de mallas\r\n   - minimiza n\u00ba de mallas y el desperdicio\r\n   =========================== *\/\r\nfunction bestMeshCombo(area, sizes) {\r\n  \/\/ DP por superficie (en 0.5 m\u00b2 pasos para admitir 1.5)\r\n  const step = 0.5;\r\n  const target = Math.ceil(area \/ step) * step;\r\n  \/\/ Buscamos combinaci\u00f3n que cubra >= target con m\u00ednimo n\u00ba piezas y m\u00ednimo sobrante\r\n  let best = null;\r\n\r\n  function dfs(i, remaining, combo, used) {\r\n    if (remaining <= 0) {\r\n      const covered = Object.entries(combo).reduce((s,[k,c]) => s + parseFloat(k)*c, 0);\r\n      const over = covered - target;\r\n      const pieces = used;\r\n      if (!best || pieces < best.pieces || (pieces === best.pieces && over < best.over)) {\r\n        best = { combo: {...combo}, pieces, over };\r\n      }\r\n      return;\r\n    }\r\n    if (i >= sizes.length) {\r\n      \/\/ Forzar una pieza m\u00ednima si qued\u00f3 sin cubrir\r\n      const lastSize = sizes[sizes.length-1];\r\n      const extra = Math.ceil(remaining \/ lastSize);\r\n      const newCombo = {...combo};\r\n      newCombo[lastSize] = (newCombo[lastSize]||0) + extra;\r\n      const covered = Object.entries(newCombo).reduce((s,[k,c]) => s + parseFloat(k)*c, 0);\r\n      const over = covered - target;\r\n      const pieces = used + extra;\r\n      if (!best || pieces < best.pieces || (pieces === best.pieces && over < best.over)) {\r\n        best = { combo: newCombo, pieces, over };\r\n      }\r\n      return;\r\n    }\r\n    const size = sizes[i];\r\n\r\n    \/\/ probar 0..max unidades de este tama\u00f1o\r\n    const maxUnits = Math.ceil(remaining \/ size) + 1;\r\n    for (let u = maxUnits; u >= 0; u--) {\r\n      if (u > 0) combo[size] = (combo[size]||0) + u;\r\n      dfs(i+1, remaining - u*size, combo, used + u);\r\n      if (u > 0) {\r\n        combo[size] -= u;\r\n        if (combo[size] <= 0) delete combo[size];\r\n      }\r\n      \/\/ poda: si u es alto y ya tenemos una best con menos piezas, podemos cortar, pero mantenemos claridad\r\n    }\r\n  }\r\n\r\n  dfs(0, target, {}, 0);\r\n  \/\/ Limpieza: quitar tama\u00f1os 0\r\n  const clean = {};\r\n  Object.keys(best.combo).forEach(k => {\r\n    if (best.combo[k] > 0) clean[k] = best.combo[k];\r\n  });\r\n  return clean;\r\n}\r\n\r\n\/* ===========================\r\n   Materiales por sistema\r\n   =========================== *\/\r\nfunction computeErkoMaterials(areaAisl, areaMalla, floorType) {\r\n  const baseArea = Math.floor(areaAisl || 0);\r\n  const activeArea = Math.floor(areaMalla || 0);\r\n\r\n  let base10 = 0;\r\n  let base25 = 0;\r\n\r\n  \/\/ === BASE AISLANTE (nueva l\u00f3gica precisa) ===\r\n  if (baseArea <= 0) {\r\n    base10 = 0;\r\n    base25 = 0;\r\n  } \r\n  else if (baseArea <= 10) {\r\n    base10 = 1;\r\n  } \r\n  else if (baseArea > 10 && baseArea <= 20) {\r\n    base10 = 2;\r\n  } \r\n  else if (baseArea > 20 && baseArea <= 25) {\r\n    base25 = 1;\r\n  } \r\n  else if (baseArea > 25 && baseArea <= 30) {\r\n    base25 = 1;\r\n    base10 = 1;\r\n  } \r\n  else {\r\n    \/\/ A partir de 30 m\u00b2 combinamos 25 m\u00b2 + 10 m\u00b2 de forma eficiente\r\n    let restante = baseArea;\r\n    while (restante > 0) {\r\n      if (restante > 25) {\r\n        base25++;\r\n        restante -= 25;\r\n      } else if (restante > 20) {\r\n        base25++;\r\n        restante = 0;\r\n      } else if (restante > 10) {\r\n        base10 += 2;\r\n        restante = 0;\r\n      } else {\r\n        base10++;\r\n        restante = 0;\r\n      }\r\n    }\r\n  }\r\n\r\n  \/\/ === PROTECCI\u00d3N SUPERIOR ===\r\n  let protRolls = 0;\r\n  let protPacks = 0;\r\n\r\n  if (floorType === \"parquet\" || floorType === \"laminado\") {\r\n    protRolls = Math.ceil(activeArea \/ 7.5);\r\n  } else if (floorType === \"vinilo\" || floorType === \"moqueta\") {\r\n    protPacks = Math.ceil(activeArea \/ 2.88);\r\n  }\r\n\r\n  return { base10, base25, protRolls, protPacks };\r\n}\r\n\r\n\r\nfunction computeMilosMaterials(areaAisl) {\r\n  const panelPacks = Math.ceil(areaAisl \/ 3.6);\r\n  const banda = 1; \/\/ 1 rol por estancia\r\n  return { panelPacks, banda };\r\n}\r\n\r\n\r\n\/* ===========================\r\n   Ensamblado SUELO por estancia\r\n   =========================== *\/\r\nfunction buildSueloRoomPayload(room) {\r\n  \/\/ Normaliza el nombre de sistema a 'erko' | 'milos'\r\n  function normalizeSystem(sys, floor) {\r\n    const s = (sys || \"\").toString().toLowerCase();\r\n    if (s.includes(\"milos\")) return \"milos\";\r\n    if (s.includes(\"erko\"))  return \"erko\";\r\n    const f = (floor || \"\").toString().toLowerCase();\r\n    return (f === \"ceramico\" || f === \"cer\u00e1mico\") ? \"milos\" : \"erko\";\r\n  }\r\n\r\n  \/\/ Si ya tenemos el payload calculado (superficie, matsCombo, materials, potencia),\r\n  \/\/ lo usamos directamente (sin recomputar a 0).\r\n  const hasPrecalc =\r\n    room &&\r\n    typeof room.superficie === \"number\" &&\r\n    (Array.isArray(room.matsCombo) || typeof room.mallaCombo === \"object\");\r\n\r\n  if (hasPrecalc) {\r\n    \/\/ Adaptar combo a objeto { size: count }\r\n    let comboObj = {};\r\n    if (Array.isArray(room.matsCombo)) {\r\n      room.matsCombo.forEach(it => {\r\n        const key = String(it.s);\r\n        comboObj[key] = (comboObj[key] || 0) + (it.c || 0);\r\n      });\r\n    } else if (room.mallaCombo && typeof room.mallaCombo === \"object\") {\r\n      comboObj = { ...room.mallaCombo };\r\n    }\r\n\r\n    \/\/ Convertir materials (array) -> map nombre: qty\r\n    let materialesMap = {};\r\n    if (Array.isArray(room.materials)) {\r\n      room.materials.forEach(m => {\r\n        if (!m || !m.name) return;\r\n        materialesMap[m.name] = (materialesMap[m.name] || 0) + (m.qty || 0);\r\n      });\r\n    } else if (room.materiales && typeof room.materiales === \"object\") {\r\n      materialesMap = { ...room.materiales };\r\n    }\r\n\r\n    const sys = normalizeSystem(room.system, room.srFloor || room.suelo);\r\n    const potencia =\r\n      typeof room.potencia === \"number\"\r\n        ? room.potencia\r\n        : Math.round((room.superficie || 0) * (sys === \"erko\" ? 140 : 150));\r\n\r\n    \/\/ areaMalla = superficie activa ya calculada; areaAisl si no est\u00e1, se aproxima (\u00f70.9)\r\n    const areaMalla = Math.round((room.superficie || 0) * 100) \/ 100;\r\n    const areaAisl = Math.round(((room.areaAisl || (areaMalla \/ 0.9)) || 0) * 100) \/ 100;\r\n\r\n    return {\r\n      tipo: \"suelo\",\r\n      name: room.name || (room.srKind === \"ba\u00f1o\" ? \"Badkamer\" : \"Verblijf\"),\r\n      srKind: room.srKind || \"otras\",\r\n      srFloor: (room.srFloor || room.suelo || \"\").toString().toLowerCase(),\r\n      system: sys,             \/\/ 'erko' | 'milos'\r\n      areaAisl,\r\n      areaMalla,\r\n      mallaCombo: comboObj,    \/\/ { size: count }\r\n      potencia,\r\n      thermostats: room.thermostats || 1,\r\n      materiales: materialesMap\r\n    };\r\n  }\r\n\r\n  \/\/ --- MODO \"ENTRADAS\" (sin pre-c\u00e1lculo): se usan los sr* y se calcula aqu\u00ed ---\r\n  const floor = (room.srFloor || room.suelo || \"\").toLowerCase();\r\n  const system = normalizeSystem(room.system, floor); \/\/ 'erko' | 'milos'\r\n  const sizes = system === \"milos\" ? MILOS_SIZES : ERKO_SIZES;\r\n  const isBath = room.srKind === \"ba\u00f1o\";\r\n\r\n  \/\/ \u00e1reas\r\n  let areaAisl = 0;\r\n  let areaMalla = 0;\r\n  if (isBath) {\r\n    const sb = parseFloat(room.srSbano || 0) || 0;\r\n    const sm = parseFloat(room.srSmueble || 0) || 0;\r\n    areaAisl = sb;\r\n    areaMalla = sm * 0.9;\r\n  } else {\r\n    const st = parseFloat(room.srStotal || 0) || 0;\r\n    areaAisl = st;\r\n    areaMalla = st * 0.9;\r\n  }\r\n  areaAisl = Math.round(areaAisl * 100) \/ 100;\r\n  areaMalla = Math.round(areaMalla * 100) \/ 100;\r\n\r\n  \/\/ combo \u00f3ptimo y potencia\r\n  const combo = bestMatCombo(areaMalla, sizes); \/\/ { size, count } -> nosotros devolvemos array; convertimos:\r\n  const comboObj = {};\r\n  combo.forEach(it => {\r\n    comboObj[String(it.s)] = (comboObj[String(it.s)] || 0) + (it.c || 0);\r\n  });\r\n\r\n  const potencia = Math.round(areaMalla * (system === \"erko\" ? 140 : 150));\r\n  const thermostats = potencia > 3600 ? 2 : 1;\r\n\r\n   \/\/ Materiales (sin incluir mallas aqu\u00ed; solo materiales)\r\n  let materiales = {};\r\n  if (system === 'erko') {\r\n    const mats = computeErkoMaterials(areaAisl, areaMalla, floor);\r\n    materiales = {\r\n      ...(mats.base25 ? { 'Isolerende basis ERKO 25 m\u00b2 (rol)': mats.base25 } : {}),\r\n      ...(mats.base10 ? { 'Isolerende basis ERKO 10 m\u00b2 (rol)': mats.base10 } : {}),\r\n      ...(mats.protRolls ? { 'Superieure bescherming ERKO (rol 7,5 m\u00b2)': mats.protRolls } : {}),\r\n      ...(mats.protPacks ? { 'Beveiligingssysteem ERKO (pack 2,88 m\u00b2)': mats.protPacks } : {})\r\n      \/\/ SIN cinta\r\n    };\r\n  } else {\r\n    const mats = computeMilosMaterials(areaAisl);\r\n    materiales = {\r\n      'Isolatiepaneel MILOS (pack 3,6 m\u00b2)': mats.panelPacks,\r\n      'Omtrekband  (rol 25 m)': mats.banda\r\n    };\r\n  }\r\n\r\n\r\n\r\n  return {\r\n    tipo: \"suelo\",\r\n    name: room.name || (isBath ? \"Badkamer\" : \"Verblijf\"),\r\n    srKind: room.srKind || \"otras\",\r\n    srFloor: floor,\r\n    system,\r\n    areaAisl,\r\n    areaMalla,\r\n    mallaCombo: comboObj,\r\n    potencia,\r\n    thermostats,\r\n    materiales\r\n  };\r\n}\r\n\r\n\r\nfunction round2(n){ return Math.round((n||0)*100)\/100; }\r\n\r\n\/* ===========================\r\n   FORMATEADORES\r\n   =========================== *\/\r\nfunction comboToArray(combo, label) {\r\n  \/\/ Devuelve [\"Malla XX m\u00b2 \u00d7 N\", ...]\r\n  return Object.keys(combo)\r\n  .sort((a,b)=>parseFloat(b)-parseFloat(a))\r\n  .map(k => `${combo[k]}x ${label} ${k} m\u00b2`);\r\n\r\n}\r\nfunction sumCombos(list, system) {\r\n  \/\/ Agrupa combos por tama\u00f1o\r\n  const acc = {};\r\n  list.filter(r=>r.system===system).forEach(r=>{\r\n    Object.entries(r.mallaCombo).forEach(([k,c])=>{\r\n      acc[k] = (acc[k]||0)+c;\r\n    });\r\n  });\r\n  \/\/ Devuelve l\u00ednea legible \"12 m\u00b2 \u00d7 3, 2 m\u00b2 \u00d7 1\"\r\n  const keys = Object.keys(acc).sort((a,b)=>parseFloat(b)-parseFloat(a));\r\n  if (!keys.length) return '\u2014';\r\n  return keys.map(k=>`${acc[k]}x ${k} m\u00b2`).join(', ');\r\n}\r\nfunction mergeMaterials(sueloRooms) {\r\n  const mat = {};\r\n  sueloRooms.forEach(r=>{\r\n    Object.entries(r.materiales).forEach(([name,qty])=>{\r\n      mat[name] = (mat[name]||0) + qty;\r\n    });\r\n  });\r\n  return mat;\r\n}\r\n\r\n\/* ===========================\r\n   CF7: CAMPOS OCULTOS (correo)\r\n   =========================== *\/\r\n\r\nfunction _getRooms() {\r\n  try {\r\n    return (typeof rooms !== 'undefined' && Array.isArray(rooms)) ? rooms : [];\r\n  } catch(e) { return []; }\r\n}\r\n\r\n\/* >>> REEMPLAZA las 3 funciones de CF7 por estas: *\/\r\nfunction _cf7ResumenDesdeRooms() {\r\n  const list = _getRooms();\r\n  if (!list.length) return \"\u2014\";\r\n\r\n  const out = [];\r\n\r\n  \/\/ 1) suelos (si existen) \u2013 resumen por estancia\r\n  const sueloRooms = list.filter(r => r.tipo === 'suelo').map(buildSueloRoomPayload);\r\n  sueloRooms.forEach((r,i)=>{\r\n    const label = r.system === 'erko' ? 'ERKO' : 'MILOS';\r\n    const mallas = comboToArray(r.mallaCombo, 'Mesh').join(', ');\r\n    out.push(`${i+1}. ${r.name} \u2014 ${label} \u2014 ${round2(r.areaMesh)} m\u00b2 \u2014 ${r.potencia} W\\nMeshs: ${mallas}\\nThermostaten: ${r.thermostats} ud`);\r\n  });\r\n\r\n  \/\/ 2) resto (radiadores\/storage)\r\n  const others = list.filter(r => r.tipo !== 'suelo');\r\nothers.forEach((r)=>{\r\n  const devs = r.devs\r\n    .map(d => `${d.t===\"towel\"?\"Handdoekhouder\":d.t===\"radiator\"?\"Radiator\":\"Warmteaccumulator\"} ${d.c}x ${d.p}W`)\r\n    .join(', ');\r\n\r\n  out.push(\r\n    `${r.kind===\"bath\" ? \"Badkamer\" : \"Verblijf\"} (${r.name || \"\u2014\"})` +\r\n    ` \u2014 ${r.m2 || \"\u2014\"} m\u00b2 \u2014 ${Math.round(r.w)} W\\n` +\r\n    `${devs}`\r\n  );\r\n});\r\n  return out.join(\"\\n\\n\") || \"\u2014\";\r\n}\r\n\r\nfunction _cf7DispositivosDesdeRooms() {\r\n  \/\/ SOLO mallas (como \u201cdispositivos\u201d) + otros dispositivos (radiador\/storage)\r\n  const list = _getRooms();\r\n  if (!list.length) return \"\u2014\";\r\n\r\n  const items = [];\r\n\r\n  \/\/ suelos \u2192 mallas como dispositivos\r\n  const sueloRooms = list.filter(r=>r.tipo==='suelo').map(buildSueloRoomPayload);\r\n  sueloRooms.forEach(r=>{\r\n    const label = r.system==='erko' ? 'Mesh ERKO' : 'Mesh MILOS';\r\n    Object.entries(r.mallaCombo).forEach(([size,cnt])=>{\r\n      items.push(`${cnt}x ${label} ${size} m\u00b2`);\r\n    });\r\n  });\r\n\r\n  \/\/ otros\r\n  list.filter(r=>r.tipo!=='suelo').forEach(r=>{\r\n    r.devs.forEach(d=>{\r\n      const tipo = d.t===\"towel\"?\"Handdoekhouder\":d.t===\"radiator\"?\"Radiator\":\"Warmteaccumulator\";\r\n      items.push(`${tipo} ${d.c}x ${d.p}W`);\r\n    });\r\n  });\r\n\r\n  return items.length ? items.join(\"; \") : \"\u2014\";\r\n}\r\n\r\nfunction _cf7TotalesDesdeRooms() {\r\n  const list = _getRooms();\r\n  if (!list.length) return \"\u2014\";\r\n\r\n  \/\/ TOTALES radiador\/\u2026 (igual que antes)\r\n  const totals = { radiator:{}, towel:{}, storage:{} };\r\n\r\n  list.filter(r=>r.tipo!=='suelo').forEach(r=>{\r\n    r.devs.forEach(d=>{\r\n      totals[d.t][d.p] = (totals[d.t][d.p]||0)+d.c;\r\n    });\r\n  });\r\n\r\n  const parts = [];\r\n  if (Object.keys(totals.radiator).length)\r\n    parts.push(\"Radiatoren: \" + Object.entries(totals.radiator).map(([p,c]) => `${c}x ${p} W`).join(\", \"));\r\n  if (Object.keys(totals.towel).length)\r\n    parts.push(\"Handdoekhouder: \" + Object.entries(totals.towel).map(([p,c]) => `${p} W \u00d7 ${c}`).join(\", \"));\r\n  if (Object.keys(totals.storage).length)\r\n    parts.push(\"Acumuladores de Calor: \" + Object.entries(totals.storage).map(([p,c]) => `${p} W \u00d7 ${c}`).join(\", \"));\r\n\r\n  \/\/ TOTALES SUELO (agrupados por sistema y tama\u00f1o de malla)\r\n  const sueloRooms = list.filter(r => r.tipo==='suelo').map(buildSueloRoomPayload);\r\n  if (sueloRooms.length) {\r\n    const erkoLine = sumCombos(sueloRooms,'erko');\r\n    const milosLine = sumCombos(sueloRooms,'milos');\r\n    if (erkoLine !== '\u2014') parts.push(\"Vloerverwarming (ERKO): \" + erkoLine);\r\n    if (milosLine !== '\u2014') parts.push(\"Vloerverwarming (MILOS): \" + milosLine);\r\n  }\r\n  return parts.join(\"\\n\") || \"\u2014\";\r\n}\r\n\r\n\/* NUEVOS CAMPOS: your-materials y your-thermostats *\/\r\nfunction _cf7MaterialsDesdeRooms() {\r\n  const list = _getRooms();\r\n  const sueloRooms = list.filter(r=>r.tipo==='suelo').map(buildSueloRoomPayload);\r\n  if (!sueloRooms.length) return \"\u2014\";\r\n  \/\/ Solo MATERIALES (sin mallas)\r\n  const merged = mergeMaterials(sueloRooms);\r\n  const keys = Object.keys(merged);\r\n  if (!keys.length) return \"\u2014\";\r\n  return keys.sort().map(k => `${merged[k]}x ${k}`).join(\"\\n\");\r\n}\r\n\r\nfunction _cf7ThermostatsDesdeRooms() {\r\n  const list = _getRooms();\r\n  const sueloRooms = list.filter(r=>r.tipo==='suelo').map(buildSueloRoomPayload);\r\n  if (!sueloRooms.length) return \"\u2014\";\r\n  const totalTherm = sueloRooms.reduce((s,r)=>s + (r.thermostats||0), 0);\r\n  return `${totalTherm} ud`;\r\n}\r\n\r\n\/* ========= ANTES DEL ENV\u00cdO: RELLENA TODOS LOS CAMPOS OCULTOS ========= *\/\r\ndocument.addEventListener('submit', function(e) {\r\n  if (!e.target || !e.target.matches('.wpcf7 form.wpcf7-form')) return;\r\n\r\n  const resumen      = _cf7ResumenDesdeRooms();\r\n  const dispositivos = _cf7DispositivosDesdeRooms();\r\n  const totales      = _cf7TotalesDesdeRooms();\r\n  const materials    = _cf7MaterialsDesdeRooms();\r\n  const thermostats  = _cf7ThermostatsDesdeRooms();\r\n\r\n  const setVal = (name, val) => { const f = e.target.querySelector(`[name=\"${name}\"]`); if (f) f.value = val; };\r\n  setVal('your-summary',    resumen);\r\n  setVal('your-devices',    dispositivos);\r\n  setVal('your-totals',     totales);\r\n  setVal('your-materials',  materials);\r\n  setVal('your-thermostats',thermostats);\r\n\r\n  \/\/ Dispositivos por columna (CRM Entries) \u2014 solo mallas de suelo + resto\r\n  e.target.querySelectorAll('input[name^=\"device_\"]').forEach(el => el.remove());\r\n  const flat = dispositivos === '\u2014' ? [] : dispositivos.split(';').map(s=>s.trim()).filter(Boolean);\r\n  flat.forEach((val,idx)=>{\r\n    const input = document.createElement('input');\r\n    input.type = 'hidden';\r\n    input.name = `device_${idx+1}`;\r\n    input.value = val;\r\n    e.target.appendChild(input);\r\n  });\r\n\r\n  console.log(\"\u2192 Enviando a CF7:\", { resumen, dispositivos, totales, materials, thermostats });\r\n}, true);\r\n\r\n\/* ===========================\r\n   PDF\r\n   =========================== *\/\r\n\r\n\/\/ Mostrar el formulario cuando se pulsa \"RECOMENDACIONES\"\r\n\/\/ === CONTROL DE APERTURA DEL FORMULARIO CF7 ===\r\nconst showRecsBtn = document.getElementById(\"showRecs\");\r\nshowRecsBtn.addEventListener(\"click\", () => {\r\n  if (!rooms.length) return;\r\n\r\n  \/\/ Si a\u00fan no se han generado recomendaciones, las mostramos\r\n  if (!recBox.classList.contains(\"visible\")) {\r\n    renderRecommendations();\r\n    recBox.classList.remove(\"hidden\");\r\n    requestAnimationFrame(() => recBox.classList.add(\"visible\"));\r\n    resetRecsButton();\r\n  }\r\n\r\n  \/\/ Mostramos el formulario justo debajo de las recomendaciones\r\n  const leadForm = document.getElementById(\"leadForm\");\r\n  if (leadForm.classList.contains(\"hidden\")) {\r\n    leadForm.classList.remove(\"hidden\");\r\n    leadForm.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\r\n  }\r\n});\r\n\r\n\r\ndocument.addEventListener('wpcf7mailsent', async function(event) {\r\n  const leadForm = document.getElementById(\"leadForm\");\r\n  if (!leadForm) return;\r\n\r\n  leadForm.innerHTML = `\r\n    <div style=\"text-align:center;padding:1rem 0;\">\r\n      <p><strong>Gegevens correct verzonden.<\/strong><\/p>\r\n      <p>Uw rapport wordt gegenereerd...<\/p>\r\n    <\/div>\r\n  `;\r\n\r\n  setTimeout(() => {\r\n    if (typeof generarPDF === 'function') {\r\n      const formEl = document.querySelector('.wpcf7 form.wpcf7-form');\r\n      const nombre = formEl?.querySelector('[name=\"your-name\"]')?.value || '';\r\n      const correo = formEl?.querySelector('[name=\"your-email\"]')?.value || '';\r\n      const postal = formEl?.querySelector('[name=\"your-postal\"]')?.value || '';\r\n      generarPDF(nombre, correo, postal);\r\n    } else {\r\n      console.warn(\"\u26a0\ufe0f No se encontr\u00f3 la funci\u00f3n generarPDF.\");\r\n    }\r\n  }, 1000);\r\n\r\n  setTimeout(() => {\r\n    sessionStorage.setItem('forceTop', '1');\r\n    location.reload();\r\n  }, 3000);\r\n}, false);\r\n\r\n\/* === NUEVA VERSI\u00d3N MODULAR DE generarPDF() === *\/\r\nasync function generarPDF(nombre = \"\", correo = \"\", postal = \"\") {\r\n  if (!rooms.length) {\r\n    alert(\"Voeg ten minste \u00e9\u00e9n verblijf toe voordat u het rapport genereert.\");\r\n    return;\r\n  }\r\n\r\n  const { jsPDF } = window.jspdf;\r\n  const { PDFDocument } = window.PDFLib;\r\n\r\n  const templateUrl = \"https:\/\/rointe.com\/calcPDF\/pdf_nl.pdf\";\r\n  const logoUrl = \"https:\/\/rointe.com\/wp-content\/uploads\/2024\/10\/logo-1702353516-1.jpg\";\r\n\r\n  \/* === FUNCIONES AUXILIARES === *\/\r\n  async function loadLogo() {\r\n    return new Promise((resolve, reject) => {\r\n      const img = new Image();\r\n      img.crossOrigin = \"anonymous\";\r\n      img.onload = () => resolve(img);\r\n      img.onerror = reject;\r\n      img.src = logoUrl;\r\n    });\r\n  }\r\n\r\nfunction addHeader(doc, logoImg, isFirstPage = false) {\r\n  const pageWidth = doc.internal.pageSize.getWidth();\r\n  const topMargin = 15;\r\n  const logoWidth = 35;\r\n  const logoHeight = (logoImg.height \/ logoImg.width) * logoWidth;\r\n  const logoX = pageWidth - logoWidth - 20;\r\n\r\n  \/\/ Logo y l\u00ednea verde superior\r\n  doc.addImage(logoImg, \"PNG\", logoX, topMargin, logoWidth, logoHeight);\r\n  doc.setDrawColor(66, 176, 41);\r\n  doc.setLineWidth(1);\r\n  const lineY = topMargin + logoHeight + 5;\r\n  doc.line(20, lineY, pageWidth - 20, lineY);\r\n\r\n  \/\/ Fecha\r\n  const dateStr = new Date().toLocaleString(\"es-ES\", {\r\n    day: \"2-digit\", month: \"2-digit\", year: \"numeric\",\r\n    hour: \"2-digit\", minute: \"2-digit\"\r\n  });\r\n  doc.setFont(\"helvetica\", \"italic\");\r\n  doc.setFontSize(9);\r\n  doc.setTextColor(90, 90, 90);\r\n  doc.text(`Rapport gegenereerd op ${dateStr}`, 20, lineY + 4);\r\n\r\n  \/\/ === Mostrar zona clim\u00e1tica SOLO en la primera din\u00e1mica ===\r\n  if (isFirstPage) {\r\n    const zonaSel = document.getElementById(\"zonaGlobal\");\r\n    const zonaTexto = zonaSel?.options[zonaSel.selectedIndex]?.text?.trim() || \"\";\r\n    if (zonaTexto) {\r\n      const y = lineY + 10; \/\/ un poco m\u00e1s arriba respecto al bloque previo\r\n      doc.setFont(\"helvetica\", \"bold\");\r\n      doc.setFontSize(10);\r\n      doc.setTextColor(0, 0, 0);\r\n      doc.text(\"Klimaatzone:\", 20, y);\r\n\r\n      doc.setFont(\"helvetica\", \"normal\");\r\n      doc.setTextColor(60, 60, 60);\r\n      doc.text(zonaTexto, 20 + doc.getTextWidth(\"Klimaatzone: \") + 2, y);\r\n\r\n      return y + 10; \/\/ m\u00e1s espacio con el bloque siguiente\r\n    }\r\n  }\r\n\r\n  return lineY + 18;\r\n}\r\n\r\n  \/* === NUEVO === *\/\r\n  \/* === BLOQUE RADIADORES \/ STORAGE \/ TOALLEROS === *\/\r\nasync function addHeatingPages(list, logoImg) {\r\n  const pages = [];\r\n  const doc = new jsPDF();\r\n  let y = addHeader(doc, logoImg, true);\r\n\r\n  const heatingRooms = list.filter(r => r.tipo !== \"suelo\");\r\n  if (!heatingRooms.length) return [];\r\n\r\n  \/\/ Detectar tipos incluidos\r\n  let hasRadiator = false, hasTowel = false, hasStorage = false;\r\n  heatingRooms.forEach(r => {\r\n    r.devs.forEach(d => {\r\n      if (d.t === \"radiator\") hasRadiator = true;\r\n      if (d.t === \"towel\") hasTowel = true;\r\n      if (d.t === \"storage\") hasStorage = true;\r\n    });\r\n  });\r\n\r\n  \/\/ T\u00edtulo principal\r\n  doc.setFont(\"helvetica\", \"bold\");\r\n  doc.setFontSize(12);\r\n  doc.text(\"Radiatoren en handdoekrek\", 20, y);\r\n  y += 8;\r\n\r\n  \/\/ Tabla principal\r\n  const heatingRows = heatingRooms.map(r => [\r\n    r.name || \"\u2014\",\r\n    r.kind === \"bath\" ? \"Badkamer\" : \"Verblijf\",\r\n    `${r.m2 || \"\u2014\"} m\u00b2`,\r\n    `${r.w} W`,\r\n    r.devs.map(d => {\r\n      const tipo =\r\n        d.t === \"towel\" ? \"Handdoekhouder ROINTE\" :\r\n        d.t === \"radiator\" ? \"Radiator ROINTE\" :\r\n        \"Warmteaccumulator ROINTE\";\r\n      return `${d.c}x ${tipo} ${d.p} W`;\r\n    }).join(\", \")\r\n  ]);\r\n\r\n  doc.autoTable({\r\n    head: [[\"Verblijf\", \"Type\", \"Oppervlak\", \"Totaal vermogen\", \"Aanbevelingen\"]],\r\n    body: heatingRows,\r\n    startY: y,\r\n    styles: { fontSize: 9, cellPadding: 2 },\r\n    headStyles: { fillColor: [66,176,41], textColor: [255,255,255] },\r\n    alternateRowStyles: { fillColor: [245,245,245] }\r\n  });\r\n  y = doc.lastAutoTable.finalY + 10;\r\n\r\n  \/\/ Totales agrupados\r\n  const totals = { radiator:{}, towel:{}, storage:{} };\r\n  heatingRooms.forEach(r => {\r\n    r.devs.forEach(d => {\r\n      totals[d.t][d.p] = (totals[d.t][d.p] || 0) + d.c;\r\n    });\r\n  });\r\n  const totalsRows = [];\r\n  Object.entries(totals.radiator).forEach(([p,c]) => totalsRows.push([\"Radiatoren\", `${c}x ${p} W`]));\r\n  Object.entries(totals.towel).forEach(([p,c]) => totalsRows.push([\"Handdoekhouder\", `${c}x ${p} W`]));\r\n  Object.entries(totals.storage).forEach(([p,c]) => totalsRows.push([\"Warmteaccumulatoren\", `${c}x ${p} W`]));\r\n\r\n  if (totalsRows.length) {\r\n    doc.autoTable({\r\n      head: [[\"Gegroepeerde totalen\", \"Eenheden\"]],\r\n      body: totalsRows,\r\n      startY: y,\r\n      styles: { fontSize: 9, cellPadding: 3 },\r\n      headStyles: { fillColor: [66,176,41], textColor: [255,255,255], halign: \"center\" },\r\n      columnStyles: { 0: { cellWidth: 90 }, 1: { cellWidth: 90, halign: \"right\" } },\r\n      alternateRowStyles: { fillColor: [245,245,245] }\r\n    });\r\n    y = doc.lastAutoTable.finalY + 10;\r\n  }\r\n\r\n  \/\/ === BLOQUE DE ENLACES AL FINAL ===\r\n  doc.setFont(\"helvetica\", \"bold\");\r\n  doc.setFontSize(12);\r\n  doc.setTextColor(90,90,90); \/\/ t\u00edtulo en negro\r\n  doc.text(\"Producten online bekijken\", 20, y);\r\n  y += 8;\r\n\r\n  doc.setFont(\"helvetica\", \"normal\");\r\n  doc.setFontSize(10);\r\n  doc.setTextColor(66,176,41); \/\/ solo los enlaces en verde\r\n  const linkX = 20;\r\n  const lineSpace = 6;\r\n\r\n  if (hasRadiator) {\r\n    doc.textWithLink(\"Ontdek ons assortiment radiatoren\", linkX, y,\r\n      { url: \"https:\/\/rointe.com\/nl\/productcategorie\/elektrische-radiatoren\/\" });\r\n    y += lineSpace;\r\n  }\r\n  if (hasTowel) {\r\n    doc.textWithLink(\"Bekijk ons volledige assortiment handdoekrekken.\", linkX, y,\r\n      { url: \"https:\/\/rointe.com\/nl\/productcategorie\/elektrische-handdoekdroger\/\" });\r\n    y += lineSpace;\r\n  }\r\n  if (hasStorage) {\r\n    doc.textWithLink(\"Maak kennis met onze warmteaccumulator\", linkX, y,\r\n      { url: \"https:\/\/rointe.com\/producto\/onyx-acumulador-de-calor-wifi\/\" });\r\n    y += lineSpace;\r\n  }\r\n\/\/ === BLOQUE DE TEXTO COMERCIAL CON ESTILO ===\r\nlet promoText = \"\";\r\nif (hasRadiator && !hasTowel && !hasStorage) {\r\n  promoText = \"Geniet van totaal comfort met de elektrische radiatoren van Rointe. Effici\u00ebnt, verbonden en ontworpen om stijl en prestaties te combineren in alle kamers van uw huis.\";\r\n} else if (hasTowel && !hasRadiator && !hasStorage) {\r\n  promoText = \"Verander uw badkamer in een spa met onze elektrische handdoekverwarmers. Elegant design, perfecte warmte en totaal comfort binnen handbereik.\";\r\n} else if (hasStorage && !hasRadiator && !hasTowel) {\r\n  promoText = \"Geniet van langdurige warmte en lagere energierekeningen met onze Onyx-warmteaccumulator met hoge warmtebehoud: slimme warmte die zich aanpast aan uw levensstijl.\";\r\n} else {\r\n  promoText = \"Maak uw comfortsysteem compleet met Rointe: verbonden elektrische verwarming voor effici\u00ebntie, stijl en dagelijks comfort.\";\r\n}\r\n\r\n\/\/ Estilo visual con l\u00edneas verdes\r\nconst pageWidth = doc.internal.pageSize.getWidth();\r\ny += 8;\r\ndoc.setDrawColor(66,176,41);\r\ndoc.setLineWidth(0.6);\r\ndoc.line(20, y, pageWidth - 20, y);\r\ny += 6;\r\n\r\ndoc.setFont(\"helvetica\", \"italic\");\r\ndoc.setFontSize(11);\r\ndoc.setTextColor(50,50,50);\r\ndoc.text(promoText, pageWidth \/ 2, y + 5, { maxWidth: 160, align: \"center\", lineHeightFactor: 1.4 });\r\n\r\ny += 14;\r\ndoc.line(20, y, pageWidth - 20, y);\r\ny += 8;\r\n\r\n\r\n  doc.setTextColor(0,0,0); \/\/ restaurar color texto\r\n  pages.push(doc);\r\n  return pages;\r\n}\r\n\r\n\/* === BLOQUE SUELO RADIANTE === *\/\r\nasync function addUnderfloorPages(list, logoImg) {\r\n  const pages = [];\r\n  const doc = new jsPDF();\r\n  let y = addHeader(doc, logoImg, true);\r\n\r\n  const sueloRooms = list.filter(r => r.tipo === \"suelo\").map(buildSueloRoomPayload);\r\n  if (!sueloRooms.length) return [];\r\n\r\n  doc.setFont(\"helvetica\", \"bold\");\r\n  doc.setFontSize(12);\r\n  doc.text(\"Vloerverwarming (ERKO \/ MILOS)\", 20, y);\r\n  y += 8;\r\n\r\n  const suelosForTable = sueloRooms.map(r => [\r\n    r.name || \"\u2014\",\r\n    r.system === \"erko\" ? \"Vloerverwarming ERKO\" : \"Vloerverwarming MILOS\",\r\n    `${r.areaMesh} m\u00b2`,\r\n    `${r.potencia} W`,\r\n    comboToArray(r.mallaCombo, r.system === \"erko\" ? \"Mesh ERKO\" : \"Mesh MILOS\").join(\", \")\r\n  ]);\r\n\r\n  doc.autoTable({\r\n    head: [[\"Verblijf\", \"Type\", \"Actief oppervlak\", \"Totaal vermogen\", \"Aanbeveling\"]],\r\n    body: suelosForTable,\r\n    startY: y,\r\n    styles: { fontSize: 9, cellPadding: 2 },\r\n    headStyles: { fillColor: [66,176,41], textColor: [255,255,255] },\r\n    alternateRowStyles: { fillColor: [245,245,245] }\r\n  });\r\n  y = doc.lastAutoTable.finalY + 10;\r\n\r\n  \/\/ Materiales\r\n  const merged = mergeMaterials(sueloRooms);\r\n  const matRows = Object.keys(merged).sort().map(k => [k, `${merged[k]}x`]);\r\n  if (matRows.length) {\r\n    doc.autoTable({\r\n      head: [[\"Benodigde materialen\", \"Hoeveelheid\"]],\r\n      body: matRows,\r\n      startY: y,\r\n      styles: { fontSize: 9, cellPadding: 3 },\r\n      headStyles: { fillColor: [66,176,41], textColor: [255,255,255] },\r\n      alternateRowStyles: { fillColor: [245,245,245] }\r\n    });\r\n    y = doc.lastAutoTable.finalY + 10;\r\n  }\r\n\r\n  \/\/ Termostatos\r\n  const totalTherm = sueloRooms.reduce((s, r) => s + (r.thermostats || 0), 0);\r\n  const anyOver = sueloRooms.some(r => r.potencia > 3600);\r\n  const thermRows = [\r\n    [\"Totaal aantal eenheden\", `${totalTherm} u\/s`],\r\n    [\"Note\", anyOver ? \"Voor vermogens hoger dan 3600 W worden 2 thermostaten aanbevolen.\" : \"\u2014\"],\r\n    [\"Link\", \"https:\/\/rointe.com\/nl\/thermostaten\/\"]\r\n  ];\r\n  doc.autoTable({\r\n    head: [[\"Aanbevolen thermostaten\", \"Details\"]],\r\n    body: thermRows,\r\n    startY: y,\r\n    styles: { fontSize: 9, cellPadding: 3 },\r\n    headStyles: { fillColor: [66,176,41], textColor: [255,255,255] },\r\n    alternateRowStyles: { fillColor: [245,245,245] }\r\n  });\r\n  y = doc.lastAutoTable.finalY + 12;\r\n\r\n  \/\/NUEVO\r\n    \/\/ === BLOQUE DE ENLACE FINAL ===\r\n  doc.setFont(\"helvetica\", \"bold\");\r\n  doc.setFontSize(12);\r\n  doc.setTextColor(90,90,90); \/\/ t\u00edtulo en gris neutro\r\n  doc.text(\"Producten online bekijken\", 20, y);\r\n  y += 8;\r\n\r\n  doc.setFont(\"helvetica\", \"normal\");\r\n  doc.setFontSize(10);\r\n  doc.setTextColor(66,176,41); \/\/ enlaces en verde corporativo\r\n\r\n  \/\/ Enlace 1\r\n  doc.textWithLink(\r\n    \"Elektrische vloerverwarming: maximaal comfort\",\r\n    20,\r\n    y,\r\n    { url: \"https:\/\/rointe.com\/nl\/productcategorie\/vloerverwarming\/\" }\r\n  );\r\n  y += 6;\r\n\r\n  \/\/ Enlace 2 (nuevo)\r\n  doc.textWithLink(\r\n    \"Accessoires en isolatie voor elektrische vloerverwarming\",\r\n    20,\r\n    y,\r\n    { url: \"https:\/\/rointe.com\/nl\/isolatiepanelen-vervangingsonderdelen-en-accessoires\/\" }\r\n  );\r\n\/\/ === BLOQUE DE TEXTO COMERCIAL CON ESTILO ===\r\nconst pageWidth = doc.internal.pageSize.getWidth();\r\nconst underfloorText = \"Ontdek het onzichtbare comfort van vloerverwarming van Rointe. Gelijkmatige warmte, stille werking en totale effici\u00ebntie onder uw voeten.\";\r\n\r\ny += 8;\r\ndoc.setDrawColor(66,176,41);\r\ndoc.setLineWidth(0.6);\r\ndoc.line(20, y, pageWidth - 20, y);\r\ny += 6;\r\n\r\ndoc.setFont(\"helvetica\", \"italic\");\r\ndoc.setFontSize(11);\r\ndoc.setTextColor(50,50,50);\r\ndoc.text(underfloorText, pageWidth \/ 2, y + 5, { maxWidth: 160, align: \"center\", lineHeightFactor: 1.4 });\r\n\r\ny += 14;\r\ndoc.line(20, y, pageWidth - 20, y);\r\ny += 8;\r\n\r\n\r\n  \/\/ Restaurar color texto\r\n  doc.setTextColor(0,0,0);\r\n\r\n  pages.push(doc);\r\n  return pages;\r\n\r\n}\r\n\r\n\r\n  \/* === P\u00c1GINA FINAL (plantilla externa) === *\/\r\nasync function addDisclaimerPage() {\r\n  const closureUrl = \"https:\/\/rointe.com\/calcPDF\/pdfcierre2_nl.pdf\";\r\n  const closureBytes = await fetch(closureUrl).then(r => r.arrayBuffer());\r\n  return closureBytes;\r\n}\r\n\r\n\r\n  \/* === SECUENCIA PRINCIPAL === *\/\r\n  const baseBytes = await fetch(templateUrl).then(r => r.arrayBuffer());\r\n  const basePdf = await PDFDocument.load(baseBytes);\r\n  const finalPdf = await PDFDocument.create();\r\n  const [templatePage] = await finalPdf.copyPages(basePdf, [0]);\r\n  finalPdf.addPage(templatePage);\r\n\r\n  const logoImg = await loadLogo();\r\n  const list = _getRooms();\r\n  const hasHeating = list.some(r => r.tipo !== \"suelo\");\r\n  const hasUnderfloor = list.some(r => r.tipo === \"suelo\");\r\n\r\n  const dynamicDocs = [];\r\n  if (hasHeating) dynamicDocs.push(...await addHeatingPages(list, logoImg));\r\n  if (hasUnderfloor) dynamicDocs.push(...await addUnderfloorPages(list, logoImg));\r\n\r\n  const disclaimerDoc = await addDisclaimerPage(logoImg);\r\n\r\n\/\/ fusionar todo en orden (todas las p\u00e1ginas de cada doc din\u00e1mico)\r\nfor (const d of dynamicDocs) {\r\n  const pdfTemp = await PDFDocument.load(d.output(\"arraybuffer\"));\r\n  const pageCount = pdfTemp.getPageCount();\r\n  const allIdx = Array.from({ length: pageCount }, (_, i) => i);\r\n  const copied = await finalPdf.copyPages(pdfTemp, allIdx);\r\n  copied.forEach(p => finalPdf.addPage(p));\r\n}\r\n\r\n\/\/ === A\u00f1adir la p\u00e1gina final desde plantilla PDF ===\r\n{\r\n  const closureBytes = await addDisclaimerPage();\r\n  const closurePdf = await PDFDocument.load(closureBytes);\r\n  const allIdx = Array.from({ length: closurePdf.getPageCount() }, (_, i) => i);\r\n  const copied = await finalPdf.copyPages(closurePdf, allIdx);\r\n  copied.forEach(p => finalPdf.addPage(p));\r\n}\r\n\r\n\r\n  \/\/ Descargar PDF final\r\n  const mergedBytes = await finalPdf.save();\r\n  const blob = new Blob([mergedBytes], { type: \"application\/pdf\" });\r\n  const link = document.createElement(\"a\");\r\n  link.href = URL.createObjectURL(blob);\r\n  link.download = `Rointe-rapport_${new Date().toLocaleDateString(\"es-ES\").replace(\/\\\/\/g, \"-\")}.pdf`;\r\n  link.click();\r\n}\r\n\r\n  \/\/ Forzar que, tras reload, la p\u00e1gina arranque arriba\r\n  try { history.scrollRestoration = 'manual'; } catch(_) {}\r\n  if (sessionStorage.getItem('forceTop') === '1') {\r\n    sessionStorage.removeItem('forceTop');\r\n    window.scrollTo({ top: 0, left: 0, behavior: 'auto' });\r\n  }\r\n  window.addEventListener('pageshow', () => window.scrollTo(0, 0));\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"dce-visibility-element-hidden dce-visibility-original-content elementor-element elementor-element-575c2b8 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"575c2b8\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;enabled_visibility&quot;:&quot;yes&quot;,&quot;dce_visibility_selected&quot;:&quot;yes&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b787dbc elementor-widget elementor-widget-template\" data-id=\"b787dbc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"template.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-template\">\n\t\t\t\t\t<div data-elementor-type=\"section\" data-elementor-id=\"137378\" class=\"elementor elementor-137378 elementor-135125 elementor-135125\" data-elementor-post-type=\"elementor_library\">\n\t\t\t<div class=\"elementor-element elementor-element-0f279df e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"0f279df\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6100da9 elementor-widget elementor-widget-heading\" data-id=\"6100da9\" 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\">RADIATOREN<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e88bcc0 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"e88bcc0\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-7195535 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"7195535\" 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-1a5ce50 elementor-widget elementor-widget-heading\" data-id=\"1a5ce50\" 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\">Welke technologie moet je kiezen?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-23d4029 elementor-widget elementor-widget-text-editor\" data-id=\"23d4029\" 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>Afhankelijk van uw levensstijl en behoeften zal de ene of de andere technologie het beste bij u passen. U kunt echter beide soorten elektrische radiatortechnologie\u00ebn in uw woning combineren. Bijvoorbeeld een olieradiator in de woonkamer en een radiator met natuurstenen kern in de slaapkamer.<\/p><p>Rointe adviseert:<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1703ebc e-grid e-con-full wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"1703ebc\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-d0e8bbf e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"d0e8bbf\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-495fb45 elementor-widget elementor-widget-image\" data-id=\"495fb45\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"666\" src=\"https:\/\/rointe.com\/wp-content\/uploads\/2024\/11\/Rointe-belize-installed-home.jpg\" class=\"attachment-full size-full wp-image-18661\" alt=\"\" srcset=\"https:\/\/rointe.com\/wp-content\/uploads\/2024\/11\/Rointe-belize-installed-home.jpg 1000w, https:\/\/rointe.com\/wp-content\/uploads\/2024\/11\/Rointe-belize-installed-home-600x400.jpg 600w, https:\/\/rointe.com\/wp-content\/uploads\/2024\/11\/Rointe-belize-installed-home-300x200.jpg 300w, https:\/\/rointe.com\/wp-content\/uploads\/2024\/11\/Rointe-belize-installed-home-768x511.jpg 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/>\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">WEG VAN HUIS<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\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-00aa20e elementor-widget elementor-widget-heading\" data-id=\"00aa20e\" 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\">Thermal Fluid Tech<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ad3342d elementor-widget elementor-widget-heading\" data-id=\"ad3342d\" 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\">Als u en uw gezin tijd buitenshuis doorbrengen en bij terugkomst sneller een aangename temperatuur willen.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6d0d476 elementor-align-center elementor-tablet-align-center elementor-widget elementor-widget-button\" data-id=\"6d0d476\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/rointe.com\/nl\/prod-tag-nl\/vloeistofradiatoren\/\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Bekijk thermische vloeistofradiatoren<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-350324f e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"350324f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d299f58 elementor-widget elementor-widget-image\" data-id=\"d299f58\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"682\" src=\"https:\/\/rointe.com\/wp-content\/uploads\/2024\/11\/Rointe-olympia-family.jpg\" class=\"attachment-full size-full wp-image-18695\" alt=\"\" srcset=\"https:\/\/rointe.com\/wp-content\/uploads\/2024\/11\/Rointe-olympia-family.jpg 1024w, https:\/\/rointe.com\/wp-content\/uploads\/2024\/11\/Rointe-olympia-family-600x400.jpg 600w, https:\/\/rointe.com\/wp-content\/uploads\/2024\/11\/Rointe-olympia-family-300x200.jpg 300w, https:\/\/rointe.com\/wp-content\/uploads\/2024\/11\/Rointe-olympia-family-768x512.jpg 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">THUIS<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\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-1ed9c7f elementor-widget elementor-widget-heading\" data-id=\"1ed9c7f\" 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\">Natur Stone Tech<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-37eac7f elementor-widget elementor-widget-heading\" data-id=\"37eac7f\" 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\">If you need your <strong>heating to last longer<\/strong>, taking advantage of the inertia of the stone to save money.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-43eb1ed elementor-align-center elementor-tablet-align-center elementor-widget elementor-widget-button\" data-id=\"43eb1ed\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/rointe.com\/nl\/prod-tag-nl\/natuursteen\/\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Bekijk natuurstenen radiatoren<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\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-4751614 elementor-widget elementor-widget-template\" data-id=\"4751614\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"template.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-template\">\n\t\t\t\t\t<div data-elementor-type=\"section\" data-elementor-id=\"137372\" class=\"elementor elementor-137372 elementor-135165 elementor-135165\" data-elementor-post-type=\"elementor_library\">\n\t\t\t<div class=\"elementor-element elementor-element-0f279df e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"0f279df\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6100da9 elementor-widget elementor-widget-heading\" data-id=\"6100da9\" 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\">HANDDOEKRELLEN<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-168eb14 elementor-widget elementor-widget-text-editor\" data-id=\"168eb14\" 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><span data-olk-copy-source=\"MessageBody\">Ontdek de collectie elektrische handdoekradiatoren van Rointe, ontworpen om <strong>comfort, effici\u00ebntie en elegante stijl<\/strong> te combineren in elke badkamer. Van slimme wifi-modellen met geavanceerde bediening via de Rointe NEXA-app tot eenvoudige plug-in-opties zonder connectiviteit: elke handdoekradiator biedt een optimale warmteverdeling en snelle droging.<\/span><\/p><p><strong>Rointe-handdoekradiatoren zijn verkrijgbaar in verschillende maten, kleuren en afwerkingen en bieden warmte, gemak en design voor elke ruimte.<\/strong><\/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-7dd2a9d elementor-widget elementor-widget-image\" data-id=\"7dd2a9d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1044\" height=\"1044\" src=\"https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/CONJUNTO-SECATOALLAS-dimensionamiento.jpg\" class=\"attachment-full size-full wp-image-137373\" alt=\"\" srcset=\"https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/CONJUNTO-SECATOALLAS-dimensionamiento.jpg 1044w, https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/CONJUNTO-SECATOALLAS-dimensionamiento-300x300.jpg 300w, https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/CONJUNTO-SECATOALLAS-dimensionamiento-1024x1024.jpg 1024w, https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/CONJUNTO-SECATOALLAS-dimensionamiento-150x150.jpg 150w, https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/CONJUNTO-SECATOALLAS-dimensionamiento-768x768.jpg 768w, https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/CONJUNTO-SECATOALLAS-dimensionamiento-350x350.jpg 350w, https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/CONJUNTO-SECATOALLAS-dimensionamiento-650x650.jpg 650w, https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/CONJUNTO-SECATOALLAS-dimensionamiento-100x100.jpg 100w, https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/CONJUNTO-SECATOALLAS-dimensionamiento-50x50.jpg 50w\" sizes=\"auto, (max-width: 1044px) 100vw, 1044px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1017369 elementor-align-center elementor-tablet-align-center elementor-widget elementor-widget-button\" data-id=\"1017369\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/rointe.com\/nl\/prod-tag-nl\/elektrische-handdoekdrogers\/\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Ontdek ons volledige assortiment<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\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-4861ad9 elementor-widget elementor-widget-template\" data-id=\"4861ad9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"template.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-template\">\n\t\t\t\t\t<div data-elementor-type=\"section\" data-elementor-id=\"137366\" class=\"elementor elementor-137366 elementor-135528 elementor-135528\" data-elementor-post-type=\"elementor_library\">\n\t\t\t<div class=\"elementor-element elementor-element-0f279df e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"0f279df\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6100da9 elementor-widget elementor-widget-heading\" data-id=\"6100da9\" 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\"><b>MILOS <\/b>Vloerverwarming<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9b01a71 elementor-widget elementor-widget-text-editor\" data-id=\"9b01a71\" 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>Kies het ideale vloerverwarmingssysteem voor uw woning. Elke technologie is ontworpen om zich aan te passen aan verschillende soorten oppervlakken, waardoor maximaal comfort en effici\u00ebntie worden gegarandeerd.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b39ecb5 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"b39ecb5\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b3048e2 elementor-widget elementor-widget-image\" data-id=\"b3048e2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"353\" src=\"https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/Product-isolated-Rointe-MILOS-1.png\" class=\"attachment-full size-full wp-image-136378\" alt=\"\" srcset=\"https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/Product-isolated-Rointe-MILOS-1.png 500w, https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/Product-isolated-Rointe-MILOS-1-300x212.png 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-891e78a elementor-widget elementor-widget-heading\" data-id=\"891e78a\" 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\">Het <strong>ideale<\/strong> vloerverwarmingssysteem <strong>voor keramische vloeren<\/strong>. Perfect voor badkamers, keukens of elke andere ruimte met keramische vloeren waar warmte en energie-effici\u00ebntie voorop staan.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c49ba6f elementor-align-center elementor-tablet-align-center elementor-widget elementor-widget-button\" data-id=\"c49ba6f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"\/nl\/product\/milos-elektrische-vloerverwarming-voor-keramische-vloeren\/\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Product bekijken<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\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-be5bc10 elementor-widget elementor-widget-template\" data-id=\"be5bc10\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"template.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-template\">\n\t\t\t\t\t<div data-elementor-type=\"section\" data-elementor-id=\"137363\" class=\"elementor elementor-137363 elementor-135530 elementor-135530\" data-elementor-post-type=\"elementor_library\">\n\t\t\t<div class=\"elementor-element elementor-element-0f279df e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"0f279df\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6100da9 elementor-widget elementor-widget-heading\" data-id=\"6100da9\" 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\"><b>ERKO<\/b> Vloerverwarming<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-19bb14a elementor-widget elementor-widget-text-editor\" data-id=\"19bb14a\" 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>Kies het ideale vloerverwarmingssysteem voor uw woning. Elke technologie is ontworpen om zich aan te passen aan verschillende soorten oppervlakken, waardoor maximaal comfort en effici\u00ebntie worden gegarandeerd.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4ae26d0 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"4ae26d0\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f3f352d elementor-widget elementor-widget-image\" data-id=\"f3f352d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"353\" src=\"https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/Product-isolated-Rointe-ERKO.png\" class=\"attachment-full size-full wp-image-137475\" alt=\"\" srcset=\"https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/Product-isolated-Rointe-ERKO.png 500w, https:\/\/rointe.com\/wp-content\/uploads\/2025\/10\/Product-isolated-Rointe-ERKO-300x212.png 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d213cbc elementor-widget elementor-widget-heading\" data-id=\"d213cbc\" 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\">Ontworpen voor materialen zoals <strong>tapijt, hout, laminaat, vinyl en linoleum<\/strong>. Ideaal voor woonkamers, slaapkamers of elke andere ruimte waar u comfort en stijl wilt combineren zonder in te boeten aan kwaliteit.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cc05d1b elementor-align-center elementor-tablet-align-center elementor-widget elementor-widget-button\" data-id=\"cc05d1b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/rointe.com\/nl\/product\/erko-elektrische-vloerverwarming-voor-laminaat-tapijt-vinyl-of-linoleum\/\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Product bekijken<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<!-- dce invisible element 01ee96b -->\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Verwarmingscalculator Onze verwarmingscalculator helpt je nauwkeurig te bepalen welk type apparaat je nodig hebt voor je ruimte. Door de energiebehoeften van je woning te berekenen, zorgen we ervoor dat de apparatuur die je kiest effici\u00ebnt, economisch en geschikt is voor je specifieke behoeften. Je optimaliseert niet alleen het energieverbruik, maar zorgt ook voor een comfortabele en warme omgeving, vermijdt onnodige kosten en beschermt het milieu. Klimaatzones A Warm B Koud C Zeer koud D Extra koud Klimaatzone Selecteer gebiedA &#8211; WarmB &#8211; KoudC &#8211; Heel koudD &#8211; Extra koud Type product Selecteer een optieRadiator \/ HanddoekhouderVloerverwarming VERBLIJF TOEVOEGEN Samenvatting Verblijven Er zijn nog geen verblijven toegevoegd. Totaal aantal apparaten \u2014 AANBEVELINGEN ALLES WISSEN Download uw rapport Voer uw gegevens in om de PDF met uw aanbevelingen te ontvangen. Ontdek je ideale apparaat EONIQ Radiador El\u00e9ctrico WiFi Bajo Consumo BELIZE Radiador El\u00e9ctrico WiFi Bajo Consumo OLYMPIA Radiador El\u00e9ctrico WiFi Bajo Consumo KYROS Radiador El\u00e9ctrico WiFi Bajo Consumo SYGMA Radiador El\u00e9ctrico Bajo Consumo Digital NEO Secatoallas El\u00e9ctrico WiFI Bajo Consumo ORION Secatoallas El\u00e9ctrico WiFi Bajo Consumo VENEZIA OVAL Secatoallas El\u00e9ctrico WiFi Bajo Consumo ELBA CABLE Secatoallas El\u00e9ctrico Bajo Consumo SUBLIME Secatoallas El\u00e9ctrico Bajo Consumo Elba Oval Secatoallas El\u00e9ctrico WiFi Bajo Consumo Elba Oval Secatoallas el\u00e9ctrico Bajo Consumo Digital Elba Cable Secatoallas El\u00e9ctrico Bajo Consumo<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-125168","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Verwarmingscalculator - ROINTE<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/rointe.com\/nl\/verwarmingscalculator\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Verwarmingscalculator - ROINTE\" \/>\n<meta property=\"og:description\" content=\"Verwarmingscalculator Onze verwarmingscalculator helpt je nauwkeurig te bepalen welk type apparaat je nodig hebt voor je ruimte. Door de energiebehoeften van je woning te berekenen, zorgen we ervoor dat de apparatuur die je kiest effici\u00ebnt, economisch en geschikt is voor je specifieke behoeften. Je optimaliseert niet alleen het energieverbruik, maar zorgt ook voor een comfortabele en warme omgeving, vermijdt onnodige kosten en beschermt het milieu. Klimaatzones A Warm B Koud C Zeer koud D Extra koud Klimaatzone Selecteer gebiedA &#8211; WarmB &#8211; KoudC &#8211; Heel koudD &#8211; Extra koud Type product Selecteer een optieRadiator \/ HanddoekhouderVloerverwarming VERBLIJF TOEVOEGEN Samenvatting Verblijven Er zijn nog geen verblijven toegevoegd. Totaal aantal apparaten \u2014 AANBEVELINGEN ALLES WISSEN Download uw rapport Voer uw gegevens in om de PDF met uw aanbevelingen te ontvangen. Ontdek je ideale apparaat EONIQ Radiador El\u00e9ctrico WiFi Bajo Consumo BELIZE Radiador El\u00e9ctrico WiFi Bajo Consumo OLYMPIA Radiador El\u00e9ctrico WiFi Bajo Consumo KYROS Radiador El\u00e9ctrico WiFi Bajo Consumo SYGMA Radiador El\u00e9ctrico Bajo Consumo Digital NEO Secatoallas El\u00e9ctrico WiFI Bajo Consumo ORION Secatoallas El\u00e9ctrico WiFi Bajo Consumo VENEZIA OVAL Secatoallas El\u00e9ctrico WiFi Bajo Consumo ELBA CABLE Secatoallas El\u00e9ctrico Bajo Consumo SUBLIME Secatoallas El\u00e9ctrico Bajo Consumo Elba Oval Secatoallas El\u00e9ctrico WiFi Bajo Consumo Elba Oval Secatoallas el\u00e9ctrico Bajo Consumo Digital Elba Cable Secatoallas El\u00e9ctrico Bajo Consumo\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rointe.com\/nl\/verwarmingscalculator\/\" \/>\n<meta property=\"og:site_name\" content=\"ROINTE\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/RointeEspana\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-31T13:48:45+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/rointe.com\/wp-content\/uploads\/2025\/11\/temp-nl.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data1\" content=\"9 minuut\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/rointe.com\\\/nl\\\/verwarmingscalculator\\\/\",\"url\":\"https:\\\/\\\/rointe.com\\\/nl\\\/verwarmingscalculator\\\/\",\"name\":\"Verwarmingscalculator - ROINTE\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rointe.com\\\/nl\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/rointe.com\\\/nl\\\/verwarmingscalculator\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/rointe.com\\\/nl\\\/verwarmingscalculator\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/rointe.com\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/temp-nl.png\",\"datePublished\":\"2025-03-14T13:09:42+00:00\",\"dateModified\":\"2026-03-31T13:48:45+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/rointe.com\\\/nl\\\/verwarmingscalculator\\\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/rointe.com\\\/nl\\\/verwarmingscalculator\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\\\/\\\/rointe.com\\\/nl\\\/verwarmingscalculator\\\/#primaryimage\",\"url\":\"http:\\\/\\\/rointe.com\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/temp-nl.png\",\"contentUrl\":\"http:\\\/\\\/rointe.com\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/temp-nl.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/rointe.com\\\/nl\\\/verwarmingscalculator\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/rointe.com\\\/nl\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Verwarmingscalculator\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/rointe.com\\\/nl\\\/#website\",\"url\":\"https:\\\/\\\/rointe.com\\\/nl\\\/\",\"name\":\"ROINTE\",\"description\":\"Smart Heating Solutions\",\"publisher\":{\"@id\":\"https:\\\/\\\/rointe.com\\\/nl\\\/#organization\"},\"alternateName\":\"Rointe Heating\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/rointe.com\\\/nl\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/rointe.com\\\/nl\\\/#organization\",\"name\":\"Industrias Royal Termic, S.L.\",\"url\":\"https:\\\/\\\/rointe.com\\\/nl\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\\\/\\\/rointe.com\\\/nl\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/rointe.com\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/logo-rointe.svg\",\"contentUrl\":\"https:\\\/\\\/rointe.com\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/logo-rointe.svg\",\"width\":303,\"height\":66,\"caption\":\"Industrias Royal Termic, S.L.\"},\"image\":{\"@id\":\"https:\\\/\\\/rointe.com\\\/nl\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/RointeEspana\\\/\",\"https:\\\/\\\/www.instagram.com\\\/rointe_es\\\/\",\"https:\\\/\\\/www.youtube.com\\\/@RointeEs\\\/videos\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/rointe-heating\\\/?originalSubdomain=uk\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Verwarmingscalculator - ROINTE","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/rointe.com\/nl\/verwarmingscalculator\/","og_locale":"nl_NL","og_type":"article","og_title":"Verwarmingscalculator - ROINTE","og_description":"Verwarmingscalculator Onze verwarmingscalculator helpt je nauwkeurig te bepalen welk type apparaat je nodig hebt voor je ruimte. Door de energiebehoeften van je woning te berekenen, zorgen we ervoor dat de apparatuur die je kiest effici\u00ebnt, economisch en geschikt is voor je specifieke behoeften. Je optimaliseert niet alleen het energieverbruik, maar zorgt ook voor een comfortabele en warme omgeving, vermijdt onnodige kosten en beschermt het milieu. Klimaatzones A Warm B Koud C Zeer koud D Extra koud Klimaatzone Selecteer gebiedA &#8211; WarmB &#8211; KoudC &#8211; Heel koudD &#8211; Extra koud Type product Selecteer een optieRadiator \/ HanddoekhouderVloerverwarming VERBLIJF TOEVOEGEN Samenvatting Verblijven Er zijn nog geen verblijven toegevoegd. Totaal aantal apparaten \u2014 AANBEVELINGEN ALLES WISSEN Download uw rapport Voer uw gegevens in om de PDF met uw aanbevelingen te ontvangen. Ontdek je ideale apparaat EONIQ Radiador El\u00e9ctrico WiFi Bajo Consumo BELIZE Radiador El\u00e9ctrico WiFi Bajo Consumo OLYMPIA Radiador El\u00e9ctrico WiFi Bajo Consumo KYROS Radiador El\u00e9ctrico WiFi Bajo Consumo SYGMA Radiador El\u00e9ctrico Bajo Consumo Digital NEO Secatoallas El\u00e9ctrico WiFI Bajo Consumo ORION Secatoallas El\u00e9ctrico WiFi Bajo Consumo VENEZIA OVAL Secatoallas El\u00e9ctrico WiFi Bajo Consumo ELBA CABLE Secatoallas El\u00e9ctrico Bajo Consumo SUBLIME Secatoallas El\u00e9ctrico Bajo Consumo Elba Oval Secatoallas El\u00e9ctrico WiFi Bajo Consumo Elba Oval Secatoallas el\u00e9ctrico Bajo Consumo Digital Elba Cable Secatoallas El\u00e9ctrico Bajo Consumo","og_url":"https:\/\/rointe.com\/nl\/verwarmingscalculator\/","og_site_name":"ROINTE","article_publisher":"https:\/\/www.facebook.com\/RointeEspana\/","article_modified_time":"2026-03-31T13:48:45+00:00","og_image":[{"url":"http:\/\/rointe.com\/wp-content\/uploads\/2025\/11\/temp-nl.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Geschatte leestijd":"9 minuut"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/rointe.com\/nl\/verwarmingscalculator\/","url":"https:\/\/rointe.com\/nl\/verwarmingscalculator\/","name":"Verwarmingscalculator - ROINTE","isPartOf":{"@id":"https:\/\/rointe.com\/nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/rointe.com\/nl\/verwarmingscalculator\/#primaryimage"},"image":{"@id":"https:\/\/rointe.com\/nl\/verwarmingscalculator\/#primaryimage"},"thumbnailUrl":"http:\/\/rointe.com\/wp-content\/uploads\/2025\/11\/temp-nl.png","datePublished":"2025-03-14T13:09:42+00:00","dateModified":"2026-03-31T13:48:45+00:00","breadcrumb":{"@id":"https:\/\/rointe.com\/nl\/verwarmingscalculator\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rointe.com\/nl\/verwarmingscalculator\/"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/rointe.com\/nl\/verwarmingscalculator\/#primaryimage","url":"http:\/\/rointe.com\/wp-content\/uploads\/2025\/11\/temp-nl.png","contentUrl":"http:\/\/rointe.com\/wp-content\/uploads\/2025\/11\/temp-nl.png"},{"@type":"BreadcrumbList","@id":"https:\/\/rointe.com\/nl\/verwarmingscalculator\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/rointe.com\/nl\/"},{"@type":"ListItem","position":2,"name":"Verwarmingscalculator"}]},{"@type":"WebSite","@id":"https:\/\/rointe.com\/nl\/#website","url":"https:\/\/rointe.com\/nl\/","name":"ROINTE","description":"Smart Heating Solutions","publisher":{"@id":"https:\/\/rointe.com\/nl\/#organization"},"alternateName":"Rointe Heating","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/rointe.com\/nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":"Organization","@id":"https:\/\/rointe.com\/nl\/#organization","name":"Industrias Royal Termic, S.L.","url":"https:\/\/rointe.com\/nl\/","logo":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/rointe.com\/nl\/#\/schema\/logo\/image\/","url":"https:\/\/rointe.com\/wp-content\/uploads\/2024\/10\/logo-rointe.svg","contentUrl":"https:\/\/rointe.com\/wp-content\/uploads\/2024\/10\/logo-rointe.svg","width":303,"height":66,"caption":"Industrias Royal Termic, S.L."},"image":{"@id":"https:\/\/rointe.com\/nl\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/RointeEspana\/","https:\/\/www.instagram.com\/rointe_es\/","https:\/\/www.youtube.com\/@RointeEs\/videos","https:\/\/www.linkedin.com\/company\/rointe-heating\/?originalSubdomain=uk"]}]}},"publishpress_future_action":{"enabled":false,"date":"2026-09-12 18:30:43","action":"change-status","newStatus":"draft","terms":[],"taxonomy":"translation_priority","extraData":[]},"publishpress_future_workflow_manual_trigger":{"enabledWorkflows":[]},"_links":{"self":[{"href":"https:\/\/rointe.com\/nl\/wp-json\/wp\/v2\/pages\/125168","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rointe.com\/nl\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/rointe.com\/nl\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/rointe.com\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rointe.com\/nl\/wp-json\/wp\/v2\/comments?post=125168"}],"version-history":[{"count":0,"href":"https:\/\/rointe.com\/nl\/wp-json\/wp\/v2\/pages\/125168\/revisions"}],"wp:attachment":[{"href":"https:\/\/rointe.com\/nl\/wp-json\/wp\/v2\/media?parent=125168"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}